Programavimo kultūros elementai
Programavimo kultūros elementai
Algoritmas 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ų rraš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 iir lengvai suvokiamas.
• Sudėtingas algoritmo vietas reikia komentuoti.
Algoritmo teksto išdėstymas
Algoritmo 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 tteksto 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 – c
Iš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 := 0
To paties lygio sakiniai, esantys skirtingose eilutėse, tturi būti sulygiuoti vertikaliai, pavyzdžiui:
kv := a * a;
kub := a * a * a;
sum := kv * kv + kub * kub
Sakinius, 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 cciklo 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 10
end
Są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 komentavimas
Algoritmą 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 { ttrikampis 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ę.