您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第1章程序设计和C语言
第1页(共50页)第1章程序设计和C语言教学时数:2学时重点难点:1.C语言的特点。2.TC的运行环境。教学要求:1.了解C语言的发展历史和特点。2.理解C程序的构成及C函数的组成。3.掌握C程序的上机步骤。教学内容:一、什么是计算机程序程序:一组计算机能识别和执行的指令或具有某种功能的指令集合。二、什么是计算机语言1.计算机语言:人和计算机交流信息的、计算机和人都能识别的语言。2.计算机语言发展阶段(1)低级语言或机器语言(由0和1组成的指令)。(2)中级语言或符号语言(用助记符号表示指令)。(3)高级语言(接近于人的自然语言和数学语言)。三、C语言的发展及其特点1.C语言的发展C语言是在BCPL(basiccombinedprogramming)基础语言(取第一个字母故而称为B语言的基础上发展起来的。因为B语言过于简单、功能有限,在七十年代贝尔实验室的D.M.Ritchie设计出更精练并接近于B语言优点的BCPL的C语言(取第二个字母故而称为C语言)。后来又经过多次改进成为今天广泛流行的、适合大学诸多专业的教学语言。它既可用来编写系统软件,也可用来编写应用软件。2.C语言的特点(1)语言凑简、语法限制不太严格、程序设计自由度大C语言有37个关键字;对数组下标越界不做检查,整型与字符型可通用;程序书写格式自由,一行可写多条语句,一条语句也可写入多行。(2)算符丰富、数据类型丰富、具有结构化的控制语句C语言有34种运算符;类型且多样化(有基本类、构造类、指针类和空类型);9中控制语句,如if…else语句、while语句、do…while语句、switch语句、for语句,用函数作为程序的模块单位,便于实现程序的模块化。(3)允许直接访问物理地址、能对位和对硬件直接操作C语言具有高级语言的功能和低级语言的许多功能,可用来编写系统软件这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言。(4)可移植性好、生成目标代码质量和程序执行效率高用C语言编写好的程序基本不做源代码修改就可在各种型号的计算机都能运行;生成目标代码质量仅低于汇编语言的10—20%。第2页(共50页)四、最简单的C语言程序1.最简单的C语言程序举例2.C语言程序的结构C程序是由一个或多个函数构成的。函数由函数首部和函数体部构成,而函数体部又由声明部分和执行部分组成。一个C程序有仅能有一个主函数main,但可有其他函数多个。因此,函数是C语言程序的基本单位。程序总是从main函数开始执行。五、运行C程序的步骤与方法1.运行C程序的步骤编辑(.c文件)——编译(.obj文件)——连接(.exe文件)——运行程序2.运行C程序的方法File——new——编辑源程序——Ctrl+F9——输入数据——Alt+F5第2章算法教学时数:2学时重点难点:1.算法的概念、思想。2.流程图以及N-S图。教学要求:1.了解算法的不同表示方法。2.理解算法的概念和特性。3.理解算法的N-S流程图表示法。教学内容:一、什么是算法广义地说,为解决一个问题而采取的方法和步骤称为“算法”。对同一个问题,可以有不同的解题方法和步骤。计算机算法可分为两大类别:数值运算算法(其目的是求数值解)和非数值运算算法(包括的面十分广泛,最常见的是用于事务管理领域)。例1.1:输出一行信息。#includestdio.hintmain(){printf(”ThisisaCprogram.\n”);}例1.2:求两个整数之和。#includestdio.hintmain(){inta=123,b=456,sum;sum=a+b;printf(”sumis%d\n”,sum);}例1.3:求两个整数中的较大者。#includestdio.hintmain(){intmax(intx,inty);inta,b,c;scanf(”%d,%d”,&a,&b);c=max(a,b);printf(max=%d\n,c);}intmax(intx,inty){intz;if(xy)z=x;elsez=y;return(z);}第3页(共50页)二、简单的算法举例例2.1:求1×2×3×4×5×…×1000原始的算法:步骤1:先求01*02,得到结果02。步骤2:将步骤1得到的乘积02再乘以03,得到结果006。步骤3:将步骤2得到的乘积06再乘以04,得到结果024。步骤4:将步骤3得到的乘积24再乘以05,得到结果120。……太繁琐!例2.1:求1×2×3×4×5×…×1000改进的算法:设变量p为被乘数,变量i为乘数。步骤1:使p=1。步骤2:使i=2。步骤3:使p与i相乘,乘积仍放在变量p中,可表示为:p=p*i。步骤4:使i的值加1,可表示为:i=i+1。步骤5:若i=5(或1000),返回步骤3继续;否则,算法结束,最后得到p的值。若求1×3×5×7×9×11×……则只需上述算法中的i=2改写成i=3;i=i+1改写成i=i+2即可。例2.2:有50个学生,要求将成绩在80分以上的学生的学号和成绩输出。其中的算法:用ni代表第i个学生的学号,gi代表第i个学生的成绩。步骤1:i=1。步骤2:若gi=80,则输出ni和gi,否则不输出。步骤3:i=步骤4:若i=50,返回到步骤步骤2:,继续执行,否则,算法结束。例2.3:判定2000—2500年中的闰年,并将结果输出。闰年必须同时满足的两个条件:(1)能被4整除,但不能被100整除的年份都是闰年;(2)能被400整除的年份是闰年。其中的算法:步骤1:year=2000。步骤2:若year能被4整除,不能被100整除;同时,若year能被400整除,则输出year的值和“是闰年”。然后转到步骤4执行。步骤3:否则,其他情况输出year的值和“不是闰年”。步骤4:year=year+1。步骤5:当year=2500时,转到步骤2继续执行,否则停止。第4页(共50页)三、算法的特性(1)有穷性。一个算法应包含有限的操作步骤,而不能是无限的。(2)确定性。算法中的每一步都应当是确定的,而不能是含糊的。(3)有零个或多个输入。执行算法时需要从外界取得必要的信息。(4)有一个或多个输出。算法的目的是为了求解,就是输出信息。(5)有效性。算法中的每一步都应当能有效地执行,确定的结果。四、算法的表示1.用自然语言表示算法用自然语言写算法通俗易懂,但文字冗长,容易出现歧义且包含分支和循环的算法,不很方便,除了简单的问题外,一般不用自然语言。2.用流程图表示算法例2.4求1-1/2+1/3-1/4+…+1/99-1/100分析得出规律:①第1项的分子分母都是1。②第2项的分母是2,以后每一项的分母子都是前一项的分母加1。③笫2项前的运算符为“-”,后一项前面的运算符都与前一项前的运算符相反。其中的算法:步骤1:当前项符号sign=1。步骤2:当前各项和sum=1。步骤3:当前项分母deno=2。步骤4:sign=(-1)*sign。步骤5:当前项的值term=sign*(1/deno)。步骤6:sum=sum+term。步骤7:deno=deno+1。步骤8:若deno=100返回步骤4;否则算法结束。说明:99次循环后sum的值就是所要求的结果。例2.5给出一个大于或等于3的正整数,判断它是不是一个素数。分析所谓素数:是指除了1和该数本身之外,不能被其他任何整数整除的数步骤1:输入n的值。步骤2:i=2(i作为除数)。步骤3:n被i除,得余数r。步骤4:若r=0,则n能被i整除,输出n“不是素数”,算法结束;否则执行步骤5。步骤5:i=i+1。步骤6:如果i=n-1,返回步骤3;否则输出n“是素数”,然后结束。第5页(共50页)流程图是用一些图框来表示各种操作,用图形表示算法,直观形象,易于理解。但传统流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制使用者可以毫不受限制地使流程随意地转来转去,使人难以理解算法的逻辑。例2.6:将例2.1求1×2×3×4×5的算法用流程图表示。例2.8:将例2.3判定2000—2500中闰年的算法用流程图表示。例2.9:将例2.4求1-1/2+1/3-1/4+…+1/99-1/100的算法用流程图表示。4.用N-S流程图表示算法例2.11:将例2.1求1×2×3×4×5的算法用N-S图表示。例2.12:求50名学生中成绩高于80分者的学号和成绩输出的算法用N-S图表示。5.用伪代码表示算法伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法,用伪代码写算法并无固定的、严格的语法规则,可以用英文,也可以中英文混用。6.用计算机语言表示算法要完成一项工作,包括设计算法和实现算法两个部分。设计算法的目的是为了实现算法。例2.16:求1×2×3×4×5的算法用伪代码表示。begin(算法开始)t=1i=2whilei≤5{t=t*ii=i+1}printtend(算法结束)例2.18:将例2.16求1×2×3×4×5的算法用C语言表示。#includestdio.hintmain(){inti,t;t=1;i=2;while(i=5){t=t*i;i=i+1;}printf(%d\n,t);}第6页(共50页)五、结构化程序设计方法结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构。其基本思路是把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内。采取以下方法保证得到结构化的程序:(1)自顶向下;(2)逐步细化;(3)模块化设计;(4)结构化编码。第3章最简单的C程序设计教学时数:4学时重点难点:1、数据的输入和输出。2、printf();scanf()。教学要求:1.了解各种类型的C语句。2.理解程序执行的顺序性。3.掌握数据输入/输出的函数的使用方法。教学内容:一、顺序程序设计举例例3.1:有人用温度计测量出用华氏法表示的温度(如f,今要求把它转换为以摄氏法表示的温度(如c)。解题思路:找到二者间的转换公式c=5/9(c-32)。c代表摄氏温度,f代表华氏温度。#includestdio.hintmain(){floatf,c;f=64.0;c=(5.0/9)*(f-32);printf(f=%f\nc=%f\n,f,c);}例3.2:计算存款利息。有1000元,想存一年。有三种方法可选:(1)活期,年利率为r1;(2)一年期定期,年利率为r2;(3)存两次半年定期,年利率为r3。请分别计算出一年后按三种方法所得到的本息和。解题思路:确定计算本息和的公式。从数学知识可知:若存款额为p0,则:活期存款一年后本息和为:p1=p0(1+r1);一年期定期存款,一年后本息和为:p2=p0(1+r2);两次半年定期存款,一年后本息和为:p3=p0(1+r3/2)(1+r3/2#includestdio.hintmain(){floatp0=1000,r1=0.0036,r2=0.0225,r3=0.0198,p1,p2,p3;p1=p0*(1+r1);p2=p0*(1+r2);p3=p0*(1+r3/2)*(1+r3/2);printf(”%f\n%f\n%f\n”,p1,p2,p3);}第7页(共50页)二、数据的表现形式及其运算1.常量:在程序运行过程中,其值不能被改变的量称为常量。(1)整型常量:如10020,12345,0,-3452(2)实型常量:十进制形式(如0.34,-56.79,0.0);指数形式(如12.34e3)(3)字符常量:如’?’;字符串常量:如”boy”;转义字符:如’\n’;符号常量:#definePI3.14162.变量:在程序运行过程中,其值可以被改变的量称为变量。变量必须先定义(定义变量时指定该变量的名字和类型),后使用。变量名(字母、数字和下划线三者的组合,但数字不能开头)实际上是以一个名字代表的一个存储地址,从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。3.数
本文标题:第1章程序设计和C语言
链接地址:https://www.777doc.com/doc-599298 .html