高级语言.docx

上传人:b****3 文档编号:4643799 上传时间:2022-12-07 格式:DOCX 页数:100 大小:429.05KB
下载 相关 举报
高级语言.docx_第1页
第1页 / 共100页
高级语言.docx_第2页
第2页 / 共100页
高级语言.docx_第3页
第3页 / 共100页
高级语言.docx_第4页
第4页 / 共100页
高级语言.docx_第5页
第5页 / 共100页
点击查看更多>>
下载资源
资源描述

高级语言.docx

《高级语言.docx》由会员分享,可在线阅读,更多相关《高级语言.docx(100页珍藏版)》请在冰豆网上搜索。

高级语言.docx

高级语言

《高级语言(C语言)程序设计》教案

 

山东财经大学(筹)

计算机信息工程学院

 

第一章C语言概述

§1.1C语言的历史和特点

一、C语言的历史

Algol60→CPL→BCPL→B→C→旧标准C→ANSIC→C++→VisualC++

┆┆┆┆┆┆(新标准C)

┆┆┆┆┆┆┆

1960196319671970197219781983

C语言的诞生与发展:

在C语言诞生以前,系统软件主要是用汇编语言编写的。

由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语言。

C语言是贝尔实验室于70年代初研制出来的,后来又被多次改进,并出现了多种版本。

80年代初,美国国家标准化协会(ANSI),根据C语言问世以来各种版本对C语言的发展和扩充,制定了ANSIC标准(1989年再次做了修订)。

·ALGOL60(1960,面向问题的高级语言,不宜用来编写系统程序)

·CPL(1963,英国剑桥大学,规模较大)

·BCPL(1967,剑桥大学MatinRichards,作了简化)

·B(1970,美国贝尔实验室KenThompson,进一步简化,又过于简单,功能有限)

·C(1972-1973,贝尔实验室D.M.Ritchie,保持了精练,接近硬件的优点,克服了B语言过于简单的缺点)

·1973年,K.Thompson和D.M.Ritchie合作用C改写UNIX(第5版)。

·1975年出的的UNIX第6版使人们普遍注意C语言。

·以1978年发表的UNIX第7版中的C编译程序为基础,BrianW.Kernighan和DennisM.Ritchie合著了影响深远的《TheCProgrammingLanguage》,书中介绍的C语言称为标准C。

·1983年,美国国家标准化协会(ANSI)制定了新的标准,称为ANSIC。

·现在微机上常用的C语言编译系统有MicrosoftC,TurboC,QuickC。

·我们的教材选用的是TurboC2.0版本。

二、C语言的特点

1.语言简洁,表达能力强

·语言简洁、紧凑,使用方便、灵活。

一共只有32个关键字,9种控制语句;

·运算符丰富。

共有34种运算符;

·数据结构丰富,便于数据的描述与存储;

·具有结构化的控制语句;

·强大的库函数,用函数作为程序模块以实现程序的模块化;

·语法限制不太严格,程序设计自由度大。

2.融合高、低级语言的中级语言

·具有高级语言基本结构;

·可直接对硬件进行操作,允许直接访问物理地址;

·生成的代码质量高,生成目标程序运行速度高,占有内存少,程序执行效率高。

3.可移植性好:

独立于具体机器。

§1.2C语言的一般介绍

1、举例说明C程序的结构组成:

一个完整的C语言程序,是由一个main()函数(又称主函数)和若干个其它函数结合而成的,或仅由一个main()函数构成。

例1、一个最简单的C程序:

向显示器输出一行ThisisaCprogram.文本信息。

main()

{printf(“ThisisaCprogram.\n”);

}

程序运行结果:

ThisisaCprogram.

例2、求三个整数之和。

main()

{inta,b,c,sum;/*变量先说明后使用*/

a=1;b=2;c=3;

sum=a+b+c;

printf(“sumis%d\n”,sum);

}

程序由函数构成(函数为程序的基本单位),每个程序都必须有一个main主函数,程序运行从其开始。

一个程序可以包含多个函数,函数之间通过“调用”而互相联系在一起。

函数可以分为库函数和用户自定义函数。

所有语句都必须以分号“;”结束,函数的最后一个语句也不例外。

C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。

