Blokinės Veikimo Schemos: Apibrėžimas, Elementai ir Pavyzdžiai

"Blokdiagrama" - tai grafinis vaizdas, kuriame naudojami stačiakampiai blokai (kvadratai, stačiakampiai) ir rodyklės, siekiant pavaizduoti sistemos, proceso ar algoritmo struktūrą, veikimo principą ar komponentų sąveiką.

Blokinių Schemų Pavyzdžiai

* Blokai gali rodyti pagrindinius komponentus: įvesties įrenginiai (klaviatūra, pelė) → centrinis procesorius → atmintis → išvesties įrenginiai (monitorius, spausdintuvas).* Užsakymo gavimas → Apmokėjimo patikrinimas → Prekių paruošimas → Pristatymas → Užsakymo užbaigimas.* Pradžia → Įvesti skaičių → Ar skaičius lyginis? (šakinis blokas su "Taip/Ne") → Jei taip: Atspausdinti "Lyginis" → Pabaiga.

Algoritmavimo Pagrindai

Žmogus savo veikloje privalo išspręsti gausybę uždavinių. Jam gali talkinti kompiuteris, tačiau kiekvienam uždaviniui spręsti kompiuteris turi būti tinkamai užprogramuotas. Kalbant bendrai, kiekvienas sprendėjas (vadinkime jį procesoriumi) privalo turėti paruoštą uždavinio sprendimo ALGORITMĄ.

Algoritmo Samprata

ALGORITMU vadinama baigtinė nuoseklių veiksmų seka, kurią procesorius turi atlikti su pradiniais duomenimis, kad gautų uždavinio sprendinį. Priklausomai nuo to, kas sprendžia uždavinį (kas yra uždavinio sprendimo procesorius), algoritmas gali būti pateikiamas įvairiai:* kompiuterio mikroprocesoriui algoritmą reikia pateikti mašinine kalba (dvejetainis, aštuntainis arba šešioliktainis kodai), nes tik tokią kalbą supranta mikroprocesorius;* žmogui, esančiam procesoriaus vaidmenyje, algoritmą galima pateikti daugelyje formų: * teksto forma, t.y, programos , parašytos pseudo kodu, arba bet kuria, algoritmine kalba (paskalis, fortranas,…, asembleris, mašininė kalba); * grafine forma, t.y, blok-schemos arba struktūrogramos pavidalu.Reikia priminti, kad kompiuteris pats dar nėra išsprendęs nei vieno uždavinio, o sprendžia uždavinį tik tuomet, kai žmogus sudaro to uždavinio sprendimo ALGORITMĄ ir jį užkoduoja (parašo programą) taip, kad būtų “aišku” kompiuteriui. Tagi, žmogus paprastai k u r i a uždavinio sprendimo algoritmą, o kompiuteris tik v y k d o sukurtą ir patikrintą algoritmą.

Žodinis Algoritmas

Pateiksime tekstinės algoritmo formos pavyzdį, parodydami algoritmą dviejų sveikų skaičių bendro didžiausio daliklio radimui. Bendru atveju, minėtam uždaviniui galima parašyti visą eilę algoritmų, mes pateiksime Euklido pasiulytą variantą, naudojant atėmimo veiksmą.1. Pradžia2. Užrašyti du sveikus teigiamus skaičius M ir N3. Nustatyti, kuris iš užrašytųjų skaičių yra didesnis. Didesnįjį skaičių pavadinti TURiniu, o mažesnįjį - ATĖminiu4. Rasti TURinio ir ATĖminio skirtumą (SKIR=TUR-ATĖ )5. Patikrinti ar skirtumas nelygus nuliui ( SKIR<>0 ?) 1. Jeigu TAIP (SKIR<>0), eiti į 6 punktą 2. Jeigu NE (SKIR=0), eiti į 11 punktą6. Patikrinti ar gautas SKIRtumas didesnis už buvusį ATĖminį (SKIR>ATĖ ?) 1. Jei TAIP, eiti į 7 punktą 2. Jei NE, eiti į 8 punktą7. Naujam TURiniui priskirti buvusiojo SKIRtumo reikšmę ir eiti į 9 punktą8. Naujam TURiniui priskirti buvusiojo ATĖminio reikšmę, o naujajam ATĖminiui priskirti buvusio SKIRtumo reikšmę.9. Rasti naują SKIRtumo reikšmę10. Bendru didžiausiu dalikliu (BDD) pavadinti paskutiniojo skirtumo veiksmo ATĖminį (BDD=ATĖ)11. Atsakymas: Dviejų sveikų skaičių M= ir N= bendras didžiausias daliklis BDD=Kūrimo ir tikrinimo procese naudotina informatyviausia - grafinė algoritmo forma, pvz., algoritmo blokinė schema.

Algoritmo Blokinės Schemos Elementai

Atskirus algoritmo veiksmus (veiksmų grupes) grafiškai priimta vaizduoti skirtingomis geometrinėmis figūromis vadinamomis blokais. Projektuojant arba analizuojant algoritmo blok-schemą nustatoma sprendimo proceso valdymo perdavimo, iš vieno bloko į kitą, tvarka. Kiekvienam algoritmui privalu turėti pradžios ir pabaigos blokus. Valdymo procesas prasideda PRADŽIOS bloke , nuosekliai praeina visus algoritmo blokus ir bagiasi PABAIGOS bloke. Priimta tuos blokus vaizduoti tam tikrų matmenų ovalais, su juose įrašytais žodžiais PRADŽIA ir PABAIGA (kaip parodyta pav.1). Kiekvieną bloką rėminanti linija kairiajame viršutiniame kampe privalo būti trūki, čia įrašomas bloko numeris. Visi blokai numeruojami pradedant pradžios ir baigiant pabaigos bloku. Paprastai sprendimą (algoritmą) sudaro nuosekli veiksmų kompozicija, todėl pageidautina ir blokus numeruoti pagal valdymo perdavimo eigą . Nesudėtingame algoritme, kai jo blokinė schema telpa į vieną lapą, blokus numeruojame sveikais skaičiais. Jeigu algoritmas sudėtingas ir jam pavaizduoti reikia kelių lapų, tai bloko numeracija gali turėti kelias dalis, atskirtas taškais: pvz. -2.12 (lapo numeris.bloko numeris). Santakos blokus (paprastai tai atitinkamo spindulio apskritimai, kurių viduje nurodytas vardas) įvardinti taip pat galima skaičiais, bet galima ir raidėmis.Pav. 1. Aritmetinių ir loginių veksmų blokas vaizduojamas stačiakampiu, su jame įrašytais aritmetinių (loginių) išraiškų sakiniais (pav.1. -2 blokas). Sąlygos tikrinimo blokui vaizduoti naudojama rombo forma (4-blokas) , jo viduje įrašoma tikrinama sąlyga. Informacijos įvedimo/išvedimo blokui panaudota lygiagretainio forma, kur įvedami/išvedami duomenys užrašomi skliaustuose. Įvedimo bloko kairiojoje pusėje įrašomas požymis IN, išvedimo bloke-požymis OUT (8-BLOKAS). Kreipimosi į paprogramę blokas turi stačiakampio su dvigubom šoninėm linijom formą, jame nurodoma, kuriai paprogramei bus perduodamas valdymas. Visi algoritmo blokai tarpusavyje sujungiami taip vadinamomis valdymo linijomis, kurios gali būti tik vertikalios arba tik horizontalios.
Valdymo krypčiai nurodyti valdymo linijos užsibaigia rodyklėmis. PASTABA. Jeigu valdymas perduodamas į dešinę arba žemyn, linijos gale rodyklės nebūtinos. Išskyrus blokus, kuriuose vienaip ar kitaip tikrinama sąlyga, valdymo linijos į bloką patenka tik iš viršaus, išeina tik iš apačios. Į sąlygos tikrinimo blokus valdymas gali patekti tik iš viršaus, išeiti - tik per šonus. Išimtį sudaro tik FOR ciklo parametro modifikavimo ir sąlygos tikrinimo blokas (pav.1- 5 blokas), kur šalia pagrindinio įėjimo viršuje, kairėje pusėje yra dar modifikuoto parametro įėjimas. Valdymo linijos gali sueiti į vieną vietą, ji žymima apskritimu ir vadinama sąntakos bloku. Apskritimo viduje gali būti nurodyta sąntakos žymė (pav1.-α). Į sąntaką valdymo linijos gali įėiti ir išėiti iš bet kurios pusės, tačiau keliama sąlyga-įėjimai gali būti keli, išėjimas tik vienas. Kai algoritmo schema gaunasi sudėtinga, neimanoma išvengti valdymo linijų kryžiavimosi, tenka linijas nutraukti. Nutraukimo vietose dedamos ŽYMĖS, rodančios iš kur ateina nutrauktoji linija (iš kurio bloko) ir kur ji nueina toliau (į kurį bloką) (pav1. -6 ir 7 blokai).### Algoritmo Blokinės Schemos PavyzdysGrižkime prie dviejų sveikų skaičių bendro didžiausio daliklio radimo, tik šiuo atveju algoritmą pateiksime grafine forma (pav.2.). Kaip matome iš pav.2., algoritmas pirmiausia reikalauja įvesti du sveikus skaičius M ir N (blokas 1). Toliau tikrinama, kuris iš įvestųjų skaičių yra didesnis. Jeigu didesnis M, tai 3 - bloke M pavadinamas TUR, o N - ATĖ, priešingu atveju kintamajam TUR priskiriama N - reikšmė, o kintamajam ATĖ - M - reikšmė (4 blokas). Toliau, iš Didesniojo (TUR) skaičiaus atimamas mažesnis (ATĖ) ir skirtumas patalpinamas į lastelę SKIR (5 blokas). Toliau įeiname į t.v. WHILE ciklą, kuriame, priklausomai nuo to ar vykdoma 6 bloko sąlyga, ciklo kūne aprašyti veiksmai gali būti kartojami. Taigi, tikrinama, ar skirtumas nelygus nuliui (6 blokas). Jeigu taip (SKIR<>0,t.y.sąlyga tenkinama-kartojami 7-10 blokų vaiksmai) , jeigu ne (SKIR=0), tai 11 bloke lastelei Bdd (Bendras didžiausias daliklis) priskiriama ATĖ reikšmė ir einama į 12, rezultatų išvedimo bloką ir toliau į pabaigą. Ciklo kūne 7 bloke tikrinama ar SKIR>ATĖ. Jeigu taip, tai 8 bloke vykdomas priskirimas TUR=SKIR, jei ne-9 bloke padaromi priskirimai: TUR=ATĖ;ATĖ=SKIR. Toliau,10 bloke vėl suskaičiuojama SKIRtumo reikšmė ir grįžtama į 6 bloką,tikrinti ar SKIR<>0. Priklausomai nuo skaičių M ir N reikšmių veiksmai blokuose 6-10 gali būti kartojami cikliškai eilę kartų. Pateikus algoritmui du sveikus teigiamus skaičius didesnius už nulį, po keletos ciklo while “ apsisukimų” SKIRtumo lastelėje gausime nulį ir bendras didžiausias tų skaičių daliklis bus surastas. Jeigu algoritmui pateikti vieną iš skaičių nulinės reikšmės, tai tokiame algoritme gausis amžinas ciklas, nes skirtumo lastelės reikšmė nesikeis ir , kadangi ji nelygi nuliui, tai negausime išėjimo iš ciko. Jeigu tokiam algoritmui pateikti vieną skaičių neigiamą, tai irgi gausis amžinas ciklas. Taigi, naudojant Euklido principą dviejų skaičių bendram didžiausiam dalikliui rasti, reikia numatyti atitinkamus “saugiklius”, leidžiančius išvengti amžino ciklo.
### Algoritmo “Prasukimas”Patikrinkime pateiktą algoritmą su konkrečiais skaičiais, tegu M=27, N=12, t.y., p r a s u k i m e šį algoritmą. Prasukant algoritmą, paprastai sudaroma lentelė (lentelė 1), kurioje fiksuojami algoritmo blokuose atlikti veiksmai.Lentelė 1. Algoritmo prasukimo pavyzdys| VEIKSM. EILĖS NUMER. | BLOKO EILĖS NUMER. | V E I KSMAS | SĄLYG. TENK. NAA ? | KU KUR ei e eiti ? | KOMEN- TARAI || :------------------: | :-----------------: | :----------------- | :-----------------: | :-----------------: | :-----------: || 1 | 1 | M=27;N=12 | -- | į 2 bl | Įvedimas || 2 | 2 | ? M>N | Taip | į 3 bl | || 3 | 3 | TUR=27;ATĖ=12 | -- | į 5 bl | || 4 | 5 | SKIR=27-12=15 | -- | į 6 bl | 1 ciklas || 5 | 6 | ? SKIR<>0 | Taip | į 7 bl | || 6 | 7 | ? SKIR>ATĖ | Taip | į 8 bl | || 7 | 8 | TUR=SKIR=15 | -- | į 10bl | || 8 | 10 | SKIR=15-12=3 | -- | į 6 bl | 2 ciklas || 9 | 6 | ? SKIR<>0 | Taip | į 7 bl | || 10 | 7 | ? SKIR>ATĖ | Ne | į 9 bl | || 11 | 9 | TUR=ATĖ=12 ATĖ=SKIR=3 | -- | į 10bl | || 12 | 10 | SKIR=12-3=9 | -- | į 6 bl | 3 ciklas || 13 | 6 | ? SKIR<>0 | Taip | į 7 bl | || 14 | 7 | ? SKIR>ATĖ | Taip | į 8 bl | || 15 | 8 | TUR=SKIR=9 | -- | į 10bl | || 16 | 10 | SKIR=9-3=6 | -- | į 6 bl | 4 ciklas || 17 | 6 | ? SKIR<>0 | Taip | į 7 bl | || 18 | 7 | ? SKIR>ATĖ | Taip | į 8 bl | || 19 | 8 | TUR=SKIR=6 | -- | į 10bl | || 20 | 10 | SKIR=6-3=3 | -- | į 6 bl | 5 ciklas || 21 | 6 | ? SKIR<>0 | Taip | į 7 bl | || 22 | 7 | ? SKIR>ATĖ | Ne | į 9 bl | || 23 | 9 | TUR=ATĖ=3 ATĖ=SKIR=3 | -- | į 10bl | || 24 | 10 | SKIR=3-3=0 | -- | į 6 bl | 6 ciklas || 25 | 6 | ? SKIR<>0 | Ne | į 11 bl | |Kaip matosi iš lentelės, valdymas algoritmo blok-schemoje prasukęs 6ciklus, 26 žingsnyje pasiekė rezultatą. Toliau BDD išvedamas į ekraną ir einama į pabaigą. Pateiktas BDD radimo algoritmas nėra efektyvus (ko norėti iš tūkstantmečio), efektyvesnis būtų algoritmas su dalybos veiksmu naudojant rekursiją, bet tai jau tolimesni klausymai. Pastebėsime, kad algoritmo blok-schemoje ir prasukimo lentelėje veiksmams koduoti buvo naudojamas, t.v., pseudokodas, leidžiantis atsiriboti nuo bet kurios algoritminės kalbos. Priklausomai nuo to, kokiame bloke įrašytas veiksmas, jis gali būti perskaitytas įvairiai. Pavyzdžiui, aritmetinių veiksmų bloke užrašas Sk=0 skaitomas taip:”kintamajam Sk priskirti reikšmę 0(nulis)” , o sąlygos tikrinimo bloke šis užrašas turi būti skaitomas-”Ar kintamojo Sk reikšmė lygi nuliui?”(Prasukimo lentelėje,aiškumo dėlei, sąlygos tikrinimo bloke virš sąlygos įrašytas klaustukas (?)). Dabar, kai uždaviniui (pvz., Bdd) spręsti sudarytas ir patikrintas algoritmas, pagal jo blok-schemą galima pradėti rašyti programą viena, ar kita algoritmine kalba (pvz. PASKALIU), t.y., užkoduoti algoritmą.

Struktūrinio Programavimo Principai

Algoritmo blokinė schema (programa) gali būti aiški arba sunkiai suprantama. Tai priklauso ne tik nuo uždavinio sudėtingumo, bet ir nuo programavimo stiliaus. Pastaruoju metu kompiuterių greitaeigiškumas ir operatyvinės atminties talpa nustojo būti pagrindiniais programų kriterijais. Dabar nebesvarbu ar programa užims vienu kilobaitu daugiau atminties ir ar jos vykdimas truks dešimt milisekundžių ilgiau. Svarbiausiu kriterijumi dabar tampa programos aiškumas kitiems vartotojams. Todėl programuotojams privalu laikytis tam tikrų principų, leidžiančių pasiekti programos aiškumą net ir sudėtingam uždaviniui. Šie principai pavadinti STRUKTŪRINIO PROGRAMAVIMO PRINCIPAIS. Išvardinsim keletą pagrindinių principų.1. Bet kokio sudėtingumo uždavinio algoritmą galima sudaryti iš trijų elementarių algoritmavimo struktūrų kombinacijos, tai yra, iš KOMPOZICIJOS, ALTERNATYVOS ir KARTOJIMŲ struktūrų.2. Elementaria algoritmavimo struktūra laikoma tokia struktūra, kuri turi tik vieną valdymo įėjimą ir vieną (valdymo) išėjimą, valdymas į strukturą įėina iš viršaus, o išeina iš apačios (struktūros viduje valdymas gali “suktis”).3. Uždavinio sprendimo algoritmas turi būti atskirų elementarių struktūrų kompozicija, kurioje valdymas turi ateiti iš viršaus (PRADŽIOS bloko) ir nuosekliai praeiti visas struktūras iki apačios (PABAIGOS blokas).4. Algoritmą (tuo pačiu ir programą) privalu daryti “draugišką” vartotojui, t.y. , panaudoti dialogo priemones vykdant programą bei pateikti komentarus programos tekste bei algoritmo blok-schemoje.### Elementarios Algoritmavimo StruktūrosKaip jau minėta, algoritmo blok-schemą galima sudaryti atsiribojant nuo bet kurios algoritminės kalbos, arba nuo aplinkos, kurioje bus vykdomas tas algoritmas. Tam tikslui algoritmo veiksmams užrašyti naudojamas pseudokodas. Toliau parodysime, kaip sudaromas struktūrinis algoritmas ir kaip jis koduojamas PASKALIO (PASCAL) ir MathCad’o (MATHCAD) aplinkose. Paskalis parinktas todėl, kad tai universali aplinka, leidžianti spręsti įvairių sričių uždavinius (uždaviniai su tekstiniais sąrašais, duomenų masyvais, failais, techniniai, ekonominiai, inžinieriniai, matematiniai uždaviniai). Be to, Paskalis specialiai skirtas programavimo mokymui, todėl lengvai suprantamas ir įsisąvinamas. Tačiau, kaip ir kiekviena universali priemonė panaudota specialiose, siauruose srityse gali būti mažiau efektyvi negu specializuota tai sričiai priemonė. Pavyzdžiui veiksmus su matricomis galima užprogramuoti ir Paskaliu, tačiau tai žymiai paprasčiau ir efektingiau galima padaryti naudojant MathCad’o aplinką. Aplamai, sprendžiant techninius, inžinierinius, matematinius uždavinius MathCad’o aplinka tampa nepakeičiama.### Elementari Algoritmavimo Struktūra - KompozicijaKompozicijos struktūros blokinė schema parodyta pav.3. Valdymas į struktūrą patenka per įėjimą ir perduodamas pirmam blokui (veiksmai 1). Atlikus visus pirmo bloko veiksmus, valdymas perduodamas antram blokui ir t.t., iki paskutinio struktūros bloko N. Bet kuri Paskalio programa traktuojama kaip vykdomosios programos dalies sakinių kompozicija. Vykdomojoje programos dalyje atsispindi visi programos algoritmo veiksmai, užkoduoti Pas...

tags: #blokine #veikimo #schema