1、记忆语法、思考算法。读懂程序、循序渐进。记好笔记、上机调试。,学习方法,程序设计语言,计算机语言的种类,机器语言,汇编语言,高级语言,面向机器,面向过程,面向对象,程序翻译方式,例如:,X=1Y=2Print X+Y,main( )int x , y; x=1; y=2; printf(“%d,%dn”,x,y);,Basic源程序,C源程序,01代码,01代码,01代码,01代码,执行,执行,执行,解 释,01代码,执行,编 译,目标程序,常用的C语言编译系统,Turbo C 2.0,DOS环境英文界面编译C程序,机房选用,Turbo C+ 3.0,DOS界面支持鼠标编译C+程序.CPP兼容
2、C程序.C,第三版选用,Visual C+6.0,可视化开发环境Windows界面编译C+程序,实际开发,复赛上机环境:Dev-C+ 4.9.9.2,C语言概述,C语言 既可作为系统软件的程序设计语言,又可作为应用软件的程序设计语言。,尤其是当今计算机应用极为广泛,软件的设计、编写质量要求高,经常与硬件部分打交道,如:界面设计等,所以用C语言编写是最理想的。因而C语言也是当前计算机语言中用得最广泛的语言之一。,1.1 C语言出现的历史背景,一、操作系统的设计语言,O.S. 操作系统,为用户使用计算机提供一个操作环境:系统命令、语言编程等。,如:DOS. UNIX,以前:O. S .软件用汇编指
3、令编写。汇编语言:一种二进制指令代码的符号表示,既烦锁,又易出错,可读性差。,改进:用C语言编写,既提高了程序的可读性,又可与硬件打交道。,二、发展过程, 1960年出现了Algol60语言,但该语言主要面向问题,与硬件较远,故英国剑桥大学推出了CPL(Combined Programming Language), 1967年,Matin Richards对CPL进行改进、简化、推出了BCPL (Basic Combined Programming Language), 1970年,美国贝尔实验室Ken Thomson 以BCPL为基础,再次简化推出了B语言,并写了第一个UNIX系统。, 美国
4、贝尔实验室D.M. Ritchie 在B语言基础上设计出了C语言,并用其将UNIX系统全部改写并实现。, 经进一步改进,至1977年出现了与具体机器无关的C编译文本,从而使C语言广泛应用,各种机器皆可使用。, 1978年,美国Brain W.Kernighan与Dennis. M. Ritchie 联合出版一书The C Programming Language成为 ANSI C之基础。, 1983年,美国标准化协会(ANSI) 制定了ANSI C。, ANSI C 为基础:,不同机器有不同版本,尤其是函数均应参考相应的机器。,1.2 C语言的特点,只有通过学习,方可理解C之特点,先简叙之:,
5、1. 简洁、紧凑、方便、灵活 32个关键字,9种控制语句, 主要用小写字母,压缩一切不必要成分,2. 运算符丰富 除了最基本的、%等运算外,还将括号、赋值、类型强制转换等均作为运算符,共有34种运算符。,3. 数据结构丰富 除基本类型外, 有指针, 结构体、共同体等类型。,4. 具有结构化的控制语句 模块完整,控制中的语句可完整化。,5. 语法严格,但有灵活性 如:数据类型可相互通用:整型、字符型通用。,6. 可与机器硬件打交道,直接访问内存地址,具有“ 高”、“ 低”级语言之功能。,7. 生成目标代码质量高,执行效率高。,8. 可移植性优于汇编语言。,1.3 简单的C程序介绍,例1.1:显示
6、一行信息。,例 1.2main ( )/*求两数之和*/ int a,b,sum; /*这是定义变量*/ a=123; b=456; /* 以下3行为C语句 */ sum=a+b; printf (sum is %d/n, sum); 本程序的作用是求两个整数a和b之和sum。/*/表示注释部分,为便于理解,我们用汉字表示注释,当然也可以用英语或汉字拼音作注释。注释只是给人看的,对编译和运行不起作用。注释可以加在程序中任何位置。第2行是声明部分, 定义变量a和b,指定 a和b为整型(int)变量。第3行是两个赋值语句,使a和b的值分别为123和,456。第4行使sum的值为a+b,第5行中“%
7、d”是输入输出的“格式字符串”,用来指定输入输出时的数据类型和格式(详见第4章),“%d”表示“以十进制整数形式输出”。在执行输出时,此位置上代以一个十进制整数值。printf函数中括弧内最右端sum是要输出的变量,现在它的值为579(即123+456之值)。因此输出一行信息为sum is 579,main( ) /* 主函数*/ int a, b, c; /*定义变量*/ scanf(%d, %d, /*输出c的值*/ ,例1.3,int max (int x, int y) /*对形参x、y作类型定义*/ int z; /*max函用到的变量z,也要加以定义*/ z=y; if (xy)
8、z=x; return (z); /*将z的值返回,通过max带回调用处*/ ,本程序包括两个函数:主函数main和被调用的函数max。max函数的作用是将x和y中较大者的值赋给变量z。return语句将z的值返回给主调函数main。返回值是通过函数名max带回到main函数的调用处。main函数中的scanf是“输入函数”的名字(scanf和printf都是C系统提供的标准输入输出函数)。程序中scanf函数的作用是输入a和b的值。&a和&b中的“&”的含义是“取地址”,此scanf函数的作用是将两个数值分别输入到变量a和b的地址所标志的单元中,也就是输入给变量a和b。,main函数中第4行
9、为调用max函数,在调用时将实际参数a和b的值分别传送给max函数中的形式参数x和y。经过执行max函数得到一个返回值(即max函数中变量z的值),把这个值赋给变量c。然后输出c的值。printf函数中双引号内的“max=%d”,在输出时,其中“%d”将由c的值取代之,“max =”原样输出。程序运行情况如下: 8,5 (输入8和5给a和b) max=8 (输出c的值),本例用到了函数调用、实际参数和形式参数等概念,我们只做了很简单的解释。读者如对此不大理解,可以先不予以深究,在学到以后有关章节时,问题自然迎刃而解。在此介绍此例子,无非是使读者对C程序的组成和形式有一个初步的了解。,通过以上几
10、个例子,可以看到:,1、C程序是由函数构成的。一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数。因此,函数是C程序的基本单位。被调用的函数可以是系统提供的库函数(例如printf和scanf函数),也可以是用户根据需要自己编制设计的函数(例如,例1.3中的max函数)。C的函数相当于其他语言中的子程序,用函数来实现特定的功能。程序中的全部工作都是由各个函数分别完成的。编写C程序就是编写一个个函数。,2、一个函数由两部分组成:, 函数的首部,即函数的第一行。包括函数名、函数类型、函数属性、函数参数(形参)名、参数类型。例如,例1.3中的max函数的首部为int m
11、ax (int x , int y ) 函数类型 函数名 函数参数类型 函数参数名 函数参数类型 函数参数名 一个函数名后面必须跟一对圆括弧, 函数参数可以没有,如main( )。, 函数体,即函数首部下面的大括弧内的部分。如果一个函数内有多个大括弧,则最外层的一对 为函数体的范围。函数体一般包括: 声明部分:在这部分中定义所用到的变量,如例1.3中main函数中的“int a,b,c;”。 在第8章中还将会看到,在声明部分中要对所调用的函数进行声明。执行部分:由若干个语句组成。,当然,在某些情况下也可以没有声明部分(例如,例1.1)。甚至可以既无声明部分,也无执行部分。如:dump ( )
12、它是一个空函数,什么也不干,但这是合法的。,3、 一个C程序总是从main函数开始执行的,而不论main函数在整个程序中的位置如何(main函数可以放在程序最前头,也可以放在程序最后,或在一些函数之前,在另一些函数之后)。,4、C程序书写格式自由,一行内可以写几个语句, 一个语句可以分写在多行上。C程序没有行号,也不像FORTRAN或COBOL那样严格规定书写格式(语句必须从某一列开始书写)。,5、每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。例如: c=a+b; 分号不可少。即使是程序中最后一个语句也应包含分号。,6、C语言本身没有输入输出语句。输入和输出的操作是由库函
13、数scanf和printf等函数来完成的。C对输入输出实行“函数化”。由于输入输出操作牵涉到具体的计算机设备,把输入输出操作放在函数中处理,就可以使C语言本身的规模较小,编译程序简单,很容易在各种机器上实现,程序具有可移植性。,7、可以用/*/对C程序中的任何部分作注释。一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。,比如:例1.3中的max函数,延伸知识:,许多程序设计语言中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,这就是程序中的函数。,编译系统的库文件提供的库函数,C程序的上机步骤,我们已经看到了一些用C语言编写的程序。为了使计算机能按照人们
14、的意志进行工作,必须根据问题的要求,编写出相应的程序。所谓程序,就是一组计算机能识别和执行的指令。每一条指令使计算机执行特定的操作。程序可以用高级语言(例如QBASIC,FORTRAN,PASCAL,C等)编写。用高级语言编写的程序称为“源程序”(source program)。从根本上说,计算机只能识别和执行由0和1组成的二进制的指令,而不能识别和执行用高级语言写的指令。为了使计算机能执行高级语言源程序,必须先用一种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”, 然后将该目标程序与系统的函数库和其他目标程序连接起来,形成可执行的目标程序。,在编好一个C源程序后,如何上机运行
15、呢? 在纸上写好一个程序后,要经过以下几个步骤:1.上机输入与编辑源程序 2.对源程序进行编译 3.与库函数连接 4.运行目标程序这样几个步骤。以上过程如图1.1所示。其中实线表示操作流程,虚线表示文件的输入输出。例如,编辑后得到一个源程序文件f.c, 然后在进行编译时再将源程序文件f.c输入,经过编译得到目标程序文件f.obj,再将目标程序文件f.obj输入内存,与系统提供的库函数等连接,得到可执行的目标程序文件f.exe,最后把f.exe调入内存并使之运行。在了解了C语言的初步知识后,我们上机运行几个C程序,以建立对C程序的初步认识。,课堂练习,1 请参照本章例题,编写一个C程序,输出以下信息: * Very good! *编写一个C程序,输入a、b、c 3个值,输出其中最大者。,