
- •7. Типы данных в Паскале: порядковый, вещественный, структурированный. Совместимость и преобразование типов.
- •8. Файловая структура: каталоги, имена файлов.
- •9. Внешние файлы: инициализация и доступ к файлам.
- •10. Текстовые файлы, типизированные файлы, нетипизированные файлы.
- •12. Условный оператор в Паскале.
- •13. Оператор выбора в Паскале.
- •14. Операторы циклов с предусловием, постусловием и с параметром в Паскале.
- •15. Процедуры и функции в Паскале: локальные и глобальные переменные.
- •16. Процедуры и функции в Паскале: формальные и фактические параметры процедур и функций в Паскале.
- •Процедуры
- •Функции
- •Различие между процедурами и функциями
- •17. Процедуры и функции в Паскале: способы обмена данными между вызывающей программой и процедурой или функцией.
- •18. Понятие алгоритма и его свойства. Линейные, разветвляющиеся, циклические алгоритмы.
- •InitGraph(GraphDriver, GraphMode, ‘путь к драйверу’ );
- •19. Процедуры и функции в Паскале для работы в графическом режиме.
- •Алгоритмы линейной структуры
- •Алгоритмы разветвленной структуры
- •Алгоритмы циклической структуры
- •22. Алгоритмы выборки элементов из массивов данных.
- •23. Критерии эффективности работы алгоритма.
- •24. Алгоритмы сортировки данных: сортировка выбором.
- •25. Алгоритмы сортировки данных: сортировка пузырьком.
- •32. Решение алгебраических и трансцендентных уравнений: метод деления отрезка пополам.
- •33. Поиск минимума одномерной функции: сравнение алгоритмов дихотомии, деления отрезка пополам и золотого сечения.
- •34. Поиск глобального минимума одномерной функции: сравнение алгоритмов метода ломаных и метода покрытий.
- •35. Поиск минимума многомерной функции: метод покоординатного спуска.
- •36. Поиск минимума многомерной функции: симплекс-метод.
15. Процедуры и функции в Паскале: локальные и глобальные переменные.
Все имена, описанные внутри блока, локализуются в нем, т.е. невидимы снаружи. В приведенном примере из основной программы можно обратиться к блокам А, В, но нельзя вызвать какую либо из процедур, находящихся внутри них (В1). Это относится не только к именам блоков, но и к любым именам, объявленным в них.
При входе в блок нижнего уровня становятся доступными не только имена, локализованные в нем, и имена верхних уровней. Из блока В11можно обратиться к блокамА, В, В1и использовать имена, объявленные в них и в основной программе –V1,V3,V4.
Program.............
Var V1 .....
Procedure A;
Var V2 .......
..............
End {A}
Procedure B;
Var V3 .......
Procedure B1;
Var V4 .......
Procedure B11;
Var V5 .......
................
Из блока В11доступны четыре переменныеV1,V3,V4,V5.
Из блока В1доступны -V1,V3,V4.
Из блока Вдоступны -V1,V3.
Из блока Адоступны -V1,V2.
Из основной программы – только V1.
Имена, локализованные в блоке, могут совпадать с глобальными именами. В этом случае, локальное имя «накрывает» глобальное имя внутри блока и делает его недоступным.
Var
i:integer;
Procedure P;
Var
i:integer;
begin
writeln(i);
end {P};
BEGIN
i:=1;
P;
END.
Результат действия этой программы непредсказуем, т.к. локальное имя «i»накрывает глобальное«i» и в самой процедуреР оно только объявлено, но ему не присвоено никакого значения.
Если убрать из процедуры Рописание
i:integer; то программа выведет на экран значение глобальной переменной i=1.
Одноименные локальные и глобальные переменные – это разные переменные.
Синтаксис написания заголовка блока следующий –
Procedure <имя> [(<список формальных параметров>)]
Function <имя> [(<список формальных параметров>)]: <тип>
Список формальных параметров может быть опущен. Если же формальные параметры присутствуют, то должен быть указан их тип.
Function ABC(a:integer; b:real): real; или Function ABC1(a, b:real): real;
В пределах блока список формальных параметров является как бы расширением раздела описаний данного блока.
Допустим, что в основной программе мы дважды обращаемся из разных мест к функции
ABC(a:integer; b:real): real.
Вызовы имеют вид:
ABC(s,t) и ABC(u,r) .
Это означает, что при первом обращении формальные параметры a, b замещаются фактическими переменнымиs, t, и при втором обращении -u, r.
Это замещение происходит в заголовке функции момент обращения к ней.
Рассмотрим операцию возведения в степень:
16. Процедуры и функции в Паскале: формальные и фактические параметры процедур и функций в Паскале.
Подпрограмма - это отдельная функционально независимая часть программы. Любая подпрограмма обладает той же структурой, которой обладает и вся программа. Подпрограммы решают три важные задачи:
избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;
улучшают структуру программы, облегчая ее понимание;
повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификациях программы.
Очень важно понимать, что в подпрограммы выделяется любой законченный фрагмент программы. В качестве ориентиров просмотрите следующие рекомендации:
Когда Вы несколько раз перепишите в программе одни и те же последовательности команд, необходимость введения подпрограммы приобретает характер острой внутренней потребности.
Иногда слишком много мелочей закрывают главное. Полезно убрать в подпрограмму подробности, заслоняющие смысл основной программы. Полезно разбить длинную программу на составные части - просто как книгу разбивают на главы. При этом основная программа становится похожей на оглавление.
Бывают сложные частные алгоритмы. Полезно отладить их отдельно в небольших тестирующих программах. Включение программ с отлаженными алгоритмами в основную программу будет легким, если они оформлены как подпрограммы.
Все, что Вы сделали хорошо в одной программе, Вам захочется перенести в новые. Для повторного использования таких частей лучше сразу выделять в программе полезные алгоритмы в отдельные подпрограммы.
Подпрограммы могут быть стандартными, т.е. определенными системой, и собственными, т.е. определенными программистом.
Стандартная подпрограмма (процедура или функция) - подпрограмма, включенная в библиотеку программ ЭВМ, доступ к которой обеспечивается средствами языка программирования. Вызывается она по имени с заданием фактических параметров с типом описанным при описании данной процедуры в библиотечке процедур и функций.
Из набора стандартных процедур и функций по обработке одного типа информации составляются модули. Каждый модуль имеет своё имя (мы уже хорошо знакомы с модулями Crt, Graph). Доступ к процедурам и функциям модуля осуществляется при подключении этого модуля (Uses Crt, Graph).
Help содержит подробные описания предусмотренных средой программирования процедур и функций. Для вызова помощи при работе со стандартными процедурами и функциями нужно поставить на имя подпрограммы курсор и нажать клавиши . Описание процедур и функций в Help строится по стандартному принципу.