Strukturirano programiranje se zove. Tehnologija strukturalnog programiranja. Osnovni principi strukturiranog programiranja

FGBOU VO „Država Mordovija

Pedagoški zavod po imenu M.E. evsevjeva"

Fizičko-matematički fakultet

Katedra za informatiku i računarsku tehniku

ESSAY

“Principi strukturiranog programiranja. Osnovne algoritamske strukture i njihove superpozicije"

Završio: student gr. MDM-212

Bagdanova Yana

Saransk 2016

Uvod

Do početka 70-ih godina dvadesetog veka, kada je razvoj programskih jezika dostigao prilično visok nivo, a kreirani softverski sistemi dostigli prilično impresivne veličine (stotine hiljada - miliona komandi), postalo je očigledno da softverski projekti postalo previše složeno za uspješan dizajn, kodiranje i otklanjanje grešaka u prihvatljivim vremenskim okvirima. Programeri koji su rješavali složene probleme suočili su se s problemom rasta broja i veličine programa do te mjere da je dalji razvojni proces postao gotovo neizvodljiv, a niko od programera nije mogao sa sigurnošću reći da kreirani softverski proizvod uvijek radi ono što je potrebno, i da ne radi ništa što nije potrebno. Tako se pojavio problem radikalne promjene pristupa kreiranju velikih softverskih sistema.

Na osnovu ovih problema, vodeći programeri 70-ih (Dijkstra , Wirth , Dal , xoap , Jordan , Konstantin , Myers itd.), razvijena su stroga pravila za upravljanje projektima, koja su tzvstrukturalna metodologija .

Važan korak u razvoju ovog pristupa bile su međunarodne konferencije o programiranju održane 1968-69. Na drugom od njihEdsger Dijkstra prvi put upotrebio terminstrukturirano programiranje ” i predložio fundamentalno novi način kreiranja programa. Program je smatrao skupom hijerarhijskih apstraktnih nivoa koji omogućavaju:

    jasno strukturirati program, što je poboljšalo njegovo razumijevanje od strane programera;

    izvršiti dokaze o njegovoj ispravnosti i time povećati pouzdanost programa;

    smanjiti vrijeme razvoja programa.

Još jedan poticaj da se promijeni način razmišljanja programera bilo je objavljeno pismoDijkstra urednik jednog od naučnih izdavača, koji je nosio naziv "GOTO izjavu treba smatrati štetnom ". Ovo pismo izazvalo je oštru polemiku među tadašnjim programerima, ali je na kraju pobedilo strukturalno mišljenje, koje je poredDijkstra , aktivno podržan od strane profesora na Tehničkom univerzitetu u CirihuWirth i profesor na Univerzitetu Oksfordxoap . Jedan rezultat kontroverze bio je dokaz da se bilo koji program može napisati koristeći samo jednostavan niz naredbi, iterativni konstrukt kao što jedok ( ćao ) i konstrukcija po izboruslučaj ( izbor ), i operateraidi ( idi ) nije neophodna kontrolna konstrukcija u strukturiranom programiranju. Nažalost, sporovi oko operateraidi imao jednu negativnu "nuspojavu" - vrlo često programiranje bezidi poistovetio se sa svim strukturiranim programiranjem. Međutim, ciljevi strukturiranog programiranja su mnogo globalniji i ozbiljniji.

1. OSNOVE TEHNOLOGIJE STRUKTURNOG PROGRAMIRANJA

Strukturirano programiranje - metodologija razvoja softver, koji se zasniva na predstavljanju programa u obliku hijerarhijske strukture blokova. Predloženo 70-ih godina XX veka. E. Dijkstroy, koju je razvio i dopunio N. Wirth (slika 1).

Edsger Wiebe Dijkstra (1930 - 2002) - holandski naučnik, čije su ideje uticale na razvoj računarske industrije. Poznat kao tvorac algoritma za pronalaženje najkraćeg puta na grafu, jedan od osnivača strukturiranog programiranja. Godine 1972. osvojio je Turingovu nagradu.

Niklaus Wirth (1934) - švajcarski naučnik, informatičar, jedan od najpoznatijih teoretičara u razvoju programskih jezika, profesor informatike, dobitnik Turingove nagrade 1984. Vodeći programer programskih jezika Pascal, Modula-2, Oberon .

Rice. 1. Pioniri strukturiranog programiranja su E. Dijkstra i N. Wirth.

Metodologija strukturiranog programiranja nastala je kao rezultat sve veće složenosti zadataka koji se rješavaju na računarima, i odgovarajuće komplikacije softvera: 70-ih godina XX vijeka. obim i složenost programa dostigli su takav nivo da je „intuitivni“ (nestrukturirani) razvoj programa, što je bila norma u više rano vrijeme prestao da zadovoljava potrebe prakse. Programi su postajali previše složeni da bi se pravilno održavali, pa je bila potrebna određena sistematizacija procesa razvoja i strukture programa.

OperaterIDI ( operator bezuslovnog skoka ). Nepravilna i nepromišljena upotreba proizvoljnih prijelaza u tekstu programa dovela je do zbunjujućih, loše strukturiranih programa (tzv.špageti koda ), prema čijem tekstu je bilo gotovo nemoguće razumjeti redoslijed izvršenja i međuzavisnost fragmenata.

Strukturirano programiranje se zasniva na principimasekvencijalna dekompozicija zadaci isvrsishodan onastrukturiranje na pojedinačne komponente. Metode strukturiranog programiranja su skup tehničkih i organizacionih principa sistemskog dizajna softverskih proizvoda.

Tipične metode strukturiranog programiranja su:

    top-down dizajn (dizajn od vrha do dna);

    modularni (proceduralno)programiranje ;

    strukturno kodiranje .

Prema metodologiji strukturiranog programiranja:

1. Svaki program je struktura izgrađena od tri vrste osnovne strukture:

    sekvencijalno izvršenje - jednokratno izvršavanje operacija onim redosledom kojim su napisane u tekstu programa;

    grananje - jedno izvođenje jedne od dvije ili više operacija, u zavisnosti od ispunjenja nekog datog uslova;

    ciklus - ponavljano izvođenje iste operacije dok se ne ispuni neki zadati uslov (uslov za nastavak ciklusa).

U programu se osnovne strukture mogu proizvoljno ugniježditi jedna u drugu, ali nisu predviđeni drugi načini kontrole redoslijeda operacija.

2. Ponavljanje fragmenata programa (ili ne ponavljanje, ali predstavljanje logički koherentno računarski blokovi) može se napisati u oblikupotprogrami (procedure ili funkcije). U ovom slučaju, u tekst glavnog programa, umjesto fragmenta smještenog u potprogram, ubacuje se instrukcija za pozivanje potprograma. Kada se takva instrukcija izvrši, izvršava se pozvani potprogram, nakon čega se izvršavanje programa nastavlja instrukcijom koja slijedi nakon instrukcije za pozivanje potprograma.

3. Razvoj programa se odvija korak po korak, metodom "odozgo prema dolje".

Prvo se upisuje tekst glavnog programa u koji se umjesto svakog povezanog logičkog fragmenta teksta ubacuje poziv potprograma koji će izvršiti ovaj fragment. Umjesto pravih, radnih potprograma, "utikači ' koji ne rade ništa. Rezultirajući program se provjerava i otklanja greške. Nakon što se programer uvjeri da su potprogrami pozvani u ispravnom redoslijedu (tj. da je opća struktura programa ispravna), stubne rutine se uzastopno zamjenjuju stvarnim, a razvoj svakog potprograma se izvodi na isti način kao glavni program. Razvoj se završava kada ne ostane niti jedan "stub" koji nije uklonjen. Takav slijed osigurava da u svakoj fazi razvoja programer istovremeno radi sa vidljivim i razumljivim skupom fragmenata i može biti siguran da je opća struktura svih viših nivoa programa ispravna. Prilikom održavanja i izmjena programa postaje jasno koje procedure treba promijeniti, a one se rade bez utjecaja na dijelove programa koji nisu direktno povezani s njima. Ovo osigurava da prilikom unošenja izmjena i ispravljanja grešaka neki dio programa koji je trenutno izvan područja pažnje programera neće propasti.

Praćenje principa strukturiranog programiranja učinilo je da tekstovi programa, čak i prilično veliki, budu normalno čitljivi. Razumijevanje programa je postalo mnogo lakše, postalo je moguće razvijati programe u normalnom industrijskom modu, kada program bez većih poteškoća može razumjeti ne samo njegov autor, već i drugi programeri. To je omogućilo da se snagama razvojnih timova razviju softverski sistemi koji su za to vrijeme bili prilično veliki, te da se ovi kompleksi održavaju dugi niz godina, čak i pred neizbježnim promjenama u sastavu osoblja.

Metodologija strukturalnog razvoja softvera prepoznata je kao "najjača formalizacija 70-ih godina". Nakon toga, riječ "strukturalni" postala je moderna u industriji i počela se koristiti svuda gdje je bilo potrebno i gdje nije bilo potrebno. Pojavili su se radovi o "projektu konstrukcija", "konstruktivnom ispitivanju", "projektu konstrukcija" itd.

Prednosti strukturiranog programiranja uključuju sljedeće:

1. Strukturno programiranje vam omogućava da značajno smanjite broj opcija za pravljenje programa prema istoj specifikaciji, što značajno smanjuje složenost programa i olakšava drugim programerima da ga razumiju.

2. U strukturiranim programima, logički povezani operatori su vizuelno bliži, a slabo povezani operatori udaljeniji, što omogućava da se bez dijagrama toka i drugih grafičkih oblika prikaza algoritama (u stvari, sam program predstavlja sopstveni dijagram toka).

3. Proces testiranja i otklanjanja grešaka strukturiranih programa je znatno pojednostavljen.

Razmotrimo detaljnije glavne metode strukturiranog programiranja.

1.1. Ciljevi i principi strukturiranog programiranja

Ciljevi strukturiranog programiranja su:

    Osiguravanje programske discipline u procesu kreiranja softverskih sistema .

    Poboljšanje čitljivosti programa . Čitljivost se poboljšava ako se poštuju sljedeća pravila:

    • izbjegavajte korištenje jezičnih konstrukcija s neočiglednom semantikom;

      nastojati lokalizirati djelovanje kontrolnih struktura i korištenje struktura podataka;

      dizajnirati program tako da se može čitati od početka do kraja bez kontrolnih skokova na drugu stranicu.

    Poboljšanje efikasnosti programa . To se može postići strukturiranjem programa u module tako da se greške mogu lako pronaći i ispraviti, te da se tekst bilo kojeg modula može prepisati nezavisno od ostalih radi povećanja efikasnosti.

    Poboljšanje pouzdanosti programa . Ovo se može postići ako se program lako testira od kraja do kraja i ne stvara probleme za organizaciju procesa otklanjanja grešaka. To se osigurava dobrim strukturiranjem programa kada je podijeljen na module i pridržavanjem pravila za pisanje čitljivih programa.

    Smanjenje vremena i troškova razvoj softvera . Ovo se dešava kada svaki programer u razvojnom timu postane sposoban da napiše i otkloni više koda nego ranije.

Mainprincipi strukturiranog programiranja sažeto u tabeli. 1.

Tabela 1. Principi strukturiranog programiranja

Princip

Objašnjenje

Apstrakcija

Apstrakcija omogućava programeru da zamisli željeno rješenje problema bez potrebe da u trenutku uzme u obzir mnoge detalje. Programer može pogledati program u slojevima: gornji nivo pokazuje mnogo apstrakcije, što olakšava sagledavanje dizajna, dok donji nivo pokazuje fine detalje implementacije.

Formalnost

Upotreba strogog metodološkog pristupa u izradi programa, koji je osnova za transformaciju programiranja iz improvizacije u inženjersku disciplinu. Ovaj princip daje osnovu za dokazivanje ispravnosti programa, jer omogućava proučavanje programa (algoritama) kao matematičkih objekata.

"Zavadi pa vladaj"

Podjela programa na zasebne fragmente (module) kojima je lako upravljati i koji omogućavaju nezavisno otklanjanje grešaka i testiranje.

Hijerarhijsko uređenje

Struktura podjele na dijelove nije ništa manje važna od same činjenice takve podjele. Ovaj princip postavlja zahtjev za hijerarhijskom strukturiranjem odnosa između modula softverski paket, što olakšava postizanje ciljeva strukturiranog programiranja.

1.2. Top-Down dizajn

Specifikacija zadatka služi kao početna tačka za kreiranje programa. Potrebno je razumjeti koje radnje treba poduzeti da se problem riješi, opisati ih prirodnim jezikom i na dovoljno visokom nivou apstrakcije.

Specifikacija zadatka je njegov primarni plan. Od njega prelazimo na program, postepeno usavršavajući opis.

Postepeno usavršavanje projekta se zovemetoda dizajna odozgo prema dolje ( korak po korak ilitop-down dizajn ).

Primjer 1 Kao primjer, razmotrite projekat oblačenja djece.

Odluka:

1. Primarna namjena :

Obući se.

2. Specifikacija cilja u prvom koraku :

Nosite donju polovinu.

Nosite gornju polovinu.

2.1. Donja polovica se može staviti u dvije faze:

Obuci pantalone.

Obuj čarape i čizme.

2.2. Gornja polovina se takođe može oblačiti u dve faze:

Obuci košulju.

Obuci jaknu.

3. Završni nacrt izgleda ovako:

Obuci pantalone.

Obuj čarape.

Obuj čizme.

Obuci košulju.

Obuci jaknu.

Metoda dizajna odozgo prema dolje uključuje sekvencijalnu dekompoziciju cjelokupne funkcije obrade podataka na jednostavne funkcionalne elemente („top-down“). Kao rezultat, izgrađena je hijerarhijska šema -funkcionalna struktura algoritma ( FSA ), koji odražava sastav i podređenost pojedinih funkcija (slika 2).

Dodatak 1

Dodatak n

Značajka 1

Funkcija 2

Funkcija m

Odjeljenje 11

Odjeljenje 1 k

Podfrakcija m 1

Podfrakcija m 2

Podfrakcija mp

Cilj 1

Podcilj 11

Podcilj 1s

Target2

podcilj2 1

podcilj2 q

Rice. 2. Funkcionalna struktura aplikacije

Redoslijed radnji za razvoj FSA aplikacije je sljedeći:

    odlučanciljevi automatizacije predmetne oblasti i njihova hijerarhija (cilj-podcilj);

    instaliransastav aplikacija (zadaci obrade) koji osiguravaju realizaciju postavljenih ciljeva;

    treba preciziratipriroda odnosa aplikacije i njihove glavne karakteristike (informacije za rješavanje problema, vrijeme i učestalost rješenja, uslovi za izvršenje itd.);

    određuju se neophodni za rješavanje problemafunkcije obrade podataka ;

    izvedenodekompozicija procesnih funkcija do potrebne strukturalne složenosti koju implementira predloženi alat.

Ova struktura aplikacije odražava najvažnije -kompozicija iodnos funkcija obrada informacija za implementaciju aplikacije, iako ne otkriva logiku izvršavanja svake pojedinačne funkcije, uslove ili učestalost njihovog poziva.

1.3. Modularno programiranje

Modularno programiranje je prirodna posljedica dizajna odozgo prema dolje i to je da je program razbijen na dijelove −moduli , razvijeno odvojeno.

Modul je samostalan dio programa, koji ima određenu svrhu i pruža unapred definisane funkcije obrada nezavisno od drugih softverski moduli. Modul se sastoji od logički međusobno povezanih skupa funkcionalnih elemenata.

U programiranju, modul je posebanpotprogram , a podprogrami se često pozivajuprocedure iliprocedure funkcije . Stoga se naziva i modularno programiranjeproceduralni .

Prilikom kreiranja softverskih proizvoda ističu semoduli za višekratnu upotrebu , vrši se njihova tipizacija i unifikacija, zbog čega se smanjuju troškovi vremena i rada za razvoj softverskog proizvoda u cjelini.

Neki softverski proizvodi koriste module iz gotovih biblioteka standardnih potprograma, procedura, funkcija, objekata, metoda obrade podataka.

Među brojnim modulima su:

    modul glave - upravlja lansiranjem softverskog proizvoda (postoji u jednini);

    upravljački modul – omogućava poziv drugim modulima za obradu;

    radni moduli - obavljaju funkcije obrade;

    servisni moduli i biblioteke , komunalne usluge - Implementirati servisne funkcije.

U radu softverskog proizvoda aktiviraju se potrebni softverski moduli. Upravljački moduli postavljaju sekvencu poziva za izvršenje sljedećeg modula. Informaciona komunikacija modula obezbjeđuje se korištenjem zajedničke baze podataka ili međumodulskim prijenosom podataka putem razmjenskih varijabli.

Svaki modul se može konfigurirati kao datoteka koja se sama pohranjuje; za funkcionisanje softverskog proizvoda neophodno je prisustvo softverskih modula u punom sastavu.

Modul mora imati sljedećesvojstva :

    jedan ulaz i jedan izlaz - na ulazu programski modul prima određeni skup početnih podataka, vrši smislenu obradu i vraća jedan skup podataka o rezultatu, tj. implementira standardni principIPO ( Ulaz-Proces-Izlaz ulaz-proces-izlaz );

    funkcionalna kompletnost - modul vrši listu propisanih operacija za realizaciju svake pojedinačne funkcije u cjelini, dovoljnu za završetak započete obrade;

    logička nezavisnost - rezultat rada programskog modula zavisi samo od početnih podataka, ali ne zavisi od rada ostalih modula;

    slabe informacione veze sa drugim softverskim modulima – razmjenu informacija između modula treba minimizirati što je više moguće;

    predvidljive veličine i složenosti programskog koda .

Moduli sadrže:

    utvrđivanje podataka dostupnih za obradu;

    operacije obrade podataka;

    šeme međusobnog povezivanja sa ostalim modulima.

Svaki modul se sastoji odspecifikacije itijelo . Specifikacije definirati pravila za korištenje modula, itijelo - način implementacije procesa obrade.

Funkcije istog tipa implementiraju isti moduli. Funkciju najvišeg nivoa obezbeđuje glavni modul; on upravlja izvršavanjem podfunkcija kojima odgovaraju podmoduli.

Prilikom određivanja skupa modula koji implementiraju funkcije određenog algoritma, treba uzeti u obzir sljedeće:

    svaki modul se poziva na izvršenje od strane modula višeg nivoa i, nakon što završi svoj rad, vraća kontrolu modulu koji ga je pozvao;

    donošenje glavnih odluka u algoritmu se podiže na najviši mogući nivo u hijerarhiji;

    za korištenje iste funkcije na različitim mjestima algoritma, kreira se jedan modul koji se poziva na izvršenje po potrebi.

Kao rezultat daljeg usavršavanja algoritma, afunkcionalno-modularna shema ( FMS ) aplikativni algoritam, koji je osnova za programiranje (slika 2).

Sastav i tip programskih modula, njihova namjena i priroda upotrebe u programu u velikoj mjeri određuju alati.

Drugi nivo hijerarhije programe

Prvi nivo hijerarhije programe

Modul glave

(serverski program)

Kontrolni modul 1

(menadžer programa 1)

upravljački modul n

(prog. manager n)

Modul 1A

(potprogram 1A)

Modul 1B

(potprogram 1B)

1W modul

(podprogram 1 W )

Modul 0A

(potprogram 0A)

Modul 0B

(potprogram 0B)

Modul nA

(potprogram nA)

nB modul

(potprogram nB)

nW modul

(potprogram nW)

Treći nivo hijerarhije programe

Rice. 3. Funkcionalno-modularna struktura aplikativnog algoritma

Većina modernih aplikativnih programa za krajnje korisnike radi u interaktivnom načinu interakcije s korisnikom na način da se razmjenjuju poruke koje utiču na obradu podataka. U dijalog modu, pod uticajem korisnika, pokreću se funkcije obrade, menjaju se svojstva objekta, konfigurišu izlazni parametri informacija itd. Proces dijaloga se kontroliše prema kreiranom scenariju za koji je definisano:

    tačke (trenutak, stanje) početka dijaloga;

    inicijator dijaloga je osoba ili softverski proizvod;

    parametri i sadržaj dijaloga - poruke, sastav i struktura menija, ekranske forme itd.;

    reakcija softverskog proizvoda na kraj dijaloga.

Najprikladniji za kreiranje dijaloških procesa i krajnjeg korisničkog interfejsaobjektno orijentisani alati za razvoj softvera .

1.4. Strukturno kodiranje

Praksa programiranja pokazala je potrebu za naučno utemeljenom metodologijom za razvoj i dokumentovanje algoritama i programa. Ova metodologija treba da se bavi analizom izvornog problema, dijeleći ga na dovoljno nezavisne dijelove i programirajući te dijelove što je moguće neovisnije jedan od drugog. Ova metodologija jestrukturno kodiranje ( programiranje ).

Strukturno kodiranje je metoda pisanja programa koji imaju određenu strukturu i stoga su laki za razumijevanje, testiranje, modificiranje i korištenje.

Ova metoda se temelji na korištenju malog skupa jednostavnih upravljačkih struktura (strukturni operateri ), čiji je ispravan rad lako analizirati i utvrditi. U ovom slučaju, neki operatori se sastoje od drugih ugniježđenih u njima.

Strukturno svojstvo operatera je tosvaki operator ima jedan ulaz i jedan izlaz . Poziva se program izgrađen od strukturiranih iskazastrukturirano .

Osnova strukturiranog programiranja jeteorema o strukturiranju , koji su formulirali italijanski matematičari K. Bohm i G. Jacopini 1966.

Teorema utvrđuje da bez obzira koliko je složen zadatak, shema algoritma za njegovo rješavanje (i, shodno tome, program) uvijek se može predstaviti kao sastav od tri tipa ugniježđenih blokova:

    prateći (početak-kraj početak-kraj ),

    grananje (ako - onda - ostalo ako-onda-drugo ),

    petlje sa preduslovom (dok ćao ).

Drugim riječima, ove elementarne strukture imajufunkcionalna kompletnost , tj. bilo koji algoritam se može implementirati kao kompozicija ove tri strukture.

U praksi, ovo teorema izbjegava upotrebu operatora tranzicijeidi , što algoritme i programe čini vizuelnim i lakim za razumevanje.

Tipovi glavnih upravljačkih struktura algoritma prikazani su na sl. četiri.

1. Struktura poput "prateći » (Sl. 4, a) nastaje nizom radnji, S 1, S 2, …, lok slijede jedno za drugim:

izvršitiS 1;

izvršitiS 2;

izvršitilok .

U linearnom računarskom procesu, sve operacije se izvode sekvencijalno onim redom kojim su napisane. Tipičan primjer takvog procesa je standardna računska shema koja se sastoji od tri faze:

    unos početnih podataka;

    izračunavanje po formulama;

    rezultat izlaz.

Na jezikuPascal takva struktura je zatvorena u operatorske zagradePočni ... Kraj :

Počni

S 1;

S 2;

...

lok ;

Kraj

Rice. četiri. Osnovne algoritamske strukture:

a) prateći (Počni Kraj ); b) grananje (Ako Onda Inače ); u) petlja sa preduslovom (Dok Uradi )

2. Struktura poput " grananje » (AKO - ONDA - DRUGO ) (Sl. 4,b ) – pruža, ovisno o rezultatu provjere, usloveR , koji uzima jednu od dvije logičke vrijednostiDa (Istinito ) iliNe (False ), izbor jednog od alternativnih načina algoritma:

ako R

zatim izvršiti S 1

u suprotnom izvršiti S 2 .

Svaki put vodi do zajedničkog izlaza, tako da će algoritam nastaviti bez obzira na to koji put je odabran.

Na jezikuPascal

Ako P

Onda S 1

Inače S 2;

3. Struktura poput "petlja sa preduslovom » (Sl. 4, in) - omogućava ponovno izvršavanje radnje S ovisno o tome koju vrijednost uzima logički uslov R:

doR

ispunitiS .

Petlja se završava kada se uvjet R se ne izvodi.

Na jeziku Pascal takva struktura ima sljedeći format:

Dok P Uradi

S ;

Prošireni skup elementarnih algoritamskih struktura dodatno uključuje sljedeće upravljačke strukture (slika 5).

4. Struktura kao " skraćena grana » (AKO ONDA ) (Sl. 5,a ) – ako je rezultat provjere stanjaR poprima vrednostDa (Istinito ), tada se radnja izvodiS ; u suprotnom, ova akcija se preskače i kontrola se prenosi na sljedeću strukturu:

ako R

zatim izvršiti S 1 .

Na jezikuPascal takva struktura ima sljedeći format:

Ako P

Onda S ;

5 . Struktura kao " izbor je drugačiji » (Sl. 5,b ) su proširena verzija strukture kao što jeAKO - ONDA - DRUGO . Ovdje je uslov koji treba provjeritiR može uzeti ne dvije logičke vrijednosti, već nekoliko rednih vrijednosti, na primjer, 1, 2, ...,n . AkoR = i , tada će se akcija izvršitiSi . Ako vrijednostR će izaći iz raspona važećih vrijednosti, tada se akcija izvodiS (kratka verzija)izbor » ništa se ne preduzima i kontrola se prenosi na sljedeću strukturu. Na jezikuPascal takva struktura ima sljedeći format:

slučaj P Of

1:S1;

2:S2;

n: Sn

Inače S

kraj;

Rice. pet. Dodatne elementarne algoritamske strukture:

a) skraćena grana (Ako Onda ); b) izbor je drugačiji (slučaj Of Inače );
u) petlja sa postuslovom (Ponovi Do ); G) petlja sa parametrom (Za To ( Do ) – Uradi )

6. Struktura kao " petlja sa postuslovom » (Sl. 5,in ) - omogućava ponovno izvršavanje radnjeS dok se ne ispuni uslovR .

Na jezikuPascal takva struktura ima sljedeći format:

Ponovi

S

Do P ;

7. Struktura kao " petlja sa parametrom » (Sl. 5,G ) - obezbjeđuje unaprijed određeno ponovljeno izvršenje radnjeS . U ovom slučaju, sljedeće tipične operacije se uzastopno izvode ovdje:

    postavljanje početne vrijednosti korištenog parametra petlje (na primjer, ako je varijabla petlje i, tada mu se dodjeljuje vrijednost i 1, tj. i:=i 1);

    izvođenje radnji S obezbeđeno u telu petlje;

    promjena parametra petlje, čime se osigurava izračunavanje rezultata s novim početnim podacima (na primjer, ako parametar petlje i promjene u inkrementima i 3, i:=ii 3);

    provjera trenutne vrijednosti parametra petlje sa datom konačnom vrijednošću ( i<=i 2);

    prelazak na ponavljanje tijela petlje ako parametar petlje nije premašio konačnu vrijednost, u suprotnom - izvršenje sljedećih akcija ili izlaz rezultata.

Na jezikuPascal takva struktura ima sljedeći format:

Za Varijabilna := i 1 do (dolje) i 3 Uradi

S ;

S obzirom na shemu programa, u njemu je moguće izdvojiti dijelove (fragmente) koji su prilično jednostavni i razumljivi po strukturi. Predstavljanje ovih fragmenata kao uvećanih blokova uvelike olakšava percepciju algoritma (a kasnije i programa) kao cjeline.

Strukturni iskazi se obično koriste u ranim fazama dizajna programa odozgo prema dolje.

Na ovaj način,strukturirano programiranje na osnovumodularna struktura softverski proizvod itipično (osnovni ) vladajuće strukture algoritmi obrade podataka različitih softverskih modula.

NALAZI

    Strukturirano programiranje je metodologija razvoja softvera zasnovana na predstavljanju programa u obliku hijerarhijske blok strukture. Predloženo 70-ih godina XX veka. E. Dijkstroy, koju je razvio i dopunio N. Wirth. Tipične metode strukturiranog programiranja su: dizajn odozgo prema dolje (dizajn od vrha do dna); modularno (proceduralno) programiranje; strukturno kodiranje.

    Ciljevi strukturiranog programiranja su: osiguranje discipline programiranja, povećanje efikasnosti i pouzdanosti programa, smanjenje vremena i troškova razvoja softvera. Osnovni principi strukturiranog programiranja: apstrakcija, formalnost, "zavadi pa vladaj", hijerarhijski poredak.

    Metoda top-down dizajna uključuje sekvencijalnu dekompoziciju ukupne funkcije obrade podataka na jednostavne funkcionalne elemente („top-down”). Sredstva za postizanje ciljeva na prethodnom nivou pretvaraju se u ciljeve na nižem.

    Strukturno kodiranje je metoda pisanja programa koji imaju specifičnu strukturu. Zasniva se na upotrebi malog skupa strukturalnih iskaza čiju je ispravnost lako analizirati i utvrditi. U ovom slučaju, neki operatori se sastoje od drugih ugniježđenih u njima.

    Osnovu strukturiranog programiranja čini teorema o strukturiranju, koju su formulirali italijanski matematičari C. Bohm i G. Iacopini 1966. godine. Teorema utvrđuje da bez obzira koliko je složen zadatak, shema algoritma za njegovo rješavanje (i, shodno tome, program) uvijek se može predstaviti kao kompozicija tri tipa ugniježđenih blokova: slijedeći (početak-kraj - početak-kraj), grananje (ako-onda-drugo - ako-onda-drugo), ciklusi sa preduvjetom (dok - dok ).

* E. Dijkstra je dao sljedeću definiciju: “ Strukturirano programiranje je disciplina koju programer sam sebi nameće.».

Strukturirano programiranje - jedan od najvećih napredaka u tehnologiji programiranja. Iako gotovo svi imaju najopćenitiju i prilično nejasnu ideju o strukturiranom programiranju, ne postoji općeprihvaćena jasna definicija. Strukturirano programiranje ima za cilj pisanje programa minimalne složenosti, da bi programer mogao da misli jasno, da bi program bio lakši za razumijevanje.

Tekst programa treba da bude takav da se može čitati "od vrha do dna". Neograničena upotreba GO TO naredbi narušava ovaj uslov, zbog čega se strukturirano programiranje često naziva programiranjem bez GO TO.

Možete navesti primjere programa koji ne sadrže GO TO , a uredno su raspoređeni u ljestvici prema nivou ugniježđenja iskaza, ali su potpuno nerazumljivi i postoje drugi programi koji sadrže GO TO i još uvijek su razumljivi. Dakle, prisustvo ili odsustvo GO TO je loš pokazatelj kvaliteta programa (ilustracija u D. Knuth). Pa ipak: najteži za kontrolu i potencijalno nestabilan je bezuslovni operater grane - GO TO .

Struktura tijela modula i korištene osnovne programske konstrukcije moraju biti potencijalno otporne na kvarove hardvera, izobličenja izvornih podataka i programske greške.

Svaki program se može sintetizirati na osnovu elementarnih osnovnih struktura tri tipa:

1. Jednostavan niz. 2. Uslovi (alternative).

3. Ponavljanje (ciklusi, iteracije). Moguća je jedna od dvije ili obje vrste:

Uradi "do" Ne "još"

4. Možete dodati četvrti dizajn - izbor (prekidač).

Blokovi se definiraju rekurzivno: pravokutnici predstavljaju ugniježđene građevne blokove koji se koriste umjesto pravokutnika.

Navedene elementarne konstrukcije, na primjer, u jeziku Pascal implementiraju se na sljedeći način:

Uslovni operator IF log. exp. ONDA operater 1 ELSE operator2;

IF log. izraz ONDA operater;

Ponavljanje (ciklusi, iteracije)

a) Radite "while" WHILE uslov nastavka DO operater;

b) "Još nemoj" PONAVLJATI operater DO uslov raskida;

c) Petlja sa iteracijom FOR K:=B1 DO B2 DO operater;

ZA K:=B2 DOLJE B1 DO operater;

Izbor (prebacivanje) CASE stanje OF

N1, ... Nk : operater 1;

Ni , ... Nm : operater str;

END ;

U FoxBASE jeziku, ove konstrukcije su implementirane kao:

Uslovni operator IF log. izraz

operatori1

[OSTALO]

operatori2]

ENDIF

Ciklus DO WHILE izraz

operateri

ENDDO

Izbor (prebacivanje) DO CASE

CASE log. izraz 1

operateri

CASE log. izraz2

Operateri

CASE log. Izraz str

Operateri

ENDCASE

Svaku strukturu karakteriše jedna tačka prenosa kontrole na strukturu (jedan ulaz) i jedna izlazna tačka iz strukture.

Ove konstrukcije imaju sistematizirajuću i disciplinirajuću vrijednost. Jednostavnost početnih struktura strukturiranog programiranja sprečava složene informacione veze i zastrašujuće prenose kontrole.

Sa povećanjem strukture modula, smanjuje se složenost programa, povećava se njihova vidljivost, što pomaže u smanjenju broja grešaka. Međutim, za poboljšanje kvaliteta programa potrebno je platiti dodatnom memorijom i vremenom za njihovu implementaciju na računaru.

Struktura programa zavisi od programskog jezika koji se koristi. Savremeni alati za razvoj softvera su "najbolji" strukturirani programski jezici. Od uobičajenih programskih jezika, Pascal, Basic, FoxBASE se smatraju najprikladnijim. Strukturirano programiranje, na primjer, u asembleru je gotovo nemoguće. Sama činjenica korištenja asemblerskog jezika ukazuje da je program napisan uglavnom u terminima strojnog jezika.

Strukturno programiranje je fokusirano na komunikaciju sa ljudima, a ne sa mašinom, i promoviše pisanje programa koji su jednostavno i jasno rešenje problema.

Važno je da programer, čak i kada počinje da programira logiku, razmišlja u smislu osnovnih osnovnih strukturnih konstrukcija.

Pozicija naredbe GO TO bi trebala biti: izbjegavajte korištenje GO TO gdje god je to moguće, ali ne po cijenu jasnoće programa. Često ima smisla koristiti GO TO za izlazak iz petlje ili modula, za skok na ON konstrukcije (na primjer, u osnovnom jeziku) ili za izbjegavanje suviše dubokog ugniježđenja viljuški, pogotovo zato što je skok na sljedeće (nalazi se ispod) programske izjave, a strukturalni program nastavlja da bude lako čitljiv od vrha do dna. Najgora upotreba naredbe GO TO je prenošenje kontrole na izraz koji je viši (raniji) u tekstu programa.

Osim toga, kako bi program bio lakši za čitanje, njegov tekst mora biti fizički podijeljen na dijelove, dodajući prazne redove između odjeljaka, odjeljaka. Tekst programa mora biti napisan sa ispravnim pomacima, tako da se prekidi u sekvenci izvršavanja lako prate. Jednonamjenski izvršni izrazi svakog modula moraju stati na jednu stranicu uređaja za štampanje.

Prvi programi sastojali su se od nekoliko desetina - stotina mašinskih instrukcija. Softverski kompleksi i informacioni sistemi obuhvataju od nekoliko desetina hiljada do miliona operatera na jezicima visokog nivoa. Kako se povećavao obim softverskih alata, proces otklanjanje grešaka, one. otkrivanje i ispravljanje grešaka. Praksa je pokazala da je gotovo nemoguće napisati manje-više veliki program bez grešaka. Štaviše, čak i tokom rada gotovih programa, otkrivaju se greške propuštene tokom otklanjanja grešaka. Greške spadaju u nekoliko kategorija.

Najjednostavnije su sintaksičke greške. Oni su povezani sa netačnim slovom jezičkih konstrukcija i detektuju se odmah, u trenutku kada prevodilac pokuša da prevede program u mašinski jezik.

Ako su sve sintaksičke greške i greške u povezivanju ispravljene, tada se program pokreće (faza trčanje). Međutim, ova faza može biti prekinuta nevažećom operacijom (npr. dijeljenjem sa nulom), u kom slučaju se govori o grešci u vremenu izvođenja. (RunTime Errors). Ili je program odbrojao do kraja, ali dobijeni rezultati nisu tačni. Ovo može biti uzrokovano greškama algoritama, ili greškama u organizaciji međumodulskih komunikacija, greškama konverzije tipa podataka ili jednostavnim tipkarskim greškama (na primjer, nula je propuštena prilikom pisanja broja 100, a program je koristio 10 u proračunima).

Greške tokom izvođenja se otkrivaju rješavanjem niza test slučajeva (pokretanje programa), rezultat za koji je unapred poznat. Po pravilu, vrijeme utrošeno na pronalaženje ovakvih grešaka znatno premašuje vrijeme utrošeno na pisanje samog programa i ispravljanje sintaksičkih grešaka. Razvoj koncepta programiranja usko je povezan sa problemom smanjenja otpada prilikom pisanja programa.

Razvijaju se teorijske osnove strukturiranog programiranja, teorija dokazivanja ispravnosti programa i programiranje zasnovano na dokazima.

Koncept strukturiranog programiranja podrazumijeva takav naučno utemeljen pristup konstrukciji programa i mogućnostima programskog jezika, koji će značajno smanjiti količinu mogućih grešaka. Značajan razvoj koncepta postignut je u strukturiranom programskom jeziku Pascal. Suština strukturiranog programiranja je da su podaci, prije svega, apstrakcije stvarnih objekata i poželjno je da se formulišu kao apstraktne strukture koje možda nemaju specifičnu implementaciju u programskom jeziku. U procesu konstruisanja programa, reprezentacija podataka se postepeno rafinira nakon usavršavanja algoritma.

Strukturirani programski jezik treba da pruži mogućnost konstruisanja sopstvenih tipova podataka. Na najnižem nivou su osnovne strukture unapred definisane u jeziku (na primer: skalarni tipovi, zapis, niz i skup). Od osnovnih struktura, kao od molekula, grade se komplikovane strukture. Varijable osnovne strukture mogu samo promijeniti vrijednost, čuvajući tip ili skup važećih vrijednosti i veličinu koju zauzimaju. Komplikovane strukture karakterizira promjena ne samo značenja, već i samog oblika reprezentacije, sastava temeljnih struktura uključenih u njih. Dinamičko upravljanje memorijom implementirano je na nivou pokazivača, a dinamički podaci se kombinuju u strukturu stabla (stabla).

Osim toga, postoje određeni zahtjevi za tipizaciju podataka, zbog kojih se može odrediti tip bilo kojeg izraza ili varijable bez potrebe za proračunima, tj. u fazi prevođenja. U ovom slučaju, veliki broj teško dostupnih grešaka tokom izvođenja može se izbjeći otkrivanjem u fazi prijevoda programa.

Koncept strukturiranog programiranja ne uključuje samo upotrebu posebnih jezika i primjenu određenog stila programiranja. Prije svega, ovo je filozofija programiranja, koja utječe i na takav aspekt kao što je metodologija podučavanja programera.

Primjećuje se da je programiranje ogromna i raznolika aktivnost, koja često zahtijeva složen mentalni rad. Pogrešno je misliti da se programiranje može svesti na upotrebu gotovih recepata na osnovu sistematskog opisa najjednostavnijih blokova. Učenici treba da razvijaju sposobnost kreativnog razmišljanja, a tu je izuzetno važna uloga nastavnika koji pokazuje kako radi to i ono. Kreativnost nije podložna kanonima, metodama i tehnologijama. Kao nastavna metoda usvojena je pažljiva selekcija i razmatranje karakterističnih primjera. Potrebno je razmotriti složene i duge programe, koji se često susreću u praksi i koji su najprikladniji za identifikaciju tog neuhvatljivog, ali važnog svojstva tzv. stil programiranje. Analiza dugih programa je vježba u umjetnosti njihovog čitanja, što nije ništa manje važno od sposobnosti pisanja programa.

Kontrolna pitanja i zadaci

5.1. Imenujte i ukratko opišite dijelove programske komande.

5.2. Osnova za program funkcionisanja IOI je ____; dati definiciju.

5.3. Šta se podrazumijeva pod programiranjem u kodovima?

5.4. Šta znaš o asemblerskom jeziku?

5.5. Koji se programski jezici nazivaju mašinski nezavisnim?

5.6. Kako je "prevod" programa napisanog algoritamskim jezikom u objektni kod razumljiv kompjuteru?

5.7. Šta se podrazumijeva pod modularnim programiranjem i zasebnim modulom?

5.8. Šta znate o strukturiranom programiranju?

Strukturirano programiranje- metodologija programiranja koja ima za cilj kreiranje logički jednostavnih i razumljivih programa. Strukturirano programiranje se zasniva na pretpostavci da logika i razumljivost programa olakšava razvoj, dokazivanje ispravnosti i naknadno održavanje programa, a takođe osigurava njegovu pouzdanost.

Karakteristični principi strukturiranog programiranja su:

· programiranje odozgo prema dolje metoda razvoja programa u kojoj se programiranje vrši metodom "odozgo prema dolje", od generalnog do detalja;

· modularno programiranje, u kojem su relativno nezavisni podzadaci programirani kao zasebni programski moduli;

· upotreba tri kontrolne strukture u programiranju (praćenje, biranje, ponavljanje). Sljedeća struktura pretpostavlja prirodan slijed izvršenja naredbi. Struktura izbora je data shemom “ako-onda-drugo” (naredba if). Operator petlje je povezan sa strukturom ponavljanja;

· Odbijanje bezuslovnog prenosa kontrole i ograničeno korišćenje globalnih varijabli.

Strukturirano programiranje se zasniva na teoremi koja je rigorozno dokazana u teoriji programiranja. Njegova suština je da algoritam za rješavanje bilo kojeg logičkog problema može biti sastavljen samo od sljedećih struktura. , grananje, ciklus. Zovu se osnovne algoritamske strukture. Naime, mi smo se i ranije u svim razmatranim primjerima programa pridržavali principa strukturiranog programiranja.

Slijedi linearni slijed radnji (slika 2.6):

Rice. 2.6. prateći

Svaki blok može sadržavati i jednostavnu naredbu i složenu strukturu, ali mora imati jedan ulaz i jedan izlaz.

grananje algoritamska alternativa. Kontrola se prenosi na jedan od dva bloka u zavisnosti od istinitosti ili netačnosti uslova. Zatim sledi izlaz na opšti nastavak (slika 2.7):

Rice. 2.7. grananje

Ciklus ponavljanje određene grupe radnji po uslovu. Postoje dvije vrste ciklusa. Prvi petlja sa preduslovom (slika 2.8):

Rice. 2.8. Petlja s preduvjetom

Dok je uslov tačan, serija koja formira tijelo petlje se izvršava.

Drugi tip cikličke strukture petlja sa postuslovom (slika 2.9):

Rice. 2.9. Petlja s postuvjetom

Ovdje tijelo petlje prethodi uvjetu petlje. Tijelo petlje ponavlja svoje izvršenje ako je uvjet netačan. Ponavljanje se završava kada uslov postane istinit.

Teoretski, samo prva vrsta ciklusa je neophodna i dovoljna. petlja sa preduslovom. Bilo koji ciklički algoritam se može izgraditi pomoću njega. Ovo je općenitija verzija petlje od petlje do. Zaista, tijelo do petlje će biti izvršeno barem jednom, pošto se uvjet provjerava nakon njegovog završetka. A za petlju-while, takva opcija je moguća kada tijelo petlje neće biti izvršeno ni jednom. Stoga se u bilo kojem programskom jeziku može ograničiti samo na while-petlju. Međutim, u nekim slučajevima, upotreba ciklusa do je praktičnija i stoga se koristi.

Strukturirano programiranje se ponekad u literaturi naziva programiranjem bez goto-a. Zaista, sa ovim pristupom nema mjesta za bezuslovnu tranziciju. Neopravdano korištenje goto operatora u programima ga lišava njegove strukture, a time i svih pozitivnih svojstava povezanih s njim: transparentnost i pouzdanost algoritma. Iako je ovaj operator prisutan u svim proceduralnim programskim jezicima, međutim, slijedeći strukturni pristup, njegovu upotrebu treba izbjegavati.

Složeni algoritam se sastoji od međusobno povezanih osnovnih struktura. Ove strukture se mogu povezati na dva načina: dosljedan i ugniježđen. Ova situacija je slična onoj koju opažamo u elektrotehnici, gdje se svako proizvoljno složeno električno kolo može razložiti na serijsko i paralelno povezane dijelove.

Ugniježđene algoritamske strukture nisu analogne paralelno povezanim provodnicima. Ovdje je prikladnija analogija s lutkama koje se nalaze jedna u drugoj. Ako je blok koji čini tijelo ciklusa sam po sebi ciklična struktura, onda to znači da postoje ugniježđeni ciklusi. Zauzvrat, unutrašnja petlja može imati još jednu petlju unutar sebe, i tako dalje. S tim u vezi, uvodi se koncept dubine ugniježđenja petlji. Slično, grane mogu biti ugniježđene jedna u drugu.

Strukturni pristup zahtijeva usklađenost sa standardom u slici dijagrama toka algoritama. Morate ih nacrtati kao što je to urađeno u svim navedenim primjerima. Svaka osnovna struktura mora imati jedan ulaz i jedan izlaz. Nestandardni blok dijagram je loše čitljiv, vidljivost algoritma je izgubljena.

Programski jezici Pascal i C nazivaju se strukturiranim programskim jezicima. Imaju sve potrebne kontrolne strukture za strukturnu konstrukciju programa. Strukturiranje izgleda programskog teksta daje jasnoću ovoj konstrukciji. Glavna tehnika koja se koristi za ovo pomaci linija, koji se moraju pridržavati sljedećih pravila:

Konstrukcije istog nivoa gniježđenja se pišu na istom vertikalnom nivou (počinju od iste pozicije u liniji);

Ugniježđena konstrukcija ispisuje se pomaknuta duž linije za nekoliko pozicija udesno u odnosu na njenu vanjsku konstrukciju.

Strukturna metoda algoritamizacije to nije samo oblik opisa algoritma, već je i način razmišljanja programera . Prilikom kreiranja algoritma treba težiti da se on sastavi od standardnih struktura. Koristeći analogiju zgrade, možemo reći da je strukturna metoda izgradnje algoritma slična sastavljanju zgrade od standardnih dijelova, za razliku od preklapanja ciglu po ciglu.

Druga važna tehnološka tehnika strukturiranog programiranja je dekompozicija problema koji treba riješiti na podzadatke. dijelove originalnog problema koji su jednostavniji sa stanovišta programiranja. Algoritmi za rješavanje takvih podproblema nazivaju se pomoćni algoritmi. U tom smislu, postoje dva moguća načina u konstrukciji algoritma:

"top down": prvo se gradi glavni algoritam, zatim pomoćni algoritmi;

„odozdo prema gore“: prvo se kompajliraju pomoćni algoritmi, a zatim glavni.

Prvi pristup se naziva i metodom sekvencijalnog detaljiranja, a drugi način sklapanja.

Metoda asemblera uključuje akumulaciju i korištenje biblioteka pomoćnih algoritama implementiranih u programskim jezicima u obliku potprograma, procedura i funkcija. Kod sekvencijalnog detaljiranja prvo se gradi glavni algoritam, a zatim se u njega uvode pozivi pomoćnim algoritmima prvog nivoa. Nakon toga se kompajliraju pomoćni algoritmi prvog nivoa, u kojima može biti poziva na pomoćne algoritme drugog nivoa i tako dalje. Pomoćni algoritmi najnižeg nivoa sastoje se samo od jednostavnih instrukcija.

Metoda sukcesivnog detaljiranja koristi se u bilo kojem dizajnu složenih objekata. Ovo je prirodni logički slijed dizajnerovog razmišljanja: postepeno produbljivanje u detalje. U našem slučaju govorimo i o projektovanju, ali ne tehničkih uređaja, već algoritama. Praktično je nemoguće konstruisati prilično komplikovan algoritam na drugi način.

U metodi sekvencijalnog detaljiranja prvo se analizira izvorni problem. Ima podzadatke. Izgrađena je hijerarhija takvih podzadataka. Zatim se kompajliraju algoritmi (ili programi), počevši od glavnog algoritma (glavnog programa), zatim pomoćnih algoritama (potprograma) sa uzastopnim produbljivanjem nivoa, dok ne dobijemo algoritme koji se sastoje od jednostavnih naredbi.

Prvi korak detaljiranja. Prvo, skiciramo sve potrebne potprograme, ukazujući samo na njihova zaglavlja (specifikacije). Umjesto tijela potprograma pišemo komentare s objašnjenjima (ovaj tip potprograma se naziva "stub"). Napišimo glavni dio programa. A onda ćemo se vratiti na detaljno programiranje procedura i funkcija. U prvoj fazi programiranja, umjesto tijela potprograma, opisujemo njegovu svrhu u obliku komentara.

Upotreba strukturiranog programiranja omogućava vam da povećate brzinu pisanja programa i olakšate otklanjanje grešaka u napisanom programu. Strukturno programiranje je moguće i u asemblerskim programskim jezicima, gdje ne postoje strukturni operatori slični strukturnim operatorima programskih jezika C, PASCAL, PL/M.

Programiranje za univerzalne računare počelo je programiranjem u mašinskim kodovima, zatim su se pojavili i počeli razvijati jezici visokog nivoa, zatim je Dijkstroy razvio principe strukturiranog programiranja, objektno programiranje zamijenilo je strukturirano programiranje, a trenutno se aktivno razvija vizualno programiranje.

Programiranje za mikrokontrolere uglavnom ide istim putem. Prijelaz iz stupnja u stupanj ovisi o raspoloživim internim resursima mikrokontrolera. Prije nekoliko godina korištenje jezika visokog nivoa bilo je nemoguće zbog male količine interne programske memorije. (U jeftinim modelima mikrokontrolera ova situacija je i dalje očuvana.) Trenutno, sa pojavom mikrokontrolera i sa internom memorijom od nekoliko desetina kilobajta, pojavljuje se mogućnost dizajna objekata.

Trenutno postoje dva načina za pisanje programa: odozdo prema gore i odozgo prema dolje. Kada pišete program odozdo prema gore, nemoguće je započeti otklanjanje grešaka u programu bez pisanja cijelog programa. Prilikom pisanja programa od vrha do dna, što je obavezno za strukturirano programiranje, u bilo kojoj fazi pisanja programa, on se može prevesti i izvršiti, dok možete pratiti sve algoritamske radnje programa napisanog do tog vremena. Proces pisanja programa se ne razlikuje od procesa kreiranja algoritma. Štaviše, ove faze kreiranja programa mogu se kombinovati. Izvršena algoritamska akcija se prikazuje u nazivu potprograma. Na primjer:

Osnovna ideja strukturiranog programiranja je da postoje samo četiri strukturirana iskaza. Koristeći ove strukturne operatore, možete izgraditi proizvoljno složen program.

Prvi strukturni operator se zove linearni lanac operatora. Svaki zadatak se može podijeliti na nekoliko podzadataka. Izvršenje podzadataka može se povjeriti potprogramu, čije ime može (i treba) odražavati podzadatak koji bi ovaj potprogram trebao riješiti. U trenutku pisanja algoritma najvišeg nivoa (i programa) ne zanima nas kako će se ovaj problem riješiti, pa smo umjesto prave potprograme stavili