Programimi i strukturuar quhet. Teknologjia e programimit strukturor. Parimet bazë të programimit të strukturuar

FGBOU VO "Shteti Mordovia

Instituti Pedagogjik me emrin M.E. evsevyeva"

Fakulteti i Fizikës dhe Matematikës

Departamenti i Informatikës dhe Inxhinierisë Kompjuterike

ESE

“Parimet e programimit të strukturuar. Strukturat algoritmike bazë dhe mbivendosjet e tyre"

Plotësuar nga: studenti gr. MDM-212

Bagdanova Yana

Saransk 2016

Prezantimi

Nga fillimi i viteve 70 të shekullit të njëzetë, kur zhvillimi i gjuhëve të programimit arriti një nivel mjaft të lartë, dhe sistemet e krijuara softuerësh arritën madhësi mjaft mbresëlënëse (qindra mijëra - miliona komanda), u bë e qartë se projektet softuerike ishte bërë shumë kompleks për dizajnimin, kodimin dhe korrigjimin e suksesshëm brenda afateve kohore të pranueshme. Programuesit që zgjidhnin probleme komplekse u përballën me problemin e rritjes së numrit dhe madhësisë së programeve në atë masë sa që procesi i zhvillimit të mëtejshëm u bë pothuajse i pamenaxhueshëm, dhe askush nga zhvilluesit nuk mund të thoshte me siguri se produkti softuer i krijuar gjithmonë bën atë që kërkohet dhe se nuk bën asgjë që nuk kërkohet. Kështu, ka lindur problemi i një ndryshimi rrënjësor në qasjet për krijimin e sistemeve të mëdha softuerike.

Bazuar në këto probleme, programuesit kryesorë të viteve '70 (Dijkstra , Wirth , Dal , xoap , Jordania , Konstantin , Myers etj.), U zhvilluan rregulla strikte për menaxhimin e projektit, të cilat u thirrënmetodologjia strukturore .

Një hap i rëndësishëm në zhvillimin e kësaj qasjeje ishin konferencat ndërkombëtare të programimit të mbajtura në vitet 1968-69. Në të dytën prej tyreEdsger Dijkstra përdorur për herë të parë terminprogramimi i strukturuar ” dhe propozoi një mënyrë thelbësisht të re për të krijuar programe. Ai e konsideroi programin si një grup nivelesh abstrakte hierarkike që lejonin:

    strukturimi i qartë i programit, i cili përmirësoi të kuptuarit e tij nga programuesit;

    të kryejë prova të korrektësisë së tij dhe në këtë mënyrë të rrisë besueshmërinë e programit;

    zvogëloni kohën e zhvillimit të programeve.

Një tjetër shtysë për të ndryshuar mënyrën se si mendojnë programuesit ishte letra e publikuarDijkstra redaktor i njërit prej botuesve shkencorë, i cili titullohej "Deklarata GOTO duhet të konsiderohet e dëmshme ". Kjo letër shkaktoi një polemikë të ashpër midis programuesve të asaj kohe, por në fund fitoi mendimi strukturor, i cili përveçDijkstra , mbështetur në mënyrë aktive nga profesori në Universitetin Teknik të CyrihutWirth dhe profesor në Universitetin e Oksforditxoap . Një rezultat i polemikave ishte prova se çdo program mund të shkruhet duke përdorur vetëm një sekuencë të thjeshtë deklaratash, një konstrukt përsëritës siderisa ( mirupafshim ) dhe konstruksioni i zgjedhurrast ( zgjedhje ), dhe operatorishkoj ( shkoni në ) nuk është një konstrukt i nevojshëm kontrolli në programimin e strukturuar. Fatkeqësisht, mosmarrëveshjet në lidhje me operatorinshkoj kishte një "efekt anësor" negativ - mjaft shpesh programimi pashkoj u identifikua me të gjithë programimin e strukturuar. Megjithatë, qëllimet e programimit të strukturuar janë shumë më globale dhe serioze.

1. BAZAT E TEKNOLOGJISË STRUKTURORE TË PROGRAMIMIT

Programim i strukturuar - metodologjia e zhvillimit software, i cili bazohet në paraqitjen e programit në formën e një strukture hierarkike të blloqeve. Propozuar në vitet 70 të shekullit XX. E. Dijkstroy, zhvilluar dhe plotësuar nga N. Wirth (Fig. 1).

Edsger Wiebe Dijkstra (1930 - 2002) - Shkencëtar holandez, idetë e të cilit ndikuan në zhvillimin e industrisë kompjuterike. I njohur si krijuesi i algoritmit për gjetjen e rrugës më të shkurtër në një grafik, një nga themeluesit e programimit të strukturuar. Në vitin 1972 ai fitoi çmimin Turing.

Niklaus Wirth (1934) - Shkencëtar zviceran, shkencëtar kompjuteri, një nga teoricienët më të famshëm në zhvillimin e gjuhëve të programimit, profesor i shkencave kompjuterike, fitues i çmimit Turing në 1984. Zhvilluesi kryesor i gjuhëve programuese Pascal, Modula-2, Oberon .

Oriz. 1. Pionierët e programimit të strukturuar janë E. Dijkstra dhe N. Wirth.

Metodologjia e programimit të strukturuar u shfaq si rezultat i kompleksitetit në rritje të detyrave të zgjidhura në kompjuter, dhe ndërlikimit përkatës të softuerit: në vitet '70 të shekullit XX. vëllimi dhe kompleksiteti i programeve ka arritur një nivel të tillë që zhvillimi "intuitiv" (i pastrukturuar) i programeve, që ishte normë në më shumë kohë të hershme pushoi së përmbushuri nevojat e praktikës. Programet po bëheshin shumë komplekse për t'u mirëmbajtur siç duhet, kështu që kërkohej njëfarë sistematizimi i procesit të zhvillimit dhe strukturës së programit.

OperatoriSHKO ( operatori i kërcimit të pakushtëzuar ). Përdorimi i gabuar dhe i pamenduar i tranzicioneve arbitrare në tekstin e programit çoi në programe konfuze, të strukturuara dobët (të ashtuquajturat.spageti coda ), sipas tekstit të të cilit ishte pothuajse e pamundur të kuptohej rendi i ekzekutimit dhe ndërvarësia e fragmenteve.

Programimi i strukturuar bazohet në parimezbërthimi i njëpasnjëshëm detyrat dhei qëllimshëm sajstrukturimin në komponentë individualë. Metodat e programimit të strukturuar janë një grup parimesh teknike dhe organizative të dizajnimit të sistemit të produkteve softuerike.

Metodat tipike të programimit të strukturuar janë:

    dizajn nga lart-poshtë (dizajn nga lart poshtë);

    modulare (procedurale)programimit ;

    kodimi strukturor .

Sipas metodologjisë së programimit të strukturuar:

1. Çdo program është një strukturë e ndërtuar nga tre lloje strukturat bazë:

    ekzekutimi sekuencial - një ekzekutim i vetëm i operacioneve në rendin në të cilin janë shkruar në tekstin e programit;

    degëzimi - një ekzekutim i vetëm i një prej dy ose më shumë operacioneve, në varësi të përmbushjes së një kushti të caktuar;

    ciklit - ekzekutimi i përsëritur i të njëjtit operacion derisa të plotësohet një kusht i caktuar (kushti për vazhdimin e ciklit).

Në program, strukturat bazë mund të futen në njëra-tjetrën në mënyrë arbitrare, por nuk ofrohen mjete të tjera për të kontrolluar sekuencën e operacioneve.

2. Përsëritja e fragmenteve të programit (ose jo përsëritja, por përfaqësimi logjikisht koherent blloqe llogaritëse) mund të shkruhet në formënënprogramet (procedurat ose funksionet). Në këtë rast, në tekstin e programit kryesor, në vend të fragmentit të vendosur në nënprogram, futet instruksioni i thirrjes së nënprogramit. Kur ekzekutohet një instruksion i tillë, ekzekutohet nënprogrami i thirrur, pas së cilës ekzekutimi i programit vazhdon me instruksionin që ndjek udhëzimin për thirrjen e nënprogramit.

3. Zhvillimi i programit kryhet hap pas hapi, duke përdorur metodën "lart-poshtë".

Së pari, shkruhet teksti i programit kryesor, në të cilin, në vend të çdo fragmenti logjik të tekstit të lidhur, futet një thirrje në nënprogramin që do të ekzekutojë këtë fragment. Në vend të nënprogrameve reale, të punës, "priza ' të cilat nuk bëjnë asgjë. Programi që rezulton kontrollohet dhe korrigjohet. Pasi programuesi është i bindur se nënprogramet thirren në sekuencën e duhur (d.m.th., struktura e përgjithshme e programit është e saktë), rutinat e cunguara zëvendësohen në mënyrë sekuenciale me ato reale dhe zhvillimi i secilës nënprogram kryhet në të njëjtën mënyrë. si program kryesor. Zhvillimi përfundon kur nuk ka mbetur asnjë "cung" i vetëm që nuk është hequr. Një sekuencë e tillë siguron që në çdo fazë të zhvillimit programuesi të merret njëkohësisht me një grup të dukshëm dhe të kuptueshëm të fragmenteve dhe mund të jetë i sigurt se struktura e përgjithshme e të gjitha niveleve më të larta të programit është e saktë. Kur mirëmbahen dhe bëhen ndryshime në program, bëhet e qartë se cilat procedura duhen ndryshuar dhe ato bëhen pa prekur pjesë të programit që nuk lidhen drejtpërdrejt me to. Kjo siguron që kur bëni ndryshime dhe rregulloni gabimet, një pjesë e programit që aktualisht është jashtë zonës së vëmendjes së programuesit nuk do të dështojë.

Ndjekja e parimeve të programimit të strukturuar i bëri tekstet e programeve, madje edhe ato mjaft të mëdha, normalisht të lexueshme. Kuptimi i programeve është bërë shumë më i lehtë, është bërë i mundur zhvillimi i programeve në një mënyrë normale industriale, kur një program mund të kuptohet pa shumë vështirësi jo vetëm nga autori i tij, por edhe nga programuesit e tjerë. Kjo bëri të mundur zhvillimin e sistemeve softuerike mjaft të mëdha për atë kohë nga forcat e ekipeve të zhvillimit dhe ruajtjen e këtyre komplekseve për shumë vite, edhe përballë ndryshimeve të pashmangshme në përbërjen e personelit.

Metodologjia e zhvillimit të softuerit strukturor është njohur si "formalizimi më i fortë i viteve '70". Pas kësaj, fjala "strukturor" u bë modë në industri dhe filloi të përdoret kudo ku ishte e nevojshme dhe ku nuk ishte e nevojshme. Punimet u shfaqën në "projektim strukturor", "provim strukturor", "projektim strukturor" etj.

Përparësitë e programimit të strukturuar përfshijnë si më poshtë:

1. Programimi strukturor ju lejon të reduktoni ndjeshëm numrin e opsioneve për ndërtimin e një programi sipas të njëjtit specifikim, gjë që redukton ndjeshëm kompleksitetin e programit dhe e bën më të lehtë për zhvilluesit e tjerë që ta kuptojnë atë.

2. Në programet e strukturuara, operatorët e lidhur logjikisht janë vizualisht më afër, dhe ata me lidhje të dobët janë më larg, gjë që bën të mundur që të bëhet pa grafikët e rrjedhës dhe forma të tjera grafike të paraqitjes së algoritmeve (në fakt, vetë programi është grafiku i tij i rrjedhës).

3. Procesi i testimit dhe korrigjimit të programeve të strukturuara është thjeshtuar shumë.

Le të shqyrtojmë më në detaje metodat kryesore të programimit të strukturuar.

1.1. Qëllimet dhe parimet e programimit të strukturuar

Qëllimet e Programimit të Strukturuar janë:

    Sigurimi i disiplinës së programimit në procesin e krijimit të sistemeve softuerike .

    Përmirësimi i lexueshmërisë së programit . Lexueshmëria përmirësohet nëse ndiqen rregullat e mëposhtme:

    • shmangni përdorimin e konstrukteve gjuhësore me semantikë jo të dukshme;

      të përpiqet të lokalizojë veprimin e strukturave të kontrollit dhe përdorimin e strukturave të të dhënave;

      hartoni një program në mënyrë që të mund të lexohet nga fillimi në fund pa kërcime kontrolli në një faqe tjetër.

    Përmirësimi i efikasitetit të programit . Kjo mund të arrihet duke e strukturuar programin në module në mënyrë që gabimet të mund të gjenden dhe korrigjohen lehtësisht, dhe që teksti i çdo moduli të mund të rishkruhet në mënyrë të pavarur nga të tjerët për të rritur efikasitetin.

    Përmirësimi i besueshmërisë së programit . Kjo mund të arrihet nëse programi është i lehtë për t'u testuar nga fundi në fund dhe nuk krijon probleme për organizimin e procesit të korrigjimit. Kjo sigurohet nga strukturimi i mirë i programit kur ai ndahet në module dhe duke ndjekur rregullat e shkrimit të programeve të lexueshme.

    Reduktimi i kohës dhe kostos zhvillimin e softuerit . Kjo ndodh kur çdo programues në një ekip zhvillimi bëhet në gjendje të shkruajë dhe korrigjojë më shumë kode se më parë.

Kryesorparimet e programimit të strukturuar të përmbledhura në tabelë. 1.

Tabela 1. Parimet e Programimit të Strukturuar

Parimi

Shpjegim

Abstraksioni

Abstraksioni i lejon programuesit të imagjinojë zgjidhjen e dëshiruar për një problem pa pasur nevojë të marrë parasysh shumë detaje në një moment. Programuesi mund ta shikojë programin në shtresa: niveli i sipërm tregon shumë abstraksion, duke e bërë më të lehtë shikimin e dizajnit, ndërsa niveli i poshtëm tregon detajet e imta të zbatimit.

Formaliteti

Përdorimi i një qasjeje strikte metodologjike në zhvillimin e programit, e cila është baza për shndërrimin e programimit nga improvizimi në një disiplinë inxhinierike. Ky parim ofron një bazë për të vërtetuar korrektësinë e programeve, pasi lejon studimin e programeve (algoritmeve) si objekte matematikore.

"Përça dhe sundo"

Ndarja e programit në fragmente (module) të veçanta që janë të lehta për t'u menaxhuar dhe lejojnë korrigjimin dhe testimin e pavarur.

Renditja hierarkike

Struktura e ndarjes në pjesë nuk është më pak e rëndësishme sesa vetë fakti i një ndarjeje të tillë. Ky parim parashtron kërkesën për strukturimin hierarkik të marrëdhënieve ndërmjet moduleve paketë softuerike, gjë që e bën më të lehtë arritjen e qëllimeve të programimit të strukturuar.

1.2. Dizajn nga lart-poshtë

Specifikimi i detyrës shërben si pikënisje për krijimin e një programi. Është e nevojshme të kuptohet se çfarë veprimesh duhet të ndërmerren për të zgjidhur problemin, t'i përshkruani ato në gjuhë natyrore dhe në një nivel mjaft të lartë abstraksioni.

Specifikimi i detyrës është plani i tij kryesor. Prej tij kalojmë në program, duke përmirësuar gradualisht përshkrimin.

Përsosja gradual e projektit quhetMetoda e projektimit nga lart poshtë ( hap pas hapi osedizajn nga lart-poshtë ).

Shembulli 1 Si shembull, merrni parasysh një projekt për veshjen e fëmijëve.

Vendimi:

1. Qëllimi parësor :

Maskohem.

2. Specifikimi i qëllimit në hapin e parë :

Vishni gjysmën e poshtme.

Vishni gjysmën e sipërme.

2.1. Gjysma e poshtme mund të vendoset në dy faza:

Vishni pantallona.

Vishni çorape dhe çizme.

2.2. Gjysma e sipërme gjithashtu mund të vishet në dy faza:

Vish një këmishë.

Vish një xhaketë.

3. Drafti përfundimtar duket kështu:

Vishni pantallona.

Vishni çorape.

Vishni çizmet.

Vish një këmishë.

Vish një xhaketë.

Metoda e projektimit nga lart-poshtë përfshin një zbërthim vijues të funksionit të përgjithshëm të përpunimit të të dhënave në elementë të thjeshtë funksionalë (“lart-poshtë”). Si rezultat, ndërtohet një skemë hierarkike -struktura funksionale e algoritmit ( FSA ), duke pasqyruar përbërjen dhe vartësinë e funksioneve individuale (Fig. 2).

Shtojca 1

Shtojca n

Funksioni 1

Funksioni 2

Funksioni m

Departamenti 11

Departamenti 1 k

Nënfraksioni m 1

Nënfraksioni m 2

Nënfraksioni mp

Objektivi 1

Nëngoli 11

Nëngoli 1s

Synimi2

nëngoli2 1

nëngoli2 q

Oriz. 2. Struktura funksionale e aplikacionit

Sekuenca e veprimeve për zhvillimin e aplikacionit FSA është si më poshtë:

    të përcaktuaraqëllimet e automatizimit fusha lëndore dhe hierarkia e tyre (qëllim-nënqëllim);

    instaluarpërbërjen e aplikacioneve (detyrat e përpunimit) që sigurojnë zbatimin e qëllimeve të përcaktuara;

    të specifikohetnatyra e marrëdhënies aplikacionet dhe karakteristikat e tyre kryesore (informacione për zgjidhjen e problemeve, kohën dhe shpeshtësinë e zgjidhjes, kushtet për ekzekutim, etj.);

    përcaktohen të nevojshme për zgjidhjen e problemevefunksionet e përpunimit të të dhënave ;

    kryerzbërthimi i funksioneve të përpunimit deri në kompleksitetin e nevojshëm strukturor të zbatuar nga paketa e propozuar e mjeteve.

Kjo strukturë aplikimi pasqyron më të rëndësishmet -përbërjen dhemarrëdhëniet e funksioneve përpunimin e informacionit për zbatimin e aplikacionit, megjithëse nuk zbulon logjikën e ekzekutimit të secilit funksion individual, kushtet ose shpeshtësinë e thirrjeve të tyre.

1.3. Programim modular

Programim modular është një pasojë e natyrshme e dizajnit nga lart-poshtë dhe është se programi ndahet në pjesë -modulet , zhvilluar veçmas.

Moduli është pjesë e pavarur e programit, e cila ka një qëllim specifik dhe ofron funksionet e paracaktuara përpunimi i pavarur nga të tjerët modulet e softuerit. Moduli përbëhet nga një grup elementësh funksionalë të ndërlidhur logjikisht.

Në programim, një modul është i veçantënënprogram , dhe shpesh thirren nënprogrametprocedurat oseprocedurat e funksionit . Prandaj quhet edhe programimi modularprocedurale .

Kur krijojnë produkte softuerësh, ato dallohenmodule të ripërdorshme , kryhet tipizimi dhe unifikimi i tyre, për shkak të të cilave zvogëlohet koha dhe kostot e punës për zhvillimin e një produkti softuer në tërësi.

Disa produkte softuerike përdorin module nga bibliotekat e gatshme të nënprodukteve standarde, procedurave, funksioneve, objekteve, metodave të përpunimit të të dhënave.

Ndër modulet e shumta janë:

    moduli i kokës - menaxhon lëshimin e produktit softuerik (ekziston në njëjës);

    moduli i kontrollit – ofron thirrje për përpunim në module të tjera;

    modulet e punës - kryejnë funksionet e përpunimit;

    modulet e shërbimit dhe bibliotekat , shërbimet komunale - Zbatimi i funksioneve të shërbimit.

Në punën e produktit softuer, aktivizohen modulet e nevojshme softuerike. Modulet e kontrollit vendosin sekuencën e thirrjeve për ekzekutimin e modulit të ardhshëm. Komunikimi i informacionit të moduleve sigurohet nëpërmjet përdorimit të një baze të dhënash të përbashkët ose transferimit të të dhënave ndërmodule përmes variablave të shkëmbimit.

Çdo modul mund të konfigurohet si një skedar vetë-ruajtës; për funksionimin e produktit softuer, është e nevojshme prania e moduleve softuerike në përbërje të plotë.

Moduli duhet të ketë sa vijonVetitë :

    një hyrje dhe një dalje - në hyrje, moduli i programit merr një grup të caktuar të dhënash fillestare, kryen përpunim kuptimplotë dhe kthen një grup të dhënash rezultati, d.m.th. zbaton parimin standardIPO ( Input-Proces-Output hyrje-proces-dalje );

    plotësia funksionale - moduli kryen një listë të operacioneve të rregulluara për zbatimin e çdo funksioni individual në tërësinë e tij, të mjaftueshme për të përfunduar përpunimin e nisur;

    pavarësia logjike - rezultati i punës së modulit të programit varet vetëm nga të dhënat fillestare, por nuk varet nga puna e moduleve të tjera;

    lidhje të dobëta informacioni me module të tjera softuerike – shkëmbimi i informacionit ndërmjet moduleve duhet të minimizohet sa më shumë që të jetë e mundur;

    e parashikueshme për nga madhësia dhe kompleksiteti i kodit të programit .

Modulet përmbajnë:

    përcaktimi i të dhënave të disponueshme për përpunim;

    operacionet e përpunimit të të dhënave;

    skemat e ndërlidhjes me modulet e tjera.

Çdo modul përbëhet ngaspecifikimet dhetrupi . Specifikimet përcaktoni rregullat për përdorimin e modulit dhetrupi - një mënyrë për të zbatuar procesin e përpunimit.

Funksionet e të njëjtit lloj zbatohen nga të njëjtat module. Funksioni i nivelit të lartë ofrohet nga moduli kryesor; ai menaxhon ekzekutimin e nënfunksioneve me të cilat korrespondojnë nën-modulet.

Gjatë përcaktimit të një grupi modulesh që zbatojnë funksionet e një algoritmi të caktuar, duhet të merren parasysh sa vijon:

    çdo modul thirret për ekzekutim nga një modul i nivelit më të lartë dhe, pas përfundimit të punës, kthen kontrollin tek moduli që e ka thirrur;

    marrja e vendimeve kryesore në algoritëm çohet në nivelin më të lartë të mundshëm në hierarki;

    për të përdorur të njëjtin funksion në vende të ndryshme të algoritmit, krijohet një modul, i cili thirret për ekzekutim sipas nevojës.

Si rezultat i përsosjes së mëtejshme të algoritmit, askema funksionale-modulare ( FMS ) algoritmi i aplikimit, i cili është bazë për programim (Fig. 2).

Përbërja dhe lloji i moduleve të programit, qëllimi i tyre dhe natyra e përdorimit në program përcaktohen kryesisht nga mjetet.

Niveli i dytë i hierarkisë programet

Niveli i parë i hierarkisë programet

Moduli i kokës

(programi i serverit)

Moduli i kontrollit 1

(menaxheri i programit 1)

modul kontrolli n

(prog. menaxher n)

Moduli 1A

(nënprogrami 1A)

Moduli 1B

(nënprogrami 1B)

Moduli 1W

(nënrutinë 1 W )

Moduli 0A

(nënrutinë 0A)

Moduli 0B

(nënrutinë 0B)

Moduli nA

(nënrutinë nA)

Moduli nB

(nënrutinë nB)

Moduli nW

(nënprogrami nW)

Niveli i tretë i hierarkisë programet

Oriz. 3. Struktura funksionale-modulare e algoritmit të aplikimit

Shumica e programeve moderne të aplikimit të përdoruesit fundor funksionojnë në një mënyrë ndërvepruese të ndërveprimit me përdoruesin në mënyrë të tillë që të shkëmbehen mesazhe që ndikojnë në përpunimin e të dhënave. Në modalitetin e dialogut, nën ndikimin e përdoruesit, hapen funksionet e përpunimit, ndryshohen vetitë e objektit, konfigurohen parametrat e daljes së informacionit, etj. Procesi i dialogut kontrollohet sipas skenarit të krijuar, për të cilin janë përcaktuar:

    pikat (momenti, gjendja) e fillimit të dialogut;

    iniciatori i dialogut është një person ose një produkt softuer;

    parametrat dhe përmbajtja e dialogut - mesazhet, përbërja dhe struktura e menysë, format e ekranit, etj.;

    reagimi i produktit softuerik në fund të dialogut.

Më e përshtatshme për krijimin e proceseve të dialogut dhe ndërfaqes së përdoruesit përfundimtarmjetet e zhvillimit të softuerit të orientuar drejt objektit .

1.4. Kodimi strukturor

Praktika e programimit ka treguar nevojën për një metodologji të bazuar shkencërisht për zhvillimin dhe dokumentimin e algoritmeve dhe programeve. Kjo metodologji duhet të ketë të bëjë me analizën e problemit origjinal, duke e ndarë atë në pjesë mjaftueshëm të pavarura dhe duke i programuar këto pjesë sa më të pavarura nga njëra-tjetra. Kjo metodologji ështëkodimi strukturor ( programimit ).

Kodimi strukturor është një metodë e shkrimit të programeve që kanë një strukturë të caktuar dhe për këtë arsye janë të lehta për t'u kuptuar, testuar, modifikuar dhe përdorur.

Kjo metodë bazohet në përdorimin e një grupi të vogël strukturash të thjeshta kontrolli (operatorët strukturorë ), funksionimi i saktë i të cilit është i lehtë për t'u analizuar dhe vendosur. Në këtë rast, disa operatorë përbëhen nga të tjerë të vendosur në to.

Vetia strukturore e operatorëve është seçdo operator ka një hyrje dhe një dalje . Një program i ndërtuar nga deklarata të strukturuara quhetstrukturuar .

Baza e programimit të strukturuar ështëteorema e strukturimit , formuluar nga matematikanët italianë K. Bohm dhe G. Jacopini në 1966

Teorema përcakton se pavarësisht se sa komplekse është detyra, skema e algoritmit për zgjidhjen e saj (dhe, në përputhje me rrethanat, programi) gjithmonë mund të përfaqësohet si një përbërje e tre llojeve të blloqeve të mbivendosur:

    në vijim (fillim-fund fillim-fund ),

    degëzimi (nëse - pastaj - tjetër nëse-atëherë-ndryshe ),

    sythe me parakusht (derisa mirupafshim ).

Me fjalë të tjera, këto struktura elementare kanëplotësia funksionale , d.m.th. çdo algoritëm mund të zbatohet si përbërje e këtyre tre strukturave.

Në praktikë, kjo teorema shmang përdorimin e operatorëve të tranzicionitshkoj , që i bën algoritmet dhe programet vizuale dhe të lehta për t'u kuptuar.

Llojet e strukturave kryesore të kontrollit të algoritmit janë paraqitur në fig. katër.

1. Struktura si "në vijim » (Fig. 4, a) formohet nga një sekuencë veprimesh, S 1, S 2, …, sn duke ndjekur njëra pas tjetrës:

ekzekutuarS 1;

ekzekutuarS 2;

ekzekutuarsn .

Në një proces kompjuterik linear, të gjitha operacionet kryhen në mënyrë sekuenciale sipas renditjes që janë shkruar. Një shembull tipik i një procesi të tillë është një skemë standarde llogaritëse e përbërë nga tre faza:

    futja e të dhënave fillestare;

    llogaritja me formula;

    rezultati i prodhimit.

Në gjuhëPaskalin një strukturë e tillë është e mbyllur në kllapat e operatoritFilloni ... fund :

Filloni

S 1;

S 2;

...

sn ;

fund

Oriz. katër. Strukturat algoritmike bazë:

a) në vijim (Filloni fund ); b) degëzimi (Nëse Pastaj Ndryshe ); në) lak me parakusht (Derisa Bëni )

2. Struktura si " degëzimi » (NESE - PASTAJ - TJETER ) (Fig. 4,b ) – ofron, në varësi të rezultatit të kontrollit, kushtetR , e cila merr një nga dy vlerat booleanpo (E vërtetë ) oseJo (I rremë ), zgjedhja e njërës prej mënyrave alternative të algoritmit:

nëse R

pastaj ekzekutoni S 1

përndryshe ekzekutoni S 2 .

Çdo rrugë të çon në një dalje të përbashkët, kështu që algoritmi do të vazhdojë pavarësisht se cila rrugë është zgjedhur.

Në gjuhëPaskalin

Nëse P

Pastaj S 1

Ndryshe S 2;

3. Struktura si "lak me parakusht » (Fig. 4, ) - siguron ekzekutimin e përsëritur të veprimit S varësisht se çfarë vlere merr kushti logjik R:

deri saR

përmbushinS .

Cikli përfundon kur kushti R nuk kryhet.

Në gjuhë Paskalin një strukturë e tillë ka formatin e mëposhtëm:

Derisa P Bëni

S ;

Grupi i zgjeruar i strukturave elementare algoritmike përfshin gjithashtu strukturat e mëposhtme të kontrollit (Fig. 5).

4. Struktura si " degë e shkurtuar » (NESE ATEHERE ) (Fig. 5,a ) – nëse rezultati i kontrollit të gjendjesR merr vlerënpo (E vërtetë ), atëherë kryhet veprimiS ; përndryshe, ky veprim anashkalohet dhe kontrolli transferohet në strukturën e mëposhtme:

nëse R

pastaj ekzekutoni S 1 .

Në gjuhëPaskalin një strukturë e tillë ka formatin e mëposhtëm:

Nëse P

Pastaj S ;

5 . Struktura si " zgjedhja është e ndryshme » (Fig. 5,b ) janë një version i zgjeruar i një strukture siNESE - PASTAJ - TJETER . Këtu kushti që duhet kontrolluar ështëR mund të marrë jo dy vlera logjike, por disa vlera rendore, për shembull, 1, 2, ...,n . NëseR = i , atëherë veprimi do të kryhetSi . Nëse vleraR do të dalë jashtë kufijve të vlerave të vlefshme, atëherë veprimi kryhetS (version i shkurtër)zgjedhje » nuk merret asnjë masë dhe kontrolli kalon në strukturën tjetër. Në gjuhëPaskalin një strukturë e tillë ka formatin e mëposhtëm:

rast P Nga

1:S1;

2:S2;

n: Sn

Ndryshe S

fundi;

Oriz. pesë. Strukturat elementare algoritmike shtesë:

a) degë e shkurtuar (Nëse Pastaj ); b) zgjedhja është e ndryshme (rast Nga Ndryshe );
në) lak me kusht (Përsëriteni Derisa ); G) lak me parametër (Për te ( Poshtë për të ) – Bëni )

6. Struktura si " lak me kusht » (Fig. 5, ) - siguron ekzekutimin e përsëritur të veprimitS derisa të plotësohet kushtiR .

Në gjuhëPaskalin një strukturë e tillë ka formatin e mëposhtëm:

Përsëriteni

S

Derisa P ;

7. Struktura si " lak me parametër » (Fig. 5,G ) - siguron një ekzekutim të paracaktuar të përsëritur të një veprimiS . Në këtë rast, operacionet e mëposhtme tipike kryhen në mënyrë sekuenciale këtu:

    vendosja e vlerës fillestare të parametrit të lakut të përdorur (për shembull, nëse ndryshorja e ciklit është i, atëherë i caktohet vlera i 1, d.m.th. i:=i 1);

    kryerjen e veprimeve S parashikuar në trupin e lakut;

    ndryshimi i parametrit të lakut, i cili siguron llogaritjen e rezultatit me të dhëna të reja fillestare (për shembull, nëse parametri i lakut i ndryshimet në rritje i 3, i:=ii 3);

    kontrollimi i vlerës aktuale të parametrit të lakut me një vlerë përfundimtare të dhënë ( i<=i 2);

    kalimi në përsëritjen e trupit të lakut nëse parametri i lakut nuk e ka tejkaluar vlerën përfundimtare, përndryshe - ekzekutimi i veprimeve të mëposhtme ose prodhimi i rezultatit.

Në gjuhëPaskalin një strukturë e tillë ka formatin e mëposhtëm:

Për E ndryshueshme := i 1 Për (poshtë) i 3 Bëni

S ;

Duke marrë parasysh skemën e programit, është e mundur të veçohen pjesë (fragmente) në të që janë mjaft të thjeshta dhe të kuptueshme në strukturë. Përfaqësimi i këtyre fragmenteve si blloqe të zgjeruara lehtëson shumë perceptimin e algoritmit (dhe më vonë, programit) në tërësi.

Deklaratat strukturore zakonisht përdoren në fazat e hershme të dizajnimit të programit nga lart-poshtë.

Në këtë mënyrë,programimi i strukturuar bazuar nëstrukturë modulare produkt softuerik dhetipike (bazë ) strukturat qeverisëse algoritmet e përpunimit të të dhënave të moduleve të ndryshme softuerike.

GJETJET

    Programimi i strukturuar është një metodologji e zhvillimit të softuerit të bazuar në paraqitjen e një programi në formën e një strukture blloku hierarkik. Propozuar në vitet 70 të shekullit XX. E. Dijkstroy, zhvilluar dhe plotësuar nga N. Wirth. Metodat tipike të programimit të strukturuar janë: dizajni nga lart-poshtë (dizajni nga lart poshtë); programim modular (procedural); kodimi strukturor.

    Qëllimet e programimit të strukturuar janë: sigurimi i disiplinës së programimit, rritja e efikasitetit dhe besueshmërisë së programeve, ulja e kohës dhe kostos së zhvillimit të softuerit. Parimet bazë të programimit të strukturuar: abstraksioni, formaliteti, "përça dhe sundo", renditja hierarkike.

    Metoda e projektimit nga lart-poshtë përfshin zbërthimin vijues të funksionit të përgjithshëm të përpunimit të të dhënave në elementë të thjeshtë funksionalë ("lart-poshtë"). Mjetet për të arritur qëllimet në nivelin e mëparshëm shndërrohen në qëllime të nivelit më të ulët.

    Kodimi strukturor është një metodë e shkrimit të programeve që kanë një strukturë specifike. Ai bazohet në përdorimin e një grupi të vogël deklarimesh strukturore, korrektësia e të cilave është e lehtë për t'u analizuar dhe vërtetuar. Në këtë rast, disa operatorë përbëhen nga të tjerë të vendosur në to.

    Themeli i programimit të strukturuar është teorema e strukturimit, e formuluar nga matematikanët italianë C. Bohm dhe G. Iacopini në vitin 1966. Teorema përcakton se sado komplekse të jetë detyra, skema e algoritmit për zgjidhjen e saj (dhe, në përputhje me rrethanat, programi) mund të përfaqësohet gjithmonë si një përbërje tre lloje blloqesh të mbivendosur: vijues (fillim-fund - fillim-fund), degëzim (nëse-atëher-tjetër - nëse-atëher-tjetër), cikle me një parakusht (ndërsa - ndërsa ).

* E. Dijkstra dha përkufizimin e mëposhtëm: Programimi i strukturuar është një disiplinë që programuesi ia imponon vetes.».

Programim i strukturuar - një nga përparimet më të mëdha në teknologjinë e programimit. Megjithëse pothuajse të gjithë kanë idenë më të përgjithshme dhe mjaft të paqartë të programimit të strukturuar, nuk ka një përkufizim të qartë të pranuar përgjithësisht. Programimi i strukturuar synon të shkruajë programe me kompleksitet minimal, ta bëjë programuesin të mendojë qartë, ta bëjë programin më të lehtë për t'u kuptuar.

Teksti i programit duhet të jetë i tillë që të mund të lexohet "nga lart poshtë". Përdorimi i pakufizuar i deklaratave GO TO shkel këtë kusht, prandaj programimi i strukturuar shpesh quhet programim jo-GO TO.

Mund të jepni shembuj të programeve që nuk përmbajnë GO TO , dhe janë të rregulluara mjeshtërisht në një shkallë sipas nivelit të foleve të deklaratave, por janë krejtësisht të pakuptueshme dhe ka programe të tjera që përmbajnë GO TO dhe janë ende të kuptueshme. Pra, prania ose mungesa e GO TO është një tregues i dobët i cilësisë së programit (ilustrimi në D. Knuth). E megjithatë: më e vështira për t'u kontrolluar dhe potencialisht e paqëndrueshme është operatori i pakushtëzuar i degës - GO TO .

Struktura e trupit të modulit dhe konstruksionet bazë të programimit të përdorura duhet të jenë potencialisht rezistente ndaj dështimeve të harduerit, shtrembërimeve të të dhënave burimore dhe gabimeve të programit.

Çdo program mund të sintetizohet në bazë të strukturave themelore elementare të tre llojeve:

1. Sekuencë e thjeshtë. 2. Kushtet (alternativat).

3. Përsëritje (cikle, përsëritje). Një nga dy ose të dyja llojet janë të mundshme:

Bëj "derisa" Mos "ende jo"

4. Ju mund të shtoni një dizajn të katërt - një zgjedhje (ndërprerës).

Blloqet përcaktohen në mënyrë rekursive: drejtkëndëshat përfaqësojnë blloqe ndërtimi të ndërthurura të përdorura në vend të një drejtkëndëshi.

Ndërtimet elementare të listuara, për shembull, në gjuhën Pascal zbatohen si më poshtë:

Operatori i kushtëzuar NËSE log. exp. PASTAJ operatori 1 TJETER operatori 2;

NËSE log. shprehje PASTAJ operatori;

Përsëritje (cikle, përsëritje)

a) Bëj "ndërsa" WHILE kusht vazhdimi BËJ operatori;

b) Mos "ende" PERSERITET operatori DERI kushti i përfundimit;

c) Lak me përsëritje FOR K:=B1 TE B2 DO operatori;

PËR K:=B2 POSHTË B1 BËJ operatori;

Zgjedhja (ndërprerës) RAST gjendje OF

N1, ... Nk : operatori 1;

Ni , ... Nm : operatori f;

FUND ;

Në gjuhën FoxBASE, këto konstruksione zbatohen si:

Operatori i kushtëzuar NËSE log. shprehje

operatorët1

[TJETËR]

operatorët2]

ENDIF

Cikli BEJ NDERKOHE shprehje

operatorët

FUNDO

Zgjedhja (ndërprerës) BËJ RAST

RAST log. shprehje 1

operatorët

RAST log. shprehje2

Operatorët

RAST log. Shprehje f

Operatorët

FUNDCASE

Çdo strukturë karakterizohet nga një pikë e vetme e transferimit të kontrollit në strukturë (hyrje e vetme) dhe një pikë e vetme daljeje nga struktura.

Këto ndërtime kanë një vlerë sistematizuese dhe disiplinuese. Thjeshtësia e strukturave fillestare të programimit të strukturuar parandalon shfaqjen e lidhjeve komplekse të informacionit dhe transferimet e frikësuara të kontrollit.

Me një rritje të strukturës së moduleve, kompleksiteti i programeve zvogëlohet, dukshmëria e tyre rritet, gjë që ndihmon në uljen e numrit të gabimeve. Megjithatë, për të përmirësuar cilësinë e programeve, duhet paguar me memorie dhe kohë shtesë për zbatimin e tyre në kompjuter.

Struktura e programit varet nga gjuha e programimit e përdorur. Mjetet moderne të zhvillimit të softuerit janë gjuhët "më të mira" të strukturuara të programimit. Nga gjuhët e zakonshme të programimit, Pascal, Basic, FoxBASE konsiderohen më të përshtatshmet. Programimi i strukturuar, për shembull, në gjuhën e asamblesë është pothuajse i pamundur. Vetë fakti i përdorimit të gjuhës së asamblesë tregon se programi është shkruar kryesisht në gjuhën e makinës.

Programimi strukturor fokusohet në komunikimin me njerëzit, jo me një makinë, dhe promovon shkrimin e programeve që janë një zgjidhje e thjeshtë dhe e qartë për një problem.

Është e rëndësishme që një programues, edhe kur fillon të programojë logjikën, të mendojë në terma të konstrukteve bazë bazë strukturore.

Pozicioni në deklaratën SHKO TE duhet të jetë: shmangni përdorimin e GO TO kudo që është e mundur, por jo me koston e qartësisë së programit. Shpesh ka kuptim të përdoret SHKO TE për të dalë nga një lak ose modul, për të kaluar te konstruksionet ON (për shembull, në gjuhën bazë) ose për të shmangur folenë shumë të thellë të pirunëve, veçanërisht pasi kërcimi është i mëpasshëm (ndodhet më poshtë) deklaratat e programit, dhe strukturore programi vazhdon të jetë lehtësisht i lexueshëm nga lart poshtë. Përdorimi më i keq i deklaratës GO TO është transferimi i kontrollit në një deklaratë më të lartë (më parë) në tekstin e programit.

Përveç kësaj, për ta bërë programin më të lehtë për t'u lexuar, teksti i tij duhet të ndahet fizikisht në pjesë, duke shtuar vija boshe midis seksioneve, ndarjeve. Teksti i programit duhet të shkruhet me ndërrime të sakta, në mënyrë që ndërprerjet në sekuencën e ekzekutimit të gjurmohen lehtësisht. Deklaratat e ekzekutueshme për një qëllim të çdo moduli duhet të vendosen në një faqe të pajisjes printuese.

Programet e para përbëheshin nga disa dhjetëra - qindra instruksione makinerie. Komplekset softuerike dhe sistemet e informacionit përfshinin nga disa dhjetëra mijëra deri në miliona operatorë në gjuhë të nivelit të lartë. Me rritjen e vëllimit të mjeteve softuerike, procesi i korrigjimi, ato. zbulimin dhe korrigjimin e gabimeve. Praktika ka treguar se është pothuajse e pamundur të shkruash një program pak a shumë të madh pa gabime. Për më tepër, edhe gjatë funksionimit të programeve të përfunduara, zbulohen gabime të humbura gjatë korrigjimit. Gabimet ndahen në disa kategori.

Më e thjeshta janë gabimet sintaksore. Ato shoqërohen me drejtshkrim të gabuar të konstrukteve të gjuhës dhe zbulohen menjëherë, në momentin kur përpiluesi përpiqet të përkthejë programin në gjuhën e makinës.

Nëse të gjitha gabimet e sintaksës dhe lidhjes korrigjohen, atëherë programi fillon të ekzekutohet (faza vraponi). Megjithatë, kjo fazë mund të ndërpritet nga një veprim i pavlefshëm (p.sh., pjesëto me zero), në të cilin rast flitet për një gabim në kohën e ekzekutimit. (Gabimet në kohën e ekzekutimit). Ose programi ka numëruar deri në fund, por rezultatet e marra janë të pasakta. Kjo mund të shkaktohet nga gabime algoritmesh, ose gabime në organizimin e komunikimeve ndër-module, gabime në konvertimin e tipit të të dhënave ose gabime të thjeshta shkrimi (për shembull, zeroja humbi kur shkruhej numri 100 dhe programi i përdorur 10 në llogaritje).

Gabimet në kohën e ekzekutimit zbulohen duke zgjidhur një sërë rastesh testimi (ekzekutimi i programit), rezultati për të cilin dihet paraprakisht. Si rregull, koha e shpenzuar për gjetjen e gabimeve të tilla tejkalon ndjeshëm kohën e kaluar për të shkruar vetë programin dhe për të rregulluar gabimet sintaksore. Zhvillimi i konceptit të programimit është i lidhur ngushtë me problemin e reduktimit të mbetjeve gjatë shkrimit të një programi.

Po zhvillohen bazat teorike të programimit të strukturuar, teoria e vërtetimit të korrektësisë së një programi dhe programimi i bazuar në dëshmi.

Koncepti i programimit të strukturuar nënkupton një qasje të tillë të bazuar shkencërisht për ndërtimin e një programi dhe për mundësitë e një gjuhe programimi, e cila do të reduktojë ndjeshëm sasinë e gabimeve të mundshme. Një zhvillim i rëndësishëm i konceptit është arritur në gjuhën e programimit të strukturuar Paskalin. Thelbi i programimit të strukturuar është se të dhënat janë, para së gjithash, abstraksione të objekteve reale dhe mundësisht të formulohen si struktura abstrakte që mund të mos kenë një zbatim specifik në një gjuhë programimi. Në procesin e ndërtimit të një programi, paraqitja e të dhënave rafinohet gradualisht pas përsosjes së algoritmit.

Një gjuhë programimi e strukturuar duhet të ofrojë aftësinë për të ndërtuar llojet e të dhënave tuaja. Në nivelin më të ulët janë strukturat themelore të parapërcaktuara në gjuhë (për shembull: llojet skalar, regjistrimi, grupi dhe grupi). Nga strukturat themelore, si nga molekulat, ndërtohen struktura të ndërlikuara. Variablat e strukturës themelore mund të ndryshojnë vetëm vlerën, duke ruajtur llojin ose grupin e vlerave të vlefshme dhe madhësinë që ata zënë. Strukturat e ndërlikuara karakterizohen nga një ndryshim jo vetëm në kuptim, por edhe në vetë formën e përfaqësimit, përbërjen e strukturave themelore të përfshira në to. Menaxhimi dinamik i memories zbatohet në nivelin e treguesit, dhe të dhënat dinamike kombinohen në një strukturë peme (pemë).

Përveç kësaj, ekzistojnë kërkesa të caktuara për shtypjen e të dhënave, për shkak të të cilave mund të përcaktohet lloji i çdo shprehjeje ose variabli pa pasur nevojë për llogaritje, d.m.th. në fazën e përkthimit. Në këtë rast, një numër i madh gabimesh të vështira për t'u gjetur në kohën e ekzekutimit mund të shmangen duke i zbuluar ato në fazën e përkthimit të programit.

Koncepti i programimit të strukturuar përfshin jo vetëm përdorimin e gjuhëve të veçanta dhe aplikimin e një stili të caktuar programimi. Para së gjithash, kjo është filozofia e programimit, e cila ndikon edhe në një aspekt të tillë si metodologjia për mësimdhënien e programuesve.

Vihet re se programimi është një aktivitet i gjerë dhe i larmishëm, që shpesh kërkon punë komplekse mendore. Është e gabuar të mendohet se programimi mund të reduktohet në përdorimin e recetave të gatshme bazuar në një përshkrim sistematik të blloqeve më të thjeshta. Nxënësit duhet të zhvillojnë aftësinë për të menduar në mënyrë krijuese dhe këtu roli i mësuesit është jashtëzakonisht i rëndësishëm, duke treguar se si e bën këtë dhe atë. Kreativiteti nuk i nënshtrohet kanuneve, metodave dhe teknologjive. Përzgjedhja e kujdesshme dhe shqyrtimi i shembujve karakteristikë është adoptuar si metodë mësimore. Është e nevojshme të merren parasysh programe komplekse dhe të gjata, të cilat shpesh hasen në praktikë dhe janë më të përshtatshmet për të identifikuar atë pronë të pakapshme por të rëndësishme të quajtur stil programimit. Analiza e programeve të gjata është një ushtrim në artin e leximit të tyre, i cili nuk është më pak i rëndësishëm se aftësia për të shkruar programe.

Kontrolloni pyetjet dhe detyrat

5.1. Emërtoni dhe përshkruani shkurtimisht pjesët e komandës së programit.

5.2. Baza për programin e funksionimit të IOI është ____; jepini një përkufizim.

5.3. Çfarë nënkuptohet me programim në kode?

5.4. Çfarë dini për gjuhën e asamblesë?

5.5. Cilat gjuhë programimi quhen të pavarura nga makina?

5.6. Si është i kuptueshëm për një kompjuter "përkthimi" i një programi të shkruar në një gjuhë algoritmike në një kod objekti?

5.7. Çfarë nënkuptohet me programim modular dhe një modul të veçantë?

5.8. Çfarë dini për programimin e strukturuar?

Programim i strukturuar- një metodologji programimi që synon krijimin e programeve logjikisht të thjeshta dhe të kuptueshme. Programimi i strukturuar bazohet në supozimin se logjika dhe kuptueshmëria e programit lehtëson zhvillimin, vërtetimin e korrektësisë dhe mirëmbajtjen pasuese të programit, si dhe siguron besueshmërinë e tij.

Parimet karakteristike të programimit të strukturuar janë:

· programimi nga lart-poshtë një metodë e zhvillimit të programeve në të cilat programimi kryhet duke përdorur metodën "lart-poshtë", nga e përgjithshme në detaje;

· programimi modular, në të cilën nën-detyrat relativisht të pavarura janë programuar si module të veçanta programi;

· përdorimi i tre strukturave të kontrollit në programim (ndjekim, zgjedhje, përsëritje). Struktura vijuese supozon një sekuencë të natyrshme të ekzekutimit të deklaratave. Struktura e zgjedhjes jepet nga skema “if-atëher-else” (deklarata if). Operatori i ciklit lidhet me strukturën e përsëritjes;

· Refuzimi i transfertave të pakushtëzuara të kontrollit dhe përdorimi i kufizuar i variablave globalë.

Programimi i strukturuar bazohet në një teoremë që është vërtetuar rigorozisht në teorinë e programimit. Thelbi i tij është se një algoritëm për zgjidhjen e çdo problemi logjik mund të përbëhet vetëm nga strukturat e mëposhtme. , degëzim, cikël. Ato quhen struktura algoritmike bazë. Në fakt, ne dhe më herët në të gjithë shembujt e shqyrtuar të programeve u përmbahen parimeve të programimit të strukturuar.

Më poshtë është një sekuencë lineare veprimesh (Fig. 2.6):

Oriz. 2.6. në vijim

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

degëzimi alternativë algoritmike. Kontrolli transferohet në një nga dy blloqet në varësi të vërtetës ose falsitetit të gjendjes. Pastaj ka një dalje në vazhdimin e përgjithshëm (Fig. 2.7):

Oriz. 2.7. degëzimi

Cikli përsëritja e një grupi të caktuar veprimesh sipas kushtit. Ekzistojnë dy lloje të ciklit. E para cikli me parakusht (Fig. 2.8):

Oriz. 2.8. Lak me parakusht

Ndërsa kushti është i vërtetë, seria që formon trupin e lakut ekzekutohet.

Lloji i dytë i strukturës ciklike lak me kusht (Fig. 2.9):

Oriz. 2.9. Lak me kusht postar

Këtu trupi i lakut i paraprin kushtit të lakut. Trupi i lakut përsërit ekzekutimin e tij nëse kushti është i rremë. Përsëritja përfundon kur kushti bëhet i vërtetë.

Teorikisht, vetëm lloji i parë i ciklit është i nevojshëm dhe i mjaftueshëm. lak 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. Në të vërtetë, trupi i lakut deri do të ekzekutohet të paktën një herë, pasi gjendja kontrollohet pas përfundimit të saj. Dhe për loop-while, një opsion i tillë është i mundur kur trupi i lakut nuk do të ekzekutohet as edhe një herë. Prandaj, në çdo gjuhë programimi, njeriu mund të kufizohet vetëm në ciklin while. Megjithatë, në disa raste, përdorimi i ciklit-to është më i përshtatshëm, dhe për këtë arsye përdoret.

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 goto në programe e privon atë nga struktura e tij, dhe për rrjedhojë, nga 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.

Një algoritëm kompleks përbëhet nga struktura bazë të ndërlidhura. Këto struktura mund të lidhen në dy mënyra: konsistente dhe folezuar. Kjo situatë është e ngjashme me atë që vërejmë në inxhinierinë elektrike, ku çdo qark elektrik kompleks arbitrarisht mund të zbërthehet në seksione të lidhura seri dhe paralele.

Strukturat algoritmike të mbivendosura nuk janë analoge me përçuesit e lidhur paralelisht. Këtu, analogjia me kukullat fole të vendosura brenda njëra-tjetrës është më e përshtatshme. Nëse blloku që përbën trupin e ciklit është në vetvete një strukturë ciklike, atëherë do të thotë se ka cikle të mbivendosur. 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, prezantohet koncepti i thellësisë së foleve të sytheve. Në mënyrë të ngjashme, degët mund të mbivendosen brenda njëra-tjetrës.

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ë dalje. Një bllok diagram jo standard është i lexueshëm dobët, dukshmëria e algoritmit humbet.

Gjuhët e programimit Pascal dhe C quhen gjuhë programimi të strukturuara. Ata 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ë ndërrimet e linjës, të cilat duhet t'u binden 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 tij të jashtëm.

Metoda strukturore e algorithmizimit nuk është vetëm një formë e përshkrimit të algoritmit, por është edhe mënyra e të menduarit të një programuesi . Kur krijoni një algoritëm, duhet të përpiqeni ta kompozoni atë nga strukturat standarde. Duke përdorur një analogji ndërtimi, mund të themi se metoda strukturore e ndërtimit të një algoritmi është e ngjashme me montimin e një ndërtese nga seksionet standarde, në krahasim me palosjen tullë për tullë.

Një tjetër teknikë e rëndësishme teknologjike e programimit të strukturuar është zbërthimi i problemit që do të zgjidhet në nën-detyra. pjesë të problemit origjinal që janë më të thjeshta 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ë": fillimisht ndërtohet algoritmi kryesor, pastaj algoritmet ndihmëse;

"nga poshtë lart": së pari, përpilohen algoritmet ndihmëse, pastaj ato kryesore.

Qasja e parë quhet edhe metoda e detajimit sekuencial, e dyta metoda e montimit.

Metoda e montimit 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 dhe funksioneve. Me detajimin sekuencial, fillimisht ndërtohet algoritmi kryesor dhe më pas futen në të thirrjet për algoritme 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ë, e kështu me radhë. Algoritmet ndihmëse të nivelit më të ulët përbëhen vetëm nga komanda të thjeshta.

Metoda e detajimit të njëpasnjëshëm përdoret në çdo dizajn të objekteve komplekse. Kjo është sekuenca logjike e natyrshme e të menduarit të projektuesit: thellimi gradual në detaje. Në rastin tonë, ne po flasim gjithashtu për dizajnim, por jo pajisje teknike, por algoritme. Është praktikisht e pamundur të ndërtohet një algoritëm mjaft i ndërlikuar në një mënyrë tjetër.

Në metodën e detajimit sekuencial, fillimisht analizohet problemi origjinal. Ka nëndetyra. Është ndërtuar një hierarki e nën-detyrave të tilla. Më pas përpilohen algoritmet (ose programet), duke filluar nga algoritmi kryesor (programi kryesor), më pas algoritmet ndihmëse (nënprogramet) me një thellim të njëpasnjëshëm të nivelit, derisa të marrim algoritme të përbëra nga komanda të thjeshta.

Hapi i parë i detajimit. Së pari, ne përshkruajmë të gjitha nënprogramet e nevojshme, duke treguar vetëm kokat 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.

Përdorimi i programimit të strukturuar ju lejon të rritni shpejtësinë e shkrimit të programeve dhe të lehtësoni korrigjimin e programit të shkruar. Programimi strukturor është i mundur edhe në gjuhët e programimit asembler, ku nuk ka operatorë strukturorë të ngjashëm me operatorët strukturorë të gjuhëve programuese C, PASCAL, PL/M.

Programimi për kompjuterët universal filloi me programimin në kodet e makinerisë, më pas u shfaqën dhe filluan të zhvillohen gjuhët e nivelit të lartë, më pas Dijkstroy zhvilloi parimet e programimit të strukturuar, programimi i objekteve zëvendësoi programimin e strukturuar dhe programimi vizual aktualisht po zhvillohet në mënyrë aktive.

Programimi për mikrokontrolluesit ndjek kryesisht të njëjtën rrugë. Kalimi nga faza në fazë varet nga burimet e brendshme të disponueshme të mikrokontrolluesve. Disa vite më parë, përdorimi i gjuhëve të nivelit të lartë ishte i pamundur për shkak të sasisë së vogël të memories së brendshme të programit. (Në modelet e lira të mikrokontrolluesve, kjo situatë ruhet ende.) Aktualisht, me ardhjen e mikrokontrolluesve dhe me një memorie të brendshme prej disa dhjetëra kilobajtësh, shfaqet mundësia e projektimit të objektit.

Aktualisht, ekzistojnë dy mënyra për të shkruar programe: nga poshtë-lart dhe nga lart-poshtë. Kur shkruani një program nga poshtë lart, është e pamundur të filloni korrigjimin e programit pa shkruar të gjithë programin. Kur shkruani një program nga lart poshtë, i cili është i detyrueshëm për programim të strukturuar, në çdo fazë të shkrimit të një programi, ai mund të përkthehet dhe ekzekutohet, ndërsa mund të gjurmoni të gjitha veprimet algoritmike të programit të shkruar deri në atë kohë. Procesi i shkrimit të një programi nuk është i ndryshëm nga procesi i krijimit të një algoritmi. Për më tepër, këto faza të krijimit të një programi mund të kombinohen. Veprimi algoritmik i kryer shfaqet në emrin e nënprogramit. Për shembull:

Ideja themelore pas programimit të strukturuar është se ekzistojnë vetëm katër deklarata të strukturuara. Duke përdorur këta operatorë strukturorë, mund të ndërtoni një program arbitrarisht kompleks.

Operatori i parë i strukturës quhet zinxhiri linear i operatorëve. Çdo detyrë mund të ndahet në disa nën-detyra. Ekzekutimi i nëndetyrave mund t'i besohet një nënprogrami, emri i të cilit mund (dhe duhet) të pasqyrojë nëndetyrën që duhet të zgjidhë ky nënprogram. Në kohën e shkrimit të algoritmit (dhe programit) të nivelit të lartë, ne nuk jemi të interesuar se si do të zgjidhet ky problem, kështu që në vend të një nënprogrami të vërtetë, vendosëm