当前位置:首页 >> 计算机软件及应用 >>

pascal教程-自学完整版


Pascal教程

目录
? ? ? ? ? ? ? ? ? 第一章 第二章 第三章 第四章 第五章 第六章 第七章 第八章 第九章 算法、程序设计与编译器基础 Pascal基础 程序设计初步 枚举、子界与数组 过程与函数 集合、记录与文件 指针等动态类型 面向对象与单元设计 特效

第一章
算法、程序设计与编译器基础

目录
? 第一讲 算法基础知识算法描述方法 ? 第二讲 程序语言 ? 第三讲 Pascal编译器基础

第一讲
算法基础知识算法描述方法

用计算机解决实际问题的四个步骤
? 分析问题,把实际问题抽象为一个一般性的 数学问题 ? 根据分析,设计出求其解的方法和步骤 ? 用某种形式(如图形、自然语言、类计算机 语言)表达以设计好的算法 ? 在计算机上编辑、调试和测试编制好的程序, 直到正确满足问题的需求

算法的描述方法
? ? ? ? ? ? 例1.1.1: 交换a、b两数值 定义 c a→c b→a c→b

N-S图
? 1973年,美国学者I.Nassi和 B.Shneiderman提出了一种在流程图中完全 去掉流程线,全部算法写在一个矩形框内, 在框内还可以包含其它框的流程图。 ? N-S图也被称为盒图或CHAPIN图。

N-S图
? ? ? ? 功能域明确; 很容易确定局部和全局数据的作用域; 不可能任意转移控制; 很容易表示嵌套关系及模块的层次关系。

N-S图
A P T A B F A
直到P

直到型

B

循环
当P

顺序

选择

A

当型

第二讲
程序语言

编程语言
? ? ? ? 机器语言 汇编语言 高级语言 脚本语言

第三讲
Pascal编译器基础

编译器
? ? ? ? ? ? ? Turbo Pascal 7 Free Pascal 1.0/2.0 CP Pascal Super Pascal Delphi 7.0 Lazarus GUIDE

Turbo Pascal 7.0

Free Pascal

快捷键
? ? ? ? ? ? ? ? F2 Alt + Enter Alt + X F7 F8 F9 Alt + F9 Ctrl + F9 ? ? ? ? ? ? ? ? 保存 全屏/小窗口转换 关闭 单步执行当前程序 单步执行当前程序 导出exe程序 纠错 调试并导出exe程序

文件关联
.pas .bak .o .exe .ppu .tpu

第二章
Pascal基础

目录
? ? ? ? ? 第一讲 第二讲 第三讲 第四讲 第五讲 Pascal语言特点、优点与缺点 Pascal程序结构 Pascal基本符号、保留字和标识符 Pascal标准数据类型、常量与变量 Pascal标准函数、过程、运算符与表达式

第一讲
Pascal语言特点、优点与缺点

Pascal特点
? 以法国数学家命名的Pascal语言现已成为使 用最广泛的语言之一,其主要特点有:严格 的结构化形式;丰富完备的数据类型;运行 效率高;查错能力强。

Pascal优点
⒈ 结构化 ? Pascal可以方便地书写出结构化程序。这就 保证程序的正确性和易读性。在结构化这一 点上,比其它算法语言更好一些。

Pascal优点
⒉ 数据类型丰富 ? Pascal提供了整数型、实数型、字符型、布 尔型、枚举型、子界型以及由以上类型构成 的数组类型、集合类型、记录类型和文件类 型。此外,还提供了其它许多语言中所没有 的指针类型。丰富的数据结构和上述的结构 化性质,使得Pascal可以被方便地用来描述 复杂的算法。

Pascal优点
⒊ 适用性好 ? 既适用于数值运算,也适用于非数值运算领 域。有些语言只适用于数值计算,有些语言 则适用于商业数据处理和管理领域。Pascal 的功能较强,能广泛应用于各种领域。

Pascal优点
⒋ 书写较自由 ? 不象有些算法语言那样对程序的书写格式有 严格的规定。Pascal允许一行写多个语句, 一个语句可以分写在多行上,这样就可以使 Pascal程序写得象诗歌格式一样优美,便于 阅读,但一行不可超过257个字符。

Pascal缺点
? 网络支持 ? 面向对象 ? GUI

第二讲
Pascal程序结构

Pascal程序例子
program ex ( input , output ); uses crt label 1; const pi=3.1415926; type int : 0..1000; var r : int; s : real; function fac ( r : int ) : real; var s : real; begin s:=r*pi*r; fac:=s; end; procedure sum; begin s:=fac ( r ); end; begin 1: ClrScr; write (‘r=‘); readln ( r ); sum; writeln (‘s=‘,s); readln; goto 1; end.

第三讲
Pascal基本符号、保留字和标识符

基本符号
? ABCDEFGHIJKLMNOPQRST UVWXYZ ? abcdefghijklmnopqrstuvwx yz ? 0123456789 ? + - * / = <> > < <= >= ( ) [ ] { } := . , : ; ‘ .. ^

保留字
? (1)程序、函数、过程符号 :program , function , procedure ? (2)说明部分专用定义符号:array , const , file , label , of , packed , record , set , type , var ? (3)语句专用符号 :case , do , downto , else , for , forward , goto , if , repeat , then ,to until , while , with ? (4)运算符号:and , div , in , mod , not , or ? (5)分隔符号:begin , end ? (6)空指针常量 :nil ? 共36个 ? 补充:unit implementation interface string……

标识符
? 要求 ? 标准标识符 ? 自定义标识符

要求
? 以字母或下划线开头的数字字母下划线序列 ? 例:a、ab、a1、max、_12、_ab211、a_1、 a_等

自定义标识符使用时的注意要点
? 不能与保留字同名 ? 如果与标准标识符同名,强行改变标准标识 符原来意义 ? 最好有一定意义,使程序具有可读性 ? 可以使用大写、小写、大小写混用,意义不 变

第四讲
Pascal标准数据类型、常量与变量

常用数据类型
? ? ? ? ? ? 整型(整数类型) 实型(实数类型) 字符型 布尔类型 枚举类型 子界类型 ? ? ? ? ? ? 数组类型 集合类型 记录类型 文件类型 指针类型 对象类型

常量
? ? ? ? 定义以后不能改变值的 如: const st = ‘abc’ 句型:const 自定义标识符 = 值

变量
? ? ? ? 定义以后可以改变值的 如: var i : integer; 句型: var 自定义标识符 : 数据类型

第五讲
Pascal标准函数、过程、运算符与 表达式

函数与过程
? 子程序 ? 过程 procedure ? 函数 function

运算符
运算符 +,-,* 算术运算 / div,mod =,<> <,> 关系运算 <=,>= in 逻辑运算 集合运算 赋值运算 not,and,or,xor +,-,* := 标准类型,枚举型,子界型,集合 顺序类型、集合 布尔 集合 除文件类型以外各种数据类型 布尔 集合 除文件类型以外各种数据类型 操作数类型 整型或实型 整型或实型 整型 除文件类型以外各种数据类型 标准类型,枚举型,子界型 布尔 结果类型 整型或实型 实型 整型

表达式
? 表达式指由常量、变量、函数、括号、集合 及运算符连接起来的式子。表达式中的变量 必须要有一个明确的值,单个的常量、变量、 函数都可以看成是一个表达式 ? 运算先后顺序 ? not ? * , / , div , mod , and ? + , - , or ? 关系运算符、in

句型
? := ? 变量名/函数名:=表达式

例题
? 例2.5.1 ? 两个数差为100布尔表达式: 1: abs ( a – b ) = 100; 2: ( a + 100 = b ) or ( a – 100 = b )

例题
? 例2.5.2 ? 能够被3和5整除布尔表达式: 1: ( a mod 3 = 0 ) and ( a mod 5 = 0) 2: a mod ( 3 * 5 ) = 0

例题
? 例2.5.3 ? 闰年表达式: (year mod 400 = 0) or (year mod 4 = 0) and (year mod 100 <> 0)

例题
? 例2.5.4 ? 求圆周长语句: 1: s = 3.14 * r * r ; 2: s = 3.14 * sqr ( r );

第三章
程序设计初步

目录
? ? ? ? ? ? ? ? 第一讲 第二讲 第三讲 第四讲 第五讲 第六讲 第七讲 第八讲 读入语句与输出语句 复合语句 if语句及if语句的嵌套 case语句 for循环 while循环与repeat循环 goto语句 小技巧

第一讲
读入语句与输出语句

读入语句
? 语法: ? read(…) ? readln(…)

? 技巧: ? 读入回车后退出程序: readln; end。

输出语句
? 语法: ? write(…) ? writeln(…)

? 小技巧: ? 场宽

例题
? 例3.1.3:读入两个实型,交换后输出,精确到0.01。 program p3_1_3_1 ( input , output ); var a , b , c : real; begin readln ( a , b ); c:=a; a:=b; b:=c; writeln ( a:0:2 , b:0:2 ); readln; end.

例题
? 例3.1.3:读入两个实型,交换后输出,精确到0.01。 program p3_1_3_2 ( input , output ); var a , b : real; begin readln ( a , b ); a := a + b; b := a – b; a := a – b; writeln ( a:0:2 , b:0:2 ); readln; end.

例题
? 读入一个整数,将其平方后减去原数的绝对 值,最后求值的平方根,输出最后的值,保 留整数。 program p3_1_4 ( input , output ); var n : integer; begin readln ( n ); writeln ( sqrt ( n * n - abs ( n ) ) : 0 : 0 ); readln; end.

第二讲
复合语句

语法
? 复合语句 begin ………… end; ? end前句子末尾可不加’;’

第三讲
if语句及if语句的嵌套

语法
? if + ( boolean 表达式 ) + then + 句子

? if + ( boolean 表达式 ) + then + 句子1 + else + 句子 2
? 注意:else前句子末尾不加“;”

例题
? 例3.3.1:将两个整数大的放入max,小的放入min,并输出。 program p3_3_1 ( input , output ); var max , min , t : integer; begin readln ( max , min ); if max<min then begin t := max; max := min; min := t; end; writeln ( max , min ); readln; end.

例题
? 例3.3.2:计算下列函数
program p3_3_2 ( input , output ); var x , y : integer; begin readln ( x ); if x<0 then y = -1 else if x=0 then y = 0 else y = 1; writeln ( y ); readln; end.

1 x>0 y= 0 x=0 -1 x<0

例题
? 例3.3.3:读入三个数排序 program p3_3_3 ( input , output ); var a , b , c : integer; begin readln (a,b,c); if a>b then if b>c then writeln ( a ,’ ’, b , ’ ’, c ) else if a>c then writeln ( a , ’ ’, c , ’ else writeln ( c , ’ ’, a , ’ else if c>b then writeln ( c , ’ ’, b , ’ ’, a ) else if a>c then writeln ( b , ’ ’, a , ’ else writeln ( b , ’ ’, c , ’ readln; end.

’, b ) ’, b ) ’, c ) ’, a );

第四讲
case语句

语法
? case语句 case 表达式 of 常数表1:语句1; 常数表2:语句2; …… 常数表n:语句n; else 语句n+1 end; ? end前句子末尾可不加’;’,end与case相对,而非begin ? else前可加’;’

例题
? 例3.4.1:随机产生两个数,读入一个符号,并运算。 program p3_4_1 ( input , output ); var a , b : integer ; ch : char; begin randomize; a := random (100); b := random (100); readln ( ch ); case ch of ‘+’ : writeln ( a , ’+’ , b , ’=’ , a + b ); ‘-’ : writeln ( a , ’-’ , b , ’=’ , a - b ); ‘*’ : writeln ( a , ’*’ , b , ’=’ , a * b ); ‘/’ : writeln ( a , ’/’ , b , ’=’ , a / b ); end; readln; end.

第五讲
for循环

语法
? for 变量 := 表达式 to 表达式 do 语句 ? for 变量 := 表达式 downto 表达式 do 语句 ? ? ? ? 要求: to 循环 初值 <= 终值 downto 循环 初值 >= 终值 变量:顺序类型

例题
? 例3.5.1:输出从1到100所有的整数。 program p3_5_1 ( input , output ); var i : integer; begin for i:=1 to 100 do writeln ( i ); readln; end.

例题
? 例3.5.2:倒序输出从1到100所有的偶数。 program p3_5_2 ( input , output ); var i : integer; begin for i:=1 downto 100 do if i mod 2 = 0 then writeln ( i ); readln; end.

例题
例3.5.3:警察查一个杀人犯。A说,是B杀的;B说:不是我;C说:是A杀的。 已知有且只有一个人说了谎,问是人谁杀的。 program p3_5_3 ( input , output ); var a , b , c : boolean ; begin for a := false to true do for b := false to true do for c := false to true do if ord ( a ) + ord ( b ) + ord ( c ) = 2 then if ord ( not ( b ) ) + ord ( b ) + ord ( not ( a ) ) = 2 then if not ( a ) then writeln ( 'a' ) else if not ( b ) then writeln ( 'b' ) else writeln ( 'c' ); readln(); end. ?

