当前位置:文档之家› Pascal语言基础

Pascal语言基础

第一讲初识Pascal语言

一、Pascal 语言概述

Pascal 语言是一种算法语言,它是瑞士苏黎世联邦工业大学的Niklaus Wirth教授于1968年设计完成的,1971年正式发表。1975年对Pascal 语言进行了修改,作为“标准PASCAL 语言”。

Pascal 语言是一种结构化的程序设计语言,可以用来编写应用程序。它又是一种系统程序设计语言,可以用来编写顺序型的系统软件(如编译程序)。它的功能强、编译程序简单。

二、Pascal 语言的特点

Pascal语言有以下几个主要的特点:

⒈它是结构化的语言。Pascal语言提供了直接实现三种基本结构的语句以及定义“过

程”和“函数”的功能。可以方便地书写出结构化程序。在编写程序时可以完全不使用GOTO 语句和标号。这就易于保证程序的正确性和易读性。Pascal语言强调的是可靠性、易于验证性、概念的清晰性和实现的简化。在结构化这一点上,比其它(如BASIC,FORTRAN77)更好一些。

⒉有丰富的数据类型。Pascal提供了整数、实型、字符型、布尔型、枚举型、子界型、

数组类型、集合类型、记录类型、和文件类型和指针类型。⒊能适用于数值运算和非数值运算领域。PASCAL的功能较强,能广泛应用于各种领域。PASCAL语言还可以用于辅助设计,实现计算机绘图功能。

⒋ PASCAL程序的书写格式比较自由。PASCAL允许一行写多个语句,一个语句可以分写在

多行上,这样就可以使PASCAL程序写得格式优美,便于阅读。

由于以上特点,许多学校选PASCAL作为程序设计语言,它能给学生严格而良好的程序设计的基本训练。培养学生结构化程序设计的风格。

三、Pascal语言程序的基本结构

程序设计语言都有着一组自己的记号和规则。PASCAL语言必须采用其本身所规定的记号和规则来编写程序。下面我们首先来了解Pascal语言的程序基本结构。

Pascal语言的程序结构为:

程序首部

标号说明语句

常量定义语句

类型定义语句程序的说明部分

变量说明语句

函数和过程说明语句分程序

程序体程序的执行部分

先看一个简单的PASCAL程序:

program exam1(input,output);

var r,s,c:real;

begin

readln(r);

c:=3.14*2*r;

s:=3.14*r*r;

writeln(c,s)

end.

从这个简单的程序可以看到:

1、一个PASCAL程序分为两个部分:程序首部和程序体(或称分程序)。

2、程序首部是程序的开头部分,它包括:

⑴程序标志。用“program”来标识“这是一个PASCAL 程序”。PASCAL规定任何一个PASCAL 程序的首部都必须以此字开头。在Turbo pascal语言中,首部也可省略。

⑵程序名称。由程序设计者自己定义,如例中的exam1。

在写完程序首部之后,应有一个分号。

3、程序体是程序的主体。程序体包括说明部分(也可省略)和执行部分两个部分。

⑴说明部分用来描述程序中用到的变量、常量、类型、过程与函数等。本程序中第二行是“变量说明”,用来定义变量的名称、类型。

PASCAL规定,凡程序中用到所有变量、符号常量、数组、标号、过程与函数、记录、文件等数据都必须在说明部分进行定义(或称“说明”)。也就是说,不允许使用未说明先使用。

⑵执行部分的作用是通知计算机执行指定的操作。如果一个程序中不写执行部分,在程序运行时计算机什么工作也不做。因此,执行部分是一个PASCAL程序的核心部分。

执行部分以“begin”开始,以“end”结束,其间有若干个语句,语句之间以分号隔开。执行部分之后有一个句点,表示整个程序结束。

4、 PASCAL程序的书写方法比较灵活。应以程序结构清晰、易读为目的。在编写程序时尽量模仿本书中例题程序格式。

5、在程序中,一对大括号间的文字称为注释。注释的内容由人们根据需要可用英语书写。注释可以放在任何空格可以出现的位置。执行程序时计算机对注释不予理睬。

6、保留字后不加标点符号(END除外)。

四、Turbo Pascal语言系统的使用

下面我们就学习常用的Turbo Pascal 7.0系统的使用。

1、系统的启动

在运行系统目录下的启动程序TURBO.EXE,即可启动系统。屏幕上出现如图1所示的集成环境。

2、Turbo Pascal系统集成环境简介

最顶上一行为主菜单。中间蓝色框内为编辑窗口,可进行程序的编辑。最底下一行为提示行,显示出系统中常用命令的快捷键。

3、新建程序窗口

按F10进行主菜单,选择File菜单,执行其中New命令。就可建立一个新的程序窗口(默认文件名为Noname00.pas或Noname01.pas等)。

4、程序的输入、编辑与运行

在当前程序窗口中,一行一行的输入程序。事实上,程序窗口是一个全屏幕编辑器。所以对程序的编辑与其它编辑器的编辑方法类似,这里不再重复。

当程序输入完毕之后,一般要先按Alt+F9(或执行compile菜单中compile命令)对程序

进行编译。如果程序有语法错误,则会在程序窗口的第一行处显示第一个红色错误信息。若无语法错误,则窗口正中央会出现一个对话框,提示编译成功。接下来,我们可以运行程序了。程序的运行可以通过按ALT+R打开RUN菜单中的RUN命令,或直接按快捷键CTRL+F9。则可以在用户窗口中输出运行结果。通常在程序运行结束后系统回到Pascal系统的集成环境,因此要查看运行结果,要按ALT+F5将屏幕切换到用户屏幕。

5、程序的保存与打开

当我们想把程序窗口中的程序存入磁盘时,可以通过按F2键(或执行File菜单中的save 命令)来保存程序。第一次保存文件时屏幕上会出现一个对话框要求输入文件名(默认扩展名为.pas)。

当我们要将磁盘上的程序文件中的PASCAL程序装入窗口时,可按F3(或执行File菜单中的Open命令)来装入程序,此时系统也会弹出一个对话框要求输入要打开的文件名,或直接在文件对话框列表中选择所要的文件,然后回到打开文件。

第二讲数据类型、表达式、函数

一、数据类型

整数类型 integer -32768~32767

短整型 shortint -128~127

长整型 longint -2147483648~2147483647

字节型 type 0~255

字型 word 0~65535

实数型 real:包括正实数、负实数和实数零。实数的绝对值在1E-38到1E+38之间。

形式有两种:

⑴十进制表示法

人们日常使用的带小数点的表示方法。如0.0,-0.0,5.61,-8.0,等都是实数形式。

⑵科学记数法

科学记数法是采用指数形式的表示方法,如1.25×105可表示成1.25E+05。在科学记数法中,字母“E”表示10这个“底数”,而E之前为一个十进制表示的小数,称为尾数,E之后必须为一个整数,称为"指数"。如-1234.56E+26 , 0.268E-5 , 1E5是合法形式,而.34E12 , 2.E5 , E5 ,E,1.2E+0.5都不是合法形式的实数。

和整数相比,实数能表示的范围大得多,但值得注意的是实数的运算整数的运算速度慢且无法像整数那样精确表示,只能近似表示。如2.03.0比23的运算慢。

字符型 char 括在两个单引号中的字符:’a’表示字符;a表示标识符,’3’表示字符;3表示整数值

布尔型 boolean

布尔型有两个值,真和假,分别用标准常量名true和false表示,序号分别为1和0。

二、常量

在程序运行过程中,其值不能被改变的量称为常量。如12,14.8,'abc',true等。

Pascal中有一个标准标识符Maxint,它代表所使用的计算机系统允许的最大整型数,而最

小的整型数即为-Maxint-1。Turbo Pascal还定义了长整数常量MaxLongInt,其值为2147483647。

字符常量:是由字符组成,所有字符来自ASCII字符集,共有256个字符。在程序中,通常用一对单引号将单个字符括起来表示一个字符常量。如:'a','A','0'等。对于ASCII字符集中,按每个字符在字符集中的位置,将每个字符编号为0-255,编号称为对应字符的序号。

符号常量:一个常量即可以直接表示(称为直接常量,如 124,156.8),也可以用一个标识符来代表一个常量,称为“符号常量”。但符号常量必须在程序中的说明部分先定义,后使用。

定义符号常量的一般格式:

CONST <常量标识符>=<常量>

说明:常量说明部分以关键字const开头, 后面的标识符为常量标识符,其中"="号后的常量为整数、实数、字符、字符串。例如:

const

pi=3.14159;

zero=0;

var r,s,c:real;

则在程序中pi和zero作为符号常量,分别代表实数3.14159和整数0。也就是说,常量说明部分既定义了常量名及其值,又隐含定义了常量的类型。

Pi(function函数)为 3.1415926535897932385

三、变量

变量代表了一个存储单元,其中的值是可变的,故称为变量。即在程序运行过程中,其值可以改变的量,称为变量。

变量有三个要素是:变量名、变量类型、变量值。

一个程序中可能要使用到若干个变量,为了区别不同的变量,必须给每个变量(存贮单元)取一个名(称为变量名),该变量(存贮单元)存放的值称为变量的值,变量中能够存放值的类型为变量的类型。

1、变量名

用一个合法的标识符代表一个变量。如m,rot,total 等都是合法变量名。在程序中用到的变量必须在说明部分加以说明。

“自定义标识符”的命名规则为:自定义标识符必须以字母(包含下划线"_")开头,后面的字符可以是字母或数字。标识符长度不超过63个字符。

变量名应遵循自定义标识符的命名规则,并注意“见名知义”的原则,即用一些有意义的单词作为变量名。

2、变量的类型

常量是有类型的数据,变量在某一固定时刻用来存放一个常量,因此也应有相应的类型。如整型变量用来存放整数,实型变量用来存放实数。

3、变量说明

