*不管用哪一种语言来编写程序,都必须熟悉该语言的语法规则和使用规定,严格按照该语言的语法规则和使用规定来编写程序。
*要经常进行程序设计的脑力思维,掌握程序设计的技能
★人们是如何从解决实际问题入手编写程序的?
算法和算法设计
1.算法
算法就是为解决一个特定的问题所采取的
确定的有限的步骤。
例1.1 求导体电阻。
计算机操作步骤如下:
(1)从键盘输入电压数据和电流数据;
(2)用公式R=U/I求出导体电阻;
(3)在屏幕上输出运算结果。
算法描述:
(1)设置:变量u,变量i,变量r;
(2)输入:u, i;
(3)运算:r=u/i;
(4)输出:r.
2.算法和算法设计
例:输出两个数据中的较大者。
算法描述:
(1)设置变量a1,a2,max;
(2)输入输入两个数据分别存放于a1,a2中;
(3)若a1≥a2,则让max=a1,
否则就是a1<a2,则让max=a2;
(4)输出max内容;
(5)结束。
算法和算法设计
例:统计某次考试100个学生的平均成绩。
对这道题,粗略的算法是分两步:
第1步,计算出100个学生的成绩总分;
第2步,求出平均分并打印出来。
算法描述:
(1)将第1个学生的成绩输入计算机;
(2)将第2个学生的成绩输入计算机;
(3)将以上两个学生的成绩相加;
(4)将第3个学生的成绩输入计算机;
(5)将它和前两个学生的成绩和相加;
(6)将第4个学生的成绩输入计算机;
……
(198)将第100个学生的成绩输入计算
(199)将它和前99个学生的成绩和相力直至加完个学生的成绩总分;
(200)将成绩总分除以100,得到平均
(201)打印出平均分。
先安排好存放数据的变量
设:sum为“累加变量”,sum的初值=0。
c为“输入暂存变量”。
mean为“平均分变量”,存放要输出的结果。
n为“计数变量”,记录累加的学生成绩个
数。n的初值=0。
具体算法:
(1) sum-0;
(2) n-0
;(3)输入一个成绩→c;
(4) c+sum→sum;
(5) n+1→n,表示已累加了一个学生的成绩;
(6)若n<100则返回(3),否则执行(7);
(7) sum/n→mean;
(8)打印出平均分mean的值。
算法的流程图表示:
算法可以用自然语言来表示,也可以用流程图
来表示。
流程图能直观简明地描述算法,它由一些特定
的几何符号、文字说明和流向线组成。
常用流程图符号
3.算法的特性
(1)有穷性。
(2)确定性。
(3)有0个或多个输入量或者初始值,有1个或
多个输出量。所有算法涉及的数据,包括运算
的中间结果和暂存数据,必须以变量的形式安
排好存放的地方。一般变量有自己的标识,即
变量名称。
(4)可执行性。
C语言及其特点:
为提高互换性,美国国家标准学会(ANSI)对C语言进行
了规范化,并于1987年公布了新标准87ANSI C,得到
了各国的承认,以后又发展为新的C语言标准,既ANSI
X3.159-1989,简称C89。
1990年,国际标准化组织ISO接受C89为国际标准
ISO/IEC 9899:1990,简称C90,以后修订为C95。
1999年,又扩充了一些面向对象的特征,命名为
ISO/IEC 9899:1999,即C99。
目前流行的C编译系统如DOS系统下的MS C5.0、Turbo
C2.0/3.0,UNIX系统下的UNIX 4.2BSD等都是以它为基础的。
随着计算机技术的发展,C语言本身也在不断
地改进和发展。如C++就是在C基础上,扩充
了面向对象的程序设计而发展为一种全新语
言。
C++与C完全兼容,C++是C的超集,C是C++的
子集。
现今普遍流行的基于可视化编程的Visual
C++、Borland C++、网络编程语言JAVA等皆
以C语言为基础。可以说,掌握了C语言,就
掌握了深层应用计算机的本领。
优点:
(1)C语言既具有一般高级语言的易读、易写、易
查错等特点,又具有某些低级语言的功能,它的这
一特点使得它很适合编写需要直接与计算机硬件打
交道的系统软件和控制软件。
(2)C语言是一种结构化程序设计语言,它主张程
序模块化,采用函数调用方式来组成程序,非常方
便模块化软件设计。
(3)C语言数据类型很丰富。有基本类型和构造类
型等。特别是C的指针类型,它的强有力的功能与
使用上的灵活成为C语言的特征。
(4)C语言的运算符极其丰富,有34种之多。除了
拥有一般高级语言普遍具有的运算外,还有位运算
及独具特色的自增自减、复合赋值等运算。
(5)C语言移植性好,其输入输出功能是通过系统
提供的库函数完成的。
(6)C语言提供了一组以“#”号打头的预处理命令,
便于有效地组织和编译程序。
(7)语言简捷、紧凑、高效。
C语言也有不足的一面:
如它对变量类型的不一致性不作语法上的严格检查,
对变量和指针、数组越界没有设置屏障,
某些运算(自增自减等)还带来副作用等。
因此,编程者不能过多地依赖编译程序找出错误,
而要靠自己去保证程序的正确性,初学者应注意这
点。
目前,C语言成了学习和使用人数最多的一种计算
机语言,熟练掌握和应用C语言是从事计算机应用
人员的必备技能。
用C语言编写程序实现算法:
求梯形面积的C程序
#include “stdio.h”
void main()/*主函数,C程序的执行起点,该函数类型是void型*
{*说明语句部分*
int a,b,h;**变量说明,设梯形的上底、下底和高为int型变量*
float area;**变量说明,设area为实型变量(float型变量)*1
1*以下为执行语句部分*
printf(“Input a,b,h:");**提示输入a、b和h数据,末尾不换行*
scanf(“%d,%d,%d”,&a,&b,&h);r 调用函数scanf(),从键盘输
入数据给a,b,h*)
area=(a+b)*h/2.0;严*计算出梯形面积,将结果赋给变量area*1
printf(*area=%fn”,area);
严*调用输出函数printf()输出结果,显示area=字样,\n表示换行*}
4.应用函数调用的C程序例:
C程序中的函数实际上是一个具有一定
功能的程序段或者程序模块,利用已有函数
来实现程序的某些功能是C程序设计中常用
到的高效率的编程方法。
例: 求s=2!+4!+6!+8!+10!
设s存放阶乘之和,n!为所求阶乘,
n=2, 4,6, 8,10。
算法如下:
(1) s=0;
(2)n=2;
(3) s=s+n!;
(4) n=n+2;
(5)如果n<=10,则转(3),否则执行(6);
(6)输出s;
(7)结束。
阶乘的函数fact(x),
当x=n时,fact(n)的值就是n!。
算法如下
(设m存放连乘积,i存放乘积项,i=1, 2, 3...,x)
(1) i=1;
(2)m=1;
(3)当i≤x时应继续连乘,否则退出循环,转(7);
(4)m=m*i;
(5)i=i+1;
(6)转(3);
(7)返回函数值m。
算法的三大要素
•算法是程序设计的基础,有好的算法才可
能有好的程序。
•计算机算法含有三大要素:
•(1)数据结构。它规定实施算法时,所
需要的数据存放形式。
•(2)操作。如数据的加减、逻辑判断、
输入输出等基本运算。
•(3)控制结构。
• G函数中的语句说明部分,描述了算法所
要求的数据存储结构;
C语言的丰富的运算能力,完成了算法所
要求的数据操作;
• C语言的特定的结构控制语句如if语句,
for语句、while语句、do-while语句等及
函数调用,实现了算法所要求的控制结构。
C程序的形式要点:
(1)函数是C程序的基本单位,一个C程序可
以由多个不同名的函数组成。
①C程序的函数有主函数main()、自定义函数和库
函数(又称C标准函数),但必须有一个并且只能有
一个主函数main()。一个C程序总是从主函数开始执
行的。
②函数由函数首部和函数体两部分组成。
函数首部标明函数的类型、函数名称,函数所带的参
数等。
主函数main()的形式为:
C程序在书写格式上也具有自己的特点。
①c程序语句末尾必须以“;”号结束。
C程序允许在一行中书写多条语句。
G语言中的变量、函数名等一般采用小写字母。
④#include所在行称为编译预处理命令行,它以#号开头,末尾不能有“;”号,且必须占一行。
⑤/*......*/为程序注释,位于语句末尾或单独占一
行。计算机执行时是不理睬程序注释的。一般应尽量多注释,便于以后修改维护程序时读懂程序。
⑥程序一般采用“缩格写法”,即不同层次的语句,其起始书写位置应给以区别。下一层次的语句应缩进
若干字数,同一层次的语句起始位置相同,这样整个程序层次清楚,易于阅读。
C程序的开发过程:
(1)确定算法。包括确定数据结构和设计算法。根据要完成的任务和指定的输入数据与输出结果确定存放数据的数据结构,由粗到精,用流程图描述出详细的算法。
(2)编码,即编写C源程序。可
书面编写或直接上机操作。
(3)上机调试程序。
(4)整理并写出文档资料。