Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Windows 7, XP
  • metoda e montimit. Degëzimi dhe përsosja sekuenciale e algoritmit - Hipermarketi i njohurive

metoda e montimit. Degëzimi dhe përsosja sekuenciale e algoritmit - Hipermarketi i njohurive

Thelbi i metodës është përshkruar më lart. Së pari, analizohet problemi origjinal. Ka nëndetyra. Është ndërtuar një hierarki e nën-detyrave të tilla (Fig. 48).

Pastaj përpilohen algoritmet (ose programet), duke filluar nga algoritmi kryesor (programi kryesor), pastaj - algoritmet ndihmëse (nënprogramet) me thellim sekuencial të nivelit, derisa të marrim algoritme që përbëhen nga komanda të thjeshta.

Le të kthehemi te problemi "Interpretuesi", i cili u trajtua në Sekt. 3.16. Kujtoni kushtin: duke pasur parasysh vargun origjinal të karaktereve, i cili ka formën e mëposhtme:

Në vend të a dhe b janë shifra dhjetore; distinktiv

tregohet një nga shenjat e operacioneve: +, -, *. Ne kemi nevojë që makina të vlerësojë këtë shprehje dhe, pas shenjës =, të nxjerrë rezultatin. Operacioni i ndarjes nuk konsiderohet se merret vetëm me numra të plotë.

Le të formulojmë kërkesat për programin Interpretator, të cilat do ta bëjnë atë më universal se versioni i konsideruar në Sec. 3.16:

1. Operandat a dhe b mund të jenë numra të plotë pozitivë me shumë vlera brenda MaxInt.

2. Mund të ketë hapësira ndërmjet elementeve të rreshtit, si dhe në fillim dhe në fund.

3. Programi kryen kontroll sintaksor të tekstit. Le të kufizohemi në versionin më të thjeshtë të kontrollit: vargu duhet të përbëhet vetëm nga numra, shenja operimi, shenja = dhe hapësira.

4. Kryhet kontrolli semantik: vargu duhet të ndërtohet sipas skemës a

b=. Gabim nëse ndonjë element mungon ose nuk funksionon.

5. Gama e vlerave të operandëve dhe rezultati kontrollohet (nuk duhet të shkojë përtej MaxInt).

Tashmë nga lista e kërkesave bëhet e qartë se programi nuk do të jetë i lehtë. Do ta kompozojmë duke përdorur metodën e detajimit sekuencial. Le të fillojmë duke paraqitur algoritmin në formën e tij më të përgjithshme si një sekuencë lineare hapash për zgjidhjen e problemit:

1. Futni një varg.

2. Kontroll sintaksor (a ka karaktere të pavlefshme?).

3. Kontroll semantik (a është e saktë shprehja?).

4. Përzgjedhja e operandëve. Kontrollimi i operandëve për një gamë të vlefshme vlerash. Konvertoni në numra të plotë.

5. Kryerja e një operacioni. Kontrollimi i rezultatit për një gamë të vlefshme.

6. Prodhimi i rezultatit.

Fazat 2, 3, 4, 5 do të konsiderohen si nëndetyra të nivelit të parë, duke i emërtuar ato (dhe nënprogramet e ardhshme) përkatësisht Sintax, Semantika, Operand, Calc.

Nga ana tjetër, zbatimi i tyre do të kërkojë zgjidhjen e nëndetyrave të mëposhtme: kapërcimi i hapësirave shtesë (Propusk), konvertimi i një shifre karakteri në një numër të plotë (Cifra). Përveç kësaj, kur caktoni operandët, do t'ju duhet të njihni një operand që tejkalon vlerën maksimale të lejuar (Gabim). Duke përmbledhur gjithçka që është thënë në një formë skematike, marrim një strukturë të caktuar të nëndetyrave. Kjo strukturë do të korrespondojë me një strukturë të ngjashme të moduleve të programit (Fig. 49).

Hapi i parë i detajimit. Së pari, ne përshkruajmë të gjitha nënprogramet e nevojshme, duke treguar vetëm titujt e tyre (specifikimet). Në vend të trupit të nënprogrameve, ne shkruajmë komente shpjeguese (ky lloj nënprogrami quhet "cung"). Le të shkruajmë pjesën kryesore të programit. Dhe më pas do t'i kthehemi programimit të detajuar të procedurave dhe funksioneve. Në fazën e parë të programimit, në vend të trupit të nënprogramit, ne përshkruajmë qëllimin e tij në formën e një komenti. Pasi kemi kombinuar më në fund tekstet e nënprogrameve me programin kryesor, marrim një version pune të programit Interpretator. Tani mund të futet në kompjuter.

Korrigjimi dhe testimi i programit. Nuk mund të jeni kurrë i sigurt se një program i shkruar do të jetë i saktë me një goditje (edhe pse kjo është e mundur, bëhet gjithnjë e më pak e mundshme ndërsa programi bëhet më kompleks). Programi është sjellë në gjendjen përfundimtare të punës në procesin e korrigjimit.

