C语言程序设计-理论、方法与实践张磊编著清华大学出版社C语言程序设计第1章程序设计概述课件制作日期:2013年6月.张磊课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社第1章程序设计概述1.1程序设计语言1.2算法1.3程序设计与实现1.4C语言程序的基本结构C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.1程序设计语言程序设计语言:计算机能够理解和识别的一种语言体系,它按照特定的规则组织计算机指令,使计算机能够自动进行各种操作处理。计算机程序:按照程序设计语言的规则组织起来的一组计算机指令。程序设计语言分类:机器语言、汇编语言和高级语言。C语言属于高级语言,1972年由美国的DennisRitchie设计发明。1983年,美国国家标准化协会(ANSI)根据C语言问世以来各种版本对C的发展和扩充,制定了C的标准,称为ANSIC。1987年ANSI又公布了新的标准——87ANSIC。课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.1程序设计语言C语言程序示例:计算1到100的所有自然数的和。#includestdio.hintmain(void){inti=1,s=0;while(i=100)/*循环控制*/{s=s+i;/*数据累加*/i=i+1;/*生成下一个要累加的数*/}printf(sum=%d\n,s);/*输出结果*/return0;}课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2算法1.2.1算法概念与算法描述1.2.2算法的逻辑结构1.2.4算法的特性1.2.4算法评价C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.1算法概念与算法描述算法重要性:程序=数据结构+算法1.算法的概念算法是求解问题的方法,是在有限步骤内求解某一问题所使用的一组定义明确的规则,是计算机处理问题所需要的具体步骤。2.算法的描述方法–自然语言–流程图–N-S图–PAD图–伪码等。课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.1算法概念与算法描述⑴用自然语言描述算法“计算1到100的所有自然数的和”步骤①i和s赋初值,使i=1,s=0;步骤②判断i的值,若i≤100则执行步骤③;否则,转步骤⑤;步骤③s加i;步骤④i加1,转步骤②;步骤⑤显示s的值,结束。课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.1算法概念与算法描述⑵用流程图描述算法课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.1算法概念与算法描述“计算1~100自然数和”的算法开始1i0si≤100s+isi+1i输出s结束yesno步骤①i=1,s=0;步骤②若i≤100则执行步骤③;否则,转步骤⑤;步骤③s加上i;步骤④i加上1,转步骤②;步骤⑤显示s的值,结束课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.1算法概念与算法描述(3)用伪代码描述算法“计算1到100的所有自然数的和”begini=1,s=0whilei≤100s=s+ii=i+1endwhileptintsend课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.2算法的逻辑结构顺序结构、分支结构、循环结构是算法的三种基本结构,这三种结构互相结合,可以实现任何逻辑控制。算法步骤①输入一个学生两门课的成绩a1,a2;步骤②计算平均成绩(a1+a2)/2→ave;步骤③输出平均成绩ave,结束。开始输入成绩计算平均成绩输出平均成绩结束问题1-顺序结构:输入一个学生的两门课的成绩,计算出平均成绩。伪代码beginintputa1,a2ave=(a1+a2)/2printaveend课件制作日期:2013年6月.张磊课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.2算法的逻辑结构问题2-分支结构:输入一个学生的两门课的成绩,若平均成绩不低于90分,则显示“优等生”,否则显示“要加油啊!”算法步骤①输入一个学生两门课的成绩a1、a2;步骤②计算平均成绩(a1+a2)/2→ave;步骤③若ave≥90,则执行步骤④;否则执行步骤⑤;步骤④输出“优等生”,结束。步骤⑤输出“要加油啊!”,结束。开始输入成绩计算平均成绩aveave≥90输出:要加油啊!输出:优等生结束真假课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.2算法的逻辑结构问题2-分支结构输入一个学生的两门课的成绩,若平均成绩不低于90分,则显示“优等生”,否则显示“要加油啊!”伪代码描述算法begininputa1,a2ave=(a1+a2)/2ifave≥90thenprint“优等生!”elseprint“要加油啊!”endC语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.2算法的逻辑结构问题3-循环结构:按照问题2的标准,统计全班的优等生人数(全班共30人)。算法步骤①设置变量count对输入的数据量计数,其初值为1;设置变量result对优等生计数,其初值为0;步骤②若count≤30,则执行步骤③;否则转步骤⑧;步骤③输入一个学生两门课的成绩a1、a2;步骤④计算平均成绩(a1+a2)/2→ave;步骤⑤若ave≥90,则执行步骤⑥;否则转步骤⑦;步骤⑥result+1→result;步骤⑦count+1→count;转步骤②;步骤⑧输出统计结果,结束。开始1count0resultcount≤30输入成绩计算平均成绩aveave≥90result+1resultcount+1count输出count结束真假真假C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.2算法的逻辑结构问题3-循环结构按照问题2的标准,统计全班的优等生人数(全班共30人)。伪代码描述begincount=1,result=0whilecount≤30inputa1,a2ave=(a1+a1)/2ifave≥90thenresult=result+1count=count+1endwhileprintresultend课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.2算法的逻辑结构算法逻辑结构框图⑴顺序结构ABBA顺序结构传统流程图顺序结构N-S图课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.2算法的逻辑结构算法逻辑结构框图(2)分支结构分支结构流程图分支结构N-S图A条件B真假BA条件真假课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.2算法的逻辑结构算法逻辑结构框图(3)循环结构循环结构流程图循环结构N-S图条件A真假A当条件为真课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.3算法的特性算法特性⑴有穷性:经过有限步骤解决问题。⑵确定性:每个步骤所规定的操作必须是确定的。⑶有效性:每一个步骤必须能够有效地执行。⑷输入和输出特性。有零个或多个输入,有一个或多个输出。还应注意算法的多样性:一个具体问题可以有不同的解决方法,因此可以设计解决问题的不同算法。算法的通用性:一个算法应是适用于某类问题,而不只是适用于某一个问题。课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.2.4算法评价–算法复杂程度–算法的时间复杂性:规模与执行速度关系–算法空间复杂性:对系统资源的需求程度–算法的通用性–正确和清晰易读永远是一个好算法的基本条件。课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.3程序设计与实现1.3.1程序设计的基本过程1.3.2使用VisualC++6.0实现C语言程序1.3.3程序设计示例课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.3.1程序设计的基本过程问题分析算法设计编写程序调试运行程序分析要处理的问题涉及的各种概念、数据特点、已知条件、所求结果,以及已知条件与所求结果之间的关系等各方面的信息。明确:要做什么?确定具体的算法,并选择合适的算法表达工具对算法进行描述。用程序设计语言的语句和命令实现算法的每一个步骤。启动编辑调试环境编辑源程序生成目标代码生成可执行文件输入数据(必要时)、输出结果编译过程发现错误连接过程发现错误结果错误编译连接执行结束课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.3.2使用VC++6.0实现C语言程序使用VC++6.0实现C程序的基本步骤有4个:1.建立源程序文件3.构建可执行文件2.编译源程序4.运行可执行文件启动VC++6.0系统使用“File”→“New”命令,打开VC++6.0的程序编辑窗口录入编辑源程序,保存文件使用“Build”→“Compile”命令对源程序进行编译,生成二进制目标代码文件。程序通过编译之后,使用“Build”→“Build”命令将编译阶段生成的目标文件和系统的库函数文件等连接起来,生成扩展名是“.exe”的可执行文件。使用“Build”→“!Execute”命令运行程序,获得执行结果。课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.3.3程序设计示例例1-1设计计算矩形面积的程序。3.编写程序2.算法设计4.调试运行程序1.问题分析⑴设矩形的边长为a和b、矩形面积为s,则s=a×b。⑵通过键盘输入等方式为矩形边长a、b提供数据。⑶程序执行后要输出计算结果。2.算法设计3.编写程序4.调试运行程序⑴输入a、b的值。⑵计算a×b,并存储到s中。⑶输出s。3.编写程序4.调试运行程序开始输入a、ba×b→s输出s结束流程图⑴假设该矩形都是整型数据,因此,要使用int对a、b、s进行说明。⑵使用scanf()函数输入数据a、b。⑶使用“s=a*b”计算矩形面积,并存储到s中。⑷使用printf()函数输出计算结果s。⑸把上面的一些具体语句放在main()函数中。程序清单课件制作日期:2013年6月.张磊C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.3.3程序设计示例/*programe1-1.c*/#includestdio.hintmain(){inta,b,s;printf(Inputa,b:);scanf(%d,%d,&a,&b);s=a*b;printf(Area:%d\n,s);return0;}3.编写程序2.算法设计4.调试运行程序1.问题分析⑴假设该矩形都是整型数据,因此,要使用int对a、b、s进行说明。⑵使用scanf()函数输入数据a、b。⑶使用“s=a*b”计算矩形面积,并存储到s中。⑷使用printf()函数输出计算结果s。⑸把上面的一些具体语句放在main()函数中。例1-1设计计算矩形面积的程序。C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.3.3程序设计示例4.调试运行程序例1-1设计计算矩形面积的程序。⑴建立源程序文件。①启动VC++6.0,使用“File”→“New”命令,打开“new”窗口,选用“Files”选项卡,在主窗口中选择“C++SourceFile”项,在“File”对话框中输入文件名,在“Location”对话框中指定文件的存储位置。C语言程序设计-理论、方法与实践张磊编著清华大学出版社1.3.3程序设计示例4.调试运行程序例1-1设计计算矩形面积的程序。⑴建立