|
|||
Примеры для оператора FOR.17.2.1. Примеры для оператора FOR.
Поскольку контрольные переменные принимают последовательные значения соответствующего порядкового типа при последовательно выполняемых итерациях, оператор FOR идеально подходит для выполнения повторяющихся действий над набором данных. Например, перебор перечислимого типа Month с использованием FOR Mo := Jan TO Dec DO ... будет более натурален, чем с использованием WHILE. Тип данных INTEGER также естественно управляется оператором FOR. Следующая программа может быть использована как скелет для расчета средних оценок студентов, она читает набор записей о набранных баллах и усредняет их.
PROGRAM AverageScore(INPUT, OUTPUT); CONST NumberOfScores = 5; ClassSize = 3; TYPE Score = 0 .. 100; VAR WhichScore: 1 .. NumberOfScores; Student: 1 .. ClassSize; NextScore: Score; Ave. TotalScore, ClassTotal: INEGER; BEGIN {AverageScore} ClassTotal := 0; WRITELN('Studen averages:'); FOR Student := 1 TO ClassSize DO BEGIN TotalScore := 0; FOR WhichScore := 1 TO NumberOfScores DO BEGIN READ(NextScore); TotalScore := TotalScore + NextScore; END; READLN; TotalScore := TotalScore * 10; Ave := TotalScore DIV NumberOfScores; IF Ave MOD 10 >= 5 THEN WRITE(Ave DIV 10 + 1) ELSE WRITE(Ave DIV 10); ClassTotal := ClassTOtal + TotalScore; END WRITELN; WRITELN ('Class average:'); ClassTotal := ClassTotal DIV (ClassSize *NumberOfScores); WRITELN(ClassTotal DIV 10, '.' ClassTotal MOD 10:1) END. {AverageScore}
Выполнение: INPUT: 80 100 85 85 80 90 80 75 90 90 0 50 60 85 80 OUTPUT: Student averages: 88 85 59 Class average: 77.3 Эта программа предполагает серии персональных баллов в строке и строку для каждого человека. Количество баллов в строке и количество строк задается с помощью констант. Средние значения округляются до ближайшего целого, общее среднее ограничено одним значением после запятой.
|
|||
|