1、第1章 程序设计ABC,C语言大学实用教程,教师: 张秋菊,2019/5/30,2,关于我,Name: 张秋菊 Office:9#512室,2019/5/30,3,实验一,邮箱:() 密码:123456 下载实验一 实验指导书实验1,2019/5/30,4,本节课主要内容,引言 学习目标 学习方法 Visual C+ 6.0集成开发环境,2019/5/30,5,计算机硬件的组成,计算机系统由硬件和软件两部分组成,引言,2019/5/30,6,什么是程序?程序是为了用计算机解决某个问题而采用程序设计语言编写的一个指令序列。,软件=程序+数据+文档 (程序是软件的主体),引言,2019/5/30,
2、7,程序设计语言,什么是程序设计语言? 语言的作用是用于交流 程序设计语言用于人与计算机之间的交流 程序设计语言是由人使用但计算机可以理解的一种语言 程序设计语言用于编制程序,表达需要计算机完成什么任务和怎样完成任务,然后交给计算机去完成,2019/5/30,8,用计算机能识别的程序设计语言来描述要解决的问题的方法和步骤(即算法),以完成特定的任务,算法-解决问题的方法与步骤,编写程序的步骤: 分析问题找到解决问题的方法和步骤用程序设计语言描述编译、调试,学习程序设计语言的目的,2019/5/30,9,明确计算机算法的性质: 确定性:算法中每一步操作的含义必须清楚明确,无二义性 能行性: 算法
3、中有待实现的操作都是计算机可执行的,即必须在计算机的能力范围之内 有穷性: 算法在执行了有限步操作后必须结束 0个或多个输入 1个或多个输出,基本要求,2019/5/30,10,程序设计语言分类,机器语言 汇编语言 高级程序设计语言,2019/5/30,11,高级程序设计语言,目的:克服汇编语言的缺陷,提高编程和维护的效率 特点: 接近人们日常使用的自然语言(主要是英语)容易理解、记忆和使用 可在不同计算机上通用 对使用的符号、词汇、语法和语义等各种语言成分都有严格的规定 意义:降低程序设计的难度,导致了计算机的发展进入新的阶段,2019/5/30,12,数据成分:用来描述程序处理的数据对象
4、运算成分:用来说明程序所包含的运算 传输成分:用来表达程序中数据的传输,例如I/O语句 控制成分:用来描述程序中语句的执行顺序 (顺序结构 条件选择结构 重复(循环)结构),高级语言的基本成分,2019/5/30,13,程序设计方法,面向过程的结构化程序设计方法 C语言是一种结构化程序设计语言 面向对象的程序设计方法 JAVA 和C#是完全面向对象的程序设计语言,2019/5/30,14,高级程序设计语言的发展,50年代:Fortran,ALGOL 60年代:COBOL语言,BASIC语言 70年代:Pascal 语言,C语言 80年代: Ada语言,PROLOG语言,LISP语言 90年代起
5、:面向对象语言C+、 JAVA、C#等,2019/5/30,15,本教程的学习目标,了解结构化程序设计的基本概念与方法,进而学会利用C语言编写程序来解决一般应用问题,参加下半年的全国计算机二级C语言考试。,2019/5/30,16,几 点 说 明,课程说明 考试说明 学习方法,2019/5/30,17,课 程 说 明,内容: 理论(C语言程序设计教材) 上机实践(作业) 教学方式:理论和实践相结合,为了更好地理解和掌握所学内容,上机内容最好是应用所学知识自己动手编写调试一些简单的应用程序。,上机课要求: 每次上机课前明确上机内容,根据实验任务,做好充分准备工作,C语言程序设计是一门实践性非常强
6、的课程,2019/5/30,18,考试说明,结业考试期末成绩:70% 平时成绩(期中、平时作业、考勤、上机) : 30% 等级考试(江苏或全国) 时间:2011年9月中旬形式:笔试+机试,2019/5/30,19,明确第一次通过等级考试的重要性,通过等级考试(全国或江苏)是找工作或考公务员所必不可少的 争取第一次通过等级考试,如果第一次不能通过,以后通过的希望将比较小(主要是自控力和毅力不足所致),2019/5/30,20,全国计算机二级C语言考试大纲,C语言部分大纲 基础知识部分大纲,2019/5/30,21,学习方法,态度端正、能够积极主动学习 举一反三 融会贯通 一句话训练自己“举一反三
7、、融会贯通”的能力:这个知识(道理)还可以运用在什么地方?,2019/5/30,22,怎样学好编程?,多阅读别人编写的源代码 自己多编写源代码 擅于利用身边的工具与环境 秘诀:编程,编程,再编程 !,2019/5/30,23,程序的开发过程,分析 设计 编码 将源程序输入到计算机中,生成后缀为c的磁盘文件。 编译 将程序的源代码转换为机器语言代码。 连接 将多个源程序文件以及库中的某些文件连在一起,生成一个后缀为exe的可执行文件。 运行 调试,2019/5/30,24,Visual C+ 6.0集成开发环境,2019/5/30,25,Visual C+ 6.0集成开发环境,教材P9 实验指导
8、书P144 教材P15,2019/5/30,26,Visual C+ 6.0集成开发环境(IDE),1. 启动Visual C+ 6.0环境,2. 编辑源程序文件,3. 编译和连接,4. 执行,利用Visual C+ 6.0集成环境开发C+程序的过程如下:,2019/5/30,27,1.启动Visual C+ 6.0环境,方法:单击 “开始”-“程序”-“Microsoft Visual studio 6.0”-“Microsoft Visual C+ 6.0”命令,2019/5/30,28,2. 编辑源程序文件,(1)建立新工程项目单击“文件”-“新建”,弹出“新建”对话框。,单击“工程”选
9、项卡;单击“Win32 Console Application ”选项;“工程”文件框中输入项目名,如“gc1”和“位置”框输入或选择新项目所在位置,单击“确定”按钮。 弹出“Win32 Console Application Step 1of 1”对话框。,单击“An empty project”按钮和“完成”按钮。系统显示“新建工程信息”对话框。单击“确定”按钮。,2019/5/30,29,2. 编辑源程序文件,(2)建立新项目中的文件 单击“文件”-“新建”,弹出“新建”对话框。, 新建文本文件,显示文件编辑区窗口,在文件编辑 区窗口输入源程序文件。,保存文件为: 文件名.c,2019/
10、5/30,30,3. 编译和连接,方法一:选择主窗口菜单栏中“编译”菜单项;系统弹出下拉菜单,选择“构件”菜单命令。,方法二:单击主窗口编译工具栏上的 “Build”按钮进行编译和连接。,(2)编译连接过程中,系统如发现程序有语法错误,则在输出区窗口中显示错误信息,给出错误的性质、出现位置和错误的原因等。如果双击某条错误,编辑区窗口右侧出现一个箭头,指示再现错误的程序行。用户据此对源程序进行相应的修改,并重新编译和连接,直到通过为止。,(1)系统对程序文件进行编译和连接,生成以项目名称命名的可执行目标 代码文件.exe。,2019/5/30,31,4. 执行,方法一:单击“编译”菜单中“执行”
11、命令。 方法二:单击主窗口编译工具栏上的 “Build Execute”按钮来执行编译连接后的程序。,运行成功,屏幕上输出执行结果,并提示信息:“Press any key to continue”。此时按任意键系统都将返回VC6主窗口。,在执行程序过程中出现运行错误。用户要修改源程序文件并且重新编译、连接和执行。,2019/5/30,32,认识 C语言从这里开始,第一个程序范例:打印单词“Hello, World”#include /* 为什么用这个指令呢?*/ main() /* 程序执行的入口 */ printf(“Hello, worldn“); 思考:如何把“hello”和“worl
12、d” 分别打印在两行,2019/5/30,33,C程序由函数构成. 语句结尾要用“ ; “ 程序有且只有一个主函数main(),且不能省略( ) 程序体用“和“括起来 函数体中又包括说明部分和执行部分 注释由符号对“ /* */”,一般不允许嵌套注释,如:/* this is/*a inlay*/comment*/,2019/5/30,34,为避免输出产生二义性,经常人为地加入一些分隔符。常用分隔符: 空格(space键) 水平制表符 t: 水平制表符,表示下一个输出项应显示在屏幕上的下一个显示区。通常,一个显示区的宽度为8个字符宽新行指示符n:使随后的输出内容从新的一行开始。,2019/5/
13、30,35,#include main() int i, j;i=5j=10;printf(“%d %dn“,i,j); ,左边是一个含语法错误的源程序。编译该程序,看看编译器会给出些什么错误信息。根据提示进行修改,直至成功生成可执行文件。,2019/5/30,36,程序的调试,错误信息由四部分组成: 1.给出错误所在的源程序名 2.错误所在的行号(用圆括号括起来) 3.错误号 4.给出错误说明 定位出错行的方法: 1.根据行号 2.双击错误信息说明行(最常用的方法),2019/5/30,37,程序的调试,1.F9:设置断点(或按键) 2.按F5键 3.F10(step over):单步执行
14、4.Ctrl+F10(Run to cursor): 运行到光标处 5. F11(step into):进入函数(第5章用到) 6.Call Stack:函数调用栈(第5章用到) 7.Memory(第6、7章用到),实验指导书P146P147,2019/5/30,38,打印华氏温度与摄氏温度对照表,计算公式: C=(5/9)(F-32),2019/5/30,39,打印华氏温度与摄氏温度对照表,#include /* 对 fahr = 0, 20, ., 300 打印华氏温度与摄氏温度对照表 */ main() int fahr, celsius;int lower, upper, step;l
15、ower = 0; /* 温度表的下限 */upper = 300; /* 温度表的上限 */step = 20; /* 步长 */fahr = lower;while (fahr = upper) celsius = 5 * (fahr-32) / 9;printf(“%dt%dn“, fahr, celsius);fahr = fahr + step; ,计算公式: C=(5/9)(F-32),2019/5/30,40,代码风格,#include /* 对 fahr = 0, 20, ., 300 打印华氏温度与摄氏温度对照表 */ main() int fahr, celsius;int
16、 lower, upper, step;lower = 0; /* 温度表的下限 */upper = 300; /* 温度表的上限 */step = 20; /* 步长 */fahr = lower;while (fahr = upper) celsius = 5 * (fahr-32) / 9;printf(“%dt%dn“, fahr, celsius);fahr = fahr + step; ,2019/5/30,41,没有代码风格,#include main()int fahr,celsius; int lower,upper,step; lower=0;upper=300;step=
17、20;fahr=lower; while (fahr=upper) celsius=5*(fahr-32)/9; printf(“%dt%dn“,fahr,celsius); fahr=fahr+step;,2019/5/30,42,例2 从键盘输入两个整数值,计算其和, 并输出结果 / 求两个整数的和并输出 #include int main(void) int i,j,sum;printf( “Enter two integers:“); scanf(“%d %d“, ,运行示例 Enter two integers:63 58 The sum is 121.,2019/5/30,43,实
18、验一,实验指导书P144P147 P167实验一,2019/5/30,44,作业,习题1 1.1,1.4,1.5,2019/5/30,45,怎样让计算机读懂高级语言?,程序员按照该语言的语法编写程序源代码 把自己的意图写入源代码中 编译器读入源代码 把程序员的意图转换成可执行程序,供他人使用,C语言,可执行程序,编译器,2019/5/30,46,程序是如何运行的?,计算机把机器代码读入到内存(Memory) 由CPU运行这些代码 读取输入(Input) 产生输出(Output) 完成程序员预定的功能 计算机专业后续课程 计算机原理 编译原理 操作系统,2019/5/30,47,有最好的编程语言
19、吗?,能很好的解决问题的语言就是好语言。 Fortran已问世50年,仍然是科学计算首选 C语言辉煌30年,至今老当益壮 C+已度过其20岁生日,相信属于它的日子还很长很长 在最恰当的地方,最恰当的时候,选择最恰当的语言,同时防止跌入语言自身的陷阱。,2019/5/30,48,重点,熟悉 Visual C+ 6.0 集成开发环境。 在 Visual C+ 6.0 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。,2019/5/30,49,优秀程序员的基本素质,良好的编程风格,规范化编程 整齐的缩进,让代码的逻辑关系分外明朗 准确的变量命名,不需要注释,便可明辨 良好的注释,
20、解释清楚此程序的功能和变量含义 适当的空行,使程序的结构凸现 恰当位置的空格,让可读性更上一层楼 每行最多只有一条语句 ,2019/5/30,50,优秀程序员的基本素质,扎实的基础 数据结构、离散数学、编译原理 丰富的想象力 不滥用技巧 滥用技巧不是锦上添花,而是画蛇添足 不钻牛角尖 不拘泥于固定的思维方式,遇到问题时多想几种解决方案 韧性和毅力 “高手”和一般程序员最大的区别 严谨的思维,2019/5/30,51,优秀程序员的基本素质,“树上有十只鸟,开枪打死一只,还剩几只?” “是无声手枪或别的无声的枪吗?” “不是。” “枪声有多大?” “80分贝至100分贝。” “那就是说会震得耳朵疼
21、?” “是。” “在这个城市里打鸟犯不犯法?” “不犯。” “您确定那只鸟真的被打死啦?” “确定。”,2019/5/30,52,优秀程序员的基本素质,“OK,树上的鸟有没有聋子?” “没有。” “有没有关在笼子里的?” “没有。” “边上还有没有其它的树,树上还有没有其它的鸟?” “没有。” “有没有残疾的或饿得飞不动的鸟?” “没有。” “算不算怀孕肚子里的小鸟?” “不算。” “打鸟的人眼睛有没有花?保证是十只?” “没有花,就十只。”,2019/5/30,53,优秀程序员的基本素质,“有没有傻得不怕死的?” “都怕死。” “会不会一枪打死两只?” “不会。” “所有的鸟都可以自由活动吗
22、?” “完全可以。” “如果您的回答没有骗人,”学生满怀信心地说,“打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,就一只不剩。”,2019/5/30,54,数据结构+算法=程序(计算机科学家N.Wirth提出),“软件的主体是程序,程序的核心是算法“。这是因为要使计算机解决某个问题,首先必须针对该问题设计一个解题步骤(”算法”) ,然后再据此编写程序并交给计算机执行。采用某种程序设计语言对问题的对象和解题步骤进行的描述就是程序。因此如何描述问题的对象(称为“数据结构”)和如何设计算法,是编写程序必须首先考虑的两个重要方面。,2019/5/30,55,数据结构的内容,1 数据的抽象(逻
23、辑)结构,即数据结构中包括哪些元素,相互之间有什么关系等。例如:,2 数据的物理(存储)结构,即数据的抽象结构如何在实际的存储器中予以实现,数据元素如何表示,相互关系如何表示等,3 定义在数据结构上的一组运算(操作)及其实现方法,一对一关系,一对多关系,多对多关系,数据结构-专门研究程序设计中计算机操作对象以及对象之间的关系和运算的学科,2019/5/30,56,逻辑结构:,2019/5/30,57,算法的表示方法,文字说明 流程图表示 用N-S盒图表示算法 用PAD图描述算法 伪代码(一种介于自然语言和程序设计语言之间的文字和符号表达工具),2019/5/30,58,C程序设计语言,20世纪
24、60年代,贝尔实验室,Ken Thompson开始开发一个叫做UNIX的操作系统 70年代 将BCPL语言改造成更适合开发UNIX的B语言1973年,Dennis M. Ritchie将B语言改造成C语言,把UNIX操作系统的90%以上源代码用C语言改写,接受美国国家技术勋章,2019/5/30,59,C语言的设计者,Ritchie漫画像,1978年,Brian W.Kernighan和Dennis M.Richie 合著影响深远的名著 The C Programming Language 称为标准的C语言版本 1983年,美国国家标准化学会(ANSI)对C发展和扩充,制定了新的标准称为 ANSI C “ANSI C”标准的发布是C语言成熟的标志 教科书就是以ANSI C为依据编写的,2019/5/30,60,C程序设计语言,是一种高级语言 并不“高级”,只是相对低级语言,在一个高的级别上进行编程 但实际上是一种介于高级语言和低级语言之间的语言 历史悠久,战勋卓著 诞生于上世纪70年代初,成熟于80年代 很多重量级软件都是用C写的 上天入地,无所不能 几乎没有不能用C写出来的软件,没有不支持C的系统 很多流行语言、新生语言都借鉴了它的思想、语法 从C+,到Java,再到C# 正确地学好C语言,是学习这些流行语言的基础,