8-lekciya_paradigma_qq
.pdf8-lekciya. Strukturalı programmalastırıw. Strukturalı programmalastırıw principleri.
Jobası:
1.Strukturalı programmalastırıwdıń payda bolıw tariyxı hám "Spagetti kod" mashqalası.
2.Deykstra hám Bem-Yakopini teoreması: GOTO operatorınan waz keshiw.
3.Strukturalı programmalastırıwdıń úsh tiykarǵı blogı: Izbe-izlik, Tarmaqlanıw, Cikl.
4."Joqarıdan-tómenge" proektlestiriw usılı hám paradigmanıń ámeliy áhmiyeti.
Tariyxıy kózqaras hám krizisten shıǵıw
Strukturalı programmalastırıw – bul programmalıq támiynattı islep shıǵıw procesinde kodtıń ayqınlıǵın, oqılıwın hám sapa dárejesin arttırıwǵa qaratılǵan programmalastırıw paradigması bolıp tabıladı. 1960-jıllardıń ortalarında programmalastırıw tarawı úlken kriziske ushıradı. Kompyuterlerdiń quwatı artqan sayın, sheshiletuǵın máseleler quramalastı, biraq qollanılıp atırǵan usıllar (tiykarınan strukturasız imperativ kod) bul quramalılıqtı basqara almadı. Programmalar qátelerge tolı, ońlawǵa qıyın hám basqa programmistler túsinbeytuǵın dárejede shiyelenisip jazılatuǵın edi. Bul dáwirde programmalastırıw injenerlik pánnen góre, túsiniksiz ónerge kóbirek uqsaytuǵın edi.
Bul dáwirdegi eń úlken mashqala "Spagetti kod" dep ataldı. Bul termin programmanıń basqarıw aǵımı (flow control) tabaqtaǵı makaron sıyaqlı shiyelenisip ketkenligin ańlatadı. Bunıń baslı sebebi – GOTO (sekiriw) operatorınıń sheklewsiz qollanılıwı edi. Programmistler bir kod qatarınan ekinshisine logikalıq baylanıssız sekirip óte beretuǵın edi, nátiyjede programmanıń bası hám ayaǵın tabıw, onıń qanday jaǵdayda qalay isleytuǵının boljaw múmkin bolmay qaldı. Bunday kodtı ózgertiw – kartadan úy qurǵan menen teń edi: bir jerdi ózgertseńiz, pútkil programma qulap túsedi. 1968-jılı ataqlı gollandiyalı alım Edsger Deykstra "Communications of the ACM" jurnalında "GOTO Statement Considered Harmful" (GOTO operatorı zıyanlı dep esaplanadı) atlı ataqlı xatın járiyaladı. Bul maqala programmalastırıw áleminde revolyuciya jasadı. Deykstra GOTO operatorınıń programmanıń logikasın buzatuǵının hám onıń ornına tártipli strukturalardı qollanıw kerekligin dálilledi. Usı waqıttan baslap "Strukturalı programmalastırıw" háreketi baslandı. Bul paradigma programmistlerdi "qalay bolsın kod jazıw" ádetinen tıyıp, "tártipli hám turaqlı kod jazıw" mádeniyatına shaqırdı.
Strukturalı programmalastırıwdıń teoriyalıq tiykarın 1966-jılı Korrado Bem hám Juzeppe Yakopini islep shıqqan teorema quraydı. "Bem-Yakopini teoreması" boyınsha, hár qanday quramalılıqtaǵı algoritmdi tek ǵana úsh túrli basqarıw strukturasın (Izbe-izlik, Tarmaqlanıw, Cikl) qollanıp hám GOTO operatorın sız qaldırıp jazıw múmkin. Bul teorema strukturalı programmalastırıwdıń tek ǵana
usınıs emes, al matematikalıq jaqtan dálillengen, algoritmlerdi súwretlewdiń tolıq hám isenimli usılı ekenin tastıyıqladı.
Úsh tiykarǵı basqarıw strukturası
Strukturalı programmalastırıwdıń birinshi hám eń ápiwayı komponenti – bul "Izbe-izlik" (Sequence) strukturası. Bul struktura boyınsha buyrıqlar (operatorlar) programma kodında qanday tártipte jazılǵan bolsa, dál sol tártipte, joqarıdan tómenge qaray orınlanadı. Izbe-izlikte heshqanday sekiriwler yamasa tarmaqlanıwlar bolmaydı. Bul blok programmanıń eń kishi birligi bolıp, ol "kirisiw" hám "shıǵıw" noqatlarına iye. Izbe-izliktiń eń úlken artıqmashılıǵı – onıń deterministik tábiyatı: biz A buyrıǵınan keyin B buyrıǵı, onnan keyin C buyrıǵı orınlanatuǵının anıq bilemiz. Ekinshi struktura – bul "Tarmaqlanıw" (Selection yamasa Branching). Real ómirde hám algoritmlerde biz kóbinese tańlaw jaǵdayın ushıratamız. Strukturalı programmalastırıwda bul IF-THEN-ELSE (Eger-Onda- Basqasha) konstrukciyası arqalı ámelge asırıladı. Programma belgili bir logikalıq shártti tekseredi (mısalı, "san oń ba?"). Eger shárt shın (True) bolsa, birinshi blok orınlanadı, eger jalǵan (False) bolsa, ekinshi blok orınlanadı. Eń baslısı – qaysı jol tańlanbasın, aqırında basqarıw aǵımı qaytadan bir ulıwma noqatqa jıynaladı. Bul GOTO menen basqa jerge ushıp ketiwden ayrıqshalanıp, processsti qadaǵalawda uslaydı.
Úshinshi struktura – bul "Tákirarlanıw" yamasa "Cikl" (Iteration / Loop). Algoritmlerdiń kópshiligi birdey háreketlerdi kóp márte orınlawdı talap etedi. Strukturalı paradigma bunı WHILE (shárti aldın ala tekseriletuǵın), DO-WHILE (shárti sońınan tekseriletuǵın) hám FOR (parametrli) ciklleri arqalı ámelge asıradı. Cikldiń ishindegi kod blogı shárt qanaatlandırılǵansha tákirarlana beredi hám shárt atqarılmay qalǵanda, cikl turaqlı túrde tamamlanadı. Bul struktura sheksiz cikllerdiń aldın alıwǵa hám massiv sıyaqlı maǵlıwmatlar jıyındısı menen effektiv islesiwge imkaniyat beredi.
Bul úsh strukturanıń ulıwma ózgesheligi sonda, olardıń hárbiriniń "Bir kirisiw hám bir shıǵıw" (Single Entry, Single Exit) noqatı bar. Yaǵnıy, programma basqarıwı blokqa tek tóbesinen kirip, tek astınan shıǵıp ketedi. Kodtıń ortasınan sırtqa sekirip ketiwge yamasa sırtqı jaqtan koddıń ortasına kirip ketiwge ruqsat etilmeydi. Bul qatallıq programmanı "Lego" konstruktorı sıyaqlı bloklardan quralıwǵa múmkinshilik beredi: bir bloktıń shıǵıwı ekinshi bloktıń kirisiwine aylanadı, nátiyjede pútinley turaqlı shınjır payda boladı.
Proektlestiriw usılları hám ámeliy nátiyje
Strukturalı programmalastırıw tek sintaksis penen sheklenbeydi, ol máseleni sheshiwdiń arnawlı metodologiyasın usınıs etedi. Bunıń eń tiykarǵısı – "Joqarıdantómenge proektlestiriw" (Top-Down Design) hám "Basqıshlı detallastırıw" (Stepwise Refinement) usılı. Bul usıl boyınsha, quramalı mashqala dáslep ulıwma, iri bloklarǵa bólinedi. Mısalı, "Studentler bazasın jaratıw" máselesi: "Maǵlıwmat kirgiziw", "Qayta islew" hám "Nátiyje shıǵarıw" degen úsh úlken bólekke bólinedi. Keyin hárbir bólek óz ishinde jáne mayda proceduralarǵa (funkciyalarǵa) bólinedi. Bul process eń kishi, ápiwayı kodqa jetkenge shekem dawam etedi.
Bul paradigmanıń programmalıq injeneriyaǵa qosqan úlesi oǵada úlken. Birinshiden, kodtıń "Oqılıwǵa uqıplıǵı" (Readability) jaqsılandı. Strukturalı kodtı basqa adam oqıǵanda, onı kitap sıyaqlı betten betke izbe-iz túsinip oqıwı múmkin. Ekinshiden, "Testlew hám Ońlaw" (Testing and Debugging) procesi ańsatlastı. Programmada qáte shıqsa, onıń qaysı blokta ekenin anıqlaw hám sol bloktı basqalarına tásir etpesten dúzetiw múmkin boldı. Úshinshiden, bul usıl komandada islesiwdi (Teamwork) jolǵa qoydı: hár bir programmist ulıwma proekttiń ózine tiyisli moduline yamasa funkciyasına juwapker bolıp, bir-birine tosqınlıq etpey isley alatuǵın boldı.
Strukturalı programmalastırıw – zamanagóy programmalastırıw tilleriniń (Pascal, C, Ada) payda bolıwına tikkeley sebepshi boldı hám házirgi waqıttaǵı barlıq ataqlı tillerdiń (Java, Python, C++, C#) fundamental negizi bolıp tabıladı. Hátte Obyektke Baǵdarlanǵan Programmalastırıw (OBP) da strukturalı programmalastırıwdı biykar etpeydi, kerisinshe, onı óz ishine aladı: obyekttiń metodları (funkciyaları) strukturalı principler tiykarında (if, for, while menen) jazıladı. Solay etip, strukturalı programmalastırıw programmistlik oylawdıń "álipbesi" bolıp qala beredi.
Juwmaqlap aytqanda, strukturalı programmalastırıw – bul xaostan tártipke ótiw procesi. Ol kompyuter programmaların jazıwdı jeke tulǵanıń intuitivlik dóretiwshiliginen, anıq qaǵıydalarǵa hám standartlarǵa súyenetuǵın kásiplik proceske aylandırdı. GOTO operatorınan waz keshiw hám úsh tiykarǵı strukturanı qollanıw arqalı biz búgingi kúni millionlaǵan qatar kodtan turatuǵın isenimli hám qáwipsiz operaciyalıq sistemalar, brauzerler hám qosımshalardı jarata alıp atırmız.
BAQLAW SORAWLARÍ:
1."Spagetti kod" degen ne hám ol ne sebepten programmalastırıwda qáwipli dep esaplanadı?
2.Edsger Deykstra óziniń ataqlı maqalasında qaysı operatordı sınǵa alǵan hám ne ushın?
3.Bem-Yakopini teoreması boyınsha hár qanday algoritmdi qaysı úsh struktura arqalı ańlatıwǵa boladı?
4."Joqarıdan-tómenge proektlestiriw" (Top-Down Design) usılınıń mánisi nede?
5.Strukturalı programmalastırıwdıń "Bir kirisiw hám bir shıǵıw" principi kodtıń turaqlılıǵına qalay tásir etedi?