在程序中若要使用变量,变量的名称及类型在程序的变量说明部分加以定义,变量的值则在程序的执行部分中才能赋给。

变量说明的一般格式:

VAR <变量标识符> [,<变量标识符>]:<类型>; (中括号内部分表示可省)

其中VAR是pascal保留字,表示开始一个变量说明段, 每个变量标识符或由逗号隔开的多

个变量标识, 必须在它的冒号后面说明成同一类型。一个程序中,可以说明许多不同类型的变量,每种类型变量之间用分号隔开,共用一个VAR符号。

例如:

var age,day:integer;

average:real;

其中,Integer(整型)、Real(实型)是标准标识符,它们是“类型标识符”,代表了确定的类型,如age和 day 被定义为整型变量, average被定义为实型变量。

一旦定义了变量,就确定了它的类型,也就是说,就确定了该变量的取值范围和对该变量所能进行的运算。

四、表达式

表达式的定义

pascal语言中的算术表达式是由符合pascal语法规定的运算对象(包括常量、变量、函数)、算术运算符、圆括号组成的有意义的式子。如:A+3.14159*5/8.4-Abs(-13)

1、算术运算符

常用的有以下6个算术运算符:+、-、*、/ (实数除)得到结果为实型.如

5.0/2.0=2.5, 5/2= 2. 5,4/2=2.0而不等于2。

div (整除) div它要求除数和被除数均为整型,结果也为整型。如10 div 3=3, 5 div 10=0,-15 div 4= -3。 div运算只取商的整数部分,参与div运算的两个对象不能为实型。

mod (求余),也只能用于整数运算,结果为整数。例如:10 mod 4=2 , -17 mod 4= -1 ,

4 mod (-3)=1, - 4 mod 3= -1,即 a mod b=a-(a div b)*b。

2、关系运算符: >、<、>=、<=、=、<>

3、逻辑运算符: NOT、 AND 、OR

4、运算优先顺序

如果一个表达式里出现两个或两个以上的运算符, 则必须规定它们的运算次序。

PASCAL语言规定运算优先级如下:

①表达式中相同优先级的运算符,按从左到右顺序计算

②表达式中不同优先级的运算符,从高到低进行计算

③括号优先级最高,从内到外逐层依次降低

④ not优先级为4

⑤ *、/、div、mod、and优先级为3

⑥ +、-、or优先级为2

⑦ =、<>、<、>=、<=、in优先级为1

五、标准函数

学习标准函数要注意:

每个标准函数对自变量的数据类型都有一定的要求,函数经过运算后得到的函数值的类型也是一定的。函数值的类型关系到该函数能够参加的运算。函数也可做自变量。

1、算术运算函数函数

绝对值函数abs(x) abs(-10)=10

平方值函数 sqr(x) sqr(4)=16

平方根值函数sqrt(x) sqrt(4)=2

2、逻辑判断函数

奇数函数 odd(x) integer Boolean odd(-11)=true,odd(10)=false

3、转换函数

截尾函数 trunc(x) real integer trunc(3.7)=3, trunc(-7.9)=-7

舍入函数 round(x) real integer round(12.7)=13, round(12.4)=12 round(-5.7)=-6

序数函数 ord(x) 函数值为字符在ASCII中的序号 ord(‘a’)=97, ord(‘0’)=48, ord(true)=1

字符函数 chr(x) x表示ASCII中的序号函数值为该序号代表的字符值。

chr(48)=’0’ , chr(32)=’’

4、顺序函数

前驱函数 pred(x) pred(5)=4, pred(‘b’)=’a’, pred(true)=false

后继函数 succ(x) succ(5)=6, succ(‘A’)=’B’

第三讲赋值语句

一、赋值语句

变量既然代表一个存储单元,其值是可变的,那么怎么赋值的,又是怎么改变的呢?可以通过赋值语句来进行。

1、赋值语句的格式

变量名:=表达式;其中“:=”称为赋值号。

2、执行过程

计算机先计算赋值号右边表达式的值,然后将表达式的值赋给变量。如:A:=9*8-2; A:=A+1 注意:1、赋值号与比较关系符是不同的两个符号,

2、赋值号两边的数据类型必须相容

3、变量在程序中如没有赋值,数值变量的值为0。

例1:下列赋值语句那些是错的?错在哪里?(var : x,y,z,a: integer; )

① x:=x+y ② x=y+z ③ x+y:=z

例2:写出下列程序的运行结果

var a,b,c:integer;

begin

a:=5; b:=8;

c:=a; a:=b; b:=c;

writeln('a=’,a,’ ',’b=’,b)

end.

思考题:如果不引入第三个中间变量,能否交换两个变量的值?编程序试一试。

学习两个过程:

① inc(x,n) 等价于 x:=x+n ② dec(x,n) 等价于 x:=x-n

inc(x) 等价于 x:=x+1 dec(x) 等价于 x:=x-1

第四讲输出语句

输出语句

输出语句的作用是先计算表达式的值,并按指定的格式输出到屏幕。

1、输出语句的两种格式

① write语句

格式: Write(表达式1,表达式2,……);

如:write(1,2,3,4); write('My name is Liping');

② writeln语句

格式: Writeln (表达式1,表达式2,……) 或 writeln

2、输出语句的功能

计算机执行到某一输出语句时,先计算出输出语句中的每个表达式的值,并将每一个表达式的值一个接一个地输出到屏幕上。

Write语句与writeln语句功能基本相同,但有两点不同:

① write语句将其后括号中的表达式一个接一个输出后,没有换行。而writeln语句则在输出各个表达式的值后换行。

② write语句至少必须输出一项内容,而writeln语句允许不输出任何内容,只是换行。

write(x,y); 等价于 write(x); write(y);

writeln(x,y); 不等价于writeln(x); writeln(y);

等价于write(x); writeln(y);

例1、以下两个程序段的输出分别为:

① write(1,2,3,4);write(5,6); ② writeln(1,2,3,4);write(5,6);

输出为:输出为:

123456 1234

56

例2:有三个小朋友甲乙丙。甲有50粒糖果,乙有43粒糖果,两有13粒糖果。现在他们做一个游戏。从甲开始,将自己的糖分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、丙三人各有多少粒糖果?

分析:在游戏中每个小朋友拥有的的糖果数是在变化的,用a,b,c三个变量分别存放甲乙丙在某一时刻所拥有的糖果数。对于每人,分糖后,他的糖果数一定为原来的糖果数 div 3(用整除恰可以表示多余的糖自己吃掉)。而其他两人则增加与这个小朋友现在拥有的糖果数。

程序如下:

var A,B,C:integer;

begin

A:=50; B:=43; C:=13; {初始糖果数}

A:=A div 3; B:=B+A; C:=C+A; {甲分糖果后,每个人拥有的糖果数变化情况}

B:=B div 3; A:=A+B; C:=C+B; {乙分糖果后,每个人拥有的糖果数变化情况}

C:=C div 3; A:=A+C; B:=B+C; {丙分糖果后,每个人拥有的糖果数变化情况}

writeln('A=',A,' B=',B,' C=',C);

end.

3、输出格式:数据的输出格式很重要,输出的数据所占的列数为场宽。

输出项中无指定格式符号,则按标准场宽输出,integer实际长度,real 17列,char 串长。

单场宽(输出整数时自定义)格式:e:n1 n1是正整数,表示e输出时所占的列数。 双场宽(输出实数时自定义)格式:e:n1:n2 n1,n2是正整数,且n1>n2, n1输出总列数含符号位、整数部分、小数点、小数部分,n2小数部分的列数。

数据不突破场宽限制时,单场宽一律向右看齐,双场宽实数向小数点看齐,多余的小数位补0。

数据实际位数超过场宽时,以保证数据的正确输出为原则。单场宽时自动将n1扩展到所需位数,双场宽时自动将n1扩展到所需位数,n2小于实际的小数位数时,则舍去多余的位数,内存中仍保留该数的精确值。

例3、写出下列程序的运行结果:

const s='abcd';

var i:integer; r:real; c:char; b:Boolean;

begin

i:=1234; r:=123.456; c:= '*’; b:=true;

writeln(i,i:5,i:3);

writeln(r,r:8:4,i:8:2);

writeln(c,c:4);

writeln(s,s:8,s:3);

writeln(b,b:5,b:3)

end.

运行结果

1234 12341234

1.2345600000E+02123.4560 123.46

* *

abcd abcdabcd

TRUE TRUETRUE

第五讲输入语句

读语句

格式: read(变量名表);

readln[(变量名表)];

语义:从键盘输入数据,依次赋值给相应变量。

变量名表为一串用逗号分隔的变量标识符。

数值型数据之间用空格或回车键分隔,最后一定要回车,表示输入完毕。

例4、设a,b,c为整型变量; 如需将a,b,c的值分别赋以10,20,30,写出对应read(a,b,c);语句的所有可能输入格式。

键盘输入① 10 20 30↓② 10 20↓③ 10↓④ 10↓

30↓ 20 30↓ 20↓

30↓

如将read(a,b,c)改为readln(a,b); readln(c);而达到本例同样的输入目的,上面哪些输入格式是有效的。

read语句是一个接一个地读数据,在执行完本Read语句( 读完本语句中变量所需的数据)后,下一个读语句接着从该数据输入行中继续读数据,也就是说,不换行。

read(a,b);

read(c,d);

read(e);

如果输入数据行如下:

1□2□3□4□5□6□↓↓表示回车键

Read后一定要有变量名表,readln可以没有输入项,只是读一个回车换行符。

例5、设有下列语句(所有变量为整型)

read(a,b,c);

readln(d,e); readln;

readln(f,g);

设输入文件input 中的数据如下:

1□2↓

3□4□5□6□7□8↓

9□10↓

11↓

12□13↓

分析:可以假设有一个数据指针,每读一个数据后,指针指向后一个数据,每执行一个readln 语句后,指针移到下一个数据行的开头。

