北京交通大学C语言课件第1章_第1页
北京交通大学C语言课件第1章_第2页
北京交通大学C语言课件第1章_第3页
北京交通大学C语言课件第1章_第4页
北京交通大学C语言课件第1章_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

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

文档简介

实践是能力赖以生长的土壤!实践是能力赖以生长的土壤!高级语言程序设计主讲教师:丁丁计算机与信息技术学院dding@高级语言程序设计主讲教师:丁丁第一章

程序设计与C语言第一章

程序设计与C语言主要内容程序和程序语言程序和程序语言算法及其描述工具程序设计方法问题与程序设计2022/12/12高级语言程序设计4主要内容程序和程序语言2022/12/11高级语言程序设计41.1程序和程序语言例:到图书馆借参考书1)进入图书馆;2)查书目;3)填写索书单;4)如果书未借出那么:交图书馆工作人员取书;办理借书手续;到5;5)如果还需借其它书,回到2;否则到6;6)

离开图书馆。“程序”(program)通常指完成某些事务的一种既定方式和过程。2022/12/12高级语言程序设计51.1程序和程序语言例:到图书馆借参考书1)进入图书馆;一些直观特征按部就班地进行;开始与结束;完成某项具体任务;需要用某种记法形式描述(计算机程序需要用某种精确定义的形式描述);是在一些基本动作的基础上描述的;不同的描述粒度(细节程度);……2022/12/12高级语言程序设计6一些直观特征按部就班地进行;2022/12/11高级语言程序1程序程序:规定了计算机执行的动作和动作的顺序。一个程序应包括以下两方面的内容:对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构。对操作的描述:即操作步骤,也就是算法(解决问题的方法和步骤)。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。程序=数据结构+算法著名计算机科学家NikiklausWirth作为程序设计人员,必须认真考虑和设计数据结构和操作步聚

2022/12/12高级语言程序设计71程序程序:规定了计算机执行的动作和动作的顺序。2022/2022/12/12高级语言程序设计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太繁琐2022/12/11高级语言程序设计8例:求1×2×3×4×2022/12/12高级语言程序设计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!的值。

简练2022/12/11高级语言程序设计9设变量t为被乘数,i为硬件层面上的程序是机器指令的序列。程序执行:将程序存入内存,通知CPU第一条指令的地址。命令它“开始”!一般情况下,CPU执行完一条指令后,自动取出下一条指令,并如此继续下去。转跳指令明确指定下一条指令的位置,人可以基于转跳指令描述复杂的执行流程。人命令计算机去执行一个程序,计算机就会一丝不苟地按这个程序的内容,一条一条指令执行,直至程序结束(指令执行到了最后,或者遇到明确的停止指令)。2022/12/12高级语言程序设计10程序的执行硬件层面上的程序是机器指令的序列。2022/12/11高级语2算法算法:解决问题的方法和步骤解决一个问题的过程就是实现一个算法的过程。算法分为两大类:数值运算:如解方程、求定积分非数值运算:如排序、检索、绘图2022/12/12高级语言程序设计112算法算法:解决问题的方法和步骤2022/12/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。2022/12/12高级语言程序设计12例:用公式y=x2-2x+3计算x=0,1,2,3,……2022/12/12高级语言程序设计13算法的5个特性有穷性:即算法通过有限步骤后能够结束确定性:无二义性,算法必须具有清晰的定义、不能存在任何的模糊有零个或多个输入有一个或多个输出可行性:即算法的每一步都是可执行的同一个问题可以有多种算法2022/12/11高级语言程序设计13算法的5个特性有穷性2022/12/12高级语言程序设计14算法的描述工具(1)流程图(传统流程图)(2)结构流程图(N-S结构图)(3)伪代码2022/12/11高级语言程序设计14算法的描述工具(1)2022/12/12高级语言程序设计15算法的描述工具:流程图用一些图框表示各种操作,形象直观,易于理解

ANSI规定一些常用的流程图符号

