Šiuolaikiniame skaitmeninių technologijų pasaulyjeprogramavimas yra įvairių kompiuterių, įtaisų ir kitos elektroninės įrangos darbo pagrindas. Ir gebėjimas greitai ir teisingai parengti algoritmo schemą yra šio mokslo pagrindas. Tokia schema yra grafinis procesų, kuriuos turi atlikti įranga, modelis. Jį sudaro atskiri funkciniai blokai, atliekantys įvairius tikslus (pradžia / pabaiga, įvestis / išėjimas, funkcijų skambutis ir tt).
Iš esmės algoritmas yra bendra instrukcijakad kokia seka būtina atlikti tam tikrus veiksmus, kai apdorojami šaltinio duomenys į norimą rezultatą. Kartu su šiuo terminu dažnai vartojama algoritmo samprata. Pagal jį suprantama metodų ir metodų, skirtų konkrečių problemų sprendimo sekai parengti, rinkinys.
Dažnai algoritmas nėra naudojamas kaipkompiuterio instrukcijos, bet kaip bet kokių veiksmų vykdymo schema. Tai leidžia mums atkreipti dėmesį į šio sprendimo metodo efektyvumą ir efektyvumą, ištaisyti galimas klaidas, taip pat palyginti jį su kitais panašiais sprendimais, dar prieš įvedant į kompiuterį. Be to, algoritmas yra pagrindas parengti programą, kuri turi būti parašyta programavimo kalba, kad būtų toliau įgyvendinamas informacijos apdorojimo kompiuteriu procesas. Iki šiol tapo žinomi du praktiniai tokių sekų konstravimo metodai. Pirmasis yra žingsnis po žingsnio žodinis aprašymas, o antrasis - užduočių algoritmo schema. Pirmasis iš jų gavo daug mažiau paskirstymo. Taip yra dėl to, kad trūksta aiškumo ir verbiškumo. Antrasis metodas, priešingai, yra labai patogi vaizdo sekų priemonė. Ji plačiai paplitusi tiek švietimo, tiek mokslinėje literatūroje.
Programos schema yragrafinių simbolių seką, nurodančią konkrečių operacijų vykdymą, taip pat jų sąsajas Kiekviename tokiame vaizde pateikiama informacija apie atliktiną užduotį. Grafinių simbolių dydžius ir konfigūraciją, taip pat sekos projektavimo tvarką reglamentuoja GOST 19003-80 ir GOST 19002-80.
Apsvarstykite pagrindinius algoritmo schemos elementus (nuotraukoje pateikiami jų stiliaus pavyzdžiai).
1. Procesas - skaičiavimo veiksmas arba tokių veiksmų seka.
2. Sprendimas - patikrinkite nurodytą sąlygą.
3. Modifikacija - ciklo antraštė.
4. Iš anksto nustatytas procesas - iškvietimas į procedūrą.
5. Dokumentas - spausdinimas ir duomenų išvestis.
6. Punch card - įveskite informaciją.
7. Įėjimas / išėjimas - įėjimas / išėjimas.
8. Jungtis - srauto linijų pertrauka.
9. Pagalbiniai algoritmai naudojami paleidimo / pabaigos - pradžios, pabaigos, sustabdymo, paleidimo, įėjimo ir išėjimo srityse.
10. Komentaras - naudojami aiškinamosioms pastaboms įdėti.
11. Vertikalūs ir horizontalūs srautai - sekos kryptis, ryšio linija tarp blokų.
12. Sujungti - sujungimo sriegius.
13. Tarpinė jungtis - etiketė, simbolizuojanti perėjimą prie kito lapo.
Algoritmo blokinės diagramos konstravimas atliekamas pagalGOST nustatyti specifiniai reikalavimai. Pavyzdžiui, jungiant grafinius simbolius, naudojamos tik horizontalios arba vertikalios linijos. Srautai, nukreipti iš dešinės į kairę ir iš apačios į viršų, būtinai pažymėti rodyklėmis. Kitos eilutės gali būti nepažymėtos. Atstumas tarp lygiagrečių srautų turėtų būti ne mažesnis kaip trys milimetrai, o tarp kitų elementų - mažiausiai penki milimetrai. Blokų dydžiai turi būti penki kartotiniai. Grafinio simbolio horizontalus ir vertikalus santykis yra 1,5. Kartais leidžiama lygi dviem. Aprašymo patogumui grafiniai simboliai turėtų būti sunumeruoti. Pagal jungčių pobūdį išskiriami tiesinių, ciklinių ir išsišakojančių struktūrų algoritmo blokinių diagramų tipai.
Norint geriau suprasti algoritmo principągalite apsvarstyti paprasčiausią automatą. Tai apima atmintį, susidedančią iš ląstelių; rašyti / skaityti galvą; Procesorius. Koks yra tokio prietaiso principas? Galva, gavusi procesoriaus užsakymą, įrašo duomenis į langelį arba nuskaito konstantą. Paprasčiausiu atveju tai bus aritmetinis skaičius. Be to, konstantos gali būti duomenų struktūros, simbolių eilutės ir kt. Kintamasis yra atminties ląstelė, kurioje saugoma informacija. Vykdant algoritmą, tokioje ląstelėje galima įrašyti įvairius duomenis. Šiuo principu yra sukurti asmeniniai kompiuteriai ir kita elektronika. Užduoties atlikimo algoritmas yra komandų rinkinys, skirtas informacijai skaityti ar įrašyti į šias atminties ląsteles.
Masyvai yra dar vienas variantasindeksuoti kintamieji. Tiesą sakant, tai yra ląstelių rinkinys, kurį vienija bendras pavadinimas. Masyvai išskiria 2D, 3D ir pan. Paprasčiausias iš jų yra nuoseklių langelių serija. Toks masyvas turi savo pavadinimą. Kiekvienas elementas turi savo skaičių - indeksą. Į langelį įrašyta konstanta vadinama masyvo elementu.
Dvimatis tipas pagal elementų išdėstymąprimena matricą. Tokio masyvo ląstelėms būdingi du indeksai (tai primena šachmatų lentą su ląstelių skaičiumi). Trimatis ir daugiau struktūrų realizuojamas tuo pačiu principu.
Šio tipo schemų sekaalgoritmams (pavyzdžiai pateikti šiame straipsnyje) būdingas vykdymas nuo pradžios iki pabaigos iš viršaus į apačią. Tokiu atveju automatas žingsnis po žingsnio atlieka jam nustatytas operacijas. Kiekvieną veiksmą apdoroja procesorius. Be skaičiavimų, jei reikia, jis nurodo skaitymo / rašymo galvutę, kur ir ką reikia parašyti ir iš kur skaityti. Galutinis rezultatas įrašomas į atminties ląsteles, kurių kiekviena turi savo indeksą ir saugo savo konstantą.
Praktiškai linijinis tipas yra labai retas.Dažnai reikia organizuoti seką, kuri, atsižvelgiant į nurodytas sąlygas, teka palei vieną ar kitą šaką. Šakojančio tipo algoritmo blokinėje diagramoje yra elementas „Sprendimas“, dėl kurio tikrinama tam tikra sąlyga, ir kuo daugiau jų yra, tuo daugiau šakų turi seka.
Apsvarstykite, kaipišsišakojęs algoritmas. Paimkime pavyzdžiu funkciją: z = y / x. Iš sąlygos matyti, kad ši lygtis turi vieną apribojimą - negalima padalyti iš nulio. Taigi būtina neįtraukti šio sprendimo ir įspėti vartotoją apie įvykusią klaidą. Pirmiausia sudaroma algoritmo blokinė schema. Jis susidės iš septynių blokų. Pirmasis grafinis simbolis yra „Pradėti“, antrasis - „Enter“, čia turėtumėte nustatyti X ir Y reikšmes. Tada seka „Sprendimo“ blokas, jame tikrinama sąlyga: X = 0. Tokiu atveju automatas patikrina langelį su konstanta, jei įvestoji reikšmė sutampa su ja, tada algoritmas eis išilgai „Taip“ šakos. Tokiu atveju valdymas perkeliamas į ketvirtą bloką ir mašina išleidžia „klaidą“, darbas baigiasi septintuoju simboliu „Pabaiga“. Jei bandymo rezultatas yra neigiamas, tada padalijimo procesas atliekamas penktame grafiniame simbolyje ir nustatoma vertė Z. Šeštame bloke rezultatas rodomas ekrane.
Dažnai sprendžiant problemas reikia pakartotiatliekant bet kokią operaciją pagal tą pačią priklausomybę nuo skirtingų kintamųjų reikšmių ir atliekant kelis praėjimus per tą patį grandinės skyrių. Tokios sekcijos paprastai vadinamos ciklais, o algoritmas - cikliniu. Naudojant šį metodą, žymiai sutrumpėja pati seka. Cikliniai algoritmai paprastai skirstomi į du tipus: iš anksto nežinomas ir iš anksto žinomas tokių leidimų skaičius.
Apsvarstykite pavyzdį, kuriame pateikiama blokinė diagramaalgoritmas su nežinomu išėjimų skaičiumi iš anksto. Norėdami tai padaryti, turite išspręsti problemą - nurodykite mažiausią natūralių skaičių serijos narių skaičių, kurių suma viršija skaičių K. Tokia algoritmo blokinė schema susideda iš aštuonių simbolių. Pirmiausia įvedame skaičiaus K (Nr. 2) vertę. Tada 3 bloke kintamasis P gauna reikšmę „vienas“, o tai reiškia, kad nuo jo prasidės natūralių skaičių skaičiavimas. Sukaupta suma C pradžioje gauna reikšmę „nulis“. Toliau valdymas perkeliamas į penktąjį bloką, kur vykdoma komanda: С = С + П. Tai yra, susumuojamos ląstelių C ir P vertės, o rezultatas perrašomas C. Po to, kai 6 bloke pridėtas pirmasis šios sekos narys, tikrinama sąlyga - ar suma viršija nurodytą skaičių K? Jei sąlyga neįvykdyta, valdymas perkeliamas į ketvirtąjį bloką, kur vienas pridedamas prie kintamojo P ir vėl pereinama prie 5 bloko. Ši procedūra tęsis tol, kol bus įvykdyta sąlyga: C> K, tai yra, sukaupta suma viršija nurodytą vertę. Kintamasis P yra kilpos skaitiklis. Tada pereinama prie 7 bloko numerio, kuriame spausdinami darbo rezultatai.
Dažnai su algoritminiu rinkinio sprendimuužduotį, reikia sukurti ciklą, kurio kūne būtų dar vienas ciklas. Tai laikoma norma. Tokie elementai vadinami įdėtomis kilpų struktūromis. Jų užsakymas gali būti gana didelis. Tai nustatoma metodu, kuriuo pasiekiamas reikiamos problemos sprendimas. Pavyzdžiui, apdorojant vienos dimensijos masyvą, paprastai sukuriama algoritmo blokinė schema be lizdų kilpų. Nepaisant to, daugeliu atvejų, sprendžiant tokias problemas, reikia pasirinkti būtent tokį sprendimą. Reikėtų pažymėti, kad visose įdėtose kilpose, įskaitant pirmąją (išorinę), turi būti skaitikliai su skirtingais pavadinimais. Už jų ciklo ribų jie gali būti naudojami kaip įprasti kintamieji.
Šio tipo seka yra analogiškakalbos rutina. Pagalbinis algoritmas turi pavadinimą ir parametrus, kurie vadinami formaliaisiais. Pavadinimas suteikiamas siekiant jį atskirti, o parametrai veikia kaip išvesties ir įvesties matematinės funkcijos. Jie parenkami taip, kad būtų išnaudotas visas reikalingų verčių diapazonas. Dažnai tas pats oficialus parametras yra ir įvestis, ir išvestis. Pavyzdžiui, tokiame algoritme apdorojimo masyvas gali būti pateiktas kaip įvestis. Gautoje dalyje jis gali būti pateiktas modifikuota forma kaip išvesties parametras. Tarp pagalbinio tipo algoritmų išskiriamos funkcijos ir procedūros.
Šis terminas suprantamas kaip bendros schemos skaidymaspagalbinio (funkcijų ir procedūrų) ir galvos algoritmas. Šis metodas yra labai paprastas, kai algoritmą pateikia blokinė diagrama - pirmiausia nuo jo yra izoliuoti skyriai, atsakingi už pagrindinį darbą. Sunkiausi etapai įforminami kaip aukščiausio lygio funkcijos ir procedūros. Tada jie yra suskirstyti į elementarius žemo lygio skyrius. Čia veikia principas „nuo sudėtingo iki paprasto“. Tai daroma tol, kol algoritmas bus analizuojamas į paprasčiausius elementus. Paprastai sekos skaidymo sprendimas susideda iš trijų pagrindinių žingsnių: duomenų įvedimo, masyvų rūšiavimo ir išrūšiuoto masyvo išvesties. Pirmojo ir paskutinio etapų dėl elementaraus pobūdžio jų nereikia skaidyti, todėl jie atliekami galvos algoritme. Bet antrasis yra labai sudėtingas nepriklausomas skaičiavimų fragmentas, todėl jis paprastai rodomas atskirame bloke. Savo ruožtu rūšiavimo etapai yra suskirstyti į dvi dalis: poreikio atlikti procedūrą nustatymas (N - 1) - daugkartinis eismas per pateiktą masyvą ir mažiausio elemento radimas nagrinėjamame masyvo fragmente su vėlesniu jo pertvarkymu su pradiniu sekcijos elementu. Kadangi paskutinis etapas kartojamas daug kartų, jis įforminamas kaip atskira procedūra.