计算机导论第四章ppt,计算机导论第4章教案.ppt

计算机导论第4章教案

计算机导论 文斌 田原 制作 高级语言按转换方式可将它们分为两类 : (1)解释类:应用程序源代码一边由相应语言的解释器“翻译”成目标代码,一边执行。 效率比较低,而且不能生成可独立执行的可执行文件,应用程序不能脱离其解释器,但这种方式比较灵活,可以动态地调整、修改应用程序。 (2)编译类:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码,因此其目标程序可以脱离其语言环境独立执行。 现在大多数的编程语言都是编译型的。 注 意: 4. 可用阶梯式if-else-if结构。 阶梯式结构的一般形式为: if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; . . else 语句n; 如果每一个条件中有多于一条语句要执行时, 必须使用"{"和"}"把这些语句包括在其中。 循环语句   Turbo C2.0提供三种基本的循环语句: for语句、while语句和do-while语句。 1 for循环 for循环是开界的,它是计数循环语句。它的一般形式为: for(; ; ) 语句; 例如: for(i=1; i<=10; i++) 语句; for循环可以有多层嵌套。 例5: main() { int i, j, k; printf("i j k\n"); for (i=0; i<2; i++) for(j=0; j<2; j++) for(k=0; k<2; k++) printf(%d %d %d\n", i, j, k); } 输出结果为: i j k 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 while循环 的一般形式为: while (条件) 语句; 例: #include main() { char c; c='\0'; /*初始化c*/ while(c!='\X0D') /*回车结束循环*/ c=getche(); /*带回显的从键盘接收字符*/ } Do-while循环 的一般格式为: do 语句; while (条件); 这个循环与while循环的不同在于: 它先执行循环中的语句, 然后再判断条件是否为真, 如果为真则继续循环; 如果为假, 则终止循环。因此, do-while循环至少要执行一次循环语句。 同样当有许多语句参加循环时, 要用"{"和"}"把它们括起来。 开关语句格式为: switch(变量) { case 常量1: 语句1或空; case 常量2: 语句2或空; …… case 常量n; 语句n或空; default: 语句n+1或空; } 例: main() {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
链表单值化是指将词法分析器从输入流中读取的字符序列转换为一个个单词,并将这些单词按照顺序存储在链表中。具体实现过程如下: 1. 定义一个结构体来表示单词,包括单词的类型和值等信息。 2. 读取输入流中的字符序列,并识别出各个单词的类型和值。 3. 将每个单词保存在一个结构体中,并将这些结构体按照顺序链接在一起,形成一个链表。 4. 返回链表的头指针,供后续的语法分析器使用。 下面是一个简单的C语言链表单值化的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LEN 100 //定义单词的类型 enum TokenType { RESERVED_WORD, IDENTIFIER, NUMBER, SYMBOL }; //定义单词的结构体 struct Token { enum TokenType type; char value[MAX_LEN]; struct Token *next; }; //读取输入流中的字符序列,并识别出各个单词的类型和值 struct Token *lex_analyze(char *input) { struct Token *head = NULL; //链表头指针 struct Token *tail = NULL; //链表尾指针 int len = strlen(input); int i = 0; while (i < len) { //识别保留字 if (strncmp(input + i, "if", 2) == 0 || strncmp(input + i, "else", 4) == 0 || strncmp(input + i, "while", 5) == 0 || strncmp(input + i, "do", 2) == 0) { struct Token *token = (struct Token *) malloc(sizeof(struct Token)); token->type = RESERVED_WORD; strncpy(token->value, input + i, strlen("if")); token->next = NULL; if (head == NULL) { head = tail = token; } else { tail->next = token; tail = token; } i += strlen("if"); } //识别标识符 else if (input[i] >= 'a' && input[i] <= 'z') { struct Token *token = (struct Token *) malloc(sizeof(struct Token)); token->type = IDENTIFIER; int j = i; while (input[j] >= 'a' && input[j] <= 'z') { j++; } strncpy(token->value, input + i, j - i); token->next = NULL; if (head == NULL) { head = tail = token; } else { tail->next = token; tail = token; } i = j; } //识别数字 else if (input[i] >= '0' && input[i] <= '9') { struct Token *token = (struct Token *) malloc(sizeof(struct Token)); token->type = NUMBER; int j = i; while (input[j] >= '0' && input[j] <= '9') { j++; } strncpy(token->value, input + i, j - i); token->next = NULL; if (head == NULL) { head = tail = token; } else { tail->next = token; tail = token; } i = j; } //识别符号 else { struct Token *token = (struct Token *) malloc(sizeof(struct Token)); token->type = SYMBOL; strncpy(token->value, input + i, 1); token->next = NULL; if (head == NULL) { head = tail = token; } else { tail->next = token; tail = token; } i++; } } return head; } //打印单词链表 void print_tokens(struct Token *head) { while (head != NULL) { printf("(%d, %s) ", head->type, head->value); head = head->next; } } int main() { char input[MAX_LEN] = "if (a > b) { c = a - b; } else { c = b - a; }"; struct Token *head = lex_analyze(input); //进行链表单值化 print_tokens(head); //打印单词链表 return 0; } ``` 该示例代码实现了一个简单的C语言词法分析器,可以将输入的C语言代码转换为一个个单词,并按照顺序存储在一个链表中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值