程序设计语言的功能
1.1节 引例 本章程序涉及4个函数:main(),max(),scanf(),printf()。其中,main()函数是程序的主函数max()是程序中定义的函数,其作用是求两个数中的最大数,scanf()和pirntf()是系统事先设计好的函数,分别用于输入和输出。
1.2节 程序与程序设计语言
程序具有以下特点:1完成某一特定的任务 2使用某种程序设计语言描述如何完成该任务 3存储在计算机中,并且被运行后才能起作用。
1.2.1 程序设计语言的发展
1:机器语言由0和1组成的指令
机器语言与人们习惯用的语言差别太大,由于其难学,难写,难记,难修改,采用机器语言编程,只是极少数人能完成工作。
2:汇编语言采用助记符来代替机器指令的二进制
汇编语言十分依赖于机器硬件,可移植性不好,但运行效果仅次于机器语言。
3:高级语言接近于数学语言或人的自然语言同时又不依赖于计算机硬件,编制的程序能在所有的机器上有通用。运算符和运算表达与人们日常所用的数学式子差不多,很容易理解。
高级语言的特点是易学,易用,易维护,人们可以更有效,更方便地用它来编制各种用途的计算机程序。
数据表达数据是计算机处理的对象,在解决实际问题时,通常需要申明各种类型的数据,数据类型就是对某些具有相同性质的数据集的总称
流程控制
对不同类型的数据进行处理。
按照结构化程序设计的观点,任何程序的基本结构都可以通过三种基本的控制结构进行组合来实现,分别是顺序结构、分支结构、循环结构
这三种结构的共同特点是:
- 只有单一的入口和单一的出口;
- 结构中的每个部分都有被执行的可能;
- 结构内不应出现永不终止的死循环。
程序的算法表示
什么是算法
“软件的主体是程序,程序的核心是算法”。瑞士计算机科学家尼·沃思(N·Wirth)有一句名言:“计算机科学就是研究算法的学问”。
通俗地讲,算法就是解决问题的方法与步骤。
例如要交换两个变量a和b的值,按照下面的步骤就可以完成交换:
- 输入变量a和b的值;
- 将变量a的值赋给变量t;
- 将变量b的值赋给变量a;
- 将变量t的值赋给变量b;
- 输出变量a与b的值。
算法的特征
- 确定性:
算法的每条指令必须有明确的含义,不能有二义性
对于相同的输入必须得出相同的执行结果
- 有穷性:
一个算法应包含有限个操作步骤
也就是说,在执行若干个操作步骤之后,算法将结束
而且每一步都在有限的时间内完成
- 可行性:
算法中指定的操作都可以通过已经实现的基本运算执行有限次后实现
-
有零个或多个输入
-
有一个或多个输出
算法的目的是为了求“解”,“解”只有通过输出才能得到
算法的描述
1. 用文字描述算法
例:有10个两位的正整数,找出其中最大的数,写出其算法。
- 输入第一个数,放入max中;
- 用i统计比较的次数,其初值置为1;
- 若i≤9,转第4步,否则转第8步;
- 再输入一个数,放在x中;
- 比较x和max中的数,若x>max,则将x的值赋给max;否则max的值不变;
- i增加1;
- 返回到第3步;
- 输出max中的数,此时max中的数即为10个数中最大的数。
例:写出求两个自然数的最大公约数的算法
采用古希腊数学家欧几里得提出的“欧几里得算法”描述如下:
- 输入两个自然数a、b;
- 求a除以b的余数r;
- 使a = b,即用b代替a;
- 使b = r,即用r代替b;
- 若r≠0,则重复执行步骤2、3、4,否则转第6步;
- 输出a,a即为a和b的最大公约数。
用文字描述算法的缺点:
很难“系统”并“精确”地表达算法,且有时叙述冗长,别人不容易理解。
2. 用流程图描述算法
常用到的流程图框:
三种基本的控制结构图示例:
例:有10个两位的正整数,找出其中最大的数,画出其流程图。
例:画出求两个自然数的最大公约数的流程图
画流程图网站推荐:ProcessOn免费在线作图
3. 伪代码表示
伪代码是一种近似高级语言但又不受语法约束的语言描述方式,它不能在计算机中运行,但可以用来描述算法。
例:有10个两位的正整数,找出其中最大的数,用伪代码写出其算法。
1 2 3 4 5 6 7 8 9 | {
输入第1个数赋给max;
for(i=1;i<=9;i++)
{ 输入第i+1个数赋给x;
if(x>max)
max=x;
}
输出max;
}
|



