Pascal 语言入门教程
第一章:初识 Pascal
1 什么是 Pascal?
Pascal 是一种高级的、过程式的编程语言,由瑞士计算机科学家尼克劳斯·维尔特在 20 世纪 70 年代设计,其主要目的是为了教授编程的结构化思想。

- 特点:
- 结构化:代码结构清晰,易于阅读和维护。
- 强类型:对数据类型要求严格,有助于减少编程错误。
- 可读性强:语法接近自然语言(英语),非常直观。
- 教学友好:是全世界许多大学和学校的首选入门编程语言之一。
2 为什么学习 Pascal?
虽然 Pascal 在工业界不如 C++ 或 Java 那样流行,但它依然是学习编程基础概念的绝佳工具。
- 打下坚实基础:它能让你专注于编程的核心逻辑,而不是被复杂的库和框架分散注意力。
- 培养良好习惯:Pascal 强制你进行结构化编程,这种思维模式对学习任何其他语言都大有裨益。
- 理解数据类型:其严格的类型系统能让你深刻理解不同数据类型的区别和重要性。
3 开发环境准备
在学习任何编程语言之前,你需要一个“编辑器”来写代码,一个“编译器”将你的代码转换成计算机能执行的程序。
对于初学者,我强烈推荐集成开发环境 Free Pascal (Lazarus)。
- 下载地址:https://www.lazarus-ide.org/
- 优点:
- 免费开源:完全免费。
- 跨平台:支持 Windows, macOS, Linux。
- 集成度高:集成了代码编辑器、编译器、调试器,一步到位。
- 类 Delphi 界面:如果你之后想学习 Delphi 或其他 Object Pascal 语言,这会是一个很好的过渡。
安装过程很简单,一路“Next”即可,安装完成后,打开 Lazarus,你将看到一个类似专业软件的界面。
第二章:你的第一个 Pascal 程序
1 "Hello, World!"
这是编程世界的传统,让我们从打印 "Hello, World!" 开始。
在 Lazarus 中,点击 File -> New -> Project -> New Project -> Console Application,然后点击 OK,系统会自动为你生成一个基本的程序框架。
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
// 这里可以声明变量
begin
// 这里是程序的主执行部分
Writeln('Hello, World!');
Readln; // 等待用户按回车键,防止控制台窗口一闪而过
end.
2 代码详解
让我们逐行分析这段代码:
-
program Project1;program是关键字,用来定义程序的名称。Project1是你给这个程序起的名字。- 分号 表示一个语句的结束。在 Pascal 中,分号非常重要!
-
{$APPTYPE CONSOLE}这是一个编译器指令,告诉编译器这是一个控制台(命令行)应用程序。
-
uses SysUtils;uses是关键字,表示“使用”一个或多个“单元”(Unit)。SysUtils是一个包含常用系统函数(如字符串处理)的单元,很多程序都需要它。
-
varvar是关键字,用于声明变量,我们暂时没有变量,所以下面是空的。
-
begin ... end.begin和end构成了程序的主执行块,所有要执行的代码都必须放在它们之间。begin是块的开始。end是块的结束。- 注意:
end后面有一个句号 ,它表示整个程序的结束,而不仅仅是代码块的结束。
-
Writeln('Hello, World!');Writeln是一个过程(可以理解为函数),作用是“写入一行”。- 它会把括号 里的内容输出到控制台,并自动换行。
'Hello, World!'是一个字符串,必须用单引号 括起来。
-
Readln;Readln是一个过程,作用是“读取一行”。- 它用来暂停程序,等待用户按下回车键,如果没有这一行,程序会瞬间运行完毕,控制台窗口会立即关闭,你可能什么都看不到。
3 如何运行程序?
在 Lazarus 中,按快捷键 F9,或者点击工具栏上的绿色“运行”按钮,如果一切顺利,你将在下方的输出窗口看到:
Hello, World!
并等待你按下回车键。
第三章:Pascal 的核心基础
1 变量与常量
变量是存储数据值的容器。
声明变量:
使用 var 关键字。
var age: Integer; // 声明一个名为 age 的整型变量 name: String; // 声明一个名为 name 的字符串变量 height: Real; // 声明一个名为 height 的实型(小数)变量 isStudent: Boolean; // 声明一个名为 isStudent 的布尔型变量 (true/false)
给变量赋值: 使用赋值符号 (冒号等号)。
age := 25; name := '张三'; height := 175.5; isStudent := True;
常量: 常量的值在程序运行期间是固定不变的。
const PI = 3.14159; APP_NAME = '我的第一个程序';
2 基本数据类型
| 类型 | 描述 | 示例 |
|---|---|---|
Integer |
整数 (如 -10, 0, 100) | var i: Integer; i := 100; |
Real |
实数/小数 (如 -3.14, 0.5, 99.9) | var r: Real; r := 3.14; |
String |
字符串序列 (如 'Hello', 'Pascal') | var s: String; s := '你好'; |
Char |
单个字符 (必须用单引号) | var c: Char; c := 'A'; |
Boolean |
布尔值,只有 True 和 False |
var b: Boolean; b := False; |
3 基本输入与输出
我们已经知道了 Writeln (输出一行) 和 Readln (等待输入),现在来看看如何读取用户输入。
Readln 也可以用来给变量赋值:
program InputOutput;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
userName: String;
userAge: Integer;
begin
Write('请输入你的名字: '); // Write 输出后不换行
Readln(userName); // 读取用户输入的一行,存入 userName 变量
Write('请输入你的年龄: ');
Readln(userAge); // 读取用户输入的一行,存入 userAge 变量
Writeln('你好, ', userName, '!');
Writeln('你今年 ', userAge, ' 岁了。');
Readln; // 暂停
end.
注意:Readln 总是读取字符串,如果你想读取数字(如 userAge),Pascal 会尝试将输入的字符串转换成整数,如果用户输入了非数字字符(如 "abc"),程序可能会出错,这是我们在后续教程中需要处理的问题。
第四章:运算符与表达式
1 算术运算符
| 运算符 | 描述 | 示例 | 结果 |
|---|---|---|---|
| 加法 | 10 + 5 |
15 | |
| 减法 | 10 - 5 |
5 | |
| 乘法 | 10 * 5 |
50 | |
| 浮点除法 | 10 / 4 |
5 | |
div |
整数除法 | 10 div 4 |
2 (只取整数部分) |
mod |
取模 (求余数) | 10 mod 3 |
1 |
2 关系运算符
通常用于 if 语句中,结果为 Boolean 类型 (True 或 False)。
| 运算符 | 描述 | 示例 |
|---|---|---|
| 等于 | x = 10 |
|
<> |
不等于 | x <> 10 |
> |
大于 | x > 10 |
< |
小于 | x < 10 |
>= |
大于或等于 | x >= 10 |
<= |
小于或等于 | x <= 10 |
3 逻辑运算符
也用于 if 语句中,连接多个条件。
| 运算符 | 描述 | 示例 |
|---|---|---|
and |
逻辑与 (两个条件都为真时,结果为真) | (x > 5) and (x < 15) |
or |
逻辑或 (两个条件中至少一个为真时,结果为真) | (x = 0) or (y = 0) |
not |
逻辑非 (取反) | not (x > 5) |
第五章:程序流程控制
1 条件语句: if...then...else
根据条件决定执行哪一段代码。
var
score: Integer;
begin
Write('请输入你的考试分数: ');
Readln(score);
if score >= 60 then
Writeln('恭喜,你及格了!')
else
Writeln('很遗憾,你没有及格。');
Readln;
end.
if...then...else if...else 结构:
var
score: Integer;
begin
Write('请输入你的考试分数 (0-100): ');
Readln(score);
if score >= 90 then
Writeln('优秀!')
else if score >= 80 then
Writeln('良好!')
else if score >= 60 then
Writeln('及格。')
else
Writeln('不及格。');
Readln;
end.
2 循环语句
for 循环: 当你知道循环次数时使用。
// 从 1 循环到 5,每次循环 i 的值加 1
for i := 1 to 5 do
begin
Writeln('当前数字是: ', i);
end;
// 从 5 循环到 1,每次循环 i 的值减 1
for i := 5 downto 1 do
begin
Writeln('当前数字是: ', i);
end;
while 循环: 当某个条件为 True 时,重复执行代码块。
var
count: Integer;
begin
count := 1;
while count <= 5 do
begin
Writeln('循环次数: ', count);
count := count + 1; // 别忘了更新循环变量,否则会变成死循环!
end;
Readln;
end.
repeat...until 循环: 至少执行一次,直到条件为 True 时才停止。
var
number: Integer;
begin
repeat
Write('请输入一个大于 10 的数字: ');
Readln(number);
until number > 10;
Writeln('你输入的 ', number, ' 符合要求!');
Readln;
end.
第六章:总结与下一步
恭喜你!你已经学习了 Pascal 语言最核心的基础知识,包括:
- 程序的基本结构
- 变量、常量和数据类型
- 输入输出操作
- 运算符
- 条件判断和循环
这些是几乎所有编程语言的基石,掌握了它们,你就已经迈出了成为程序员的第一步,并且有能力解决很多简单的问题。
下一步可以做什么?
-
多加练习:尝试编写一些小程序,
- 猜数字游戏:程序随机生成一个 1-100 的数字,让你来猜,并提示“大了”或“小了”。
- 简易计算器:让用户输入两个数字和一个运算符(+、-、*、/),然后输出结果。
- 九九乘法表:使用嵌套
for循环打印出九九乘法表。
-
学习数组:数组可以存储多个相同类型的值,例如一个班级所有学生的成绩。
-
学习过程与函数:将重复使用的代码块封装成过程或函数,以提高代码的复用性和模块化程度。
-
学习记录:记录可以将不同类型的数据组合在一起,形成一个更复杂的数据结构。
虽然 Pascal 在现代应用开发中不占主流,但它所教授的严谨、结构化的编程思想将伴随你的整个编程生涯,祝你学习愉快!
