Процедуры и функции. Процедуры и функции в Паскале

Процедуры и функции. Процедуры и функции в Паскале
Процедуры и функции. Процедуры и функции в Паскале

8 класс. Программирование на языке ABC Pascal

Учитель информатики НИШ г. Уральска ФМН Зеленов Борис Александрович


  • Учащиеся используют процедуры и функции для решения задач
  • Учащиеся учатся решать объемные задачи, раскладывая их на более мелкие

  • Сформировать понятие о процедурах и функциях в языке программирования.

  • Учащиеся знают понятия «процедуры» и «функции», определяет формальные и фактические параметры

Ожидаемые результаты - Дескрипторы:

1.Знает определение «процедуры»

2.Знает определение «функции»

3.Определяет фактические и формальные параметры

4.Различает параметры значений и переменных

5.Находит обращение к процедуре или функции в программном коде



Стандартный план Эльвиры

1. Убрать бумажки

2. Полить цветы

3. Помыть парты

4. Вытереть стекла

Конец алгоритма

Как улучшить организацию этого процесса?




Тема урока

Подпрограммы:


Ішкі бағдарлама

Подпрограмма

Процедура

Процедура

Параметрлер

Полезные фразы:

Для передачи значений переменных в процедуру (функцию) используются фактические параметры …

Для того, чтобы описать процедуру, следует сначала…., потом …


Понятие подпрограммы

Определение

Подпрограмма - это отдельная функционально независимая часть программы.

Подпрограммы

Процедуры


  • избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;
  • улучшают структуру программы, облегчая ее понимание;
  • повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификациях программы.

  • Нарисовать забор, используя язык программирования

В этой задаче можно создать процедуру которая будет выполнять алгоритм рисования одного фрагмента(штакетника), а затем постоянно обращаться к этой процедуре, меняя начальное положение пера


  • Опишите как рационально выполнить рисунок елочки в среде программирования

  • Представляют собой самостоятельные фрагменты программ, оформленные особым образом и имеющие собственное имя.

Взаимодействие основной программы и подпрограммы



Блок-схема

  • Блок вызова подпрограммы (процедуры или функции)

Имя подпрограммы (процедуры или функции)


Блок-схема


Описание процедуры имеет вид:

procedure имя(список формальных параметров); раздел описаний begin операторы end ;


Описание функции имеет вид:

function имя(список формальных параметров): тип возвращаемого значения;

раздел описаний begin операторы end ;


Расположение в программе

Program ...;

//Раздел описаний Uses, Const, Var, …

procedure A ;

begin ....... end ;

procedure B ;

begin ........ end ;

Function C ;

begin ........ end ;

//Основная программа

begin ........ end .


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

Процедуры

Функции

Может иметь несколько результатов или выполнять некоторое действие

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

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

Результат может быть только значением типа real, integer или char.

Команда вызова процедуры – отдельная команда, которая употребляется самостоятельно

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

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


b then max:=a else max:=b; MaxNumber:= max; end;" width="640"

Процедура или функция?

MaxNumber(a,b: integer): integer;

var max: integer;

MaxNumber:= max;


b then max:=a else max:=b; end;" width="640"

Процедура или функция?

MaxNumber(a,b: integer; var max: integer);

if ab then max:=a else max:=b;


Процедура или функция?

ChangeColor(C1, C2: Word);

TextBackGround(C2)


Процедура или функция?

Add(X, Y: Integer): Integer;


Фактические

  • Указываются в разделе основной программы

Формальные

  • Указываются в подпрограмме
  • Указываются в подпрограмме

Вызов процедуры производится оператором, имеющим следующий формат:

имя процедуры(список фактических параметров);

  • Список фактических параметров - это их перечисление через запятую.

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

Передача параметров. Формальные параметры

Переменные

Значения

Параметры по значению

Формальные параметры

Переменные


Формальные параметры

Параметры по значению

  • При первом способе (передача по значению) значения фактических параметров копируются в соответствующие формальные параметры.

Процедура

Procedure Name (a, b: integer);

Основная программа

При изменении этих значений в ходе выполнения процедуры (функции) исходные данные (фактические параметры) измениться не могут