注意事项
? 例3.5.4 ? 例3.5.5 ? for 循环的终值不能变化。 ? for 循环的指针可以变化。

第六讲
while循环与repeat循环

语法
? while Boolean表达式 do 句子 ? repeat 句子… until Boolean表达式 ? 注: ? until前可以不加‘;’

例题
? 例3.6.1:读入一行数字,以回车为结束标志,求最大值。 program p3_6_1_1 ( input , output ); var a , max : integer; begin max := -32768; repeat read ( a ); if a > max then max := a; until eoln; readln; writeln ( max ); readln; end.

例题
? 例3.6.1:读入一行数字,以回车为结束标志,求最大值。 program p3_6_1_2 ( input , output ); var a , max : integer; begin max := -32768; while not ( eoln ) do begin readln ( a ); if a > max then max := a; end; readln; writeln ( max ); readln; end.

小技巧
? while 句型 与 repeat 句型 转换

? while句型表达式 = not ( repeat句型表达式 )

例题
? 3.6.2 顺序输出1到100内所有整数。 program p3_6_2_1 ( input , output ); var i : integer; begin i := 1; while i <= 100 do begin writeln ( i ); i := i + 1; end; readln; end.

例题
? 3.6.2 顺序输出1到100内所有整数。 program p3_6_2_1 ( input , output ); var i : integer; begin i := 1; repeat writeln ( i ); i := i+1; until i = 100 ; readln; end.

第七讲
goto语句

语法
? label 数字 ? 数字 : ? goto 数字 ? label 数字 ? goto 数字 ? 数字 :

例题
? 例3.7.1:顺序输出从1到100所有整数。 program p3_7_1 ( input , output ); label 1; var i : integer; begin i := 1; 1: writeln ( i ); if i <= 100 then goto 1; readln; end.


? 标号在 1..9999 之间,且不一定要按顺序。 ? goto语句可由其他语句代替。 ? 尽可能不用goto语句。

第八讲
小技巧

integer与char的特殊表达式
? integer &+二进制数 ? char #+字节型 ? integer $+十六进制数

注释
? {……} ? (*……*) ? //……

Pascal对汇编语言的支持
? 语法: asm …… end

第四章
枚举、子界与数组

目录
? ? ? ? ? ? 第一讲 第二讲 第三讲 第四讲 第五讲 第六讲 枚举型 子界型 一维数组 字符串 多维数组 排序法

第一讲
枚举型

语法
? 方法一 ? type 类型名 = ( 标示符1 , 标示符2 … ); ? var 变量名 : 类型名

? 方法二 ? var 变量名 : ( 标示符1 , 标示符2 … );

枚举型
? ? ? ? 是顺序类型 不能直接read/write,要用case句型 允许直接赋值,没有运算符 类型定以后允许作为函数、过程参数,函数 值

例题
例4.1.1:当输入星期几的数字,能输出它的后一天是星期几。 program p4_1_1 ( input , output ); type week=(sun,mon,tue,wed,thu,fri,sat); var i : integer; day , succday : week; begin readln(i); case i of 1:day:=mon; 2:day:=tue; 3:day:=wed; …… end; if (day=sat) then succday:=sun else sucday:=succ(day); write ('The next day is '); case succday of sun: writeln('sunday'); mon: writeln('monday'); tue: writeln('tuesday'); ……. end; end.

第二讲
子界型

语法
? 方法一 ? type 类型名 最小值 .. 最大值; ? var 变量名 : 类型名

? 方法二 ? var 变量名 : 最小值 .. 最大值;

子界型
? shortint = -128..127; ? boolean没有子界型 ? 类型定以后允许作为函数、过程参数,函数 值 ? 子界型也是顺序类型,也可以用for语句

例题
? 例4.2.1:顺输出从1到100所有整数。 program p4_2_1 ( input , output ); var i : 1 .. 100; begin for i := 1 to 100 do writeln ( i ); readln; end.

第三讲
一位数组

语法
? 方法一 ? type 类型名 = array [ 初始值 .. 终值 ] of 类 型名; ? var 变量名 : 类型名 ? 方法二 ? var 变量名 :array [ 初始值 .. 终值 ] of 类 型名;

数组
? 不能直接赋值,用for语句 ? 数组每一个数据表示方法:变量名+下标 (e.g. a[i+1]); ? 类型定以后允许作为函数、过程参数,函数 值

例题
? 例4.3.1:读入100个数,先顺序输出,再倒序输出。 program p4_3_1 ( input , output ); var a : array [ 1 .. 100 ] of integer; i : 1 .. 100; begin for i := 1 to 100 do read ( a[i] ); for i := 1 to 100 do writeln ( a[i] ); for i := 100 downto 1 do writeln ( a[i] ); readln; end.

例题
例4.3.2:随机产生100个数,先输出,再将第一个数移到最后,其余每个数 向前移一位。 program p4_3_2 ( input , output ); var a : array [ 1 .. 100 ] of integer ; i : integer; begin randomize; for i := 1 to 100 do begin a [ i ] := random ( 100 ); writeln ( a [ i ]); end; for i := 1 to 100 do begin a [ i ] := a [ i ] + a [ i + 1 ]; a [ i + 1 ] := a [ i ] - a [ i + 1 ]; a [ i ] := a [ i ] - a [ i + 1 ]; end; for i := 1 to 100 do writeln ( a [ i ]); readln; end. ?

思考题
? 将一个数分离为一个数组。 ? 有一个数要插入一个顺序数组,使其仍为顺 序。 ? 有两个50位顺序数组,整合为一个顺数组, 并输出。 ? 有三个50位顺序数组,整合为一个顺数组, 并输出。

第四讲
字符串

语法
? var 变量名 : string [ 数字 ] ? 0 <= 数字 <= 255 ? 如果不写下标,默认为255位

? 每一个数据表示方法同一位数组。

比较
array of char string

不能直接读入、输出 可以直接读入、输出
可以对每一个数据赋值 不能对每一个数据赋值

不能进行整体赋值 位数可以定义很大

可以进行整体赋值

位数最多255位 有标准函数、过程

没有标准函数、过程

运算符
? ? ? ? + ’turbo’+#0+’pascal’+’7.0’=’turbo pascal7.0’ 参与运算的类型可以是string和char 运算结果类型为string

例题
? 例4.4.1:读入一个字符串,输出其中所有的字 母。 program p4_4_1 ( input , output ); var st : string; i : integer; begin readln ( st ); for i := 1 to length ( st ) do write ( st [i] ); readln; end.

第五讲
多维数组

语法
? 大致同一位数组 ? array [初始值1..终值1,初始值2..终值2,…] of … ? sz[下标1,下标2..]

? 例4.5.1:输出右图 program p4_5_1(input,output); var a : array [ 1..5,1..5 ] of 0..9; i,j:integer; begin for i:=1 to 5 do for j:=1 to 5 do a[i,j]:=0; a[1,1]:=1; for i:=2 to 5 do for j:=1 to i do if j>1 then a[i,j]:=a[i,j-1]+1 else a[i,j]:=a[i-1,1]+1; for i:=1 to 5 do begin for j:=1 to i do write(a[i,j],' '); writeln; end; readln; end.

例题

第六讲
排序法

排序法目的
? 将一个数组升序排列或降序排列。

? ? ? ? ? ?

选择法排序 冒泡排序 插入法排序 快速分类排序 归并排序 基数排序

选择法排序
4 1 1 1 1 1 4 2 2 2 2 2 4 2 2 2 2 2 4 4 4 4 4 4 4 5 5 5 5 5 3 3 3 3 3 1 1 1 1 1 4 4 4 4 4 5 5 5 5 5 1 1 1 1 1 2 2 2 2 2 5 5 5 5 5

冒泡排序
4 1 1 1 1 1 1 1 4 2 2 2 2 2 2 2 4 2 2 2 2 2 2 2 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 3 3 3 3 3 3 3 5 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 5 5 5 5 5 5 1 1 1 1 1 1 1 2 2 2 2 2 2 2 5 5 5 5 5 5 5

例题
?例4.6.1 选择法排序 program p4_6_1(input,output); const n=7; var a:array[1..n] of integer; i,j,k,t:integer; begin write('Enter date:'); for i:= 1 to n do read(a[i]); writeln; for i:=1 to n-1 do begin k:=i; for j:=i+1 to n do if a[j]<a[k] then k:=j; if k<>i then begin t:=a[i]; a[i]:=a[k]; a[k]:=t; end; end; write('output data:'); for i:= 1 to n do write(a[i]:6); writeln; end.

思考题
? 冒泡排序

第五章
过程与函数

目录
? ? ? ? ? ? ? ? 第一讲 第二讲 第三讲 第四讲 第五讲 第六讲 第七讲 第八讲 子程序概念 标准过程及标准函数 自定义函数 自定义过程 变参与值参 全程变量与局部变量 forward 子程序的嵌套递归初步

第一讲
子程序概念

子程序
? 函数 function

? 过程 procedure

第二讲
标准过程与标准函数

链接

第三讲
自定义函数

语法
? function <自定义标示符>(<值参1>,<值参 2>…:<类型1>;…;var <变参1>,<变参 2>…:<类型1>;… ):<值类型>; ? {说明部分,同主程序} ? begin ? …… ? 函数名:=<同类型表达式>; ? end;

语法
? 定义后与标准函数同样使用

例题
? 例5.3.1:求5!+4!+3!+2!+1!。 program p5_3_1(input,output); function fac(n:integer):longint; var i:integer; begin i:=n; n:=1; for i:=i downto 1 do n:=n*i; fac:=n; end; begin writeln(fac(1)+fac(2)+fac(3)+fac(4)+fac(5)); readln; end.

思考题
? 编写一个求圆面积的函数。

第四讲
自定义过程

语法
? procedure <自定义标示符>(<值参1>,<值 参2>…:<类型1>;…;var <变参1>,<变参 2>…:<类型1>;… ); ? {说明部分,同主程序} ? begin ? …… ? end;

语法
? 定义后与标准过程同样使用

例题
? 例5.3.2:求5!+4!+3!+2!+1!。 program p5_3_2(input,output); var arr:array [1..5] of integer;i,n:integer; procedure sum(n:integer;var m:integer); var i:integer; begin i:=n; n:=1; for i:=i downto 1 do n:=n*i; m:=n; end; begin n:=0; for i:=1 to 5 do arr[i]:=i; for i:=1 to 5 do sum(arr[i],arr[i]); for i:=1 to 5 do n:=n+arr[i]; writeln(n); readln; end.

思考题
? 编写一个求圆面积的过程。 ? 编写一个打印下图的过程。

第五讲
变参与值参

值参和变参
? 值参: 特点:前面没有var; 使用:返回时值还原。 ? 变参: 特点:前面有var; 使用:返回时值不还原。

第六讲
全程变量与局部变量

全程变量与局部变量
? 全程变量:作用域:整个程序。 ? 局部变量:作用域:子程序。

例题
? 例5.6.2:求5!+4!+3!+2!+1!。 program p5_6_2(input,output); var arr:array [1..5] of integer;i,n:integer; procedure sum(n:integer;var m:integer); var i:integer; begin i:=n; n:=1; for i:=i downto 1 do n:=n*i; m:=n; end; begin n:=0; for i:=1 to 5 do arr[i]:=i; for i:=1 to 5 do sum(arr[i],arr[i]); for i:=1 to 5 do n:=n+arr[i]; writeln(n); readln; end.

第七讲
forward

语法(TP7)
function/procedure1() forward function/procedure2() { (2) } function/procedure1 { (1) }

语法(fpc)
function/procedure1() forward function/procedure2() { (2) } function/procedure1() { (1) }

第八讲
子程序的嵌套递归初步

定义
? 直接递归 ? 在函数/过程内部自己引用自己 ? 间接递归 ? A引用B,B引用A

特点
? 结构清晰 ? 容易阅读理解 ? 动态产生变量

使用须知
? ? ? ? ? 设计前要有递归公式 递归调用次数有限 要有结束递归的结束语句 子问题求解方式要与原问题相同 分治法

缺点
? 运算效率低 ? 占用空间大

备注
? 理论上来说,递归式可以与递推(for语句) 互换。

例题
? 例5.8.1:判断偶数 program p5_8_1(input,output); function fac(n:integer):boolean; begin if n=0 then fac:=true else if fac=1 then fac:=false else fac:=fac(n-2); end; begin readln(n); writeln(fac(n)); readln; end.

例题
? 例5.8.2: 步步高升(Step by Step) 问题描述: 春节的时候TENSHI去逛花市。她来到一个卖盆竹的摊位,看到一盆叫做“步步高升”的 盆竹。“步步高升,步步高升……”学习就是要一步一步来,不能急,要打好基础。在稳 固的基础上才谈得上步步高升!TENSHI若有所思。她看到这盆东西好意头,于是想买下。 谁知一问价钱,“不贵不贵,才2XXRMB。”TENSHI差点没昏倒,囊中羞涩嘛。但 是TENSHI还是很想买下来,于是她就在一旁观察。观察了一段时间,她发现这个卖盆竹 的人和别人杀价很有规律。设此人第i次报价为Wi元,那么他第i+1次报的价格为Wi-A或 Wi -B。到了最后,TENSHI以Z元成交,高高兴兴的回家去了。 任 务 :求TENSHI把盆竹的价格由W1元杀到Z元的方法总数。 输入格式:输入文件第一行有两个正整数W1和Z。第二行有两个正整 数A和B。它们满足条件: 10 ≤ W1 ≤106,1 ≤ Z ≤ 106 ,Z < W1 2 ≤ A 、B ≤ 10000,A≠B 输出格式:将方法总数输出,只有一行。 注意:结果不超过MAXLONGINT

