Paskal tilidagi protseduralar va funktsiyalar. Rekursiya. Subprogrammalar Ko'pincha vazifa dasturning turli qismlarida ma'lum bir ketma-ketlikni takrorlashni talab qiladi. Protseduralar va funksiyalar Protseduralar va funksiyalar taqdimoti

Paskalda rekursiya O'qituvchi: Tlexurai Yu.V. "8-sonli litsey" shahar ta'lim muassasasi Rasmlarda nimani ko'rasiz? San'atdagi bu hodisa deyiladi rekursiya "Rekursiyani tushunish uchun avvalo rekursiyani tushunish kerak." rekursiya - ob'ektni o'zi orqali qisman aniqlash, ob'ektni oldindan aniqlanganlardan foydalangan holda aniqlash. Ilmiy nuqtai nazardan: Rekursiya - ob'ektlar yoki usullar sinfini birinchi navbatda uning bir yoki bir nechta (odatda oddiy) asosiy holatlari yoki usullarini ko'rsatish, so'ngra ular asosida aniqlanayotgan sinfni qurish qoidalarini belgilash orqali aniqlash usuli. Peter Deutsch Peter Deutsch

Inson iteratsiyasi.

Rekursiya Xudodandir.

Fizikada rekursiya Til va adabiyotda rekursiya Cheksiz rekursiyaning klassik namunasidir bir-biriga qarama-qarshi qo'yilgan ikkita ko'zgu: ularda ko'zgularning xira aks etishidan ikkita koridor hosil bo'ladi. Cheksiz rekursiyaning yana bir misoli o'z-o'zini qo'zg'atish effekti (ijobiy fikr-mulohaza) y elektron sxemalar daromad, chiqishdan kelgan signal kirishga yetganda, kuchaytiriladi, yana kontaktlarning zanglashiga olib keladi va yana kuchaytiriladi. Ushbu ish rejimi standart bo'lgan kuchaytirgichlar o'z-o'zidan osilatorlar deb ataladi. Rekursiv lug'at yozuviga misol: "Ruhoniyning iti bor edi ..." - odatiy rekursiya Stanislaw Lemning bir nechta hikoyalari cheksiz rekursiyali voqealarga bag'ishlangan: qabrlar haqidagi hikoya ("Jon the Quietning yulduzli kundaliklari"), unda qahramon ketma-ket qabrlar haqidagi maqoladan qabrlar haqidagi maqolaga, u yerdan qabriston haqidagi maqolaga o'tadi, unda yana "sepulkariya" maqolasiga havola mavjud. Ma'lum bir muammoni hal qilish uchun shunga o'xshash mashinani yaratish va unga yechimni ishonib topshirish uchun etarli darajada aql va dangasalikka ega bo'lgan aqlli mashina haqidagi hikoya (natija cheksiz rekursiya bo'lib, har biri yangi mashina o'ziga o'xshashini qurdi va vazifani unga topshirdi). Dasturlashda rekursiya - bu protsedura yoki funktsiyani tashkil etuvchi operatorlarni bajarish jarayonida o'ziga tegishli bo'lgan hisoblash jarayonini tashkil qilish usuli. Bunday qo'ng'iroq cheksiz bo'lmasligi uchun pastki dastur matnida boshqa qo'ng'iroq sodir bo'lmaydigan shart bo'lishi kerak. shunday qilib, rekursiv qo'ng'iroq faqat pastki dasturning tarmoqlaridan biriga kiritilishi mumkin. Misol. Natural sonning faktorialini hisoblash n sonining faktorialini quyidagicha hisoblaydigan rekursiv funksiya yarating: f funksiya (n: integer): longint; boshlang, agar n = 1 bo'lsa, f:= 1 boshqa f:= n * f(n -1); (f funktsiyasi o'zini chaqiradi) Rekursiya yordamida Paskal dasturini tugatish: Var n: integer; a: longint; funktsiya faktorial (n: integer): longint; start agar n = 1 bo'lsa, faktorial:= 1 boshqa faktorial:= n * faktorial (n -1); Oxiri; Begin Write(‘n=’); Readln(n); A:= faktorial(n); Write(‘n!=’,a); Readln; oxiri. Piza Fibonachchi Leonardo

Fibonachchi raqamlari raqamlar ketma-ketligining elementlari

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ..., bunda har bir keyingi son oldingi ikkitasining yigʻindisiga teng.

Vazifa: n ta elementdan iborat Fibonachchi raqamlari seriyasini ko'rsatish. O'zgaruvchilar tavsifi: n – qator elementlari soni; a, b - qatorning oxirgi ikki elementining qiymatlari; c – bufer (“zaxira”) o‘zgaruvchisi; i - hisoblagich. Masalani yechish algoritmi: 1. n ning qiymatini oling. 2. a va b qiymatlarini mos ravishda 0 va 1 belgilang (bular Fibonachchi seriyasining birinchi raqamlari). Ularni ekranda ko'rsating. 3. 3-elementdan boshlab n gacha: a) a va b yig‘indisini ko‘rsatish, b) b o‘zgaruvchining qiymatini c ga saqlash, c) a va b ning yig‘indisini b ga yozish, d) ning qiymatini belgilash. c dan a. Iteratsiya yordamida Paskal dasturi: Fibonachchi dasturi; var a,b,c,i,n: butun son; boshlanishi yozish ("n = "); readln(n); a:= 0; yozish (a," "); b:= 1; yozish (b," "); uchun i:=3 dan n gacha boshlanadi yozish (a+b," "); c:= b; b:= a + b; a:=c; oxiri; readln; oxiri. Rekursiya yordamida Paskal dasturi: Fibonachchi raqamlarini hisoblashning rekursiv ta'rifi quyidagicha: Fibonachchi raqamlarining bu ta'rifini osongina rekursiv funktsiyaga aylantirish mumkin: funktsiya f(n: Integer) : longint; boshlash Agar n<= 1 Then f:= n else f:= f(n– 1) + f(n - 2); end; Program chislaFibonacci; var n,i: integer; a: longint; function fib (n: integer): longint; begin If n <= 1 Then fib:= n else fib:= fib(n– 1) + fib(n - 2); End; begin write(‘n=’); readln(n); for i:=0 to n do begin A:= fib (n); write (‘ ’,a); end; readln; end. Домашнее задание Написать программу нахождения НОД двух натуральных чисел, используя алгоритм Евклида и рекурсию Даны два натуральных числа A Va b. Agar A= b, keyin tugun ( A,b)=a. Agar A>b, keyin tugun ( A,b)= tugun ( a -b,b). Agar A< b, keyin tugun ( A,b)= tugun ( A,b-a). Dastur noddvyxchisel; var a,b: longint; funktsiya nod(a,b:longint): longint; start Agar a = b Keyin bosh irg'adi:= a else agar a>b keyin bosh irg'adi:= bosh irg'adi(a-b,b) boshqa bosh irg'adi:= bosh irg'adi (a,b-a) End; yozishni boshlash ('a='); readln(a); write('b='); readln(b); A:= bosh irg'adi(a,b); yozish ('nod=',a); readln; oxiri. Xanoy minoralari haqidagi muammo. Bunday holda, quyidagi qoidalarga qat'iy rioya qilish kerak:

  • Siz bir vaqtning o'zida faqat bitta diskni ko'chirishingiz mumkin;
  • kattaroq diskni joylashtirish mumkin emas kichikroq disk;
  • olib tashlangan diskni boshqa diskni olib tashlashdan oldin har qanday pinga qo'yish kerak.
  • Mehnatkash buddist rohiblar disklarni kechayu kunduz shpildan shpilgacha olib yurishadi. Afsonaga ko'ra, rohiblar o'z ishlarini tugatgandan so'ng, dunyoning oxiri keladi. 64 ta disk bilan muammoni hal qilish uchun 264-1 harakat talab qilinishini hisoblash mumkin. Demak, dunyoning oxiriga kelsak, agar bitta disk bir soniyada harakatlanishini hisobga olsak, u besh milliard asrdan keyin sodir bo'ladi. Biroq, muammo ham, uning afsonasi ham 1883 yilda Sent-Lui kollejidan matematik Eduard Lukas tomonidan ixtiro qilingan.

Uchta olmosli shpaldan birida 64 dumaloq oltin disk bor. Disklar turli radiuslarga ega va shpil ustida radiuslarning kamayish tartibida poydevordan tepaga qarab joylashgan. Agar kerak bo'lsa, uchinchi shpildan foydalanib, disklarni birinchi shpildan ikkinchisiga o'tkazish kerak.

Vazifa. Disklar soni n ga (n = 1, 2, ...) teng bo'lgan Xanoy minoralari haqida yuqorida qo'yilgan muammoni hal qiladigan rekursiv dastur yarating. Yechim. Keling, shpallar uchun nomlarni kiritamiz: a, b, c. Mayli xanoy(n,a,b,c)- disklarning harakatlanish ketma-ketligini qaytaruvchi kerakli funksiya a yoqilgan b foydalanish c yuqorida tavsiflangan qoidalarga muvofiq. Agar n=1 bo'lsa, biz masalani qanday hal qilishni bilamiz. Siz shunchaki "ko'chirish" operatsiyasini bajarishingiz kerak a yoqilgan b" Faraz qilaylik, n – 1 disklar uchun bu masalani hal qila olamiz. n–1 diskni ko'chiring a yoqilgan Bilan. Keyin qolgan diskni boshqa joyga ko'chiring a yoqilgan b va nihoyat, n–1 disklarni ko'chiring c yoqilgan b. Ma'lumotlarni kiritish: qoziq adagi disklar soni; Chiqish: ketma-ketlik; 0-qadam:(o‘zgaruvchi turini aniqlang); 1-qadam: (harakatlar ketma-ketligini aks ettiruvchi xanoy protsedurasining tavsifi); 1.1-qadam:((n-1) disklarni a qoziqdan b qoziqqa ko'chiring); 1.2-qadam:(n-diskni a dan c ga o'tkazing); 1.3-qadam:((n-1) diskni b dan c ga siljitish); (1.2-1.3-bosqichlar rekursiv bajariladi); 2-qadam:(asosiy dastur); 2.1-qadam:(disklar sonini kiriting); 2.2-qadam: (Xanoy protsedurasini chaqirish). Paskal dasturida muammoni hal qilish bahnya; var n: integer; a,b,c: belgi; protsedura xanoy(n: integer;a,b,c: char); agar n>0 bo'lsa boshlanadi, keyin xanoy (n-1,a,c,b) boshlanadi; writeln ("Peremestit disk so sterzhnya ",a," na sterzhen" ",b); xanoy(n-1,c,b,a); oxiri; oxiri; yozishni boshlang ("Vvedite naturalnoe chislo n"); readln ( n);a:="a"; b:="b"; c:="c"; xanoy (n,a,c,b); readln; end.Uyga vazifa Tabiiy daraja bilan darajani hisoblash dasturini yozing. ko'rsatkich Berilgan: daraja asosi X Ko'rsatkich Kimga Agar k=0 bo'lsa, daraja(k,x)=1, Aks holda daraja(k,x)= x· daraja(k-1,x) Dastur stepen; var y: real; n:integer; funktsiya qadami(k:integer, x:real): real; start Agar k = 0 bo'lsa, unda qadam:= 1 boshqa qadam:= x * qadam(k-1,x) End; begin write(‘vvedite osnovanie stepeni x=’); readln(y); write(‘vvedite pokazatel stepeni k=’); Readln(n); write(‘x v stepeni k=’,step(n,y)); readln; oxiri. Mustaqil ish

  • Raqamlar yig‘indisini toping
  • Berilgan natural son tub son ekanligini aniqlang
  • Raqamning birinchi raqamini toping
  • Oʻnlik kasrdan natural sonni oʻzgartiring. ikkilik uchun
  • 20 ta elementdan iborat butun sonli massiv elementlari yig‘indisini toping
  • Ikkita butun sonning qiymatlarini almashtiring
  • Uch o'zgaruvchining qiymatlarini tartiblang a, b, c ortib borayotgan tartibda
  • Raqamlar sonini toping natural son n
  • Berilgan uchta sondan eng kattasini toping
  • To'rtta A, B, C, D orasidagi musbat sonlar sonini toping
2-son mustaqil ish uchun javoblar Dastur oddiy; var n, m, s: butun son; funktsiya prost(m, n:integer): mantiqiy; start Agar n = m Keyin prost:= true else prost:= (n mod m<>0) va prost (m+1, n); Oxiri; yozishni boshlash ('n ='); Readln(n); M:=2; Agar prost(m,n) keyin yozing (n,’prostoechislo’) Aks holda yozing (n,’sostavnoe’); readln; oxiri.

dastur tarjimasi;

protsedura dvd(n:longint);

Agar n >1 bo'lsa, dvd (n div 2);

yozish (n mod 2);

Subprogrammalar Ko'pincha vazifa dasturning turli qismlarida ma'lum bir ketma-ketlikni takrorlashni talab qiladi. Ushbu ketma-ketlikni bir marta tasvirlash va uni ko'p marta qo'llash uchun dasturlash tillari pastki dasturlardan foydalanadi. Kichik dastur - bu dasturning keyinchalik asosiy dasturda takroran foydalanish uchun maxsus tuzilgan blokidir.Postprogrammalardan foydalanish dasturlashning eng zamonaviy usullaridan biri - strukturali dasturlashni amalga oshirish imkonini beradi.


Subprogrammalar dasturlashni sezilarli darajada osonlashtiradigan uchta muhim muammoni hal qiladi: 1. ular dastur matnidagi o'xshash fragmentlarni qayta-qayta takrorlash zaruratini yo'q qiladi, ya'ni. dastur hajmini kamaytirish; 2. dastur strukturasini takomillashtirish, tahlil qilishda tushunishni osonlashtiradi; 3.xatolar ehtimolini kamaytirish, dasturlash xatolariga va o'zgartirish vaqtida kutilmagan oqibatlarga qarshilikni oshirish.


Protseduralar va funksiyalar Paskalda ikki xil quyi dastur mavjud: protsedura (PROSEDURE) va funktsiya (FUNCTION). Paskal tilidagi protseduralar va funktsiyalar o'zgaruvchilar bo'limi orqasidagi e'lon bo'limida e'lon qilinadi. Dastur dasturining nomi; VAR ... // asosiy dasturning o'zgaruvchilarini tavsiflash bo'limi; protsedura ProcedureName; var ... begin ...//Protsedura tanasining oxiri; start // asosiy dasturning tanasi tugashi.


Funksiyalar va protseduralar parametrlarga ega (qiymatni uzatuvchi o'zgaruvchilar). Ular ikki xil bo'ladi: 1) Formal - kichik dastur tavsifida bo'lganlar 2) Actual - asosiy dasturdan funktsiya yoki protseduraga o'tkaziladiganlar. Haqiqiy parametrlar miqdori, tartibi va turi bo'yicha rasmiy parametrlarga mos kelishi kerak.




Protseduralar Protseduralar quyi dastur bir nechta natijalarni olishi kerak bo'lganda qo'llaniladi. Paskalda ikki xil protseduralar mavjud: parametrli va parametrsiz protseduralar. Protseduraga protsedura nomi orqali kirish mumkin, undan keyin haqiqiy parametrlar bo'lishi mumkin. Protsedura chaqirilganda, haqiqiy va rasmiy parametrlar o'rtasida birma-bir yozishmalar o'rnatiladi, keyin boshqaruv protseduraga o'tkaziladi. Jarayon bajarilgandan so'ng, protsedura chaqirilgandan so'ng boshqaruv chaqiruvchi dasturning keyingi operatoriga o'tkaziladi.


1-misol: 60 yulduzli satrni chop etuvchi parametrsiz protsedura. protsedura pr; var i: integer ; start for i:=1 dan 60 gacha yozing (* "); writeln; end; begin pr; end.


Misol 2. Ikkita c=5 va d=7 sonlarni almashtirish dasturini tuzing obmenDan; var c,d:integer; protsedura almashinuvi (a,b:integer); var m:integer; boshlash m:=a; a:=b; b:=m; writeln(a,b); oxiri; begin writeln("2 raqamni kiriting:"); readln(c,d); almashish(c,d); writeln(c," ",d); oxiri. c5 d 7 a 5 b 7 1) obmen protsedurasini ikkita parametrli 5 va 7 bilan chaqirganda, a va b o'zgaruvchilarga mos ravishda bir xil 5 va 7 raqamlari joylashtiriladi: 2) keyin protsedurada xotira katakchalarining qiymatlari. a va b qayta tartiblangan: c5 d 7 a 7 b 5 3) lekin c va d oʻzgaruvchilarda maʼlumotlar oʻzgarmagan, chunki ular boshqa xotira hujayralarida joylashgan


c va d, a va b o'zgaruvchilari bir xil xotira kataklariga murojaat qilishlari uchun (a va b qiymatlari o'zgartirilsa, c, d qiymatlari ham o'zgaradi), rasmiy parametrlarni tavsiflashda u kerakli o'zgaruvchilardan oldin VAR so'zini qo'shish kerak: protsedura almashinuvi (var a,b:integer); s5 d 7 a b


3-misol. 3 xil butun sonlar massivi berilgan (har birining o‘lchami 15 dan oshmaydi). Har bir massivda elementlar yig‘indisini va o‘rtacha arifmetik qiymatini toping. dastur proc; var i, n, summa: butun son; sr: haqiqiy; protsedura ishi (r:integer; var s:integer; var s1:real); var mas: integer massivi; j:integer; start s:=0; for j:=1 to r do begin read read (mas[j]); s:=s+mas [j]; oxiri; s1:=s/r; oxiri;


(asosiy dastur) begin for i:=1 to 3 do begin write (“Vvedite razmer”,i, “masiva:”); readln(n); ish(n, summa, sr); (chaqiruv protsedurasi ishi) writeln ("Summa elementov = ",sum); writeln("Srednearifmeticheskoe = ",sr:4:1); oxiri; oxiri.


Dasturning natijasi: Dastur ish tartibini uch marta chaqiradi, bunda r, s, s1 formal o'zgaruvchilar haqiqiy n, sum, sr bilan almashtiriladi. Protsedura massiv elementlarini kiritadi, yig'indi va o'rtachani hisoblaydi. s va s1 o'zgaruvchilari asosiy dasturga qaytariladi, shuning uchun ularning tavsifidan oldin var xizmat so'zi qo'yiladi. Mas, j mahalliy parametrlari faqat protsedurada amal qiladi. Global - i, n, sum, sr butun dastur davomida mavjud.


Paskaldagi funksiyalar Paskal tilida o'rnatilgan funksiyalar to'plami ancha keng (ABS, SQR, TRUNC va boshqalar). Agar dasturga yangi, nostandart funksiya kiritilgan bo'lsa, u holda u dastur matnida tavsiflanishi kerak, shundan so'ng unga dasturdan kirish mumkin. Tayinlash operatorining o'ng tomonida funksiya nomi va haqiqiy parametrlarini ko'rsatadigan funksiyaga kirish mumkin. Funktsiya o'zining mahalliy konstantalari, turlari, o'zgaruvchilari, protseduralari va funktsiyalariga ega bo'lishi mumkin. Paskalda funksiyalarning tavsifi protseduralar tavsifiga o'xshaydi.




4-misol. a x darajali kichik dastur funksiyasini yozing, bu erda a, x har qanday sonlar. Formuladan foydalanamiz: a x = e x ln dastur p2; var f, b, s, t, c, d: haqiqiy; (global o'zgaruvchilar) funktsiyasi stp (a, x: real) : real; var y: real; ( mahalliy o'zgaruvchilar) begin y:= exp (x * ln (a)) ; stp:= y;(subprogramma hisoblari natijasiga funksiya nomini berish) end; (funksiya tavsifi tugallangan) begin d:= stp (2.4, 5); (turli sonlar va o'zgaruvchilarning quvvatlarini hisoblash) writeln (d, stp (5,3.5)); o'qish (f, b, s, t); c:= stp (f, s)+stp (b, t); writeln(c); oxiri.


Funksiyalar Subprogramma alohida sintaktik tuzilma sifatida tuzilgan va alohida masalalarni yechish uchun nom (mustaqil dastur bloki) bilan ta'minlangan dasturning bir qismidir. Jarayon tavsifi: protsedura () (mahalliy nomlarni bajarish bo'limi) Begin (operatorlarni bajarish bo'limi) End; Funktsiya tavsifi: funktsiya (): turi; (mahalliy nomlarni tavsiflash bo'limi) Begin (bajariladigan operatorlar bo'limi) := ; (kerakli parametr) End; Jarayon chaqiruvi: (); Funktsiya chaqiruvi: := (); 1. Belgilash operatorining o'ng tomonida. 2. Tarmoqlanish operatori shartidagi ifodada. 3. Chiqarish protsedurasida, funksiyaning natijasi sifatida. Subprogrammalarning tavsifi Protseduralar


Rekursiya Paskalda protseduralar va funktsiyalar o'zlarini chaqirishi mumkin, ya'ni. rekursivlik xususiyatiga ega. Rekursiv funktsiya dasturning aylanishiga olib kelmaslik uchun rekursivlikni tugatish shartini o'z ichiga olishi kerak. Har bir rekursiv qo'ng'iroq mahalliy o'zgaruvchilarning yangi to'plamini yaratadi. Ya'ni chaqirilgan funksiyadan tashqarida joylashgan o'zgaruvchilar o'zgartirilmaydi.


1 funktsiya f (n: integer): butun son; boshlang, agar n = 1 bo'lsa, f:= 1 boshqa f:= n * f (n -1); (f funktsiyasi o'zini chaqiradi" title="Misol 5. n sonining faktorialini quyidagicha hisoblaydigan rekursiv funksiya tuzing: n! = 1, agar n= 1 n!= (n -1) bo'lsa! · n) agar n > 1 bo'lsa f (n: integer): butun son; agar n = 1 bo'lsa, f:= 1 bo'lsa, f:= 1 bo'lsa, f:= n * f (n -1); (f funktsiyasi o'zini chaqiradi)" class="link_thumb"> 19 !} 5-misol. n sonining faktorialini quyidagicha hisoblaydigan rekursiv funksiya tuzing: n! = 1, agar n= 1 n!= (n -1) bo'lsa! · n, agar n > 1 funksiya f (n: integer): butun son; boshlang, agar n = 1 bo'lsa, f:= 1 boshqa f:= n * f (n -1); (f funktsiyasi o'zini chaqiradi) end; 1 funktsiya f (n: integer): butun son; boshlang, agar n = 1 bo'lsa, f:= 1 boshqa f:= n * f (n -1); (f funktsiyasi o'zini chaqiradi"> 1 funktsiya f (n: integer): integer; agar n = 1 bo'lsa, f:= 1 boshlanadi, aks holda f:= n * f (n -1); (f funktsiyasi o'zini chaqiradi) end; " > 1 funktsiya f (n: integer): integer; agar n = 1 bo'lsa, f:= 1 bo'lsa, f:= n * f (n -1); (f funktsiyasi o'zini chaqiradi" title=" 5-misol) n sonining faktorialini quyidagicha hisoblaydigan rekursiv funksiya tuzing: n!=1, agar n= 1 bo’lsa n!= (n -1)!n, agar n > 1 bo’lsa f (n: integer): butun son; boshlang, agar n = 1 bo'lsa, f:= 1 bo'lsa, f:= n * f (n -1); (f funktsiyasi o'zini chaqiradi"> title="5-misol. n sonining faktorialini quyidagicha hisoblaydigan rekursiv funksiya tuzing: n! = 1, agar n= 1 n!= (n -1) bo'lsa! · n, agar n > 1 funksiya f (n: integer): butun son; boshlang, agar n = 1 bo'lsa, f:= 1 boshqa f:= n * f (n -1); (f funktsiyasi o'zini chaqiradi"> !}