Var c, d: integer;

  • При передаче по ссылке все изменения, происходящие в теле процедуры (функции) с формальными параметрами, приводят к немедленным аналогичным изменениям соответствующих им фактических параметров.

Процедура

Procedure Name (a, b: integer, Var c:real);

Основная программа

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


Выпишите:

1.Фактические параметры ___________

Procedure Kvad(R: real; var S: real);

2.Формальные параметры ___________

3.Формальные параметры-значения __________

5.Имя процедуры ___________

6.Обращение к процедуре из программы _____________________


Интерактивное задание

http://www.bzfar.net/load/podprogrammy_procedury_i_funkcii_parametry/23-1-0-498


Эльвира староста класса. Ей предстоит составить план выполнения генеральной уборки в классе: убрать бумажки, полить цветы, помыть парты, вытереть стекла. Как ей лучше организовать работу? Помогите Эльвире.


Продвинутый план Эльвиры

Подпрограммы:

Арсен – убирает бумажки

Мила – поливает цветы

Виталий – моет парты

Индира – вытирает стекла

1. Выполнить Арсен

2. Выполнить Мила

3. Выполнить Виталий

4. Выполнить Индира

Конец алгоритма


  • С какими новыми структурами языка программирования мы сегодня познакомились?
  • Назовите изученные параметры
  • Как передаются параметры в процедуру?

  • Конспект урока
  • Найти определения: «Локальные переменные» и «Глобальные переменные»
  • Составить две задачи, в которых можно использовать процедуры или функции.

  • Как бы вы определили тему урока? (придумайте свое название)
  • Что, по вашему мнению, вы должны узнать на следующем уроке?

Встретимся

на следующем уроке!

Чтобы пользоваться предварительным просмотром презентаций создайте себе аккаунт (учетную запись) Google и войдите в него: https://accounts.google.com


Подписи к слайдам:

Процедуры и функции в Паскале. Рекурсия Выполнил учитель информатики ГБОУ школа 1362 Санина Марина Сергеевна

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

Подпрограммы процедура функция PROCEDURE FUNCTION

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

У функций и процедур существуют параметры (переменные, которые передают какое - либо значение). Они бывают двух видов: 1) Формальные - те, которые находятся в описании подпрограммы 2) Фактические - те, которые передаются из основной программы в функцию или процедуру. Фактические параметры должны соответствовать формальным по количеству, порядку следования и типу.

Также у подпрограммы существую переменные. с которыми она в дальнейшем работает. Они делятся опять же на два типа: 1) Глобальные переменные, то есть действующие во всей программе 2) Локальные - те, которые действуют только в процедуре или функции

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

Структура процедуры аналогична структуре программы и состоит из заголовка и блока (тела процедуры). procedure ИмяПроцедуры; var … begin …//Тело процедуры end ; begin //тело главной программы end .

Процедуры без параметров procedure pr; var i: integer ; begin for i:=1 to 60 do write (‘ * "); writeln ; end . begin pr ; end. Данная программа выводит строку из 60 звездочек.

Процедура с параметром. Составить программу обмена местами двух чисел с=5 и d=7 program obmenDan ; var c,d:integer ; procedure obmen (a,b:integer); var m:integer; begin m:=a; a:=b; b:=m; writeln (a,b); end; begin writeln (" Введите 2 числа: "); readln (c,d); obmen (c,d) ; writeln (c," ",d); End.

Разбор задачи 1) при вызове процедуры obmen с двумя параметрами 5 и 7, в переменные a и b помещаются тоже числа 5 и 7 соответственно: с 5 d 7 a 5 b 7

Для того чтобы переменные c и d , a и b ссылались на одни и те же ячейки памяти (если изменятся значения a и b , то изменятся значения и c , d) необходимо при описании формальных параметров, перед нужными переменными добавить слово VAR: procedure obmen (var a,b:integer); с 5 d 7 a b

Функции Набор встроенных функций в языке Паскаль достаточно широк (ABS, SQR, TRUNC и т.д.). Если в программу включается новая, нестандартная функция, то ее необходимо описать в тексте программы, после чего можно обращаться к ней из программы. Обращение к функции осуществляется в правой части оператора присваивания, с указанием имени функции и фактических параметров. Функция может иметь собственные локальные константы, типы, переменные, процедуры и функции. Описание функций в Паскале аналогично описанию процедур.

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