C语言本身没有输入输出语句。

可以用/*…*/对C程序中的任何部分作注释,它可增加程序的可读性。

C语言没有输入输出语句,只有输入输出库函数。

例3、前面例题采用两个函数完成(即,该题的程序由两个用户自定义函数构成)

main()

{intthreesum();

inta,b,c,sum;

scanf(“%d,%d,%d”,&a,&b,&c);

sum=threesum(a,b,c);

printf(”sumis%d\n”,sum);

}

intthreesum(x,y,z)

intx,y,z;

{intw;

w=x+y+z;

return(w);

}

说明:

(1)本程序包括两个函数:

主函数main和被调用函数threesum。

threesum函数的作用是将x、y和z的求和结果赋给变量w,函数体由大括号{}括起来。

(2)return语句的作用是将w的值返回给主调用函数main,返回值将通过函数名threesum带回到main函数的调用处。

(3)scanf和printf都是C语言提供的标准输入输出函数,scanf函数的作用是输入a、b和c的值;printf函数的作用是按设置的格式输出有关量的值。

2、C程序的基本结构

(1)C程序是由函数组成的。

一个C源程序至少包括一个主函数(main函数),也可以包括一个main函数和若干个其它函数。

(2)任何函数(包括主函数main())都是由函数说明和函数体两部分组成。

其一般结构如下:

①函数说明:

函数类型函数名(函数形参)

形参类型形参;

②函数体:

{数据类型说明

执行语句

}

函数的说明部分:

包括函数名、函数类型、函数属性、函数参数(形参)名、形式参数类型。

一个函数名后面必须跟一对圆括号(),函数参数可以没有。

如main()。

函数体即函数说明部分下面的大括号{......}内的部分,如果一个函数内有多个大括号,则最外面的一对{}为函数体的范围。

函数体一般由说明语句和可执行语句两部分构成:

说明语句部分由变量定义、自定义类型定义、自定义函数说明、外部变量说明等组成;可执行语句部分一般由若干条可执行语句构成。

函数体中的说明语句部分必须在所有可执行语句之前。

§1.3C程序的编译和运行

一、程序的运行步骤

编辑

源程序文件.C

编译

目标程序文件.OBJ库函数的文件和

链接      其它目标程序文件    

←───────────┘

可执行程序文件.EXE

运行

源程序就是用程序设计语言写成的解决各种问题的方法步骤。

程序设计语言与自然语言十分接近,同时它又便于转换(编译)成机器指令(即可执行文件)。

程序设计语言象自然语言一样,有很多种,常用的有BASIC,COBOL,C,C++,FORTRAN,PASCAL,汇编语言等,就象自然语言有汉语,英语,法语一样。

机器语言(machinelanguage):

计算机直接使用的二进制形式的程序语言或机器代码。

汇编语言(assemblerlanguage):

一种面向机器的用符号表示的低级程序设计语言。

相当于机器指令的助记符号,与机器语言很接近。

高级语言(high-levellanguage):

是易为人们所理解的完全符号化的程序设计语言。

源程序:

用户用高级语言编写的程序称为,C源程序文件名字后缀一般必须为".c“。

程序加工:

高级语言编写的程序,计算机不能直接执行,需要把这个程序转换成二进制代码的机器语言程序。

这种转换过程称为程序加工。

汇编程序(assembler):

将汇编语言程序翻译成机器语言程序的程序。

编译程序(compiler):

把用高级语言写的源程序转换为相应的机器语言目标模块(objectmodule)的程序。

编译:

目标模块包括程序及连接程序的控制信息。

目标程序文件名字后缀".obj"。

连接(linker):

将目标模块和其它一些必要的功能模块装配在一起,生成可执行文件,执行程序文件后缀为".exe"。

二、程序与源程序

一个程序可以包含一个或若干个源程序,一个源程序可以包含多个函数,一个程序可以包含多个函数,每个程序都必须有一个主函数,程序运行从其开始,在其结束。

三、TC集成环境的使用

用程序设计语言写出源程序,它并不为计算机处理器所识别并运行,必须把源程序编译成机器指令序列。

这个过程由专门的编译程序完成。

这里,我们选择TurboC2.0软件。

