1、第一章第一章 C语言程序设计基础知识语言程序设计基础知识 l以封魔录游戏中的具体功能描述流程图以封魔录游戏中的具体功能描述流程图l以封魔录游戏中的具体代码描述以封魔录游戏中的具体代码描述C语言程语言程序设计的基本知识序设计的基本知识1.1 1.1 引言引言l1.1.1 计算机与信息社会计算机与信息社会计算机定义:计算机定义:一种在事先存入一种在事先存入程序程序的控制下,能的控制下,能够够接收接收数据、数据、存储存储数据、数据、处理处理数据并提数据并提供处理供处理结果结果的数字化的数字化电子设备电子设备。计算机工作流程图计算机工作流程图输入输入运算与运算与控制控制存储存储输出输出数据数据l计算机
2、计算机结果结果1.1.2 1.1.2 计算机中信息的表示计算机中信息的表示 1.1.计算机内所有信息采用计算机内所有信息采用二进制二进制表示表示 2.2.采用二进制的原因:采用二进制的原因:1 1)二进制只包含)二进制只包含0 0和和1 1,可以使用具有两,可以使用具有两种不同稳定状态的元件来表示。种不同稳定状态的元件来表示。2 2)二进制数的运算规则简单,使得计算)二进制数的运算规则简单,使得计算机中的运算部件的结构也比较简单。机中的运算部件的结构也比较简单。3.计算机中信息的表示计算机中信息的表示数值数值直接转换为二进制直接转换为二进制字符字符采用采用ASCII编码(编码(7位、美国标准位
3、、美国标准信息交换码)信息交换码)其它信息其它信息(汉字、图形、图象、声音、(汉字、图形、图象、声音、表格)也有相应的编码标准和规则。表格)也有相应的编码标准和规则。计算机系统计算机系统软件系统软件系统硬件系统硬件系统系统软件(操作系统、编译程序、诊断程序系统软件(操作系统、编译程序、诊断程序系统服务软件等)系统服务软件等)应用软件应用软件(信息管理软件、游戏等)信息管理软件、游戏等)CPU控制器控制器运算器运算器输入设备(输入设备(键盘键盘、鼠标、手写笔、鼠标、手写笔、MIC等)等)输出设备(输出设备(显示器显示器、绘图仪、打印机等)、绘图仪、打印机等)存储器存储器 内存储器(内存储器(RA
4、M)外存储器(硬盘、外存储器(硬盘、U盘、光盘盘、光盘)HIT-C Programming需求分析需求分析(Analysis)设计设计(Design)开发开发C程序的步骤程序的步骤l1.设计算法l2.编写程序源代码把自己的意图写入源代码l3.编辑源程序l4.编译和连接l5.调试程序 直到改正了所有的编译错误和运行错误l6.运行程序例子例子1 输入一个整数,输出其绝对值l算法:算法:1 输入输入一个整数一个整数;2 若若该数为正数,则其绝对值该数为正数,则其绝对值取取该数的值该数的值 否则否则,其绝对值,其绝对值取取该数的相反数值;该数的相反数值;3 输出输出其绝对值。其绝对值。程序程序#inc
5、lude void main()int numb;/*代表一个整数代表一个整数*/int abs;/*代表运算结果:绝对值代表运算结果:绝对值*/scanf(“%d”,&numb);/*输入整数的值输入整数的值*/if (numb0)abs=numb;else abs=-numb;printf(“numb 的绝对值是:的绝对值是:%dn”,abs);例子例子2 封魔录游戏主界面功能选择l算法:算法:1 初始化初始化(令令hang=0;ch=1等等);2 如果处于第如果处于第5个功能项且字符个功能项且字符ch等于回车符等于回车符,跳到第跳到第6步;步;3 显示显示5个功能项;个功能项;4 输入输
6、入一个字符一个字符ch;5 如果如果字符字符ch等于等于s(向下)(向下),则选择下一功能项则选择下一功能项(hang增加增加2),其中),其中如果如果已经处于第已经处于第5个功能项,个功能项,不再往下选。不再往下选。否则如果否则如果字符字符ch等于等于w(向上)(向上),则则选择上一功能项(选择上一功能项(hang减少减少2),其中),其中如果如果已经处已经处于第于第1个功能项,不再往上选。跳到第个功能项,不再往上选。跳到第2步;步;6 结束结束程序程序int main(void)char ch=1;/输入的字符输入的字符,初始设为,初始设为1。int hang=0;/用来控制光标的行位置。
7、共有用来控制光标的行位置。共有0,2,4,6,8 /四个有效值四个有效值,初始设为,初始设为0,即处于第,即处于第1个功能项个功能项 /调用调用DOS命令;命令;title 为命令提示符窗口创建标题。为命令提示符窗口创建标题。system(title 封魔录封魔录);system(color f1);/color 设置颜色设置颜色while(!(hang=8&ch=13)/循环选择。循环选择。/显示显示5个功能项个功能项if(hang=0)gotoxy(20,8);printf(%c%c,16,16);gamedifficult_show();gotoxy(22,8);printf(开始游戏开
8、始游戏);gotoxy(22,10);printf(按键设置按键设置);gotoxy(22,12);printf(难度设置难度设置);gotoxy(22,14);printf(游戏制作游戏制作);gotoxy(22,16);printf(退出退出);ch=getch();/无回显获取一个字符;无回显获取一个字符;if(ch=key_down)/shang=hang+2;if(hang8)hang=hang-2;gotoxy(20,6+hang);printf();gotoxy(20,8+hang);printf(%c,16);else if(ch=key_up)/whang=hang-2;if
9、(hang0)hang=hang+2;gotoxy(20,10+hang);printf();gotoxy(20,8+hang);printf(%c,16);程序的程序的灵魂灵魂算法算法l一个程序应包括:一个程序应包括:对数据的描述:在程序中要指定数据对数据的描述:在程序中要指定数据的类型和数据的组织形式的类型和数据的组织形式 即即数据结构数据结构(data structure)对操作的描述:数据进行操作的具体对操作的描述:数据进行操作的具体步骤,即步骤,即算法算法(algorithm)程序构成公式lNikiklaus Wirth 提出的公式:提出的公式:程序程序=数据结构数据结构+算法算法l
10、目前已经修改为目前已经修改为 程序程序=算法算法+数据结构数据结构 +程序设计方法程序设计方法+语言工具和环境语言工具和环境 算法及其表示算法及其表示l算法:解决问题所采取的一系列步骤算法:解决问题所采取的一系列步骤l例,要求计算圆的面积,算法为:例,要求计算圆的面积,算法为:设置(输入或指定)设置(输入或指定)半径值半径值r;使用公式使用公式s=r2;显示(输出)显示(输出)S的值。的值。算法的特点算法的特点(1)有输入有输入 算法可以有算法可以有零个或多个零个或多个输入。在一个算法输入。在一个算法的执行过程中,提供需处理的的执行过程中,提供需处理的数据数据或控制算或控制算法执行过程的法执行
11、过程的信息信息。(2)有输出有输出 算法算法必须必须具有一个或多个执行结果的输出。具有一个或多个执行结果的输出。没有输出的算法是一个无效的算法。没有输出的算法是一个无效的算法。算法的特点算法的特点(3)(3)有穷性有穷性 任何算法都应该在执行有穷步骤之后结束。任何算法都应该在执行有穷步骤之后结束。(4)(4)确定性确定性 算法不能具有二义性。算法中每一步的语算法不能具有二义性。算法中每一步的语义都应该清晰明了,明确指出应该执行什么操义都应该清晰明了,明确指出应该执行什么操作,如何执行操作。作,如何执行操作。算法的特点算法的特点(5)高效性高效性 根据算法编写出来的程序应具有较高的根据算法编写出
12、来的程序应具有较高的时时空效率空效率:执行时间短执行时间短 不占用过多内存。不占用过多内存。算法的表示(描述)算法的表示(描述)l自然语言自然语言表示表示 易理解和交流,但易产生二义性。易理解和交流,但易产生二义性。l伪代码伪代码表示表示 伪代码使用介于自然语言和计算机伪代码使用介于自然语言和计算机语言之间的语言之间的文字和符号文字和符号来描述算法来描述算法 算法的表示(描述)算法的表示(描述)l程序流程图程序流程图 用用图形符号和文字说明图形符号和文字说明来表示数据来表示数据处理的过程和步骤。处理的过程和步骤。lN-SN-S流程图流程图 也称方框图也称方框图;适于结构化程序设计的;适于结构化
13、程序设计的算法描述工具。算法描述工具。程序流程图程序流程图描述算法的良好工具。描述算法的良好工具。逻辑框和流向线逻辑框和流向线组成。组成。逻辑框是表示功能的图形符号逻辑框是表示功能的图形符号 流向线指示逻辑处理顺序流向线指示逻辑处理顺序逻辑框和流向线逻辑框和流向线NY流程图的逻辑框l起止框起止框 表示程序的开始和结束。表示程序的开始和结束。l处理框处理框 表示一种处理功能或程序段,框内用文表示一种处理功能或程序段,框内用文字简述其功能。字简述其功能。逻辑框l判断框判断框 表示在此进行判断以决定程序的流向,表示在此进行判断以决定程序的流向,框内注明判断条件。框内注明判断条件。l连接框连接框 框内
14、注有字母,当流程图跨页时,或者框内注有字母,当流程图跨页时,或者可能出现流向线交叉时,用它来表示彼此可能出现流向线交叉时,用它来表示彼此之间的关系,相同符号的连接框表示它们之间的关系,相同符号的连接框表示它们是相互连接的。是相互连接的。流向线流向线l流向线流向线 以单向箭头表示。以单向箭头表示。N-S流程图流程图 1973年美国学者年美国学者Nassi和和Schneiderman提提出出N-S流程图(也称为方框图),它是一种流程图(也称为方框图),它是一种适于结构化程序设计的算法描述工具。适于结构化程序设计的算法描述工具。由于流程图各步骤之间,一般总是按照从由于流程图各步骤之间,一般总是按照从
15、上到下顺序执行上到下顺序执行(N-S流程图中取消了流向流程图中取消了流向线线)二选一结构的表示二选一结构的表示ABYN满足不满足AB编写程序编写程序 l算法用算法用C语言进行实现,该过程也称语言进行实现,该过程也称对算法进行编码对算法进行编码;l按照算法的流程顺序编写程序按照算法的流程顺序编写程序;l编写程序还必须进行语句编写程序还必须进行语句执行过程执行过程的的控制控制。语言提供的控制结构语言提供的控制结构1顺序顺序:定义了语句按顺序执行的次序。:定义了语句按顺序执行的次序。2选择选择:根据某个条件的结果,对多条语:根据某个条件的结果,对多条语句,选择执行其中的一条语句。句,选择执行其中的一
16、条语句。3循环循环(重复):根据某个条件的结果,(重复):根据某个条件的结果,重复执行某些语句。重复执行某些语句。4调用调用:即在需要时运行指定的代码段。:即在需要时运行指定的代码段。C语言程序的基本结构语言程序的基本结构#include void main()数据定义数据定义;(变量说明语句);(变量说明语句);数据处理数据处理;(执行语句);(执行语句);数据结构数据结构算法算法程序说明程序说明每个每个C程序必须有一个程序必须有一个主函数主函数main 是函数开始和结束的标志是函数开始和结束的标志若需要输入和若需要输入和/或输出功能,程序或输出功能,程序开头应该为开头应该为#include
17、#include void main()printf(“我可以设计程序了我可以设计程序了.n”);程序简例程序简例程序的作用是输出一行信息程序的作用是输出一行信息:我可以设计程序了我可以设计程序了.l自然语言描述:自然语言描述:1 输入输入一个整数一个整数;2 若若该数为正数,则其绝对值该数为正数,则其绝对值取取该数的值该数的值 否则否则,其绝对值,其绝对值取取该数的相反数值;该数的相反数值;3 输出输出其绝对值。其绝对值。例子例子1 输入一个整数,输出其绝对值算法伪码表示伪码表示BEGIN READ numb IF numb0 abs=numb ELSE abs=-numb PRINT ab
18、sENDBEGIN READ numb IF numb0abs=numbabs=-numbPRINT absENDYN程序程序#include void main()int numb;/*代表一个整数代表一个整数*/int abs;/*代表运算结果:绝对值代表运算结果:绝对值*/scanf(“%d”,&numb);/*输入整数的值输入整数的值*/if (numb0)abs=numb;else abs=-numb;printf(“numb 的绝对值是:的绝对值是:%dn”,abs);例子例子2 封魔录游戏主界面功能选择算法算法l自然语言描述:自然语言描述:1 初始化初始化(令令hang=0;ch
19、=1等等);2 如果处于第如果处于第5个功能项且字符个功能项且字符ch等于回车符等于回车符,跳到第跳到第6步;步;3 显示显示5个功能项;个功能项;4 输入输入一个字符一个字符ch;5 如果如果字符字符ch等于等于s(向下)(向下),则选择下一功能项则选择下一功能项(hang增加增加2),其中),其中如果如果已经处于第已经处于第5个功能项,个功能项,不再往下选。不再往下选。否则如果否则如果字符字符ch等于等于w(向上)(向上),则则选择上一功能项(选择上一功能项(hang减少减少2),其中),其中如果如果已经处已经处于第于第1个功能项,不再往上选。跳到第个功能项,不再往上选。跳到第2步;步;6
20、 结束结束伪代码伪代码BEGIN SET 0hang SET 1ch WHILE ch=13 and hang=8 are not satisfied BEGIN DISPLAY 5 function items READ a char data to ch from keyboard IF ch=s then hang+2 hang IF hang 8 then hang-2 hang SELECT the corresponding function item ELSE IF ch=w then hang-2 hang IF hang 8hang+2hanghang-2hangSELECT
21、 the itemN NYNYNch=wYNhang-2hanghang+2hangSELECT the itemN NYNhang8)hang=hang-2;gotoxy(20,6+hang);printf();gotoxy(20,8+hang);printf(%c,16);else if(ch=key_up)/whang=hang-2;if(hang =!=逻辑运算符逻辑运算符:!&|位运算符位运算符:&|运算符的重载运算符的重载(超载超载)C语言的某些运算符有双重含义,称语言的某些运算符有双重含义,称为运算符的重载;为运算符的重载;使用时要根据上下文确定具体含义。使用时要根据上下文确定具
22、体含义。常量常量数值常量:数值常量:586,-15,3.1415 字符(串)常量字符(串)常量:a,B,“china”变量变量是指在程序执行中其值可改变的数是指在程序执行中其值可改变的数据,使用标识符代表。据,使用标识符代表。程序中的数据只能表示为程序中的数据只能表示为常量或变量常量或变量。(分)界符(分)界符 界符是用来分隔数据、表达式、语句界符是用来分隔数据、表达式、语句的符号;的符号;C语言的分隔符主要指空格、制表和语言的分隔符主要指空格、制表和换行符、括号、分号和逗号等。换行符、括号、分号和逗号等。第一章第一章 小结小结l计算机系统由硬件和软件两部分组成的。计算机系统由硬件和软件两部分
23、组成的。硬件硬件:构成计算机的五大部件;包括存储构成计算机的五大部件;包括存储器、运算器、控制器、输入设备和输出设备器、运算器、控制器、输入设备和输出设备 软件:指程序及文档软件:指程序及文档l计算机中的信息是以二进制形式存放的。计算机中的信息是以二进制形式存放的。C语言是系统软件和应用软件开发中重要的工具语言是系统软件和应用软件开发中重要的工具语言。语言。C语言程序是由一系列函数组成的。语言程序是由一系列函数组成的。C语言是编译型的高级程序设计语言。语言是编译型的高级程序设计语言。C语言程序设计过程包括语言程序设计过程包括:算法设计算法设计、编码、编、编码、编译、连接、运行等。译、连接、运行等。“算法设计算法设计”是先导,对于比较复杂的程序,是先导,对于比较复杂的程序,不要急于写代码,要先把算法设计出来。不要急于写代码,要先把算法设计出来。课后作业课后作业l习题1.3、1.4、1.6、1.7l学画例2的流程图