Описание функции: function () : тип; { раздел описания локальных имён } Begin { раздел выполняемых операторов } :=; { обязательный параметр } End;

Вызов функции: := (); 1 . В правой части оператора присваивания. 2. В выражении, стоящем в условии оператора разветвления. 3. В процедуре вывода, как результат работы функции.

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

Составить рекурсивную функцию, вычисляющую факториал числа n следующим образом: n ! = 1 , если n= 1 n!= (n -1)! · n , если n > 1

function f (n: integer): integer ; begin if n = 1 then f:= 1 else f:= n * f (n -1); {функция f вызывает саму себя} end ;

Задания Поменять значения переменных a, b, c так, чтобы они были расположены в порядке неубывания (a ≤ b ≤ c). Дано n целых чисел. Найти среди них число, у которого сумма цифр имеет максимальное значение.


Подпрограммы Часто в задаче требуется повторить определенную последовательность операторов в разных частях программы. Для того, чтобы описывать эту последовательность один раз, а применять многократно, в языках программирования применяются подпрограммы. Подпрограмма - специальным образом оформленный блок программы, для дальнейшего его многократного использования в основной программе Использование подпрограмм позволяет реализовать один из самых современных методов программирования - структурное программирование


Подпрограммы решают три важные задачи, значительно облегчающие программирование: 1.избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты, т.е. сократить объём программы; 2.улучшат структуру программы, облегчая понимание при разборе; 3.уменьшают вероятность появления ошибок, повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификации.


Процедуры и функции В языке Паскаль существует два вида подпрограмм: процедура (PROCEDURE) и функция (FUNCTION). Процедуры и функции в Паскале объявляются в разделе описания за разделом переменных. Program ИмяПрограммы; VAR … // раздел описания переменных главной программы; procedure ИмяПроцедуры; var … begin …//Тело процедуры end; begin //тело главной программы end.


У функций и процедур существуют параметры (переменные, которые передают какое - либо значение). Они бывают двух видов: 1) Формальные - те, которые находятся в описании подпрограммы 2) Фактические - те, которые передаются из основной программы в функцию или процедуру. Фактические параметры должны соответствовать формальным по количеству, порядку следования и типу.




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


Пример 1. Процедура без параметров, которая печатает строку из 60 звездочек. procedure pr; var i: integer ; begin for i:=1 to 60 do write (* "); writeln; end; begin pr; end.


Пример 2. Составить программу обмена местами двух чисел с=5 и d=7 program obmenDan; var c,d:integer; procedure obmen (a,b:integer); var m:integer; begin m:=a; a:=b; b:=m; writeln(a,b); end; begin writeln ("Введите 2 числа: "); readln(c,d); obmen(c,d); writeln(c," ",d); end. с5 d 7 a 5 b 7 1) при вызове процедуры obmen с двумя параметрами 5 и 7, в переменные a и b помещаются тоже числа 5 и 7 соответственно: 2) далее в процедуре осуществляется перестановка значений ячеек памяти a и b: с5 d 7 a 7 b 5 3) но в переменных c и d данные не поменялись, т.к. они находятся в других ячейках памяти


Для того чтобы переменные c и d, a и b ссылались на одни и те же ячейки памяти (если изменятся значения a и b, то изменятся значения и c, d) необходимо при описании формальных параметров, перед нужными переменными добавить слово VAR: procedure obmen (var a,b:integer); с5 d 7 a b


Пример 3. Даны 3 различных массива целых чисел (размер каждого не превышает 15). В каждом массиве найти сумму элементов и среднеарифметическое значение. program proc; var i, n, sum: integer; sr: real; procedure work (r:integer; var s:integer; var s1:real); var mas: array of integer ; j: integer; begin s:=0; for j:=1 to r do begin read (mas[j]); s:=s+mas [j]; end; s1:=s/r; end;


{ главная программа} begin for i:=1 to 3 do begin write ("Vvedite razmer ",i, " masiva: "); readln(n); work (n, sum, sr); {вызов процедуры work} writeln ("Summa elementov = ",sum); writeln ("Srednearifmeticheskoe = ",sr:4:1); end; end.