如何运行TurboC2.0软件?

进入Tc的目录,键入tc就可以进入TurboC集成开发环境了。

如果是初次运行,还必须做一些设置才能够使用。

用F10,光标移动键和回车键,按照下图打开设置菜单,

先设置Directories,第一行是include文件目录,在这里设成c:

\tc20\include;第二行是library目录,设成c:

\tc20\lib第三行为输出.EXE和.OBJ文件的目录,如果为空则输出到c:

\tc20目录下;第四行为Tc的目录,这里设为c:

\tc20;第五行是建立PICK文件,默认是TCPICK.TCP。

然后别忘了执行Option下面的菜单项:

SaveOptions,保存刚才设置的结果,否则下次运行还必须重新设置。

先输入一个简单的C程序,并保存为hello.c。

然后编译生成可执行文件。

编译成功后,屏幕如下。

来看看我们的程序执行的样子,先执行它:

程序执行很快,来不及看清运行结果,我们可以用Alt+F5组合键查看运行结果。

下面就是执行的结果啦。

随便按一个键返回蓝色的编辑窗口。

 

第二章程序的灵魂--算法

一、算法(algorithm):

是对特定问题求解步骤的一种描述。

1.什么是算法

为解决一个问题而采取的方法和步骤,就称为“算法”。

对同一个问题,可以有不同的解题方法和步骤,也就有不同的算法。

例如求可采用矩形法、梯形法、辛普生法(即抛物线法)等。

为了有效地解题,不仅需要保证算法正确,还要考虑算法的质量,选择较好的算法,或进行算法的优化。

2.算法的特点

一个算法,必须具有以下特点:

(1)仅有有限的操作步骤,即“有穷性”(无死循环)。

(2)算法的每一个步骤应当是确定的,即无“二义性”。

(3)有适当的输入,即有确定的条件。

(4)有输出结果。

没有输出的算法是无意义的。

(5)算法中的每一个步骤都应当有效执行(无死语句)。

3.算法的重要性

掌握最基本的、常用的算法是很重要的,算法设计是整个程序设计的核心。

著名计算机科学家沃思(Wirth)曾提出一个公式:

程序=算法+数据结构。

对初学者而言,数据结构即是语言提供的各种数据类型,无大难点。

这样编程的任务主要是考虑算法问题,当然还要学会基本的语句和语法。

算法要求:

正确性、可读性、健壮性、效率。

4.算法的表示方法

1)用自然语言表示

2)用流程图表示

图2.1传统流程图常用符号

例1求,用传统流程图表示如下图2.2。

 

图2.2图2.3

例2求,用N-S结构化流程图表示如上图2.3

3)用伪代码表示

例3求,用伪代码来表示。

开始(BEGIN)

输入(Input)a,b,n

(b-a)/n→h

0→s

1→i

当(while)i<=n执行(do)

s+h*f(a+(i-1)*h)→s

i+1→i

循环到此结束(Enddo)

输出(Print)a,b,n,s

算法结束(END)

4)用计算机语言表示

二、

结构化程序的三种基本结构:

顺序结构、选择结构、循环结构

⒈顺序结构:

一条一条语句顺序往下执行

main()

{inta,b,c;

a=9;

b=-a--;

c=(a--)-b;

printf("a=%d,b=%d,c=%d\n",a,b,c);

}

⒉选择结构:

又叫分支结构

例、main()

{inta=2,b,c;

if(a)

{b=a;

c=a+b*b;

}

else例、main()

{b=3;{intx=0;

c=b*b;if(!

x)x=10;

a=c+b;}printf(“%d\n”,x);

}}.

⒊循环结构:

有两种

 

第三章数据类型、运算符与表达式

§3.1数据类型

C的数据类型有:

1、基本类型:

整型、字符型、实型(浮点型)、枚举型

2、构造类型:

数组类型、结构体类型、共用体类型

3、指针类型

4、空类型

§补:

数据的机器码表示

•内存由若干存储单元构成,一存储单元由若干字节构成。

若,一字节存放一个数据:

例、00000110(一字节有八位二进制位构成)

最高位最低位

若,两字节存放一个数据:

例、0000100000010001

最高位最低位

•表示有符号数时,最高位作为符号位0──正、1──负