变量值为:a b c d e f g

1 2 3 4 5 11 12

read(a,b); readln; read(c); 相当于 readln(a,b); read(c)

read(a); readln(b,c); 相当于 readln(a,b,c);

read(a); read(b); 相当于 read(a,b);

但是:readln(a); readln(b); 不等价于 readln(a,b);

为了避免可能出现的错误,建议在程序中按下列原则使用读语句:

①如果没有特殊需要,在一个程序中尽量避免混合使用read语句和readln语句;

②尽量用readln语句来输入数据, 一个数据行对应一个readln语句;

③由于执行read或readln语句时, 系统不会提供任何提示信息,因此,编程时最好在readln 语句之前加以适当提示,例如:

write('Input a,b,c:');

readln(a,b,c);

在执行时,屏幕上显示:

Input a,b,c:■

其中,"■"为光标。执行readln语句后,系统处于待输入状态, 只有输入所需数据后才继续往下执行。

第六讲分支结构

一、PASCAL中的布尔(逻辑)类型

布尔类型变量不能通过读语句输入给它们提供值,可以通过间接方式对布尔变量进行值的输入。

var a: boolean;

begin readln(a); {错误语句} writeln(a); end.

二、布尔表达式

逻辑运算符:or、and、not。它们分别相当于数学上的“或”、“与”和“非”。

三个运算符的运算对象为布尔值,其中and与or有两个或两个以上运算对象,not为单目运算,只有一个运算对象。

用布尔运算符把一个关系表达式或多个关系表达式连接起来的式子就称为布尔尔表达式。布尔表达式的值也为布尔值。它们的布尔运算真值表如下:

对于复杂的命题,我们可以用逻辑表达式来表示。例如,

“判断一个数是否大于0小于10”可表示为 (x>0) and (x<10)。

“判断一个数是否小于等于0或大于等于10”则表示为(y<=0) or (y>=10)。

“数学、英语成绩都大于等于90分或数学、英语两科成绩总分大于185分”

表示为 (math>=90) and (English>=90) or (math+English>185)。

例4_1、在你前面有一个长长的阶梯,如果你每步跨2阶,那么最后剩1 阶;如果你每步跨3阶,那么最后剩2 阶;如果你每步跨5阶,那么最后剩4 阶;如果你每步跨6阶,那么最后剩5 阶;如果你每步跨7阶,那么正好走完,一阶不剩,问你这条阶梯最少有多少阶?

三、IF语句

1、格式

① IF <布尔表达式> THEN 语句1;

执行IF语句时,先计算布尔表达式值,若为TRUE则执行语句,否则不执行任何操作;

② IF <布尔表达式> THEN 语句1 ELSE 语句2;

执行IF语句时,先计算布尔表达式值,若为TRUE则执行语句1,否则执行语句2

2、注意

①if、then、else为一条完整的语句,在else之前不能有分号;

②语句1、语句2若实际功能非一条语句所能描述,要写成复合语句。

例4_2:输入一个整数a,判断是否为奇数,是输出“yes”否则输出”no”。

var a:integer;

begin

write('a='); readln(a);

if a mod 2 =1 then writeln('yes') else writeln('no');

readln;

end.

例4_3:华联超市里卖电池,每个电池一元钱,若数量超过10个,则可打85折。

var num:integer; price,total:real;

begin

write('num='); readln(num); price=1;

if num>10 then price:=price*0.85;

total:=num*price;

writeln('Total=',total:3:2)

end.

第六讲IF语句嵌套和CASE语句

四、IF语句的嵌套

在if语句中,如果then子句或else子句仍是一个if语句,则称为if语句的嵌套。

例4_4、求三个给定的整数a,b,c中的最大数。

①if a>b then if a>c then max:=a { 使用if语句嵌套 }

else max:=c

else if b>c then max:=b

else max:=c;

② if a>b then max:=a else max:=b; { 更简单方法,不必嵌套 }

if max

但如有下面的嵌套语句:

if a>0 then if b<0

then y:=1

else y:=0;

那么else是a>0的否定,还是b<0的否定呢?pascal规定:else与它上面的距它最近的then配对。如果想让else和第一个if语句配对,则:

if a>0 then begin if b<0 then y:=1 end

else y:=0;

五、case语句

当多分支选择的各个条件由同一个表达式的不同结果值决定时,可以用case语句来实现。它的选择过程,很象一个多路开关,即由case语句的选择表达式的值,决定切换至哪一语句去工作。在实现多分支控制时,用case对某些问题的处理和设计,比用if语句写程序更简洁、更清晰。

①情况语句的一般形式:

case <表达式> of

<情况标号表1>:语句1;

<情况标号表2>:语句2;

:

else

<情况标号表n>:语句n

end;

case语句使用else形式,else前一语句后应有分号,这不同于if-then-else。

表达式的值必须是顺序类型,它可以是整型、布尔型及以后学习的字符型、枚举型和子界型。情况标号表是一串用逗号隔开的与表达式类型一致的常量序列。语句可以是任何语句,包括复合语句和空语句。

② case语句的执行过程

先计算表达式(称为情况表达式)的值,如果它的值等于某一个常量(称为情况常量或情况标号),则执行该情况常量后面的语句,在执行完语句后,跳到case语句的末尾end处。

③说明

情况常量是情况表达式可能具有的值,因而应与情况表达式具有相同的类型;

情况常量出现的次序可以是任意的;

同一情况常量不能在同一个case语句中出现两次或两次以上;

每个分语句前可以有一个或若干个用逗号隔开的情况常量;

每个常量后面只能是一个语句或一个复合语句。

例4_5、输入两个实数,再输入+、-、* 或 / 号,根据运算符输出这两个数的和、差、积或商。

var a,b,s:real; operator:char;

begin

