Цикл While Особенность этих циклов заключается в том, что тело цикла с предсловием выполняет многократно одни и те же действия в зависимости от условия
Синтаксическая диаграмма While выражение do оператор
Блок схема нет (false) Условие (логическое выражение ) да (true) WHILE DO Оператор, расположенный после DO выполняются многократно до тех пор, пока условие TRUE. Как только условие становится ложным, управление переходит к следующему оператору. Тело цикла
Сколько раз будет напечатано на экране слово «ИНФОРМАТИКА» если: i:=0; While i
Этапы решения задачи на компьютере 1. Анализ условия 2. Составление блок-схемы 3. Перевод решения на PASCAL 4. Тестирование и доводка алгоритма
Пример: Найти Сумму Последовательности Неравных Нулю Чисел, Завершающейся Нулем. Нуль Играет Роль Признака Конца Последовательности. Программа будет использовать ввод (слагаемые – числа необходимо вводить с клавиатуры) Программа будет использовать вывод (сумма – результат работы должен быть выведен на экран монитора) Программа использует цикл (часть программы повторяется несколько раз: запрос, суммирование, проверка)
2. Вывести на экран запрос об очередном слагаемом 3. Занести ответ пользователя в память 4. Суммировать в сумматор 1. Проверить слагаемое на равенство 0 (т.е. Признак окончания суммирования) 5.Вывести результат на экран PC Решение: Тело цикла НАЧАЛО Запрос Ввод слагаемого: A S:=S+A A 0 Вывод результата: S КОНЕЦ
Program Summa ; Var A,S:Real; Begin S:=0; a:=1; While a 0 do begin Write (Vvedite A=); Read (A); S:=S+A; end; Write (Summa=,S ); End. :2:2 Ln НАЧАЛО Запрос Ввод слагаемого: A S:=S+A A 0 Вывод результата: S КОНЕЦ
Задачи для самостоятельного решения 1. Найти произведение последовательности чисел не равных 1. Единица играет роль конца последовательности. 2. Вычислить факториал числа: n!=1*2*3*..*n 3. Вывести на экран определенную последовательность символов (цифр или букв), введенную с клавиатуры, несколько раз (количество определяется в процессе выполнения программы) а) в столбик; б) в строчку. 4. Вычислить сумму ряда: 1/x+1/x 2 +1/x /x n ½+1/2 2 +1/ /2 n
Сравнение циклов Program Summa ; uses CRT; Var s,a:Real; Begin clrscr; S:=0; a:=1; While a 0 do begin write ('Введите А='); read (A); S:=S+A; end; write ('Сумма чисел =',S); end. Program Summa ; uses CRT; Var A,S:Real; Begin clrscr; S:=0; repeat write ('Введите А='); read (A); S:=S+A; until A=0; write ('Сумма чисел =',S); end.