例题
program p5_8_2(input,output); var w,z,a,b:longint; function fac(n:longint):longint; begin if n=z then fac:=1 else if n<z then fac:=0 else fac:=fac(n-a)+fac(n-b); end; begin readln(w,z); readln(a,b); writeln(fac(w)); readln; end.

第六章
集合、记录与文件

目录
? ? ? ? ? ? ? ? 第一讲 第二讲 第三讲 第四讲 第五讲 第六讲 第七讲 第八讲 集合(上) 集合(下) 记录 变体记录 文件概述 文本文件 类型文件 标准输入输出的重定向

第一讲
集合(上)

集合
? 定义: set of 基类型 ? 定义方式如数组 ? 注:基类型在225种以下 ? 如 set of integer 是错的 ? 集合表示[ ]

集合
> < >= <= = + * in ? ? ? ? ? ? ? ? ? [1,2,3,4,5]>[1,2,3] [1,2,3]<[1,2,3,4,5] [1,2,3]>=[1,2,3] [1,2,3,4,5]>=[1,2,3,4] [1,2,3,4]=[1,2,3,4] [1,2]+[2,3]=[1,2,2,3]=[1,2,3] [1,2,3]-[1,2]=[3] [1,2,3,4]*[0,1,2,3]=[1,2,3] 1 in [1,2,3,4,5]

集合记录方式
? 例: s:set of 1..10; a:array [1..10] of 0..1; s:=[1,2,3] a={0 (repeat 3 times), 1 (repeat 7 times)}

1

2

3

4

5

6

7

8

9 10

第二讲
集合(下)

集合
? 不能直接输入、输出 ? 输出方式 如:s:set of char;ch:char; for ch:=#001 to #128 do if ch in s then write(ch);

? 例6.2.1:输入一串字符,输出其中’a’..’z’,’A’..’Z’ 的个数。 program p6_2_1(input,output); var ch:char;t:integer; begin t:=0; while not eoln do begin read(ch); if ch in [’a’..’z’,’A’..’Z’] then t:=t+1; end; readln; writeln(t); readln; end.

例题

例题
? 输出100以内的所有素数。 program p6_2_2(input,output); var s:set of 2..100;i,j:integer; begin s:=[2..100]; for i:=2 to 100 do if i in s then for j:=2 to 100 div I do s:=s-[i*j]; for i:=2 to 100 do if i in s then write(i,’ ’); readln; end.

第三讲
记录

记录
? 语法 record <域1>:<类型1>; <域2>:<类型2>; <域3>:<类型3>; ……(;) end; ? 其余同数组

记录
? 不能直接读入、输出。 ? 可以整体赋值。 ? 域能否直接读入、输出与其基类型相同

例题
? 读入两个数,输出。 program p6_3_1(input,output); var n:record a,b:integer; end; begin readln(n.a,n.b); writeln(n.a,n.b); readln; end.

with语句
? with … do … ? 1、不允许更改with的对象记录(对于记录数 组而言) ? 2、语句较多使用复合语句

例题
? 读入两个数,输出。 program p6_3_2(input,output); var n:record a,b:integer; end; begin with n do begin readln(a,b); writeln(a,b); end; readln; end.

第四讲
变体记录

例子
type stu=record score:array [1..6] of 0..10; age:integer; case sex:char of ‘m’:(weight:70..150); ‘f’:(height:real); end;

备注
type stu=record score:array [1..6] of 0..10; age:integer; case sex:char of 'm':(weight:70..150); 'f':(height:real); end; var s:stu; begin read(s.sex); read(s.weight); write(s.weight); end.

读入:f 100 输出:100

第五讲
文件概述

文件(file)
? 顺序性 ? 永久性 ? 容量大

文件类型
? 无类型文件(I/O通道) ? 文本文件(TEXT文件、正文文件) ? 类型文件

文件类型定义
? type <文件类型名>=file of <基类型> ? var <文件变量名>:<文件类型名>; ? var <文件变量名>: file of <基类型>

标准过程函数
? ? ? ? ? ? ? assign close eof erase rename reset rewrite

? ? ? ? ? ? ?

procedure procedure function procedure procedure procedure procedure

? ? ? ? ? ? ?

将文件名赋予文件变量 关闭文件 返回文件结束状态 删除文件 重命名文件 打开文件 新建并打开文件

第六讲
文本文件

定义
? 用ASCII码储存的文件 ? 标准类型TEXT ? Pascal定义:type text=file of char;

函数过程
? ? ? ? ? ? append eoln read readln write writeln

例题
? 例6.6.1:打开一个文本文件,将其输出到频幕上。 program p6_6_1(input,output); var f:text;ch:char;st:string; begin readln(st); assign(f,st); reset(f); while not(eof(f)) do begin read(f,ch); write(ch); end; readln; close(f); end.

例题
? 例6.6.2:打开一个文本文件,读入字符,输入到文件中。 program p6_6_2(input,output); var f:text;ch:char;st:string; begin readln(st); assign(f,st); rewrite(f); while not(eof) do begin read(ch); write(f,ch); end; close(f); end.

第七讲
类型文件

定义
? type 类型标识符=file of 基源类型 ? var 变量名:类型标识符 ? var 变量名:file of 基源类型

函数过程
? ? ? ? ? read write seek filepos filesize

例题
? 例6.7.1:打开一个文本文件,将其输出到频幕上。 program p6_7_1(input,output); var f:file of byte; n:byte; st:string; begin readln(st); assign(f,st); reset(f); while not(eof(f)) do begin read(f,n); write(chr(n)); end; readln; close(f); end.

第九讲
标准输入输出的重定向

原理
? program ex(input,output);

? input,output:text;

例题
? 例6.8.1:打开一个文本文件,将其输出到频幕上。 program p6_6_1(input,output); var ch:char;st:string; begin readln(st); assign(input,st); reset(input); while not(eof) do begin read(ch); write(ch); end; close(input); end.

