
- •Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры. Этими базовыми структурами являютия:
- •Любой алгоритм, какой бы он сложный не был, содержит лишь три основных, или, иначе говоря, базовых структуры. Этими базовыми структурами являютия:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Клавиши перемещения курсора:
- •Работа с блоками текста
- •Основные клавиши работы с Турбо-Паскалем:
- •Строковый тип данных
- •Описание констант
- •Операция присваивания
- •Приоритет операций
- •Оператор присваивания
- •Совместимость и преобразование типов
- •Элементарный ввод-вывод
- •Лекция 5 Выражения
- •Математические операции
- •Логические операции
- •Операции отношения
- •Приоритет операций
- •Основные математические функции
- •Уменьшает значение числа X на y. Если число y не указано, то уменьшение происходит на 1. Циклы
- •Арифметические циклы
- •Итерационные циклы с предусловием
- •Итерационные циклы с постусловием
- •Операторы завершения цикла
- •Операторы ветвления и цикла Условный оператор if
- •Оператор множественного выбора Case
- •Операторы цикла
- •Операторы ветвления и цикла
- •Условный оператор if
- •Оператор множественного выбора Case
- •Операторы цикла
- •Лекция 7. Подпрограммы: процедуры и функции
- •Пример 27
- •Обмен данными
- •4.2. Множества
- •4.2.1. Объявление типа множества
- •4.2.2. Операции над множествами
- •4.2.3. Пример использования множества
- •Пример 33
- •4.3. Строки
- •4.3.1. Объявление типа String
- •4.3.2. Операции над строковыми переменными
- •4.3.3. Встроенные процедуры и функции обработки строк
- •Пример 34
- •4.1. Матрица
- •4.1.1. Ввод-вывод элементов матрицы
- •4.1.2. Определение индексов элементов матрицы
- •Записи Объявление типа записи
- •Вложенные записи
- •Массивы записей
- •Пример обработки массива записей
- •Определение и особенности файлов
- •Доступ к компонентам файла
- •Текстовый файл
- •Чтение из текстового файла
- •Запись в текстовый файл
- •Файлы в Тубо Паскаль
- •Файловые процедуры и функции
- •Текстовые файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Графика Турбо Паскаля
- •Записи Объявление типа записи
- •Вложенные записи
- •Массивы записей
- •Пример обработки массива записей
- •Статические и динамические памяти переменные
- •Объявление указателей
- •Выделение и освобождение динамической памяти
- •Операции с указателем
- •Пример 41
- •Связанные списки
- •Понятие бинарные деревья. Операции над бинарными деревьями
- •Применение бинарных деревьев
- •Сравнение рекурсии и итерации
- •Пример 51
- •Реализация объектно-ориентированного подхода в турбо-паскале
- •Алгоритмическая и объектная декомпозиция
- •Объектный тип в Турбо-Паскале
- •Способы наследования и переопределения
- •Виртуальные методы
- •Модуль c r t
- •Модуль g r a p h
Операторы цикла
For
Для кодирования базовых структур цикл "от до", цикл "пока" и цикл "до" в Турбо-Паскале используются соответственно три оператора цикла: For, While, Repeat. Оператор For управляет повторением выполнения другого оператора с помощью переменной цикла. Например, ввод N элементов массива A :
for I := 1 to N do read(A[I]); |
В общем случае различают две синтаксические конструкции оператора For:
For ПеременнаяЦикла : = Нач.значение to Конеч.значение do < оператор >; |
или
For ПеременнаяЦикла : = Конеч.значение downto Нач.значение do < оператор >; |
Если в операторе For используется ключевое слово To, то переменная цикла в процессе выполнения цикла пробегает в порядке возрастания все следующие друг за другом значения от начального до конечного. Если используется ключевое слово Downto, то переменная цикла последовательно принимает все значения в порядке убывания от конечного до начального. Начальное и конечное значения переменной цикла задаются выражениями, которые вычисляются один раз перед выполнением цикла. В зависимости от соотношения значений выражений и типа цикла (To, Downto) цикл может не выполниться ни разу, выполниться один раз или выполниться несколько раз. Оператор, следующий за ключевым словом To или Downto, является телом цикла и выполняется один раз для каждого значения переменной цикла в диапазоне от начального до конечного значения. Если оператор For управляет повторением группы операторов, то эти операторы заключаются в операторные скобки Begin End. Переменная цикла, начальное и конечное значения должны быть одного и того же скалярного типа (перечисляемого или интервального) и не должны меняться внутри цикла. Выполнение цикла начинается с присваивания переменной цикла начального значения и проверки условия: не превосходит ли она конечного значения (для To) или не является ли она меньше начального значения (для Downto). Если нет, то выполняется тело цикла, после чего переменная цикла принимает следующее значение и возобновляется проверка. В противном случае цикл завершается и управление передается следующему за For оператору. Последнее значение переменной цикла считается неопределенным, хотя экспериментальная проверка показывает, что она имеет конечное значение (для To) или начальное значение (для Downto). Рассмотрим фрагмент программы, которая реализует один из алгоритмов сортировки элементов массива по возрастанию:
for I := 1 to N - 1 do for J := N downto I + 1 do if A[J] < A[J-1] then begin T := A[J]; A[J] := A[J-1]; A[J-1] := T; end; |
В этом примере элементы массива A сравниваются попарно, начиная с последнего, и если элемент A[J] оказывается меньше A[J-1], то они меняются местами. После завершения первого прохода можно гарантировать, что наименьший элемент будет находиться на месте первого элемента массива A[1]. Очевидно, что второй по значению элемент разместится в позиции A[2] и так далее (N - 1) раз. Количеством проходов управляет цикл for I := 1 to N - 1 do, который называют внешним циклом. Цикл for J := N downto I + 1 do - является вложенным.
While
Оператор цикла While кодирует базовую структуру Цикл "пока" и управляет повторением операторов тела цикла с помощью логического выражения. Пока это выражение истинно, выполняется очередная итерация. Как только выражение становится ложным, выполнение цикла заканчивается, например:
while A[I] < 0 do I := I + 1; |
В общем случае оператор While имеет вид:
While < Условие > do < оператор >; |
Проверка условия осуществляется в начале цикла (цикл с предусловием). Это означает, что операторы тела цикла могут не выполниться ни разу. Чтобы цикл While не был бесконечным, внутри цикла должны быть операторы, меняющие значение условия с истинного на ложное. После ключевого слова Do в теле цикла записывается один оператор - либо простой, либо составной.
Repeat
Оператор цикла Repeat кодирует базовую структуру Цикл "до" и оформляется следующим образом:
Repeat < оператор1 >; < оператор2 >; . . . < операторN>; until < условие >; |
Он во многом аналогичен оператору While. Однако существует три различия:
- в операторе Repeat логическое условие, задаваемое выражением, проверяется в конце цикла, так что тело цикла выполнится по крайней мере один раз (цикл с постусловием); - в Repeat условие выхода из цикла удовлетворяется, если выражение истинно, а в While - если ложно; - между ключевыми словами Repeat и Until можно поместить несколько простых операторов, поэтому операторные скобки Begin End не используются.
Приведем пример с циклом Repeat для ввода целого нечетного числа, не превышающего 19. Ввод повторяется до тех пор, пока не будет введено правильное число:
repeat writeln('Введите нечетное число <= 19'); readln (N); until Odd (N) and ( N <= 19 ); |
При использовании данного цикла необходимо позаботиться, чтобы условие стало истинным для обеспечения выхода из цикла.