例1、无符号数10000001,值=27+20=129

有符号数10000001,值=?

与采用的机器码有关

一、数的定点与浮点表示

计算机处理的数据可能既有整数部分又有小数部分,必须约定小数位置,可以有两种约定:

定点和浮点

例、(1011.10)2=(10111.0×2-1)2=(1.01110×211)2

对于二进制数N:

N=±S×2±J

尾符(或数符)尾数S底阶符阶码J

J固定不变──定点表示

J可变──浮点表示

⒈定点表示

一般取J=0,则N=±S“符号”占一位,0表示正、1表示负.

.

例、+11010100110101.

符号尾数小数点

+0.00100010000

符号小数点尾数

•小数点不占用二进制位,隐含在某固定位置上。

隐含在数的最低位之后,称定点整数;隐含在符号位之后、数的最高位之前,称定点小数。

•定点数表示范围受限。

⒉浮点表示

•基本思想:

把数的有效数字和数的表示范围分开表示

阶符阶码尾符尾数

表示范围有效数字

(或有效数字在前、表示范围在后)

例、x=(+101101)2=(+0.101101×2110)2

表示为01100101101

•浮点数的底不出现在浮点数中,一般隐含为2。

小数点也不出现在浮点数中,约定

尾数一定是纯小数

阶码一定是纯整数.

二、数据的机器码表示

机器码常用的有原码、反码、补码。

真值:

一般书写表示的数值,或者说机器所代表的实际值.

机器数:

表示一个数值数据的机内编码.一般采用补码形式。

⒈原码:

真值为:

x=±x1x2…xn

原码:

[x]原=0x1x2…xn,x≥0

1x1x2…xn,x≤0

例、(-5)10=(-0000101)2/*以下例子均以一字节存一个数为例*/

[+5]原=00000101

[-5]原=10000101

[+0]原=000000000的正负有区别

[-0]原=10000000

前例1、∵(10000001)原=-1

∴若10000001为原码,则其真值=-1

⒉反码:

真值:

x=±x1x2…xn

若xi=1,则xi=0(xi取反)

xi=0,则xi=1或[x]原=x0x1x2…xn

[x]反=0x1x2…xn,x≥0[x]反=[x]原,x≥0

1x1x2…xn,x≤0x0x1x2…xn,x≤0

例、[+5]反=00000101

[-5]反=11111010

[+0]反=000000000的正负有区别

[-0]反=11111111

前例1、∵(10000001)反=(11111110)原=(-1111110)2=(-126)10

∴若10000001为反码,则其真值=-126

⒊补码

⑴模:

例、16mod12=4(16点为下午4点),12就称为模数或称模12

·在模n下的意义:

x=n+x

例x=4时,4+12=4

例x=-5时,-5+12=-5即7=-5(mod12)

7和-5对于12互为补码

·若x<0时,正数“加上负数”可用“加上该负数对应的补码(正数)”实现:

例9+(-5)=9+7(mod12)

·在计算机中,n位二进制数的模为2n

⑵补码

真值:

x=±x1x2…xn[x]反=x0x1x2…xn

[x]补=0x1x2…xn,x≥0或[x]补=[x]反,x≥0

M+x,x≤0(M为模)[x]反+1,x≤0

(即末位加1)

例、[+5]补=00000101

[-5]补=11111010+1=11111011

[+0]补=000000000的补码是唯一的

[-0]补=11111111+1=00000000

前例1、∵(10000001)补=(10000000)反=(11111111)原=-127

∴10000001为原码,则其真值=-127

·但补码比反码、原码表示的数据多

例、[-128]补=10000000

∵八位二进制数的模M=28,而[x]补=M+x,x≤0(M为模)

∴[-128]补=[-10000000]补=28+(-10000000)=10000000

§3.2常量和变量

一、标识符、关键字、保留字

  标识符:

 程序设计过程用到的各类元素的名字,叫标识符。

C语言规定标识符只能由字母、数字、下划线组成,并且只能由字母、下划线开头。

如:

abc,a12,x是合法的标识符,abc$,12a,x+y不是合法的标识符。

  关键字:

 一些标识符被赋于特定的含义,如main,int等,叫关键字。

  保留字:

 一些关键字,被明文规定不许挪作它用,叫保留字。

