- •Методические указания и задание на выполнение контрольной работы
- •Горячие клавиши меню
- •Горячие клавиши редактирования
- •Горячие клавиши управления окнами
- •Горячие клавиши встроенной справочной информации
- •Горячие клавиши отладки/запуска
- •1.2. Создание программы
- •1.3. Анализ программы
- •1.4. Сохранение программы
- •1.5. Компиляция программы
- •1.6. Выполнение программы
- •2. Программирование на turbo pascal
- •2.1. Элементы программирования
- •2.2. Типы данных
- •Целочисленные типы данных
- •2.3. Тип массив
- •2.4. Операторы
- •2.5. Вывод
- •2.5.1. Процедура WriteLn
- •2.5.2. Ввод
- •2.6.2. Оператор выбора Case
- •2.7. Цикл.
- •2.7.1. Цикл while.
- •2.7.2. Цикл Repeat … Until
- •2.7.3. Цикл For
- •2.8. Процедуры и функции.
- •2.9. Структура программ.
- •2.10. Структура процедуры и функции.
- •2.11. Пример программы.
- •Контрольные задания
- •Вариант №0
- •Вариант №1
- •Вариант№2
- •Вариант №3
- •Вариант №4
- •Вариант №5
- •Вариант №6
- •Вариант №7
- •Вариант №8
- •Вариант №9
2.7.2. Цикл Repeat … Until
Второй цикл Repeat…Untilрассмотрим на примере программыDORATIO.PAS:
Program DoRatio;
Var
A, B: Integer;
Ratio: Real;
Ans: Char;
Begin
Repeat
Write(‘Введите два числа’);
ReadLn(A, B);
Ratio := A/B;
WriteLn(‘Отношение равно’, Ratio);
WriteLn(‘Повторить? (Y/N)');
ReadLn(Ans);
Until UpCase(Ans) = ‘N’;
End.
Как описывалось ранее, в этой программе повторяется выполнение операторов, пока ответ на вопрос – nилиN(Повторить?Y/N). Другими словами,RepeatиUntilповторяются до тех пор, пока значение выражения приUntilне будетTrue.
Существуют три основных отличия от цикла While:
операторы в цикле Repeatвыполняются хотя бы один раз, потому что проверка выражения осуществляется в конце тела цикла. В циклеWhile, если значение выраженияFalse, тело его пропускается сразу.
цикл Repeatвыполняется пока выражение не станетTrue, в то время, как циклWhileвыполняется до тех пор, пока выражение имеет значениеTrue. При замене одного типа цикла на другой необходимо на это обращать особое внимание. Рассмотрим программуHELLO, где циклWhileзаменен на циклRepeat:
program Hello;
var
Count: Integer;
Begin
Count := 1;
Repeat
WriteLn(‘Здравствуй и прощай!’);
Inc(Count);
Until Count > 10;
WriteLn(‘Это конец”);
End.
Отметим, что теперь переменная Countпроверяется на значение больше 10 (а вWhileбылоCount<= 10).
В заключение, в цикле Repeatможет использоваться просто группа операторов, а не составной оператор. При использовании этого цикла не используются словаBegin…End, как в случае с цикломWhile.
Запомните, что цикл Repeat выполнится хотя бы один раз, в то время, как цикл Whileможет ни разу не выполниться в зависимости от значения выражения.
2.7.3. Цикл For
Цикл Forсуществует во многих языках программирования. В Паскале тоже. Однако, вариант этого цикла в Паскале как эффективен, так и ограничен.
Обычно, набор операторов выполняется фиксированное число раз, пока переменная (индексная) принимает значение в указанном диапазоне. Модифицируем знакомую программу HELLOследующим образом:
Program Hello;
Var
Count: Integer;
Begin
For Count := 1 to 10 Do
WriteLn(‘Здравствуй и прощай!’);
WriteLn(‘Это конец’);
End.
При выполнении этой программы видно, что цикл Forвыполняется так же, как и циклыWhileиRepeat. Фактически эквивалентно циклуWhile.
Формат цикла For:
For индекс:= выражение 1 to выражение 2 do оператор
Где индекс – скалярная переменная (целого типа, символьного, булевского и любого перечисленного типа);
Выражение 1 и выражение 2 – выражения типа, совместимого с типом индекса; оператор – одиночный или составной оператор. Индекс увеличивается на 1 после каждого выполнения цикла Индекс можно уменьшить на 1. Для этого ключевое слово toзаменяется наdownto.
Цикл forэквивалентен следующей программе с цикломwhile:
Index :=expr1;
While index <= expr2 do
Begin
Оператор;
Inc (index)
End;
Главный недостаток цикла for– это возможность уменьшить или увеличить индекс только на 1.
Основные преимущества – краткость, возможность использования символьного и перечислимого типа в диапазоне значений.