Компютри Windows интернет

Процедури в паскал представяне. Процедури и функции в Pascal. Рекурсия. Подпрограми Често една задача изисква да повторите определена последователност от изрази в различни части на програмата. Предаване на параметри. Формални параметри

За да използвате визуализацията на презентации, създайте си акаунт в Google (акаунт) и влезте в него: https://accounts.google.com


Надписи на слайдове:

Процедури и функции в Pascal. Рекурсия Изпълнява се от учителя по информатика GBOU училище 1362 Санина Марина Сергеевна

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

Подпрограми процедура функция ПРОЦЕДУРА ФУНКЦИЯ

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

Функциите и процедурите имат параметри (променливи, които предават някаква стойност). Те са два вида: 1) Формални – тези, които са в описанието на подпрограмата 2) Действителни – тези, които се предават от основната програма към функция или процедура. Действителните параметри трябва да отговарят на формалните по количество, ред и вид.

Също така, подпрограмата има променливи. с които тя работи по-нататък. Те отново са разделени на два вида: 1) Глобални променливи, тоест тези, които действат в цялата програма 2) Локални - тези, които действат само в процедура или функция

Процедури, използвани в случаите, когато се изискват множество резултати в подпрограма. Има два вида процедури: с параметър; без параметър.

Структурата на процедурата е подобна на тази на програмата и се състои от заглавие и блок (тяло на процедурата). процедура ProcedureName; var… begin… // Край на тялото на процедурата; начало // края на основното тяло на програмата.

Процедури без параметри процедура pr; var i: цяло число; begin for i: = 1 до 60 do write ('* "); writeln; end. begin pr; end Тази програма отпечатва низ от 60 звезди.

Параметърна процедура. Направете програма за размяна на две числа с = 5 и d = 7 програма obmenDan; var c, d: цяло число; процедура obmen (a, b: цяло число); var m: цяло число; начало m: = a; a: = b; b: = m; запис (а, б); край; begin writeln ("Въведете 2 числа:"); readln (c, d); obmen (c, d); запис (c, "", d); Край.

Анализ на задачата 1) при извикване на процедурата obmen с два параметъра 5 и 7, числата 5 и 7 също се поставят в променливите a и b, съответно: c 5 d 7 a 5 b 7

За да могат променливите c и d, a и b да се отнасят до едни и същи клетки на паметта (ако стойностите на a и b се променят, тогава стойностите на c и d ще се променят), когато описвате формални параметри, добавете думата VAR преди необходимите променливи: процедура obmen (var a, b: цяло число); s 5 d 7 a b

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

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

Описание на функцията: функция (): тип; (раздел, описващ локални имена) Начало (раздел с изпълними оператори): =; (задължителен параметър) End;

Извикване на функция:: = (); 1 . От дясната страна на оператора за присвояване. 2. В израза в условието на оператора на разклоняване. 3. В изходната процедура, в резултат на функцията.

Рекурсивните процедури и функции в Pascal могат да се наричат ​​сами, т.е. имат свойството на рекурсивност. Рекурсивната функция трябва да съдържа рекурсивно крайно условие, за да не предизвика цикъл на програмата. Всяко рекурсивно извикване създава нов набор от локални променливи. Тоест променливите, разположени извън извиканата функция, не се променят.

Напишете рекурсивна функция, която изчислява факториала на число n, както следва: n! = 1, ако n = 1 n! = (N -1)! N, ако n> 1

функция f (n: цяло число): цяло число; започнете, ако n = 1, тогава f: = 1, иначе f: = n * f (n -1); (функцията f извиква себе си) end;

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



Подпрограми v Турбо паскал


  • Подпрограма това е именувана, логически завършена група от команди, които могат да бъдат извикани за изпълнение произволен брой пъти от различни места в програмата.

Причини за използване на подпрограми

  • опростете разработването на големи програми чрез декомпозиране (разделяне) на задача на няколко подзадачи;
  • по-голяма видимост на програмата;
  • спестяване на памет.