C语言中,所有的关键字都是保留字,所以这两个词可以混用。

二、常量与变量

常量 在程序运行时,其值不能被改变的量叫常量。

如5,3.14159,3.618等。

  符号常量 可以使用一个标识符表示常量,如:

PI表示3.14159,RETIREMENT表示退休年龄60等(C语言中写作#definePI3.14159,#defineRETIREMENT60),这样的标识符叫符号常量,一般大写。

  符号常量使程序易于阅读和修改。

例如,一个程序中多处用到退休年龄60,当有一天退休年龄改为65岁时,修改这个程序很困难。

而使用符号常量,只要将#defineRETIREMENT60改为#defineRETIREMENT65,就可以了。

  变量 在程序运行时,其值能被改变的量叫变量。

程序运行时,计算机给每个变量分配一定量的存储空间。

每个变量必须有一个类型,如整型、浮点型等,它指明给这个变量分配多大量的存储空间;每个变量还必须有一个名字,如x,y等,它指明是哪个变量;一般,一个变量还要有值,值放在变量的存储空间内。

三.整型与实型

  int:

整型,整型变量表示整数。

  在MSDOS上,每个整型变量分配16bit存储空间。

整型又分成两类,一类表示有符号整数,用1bit表示符号,15bit表示数值,可表示数值范围为-32768至32767。

一类表示无符号整数,16bit都表示数值,可表示数值范围为0至65535。

数值都用二进制存储。

例如:

inta;unsignedintdate;等。

  十进制整型常量直接写数字,如:

5,100等;八进制整型常量数字前加0,如:

05,0100等;十六进制整型常量数字加0X,如:

0X5,0X100等。

  short:

短整型,也可写成shortint,在MSDOS上,与整型相同。

  long:

长整型,也可写成longint,表示较大的整数,在MSDOS上,每个长整型变量分配32bit存储空间。

长整型也分成两类,一类表示有符号整数,用1bit表示符号,31bit表示数值,可表示数值范围为-231至231-1。

一类表示无符号整数,32bit都表示数值,可表示数值范围为0至232-1。

数值都用二进制存储。

  例如:

longinta;unsignedlongdate;等。

  整型常量的值若超过了整型数范围,会自动被认为是长整型常量;整型常量也可以后加'L',强制置为长整型,如:

5L,100L等。

  float:

浮点型,近似表示实数,在MSDOS上,每个浮点型变量分配32bit存储空间。

浮点型都是有符号的,可表示数值范围分为三段:

-1038至-10-38,0,10-38至1038。

数值都先化成指数,再用二进制存储。

7位有效数字。

  例如:

floatx,y;等。

  浮点型常量可以写成小数形式,如3.14159,也可以写成指数形式:

1.2E12(表示1.2*1012)。

  double:

双精度型,近似表示更大实数,在MSDOS上,每个浮点型变量分配64bit存储空间。

双精度型都是有符号的,可表示数值范围分为三段:

-10308至-10-308,0,10-308至10308。

数值都先化成指数,再用二进制存储。

7位有效数字。

  例如:

doublex,y;等。

  双精度型常量可以写成小数形式,如3.14159,也可以写成指数形式:

1.2E12(表示1.2*1012)。

四、字符常量

  字符型常量写成'A','@','\t','\65'等形式。

有一些特殊字符用转义符表示:

字符形式

功能

\n

换行

\t

横向跳格

\v

竖向跳格

\b

退格

\r

回车

\f

走纸换页

\\

反斜杠字符

\'

单引号

\ddd

8进制数表示的对应ASCII码字符

\xhh

16进制数表示的对应ASCII码字符

五、字符变量

char:

字符型,表示一个字符,如'A'-'Z','0'-'9','!

','%'等。

在MSDOS上,每个字符型变量分配8bit(1byte)存储空间。

字符型变量用二进制存储字符的ASCII码值。

例如:

一个变量存储字符'A',实际上是存储'A'的ASCII值:

65。

六、字符数据的存储与输入输出

字符型也分成两类,一类有符号,用1bit表示符号,7bit表示数值,可表示数值范围为-128至

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1