Презентация, доклад Процедуры и функции

Содержание

СодержаниеТеоретическая часть Процедуры ФункцииПрактическое применение Двумерные массивы ГрафикаПодведение итоговДальнейшие шаги

Слайд 1Автор:Ляшко Е.Т.,методист
ГБОУ «Центр дополнительного образования «Малая академия наук»
Процедуры и функции
Севастополь 2017

Автор:Ляшко Е.Т.,методистГБОУ «Центр дополнительного образования «Малая академия наук»Процедуры и функцииСевастополь 2017

Слайд 2Содержание
Теоретическая часть
Процедуры
Функции
Практическое применение
Двумерные массивы
Графика
Подведение итогов
Дальнейшие шаги

СодержаниеТеоретическая часть Процедуры ФункцииПрактическое применение Двумерные массивы ГрафикаПодведение итоговДальнейшие шаги

Слайд 3Процедуры
Краткий обзор
Преимущества применения подпрограмм.
Процедуры без параметров
Процедуры с параметром

ПроцедурыКраткий обзор Преимущества применения подпрограмм. Процедуры без параметровПроцедуры с параметром

Слайд 4Краткий обзор
Описание процедуры. Оператор процедуры
Повторение
Из каких разделов состоит программа?
Является ли

заголовок программы обязательным?
Какие разделы описаний вы уже знаете?
Каким служебным словом начинается раздел описания констант? Приведите пример описания константы.
Каким служебным словом начинается раздел описания типов? Приведите пример описания типа.
Каким служебным словом начинается раздел описания переменных? Приведите пример описания переменных.
Как оформляется тело основной программы?
Какие операторы вы знаете?
Описание процедуры
Описание процедуры начинается с заголовка, ко­торый является обязательным (в отличие от заголов­ка программы). .Заголовок состоит из служебного слова Procedure, за которым следуют имя проце­дуры и, в круглых скобках, список формальных па­раметров. В конце заголовка ставится точка с запя­той. После заголовка могут идти те же разделы, что и в программе. Общий вид описания процедуры (в квадратные скобки заключена часть, которая может отсутствовать):
Procedure Имя [(Список формальных параметров)];
Описательная часть
Begin
Тело процедуры
end;
Краткий обзор  Описание процедуры. Оператор процедурыПовторениеИз каких разделов состоит программа?Является ли заголовок программы обязательным?Какие разделы описаний

Слайд 5При вызове процедуры ее формальные параметры заменяются соответствующими фактическими.
Фактические параметры —

это параметры, кото­рые передаются процедуре при ее вызове.
Количество и типы формальных и фактических параметров должны в точности совпадать.
Формальные параметры описываются в заголовке процедуры и определяют тип и место подстановки фактических параметров. Формальные параметры делятся на два вида: параметры-переменные и параметры-зна­чения.
Параметры-переменные отличаются тем, что перед ними стоит служебное слово Var. Они используются тогда, когда необходимо, чтобы изменения в теле процедуры значений формальных параметров приводили к изменению соответствующих фактических параметров.
Параметры-значения отличаются тем, что перед ними слово Var не ставится. Внутри процедуры можно производить любые действия с параметрами-значениями, но все изменения никак не отражаются на значени­ях соответствующих фактических параметров, то есть какими они были до вызова процедуры, такими же и останутся после завершения ее работы.
Все переменные программы делятся на глобальные и локальные. Глобальные переменные объявляются в разделе описаний основной программы. Локальные пе­ременные объявляются в процедурах и функциях. Та­ким образом, локальные переменные "живут" только во время работы подпрограммы.
При вызове процедуры ее формальные параметры заменяются соответствующими фактическими.Фактические параметры — это параметры, кото­рые передаются процедуре при

Слайд 6Процедуры без параметров
В практике программирования часто встречаются ситуации, когда

