Курс «Информатика» Лекция 7 Составитель: Иванчева Н.А.

Презентация:



Advertisements
Похожие презентации
Курс «Информатика» Лекция 3 Составитель: Иванчева Н.А.
Advertisements

Все процедуры и функции делятся на стандартные встроенные определенные пользователем. Встроенные и стандартные вызываются без предварительного описания.
Учитель НСШ Кумакшев А.Н, учитель БСШ2 Вахмистров Г.Г. Элективный курс по информатике «Процедуры и функции на языке Pascal».
Подпрограммы: процедуры и функции Информатика. 1. Подпрограммы При решении различных задач часто возникает необходимость проводить вычисления по одним.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 5.
Формальные и фактические параметры Вызов по ссылке и значению.
1 Подпрограммы в языке Паскаль. 2 1.Структура, назначение и применение подпрограмм. 2.Параметры и аргументы, области действия имен. 3.Процедуры 4.Функции.
Подпрограммы 1.Принцип модульности 2.Область действия переменных 3.Параметры подпрограмм 4.Модули.
Что такое структурный подход в программировании? Как он реализуется в ЯП Паскаль? Что такое процедура? Кто дает название процедуре? Где записывается процедура?
Понятие подпрограмм. Подпрограммы в языке Паскаль.
Процедуры и функции Вербицкая Ольга Владимировна, Заозерная школа 16.
1 ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ. ПОДПРОГРАММЫ И МОДУЛИ ПРИ РЕШЕНИИ ЗАДАЧ ХИМИЧЕСКОЙ ТЕХНОЛОГИИ. Лекция 2. Подпрограммы План 1.Процедуры и функции. 2.Описание.
Подпрограмма – это самостоятельная часть программы, реализующая определенный алгоритм.
Подпрограммы в Паскале Подпрограммы в Паскале (Технология нисходящего программирования)
Язык программирования Pascal Процедуры и функции А. Жидков.
Подпрограммы. Функции и процедуры. Кулебякин В.В.
Подпрограммы. Субкомпетенции: 1. Обработка данных с помощью стандартных подпрограмм и подпрограмм, определённых пользователем. 2. Организация передачи.
Функции и процедуры Инструмент структурирования программ Два типа подпрограмм Описание Локальные и глобальные переменные Параметры: формальные и фактические.
Подпрограммы Лекция 7. Ломаско Павел Сергеевич16 декабря 2013 г.
Тема урока Переменная. Тип данных. Ввод и вывод данных.
Транксрипт:

Курс «Информатика» Лекция 7 Составитель: Иванчева Н.А.

Лекция 7 Тема лекции: Процедуры и функции

Содержание лекции Процедуры и функции – виды подпрограмм Процедуры и функции – виды подпрограмм Объявление процедур и функций Объявление процедур и функций Описание процедур и функций Описание процедур и функций Параметры Параметры Возвращаемые значения Возвращаемые значения Вызов процедур и функций Вызов процедур и функций Способы подстановки аргументов Способы подстановки аргументов Область действия имен Область действия имен Контрольные вопросы Контрольные вопросы