2022/12/11高级语言程序设计15算法的描述工具:流程一个流程图包括以下几部分:表示相应操作的框带箭头的流程线框内外必要的说明文字x<=nx=0,n=100计算y=x*x-2*x+3打印x,yx=x+1开始结束真假2022/12/12高级语言程序设计16一个流程图包括以下几部分:x<=nx=0,n=100计算2022/12/12高级语言程序设计17算法的描述工具:N-S图美国学者I.Nassi和B.Shneiderman提出的一种新的流程图全部算法写在一个矩形框内,由一些基本的框组成一个大的框,称N-S图x=0,n=100x<=n计算y=x*x-2*x+3打印x,yx=x+12022/12/11高级语言程序设计17算法的描述工具:N-2022/12/12高级语言程序设计18算法的描述工具:伪码概念:伪代码(pseudocode)是用来描述算法的介于自然语言和计算机语言之间的文字和符号。特点:自上而下每一行(或几行)表示一个基本操作;不用图形符号,书写方便、格式紧凑;便于向计算机语言算法(即程序)过渡。用处:适用于设计过程中需要反复修改时的流程描述。2022/12/11高级语言程序设计18算法的描述工具:伪码伪码

begininitializextozeroinitializento100whilex<=ncalculateyprintx,yaddonetoxend2022/12/12高级语言程序设计19伪码2022/12/11高级语言程序设计19例:求1+2+…+100的和i<=100sum=0,i=1sum=sum+ii=i+1开始结束真假printsum传统流程图2022/12/12高级语言程序设计20例:求1+2+…+100的和i<=100sum=0,i=1例:求1+2+…+100的和beginsum0,i1;whilei<=100sumsum+i;ii+1;printsumendsum=0,i=1i<=100sum=sum+ii=i+1printsumN-S图伪代码2022/12/12高级语言程序设计21例:求1+2+…+100的和beginsum=0,i=1i课堂练习1请为2+4+6+…+200设计算法并画流程图2022/12/12高级语言程序设计22课堂练习1请为2+4+6+…+200设计算法并画流程图202课堂练习2判断某一年是否为闰年能被400整除能被4整除,但不能被100整除2022/12/12高级语言程序设计23课堂练习2判断某一年是否为闰年2022/12/11高级语言程3程序设计语言算法是对所解决问题的精确描述,程序设计语言是计算机可处理的代码,是人与计算机交流的最基本最重要的媒介;利用程序设计语言将算法转化为源程序,通过计算机处理解决问题。算法程序设计语言计算机结果源程序2022/12/12高级语言程序设计243程序设计语言算法是对所解决问题的精确描述,程序设计语言是计算机与人沟通2022/12/12高级语言程序设计25计算机与人沟通2022/12/11高级语言程序设计25计算机与人沟通2022/12/12高级语言程序设计26计算机与人沟通2022/12/11高级语言程序设计26计算机与人沟通2022/12/12高级语言程序设计27计算机与人沟通2022/12/11高级语言程序设计27计算机与人沟通2022/12/12高级语言程序设计28计算机与人沟通2022/12/11高级语言程序设计28计算机与人沟通人和计算机通信使用的语言为计算机语言2022/12/12高级语言程序设计29计算机与人沟通人和计算机通信使用2022/12/11高级语言机器语言汇编语言高级语言面向过程面向对象面向机器的语言程序设计语言的产生发展CPU指令系统,由0、1序列构成的指令码组成如:10000000加

10010000减用助记符号描述的指令系统如ADDA,B接近于人类的自然语言和数学语言如:c=a+b面向过程的语言->算法语言Basic,Fortan,Pascal,C语言等Java,C++等2022/12/12高级语言程序设计30机器语言汇编语言高级语言面向过程面向对象面向机器的语言程序设机器语言和程序机器语言是机器指令形成的语言;形式为二进制编码,机器可直接执行00000001000000001000 00000001000100001010 00000101000000000001 00000001000100001100 00000100000000000001 00000010000000001110

数据装入寄存器0数据装入寄存器1寄存器0与1的数据乘数据装入寄存器1寄存器0与1的数据加保存寄存器0里的数据

难写难读,不易编程,与机器有关、程序开发效率极低。2022/12/12高级语言程序设计31机器语言和程序机器语言是机器指令形成的语言;00000001汇编语言和程序汇编语言:采用助记的符号形式,有利于人的阅读和使用。汇编指令与机器指令一一对应load0aload1bmult01load1cadd01save0d

将单元a的数据装入寄存器0将单元b的数据装入寄存器1寄存器0与1的数据乘将单元c的数据装入寄存器1寄存器0与1的数据加将寄存器0里的数据存入单元d仍然难理解,不易编程,与机器有关、程序开发效率低。2022/12/12高级语言程序设计32汇编语言和程序汇编语言:采用助记的符号形式,有利于人的阅读和计算机无法直接执行汇编语言程序,执行前需要把汇编语言程序翻译为机器指令程序最早时通过手工翻译为机器指令后来人们开发出称为“汇编系统”的程序,让计算机去完成程序翻译工作汇编语言的特点:每条指令的意义容易理解程序粒度太小,细节太多程序无结构,缺乏组织手段写大程序仍然很困难2022/12/12高级语言程序设计33计算机无法直接执行汇编语言程序,执行前需要把汇编语言程序翻译高级语言和程序高级语言的特点:具有类似文字的表现形式,接近自然语言具有丰富的数据结构,用类似数学表达式形式描述基本计算用变量等概念取代低级的存储概念,使人摆脱各种繁琐低级的工作,例如存储的安排提供高级操作流程控制手段和程序组织手段与具体的机器无关,可移值性好在C语言里写前面同样的程序:

d=a*b+c;2022/12/12高级语言程序设计34高级语言和程序高级语言的特点:在C语言里写前面同样的程序:2计算机无法直接执行高级语言写出的程序常规方式是做一个编译系统,完成高级语言程序到机器语言可执行程序的翻译加工编程->编译加工->执行使用高级语言编程:编程工作的效率大大提高人更容易思考和把握复杂程序的意义更多人愿意投身于这种工作,使编程发展成为一种职业和谋生方式术语“程序设计语言”已专指“高级语言”2022/12/12高级语言程序设计35计算机无法直接执行高级语言写出的程序使用高级语言编程:2021954年到1957年:高级语言Fortran诞生;至1960年代中,开发了Algol60,COBOL,BASIC等。还有函数式语言LISP等;1970年代开始:Pascal和C语言逐渐分别为教学科研和软件开发用的主要语言;1980年代:逻辑程序语言Prolog,面向对象语言Smalltalk和后来的C++;1995年左右的Java。高级语言的简单历史2022/12/12高级语言程序设计361954年到1957年:高级语言Fortran诞生;高级语言C语言比较小,入门容易,很快就可以开始编程有丰富的程序机制、数据机制、函数定义机制,能满足复杂程序的需要。许多常用功能通过库实现提供接近硬件的低级操作,广泛用于开发效率要求高的程序。被用于代替汇编语言开发底层软件生成目标代码质量高、可移植性好,被称为“中级语言”提供了一些支持大规模复杂软件开发的机制C语言的工作得到世界计算机界的广泛赞许。对计算机工业和应用发展起了重要推动作用许多新语言从C汲取营养。如C++,Java,C#等C语言设计者获得计算机领域最高奖——图灵奖C语言的特点C语言比较小,入门容易,很快就可以开始编程C语言的工作得到C语言1973年由贝尔实验室的DennisRitchie设计,目标是书写操作系统和其他系统程序。C语言最早用于写UNIX系统。70年代成为UNIX的标准开发语言,随UNIX流行而被广泛接受。80年代被搬到各种机器的许多操作系统上,逐渐成为一种开发系统程序和复杂软件的通用语言。后来成为使用最广泛的系统开发语言。人们用C开发各种程序,从简单应用到极其复杂的大型软件。各种计算机都有可用的C语言系统。C语言简介2022/12/12高级语言程序设计38C语言1973年由贝尔实验室的DennisRitchie标准化应用发展要求C成为更安全可靠、不依赖具体机器或操作系统的标准语言。ANSI在80年代开始标准化工作,1988年颁布ANSIC标准,后被ISO和各国接受,也采纳为中国国家标准(GB/T15272-94)。新标准C99已经通过。按ANSIC标准写程序C的原设计注重灵活性,允许许多不安全的编程方式,正确性靠编程者。用户群扩大后缺点凸现,复杂程序常有隐藏错误。标准化也是为修正C的缺陷。ANSI(AmericanNationalStandardsInstitute)2022/12/12高级语言程序设计39标准化按ANSIC标准写程序ANSI(AmericanN由系统定义,不能重作其它定义autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile32个关键字2022/12/12高级语言程序设计40由系统定义,不能重作其它定义32个关键字2022/12/11if()~else~for()~while()~do~while()continuebreakswitchgotoreturn9种控制语句2022/12/12高级语言程序设计419种控制语句2022/12/11高级语言程序设计41算术运算符:+-*/%++--关系运算符:<<===>>=!=逻辑运算符:!&&||位运算符:<<>>~|^&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.->下标运算符:[]其它:()-34种运算符2022/12/12高级语言程序设计4234种运算符2022/12/11高级语言程序设计42基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char枚举类型enum整型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体unionC数据类型2022/12/12高级语言程序设计43基本类型构造类型指针类型空类型void定义类型typedef主要内容程序和程序语言程序和程序语言算法及其描述工具程序设计方法问题与程序设计2022/12/12高级语言程序设计44主要内容程序和程序语言2022/12/11高级语言程序设计4起床刷牙洗脸吃饭早自习拿饭碗去食堂排队买饭吃饭洗碗离开食堂排队选饭选菜付款“程序”分解实例(早起活动):编写程序不应该从第一个细节开始逐步分解,直至分解到程序语言提供的功能。1.3程序设计方法2022/12/12高级语言程序设计45起床拿饭碗排队“程序”分解实例(早起活动):编写程序不应该从程序设计思想:自顶向下、逐步细化从问题出发,从高层开始设计程序;逐步分解程序功能,直至可以用程序语言实现。结构化三种基本结构(顺序、选择、循环)的组合模块化函数2022/12/12高级语言程序设计46程序设计思想:2022/12/11高级语言程序设计462022/12/12高级语言程序设计47结构化程序设计的三种基本结构(1)顺序结构AB入口出口特点:无条件顺序执行A,B语句或语句串

A,B可能是其他结构2022/12/11高级语言程序设计47结构化程序设计的三种2022/12/12高级语言程序设计48(2)选择结构

AB入口出口特点:要么执行A,要么执行B

条件P满足执行A

不满足执行BA,B可能是空语句条件PYN结构化程序设计的三种基本结构2022/12/11高级语言程序设计48(2)选择结构A2022/12/12高级语言程序设计49(3)循环结构特点:条件P

满足执行A再测试条件……

不满足结束先判断,后执行有可能A一次也没执行A入口条件PYN出口a.当型循环(while)结构化程序设计的三种基本结构2022/12/11高级语言程序设计49(3)循环结构特点:2022/12/12高级语言程序设计50(3)循环结构特点:条件P

不满足执行A再测试条件……

满足结束先执行,后判断

A至少执行一次A入口条件PYN出口b.直到型循环(do-while)结构化程序设计的三种基本结构一般一个算法既可以用while型也可以用do-while型实现2022/12/11高级语言程序设计50(3)循环结构特点:2022/12/12高级语言程序设计51N-S结构图表示2022/12/11高级语言程序设计51N-S结构图表示主要内容程序和程序语言程序和程序语言算法及其描述工具程序设计方法问题与程序设计2022/12/12高级语言程序设计52主要内容程序和程序语言2022/12/11高级语言程序设计51.4问题与程序设计过程程序设计是智力劳动,编一个程序就是解决一个问题。用计算机解决问题的过程可分为三步:分析问题,设计一种解决问题方案(算法设计);用某种程序语言严格描述这一解决方案(编程);在计算机上试用程序,看它能否解决问题(调试)。算法是核心、是灵魂,程序是外壳!2022/12/12高级语言程序设计531.4问题与程序设计过程程序设计是智力劳动,编一个程序就是2022/12/12高级语言程序设计542022/12/11高级语言程序设计54

分析

抽象

实现问题解决方法精确描述(算法)程序(源程序)算法:由若干条指令组成的有穷序列,满足一定条件。程序:是算法用程序设计语言的具体实现。程序设计语言程序计算机翻译机器语言执行程序设计语言设计方法程序