writeln('input a,b:’); readln(a,b);

writeln('input operator:’); readln(operator);

case operator of

'+’: s:=a+b;

'-’:s:=a-b;

'*’:s:=a*b;

'/’:s:=a/b;

end;

writeln(a,operator,b, '=’,s:5:4)

end.

例4_6、输入某年某月份,输出其天数。

分析:程序中要判断输入的年份是否是闰年。判断闰年的算法是:如果此年份能被400整除,或者它能被4整除而不能被100整除,则它是闰年。否则,它是平年。

var year,month,days:integer;

begin

write('Input year,month:'); readln(year,month);

case month of

1,3,5,7,8,10,12: days:=31;

4,6,9,11 : days:=30;

2: if (year mod 400=0) or (year mod 100<>0) and (year mod 4=0)

then days:=29

else days:=28;

else days:=0;

end;

if days<>0 then writeln( year,‘-’,month ,’has ',days)

else writeln(‘Input error’)

end.

第七讲循环

一、FOR语句

格式

for 控制变量:=初值 to 终值 do 语句;

for 控制变量:=初值 downto 终值 do 语句;

For语句执行过程:

1、先将初值赋给左边的变量(称为循环控制变量);

2、判断循环控制变量的值是否已“超过”终值,如已超过,则跳到步骤5;

3、果末超过终值,则执行do后面的那个语句(称为循环体);

4、控制变量返回步骤2;

5、循环结束,执行for循环后语句。

说明:

循环控制变量必须是顺序类型。例如,可以是整型、字符型等,但不能为实型。

循环控制变量的值选用to则为递增;选用downto则递减。

循环控制变量的值“超过”终值,对递增型循环,“超过”指大于,对递减型循环,“超过”指小于。

循环控制变量的初值和终值一经确定,循环次数就确定了。但是在循环体内对循环变量的值进行修改,常常会使得循环提前结束或进入死环。建议不要在循环体中随意修改控制变量的值。

for语句中的初值、终值都可以是顺序类型的常量、变量、表达式。

例5_1、求S=1+2+3+…+ 100

var n,i : integer;{i为循环变量}

S : longint; {s为累加器}

begin

write('input n='); readln(n); s:=0;

for i:=2 to n do s:=s+i; {从2到n累加到s中}

writeln('1+2+3+…+ 100=',s);

end.

例5_2、输出斐波那契数列的前20项。

规律: F1=0 (n=1)

F2=1 (n=2)

Fn=Fn-1+Fn-2 (n>=3) 即 0,1,1,2,3,5,8,13,21,……

分析:由公式Fn=Fn-1+Fn-2,采用递推算法求解。

方法一

var a,b,i: longint;

begin

a:=0; b:=1; write(a, ', ',b);

for i=2 to 10 do

begin a:=a+b; b:=a+b; write( ', 'a, ', ',b); end;

end.

方法二

var a,b,c,i:integer;

begin

a:=0; b:=1; write(a, ', ',b);

for i=3 to 20 do

begin c:=a+b; a:= b; b:=c; write(', ',c); end;

end.

二、WHILE 当型循环语句

对于for循环有时也称为计数循环,当循环次数未知,只能根据某一条件来决定是否进行循环时,用while 语句或repeat语句实现循环更方便。

格式:

while 布尔表达式 do ;

<循环体>

while语句的执行过程为:

1、判断布尔表达式的值,布尔表达式的值为true时,执行do后面的语句(步骤2),否则执行步骤4;

2、执行循环体语句;

3、返回步骤1;

4、结束循环,执行while的下一个语句。

说明: while语句的特点是先判断,后执行。当布尔表达式成立时,重复执行do后面循环体的语句。

例4_3、斐波那契数列的第n项的值恰好大于10000,求n。

var a,b,c,n: integer;

begin

a:=0; b:=1; n:=2;

while c<=10000 do

begin

c:=a+b; a:=b; b:=c; n:=n+1;

end;

writlen('n=',n);

end.

例4_4、求两个正整数m和n的最大公约数。

分析:采用辗转相除法求解,分别用m、n、r表示被除数、除数、余数。

1、求m/n的余数r;

2、若r=0,则n为最大公约数,若r≠0,执行第3步;

3、将n的值赋于m,将r的值赋于n;

4、返回重新执行第1步。

var m,n,r:integer;

begin

writeln('Input m,n:'); readln(m,n);

r:=m mod n;

while r<>0 do

begin

m:=n; n:=r; r:=m mod n

end;

writeln('The greatest common divide is: ',n);

end.

二、REPEAT-UNTIL直到型循环语句

repeat-until语句的含义是“重复执行循环,直到指定的条件为真时为止”。

直到循环语句的一般形式:

Repeat

语句1;

:

语句n;

until 布尔表达式;

repeat与until之间的所有语句称为循环体。

说明:

1、repeat语句的特点是:先执行循环,后判断结束条件,因而至少要执行一次循环体。

2、repeat-until是一个整体,它是一个(构造型)语句,不要误认为repeat是一个语句,until是另一个语句。

3、repeat循环体可以是若干个语句,不需用begin和end。

while循环和repeat循环是可以相互转化的。

例5_5、两个正整数的最大公约数,可用repeat-until循环实现:

本例输出语句中有m、n的原值,所以在程序中增加了两个中间变量a、b。

var m,n,r,a,b : integer;

begin

write('Input m,n='); readln(m,n);

a:=m; b:=n;

repeat

r:=a mod b; a:=b; b:=r;

until r=0;

writeln('The greatest common divide of ',m, 'and ',n, 'is ',a);

end.

一般说来,用for 循环比较简明,只要能用for循环,就尽量作用for循环。只在无法使用for循环时才用while循环和repeat-until循环, for 循环在大多数场合也能用whiel和repeat-until循环来代替。一般for循环用于有确定次数的循环,而while和repeat-until 循环用于未确定循环次数的循环。

第七讲循环嵌套

循环嵌套用于一个循环的循环体中又包含循环结构程序时。

例5_6、1!+2!+…+10!的值。

分析:这个问题是求1到10自然数的阶乘之和。

var s,t: longint;

i,j:integer;

begin

s:=0;

for i:=1 to 10 do

begin

t:=1;

for j:=1 to i do t:=t*j; { 求N!的值t }

s:=s+t; { 累加N!的值t }

end;

writeln('s=',s);

end.

以上的程序是一个二重for循环嵌套。这是比较容易想到的方法,但实际上对于求n!,可以求出的(n-1)!再乘上n即可得到,而无需重新从1再累乘到n。程序可改为:var s,t:longint;

i:integer;

begin

S:=0; t:=1;

for i:=1 to 10 do

begin t:=t*i; s:=s+t end;

writeln('s=',s);

end.

显然程序二的效率要比程序一高得多。程序一要进行1+2+…+10=55次循环,而程序二进行10次循环。

例5_7、上街采购,用500元钱买了90只鸡, 其中母鸡一只15元,公鸡一只10元,小鸡一只5元,正好把钱买完。问母鸡、公鸡、小鸡各买多少只?

var i,j,k:integer;

begin

for i:=1 to 33 do

for j:=1 to 50 do

begin

k:=90-i-j;

if 15*i+10*j+5*k=500 then writeln(i:5,j:5,k:5);

end;

end.

例5_8、求100-200之间的所有素数。

分析:我们可对100-200之间的每一整数进行判断,判断它是否为素数,是则输出。而对于任意整数i,根据素数定义,我们从2开始到找到i的第一个约数。若找到第一个约数,则i 必然不是素数。否则i为素数。

var i,x : integer;

begin

for i:=101 to 200 do

begin

x:=2;

while (x<=trunc(sqrt(i))) and (i mod x<>0) do

begin

x:=x+1;

if x>trunc(sqrt(i)) then write(i:6)

end;

end; writeln

end.

将for循环改为while循环可以减少循环次数。

例5_9、输出下面的数字图形:

1

222

33333

4444444

555555555

var row,column,n,d:integer;

begin

writeln('n=' ); readln(n);

d:=20;

for row:=1 to n do

begin

write(' ':d-row);

for column:=1 to 2*row-1 do write(row);

writeln;

end

end.

例5_10、三人对ABCD的比赛名次预测如下:

A B C D

甲 1 3

乙 1 4

丙 3 2

比赛结果,三人都只说对了一个,问A、B、C、D的实际名次。

var a,b,c,d:shortint;

begin

for a:=1 to 4 do

for b:=1 to 4 do

if a<>b then

for c:=1 to 4 do

if (a<>c) and (b<>c) then

begin

d:=10-a-b-c;

if (ord(a=1)+ord(b=3)=1) and (ord(c=1)+ord(d=4)=1)

and (ord(a=3)+ord(d=2)=1)

then writeln('A=',a, 'B=',b, 'C=',c, 'D=',d) end;

end.

五、用GOTO语句实现循环

例5_11、两个正整数的最大公约数,可用GOTO实现循环

label a;

var m,n,r : integer;

begin

write('Input m,n='); readln(m,n);

write('The greatest common divide of ',m, 'and ',n, 'is ')

a:r:=m mod n; m:=n; n:=r;

if r<>0 then goto a;

writeln(m);

end.

GOTO语句是无条件转向语句,GOTO语句的使用可能会使程序出现乱线团式的结构,应限制使用。Pascal语言的发明者沃思说过:“如果一个程序员在Pascal程序中使用goto语句,往往说明他还没有学会用Pascal语言来思考。”

第八讲枚举类型

枚举类型

Pascal程序不仅用于数值处理,还更广泛地用于处理非数值的数据。例如,性别、月份、星期几、颜色、单位名、学历、职业等。

1、枚举类型的定义

格式: type 枚举类型标识符=(标识符1,标识符2,…,标识符n)

2、枚举类型数据特点

①枚举元素只能是标识符;

例如,下列类型定义是合法的:

type days=(sun,mon,tue,wed,thu,fri,sat);

colors=(red,yellow,blue,white,black,green);

而下列类型定义是错误的:

type colortype=('red','yellow','blue','white');

numbers=(1,3,5,7,9);

定义枚举类型时列出的所有枚举元素构成了这种枚举类型的值域(取值范围)。

②枚举类型属于顺序类型

根据定义类型时各枚举元素的排列顺序确定它们的序号,且序号从0开始。

例如,定义type days=(sun,mon,tue,wed,thu,fri,sat);

则, ord(sun)=0,ord(mon)=1,……,以此类推。

枚举类型中的第一个元素无前趋,最后一个元素无后继。

pred(sat)=fri; succ(sun)=mon; ord(sat)=6;

③同一个枚举元素不能出现在两个或两个以上的枚举类型定义中。如下列定义是错误的:

type color1=(red,yellow,white);

color2=(blue,red,black);

因为red属于枚举类型color1和 color2

④枚举类型变量只能进行赋值运算和关系运算,不能进行算术运算和逻辑运算。

在枚举元素比较时,实际上是对其序号的比较。

例如定义如下:

type days=(sun,mon,tue,wed,thu,fri,sat);

colors=(red,yellow,blue,white,black,green);

var color:colors;

weekday:days;

则下面语句是合法的: weekday:=mon;

if weekday=sun then write('rest');

而下面语句是不合法的:

mon:=1; 错把枚举值当成变量名;

weekday:=blue;枚举值blue不属于枚举变量weekday的值域;

read(color); 枚举类型变量不能用读语句进行赋值;

write(weekday); writeln(blue);不能通过写语句输出枚举类型的变量值和枚举值。

⑤可以把变量的说明与类型的定义合并在一起,如:

var holiday,workday:(sun,mon,tue,wed,thu,fri,sat);

color:(red,yellow,blue,white,black,green);

对枚举数据的输入与输出可通过间接方式进行。输入时,一般可输入一个代码,通过程序进行转换,输出时,也只是打印出与枚举元素相对应的字符串。这在后面的例题中将有使用示例。

二、枚举类型的应用

例1、输入今天是星期几的序号,输出明天是星期几的英文单词(星期天序号为0)。

type weekday=(sun,mon,tue,wed,thu,fri,sat);

var i : integer;

today,tomorrow : weekday;

begin

writeln('What date is it'); readln(i);

case i of { 根据输入转换成枚举型} 0:today:=sun;

1:today:=mon;

2:today:=tue;

3:today:=wed;

4:today:=thu;

5:today:=fri;

6:today:=sat;

end;

if (today=sat) then tomorrow:=sun else tomorrow:=succ(today);

write('The tomorrow is ');

case tomorrow of

sun:writeln('sunday');

mon:writeln('monday');

tue:writeln('tuesday');

wed:writeln('wednesay');

thu:writeln('thursday');

fri:writeln('friday');

sat:writeln('saturday');

end;

end.

枚举类型是一种有序类型,所以枚举类型的变量可以作为循环变量。

学习枚举类型时,注意枚举元素与变量的区别,以及枚举与变量的输入输出方法的处理。

第九讲子界类型

子界类型

如果我们定义一个变量为integer型,那么它的取值范围一般为-32768~32767。而事实上,每个程序中所用的变量的值都有一个确定的范围。例如,人的年龄一般为1到120岁,一年中的月数为1到12月,一月中的天数为1到31天等等。

如果能在程序中对所用的变量的值域作具体规定,就便于检查出那些不合法的数据,这就能更好地保证程序运行的正确性且在一定程度上节省内存空间。

子界类型能很好解决上面的问题。此外,在数组的定义中,常用到子界类型,以规定数组下标的范围。

1、定义格式:

type 子界类型标识符=常量1..常量2

常量1称为子界的下界,常量2称为子界的上界;

①下界和上界必须是同一顺序类型(该类型称为子界类型的基类型),且上界的序号必须大于下界的序号。

例如type age=1..100;

letter='a' ..'z';

②可以直接在变量说明中定义子界类型。如:

type letter='a'..' z ';

var ch1,ch2:letter;

可以合并成:

var ch1,ch2:'a'..'d';

2、子界类型数据的运算规则

①凡可使用基类型的运算规则同样适用该类型的子界类型。

例如,可以使用整型变量的地方,也可以使用以整型为基类型的子界类型数据。

②对基类型的运算规则同样适用于该类型的子界类型。

例如,div,mod要求参加运算的数据为整, 因而也可以为整型的任何子界类型数据。

③基类型相同的不同子界类型数据可以进行混合运算。

例如:设有如下说明:

var x:1..100;

y:1..500;

z:1..1000;

a:integer;

则下列语句是合法的: a:=Sqr(x)+y+z; z:=x+y

下列语句: y:=x+z+a; 当x+y+a的值在1~500范围内时是合法的,否则会出错。

pascal基础知识

PASCAL语言程序设计 第一部分语言基础知识 一、程序结构: 例1.1计算半径为R的圆面积S {程序首部} program Area; {说明部分——数据描述} const pi=3.14159;{常量定义} var s,r:real;{变量定义} {执行部分——程序体} Begin readln(r);{读入数据给r} s:=pi*sqr(r);{求圆的面积} writeln('s=',s);{在屏幕上输出面积} end. 上述程序第一行称为程序首部。其中用花括号(注释可以用{ }或(* *)来表示)括起来的内容是注释,注释除了给人看,增加程序的可读性外,对程序编译和运行不起作用。一个程序可以包含多个出现在不同处注释,亦可无注释。程序第二行是常量说明,程序第三行是变量说明。程序从begin到end 都是执行(语句)部分

(1)程序首部 例1.1的第一行称为程序首部。program是保留字,接着是程序名(由你依据“标示符”规则自行定义),最后以分号表示程序首部结束,下面是程序主体的开始。程序首部在一个Turbo Pascal(仅在Turbo Pascal中有效)程序中并非必须出现,它是可选的。写上它仅起了文档作用。因此,在时间有限的情况下,如果用Turbo Pascal编程完全可以省略程序首部。 (2)程序体 a.说明部分 说明部分用于定义和说明程序中用到的数据,由单元说明、标号说明、常量说明、类型说明、变量说明、函数或过程说明组成,并且这些数据的说明次序必须按照以上次序。但是一个简单的Turbo Pascal程序也可以不包含说明部分,也就是说说明部分是可选的。 b.执行部分 执行部分描述了程序要执行的操作。它必须以一个Turbo Pascal保留字begin开始,以保留字end后跟句点结束,其间是一些执行具体操作的语句,并且以分号作为语句之间的分隔符。begin 和end必须成对出现,这是一个Turbo Pascal 程序所必须有的。紧跟end之后的句号表示执行部分的结束,也表示整个程序的结束。此后的任何语句都无效。Turbo

PASCAL语言基础

第一章、什么是计算机语言 计算机语言是计算机软件中非常独特的一部份,它属于系统软件,但又和应用软件息息相关。它的作用是:使人类能够用某些命令、指令去让计算机为人类进行数值、逻辑运算。计算机语言中,只有一种语言是计算机能自己识别的,就是最底层、最难的机器语言,这是一般人类所无法接受的语言,所以在此基础上,人们发展出了许多高级的语言,这些语言的共同特点是:人类无需去掌握高深的机器语言,只要掌握这些更容易理解、更贴近人类的高级语言,用高级语言编出程序后,再由语言解释、编译系统去把程序解释、编译成机器语言让计算机去执行。目前最常用的高级语言大致有以下几种: BASIC语言:是一般计算机入门者的首选语言,命令少,容易掌握,从BASIC,BASICA,GWBASIC,TRUE BASIC,TURBO BASIC,QUICK BASIC等一直发展到目前的WINDOWS环境下的VB。 PASCAL语言:最适合科学计算、数据处理的语言,运行、编译速度最快,从TURBO PASCAL 5 .5, 6.0, 7.0一直到现在的WINDOWS环境下的DELPHI以及LAZARUS等面向对象的PASCAL,以及目前信息学竞赛使用的FREE PASCAL各个版本。 C语言:主要适用于应用软件的开发,是计算机人员的必修课,但在算法实现、建模方面不如PASCAL方便。从C,C++,一直到现在的WIONDOWS环境下的VC、C++等。 实际上,我们日常所用的各种软件,包括Windows,WORD、EXCEL、各种游戏等等,全部都是使用程序设计语言编写出来的软件,我们只有掌握了程序设计语言,才能进行计算机软件的开发。 在我们的信息学竞赛中,所有的题目都是非常复杂的数值与逻辑运算,所以世界上广泛采用PASCAL语言作编程工具,我们采用的是FREE PASCAL2.0版本或者相近版本。 我们学习信息学竞赛除了要掌握程序设计语言,能够使用程序设计语言编写程序外,还有一部分要掌握的更加重要的内容就是——算法设计,它能够使我们的程序运行速度更快、效率、精度更高,使我们的程序取得快人一步的优势,算法设计在本书中我们将接触一部分。 第二章、PASCAL语言入门 第一节、PASCAL语言的特点 以法国数学家命名的PASCAL语言是世界上使用最广泛,最有效的语言之一。其主要特点是:严格的结构化形式;丰富完备的数据类型;运行能力、效率高;查错能力强等等。与BASIC、C等语言相比,PASCAL语言更适合科学计算,运行速度最快,编译能力最强,编译成的可执行文件也最小。 PASCAL语言是编译执行的语言(BASIC语言是解释执行),因此在速度与效率上都比BASIC语言提高了一个档次。所谓解释执行,是在程序环境下编写好程序后,执行它时是一句一句地由语言解释器翻译成机器语言,由计算机去执行,计算机能在程序编辑时就发现程序中错误,但程序运行速度慢;而编译执行是在程序环境中编写好程序后,执行时先由编译器把整个程序编译成机器语言,然后再由计算机执行,计算机必须在编译程序时才能发现程序中的错误,但程序运行速度快。 第二节、FREE PASCAL的集成环境

Pascal语言入门

第一课初识Pascal语言 导航: 文件类型 信息学奥林匹克竞赛是一项益智性的竞赛活动,核心是考查选手的智力和使用计算机解题的能力。选手首先应针对竞赛中题目的要求构建数学模型,进而构造出计算机可以接受的算法,之后要写出高级语言程序,上机调试通过。程序设计是信息学奥林匹克竞赛的基本功,在青少年朋友参与竞赛活动的第一步必须掌握一门高级语言及其程序设计方法。 一、Pascal 语言概述 PASCAL语言也是一种算法语言,它是瑞士苏黎世联邦工业大学的N.沃思(Niklaus Wirth)教授于1968年设计完成的,1971年正式发表。1975年,对PASCAL语言进行了修改,作为"标准PASCAL语言"。 PASCAL语言是在ALGOL 60的基础上发展而成的。它是一种结构化的程序设计语言,可以用来编写应用程序。它又是一种系统程序设计语言,可以用来编写顺序型的系统软件(如编译程序)。它的功能强、编译程序简单,是70年代影响最大一种算法语言。 二、Pascal 语言的特点 从使用者的角度来看,PASCAL语言有以下几个主要的特点: ⒈它是结构化的语言。PASCAL语言提供了直接实现三种基本结构的语句以及定义"过程"和"函数"(子程序)的功能。可以方便地书写出结构化程序。在编写程序时可以完全不使用GOTO语句和标号。这就易于保证程序的正确性和易读性。PASCAL语言强调的是可靠性、易于验证性、概念的清晰性和实现的简化。在结构化这一点上,比其它(如BASIC,FORTRAN77)更好一些。 ⒉有丰富的数据类型。PASCAL提供了整数、实型、字符型、布尔型、枚举型、子界型以及由以上类型数据构成的数组类型、集合类型、记录类型和文件类型。此外,还提供了其它许多语言中所没有的指针类型。沃思有一个著名的公式:"算法+数据结构=程序"。指出了在程序设计中研究数据的重要性。丰富的数据结构和上述的结构化性质,使得PASCAL可以被方便地用来描述复杂的算法,得到质量较高的程序。

编程的基本认识介绍

编程的基本认识介绍 简单的说,编程就是为了借助于计算机来达到某一目的或解决某个问题,而使用某种程序设计语言编写程序代码,并最终得到结果的过程。计算机虽然功能十分强大。可以供你上网、打游戏、管理公司人事关系等等,但是没有程序,它就等于是一堆废铁,不会理会我们对它下达的“命令”。于是,我们要驯服它,只有通过一种方式——程序,这也是我们和计算机沟通的唯一方式。那程序到底是什么呢?程序也就是指令的集合,它告诉计算机如何执行特殊的任务。打个比方说,它好比指导你烹调菜品的菜谱或指挥行驶一路到达目的地的交警(或者交通路标)。没有这些特殊的指令,就不能执行预期的任务。计算机也一样,当你想让计算机为你做一件事情的时候,计算机本身并不能主动为我们工作,因此我们必须对它下达指令,而它根本不会也不可能听懂人类自然语言对事情的描述,因此我们必须使用程序来告诉计算机做什么事情以及如何去做?甚至对最简单的任务也需要指令,例如如何取得击键,怎样在屏幕上放一个字母,怎样在磁盘中保存文件等等。这么麻烦,连这些东西编程都要考虑!怪不得人家说编程好难!你错了,其实许多这样的指令都是现成的,包含在处理芯片中内臵于操作系统中,因此我们不必担心它们工作,他们都是由处理

器和操作系统来完成的,并不需要我们来干预这些过程。上面讲到的计算机本身不会主动的做任何事情。因此我们要通过程序的方式来让计算机为我们“效劳”。而这个过程就是我们“编”出来的。编程可以使用某一种程序设计语言来实现,按照这种语言的语法来描述让计算机要做的事情。我们这里所讲的语法和外语中的语法完全两码事,这里讲的语法只是读你的程序书写做出一写规定而已。写出程序后,再由特殊的软件将你的程序解释或翻译成计算机能够识别的“计算机语言”,然后计算机就可以“听得懂”你的话了,并会按照你的吩咐去做事了。因此,编程实际上也就是“人给计算机出规则”这么一个过程。随计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。计算机所能识别的语言只有机器语言,即由构成的代码。但通常人们编程时,不采用机器语言,因为它非常难于记忆和识别。 目前通用的编程语言有两种形式:汇编语言和高级语言。汇编语言的实质和机器语言是相同的,都是直接

计算机基础

计算机基础 第1章计算机基础知识 1.1 概论 计算机是人类社会20世纪的重大科技成果之一。 1.1.1 计算机的发展过程 ●1946年第一台电子数字计算机ENIAC(Electronic Numerical Integrator And Computer) 在美国宾夕法尼亚大学诞生。 ●从第一台电子计算机的诞生到现在,电子计算机的发展大致可分为四代,并正在向第 五代发展: ●第一代:电子管计算机时代(从1946年第一台计算机研制成功到50年代后期)。 主要特点是采用电子管作为基本元件,程序设计使用机器语言或汇编语言;主要 科学和工程计算;运算速度每秒几千次至几万次。 ●第二代:晶体管计算机时代(从50年代中期到60年代后期)。主要采用晶体管 为基本元件,体积缩小、功耗降低、提高了速度(每秒去处可达几十万次)可靠 性;用磁芯作主存储器,外存储器采用磁盘、磁带等;程序设计采用高级语言; 出现了操作系统。应用范围除进行传统的科学和工程计算外,还应用于数据处理 等更广泛的领域。 ●第三代:集成电路计算机时代(从60年代中期到70年代前期)。采用集成电路 作为基本元件,体积减小,功耗、价格等进一步降低,速度(几十万次到几百万 次)及可靠性有更大的提高;用半导体存储器代替了磁芯存储器;在软件方面, 操作系统日臻完善;计算机设计思想已逐步走向标准化、模块化和系列化,应用 范围更加广泛。 ●第四代:大规模集成电路计算机时代(从70年代初至今)。主要功能器件采用大 规模集成电路(LSI);并用集成度更高的半导体芯片作主存储器;运算速度可达 每秒百万次至亿次;在系统结构方面,多处理机系统、分布式系统、计算机网络 的研究进展迅速;系统软件的发展不仅实现了计算机运行的自动化,而且正在向 智能化方向迈进;各种应用软件层出不穷,极大地方便了用户。 ●微型机优点:体积小、耗电少、价格低、性能高、可靠性好、使用方便等。 ●从结构和功能等方面看,计算机的发展方向为:巨型化、微型化、网络化、多媒体化。 1.1.2 计算机的工作特点 ●计算机能快速计算

程序设计基础知识.doc

第1章 程序设计基础知识 随着科学技术的迅猛发展,计算机技术日新月异,计算机程序设计语言也层出不穷 。那么,什么是程序语言?什么是程序设计?应该学哪一种程序语言?如何进行程序设计?这些都是程序设计初学者首先遇到的问题,也是程序设计的基本问题、共性问题。 不论是什么样的计算机语言,其程序设计的基本方法是相同的。本书作为程序设计 的入门教材,将以C语言程序设计为主线,介绍程序设计的基本概念和基本方法,讲述C 语言的语法规则和实用的C程序设计技术。作为全书的开篇,本章就程序设计的基本知识作概括性讨论,首先介绍计算机的工作原理,然后重点介绍算法的概念及特征、设计算法的方法和策略、流程图的表示和结构化程序设计方法等内容。需要说明的是,有些概念和方法要随着后续各章的深入学习才会有深刻的理解。 1.1 计算机的工作原理 1.1.1 计算机的指令系统 大家知道,计算机中的存储器是由千千万万个的电子线路单元组成,每个单元有两个稳定的工作状态(例如二极管或三极管的截止和导通,磁性元件的消磁和充磁等),分别以0和1表示,因此计算机存储的信息是以二进制形式存储的。人们要计算机处理信息,就要给计算机规定一些最基本的操作,并用0和1表示这些操作,这就构成一条一条的指令。在设计的时候,就给它规定了一套指令,称之为指令系统(instruction set)。不同型号的计算机,指令系统也不相同。 一条指令由操作码(opcode)和操作数(oprand)两部分构成,例如在Z80中有这样一条指令: 11000110 00000110 操作码操作数 操作码11000110表示加法操作,操作数是00000110。这条指令的功能是把操作数00000110与计算机累加器中的数相加,相加的和仍放在累加器中,例如先在累加器中放一个数00000101,执行这条指令的过程如图1.1所示。这条指令用十六进制表示为:C6 06。 1.1.2 计算机的解题过程 计算机解题要由人事先告诉它解题的方法和步骤,一步一步地去执行。如果人们设计

软工习题答案-华工软件工程-习题答案参考-试卷资料-电信学院大三

3.3 你认为一个系统分析员应该具有哪些理想素质和基础知识?请说明理由。 答:较强的沟通能力和理解力,因为系统分析员需要通过与用户交流、对现有系统的观察来获取需求,并理解其中业务逻辑和用户需求; 良好的逻辑分析能力以及表达能力,因为系统分析员需要对获取的需要进行分析与建模; 常规文档的写作能力,因为系统分析员需要将对目标系统的各种需求编写成需求规约; 很强的学习能力,因为系统分析员需要掌握新理念新技术新方法来解决客户需求; 另外,系统分析员需要了解软件开发过程,具备系统开发管理及相关经验。 3.5 对于下面的每个场景,思考在需求获取期间什么是最有用的信息来源: (1)开发一个系统取代现有的销售订单处理系统。 (2)开发软件控制充当外科医生的机器人。 (3)开发软件操作出租车仪表。 (4)为国防部开发一个安全的战场通信系统。 答:(1)现有销售订单处理系统及其用户; (2)外科医生; (3)市场上类似系统; (4)战场通信领域专家; 3.6 举例说明一个系统的三个不同类型的非功能需求。 答:采用B/S开发模式;系统持续可用性;系统易用性; 3.9 软件需求规约主要包括哪些内容?自己寻找一个实例,亲自写一个需求规约。 答:软件需求规约主要包括引言、信息描述、功能描述、行为描述、检验标准、参考书目、附录等。 一个医院管理信息系统需求规约的例子: 1 引言 1.1 编写目的 本软件需求说明书是医院管理信息系统是实现的依据,是所有参与此项目的人的共同工作的基础,为医院和开发人员提供参考。 对开发软件的主要功能和环境条件等进行了描述,统一开发标准,为开发者提供详细设计和进行开发提供基础。同时,也作为软件测试和验收的依据。 本软件预期的读者是用户(即医院相关人员),需求分析人员,设计实现人员,开发人员,测试人员等。

PASCAL语言基础

PASCAL语言基础(1) 1.1 基本思想 编程就是描述要实现的动作以及对这些动作进行操作的数据描述。 编程类似一篇英文文章,由字母、数字、标点符号和空格等按照一套PASCAL语言命令、语法、规则而组成的字符序列。 不言而喻,PASCAL语言的有关命令、语法规则一定要熟记并严格遵守。如果模糊不清,那是学习程序语言的最大障碍,给以后的学习留下极大的隐患。 任一个程序,都包括①程序首部;②程序说明部分;③语句部分。不可缺少。 (1)程序首部 由PROGRAM程序名构成。注意程序名的规则。 (2)程序说明部分 事先要分析问题的有关数据,确定类型;数据必须加以说明,然后才能在程序的语句部分使用。因为不同的数据类型,就有不同的运算规则。 程序的说明部分,必须严格按照以下顺序书写: 标号说明部分;(LABEL) 标号定义部分;(CONST) 类型定义部分;(TYPE) 变量说明部分;(V AR) 过程与函数说明部分; 注意:每一部分都可能为空,既不一定全包括。 ③语句部分 它是程序的执行部分,由一系列语句组成。每一个语句执行一定的功能,完成一定的任务,每个语句间用分号(;)分隔开。语句部分以BEGIN开头,以END结尾,如在END后面加上点号(.)表示整个程序结束. 语句部分最另人关注的应是变量的数据传递、转移、变化、输出格式以及有关动作的有机联系和顺序。 一个事件的解决首先是人脑提出、发现可以表达的数学语言,如果人找不到这种解决问题的数学行为办法,那么计算机是不会自己解决的。从这个意义上讲,要指挥电脑计算或操作,首先是人脑会模仿计算机进行一些必要的运行、运算,在这不用介入到具体的语言环境中,主要是方法设计。这也是通常所说的"算法领先"的原则。 1.2 数据、表达式、赋值语句和输入输出 (一)数据 了解、正确应用数据类型的种类,与学习的深浅程度成正比。 (1)简单类型 标准类型: 整形(integer) 实型(real) 字符型(char) 布尔型(boolean) 枚举型(type..=..) 用户自定义类型{子界型(type..=..) (2)数据类型 结构类型 数组类型(type..arry..of) 集合类型(type..set of..) 记录类型(type.=record..) 文件类型(type..=file of..) 指针类型(type..=↑..) 要参加初中组信息学(计算机)竞赛,看来起码要学会简单类型,数组类型的数据处理; 热点内容是应用循环,数组,字符,变量、灵活表达,学递推算法、回溯算法的基本思想。 pascl初步教程基础(2) 1.3标准数据类型的含义及符号 (1)整型数的取值范围:-32768<=n<=32768;整型运算操作:+、-、*、div、mod;整型关系操作:=、<>、>=、<=,结果为布尔型;有关整型的标准函数: 整型函数

常用课程的英文翻译

常用课程的英文翻译 高等数学 Advanced Mathematics 工程数学 Engineering Mathematics 中国革命史 History of Chinese Revolutionary 程序设计 Programming Design 机械制图 Mechanical Drawing 社会学 Sociology 体育 Physical Education 物理实验 Physical Experiments 电路 Circuit 物理 Physics 哲学 Philosophy 法律基础 Basis of Law 理论力学 Theoretical Mechanics 材料力学 Material Mechanics 电机学 Electrical Machinery 政治经济学 Political Economy 自动控制理论 Automatic Control Theory 模拟电子技术基础 Basis of Analogue Electronic Technique 数字电子技术 Digital Electrical Technique 电磁场 Electromagnetic Field 微机原理 Principle of Microcomputer 企业管理 Business Management 专业英语 Specialized English 可编程序控制技术 Controlling Technique for Programming 金工实习 Metal Working Practice 毕业实习 Graduation Practice 毕业设计 Graduation Project XX课程设计 Project of XX 电力系统稳态分析 Steady-State Analysis of Power System 电力系统暂态分析 Transient-State Analysis of Power System 电力系统继电保护原理 Principle of Electrical System's Relay Prot ection 电力系统元件保护原理 Protection Principle of Power System 's El ement 电力系统内部过电压 Past Voltage within Power system

PASCAL基础知识

PASCAL基础知识 第一节数据类型 1.常量: 整型常量Maxint表示计算机系统所允许的最大整数,-Maxint-1表示最小整数 实型常量:实型常量包括正实数,负实数,零。表示方法有两种:十进制表示法和科学计数法。 科学计数法:有位数,底数和指数构成。 字符常量:单个引号括起来 布尔常量: 符号常量:符号常量必须先定义后使用CONST 2.变量:自定义标识符必须以字母(包括下划线)开头,后面的字符可以是字母或数字。 3.算术表达式:常用的6个算术运算符:+,-,*,/(实数除),DIV(整除),mod(求余)。 /(实数除)得到的结果为实数4/2=2.0而不等于2。 DIV(整数除)要求参与运算的两个数都是整型,结果也为整形。10 DIV 3=3,5 DIV 10=0,DIV运算只取商的整数部分。 mod(求余)也只能用于整数运算,结果也为整形 4.pascal标准函数: odd() 判断变量是否为奇数 Abs() 绝对值 Sqr() 求平方 Sqrt() 求平方根 Chr(数值表达式) 返回以数值表达式值为编码的字符。数值表达式的取值范围0-255。 ord() 返回字符的ASCII码,结果为整形。在字符范围内和chr()函数互为反函数。 Trunc(1.999)为截尾函数其值为1。 round() 舍入函数 random()随机函数 mod()求余函数 succ(x) 求x的后继succ(‘b’)=’c’ succ(5)=6 succ(false)=true pred(x) 求x的前导pred(‘b’)=’a’ pred(5)=4 pred(true)=false 第三节输出语句(WRITE语句) 1.write 语句write(表达式1,表达式2,表达式3,....); 2.writeln 语句writeln(表达式1,表达式2,表达式3,...);和write的不同之处是输出后 有换行。 第四节输入语句 1.写语句的输出格式:对整数的默认输出格式是十进制形式,对实数的输出,默认的形式 是科学计数法形式。在pascal中一个数据所占的宽度称为“场宽”或“字段宽”。 turbo pascal中默认的字段宽为: 整形:实际长度实型:17 布尔型:4或5 字符串:串长 2.指定场宽: 1)指定单场宽:指定单场宽后,所有数据不再按标准场宽输出,而按指定场宽输出。 若数据的实际长度小于指定场宽时,一律“向右靠齐,左留空格”。对于标准实型数据

freepascal语言与基础算法

freepascal语言与基础算法 1. 引言 1.1 概述 本文将探讨Freepascal语言与基础算法的关系和应用。Freepascal是一种强大且灵活的编程语言,被广泛应用于各个领域的软件开发中。而基础算法则是计算机科学的核心内容,对于解决问题和优化程序至关重要。通过结合这两者,我们可以深入理解Freepascal语言以及在实际项目中如何使用算法来提高效率和性能。 1.2 文章结构 本文共分为五个部分。首先,我们将介绍Freepascal语言的背景与发展历程,探讨其特性和优势,并列举一些应用领域和案例。接着,我们会概述基础算法的基本概念和分类,并介绍算法设计与分析原则。然后,我们会详细介绍几种常见的基础算法,并给出示例加以说明。在第四部分中,我们将探讨Freepascal语言在基础算法中的具体应用,包括数据结构支持与实现方式、排序算法实现示例与性能分析以及查找算法实现示例与应用场景讨论。最后,在结论部分,我们将总结Freepascal语言与基础算法的关系,并讨论其发展前景和实践意义,同时展望未来研究的方向。

1.3 目的 本文的目的在于给读者提供有关Freepascal语言与基础算法之间联系的深入理解。通过阐述Freepascal语言作为一种强大且广泛应用的编程语言以及基础算法作为解决问题和优化程序所必不可少的工具,我们希望读者能够了解如何利用Freepascal语言来实现各种常见的基础算法,并在实际项目中应用这些算法来提高效率和性能。此外,本文还将探讨Freepascal语言与基础算法之间的潜在联系,以及可能产生的新思路和研究方向。 2. Freepascal语言介绍: 2.1 背景与发展 Freepascal是一种高级编程语言,最初由Anders Hejlsberg 发起并于1995年首次发布。它是一种免费的、开源的、跨平台的编程语言,主要用于快速开发可靠、高效且易于维护的软件应用。 自推出以来,Freepascal得到了广泛的采用和用户社区支持。它凭借其强大和灵活的功能迅速崛起,并成为许多开发者选择的首选语言之一。尤其是在科学计算、数值分析、嵌入式系统和图形界面应用程序等领域有着广泛的运用。 2.2 特性和优势 Freepascal具有以下特性和优势: (1) 跨平台性:Freepascal能够在多个操作系统(如Windows、Linux、Mac OS

开发利器 Lazarus 入门

开发利器Lazarus 入门

lazarus的旧标识 图-2 lazarus的启动标志4、功能简介

图-3 lazarus 功能标注 1)、主菜单括File、Edit、Serach、View、Project、Run、Tools、Environment、Help 九个子菜单选项。 2)、信息窗口(Message View)信息窗口在代码浏览器窗口和代码编辑器窗口的下部,在编译和链接过程中出现的一些信息将显示在信息窗口中。 3)、Object Inspector(对象编辑器)对象编辑器的功能是实现对象(尤其是组件)的属性设置,创建事件处理过程并进行管理。对象编辑器分为下面的三个部分: 1.对象列表 对象列表是一个组合框,包含了当前窗体上的所有组件。有时一些组件因为太小或 没有明显的标志,利用鼠标点击不容易选中,这时可以利用对象列表组合框来选择 该组件。 2.属性页( Properties ) 属性页中列举了当前被选中的对象(比如说组件)的属性。可以在程序设计的过程中直接对这些属性进行修改,也可以在程序运行期间通过代码进行修改。在有些属性 的前面有一个带有方框的加号标志,表明该属性是由一些子属性组成的。点击该加 号标志就可以展开该属性,同时加号标志变成了一个带有方框的减号标志。 3.事件页( Event )

通常情况下,事件处理过程为空。可以双击事件右面的组合框来添加事件的处理过 程。如果要共用已存在的事件处理过程,可通过下拉式组合框进行选择。 4)、Syntax Highlighting (语法高亮) 5)、Souce Edit Code (代码编辑窗口) 代码窗口处于窗体窗口之下。因为在Lazarus中,设计用户界面直接在窗体中进行,运行结 果和设计样板完全一致。当部件被放到窗体上时,会自动生成大部分的用户界面代码。您所 应做的只是在它为您生成的框架中加入完成所需功能的程序段而已。点动Form1的状态行使 代码窗口可见。这个窗口中是代码编辑器。可以在其中书写Lazarus应用程序的源代码。 当程序中含有不止一个窗口时,会有几个库单元的源程序出现在代码编辑器中。代码编辑器 的标题条中显示了当前正在编辑的库单元文件名。要查看某一特定程序的源代码,只需用鼠 标点动写有该库单元文件名的页标签,就可以对该库单元进行编辑了。 6)、Editor Options(编辑器选项) 包括Standard、Additional、Misc、System、Dialogs五部分,每个部分又有几个编译选 项。代码编辑器为代码的输入和编辑提供了一个方便的环境。 7)、Form Designer (表单设计器)Forms窗口是编程中大部分设计的工作区域。可以把 部件放在窗体中,通过移动位置、改变尺寸等操作随心所欲地安排它们,以此来开发应用程 序的用户界面。您可以把窗体想象成一个可以放置其它部件的容器。一个真正的应用程序可 能有不止一个窗口,您可以选用不同的窗体进行设计。其它窗体可以是对话框(Dialog Box)、数据录入框等。 Lazarus的IDE采用和Delphi VCL类似的LCL(Lazarus Class Libraries) 做成。LCL设计成与widget无关,可以在不同的API集下运行。Lazarus与Delphi一样是真正的"双向"工具,何谓"双向",即界面(form)的改变立即就会在代码(code)中反映出来,反之亦然。Lazarus拥有一个智能化的代码编辑器,具有语法加亮,函数及其参数自动完成(codel nslght),方便的代码内部查询功能(codeExplorer)等。Lazarus的开发环境是高度可定制的,工具条的位置和内容都可以根据自己需要进行修改,可以在IDE中增加第三方开发的工具。或者加入定制的向导。Lazarus中单元信息文件以".PP"结尾,表单设计文件是".LFM",这和Delphi的".DFM"文件一样,但是不同之处是编译之前必须先把.LFM转换为".LRS"文件(用Lazarus开发的文件扩展名为".LRS")。 下面我们举一个编程简例: 1)、运行Lazarus 2)、创建工程 通常在开发一个应用程序的过程中,会存在一些不同类型的文件,如Pasca l代码文件、窗体文件、资源文件等。为了集中管理这些文件,可以创建一个"工程"进行统一管理。创建工程目录如:root usercao。 1.创建一个新的工程在Lazarus集成开发环境中通过菜单命令Project | New Application 创建一个新的应用程序,Lazarus会自动创建工程文件及相关的其他文件。

