达永编程网

程序员技术分享与交流平台

基础语法:通过编写简单的代码来认识一下常用数据类型及注释

1.常用数据类型

打开PyCharm开发工具,新建一个名为demo01.py文件,python的常用数据类型(也叫字面量)有整型(如:123)、浮点型(如:1.23)、字符型(如:"123")等等,这里先认识一下这三种吧,在编辑器中编写代码,如下图所示

2.代码注释

仓颉编程语言编程技巧-四则运算计算器

package cangjie_test

import std.ast.*
import std.math.numeric.*
import std.math.*
import std.console.*

// 元编程
// 一个相当好玩的特性

// 二元操作包装枚举
enum BinaryWrap {
    | Fail
    | Lit(Decimal)
    | Mul(BinaryWrap, BinaryWrap) // *
    | Div(BinaryWrap, BinaryWrap) // /
    | Add(BinaryWrap, BinaryWrap) // +
    | Sub(BinaryWrap, BinaryWrap) // -
    | Parent(BinaryWrap) // ()
}

main() {
    // 输出提示语句
    output("请输入四则运算表达式:")
    // 从命令行输入
    while (let Some(expr) <- Console.stdIn.readln()) { // 循环读取
        // 动态解析一条表达式
        let tokens = cangjieLex(expr)
        // 将表达式符合集解析成仓颉表达式
        let _expr = parseExpr(tokens)
        // 输出表达式语法树
        // _expr.dump()
        // 解析成二元操作树
        let binaryTree = parseBinary(_expr)
        // 计算结果
        let val = compute(binaryTree)

        output("${expr} = ${val}\n")
        // 输出提示语句
        output("请输入四则运算表达式:")
    }
}

// 包装一个控制台输出函数
func output(msg: String) {
    Console.stdOut.write(msg) // 写入消息
    Console.stdOut.flush() // 刷入缓存
}

// 包装成二元操作树
func parseBinary(expr: Expr): BinaryWrap {
    match (expr) {
        case v: BinaryExpr => match (v.op.kind) {
            case TokenKind.ADD => BinaryWrap.Add(parseBinary(v.leftExpr), parseBinary(v.rightExpr))
            case TokenKind.SUB => BinaryWrap.Sub(parseBinary(v.leftExpr), parseBinary(v.rightExpr))
            case TokenKind.MUL => BinaryWrap.Parent(BinaryWrap.Mul(parseBinary(v.leftExpr), parseBinary(v.rightExpr)))
            case TokenKind.DIV => BinaryWrap.Parent(BinaryWrap.Div(parseBinary(v.leftExpr), parseBinary(v.rightExpr)))

            case _ =>
                output("不支持的操作符'${v.op.value}'")
                BinaryWrap.Fail
        }

        case v: ParenExpr => BinaryWrap.Parent(parseBinary(v.parenthesizedExpr))

        case v: LitConstExpr => match (v.literal.kind) {
            case TokenKind.INTEGER_LITERAL | TokenKind.FLOAT_LITERAL => BinaryWrap.Lit(Decimal(v.literal.value))

            case _ =>
                output("不支持的数值类型'${v.literal.value}'")
                BinaryWrap.Fail
        }

        case _ =>
            output("不支持的语法'${expr.toTokens()}'")
            BinaryWrap.Fail
    }
}

// 计算结果
func compute(root: BinaryWrap): Decimal {
    match (root) {
        case BinaryWrap.Mul(l, r) => compute(l) * compute(r)
        case BinaryWrap.Div(l, r) => compute(l) / compute(r)
        case BinaryWrap.Add(l, r) => compute(l) + compute(r)
        case BinaryWrap.Sub(l, r) => compute(l) - compute(r)
        case BinaryWrap.Parent(l) => compute(l)
        case BinaryWrap.Lit(l) => l

        case BinaryWrap.Fail =>
            output("无法计算")
            Decimal(0.0)
    }
}

Go/Rust围攻下,为什么C语言从不被淘汰,还越活越滋润

编程圈大争论:C语言凭什么活到今天?RustGo的"安全牌"真能打趴它吗?

最近后台收到一条留言:"现在Rust和Go都吹得天花乱坠,内存安全、并发简单,那C语言这种老古董怎么还不淘汰?"我盯着屏幕笑出了声——这不就是十年前Java火的时候,大家问C++什么时候消失的翻版吗

说来有趣,编程语言圈子的鄙视链就像北京二环的房价,永远在变又永远不变。可C语言就像胡同口晒太阳的老大爷,任你高楼起高楼塌,人家捧着搪瓷缸子悠然自得。今天咱们就掰扯掰扯,这个1972年诞生的"活化石",凭什么在RustGo的围剿下还能活得这么滋润?

“写了20年Ruby,学了Common Lisp,最后我却重新搞起了C语言!”

C语言之Makefile

以下是如何使用 Makefile 编译C语言代码的详细教程,适合初学者理解其核心概念和操作步骤。


一、为什么需要 Makefile?

当项目包含多个源文件(如 .c 和 .h)时,手动逐个编译效率低下且容易出错。
Makefile 的作用

编写一个简单的C语言程序

作为一名以Java为主的开发人员,深感不理解操作系统底层原理的痛苦,为了能更好掌握操作系统的相关知识点,因此我发自内心决定结合实践重学C语言这门编程语言。

重学C语言的第一个步骤,我决定从这个pun.c简单的例子入手,具体代码如下:

#include <stdio.h>
int main(void) {
	printf("To C,or not to C: that is a question.\n");
	return 0;
}

单片机005——第一个完整的入门级C程序介绍


这个脑图是针对Keil工具进行C程序开发的入门介绍,主要内容包括工程文件的设置、特殊功能寄存器(SFR)的使用、代码执行速度的基本概念以及一个简单的入门示例程序。接下来我会详细讲解脑图中的每个部分。

1.工程文件夹结构

编程小知识:文件扩展名的作用是什么?通俗易懂的文件扩展名详解

介绍

文件扩展名(filename extension)也称为文件的后缀名,是操作系统用来标记文件类型的一种机制,在Windows系统下,扩展名还可以告诉操作系统默认用什么软件打开文件。通常来说,一个扩展名是跟在主文件名后面的,由一个分隔符(英文句号)分隔。扩展名可以被认为是一个类型的元数据。

博客园:小黑电脑,版权归原作者所有,
https://xiaoheidiannao.com/articles/Extension-Name.html

C语言中的make是个啥?为何php安装扩展时要用它?

在安装 PHP扩展的时候,会用到一个命令make,在一些文章介绍里会这样说,如果要用编译安装的话就执行make,make install以后就会把代码编译成so文件,然后更改php.ini把extensiion加上这个so的地址,这个扩展就安装完成了,这个make倒底起什么用?

折腾不息:安卓手表刷上XP系统

Android手表的“潜力”可谓十分惊人,比如前不久一位17岁的Geek展示了在三星的Gear Live上运行苹果Macintosh II的System 6系统,虽然操作费力,但称得上可用。

最近,另一名“少年英才”Dave将经典的Windows XP移植到了屏幕只有1.65寸的LG G Watch上

Dave介绍说,他使用的是一个仅有100MB的精简版XP系统,虽然可以看到完整的开机画面,但是桌面却空空如也,只有一个“CMD”窗口,不过鼠标指针倒是可以通过触控来操作。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言