Видове подпрограми

процедури

функции

  • ПроцедураТова е независима именувана част от програма, предназначена да изпълнява конкретни действия.

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

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

процедура ;

край ;

  • Всички променливи, които се използват в процедури без параметри, са описани в основната програма (в модула Var).

Пример . Направете програма за намиране на обема на цилиндъра.

Програмен цилиндър;

Var R, H, V: реално;

Въвеждане на процедура; (процедура за въвеждане на данни)

Writeln ('въведете стойност на радиус');

writeln ('въведете стойността на височината');

Формула на процедурата; { процедура изчисления сила на звука }

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

Изход на процедурата; (процедура за показване на резултатите)

writeln ('V =', V);


Процедури ° С параметри

  • В процедурите можете да опишете константи, променливи и други процедури.
  • Разделът с описание в процедурите има същата структура като в основната програма.
  • Локални променливи- това са променливите, описани в процедурата.
  • Локалните променливи не са налични извън процедурата.
  • Промените в локалните променливи в рамките на процедура не засягат стойностите на променливи със същите имена, но описани извън тази процедура.

Процедури ° С параметри

  • Глобални променливи

Пример .

Програма zadacha;

Var a, b: цяло число;

Процедура локална;

Var a, x: char; За процедури локален:

започнете променлива х - локална променлива

а: = ’! '; (програмата не може да промени стойността си)

b: = b +1; променлива б - глобална променлива

край; (всички промени в стойността на тази променлива в процедурата

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

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

локален; и в процедура е от характерен тип. Променлива а

writeln ('a =', a); целочислен тип не е наличен в локалната процедура.

writeln ('b =', b);

Резултатът от изпълнението на програмата: a = 0; b = 101.


); започвам; край; "ширина =" 640"

Предаване на параметри към Турбо Паскал

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

процедура (:

променлива);

край ;


  • формални параметри .
  • реални параметри .

Пример .

Параметър на програмата;

Var m, n: цяло число;

Процедура suma (a, b: цяло число);

writeln ('S =', S);

сума (m, n); или сума (100,10);

Променливи а и б са формални параметри, а променливите м и н - действително. Стойности на действителните параметри м = 100 и н = 10 се предават на формалните параметри а и б .

Промените в действителните параметри се случват само в рамките на процедурата и не ги засягат извън тази процедура.


; Var променлива :); започвам; край; "ширина =" 640"

Предаване на параметри към Турбо Паскал

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

процедура (:

променлива; Вар

променлива :);

край ;



b след това min: = b; ако min c тогава min: = c; край; BEGIN writeln ('въведете три числа'); readln (a1, b1, c1); writeln ('въведете три числа'); readln (a2, b2, c2); минимум (a1, b1, c1, min1); минимум (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) "ширина =" 640"

Var a1, b1, c1, a2, b2, c2, min1, min2, S: реално;

Минимум на процедурата (a, b, c: реален; Var min: реален);

ако min b, тогава min: = b;

ако min c тогава min: = c;

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

readln (a1, b1, c1);

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

readln (a2, b2, c2);

минимум (a1, b1, c1, min1);

минимум (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)


ФункцияТова е подпрограма, резултатът от която е някаква стойност.

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

