版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实践是能力赖以生长的土壤!高级语言程序设计主讲教师:丁丁计算机与信息技术学院dding@第一章
程序设计与C语言主要内容程序和程序语言程序和程序语言算法及其描述工具程序设计方法问题与程序设计2026/8/5高级语言程序设计41.1程序和程序语言例:到图书馆借参考书1)进入图书馆;2)查书目;3)填写索书单;4)如果书未借出那么:交图书馆工作人员取书;办理借书手续;到5;5)如果还需借其它书,回到2;否则到6;6)
离开图书馆。“程序”(program)通常指完成某些事务的一种既定方式和过程。2026/8/5高级语言程序设计5一些直观特征按部就班地进行;开始与结束;完成某项具体任务;需要用某种记法形式描述(计算机程序需要用某种精确定义的形式描述);是在一些基本动作的基础上描述的;不同的描述粒度(细节程度);……2026/8/5高级语言程序设计61程序程序:规定了计算机执行的动作和动作的顺序。一个程序应包括以下两方面的内容:对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构。对操作的描述:即操作步骤,也就是算法(解决问题的方法和步骤)。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。程序=数据结构+算法著名计算机科学家NikiklausWirth作为程序设计人员,必须认真考虑和设计数据结构和操作步聚
2026/8/5高级语言程序设计72026/8/5高级语言程序设计8例:求1×2×3×4×5C语言编写的程序:#include<stdio.h>voidmain(){inti,t;t=1;i=2;t=t*i;i=3;t=t*i;i=4;t=t*i;i=5;t=t*i;
printf(“%d\n”,t);}数据:1,2,3,4,5数据结构:int类型算法:步骤1:先求1×2,得到结果2
步骤2:将步骤1得到的乘积2再乘以3,得到结果6;步骤3:将6再乘以4,得24
步骤4:将24再乘以5,得120太繁琐2026/8/5高级语言程序设计9设变量t为被乘数,i为乘数。
用循环算法来求结果,算法可改写为:C语言编写的程序:#include<stdio.h>Voidmain(){inti,t;t=1;i=2;while(i<=5){t=t*i;i=i+1;}printf(“%d\n”,t);}步骤1:t=1
步骤2:i=2
步骤3:t×i=>t步骤4:i+1=>i
步骤5:如果i不大于5,返回步骤3;否则结束。最后得到t的值就是5!的值。
简练硬件层面上的程序是机器指令的序列。程序执行:将程序存入内存,通知CPU第一条指令的地址。命令它“开始”!一般情况下,CPU执行完一条指令后,自动取出下一条指令,并如此继续下去。转跳指令明确指定下一条指令的位置,人可以基于转跳指令描述复杂的执行流程。人命令计算机去执行一个程序,计算机就会一丝不苟地按这个程序的内容,一条一条指令执行,直至程序结束(指令执行到了最后,或者遇到明确的停止指令)。2026/8/5高级语言程序设计10程序的执行2算法算法:解决问题的方法和步骤解决一个问题的过程就是实现一个算法的过程。算法分为两大类:数值运算:如解方程、求定积分非数值运算:如排序、检索、绘图2026/8/5高级语言程序设计11例:用公式y=x2-2x+3计算x=0,1,2,3,……100所对应的y值,使用如下算法:
(1)置x为0;
(2)置x的上界n=100;
(3)当x≤n时,重复执行3.1,3.2,3.3步,否则,算法停止。
(3.1)用公式计算y值;
(3.2)打印一组x和y的值;
(3.3)x值增加1。2026/8/5高级语言程序设计122026/8/5高级语言程序设计13算法的5个特性有穷性:即算法通过有限步骤后能够结束确定性:无二义性,算法必须具有清晰的定义、不能存在任何的模糊有零个或多个输入有一个或多个输出可行性:即算法的每一步都是可执行的同一个问题可以有多种算法2026/8/5高级语言程序设计14算法的描述工具(1)流程图(传统流程图)(2)结构流程图(N-S结构图)(3)伪代码2026/8/5高级语言程序设计15算法的描述工具:流程图用一些图框表示各种操作,形象直观,易于理解
ANSI规定一些常用的流程图符号
一个流程图包括以下几部分:表示相应操作的框带箭头的流程线框内外必要的说明文字x<=nx=0,n=100计算y=x*x-2*x+3打印x,yx=x+1开始结束真假2026/8/5高级语言程序设计162026/8/5高级语言程序设计17算法的描述工具:N-S图美国学者I.Nassi和B.Shneiderman提出的一种新的流程图全部算法写在一个矩形框内,由一些基本的框组成一个大的框,称N-S图x=0,n=100x<=n计算y=x*x-2*x+3打印x,yx=x+12026/8/5高级语言程序设计18算法的描述工具:伪码概念:伪代码(pseudocode)是用来描述算法的介于自然语言和计算机语言之间的文字和符号。特点:自上而下每一行(或几行)表示一个基本操作;不用图形符号,书写方便、格式紧凑;便于向计算机语言算法(即程序)过渡。用处:适用于设计过程中需要反复修改时的流程描述。伪码
begininitializextozeroinitializento100whilex<=ncalculateyprintx,yaddonetoxend2026/8/5高级语言程序设计19例:求1+2+…+100的和i<=100sum=0,i=1sum=sum+ii=i+1开始结束真假printsum传统流程图2026/8/5高级语言程序设计20例:求1+2+…+100的和beginsum
0,i
1;whilei<=100sum
sum+i;ii+1;printsumendsum=0,i=1i<=100sum=sum+ii=i+1printsumN-S图伪代码2026/8/5高级语言程序设计21课堂练习1请为2+4+6+…+200设计算法并画流程图2026/8/5高级语言程序设计22课堂练习2判断某一年是否为闰年能被400整除能被4整除,但不能被100整除2026/8/5高级语言程序设计233程序设计语言算法是对所解决问题的精确描述,程序设计语言是计算机可处理的代码,是人与计算机交流的最基本最重要的媒介;利用程序设计语言将算法转化为源程序,通过计算机处理解决问题。算法程序设计语言计算机结果源程序2026/8/5高级语言程序设计24计算机与人沟通2026/8/5高级语言程序设计25计算机与人沟通2026/8/5高级语言程序设计26计算机与人沟通2026/8/5高级语言程序设计27计算机与人沟通2026/8/5高级语言程序设计28计算机与人沟通人和计算机通信使用的语言为计算机语言2026/8/5高级语言程序设计29机器语言汇编语言高级语言面向过程面向对象面向机器的语言程序设计语言的产生发展CPU指令系统,由0、1序列构成的指令码组成如:10000000加
10010000减用助记符号描述的指令系统如ADDA,B接近于人类的自然语言和数学语言如:c=a+b面向过程的语言->算法语言Basic,Fortan,Pascal,C语言等Java,C++等2026/8/5高级语言程序设计30THANKYOUSUCCESS2026/8/531可编辑机器语言和程序机器语言是机器指令形成的语言;形式为二进制编码,机器可直接执行00000001000000001000 00000001000100001010 00000101000000000001 00000001000100001100 00000100000000000001 00000010000000001110
数据装入寄存器0数据装入寄存器1寄存器0与1的数据乘数据装入寄存器1寄存器0与1的数据加保存寄存器0里的数据
难写难读,不易编程,与机器有关、程序开发效率极低。2026/8/5高级语言程序设计32汇编语言和程序汇编语言:采用助记的符号形式,有利于人的阅读和使用。汇编指令与机器指令一一对应load0aload1bmult01load1cadd01save0d
将单元a的数据装入寄存器0将单元b的数据装入寄存器1寄存器0与1的数据乘将单元c的数据装入寄存器1寄存器0与1的数据加将寄存器0里的数据存入单元d仍然难理解,不易编程,与机器有关、程序开发效率低。2026/8/5高级语言程序设计33计算机无法直接执行汇编语言程序,执行前需要把汇编语言程序翻译为机器指令程序最早时通过手工翻译为机器指令后来人们开发出称为“汇编系统”的程序,让计算机去完成程序翻译工作汇编语言的特点:每条指令的意义容易理解程序粒度太小,细节太多程序无结构,缺乏组织手段写大程序仍然很困难2026/8/5高级语言程序设计34高级语言和程序高级语言的特点:具有类似文字的表现形式,接近自然语言具有丰富的数据结构,用类似数学表达式形式描述基本计算用变量等概念取代低级的存储概念,使人摆脱各种繁琐低级的工作,例如存储的安排提供高级操作流程控制手段和程序组织手段与具体的机器无关,可移值性好在C语言里写前面同样的程序:
d=a*b+c;2026/8/5高级语言程序设计35计算机无法直接执行高级语言写出的程序常规方式是做一个编译系统,完成高级语言程序到机器语言可执行程序的翻译加工编程->编译加工->执行使用高级语言编程:编程工作的效率大大提高人更容易思考和把握复杂程序的意义更多人愿意投身于这种工作,使编程发展成为一种职业和谋生方式术语“程序设计语言”已专指“高级语言”2026/8/5高级语言程序设计361954年到1957年:高级语言Fortran诞生;至1960年代中,开发了Algol60,COBOL,BASIC等。还有函数式语言LISP等;1970年代开始:Pascal和C语言逐渐分别为教学科研和软件开发用的主要语言;1980年代:逻辑程序语言Prolog,面向对象语言Smalltalk和后来的C++;1995年左右的Java。高级语言的简单历史2026/8/5高级语言程序设计37C语言比较小,入门容易,很快就可以开始编程有丰富的程序机制、数据机制、函数定义机制,能满足复杂程序的需要。许多常用功能通过库实现提供接近硬件的低级操作,广泛用于开发效率要求高的程序。被用于代替汇编语言开发底层软件生成目标代码质量高、可移植性好,被称为“中级语言”提供了一些支持大规模复杂软件开发的机制C语言的工作得到世界计算机界的广泛赞许。对计算机工业和应用发展起了重要推动作用许多新语言从C汲取营养。如C++,Java,C#等C语言设计者获得计算机领域最高奖——图灵奖C语言的特点C语言1973年由贝尔实验室的DennisRitchie设计,目标是书写操作系统和其他系统程序。C语言最早用于写UNIX系统。70年代成为UNIX的标准开发语言,随UNIX流行而被广泛接受。80年代被搬到各种机器的许多操作系统上,逐渐成为一种开发系统程序和复杂软件的通用语言。后来成为使用最广泛的系统开发语言。人们用C开发各种程序,从简单应用到极其复杂的大型软件。各种计算机都有可用的C语言系统。C语言简介2026/8/5高级语言程序设计39标准化应用发展要求C成为更安全可靠、不依赖具体机器或操作系统的标准语言。ANSI在80年代开始标准化工作,1988年颁布ANSIC标准,后被ISO和各国接受,也采纳为中国国家标准(GB/T15272-94)。新标准C99已经通过。按ANSIC标准写程序C的原设计注重灵活性,允许许多不安全的编程方式,正确性靠编程者。用户群扩大后缺点凸现,复杂程序常有隐藏错误。标准化也是为修正C的缺陷。ANSI(AmericanNationalStandardsInstitute)2026/8/5高级语言程序设计40由系统定义,不能重作其它定义autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile32个关键字2026/8/5高级语言程序设计41if()~else~for()~while()~do~while()continuebreakswitchgotoreturn9种控制语句2026/8/5高级语言程序设计42算术运算符:+-*/%++--关系运算符:<<===>>=!=逻辑运算符:!&&||位运算符:<<>>~|^&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.->下标运算符:[]其它:()-34种运算符2026/8/5高级语言程序设计43基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char枚举类型enum整型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体unionC数据类型2026/8/5高级语言程序设计44主要内容程序和程序语言程序和程序语言算法及其描述工具程序设计方法问题与程序设计2026/8/5高级语言程序设计45起床刷牙洗脸吃饭早自习拿饭碗去食堂排队买饭吃饭洗碗离开食堂排队选饭选菜付款“程序”分解实例(早起活动):编写程序不应该从第一个细节开始逐步分解,直至分解到程序语言提供的功能。1.3程序设计方法2026/8/5高级语言程序设计46程序设计思想:自顶向下、逐步细化从问题出发,从高层开始设计程序;逐步分解程序功能,直至可以用程序语言实现。结构化三种基本结构(顺序、选择、循环)的组合模块化函数2026/8/5高级语言程序设计472026/8/5高级语言程序设计48结构化程序设计的三种基本结构(1)顺序结构AB入口出口特点:无条件顺序执行A,B语句或语句串
A,B可能是其他结构2026/8/5高级语言程序设计49(2)选择结构
AB入口出口特点:要么执行A,要么执行B
条件P满足执行A
不满足执行BA,B可能是空语句条件PYN结构化程序设计的三种基本结构2026/8/5高级语言程序设计50(3)循环结构特点:条件P
满足执行A
再测试条件……
不满足结束先判断,后执行有可能A一次也没执行A入口条件PYN出口a.当型循环(while)结构化程序设计的三种基本结构2026/8/5高级语言程序设计51(3)循环结构特点:条件P
不满足执行A
再测试条件……
满足结束先执行,后判断
A至少执行一次A入口条件PYN出口b.直到型循环(do-while)结构化程序设计的三种基本结构一般一个算法既可以用while型也可以用do-while型实现2026/8/5高级语言程序设计52N-S结构图表示主要内容程序和程序语言程序和程序语言算法及其描述工具程序设计方法问题与程序设计2026/8/5高级语言程序设计531.4问题与程序设计过程程序设计是智力劳动,编一个程序就是解决一个问题。用计算机解决问题的过程可分为三步:分析问题,设计一种解决问题方案(算法设计);用某种程序语言严格描述这一解决方案(编程);在计算机上试用程序,看它能否解决问题(调试)。算法是核心、是灵魂,程序是外壳!2026/8/5高级语言程序设计542026/8/5高级语言程序设计55分析
抽象
实现问题
解决方法
精确描述(算法)
程序(源程序)算法:由若干条指令组成的有穷序列,满足一定条件。程序:是算法用程序设计语言的具体实现。程序设计语言
程序
计算机翻译
机器语言
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗机构工作人员廉洁从业九项准则知识考核试题及答案
- 新编心理学试题及答案
- 小学英语教师业务考试试卷及答案
- 夏季野外野菜辨别与食用安全课
- 城市野生动物园游客安全游玩宣讲课
- 辽宁沈阳市第四十三中学2025-2026学年七年级下学期期末反馈语文试卷(文字版含答案)
- 消防设施操作员考试题库及答案(中级)
- 西安车务段安全考试题及答案
- 2026年铁路客运管理综合测试题库
- 2026年青田中小学教师招聘笔试试题(含答案)
- DB63T 2338-2024 国家公园珍稀濒危野生植物监测技术规范
- 医院培训课件:《肾囊性病变超声诊断》
- 2024年湖南钢铁集团有限公司校园招聘考试试题全面
- 妊娠合并子宫肌瘤护理查房
- 重症医学科护理
- 电土施表13.3-7 排(雨)水管道灌水(通水)试验记录
- 小学英语教师进城选调考试试题及答案
- 新庄湾联合站工艺设计(说明书、计算书)
- 经鼻内镜鼻窦手术配合
- 完整解读中华人民共和国政府信息公开条例课件
- 肺大疱(心胸外科)
评论
0/150
提交评论