Strukturali dasturlash
![Strukturali dasturlash
Reja :
I. Kirish.
II. Asosiy qism:
a. Strukturaviy dasturlash.
b. Strukturaviy dasturlash qoidalari.
c. Strukturaviy dasturlash printsiplari.
d. Strukturaviy dasturlashdan foydalanish.
III. Foydalanilgan adabiyotlar](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_1.png)
![Kirish
Fayllar va ma'lumotlar bazalari ma'lumotlari bilan ishlashda ko'pincha
ma'lumotlarning katta qismini bir bo'lakda qayta ishlash qulay bo'ladi, masalan,
mijoz faylidagi butun mijoz yozuvi. Buning uchun yaxshi vosita tuzilma
kontseptsiyasidir. Struktura - bu qandaydir tarzda vositachi aloqaga ega bo'lgan
ma'lumotlar to'plami.
Struktura bilan bog'liq holda ko'rsatkichlar va ko'rsatkich arifmetikasidan
foydalanamiz. Strukturalar ob'ektga yo'naltirilgan dasturlash doirasidagi sinflar
uchun oldingi holatdir. Shuning uchun, ushbu mavzu ob'ektga yo'naltirilgan
dasturlashning keyingi bosqichiga ko'prikdir.
Ushbu mavzuda biz strukturani aniqlash, strukturada saqlanadigan
ma'lumotlar bilan ishlash, struktura massivlari va struktura bilan bog'liq holda
fayllar bilan ishlashni ko’ramiz. Shuningdek, strukturaga ko‘rsatgichlardan
foydalanish, strukturalarni funksiyaga yuborish va strukturalarni dinamik
xotirada saqlashni ham ko’ramiz.](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_2.png)
![Strukturaviy dasturlash
Strukturaviy dasturlashda biz dasturni tushunish oson bo'lishi uchun butun
dasturni kichik modullarga ajratamiz. Strukturaviy dasturlashning maqsadi -
bajarilish ketma-ketligi kod yozilgan ketma-ketlikka rioya qilish uchun
kompyuter dasturi orqali boshqarish oqimini chiziqli qilishdir. Dasturning
dinamik tuzilishi dasturning statik tuzilishiga o'xshaydi. Bu dasturni o'qish,
sinovdan o'tkazish va o'zgartirish imkoniyatini oshiradi. Ushbu chiziqli
boshqaruv oqimi ruxsat etilgan ilovalar konstruktsiyasini bitta kirish, bitta
chiqish formatlari bilan cheklash orqali boshqarilishi mumkin.
Ism, manzil, telefon, elektron pochta, chegirma profili, yetkazib berish
shartlari, to'lov shartlari va boshqalarni o'z ichiga olgan mijoz faylidagi mijoz
yozuvini o'ylab ko'ring. Bu ma'lumotlarning barchasi har bir mijoz uchun mijoz
faylida saqlanadi.
Ushbu ma'lumotni fayl yoki ma'lumotlar bazasiga o'qish, qayta ishlash va
saqlashda mijoz uchun barcha ma'lumotlarni bir xilda boshqarish imkoniyatiga
ega bo'lish qulay. Keyin u dastur kodini yaxshiroq tashkil qilishni
ta'minlaydigan tuzilmaga yig'iladi.
Tuzilish har bir mijoz uchun barcha ma'lumotlar uchun shablonga
o'xshaydi. Struktura kodda int, double yoki char kabi ma'lumotlar turi kabi
ishlaydi. Siz aniqlangan struktura turidagi o'zgaruvchini e'lon qilasiz. Tuzilish
o'zgaruvchisida siz ma'lum bir mijoz uchun barcha ma'lumotlarni saqlashingiz
mumkin.
Shuningdek, siz har bir massiv elementi har bir mijoz uchun barcha
ma'lumotlarga ega bo'lgan tuzilma bo'lgan struktura elementlari qatorini
yaratishingiz mumkin. Shunday qilib, massiv barcha mijozlar uchun barcha
ma'lumotlarni o'z ichiga oladi.](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_3.png)
![Strukturaviy dasturlash qoidalar
Strukturaviy birinchi qoida: kod bloki
Agar kirish shartlari to'g'ri bo'lsa, lekin chiqish shartlari noto'g'ri bo'lsa, xato
blokda bo'lishi kerak. Agar ijro blokga o'tishga ruxsat berilsa, bu to'g'ri
emas. Xato dasturning istalgan joyida bo'lishi mumkin. Bunday sharoitda disk
raskadrovka qilish ancha qiyin.
Strukturaviy dasturlashning 1-qoidasi: Kod bloki rasmda ko'rsatilganidek
tuzilgan. Oqim diagrammasi sharoitida bitta kirish nuqtasi va bitta chiqish
nuqtasi bo'lgan quti tuzilgan. Strukturaviy dasturlash - bu dasturning to'g'ri
ekanligini ko'rsatish usuli.
Strukturaning ikkinchi qoidasi: ketma-ketlik
Har bir blokning chiqish shartlari keyingi blokning kirish shartlariga mos kelsa ,
bloklar ketma - ketligi to ' g ' ri bo ' ladi . Bajarish har bir blokga blokning kirish
nuqtasida kiradi va blokdan chiqish nuqtasi orqali chiqib ketadi. Butun seriyani
kirish va chiqish nuqtasi bo'lgan yagona blok sifatida ko'rish mumkin.](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_4.png)
![Strukturaviy dasturlashning 2-qoidasi: ketma-ketlikdagi ikki yoki undan
ortiq kod bloklari rasmda ko'rsatilganidek tuzilgan.
Strukturaviy qoida uchinchi: almashinish
If-then-else ko'pincha almashtirish deb ataladi (chunki muqobil variantlar
mavjud). Strukturaviy dasturlashda har bir tanlov kod blokidir. Agar
almashinish o'ngdagi sxemadagi kabi tashkil etilgan bo'lsa, unda bitta kirish
nuqtasi (yuqorida) va bitta chiqish nuqtasi (pastki qismida) mavjud. Tuzilish
shunday kodlangan bo'lishi kerakki, agar kirish shartlari bajarilsa, chiqish
shartlari qondiriladi (xuddi kod bloki kabi).
Strukturaviy dasturlashning 3-qoidasi: Ikki kod blokining almashinishi
rasmda ko'rsatilganidek tuzilgan.
Muqobil usul uchun kirish shartiga misol: $8 ro'yxati imzolangan butun sonni
o'z ichiga oladi. Chiqish sharti bo'lishi mumkin: ro'yxatdan o'tish $8 imzolangan](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_5.png)
![raqamning mutlaq qiymatini o'z ichiga oladi. Filial tuzilishi chiqish shartini
bajarish uchun ishlatiladi.
Strukturaviy qoida 4: Takrorlash
Iteratsiya (while-loop) o'ng tomonda tashkil etilgan. Bundan tashqari, bitta
kirish va bitta chiqish nuqtasi mavjud. Kirish nuqtasida bajarilishi kerak bo'lgan
shartlar mavjud va chiqish nuqtasida bajariladigan talablar mavjud. Kodning
tashqi nuqtalaridan shaklga o'tishlar yo'q.
Strukturaviy dasturlashning 4-qoidasi: Kod blokining iteratsiyasi rasmda
ko'rsatilganidek tuzilgan.](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_6.png)
![Strukturaviy qoida 5: ichki o'rnatilgan tuzilmalar
Oqim diagrammasi sharoitida har qanday kod bloki istalgan strukturaga
tarqalishi mumkin . Agar oqim sxemasining bitta kirish nuqtasi va bitta chiqish
nuqtasi bo'lgan qismi mavjud bo'lsa, uni bitta kod bloki sifatida umumlashtirish
mumkin.
Strukturaviy dasturlashning 5-qoidasi: Bitta kirish nuqtasi va bitta chiqish
nuqtasi bo'lgan struktura (har qanday o'lchamdagi) kod blokiga tengdir. Misol
uchun, biz har birining mutlaq qiymatini hisoblaydigan imzolangan butun sonlar
ro'yxatidan o'tish uchun dastur ishlab chiqmoqdamiz. Biz (1) avval dasturni
bitta blok sifatida ko'rib chiqamiz, so'ngra (2) kerakli iteratsiyada eskiz qilamiz
va nihoyat (3) rasmda ko'rsatilganidek, halqa tanasining tafsilotlarini kiritamiz.](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_7.png)
![Boshqa boshqaruv tuzilmalari case, do-until, do-while va for kerak emas. Biroq,
ular ba'zan qulay va odatda tuzilgan dasturlashning bir qismi sifatida
qaraladi. Assambleya tilida ular ozgina qulaylik qo'shadi.
Strukturaviy dasturlashning printsiplari
Ko'rib turganimizdek, tuzilgan dasturlash har qanday dasturlash tillarining
muhim jihati hisoblanadi. U asosan dasturimizni chiziqli tuzilish ko'rinishida
qiladi, unda dastur bayonining bajarilishi dasturning boshidan boshlanadi,
so'ngra u dastur bo'ylab chiziqli ravishda o'tadi va ketma-ketlikda buyruqni
birma-bir bajaradi. Bunday xususiyat har bir dasturlash tillarida samarali
ishtirok etish imkonini beradi. Agar tillarning har biri shunday jihatga ega
bo'lsa, uni bajarish juda oson bo'ladi.
Shunday qilib, tizimli dasturlashning asosiy printsipi kompyuter dasturi orqali
boshqarish oqimini chiziqli qilishdir, shunda bajarilish ketma-ketligi kod](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_8.png)
![yozilgan ketma-ketlikda bo'ladi. Ushbu muhim tamoyil quyidagi xususiyatlarni
aniq ko'rsatadi:
Faqat bitta kirish va chiqishdan foydalanish kerak.
Konstruktsiyalar ketma-ketligini tanlash va takrorlashning hech biri uchta
qutidan iborat emas.
Agar biz uchta konstruksiyadan birini (yuqorida muhokama qilingan)
ulardan foydalanilganda tasavvur qilsak, uchinchi xususiyat aniq bo'ladi.
Kirish boshlanish, chiqish esa oxirida.
Shunday qilib, ushbu printsip kodning o'qilishini oshiradi, bu esa testlarni
tuzatish hujjatlarini va dasturlarni o'zgartirishni tushunishni osonlashtiradi.
Ushbu asosiy maqsadni asosiy printsipimiz sifatida o'z ichiga olgan holda,
tuzilgan dasturlash uchun qo'llaniladigan yana bir qancha printsiplar mavjud:
Standartlashtirish
Abstraktsiya
Ekspressiv kuch
Ortogonallik
Minimallik
(a) Standartlashtirish: Har doim bir xil tashqi interfeysga ega bo'lgan dasturiy
ta'minot shakli komponentlarini yaratish maqsadga muvofiqdir. Oddiy bo'yalgan
yuz boshida bitta kirish nuqtasi va oxirida bitta chiqish nuqtasidan iborat. Bu
ketma-ket dasturlashning mohiyatiga mos keladigan mavjudotlarning kuchiga
ega. Shuningdek, u protsedurani chaqirish haqidagi muhim g'oyaga ham mos
keladi. Biz protsedurani chaqirish g'oyasini ketma-ket bosqich deb hisoblaymiz
va undan navbatdagi ko'rsatmaga ketma-ket qaytish.
Yakuniy xususiyatdagi boshlang'ich bitta chiqishda bir xil bitta kirishga ega
bo'lgan boshqa konstruktsiyalar if then else va while do hisoblanadi.](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_9.png)
![(b) Abreaktsiya: Abstraktsiya, ehtimol, tuzilgan dasturlashdagi eng muhim
g'oyadir. Inson ongi butun murakkab tizimni tuza olmaydi yoki tushuna
olmaydi. U faqat tizimning bir qismini tushunishi mumkin. Ammo bu butun
tizimni tushunish uchun zarur va zarurdir. Shunday qilib, bunday muammoni
hal qilish uchun abstraktsiya qo'llaniladi. Abstraksiyada tizim quyi tizimlarni
vazifasi oson tushuniladigan, ammo tafsilotlari ko'rinmaydigan qora qutilar
sifatida ko'rishga imkon beruvchi belgida tasvirlanishi kerak. Dasturlashda
protsedura uzoq vaqtdan beri ushbu rolni bajaradigan mexanizm bo'lib kelgan.
(c) Ekspressiv kuch : o‘tish gapi juda kam ifodali kuchga ega, chunki bir o‘tish
gapi 3-4 turdagi ma’noga ega bo‘lishi mumkin. Shuning uchun biz takrorlash
uchun ba'zi mexanizmlarni talab qilamiz va bu imkoniyatni ta'minlash uchun
vaqtinchalik bayonot yoki rekursiya etarli. Ko'pgina tillarda ham while, ham do
while iboralari mavjud. ko'pchilik tillar ham rekursiyani qo'llab-quvvatlaydi.
(d) Ortogonallik : Majmuiy ob'ektlarni loyihalashda yaxshi dizayn printsipi har
biri imkon qadar bir-biridan farq qiladigan xususiyatlarni yaratishdir. Agar
shunday bo'lsa, biz minimal miqdordagi funktsiyalar maqsadini osonroq
qondirishimiz mumkin va shu bilan birga ob'ektlar bizning barcha ehtiyojlarimiz
uchun etarlicha kuchli bo'lishini ta'minlay olamiz.
(e) Minimallik : Minimallik printsipi bizning haddan tashqari ko'p ob'ektlarni
kiritish tendentsiyasini cheklaganida. Shunday qilib, minimallik
kontseptsiyasiga amal qilish uchun Boem Jacopini tomonidan berilgan uchta
konstruktsiya tuzilgan dasturni ishlab chiqish uchun etarli
konstruksiyadir. Boshqa boshqaruv tuzilmalari mavjud bo'lib, ularda faqat uchta
yoki undan kam qutilar mavjud, ammo ular orasidan ushbu uchta
konstruktsiyalar to'plami minimal to'plamdir](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_10.png)
![Strukturaviy dasturdan foydalanish
Endi tuzilmalar yordamida butun dasturni yaratamiz. Biz oldingi misolga
ko'ra mahsulot tuzilishini va mahsulot ma'lumotlariga ega ikkita tuzilma
o'zgaruvchisini yaratamiz. Ulardan biri to'g'ridan-to'g'ri deklaratsiyada
boshlanishi kerak, ikkinchisi esa foydalanuvchi ma'lumotlari bilan ta'minlanishi
kerak. Nihoyat, dastur mahsulotlar jadvalini chop etishi kerak.
Biz JSP grafigidan boshlaymiz:
Mantiq oddiy. Eng qiyin vazifa strukturani tog’ri bajarishdir. Bu yerda kodi:
#include
<iostream.h>
struct Prod
{
char cName[20];
int iId;
double
dPrice;
int iNo;
char cSupp[25];
};
void main()
{
// Prod Prod prodOne = {"Olive Oil", 1001, 120.50, 250, tipidagi o'zgaruvchini
e'lon qilish va ishga tushirish](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_11.png)
!["Frescati Oil S/A"};
// Yangi Prod o'zgaruvchisini e'lon qilish Prod prodTwo;
// Foydalanuvchiga mahsulot haqida ma'lumot so'rash
cout << "Mahsulot uchun ma'lumotlarni kiriting:" << endl; cout << "Mahsulot
nomidan boshlang: "; cin.getline(prodTwo.cName, 20);
cout << "Mahsulot identifikatori: "; cin >> prodTwo.iId;
cout << "Narxi:"; cin >> prodTwo.dPrice;
cout << "Stokda nechta mahsulot bor?"; cin >> prodTwo.iNo;
cin.get(); // yangi satrdan buferni tozalash char cout << "Mahsulotni kim
yetkazib beradi: "; cin.getline(prodTwo.cSupp, 25);
cout <<"Mahsulot nomi \tMahsulot identifikatori \tNarx \tMiqdori
\tSupplier" << endl; // \t bilan tab
cout << prodOne.cName << '\t' << prodOne.iId
<< "\t\t" << prodOne.dPrice << '\t' << prodOne.iNo << '\t' << prodOne.cSupp
<< endl << endl;
cout << prodTwo.cName << '\t' << prodTwo.iId << "\t\t" << prodTwo.dPrice
<< '\t' << prodTwo.iNo << '\t' << prodTwo .cSupp << endl << endl;
}
Strukturaning ta'rifi main() dan oldin bo'lib, uni butun dastur uchun,
shuningdek, funktsiyalar ichida ham amal qiladi. Tuzilmani main() ichida ham
belgilashingiz mumkin, lekin u faqat main() da amal qiladi, boshqa
funksiyalarda emas.
Birinchi tuzilma o'zgaruvchisi prodOne to'g'ridan-to'g'ri deklaratsiyadagi
qiymatlar bilan boshlanadi. Keyin bir qator sarlavha matnlari va ikkinchi](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_12.png)
![tuzilma o'zgaruvchisining struktura a'zolariga qiymatlarni kiritish mavjud.
E'tibor bering, biz struktura o'zgaruvchisi va a'zo o'rtasidagi nuqtadan
foydalanamiz.
Chiqish yorliqlar yordamida amalga oshiriladi \t. Ma'lumot to'g'ri ustunda
chop etilishi uchun kiritilgan matnlarning uzunligini moslashtirishingiz kerak
bo'lishi mumkin. Biz buni 1-bobdagi matn formatlash funksiyalari orqali yanada
moslashuvchan qilishimiz mumkin edi, ammo soddalik uchun biz qo'pol
usuldan foydalandik.
Struktura o'zgaruvchilari bilan massiv
Oldingi dasturning kamchiligi shundaki, har bir mahsulot uchun alohida
tuzilma o'zgaruvchisi (prodOne, prodTwo) kerak edi. Tuzilish o'zgaruvchilari
bilan massivdan foydalanish qulayroq yechim bo'lib, struktura o'zgaruvchilarini
bir xilda qayta ishlash uchun tsikldan foydalanishga imkon beradi.
Quyida biz uchta elementdan iborat Prod tipidagi sProds struktura
massivini e'lon qilamiz:
Prod sProds[3];
Biz uchta mahsulot uchun xotira maydoni ajratdik, lekin tuzilma
a'zolariga hali qiymatlarni belgilamadik. Bu to'g'ridan-to'g'ri deklaratsiyada
amalga oshirilishi mumkin:
Mahsulot sProds[3] = {
{"Oziq-ovqat moyi", 101, 12.50, 100, "Felix Ltd"},
{"Baby Oil", 102, 23.75, 25, "Baby Prod"},
{"Qozon moyi", 103, 6100, 123000, "Shell"},
};](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_13.png)
![E'tibor bering, har bir tuzilma o'zgaruvchisi uchun qiymatlar jingalak
qavslar bilan o'ralgan va qiymatlar har bir jingalak qavs ichida odatiy tarzda
sanab o'tilgan. Barcha uch juft qavslar qiymatlarning boshlang'ich ro'yxatini
chegaralovchi qo'shimcha jingalak qavslar bilan o'ralgan. Oxirgi qavsdan keyin
nuqta-vergul qo'yilishi kerak.
Agar siz foydalanuvchiga qiymatlarni kiritishiga ruxsat bermoqchi
bo'lsangiz, bu odatda tsiklda amalga oshiriladi:
for (int i=0; i<3; i++)
{
cout << "Mahsulot raqami uchun qiymatlarni kiriting." << i+1 << endl;
cout << "Mahsulot nomidan boshlang: "; cin.getline(sProds[i].cName, 20);
cout << "Mahsulot identifikatori: ";
cin >> sProds[i].iId;
cout << "Narxi:"; cin >> sProds[i].dPrice;
cout << "Qancha zaxirada?"; cin >> sProds[i].iNo;
cin.get(); //bufer ichidagi yangi qatorni tozalash char cout << "Mahsulotni kim
yetkazib beradi: "; cin.getline(sProds[i].cSupp, 25);
}
Strukturaga ko'rsatgich
Siz boshqa ma'lumotlar turlariga ko'rsatgichlarni e'lon qilgandek tuzilmalarga
ko'rsatgichlarni e'lon qilishingiz mumkin:
Mahsulot *pProd;](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_14.png)
![Buning o'rniga ko'rsatgichni prodOne struktura o'zgaruvchisiga ishora qilish
uchun biz yozamiz:
Mahsulot* pProd = &prodOne;
Bu shuni anglatadiki, pProd prodOne manziliga teng.
Afzallik shundaki, turli xil tuzilma o'zgaruvchilari bo'ylab qadam qo'yish uchun
ko'rsatkich arifmetikasidan foydalanish imkoniyati mavjud:
pProd++;
Ushbu bayonot keyingi tuzilma o'zgaruvchisiga o'tadi.
Struktura ko'rsatgichi bilan siz o'zgaruvchi va a'zo o'rtasida chegaralovchi
sifatida nuqtadan (.) foydalanishga ruxsat berilmagan. Siz -> belgilardan
foydalanishingiz kerak:
pProd->iNo = 25;
Masalan, pProd tomonidan ko'rsatilgan struktura ma'lumotlarini chop
etish uchun biz quyidagi bayonotdan foydalanishimiz mumkin:
cout << pProd->cName << endl << pProd->iId << endl <<
pProd->dPrice << endl << pProd->iNo << endl << pProd->cSupp;](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_15.png)
![Aytaylik, biz uchta struktura o'zgaruvchisi uchun bo'sh joy va oldingi
bo'limdagi kabi qiymatlarga ega sProds massivini e'lon qildik va ishga tushirdik:
Mahsulot sProds[3] = {
{"Oziq-ovqat moyi", 101, 12.50, 100, "Felix Ltd"},
{"Baby Oil", 102, 23.75, 25, "Baby Prod"},
{"Qozon moyi", 103, 6100, 123000, "Shell"},
};
Keyin biz massivning birinchi elementiga ishora qiluvchi Prod tipidagi
ko'rsatgichni e'lon qilishimiz mumkin:
Mahsulot* pProd = &sProds[0];
Keyin, masalan, uchta mahsulot uchun mahsulot identifikatorini chop etish
uchun tsikldan foydalanishimiz mumkin:
for (int i=0; i<3; i++)
{
cout << pProd->iId <<
endl; pProd++;
}
E'tibor bering, biz mahsulotdan mahsulotga qadam qo'yish uchun
ko'rsatkich arifmetikasidan foydalanganmiz.](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_16.png)
![](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_17.png)
![Foydalanilgan adabiyotlar
1. https://en.wikipedia.org/wiki/Structured_programming .
2. https://www.brighthub.com/internet/webdevelopment/articles/73961/
#summary
3. https://seriouscomputerist.atariverse.com/media/pdf/book/Structured
%20Programming.pdf
4. https://structured-programming-with-c-plus-plus%20(3).pdf
5. https://www.techtarget.com/searchsoftwarequality/definition/structured-
programming-modular-programming
6. https://www.geeksforgeeks.org/structured-programming-approach-with-
advantages-and-disadvantages/
7. https://www.makeuseof.com/tag/basic-programming-principles/
8. https://accu.org/journals/overload/30/168/teodorescu/](/data/documents/d662180c-5937-488e-9760-4a105313d079/page_18.png)
Strukturali dasturlash Reja : I. Kirish. II. Asosiy qism: a. Strukturaviy dasturlash. b. Strukturaviy dasturlash qoidalari. c. Strukturaviy dasturlash printsiplari. d. Strukturaviy dasturlashdan foydalanish. III. Foydalanilgan adabiyotlar
Kirish Fayllar va ma'lumotlar bazalari ma'lumotlari bilan ishlashda ko'pincha ma'lumotlarning katta qismini bir bo'lakda qayta ishlash qulay bo'ladi, masalan, mijoz faylidagi butun mijoz yozuvi. Buning uchun yaxshi vosita tuzilma kontseptsiyasidir. Struktura - bu qandaydir tarzda vositachi aloqaga ega bo'lgan ma'lumotlar to'plami. Struktura bilan bog'liq holda ko'rsatkichlar va ko'rsatkich arifmetikasidan foydalanamiz. Strukturalar ob'ektga yo'naltirilgan dasturlash doirasidagi sinflar uchun oldingi holatdir. Shuning uchun, ushbu mavzu ob'ektga yo'naltirilgan dasturlashning keyingi bosqichiga ko'prikdir. Ushbu mavzuda biz strukturani aniqlash, strukturada saqlanadigan ma'lumotlar bilan ishlash, struktura massivlari va struktura bilan bog'liq holda fayllar bilan ishlashni ko’ramiz. Shuningdek, strukturaga ko‘rsatgichlardan foydalanish, strukturalarni funksiyaga yuborish va strukturalarni dinamik xotirada saqlashni ham ko’ramiz.
Strukturaviy dasturlash Strukturaviy dasturlashda biz dasturni tushunish oson bo'lishi uchun butun dasturni kichik modullarga ajratamiz. Strukturaviy dasturlashning maqsadi - bajarilish ketma-ketligi kod yozilgan ketma-ketlikka rioya qilish uchun kompyuter dasturi orqali boshqarish oqimini chiziqli qilishdir. Dasturning dinamik tuzilishi dasturning statik tuzilishiga o'xshaydi. Bu dasturni o'qish, sinovdan o'tkazish va o'zgartirish imkoniyatini oshiradi. Ushbu chiziqli boshqaruv oqimi ruxsat etilgan ilovalar konstruktsiyasini bitta kirish, bitta chiqish formatlari bilan cheklash orqali boshqarilishi mumkin. Ism, manzil, telefon, elektron pochta, chegirma profili, yetkazib berish shartlari, to'lov shartlari va boshqalarni o'z ichiga olgan mijoz faylidagi mijoz yozuvini o'ylab ko'ring. Bu ma'lumotlarning barchasi har bir mijoz uchun mijoz faylida saqlanadi. Ushbu ma'lumotni fayl yoki ma'lumotlar bazasiga o'qish, qayta ishlash va saqlashda mijoz uchun barcha ma'lumotlarni bir xilda boshqarish imkoniyatiga ega bo'lish qulay. Keyin u dastur kodini yaxshiroq tashkil qilishni ta'minlaydigan tuzilmaga yig'iladi. Tuzilish har bir mijoz uchun barcha ma'lumotlar uchun shablonga o'xshaydi. Struktura kodda int, double yoki char kabi ma'lumotlar turi kabi ishlaydi. Siz aniqlangan struktura turidagi o'zgaruvchini e'lon qilasiz. Tuzilish o'zgaruvchisida siz ma'lum bir mijoz uchun barcha ma'lumotlarni saqlashingiz mumkin. Shuningdek, siz har bir massiv elementi har bir mijoz uchun barcha ma'lumotlarga ega bo'lgan tuzilma bo'lgan struktura elementlari qatorini yaratishingiz mumkin. Shunday qilib, massiv barcha mijozlar uchun barcha ma'lumotlarni o'z ichiga oladi.
Strukturaviy dasturlash qoidalar Strukturaviy birinchi qoida: kod bloki Agar kirish shartlari to'g'ri bo'lsa, lekin chiqish shartlari noto'g'ri bo'lsa, xato blokda bo'lishi kerak. Agar ijro blokga o'tishga ruxsat berilsa, bu to'g'ri emas. Xato dasturning istalgan joyida bo'lishi mumkin. Bunday sharoitda disk raskadrovka qilish ancha qiyin. Strukturaviy dasturlashning 1-qoidasi: Kod bloki rasmda ko'rsatilganidek tuzilgan. Oqim diagrammasi sharoitida bitta kirish nuqtasi va bitta chiqish nuqtasi bo'lgan quti tuzilgan. Strukturaviy dasturlash - bu dasturning to'g'ri ekanligini ko'rsatish usuli. Strukturaning ikkinchi qoidasi: ketma-ketlik Har bir blokning chiqish shartlari keyingi blokning kirish shartlariga mos kelsa , bloklar ketma - ketligi to ' g ' ri bo ' ladi . Bajarish har bir blokga blokning kirish nuqtasida kiradi va blokdan chiqish nuqtasi orqali chiqib ketadi. Butun seriyani kirish va chiqish nuqtasi bo'lgan yagona blok sifatida ko'rish mumkin.
Strukturaviy dasturlashning 2-qoidasi: ketma-ketlikdagi ikki yoki undan ortiq kod bloklari rasmda ko'rsatilganidek tuzilgan. Strukturaviy qoida uchinchi: almashinish If-then-else ko'pincha almashtirish deb ataladi (chunki muqobil variantlar mavjud). Strukturaviy dasturlashda har bir tanlov kod blokidir. Agar almashinish o'ngdagi sxemadagi kabi tashkil etilgan bo'lsa, unda bitta kirish nuqtasi (yuqorida) va bitta chiqish nuqtasi (pastki qismida) mavjud. Tuzilish shunday kodlangan bo'lishi kerakki, agar kirish shartlari bajarilsa, chiqish shartlari qondiriladi (xuddi kod bloki kabi). Strukturaviy dasturlashning 3-qoidasi: Ikki kod blokining almashinishi rasmda ko'rsatilganidek tuzilgan. Muqobil usul uchun kirish shartiga misol: $8 ro'yxati imzolangan butun sonni o'z ichiga oladi. Chiqish sharti bo'lishi mumkin: ro'yxatdan o'tish $8 imzolangan