Список использованных источников 1. Материалы Единой Коллекции ЦОР ( : ( : Ресурсы по информатике Ивановского «Учебно- методического центра информатизации и оценки качества образования» Ресурсы по информатике Ивановского «Учебно- методического центра информатизации и оценки качества образования» Ресурсы по информатике Ивановского «Учебно- методического центра информатизации и оценки качества образования» Ресурсы по информатике Ивановского «Учебно- методического центра информатизации и оценки качества образования» Ресурсы по информатике Хабаровской краевой заочной физико-математической школы Ресурсы по информатике Хабаровской краевой заочной физико-математической школы Ресурсы по информатике Хабаровской краевой заочной физико-математической школы Ресурсы по информатике Хабаровской краевой заочной физико-математической школы 2. Прочие источники: 1. В.В.Фаронов «TurboPascal 7.0» начальный курс учебное пособие. «Нолидж», 1998 г. 1. В.В.Фаронов «TurboPascal 7.0» начальный курс учебное пособие. «Нолидж», 1998 г. 2. Т.А.Андреева «Программирование на Паскале» 2. Т.А.Андреева «Программирование на Паскале» ( ) ( )

Подпрограммы В языке Pascal имеется два вида подпрограмм: процедуры процедуры функции функции Упоминание в тексте программы имени процедуры или функции является ее вызовом.

Объявление процедур и функций. Процедуры и функции объявляются в начале программы, до ключевого слова begin, означающего начало тела программы. Объявление функции function [( )]: ; Обьявление процедуры Procedure Procedure [( )]

В отличие от констант и переменных, объявление процедуры или функции может быть оторвано от ее описания. В этом случае после объявления нужно указать ключевое слово forward: function [( )]: ; forward;

Описание процедур и функций Процедуры и функции описываются после объявления по следующей схеме: [ uses ;][ label ;][ const = ;][ type = ;][ var : ;] [ procedure ][ function ;] begin{начало тела подпрограммы} end;

Если объявление процедуры или функции было оторвано от ее описания, то описание начинается дополнительной строкой с указанием только имени подпрограммы: function ; procedure ; Описания двух различных подпрограмм не могут пересекаться. Внутри любой подпрограммы могут быть описаны другие процедуры или функции - вложенные.

Пример процедуры: Program pr1; procedure err(c:byte; s:string); var zz: byte; begin if c = 0 then writeln(s)else writeln('Ошибка!'); end; varn:byte;beginreadln(n);err(n,krona);end.

Пример функции Function Power(a,b:real):real; Begin If a>0 then Power:=exp(b*ln(a)) Else if a<0 then Power:=exp(b*ln(abs(a))) Else if b=0 then Power:=1ElsePower:=0End;

Параметры В заголовке процедуры или функции (в ее объявлении) может быть указан список формальных параметров - переменных, которые принимают значения, передаваемые извне во время вызова. Procedure [( )]; Function [( )]: ;

Список параметров может отсутствовать, это значит, что значения извне не передаются: procedure proc1; function func1: boolean; Фактические параметры или аргументы – это значения, которые передаются в программу

Параметры описываются по шаблону: [ ] : ; Если способ подстановки и тип нескольких параметров совпадают, то описание этих параметров можно объединить: [<способ_подстановки>]<имя 1>,..., : ; : ;

В заголовке подпрограммы можно указывать только простые (не составные) типы данных. Нельзя записать: procedure proc2(a: array[1..100]of char); Составной тип данных должен быть сначала описан в разделе type, а при объявлении подпрограммы будет использоваться имя этого типа: type arr = array[1..100] of char; procedure proc2(a: arr); function func2(var x: string): arr;

Возвращаемые значения Функции и процедуры отличаются количеством возвращаемых ими значений. Функция, завершив работу, возвращает ровно одно значение, тип которого явным образом указывается при объявлении функции. Результат возвращает специальная "переменная", имеющая имя, совпадающее с именем самой функции. В теле функции обязательно должен присутствовать оператор присваивания значения этой переменной.

Например: function min(a,b: integer): integer; begin if a>b then min:= b else min:= a end; Процедуры в отличие от функций явно не возвращают никаких значений.

Вызов процедур и функций Процедура или функция может быть вызвана не только из основного тела программы, но и из любой другой процедуры или функции, объявленной позже нее. При вызове в процедуру или функцию передаются фактические параметры или аргументы (в круглых скобках после имени подпрограммы, разделенные запятыми): <имя_подпрограммы>(<список_аргументов>)

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

Вызов функции не может быть самостоятельным оператором, потому что возвращаемое значение нужно куда-то записывать. Но может быть частью выражения. Например: c:= min(a,a*2);if min(z, min(x,y))= 0 then...; Вызов процедуры является самостоятельным оператором, так как процедура не возвращает значения. Например: err(res,'Привет!');

После того, как вызванная процедура или функция завершит свою работу, управление передается оператору, следующему за оператором, вызвавшим процедуру или функцию.

Способы подстановки аргументов параметр-значение параметр-значение var параметр-переменная var параметр-переменная const параметр-константа const параметр-константа

1-й способ подстановки. Параметр-значение В списке параметров подпрограммы перед параметром- значением служебное слово отсутствует. Например, функция func3 имеет три параметра-значения: function func3(x:real; k:integer; flag:boolean):real; При вызове подпрограммы параметру-значению может соответствовать аргумент, являющийся выражением, переменной или константой, например: dlina:= func3(shirina/2, min(a shl 1,ord('y')), true)+0.5;

Механизм передачи значения В области памяти, выделяемой для работы вызываемой подпрограммы, создается переменная с именем., В эту переменную записывается значение аргумента, переданного в соответствующий параметр. Все действия в подпрограмме выполняются именно над этой новой переменной. Значение же входного аргумента не затрагивается. Поэтому после окончания работы подпрограммы, значение аргумента останется точно таким же, каким оно было на момент вызова подпрограммы.

Пример: function func3(x:real; k:integer; flag:boolean):real; При вызове func3(1+a/2,a,true) будут выполнены следующие действия: - созданы временные переменные func3.x, func3.k, func3.flag; - вычислено значение выражения 1+а/2 и записать его в переменную func3.x; - записано в переменную func3. k значение переменной а; - записано в переменную func3. flag значение константы true; - произведены действия, описанные в теле функции; - уничтожены все временные переменные, в том числе func3.x, func3.k, func3.flag. В итоге значения аргументов не изменятся. В итоге значения аргументов не изменятся.

2-й способ подстановки. Параметр-переменная В списке параметров подпрограммы перед параметром- переменной ставится служебное слово var. Например, процедура proc3 имеет три параметра- переменные и один параметр-значение: procedure proc3(var x,y:real; var k:integer;flag:boolean); При вызове подпрограммы параметру-переменной может соответствовать только аргумент-переменная; не константа и не выражение. не константа и не выражение.

Механизм передачи значения В отличие от параметра-значения, для параметра- переменной не создается копии при вызове подпрограммы. В работе подпрограммы участвует та самая переменная, которая послужила аргументом. Если ее значение изменится в процессе работы подпрограммы, то это изменение сохранится и после того, как будет уничтожен контекст подпрограммы.

Поэтому аргументы должны соответствовать параметрам-переменным: ни константа, ни выражение не смогут сохранить изменения, внесенные в процессе работы подпрограммы. Параметры-переменные позволяют получать результаты работы процедур, а также увеличивать количество результатов, возвращаемых функциями.

3-й способ подстановки. Параметр-константа В списке параметров перед параметром-константой ставится служебное слово const. Например, процедура proc4 имеет один параметр- переменную и один параметр-константу: procedure proc4(var k:integer; const flag:boolean); При вызове процедуры параметру-константе может соответствовать аргумент, являющийся выражением, переменной или константой.

Во время выполнения подпрограммы соответствующая переменная считается обычной константой. При вызове другой процедуры или функции из тела текущей параметр-константа не может быть подставлен в качестве аргумента в параметр- переменную.

Механизм передачи значения Для параметра-константы, как и для параметра- переменной, в момент вызова подпрограммы создается копия.

Нетипизированные параметры В объявлении процедуры или функции можно не указывать тип параметра-переменной: procedure proc5(var x); В этом случае параметр будет называться нетипизированным и в него можно будет передать аргумент, относящийся к любому типу данных.

Области действия имен. Глобальные объекты - это типы данных, константы и переменные, объявленные в начале программы до объявления любых подпрограмм. Эти объекты будут видны во всей программе, в том числе и во всех ее подпрограммах. Глобальные объекты существуют на протяжении всего времени работы программы.

Локальные объекты объявляются внутри какой- нибудь подпрограммы и "видны" только этой подпрограмме и тем подпрограммам, которые были объявлены внутри нее. Локальные объекты не существуют, пока не вызвана подпрограмма, в которой они объявлены, а также после завершения ее работы.

Совпадение имен Каждому локальному имени неявно приписано имя подпрограммы, в которой оно объявлено. Поэтому совпадение глобальных и локальных имен не вызывает ошибки. Тем не менее совпадения имен рекомендуется избегать.

Если имеются глобальная и локальная переменные с одинаковым именем, то из подпрограммы к глобальной переменной можно обратиться, приписав к ней имя программы:.. Например: a:= prog.a; (локальной переменной будет присвоено значение глобальной)

Контрольные вопросы Что такое процедуры и функции? Как в программе объявить процедуру? Как в программе объявить функцию? Может ли описание процедуры или функции быть отложено? Что такое формальные и что такое фактические параметры? Чем отличаются процедуры от функций?

Как функция возвращает значение? Как в программе может вызываться процедура и как функция? Какие существуют способы подстановки аргументов? Что такое глобальные и что такое локальные объекты? Могут ли совпадать имена глобальных и локальных переменных?