您好,欢迎访问三七文档
第1章C语言概述CompanyLogo本章内容C语言简介1简单的C语言程序设计2算法3小结4CompanyLogo学习目标了解C语言的发展及主要特点1掌握C程序的基本结构2掌握算法的概念、特点及描述方法3掌握使用VisualC++6.0开发C程序的方法4CompanyLogo1.1C语言简介Basic,Pascal,C等机器语言和汇编语言Java,VisualC++,VisualBasic,Delphi等面向机器语言面向过程(功能)语言面向对象语言1.1.1程序设计语言的发展CompanyLogoC语言发展过程1.1960年出现了算法语言(ALGOL60语言),但该语言主要面向问题,与硬件较远,故英国剑桥大学推出了一种高级编程语言:CPL(CombinedProgrammingLanguage),但规模比较大,难以开发系统软件。2.1967年,MatinRichards对CPL进行改进、简化,推出了BCPL(BasicCombinedProgrammingLanguage)3.1970年,美国贝尔实验室KenThomson以BCPL为基础,再次简化推出了B语言,并写了第一个UNIX系统。4.1972年美国贝尔实验室D.M.Ritchie在B语言基础上设计出了C语言,并用其将UNIX系统全部改写并实现。CompanyLogoC语言简介—C语言发展过程5.经进一步改进,至1977年出现了与具体机器无关的C编译文本,从而使C语言广泛应用,各种机器皆可使用。6.1978年,美国Brain.Kernighan与Dennis.Ritchie联合出版一书《TheCProgrammingLanguage》,成为ANSIC之基础。7.1983年,美国标准化协会(ANSI)制定了ANSIC。1987年,ANSI公布了新标准——87ANSIC。1990年,国际标准化组织接受了87ANSIC为ISOC的标准(ISO9899—1990)。C标准在90年代有了改进,即ISO9899:1999(1999年出版),这个版本就是通常提及的C99,它被ANSI于2000年三月采用。CompanyLogoC语言简介—C语言发展过程说明:不同版本的C编译系统所实现的语言功能和语法规则又略有差别,因此读者应了解所用的C语言编译系统的特点(可以参阅有关手册)。本书的叙述基本上以ANSIC为基础。CompanyLogo1.1.2C语言的主要特点程序结构简洁、紧凑、灵活。只需使用一些简单、规整的方法,就可以构造出复杂的数据类型或是功能很强的语句、程序。表达能力强,有丰富的数据类型和运算符。可直接处理字符、数字、地址,完成通常要由硬件才能实现的操作,允许用户自己定义数据类型。生成的目标代码质量高。既具有高级语言易编程、易维护、可读性强、面向用户等特点,又具有汇编语言面向硬件的功能,可以编写系统软件。生成的目标代码的效率仅比汇编语言低10~20%。结构化的程序设计。C语言具备编写结构化程序所需要的基本流程控制语句。程序设计的基本单元是函数,函数之间相互独立,从而实现了模块化的程序设计,提高了程序的可靠性。良好的可移植性。程序中,输入、输出功能通过调用函数实现,不依赖于硬件,程序基本上不作修改就可用于不同型号的计算机和各种操作系统。CompanyLogo1.2简单的C语言程序设计#includestdio.hintmain(void){intx,y,sum;/*定义三个整型变量x,y,sum*/scanf(%d%d,&x,&y);/*输入两个整数,并将其值赋给变量x,y*/sum=x+y;/*计算两数之和*/printf(x+y=%d\n,sum);/*输出结果*/return0;}说明:main-主函数名•使用标准库函数时应在程序开头一行写:#includestdio.h•每个C程序必须有一个主函数main•{}是函数开始和结束的标志,不可省•每个C语句以分号结束/*……*/表示注释。注释只是给人看的,对编译和运行不起作用。所以可以用汉字或英文字符表示,可以出现在一行中的最右侧,也可以单独成为一行。变量必须在使用之前进行“定义”。C语言本身没有输入输出语句,通常采用系统提供的库函数scanf和printf来完成输入。C新标准要求main()函数必须返回一个int值给程序的激活者CompanyLogo小结C程序是由函数构成的。这使得程序容易实现模块化。一个函数由两部分组成:函数的首部:例1.1中的main函数首部intmain(void)•函数体:花括号内的部分。若一个函数有多个花括号。则最外层的一对花括号为函数体的范围。函数体包括两部分:•声明部分:intx,y,sum;可缺省•执行部分:由若干个语句组成。可缺省C程序总是从main函数开始执行的,与main函数的位置无关。C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上,C程序没有行号。每个语句和数据声明的最后必须有一个分号。C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。C对输入输出实行“函数化”。CompanyLogo1.3算法1.3.1算法的概念为解决一个问题而采取的方法和步骤,就称为“算法”。一个程序通常包括数据结构和算法,数据结构是对数据的描述(如数据的类型和其组织形式),算法是对指定数据的操作方法和步骤,数据结构是程序的核心,而算法是程序的灵魂。对同一个问题,可有不同的解题方法和步骤:例:求方法1:1+2,+3,+4,一直加到100加99次方法2:100+(1+99)+(2+98)+…+(49+51)+50=100+49×100+50加51次CompanyLogo1.3.2算法的特性1.有穷性:一个算法的操作步骤必须是有限的。2.有效性:算法的每一个步骤都应是可执行的。3.确定性:算法中的每一个步骤都必须是确定的,不能有歧义。4.输入:每个算法可能有零个或多个输入。5.输出:每个算法都有一个或多个输出,没有输出的算法是无意义的。CompanyLogo1.3.3算法的描述可以用不同的方法表示算法,常用的有:–自然语言–流程图–伪代码CompanyLogo1.3.3算法的描述1.自然语言自然语言是指人们日常使用的语言,可以是汉语、英语、或其他语言。用自然语言描述的算法通俗易懂,简单明了,如例1.2,但如果算法中含有多种分支或循环操作时,自然语言就很难表述清楚,且冗长、容易产生歧义,因此,除了那些很简单的算法外,程序的算法一般不用自然语言描述。CompanyLogo1.3.3算法的描述1.自然语言【例1.3】判断从1900-2000年中的每一年是否为闰年,并将结果输出。闰年的条件是:(1)能被4整除,但不能被100整除的年份是闰年,如1996,2004年是闰年;(2)能被400整除的年份是闰年。如1600,2000年是闰年。不符合这两个条件的年份不是闰年!CompanyLogo1.3.3算法的描述设y为被检测的年份,算法可表示如下:S1:将1900赋值给y;S2:若y不能被4整除,则输出y“不是闰年”,然后转到S6;S3:若y能被4整除,不能被100整除,则输出y“是闰年”,然后转到S6;S4:若y能被400整除,则输出y“是闰年”,然后转到S6;S5:输出y“不是闰年”;S6:将y的值加上1后重新赋值给y;S7:当y的值小于或等于2000时,转到S2继续执行,否则算法结束。TEXT1.自然语言CompanyLogo1.3.3算法的描述2.流程图流程图是用带箭头的线条将一些图框连接而成,用流程图来描述算法直观形象,易于理解。流程图的符号采用美国国家标准化协会(ANSI)规定的一些常用的流程图符号起止框判断框处理框输入/输出框注释框流向线连接点CompanyLogo对于结构化的程序,所有符号构成的流程图只包含3种基本结构:顺序结构、分支结构和循环结构,一个完整的算法可由这3种基本结构有机构成。(1)顺序结构(2)选择/分支结构CompanyLogo(3)循环结构当(while)型循环结构直到(do)型循环结构CompanyLogo【例1.4】判断从1900-2000年中的每一年是否为闰年,并将结果输出。用流程图来表示。CompanyLogo3.伪代码伪代码是一种接近程序语言的算法描述方法,用介于自然语言和计算机语言之间的文字和符号描述算法。伪代码既可用英文,也可以用中文,还可中英文混用,没有固定的语法规则,只要便于书写和阅读,且把意思表述清楚即可。CompanyLogo【例1.5】判断从1900-2000年中的每一年是否为闰年,并将结果输出。用伪代码表示。begin/*算法开始*/1900=ywhile(y≤2000){ify能被4整除ify不能被100整除printy“是闰年”elseify能被400整除printy“是闰年”elseprinty“不是闰年”endifendifelseprinty“不是闰年”endify+1=y}end/*算法结束*/CompanyLogo写出了C程序,仍然只是描述了算法,并未实现算法。只有运行程序才是实现算法。应该说,用计算机语言表示的算法是计算机能够执行的算法。C语言程序上机调试流程
本文标题:第1章 C语言概述
链接地址:https://www.777doc.com/doc-3380277 .html