по ходу выполнения программы приходится производить одни и те же вычисления или действия. Чтобы исключить повторение одинаковых записей и сделать тем самым программу проще и понятнее, можно выделить эти повторяющиеся фрагменты в самостоятельную часть программы, которая может быть использована многократно по мере необходимости. Такая автономная часть программы, реализующая определённый алгоритм и допускающая обращение к ней из различных частей программы, называется подпрограммой. Использование подпрограмм позволяет реализовать один из самых прогрессивных методов программирования - структурное программирование. Язык программирования Turbo Pascal 7.0, даже в сравнении с другими промышленными системами программирования, обладает очень мощными средствами для работы с подпрограммами.Наиболее простая реализация подпрограмм - процедура без параметров.
Процедуры без параметров  В практике программирования часто встречаются ситуации, когда по ходу выполнения программы приходится производить

Слайд 7Описание процедур без параметров.
Как вы уже знаете, в структуре Pascal-программы

предусмотрен специальный раздел для описания подпрограмм - раздел описания процедур и функций. Именно в этом разделе производится описание подпрограмм. Структура любой подпрограммы почти буквально повторяет структуру всей Pascal-программы, и выглядит следующим образом:
Procedure <имя процедуры>;
Uses <имена модулей>; Label <имена меток>;
Const <имена констант>;
Type <имена типов пользователя>;
Var <имена локальных переменных>;
<раздел объявления подпрограмм>;
Begin <операторы>;
End;
Отличия Pascal-программ от подпрограмм. Единственным отличием процедуры без параметров от Pascal-программы состоит в названии заголовка, которое начинается не служебным словом Program, а служебным словом Procedure. Наличие заголовка процедуры обязательно, в отличии от наличия заголовка программы, который может быть опущен. Кроме того любая подпрограмма заканчивается служебным словом End и точкой с запятой, в отличии от End с точкой в Pascal-программе. Вызов процедуры без параметров осуществляется по имени данной процедуры в теле программы. Имя процедуры воспринимается как оператор.При выполнении этого оператора выполняется вся подпрограмма.

Описание процедур без параметров. Как вы уже знаете, в структуре Pascal-программы предусмотрен специальный раздел для описания подпрограмм

Слайд 8Вложенность подпрограмм.
Допускается использование в одной программе сразу нескольких

подпрограмм. Кроме использования одновременно нескольких подпрограмм Pascal-программа допускает использование вложенных подпрограмм. То есть каждая подпрограмма может содержать в себе описание других подпрограмм, которые являются таким образом подпрограммами подпрограмм. Эти подпрограммы, в свою очередь, тоже могут содержать описание своих подпрограмм и так далее. В результате общую структуру Pascal-программы можно изобразить в виде следующей схемы:
+-------------------------------------------+
¦ A +-------------------------------------+ ¦
¦ B +---------------------------------- + ¦¦
¦ ¦ D ¦¦¦
¦ +-------------------------------+ ¦¦
¦ +-------------------------------+ ¦¦
¦ ¦ E ¦¦¦
¦ ¦+-------------------------------+ ¦¦
¦ +-----------------------------------+ ¦
¦ +-----------------------------------+ ¦
¦ C ¦¦
¦ +-------------------------------------+ ¦
+-----------------------------------------+


На этой схеме буквой A обозначена главная программа (внешний блок). B и C - подпрограммы программы A (описанные во внешнем блоке);D и E - подпрограммы подпрограммы B (описанные в блоке B).

Вложенность подпрограмм.   Допускается использование в одной программе сразу нескольких подпрограмм. Кроме использования одновременно нескольких подпрограмм

Слайд 9 Общий вид Pascal-программы с использованием подпрограмм.

Схематически Pascal-программа

содержащая подпрограммы может выглядеть следующим образом:

PROGRAM <главная программа А>;

procedure <подпрограмма B>;
procedure <подпрограмма D>;
begin <операторы подпрограммы D>;
end;
begin
<операторы подпрограммы B>;
end;
BEGIN
<операторы главной программы A>;
END.
Общий вид Pascal-программы с использованием подпрограмм. Схематически Pascal-программа содержащая подпрограммы может выглядеть следующим образом:PROGRAM

Слайд 10Преимущества применения подпрограмм.
1. Появляется возможность использовать при написании программ, уже

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