2023年注册结构工程师-基础考试备考题库附带答案10

2023年注册结构工程师-基础考试备考题库附带 答案 第1卷 一.全考点押密题库(共50题) 1.(单项选择题)(每题 1.00 分) 昆虫能分泌信息素。下列是一种信息素的结构简式: CH3(CH2)5CH=CH(CH2)9CHO 下列说法正确的是: A. 这种信息素不可以与溴发生加成反应 B. 它可以发生银镜反应 C. 它只能与1mol H2发生加成反应 D. 它是乙烯的同系物 正确答案:B, 2.(单项选择题)(每题 2.00 分) 某匀质地基承载力特征值为120kPa,基础深度的地基承载力修正系统为1. 5,地下水位深2m,水位以上天然重度为16kN/m3,水位以下饱和重度为20kN/m3,条形基础宽3m,则基础埋置深度为3m时,按深宽修正后的地基承载力特征值为: A. 159kPa B. 171kPa C. 180kPa D. 186kPa 正确答案:B, 3.(单项选择题)(每题 1.00 分) 非齐线性方程组AX=b中未知量的个数为n,方程的个数为m,系数矩阵A的秩为r,则( )。 A. 当r=m时,方程组AX=b有解 B. 当r=n时,方程组AX=b有惟一解 C. 当m=n时,方程组AX=b有惟一解

