- •230401 «Информационные системы»
- •230115 «Программирование в компьютерных системах»
- •Лабораторная работа №1. Организация ввода-вывода информации
- •Алфавит языка Turbo Pascal.
- •Переменные и константы.
- •Основные типы переменных.
- •Структура программы.
- •Оператор присваивания, операторы ввода с клавиатуры и вывода на экран.
- •Процедуры управления выводом на экран.
- •Компиляция и выполнение программы.
- •Лабораторная работа №2. Арифметические выражения. Программирование алгоритмов линейной структуры.
- •Арифметические выражения в языке Turbo Pascal.
- •Стандартные арифметические функции.
- •Генератор случайных чисел.
- •Составление алгоритма и программы для решения задачи.
- •Лабораторная работа № 3. Программирование алгоритмов разветвленной структуры. Оператор ветвления if … then … else
- •Условный оператор if … then … else.
- •Составной оператор.
- •Лабораторная работа № 4. Программирование алгоритмов разветвленной структуры. Оператор ветвления case.
- •Условный оператор Case.
- •Лабораторная работа № 5. Программирование алгоритмов циклической структуры с известным числом повторений.
- •Оператор циклаWhile.
- •Оператор цикла repeat.
- •Вложенные циклы
- •Оператор перехода
- •Лабораторная работа № 6. Обработка строк с использованием операторов цикла.
- •Лабораторная работа № 7. Программирование алгоритмов циклической структуры с неизвестным числом повторений.
- •Лабораторная работа № 8. Обработка одномерных числовых массивов.
- •Лабораторная работа № 9. Обработка двумерных числовых массивов.
- •Лабораторная работа № 10. Использование процедур и функций при обработке массивов.
- •Лабораторная работа № 11. Тип запись. Массивы записей.
- •Лабораторная работа № 12. Обработка информации из файлов последовательного доступа.
- •Лабораторная работа № 13. Обработка информации из файлов прямого доступа.
- •Лабораторная работа № 14. Модуль программиста. Многомодульный проект.
- •Текст модуля программиста к задаче 14.
Оператор циклаWhile.
Оператор цикла WHILE, известный так же как оператор цикла с предусловием, имеет следующий вид.
while p do s;
Работа оператора определяется следующей схемой:
При выполнении этого оператора сначала вычисляется некоторое логическое выражение р (условие), принадлежащее типу Boolean, в случае истинности которого выполняется оператор s (являющийся, как правило, составным). После этого вычисление условия, его проверка и выполнение оператора s повторяются до тех пор, пока выражение р не становится равным FALSE. Затем управление передается следующему (после WHILE) оператору программы.
Если условие р равно FALSE с самого начала, оператор s, который называется телом цикла, не выполнится ни разу. Если условие р тождественно TRUE (while true do s), цикл будет бесконечным. Очевидно, для того чтобы тело цикла выполнилось всего несколько раз (чтобы количество итераций было больше нуля, но меньше бесконечности), значение условия должно каждый раз преобразовываться в теле цикла.
Для того чтобы понять разницу между операторами цикла WHILE и FOR, рассмотрим соответствующие фрагменты программ, выводящие на экран строки звездочек.
Цикл WHILE Цикл FOR
Line:=l; for Line:=l to n do
while Line<n do WriteLn(‘**********’);
begin
WriteLn(‘**********’);
Line:= Line+1
end;
Если переменная Line объявлена (в разделе описания переменных) как принадлежащая типу Integer, оператор FOR выведет на экран п строк звездочек. Реализация задачи с помощью оператора FOR выглядит проще, поскольку здесь нет нужды в операторе присваивания Line : =1 и Line : = Line+1.
Оператор цикла repeat.
Оператор цикла REPEAT, известный как оператор цикла с постусловием, имеет такой вид:
repeat S until P;
Работа оператора определяется следующей схемой:
При выполнении этого оператора сначала выполняется тело цикла (S), затем вычисляется некоторое логическое выражение P (условие), принадлежащее типу Boolean, в случае ложности которого вновь выполняется тело цикла. Затем выполнение тела цикла, вычисление условия P и его проверка повторяются до тех пор, пока выражение P не становится равным TRUE. После этого управление передаётся следующему (за REPEAT) оператору в программе.
Оператор REPEAT отличается от оператора WHILE, во-первых, тем, что здесь условие проверяется после выполнения тела цикла. Иными словами, гарантируется хотя бы однократное его выполнение. Во-вторых, оператор REPEAT выполняется до тех пор, пока условие равно FALSE, и управление передается следующему (за REPEAT) оператору, когда условие становится равным TRUE (для оператора WHILE имеет место обратная зависимость).
Даже если условие р равно TRUE с самого начала, тело цикла выполнится хотя бы раз. Если условие р тождественно FALSE (repeat s until false), цикл будет бесконечным.
Для того чтобы понять разницу между операторами цикла WHILE и REPEAT, рассмотрим соответствующие фрагменты программ, вычисляющих степени числа 3 в диапазоне между 1 и 300.
Цикл WHILE Цикл REPEAT
a:=3: a:=3;
while a<300 do repeat
begin WritteLn (a);
WritteLn (a); a:=a*3
a:=a*3 until a>=300;
end;
Прежде всего бросается в глаза, что условия повторения цикла для двух случаев противоположны. Это объясняется тем, что в операторе WHILE цикл выполняется, пока условие не примет значение FALSE, а в операторе REPEAT – пока условие не примет значение TRUE.
Так же следует обратить внимание на то, что тело цикла REPEAT не требуется заключать в операторные скобки BEGIN… END. Если в операторе WHILE после ключевого слова DO выполняется единственный оператор (и если требуется циклически выполнять несколько действий, приходится несколько операторов объединять в составной оператор), то в операторе REPEAT между ключевыми словами REPEAT и UNTIL можно ввести любое количество операторов, без необходимости заключать их в операторные скобки.
Наконец в операторе REPEAT после последнего оператора в теле цикла нет точки с запятой. Это ещё одна особенность оператора REPEAT—перед ключевым словом UNTIL точка с запятой необязательна.