Результат работы программы: В программе трижды вызывается процедура work, в которой формальные переменные r, s, s1 заменяются фактическими n, sum, sr. Процедура выполняет ввод элементов массива, вычисляет сумму и среднее значение. Переменные s и s1 возвращаются в главную программу, поэтому перед их описанием ставится служебное слово var. Локальные параметры mas, j действуют только в процедуре. Глобальные - i, n, sum, sr доступны во всей программе.


Функции в Паскале Набор встроенных функций в языке Паскаль достаточно широк (ABS, SQR, TRUNC и т.д.). Если в программу включается новая, нестандартная функция, то ее необходимо описать в тексте программы, после чего можно обращаться к ней из программы. Обращение к функции осуществляется в правой части оператора присваивания, с указанием имени функции и фактических параметров. Функция может иметь собственные локальные константы, типы, переменные, процедуры и функции. Описание функций в Паскале аналогично описанию процедур.




Пример 4. Написать подпрограмму-функцию степени а x, где a, х – любые числа. Воспользуемся формулой: а x = e x ln a program p2; var f, b, s, t, c, d: real; { глобальные переменные} function stp (a, x: real) : real; var y: real; { локальные переменные} begin y:= exp (x * ln (a)) ; stp:= y;{присвоение имени функции результата вычислений подпрограммы} end; { описание функции закончено } begin d:= stp (2.4, 5); {вычисление степеней разных чисел и переменных} writeln (d, stp (5,3.5)); read (f, b, s, t); c:= stp (f, s)+stp (b, t); writeln (c); end.


Функции Подпрограмма часть программы, оформленная в виде отдельной синтаксической конструкции и снабжённая именем (самостоятельный программный блок), для решения отдельных задач. Описание процедуры: procedure () {раздел выполнения локальных имён} Begin {раздел выполнения операторов} End; Описание функции: function (): тип; {раздел описания локальных имён} Begin {раздел выполняемых операторов} := ; {обязательный параметр} End; Вызов процедуры: (); Вызов функции: := (); 1. В правой части оператора присваивания. 2. В выражении, стоящем в условии оператора разветвления. 3. В процедуре вывода, как результат работы функции. Описание подпрограмм Процедуры


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


1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); {функция f вызывает сам" title="Пример 5. Составить рекурсивную функцию, вычисляющую факториал числа n следующим образом: n! = 1, если n= 1 n!= (n -1)! · n, если n > 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); {функция f вызывает сам" class="link_thumb"> 19 Пример 5. Составить рекурсивную функцию, вычисляющую факториал числа n следующим образом: n! = 1, если n= 1 n!= (n -1)! · n, если n > 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); {функция f вызывает саму себя} end; 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); {функция f вызывает сам"> 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); {функция f вызывает саму себя} end;"> 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); {функция f вызывает сам" title="Пример 5. Составить рекурсивную функцию, вычисляющую факториал числа n следующим образом: n! = 1, если n= 1 n!= (n -1)! · n, если n > 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); {функция f вызывает сам"> title="Пример 5. Составить рекурсивную функцию, вычисляющую факториал числа n следующим образом: n! = 1, если n= 1 n!= (n -1)! · n, если n > 1 function f (n: integer): integer; begin if n = 1 then f:= 1 else f:= n * f (n -1); {функция f вызывает сам">




Подпрограммы в Turbo Pascal


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

Причины использования подпрограмм

  • упростить разработку больших программ методом декомпозиции (разделения) задачи на несколько подзадач;
  • большая наглядность программы;
  • экономия памяти.

Виды подпрограмм

процедуры

функции

  • Процедура – это независимая именованная часть программы, предназначенная для выполнения конкретных действий.

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

  • Формат записи :

procedure ;

end ;

  • Все переменные, которые используются в процедурах без параметров, описываются в основной программе (в модуле Var).

Пример . Составить программу нахождения объёма цилиндра.

Program cylinder;

Var R, H, V: real;

Procedure Input ; { процедура ввода данных }

Writeln (’введите значение радиуса’);

writeln (’введите значение высоты’);

Procedure formula; { процедура вычисления объёма }

V: =PI*sqr(R)*H;

Procedure Output ; { процедура вывода результатов }

writeln (’V=’,V);