Gabimet mund të jenë "gjuhësore", ato mund të jenë algoritmike. Lloji i parë i gabimeve, si rregull, ndihmon në zbulimin e përpiluesit Pascal. Këto janë gabime që lidhen me shkeljen e rregullave të gjuhës së programimit. Ato quhen gjithashtu gabime në kohën e përpilimit sepse zbulohen në kohën e përpilimit. Gabimet algoritmike çojnë në pasoja të ndryshme. Së pari, mund të ketë veprime të parealizueshme. Për shembull, pjesëtimi me zero, rrënja katrore e një numri negativ, një indeks jashtë vijës, etj. Këto janë gabime në kohën e ekzekutimit. Ato çojnë në ndërprerjen e ekzekutimit të programit. Si rregull, ekzistojnë mjete softuerike të sistemit që ndihmojnë në gjetjen e gabimeve të tilla.

Një situatë tjetër është kur gabimet algoritmike nuk çojnë në ndërprerje të ekzekutimit të programit. Programi ekzekutohet deri në fund, merren disa rezultate, por nuk janë të sakta. Për korrigjimin përfundimtar të algoritmit dhe analizën e korrektësisë së tij, kryhet testimi. Një test është një variant i zgjidhjes së një problemi për të cilin rezultatet dihen paraprakisht. Si rregull, një variant testimi nuk vërteton korrektësinë e programit. Programuesi duhet të dalë me një sistem testimi, të ndërtojë një plan testimi për testimin e plotë të të gjithë programit.

Këtë e kemi thënë tashmë Një program cilësor nuk duhet të rrëzohet kurrë.

Kalimi me sukses i të gjitha testeve është kusht i domosdoshëm për korrektësinë e programit. Vini re se në këtë rast nuk është domosdoshmërisht e mjaftueshme. Sa më kompleks të jetë programi, aq më e vështirë është të ndërtohet një plan testimi gjithëpërfshirës. Përvoja tregon se edhe në programet "pronësore", gabime gjenden gjatë funksionimit. Prandaj, problemi i testimit të programit është një problem shumë i rëndësishëm dhe në të njëjtën kohë shumë kompleks.

fund

Çdo bllok mund të përmbajë një komandë të thjeshtë dhe një strukturë komplekse, por duhet të ketë një hyrje dhe një prodhimit.

degëzimi - alternativë algoritmike. Me këtë komandë, e cila quhet edhe pirun, zgjidhet një nga dy veprimet e mundshme në varësi të gjendjes. Pasi të përfundojë komanda, dilni në të përgjithshme vazhdim:

Në pseudokod, kjo komandë përgjithësisht shkruhet si më poshtë:

nëse<условие>

pastaj<действие 1>

ndryshe<действие 2>

Veprimet e treguara pas fjalëve të shërbimit pastaj Dhe ndryshe, mund të jenë komanda të thjeshta ose të përbëra. Kur ekzekutohet një instruksion i degës, kryhet vetëm një nga veprimet: nëse plotësohet kushti, atëherë kryhet veprimi 1, përndryshe, veprimi 2.

Komanda e degës mund të përdoret në forma e shkurtuar (korrigjim) kur nuk ndërmerret asnjë veprim nëse nuk plotësohet kushti. Në pseudokod, korrigjimi shkruhet kështu:

nëse<условие>

pastaj<действие >

Përsëritni komandën (lak). Shumica e algoritmeve përmbajnë një seri komandash të përsëritura në mënyrë të përsëritur. Nëse komanda të tilla shkruheshin si një komandë ndjekëse e përbërë, atëherë çdo komandë e përsëritur do të duhej të shkruhet saktësisht aq herë sa përsëritet. Por kjo është një mënyrë shumë joekonomike e regjistrimit. Prandaj, për të përcaktuar veprime të përsëritura në mënyrë të përsëritur, përdoret një ndërtim i veçantë, i quajtur ciklit.

Instruksioni i ciklit të përbërë, i quajtur gjithashtu instruksioni i përsëritjes, përmban një kusht që përdoret për të përcaktuar numrin e përsëritjeve. Konsideroni tre lloje të komandave të përsëritjes.

Përsëritni komandën me parakusht shkruar në pseudokod si më poshtë:

deri në<условие >

përsëritni<действие>

Me veprim, si më parë, nënkuptojmë një komandë të thjeshtë ose të përbërë. Ekzekutimi i një komande të tillë përsëritjeje konsiston në faktin se së pari kontrollohet kushti (prandaj emri - një cikël me një parakusht), dhe nëse plotësohet, atëherë ekzekutohet komanda e shkruar pas fjalës së shërbimit. përsëritni. Pas kësaj, gjendja kontrollohet përsëri. Cikli përfundon kur kushti nuk plotësohet më. Kjo kërkon që instruksioni i ekzekutuar në lak të ndikojë në gjendje.

Udhëzimi i përsëritjes me një parakusht në gjuhën e grafikut të rrjedhës duket kështu:



Përsëritni komandën me kusht kryhet në mënyrë të ngjashme, kontrollohet vetëm kushti pasi të ekzekutohet komanda dhe ekzekutimi i komandës përsëritet kur kushti nuk plotësohet, d.m.th. bëhet përsëritja përpara kusht (kjo është arsyeja pse ky lloj cikli quhet edhe cikli "para"). Në gjuhën e pseudokodit dhe të grafikut të rrjedhës, një lak me një kusht postar shkruhet si më poshtë:



përsëritni

veprim

përpara gjendje

Me veprim, si më parë, nënkuptojmë një komandë të thjeshtë ose të përbërë.

Lak me një parametër (një numër i njohur përsëritjesh)

Për parametri:=N1 përpara N2 bëj

veprim

N1, N2 janë shprehje që përcaktojnë vlerat fillestare dhe përfundimtare të parametrit të ciklit, përkatësisht, N3 është hapi i ndryshimit të parametrit të ciklit.

Nëse N1< N2, то N3 >0.

Nëse N1 > N2, atëherë N3<0.

Në teori i nevojshëm dhe i mjaftueshëm është vetëm lloji i parë i ciklit - një cikël me parakusht. Çdo algoritëm ciklik mund të ndërtohet duke përdorur atë. Ky është një version më i përgjithshëm i ciklit sesa loop-to dhe cikli me një parametër. Por, në disa raste, përdorimi i një loop-to dhe një lak me një parametër rezulton të jetë më i përshtatshëm.

Qasja strukturore kërkon pajtueshmëri me standardin në imazhin e diagrameve të rrjedhës së algoritmeve. Duhet t'i vizatoni ashtu siç është bërë në të gjithë shembujt e dhënë. Çdo strukturë bazë duhet të ketë një hyrje Dhe një rrugëdalje. Një bllok diagram jo standard është i lexueshëm dobët, dukshmëria dhe semantika e algoritmit humbasin.

Më shpesh, algoritmi përmban kombinime të komandave bazë të ndërlidhura. Këto struktura mund të lidhen në dy mënyra: konsistente Dhe folezuar . Kjo situatë është e ngjashme me atë të vërejtur në inxhinierinë elektrike, ku çdo qark elektrik kompleks arbitrarisht mund të zbërthehet në seksione të lidhura seri dhe paralele.

Nëse blloku që përbën trupin e ciklit është në vetvete një strukturë ciklike, atëherë kjo do të thotë se folezuar cikle. Nga ana tjetër, laku i brendshëm mund të ketë një lak tjetër brenda tij, e kështu me radhë. Në këtë drejtim, koncepti i thellësia e foleve cikle. Në mënyrë të ngjashme, degët mund të mbivendosen brenda njëra-tjetrës.

Programimi i strukturuar nganjëherë referohet në literaturë si programim pa goto. Në të vërtetë, me këtë qasje nuk ka vend për një tranzicion të pakushtëzuar.

Përdorimi i pajustifikuar i operatorit të kërcimit të pakushtëzuar goto në programe e privon atë nga struktura, dhe si rrjedhim të gjitha vetitë pozitive që lidhen me të: transparenca dhe besueshmëria e algoritmit. Edhe pse ky operator është i pranishëm në të gjitha gjuhët e programimit procedural, megjithatë, duke ndjekur një qasje strukturore, përdorimi i tij duhet të shmanget.

Gjuhët e programimit Pascal dhe C quhen gjuhë programimi të strukturuara. Kanë të gjitha strukturat e nevojshme të kontrollit për ndërtimin strukturor të programit. Strukturimi i pamjes së tekstit të programit i jep qartësi këtij konstruksioni. Teknika kryesore e përdorur për këtë është ndërrimi i linjës, i cili duhet t'u bindet rregullave të mëposhtme:

Konstruktet e të njëjtit nivel foleje shkruhen në të njëjtin nivel vertikal (fillojnë nga i njëjti pozicion në rresht);

Ndërtimi i mbivendosur shkruhet i zhvendosur përgjatë vijës me disa pozicione djathtas në raport me konstruksionin e jashtëm të tij.

Teknika strukturore e algoritmit nuk është vetëm një formë e përshkrimit të një algoritmi, por është gjithashtu mënyra e të menduarit të programuesit. Kur krijoni një algoritëm, duhet të përpiqeni ta kompozoni atë nga strukturat standarde.

Një tjetër teknikë e rëndësishme teknologjike e programimit të strukturuar është zbërthimi i problemit që do të zgjidhet në nëndetyra- ndarjen e detyrës në pjesë më të thjeshta të detyrës origjinale nga pikëpamja e programimit.

Algoritmet për zgjidhjen e nënproblemeve të tilla quhen algoritme ndihmëse. Në këtë drejtim, ekzistojnë dy mënyra të mundshme në ndërtimin e algoritmit:

"nga lart poshtë" - së pari, ndërtohet algoritmi kryesor, pastaj algoritmet ndihmëse;

"nga poshtë lart" - së pari, përpilohen algoritmet ndihmëse, dhe më pas ai kryesori.

Qasja e parë quhet edhe metoda detaje të qëndrueshme , e dyta - montim metodë.

Kuvendi metoda përfshin grumbullimin dhe përdorimin e bibliotekave të algoritmeve ndihmëse të zbatuara në gjuhët e programimit në formën e nënprogrameve, procedurave, funksioneve.

konsistente duke detajuar, fillimisht ndërtohet algoritmi kryesor dhe më pas futen në të thirrjet në algoritmet ndihmëse të nivelit të parë. Pas kësaj, përpilohen algoritme ndihmëse të nivelit të parë, në të cilat mund të ketë thirrje për algoritme ndihmëse të nivelit të dytë etj. Algoritmet ndihmëse të nivelit më të ulët përbëhen vetëm nga komanda të thjeshta.

Metoda detaje të qëndrueshme përdoret në çdo ndërtim të objekteve komplekse. Kjo është sekuenca logjike e natyrshme e të menduarit të stilistit: thellimi gradual në detaje. Është praktikisht e pamundur të ndërtohet një algoritëm mjaft i ndërlikuar në një mënyrë tjetër.

Kështu, teknika e detajimit hap pas hapi mund të përfaqësohet si një diagram:

Së pari, analizohet problemi origjinal. Ka nëndetyra. Është ndërtuar një hierarki e nën-detyrave të tilla.

Pastaj përpilohen algoritmet (ose programet), duke filluar nga algoritmi kryesor (programi kryesor), pastaj - algoritmet ndihmëse (nënprogramet) me thellim sekuencial të nivelit, derisa të marrim algoritme që përbëhen nga komanda të thjeshta.

Teknika e detajimit sekuencial ju lejon të organizoni punën e një ekipi programuesish në një projekt kompleks. Për shembull, kreu i grupit ndërton algoritmin kryesor dhe i udhëzon punonjësit e tij të zhvillojnë algoritme ndihmëse dhe të shkruajnë nënprogramet përkatëse. Anëtarët e grupit duhet të bien dakord vetëm për ndërfaqen (d.m.th., marrëdhënien) midis moduleve të softuerit të zhvilluar, dhe organizimi i brendshëm i programit është biznesi i vetë programuesit.

Korrigjimi dhe testimi i programit. Asnjëherë nuk mund të jetë i sigurt se programi i shkruar do të jetë i saktë (edhe pse kjo është e mundur, por me kompleksitetin e programit bëhet gjithnjë e më pak e mundshme). Programi është sjellë në gjendjen përfundimtare të punës në proces korrigjimi.

Gabimet mund të jenë "gjuhësore" - sintaksore dhe algoritmike (logjike). Lloji i parë i gabimit zakonisht zbulohet nga përpiluesi i gjuhës së programimit. Këto janë gabime që lidhen me shkeljen e rregullave të gjuhës së programimit. Ata quhen edhe gabime. koha e përpilimit, sepse ato zbulohen gjatë përpilimit. Vetë përpiluesi në një formë ose në një tjetër informon përdoruesin për natyrën e gabimit dhe vendin e tij në tekstin e programit. Pas korrigjimit të një gabimi tjetër, përdoruesi përsërit përpilimin. Kjo vazhdon derisa të eliminohen të gjitha gabimet e këtij niveli.

Gabimet algoritmike çojnë në pasoja të ndryshme. Së pari, mund të ketë veprime të parealizueshme. Për shembull, pjesëtimi me zero, rrënja katrore e një numri negativ, indeksi jashtë kufijve të grupit, etj. Këto janë gabime koha e ekzekutimit. Ato çojnë në ndërprerjen e ekzekutimit të programit. Si rregull, ekzistojnë mjete softuerike të sistemit që ndihmojnë në gjetjen e gabimeve të tilla.

Një situatë tjetër është kur gabimet algoritmike nuk çojnë në ndërprerje të ekzekutimit të programit. Programi ekzekutohet deri në fund, merren disa rezultate, por nuk janë të sakta. Për korrigjimin përfundimtar të algoritmit dhe analizën e korrektësisë së tij, kryhet testimi.

Testështë një variant i zgjidhjes së një problemi për të cilin rezultatet dihen paraprakisht. Si rregull, një variant testimi nuk vërteton korrektësinë e programit. Programuesi duhet të dalë me një sistem testimi, të ndërtojë një plan testimi për testimin e plotë të të gjithë programit.

Program cilësor ne asnje menyre nuk duhet të përfundojë emergjente.

Testet e programit duhet të tregojnë se me futjen e saktë të të dhënave fillestare, gjithmonë do të merren rezultatet e sakta, dhe nëse ka gabime (sintaksore, semantike, jashtë rrezes), do të merren mesazhet përkatëse.

Kalimi me sukses i të gjitha testeve është kusht i domosdoshëm për korrektësinë e programit. Vini re se në këtë rast nuk është domosdoshmërisht e mjaftueshme. Sa më kompleks të jetë programi, aq më e vështirë është të ndërtohet një plan testimi gjithëpërfshirës. Përvoja tregon se edhe në programet "pronësore", gabime gjenden gjatë funksionimit. Prandaj, problemi i testimit të programit është një problem shumë i rëndësishëm dhe në të njëjtën kohë shumë kompleks.

Thelbi i metodës është përshkruar më lart. Së pari, analizohet problemi origjinal. Ka nëndetyra. Është ndërtuar një hierarki e nën-detyrave të tilla (Fig. 48).

Pastaj përpilohen algoritmet (ose programet), duke filluar nga algoritmi kryesor (programi kryesor), pastaj - algoritmet ndihmëse (nënprogramet) me thellim sekuencial të nivelit, derisa të marrim algoritme që përbëhen nga komanda të thjeshta.

Le të kthehemi te problemi "Interpretuesi", i cili u shqyrtua në Sec. 3.16. Kujtoni kushtin: duke pasur parasysh vargun origjinal të karaktereve, i cili ka formën e mëposhtme:

Në vend të a dhe b janë shifra dhjetore; distinktiv

tregohet një nga shenjat e operacioneve: +, -, *. Ne kemi nevojë që makina të vlerësojë këtë shprehje dhe, pas shenjës =, të nxjerrë rezultatin. Operacioni i ndarjes nuk konsiderohet se merret vetëm me numra të plotë.

Le të formulojmë kërkesat për programin Interpretator, të cilat do ta bëjnë atë më universal se versioni i konsideruar në Sec. 3.16:

1. Operandat a dhe b mund të jenë numra të plotë pozitivë me shumë vlera brenda MaxInt.

2. Mund të ketë hapësira ndërmjet elementeve të rreshtit, si dhe në fillim dhe në fund.

3. Programi kryen kontroll sintaksor të tekstit. Le të kufizohemi në versionin më të thjeshtë të kontrollit: vargu duhet të përbëhet vetëm nga numra, shenja operimi, shenja = dhe hapësira.

4. Kryhet kontrolli semantik: vargu duhet të ndërtohet sipas skemës a

b=. Gabim nëse ndonjë element mungon ose nuk funksionon.

5. Gama e vlerave të operandëve dhe rezultati kontrollohet (nuk duhet të shkojë përtej MaxInt).

Tashmë nga lista e kërkesave bëhet e qartë se programi nuk do të jetë i lehtë. Do ta kompozojmë duke përdorur metodën e detajimit sekuencial. Le të fillojmë duke paraqitur algoritmin në formën e tij më të përgjithshme si një sekuencë lineare hapash për zgjidhjen e problemit:

1. Futni një varg.

2. Kontroll sintaksor (a ka karaktere të pavlefshme?).

3. Kontroll semantik (a është e saktë shprehja?).

4. Përzgjedhja e operandëve. Kontrollimi i operandëve për një gamë të vlefshme vlerash. Konvertoni në numra të plotë.

5. Kryerja e një operacioni. Kontrollimi i rezultatit për një gamë të vlefshme.

6. Prodhimi i rezultatit.

Fazat 2, 3, 4, 5 do të konsiderohen si nëndetyra të nivelit të parë, duke i emërtuar ato (dhe nënprogramet e ardhshme) përkatësisht Sintax, Semantika, Operand, Calc.

Nga ana tjetër, zbatimi i tyre do të kërkojë zgjidhjen e nëndetyrave të mëposhtme: kapërcimi i hapësirave shtesë (Propusk), konvertimi i një shifre karakteri në një numër të plotë (Cifra). Përveç kësaj, kur caktoni operandët, do t'ju duhet të njihni një operand që tejkalon vlerën maksimale të lejuar (Gabim). Duke përmbledhur gjithçka që është thënë në një formë skematike, marrim një strukturë të caktuar të nëndetyrave. Kjo strukturë do të korrespondojë me një strukturë të ngjashme të moduleve të programit (Fig. 49).

Hapi i parë i detajimit. Së pari, ne përshkruajmë të gjitha nënprogramet e nevojshme, duke treguar vetëm titujt e tyre (specifikimet). Në vend të trupit të nënprogrameve, ne shkruajmë komente shpjeguese (ky lloj nënprogrami quhet "cung"). Le të shkruajmë pjesën kryesore të programit. Dhe më pas do t'i kthehemi programimit të detajuar të procedurave dhe funksioneve. Në fazën e parë të programimit, në vend të trupit të nënprogramit, ne përshkruajmë qëllimin e tij në formën e një komenti. Pasi kemi kombinuar më në fund tekstet e nënprogrameve me programin kryesor, marrim një version pune të programit Interpretator. Tani mund të futet në kompjuter.

Korrigjimi dhe testimi i programit. Nuk mund të jeni kurrë i sigurt se një program i shkruar do të jetë i saktë me një goditje (edhe pse kjo është e mundur, bëhet gjithnjë e më pak e mundshme ndërsa programi bëhet më kompleks). Programi është sjellë në gjendjen përfundimtare të punës në procesin e korrigjimit.

Gabimet mund të jenë "gjuhësore", ato mund të jenë algoritmike. Lloji i parë i gabimeve, si rregull, ndihmon në zbulimin e përpiluesit Pascal. Këto janë gabime që lidhen me shkeljen e rregullave të gjuhës së programimit. Ato quhen gjithashtu gabime në kohën e përpilimit sepse zbulohen në kohën e përpilimit. Gabimet algoritmike çojnë në pasoja të ndryshme. Së pari, mund të ketë veprime të parealizueshme. Për shembull, pjesëtimi me zero, rrënja katrore e një numri negativ, një indeks jashtë vijës, etj. Këto janë gabime në kohën e ekzekutimit. Ato çojnë në ndërprerjen e ekzekutimit të programit. Si rregull, ekzistojnë mjete softuerike të sistemit që ndihmojnë në gjetjen e gabimeve të tilla.

