Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК. Информатика.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.37 Mб
Скачать

Контрольные вопросы

  1. Как организовать в программе выбор одного из нескольких возможных вариантов хода вычислительного процесса?

  2. Что называют условием?

  3. Какие условия называют простыми? Составными?

  4. Как исполняется условный оператор в полной форме? В сокращенной форме?

  5. На что надо обращать внимание при использовании вложенных условных операторов?

  6. В каких случаях удобнее применить оператор выбора?

  7. Каких типов можно использовать выражение-селектор?

  8. Как можно задавать значения для сравнения в операторе выбора?

  9. Обязательно ли использовать ветвь Else в операторе Case?

Задания для самостоятельного выполнения

  1. Написать и отладить программу решения задачи указанного преподавателем варианта из таблицы 1.

  2. Сохранить программу под именем LR15_3.pas.

  3. Результат предъявить преподавателю.

  4. Написать программу решения задачи указанного преподавателем варианта из таблицы 2 (дома).

Литература

Лабораторная работа №44-45.

Программирование циклов

Цель работы: формировать умения конструировать программы с организацией повторяющихся действий оператором For.

Основные сведения

Алгоритм называется циклическим, если он содержит многократное выполнение одних и тех же ветвей при различных значениях промежуточных данных.

Различают циклы с параметрами (циклы ДЛЯ) и циклы с условием (циклы ПОКА). Для программирования циклов с параметром в Паскале используют оператор FOR. Следует помнить, что в качестве управляющей переменной должна быть переменная дискретного типа.

ОПЕРАТОР ОРГАНИЗАЦИИ ЦИКЛОВ FOR

Операторы повтора используются при организации циклов. Цикл – это последовательность операторов, которая может выполняться более одного раза.

Форматы оператора FOR:

1. for <параметр цикла> := <S1> to <S2> do <оператор>;

2. for <параметр цикла> := <S1> downto <S2> do <оператор>;

С помощью FOR..TO <оператор> выполняется S2 - S1 + 1 раз, с FOR..DOWNTO - S1-S2 раз. Например, оператор~ FOR I := 1 to 20 do write('*'); 20 раз выведет на экран в одной строке символ "*".

Параметр цикла, его начальное и конечное значения должны принадлежать одному и тому же типу данных. Вещественные типы запрещены. Если используются типы integer, byte и интервальный, то значение параметра цикла последовательно увеличивается (при for .. to) или уменьшается (при for .. downto) на единицу на каждом шаге.

Оператор Результат

for I := 10 to 14 do write (I:3); 10 11 12 13 14

for I := 14 downto 10 do write(I:3); 14 13 12 11 10

for Ch:='a' to 'e' do write (Ch:2); a b c d e

for Ch:='e' downto 'a' do write (Ch:2); e d c b a

Программист не должен сам изменять параметр цикла, это вызовет ошибку.

ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ОПЕРАТОРА FOR

FOR I:=1 TO 10 DO Read(X); ввод с клавиатуры в цикле 10 значений

FOR I:=1 TO 80 DO Write('*'); строка из 80 символов '*'

FOR I:=1 TO 24 DO Writeln('*'); столбик из символов '*'

ОПЕРАТОР ПОВТОРЕНИЯ REPEAT

Оператор повтора REPEAT состоит из заголовка (REPEAT), тела и условия окончания (UNTIL).

Формат: REPEAT

<оператор;>

<оператор;>

. . .

<оператор>

UNTIL <условие>;

Условие - выражение булевского типа. При написании условия допустимы булевские операции и операции отношения. Операторы, заключенные между словами repeat и until, являются телом цикла.

Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат булевского выражения False, тело цикла активизируется еще раз, если результат True - происходит выход из цикла.

В некоторых случаях из цикла выходят с помощью оператора GOTO, не дожидаясь подходящего условия в UNTIL. Для этого внутри REPEAT производят операцию сравнения и при ее истинности уходят на метку вне оператора REPEAT.

PROGRAM Demo_REPEAT; - заголовок программы

Var I, Sum : integer; - объявление переменных

BEGIN - начало раздела операторов

I := 0; Sum := 0; - обнуление I, Sum

REPEAT - начало оператора REPEAT

Writeln('I= ',I); - вывод текущего значения I

Sum := Sum + I; - наращивание суммы

I := I + 2 - увеличение I (0,2,4,6,8,10)

UNTIL (I > 10); - конец оператора REPEAT

writeln('Сумма четных чисел= ',Sum) - вывод результата

END. - конец программы

ОПЕРАТОР ПОВТОРЕНИЯ WHILE

Оператор WHILE аналогичен оператору REPEAT, но проверка условия выполнения тела цикла производится в самом начале выполнения оператора.

Формат:

WHILE <условие> DO <тело цикла>;

Условие - булевское выражение, а тело цикла - простой или составной оператор. Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат равен True, тело цикла выполняется и снова вычисляется выражение условия. Если результат равен False, происходит выход из цикла и переход к первому после WHILE оператору. Если перед первым выполнением цикла значение выражения было False, тело цикла вообще не выполняется и происходит переход на следующий оператор.

П р и м е р.

WHILE True DO write ('Бесконечный цикл');

WHILE 1 = 1 DO wRite ('Бесконечный цикл'); {очевидно, что

результат выражения 1=1 всегда равен True}

Оператор WHILE, как и другие операторы организации циклов, может быть вложенным. Досрочный выход из WHILE можно осуществить по GOTO.

PROGRAM Demo_WHILE; - заголовок программы

Var I, Sum : integer; - объявление переменных

BEGIN - начало раздела операторов

I := 0; Sum := 0; - обнуление I, Sum

WHILE I < 12 DO BEGIN - начало оператора WHILE

Writeln('I= ',I); - текущее значение I

Sum := Sum + I; - наращивание суммы

I := I + 2 - увеличение I (0,2,4,6,8,10)

END; - конец оператора WHILE

writeln('Сумма четных чисел= ',Sum) - вывод результата

END. - конец программы

ПРИМЕР 1: Приписать к 523*** три такие цифры справа, чтобы

полученное шестизначное число делилось на 7, на 8,

на 9.

А Л Г О Р И Т М

алг младшие цифры

рез n: цел

раб s,a,b,c: цел

нач

нц для n от 0 до 999

s:= 523000+n

a:= s mod 7

b:= s mod 8

c:= s mod 9

если а=0 и b=0 и c=0

то вывод n

все

кц

кон

П Р О Г Р А М М А

program mlad;

var s,a,b,c,n: integer;

begin

for n:=0 to 999 do

begin

s:=523000+n;

a:= s mod 7;

b:= s mod 8;

c:= s mod 9;

if (a=0) and (b=0) and (c=0) then write (n:5)

end

end.

ПРИМЕР 2: Подсчитать сумму ряда: s=1-2+3-4+5- ... для заданного числа членов.

А Л Г О Р И Т М

алг сумма ряда

арг n: цел

рез s: цел

раб i: цел

нач

ввод n

если n <= 0

то вывод "плохое n"

иначе

s:=0

нц для i от 1 до n

если i - нечетное

то s:=s+i

иначе s:=s-i

все

кц

вывод s

кон

П Р О Г Р А М М А

program sum;

var i,n:integer; {счетчик и количество слагаемых}

s:real; {сумма ряда}

begin

writeln('Сколько слагаемых ?');

readln(n);

if n<=0 then

writeln('Плохое n')

else begin

s:=0;

for i:=1 to n do

if odd(i) then {проверка четности номера}

s:=s+i

else

s:=s-i;

writeln('s=',s:10:3);

end;

end.