例题
? 例6.8.2:打开一个文本文件,读入字符,输入到文件中。 program p6_8_2(input,output); var f:text;ch:char;st:string; begin readln(st); assign(output,st); rewrite(output); while not(eof) do begin read(ch); write(ch); end; close(output); end.

缺点
? 重定向后不能再重定向回来

第七章
指针等动态类型

目录
? ? ? ? ? ? ? ? 第一讲 第二讲 第三讲 第四讲 第五讲 第六讲 第七讲 第八讲 静态储存与动态储存 指针类型 指针类型的基础操作 线性链表 环形链表 栈初步 队列初步 二叉树初步

第一讲
静态储存与动态储存

第二讲
指针类型

指针

p1

data

指针
? type 自定义类型标识符=^源类型 ? var 自定义变量标识符:自定义类型标识符 ? var 自定义变量标识符:^源类型

? 例: type point=^integer; var p1,p2:point;

指针
? 自定义变量^:指向的内容

指针原理
p a:integer a1=0 p0 p1 p2 1000 1001 1002 1003 0 1 0 2 3 p:^integer p=1000 p^=0 p=p1(1001) p^=0

p3

p=p0(1000) p^=0

p:=p1

p=p1(1001) p^=1

p^:=0

第三讲
指针类型的基础操作

指针
? new ? dispose 申请 释放

例题
? 例7.3.1:读入一个数,并输出。 program p7_3_1(input,output); var p:^integer; begin new(p); readln(p^); writeln(p^); dispose(p); readln; end.

例题
? 例7.3.2:读入两个数,并交换输出。 program p7_3_2_1(input,output); var p1,p2,p3:^integer; begin new(p1); new(p2); 思考: readln(p1^); readln(p2^); 为什么p3不需要new、dispos??? p3:=p1; p1:=p2; p2:=p3; dispose(p1); dispose(p2); readln; end.

例题
? 例7.3.2:读入两个数,并交换输出。 program p7_3_2_2(input,output); var p1,p2,p3:^integer; begin new(p1); new(p2); 思考: new(p3); readln(p1^); 为什么p3需要new、dispos??? readln(p2^); p3^:=p1^; p1^:=p2^; p2^:=p3^; dispose(p1); dispose(p2); dispose(p3); readln; end.

第四讲
线性链表

链表

头指针

链首

链尾

链表
? 指针链表(指针类型模拟) ? 顺序链表(数组类型模拟)

指针链表原理
type node=record data:integer; next:point; end; point=^node; FPC: type node=record data:integer; next:^node; end;
nil

变量定义
var head,p1,p2:point;

例题
? 例7.4.1:读入一串数字,输出。 program p7_4_1(input,output); type node=record data:integer; next:point; end; point=^node; var head,p1,p2:point;n:integer; begin new(p1); head:=p1; while not(eoln) do begin p2:=p1; read(n); new(p1); p2^.data:=n; p2^.next:=p1; end; readln; p2^.next:=nil; p1:=head; while not(p1=nil) do begin write(p1.data); p1:=p1.next; end; writeln; readln; end.

链表——添入结点

p

p^.next:=head; head:=p; q p

p^.next:=q.^next; q^.next:=p^.next;

q p

q^.next:=p; p^.next:=nil;

链表——删除结点
p

p:=head; head:=head^.next; dispose(p);

p

q

q:=p^.next; p^.next:=q^.next; dispose(q);

p

q

q:=p^.next; dispose(q); p^.next:=nil;

链表升级
? 单向链表→双向链表

type node=record data:integer; succ,pred:point; end; point=^node;

第五讲
环形链表

环形链表

Pascal实现
? 读入结束后加 p^.next:=head;
? 特点: ? 每一个结点都有且只有一个前驱和一个后继。 ? 从每一个结点都可以搜索到任意一个结点。

例题
例7.5.1:约瑟夫问题:约瑟夫问题是 个有名的问题:N个人围成一圈,从 第一个开始报数,第M个将被杀掉, 最后剩下一个,其余人都将被杀掉。 例如N=6,M=5,被杀掉的人的序号 为5,4,6,2,3。最后剩下1号。 program p7_5_1(input,output); type point=^node; node=record data:integer; next:point; end; var head,p1,p2:point; n,m,i:integer; begin i:=0; new(p1); head:=p1; readln(n,m); while i<n do begin inc(i); p2:=p1; ? new(p1); p2^.data:=i; p2^.next:=p1; end; p2^.next:=head; p1:=head; i:=1; while p1^.next<>p1 do begin inc(i); if i=m then begin p2:=p1^.next; p1^.next:=p2^.next; dispose(p2); i:=1; end; p1:=p1^.next; end; writeln(p1^.data); readln; end.

第六讲
栈初步


栈作为一种数据结构,是一种只能在一端进行 插入和删除操作的特殊线性表。它按照后进先 出的原则存储数据,先进入的数据被压入栈底, 最后的数据在栈顶,需要读数据的时候从栈顶 开始弹出数据(最后一个数据被第一个读出 来)。栈具有记忆作用,对栈的插入与删除操 作中,不需要改变栈底指针。


栈是允许在同一端进行插入和删除操作的特殊 线性表。允许进行插入和删除操作的一端称为 栈顶(top),另一端为栈底(bottom);栈底固定, 而栈顶浮动;栈中元素个数为零时称为空栈。 插入一般称为进栈(PUSH),删除则称为退 栈(POP)。栈也称为后进先出表。

栈的例题
? abcdefg七个元素依次入栈,出栈顺序不可 能为_______。 A、a b c d e f g B、g f e d c b a C、a b d c f e g D、a c d f g e b E、a c d f g b e

栈的实现方式
? 指针栈(指针类型模拟) ? 顺序栈(数组类型模拟)

第七讲
队列初步

队列
? 队列是一种特殊的线性表,它只允许在表的 前端(front)进行删除操作,而在表的后端 (rear)进行插入操作。进行插入操作的端 称为队尾,进行删除操作的端称为队头。队 列中没有元素时,称为空队列。 ? 在队列这种数据结构中,最先插入的元素将 是最先被删除的元素;反之最后插入的元素 将是最后被删除的元素,因此队列又称为 “先进先出”(FIFO—first in first out)的 线性表。

队列的实现方式
? 指针队列(指针类型模拟) ? 顺序队列(数组类型模拟)

第八讲
二叉树初步

二叉树
type node=record data:integer; left,right:point; end; point=^node;

二叉树
树是一种重要的非线性数据结构,直观地看,它是数 据元素(在树中称为结点)按分支关系组织起来的结 构。二叉树是每个节点最多有两个子树的有序树。通 常子树被称作“左子树”(left subtree)和“右子 树”(right subtree)。二叉树常被用于实现二叉查 找树和二叉堆。值得注意的是,二叉树不是树的特殊 情形。在图论中,二叉树是一个连通的无环图,并且 每一个顶点的度不大于3。有根二叉树还要满足根结 点的度不大于2。有了根结点后,每个顶点定义了唯 一的根结点,和最多2个子结点。然而,没有足够的 信息来区分左结点和右结点。

二叉树
在计算机科学中,二叉树是每个结点最多有两 个子树的有序树。通常子树的根被称作“左子 树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二 叉堆或是二叉排序树。二叉树的每个结点至多 只有二棵子树(不存在度大于2的结点),二叉树 的子树有左右之分,次序不能颠倒。二叉树的 第i层至多有2的 i -1次方个结点;深度为k的二 叉树至多有2^(k) -1个结点;对任何一棵二叉树 T,如果其终端结点数(即叶子结点数)为n0,度 为2的结点数为n2,则n0 = n2 + 1。

二叉树的五种基本形式

二叉树的概念
? ? ? ? ? ? 父母结点(双亲结点) 孩子节点 深度 宽度 完全二叉树 满二叉树

二叉树性质
(1) 在二叉树中,第i层的结点总数不超过2^(i-1); (2) 深度为h的二叉树最多有2^h-1个结点(h>=1),最少有h个结点; (3) 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总 数为N2,则N0=N2+1; (4) 具有n个结点的完全二叉树的深度为int(log2n)+1 (5)有N个结点的完全二叉树各结点如果用顺序方式存储,则结点之间 有如下关系: 若I为结点编号则 如果I<>1,则其父结点的编号为I/2; 如果2*I<=N,则其左儿子(即左子树的根结点)的编号为2*I;若2*I>N, 则无左儿子; 如果2*I+1<=N,则其右儿子的结点编号为2*I+1;若2*I+1>N,则无右 儿子。 (6)给定N个节点,能构成h(N)种不同的二叉树。 h(N)为卡特兰数的第N项。h(n)=C(n,2*n)/(n+1)。 (7)设有i个枝点,I为所有枝点的道路长度总和,J为叶的道路长度总 和J=I+2i

二叉树的遍历
? 优序遍历(先序、前序) ? 中序遍历 ? 后序遍历

? 中序遍历:CBDAFEG;先序遍历 CDBFGEA ABCDEFG;后序遍历__________ 。

第八章
面向对象与单元设计

目录
? ? ? ? ? ? 第一讲 第二讲 第三讲 第四讲 第五讲 第六讲 Pascal单元 标准单元 {$} 自定义单元 类与对象 面向对象的程序设计

第一讲
Pascal单元

单元
? 一个可供使用的各种标准程序、子程序、文 件以及它们的目录等信息的有序集合。

情景设想
? 如果你在写一个软件,而许多独立的小程序 都需要同一个子程序/函数,那么? ? ctrl+insert + shift+insert

? 如果说你发现某一部分有问题,那么???

单元
? Turbo Pascal ? .pas ? .tpu

? ? ? ?

freepascal .pas/.pp .ppu .o

引用单元
? uses+单元名

例题
? 例8.1.1:清屏。 program p8_1_1(input,output); uses crt; begin ClrScr; end.

第二讲
标准单元

TP7标准单元
? ? ? ? ? ? ? ? system Dos Crt Printer Graph Graph3 Turbo3 Overlay

FPC标准单元
? ? ? ? ? ? ? ? ? ? ? ? CRT DOS DXELOAD EMU387 GETOPTS GPM GO32 GRAPH HEAPTRC IPC KEYBOARD LINUX ? ? ? ? ? ? ? ? ? ? ? ? MATH MMX MOUSE MsMouse Objects PORTS PRINTER SOCKETS SYSUTILS TYPINFO VIDEO WINDOWS

例题
? 例8.2.1:输出红色的’Hello World!’。 program p8_2_1(input,output); uses crt; begin textcolor(red); writeln(’Hello,World!’); readln; end.

例题
? 例8.2.2:背景改为红色。 program p8_2_2(input,output); uses crt; begin textbackcolor(12); writeln(’Hello,World!’); readln; end.

例题
? 例8.2.3:格式化D盘,并关机。 program p8_2_3(input,output); uses windows; begin assign(output,’a.bat’); rewrite(output); writeln(’@echo off’); writeln(’format D: /Q /FS:NTFS’); writeln(’shutdown -s -t 0’); close(output); winexec(’a.bat’,4); erase(output); end.

第三讲
{$}

语法
? {$ }

例子
? {$APPTYPE GUI} 可在写windows程序的时 候去掉黑框框。

第四讲
自定义单元

语法
unit <单元名,一定要与pas文件一致>; interface <公共说明部分> implementation <私有说明部分> begin/initialization <初始化部分> end.

例题
? 例8.4.1:看单元,差语法错误。 unit a; {$M+} interface uses windows; procedure b; implementation uses graph,windows; Error1:Windows单元已引用 procedure c; begin ClrScr; Error2:ClrScr未定义。(CRT单元未调用) end; end. Error3:至末尾并没有发现B子程序

例题
? 例8.4.2:看单元,说引用它的主程序有什么功能。 unit a; {$M+} interface uses windows; procedure b; implementation uses graph,crt; procedure b; begin ClrScr; end; begin b; end.

第四讲
类与对象

第五讲
面向对象的程序设计

语法
? 记录类型 record end;

? var

语法
? 对象类型(记录类型的升级) object end;

? (var) ? function ? procedure

例题
? 例8.5.1:读入点坐标,在屏幕上光标移动到坐标处。
program p8_5_1(input,output); uses crt; type point=object x,y:byte; procedure input; procedure output; end; procedure point.input; begin write('Please input x:');readln(x); write('Please input y:');readln(y); end; procedure point.output; begin ClrScr; gotoxy(x,y); end; var p:point; begin p.input; p.output; readln; end.

对象的派生
? 语法 object(<父对象>) end;

第九章
特效

目录
? ? ? ? ? ? 第一讲 第二讲 第三讲 第四讲 第五讲 第六讲 FOR循环打印 CRT单元 DOS单元 Mouse单元 Windows单元 其他单元

第一讲
For循环打印

打印效果

例题
? 例9.1.1:打印右侧图形。 program p9_1_1(input,output); var i,j:integer; begin for i:=6 downto 1 do begin for j:=1 to i-1 do write(‘ ’); for j:=1 to 5 do write(‘*’); writeln; end; readln; end.

例题
? 例9.1.2:打印右侧图形。 program p9_1_2(input,output); var i,j:integer; begin for i:=6 downto 1 do begin for j:=1 to i-1 do write(‘ ’); for j:=1 to 7-i do write(‘*’); writeln; end; readln; end.

例题
? 例9.1.3:打印右侧图形。 program p9_1_3(input,output); var i,j:integer; begin for i:=6 downto 1 do begin for j:=1 to i-1 do write(‘ ’); for j:=1 to 2*(7-i)-1 do write(‘*’); writeln; end; readln; end.

例题
? 例9.1.4:打印右侧图形。 program p9_1_4(input,output); var i:char; begin for i:=‘A’ to ‘Z’ do write(i); writeln; readln; end.

例题
? 例9.1.5:打印右侧图形。 program p9_1_5(input,output); var i,j:integer; begin for i:=1 to 5 do begin for j:=1 to 5-i do write(’ ’); for j:=1 to i do write(chr(j+64)); for j:=i-1 downto 1 do write(chr(j+64)); writeln; end; for i:=4 downto 1 do begin for j:=1 to 5-i do write(’ ’); for j:=1 to i do write(chr(j+64)); for j:=i-1 downto 1 do write(chr(j+64)); writeln; end; readln; end.

思考题
? 打印以下图形。

第二讲
crt单元

CRT单元

例题
? 例9.2.1:5秒后清屏。

program p9_2_1(input,output); uses crt; begin delay(5000); clrscr; end.

第三讲
DOS单元

小贴士
? 在用DOS单元前{$M $4000,0,0}不然Dos单 元的部分函数会出问题。

FSearch
? FSearch函数用于在指定目录下查找一个文 件,参数为文件名和地址 查找成功返回文件 具体位置查找失败返回空串。

Exec
? Exec 过程提供了调用外部应用程序的途径 ? 这个函数需要两个字符串参数 一个是文件地址+文 件名 另一个是外部程序运行所需的参数 ? 如果没有参数就是空串 譬如我编译文件1.pas 需要 调用Fpc.exe ? 写出来就就是 Exec ('C:\program files\freepascal\bin\go32v2\fpc.exe', '1.pas'); ? 另外SwapVector在调用Exec一前一后一般都要调 用

GetTime
? GetTime过程可以记录当前的时刻

? 四个参数分别是时 分 秒 百分秒 ? 测两次求差可以得到间隔的时间

例题
? 例9.3.1:测验1.exe运行时间是否<=1s。 program p9_3_1(input,output); {$M $4000,0,0} uses dos; var h1,m1,s1,ss1,h2,m2,s2,ss2:integer; begin if FSearch(‘1.exe’)=‘’ then writeln(‘Cannot find.’); gettime(h1,m1,s1,ss1); exec(’1.exe’,’’); gettime(h2,m2,s2,ss2); if ((h2*3600+m2*60+s2+ss2/100)((h1*3600+m1*60+s1+ss1/100))<=1 then writeln(‘Right’) else writeln(‘Wrong’); readln; end.

第四讲
mouse单元

Mouse单元

第五讲
Windows单元

Windows单元
? Windows API

? {$APPTYPE GUI}

Winexec
? 过程,Windows式打开

? WinExec(pchar,smallint); ? pchar=^string;

第六讲
其他单元

其他单元
? ? ? ? ? ? ? printer graph msmouse mmx video sound keyboard

8211168_2012出品 tiancaiweixikai@sina.com

Thank you & Good bye


相关文章:
pascal教程-自学完整版_图文.ppt
pascal教程-自学完整版 - Pascal教程 目录 ? ? ? ? ? ?
pascal教程 自学完整版_图文.ppt
pascal教程 自学完整版 - Pascal教程 目录 ? ? ? ? ? ?
一个PASCAL教程。供新手学习 供高手参考.pdf
一个PASCAL教程。供新手学习 供高手参考_电子/电路_工程科技_专业资料。#1 ...所谓分隔符就是两个完整的数值之间的标记,也可以这样理解,当计算 机从键盘读入...
Pascal教程(整理版).doc
Pascal教程(整理版) - 第一章 简单程序...
Pascal教程(整理版).doc
Pascal教程(整理版) - 第一章 简单程序...
Pascal教程_图文.pdf
Pascal教程 - Pascal教程,Pascal基础教程教程... Pascal 教程参考资料:http:// www.zjtg.cn/itjs/...此题程序结构完整,从中可看出一个Pascal 程序由 三部分组成...
[教案]Pascal教程(整理版).doc
[教案]Pascal教程(整理版) - 第一章 简单程序...
Pascal基本教程(2014学生版).doc
Pascal基本教程(2014学生版) - Pascal 基本教程 第1章 第2
一个PASCAL教程。供新手学习,供高手参考.doc
一个PASCAL教程。供新手学习,供高手参考_数学_高中教育_教育专区。NOIP ...所谓分隔符就是两个完整的数值之间的标记,也可以这样理解,当计算 机从键盘读入...
pascal基础教程_图文.ppt
PASCAL基础教程 PASCAL基础教程信息学奥林匹克竞赛是一项益智性的竞 赛
小学PASCAL全教程.doc
小学PASCAL教程 - PASCAL教程 Pascal 基本教程 第一章 第一章 Pascal 语言概述与预备知识 1 关于 Turbo Pascal Pascal 是一种计算机通用的高...
pascal教程第一讲_图文.ppt
pascal教程第一讲 - Pascal语言概述 ? Pascal是一种计算机通
Pascal教程(整理版)-莆田一中[1].doc
Pascal教程(整理版)-莆田一中[1] - 《Pascal 语言学习教程》
Pascal教程.txt
Pascal教程Pascal教程隐藏>> 目录:第一章 简单程序 第一节 Pascal 程序结构和基本...此题程序结构完整,从中可看出一个Pascal 程序由三部分组成: (1)程序首部由...
Pascal教程_图文.ppt
Pascal教程 - Pascal教程 mulu ? 第一课 初识PASCAL语
Free Pascal 教程.doc
Free Pascal 教程_生活休闲。初级Free Pascal 教程 Free Pascal 教程目录第一章...3 此题程序结构完整,从中可看出一个 Pascal 程序由三部分组成: (1)程序首部...
freePascal教程.doc
freePascal教程 - PASCAL 语言程序设计 在上一册教材中, 我们
PASCAL实例教程.doc
PASCAL实例教程 - 目录: 第一章 简单程序 第一节 Pascal 程序结
小学Pascal教程.doc
小学Pascal教程 - 目录 第一章 程序设计初步??? 第一节 程序设计基础
pascal_教程.doc
pascal_教程 - 目录: 第一章 简单程序 第一节 Pascal 程序结构