C 程序设计 吉林大学软件教研室.

Slides:



Advertisements
Similar presentations
三级偏软考点. 第一章必考点 1. 计算机的进位数制 (1) 计算机中所有数据是二进制 0,1 表示 (2) 在现实生活中人们普遍使用十进制 如何把十进制转换成计算机所识别的二 进制?整数是除 2 取余法,小数是乘 2 取 整法.
Advertisements

《程序设计实践》 孙辉 理工配楼104A
1、一般地说,在生物的体细胞中, 和 都是成对存在的。
辨性别 A B. 辨性别 A B 第三节人类染色体与性别决定 昌邑市龙池初中 杨伟红 学习目标 1.理解人的染色体组成和传递规律。 2.解释人类性别决定的原理。 3.通过探究活动,解读数据了解生男生女的比例。
国有及国有控股企业 “小金库”专项治理政策及报表讲解
实验室资质认定评审准则.
Tool Command Language --11级ACM班 金天行.
清仓处理 跳楼价 满200返160 5折酬宾.
人工智能技术导论 廉师友编著 西安电子科技大学出版社.
1.1.2 四 种 命 题.
增值评价 2014级 初中起点报告 解读培训 辽宁省基础教育质量监测与评价中心.
Oracle数据库 Oracle 子程序.
宠物之家 我的宠物性别? 雌(♀) or 雄(♂) 第一阶段:我的宠物我做主 第二阶段:宠物“相亲记” 第三阶段:家族诞生
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
程序的形式验证 - 简介 中国科学院软件研究所 张文辉 1.
《数据库原理及应用》课程介绍 信息工程学院 孙俊国
三角形的邊角關係 大綱:三角形邊的不等關係 三角形邊角關係 樞紐定理 背景知識:不等式 顧震宇 台灣數位學習科技股份有限公司.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
第1章 程序设计和C语言 1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C语言的发展及其特点 1.4 最简单的C语言程序
Signutil.
计算机网络原理 徐明伟
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
编译原理与技术 2018/11/30 《编译原理与技术》讲义.
走进编程 程序的顺序结构(二).
程序设计基础.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
高级语言程序设计 张长海 软件自动化研究室 Tel:
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
第二章 Java语言基础.
动态规划(Dynamic Programming)
《编译原理与技术》 期末复习 计算机科学与技术学院 郑启龙 李 诚 25/12/2018.
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
第2章 高级语言及其语法描述 2.1 程序语言的定义 2.2 高级语言的一般特征 2.3 程序语言的语法描述.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
1.3 C语言的语句和关键字 一、C语言的语句 与其它高级语言一样,C语言也是利用函数体中的可执行 语句,向计算机系统发出操作命令。按照语句功能或构成的不 同,可将C语言的语句分为五类。 goto, return.
C语言程序设计 主讲教师:陆幼利.
EBNF与操作语义 请用扩展的 BNF 描述 javascript语言里语句的结构;并用操作语义的方法描述对应的语义规则
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
程序设计基础(C程序设计) 主讲:吴华洋 Mobile: Office:
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
農業金融講義 課程大綱.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
课前注意 课前注意 大家好!欢迎加入0118班! 请注意以下几点: 1.服务:卡顿、听不清声音、看不见ppt—管家( ) 2.课堂秩序:公共课堂,勿谈与课堂无关或消极的话题。 3.答疑:上课听讲,课后答疑,微信留言。 4.联系方式:提示老师手机/微信: QQ:
第九节 赋值运算符和赋值表达式.
用穷举法设计程序 南京师范大学 教育技术系 倪佳慧
<编程达人入门课程> 本节内容 计算机编程语言 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
3.16 枚举算法及其程序实现 ——数组的作用.
College of Computer Science & Technology
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
C语言程序设计基础 刘新国.
第二章 Java基本语法 讲师:复凡.
临界区问题的硬件指令解决方案 (Synchronization Hardware)
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
_03宽字符与Unicode编程 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
第二章 Java基本语法 讲师:复凡.
第二节 C语言的特点.
第八章 服務部門成本分攤.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
教学大纲(甲型,54学时 ) 教学大纲(乙型, 36学时 )
任课教师:戴开宇 TA:时均帅、谭肖、王安华 程序设计B班 :20-16:50(90分钟)
编译原理实践 6.程序设计语言PL/0.
Presentation transcript:

C 程序设计 吉林大学软件教研室

课程组成 课堂讲授 十二章 64学时 上机实验 八个实验 32学时 课程设计 C的词法分析器 助课老师答疑

课程特点 不同于“解释程序设计语言” 强调“程序设计”,“编程能力”的培养

讲授内容 基础知识 程序设计 数据组织

基础知识 第一章 基本知识 第二章 数据信息 第三章 简单程序 介绍程序设计基本概念、BNF、PAD 图 介绍C 基本符号、单词、数据及其类型 第三章 简单程序 介绍常量、变量、表达式、简单程序、赋值、I/0 。