Slayd 1

Slayd 3

Subprogrammalar: global va mahalliy o'zgaruvchilar Barcha quyi dasturlar tavsif bo'limida tasvirlangan bo'lishi kerak. Har bir kichik dasturning nomi bo'lishi kerak. Asosiy dastur va kichik dasturlar o'rtasidagi ma'lumotlar dasturning istalgan qismida ishlaydigan va asosiy dasturda tavsiflangan nomga ega bo'lgan global parametrlar (o'zgaruvchilar) orqali uzatiladi. Mahalliy parametrlar (o'zgaruvchilar) kichik dastur ichida ishlatilishi mumkin - ularning nomlari va qiymatlari faqat ma'lum bir kichik dastur chegaralarida ma'noga ega va chaqiruvchi dastur uchun mavjud emas.

Slayd 4

Rasmiy va faktik parametrlar Subprogrammalar tavsifida parametrlar faqat nomlar bilan ko'rsatilgan, shuning uchun ular formal deb ataladi. Subprogramma chaqirilmaguncha ular hech qanday ma'noga ega emas. Ular faqat haqiqiy parametrlar uchun joy ajratadilar, ularning soni va ma'lumotlar turini belgilaydilar. Haqiqiy parametrlarning turlari: Qiymat parametrlari ma'lum bir kichik dastur parametriga qanday qiymat berilishi kerakligini ko'rsatadi. Pastki dastur tugagandan so'ng, ular pastki dasturda o'zgartirilgan bo'lsa ham, avvalgi qiymatlarini oladi. Pastki dasturdagi o'zgaruvchan parametrlar rasmiy parametrlar o'rnini egallaydi, ular quyi dasturni bajarish jarayonida o'z qiymatini o'zgartirishi va quyi dasturdan chiqishda o'zgarishlarni saqlashi mumkin (o'zgaruvchan parametrlar oldidan kalit so'z Var).

Slayd 5

Slayd 6

Protsedura tavsifi Dastur Pr1; Const...Type...Var...Procedure(); Ta'riflovchi qism Begin Protsedura tanasi End; Boshlanishi...(); ... oxiri. Jarayon chaqirilganda, rasmiy parametrlar haqiqiylarga almashtiriladi.

Slayd 7

Ikki son yig'indisini hisoblash tartibi pr1 dasturi; Usescrt; Var a,b,s:real; protsedura summasi(x,y:real;var z:real); start z:=x+y; oxiri; boshlash clrscr; writeln("a,b kiriting"); readln(a,b); summa(a,b,s); writeln("sonlar yig'indisi ",a:3:1," va ",b:3:1," = ",s:3:1); readln; oxiri. x,y,z – rasmiy parametrlar, mahalliy o'zgaruvchilar a, b, s– global o‘zgaruvchilar a,b,s – haqiqiy parametrlar x y z a b s Qiymat parametrlari Parametr o‘zgaruvchisi

Slayd 8

Slayd 9

Slayd 10

a:=(3n!+2m!)/(m+n) ifoda qiymatini hisoblang! Faktorialni topish uchun qanday turdagi o'zgaruvchilardan foydalanish maqsadga muvofiq? pr2 dasturi; Usescrt; Var m,n,x,y,z:integer; a: haqiqiy; protsedura fakti(d:integer;var q:integer); var i:integer; boshlash q:=1; for i:=1 to d do q:=q*i; oxiri; boshlash clrscr; writeln("n, m qiymatlarini kiriting"); readln(n,m); fakt(n,x); fakt(m,y); fakt (m+n,z); a:=(3*x+2*y)/z; writeln("m= ",m:4," va n= ",n:4,"ga teng bo'lgan ifodaning qiymati",a:8:3); readln; oxiri. N!=1·2·3·…· N

Slayd 11

Bir o'lchovli massiv elementlarining kirish chiqishi Random(X) funksiyasi butun son yoki real turdagi 0 dan X gacha bo'lgan tasodifiy sonni hosil qiladi (funksiyani chaqirishdan oldin uni Randomize protsedurasi yordamida ishga tushirish kerak). Agar X parametri ko'rsatilmagan bo'lsa, natija 0,0 dan 1,0 gacha bo'lgan oraliqda Real turiga ega bo'ladi. Tasodifiy (B-A+1)+A diapazonidan tasodifiy butun sonlar massivini olish uchun Vazifa: Tasodifiy sonlar generatori (qiymat diapazoni -10 dan 20 gacha) yordamida bir o‘lchovli massiv elementlarini kiritishni shakllantirish. elementlarni protsedura sifatida chiqarish. A=-10 uchun B=20 tasodifiy(20-(-10)+1)+(-10)

Slayd 12

Slayd 13

Slayd 14

Funktsiya tavsifi Funktsiyalar faqat bitta qiymatni hisoblash uchun mo'ljallangan, 1. Shuning uchun uning birinchi farqi shundaki, protsedura bir nechta parametrlar uchun yangi qiymatlarga ega bo'lishi mumkin, lekin funksiya faqat bittaga ega (bu natija bo'ladi). 2. Ikkinchi farq funksiya sarlavhasida. U FUNCTION so'zidan iborat bo'lib, undan keyin funksiya nomi, so'ngra qavs ichida rasmiy parametrlar ro'yxati, so'ngra ikki nuqta bilan ajratilgan funksiya natijasining turi ko'rsatiladi. 3. Funktsiya tanasi kamida bitta tayinlash operatorini o'z ichiga olishi kerak, bu erda funksiya nomi chap tomonda, qiymati esa o'ng tomonda joylashgan. Funktsiya (): Tasviriy boshlash Funktsiya tanasi:=; Oxiri;

Slayd 15

a:=(3n!+2m!)/(m+n) ifoda qiymatini hisoblang! fn2 dasturi; Usescrt; Var m,n:integer; a: haqiqiy; funktsiya fakt(d:integer) :longint; var i:integer; q: longint; boshlash q:=1; for i:=1 to d do q:=q*i; fakt:=q; oxiri; boshlash clrscr; writeln("n, m qiymatlarini kiriting"); readln(n,m); a:=(3*fakt(n)+2*fakt(m))/fakt(m+n);; writeln("m= ",m:4," va n= ",n:4,"ga teng bo'lgan ifodaning qiymati",a:8:3); readln; oxiri.

Slayd 16

Klaviaturadan kiritilgan A va B butun sonlar va B>0 bo'lgan A sonining ab, ya'ni b darajasi topadigan dastur tuzing. Funksiyani protsedura dasturi pr2 bilan almashtirib, dastur tuzing; Usescrt; Var a,b:integer; c: longint; funksiya stepen(x,y:integer):longint; var i:integer; s: longint; start s:=1; uchun i:=1 to y do s:=s*x; qadam:=s; oxiri; boshlash clrscr; writeln("a, b qiymatlarini kiriting"); readln(a,b); C:=qadam(a,b); writeln("s=",s); readln; oxiri.

Slayd 17

Slayd 18

Funksiyalar va protseduralarga parametrlarni o'tkazish mexanizmi Protsedura nima va dastur orqali nima chop etiladi? Global o'zgaruvchilar Mahalliy o'zgaruvchilar a b 3 3 -3 Manzil c a b c 48 Manzil c A:=b+3 B:=3*a C:=a+b Holat C 24 5 8 Javob berish

Slayd 19

8-sinf. ABC Pascal tilida dasturlash

Uralsk NIS fizika-matematika fani informatika o'qituvchisi Zelenov Boris Aleksandrovich


  • Talabalar muammolarni hal qilish uchun protseduralar va funktsiyalardan foydalanadilar
  • Talabalar katta muammolarni kichikroqlarga bo'lish orqali hal qilishni o'rganadilar

  • Dasturlash tilida protsedura va funksiyalar tushunchasini ishlab chiqish.

  • Talabalar "protseduralar" va "funktsiyalar" tushunchalarini biladilar, rasmiy va haqiqiy parametrlarni aniqlaydilar

Kutilayotgan natijalar - Deskriptorlar:

1. “Protsedura” tushunchasini biladi

2.“Funksiya” tushunchasini biladi.

3.Haqiqiy va rasmiy parametrlarni aniqlaydi

4.Qiymat va o'zgaruvchan parametrlarni farqlaydi

5. Protsedura yoki funksiyaga chaqiruvni topadi dastur kodi



Elvira standart rejasi

1. Qog'ozlarni olib tashlang

2. Gullarga suv quying

3. Stollarni yuving

4. Stakanni artib oling

Algoritmning oxiri

Ushbu jarayonni tashkil qilishni qanday yaxshilash mumkin?




Dars mavzusi

Subprogrammalar:


Ishki bagdarlama

Subprogramma

Jarayon

Jarayon

Parametrlar

Foydali iboralar:

O'zgaruvchan qiymatlarni protseduraga (funktsiyaga) o'tkazish uchun haqiqiy parametrlardan foydalaniladi ...

Jarayonni tasvirlash uchun siz avval..., keyin...


Subprogramma tushunchasi

Ta'rif

Subprogramma- Bu dasturning alohida funktsional mustaqil qismidir.

Subprogrammalar

Protseduralar


  • dastur matnidagi o'xshash fragmentlarni qayta-qayta takrorlash zaruratini bartaraf etish;
  • dastur tuzilishini takomillashtirish, uni tushunishni osonlashtirish;
  • dasturni o'zgartirish vaqtida dasturiy xatolar va kutilmagan oqibatlarga qarshilikni oshirish.

  • Dasturlash tilidan foydalanib panjara chizing

Ushbu vazifada siz bitta bo'lakni (piket panjarasi) chizish algoritmini bajaradigan protsedurani yaratishingiz mumkin, so'ngra ruchkaning dastlabki holatini o'zgartirib, doimiy ravishda ushbu protseduraga murojaat qilishingiz mumkin.


  • Rojdestvo daraxtini dasturlash muhitida qanday qilib samarali tarzda chizishni tasvirlab bering

  • Ular maxsus tarzda ishlab chiqilgan va o'z nomiga ega bo'lgan mustaqil dastur fragmentlari.

Asosiy dastur va kichik dastur o'rtasidagi o'zaro ta'sir



Blok diagrammasi

  • Subprogramma (protsedura yoki funktsiya) chaqiruv bloki

Subprogramma (protsedura yoki funksiya) nomi


Blok diagrammasi


Jarayonning tavsifi quyidagicha:

tartib ism (rasmiy parametrlar ro'yxati); tavsiflar bo'limi boshlanishi operatorlar oxiri ;


Funktsiya tavsifi quyidagicha ko'rinadi:

funktsiyasi nom (rasmiy parametrlar ro'yxati): qaytarish turi;

tavsiflar bo'limi boshlanishi operatorlar oxiri ;


Dasturdagi joylashuv

Dastur ...;

//Ta'rif bo'limi Uses, Const, Var, ...

tartib A ;

boshlanishi ....... oxiri ;

tartib B ;

boshlanishi ........ oxiri ;

Funktsiya C ;

boshlanishi ........ oxiri ;

//Asosiy dastur

boshlanishi ........ oxiri .


  • Funksiyaning protseduradan farqi shundaki, funktsiya tanasini tashkil etuvchi operatorlarni bajarish natijasi har doim bitta qiymat bo'ladi, shuning uchun funktsiyani chaqirish o'zgaruvchilar va konstantalar bilan birga tegishli ifodalarda ishlatilishi mumkin.

Protseduralar

Funksiyalar

Bir nechta natija berishi yoki ba'zi amallarni bajarishi mumkin

Faqat bitta natijaga ega, uning turi funktsiyani e'lon qilishda alohida belgilanadi.

Natijalar har qanday turdagi qiymatlar bo'lishi mumkin - massivlar, satrlar, raqamlar va boshqalar.

Natija faqat real, integer yoki char tipidagi qiymat bo'lishi mumkin.

Protsedurani chaqirish buyrug'i mustaqil ravishda ishlatilishi mumkin bo'lgan alohida buyruqdir

Funktsiya chaqiruvi faqat tegishli turdagi ifoda komponenti sifatida ishlatilishi mumkin.

Funktsiya tanasi chap tomonda funksiya nomiga ega bo'lgan kamida bitta tayinlash operatorini o'z ichiga olishi kerak.


b keyin max:=a boshqa max:=b; Maksimal raqam:= maks; end;" width="640"

Jarayon yoki funktsiya?

MaxNumber(a,b: integer): integer;

var max: integer;

Maksimal raqam:= maks;


b keyin max:=a boshqa max:=b; end;" width="640"

Jarayon yoki funktsiya?

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

agar ab u holda max:=a boshqa max:=b;


Jarayon yoki funktsiya?

Rangni o'zgartirish(C1, C2: Word);

TextBackGround(C2)


Jarayon yoki funktsiya?

Add(X, Y: Integer): Integer;


Haqiqiy

  • Dasturning asosiy qismida ko'rsatilgan

Rasmiy

  • Subprogrammada ko'rsatilgan
  • Subprogrammada ko'rsatilgan

Jarayon quyidagi formatga ega operator tomonidan chaqiriladi:

protsedura nomi (haqiqiy parametrlar ro'yxati);

  • Haqiqiy parametrlar ro'yxati- bu vergul bilan ajratilgan ularning ro'yxati.

  • Paskal tili standartida parametrlar ikki usulda - qiymat bo'yicha va mos yozuvlar bo'yicha uzatilishi mumkin. Qiymat bo'yicha o'tgan parametrlar chaqiriladi parametr-qiymatlar, ma'lumotnoma orqali o'tgan - parametrlar-o'zgaruvchilar. Ikkinchisi protsedura (funktsiya) sarlavhasida ular oldidan var xizmat so'zi bilan farqlanadi.

O'tish parametrlari. Formal parametrlar

O'zgaruvchilar

Qiymatlar

Qiymat bo'yicha parametrlar

Formal parametrlar

O'zgaruvchilar


Formal parametrlar

Qiymat bo'yicha parametrlar

  • Birinchi usulda (qiymat bo'yicha o'tish) haqiqiy parametrlarning qiymatlari mos keladigan rasmiy parametrlarga ko'chiriladi.

Jarayon

Protsedura nomi (a, b: butun son);

Asosiy dastur

Jarayonni (funktsiyani) bajarish paytida ushbu qiymatlarni o'zgartirganda, asl ma'lumotlar (haqiqiy parametrlar) o'zgarmaydi.


Var c, d: butun son;

  • Malumot bo'yicha o'tishda rasmiy parametrlarga ega bo'lgan protsedura (funktsiya) tanasida sodir bo'ladigan barcha o'zgarishlar tegishli haqiqiy parametrlarda darhol o'xshash o'zgarishlarga olib keladi.

Jarayon

Protsedura nomi (a, b: integer, Var c: real);

Asosiy dastur

O'zgarishlar chaqiruvchi blokning o'zgaruvchilari uchun sodir bo'ladi, shuning uchun chiqish parametrlari mos yozuvlar orqali uzatiladi. Chaqirilsa, ularning mos keladigan haqiqiy parametrlari faqat o'zgaruvchilar bo'lishi mumkin.


Siz yozasiz:

1. Haqiqiy parametrlar___________

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

2. Rasmiy parametrlar ___________

3. Rasmiy parametrlar-qiymatlar __________

5. Jarayon nomi ___________

6. Dasturdan protseduraga kirish _____________________


Interaktiv vazifa

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


Elvira sinf rahbari. U sinfda umumiy tozalash rejasini tuzishi kerak: qog'ozlarni olib tashlang, gullarni suv bilan yuving, stollarni yuving, oynani arting. Qanday qilib u o'z ishini yaxshiroq tashkil qilishi mumkin? Elviraga yordam bering.


Elviraning ilg'or rejasi

Subprogrammalar:

Arsen - qog'ozlarni qo'yadi

Mila - gullarni sug'orish

Vitaliy - stollarni yuvadi

Indira - stakanni artish

1. Arsenni qatl qiling

2. Milani yugur

3. Vitaliyni ijro eting

4. Indirani ishga tushiring

Algoritmning oxiri


  • Bugun biz qanday yangi dasturlash tili tuzilmalarini uchratdik?
  • O'rganilgan parametrlarni nomlang
  • Parametrlar protseduraga qanday uzatiladi?

  • Dars xulosasi
  • Ta'riflarni toping: "Mahalliy o'zgaruvchilar" va "Global o'zgaruvchilar"
  • Protseduralar yoki funktsiyalardan foydalanishingiz mumkin bo'lgan ikkita vazifani tuzing.

  • Dars mavzusini qanday aniqlagan bo'lardingiz? (o'z ismingizni o'ylab toping)
  • Sizningcha, keyingi darsda nimani o'rganishingiz kerak?

Keling ko'rishamiz

keyingi dars!

Darsning maqsadi

tarbiyaviy

  • talabalar o'rtasida yagonalikni shakllantirish tushunchalar tizimi protsedura va funksiya tushunchalari bilan bog'liq;
  • Paskalda masalalar yechishda kichik dasturlardan foydalanishni o‘rgatish, shuningdek, ma’lum bir masalani yechishda qanday turdagi kichik dastur kerakligini tushunishga o‘rgatish;
  • pastki dasturlardan foydalanishning asosiy usullarini ko'rsatish;

tarbiyaviy

  • aniqlik, e'tibor, tashkilotchilikni tarbiyalash;
  • hisoblash ko'nikmalari madaniyati;

rivojlanmoqda

  • talabalarning mantiqiy tafakkurini, algoritmik madaniyatini rivojlantirish;
  • Paskalda kichik dasturlarni tuzish va disk raskadrovka qilish bo‘yicha bilim va ko‘nikmalarni shakllantirish.

Talabalar:

  • parametrsiz va parametrli protseduralarni yozish qoidalarini bilish;
  • funksiyalarni yozish qoidalarini bilish;
  • oddiy masalalarni yechish uchun protsedura va funksiyalarni qo‘llay olish.

Darslar davomida

I. Org. moment

II. Kirish. Muvofiqlik

Vazifani qog'oz bo'laklariga bering ( 1-ilova ). Takrorlashlarni toping.

Ba'zan dasturning turli joylarida siz turli xil dastlabki ma'lumotlar bilan deyarli bir xil harakatlar ketma-ketligini bajarishingiz kerak. Bunday harakatlar ketma-ketligi deb ataladigan shaklda rasmiylashtirilishi mumkin pastki dasturlar (ingliz tilidan, pastki dastur) - operatorlarni nomi bilan va qayta-qayta kirish mumkin bo'lgan blokga guruhlash.

Subprogrammalar dastur matnini qisqartiradi, ularning bajarilish vaqtini sezilarli darajada qisqartiradi va modulli tarzda, ya'ni sodda komponentlarning tugallangan qismlaridan murakkab dasturni yig'ish orqali dasturlarni yarata oladigan dasturchilarning hayotini osonlashtiradi. Bu dasturchilar guruhiga yirik dasturlarni yaratishga, maktab o‘quvchilari guruhiga esa har qanday global loyihalarni ishlab chiqish va amalga oshirishga imkon beradi.

Subprogrammalar protsedura va funksiyalarga bo'linadi.

O'rnatilgan (standart) protseduralar va funktsiyalar mavjud qismi til va nomi bilan chaqirish mumkin oldindan tavsifisiz. Masalan , abs, sqrt, ln, sin... funksiyalar (natijani qaytarish), readln, write... protseduralar (natijani qaytarmaslik). Ularning mavjudligi amaliy dasturlarni ishlab chiqishni sezilarli darajada osonlashtiradi. Biroq, aksariyat hollarda ba'zilari xos ma'lum bir dastur uchun harakatlar Turbo Paskal kutubxonalarida to'g'ridan-to'g'ri o'xshashlarni topa olmaydi, shundan so'ng dasturchi o'z dasturini ishlab chiqishi kerak. nostandart protseduralar va funktsiyalar.

III. Yangi materialni tushuntirish

Foydalanuvchi protseduralari yozilgan o'zimiz til sintaksisiga muvofiq dasturchi pastki dastur tavsifi bo'limi.

Jarayonning tuzilishi dastur tuzilishiga mos keladi, bu "miniatyuradagi dastur" - u sarlavha va korpus bilan ham ifodalanadi.

Sarlavha zahiralangan so'z protsedurasidan, identifikatordan iborat (ism) protseduralar.

VAR ... // asosiy dasturning o'zgaruvchilarini tavsiflash bo'limi

protsedura ProcedureName;

//asosiy dasturning tanasi

Keyinchalik bajarish uchun protsedura chaqiruvi qayd etiladi asosiy dasturning tanasida.

1-misol. Maydon va perimetr hisoblash uchun dastur.

Subprogrammalarning afzalliklari:

  • Subprogrammalar yordamida yozilgan dasturlar sinash va disk raskadrovka qilish osonroq; ularda aniqroq bor mantiqiy tuzilish.
  • Subprogrammalarning mustaqilligi ularni yaratishni turli dasturchilarga ishonib topshirish imkonini beradi. Shunday qilib, dasturlash ishlari bo'linadi va shuning uchun uning bajarilishi tezlashadi;
  • Subprogrammalardan foydalanish xotirani tejaydi. Subprogrammada qo'llaniladigan o'zgaruvchilarni saqlash uchun xotira faqat uning ishlash muddati uchun ajratiladi va uning bajarilishi tugashi bilanoq chiqariladi.

2-misol. Foydalanuvchi uchta to'rtburchakning ikki tomonini kiritadi. Ularning hududlarini aniqlang.

Muammoni shunday hal qilishingiz mumkin:

i uchun:=1 dan 3 gacha

writeln('A va b kiriting:');

writeln(‘Maydon=’,a*b);

Jarayonlardan foydalanish yaxshi dasturlash uslubi deb hisoblanadi. To'rtburchakning maydonini hisoblaydigan protsedura kerak. Asosiy dastur sxematik tarzda qanday ko'rinishga ega bo'ladi:

hisoblash

hisoblash

hisoblash

Matn protsedurasi allaqachon mavjud (1-misolga qarang). Maydonni hisoblaydigan ikkinchi protsedura yarataylik. Ammo S ni hisoblash uchun siz 2 tomonni bilishingiz kerak, shuning uchun protsedura qaysi tomonlarni ko'paytirish kerakligini ko'rsatishi kerak.

protsedura pl (c,d: butun son);

writeln(‘tomonlari bo‘lgan to‘rtburchakning maydoni’,c, ‘‘ ,d, ‘=‘,S);

Parametr - bu qiymat tayinlangan o'zgaruvchidir. Mavjud rasmiy parametrlar , pastki dastur sarlavhasida belgilangan va haqiqiy parametrlar - pastki dasturga kirishda ma'lum qiymatlarni belgilaydigan iboralar.

Agar siz uni nomi bilan chaqirsangiz va haqiqiy parametrlarni ko'rsatsangiz, protsedura bajariladi , vergul bilan ajratiladi va qavs ichiga olinadi:

Haqiqiy parametrlar turi va miqdori bo'yicha rasmiy parametrlarga mos kelishi kerak.

Shunday qilib, asosiy dastur:

i uchun:=1 dan 3 gacha

Izoh. Ushbu muammoni hal qilishda foydalanuvchi tomonidan kiritilgan raqamlarni tekshirish kerak (ular manfiy bo'lmasligi kerak, aks holda dastur to'xtatiladi).

Keling, tekshirish tartibini yarataylik:

protsedura xatosi (f,g:integer);

agar (f<0) or (g<0) then begin

writeln('to'rtburchakning tomonlari manfiy bo'lishi mumkin emas');

to'xtash; // dasturning uzilishi

Yakuniy dastur - 4-ilova

Shunday qilib, protsedura formati:

Jarayon<имя>(rasmiy parametrlar);

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

3-misol. Ikkita c=5 va d=7 sonlarning joylarini almashtirish dasturini tuzing.

dastur almashinuviDan;

var c,d:integer;

protsedura almashinuvi (a,b:integer);

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

writeln("2 ta raqam kiriting:");

writeln(c," ",d);

Dasturni ishga tushirgandan so'ng, rasmiy parametrlar (protsedurada) o'rinlarni o'zgartirganligini, lekin haqiqiy (asosiy dasturda qo'llaniladigan) o'zgarmaganligini ko'rishingiz mumkin. RAMning bir qismini ko'rsatadigan rasmga qaraylik:

1) 5 va 7 ikkita parametrli obmen protsedurasini chaqirganda, a va b o'zgaruvchilarga 5 va 7 raqamlari ham joylashtiriladi:

3) lekin c va d o'zgaruvchilarda ma'lumotlar o'zgarmagan, chunki ular boshqa xotira hujayralarida joylashgan.

c va d, a va b o'zgaruvchilar uchun bir xil xotira kataklariga havola qilingan (a va b qiymatlari o'zgarsa, c, d qiymatlari ham o'zgaradi) rasmiy parametrlarni tavsiflashda kerakli o'zgaruvchilardan oldin VAR so'zini qo'shish kerak:

protsedura almashinuvi (var a,b:integer);

ObmenDan dasturini o'zgartiring:

Var tufayli xato. Raqamlar - protsedurada o'zgartirib bo'lmaydigan doimiylar.

4-misol. Faqat hisoblab chiqadigan, lekin natijani ekranda ko'rsatmaydigan protsedura yordamida aylananing maydonini toping.

protsedura doirasi(r:real);

Jarayon natijani qaytarishi kerak:

protsedura doirasi (r:real; var S:real);

readln(a, e);

Izoh: S protsedurasidagi o'zgaruvchi protsedura natijalarini asosiy dasturga qaytarish uchun ishlatiladi. U o'zgarganda, chaqiruvchi dasturdagi haqiqiy parametr ham o'zgaradi, ya'ni. o'zgaruvchan e.

Ko'pincha, buning uchun Paskalda protseduralar o'rniga funktsiyalar (biror narsani qaytaradigan kichik dasturlar) ishlatiladi.

Funktsiya protseduraga o'xshaydi, lekin ikkita farq bor.

  • Funktsiya o'z ishining natijasini dasturga uzatadi - yagona qiymat, uning tashuvchisi uning funktsiyasining nomi.
  • Funksiya nomi ifodada operand sifatida paydo bo'lishi mumkin. Funktsiya natijani chaqiruv nuqtasiga qaytaradi.

Masalan, sqr(x) – x qiymatini kvadratga aylantiradi va x soni kvadratining hisoblangan qiymatini chaqiruv nuqtasiga qaytaradi: y:=sqr(x);

Foydalanuvchi tomonidan belgilangan funksiya funksiya sarlavhasi va funksiya tanasidan iborat. Funksiya tanasi tuzilish jihatidan dasturga o'xshaydi. Belgilar, konstantalar, turlar va boshqalar tavsifi. faqat ushbu protsedura doirasida amal qiladi.

Funktsiya<имя>(rasmiy parametrlar):<тип результата>;

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

Bayonot qismida funktsiya nomiga qiymat beradigan kamida bitta bayonot bo'lishi kerak. Oxirgi topshiriqning natijasi chaqiruv nuqtasiga qaytariladi.

5-misol. Keling, aylana maydoni haqidagi muammoni qayta ishlaymiz.

funktsiya doirasi (r:real): real;

a:=doira(5); (Tayinlash kerak)

6-misol. 1!+2!+…+n ni toping!

Faktorialni topish funksiyasidan foydalanamiz, chunki biz uni kirish sifatida beramiz va natijani olamiz.

funktsiya fakti (a:integer): integer;

i:=1 qilish uchun

Fakt:=fakt*I qatorida;

kompilyator xato topadi, chunki fakt parametrlar bilan chaqirilishi kerak. Shuning uchun, odatda, natija joylashtirilgan qo'shimcha o'zgaruvchi kiritiladi. Va keyin bu natija fakt o'zgaruvchisiga tayinlanadi:

dastur faktorial;

var sum,n,j: integer;

funktsiya fakti (a: integer): integer;

var i,d: integer;

i:=1 qilish uchun

j:=1 uchun n qilish

summa:=sum+fakt(j);

IV. Dars xulosasi

Bu vaqtda dasturlash jarayoniga aylanadi sanoat dasturiy ta'minot ishlab chiqarish asosida dasturlash texnologiyalari. Aksariyat mutaxassislar shunday fikrda yuqoridan pastga dasturni loyihalash usuli murakkab muammolarni hal qilish uchun eng mos keladi. Birinchidan, vazifa umumiy ma'noda aniqlanadi, keyin uning tuzilishi asta-sekin aniqlashtiriladi. Keyingi bosqichda har bir kichik vazifa, o'z navbatida, boshqa bir qatorga bo'linadi. Murakkab masalaning alohida fragmentining yechimi mustaqil dastur bloki - kichik dastur hisoblanadi.

V. Uyga vazifa

Muammolarni hal qilish (yozma):

  1. Kiritilgan satrdagi barcha a harflarini * bilan almashtiradigan protsedura yarating.
  2. Ikkita taklif beriladi. Ulardagi “n” harflarining umumiy sonini toping. (Gapdagi “n” harflar sonini hisoblash funksiyasini aniqlang.)