Download presentation
Presentation is loading. Please wait.
1
C语言程序设计 主讲教师 :贾月乐 电话:
2
学习资源 参考书籍: C语言程序设计门户网站: http://mooc.chaoxing.com/course/2459858.html
《C 程序设计语言》,Brian W.Kernighan,清华大 学出版社 《C高级实用程序设计》,王士元,清华大学出版社 C语言程序设计门户网站: C语言程序设计——第一章 C语言概述 SCS-SWPU
3
课程考试 考试时间预计为第12周周末(5月23日、24日)
题库将在平时开放练习,开放练习的时间待定, 开放练习的是已学习的章节单选题、程序填空 题和改错题。 课程考试中的程序设计题主要考察实验要求, 所以请大家平时实验务必要认真练习。 课程考试的80%来至平时的开放练习题库、实 验和教材课后习题。 C语言程序设计——第一章 C语言概述 SCS-SWPU
4
MH370机长与飞行模拟器 2014年3月8日凌晨,从吉隆坡飞往北京的马来西亚航空公司MH370号航班与地面空管失去联系,至今多个国家仍在全力联合搜索MH370的残骸。这家载有众多中国公民的飞机一直牵动着我们的心弦。在整个事件的调查过程中,MH370的机长扎哈里一度被认为具有重大嫌疑,而他家中摆放的飞行模拟器也随之成为各界关注的焦点。 据扎哈里的朋友和同事反映,扎哈里是一名飞行技术极客,对飞行几乎到了狂热的程度,而他的这架飞行模拟器由三块显示器呈现驾驶舱的视景系统,另外还包括了驾驶飞机的操控面板以及整套飞行模拟设备。模拟飞行中包含主要的商用飞行航路、全球2.4万多个机场的详细资料,包括跑道航向、长短、海拔、机场无线电频率、进近程序等,可以实时更新各地的最新天气情况,同时还储存有机型、航线、航基点等数据,并且可以下载数据包不断更新数据。通过这套系统,操作者可以选择任何型号的飞机在全球任何机场起降,并制定完整的、与现实几乎相同的飞行计划,特别是可以在一些现实中从未去过的机场练习起飞和降落的程序。 虽然最终的调查并没有给我们带来实质性的结果,但飞行模拟器却激起了众多电脑爱好者的浓厚兴趣。 在 aviation tech geek 执飞吉隆坡到北京的马来西亚航空公司MH370航班自2014年3月8日凌晨以来,截至目前仍处于完全失联状态,而这家载有众多中国公民的飞机也一直牵动着我们的心弦。据MH370马来西亚籍机长查哈里亚沙阿(Zaharie Ahmad Shah) 的同事和前同事透露,查哈里亚沙阿打心眼里就是一名波音777机型的狂热爱好者,甚至在不上班的时候都会在家里的飞行模拟机内练习飞行。他家中的简易飞行模拟机拥有三个电脑屏幕、一堆线缆以及数个踏板。 2014年3月16日,据媒体报道称:扎哈里·艾哈迈德·沙阿对此次事件存在重大嫌疑。三个用于展示视景的大屏幕、三块分别模拟驾驶舱前、中央、上操控面板的触控屏和整套飞行模拟设备。这不禁令人生疑——这是真的太热爱飞行,还是要在家里练习一些不便在公司专业模拟器上操作的特殊科目。 模拟飞行中包含主要的商用飞行航路、全球2.4万多个机场的详细资料,包括跑道航向、长短、海拔、机场无线电频率、进近程序等,可以实时更新各地的最新天气情况,同时还储存有机型、航线、航基点等数据,并且可以下载数据包不断更新数据。通过这套系统,操作者可以选择任何型号的飞机在全球任何机场起降,并制定完整的、与现实几乎相同的飞行计划,特别是可以在一些现实中从未去过的机场练习起飞和降落的程序。
5
计算机模拟的应用 其实,把计算机模拟应用与众多行业已经成为了一种趋势。
除了我们刚才谈到的飞行模拟器,还有船舶驾驶模拟器,和我们很多人息息相关的汽车驾驶模拟器。 还有以很多高危行业的专业知识为背景的模拟器,例如矿山矿井模拟,以及电力行业模拟
6
模拟器开发的过程 无论是哪个行业的模拟器开发,都遵循着相同的规律,那就是:以专业知识作为支撑、用计算机能够去模拟和识别的方式对专业知识进行处理、最后用程序设计的方式把它们实现出来 我们把这种以专业做支撑、计算机知识为基础、程序设计为实现手段的开发过程,称之为计算思维引导下的程序设计
7
专业知识 计算机知识 计算思维 程序设计 课程关键词 计算机模拟的过程
无论是哪个行业的模拟器开发,都遵循着相同的规律,那就是:以专业知识作为支撑、用计算机能够去模拟和识别的方式对专业知识进行处理、最后用程序设计的方式把它们实现出来 我们把这种以专业做支撑、计算机知识为基础、程序设计为实现手段的开发过程,称之为计算思维引导下的程序设计 程序设计
8
计算思维(CT)与程序设计(Programming)
用计算机的方式来思考问题 计算思维 物理 化学 生物 …… 经济 统计 周以真 (Jeannette M. Wing) 那么什么是计算思维?计算思维和程序设计又有着怎样的关系呢? 计算思维简单的来说就是用计算机的方式来思考问题。 这是近年来的一个新兴理念,由美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M. Wing)教授提出。 计算思维的概念一经提出就被世界各界所接纳,并快速与物理、化学、生物、统计、经济、甚至几乎所有我们能够想到用到的学科融合在一起。 我们可以运用计算思维的理念把专业上比较复杂的问题,通过计算机科学中的约简、嵌入、仿真等方法把这些复杂问题重新阐述,进而转化为计算机可以去处理和模拟的一般过程 而这些过程的最终实现则要通过程序设计的方法来完成。 由此我们可以看到:计算思维引导下的程序设计将是解决专业问题的有力武器。 2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M. Wing)教授在美国计算机权威期刊《Communications of the ACM》杂志上给出,并定义的计算思维(Computational Thinking)。周教授认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学广度之上的一系列思维活动。 运用计算思维把一个困难的问题重新阐述成一个我们知道怎样求解的问题,如通过约简、嵌入、转化和仿真的方法进行实现。 计算思维已经融入到了物理学、化学、生物学、统计学、经济学等,几乎与人类相关的所有学科当中,而程序设计则是运用计算思维解决专业问题的必经之路。 在实现之前必须考虑计算工具的指令系统、它的资源约束和它的操作环境。
9
结合 引导 专业知识 计算思维 程序设计 课程关键词 讲到这里,大家是不是觉得用计算思维的理念来进行程序设计真的是非常有用呢?
如果我们能把这项本领用于专业知识当中的问题解决,那该多好啊! 想法非常好,但是如何去做?最后将会得到什么样的效果?肯定是现在困扰大家的难题。 程序设计
10
程序设计的一般过程 ——弹跳的小球 分析问题 设计算法
下面让我们予学于用,学以致用,用计算机可以执行的思维方式,来模拟一下现实生活中小球从高处落下以后的运动过程。 分析问题:当小球从高空下落时,由于能量的转换,我们会发现小球的下落速度会越来越快,在接触地面以后,小球会被反弹,随后随着小球的高度越来越高,上升的速度也会越来越慢 。由于在小球与地面发生接触的瞬间发生了形变,部分能量会转换为热能,用于转换的机械能会随着小球与地面一次一次的接触慢慢减少,直到最后小球的运动停下来。 我们以往的计算都是通过某个时刻或者某个位置点的计算,很难看出物体运动的全过程,运用计算机模拟设计算法,我们将会看到整个运动过程的全貌。 接下来我们要做的事使用计算机能够表达的方法,设计整个运动过程的表述方法。
11
怎样进行过程控制? 结构化程序设计方法 程序设计是给出解决特定问题的过程 顺序结构 分支结构 循环结构 任何复杂算法,都可以由此三种结构组成
语句A 条件 True False 语句A 语句B 语句B 语句A 条件 True False 我们会发现,不管是过程的控制还是数值模拟的计算,都离不开程序设计。 程序设计思想是一切软件开发的基础。 我们把给出解决特定问题的过程叫做程序设计。 但是计算机没有办法直接去理解和处理我们用语言描述给它的过程,它需要一套属于自己的机制去和现实中的情况进行“对接”,来完成对过程的描述。 例如: 正常情况下,过程是自上而下依次进行的,这就是顺序结构 而当遇到某种特定情况,影响到过程的执行路线时,我们就需要用分支结构给出带选择的处理方式 如果在执行的过程中我们需要反复执行某个过程,直到达到特定条件才结束重复时,我们将会使用循环结构来达到控制的目的。 结构化程序设计方法任何复杂算法,都可以由此三种结构组成。 语句A 条件 True False 结构化程序设计方法 任何复杂算法,都可以由此三种结构组成
12
以弹跳的小球为例 开始 确定物体距地面高度 计算能量 NO 能量>0 YES YES 是否接触地面 NO 根据能量转换 计算运动速度
能量衰减 结束
13
延伸: 计算机模拟的结果将对现实具有指导意义 从哪些方面优化算法? 初始速度 运动角度 能量衰减 外力 …… (1)初速度、角度。。。
推动人类文明进步和科技发展的思维方式已经从理论思维和试验思维方式,向计算思维迈进 很多的专业试验过程都可以通过计算机的模拟来辅助完成 从计算思维的角度出发,想一想计算机可以帮助大家解决哪些专业问题 找到兴趣点,展开后续程序设计课程的学习
14
程序设计的一般过程 ——弹跳的小球 分析问题 设计算法 算法实现 调试程序
算法实现:通过编码完成。现下有很多的编码形式,也有很多的编程语言和编译软件供我们使用 我们可以选择传统的编码形式,也可以选择比较流行的模块化的脚本语言, 但不论是哪种形式, 只要遵循相同的算法我们依然可以得到相同的模拟结果。 下面我们分别看看运用C语言和一款图形引擎编程实现的模拟过程。 这是使用C语言编写,在VC++6.0下编译的模拟结果,虽然模拟的界面比较朴素,但小球的运动过程与预先分析的完全相同。 接下来是使用virtools图形引擎编写的程序,程序的开发常采用模块化的脚本语言,程序的执行过程与我们设计的算法流程一致。 小球在弹跳数次后停止,上面的白色文字现实了小球运动的实时速度,模拟结果与C语言相同。 我们需要通过多次调试程序保证结果的正确性 调试程序
15
计算思维与专业结合案例 下面我们就通过一个计算思维与专业结合的案例,来一起感受一下
我们学校是一所石油为特色的高校,钻井是油气田开发过程中非常高危的一个专业,我们计算机科学学院的老师把计算机模拟应用于钻井行业, 运用计算思维的理念把钻井的知识通过计算机模拟实现,具有很强的实用性。 一个用计算机模拟实现的钻井作业的例子,来感受一下与计算思维与专业结合的力量, 在观看演示的过程中,大家一起思考一下,我们通过计算机模拟,处理了哪些内容,而这些内容是如何实现的? 答案: 大家最直观的感受肯定是,我们需要对钻井作业的操作过程进行模拟,按照一定的步骤来执行每一步操作,这就需要专业知识的支撑 那么只去模拟过程,能够让计算机的运行的结果与现实完全相同么?肯定是不行的,我们还需要在过程的模拟中融入相关的数值计算,例如:重力、压力、摩擦力等,才能让计算机模拟的结果更贴近现实情况,这就需要石油工程、物理学、数学等相关知识的支撑。 整个模拟过程无不体现着计算思维的力量。。。 那么现在,落眼到实处,我们应该如何把计算思维的成果用程序设计的方法实现出来呢?
16
第一章 C语言概述 C语言的发展历史 C语言的特点 认识C程序 C程序的上机步骤 1.1 1.2 1.3 1.4 1.5
C语言程序设计——第一章 C语言概述 SCS-SWPU
17
Ritchie和Thompson在开发UNIX
C语言程序设计——第一章 C语言概述 SCS-SWPU
18
C语言的创始人__Dennis M. Ritchie(丹尼森.里奇)
并用C语言编写了UNIX第五版 1977年《可移植的C语言编译程序》 1978年《The C Programming Language》标准C ANSI制定了统一的C标准, 即:ANSI C 在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二 个字母作为这种语言的名字,这就是C语言。 D.M.RITCHIE用之改写了原来用汇编编写的UNIX,(即UNIX第5版),但当时仅限于贝尔实验室使用 1977年,为了使UNIX操作系统推广, Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。 1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个 完整的标准C 语言, 1983年,由美国国家标准协会(American National Standards Institute)在此基础上制定了一个C 语言标准,于一九八三年发表。通常 称之为ANSI C。 1987年,随着微型计算机的日益普及, C语言出现了许多版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了 改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准——87 ANSI C. 1988年K & R按照 ANSI C修改了他们的《The C Programming Language》。 1990年,国际标准化组织接受了87 ANSI C为ISO C 的标准(ISO9899—1990)。 1994年,ISO又修订了C语言标准。 目前流行的C语言编译系统大多是以ANSI C为基础进行开发的。 ISO C C语言程序设计——第一章 C语言概述 SCS-SWPU
19
接受美国国家技术勋章 获图灵奖 C语言程序设计——第一章 C语言概述 SCS-SWPU
20
2014十大编程语言排名 C语言程序设计——第一章 C语言概述 SCS-SWPU
21
C语言的新应用 C语言程序设计——第一章 C语言概述 SCS-SWPU
22
第一章 C语言概述 C语言的发展历史 C语言的特点 认识C程序 C程序的上机步骤 1.1 1.2 1.3 1.4 1.5
C语言程序设计——第一章 C语言概述 SCS-SWPU
23
1.2 C语言的特点 语言简洁、紧凑、灵活 运算符和数据类型丰富 程序设计结构化、模块化 生成目标代码质量高 可移植性好 > >
C语言程序设计——第一章 C语言概述 SCS-SWPU
24
32个关键字:(由系统定义,不能重作其它定义)
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef unsigned union void volatile while C语言程序设计——第一章 C语言概述 SCS-SWPU
25
9种控制语句 if( )~else~ for( )~ while( )~ do~while( ) continue break switch
goto return < C语言程序设计——第一章 C语言概述 SCS-SWPU
26
34种运算符 算术运算符:+ - * / % ++ -- 关系运算符:< <= == > >= !=
算术运算符:+ - * / % 关系运算符:< <= == > >= != 逻辑运算符:! && || 位运算符 :<< >> ~ | ^ & 赋值运算符:= 及其扩展 条件运算符:?: 逗号运算符:, 指针运算符:* & 求字节数 :sizeof 强制类型转换:(类型) 分量运算符:. -> 下标运算符:[] 其它 :( ) - C语言程序设计——第一章 C语言概述 SCS-SWPU
27
C的数据类型 < C语言程序设计——第一章 C语言概述 SCS-SWPU
28
结构化程序设计 三大基本结构 顺序结构 选择结构 循环结构 函数 模块化程序设计 <
C语言程序设计——第一章 C语言概述 SCS-SWPU
29
第一章 C语言概述 C语言的发展历史 C语言的特点 认识C程序 C程序的上机步骤 1.1 1.2 1.3 1.4 1.5
C语言程序设计——第一章 C语言概述 SCS-SWPU
30
1.3 认识C程序 要输出: hello word! 例 1.1 输出字符串: This is a C program.
#include <stdio.h> void main () { printf (“This is a C program. \n”); } /*包含头文件*/ //主函数 /*函数体开始*/ /*输出一句话*/ /*函数体*/ /*函数体结束*/ This is a C program. - C语言程序设计——第一章 C语言概述 SCS-SWPU
31
1.3 认识C程序 例 1.2 求整数:3+1=? 要计算: (x+y)*x 3 + 1 = 4
例 求整数:3+1=? 要计算: (x+y)*x /*包含头文件*/ #include <stdio.h> void main ( ) { int x,y,z; x=3; y=1; z=x+y; printf (“%d+ %d=%d\n”,x,y,z); } /*主函数*/ /*定义变量*/ /*给变量赋值*/ /*函数体*/ /*计算3+1*/ //输出结果 3 + 1 = 4 C语言程序设计——第一章 C语言概述 SCS-SWPU
32
1.3 认识C程序 #include <stdio.h> void main(形参表) { 说明部分; 执行部分; }
/*编译预处理命令*/ /*主函数*/ 每个C程序必须有一个主函数main { }是函数开始和结束的标志,不可省 把一个文本文件的内容包含到该命令的该命令处 调用库函数是必须使用!! /*函数体*/ 每个C语句以分号结束 C语言程序设计——第一章 C语言概述 SCS-SWPU
33
1.3 认识C程序 例1.3:求两个整数中的最大值 我们碰到了哪些C语言的函数? int max ( int x , int y)
#include<stdio.h> 我们碰到了哪些C语言的函数? int max ( int x , int y) { int z ; if ( x>y) z = x ; else z = y ; return ( z ); } void main() { int a , b , c ; scanf ( “%d , %d ” ,& a ,& b ) ; c = max ( a , b); printf ( “ max = % d ” , c) ; 用户自 定义函数 入口 主函数 C语言程序设计——第一章 C语言概述 SCS-SWPU
34
C程序的书写特点 (1) C程序是由函数构成的。 (2) 一个函数由两部分组成,结构如下: 一个C源程序有且仅有一个main函数
函数类型 函数名(形参表) { 定义部分; 执行部分; } #include <stdio.h> void main ( ) { int x,y,z; x=3; y=1; z=x+y; printf (“%d+ %d=%d\n”,x,y,z); } C语言程序设计——第一章 C语言概述 SCS-SWPU
35
C程序的书写特点 (3) 一个C程序总是从main函数开始执行的 (4) C程序书写格式自由
(7) 每个语句和数据定义的最后必须有一个分号。 #include <stdio.h> void main ( ) { int x,y,z; //变量定义 x=3; y=1; z=x+y; printf (“%d+ %d=%d\n”,x,y,z); } C语言程序设计——第一章 C语言概述 SCS-SWPU
36
第一章 C语言概述 C语言的发展历史 C语言的特点 认识C程序 C程序的上机步骤 1.1 1.2 1.3 1.4 1.5
C语言程序设计——第一章 C语言概述 SCS-SWPU
37
1.4 C语言的上机步骤 1、编辑 2、编译 3、连接 4、运行 生成C的源文件(*.C) 生成二进制目标文件(*.OBJ)
将目标程序文件f.obj输入内存, 与系统提供的库函数等连接, 生产可执行文件,扩展名为 *.exe。 4、运行 最后把可执行文件调入内存并 使之运行,得到结果。 C语言程序设计——第一章 C语言概述 SCS-SWPU
38
1.4 C语言的上机步骤 编辑——编译——连接——运行 C语言 可执行程序 编译器 C语言程序设计——第一章 C语言概述 SCS-SWPU
39
1.4 C语言的上机步骤 VC++6.0环境下的开发过程 第一步启动VC 点击“开始”-“程序”启动VC ++6.0 第二步:建立C源文件
“文件”-“新建”-“文件”-选“C Source File”-输入文件名-“确定” 第三步:编译->连接->运行 C语言程序设计——第一章 C语言概述 SCS-SWPU
40
二级真题练习 真题1:下列叙述中错误的是( ) A)C语言源程序经编译后生成后缀为.obj的目标程序
40 真题1:下列叙述中错误的是( ) A)C语言源程序经编译后生成后缀为.obj的目标程序 B)C程序经过编译、连接步骤之后才能形成一个真正 可执行的二进制机器指令文件 C)用C语言编写的程序称为源程序,它以文本形式存 放在一个文本文件中 D)C语言中的每条可执行语句和非可执行语句最终都 将被转换成二进制的机器指令
41
总结:程序设计的过程 需求分析 设计算法 编写程序 调试程序 C语言程序设计——算法的描述 SCS-SWPU
42
Thank You !
43
第一章 C语言概述 C语言的发展历史 C语言的特点 认识C程序 C程序的上机步骤 什么是编程 1.1 1.2 1.3 1.4 1.5
C语言程序设计——第一章 C语言概述 SCS-SWPU
44
1、 算法的概念 算法+数据结构=程序 算法应该如何描述?? 著名的计算机科学家沃思Nikiklaus Wirth提出的公式:
算法:为解决一个问题而采取的方法和步骤。 对同一个问题,可有不同的解题方法和步骤 对操作的描述:算法(algorithm),为解决一个问题而采取的方法和步骤 对数据的描述:数据结构(data structure),程序中指定的数据的类型和数据的组织形式,即算法的处理对象 著名计算机科学家沃思提出一个公式: 数据结构 + 算法 =程序 实际上:完整的程序设计=数据结构+算法+程序设计方法+语言工具 做为程序设计人员,在编写一个程序之前,应该认真地考虑和设计操作步骤和数据结构, 在这四方面中:算法是灵魂,数据结构是加工对象,语言是工具,编程需要采用合适的方法, 显然,不了解算法就谈不上程序设计 在本节的目的通过一些实例把以上四个方面结合起来介绍如何编写一个C程序 方法1:1+2,+3,+4,一直加到100 加99次 方法2:100+(1+99)+(2+98)+…+(49 +51) = × 加51次 数值运算算法:求数值解,例如求方程的根、求函数的定积分等。 非数值运算:包括的面十分广泛,最常见的是用于事务管理领域,例如图书检索、人事管理、行车调度管理等 C语言程序设计——算法的描述 SCS-SWPU
45
2、用自然语言描述算法 例1:求5!,即求1×2×3×4×5 思考:如果要求1×2×…×1000,需写999个步骤!! 反复乘法运算
步骤1:先求1×2,得到结果2 步骤2:将步骤1得到的乘积2再乘以3,得到结果6 步骤3:将6再乘以4,得24 步骤4:将24再乘以5,得120 思考:如果要求1×2×…×1000,需写999个步骤!! 可以设两个变量: t为被乘数,i为乘数,然后用循环算法来求结果 反复乘法运算 为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。希望方法简单,运算步骤少 不是“计算”问题才有算法,广义地说,为解决一个问题而采取的方法和步骤都称为算法 计算机算法可分为两大类别: 数值运算算法:求数值解,例如求方程的根、求函数的定积分等。 非数值运算:包括的面十分广泛,最常见的是用于事务管理领域,例如图书检索、人事管理、行车调度管理等 S1:使t=1。 S2:使i=2。 S3:使t×i,乘积仍放在变量t中,可表示为:t=t×i S4:使i的值加1,即i=i+1。 S5:如果i<=5,返回重新执行步骤S3以及其后的步骤 S4和S5;否则,算法结束。 C语言程序设计——算法的描述 SCS-SWPU
46
2、用自然语言描述算法 如果题目改为:求1×3×5×……×1000算法只需作 很少的改动: 思考: S1:1→t S2:3 → i
S3:t×i → t S4:i+2 → i S5:若i<=1000,返回S3。否则,结束。 思考: 用上述方法该如何表达?? 用这种方法表示的算法具有通用性、灵活性。S3到S5组成一个循环,在实现算法时 要反复多次执行S3,S4,S5等步骤,直到某一时刻,执行S5步骤时经过判断,乘数i已超过规定的数值而不返回S3步骤为止。此时算法结束,变量p的值就是所求结果 下面,我们再通过几个典型的问题来进一步巩固,如何用程序算法的思想解决实际问题 程序设计的任务:分析问题,确定其算法和数据结构,编写代码并上机调试,得到正确的输出结果 C语言程序设计——算法的描述 SCS-SWPU
47
2、用自然语言描述算法 例2 有50个学生,要求将他们之中成绩在80分以上者打印出来 分析: 设n表示学号, g代表学生成绩;
例2 有50个学生,要求将他们之中成绩在80分以上者打印出来 分析: 设n表示学号, g代表学生成绩; 变量i作为下标,用来控制序号(第几个学生,第几个成绩) 当i超过50时,已对50个学生的成绩处理完毕,结束。 S1:1 → i S2:如果gi≥80,则打印,否则不打印。 S3:i+1 → i(判断下一个学生成绩) S4:如果i≤50,返回S2,继续执行。否则算法结束 C语言程序设计——算法的描述 SCS-SWPU
48
2、用自然语言描述算法 例3 判定2000~2500年中的每一年是否闰年,将结果输出。 分析-闰年的条件是:
例3 判定2000~2500年中的每一年是否闰年,将结果输出。 分析-闰年的条件是: 能被4整除,但不能被100整除的年份都是闰年,如 1996,2004年是闰年; 能被100整除,又能被400整除的年份是闰年。 如1600,2000年是闰年; 不符合这两个条件的年份不是闰年。 C语言程序设计——算法的描述 SCS-SWPU
49
2、用自然语言描述算法 设y为被检测的年份,算法可表示如下 : 用自然语言描述算法的缺点? S1:2000 → y;
S2:若y不能被4整除,则输出y “不是闰年”,然后转到S6; S3:若y能被4整除,不能被100整除,则输出y “是闰年”, 然后转到S6。 S4:若y能被100整除,又能被400整除,输出y“是闰年”, 否 则输出“不是闰年”, 然后转到S6。 S5: 输出y “不是闰年”。 S6:y+1 → y S7:当y≤2500时,转S2继续执行,如y>2500,算法停止。 用自然语言描述算法的缺点? C语言程序设计——算法的描述 SCS-SWPU
50
2、用自然语言描述算法 算法的实现 算法的设计 计算机语言 表示算法 流程图 表示算法 自然语言 表示算法
计算机语言程序 ——算法的实现 流程图 表示算法 比用文字描述算法逻辑清晰、易于理解。 自然语言 表示算法 优点: 通俗易懂 缺点:文字冗长,容易出现“歧义性” 如有一句话:张三对李四说他的孩子考上大学了 用自然语言描述包含分支和循环的算法,不是很方便(如例5:求素数的例题) C语言程序设计——算法的描述 SCS-SWPU
51
算法的特点 1、有穷性(Finiteness) 2、确切性(Definiteness) 3、输入项(Input) 4、输出项(Output)
5、可行性(Effectiveness) 6、高效性(High efficiency) 7、健壮性(Robustness)
52
3、用流程图表示算法 美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号: 起止框 判断框 处理框 输入/输出框 注释框 流向线 连接点 C语言程序设计——算法的描述 SCS-SWPU
53
3、用流程图表示算法 例4: 求5!的算法用流程图表示 S1:使t=1。 S2:使i=2。
S3:使t×i,乘积仍放在变量t中,可表示为:t=t×i S4:使i的值加1,即i=i+1。 S5:如果i<=5,返回重新执行步骤S3以及其后的步骤 S4和S5;否则,算法结束。 C语言程序设计——算法的描述 SCS-SWPU
54
3、用流程图表示算法 例 打印50名 学生中成绩在80分以上者的学号和成绩。 S1:1 → i S2:如果gi≥80,则打印, 否则不打印。
S3:i+1 → i S4:如果i≤50,返回S2, 继续执行。否则算法结束 C语言程序设计——算法的描述 SCS-SWPU
55
3、用流程图表示算法 分析-闰年的条件是: 能被4整除,但不能被100整除的年份都是闰年,如1996,2004年是闰年;
练习:判断某一年是否是闰年 分析-闰年的条件是: 能被4整除,但不能被100整除的年份都是闰年,如1996,2004年是闰年; 能被100整除,又能被400整除的年份是闰年。 如1600,2000年是闰年; 不符合这两个条件的年份不是闰年。 C语言程序设计——算法的描述 SCS-SWPU
56
小结 3、用流程图表示算法 (1)表示相应操作的框; (2)带箭头的流程线; (3)框内外必要的文字说明。 一个流程图包括以下几部分 :
C语言程序设计——算法的描述 SCS-SWPU
57
总结:程序设计的过程 分析问题 设计算法 做流程图 计算机 语言程序 C语言程序设计——算法的描述 SCS-SWPU
58
课后延伸 练习: 一、选择题 二、填空题 判断一个数n能否同时被3和5整除 作业: 用流程图表示求解以下问题的算法
C语言程序设计——算法的描述 SCS-SWPU
59
课程梗概 文件 结构体与共用体 指针 数组 函数 顺序结构 选择结构 循环结构 数据类型、运算符与表达式
C语言程序设计——第一章 C语言概述 SCS-SWPU
Similar presentations