Вызов подпрограмм (формальные и фактические параметры)

Подпрограммы могут быть вызваны как из тела основной программы, так и из тела другой подпрограммы. Для вызова необходимо написать имя процедуры или функции, а также, если надо, ряд переменных передаваемых в подпрограмму.

Пример:

PROCEDURE<имя>[(<формальные параметры>)];

FUNCTION<имя>[(<формальные параметры>)]:<тип>

Сразу за заголовками может следовать одна стандартных директив: ASSEMBLER <тело подпрограммы на ассемблере>, EXTERNAL<объявление внешней подпрограммы>, FAR, FORWARD, INLINE<встроенные машинные инструменты>, INTERRUPT,NEAR.

PROCEDURE SB(a: real<формальный параметр>);

Фактические параметры – это глобальные переменные подставленные в формальные

ТИП ФАКТ=ТИП ФОРМ.

 

Процедуры без параметров и с параметрами.

PROCEDURE<имя>

Begin

<текст процедуры>

end;

Передача в подпрограмму параметров регулярного типа (массивов, строк).

Типом любого формального параметра может быть только стандартный или ранее объявленный тип.

Пример:

TYPE                                                        TYPE

ATYPE=ARRAY[1..10]OF REAL;               INTYPE=STRING[15];   

PROCEDURE S(A:ATYPE);                             OUTTYPE=STRING[30];

                                                                  FUNCTION ST(S:INTYPE):OUTTYPE

Иной способ для передачи параметров переменных отключением контроля компиляции.

Открытый массив PROCEDURE I (A: ARRAY OF REAL);

Функции. Описание. Вызов функции.

FUNCTION<имя>[(<формальные параметры>)]:<тип>

Сразу за заголовками может следовать одна стандартных директив: ASSEMBLER <тело подпрограммы на ассемблере>, EXTERNAL<объявление внешней подпрограммы>, FAR, FORWARD, INLINE<встроенные машинные инструменты>, INTERRUPT,NEAR.

FUNCTION<имя функции>(параметр: тип);

Begin

<тело подпрограммы>

end;

Рекурсии. Прямая и косвенная рекурсия. Директива FORWARD.

Рекурсия – это такой способ организации вычислительного процесса при котором программа в ходе выполнения составляющих её операторов обращается сама к себе.

Для избежания переполнения стёка, следует размещать промежуточные результаты во вспомогательной переменной.

Begin

…………………………

F:=fac(n-1); - вспомогательная переменная

……………………….

End;

Рекурсивный вызов может быть косвенным, который разрешается опережающим описанием:

Procedure b(j: byte);

 Forward;

Procedure a (i: byte);

Begin

B(i);

End;

Тип-диапазон. Структурированные типы. Массивы.

Любой из структурированных типов (а в ТП их 4: массивы, записи, множества, файлы) характеризуется множественностью образующих этот тип элементов. В ТП

Допускается бесконечная глубина вложенности типов, однако Суммой=<65520 байт (т.к. каждый компонент может представлять структурированный тип).

PACKED- осуществляется везде где это возможно.

Тип диапазон:

TYPE

D = array [0..9] of char;

Var m: d;

Begin <операторы>end.

Обычно в качестве идентификатора типа используется тип–диапазон, в котором задаются границы изменения индексов.

Тип-диапазон подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа-диапазона.

<мин. значение >..<макс. значение>

TYPE digit = ‘0’..’9’; можно Var date:1..31;

       dig2=48..57;             month:1..12;

                                             1CHR:’a’..’z’;

High(x) – максимальное значение типа диапазон

Low(x) – минимальное значение типа диапазон.

Массивы - формальное объединение нескольких однотипных объектов (чисел, символов, строк и т.д.), рассматриваемое как единое целое.

Var a: array [1..10] of real;

Компоненты массива состоят из данных одного типа (возможно структурированного).

В качестве идентификаторов порядковые типы кроме LongInt и типа диапазон с базисным типом LongInt/ 

Символьный тип.

Значением символьного типа является множество всех символов ПК. Каждому символу присваивается целое число в диапазоне 0..255.Это служит кодом внутреннего представления символа, его возвращает функция ORD. Для кодировки используется код ASCII – 7 битный код, т.е. с его помощью кодируется 128 символов (0..127). В то же время в 8-битном байте, отведённом для хранения символа в ТП, можно закодировать в 2 раза больше символов (0..255). (0-127ASCII, 128-255-может меняться на ПК разных типов).

0-31 – служебные коды (пробелы)

Строковый тип. Операции, процедуры и функции

Значением строкового типа является любая последовательность символов, т.е. строка. Окончанию строки соответствует символ с кодом 0, и которые называются строками с завершающим нулём или ASCIIZ-строками.

Строковый тип соответствует идентификаторам string и PChar.

A: array[0..n] of char = a: string

Ord(0)=length(a)- длинна строки(не больше 255 символов)

Concat (S1 [s2..,SN])- сцепление строк

Copy (St, index, count) – копирует из строки ST символ, начиная с index

Delete(ST, a, b) – удаление b символов начиная с a

Insert (sut, st, b)–вставляет SUT в ST начиная с b

Pos (Sut, St) - в строке ST отыскивает Sut если нет 0

Str (X [WIDTH [:DECIMALS]], ST)- из вещественного или целого в строку

Val (st,x, code) – обратно str (пробелы не допускаются)

Var s: string;

Begin

…….

S:= ’dsfsdhfjhsdfjshdfjsd’;

……….

End.

Типы в Турбо-Паскале. Объявление новых типов. Порядковые типы. Изменение типа выражения

Стандартные типы в ТП:

1 группа целых типов(ShortInt, integer, LongInt, Byte, Word);

2 группа вещественных типов(Single, real, Double, Extended, Comp);

3 группа Булевские типы (Boolean, ByteBool, WordBool, LongBool);

4 Символьный тип(Char);

5 Строковые типы(String, PChar);

6 Указательный тип (Pointer);

7 Текстовый тип (Text);

Type <Новый тип>=<описание типа>

Символьный тип, а также целые и булевские типы относятся к порядковым типам.

Свойства:

1 Каждый элемент имеет свой порядковый номер

2 Поэтому возможен использование функцииOrd, возвращающей этот номер

3 Возможно применить функцию Pred и Succ которые верну соответственно предыдущее и последующее значения

Целые типы. Правила объявления. Применяемые функции.

Целые типы:

Byte 0..255 ShortInt –128..127 Word 0..65535 Integer –32768..32767

LongInt –2147483648.. 2147483647

Вложение типов:

Type result = более мощный тип

 A: integer;

LongInt(a);

Процедуры и функции:

ABS(X)     CHR(X)     DEC INC SQR HI(I)-старший байт

LOW(X) – младший байт ODD(I) – возвращает правда если нечет

RANDOM(x) SWAP(I)- меняет местами байты


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: