程序的概念与算法_第1页
程序的概念与算法_第2页
程序的概念与算法_第3页
程序的概念与算法_第4页
程序的概念与算法_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(优选)程序的概念与算法当前第1页\共有57页\编于星期六\12点1你对C语言了解程度如何?

(1).对C语言一无所知(2).听到或看过一些关于C语言的知识

调查当前第2页\共有57页\编于星期六\12点2努力认真学好C语言

1.从技术层面来讲,C语言是我们最值得努力学习的一门语言:

教育部规定,每个大学生都要掌握至少一门编程语言,这样做一定有它的道理:当前第3页\共有57页\编于星期六\12点3

(1).C语言是目前国际上共认的主打语言,是必须

要认真学好的,特别对工科类同学.

(2).有了C语言的知识,可为今后学习后续C语言,

及学习其它语言打下良好的基础.当前第4页\共有57页\编于星期六\12点42.

计算机技术是人类智慧的结晶,通过学习一门计算机语言,加深对这一成果的体会,改进我们的思维方式,从另一个侧面提高我们的素质水平。

同时,通过学习计算机语言,对我们今后学习,使用计算机的其它操作,也会带来很大的帮助。3.“打好一个基础,掌握二种工具”:

数学基础,计算机和外语二种工具。迎接“省计算机二级等级考试”。当前第5页\共有57页\编于星期六\12点54.

当然,C语言是我们接触的第一门高级语言,刚

开始学习计算机语言会有一定难度(新的概念,新

的理论和方法,相当多的语法点要理解和记忆等).

并且,C语言是计算机高级语言中较为难学的一门语言,更需要我们投入更多精力去学习,掌握.

我们应该为自己即将学习和掌握一门编程语言而高兴和自豪.当前第6页\共有57页\编于星期六\12点6如何学会用C语言程序设计:

了解C程序设计语言.模仿、改写、编写C程序.通过不断的编程实践,逐步领会和掌握程序设计的基本思想和方法.当前第7页\共有57页\编于星期六\12点7教材“C语言程序设计”.唐云廷主编,科技出版社,2009

参考书“C程序设计”(第三版)潭浩强著清华大学出版社当前第8页\共有57页\编于星期六\12点8C语言的发展历史与特点

历史1972年:贝尔实验室的DennisRitchie在B语言的基

础上设计并实现了C语言。1978年:和D.Ritchie(简称K&R)

合著的《TheCProgrammingLanguage》是

各种C语言版本的基础,称之为旧标准C语言。1983年:美国国家标准化协会(ANSI)制定了新的C

语言标准,称ANSIC。当前第9页\共有57页\编于星期六\12点9

C语言的特点和功能

1.C语言是一种结构化语言.结构化程序设计的基本原则是:模块化原则、自顶向下原则和逐步求精原则。

2.C语言语句简洁、紧凑,使用方便、灵活.

32个关键字,9种控制语句,程序书写形式自由。3.C语言程序易于移植.

C语言将与硬件有关的因素从语言主体中分离出来,通过库函数或其他实用程序实现它们。

当前第10页\共有57页\编于星期六\12点104.C语言有强大的处理能力.5.生成的目标代码质量高,运行效率高.6.数据类型检查不严格,表达式出现二义性,不具备数

据越界自动检查功能,运算符的优先级与结合性对初学

者难于掌握.C语言的功能:C语言不仅可以编写系统软件(操作系统,语言处理软件等),也可以编写应用程序.当前第11页\共有57页\编于星期六\12点11

第1章

程序的概念与算法当前第12页\共有57页\编于星期六\12点121.1程序的概念程序是指把希望计算机做的工作写成一定形式的指令,并把它们存储在计算机的内部存储器中。

当人们给出命令之后,它就按指令操作顺序自动进行,把这种可以连续执行的一条条指令的集合称为“程序”。

目前,正在使用的计算机程序设计语言有很多种,有些语言是面向机器的,如二进制语言,而多数是面向问题的语言。当前第13页\共有57页\编于星期六\12点13

目前的程序设计一般可分为非结构化程序设计、结构化程序设计和面向对象的程序设计.C语言是结构化程序设计语言,而C++称为面向对象的语言。面向问题的语言都被称为计算机的“高级语言”,如C与C++语言等。当前第14页\共有57页\编于星期六\12点14

程序是为了解决某个问题而设计,用C语句所写的序列称为C源程序,它的后缀为(.c).

C源程序经过编译(Compile)后生成一个目标文件(.obj).

经过链接库函数后生成可执行文件(.exe)。

这些语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式,人们学习和操作起来感到十分方便。当前第15页\共有57页\编于星期六\12点15

C程序的设计过程如下图所示:

问题的提出及分析

确定该问题的算法用C语言描述算法建立语言源程序

编译生成.obj文件

连接有关库函数后生成可执行文件运行程序并输出正确的结果当前第16页\共有57页\编于星期六\12点161.2算法与流程图什么是算法?算法是指解决问题所使用的一系列合乎逻辑的解题步骤.

一个程序应包括两方面内容:(1).对数据的描述.要指定数据的类型和数据的组织形式,即数据结构.

当前第17页\共有57页\编于星期六\12点17(2).对操作的描述,操作步骤,即算法(algorithm).

著名计算机科学家Wirth(沃思)提出:

数据结构+算法=程序

在计算机科学中,算法要用计算机算法语言描述.

要解决一个复杂的问题,需要仔细的分析与研究此问题,并进行精确的逻辑分析,找到解决问题的方法,再用计算机实现。当前第18页\共有57页\编于星期六\12点18当然,求解一个给定的可解的问题,不同的人可以编写出不同的程序。例如判断一个整数的奇偶性,大致分成以下几步:计算机读入该数;将该数除以2;判断余数是否为0;如果为0,该数为偶数;否则为奇数.以上这些解决问题的一系列步骤就是算法,并且可以用C语言编写成程序,用以解决数的奇偶性问题。当前第19页\共有57页\编于星期六\12点19什么是流程图?流程图是一种用图解方式说明,解决一个问题所要的一系列操作。流程图比文字更容易理解,更加直观.

流程图中的符号含义如下所示:当前第20页\共有57页\编于星期六\12点20输入输出连接符控制流条件判断加工、处理程序的入口和出口含义常用基本组件流程图的符号及含义当前第21页\共有57页\编于星期六\12点21例1.1

从键盘输入两个数,求这两数之和,并把结果输出.画出此问题的流程图。开始

输入两数

两数相加

显示结果结束定义两个变量程序流程图当前第22页\共有57页\编于星期六\12点221.3结构化程序设计包含的三种结构结构化程序设计由三种结构组成:

顺序结构、选择结构、循环结构。

1.3.1顺序结构顺序结构的程序是一条语句接一条语句顺序地往下执行的。例如右图中,先执行语句1,然后执行语句2,最后执行语句3.顺序结构的程序是最简单的程序。

语句1

语句2

语句3当前第23页\共有57页\编于星期六\12点23例1.2编写一个C语言程序,输出显示下列图形。

*****************C语言的学习要努力!*****************

这是一个典型的顺序执行的程序设计,输出三个字符串,输出字符串用函数printf()完成,具体的过程描述为:开始输出:***************换行后再输出:C语言的学习要努力!换行后再输出:***************程序结束当前第24页\共有57页\编于星期六\12点24程序流程图如图所示:开始

输出:**************结束

输出:C语言的学习要努力!

输出:**************当前第25页\共有57页\编于星期六\12点25下面先介绍几个C语言程序,使我们对C语言程序的特点有一个初步认识和了解.刚开始学习,可能在某些语法点上还有不理解的地方,可以在以后的章节中得到解决和加深.#include<stdio.h>/*包含标准输入输出库预处理命令*/

intmain()/*主函数开始*/

{

printf(“*************\n”);

printf(“C语言的学习要努力!\n”);

printf(“***************\n”);

return0;

}

/*程序结束*/