程序=算法+数据结构+程序设计方法总结2022/12/12高级语言程序设计55分析抽象实现总结20程序调试和排误调试(Testing)和排除错误(排错,Debugging)是编程的必经阶段。初学者的观点:我写的程序肯定没问题,照书上写的,是系统或者计算机有问题程序中的错误是人的错误。排除程序错误就是排除自己在程序设计中所犯错误。错误可分为两类:语法错误程序形式不符合语言规定。C语言系统在加工时能指出程序里的这类错误。逻辑错误、链接错误程序形式正确,能完成加工,产生可执行程序。但程序工作不正常:或在执行中出问题,或计算结果(或执行效果)不合要求。常见Bug:违反环境要求;死循环,异常,逻辑错误程序调试和排误调试(Testing)和排除错误(排错,Deb语言系统查出错误时,将产生一些“错误信息”行,指明发现位置和错误类型,供人参考。注意:应仔细阅读系统报错信息,检查所指位置附近的源程序,找到实际错误并予以排除。基本原则:集中精力排除系统发现的第一个错误。两个问题:1)实际错误可能出现在指定错误位置前面很远处。2)一个实际错误有时会导致许多出错信息行。应注意警告信息(Warning)。警告常表示隐藏较深的错误,必须认真弄清原因。2022/12/12高级语言程序设计57语言系统查出错误时,将产生一些“错误信息”行,指明发现位置和

掌握语法规则,体会程序设计语言结构;理解算法,掌握程序设计的基本方法和典型技术;从计算和程序的角度提高分析问题的能力;能剖析和理解经典算法;养成良好的程序设计习惯,编制规范程序;熟悉开发环境,学会调试与排错;

理解语言机制和内涵为学习其它语言奠定基础;提高驾御语言的能力;

高级语言程序设计是一门实践性较强的课程。学习要求写出程序和写好程序之间有很大距离,只有写好小程序,才能写出大些的程序2022/12/12高级语言程序设计58掌握语法规则,体会程序设计语言结构;学习要求写出程序和写好课后作业1.用N-S结构图描述从十个数中选择最大数的算法,找出其中的顺序结构、选择结构和循环结构。2.给出求从1-100之间能被6整除的所有整数的和的算法(用N-S结构图描述)。3.给出求100-999之间水仙花数的算法(用N-S结构图描述)。水仙花数是一个三位数,各位数的立方和等于这个数本身,如:153=13+53+332022/12/12高级语言程序设计59课后作业1.用N-S结构图描述从十个数中选择最大数的算法,实践是能力赖以生长的土壤!实践是能力赖以生长的土壤!高级语言程序设计主讲教师:丁丁计算机与信息技术学院dding@高级语言程序设计主讲教师:丁丁第一章

程序设计与C语言第一章

程序设计与C语言主要内容程序和程序语言程序和程序语言算法及其描述工具程序设计方法问题与程序设计2022/12/12高级语言程序设计63主要内容程序和程序语言2022/12/11高级语言程序设计41.1程序和程序语言例:到图书馆借参考书1)进入图书馆;2)查书目;3)填写索书单;4)如果书未借出那么:交图书馆工作人员取书;办理借书手续;到5;5)如果还需借其它书,回到2;否则到6;6)

离开图书馆。“程序”(program)通常指完成某些事务的一种既定方式和过程。2022/12/12高级语言程序设计641.1程序和程序语言例:到图书馆借参考书1)进入图书馆;一些直观特征按部就班地进行;开始与结束;完成某项具体任务;需要用某种记法形式描述(计算机程序需要用某种精确定义的形式描述);是在一些基本动作的基础上描述的;不同的描述粒度(细节程度);……2022/12/12高级语言程序设计65一些直观特征按部就班地进行;2022/12/11高级语言程序1程序程序:规定了计算机执行的动作和动作的顺序。一个程序应包括以下两方面的内容:对数据的描述:在程序中要指定数据的类型和数据的组织形式,即数据结构。对操作的描述:即操作步骤,也就是算法(解决问题的方法和步骤)。数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。程序=数据结构+算法著名计算机科学家NikiklausWirth作为程序设计人员,必须认真考虑和设计数据结构和操作步聚

2022/12/12高级语言程序设计661程序程序:规定了计算机执行的动作和动作的顺序。2022/2022/12/12高级语言程序设计67例:求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太繁琐2022/12/11高级语言程序设计8例:求1×2×3×4×2022/12/12高级语言程序设计68设变量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!的值。

