
- •Алфавит языка, имена, числа, строки.
- •Структура программы.
- •3. Тип Integer.
- •4. Тип Real.
- •5. Тип Boolean и Char.
- •6. Описательная часть программного блока.
- •7. Процедуры ввода/вывода
- •8. Оператор присваивания.
- •9. Условный оператор
- •X, y, max: integer;
- •10. Оператор цикла с перечислением
- •11. Циклы с предусловием
- •12. Циклы с постусловием
- •13. Оператор варианта.
- •14. Классификация типов данных.
- •15. Перечислимые типы данных
- •16. Ограниченые типы данных.
- •17. Регулярные типы данных.
- •18. Многомерные массивы.
- •19. Комбинированные типы данных
- •20. Оператор with.
- •21 Записи с вариантами
- •22 Множественные типы данных.
- •23 Операции над данными множесвенного типа
- •24 Файловые типы данных
- •25 Текстовые файлы
- •26 Ссылочные типы данных
- •27 Оператор new
- •28 29 Процедуры и функции
- •30. Параметры процедур и функций.
- •31. Локальные и глобальные объекты в процедуах и функциях
- •32. Рекурсии в процедурах и функциях.
- •33. Структурное представление основных конструкций языка.
- •38. Данные с фиксированной точкой
- •1111111101000111(2)- Инвертируем биты - 0000000010111000(2)
- •39. Внутреннее представление чисел с плавающей точкой.
- •40. Внутреннее представление символьных и строковых данных.
- •41. Реализация алгоритма сортировки с применением метода "часового".
- •42. Сортировка методом "пузырька".
- •43. Сортировка выбором min элемента.
30. Параметры процедур и функций.
Параметры бывают формальные и фактические. Параметры, которые записываются
в скобках после имени процедуры, называются формальными параметрами. Они
указывают на то, что для выполнения данной процедуры необходимы
дополнительные данные – фактические параметры.
Список формальных параметров необязателен и может отсутствовать.
Если же он есть, то в нем должны быть перечислены имена формальных
параметров и их тип, например:
Procedure YZ (a : real; b : integer: с : char)
Как видно из примера, параметры в списке отделяются друг от друга
точками с запятой. Несколько следующих подряд однотипных параметров можно
объединять в подсписки, например, вместо
Procedure Z (а : integer; b : integer)
можно написать проще:
Procedure Z (a, b : integer)
Операторы тела подпрограммы рассматривают список формальных параметров
как своеобразное расширение раздела описаний: все переменные из этого
списка могут использоваться в любых выражениях внутри подпрограммы. Таким
способом осуществляется настройка алгоритма подпрограммы на конкретную
задачу.
Первый формальный параметр заменяется первым фактическим, второй-вторым и
т. д.
Механизм замены формальных параметров на фактические позволяет нужным
образом настроить алгоритм, реализованный в подпрограмме. Турбо Паскаль
следит за тем, чтобы количество и тип формальны параметров строго
соответствовали количеству и типам фактических параметров в момент
обращения к подпрограмме. Приведем
пример. рассмотрим интересующую нас часть программы для вычисления x = (5! + 2!)/(5+2)!
Program factorial(input,output);
……
{далее нас интересует описание процедуры:}
Procedure FL(L:integer, var z: integer); {объявление процедуры, её имя ,
список формальных параметров}
Begin
Z:=1;
While L>1 do
Begin
Z:=ZxL;{тело процедуры, которая также предусматривает, что 0! и 1!
=1}
L:=l-1;
end;
end;
……..
begin
……..
{теперь рассмотрим вызов процедуры}
FL(5,a);
FL(2,b);
FL(2+5,c);
..........
end.
В данном случае l, z формальные параметры. К слову, их не надо описывать в
разделе глобальных переменных.
Фактические параметры: 5, а, 2, b, 2+5, c. В “основном” разделе VAR должны
быть описаны а, b, c
При первом вызове процедуры фактический параметр 5 заменит формальный L,
фактический a заменит формальный z, во втором 2 заменит L, b заменит z.
В третьем соответственно 2+5 заменит L, c заменит z. Для того, чтобы
окончательно разобраться в программе, необходимо пояснить, какими бывают
виды формальных и фактических параметров, их назначение.
31. Локальные и глобальные объекты в процедуах и функциях
Если переменная или константа описана в основной программе, она считается глобальной, и ее могут использовать любые процедуры и функции данной программы. Переменные, описанные внутри подпрограммы, называются локальными и могут быть использованы только внутри данной подпрограммы. Локальные переменные могут быть описаны как в заголовке программы, так и в разделе описания переменных. при совпадении имен глобальных и локальных переменных, локальные определения в пределах своего действия отменяют действия глобальных, и эти переменные никак не связаны между собой.
Чаще всего программа состоит из основной программы и процедур и функций программиста. Любая из них содержит раздел описания переменных. Переменные, описанные в основной программе, доступны всем командам программы, в том числе и командам процедур и функций программиста. Такие переменные называются глобальными.
Переменные, описанные в процедуре или функции программиста, доступны только командам этой процедуры или функции и называются локальными.
Program prog;
var
x:integer; {глобальная переменная}
procedure p1;
var
y:integer; {локальная переменная}
begin
{можно использовать x и y}
end;
Begin
{можно использовать только x}
end.
Если в процедурах описаны переменные с одинаковыми именами, пусть даже одинакового типа, то это разные переменные, и изменение переменной внутри одной процедуры не меняет значение переменной другой процедуры.
Program prog;
var
i:integer;
procedure pr;
var
i:integer;
begin
i:=100;
end;
begin
i:=1;
pr;
writeln(i);
end.
В результате получим, что i будет равно 1.
Процедура может изменить значение глобальной переменной, если внутри процедуры не описана переменная с таким же именем.