Amaliy ish №1. Dasturlash texnologiyasi Dasturlash paradigmasi


Ichki dastur matnining tuzilishi


Download 294.22 Kb.
bet3/3
Sana14.10.2023
Hajmi294.22 Kb.
#1703553
1   2   3
Bog'liq
Amaliy ishi 1. Paradigma

Ichki dastur matnining tuzilishi

Subroutine matn qismlarga bo'linadi. Birinchi bo'lim - subroutine sarlavhasi. Qolgan bo'limlar blokdan iborat. Blok tushunchasi dastur matni tarkibida aniqlangan va 6 bo'limni o'z ichiga oladi:


- teglar bo'limi;
- nomlangan doimiylar bo'limi;
- nostandart turdagi bo'lim;
- o'zgaruvchilar bo'limi;
- kichik dasturlar matnlari bo'limi;
- operatorlar bo'limi.
Shunday qilib, kichik dastur matnining tuzilishi asosan dastur matni bilan mos keladi. Bundan tashqari
- - pastki dasturda ishlatilgan modullar bo'limi yo'q,
Namunaviy masala
Quyidagi

formula yordamida xn kattalikni hisoblovchi Daraja(x,n) rekursiv funksiya tuzilsin. Bu yerda x (x0) haqiqiy, n-butun son.


Yechish usuli
Berilgan haqiqiy x sonining butun n-darajasini (xn) hisoblash uchun xn-1 darajasini hisoblash zarur bo‘ladi. O‘z navbatida xn-1 hisoblash uchun xn-2 hisoblash zarur bo‘ladi va hokazo. Jarayon n=0 bo‘lganda to‘xtaydi. Bu yerda darajani hisoblash funksiyasi aniqlanishida o‘ziga murojaat qiladi (faqat boshqa argument bilan). Shunga mos ravishda rekursiyani o‘zida ifodalovchi daraja() rekursiv funksiyasi tuziladi.


Programma matni
double daraja(double x,int n)
{
if (!n) return 1;
else if(n>0)return x*daraja(x,n-1);
else return daraja(x,n+1)/x;
}
int main()
{
double x;
int n;
cout<<”x=”; cin>>x;
cout<<”n=”; cin>>n;
cout<<”x^n=”<return 0;
}
Variantlar


formula bo‘yicha binom koeffisentini hisoblaydigan C(n,m) rekursiv funksiya tuzilsin, bunda 0  m  n.


const int n40;
float x[n];
Berilgan x vektorning k va oxirgi o‘rindagi elementlari orasidagi eng kichik elementni topadigan min1(k) yordamchi rekursiv funksiya qurilib, uning yordamida x vektorining eng kichik elementini topadigan min(x) funksiyasi tuzilsin.


char satr[100];
Berilgan satr satrning i-elementidan boshlanib, j-elementida tugaydigan qismini simmetrikligini tekshiradigan rekursiv mantiqiy simm(s,i,j) funksiya tuzilsin.


enum Ism(Sayyora,...,Erkin,null);
Berilgan b ismli odam a ismli odamning avlodi (bolasi, nevarasi, chevarasi va hokazo) bo‘lishligini tekshiradigan avlod(a,b) mantiqiy funksiyasi tuzilsin. Masalani yechishda oldindan tuzilgan ona(x) va ota(x) funksiyalaridan foydalaning. Bunda ona(x) va ota(x) funksiyalari x ismli odamni mos ravishda onasi va otasining ismini, agar x ga mos keluvchi ota-ona to‘g‘risida ma'lumot bo‘lmasa, yo‘q (null) qiymatini qabul qiladi.


Agarda BolalarSoni(x) funksiyasi x ismli odamning farzandlar sonini, Bola(x,k) funksiyasi esa, x ismli odamning k-farzandining ismini bildirsa (bu yerda k - x odamning farzandlar sonidan oshmasligi kerak), ushbu funksiyalar yordamida yuqorida keltirilgan masala (4-masala) yechilsin.