4.(单项选择题)(每题 2.00 分) 在饱和软粘土地基上进行快速临时基坑开挖。不考虑坑内降水。如果有一个测压管埋置在基坑边坡位置内,开挖结束时的测压管水头比初始状态会: A. 上升 B. 不变 C. 下降 D. 不确定 正确答案:B, 5.(单项选择题)(每题 1.00 分) 将1L4mol/L氨水和1L2mol/L盐酸溶液混合,混合后OH-矿离子浓度为: A. 1mol/L B. 2mol/L C. 8.0X10-6mol/L D. 1. 8X 10-5mol/L 正确答案:D, 6.(单项选择题)(每题 1.00 分) —平面简谐波沿x轴正方向传播,振幅A=0. 02m,周期T=0. 5s,波长λ= 100m,原点处质元的初相位φ =0,则波动方程的表达式为: A. y=0.02cos2π(t/2-0.01x) (SI) B. y=0.02cos2π(2t-0.01x) (SI) C. y=0.02cos2π(t/2-100x) (SI) D. y=0.02cos2π(2t-100x) (SI) 正确答案:B, 7.(单项选择题)(每题 1.00 分) 三个偏振片P1,P2与P3堆叠在一起,P1与P3的偏振化方向相互垂直,P2与P1的偏振化方向间的夹角为30°。强度为I0的自然光垂直入射于偏振片P1,并依次透过偏振片P1,P2与P3,则通过三个偏振片后的光强为: A. I0/4 B. 3I0/8 C. 3I0/32 D. I0/16 正确答案:C, 8.(单项选择题)(每题 2.00 分) 结构试验前,应进行预载,以下结论哪一条不当? A. 混凝土结构预载值不可以超过开裂荷载 B. 预应力混凝土结构预载值可以超过开裂荷载 C. 钢结构的预载值可以加到使用荷载值 D. 预应力混凝土结构预载值可以加至使用荷载值 正确答案:B, 9.(单项选择题)(每题 1.00 分) 模拟信号经过下列哪种转换,才能转化为数字信号? A. 信号幅度的量化 B. 信号时间上的量化 C. 幅度和时间的量化