Слайд 11Категории параметров
Параметры-значения
Используются

для передачи данных из программы в подпрограмму. Из программы в подпрограмму передаётся копия параметра. В подпрограмме допустимо любое изменение этой копии. Оригинал, оставшийся в программе, остаётся без изменения. Таким образом обратная передача информации с помощью параметров-значений невозможна. Для создания копии параметра в памяти компьютера, во время работы процедуры, выделяется дополнительная ячейка памяти, поэтому передача большого количества параметров-значений, или параметров-значений большого объёма может в значительной степени загрузить память компьютера, замедлить работу программы и даже привести к аварийной ситуации. Формальный параметр-значение записывается в скобках после имени процедуры своим именем с указанием типа. Например: Length(s: string); LineTo(X, Y: integer); Line(X1, Y1, X2, Y2: integer);
Категории параметров   Параметры-значения     Используются для передачи данных из программы в подпрограмму.

Слайд 12Параметры-переменные
Используются для передачи данных как из

программы в подпрограмму так и из подпрограммы в программу. Из программы в подпрограмму передаётся адрес фактического параметра, то -есть та ячейка памяти которая его содержит. В подпрограмме допустимо любое изменение этого параметра. Таким образом все изменения, которые произошли с параметром-переменной в подпрограмме, тут же передаются в главную программу, - возможна обратная передача информации. При передаче параметров-переменных дополнительных ячеек памяти не выделяется. Формальные параметры-переменные указываются в заголовке подпрограмме аналогично параметрам-значениям, только перед именем параметра записывается зарезервированное слово VAR. Действие слова VAR распространяется до ближайшей точки с запятой. Например: Delete (var s: string; i, n: integer);В этой процедуре указаны формальные параметры-значения i, n и параметр переменная s. Insert (p: string; var s: string; i: integer);p, i - параметры-значения; s - параметр-переменная.
Параметры-константы
Используется для передачи данных из программы в подпрограмму. Из программы в подпрограмму передаётся адрес фактического параметра, - та ячейка памяти, которая его содержит. В подпрограмме изменение параметра-константы недопустимо, поэтому передача данных в обратном направлении невозможна. При передаче параметров-констант дополнительных ячеек памяти не выделяется. Формальные параметры-константы указываются в заголовке подпрограммы. Перед именем параметра-константы записывается служебное слово const. Действие слова const распространяется до ближайшей точки с запятой.
Параметры-переменные     Используются для передачи данных как из программы в подпрограмму так и из

Слайд 13 Категории параметров
+-----------------------------------------------------------+¦
¦ значения ¦

переменные ¦ константы ¦
+----------+--------------+----------------+---------------- ¦
¦Служебное ¦ - ¦ VAR ¦ CONST ¦
¦слово ¦ ¦ ¦ ¦
+----------+--------------+----------------+---------------- ¦
¦Передаётся¦ копия ¦ сама переменная¦ сама переменная¦
¦ ¦ переменной ¦ (её адрес) ¦ (её адрес) ¦
+----------+--------------+----------------+----------------¦
¦Изменения ¦ разрешены ¦ разрешены ¦ не разрешены ¦
+----------+--------------+----------------+----------------¦
¦Обратная ¦ невозможна ¦ возможна ¦ невозможна ¦
передача ¦ (оригинал ¦ ¦ ¦
¦ ¦не изменяется)¦ ¦ ¦
+-----------------------------------------------------------+
Категории параметров+-----------------------------------------------------------+¦    ¦ значения  ¦  переменные  ¦  константы

Слайд 14Параметры - сложные типы данных.
Рассмотренные

предыдущие категории параметров не исчерпывают всех вопросов передачи информации в Pascal программах. Использование в качестве параметров сложных типов данных имеет свои конкретные особенности.
Массивы и строки открытого типа
В Turbo Pascal 7.0 в качестве параметров можно использовать массивы и строки открытого типа. Открытым массивом (строкой) называется массив без указания типа индекса (размера массива). Например PROCEDURE Atts(Var mas: array of integer);В качестве фактического параметра в данной процедуре можно использовать массив любого размера, содержащий элементы того же типа что и формальный открытый массив (в нашем случае integer). Не зависимо от того, какой массив используется в качестве фактического параметра, индексация элементов открытого массива всегда начинается с нуля. Индекс последнего элемента в массиве можно определить с помощью функции для величин порядкового типа High(x). Такие массивы введены для того, чтобы подпрограмма могла обрабатывать массив любого размера
Параметры - сложные типы данных.      Рассмотренные предыдущие категории параметров не исчерпывают всех

Слайд 15Пример
PROGRAM EX4;
{Программа сортировки массива}

Uses Crt;
VAR m: array[11..20] of integer;
Procedure Vvod (var mas: array of integer); {Процедура заполнение линейного массива произвольного размера}
Var i: integer;
Begin
ClrScr;
For i:=0 to high(mas) do
begin
Write('Введите эл-т массива N ',i,' '); Readln (mas[i]);
end; End;
Procedure Sort (var mas: array of integer); {Процедура упорядочивания линейного массива произвольного размера}
Var ind: boolean; buf: integer; i: integer;
Begin
Repeat ind:=true;
For i:=0 to high(mas)-1 do
if mas[i] begin
buf:=mas[i]; mas[i]:=mas[i+1]; mas[i+1]:=buf; ind:=false; end;
Until ind;
End;

Пример   PROGRAM EX4;   {Программа сортировки массива}  Uses Crt;   VAR

Слайд 16Procedure Vvod ( const mas: array of integer); {Процедура вывода на

экран содержимого произвольного линейного массива}
Var i: integer;
Begin Writeln ('Упорядоченный массив');
For i:=0 to High(mas) do
Write(mas[i]:5); Repeat Until Keypressed;
End;
BEGIN {Главная программа}
Vvod(m);
Sort(m);
Vyvod(m);
END.
В этой программе используются три процедуры с параметром массив открытого типа. Эти процедуры могут быть использованы без изменений для обработки любого одномерного массива целых чисел в любой программе.

Procedure Vvod ( const mas: array of integer); {Процедура вывода на экран содержимого произвольного линейного массива} Var

Слайд 17Если вы желаете создать подпрограмму для работы с многомерным массивом, или

просто с конкретным линейным массивом, необходимо запомнить следующее: Описание в качестве формального параметра массива с указанием его индексов невозможно.
Например процедура :
Prim (var m: array[1..10,1..5] of byte);объявлена быть не может. Необходимо использовать тип-массив.
Например:
PROGRAM Ex_26_5; {Программа определения минимального элемента матрицы }
USES Crt;
TYPE mas=array[1..4,1..4] of integer; {Тип-массив}
VAR tab: mas; min: integer;
Procedure Vvodmt (var m: mas); {процедура с использованием типа-ассив} Var
Begin
ClrScr;
For i:=1 to 4 do
For j:=1 to 4 do
begin
Write('Введите эл-т массива N ',i,' ',j,' '); Readln(m[i,j]);
end; End;

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

Слайд 18Procedure Tmtab (m: mas; var rez: integer);
Var i,j: byte;


Begin
rez:=m[1,1];
for i:=1 to 4 do
for j:=1 to 4 do
if m[i,j] End;
BEGIN
Vvodmt (tab);
Tmtab (tab, min);
Writeln ('Минимальный элемент в массиве = ', min);
Repeat Until Keypressed;
END.
EXIT .
Как вы знаете оператор безусловного перехода GOTO нельзя использовать для досрочного выхода из подпрограммы. С этой целью используется процедура EXIT.

Procedure Tmtab (m: mas; var rez: integer); Var i,j: byte; Begin   rez:=m[1,1];   for

Слайд 19Функции
Описание функций:
Заголовок функции состоит из слова Function, за которым

