Циклы со счетчиком
Для их организации в Паскале используется оператор For (для), который в общем виде записывается так: For Параметр: = НачальноеЗначение to КонечноеЗначение do Оператор1; (8.1) или For Параметр: = НачальноеЗначение Downto КонечноеЗначение do Оператор1; (8.2) Параметром цикла в этом операторе может служить переменная так называемого перечисляемого типа: 1) целого; 2) символьного. Оператор вида (8.1) работает в соответствии со схемой, приведенной на рис. 2.5, а. Параметр пробегает значения от начального до конечного через 1. При этом конечное значение должно быть больше или равно начальному. В противном случае оператор не выполняется. В операторе вида (8.2) использовано слово Downto. При этом значения параметра убывают (изменяются от большего – начального значения – до меньшего с шагом -1). Работу оператора иллюстрирует схема рис. 2.5, б.
Если начальное значение равно конечному, то в обоих случаях (при То и Downto) оператор выполняется один раз. В общем случае (если параметр пробегает несколько значений) оператор 1 выполняется несколько раз.
Пример: {к величине S прибавляется 10 чисел от 1 до 10} For i: = 1 To 10 Do S: = S+i; Если многократно нужно выполнить несколько операторов, то они помещаются в блок операторов – между служебными словами Begin и End. Пример. Ввести в ЭВМ 10 трёхзначных чисел и распечатать их цифры в обратном порядке, т.е. начиная с младшей.
Алгоритм (укрупненный). 1. Для номера от 1 до 10 выполнить Ввести и обработать число 2. Конец.
Детализируем этот алгоритм. 1. Для номера от 1 до 10 выполнить 1.1. Ввести число. 1.2. Ц.1 = число mod 10; {выделяем младшую цифру} 1.3. Число = число div 10; {выделяем две старших цифры} 1.4. Ц.2 = число mod 10; {выделяем среднюю цифру} 1.5. Ц.3 = число div 10; {выделяем старшую цифру} 1.6. Вывести Ц1, Ц2, Ц3.
Программа для этого алгоритма будет иметь вид Program Dig; Const D=10; Var Num, C1, C2, C3: Integrer; {исходное число и цифры} i: Integrer; {номер числа } Begin For I: = 1 To D Do Begin Readln(Num); C1: =Num Mod D; Num: =Num Div D; C2: =Num Mod D; C3: =Num Div D; Writeln(C1: 2, C2: 2, C3: 2) End; End.
Пункты 1.2 – 1.6 можно также выполнить в цикле вида For C2: =1 To 3 Do Begin C1: =Num Mod D; Writeln (C1); Num: =Num Div D; End;
|