程序设计 第四章 函数 第五章流程控制 第八章再论函数 第九章程序开发和结构化程序设计 简单介绍模块化程序设计思想,引进子程序和函数概念 讲述结构化程序设计的顺序、分支、循环三种程序逻辑 第八章再论函数 进一步介绍函数,讲述参数、递归程序设计 第九章程序开发和结构化程序设计 程序风格、自顶向下逐步求精的程序设计技术、程序的文档,以及穷举法和试探法;

数据组织 第六章 数组 第七章 指针 第十章 文件及其操作 第十一章 结构体和共用体 第十二章 动态数据结构

第一章 基本知识 程序设计语言 C语言简况 程序设计语言形式化描述 C程序结构 算法及其描述工具PAD 本章小结 作业

程序设计语言(1) 机器语言 1010 1001 0001 0110 0000 0001 0011 1100 0001 1000 0000 0001 … … … … … … … 0000 0000 0000 0000

程序设计语言(2) 汇编语言 MOV AX ,X CMP AX ,Y JL S1 SUB AX ,15 JMP S2 S1: ADD AX ,15 S2: MOV Y ,AX … … … … … … X DW ? Y DW ?

程序设计语言(3) 高级语言 注意 if (X<Y) Y=X+15; else Y=X-15; 高级语言并不单单指C语言,如VC,BASIC 等语言也属于高级语言范畴。

程序设计语言(4)— 程序的执行 用汇编语言或高级语言编出程序 将源程序录入计算机 由翻译器(汇编程序或编译程序) 将源程序翻译成机器语言程序 由连接程序将机器语言程序连接 生成计算机可执行的程序 将可执行程序送入计算机 并启动计算机执行 得到最后结果

C语言的历史背景 70年代初,C 语言在美国贝尔实验室诞生。它的前身可以追朔到ALGOL60 、CPL 、BCPL 、B 。 1989年ISO公布ISO/IEC 9899:1990 ,简称“C89”。 1995年对C89作修改和补充,称为“C95”。 1999对C进行更大的修订后,公布 ISO/IEC 9899:1999,简称“C99”。 我国于1994年12月4日公布了“中华人民共和国国家标准 GB/T 15272-94 程序设计语言 C”。

C语言的优点 语言简洁、紧凑,使用方便、灵活; C本身是模块式,便于集体分工合作开发大型程序 运算符丰富 数据结构丰富 具有结构化控制结构 与计算机硬件联系紧密,可以直接访问计算机内存,具有位操作 生成目标代码质量高。

C语言的缺点 语法不严格 类型机制不严密,比如字符类型与整数类型没有区别、不检查下标超界 程序设计自由度太大,不利于保证程序的正确性 若程序与计算机硬件联系太密切,则可移植性不好 有些语言成分太复杂,比如运算符 语言本身不能保证程序设计的结构化。

程序设计语言形式化描述 组成 Y=X+15; else Y=X-15; 语法——规则 语义——意义 if (X<Y) 巴克斯-脑尔范式(BNF) 语义——意义 if (X<Y) Y=X+15; else Y=X-15;

BNF 自然语言 计算机语言 BNF 字单词句子语言 字符词法单位(token) 程序语言 一种形式化描述语法的工具,一种表示方法

the big elephant ate the peanut <英语句子> <主语> <谓语> <宾语> <冠词><形容词><名词> <动词> <冠词><名词> the big elephant ate the peanut

G: <英语句子> ∷= <主语><谓语><宾语> <主 语> ∷= <冠词><形容词><名词> <冠 词> ∷= the <形容词> ∷= big <谓 语> ∷= <动词> <动 词> ∷= ate <宾 语> ∷= <冠词><名词> <名 词> ∷= peanut <名 词> ∷= elephant

the big elephant ate the peanut <英语句子> <主语> <谓语> <宾语> <冠词><形容词><名词> <动词> <冠词><名词> the big elephant ate the peanut

the big elephant ate the elephant <英语句子> <主语> <谓语> <宾语> <冠词><形容词><名词> <动词> <冠词><名词> the big elephant ate the elephant

the big peanut ate the peanut <英语句子> <主语> <谓语> <宾语> <冠词><形容词><名词> <动词> <冠词><名词> the big peanut ate the peanut

the big peanut ate the elephant <英语句子> <主语> <谓语> <宾语> <冠词><形容词><名词> <动词> <冠词><名词> the big peanut ate the elephant

文法G对应的句子有: The big elephant ate the peanut The big peanut ate the elephant The big peanut ate the peanut The big elephant ate the elephant

L(G)={ The big elephant ate the peanut The big peanut ate the elephant The big peanut ate the peanut The big elephant ate the elephant }