указывается имя функции, затем в круглых скобках записывается список формальных параметров, далее ставится двоеточие и указывается тип результата функции.
В теле функции обязательно дол­жен быть хотя бы один оператор при­сваивания, в левой части которого стоит имя функции, а в правой - ее значение. Иначе значение функции не будет определено.
Таким образом, общий вид описания функции следующий:
Function Имя[(Список форм. парамтеров)]:Тип результата;
| Описательная часть |
Begin
Тело функции, в котором обязательно должно быть присваивание Имя функции:=значение
End;





ФункцииОписание функций:  Заголовок функции состоит из слова Function, за которым указывается имя функции, затем в круглых

Слайд 20Важнейшие требования:
В теле функции обязательно должен быть хотя бы один оператор

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

Слайд 21Еще раз подчеркнем, что функция — это самостоятельная часть программы, имеющая

собственные переменные, которым отводится отдельное место в памяти компьютера. Этим объясняется тот факт, что переменные с одинаковыми именами, используемые в функции и в основной программе, являются разными (в рассмотрен­ном примере — переменная n основной программы и параметр n функции). При выполнении программы машина "не путает" имена этих переменных, так как области их действия не совпадают.
Это особенно важно при написании больших про­грамм.
Еще раз подчеркнем, что функция — это самостоятельная часть программы, имеющая собственные переменные, которым отводится отдельное место

Слайд 22Пример
Составит]) программу, подсчитывающую число сочетаний без повторения из n элементов по

k.
Число сочетаний без повторения вычисляется по
формуле:

Обозначим через n и к переменные для хранения введенных чисел;
С — переменную для хранения результата. Чтобы подсчитать
количество сочетаний без повторения, необходимо вычислить
n!, (п—K)!, k!.
Program Example_3 0
Var n,k: Integer; al, a2, аЗ, с: Longint;
Function factorial (n:Integer) :Longint;
Var i: Integer;
rez: Longint;
Begin
rez:=1;
For i:=l To n Do rez:=rez*I;
factorial:=rez;
End;







ПримерСоставит]) программу, подсчитывающую число сочетаний без повторения из n элементов по k.Число сочетаний без повторения вычисляется поформуле:

Слайд 23Begin
Writeln(‘Ввод n ик');
Readln(n,k);
al:=factorial(n); { вычисление n!}
a2:=factorial(k) ; {вычисление k!}
a3:=factorial(n-k)

{вычисление (n-k)!}
c:=al div (a2*a3); {результат }
Writeln (‘c=‘, c);
Readln;
End.
BeginWriteln(‘Ввод n ик');Readln(n,k);al:=factorial(n); { вычисление n!} a2:=factorial(k) ; {вычисление k!} a3:=factorial(n-k) {вычисление (n-k)!} c:=al div (a2*a3); {результат

Слайд 24Пример
Написать функцию, подсчитывающую количество цифр натурального числа. Используя ее, определить, в

каком из двух данных чисел больше цифр.
Program Example;
Var nl, n2: Longint;
kl, k2: Byte;
Function Quantity(x: Longint): Byte;
Var k: Byte;
Begin k:=0;
While x<>0 Do
Begin Inc(k); x:=x div 10; end;
Quantity:=k;
end;
Begin
Writeln('Введите два числа’ ); {ввод чисел}
Readln(nl, n2);
kl:=Quantity(nl); {количество' цифр первого числа}
k2:=Quantity(n2); {количество цифр второго числа}
If kl=k2 Then Writeln("Одинаковое количество цифр')
Else If kl>k2 Then Writeln('В первом числе цифр больше')
Else Writeln('Во втором числе цифр больше');
Readln;
end.

Слайд 25Практическое применение
Двумерные массивы

Подведение итогов
Обзор идей
Проголосуйте за лучшие и обобщите их
Проверьте

выполнение требований и ограничений
Оставьте в списке лучшие 5 идей

Графика

Практическое применениеДвумерные массивыПодведение итоговОбзор идей Проголосуйте за лучшие и обобщите ихПроверьте выполнение требований и ограниченийОставьте в списке

Слайд 26

Спасибо за внимание!

Спасибо за внимание!

Что такое shareslide.ru?

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


Для правообладателей

Яндекс.Метрика

Обратная связь

Email: Нажмите что бы посмотреть