- •Программирование на языке высокого уровня
- •1 Часть Учебное пособие Москва 2007
- •Оглавление
- •1. Основы алгоритмизации
- •1.1. Алгоритмизация и требования к алгоритму
- •1.2. Блок-схемы алгоритмов
- •1.2.1. Способы записи алгоритма
- •1.2.2. Блок-схемы
- •1.2.3. Следование, ветвление, цикл
- •1.3. Этапы разработки программы
- •1.3.1. Язык программирования. Программа
- •1.3.2. Этапы разработки
- •1.4. Ошибки
- •1.4.1. Компилятор. Синтаксис и семантика
- •1.4.2. Типы ошибок
- •2. Алфавит языка Турбо Паскаль. Программа
- •2.1. Идентификаторы
- •2.2. Разделители
- •2.3. Специальные символы
- •2.4. Структура Pascal-программы
- •Пример простейшей программы на языке Pascal
- •3. Типы данных
- •3.1. Структура типов данных
- •3.2. Простые типы
- •3.2.1. Порядковые типы
- •3.2.1.1 Целые типы.
- •3.2.1.1.1. Встроенные процедуры и функции, применимые к целым типам
- •3.2.1.2. Логический тип.
- •3.2.1.3. Символьный тип.
- •3.2.1.4. Перечисляемый тип.
- •3.2.2. Вещественные типы
- •3.3. Константы и переменные
- •3.4. Преобразование типов
- •4. Операторы
- •4.1. Ввод данных
- •4.2. Вывод данных
- •4.3. Составной оператор
- •4.4. Условный оператор
- •4.5. Операторы циклов
- •4.5.1. Оператор for
- •4.5.2. Оператор while
- •4.5.3. Оператор repeat
- •4.5.4. Стандартные функции для циклов
- •4.6. Оператор выбора case
- •5. Массивы
- •5.1 Определение массива
- •5.2. Ввод/вывод одномерного массива (вектора).
- •5.3 Типизированные константы – массивы
- •5.4. Сортировка массивов (ранжирование)
- •6. Процедуры и функции
- •6.1. Подпрограммы
- •6.2. Параметры. Глобальные и локальные описания
- •6.3. Процедуры
- •6.4. Функции
- •6.5. Процедура exit
- •6.6. Рекурсия
- •6.7. Директивы подпрограмм
- •6.8. Открытые массивы
- •7. Записи
- •7.1.Определение и правила записи
- •7.2. Оператор присоединения
- •7.3. Записи с вариантами (экономия пространства)
- •8. Множества
- •8.1. Понятие множества
- •8.2. Конструктор множества
- •8.3. Операции над множествами
- •8.4. Примеры программ, использующих множества.
- •Литература
4.3. Составной оператор
Это последовательность операторов программы заключенная в операторные скобки BEGIN … END. Это дает возможность писать программу по современным технологиям без операторов go, to. Турбо паскаль не накладывает никаких ограничений на характер операторов, входящих в составной оператор. Среди них может быть и составной оператор. Глубина вложенности произвольна.
Begin
--------------------------
Begin
--------------------------
Begin
-
--------------------------
End;
---------------------------
End;
-----------------------------
End;
4.4. Условный оператор
Позволяет проверить то или иное условие и в зависимости от результата проверки выполнить то или иное действие.
IF <условие> THEN <оператор 1>ELSE <оператор 2>
Условие это произвольное выражения логического типа.
Оператор 1 и Оператор 2 - любой оператор Турбо Паскаль.
Работает по принципу сначала вычисляем условие если результат True то выполняем оператор 1 а оператор 2 пропускаем если оператор False то оператор 2 выполняется а оператор 1 пропускается!
Пример 1:
-----------------------------
If X<2 then write(‘ X<2 ’)
ELSE
write(‘ X>=2 ’);
INC(X);
-------------------------------------------------------
Пример 2:
If X>5 then write(X);
DEC(X);
--------------------------------------------------------
Оператор 1 и оператор 2 могут быть любого типа, в том числе и условными. Но не каждый из условных операторов может иметь часть ELSE. Эта неоднозначность решается так: любая встретившаяся часть ELSE соответствует ближайшей к ней “сверху” части THEN условного оператора.
Пример 3:
VAR
A,b,c,d:integer;
---------------------------------
{a:=1; b:=2; c:3; d:=4;}
-
If a>b then
If c<d then
If c<0 then c:=0
ELSE
A:=b; {a=1}
-
If a>b then
If c<d then
If c<0 then c:=0
ELSE
ELSE
ELSE
A:=b; {a=2}
Лучше составной оператор ставить между Begin и End.
IF key=’Y’ THEN
begin
{выполняются операторы, если ответом был Y}
End
ELSE
begin
{эти операторы выполняются независимо от ответа}
End;
Пример 4:
Вычислить функцию:
X2+1, если X<0
Y= X-2,1, если Х>P/2
SIN X, если 0<=X<=P/2
Для произвольного Х.
Program TS;
Var
X,Y: real;
BEGIN
Write(‘ Введите X ‘); Readln(X);
If X<0 then Y:=sqr(X)+1
ELSE
If X>PI/2 then Y:=X-2.1
ELSE
Y:=Sin(X);
Writeln(‘При х=’, X:5:2,’ Y=’,Y:8:2);
END.
Пример 5:
Составить программу определения произведения двух наименьших целых чисел A,B,C.
(A=B=C)
Program MINMUL;
Var
A,B,C: integer;
Mul:real;
BEGIN
Write(‘ Введите A,B,C ‘); Readln(a,b,c);
Max:=a;
If B>MAX then MAX:=B;
If C>MAX then MAX:=C;
MUL:=A*B*C/MAX;
Writeln(‘Произведение двух наименьших’, MUL:8:2)
END.
4.5. Операторы циклов
В Т-П имеются три оператора, с помощью которых можно запрограммировать повторяющиеся фрагменты.
4.5.1. Оператор for
Используется, если можно указать в заголовке число повторений
FOR <ПЦ> : = <НЗ> TO <КЗ> DO <оператор>
DOWNTO
FOR, TO, DOWNTO, DO – зарезервированные слова
<ПЦ> – параметр цикла, переменная любого порядкового типа
<НЗ>– начальное выражение того же типа
<КЗ> – конечное выражение того же типа
(оператор) – произвольный оператор Т-П
Работа цикла представлена блок-схемой
Увеличить
(нц) := (нц)+1
((нц) := (нц)-1 – в случае DOWNTO)
Вычислить (НЗ)
Запомнить результат
А
Вычислить (КЗ)
Запомнить результат
(НЦ)>(КЗ)
(<DOWNTO)
(НЗ)< (КЗ)
(В случае downto (НЗ)> (КЗ))
В
нет
да
(ПЦ) := (НЦ)
В
Выполнить оператор
А
Пример 1
Program Privet;
var
Hum : byte;
Begin
For hum :=1 to 3 do
Writeln ('Мы желаем Вам веселого Рождества');
Writeln ('и счастливого Нового года!');
End.
Выполняется при hum := 1,2,3 первая запись и один раз вторая запись (после завершения цикла)
Пример 2
На экран выводиться таблица перевода из градусов по шкале Цельсия (С) в градусы по Фаренгейту (F) для значений от 150 до 300 с шагом 10. Перевод осуществляется по формуле F:= С* 1,8+ 32
Program Demofor;
Var
i: integer;
f: real;
Begin
Write (‘ Температура ‘);
For i:=15 to 30 do
Begin
F:=i*1.8=32;
Write (‘по Цельсию = ‘, i, ‘ по Фаренгейту = ‘, f:5:2)
End
End.
Описан параметр цикла I (тип Integer) и var – типа real. В начале выполнения программы выводится надпись «Температура», а затем таблица соотношения температуры (с) и (F)
Цикл:
-
Проверяется условие I<=30;
-
Если да – то рассчитывается выражение i*1.8=32 и присваивается var f и на экран выводится сообщение;
-
Если условие I<=30 не соблюдается, то оператор цикла не выполняется и управление передается за пределы цикла. Программа завершает работу.
-
Значение i=i+1 передается в заголовок цикла (for) для проверки условия.
Пример 3 c dowto
For i:=14 dowto10 do
Write (i:3)
На экране 14 13 12 11 10
Пример 4
Если выражение отвечает невозможной последовательности, то цикл вообще не выполняется
For i:= 2 to 1 do write(‘Робкий‘)
Начальное и конечное значение вычисляется перед выполнением оператора цикла и в дальнейшем не перевычисляется. Невозможно перескочить через «финишную черту», установленную в самом начале.
Пример 5
Fin := 3; (цикл работает равно три раза)
For i:=1 to fin do 4
Begin 5
Inс (fin) 6
End;
Всякое изменение параметра цикла является ошибкой.
for i:=1 to 3 do
begin
i:=i-1; {ошибка}
read (i); {ошибка}
for i:=5 to 10 do {ошибка}
end;