- •Конспект лекций
- •1.4 Общая структура программы
- •1.5 Стандартные процедуры и функции
- •1.6 Процедуры ввода/вывода
- •2. Простые типы данных
- •2.1 Целые типы
- •2.2 Вещественные типы
- •2.3 Cимвольный тип данных
- •2.4 Логический тип данных.
- •2.5 Ограниченные типы
- •2.6 Перечислимые типы
- •2.7 Описание типов
- •2.8 Преобразование типов
- •2.9 Порядок вычисления выражений
- •3. Операторы языка Паскаль
- •3.1 Оператор присваивания
- •3.2 Составной оператор
- •3.3 Условный оператор
- •3.4 Оператор выбора case
- •3.5 Оператор цикла с параметром (цикл for)
- •3.6 Оператор цикла с предусловием (цикл while)
- •1 Вариант:
- •2 Вариант:
- •3 Вариант:
- •3.7 Оператор цикла с постусловием (цикл repeat)
- •3.8 Вложенные циклы
- •3.9 Оператор перехода goto
- •4. Массивы
- •4.2 Сортировка элементов массива
- •4.3 Многомерные массивы
- •5. Подпрограммы (процедуры и функции)
- •5.1 Процедуры
- •5.2 Функции
- •5.3 Области действия имен
- •5.4 Параметры процедур и функций
- •5.5 Побочные эффекты при использовании подпрограмм
- •5.6 Передача массивов в подпрограммы
- •5.7 Параметры-костанты
- •5.8 Массивы открытого типа
- •5.9 Рекурсия в подпрограммах
- •6. Строковый тип данных
- •6.1 Описание строк
- •6.2 Операции со строками
- •6.3 Процедуры и функции для работы со строками
- •7. Стандартные модули Турбо-Паскаля
- •7.1 Модули турбо3 и graph3
- •7.2 Модуль overlay
- •7.3 Модуль dos
- •7.4 Модуль system
- •7.5 Модуль printer
- •7.6 Модуль crt
- •7.7 Модуль graph
- •8. Записи
- •8.1 Определение записи
- •8.2 Оператор над записями
- •8.3 Вложенные записи
- •8.4 Массив записей
- •8.5 Записи с вариантами
- •9. Файлы
- •9.1 Определение файла
- •9.2 Процедуры и функции для работы с файлами
- •9.3 Нетипизированные файлы
- •10. Интегрированная среда Турбо Паскаля
- •10.1 Как начать работу с Турбо Паскалем
- •10.2 Ваша первая программа
3.8 Вложенные циклы
Тело цикла может содержать любые операторы языка Паскаль, в т.ч. и операторы циклов. Когда один цикл находиться внутри другого, то его называют вложенным циклом.
Примеры вложенного цикла For:
1. var a,b:integer;
begin
for i:= 1 to 2 do
for j:= 1 to 3 do
writeln(i, ‘ ’, j); {выполнится 6 раз}
end.
На экране увидим:
1 1
1 2
1 3
2 1
2 2
2 3
2. var a,b:integer;
begin
for i:= 1 to 2 do
begin
for j:= 1 to 3 do writeln(i, ‘ ’, j); {выполнится 6 раз}
writeln(‘******’);
end;
end.
На экране увидим:
1 1
1 2
1 3
******
2 1
2 2
2 3
Правило выполнения:
на каждом шаге внешнего цикла полностью выполняются все шаги внутреннего цикла.
Пример 1: Программа вычисления и вывода на экран таблицы умножения (Пифагора).
var i,j: integer;
begin
for i:=1 to 9 do
begin
for j:=1 to 9 do
write(i*j:4);
writeln;
end;
end.
Пример 2: Программа вычисления значений функции f(x,y)=sin(x)*cos(y), где х=0..π с шагом π/5 и у=0..1 с шагом 0,1.
var x,y,f: real;
begin
x:=0;
repeat
y:=0;
while y<=1 do
begin
f:=sin(x)*cos(y);
write(f:6:3);
y:=y+0,1;
end;
x:=x+pi/5;
writeln;
until x>pi;
end.
3.9 Оператор перехода goto
Оператор перехода позволяет изменить обычный последовательный порядок выполнения операторов в программе. Он вызывает переход к выполнению оператора, которому предшествует метка.
Структура оператора:
GOTO <метка>;
…
…
< метка >: <оператор>;
Метка – это число от 0 до 9999, или идентификатор. Метки, используемые в программе, должны быть описаны:
LABEL 1, 2, Met;
Нельзя использовать оператор GOTO для перехода в подпрограммы, а также внутрь операторов цикла, условного и составного операторов.
Использование оператора перехода в Паскаль считается избыточным, поэтому следует избегать его использования в программах. В крайнем случае можно применять GOTO для перехода вниз по тексту программы (вперед) .
Пример: Частное от деления целых чисел.
Label M1;
var x,y,res: integer;
begin
write(‘Введите x,y’);
readln(x,y);
if y=0 then
begin
writeln(‘Деление на ноль!’);
goto M1;
end;
res:=x div y;
writeln(‘Частное = ’, res);
M1: writeln(‘Конец программы’);
end.
Задачи для самоконтроля
3.1 Определить, какие значения x, y, z будут напечатаны после выполнения программы.
var x,y,z: real;
begin
x:=-2; y:=3; z:=3.5;
z:=x-2.5;
y:=x-y+2*z;
x:=x+y-2*z;
x:=y-2*x;
y:=x+2*y+z;
z:=(x+y)*2;
writeln(‘x=’,x,’ y=’,y,’ z=’,z);
end.
3.2
а) Определить значение переменной x после работы следующего фрагмента программы:
a = 8; b = 3 * a – 4; x = 0; y = 2 * b;
if ( 2 * a > b ) or (4 * a < y ) then begin x = 7; y = –15 end;
if ( x > 0 ) and ( 2 * a + b < y ) then begin x = 5; y = –7 end;
б) Определить значение переменной x после работы следующего фрагмента программы:
a = –3; b = –4 * a –2; x = 1; y = b/2 – 1;
if ( 5 * a > b ) or ( y > a ) then begin x = x + 2; y = x – 3 end;
if ( 2 * a + 8 > y ) and ( y < x ) then begin x = y + 5; y = 6 end;
3.3 Определить значение переменной x после работы следующих фрагментов программы:
а) x:=5;
for i:=2 to 4 do x:= x – 2;
б) x:=4; y:=2;
While y<= 4 do begin
x:=x - 2;
y:=y+1;
end;
в) x:=4; y:=2;
Repeat
x:=x - 2;
y:=y+1;
until y>=4 ;