- •Текстовый редактор
- •Прогон и отладка программы
- •Справочная служба Турбо Паскаля
- •Строка
- •Строка
- •Задание 2. Разветвления
- •Простейшие циклы
- •Вложенные циклы
- •Примечания
- •Строка
- •Процедуры и функции
- •Процедуры ввода
- •Обозначение
- •Представим определение языка Показушка в расширенной форме Бэкуса-Наура
- •Предложение
- •Синтаксис Паскаля
- •Задание 14
- •Операторы Паскаля
- •Задание 15
- •Новые типы данных. Определение типа. Диапазоны.
Строка |
Ход выполнения |
n |
t |
x |
|
|
|
|
7 |
|
|
|
0.8 |
|
|
|
|
8 |
вывод 1.5, 0.8, + |
|
|
|
|
|
|
|
9 |
выход из Р |
|
|
|
|
|
|
|
|
возврат в prim4 |
|
|
|
|
|
|
|
15 |
вывод 1, 0.8, + |
|
|
|
|
|
|
|
16 |
Выход из Prim4 |
|
|
|
|
|
|
|
Результат: 1.5 |
0.8 + |
|
|
|
|
|
|
|
|
1 |
0.8 + |
|
|
|
|
|
|
Замечание. |
|
|
|
|
|
|
|
1В процедуре P параметры x и y являются параметрами значениями. Поэтому при вызове процедуры (строка 14) для этих параметров выделяются дополнительные ячейки памяти, куда копируются значения фактических параметров. По окончанию работы процедуры эта память освобождается и, говорят что, параметры x и y разрушаются. В таблице трассировки это отражено вводом дополнительных столбцов n, x и y при вызове процедуры (выделяется дополнительная память) и их отсутствие после строки 9 (память освобождается, локальные переменные n, x и y исчезают).
2Во второй строке программы описываются глобальные переменные n, t, x. В процедуре Р параметры x, y, n являются локальными. Так как локальные переменные n, x имеют те же имена, что и глобальные переменные, то последние не доступны во время работы процедуры Р, что отражено в таблице трассировки соответствующей штриховкой.
3Глобальная переменная x является переменной символьного типа (char) и ей может быть присвоен любой символ. Операции с символьными переменными и константами ограничены только их сравнением. Символы в программе должны быть заключены в
апострофы. Если символ является апострофом, то в программе он записывается четыремя апострофами.
Пример трассировки программы с функцией.
1Program Parameters;
2Var a,b:integer;
3Function add1(x:integer;var y:integer):integer;
4Begin
5X:=x+1;
6Y:=y+1;
7Add1:=x+y;
8Writeln(x,y)
9End;
10Begin
11A:=0; b:=0;
12Writeln(add1(a,b),a,b)
13End.
Строка |
Ход выполнения |
A |
B |
|
|
10 |
Вход в Parameters |
? |
? |
|
|
11 |
|
0 |
0 |
|
|
12 |
Вызов add1 |
|
|
|
|
|
|
|
(y) |
x |
Add1 |
4 |
Вход в add1 |
|
|
0 |
? |
5 |
|
|
|
1 |
|
6 |
|
|
1 |
|
|
7 |
|
|
|
|
2 |
8 |
Вывод: 1 1 |
|
|
|
|
9 |
Выход из add1 |
|
(b) |
|
|
12 |
Вывод: 2 0 1 |
|
|
|
|
13 |
Выход из Parameters |
|
|
|
|
Результат: 1 1 0 1
38