функция (:

край ;

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

Програма vyrazenie;

функционален модул (a: реален): реален;

writeln ('въведете стойността на променливата');

y: = модул (x-3) + модул (x + 6);

writeln ('y =', y);

Пример . Изчислете стойността на израза: y = | х -3 | + | х +6 |

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

Учител по информатика NIS Uralsk FMN Зеленов Борис Александрович


  • Учениците използват процедури и функции за решаване на проблеми
  • Учениците се научават да решават големи проблеми, като ги разделят на по-малки

  • Формирайте концепцията за процедури и функции на език за програмиране.

  • Студентите познават понятията "процедури" и "функции", дефинират формалните и действителните параметри

Очаквани резултати - дескриптори:

1. Познава определението за "процедура"

2.Знае дефиницията на "функция"

3.Определя действителните и формалните параметри

4.Разграничава стойностни и променливи параметри

5. Намира извикване на процедура или функция в програмния код



Стандартен план на Елвира

1. Отстранете хартиите

2. Поливайте цветята

3. Измийте бюра

4. Избършете стъклото

Край на алгоритъма

Как можем да подобрим организацията на този процес?




Тема на урока

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


Ішкі baғdarlama

Подпрограма

Процедура

Процедура

Parameterler

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

За да се прехвърлят стойностите на променливите към процедура (функция), се използват действителни параметри ...

За да се опише процедурата, първо трябва ...., след това ...


Концепцията за подпрограма

Определение

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

Подпрограми

Процедури


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

  • Начертайте ограда с помощта на език за програмиране

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


  • Опишете как рационално да изпълните рисунка на коледно дърво в среда за програмиране

  • Те са самостоятелни фрагменти от програми, проектирани по специален начин и със собствено име.

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



Блокова схема

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

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


Блокова схема


Описанието на процедурата е както следва:

процедураиме (списък с формални параметри); раздел за описание започнетеоператори край ;


Описанието на функцията изглежда така:

функцияиме (списък с формални параметри): тип връщане;

раздел за описание започнетеоператори край ;


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

Програма ...;

// Описание раздел Използва, Const, Var, ...

процедура А ;

започнете ....... край ;

процедура Б ;

започнете ........ край ;

Функция C ;

започнете ........ край ;

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

започнете ........ край .


  • Разликата между функция и процедура е, че резултатът от изпълнението на операторите, които формират тялото на функцията, винаги е някаква единична стойност, така че извикването на функцията може да се използва в съответните изрази заедно с променливи и константи.

Процедури

Функции

Може да има множество резултати или да извърши някакво действие

Има само един резултат, чийто тип е посочен отделно, когато функцията е декларирана.

Резултатите могат да бъдат стойности от всякакъв тип, масиви, низове, числа и т.н.

Резултатът може да бъде само стойност от тип real, integer или char.

Командата за извикване на процедурата е отделна команда, която се използва независимо

Извикването на функция може да се използва само като компонент на израз от съответния тип.

Тялото на функция трябва да съдържа поне един оператор за присвояване с името на функцията вляво.


b тогава макс: = а друго макс: = b; MaxNumber: = макс; край; "ширина = 640"

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

MaxNumber (a, b: цяло число): цяло число;

var max: цяло число;

MaxNumber: = макс;


b тогава макс: = а друго макс: = b; край; "ширина = 640"

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

MaxNumber (a, b: цяло число; var max: цяло число);

ако ab тогава max: = a else max: = b;


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

Промяна на цвета (C1, C2: Word);

TextBackGround (C2)


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

Добавяне (X, Y: цяло число): цяло число;


Реалното

  • Посочено в основния раздел на програмата

Официално

  • Посочено в подпрограма
  • Посочено в подпрограма

Процедурата се извиква от оператор със следния формат:

име на процедурата (списък с действителни параметри);

  • Списък на действителните параметри- това е тяхното изброяване, разделено със запетаи.

  • В езиковия стандарт Pascal параметрите могат да се предават по два начина - по стойност и по препратка. Извикват се параметри, предавани по стойност стойностни параметрипредадено по линк - променливи параметри... Последните се различават по това, че функционалната дума var се поставя преди тях в заглавката на процедурата (функцията).

Предаване на параметри. Формални параметри

Променливи

Стойностите

Параметри по стойност

Формални параметри

Променливи


Формални параметри

Параметри по стойност

  • При първия метод (преминаване по стойност) стойностите на действителните параметри се копират в съответните формални параметри.

Процедура

Име на процедурата (a, b: цяло число);

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

Ако тези стойности се променят по време на изпълнението на процедурата (функцията), първоначалните данни (действителни параметри) не могат да се променят.


Var c, d: цяло число;

  • При преминаване по препратка всички промени, настъпващи в тялото на процедура (функция) с формални параметри, водят до незабавни подобни промени в съответните действителни параметри.

Процедура

Име на процедурата (a, b: цяло число, Var c: реално);

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

Правят се промени в променливите на извикващия блок, така че изходните параметри се предават чрез препратка. Когато са извикани, съответните действителни параметри могат да бъдат само променливи.


Пишеш:

1. Действителни параметри ___________

Процедура Kvad (R: реално; var S: реално);

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

3. Формални стойности на параметрите __________

5. Име на процедурата ___________

6. Позоваване на процедурата от програмата _____________________


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

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


Елвира е класен ръководител. Тя ще трябва да състави план за извършване на общо почистване в класа: премахване на книжата, поливане на цветята, измиване на бюрата, избърсване на стъклото. Как може най-добре да организира работата си? Помогнете на Елвира.


Разширен план на Елвира

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

Арсен - маха книжата

Мила - поливане на цветя

Виталий - мие бюра

Индира - избърсва стъклото

1. Екзекутирайте Арсен

2. Бягай Мила

3. Изпълнете Виталий

4. Изпълнете Indira

Край на алгоритъма


  • Какви нови структури на езика за програмиране срещнахме днес?
  • Назовете научените параметри
  • Как се предават параметрите на процедура?

  • Резюме на урока
  • Намерете дефиниции: "Локални променливи" и "Глобални променливи"
  • Създайте две задачи, в които можете да използвате процедури или функции.

  • Как бихте определили темата на урока? (измислете името си)
  • Какво мислите, че трябва да научите в следващия урок?

да се запознаем

в следващия урок!

Слайд 1

Слайд 3

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

Слайд 4

Формални и действителни параметри В описанието на подпрограмите параметрите се посочват само с имена, поради което се наричат ​​формални. Те нямат значение, докато не бъде извикана подпрограмата. Те запазват място само за действителните параметри, фиксирайки техния брой и тип данни. Действителни типове параметри: Параметрите на стойността показват коя стойност трябва да бъде присвоена на конкретен параметър на подпрограма. След като подпрограмата приключи, те се връщат към предишните си стойности, дори ако са били променени в подпрограмата. Променливите параметри в подпрограмата заменят формалните, те могат да променят стойността си по време на изпълнение на подпрограмата и да запазват промените при излизане от подпрограмата (пред променливите параметри има ключовата дума Var).

Слайд 5

Слайд 6

Описание на процедурата Program Pr1; Const ... Type ... Var ... Процедура (); Описателна част Начало на процедурата тяло Край; Започнете ... (); ... край. Когато процедурата бъде извикана, формалните параметри се заменят с действителните.

Слайд 7

Процедурата за изчисляване на сумата от две числа програма pr1; Използва crt; Var a, b, s: реално; процедура suma (x, y: real; var z: real); начало z: = x + y; край; започнете clrscr; writeln ("въведете a, b"); readln (a, b); сума (a, b, s); writeln ("сумата от числа", a: 3: 1, "и", b: 3: 1, "=", s: 3: 1); readln; край. x, y, z - формални параметри, локални променливи a, b, s - глобални променливи a, b, s - действителни параметри х y z a b s Параметри на стойността Параметър на променлива

Слайд 8

Слайд 9

Слайд 10

Оценете стойността на израза a: = (3n! + 2m!) / (M + n)! За да намерите факториала, какъв тип променливи е препоръчително да използвате? програма pr2; Използва crt; Var m, n, x, y, z: цяло число; а: истински; факт на процедурата (d: цяло число; var q: цяло число); var i: цяло число; начало q: = 1; за i: = 1 до d do q: = q * i; край; започнете clrscr; writeln ("въведете стойности n, m"); readln (n, m); факт (n, x); факт (m, y); факт (m + n, z); a: = (3 * x + 2 * y) / z; writeln ("стойността на израза при m =", m: 4, "и n =", n: 4, "равно", a: 8: 3); readln; край. N! = 1 · 2 · 3 ·… · N

Слайд 11

Входен изход на елементи от едномерен масив Функцията Random (X) генерира произволно число от 0 до X от целочислен или реален тип (преди да извика функцията, тя трябва да бъде инициализирана с помощта на процедурата Randomize). Ако параметърът X не е посочен, резултатът ще бъде от тип Real, вариращ от 0.0 до 1.0. За да получите масив от произволни цели числа от диапазона произволен (BA + 1) + A Задача: Изпълнете въвеждането на елементите на едномерен масив с помощта на генератор на произволни числа (диапазон от стойности от -10 до 20) и изведе елементите като процедура. За A = -10 B = 20 произволно (20 - (- 10) +1) + (- 10)

Слайд 12

Слайд 13

Слайд 14

Описание на функцията Функциите са предназначени да изчисляват само една стойност, 1. следователно първата й разлика е, че процедурата може да има нови стойности за няколко параметъра, а функцията може да има само един (това ще бъде резултатът). 2. Втората разлика е в заглавието на функцията. Състои се от думата FUNCTION, последвана от името на функцията, след което в скоби има списък с формални параметри, след което се изписва типът на резултата от функцията, разделен с двоеточие. 3. Тялото на функцията трябва да съдържа поне един оператор за присвояване, където името на функцията е отляво, а нейната стойност е отдясно. Функция (): Описателна част Начало Тяло на функцията: =; Край;

Слайд 15

Оценете стойността на израза a: = (3n! + 2m!) / (M + n)! програма fn2; Използва crt; Var m, n: цяло число; а: истински; функция факт (d: цяло число): longint; var i: цяло число; q: longint; начало q: = 1; за i: = 1 до d do q: = q * i; факт: = q; край; започнете clrscr; writeln ("въведете стойности n, m"); readln (n, m); a: = (3 * факт (n) + 2 * факт (m)) / факт (m + n) ;; writeln ("стойността на израза при m =", m: 4, "и n =", n: 4, "равно", a: 8: 3); readln; край.

Слайд 16

Създайте програма, която ще намери ab, тоест b-та степен на числото A, където A и B са цели числа и B> 0, въведени от клавиатурата. Създайте програма, като замените функцията с процедурата pr2 на програмата; Използва crt; Var a, b: цяло число; c: longint; Функция степен (x, y: цяло число): longint; var i: цяло число; s: longint; начало s: = 1; за i: = 1 до y направи s: = s * x; Степен: = s; край; започнете clrscr; writeln ("въведете стойности a, b"); readln (a, b); C: = степен (a, b); writeln ("s =", s); readln; край.

Слайд 17

Слайд 18

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

Слайд 19

Целта на урока

образователен

  • да формира за учениците единна система от понятия, свързани с понятията процедура и функция;
  • научете как да използвате подпрограми при решаване на проблеми в Pascal, както и да научите да разбирате какъв вид подпрограма е необходима при решаване на конкретен проблем;
  • показват основните техники за използване на подпрограми;

образователен

  • възпитават точност, внимание, организираност;
  • култура на компютърни умения;

развиващи се

  • развиват логическото мислене, алгоритмичната култура на учениците;
  • развиват знания и умения за съставяне и отстраняване на грешки в подпрограми на език Pascal.

Студентите трябва:

  • познават правилата за писане на процедури без параметри и с параметри;
  • познават правилата за писане на функции;
  • да може да използва процедури и функции за решаване на прости проблеми.

По време на занятията

I. Org. момент

II. Въведение. Уместност

Издайте задача на листчета ( Приложение 1 ). Намерете повторения.

Понякога на различни места в програмата трябва да изпълнявате практически еднакви последователности от действия с различни първоначални данни. Такива последователности от действия могат да бъдат формализирани под формата на т.нар подпрограми (от английски, подпрограма) -групирайте изрази в блок, който може да бъде посочен по име, повече от веднъж.

Подпрограмите намаляват текста на програмата, значително намаляват времето за тяхното изпълнение, улесняват живота на програмистите, които могат да създават програми модулно, тоест да сглобяват сложна програма от цели части от по-прости компоненти. Това позволява на група програмисти да създават големи програми, а група от ученици да разработват и реализират всякакви глобални проекти.

Подпрограмите са разделени на процедури и функции.

Вградените (стандартни) процедури и функции са частезик и може да се извика по име без предварително описание.Например , abs, sqrt, ln, sin ... - функции (връщат резултат), readln, write ... - процедури (не връщат резултат). Тяхното присъствие значително улеснява разработването на приложни програми. Въпреки това, в повечето случаи, някои специфичнидействията за тази програма не намират преки аналози в библиотеките на Turbo Pascal и тогава програмистът трябва да разработи своя собствена нестандартнипроцедури и функции.

III. Обяснение на новия материал

Потребителските процедури са написани самипрограмист в съответствие със синтаксиса на езика в раздела за описание на подпрограмата.

Структурата на процедурата повтаря структурата на програмата, тя е "миниатюрна програма" - също е представена от заглавието и тялото.

Заглавката се състои от запазена дума за процедурата, идентификатор (име)процедури.

VAR ... // раздел, описващ променливи на основната програма

процедура ProcedureName;

// основно тяло на програмата

Записва се извикване на процедура за последващо изпълнение в тялото на основната програма.

Пример 1. Програма за изчисляване на площта и периметъра.

Предимства на подпрограмите:

  • Програми, написани с подпрограми по-лесно за тестване и отстраняване на грешки,имат по-ясно логическа структура.
  • Независимият характер на подпрограмите дава възможност да се повери компилирането им на различни програмисти. Това разделя работата по програмирането и по този начин ускорява нейното завършване;
  • Използването на подпрограми спестява памет. Паметта за съхраняване на променливи, използвани в подпрограма, се разпределя само за времето на нейната работа и се освобождава веднага след като нейното изпълнение приключи.

Пример 2. Потребителят въвежда двете страни на трите правоъгълника. Покажете тяхната площ.

Можете да решите проблема по следния начин:

за i: = 1 до 3 направи

writeln („Въведете a и b:“);

writeln (‘Площ =’, a * b);

Счита се за добър стил на програмиране да се използват процедури. Необходима е процедура, която ще изчисли площта на правоъгълник. Ето как основната програма ще изглежда схематично:

изчисление

изчисление

изчисление

Текстовата процедура вече е там (вижте пример 1). Нека създадем втора процедура, която изчислява площта. Но за да изчислите S, трябва да знаете 2 страни, така че процедурата трябва да покаже кои страни трябва да се умножи.

процедура pl (c, d: цяло число);

writeln (‘площ на правоъгълник със страни’, c, ‘’, d, ‘=’, S);

Параметърът е променлива, на която е присвоена някаква стойност. Съществува формални параметри дефинирани в заглавката на подпрограмата и реални параметри - изрази, които задават конкретни стойности, когато се позовават на подпрограма.

Процедурата ще бъде изпълнена, ако я извикате по име и посочите действителните параметри , разделени със запетаи и затворени в скоби:

Действителните параметри трябва да са еднакви по вид и количество с формалните.

И така, основната програма:

за i: = 1 до 3 направи

Коментирайте.Когато решавате този проблем, е необходимо да проверите въведените от потребителя числа (те не трябва да са отрицателни, в противен случай програмата ще бъде прекъсната).

Нека съставим процедурата за проверка:

грешка в процедурата (f, g: цяло число);

ако (е<0) or (g<0) then begin

writeln („страните на правоъгълник не могат да бъдат отрицателни“);

спиране; // прекъсване на програмата

Финална програма - Приложение 4

И така, форматът на процедурата:

Процедура<имя>(формални параметри);

<операторы>;

Пример 3. Направете програма за размяна на местата на две числа с = 5 и d = 7.

програма obmenDan;

var c, d: цяло число;

процедура obmen (a, b: цяло число);

m: = а; a: = b; b: = m;

writeln ("Въведете 2 числа:");

запис (c, "", d);

След стартиране на програмата можете да видите, че формалните параметри (в процедурата) са се променили, а действителните (които се използват в основната програма) не са се променили. Помислете за снимка, която показва част от RAM:

1) при извикване на процедурата obmen с два параметъра 5 и 7, числата 5 и 7 също се поставят в променливите a и b, съответно:

3), но в променливите c и d данните не са се променили, тъй като те са в други места в паметта.

За променливи c и d, a и b отнасят се до едни и същи места в паметта (ако стойностите на a и b се променят, тогава стойностите и на двете c, d ще се променят) когато описвате формални параметри, добавете думата VAR преди необходимите променливи:

процедура obmen (var a, b: цяло число);

Променете програмата obmenDan:

Грешка поради var. Числата са константи, които не могат да се променят в процедура.

Пример 4. Намерете площта на кръг, като използвате процедура, която само изчислява, но не показва резултата на екрана.

процедура кръг (r: реален);

Процедурата трябва да върне резултат:

процедура кръг (r: реален; var S: реален);

readln (a, e);

коментар:Променлива в процедура S се използва за връщане на резултатите от процедурата в основната програма. Когато се промени, действителният параметър в извикващата програма също се променя, т.е. променлива e.

По-често за това в Pascal вместо процедури се използват функции (подпрограми, които връщат нещо).

Функцията е същата като процедурата, но има две разлики.

  • Функцията предава резултата от работата си на програмата - единствената стойност, чийто носител е името на нейната функция.
  • Името на функцията може да бъде включено в израза като операнд. Функцията връща резултата в точката на нейното извикване.

Например, sqr (x) - ще квадратира стойността на x и ще върне изчислената стойност на квадрата на числото x към точката на повикване: y: = sqr (x);

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

