Programavimo kultūros elementai

Programavimo kultūros elementaiAlgoritmas rašomas ne tik kompiuteriui. Svarbiausias algoritmų skaitytojas yra žmogus. Skaitytojas turi greitai ir lengvai suvokti algoritmą, todėl rašantieji turi gerai apgalvoti algoritmavimo stilių, parinkti prasmingus vardus, vaizdžiai išdėstyti tekstą, pateikti sudėtingesnių veiksmų komentarus.Uždavinio sprendimo užrašymas, stengiantis jį išreikšti kuo aiškiau ir vaizdžiau, vadinamas algoritmavimo stiliumi.Algoritmavimo stilius gali būti tobulinamas dviem būdais:1. Skaitant bei nagrinėjant kitų parašytus gerus algoritmus;2. Pačiam sudarant kuo daugiau algoritmų.Algoritmavimo kultūra suprantama kiek plačiau: ji aprėpia ne tik algoritmavimo stilių, bet ir algoritmo teksto išdėstymą, komentarų rašymą.Štai keletas patarimų, kaip pagerinti algoritmavimo kultūrą:• Algoritmas turi gerai tikti duotam uždaviniui spręsti: tinkamai parinkti duomenų tipus bei valdymo struktūras.• Algoritmas turi būti vaizdus, lakoniškas, veiksmai turi logiškai sekti vienas po kito. Neturi būti nereikalingų, perteklinių veiksmų.• Algoritmas turi būti racionalus, t.y. trumpiausiu keliu sprendžiantis duotą uždavinį.• Algoritmas turi būti ekonomiškas, t.y. taupantis kompiuterio laiką bei atminties vietą duomenims saugoti. • Visi algoritme vartojami vardai turėtų būti prasmingi, raiškiai nusakantys jais reiškiamus objektus. Pageidautina aprašant vardus juos iš anksto komentuoti.• Algoritmas turi būti vaizdžiai pateiktas ir lengvai suvokiamas.• Sudėtingas algoritmo vietas reikia komentuoti.

Algoritmo teksto išdėstymasAlgoritmo tekstą reikia išdėstyti kuo vaizdžiau. Yra keletas bendrų taisyklių, nusakančių, kaip pateikti algoritmo tekstą. Jų esmė – algoritmo eilučių lygiavimas ir patraukimas per keletą simbolių į dešinę ar kaitę priklausomai nuo teksto prasmės.program . . . var . . . . . . begin read . . . if . . . then . . . else . . . while . . . do begin . . . end for . . . to . . . do begin . . . end writeln . . . end.

Suformuluosime keletą algoritmo rašymo taisyklių.Kiekvienas sakinys turi būti rašomas iš naujos eilutės, pavyzdžiui:

k := a + b + c;kkk := a * a + b * b – cIšimtis gali būti nebent tuomet, kai sakiniai labai trumpi ir logiškai susiję. Pavyzdžiui, kai kintamiesiems reikia priskirti pradines reikšmes:s1 := 0; s2 := 0; s3 := 0To paties lygio sakiniai, esantys skirtingose eilutėse, turi būti sulygiuoti vertikaliai, pavyzdžiui:kv := a * a;kub := a * a * a;sum := kv * kv + kub * kubSakinius, esančius kitame, sudėtingesniame, sakinyje, reikia patraukti į dešinę per keletą pozicijų, pavyzdžiui per tris:s := 0;while a > 10 do while b > 10 do s := s + 1;rezultatas := s * sŠiame pavyzdyje antrasis ciklas yra pirmajame. Todėl jis patrauktas į dešinę per tris pozicijas. Sakinys s := s + 1 dar patrauktas į dešinę antrojo ciklo antraštės atžvilgiu. Paskutinis priskyrimo sakinys yra to paties lygio kaip ir išorinis ciklas, todėl jis lygiuojamas su šio ciklo pradžia.To paties sudėtinio sakinio ribas žyminčius žodžius begin ir end reikia lygiuoti vertikaliai, pavyzdžiui:begin pirm := x div 10; pask := x mod 10endSąlyginį sakinį patariama išdėstyti atsižvelgiant į tai, kokio ilgio ir sudėtingumo yra sąlyga bei sakiniai einantys po žodžių then ir else.Štai keletas dažniau vartojamų sąlyginio sakinio išdėstymo schemų:if . . . then . . . else . . .

if . . . then . . . else . . .

if . . . then . . . else if . . . then . . . else . . .

Algoritmo komentavimasAlgoritmą skaityti daug lengviau, kai sudėtingesnės teksto vietos aiškinamos (užrašomi komentarai).Keletas vietų, kur paprastai reikalingi komentarai:Komentarai po algoritmo (programos) antraštės. Šitaip nusakoma, ką atlieka algoritmas. Kartais čia nurodomi ribojimai pradiniams duomenims ar algoritmo autoriaus pavardė, sudarymo laikas.Komentarai kintamųjų aprašuose. Juose pateikiama informacija apie kintamuosius, jų paskirtį, pavyzdžiui:var p, {pažymys} suma, {pažymių suma} n : integer; {pažymių skaičius}Komentarai sąlyginiame sakinyje. Kad būtų lengviau suprasti, ką reiškia sudėtingesnė sąlyga, pageidautina rašyti komentarus. Pavyzdžiui:

if (a = b) and (b = c) then { trikampis lygiakraštis} . . . else if (a = b) or (a = c) or (b = c) then { trikampis lygiašonis} . . . else {trikampis įvairiakraštis}Komentarai prieš ciklą.pageidautina prieš ciklo antraštę ar po jos užrašyti, ką šis ciklas atlieka, pavyzdžiui:suma := 0;while n > 0 do {skaičiaus n skaitmenų suma} begin suma := suma + n mod 10; n := n div 10 end;Komentarai turi būti trumpi, neužgožiantys algoritmo teksto, nusakantys tik esminius dalykus. Reikėtų pateikti ir trumpą uždavinio formuluotę.