第五讲C语言编程基础(1)2主要内容编程环境C语言程序基本框架标识符和关键字数据类型、变量、常量运算符和表达式计算机程序计算机的工作是由程序来控制的。程序描述了计算机处理数据、解决问题的过程,这是程序的实质。程序设计的将人们制定的对实际问题的解决方案用程序设计语言表达出来,并由计算机执行得出结果。程序设计语言(也被称为“编程语言”,ProgrammingLanguage)是人们描述(编制)程序所使用的规范和方法(语言)。机器语言、汇编语言、高级语言机器语言与汇编语言由计算机硬件系统可以识别的二进制指令组成的语言称为机器语言。计算机发展的初期,软件工程师们只能用机器语言来编写程序。这一阶段,在人类的自然语言和计算机编程语言之间存在着巨大的鸿沟。汇编语言将机器指令映射为一些可以被人读懂的助记符,如ADD、SUB等。此时编程语言与人类自然语言间的鸿沟略有缩小,但仍与人类的思维相差甚远。因为它的抽象层次太低,程序员需要考虑大量的机器细节。高级语言高级语言屏蔽了机器的细节,采用人容易理解的形式对解题过程进行描述。用高级语言来书写程序使得程序设计者不必考虑很多的计算机硬件细节,而是以熟悉的语句和数学公式来表达程序设计的结果。易于学习、易于掌握。6高级语言及其程序的执行用高级语言书写的程序不可能直接在计算机上执行,需要将它翻译成机器语言指令程序。翻译的方式有两种:编译(Compilation)方式解释(Interpretation)方式75高级语言及其程序的执行编译方式是设法把高级语言程序(也称为“源程序”)翻译转换成为可以由计算机直接执行的机器语言指令程序,经连接装配后转变为“可执行程序”(ExecutableProgram)。人们实现了高级语言“编译器”(Compiler)完成这种翻译工作。编译器把高级语言程序看成是符合一定语法结构的符号串,对它进行加工变换。8编译器对源程序的加工一般分为两个阶段:1、编译将源程序翻译成二进制机器语言。编译后得到的结果为目标文件。2、连接目标模块与其他一些基本模块(通用目标程序模块,由编译软件或其他人提供)连接在一起,最终形成“可执行程序”(executableprogram),后缀“.exe”。这样的程序就可以在计算机上实际运行了。高级语言的编译过程高级语言编译过程源程序(文本文件)*.CPP目标文件(二进制文件)*.OBJ可执行文件(二进制文件)*.EXE库文件(各种函数)编译连接compilelink10机器语言指令高级语言程序的解释过程解释方式由一种称为“解释器”(Interpreter)软件实现。解释器在工作方式上与编译器不同,它不事先对源程序进行翻译,而是在执行时即时对源程序的语句进行分析和解释,实现源程序所描述的功能。11应用较广泛的高级语言FORTRAN、PASCAL、C/C++COBOL、BASIC、ADA、JAVA12C语言简介C是由美国贝尔实验室的DennisRetchie在1972年设计开发的,开发目的是想成为一种编制“系统程序”的工具语言。Retchie等人首先用自己发明的C语言编写了UNIX操作系统。以后C语言逐步发展成为开发系统软件的主要语言。许多常见的软件系统,例如,在中国使用很广泛的计算机辅助设计软件AUTOCAD,数学软件系统Mathematica等,以及许多语言编译系统本身,其软件系统的全部或者部分程序就是用C语言开发的。C语言已成为最重要的软件系统开发语言,由此可见C语言在计算机领域地位之重要。C++语言C++是在C语言基础上发展出的一种“面向对象”语言。它是由BjarneStroustrup在美国贝尔实验室开发的(1983)。C++是C语言的一个扩充,它一方面修正了C的一些弱点和不足,使用起来更方便可靠;另一方面,也是更重要的,这种语言以支持“面向对象”(Object-Oreinted,简称为OO)的程序设计方法为基本目标,提供了一套支持面向对象程序设计的机制,如“类”(class)、“对象”(object)等等。面向对象的方法被认为是开发复杂软件系统的一种有效途径,OO程序设计语言也已经被广泛接受。C++是目前使用最广泛的一种面向对象的程序设计语言。13VC++6.0编程环境VisualC++6.0是微软公司1998年推出的开发工具。它不仅可以作为C/C++的编译器,同时还是一个基于Windows操作系统的可视化集成开发环境。由于功能强大,开发界面友好,一直都是专业程序员开发软件的首选工具之一。启动VC++编译系统VC++编译系统界面单击“File”菜单中“New”命令选择“Files”选项卡选择C++源文件命令输入文件名输入文件存放位置单击选择驱动器选择驱动器或目录C++源文件编辑界面输入C++源代码可以将此源代码另起文件名存盘选择编译命令,将源文件.cpp生成.obj文件如果编译出错,会出现提示信息,指出错误的位置及种类错误所在行错误的原因双击错误所在行光标移到该行生成可执行文件通过后单击该命令运行程序运行结果显示在DOS屏上二、C语言基础程序结构基本元素:标识符和关键字变量、常量和数据类型运算符和表达式语句及控制流C语言标准库函数语言规范开发库26#includestdio.hintmain(){inta,b,sum;scanf(“%d%d”,&a,&b);sum=a+b;printf(“%d”,sum);}求两个整数之和预处理命令:文件包含主函数/*求圆的面积*/#definePI3.14159#includestdio.h#includemath.hfloatgetArea(floatr);intmain(intargc,char*argv[]){floats1,s2;floatr1,r2;printf(“请输入第一个圆的半径:”);scanf(“%f”,&r1);s1=3.14159f*r1*r1;printf(“\n第一个半径为%f的圆的面积为:%f\n”,r1,s1);r2=104.6f;s2=getArea(r2);printf(“\n第二个半径为%f的圆的面积为:%f\n”,r2,s2);}floatgetArea(floatr){floats;s=(float)(PI*pow(r,2));returns;}1、C程序基本框架预处理命令及自定义函数声明intmain(){说明部分执行部分}自定义函数函数/主函数main(){……}C语言是一种函数式语言,它的一个函数实际上就是一个功能模块——C程序的基本组成是函数。一个C程序是由一个固定名称为main的主函数和若干个其他函数(可没有)组成。一个C程序必须有一个、也只能有一个主函数。主函数在程序中的位置可以任意,但程序执行时总是从主函数开始,在主函数内结束。intmain(){……}C程序基本元素——函数/主函数函数调用C语言程序是通过函数的调用来完成复杂功能。主函数可以调用其他各种函数(包括标准库函数和用户自己编写的函数),但其他函数不要调用主函数。其他函数相互之间遵循一定的规则是可以相互调用的。C程序基本元素——函数/主函数函数的调用主函数main()标准库函数自定义函数自定义函数自定义函数其他函数标准库函数:随C语言环境一起提供的各种标准的通用功能函数,只能调用(先文件包含:#include)。例:自编(定义)函数:必须先定义(声明),后调用。例:C程序基本元素——函数函数的一般形式返回值类型函数名(参数列表){语句}floatgetArea(floatr){floats;s=(float)(PI*pow(r,2));returns;}变量:存放数据的容器,有不同的数据类型。语句:一个单一命令是一条语句(Statement),由分号(;)结尾。代码段:用大括号({……})围起来的多条语句构成一个代码段。C程序基本元素——变量/语句/代码段编译预处理——宏定义形式:#definePI3.14159PI——符号常量(宏名,最好用大写,以区别一般变量)3.14159——宏体(可以是一个表达式)作用:用简单符号代表宏体部份内容(编译时会先自动替换),可用作常量定义或其他作用意义:直观/多次使用/便于修改注意:#define可出现在程序的任一位置(作用范围:由此行到程序末尾),宏定义不是C语句,不必在行末加分号,否则会连分号一起置换。C程序基本元素——编译预处理形式:#includestdio.h#include“stdafx.h”C语言是一种“装配式”语言,许多常规的工作如输入、输出、数学函数等,往往事先由人做成各种“程序模块”(.lib),并将其定义存放在各种所谓“头文件”(.h)中。文件包含的作用,就是根据需要把相应的某个“头文件”定义所涉及的“程序模块”在编译时先整体嵌入所编的程序中。用户也可以将自己设计的程序模块等做成“程序模块”及“头文件”,供其他程序“包含”(调用)。编译预处理——文件包含使用“文件包含”功能的优点支持程序模块的共享提高程序设计效率和程序可靠性减少程序员重复劳动量C提供了三百多个标准库函数,分别由若干个头文件进行说明:stdio.h标准输入/输出函数math.h数学函数stdlib.h常用函数…一个优秀的程序员不应是事无巨细都要从头做起的“工匠”,而应是一个“策划师”+“组装师”。所以,逐步熟悉并掌握常用函数的功能及使用,是学习C程序设计的一个重要内容。注释:为了增加程序的可读性而附加的说明性文字,它们在编译时会被忽略。1、单行注释//……,从该符号至行末均为注释的内容2、多行注释/*……*/,用来说明更多的内容,包括算法等.C程序基本元素——注释C语言程序由一个或多个函数组成。C程序的各种功能是通过函数调用来完成的。每个C程序必须有一个、也只能有一个主函数main()。不管主函数在程序中的位置如何,程序执行总是从主函数开始,在主函数内结束。每条语句必须用分号“;”结束。编译预处理命令(宏定义、文件包含)不是语句,行末不能用分号结束。C语言本身没有输入/输出语句,其功能须通过调用相关函数来实现。C程序基本框架——总结标识符(Identifier)程序员对程序中的各基本元素加以命名时使用的命名记号,包括:数据类型名、变量名、常量名、函数名、宏名、…2、标识符和关键字标识符的组成规则C语言中,标识符是以字母,下划线(_)开始的一个字符序列,后面可以跟字母,下划线,数字。合法的标识符identifieruserNameUser_Namedefinesys_value_Namename1非法的标识符2mailroom#a%bc!abc关键字(Keywords):具有专门的意义和用途,不能当作一般的标识符使用。C语言中的关键字有:int、char、float、double、short、long、unsigned、struct、union、enum、auto、extern、register、static、typedef、goto、return、sizeof、break、continue、if、else、do、while、for、switch、case、default、void、entry、include、define、undef、ifdef、ifndef、endif、line在C++中,还会有一些新的关键字。不同语言的关键字不完全相同,但基本相似。关键字关键字基本分类基本数据和返回值类型:int,void,return……构造数据类型定义:typedef,struct,union,…控制流:if,else,switch,case,for,break,goto,…编译预处理:include,define,…变量长度:sizeof注意:在C语言中,标识符是区分大小写的。name和Name是不同的标识符。所有的关键字都是小写字母构成的。不必死记这些关键字,当理解每个关键词的含义后,自然就记住了所有的关键词。2、标识符和关键字3、数据类型、变量和常