Функция<имя>(формални параметри):<тип результата>;

<операторы>;

Разделът с оператори трябва да съдържа поне един оператор, който присвоява стойност на името на функцията. Резултатът от последното присвояване се връща на извикващата точка.

Пример 5. Нека повторим задачата за площта на окръжността.

функционален кръг (r: реален): реален;

a: = кръг (5); (ЗАДЪЛЖИТЕЛНО назначение)

Пример 6. Намерете 1! +2! +… + N!

Използваме функцията за намиране на факториала, защото го даваме на входа и получаваме резултата.

функция факт (a: цяло число): цяло число;

за i: = 1 до a

В реда факт: = факт * I;

компилаторът ще намери грешка, защото фактът трябва да бъде извикан с параметри. Следователно обикновено се въвежда допълнителна променлива, в която се поставя резултатът. И тогава този резултат се присвоява на факта на променливата:

програмен факториал;

var sum, n, j: цяло число;

функция факт (a: цяло число): цяло число;

var i, d: цяло число;

за i: = 1 до a

за j: = 1 до n do

сума: = сума + факт (j);

IV. Резюме на урока

По това време процесът на програмиране се превръща в производство на индустриален софтуербазиран технологии за програмиране... Повечето експерти са на мнение, че метод за проектиране на програмата отгоре надолунай-удобни за решаване на сложни проблеми. Първо, задачата се дефинира в общи линии, след това има постепенно усъвършенстване на нейната структура. На следващата стъпка всяка подзадача от своя страна се разбива на редица други. Решението на отделен фрагмент от сложен проблем е независим програмен блок - подпрограма.

V. Домашна работа

Решаване на задачи (писмено):

  1. Напишете процедура, която заменя всички букви a със * във въведения низ.
  2. Дават се две изречения. Намерете общия брой букви "n" в тях. (Дефинирайте функция за изчисляване на броя на "n" букви в изречение.)