虽然这是一个并不复杂的程序,但它包含了很多重要的语法点和一个程序的框架.下面逐条进行分折讲解:当前第26页\共有57页\编于星期六\12点26用C语言写成的源程序为:(P4)#include<stdio.h>/*包含标准输入输出库预处理命令*/

intmain()/*主函数开始*/

{

printf(“*************\n”);

printf(“C语言的学习要努力!\n”);

printf(“***************\n”);

return0;

}

/*程序结束*/

1.

main()是主函数,每一个C程序都必须一个main()主函数.

且只能有一个main()主函数.3.这是一条编译预处理命令.C语言程序设计中往往要用到输入与输出函数printf

sacnf,因此要有文件包含命令:#include<stdio.h>.2.

函数体用大括

号{}括起来。当前第27页\共有57页\编于星期六\12点27

#include<stdio.h>

intmain()

{

printf(“*************\n”);

printf(“C语言的学习要努力!\n”);

/*输出一行字符*/printf(“***************\n”);

return0;

}

printf()函数是C语言中的专用输出函数,双引号内的字符串按原样输出.

/*……*/是注释部分,对编译和运行不起作用,基本上可放于程序任何地方.

‘\n’是一转义字符(为换行符).语句最后有一个分号

;

。当前第28页\共有57页\编于星期六\12点28#include<stdio.h>

intmain()

{

printf(“*************\n”);

printf(“C语言的学习要努力!\n”);

printf(“***************\n”);

return0;

/*与main函数中的int相对应*/}

main()函数是由操作系统调用的.

标准C++要求main()函数声明为int型.

如果程序正常执行,则向操作系统返回0,否则返回1.细节问题将通过随后章节的学习,以及上机练习来加深理解.当前第29页\共有57页\编于星期六\12点29上机练习1(P5)步骤1:

在VisualC++环境下新建文件:[开始]按钮→[所有程序]→[MicrosoftVisualC++6.0]

如果出现每日提示,如图所示,即点击关闭按扭。当前第30页\共有57页\编于星期六\12点30步骤2:在引导出的C++集中开发环境中,点击菜单:[文件]→[新建]当前第31页\共有57页\编于星期六\12点31在随后出现的”新建”对话框中,点击菜单:

[文件]→[C++SourseFile]

输入文件名:如:1_1.c指定存放此文件的位置:

例如:D:\VC++当前第32页\共有57页\编于星期六\12点32步骤3:在编辑框内输入C源程序。当前第33页\共有57页\编于星期六\12点33步骤4:在VisualC++环境下点击工具图标:进行编译(相当:Ctrl+F7),产生.obj文件.出现对话框(英文):

回答:是

这条编译命令需要一个活动的工程工作区.你要产生一个默认的工作区?当前第34页\共有57页\编于星期六\12点34如果程序无错,编译通过.产生一个相应的1_1.obj文件.当前第35页\共有57页\编于星期六\12点35如果程序有错,编译没有通过.提示错误信息.当前第36页\共有57页\编于星期六\12点36步骤5:点击连接图标:现设程序无错,编译通过.进行连接(相当:F7),产生.exe文件.当前第37页\共有57页\编于星期六\12点37如果程序无错,连接通过.产生一个相应的1_1.exe文件.当前第38页\共有57页\编于星期六\12点38步骤6:点击执行图标:进行执行此1_1.exe文件.当前第39页\共有57页\编于星期六\12点39思考:1.在例1-1.c中,如果没有main(),编译程序后出现的错误提示是什么?在C程序设计中要注意什么问题?2.在例1-1.c中,如把main写成了Main,编译程序后出现的错误提示是什么?在C程序设计中要注意什么问题?3.在例1-1.c中,如printf(“********\n”);后少了“;”号,编译程序后出现的错误提示是什么?在C程序设计中要注意什么问题?当前第40页\共有57页\编于星期六\12点404.在例1-1.c中,如没有写上预处理命令#include<stdio.h>,编译程序后出现的错误提示是什么?想想这是为什么?5.在例1-1.c中,任何一行的输出语句中少了符号\n,程序运行后的结果有什么变化?问在C语言中符号\n的作用是什么?6.在例1-1.c中,如printf(“***********\n”);后少了双引号,编译程序后出现的错误提示是什么?当前第41页\共有57页\编于星期六\12点411.3.2分支结构在程序执行过程中,程序的流程可由多路分支组成,根据不同的条件去执行不同的语句块。这是一个两分支结构。