文法的组成 文法开始符 规则 / 产生式 非终极符 终极符 G: <英语句子> ∷= <主语><谓语><宾语> G: <英语句子> ∷= <主语><谓语><宾语> <主 语> ∷= <冠词><形容词><名词> <冠 词> ∷= the <形容词> ∷= big <谓 语> ∷= <动词> <动 词> ∷= ate <宾 语> ∷= <冠词><名词> <名 词> ∷= peanut <名 词> ∷= elephant 文法的组成 文法开始符 规则 / 产生式 非终极符 终极符

例1.1—无符号整数集合 G: N ∷= D N ∷= ND D ∷= 0 D ∷= 5 D ∷= 1 D ∷= 6 符号“│” 表示 “或者”文法可简写成: G: N ∷= D│ND D ∷= 0│1│2│3│4│5│6│7│8│9

例1.2 集合 {0n1n | n>0} 对应的文法G1 G1:S ∷= 01│0S1 将符号∷= 用→代替

例1.3—标识符 标识符 由字母或开头,后跟任意多个字母或数字组成的字符串 <标识符> → <字母> |<标识符><字母> |<标识符><数字>

例1.4—标识符表 标识符表 一个标识符是标识符表 标识符表后边跟一个逗号“ ,” 和一个标识符还是标识符表 <标识符表> → <标识符> │<标识符表> , <标识符>

C程序结构 < 程 序 > → <编译单元表> <编译单元表> → <编译单元> ▌<编译单元><编译单元表> < 程 序 > → <编译单元表> <编译单元表> → <编译单元> ▌<编译单元><编译单元表> <编译单元> → <顶层声明表> <顶层声明表> → <顶层声明> ▌<顶层声明表> <顶层声明> <顶层声明> → <声明> ▌<函数定义> <函数定义> → <函数定义说明符><复合语句>

C程序实例 文件hello.c #include <stdio.h> void hello(void){ printf(“Hello!\n”); } 程序执行过程 文件startup.c extern void hello(void) int main(void) { hello(); return 0 } hello.c  hello.obj startup.exe startup.c  startup.obj

软件开发一般过程 实现 可行性研究 需求分析 设计 测试 使用 维护 写出程序 调试程序 概要设计 组装测试 详细设计 确认测试 建立数学模型 找出计算方法 进行算法分析

算法 算法是一个计算过程,具体指明应该进行的操作,描述解决问题的方法和途径,它是程序设计的基础和精髓。 一个有效的算法具有如下特点: 有穷性 确定性 有效性

PAD ( Problem Analysis Diagram) 基本操作 控制结构 顺序结构 分支结构 循环控制结构 函数 操作

顺序控制结构 操作1 操作2 操作3 操作1 操作2 操作3

分支控制结构 单分支 如果XX条件为真,执行操作 如果XX条件为真,执行操作1;否则执行操作2 条件 操作 条件 操作1 操作2

多分支 如果表达式e 满足条件1,执行操作1 满足条件2, 执行操作2 ………… 满足条件n,执行操作n 条件2 条件n 操作1 操作n ... 条件1 条件

循环控制结构 先判断条件循环 重复条件 要重复执行的操作 操作 重复条件 F 结束

后判断条件 重复条件 要重复执行的操作 操作 重复条件 T 结束

函数 函数定义 函数体 函数名 (形参表) RETURN def

函数调用 名 ( 实参表 )

PAD的例子 将A、B两瓶分别盛放的米醋和酱油互换 将A中的米醋放到C中 将B中的酱油放到A中 将C中的米醋放到B中 C←A A←B B←C

X<Y Y=X+15 Y=X-15

KA[IMA]=KA[IMA]+1;IMA=IMA+1 开始 PAD实例 1 2 3 4 5 i = 1 T i <= 2 i=i+1 KA[i] = 0;NO[i] = 0 read(IMA);MAE=3-IMA  NO[IMA]=NO[IMA+1] F IMA≠MAE F IMA<MAE KA[IMA]=KA[IMA]+1;IMA=IMA+1 IMA=IMA+1 read(IMA) IMA='9' T printf(KA) 停

i=1; 第1部分 KA[i] = 0; 第2部分 前循环 非i<=2 循环体 NO[i] = 0; i=i+1; read(IMA); 第3部分 MAE=3-IMA; NO[IMA]=NO[IMA+1]; KA[IMA]=KA[IMA]+1 IMA<MAE 前循环 IMA=IMA+1 后循环 第4部分 非IMA==’9’ 循环体 IMA≠MAE 单分支 IMA=IMA+1 read(IMA) printf(KA) 第5部分

i <= 2 i=i+1 KA[i] = 0;NO[i] = 0 T

KA[IMA]=KA[IMA]+1;IMA=IMA+1 NO[IMA]=NO[IMA+1] F IMA≠MAE IMA<MAE F KA[IMA]=KA[IMA]+1;IMA=IMA+1 IMA=IMA+1 read(IMA) IMA='9' T

本章小结 程序设计语言 C语言简况 程序设计语言形式化描述 C程序结构 算法及其描述工具PAD图

作业 1.1 1.2 1.4 1.5 1.12 1.26(1)(2)选作(4)