已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
04:42,1,自 我 介 绍,姓名:王坤,04:42,2,教 学 用 书,西南交通大学出版社 计算机程序设计基础(C+) 2017年,04:42,3,考核方式,实验项目:20% 半期考试:20% 期末考试:60% 课堂表现:考勤三次缺勤,可取消期末考试资格,04:42,4,第一章 引论,计算机程序设计基础与Visual C+,04:42,5,教学内容,1软件开发和编制的概念; 2计算机算法; 3程序设计语言和开发工具 4. C+基本程序框架 5. 程序设计的简单示例,04:42,6,一、什么是程序?,程序就是让计算机完成某项任务的一系列命令的集合。 人们编写程序的过程称为程序设计(程序开发)。,软件开发和编制,二、程序设计基本步骤 :,1分析问题 通过原始资料,取得对问题的一个清晰的理解,进而确定解决问题的目标(称为输出)以及实现该目标所需要的条件(称为输入),2规划数据结构与设计算法 数据结构指数据的表示及相关操作;算法描述了求解问题的步骤或规则。 设计合理的数据结构可以简化算法,好的算法使程序具有更高的效率,3验证算法 使用多组样本数据,通过手工计算,对方案的正确性进行证明和验证 4编码实现 选用一种程序设计语言(如C+语言)将算法转换成计算机能够理解的程序(称为编程),5调试和测试程序 “调试”就是查找和排除程序错误,直到能够得到正确的运行结果为止。“测试”是在计算机上用样本数据运行程序,测试代码的正确性。 程序中的错误可能是语法错误,也可能是逻辑错误。大多数语法错误容易找到和改正,但逻辑错误就较难找到,因为导致逻辑错误的原因很多,04:42,11,计算机算法,什么是计算机算法? 计算机算法规定了利用计算机解决某个(或某类)问题的一系列运算(或称操作序列),它是对计算机解题方案 的准确与完整描述。,一、算法的表示方法,1.自然语言 2.传统流程图 3.结构化流程图 (1)三种基本结构的流程图 (2)N-S流程图,1.自然语言表示算法,例 计算n!,?2I,2.传统流程图表示算法,04:42,17,04:42,18,例将求n!的算法用传统流程图表示,3.结构化流程图表示算法,A、顺序结构,(1)三种基本结构的流程图 1966年,Bohra和Jacopini提出了三种基本结构作为表示算法的基本单元,B、选择结构(又称选取结构),04:42,21,C、循环结构(又称重复结构),04:42,22,(2)N-S流程图, 选择结构, 循环结构,例 用N-S流程图表示求n!的算法,二、算法要素与效率:,1、算法的特征 有效性: 算法中的每一步骤都能够被计算机理解和执行,不是抽象和模糊的 有穷性: 算法应该在执行有限的步骤后结束,不能是无限的,确定性: 组成算法的每一步骤应该有确定的语义,不能有任何歧义 有零个或多个输入: 部分数据在操作之前需要通过外界赋值,称为输入 有一个或多个输出: 算法的运算结果即是算法的输出,正确性 对于任意的一组输入,包括合理和不合理的输入,总能得到预期的结果。 可读性 清晰易读的算法有助于对算法的理解,易于调试和修改。 健壮性 对于非法的输入,能够做出适当的反应或异常情况处理。 高效性 占用计算机资源量(主要是运行时间和存储空间)越少效率越高。,04:42,28,2、算法的性能:,04:42,29,通常把对算法效率的度量,称为算法的复杂性分析。它是算法运行所需要的计算机资源的量,是依赖于算法要解决的问题的规模、算法的输入和算法本身的函数。 其中,需要的时间资源的量称为时间复杂性,需要的存储空间资源的量称为空间复杂性。,3、算法的评价,04:42,30,例 欲在按非降次序排列的n个元素 a1,a2,an(aiai+1)中查找是 否有与b相同的元素。,04:42,31,算法二:采用折半查找(二分查找)的方法,即先用位居中点的元素a(n/2)与b比较,若b= a(n/2),则查找成功。若ba(n/2),同时ba(n/2),则在a1,a2, ,a(n/2-1)中采用上述方法继续查找;否则在a(n/2+1),a(n/2+2),an 中采用上述方法继续查找。这种算法显然要优越于前一种算法,因为最多也只需要比较log2n次。,不同类型的问题有不同的算法 同一类型的问题也有多种算法 解决一个实际问题时,可能会有多种算法可供使用,我们需要对这些算法进行分析,选择最优的一个使用。,04:42,33,程序设计语言和开发工具,一、程序设计语言简介 人与机器交换信息的语言。 四个阶段: 1.机器语言 2.汇编语言 3.面向过程的高级语言 4.面向对象的高级语言,04:42,34,1.机器语言: 由二进制数组成的指令代码的集合,机器能直接识别,各种机器指令系统互不相同。 计算机编码: 常用ASCII码(美国标准信息交换编码)American Standard Code for Information Interchange,04:42,35,示例:按ASCII码将 A=1+2 写成机器语言 字符 ASCII码 十进制 A 01000001 65 = 00111101 61 1 00110001 49 + 00101011 43 2 00110010 50,04:42,36,按ASCII码写出的A=1+2的机器语言: 010000010011110100110001001010110011001 机器语言优点: 质量高、执行速度快、占存储空间小。 机器语言缺点: 编程难度大、指令难记、繁琐、直观性差、容易出错、检查调试困难、通用性差不兼容。,2.汇编语言 用助记符代替指令代码,符号化 例: ADD (加法) DIV (除法) 汇编语言不能直接在机器上运行,要转换成机器语言才能执行。,例:汇编语言源程序: main proc pay mov ax,dseg mov ax,0b00h add ax,dx mov al,bl mul bl,ax mov bl,04h,汇编语言优点:质量高、执行速度快、占存储空间小、可读性有所提高。 汇编语言缺点:类似机器语言,通用性、可移植性差,与人的自然语言还相差很悬殊。 机器语言和汇编语言也称为低级语言。,3.面向过程的高级语言 特点:接近人们习惯用的自然语言和数学语言,通用性强,可移植性好。 常见语言: BASIC 、PASCAL、FORTRAN、C、,示例: input “Entername”;name$ input “Enterhoursworked”;hours input “Enter pay rate”;rate grossPay=hours*rate federalTax=.02*grossPay socSecTax=.07*grossPay stateTax=.06*grossPay netPay=grossPay-federalTax-socSecTax-stateTax print name$,netPay,4.面向对象的高级语言 围绕真实世界中的对象概念来组织模型,使问题求解更容易,程序的编制、调试和维护更容易。 常见的面向对象程序设计语言: Visual C+、Visual Basic、Java.,示例: class Date public: void changeDate(int month,int day,int year); void displayDate(); private: int month; int day; int year; ; Date payDay;,高级语言(面象过程及面象对象)所编写的程序均不能直接在计算机上执行,要转换成机器指令代码。 两种转换方式: (1)编译方式 通过编译程序(编译、链接)将整个程序转换为机器语言。 (2)解释方式 通过解释程序,逐行转换为机器语言,转换一行运行一行。,编译方式:,解释方式:,04:42,46,二、VC+集成开发环境,集成开发工具软件: visual studio 2010 是Microsoft公司推出的一套功能完备的集成开发环境,它集编辑、编译、调试、运行于一体,支持多种语言,可创建多类应用程序。,04:42,47,基本操作步骤:,(1)编辑源程序文件(.cpp) (2)编译:将源程序文件转换生成为计算机能直接识别执行的目标程序文件(.obj) (3)链接:调用连接器将程序中所用到的所有库文件与该目标文件连接成一个整体,生成可直接运行的可执行文件(.exe) (4)运行,04:42,48,1.创建项目: “文件”-“新建”-“项目”,04:42,49,2.添加文件:在项目上右击鼠标键 “添加”-“新建项”,04:42,50,3.编辑源文件: 在打开的源文件中输入程序代码,04:42,51,4.编译: “生成”-“生成解决方案”,04:42,52,5.执行程序: “程序”-“开始执行(不调试)”,04:42,53,6. 程序调试技巧: (1)编译错误:错误和警告两种 (2)程序中那些不符合语法的标识符和语句会以红色波浪线给出警示; (3)在编译输出框中的错误上双击鼠标左键,会在程序出错的位置附近行头出现一个兰色的箭头。,void main( ) . . . . 函数1 函数n,变量定义语句; 输入语句; 算法语句; 输出语句;,C+基本程序框架,预编译命令,其它函数,#include using namespace std;,预编译命令,#include 文件名 编译程序时把指定的文件的内容插入到该行的位置。 #include 表示把库文件iostream中的内容包含到该程序文件中来。 库文件是系统提供的能实现某些特定功能的文件,如本例中用到系统提供的输出功能。,指出包含的文件名可以使用和“ ”两种符号 #include #include “c:jysiostream” 表示只在系统目录中寻找要包含的文件 “ ”表示在指定的路径中寻找要包含的文件 多条#include命令必须分行书写,其后不能加分号。,包含库文件时有两种可能形式: #include using namespace std; 或 #include 早些系统实现是将标准库功能定义在全局空间中,声明在带.h后缀的头文件中 C+标准程序库中的所有标识符都定义在名为std的名称空间中,C+程序可以由多个函数组成,但有且只能有一个main函数。main函数在程序中位置可以任意,但主函数main代表了程序执行的起始点和终止点,即程序总是从主函数main的第一条语句开始执行,并结束于主函数的最后一条语句。,主函数,(1)函数名之后必须有一对小圆括号( ),括号中可以有参数。 (2)“”与“”必须配对使用,函数体内可以包含任意多行语句,每个语句以“;”结束。 (3) C+程序的书写很灵活,一行可书写多个语句,一个语句可以写成多行;所有符号均为英文小写。,void main( ) 函数体 ,int main( ) 函数体 return 0; ,表示返回一个整型数据,表示函数没有返回值,注释,注释信息与程序的运行无关,在编译时被忽略。 程序中“/”符号表明本行后续字符为注释信息。 夹在“/*”与“*/”之间的所有字符为注释信息。,/,/* */,示例: #include using namespace std; void main( ) cout“10+15=“10+15endl; cout“ 10*15=”10*15“n”; ,04:42,62,程序设计过程的简单示例,IPO图:用输入(Input),处理(Processing), 输出(Output)来组织和总结问题分析结果的图表。,处理项:处理过程中用到的中间值,例、Martin已经在Builder公司工作了4年,去年Martin的周薪提高了4%,这样她目前周薪达到了250美元,下周Martin的周薪还要提高3%。编程显示其下周涨薪后的周薪。 分析: 想要得到什么? 下周涨薪后的周薪(新的周薪) 要得到“下周涨薪后的周薪”需要知道什么? 下周涨薪前的周薪(当前周薪) 增长率,通过上面分析已确定本任务的输入、输出项。,规划算法(建立数学模型、设计算法) 怎么样求得“新的周薪”? 当前周薪 + 当前周薪 * 增长率 算法: S1:输入当前周薪和增长率 S2:计算周薪增长数目: 当前周薪 * 增长率
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冷库整改合同范本
- 投资协议个人合同范本
- 申请房租合同范本
- 年度中老年女装产业分析报告
- 2024年DNA、RNA疫苗项目发展计划
- 住房公积金房地产交易贷款合同三篇
- 2024年塑料半成品、辅料项目合作计划书
- 急诊部门公共卫生应对策略计划
- 2024年卫浴柜类项目合作计划书
- 承包菜鸟驿站转让合同范本
- 青年教师个人专业发展三年规划表
- 会议宴会接待通知单
- 数字化人才管理
- 烟草行业供应链优化
- 血液循环系统课件
- 起重机械自查报告
- 2021年至2023年广东省公务员遴选笔试真题、面试真题及答案解析(各地市、省直共12套)
- ZJ40J钻机技术参数
- 提高冠脉介入手术术前准备的合格率
- 《学习态度与习惯》主题班会课件
- 创建国家级旅游度假区自评报告
评论
0/150
提交评论