![](/user_photo/2706_HbeT2.jpg)
- •Введение в object pascal
- •Лекция 1. Интегрированная Среда и Состав языка Object Pascal
- •1.1 Работа с окнами
- •1.2 Редактирование в Object Pascal
- •1.3 Команды меню
- •1.4 «Горячие» клавиши в Object Pascal
- •1.5 Состав языка
- •1.5.1 Алфавит и ключевые слова
- •1.5.2 Идентификаторы
- •1.5.3 Знаки операций, разделители, выражения и операторы
- •Лекция 2. Описательная часть программы
- •2.1 Структура программы
- •2.2 Описание констант
- •2.3 Описание и использование меток
- •2.4 Комментарии
- •Лекция 3. Описание переменных
- •3.1 Структура раздела описания переменных
- •3.2 Классификация типов данных
- •3.2.1 Целочисленные типы
- •3.2.2 Логический тип
- •3.2.3 Символьный тип
- •3.2.4 Вещественные типы
- •3.3 Описание типов пользователя
- •Лекция4. Выражения
- •4.1 Порядок выполнения операций
- •4.2 Выражения целого типа
- •4.3 Вещественные выражения
- •4.4 Логические выражения
- •Лекция 5. Программы Линейной структуры
- •5.1 Операторы ввода (Read, Readln)
- •5.2 Операторы вывода (Write, Writeln)
- •5.2.1 Форматирование численных значений
- •5.2.2 Вывод строковых, символьных и логических значений
- •5.2.3 Вывод вещественных значений в экспоненциальном формате
- •5.2.4 Расположение данного в поле вывода. Примеры
- •5.3 Оператор присваивания
- •5.4 Составной оператор
- •5.5 Стандартные процедуры и функции
- •5.5.1 Понятие процедуры и функции
- •5.5.2 Описание некоторых стандартных процедур и функций
- •5.5.3 Примеры программ линейной структуры
- •Лекция 6. Операторы ветвления (выбора)
- •6.1 Оператор ветвления if
- •6.2 Оператор множественного выбора (варианта) - case
- •Лекция 7. Операторы организации циклов
- •7.1 Цикл типа for
- •7.1.1 Прямая форма оператора for
- •7.1.2 Обратная форма оператора for
- •7.1.3 Советы для начинающих и примеры
- •7.2 Цикл типа While
- •7.3 Цикл типа Repeat... Until
- •7.4 Дополнительные операторы при программировании циклов
- •7.4.1 Досрочный выход из цикла - break
- •7.4.2 Переход к следующей итерации цикла - continue
- •Лекция 8. Массивы
- •8.1 Одномерные массивы
- •8.2 Сортировка одномерного массива
- •8.3 Массивы с большей размерностью
- •8.4 Констант-массивы
- •8.5 Генератор случайных чисел
- •8.5.1 Описание функции Random
- •8.5.2 Применение случайных чисел при работе с массивами
- •Лекция 9. Строки
- •9.1 Строковый тип
- •9.2 Операции над строками
- •Лекция 10. Записи и множества
- •10.1 Запись
- •10.2 Множества
- •11 Пользовательские процедуры и функции
- •11.1 Описание функции и процедуры
- •11.2 Понятие формальных и фактических параметров
- •11.3 Способы передачи параметров в подпрограмму через заголовок
- •11.4 Область видимости идентификаторов
- •12 Файлы
- •12.1 Основные понятия
- •12.2 Типизированные файлы
- •12.3 Текстовые файлы
7.2 Цикл типа While
Этот цикл используется, если известно условие прекращения цикла, но неизвестно количество итераций.
While <выражение типа Boolean> do <оператор>;
В данном случае <выражение типа Воо1еап> - это условие продолжения цикла (пока условие - истинно, тело цикла выполняется).
Если условие принимает с самого начала значение false, то тело цикла вообще не выполняется.
Конструкция цикла предусмотрена на случай того, что телом является только один оператор, который непосредственно следует за структурой While... do, а для включения в тело цикла нескольких операторов необходимо объединить их в один составной.
Примеры:
1)
While x < у do х: = х - 1 ;
2)
while (a < m) or (b < n) do
begin
a : = a - t ;
b : = b - z ;
end;
При организации цикла While может возникнуть ситуация "зацикливания". Чтобы этого не произошло, по крайней мере, один из повторяемых в теле цикла операторов должен влиять на значение условия прекращения цикла, иначе он будет выполнятся бесконечно.
Примеры:
1)
While true do Writeln('2=2') ;
Данный цикл будет выполнятся бесконечно, так как в теле цикла нет оператора, который бы мог изменить условие продолжения цикла.
2)
while (a < 100) or (a > 100) or (a = 100) do Writeln(a);
В этом цикле условие его продолжения будет всегда выполняться (а – переменная целого типа), а в теле цикла нет оператора влияющего на условие его продолжения. Следовательно цикл будет продолжаться бесконечно.
Задача. Используя алгоритм Евклида, найти НОД (наибольший общий делитель) двух чисел.
Алгоритм Евклида:
Если переменные неравны, то заменить большее значение на разность большего и меньшего и перейти на начало пункта 1).
Если же переменные равны, выбрать любое значение в качестве результата и закончить алгоритм.
program p7_7;
var
а, b, х, у: integer;
begin
Write('Введите а и b: ');
Readln (a, b);
х := а; {запоминаем начальные значения а и b}
у:=b;
While a <> b do if a > b then a:= a - b else b:= b – a;
Writeln (‘ HOД( ‘, x, ', ' , y, ') = ' , a);
end.
7.3 Цикл типа Repeat... Until
Этот цикл во многом похож на цикл While, но отличается от него тем, что условие проверяется не в начале цикла, а в конце, и это не условие продолжения цикла, а условие выхода из него.
В отличие от цикла While, тело цикла Repeat... Until всегда выполняется по крайней мере один раз.
Repeat
<оператор 1>;
<оператор 2>;
……………….
<оператор n>;
Until <выражение типа Boolean>;
В данном случае <выражение типа Boolean> - это условие выхода из цикла (пока условие - ложно, тело цикла выполняется). Конструкция цикла такова, что для организации тела не требуется объединять операторы в один составной, потому что часть программы между служебными словами Repeat и Until и так является его телом.
Примеры:
1)
х := 0;
Repeat
x: = x + 1 ;
Write('х= ', х);
у: = sin(х);
Writeln(' x= ', x, ' у= ', у);
Until x = 100;
2)
х := 10;
Repeat
t: = t - 1;
Until t = 0;
Задача.
Вычислить
выражениес точностьюe.
program p7_8;
var
S, е, х : real;
i : integer;
begin
Writeln('Введите точность');
Readln(e);
S := 0;
i := 1;
Repeat
x:= 1/(i*i*i) ;
S := S + x;
i : = i + 1 ;
Until x < e;
Writeln(‘Summa = ' , S:10:8) ;
end.