- •Часть I
- •Лекция №1 Тема: «Элементы языка»
- •1. Среда программирования Турбо Паскаль.
- •2. Алфавит и словарь языка Турбо Паскаль.
- •Слова в Турбо Паскаль.
- •Идентификаторы.
- •Константы и переменные
- •Структура программ
- •Var {описание раздела переменных}
- •Раздел подключаемых библиотечных модулей
- •Раздел описания меток.
- •Раздел описания констант
- •Раздел описания типов данных
- •Раздел описания переменных
- •Var {описание раздела переменных}
- •Раздел описания процедур и функций
- •Раздел операторов
- •Лекция №2. Тема: «Типы данных»
- •Простые типы:
- •Структурированные типы:
- •Процедурные типы. Целые типы
- •Вещественные типы
- •Логический тип
- •Символьный тип (литерный)
- •Пользовательские типы данных.
- •Перечисляемый тип
- •Интервальный тип (диапазон)
- •Совместимость типов данных
- •Структурированные типы данных
- •Лекция №3 Тема: «Операторы языка»
- •1. Простые операторы
- •2. Структурные операторы
- •1. Простые операторы
- •1.2 Оператор безусловного перехода (go to)
- •2.2. Условные операторы
- •2.2.1. Оператор условия if.
- •2.2.2.Оператор выбора case
- •2.3.1.Оператор while.
- •2.3.2. Оператор повтора. Оператор цикла с последующим условием.
- •Лекция №4. Тема: «Массивы»
- •Алгоритм сортировки
- •Сортировка выбором
- •Сортировка обменом (методом "пузырька")
- •Шейкерная перестановка
- •Сортировка включением
- •Сортировка Хоара
- •Лекция № 5. Тема: «Процедуры и функции»
- •Параметры-значения
- •Параметры-переменные
- •Параметры-константы
- •Открытые параметры - массивы.
- •Бестиповые параметры.
- •Процедурные типы
- •Рекурсия
- •Лекция №6. Тема: «Модули»
- •Модуль crt (основные возможности)
2.3.1.Оператор while.
Оператор while (пока) часто называют оператором цикла с предварительным условием (с предусловием). Используется в тех случаях, когда заранее неизвестно число повторений цикла.
Форма записи оператора цикла с предусловием имеет вид:
While <логическое выражение> DO
BEGIN
<операторы циклической части программы>
END
Здесь While (пока) и DO (выполнить) – служебные слова.
Оператор цикла действует так: сначала проверяется значение логического выражения. До тех пор пока оно истинно, выполняются операторы циклической части. Как только оно становится ложным – выход из цикла. Если изначально значение логического выражения ложно, то операторы циклической части не выполняются ни разу. Операторы циклической части, заключенные в операторные скобки BEGIN – END представляют собой составной оператор.
Примером может служить программа, производящая суммирование десяти произвольных введенных целых чисел.
Program Summ;
const
Limit = 10 {ограничение на количество вводимых чисел}
var
Count, Item, Sum: integer;
begin
Count:=0; {счетчик чисел }
Sum:=0; { сумма чисел }
while (Count < Limit) do {условие выполнения цикла}
begin
Count:=Count+1;
While(‘ введите ‘ , Count,’- целое число: ‘);
Readln (Item); {ввод очередного числа с клавиатуры }
Sum:= Sum + Item;
end;
Writeln (‘ сумма введенных чисел равна’,Sum);
end.
В данном примере в разделе описания констант описана константа Limit=10, задающая ограничения на количество вводимых чисел. В разделе описания переменных описаны переменные Count, Item, Sum целочисленного типа.
В начале выполнения программы обнуляются значения счетчика введенных чисел Count и их суммы.
2.3.2. Оператор повтора. Оператор цикла с последующим условием.
Цикл с постусловием, как правило, используется в тех случаях, когда заранее неизвестно число повторений цикла. Оператор цикла имеет вид:
REPEAT
<операторы циклической части программы>
UNTIL <логическое выражение>
Здесь REPEAT (повторить) и UNTIL (до тех пор) – служебные слова.
Оператор цикла с постусловием действует следующим образом. Операторы циклической части выполняются повторно (по крайней мере один раз) до тех пор, пока значение логического выражения ложно. Условием прекращения циклических вычислений является истинное значение логического выражения. Таким образом, сначала выполняется циклическая часть, а затем проверяется условие. Эти действия прямо противоположны действиям оператора цикла с предусловием, где сначала проверяется условие, а затем выполняются операторы циклической части.
Поскольку нижняя граница операторов циклической части четко обозначена словом UNTIL, то нет необходимости заключать операторы циклической части в скобки вида BEGIN – END, хотя наличие операторных скобок не является ошибкой.
В следующем фрагменте показано, как оператор repeat используется для ожидания нажатия клавиш Y и N. Нажатие других клавиш будет игнорироваться:
uses Crt;
var
YN: char; begin
. . .
repeat
YN:=ReadKey until
Upcase(YN) in ['Y1,'N'];
end.
Примером действия оператора repeat может служить программа, которая вводит и суммирует любое количество целочисленных значений. Если введено значение 999, то на экран выводится результат суммирования.
Program Summa;
var
X: integer; Sum: real;
begin
Sum:=0;
repeat {Повторять}
Write('Значение X= '); {Начало тела цикла}
Readln(X); {Считать очередное значение X
if X < 999 then
Sum:= Sum+X;
until X = 999; {Условие окончания цикла}
Writeln('Сумма введенных чисел— ',Sum);
end.
В данном примере в разделе описания переменных описана переменная X целочисленного типа integer и Sum вещественного типа real.
В начале выполнения программы обнуляется значение суммы чисел. Затем зарезервированным словом repeat объявляется цикл, после чего следуют операторы цикла, которые выводят на экран запрос 'Значение Х= ', считывают введенное с клавиатуры значение X. Оператор if проверяет его на неравенство числу 999 и, если оно не равно 999, увеличивает значение суммы Sum на значение числа X. В цикле оператор until X = 999 проверяет условие окончания цикла. Если значение выражения X = 999 истинно, то цикл завершится, а управление в программе передано на оператор, находящийся за словом until, т. е. первый оператор за границей цикла repeat. Это вызов процедуры Writeln, которая выведет сообщение ‘Сумма введенных чисел равна' и напечатает значение переменной Sum.
2.3.3. Оператор цикла с параметром. В случаях, когда число повторений может быть заранее известно, для организации циклической обработки информации применяется оператор повтора for. Часто этот оператор повтора называют оператором цикла с параметром, так как число повторений задается переменной, называемой параметром цикла, или управляющей переменной.
Оператор повтора for состоит из заголовка и тела цикла.
Синтаксическая диаграмма данного оператора имеет вид:
Т.е., оператор цикла имеет вид:
FOR i:=m1 TO m2 DO
BEGIN
<Операторы циклической части программы>
END
Здесь FOR (для), TO (до), DO (выполнить) – служебные слова; i – параметр цикла; m1, m2 - начальное и конечное значение параметра цикла.
Циклическая часть программы выполняется повторно для каждого значения параметра цикла i от его начального значения m1 до конечного значения m2 включительно. В качестве параметра цикла может быть только переменная, в качестве m1 и m2 могут быть выражения, за исключением действительного типа (REAL).
В качестве примера действия оператора for можно рассмотреть программу, которая выводит на экран таблицу перевода градусов по шкале Цельсия (С) в градусы по шкале Фаренгейта (F) для значений от 15оС до 30оС шагом 1 градус. Для перевода воспользуемся формулой: F = C*1.8 + 32.
Program Temperature;
var
i: integer; F: real
begin
writeln (‘ температура ‘);
for i:=15 to 30 do {заголовок цикла программы}
begin {начало тела цикла }
F:=i*1.8+32;
Writeln (‘по Цельсию =’ , i , ‘ по Фаренгейту=’, F:5:2)
end; {конец цикла программы}
end.
В блоке описания переменных описаны параметры цикла i типа integer и переменная F – температура по Фаренгейту типа real. Переменная i, помимо функций управляющей переменной, является еще и переменной, хранящей целочисленные значения температуры по шкале Цельсия. В начале выполнения программы на экране появляется надпись ‘температура’, а затем с помощью оператором повтора выводится таблица соотношения температуры в шкалах Цельсия и Фаренгейта. Печать таблицы выполняется оператором
Writeln (‘по Цельсию =’ , i , ‘ по Фаренгейту=’, F:5:2),
Выполнение цикла происходит следующим образом: при первом обращении к оператору for вычисляется значение начального (15) и конечного (30) параметров цикла, и управляющей переменной i присваивается начальное значение 15.
Затем циклически выполняется следующее:
1. Проверяется условие i<=30.
2. Если оно выполняется, то рассчитывается выражение i*1.8 + 32, значение которого присваивается переменной F , и на экран выводится сообщение
‘по Цельсию =’ , i , ‘ по Фаренгейту=’, F:5:2.
Если условие i<= 30 не выполняется, то оператор цикла тела цикла не выполняется, а управление в программе передается за пределы оператора for, в данном случае оператору end;. Программа завершает работу.
3. Значение параметра цикла i увеличивается на единицу, и управление передается в заголовок цикла for для проверки условия. Далее все повторяется с п.1.
2.4. Вложенные операторы цикла. Если в теле цикла присутствует циклическая структура, то такие циклы называются вложенными. Цикл, содержащий в себе цикл, является внешним, а цикл, содержащийся внутри другого цикла, является внутренним. Внешний и внутренний циклы могут быть трех видов: цикл с предусловием while, цикл с постусловием repeat или циклами с параметрами for.
Правила организации внешнего и внутреннего циклов такие же, как и для простого цикла каждого из видов. Но при программировании вложенных циклов необходимо учитывать, что все операторы внутреннего цикла должны полностью располагаться в теле внешнего цикла.
Например, задача вывода на экран таблицы умножения, предполагает при решении использование вложенных циклов. Используя цикл for, вариант решения данной программы может иметь следующий вид:
Program Tabl_Umn;
var
i, j: byte;
begin
For i:=1 to 10 do {внешний цикл}
For j:=1 to 10 do {внутренний цикл}
writeln(i,’*’,j,’=’,i*j); { тело внутреннего цикла}
end.
Здесь в разделе описания переменных описываются переменные i, j целого типа byte, выполняющие функции управляющих переменных циклов for.
Выполнение программы начинается с внешнего цикла. При первом обращении к оператору внешнего цикла for вычисляются значения начального (1) и конечного (10) параметров цикла и управляющей переменной i присваивается начальное значение 1.
Затем циклически выполняется следующее:
Проверяется условие i<=10.
Если оно выполняется, то выполняется оператор в теле цикла, т.е. выполняется внутренний цикл.
При первом обращении к оператору внутреннего цикла for вычисляются значения начального (1) и конечного (10) параметров цикла и управляющей переменной j присваивается начальное значение 1.
Затем циклически выполняется следующее:
проверяется условие j<=10;
если оно удовлетворяется, то выполняется оператор в теле цикла, т.е. оператор writeln(i,’*’,j,’=’,i*j);, выводящий на экран строку таблицы умножения в соответствии с текущими значениями переменных i и j;
затем значение управляющей внутреннего цикла j увеличивается на одну единицу и оператор внутреннего цикла for проверяет условие j<=10. если условие соблюдается, то выполняется тело внутреннего цикла при неизменном значении управляющей переменной внешнего цикла до тех тор, пока выполняется условие j<=10.
Если условие j<=10 не удовлетворяется, т.е. как только j станет больше 10, оператор тела цикла не выполняется, внутренний цикл завершается и управление в программе передается за пределы оператора for внутреннего цикла, т.е. на оператор for внешнего цикла.
Значение параметра цикла i увеличивается на единицу, и проверяется условие i<=10. Если условие i<=10 не соблюдается, т.е. как только i станет больше 10, оператор тела цикла не выполняется, внешний цикл завершается и управление в программе передается за пределы for внешнего цикла, т.е. на оператор end, и программа завершает работу.
Примечание.
При записи операторов необходимо помнить, что:
точка с запятой не ставиться в разделах описаний после зарезервированных слов unit, uses, label, type, const, var и ставиться после завершения каждого описания;
слова begin и end являются операторными скобками, а не операторами, поэтому точка с запятой не ставиться после слова begin и перед end;
точка с запятой является разграничителем операторов, ее отсутствие между операторами вызывает ошибку компиляции;
в операторах цикла точка с запятой не ставиться после while, repeat, do и перед until;
в условных операторах точка с запятой не ставиться после then и перед else.
Контрольные вопросы по теме : «Операторы языка».
1. Что такое оператор? В чем отличие простых и структурных операторов?
2. Оператор присвоения, назначение и порядок выполнения.
3. Оператор безусловного перехода, его назначение и особенности применения.
4. Назначение оператора вызова процедур.
5. Что представляет собой пустой оператор и для чего он используется?
6. Что представляет собой составной оператор? Как ограничиваются операторы, объеденные в составной оператор?
7. Особенности использования вложенных условных операторов.
8. Каковы отличия оператора выбора case от оператора условия if?
9. Какие правила должны соблюдаться при использовании оператора case?
10. Каково назначение операторов повтора?
11. Чем отличаются операторы while и repeat?
12. Как в операторе цикла for описывается изменение значения параметра цикла?
13. Какие ограничения налагаются на использование управляющей переменной в цикле for?
14. О чем необходимо помнить при записи операторов?
15. Что такое вложенные циклы?