Një situatë tjetër është kur gabimet algoritmike nuk çojnë në ndërprerje të ekzekutimit të programit. Programi ekzekutohet deri në fund, merren disa rezultate, por nuk janë të sakta. Për korrigjimin përfundimtar të algoritmit dhe analizën e korrektësisë së tij, kryhet testimi. Një test është një variant i zgjidhjes së një problemi për të cilin rezultatet dihen paraprakisht. Si rregull, një variant testimi nuk vërteton korrektësinë e programit. Programuesi duhet të dalë me një sistem testimi, të ndërtojë një plan testimi për testimin e plotë të të gjithë programit.

Këtë e kemi thënë tashmë Një program cilësor nuk duhet të rrëzohet kurrë.

Kalimi me sukses i të gjitha testeve është kusht i domosdoshëm për korrektësinë e programit. Vini re se në këtë rast nuk është domosdoshmërisht e mjaftueshme. Sa më kompleks të jetë programi, aq më e vështirë është të ndërtohet një plan testimi gjithëpërfshirës. Përvoja tregon se edhe në programet "pronësore", gabime gjenden gjatë funksionimit. Prandaj, problemi i testimit të programit është një problem shumë i rëndësishëm dhe në të njëjtën kohë shumë kompleks.

Lloji i mësimit: një mësim për konsolidimin e njohurive dhe mësimin e materialit të ri.

Lloji i mësimit: mësim i kombinuar (ligjëratë dhe praktikë).Objektivat e mësimit: Arsimi i përgjithshëm:

të krijojë një ide te nxënësit për konceptet bazë të temës: një urdhër degëzimi, një formë jo e plotë e një komande degëzimi;

për të formuar aftësitë e zhvillimit të algoritmeve me degëzim në GRIS "Strelochka";

Zhvillimi:

zhvillimi i vizionit të informacionit për fenomenet dhe proceset e botës përreth;

Edukative:

edukimi i kulturës së informacionit të studentëve, vëmendja, saktësia, disiplina, këmbëngulja;

edukimi i interesit kognitiv të nxënësve të shkollës

Struktura e mësimit:

Unë Momenti organizativ (2 min.)

pershendetje. Kontrollimi i të pranishmëve. Tema e mësimit.

II

Anketa me shkrim 2 opsione pune

III

Shpjegimi me një prezantim

Një shembull i një problemi me detaje me dy hapa

Shpjegim me ndihmën e prezantimit "Demonstrimi i algoritmit me degëzim "Zbukuri" në mjedisin e interpretuesit Strelochka".

IV

V . Përmbledhje e mësimit (2 min.)

VI . Detyrë shtëpie (1 min.)

Gjatë orëve të mësimit:

Unë .Ora e organizimit

Tema e mësimit: " Degëzimi dhe shpimi progresiv

Temat kryesore të paragrafit:

komanda e degës;
♦ formë jo e plotë e degëzimit;
♦ shembull i një problemi me detaje me dy hapa.
(rrëshqitje 2)

II . Përditësimi i njohurive (5 min.)

Testi i lëndës:Algoritmet ciklike

opsioni 1

1. Në cilën nga figurat kontrollohet kushti:

2. Algoritmi ciklik është:


    nc
    hap
    kts

    derisa fundi të jetë përpara, përsërisni
    nc
    hap
    kthesë
    kts

    herët
    hap
    kon

    nc
    hap
    kts

4. Trupi i ciklit është:

    mënyra grafike e përshkrimit të algoritmit

    ky është një grup udhëzimesh që përshkruajnë procedurën që interpretuesi të arrijë rezultatin e zgjidhjes së problemit në një numër të kufizuar veprimesh.

    një algoritëm në të cilin disa sekuenca komandash duhet të ekzekutohen disa herë.

5. Vizatoni strukturën e ciklit (diagrami i rrjedhës)

Testi i lëndës:Algoritmet ciklike

Opsioni 2

1. Në cilën nga figurat kryhet procedura:

2. Cikli është:

  1. një algoritëm në të cilin disa sekuenca komandash duhet të ekzekutohen disa herë.

    mënyra grafike e përshkrimit të algoritmit

    kjo është një strukturë e tillë algoritmike në të cilën kryhet përsëritja e përsëritur e një (ose disa) komandave.

    ky është një grup udhëzimesh që përshkruajnë procedurën që interpretuesi të arrijë rezultatin e zgjidhjes së problemit në një numër të kufizuar veprimesh.

3. Kërkohet të vizatoni një vijë horizontale në të gjithë ekranin. Zgjidhni programin e duhur:

    herët
    hap
    kon

    nc
    hap
    kts

nc

hap

kthesë

kts

    derisa fundi të jetë përpara, përsërisni

nc

hap

kts

4. Diagrami bllok është:

    një sekuencë komandash të përfshira në strukturën algoritmike "cikli".

    mënyra grafike e përshkrimit të algoritmit

    ky është një grup udhëzimesh që përshkruajnë procedurën që interpretuesi të arrijë rezultatin e zgjidhjes së problemit në një numër të kufizuar veprimesh.

    një algoritëm në të cilin disa sekuenca komandash duhet të ekzekutohen disa herë.

5. Shkruani një program që lidh algoritmin.

III . Pjesa teorike (20 min.)

Komanda e degës

Le të njihemi me një ekip tjetër të GRIS. Quhet komanda e degës. Formati i komandës së degës është:

nëse<условие>
pastaj<серия 1>
ndryshe<серия 2>
sq.(rrëshqitje 3)

Fjala e shërbimit kv tregon fundin e një dege.

Si më parë, GRIS mund të kontrollojë vetëm dy kushte: "a ka një avantazh përpara?" apo “nuk ka fund përpara?”.<Серия>është një ose më shumë komanda të njëpasnjëshme. Nëse<условие>është e vërtetë, atëherë<серия 1>, ndryshe -<серия 2>. Një shembull është paraqitur në fig. 5.12.

(rrëshqitje 4)

Një degëzim i tillë quhet i plotë.

Forma jo e plotë e degëzimit

Në disa raste, përdoret një formë jo e plotë e komandës branch (Figura 5.13). Për shembull:

nëse buza është përpara
pastaj kthehu
sq.

(rrëshqitje 4)

Një komandë dege jo e plotë ka formatin e mëposhtëm:

nëse<условие>
pastaj<серия>
sq.

Këtu<серия>kryhet nëse<условие>i drejtë.rrëshqitje 5)

Le të hartojmë programin e fundit, relativisht kompleks për GRIS. Në këtë shembull, do të shihni se përdorimi i metodës së detajeve progresive e bën më të lehtë zgjidhjen e disa problemeve "puzzle".

Një shembull i një problemi me detajimin me dy hapa

Detyra 6. Ndërtoni një stoli të përbërë nga katrorë të vendosur përgjatë skajit të fushës. Pozicioni fillestar i HRIS është në këndin e sipërm të majtë, me drejtim në jug (Fig. 5.14).

(rrëshqitje 6)

Le ta quajmë RRESHT procedurën që vizaton një zinxhir katrorësh nga skaji në skaj i fushës. Procedura që vizaton një katror quhet KATROR. Le të shkruajmë së pari programin kryesor.

Programi i stolive
herët
bëni një RRESHT
kthesë
bëni një RRESHT
kthesë
bëni një RRESHT
kthesë
bëni një RRESHT
kon(rrëshqitje 7)

Tani le të shkruajmë procedurat SERI dhe KATROR:

(rrëshqitje 8)

Në procedurën SERIES, trupi i ciklit përmban një degë jo të plotë. Struktura e një algoritmi të tillë mund të quhet si më poshtë: një lak me degëzim të mbivendosur.

Në fig. 5.15 tregon një bllok diagram të procedurës RAD.

Përpilimi i këtij programi kërkoi dy hapa për të rafinuar algoritmin, të cilat u kryen në sekuencën e mëposhtme:

Tani ju i dini të gjitha komandat për kontrollin e ekzekutuesit grafik. Ato mund të ndahen në tre grupe: komanda të thjeshta; komanda e thirrjes së procedurës; komandat strukturore. Grupi i tretë përfshin komandat lak dhe degë.

(rrëshqitje 9)

IV . Konsolidimi i njohurive (15 min.)

Zhvillimi i algoritmit "Ornament".

V . Përmbledhje e mësimit (2 min.)

Vlerësimi i punës së nxënësve në klasë.

VI . Detyrë shtëpie (1 min.)

§31, pyetje. Duke u përgatitur për provën(rrëshqitje 10)

Pyetje dhe detyra

1. Çfarë është drill down?
2. Nga cilat komanda mund të përbëhen algoritmet ndihmëse të nivelit të fundit të detajeve?
3. Cili është formati i komandës së degës? Çfarë veprimesh të interpretuesit përcakton ai?
4. Cili është ndryshimi midis degëzimit të plotë dhe degëzimit jo të plotë?
5. Duke detajuar hap pas hapi, hartoni programet e kontrollit të ekzekutuesit grafikë për të zgjidhur detyrat e mëposhtme:
vizatoni të gjithë fushën me vija horizontale me pika;
vizatoni katrorë në të katër cepat e fushës;
vizatoni të gjithë fushën në një qelizë me një anë të barabartë me hapin.

>>Shkenca Kompjuterike: Degëzimi dhe Detajimi Sekuencial i Algoritmit

§ 31. Degëzimi dhe detajimi vijuesalgoritmi

Temat kryesore të paragrafit:

♦ komandë dege;
♦ formë jo e plotë e degëzimit;
♦ shembull i një problemi me një specifikim me dy hapa.

Komanda e degës

Le të njihemi me një ekip tjetër të GRIS. Quhet komanda e degës. Formati i komandës së degës është:

nëse<условие>
pastaj<серия 1>
ndryshe<серия 2>
sq.

Fjala e shërbimit kv tregon fundin e një dege.

Si më parë, GRIS mund të kontrollojë vetëm dy kushte: "a ka një avantazh përpara?" apo “nuk ka fund përpara?”.<Серия>është një ose më shumë komanda të njëpasnjëshme. Nëse<условие>është e vërtetë, atëherë<серия 1>, ndryshe -<серия 2>. Një shembull është paraqitur në fig. 5.12.

Një degëzim i tillë quhet i plotë.

Forma jo e plotë e degëzimit

nëse buza është përpara
pastaj kthehu
sq.


nëse<условие>
pastaj<серия>
sq.

Këtu<серия>kryhet nëse<условие>i drejtë.

Le të kompozojmë të fundit, relativisht komplekse program për GRIS. Në këtë shembull, do të shihni se përdorimi i metodës së detajeve progresive e bën më të lehtë zgjidhjen e disa problemeve "puzzle".

Një shembull i një problemi me detajimin me dy hapa

Detyra 6. Ndërtoni një stoli të përbërë nga katrorë të vendosur përgjatë skajit të fushës. Pozicioni fillestar i HRIS është në këndin e sipërm të majtë, me drejtim në jug (Fig. 5.14).

Le ta quajmë RRESHT procedurën që vizaton një zinxhir katrorësh nga skaji në skaj i fushës. Procedura që vizaton një katror quhet KATROR. Së pari, shkruani kryesoren program

Programi i stolive
herët
bëni një RRESHT
kthesë
bëni një RRESHT
kthesë
bëni një RRESHT
kthesë
bëni një RRESHT
kon

Tani le të shkruajmë procedurat SERI dhe KATROR:

Në procedurën SERIES, trupi i ciklit përmban një degë jo të plotë. Struktura e një algoritmi të tillë mund të quhet si më poshtë: një lak me degëzim të mbivendosur.

Në fig. 5.15 jepet bllok diagrami Procedurat RAD.

Përpilimi i këtij programi kërkoi dy hapa për të përmirësuar algoritmin, të cilat u kryen në sekuencën e mëposhtme:

Tani ju i dini të gjitha komandat për kontrollin e ekzekutuesit grafik. Ato mund të ndahen në tre grupe: komanda të thjeshta; komanda e thirrjes së procedurës; komandat strukturore. Grupi i tretë përfshin komandat lak dhe degë.

Shkurtimisht për kryesoren

Komanda e degës ka formatin e mëposhtëm:

nëse<условие>
pastaj<серия 1>
ndryshe<серия 2>
sq.

Nëse<условие>e vërtetë, atëherë komandat që përbëjnë<серию 1>nëse është e rreme, atëherë -<серию 2>.

Një komandë dege jo e plotë ka formatin e mëposhtëm:

nëse<условие>
pastaj<серия>
sq.

Nëse kushti është i vërtetë, atëherë<серия>, nëse është e gabuar, atëherë menjëherë shkoni te komanda tjetër e algoritmit.

Algoritmet komplekse ndërtohen lehtësisht duke detajuar hap pas hapi.

Pyetje dhe detyra

1. Çfarë është drill down?
2. Nga cilat komanda mund të përbëhen algoritmet ndihmëse të nivelit të fundit të detajeve?
3. Cili është formati i komandës së degës? Çfarë veprimesh të interpretuesit përcakton ai?
4. Cili është ndryshimi midis degëzimit të plotë dhe degëzimit jo të plotë?
5. Duke detajuar hap pas hapi, hartoni programet e kontrollit të ekzekutuesit grafikë për të zgjidhur detyrat e mëposhtme:
vizatoni të gjithë fushën me vija horizontale me pika;
vizatoni katrorë në të katër cepat e fushës;
vizatoni të gjithë fushën në një qelizë me një anë të barabartë me hapin.

Çfarë duhet të mësoni nga kapitulli 5

Për të zotëruar kontrollin e programit të një prej interpretuesve grafikë arsimorë.
Shkruani programe lineare.
Shkruani programe ciklike.
Shkruani programe që përmbajnë degë.
Përshkruani dhe përdorni algoritme ndihmëse (nënrutina).
Zbatoni metodën e detajimit sekuencial.

I. Semakin, L. Zalogova, S. Rusakov, L. Shestakova, Informatikë, klasa 9
Dërguar nga lexuesit nga faqet e internetit

Të gjitha shkencat kompjuterike në internet, lista e temave sipas lëndës, përmbledhja e abstrakteve të shkencave kompjuterike, detyrat e shtëpisë, pyetjet dhe përgjigjet, abstraktet e shkencave kompjuterike Klasa 9, planet mësimore

Përmbajtja e mësimit përmbledhje e mësimit mbështetja e prezantimit të mësimit në kuadër të metodave përshpejtuese teknologjitë ndërvepruese Praktikoni detyra dhe ushtrime workshope vetekzaminimi, trajnime, raste, kerkime diskutimi per detyrat e shtepise pyetje retorike nga nxenesit Ilustrime audio, videoklipe dhe multimedia fotografi, foto grafika, tabela, skema humori, anekdota, shaka, shëmbëlltyra komike, thënie, fjalëkryqe, citate Shtesa abstrakte artikuj patate të skuqura për fletë mashtruese kureshtare tekste mësimore fjalori bazë dhe plotësues i termave të tjera Përmirësimi i teksteve dhe mësimevekorrigjimi i gabimeve në tekstin shkollor përditësimi i një fragmenti në tekstin shkollor elementet e inovacionit në mësim duke zëvendësuar njohuritë e vjetruara me të reja Vetëm për mësuesit leksione perfekte plani kalendar për vitin rekomandimet metodologjike të programit të diskutimit Mësime të integruara

Nëse keni korrigjime ose sugjerime për këtë mësim,

Artikujt kryesorë të lidhur