计算机基础理论知识

计算机基础理论知识 1.世界上第一台计算机ENIAC于1946年诞生于美国宾夕法尼亚大学,主要的元件是电子管,这 也是第一代计算机所采用的主要元件。冯•诺依曼和他的同事们设计出的逻辑结构(即冯•诺依曼结构)对后来计算机的发展影响深远。冯•诺依曼体系结构计算机的基本思想之一的是存储程序控制。计算机在人们预先编制好的程序控制下,实现工作自动化。 2."裸机"是指没有安装任何软件的机器。 3.第1代计算机是电子管计算机。第二代计算机是晶体管计算机。第3代计算机的主要元件是 采用小规模集成电路和中规模集成电路。第4代计算机的主要元件是采用大规模集成电路和超大规模集成电路。 4.24×24点阵共576个点,需要576位二进制位表示一个汉字的字模。因8位二进制位组成一个 字节,所以有72个字节。 5.计算机的信息由二进制编码表示,常用的有EBCDIC码和ASCII码。后者较为常用。 6.网络操作系统与普通操作系统相比最突出的特点是网络通信、资源共享。 7.计算机程序是指令的有序序列,执行的过程实际上是执行指令的过程。 8.计算机系统是一个整体,既包括硬件也包括软件,两者不可分割。计算机系统由硬件 (Hardware)和软件(Software)两大部分组成。 9.DOS是一种单用户操作系统,而UNIX是目前最流行的分时操作系统。 10.数字通道中,用数据传输速率表示信道的传输能力,即每秒传输的二进制位数。 11.总线分为内部总线和系统总线。内部总线连接同一部件的内部结构,系统总线连接同一计 算机内部的各个部件。 12.鼠标在微机和工作站上广泛使用,在Windows多窗口的操作环境里,使用鼠标是最方便的, 也是最常用。 13.中央处理器: Central Processing Unit,缩写为CPU,主要包括运算器(ALU)和控制器 (CU)两大部件。 14.根据磁盘容量计算公式:磁盘容量=磁道数×扇区数×扇区内字节数×面数×片数,计算得 知每扇区字节数为512。 15.计算机病毒实际是一种特殊的计算机程序,可以自我复制,并能相互传染。计算机病毒的 主要特征是寄生性、破坏性、传染性、潜伏性和隐蔽性。 16.并非所有的小数都能转成二进制;内存中的信息一旦断电就会消失;汉字的机内码是内码, 输入码是外码。