简练2022/12/11高级语言程序设计9设变量t为被乘数,i为硬件层面上的程序是机器指令的序列。程序执行:将程序存入内存,通知CPU第一条指令的地址。命令它“开始”!一般情况下,CPU执行完一条指令后,自动取出下一条指令,并如此继续下去。转跳指令明确指定下一条指令的位置,人可以基于转跳指令描述复杂的执行流程。人命令计算机去执行一个程序,计算机就会一丝不苟地按这个程序的内容,一条一条指令执行,直至程序结束(指令执行到了最后,或者遇到明确的停止指令)。2022/12/12高级语言程序设计69程序的执行硬件层面上的程序是机器指令的序列。2022/12/11高级语2算法算法:解决问题的方法和步骤解决一个问题的过程就是实现一个算法的过程。算法分为两大类:数值运算:如解方程、求定积分非数值运算:如排序、检索、绘图2022/12/12高级语言程序设计702算法算法:解决问题的方法和步骤2022/12/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。2022/12/12高级语言程序设计71例:用公式y=x2-2x+3计算x=0,1,2,3,……2022/12/12高级语言程序设计72算法的5个特性有穷性:即算法通过有限步骤后能够结束确定性:无二义性,算法必须具有清晰的定义、不能存在任何的模糊有零个或多个输入有一个或多个输出可行性:即算法的每一步都是可执行的同一个问题可以有多种算法2022/12/11高级语言程序设计13算法的5个特性有穷性2022/12/12高级语言程序设计73算法的描述工具(1)流程图(传统流程图)(2)结构流程图(N-S结构图)(3)伪代码2022/12/11高级语言程序设计14算法的描述工具(1)2022/12/12高级语言程序设计74算法的描述工具:流程图用一些图框表示各种操作,形象直观,易于理解

ANSI规定一些常用的流程图符号

2022/12/11高级语言程序设计15算法的描述工具:流程一个流程图包括以下几部分:表示相应操作的框带箭头的流程线框内外必要的说明文字x<=nx=0,n=100计算y=x*x-2*x+3打印x,yx=x+1开始结束真假2022/12/12高级语言程序设计75一个流程图包括以下几部分:x<=nx=0,n=100计算2022/12/12高级语言程序设计76算法的描述工具:N-S图美国学者I.Nassi和B.Shneiderman提出的一种新的流程图全部算法写在一个矩形框内,由一些基本的框组成一个大的框,称N-S图x=0,n=100x<=n计算y=x*x-2*x+3打印x,yx=x+12022/12/11高级语言程序设计17算法的描述工具:N-2022/12/12高级语言程序设计77算法的描述工具:伪码概念:伪代码(pseudocode)是用来描述算法的介于自然语言和计算机语言之间的文字和符号。特点:自上而下每一行(或几行)表示一个基本操作;不用图形符号,书写方便、格式紧凑;便于向计算机语言算法(即程序)过渡。用处:适用于设计过程中需要反复修改时的流程描述。2022/12/11高级语言程序设计18算法的描述工具:伪码伪码

begininitializextozeroinitializento100whilex<=ncalculateyprintx,yaddonetoxend2022/12/12高级语言程序设计78伪码2022/12/11高级语言程序设计19例:求1+2+…+100的和i<=100sum=0,i=1sum=sum+ii=i+1开始结束真假printsum传统流程图2022/12/12高级语言程序设计79例:求1+2+…+100的和i<=100sum=0,i=1例:求1+2+…+100的和beginsum0,i1;whilei<=100sumsum+i;ii+1;printsumendsum=0,i=1i<=100sum=sum+ii=i+1printsumN-S图伪代码2022/12/12高级语言程序设计80例:求1+2+…+100的和beginsum=0,i=1i课堂练习1请为2+4+6+…+200设计算法并画流程图2022/12/12高级语言程序设计81课堂练习1请为2+4+6+…+200设计算法并画流程图202课堂练习2判断某一年是否为闰年能被400整除能被4整除,但不能被100整除2022/12/12高级语言程序设计82课堂练习2判断某一年是否为闰年2022/12/11高级语言程3程序设计语言算法是对所解决问题的精确描述,程序设计语言是计算机可处理的代码,是人与计算机交流的最基本最重要的媒介;利用程序设计语言将算法转化为源程序,通过计算机处理解决问题。算法程序设计语言计算机结果源程序2022/12/12高级语言程序设计833程序设计语言算法是对所解决问题的精确描述,程序设计语言是计算机与人沟通2022/12/12高级语言程序设计84计算机与人沟通2022/12/11高级语言程序设计25计算机与人沟通2022/12/12高级语言程序设计85计算机与人沟通2022/12/11高级语言程序设计26计算机与人沟通2022/12/12高级语言程序设计86计算机与人沟通2022/12/11高级语言程序设计27计算机与人沟通2022/12/12高级语言程序设计87计算机与人沟通2022/12/11高级语言程序设计28计算机与人沟通人和计算机通信使用的语言为计算机语言2022/12/12高级语言程序设计88计算机与人沟通人和计算机通信使用2022/12/11高级语言机器语言汇编语言高级语言面向过程面向对象面向机器的语言程序设计语言的产生发展CPU指令系统,由0、1序列构成的指令码组成如:10000000加

10010000减用助记符号描述的指令系统如ADDA,B接近于人类的自然语言和数学语言如:c=a+b面向过程的语言->算法语言Basic,Fortan,Pascal,C语言等Java,C++等2022/12/12高级语言程序设计89机器语言汇编语言高级语言面向过程面向对象面向机器的语言程序设机器语言和程序机器语言是机器指令形成的语言;形式为二进制编码,机器可直接执行00000001000000001000 00000001000100001010 00000101000000000001 00000001000100001100 00000100000000000001 00000010000000001110

数据装入寄存器0数据装入寄存器1寄存器0与1的数据乘数据装入寄存器1寄存器0与1的数据加保存寄存器0里的数据

难写难读,不易编程,与机器有关、程序开发效率极低。2022/12/12高级语言程序设计90机器语言和程序机器语言是机器指令形成的语言;00000001汇编语言和程序汇编语言:采用助记的符号形式,有利于人的阅读和使用。汇编指令与机器指令一一对应load0aload1bmult01load1cadd01save0d

将单元a的数据装入寄存器0将单元b的数据装入寄存器1寄存器0与1的数据乘将单元c的数据装入寄存器1寄存器0与1的数据加将寄存器0里的数据存入单元d仍然难理解,不易编程,与机器有关、程序开发效率低。2022/12/12高级语言程序设计91汇编语言和程序汇编语言:采用助记的符号形式,有利于人的阅读和计算机无法直接执行汇编语言程序,执行前需要把汇编语言程序翻译为机器指令程序最早时通过手工翻译为机器指令后来人们开发出称为“汇编系统”的程序,让计算机去完成程序翻译工作汇编语言的特点:每条指令的意义容易理解程序粒度太小,细节太多程序无结构,缺乏组织手段写大程序仍然很困难2022/12/12高级语言程序设计92计算机无法直接执行汇编语言程序,执行前需要把汇编语言程序翻译高级语言和程序高级语言的特点:具有类似文字的表现形式,接近自然语言具有丰富的数据结构,用类似数学表达式形式描述基本计算用变量等概念取代低级的存储概念,使人摆脱各种繁琐低级的工作,例如存储的安排提供高级操作流程控制手段和程序组织手段与具体的机器无关,可移值性好在C语言里写前面同样的程序:

d=a*b+c;2022/12/12高级语言程序设计93高级语言和程序高级语言的特点:在C语言里写前面同样的程序:2计算机无法直接执行高级语言写出的程序常规方式是做一个编译系统,完成高级语言程序到机器语言可执行程序的翻译加工编程->编译加工->执行使用高级语言编程:编程工作的效率大大提高人更容易思考和把握复杂程序的意义更多人愿意投身于这种工作,使编程发展成为一种职业和谋生方式术语“程序设计语言”已专指“高级语言”2022/12/12高级语言程序设计94计算机无法直接执行高级语言写出的程序使用高级语言编程:2021954年到1957年:高级语言Fortran诞生;至1960年代中,开发了Algol60,COBOL,BASIC等。还有函数式语言LISP等;1970年代开始:Pascal和C语言逐渐分别为教学科研和软件开发用的主要语言;1980年代:逻辑程序语言Prolog,面向对象语言Smalltalk和后来的C++;1995年左右的Java。高级语言的简单历史2022/12/12高级语言程序设计951954年到1957年:高级语言Fortran诞生;高级语言C语言比较小,入门容易,很快就可以开始编程有丰富的程序机制、数据机制、函数定义机制,能满足复杂程序的需要。许多常用功能通过库实现提供接近硬件的低级操作,广泛用于开发效率要求高的程序。被用于代替汇编语言开发底层软件生成目标代码质量高、可移植性好,被称为“中级语言”提供了一些支持大规模复杂软件开发的机制C语言的工作得到世界计算机界的广泛赞许。对计算机工业和应用发展起了重要推动作用许多新语言从C汲取营养。如C++,Java,C#等C语言设计者获得计算机领域最高奖——图灵奖C语言的特点C语言比较小,入门容易,很快就可以开始编程C语言的工作得到C语言1973年由贝尔实验室的DennisRitchie设计,目标是书写操作系统和其他系统程序。C语言最早用于写UNIX系统。70年代成为UNIX的标准开发语言,随UNIX流行而被广泛接受。80年代被搬到各种机器的许多操作系统上,逐渐成为一种开发系统程序和复杂软件的通用语言。后来成为使用最广泛的系统开发语言。人们用C开发各种程序,从简单应用到极其复杂的大型软件。各种计算机都有可用的C语言系统。C语言简介2022/12/12高级语言程序设计97C语言1973年由贝尔实验室的DennisRitchie标准化应用发展要求C成为更安全可靠、不依赖具体机器或操作系统的标准语言。ANSI在80年代开始标准化工作,1988年颁布ANSIC标准,后被ISO和各国接受,也采纳为中国国家标准(GB/T15272-94)。新标准C99已经通过。按ANSIC标准写程序C的原设计注重灵活性,允许许多不安全的编程方式,正确性靠编程者。用户群扩大后缺点凸现,复杂程序常有隐藏错误。标准化也是为修正C的缺陷。ANSI(AmericanNationalStandardsInstitute)2022/12/12高级语言程序设计98标准化按ANSIC标准写程序ANSI(AmericanN由系统定义,不能重作其它定义autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunsignedunionvoidvolatilewhile32个关键字2022/12/12高级语言程序设计99由系统定义,不能重作其它定义32个关键字2022/12/11if()~else~for()~while()~do~while()continuebreakswitchgotoreturn9种控制语句2022/12/12高级语言程序设计1009种控制语句2022/12/11高级语言程序设计41算术运算符:+-*/%++--关系运算符:<<===>>=!=逻辑运算符:!&&||位运算符:<<>>~|^&赋值运算符:=及其扩展条件运算符:?:逗号运算符:,指针运算符:*&求字节数:sizeof强制类型转换:(类型)分量运算符:.->下标运算符:[]其它:()-34种运算符2022/12/12高级语言程序设计10134种运算符2022/12/11高级语言程序设计42基本类型构造类型指针类型空类型void定义类型typedef数值类型字符类型char枚举类型enum整型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体unionC数据类型2022/12/12高级语言程序设计102基本类型构造类型指针类型空类型void定义类型typedef主要内容程序和程序语言程序和程序语言算法及其描述工具程序设计方法问题与程序设计2022/12/12高级语言程序设计103主要内容程序和程序语言2022/12/11高级语言程序设计4起床刷牙洗脸吃饭早自习拿饭碗去食堂排队买饭吃饭洗碗离开食堂排队选饭选菜付款“程序”分解实例(早起活动):编写程序不应该从第一个细节开始逐步分解,直至分解到程序语言提供的功能。1.3程序设计方法2022/12/12高级语言程序设计104起床拿饭碗排队“程序”分解实例(早起活动):编写程序不应该从程序设计思想:自顶向下、逐步细化从问题出发,从高层开始设计程序;逐步分解程序功能,直至可以用程序语言实现。结构化三种基本结构(顺序、选择、循环)的组合模块化函数2022/12/12高级语言程序设计105程序设计思想:2022/12/11高级语言程序设计462022/12/12高级语言程序设计106结构化程序设计的三种基本结构(1)顺序结构AB入口出口特点:无条件顺序执行A,B语句或语句串

A,B可能是其他结构2022/12/11高级语言程序设计47结构化程序设计的三种2022/12/12高级语言程序设计107(2)选择结构

AB入口出口特点:要么执行A,要么执行B

条件P满足执行A

不满足执行B

温馨提示

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

评论

0/150

提交评论