Процедуры c параметрами

  • В процедурах можно описывать константы, переменные, другие процедуры.
  • Раздел описания в процедурах имеет такую же структуру, как и в основной программе.
  • Локальные переменные – это переменные, описанные внутри процедуры.
  • Локальные переменные недоступны за пределами процедуры.
  • Изменения, происходящие с локальными переменными внутри процедуры, не влияют на значения переменных с такими же именами, но описанными вне данной процедуры.

Процедуры c параметрами

  • Глобальные переменные

Пример .

Program zadacha;

Var a, b: integer;

Procedure lokal;

Var a, x: char; Для процедуры lokal:

begin переменная x – локальная переменная

a:=’! ’; (программа не может изменить её значение)

b:= b +1; переменная b – глобальная переменная

end ; (все изменения значения этой переменной в процедуре

BEGIN сохраняются и после выхода из процедуры)

b:=100; переменная a в основной программе целого типа,

lokal ; а в процедуре – символьного типа. Переменная а

writeln (’ a =’, a); целого типа недоступна в процедуре lokal .

writeln (’b=’,b);

Результат выполнения программы: а=0; b =101.


); begin ; end ; " width="640"

Передача параметров в Turbo Pascal

  • 1. Передача параметров по значению
  • Параметры-значения переменные, описанные после имени процедуры в круглых скобках. Перед ними отсутствует служебное слово Var .
  • Формат записи :

procedure (:

переменной);

end ;


  • формальными параметрами .
  • фактическими параметрами .

Пример .

Program parametr;

Var m, n: integer;

Procedure summa (a, b: integer);

writeln (’S=’,S);

summa (m,n); или summa (100,10);

Переменные a и b являются формальными параметрами, а переменные m и n - фактическими. Значения фактических параметров m =100 и n =10 передаются формальным параметрам a и b .

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


; Var переменной:); begin ; end ; " width="640"

Передача параметров в Turbo Pascal

  • 2. Передача параметров по имени
  • Параметры-переменные переменные, описанные после имени процедуры в круглых скобках и перед которыми записано служебное слово Var .
  • Формат записи :

procedure (:

переменной; Var

переменной:);

end ;



b then min:= b; if min c then min:= c; end ; BEGIN writeln (’введите три числа’); readln (a1, b1, c1); writeln (’ введите три числа ’); readln (a2,b2,c2); minimum (a1,b1,c1, min1); minimum (a2,b2,c2, min2); S:= min1 + min 2; writeln (’S=’, S); END . Пример. Даны две тройки чисел: a 1, b 1, c 1 и a 2, b 2, c 2. Найти значение суммы: S=min (a1, b1, c1) + min (a2, b2, c2) " width="640"

Var a1,b1,c1,a2,b2,c2, min1, min2, S: real;

Procedure minimum (a,b,c: real; Var min: real);

if min b then min:= b;

if min c then min:= c;

writeln (’введите три числа’);

readln (a1, b1, c1);

writeln (’ введите три числа ’);

readln (a2,b2,c2);

minimum (a1,b1,c1, min1);

minimum (a2,b2,c2, min2);

S:= min1 + min 2;

writeln (’S=’, S);

Пример . Даны две тройки чисел: a 1, b 1, c 1 и a 2, b 2, c 2. Найти значение суммы: S=min (a1, b1, c1) + min (a2, b2, c2)


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

  • Формат записи :

