欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    C语言第一章语言概述E.ppt

    • 资源ID:6504269       资源大小:368.50KB        全文页数:56页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言第一章语言概述E.ppt

    第一章 C语言程序设计概述,程序设计与C语言概述简单的C语言程序举例算法及其描述结构化程序设计方法,一、程序设计语言的发展,面向机器的语言(低级语言)机器语言(加运算:01D8)-16进制汇编语言(加运算:ADD AX,BX)-文本面向过程的语言(高级语言)FORTRANBASICC 面向对象的语言(高级语言)C+,VC,VB,JAVAVFP,机器语言,由01序列构成的指令码10000000 加10010000 减机器能识别,执行速度快.不直观、难记、难认、难理解、不易查错。,汇编语言,由助记符代替 0 1 代码。ADDAX,BX SUBAX,BX面向机器,随机器而异。机器不能直接识别、理解和执行。汇编语言源程序的执行过程,汇编语言与机器语言,都依CPU的不同而异,是面向机器的语言。用面向机器的语言编程,可以编出效率极高的程序,但是编程时,程序员不仅要考虑解题思路,还要熟悉机器的内部结构,并且要“手工”地进行存储器分配。编程劳动强度很大,给计算机的普及推广造成很大的障碍。,面向过程的语言(高级语言),不再是面向具体的机器,而是面向解题过程。不需要熟悉计算机的内部的具体构造。用人们易于理解的形式表示解题过程。是计算机发展道路上的一个里程碑。执行过程:,面向对象的语言(高级语言),把现实世界看成是由许多对象(object)所组成,对象之间通过互相发送和接收消息进行联系;每个对象都是一个数据和方法的封装体抽象数据类型。所有的对象都属于特定的“类”(class),或者说每一个对象都是类的一个实例。封装和继承是面向对象的程序设计语言的基本特征。面向对象的程序设计语言大都提供可视化的开发工具,所以也有将其称为可视化编程语言的。面向对象的程序比面向过程的程序更清晰、易懂,更适宜编写更大规模的程序,常用高级语言及其发展变迁,C语言发展简况,1960 ALGOL 面向问题(远离硬件)1963 CPL 部分硬件驱动1967 BCPL 直接硬件驱动 但太简单1970 B 197273 C 直接硬件驱动 功能强大 C+面向对象 Visual-C+提供了可视化编程工具,程序设计语言的支撑环境,操作系统是各种软件的核心与基础,所有其他程序都在它的控制下运行操作系统的主要功能包括:CPU管理、存储器管理、文件管理、设备管理、作业管理等在不同的操作系统下编译和运行C语言程序的方式和命令不同。,经过编译和连接后生成的可执行程序,其他程序,程序的编辑、编译、连接与执行,编辑:将源程序逐个字符输入到计算机内存;修改源程序;将修改好的源程序保存在磁盘文件中。编辑的对象是源程序,它是以ASCII代码的形式输人和存储的,不能被计算机执行。使用较多的编辑软件有:UNIX下的编辑程序ed、vi等,MS-DOS下的Edit、Wordstar,WPS,Windows下的 Notepad、Write、Word等字处理软件。目前的集成开发环境大部分都有自己的编辑器,掌握他的使用,可以提高编写程序的效率。,程序的编辑、编译、连接与执行,编译:将已编辑好的源程序(已存储在磁盘文件中)翻译成二进制的目标代码。在编译时,还要对源程序进行语法检查,如发现有错,则在屏幕上显示出错信息,此时应重新进入编辑状态,对源程序进行修改后再重新编译,直到通过编译为止。编译后得到的二进制代码在UNIX下是后缀为“.o”的文件,在MSDOS下是后缀为“.obj”文件。经编译后得到的二进制代码还不能直接执行,因为每一个模块往往是单独编译的,必须把经过编译的各个模块的目标代码与系统提供的标准模块(如C语言中的标准函数库)连接后才能运行。,程序的编辑、编译、连接与执行,连接:将各模块的二进制目标代码与系统标准模块经连接处理后,得到具有绝对地址的可执行文件,它是计算机能直接执行的文件。在Unix操作系统下,他以“.out”为后缀;在MS-DOS和Windows下,以“.exe为后缀(例如,f.exe)执行:一个经过编译和连接的可执行件,只有在操作系统的支持和管理下才能执行它。,程序的编辑、编译、连接与执行,编辑,目标文件(.obj),编译,源文件(.c),连接,程序文件(.exe),运行,有语法错误,有连接错误,库文件(.lib),有逻辑错误,完成,有错误时,C语言的特点,语言简洁、紧凑、使用方便、灵活。结构上:核心小、外围(函数)大运算符、数据结构丰富具有结构化的控制语句语法限制不太严格,程序设计自由度大。允许直接访问物理地址,能进行位(bit)操作生成目标代码质量高,程序执行效率高。可移植性好,二、简单的C语言程序举例,用库函数组装C程序C语言本身语句很少,许多功能都是通过函数来完成的(如输入输出功能并不是C语言本身提供的)。这样做的目的是使C语言的核心部分规模较小,而外围(函数)可以做得很丰富,并且可以根据需要增加新的函数。为了避免重复开发,提高编程效率和可靠性,C语言提供了丰富的库函数,在编写C程序时应尽量利用C的库函数所提供的功能,来实现自己的目的。,#include stdio.hvoid main()printf(This is a C program.n);运行结果为:This is a C program.,例1.1 显示“This is a C program”:,C程序由函数组成,每一个函数完成相对独立的功能。本程序是由一个称为main的函数构成的。main是函数名,函数名后面有一对圆括号,括号内写函数参数,本程序的main函数没有参数故不写,但圆括号不能省略。一个完整的程序必须有一个main函数,它称为主函数,程序总是从main函数开始执行。,main()后面有一对花括号,其内的部分称为函数体。一般情况下函数体由“说明部分”和“执行部分”组成。说明部分定义数据类型;执行部分给出操作指令,执行部分由若干语句组成。本程序中的函数体只由一个语句组成。,C语言规定每个语句以分号“;”结束,分号是语句不可缺少的组成部分。本程序中main函数的函数体内只有一个语句,也必须有一个分号。,printf是C的库函数中的一个函数,它的作用是在显示屏上输出指定的内容.,“n”是C语言中规定的一个特殊符号,作为控制代码,其作用是“回车换行”。本程序中“n”的作用是:在输出“This is a C Programing”以后执行一个回车换行操作,使后续的输出从下一行的左端开始。以后还会讲述在反斜杠“”后面跟一个指定的字符,就会组合成一个具有专门含义的“转义字符”。,调用C语言的库函数,必须用#include预编译指令调入包含该函数定义的“头文件”,“.h”是头文件的后缀。头文件总是被放在函数的前面。,例1.2 求Sin(X)的值,#include“stdio.h”#include“math.h”void main()float x;/*定义一个实型变量*/x=sin(0.19199);printf(“sin(0.19199)=%fn”,x);运行结果为:sin(0.19199)=0.190813,用输出函数printf输出数值数据的形式:括号中有双引号内和双引号外两部分。双引号内是“格式字符串”,用它指定输出时的打印格式。“f”是输出一个实数的格式字符,执行时用双引号外的变量的值取代“f”,并以实型格式输出。f格式提供小数点后6位数字,小数点前的数字位数不指定,根据实际值的位数输出。,“x=sin(0.19199)”可执行一次函数调用,求出0.19199弧度的正弦值,并赋给实型变量x。,“math.h”是调用数学函数时需要包含的头文件.,“float x;”是声明x是一个实型变量,/*与*/之间为注释信息,对程序运行结果不发生影响,也不被编译,只是为了帮助人们(包括自己)更好地理解程序中有关部分内容而写的。,二、简单的C语言程序举例,设计自己的C函数用库函数组装程序是程序设计的一条捷径和重要方法。但是,任何函数库都不可能是包罗万象的,当我们在函数库中找不到所需功能的函数时,便要动手设计自己所需的函数。函数设计的基本方法可以是从主函数开始,按调用关系,自上而下地进行;也可以先设计函数,然后在主函数调用,自下而上进行。,例 1.3 求三个数的平均值,/函数定义float average(float x,float y,float z)float aver;aver=(x+y+z)/3;函数体 return(aver);,函数头:说明函数名、返回值类型和参数,定义参数的个数和类型,将aver的值作为函数的返回值,并返回调用程序,应当注意,函数定义中所使用的参数(这里的x,y,z)称为形式参数(简称形参),只用于描述被加工的数据是一种什么样的角色,以及如何对它们进行加工,并不说明也不可能说明哪些具体的数据被加工。具体的数据是由调用语句在调用时传递的。,例 1.3 求三个数的平均值,/在主函数中声明和调用average 函数#include stdio.hvoid main()float average(float x,float y,float z);float a,b,c,ave;a=3.5;b=4.6;c=7.9;ave=average(a,b,c);printf(average=%f n,ave);运行结果为:average=5.333333,用变量a,b,c的值作为参数,调用average函数,并将函数返回值赋给变量ave,这是对要调用函数的声明,声明a,b,c,ave为实型变量,给变量a,b,c赋值(一行可以有多个语句),例1.4 求任意三个数的平均值,/在主函数中声明和调用#include stdio.hvoid main()float average();float a,b,c,ave;scanf(%f,%f,%f,调用“格式输入函数”(库函数)scanf,从键盘输入所需的数据,并依次赋给有关变量.,声明average为返回实型数据类型的函数。如果函数调用在前,函数定义在后,必须在调用前声明,反之则可以不声明。,“&a,&b,&c”用于分别求变量a,b,c的地址,“&”是“地址运算符”或“取地址符”,&a表示取变量a的地址.,“%f,%f,%f”表示输入三个数a,b,c时为实数,其相临两个输入数据间以逗号相隔。,例1.5 求任意两个数中的大数,#include stdio.hvoid main()float a,b;scanf(%f,%f,这是if语句,它的作用是判断其后的表达式(ab)是否成立,如果成立则执行紧随其后的语句,否则执行else后的语句。,注意 if语句的表达式后和else语句后没有分号。,例1.6 求1+2+3+10的值,#include stdio.hvoid main()int sum,i;sum=0;i=1;while(i=10)sum=sum+i;i=i+1;printf(%dn,sum);,while语句是循环语句,它后面的一对花括号内是循环体,当它后面括号内的表达式成立时才执行循环体。,注意 while语句的表达式后不能有分号。否则会成为死循环。,C语言函数定义的一般形式,函数类型 函数名(形式参数及其类型,)数据定义部分 函数执行部分,函数头,函数体,float average(float x,float y,float z)float aver;aver=(x+y+z)/3;return(aver);,把函数的形参类型定义写在函数名后面的括号内float average(x,y,z)float x,y,z;改写为一行:float average(float x,float y,float z)将函数声明中的空括号改写成包含形参名和类型float average();改写为:float average(float x,float y,float z);,现代风格的C语言函数定义与传统风格的差异,“现代风格”的函数定义和声明,数据关系和数据类型一目了然,不易出错。此外它也是C+实现函数重载的基础。(参见课本P332),C语言程序的特点,C程序是由函数构成的:函数是C程序的基本单位,一个C程序总是从main函数开始执行的。C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。每个语句和数据定义的最后必须有一个分号,分号是C语句的必要组成部分。C语言本省没有输入输出语句,输入和输出操作是由库函数scanf 和printf等来实现。用/*/对C程序中的任何部分做注释。,三、算法的概念和描述,随着计算机应用的日益广泛和深入,人们在研究和开发新的软、硬件技术的同时,也对程序本身和程序设计方法进行了深入的探讨。一个程序应包括一下两个方面对数据的描述:指定数据的类型和组织形式,即数据结构(data structure)对操作的描述:即操作的步骤,也就是算法(algorithm)数据是操作的对象,操作的目的是对数据进行加工处理,以得到期望的结果。如菜谱。,1、算法的概念,1976年瑞士计算机科学家Niklaus Wirth在他的惊世之作中提出了一个著名的公式:数据结构+算法=程序他认为:“其实,程序就是在数据的某些特定表示方式和结构的基础上对抽象算法的具体表述”。实际上除了上述两个要素外,程序设计还应该用结构化的程序设计方法,并采用某一种计算机语言来表示,2、简单算法举例,求1*2*3*4*5。可以用最原始的方法进行:步骤1:将1乘以2,得到结果2步骤2:将步骤1得到的乘积2再乘以3,得到结果6步骤3:将6再乘以4,得24步骤4:将24再乘以5,得120。这就是最后的结果.这样的算法虽然是正确的,但太繁琐。如果要求121000,则要写999个步骤,显然是不可取的。而且每次都直接使用上一步骤的数值结果(如2,6,24等),也不方便。,2、简单算法举例,2、简单算法举例,3、算法的性质,简单地说,算法就是进行操作的方法和操作步骤。通常认为算法有如下性质:解题算法是一有穷动作序列;此动作序列只有一个初始动作;序列中每一动作仅有一个后继动作;有零或多个输入,至少一个输出;确定性和有效性(5/0)序列终止表示问题得到解答或问题没有解答。,4、算法的组成要素,操作:每个操作的确定不仅取决于问题的需求,还取决于它们取自哪个操作集,它与使用的工具系统有关。在高级语言中所描述的操作主要包括:算术运算、逻辑运算、关系运算、函数运算、位运算、IO操作等。计算机算法是由这些操作所组成的。控制结构:每一个算法都要由一系列的操作组成。同一操作序列,按不同的顺序执行,就会得出不同的结果。控制结构即如何控制组成算法的各操作的执行顺序。,结构化程序设计方法要求:一个程序只能由三种基本控制结构(或由它们派生出来的结构)组成。,5、三种基本结构,顺序结构:语句按书写的顺序执行。这是一种理想的结构,但是光有这样的结构不可能处理复杂的问题。选择结构:最基本的选择结构是二分支选择,当程序执行该语句时,要进行一下判断,从两种路径中选择一条。由二分支选择,可以派生出多分支选择结构。选择结构给程序注入最简单的智能。循环结构或称重复结构:将一条或多条语句重复地执行若干遍。当我们把一个复杂问题用循环结构实现时,能充分地发挥计算机的高速度的优势。,6、算法的描述,流程图:用一些图框表示各种类型的操作,用线表示这些操作的执行顺序,是一种流传很广的方法N-S图:没有流线,每一种结构都是一个矩形框,整个算法可以像搭积木一样堆成。PAD图:无流线,并且有规则地安排了二维关系:从上到下表示执行顺序,从左到右表示层次关系伪代码:非图形,用介于自然语言与计算机语言之间的文字符号描述算法,无固定、严格的语法规则。通常借助某高级语言的控制结构,中间操作用自然语言、程序设计语言或二者的混合体。用计算机语言描述,流程图与算法的结构化,特点:用一些图框表示各种类型的操作,用线表示这些操作的执行顺序。图3.1优点:用流程图表示算法灵活、自由、形象、直观,可以表示任何算法。缺点:它允许用流线使流程任意转移。但这却是程序设计中的一个隐患,程序中如果允许流程毫无限制地任意转移,就会使程序像一团乱麻一样难以阅读和维护。英语把这种程序叫做BS程序(a Bowl of Spaghetti:一碗意大利面条),结构化程序设计主张限制这种无规律的任意转向,而用三种基本结构作为构成程序的基本单位。这样就限制了流线的使用。也就是说,结构化程序可以不必采用流程图来描述算法,而采用下面介绍的其它方法。,国标GB 1526-89流程图标准化符号,其中可注明数据名称、来源、用途或其它的文字说明。,执行一个或一组特定的操作,从而使信息的值、信息形式或所在位置发生变化的处理功能。矩形内可注明处理名称或其简要功能,表示已命名的处理。该处理为在另外地方已得到详细说明的一个操作或一组操作。例如库函数或其它已定义的函数等。矩形内可注明特定处理名称或其简要功能。,菱形内可注明判断的条件。它只有一个人口,但可以有若干个可供选择的出口,在对定义的判断条件求值后,有一个且仅有一个出口被选择。求值结果可在表示出口路径的流线附近写出。,国标GB 1526-89流程图标准化符号,表示循环的上界和下界,中间是要循环执行的处理内容,称为循环体。,转向外部环境或从外部环境转入的端点符。例如,程序流程的起、始点。,表示执行的流程。当流程自上向下或由左向右时,流程线可不带箭头,其它情况应加箭头表示流程。,用流程图表示的三种基本结构,用流程图描述的算法(求n!),用N-S图描述算法,针对流程图的弊病,1973年美国学者I.Nassi和B.Shneiderman提出了一种无流线的流程图,称为N-S图。它的三种基本结构如图:,(a)顺序,(b)分支,(c)循环,用N-S图描述算法,特点:每一种结构都是一个矩形框,整个算法可以像搭积木一样堆成。优点:保留了流程图形象直观地用图形表示算法的优点,但去掉了容易导致程序非结构化的流线对初学者来说,使用N-S图可以强迫自己养成用三种基本结构构造算法的良好风格。缺点:N-S图的修改不大方便。,用PAD图描述算法,PAD(Problem Analysis Diagram-问题分析图)也是一种算法描述图形工具。图3.8为用PAD描述算法的三种基本结构。,PAD也没有流线,并且有规则地安排了二维关系:从上向下表示执行顺序,从左到右表示层次关系。图3.9为用PAD描述的阶乘算法。,用伪代码描述算法,流程图、N-S图、PAD是描述算法的三种图形工具。使用这些图形工具描述算法直观、易懂、逻辑关系清晰,但画起来比较费事,修改起来困难。在设计一个算法时,往往要经过反复修改,因此使用这些图形工具就有些美中不足。伪代码(pseudo code)是用介于自然语言与计算机语言之间的文字符号进行算法描述的工具。它无固定的、严格的语法规则,通常是借助某种高级语言的控制结构,中间的操作用自然语言、程序设计语言,或两者的混合体。,求三个数中的最大数的伪代码,第一种:怎么做s1:输入三数a,b,c;s2:从a,b,c中找出大数赋给max;s3:输出max。第二种:考虑了“做什么”的实现途径s1:调用scanf()函数;s2:设计一个函数max3(a,b,c);s3:调用printf()函数。,用C语句描述算法,程序就是对计算机要执行的一组操作序列的描述。高级语言源程序的基本组成单位是语句。语句按功能可以分为两类:操作运算语句:用于描述计算机要执行的操作运算(如赋值语句);流程控制语句:是控制上述操作运算的执行顺序(如循环控制语句)。,选择型结构,if.else是选择型结构的基本形式。它构成如图所示的“二选一”控制结构。,多选一结构,选择型结构,switch(整数表达式)case(常量1):case(常量n):default:,Sn,Sn+1,S1,循环控制结构,循环控制结构一般由三部分组成:进入条件、退出条件、循环体循环控制结构可以分为三种形式:while结构:退出条件是进入条件的“反条件”。即满足条件时进入,重复执行循环体,直到进入的条件不再满足时退出。do.while结构:无条件进入,执行一次循环体后再判断是否满足再进入循环的条件。for结构:和while结构类似,也是“先判断后执行”,但结构更紧凑。允许把初始化、修正、判断写在一起,使用起来更方便灵活,功能更强。,四、结构化程序设计方法,结构化程序设计方法强调程序设计的模块化和规范化,其主要思想包括:结构化:只用三种基本结构,不用转向(goto)语句。每个基本结构只有一个入口和一个出口,结构中没有死循环,每个部分都可能被执行到模块化:将一个复杂的程序分为若干个相对独立的模块,尽量减少模块之间的数据联系或依赖。C语言对模块化的支持包括:函数(每个函数是一个模块)和编译预处理(#include)自顶向下逐步细化:先将复杂问题分为若干大的模块,可根据各模块的复杂程度再分为若干较小的子模块,依次逐步向下,直到模块足够简单,逐步细化的程序设计方法,按自顶向下的方法,从问题的全局出发,给出高度概括、抽象的算法。这时常常用自然语言来描述,说明“做什么”,或者说把问题描述为几个子问题或子功能。接下来在子问题一级描述算法,它是对全局算法的细化。这一阶段的工作视问题的大小,可以像第一步一样继续分解,可能包括好几个步骤。在这一阶段设计的算法中,已经越来越多地含有具体的程序设计语言的成分。随着算法不断细化,逐步进入对“如何做”的考虑,算法中程序设计语言的成分越来越多。当最后把算法全部细化为程序设计语言描述时,“如何做”的问题完全解决了,程序设计也就随之完成。,这种方法称为逐步细化的程序设计方法,是一种处理复杂问题的科学方法。,例 1.7 三数中取大数,第一步:s1:输入三数a,b,c;s2:从a,b,c中找出大数赋给max;s3:输出max。第二步:在第一步的基础上考虑“做什么”的实现途径s1:调用scanf()函数;s2:设计一个函数max3(a,b,c);s3:调用printf()函数。,这一阶段用汉语描述算法,描述了按顺序要完成的三个“做什么”。s1,s2,s3代表第1步、第2步、第3步,这一阶段用混合语言写算法,例 1.7 三数中取大数,第三步:写出主函数void main()float a,b,c,max;float max3(float x,float y,float z);printf(”Input 3 numbers a b c:”);scanf(%f%f%f,&a,&b,&c);max=max3(a,b,c);printf(The max is:%fn,max);,例 1.7 三数中取大数,第四步:设计max3()的算法。仍按逐步细化的方法,先给出概要算法。设三个参数为float x,float y,float z。s2.1:从x与y中取大数送m中;s2.2:从m与z中取大数送m中;s2.3:返回m给主调函数。,例 1.7 三数中取大数,进一步细化得;s2.1:if(xy)m=x;else m=y;s2.2:if(mz)m=m;else m=z;s2.3:return(m);最后用C语言写出函数max3()float max3(float x,float y,float z)float m;if(xy)m=x;else m=y;if(mz)m=m;else m=z;return(m);,作业,熟悉树形目录结构及DOS操作系统文件命名的8.3规则,熟悉当前目录、相对路径绝对路径等概念。熟悉常用的DOS操作系统命令:列目录:dir 改变当前驱动器:c:d:改变工作目录:cd 目录名新建目录:md 目录名复制文件:copy 源文件 目标文件设置路径:path 路径名运行程序:程序名完成课本P11:1.21.4题,

    注意事项

    本文(C语言第一章语言概述E.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开