首先判断条件是否为“真”,如为真,执行语句块1,否则执行语句块2。

语句块2

语句块1

假真条件当前第42页\共有57页\编于星期六\12点42

假如判断从键盘输入的两个数的大小:

如果:x>y,提示:x大于y.如果:x<y,提示:x小于y,

分支结构形式

x>y?

输出x小于y真假

输出x大于y

下一步此时将会用到如下所示的流程图:当前第43页\共有57页\编于星期六\12点43例1.3

从键盘输入两个数,判断两个数的大小。分析:这是一个分支程序设计,具体的过程描述为:程序开始定义两个变量:x,y输入二个数给x,y如果x大于y输出:x大于y否则输出:x小于y程序结束当前第44页\共有57页\编于星期六\12点44开始给x,y输入相应的值

定义两个变量:x,y

结束x>y?x小于yx大于y两数中求最大值流程图真假当前第45页\共有57页\编于星期六\12点45例1.3

用C语言写成的源程序为:(P8)#include<stdio.h>

intmain()

{

intx,y;

/*定义二个变量*/

scanf(“%d%d”,&x,&y);

/*读入两个整型数给变量x、y*/

if(x>y)

/*如果x大于y*/

printf(“x大于y\n”);

/*输出:x大于y*/

else

/*否则*/

printf(“x小于y\n”);

/*输出:x小于y*/

return0;}这一行为变量定义,指明x,y是整型变量(integer)。

scanf()函数是专用的输入函数.

&的含义是“取地址”的意思,函数的作用是:从键盘输入的两个值,分别送到

x,y所占地址的内存单元中去,也就是输入x,y的值.

%d为输入格式说明,d为十进制整数格式说明符。两分支结构当前第46页\共有57页\编于星期六\12点46上机练习

步骤1:调出VC++6.0,关闭“每日提示”。步骤2:点击菜单:[文件]→[新建]→[文件]→

[C++SourseFile]输入文件名1-2.c,点击确定按扭。步骤3:在编辑框内输入C源程序1-2.c。当前第47页\共有57页\编于星期六\12点47步骤4:点击图标进行编译源程序1-2.c,产生可执行文件1-2.obj。步骤5:点击连接图标:进行连接,产生.exe文件.

执行程序1_2.exe步骤6:

点击执行图标当前第48页\共有57页\编于星期六\12点48程序运行结果如图所示。程序运行时输入:1000500(然后回车).两数间用空格分隔.当前第49页\共有57页\编于星期六\12点49程序运行结果数据输入行的显示.程序运行后,结果显示.当前第50页\共有57页\编于星期六\12点50思考:1.在例1_2.c中,如果没有语句intx,y;编译程序后出现的错误提示是什么?在C程序设计中要注意什么问题?2.在例1_2.c中,如把语句scanf(“%d%d”,&x,&y);写成:scanf(“%d%d”,x,y);用来读入两个整型数给变量x、y,程序的运行结果会如何?当前第51页\共有57页\编于星期六\12点513.在例1-2.c中,如程序在运行时输入为:1000,500,程序能否得出正确的运行结果?4.在例1-2.c中,如果在if(x>y)后加上“;”号,编译程序后出现的错误提示是什么?想想这是为什么?5.在例1-2.c中,输入源程序后,int、if、else为什么会变颜色,在C程序设计中有什么特殊的意义?当前第52页\共有57页\编于星期六\12点521.3.3循环结构如果在程序中需要根据某项条件重复地执行某项任务若干次,直到满足或不满足某条件为止,这就构成循环结构。

循环条件?初始条件循环语句假真循环语句执行完成后,又转去判断循环条件,如循环条件仍为真,再次执行循环语句,如此反复

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论