function (:

end ;

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

Program vyrazenie;

function modul (a: real) : real;

writeln (’введите значение переменной’);

y:= modul (x-3) + modul (x+6);

writeln (’y=’, y);

Пример . Вычислить значение выражения: y = | x -3 | + | x +6 |

Cлайд 1

Cлайд 3

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

Cлайд 4

Формальные и фактические параметры В описании подпрограмм параметры обозначены только именами, поэтому их называют формальными. До вызова подпрограммы они не имеют значений. Они лишь резервируют место для фактических параметров, фиксируя их число и тип данных. Типы фактических параметров: Параметры-значения показывают, какое значение надо присвоить определенному параметру подпрограммы. После завершения подпрограммы они принимают прежние значения, даже если были изменены в подпрограмме. Параметры-переменные в подпрограмме становятся на место формальных, могут в ходе исполнения подпрограммы изменить свое значение и сохраняют изменения при выходе из подпрограммы (перед параметрами-переменными стоит ключевое слово Var).

Cлайд 5

Cлайд 6

Описание процедуры Program Pr1; Const … Type … Var … Procedure (); Описательная часть Begin Тело процедуры End; Begin … (); … end. При вызове процедуры формальные параметры заменяются фактическими.

Cлайд 7

Процедура вычисления суммы двух чисел program pr1; Uses crt; Var a,b,s:real; procedure summa(x,y:real;var z:real); begin z:=x+y; end; begin clrscr; writeln("введите a,b"); readln(a,b); summa(a,b,s); writeln(" сумма чисел ",a:3:1," и ",b:3:1," = ",s:3:1); readln; end. x,y,z – формальные параметры, локальные переменные a,b,s – глобальные переменные a,b,s – фактические параметры х y z a b s Параметры-значения Параметр-переменная

Cлайд 8

Cлайд 9

Cлайд 10

Вычислить значение выражения a:=(3n!+2m!)/(m+n)! Для нахождения факториала какой тип переменных целесообразно использовать? program pr2; Uses crt; Var m,n,x,y,z:integer; a:real; procedure fact(d:integer;var q:integer); var i:integer; begin q:=1; for i:=1 to d do q:=q*i; end; begin clrscr; writeln("введите значения n, m "); readln(n,m); fact(n,x); fact(m,y); fact(m+n,z); a:=(3*x+2*y)/z; writeln("значение выражения при m= ",m:4," и n= ",n:4,"равно",a:8:3); readln; end. N!=1·2·3·…· N

Cлайд 11

Ввод вывод элементов одномерного массива Функция Random(X) формирует случайное число от 0 до Х целого или вещественного типа (перед обращением к функции ее необходимо инициализировать, использовав процедуру Randomize). Если параметр Х не задан, результат будет типа Real в пределах от 0.0 до 1.0. Для получения массива целых случайных чисел из диапазона random(B-A+1)+A Задание: Оформить ввод элементов одномерного массива с помощью генератора случайных чисел (диапазон значений от -10 до 20) и вывод элементов как процедуры. Для А=-10 В=20 random(20-(-10)+1)+(-10)

Cлайд 12

Cлайд 13

Cлайд 14

Описание функции Функции предназначены для того, чтобы вычислять только одно значение, 1. поэтому ее первое отличие состоит в том, что процедура может иметь новые значения у нескольких параметров, а функция только одно (оно и будет результатом). 2. Второе отличие заключается в заголовке функции. Он состоит из слова FUNCTION, за которым идет имя функции, затем в круглых скобках идет список формальных параметров, после чего через двоеточие записывается тип результата функции. 3. В теле функции обязательно должен быть хотя бы один оператор присвоения, где в левой части стоит имя функции, а в правой – ее значение. Function (): Описательная часть Begin Тело функции:=; End;

Cлайд 15

Вычислить значение выражения a:=(3n!+2m!)/(m+n)! program fn2; Uses crt; Var m,n:integer; a:real; function fact(d:integer) :longint; var i:integer; q:longint; begin q:=1; for i:=1 to d do q:=q*i; fact:=q; end; begin clrscr; writeln("введите значения n, m "); readln(n,m); a:=(3*fact(n)+2*fact(m))/fact(m+n);; writeln("значение выражения при m= ",m:4," и n= ",n:4,"равно",a:8:3); readln; end.

Cлайд 16

Составить программу, которая будет находить аb, то есть b-ю степень числа А, где А и В – это целые числа и В>0, вводимые с клавиатуры. Составьте программу, заменив функцию процедурой program pr2; Uses crt; Var a,b:integer; c:longint; Function stepen(x,y:integer):longint; var i:integer; s:longint; begin s:=1; for i:=1 to y do s:=s*x; Stepen:=s; end; begin clrscr; writeln("введите значения a, b"); readln(a,b); C:=stepen(a,b); writeln("s=",s); readln; end.

Cлайд 17

Cлайд 18

Механизм передачи параметров в функции и процедуры Что будет напечатано процедурой, а что программой? Глобальные переменные Локальные переменные a b 3 3 -3 Адрес с a b c 48 Адрес с A:=b+3 B:=3*a C:=a+b Состояние С 24 5 8 Ответ

Cлайд 19