Kesmani teng ikkiga bo‘lish usuli yordamida f(x)0 tenglamani [a,b] oraliqda eps aniqligidagi ildizini topadigan root(f,a,b,eps) rekursiv funksiyasi tuzilsin. (eps>0,a


O‘qish faylida manfiy son bilan tugaydigan, bo‘sh bo‘lmagan musbat haqiqiy sonlar ketma-ketligi berilgan. Musbat sonlar yig‘indisini hisoblaydigan parametrsiz sum() rekursiv funksiya tuzilsin.


Matndagi (oxiri nuqta bilan tugagan) raqamlar sonini hisoblaydigan parametrsiz digits() rekursiv funksiya tuzilsin.


O‘qish faylida oxiri nuqta bilan tugaydigan matn berilgan. Bu matnni teskari tartibda chop qiladigan teskari() funksiya tuzilsin.


Nol bilan tugaydigan butun sonlar ketma-ketligi berilgan. Birinchi navbatda ketma-ketlikning barcha manfiy sonlari, so‘ngra musbat sonlar chop qilinsin (ixtiyoriy tartibda).


O‘qish faylida nuqta bilan tugaydigan matn berilgan. Uning formula ekanligi quyidagi qoidalar asosida tekshirilsin:
::=|()
::= +| – | *
::=0|1|2|3|4|5|6|7|8|9


O‘qish faylida quyidagi ko‘rinishda mantiqiy ifoda xatosiz yozilgan.
::= true│false│()
::=!│&&│||
::= ,
::=
(&& va || amallarida operandlar soni ixtiyoriy bo‘lishi mumkin, ! amalida esa faqat bitta. Bu ifodaning qiymati hisoblansin. (Masalan, &&(||(false,!(false)), true, !(true))false.)


O‘qish faylidan nuqta bilan tugaydigan matn o‘qilsin. Uning tuzilishi quyidagi qoidani qanoatlantirishi tekshirilsin.
::= |
::= a|b|( |[]|{}




Amallar ketma-ketligini chop etadigan (“xalqa q dan r ga o‘tkazilsin” ko‘rinishida, bunda q va r – ’A’, ’B’ yoki ’C’) masalani n ta xalqa uchun yechadigan programma tuzilsin. (ko‘rsatma: xalqalarni A dan С ga to‘g‘ri o‘tkazishda b), d) rasmlardagidek ko‘rinish uchraydi).




5 ta har xil natural son berilgan. Bu sonlarni barcha o‘rin almashish holatlari chop qilinsin.


Shaxmat taxtachasida 8 ta farzin shunday joylashtirilgan-ki, ular bir-birini “urmaydi“. Barcha shunday holatlar (92 ta) chop etilsin.


Berilgan nomanfiy n va m butun sonlar uchun A(n,m) funksiya qiymati hisoblansin.



Butun n va n ta har xil elementdan iborat bo‘lgan haqiqiy turdagi vektor berilgan. Quyidagi tez tartiblash usuli yordamida massiv elementlari o‘sish tartibida joylashtirilsin: massivning ixtiyoriy elementini tanlab, (masalan o‘rtadagisini) shu elementning chap tomonida shu elementdan kichik, o‘ng tomonda esa katta elementlari joylashtiriladi. (Bu bilan tanlangan element o‘zining oxirgi joyiga kiradi), keyin shu usul massivning chap va o‘ng qismi uchun rekursiv qo‘llaniladi.


1 dan n gacha nomerlangan n ta aholi punkti mavjud. Ayrim punktlar o‘zaro yo‘llar bilan tutashgan. Bu yo‘llar yordamida 1-punktdan n-punktga borish mumkin yoki yo‘qligini aniqlansin. Yo‘llar haqidagi ma’lumot i va j (i

Download 294.22 Kb.

Do'stlaringiz bilan baham:
1   2   3




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling