Algoritmas

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. Pirmiausia išsiaškinkime, kodėl pradėjom kalbėti apie žmogų kaip procesorių. 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ą. 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.2. Žodinis algoritmas 1. Pradžia 2. Užrašyti du sveikus teigiamus skaičius M ir N 3. Nustatyti, kuris iš užrašytųjų skaičių yra didesnis.Didesnįjį skaičių pavadinti TURiniu, o mažesnįjį – ATĖminiu 4. Rasti TURinio ir ATĖminio skirtumą (SKIR=TUR-ATĖ ) 5. Patikrinti ar skirtumas nelygus nuliui ( SKIR<>0 ?) 5.1. Jeigu TAIP (SKIR<>0), eiti į 6 punktą 5.2. Jeigu NE (SKIR=0), eiti į 11 punktą 6. Patikrinti ar gautas SKIRtumas didesnis už buvusį ATĖminį (SKIR>ATĖ ?) 6.1. Jei TAIP, eiti į 7 punktą 6.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. Eiti į 5 punktą 11. Bendru didžiausiu dalikliu (BDD) pavadinti paskutiniojo skirtumo veiksmo ATĖminį (BDD=ATĖ) 12. Atsakymas: Dviejų sveikų skaičių M= ir N= bendras didžiausias daliklis BDD= 13. Pabaiga Kūrimo ir tikrinimo procese naudotina informatyviausia – grafinė algoritmo forma, pvz., algoritmo blokinė schema. 1.3. 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. PASTABA. Kadangi PRADŽIOS ir PABAIGOS blokai yra unikalūs, tai jų numeracija nebūtina. 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. Algoritmo blokinės schemos grafinio vaizdavimo elementai 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).