freePascal教程 下载本文

PASCAL语言程序设计

在上一册教材中,我们已经初步了解了PASCAL语言的三种基本结构、程序设计的基本思想和方法。本单元是在上册内容的基础上进一步深入学习PASCAL语言的数组、子程序、字符串处理等基础知识。随着学习的深入,程序设计的题目类型越来越广泛,难度也越来越大,程序设计者不能“完全”把求解的任务推给计算机,而应对题目作较充分的分析,用较优的算法去求解,因此在计算机上编程解题是一项极好的实践活动,它可以训练观察能力、逻辑思维能力、形式化描述问题能力、规划能力、动手动脑分析问题和解决问题的能力。

第一课 循环结构的程序设计

在程序设计中,经常处理一些需要重复执行某些操作的问题,这就需要循环结构程序设计,循环结构是程序设计的三种基本结构之一,循环结构是指当某个条件满足时反复执行某些语句,否则不执行。利用循环结构,使得我们能用少而精的程序编码,来完成大量的重复计算。

在Pascal语言中,实现循环程序设计的主要语句有For语句(计数循环)、While语句(当型循环)、Repeat语句(直到型循环)。上册教材已经介绍了For语句,本节课介绍While语句、Repeat语句及多重循环结构。

一、 While语句结构

For循环语句适用于已知次数的循环结构,而在实际的问题中,有时我们并不能确切知道循环要执行多少次,我们判断是否结束循环的依据是某个条件是否满足,比如“当??时就做??”,或者是“一直做到??时为止”,这种循环我们称之为条件循环。在Pascal中条件循环语句有两种,分别是While循环语句和Repeat循环语句。下面分别介绍这两种语句的使用方法。

While语句用于“当满足某一条件时进行循环”的情况,因此它也被称为“当型循环”。While语句的语法格式如下:

While <布尔表达式> do <循环体语句>;

While循环语句的执行流程如图1-1-1所示。

图1-1-1 While循环语句执行流程 布尔表达式 False True 循环体 While语句使用说明:

(1)当布尔表达为true则执行循环体,若为false,则根本不进入循环体; (2)如果一开始布尔表达式的值就为假时,While循环就会一次循环体都不执行; (3)相反的,如果布尔表达式永远是真的,那么循环就无法结束,从而成为“死循环”,为了避免这种情况的发生,在循环体中就一定要有能改变布尔表达式结果的操作;

(4)循环体中的语句一般情况下是多条语句,必须使用begin和end将它们括起来形成一条复合语句。

[例1] 计算S=1+3+5+??+n(n为大于1的奇数)。 程序如下: program ex1_1; var

odds,n,sum:integer; begin

write(?input a odd data:?);readln(n); sum:=0; odds:=1; while odds<=n do begin

sum:=sum+odds; odds:=odds+2; end; writeln(sum); end.

[例2] 输入若干个字符,它的终止符是“?”,计算输入的字符中字母“a”出现的次数(包括大小写)。

程序如下: program ex1_2; var ch:char; i:integer; begin i:=0; read(ch);

while ch<>??? do begin

if (ch=?a?) or (ch=?A?) then i:=i+1; read(ch); end; writeln(?i=?,i) end.

在执行时,每当输入的字符为“a”或“A”时,则将变量i原有的值加上1再赋给i,相当于使i在原有的基础上加1。当输入一个“?”的时候,循环条件不成立,循环结束,输出结果。在本程序中,输入数据“?”就是循环结束的标志,这种在程序中人为设置循环结束条件的方法我们将它叫作结束标志法,在设计循环结构程序时经常要用到这种方法。

二、 Repeat语句结构

Repeat语句与While语句正好相反,Repeat语句用于“重复执行循环体,一直到指定的条件为真时为止”的循环结构,它又被称为“直到型循环”。

Repeat语句的语法格式为:

repeat 循环体语句

until 布尔表达式;

Repeat循环语句的执行流程如图1-2-1所示。

Repeat语句使用说明:

1、先执行循环体,然后判断布尔表达式的值,为false,则继续循环,为true则终止循环; 2、为了使repeat循环重复能终止,与while循环一样,循环体中一定要有影响布尔表达式值的操作,否则该循环就是一个死循环;

False 布尔表达式 True 循环体 图1-2-1 Repeat循环语句执行流程