计算机科学与技术专业教学大纲

《计算机科学与技术专业》教学大纲 前言 本教学大纲作为计算机科学与技术专业教学的指导纲要,和各年级培养计划一起形成完整的教学计划指导体系。 本教学大纲的修订按照“追踪学科发展,体现技术前沿,理论基础和实际技能并重”的原则,力求保证教学大纲的先进性、课程内容的前沿性和实用性。 计算机科学与技术专业的教学内容主要包括四部分:公共基础课、专业基础课、专业方向课和专业选修课。公共基础课为高等数学、外语、大学物理等全校性课程。专业基础课为深入学习本专业的专业课程所需的基础课程;由于本专业源于构造性计算科学,故专业基础课中包括的数学课程较多;这一部分课程在本专业培养计划中占有相当重要的地位,它为专业课程的进一步深入学习起到很好的铺垫和支撑作用。专业方向课一般开设在第三、第四学年,讲授较深层次的计算机理论和计算机科学技术问题,使学生对计算机科学和技术有一个全面、具体、深层次的理解和认识。专业选修课在第四学年开设,主要讲授计算机各发展方向上所涉及到的前沿技术;通过专业选修课的学习,使学生全面了解计算机的应用领域、技术特点以及各应用领域所涉及的关键技术,为自己确定将来的发展方向。专业教学的三个部分以C语言为主线贯穿整个教学、实验、课程设计、毕业设计等各个环节。每一部分所包括的具体课程如下: 1、专业基础课 计算机导论电路原理数字逻辑离散数学 C语言程序设计 数据结构计算方法计算机组成原理汇编语言程序设计数据库原理 2、专业方向课 操作系统编译原理计算机网络计算机系统结构 软件工程微型计算机技术 3、专业选修课 VB程序设计管理信息系统 Delphi程序设计计算机图形学人工智能导论 单片机原理与应用多媒体技术通信原理 修定日期:2002年6月9日

全国信息学奥赛NOI培训教程(最新整理)

全国信息学奥赛NOI培训教程(最新整理) 使用”视图”———-"文档结构图”可大大方便阅读本文档目录 计算机基础知识-—-—--————-——-——--—-———————-——6 第一章计算机基础常识 第二章操作系统简介 第三章计算机网络 第四章计算机信息安全基础知识 Pascal 语言----——----—————-—---———————-—--————19 Pascal语言概述与预备知识 第一章开始编写pascal语言程序 第二章Pascal语言基础知识 第三章顺序结构程序设计 第四章选择结构程序设计 第五章循环结构程序设计 第六章数组与字符串 第七章函数和过程 第八章子界与枚举类型

第九章集合类型 第十章记录与文件类型 第十一章指针 第十二章程序调试 常用算法与策略-————-—————---——--—-———————-—---———56 第一章算法的概念 第二章递归 第三章回溯 第四章排序 第五章查找 第六章穷举策略 第七章贪心算法 第八章分治策略 数据结构--—-—--—---——-———--——-—-———-—————-—101 第一章什么是数据结构 第二章线性表 第三章栈 第四章队 第五章树 第六章图

动态规划-————--————--——————-——-—-—-———--—-—144 第一章什么叫动态规划 第二章用动态规划解题 第三章典型例题与习题 第四章动态规划的递归函数法 第五章动态规划分类1 数学知识及相关算法 第一章有关数论的算法 第二章高精度计算 第三章排列与组合 第四章计算几何 第五章其它数学知识及算法 图论算法-———--————-—-——-——---—---———-———-——192 第一章最小生成树 第二章最短路径 第三章拓扑排序(AOV网) 第四章关键路径(AOE网) 第五章网络流 第六章图匹配 搜索算法与优化—-—-——----—-——--—-—--—————————

相关主题
文本预览
相关文档 最新文档