10.

Maija par programmēšanu jau zina visu

Jautri svilpodama, Maija pienāca pie mašīnas. Pēcis viņu jau gaidīja.

— Nokavējies. Bet pa šo laiku te bija Algoritms. Apjautājās, kā iet, es pastāstīju, un tad viņš izteicās, ka tava apmācība ir beigusies.

Nevarētu teikt, ka Maija būtu pārāk aizrāvusies ar jauno nodarbību, taču viņa bija domājusi, ka tā būs viņa, kas pateiks, ka viss nu ir līdz kaklam, kad patiešām būs apnicis. Bet tā, pēkšņi, viņu atstādināt... nē, pie tā Maija gan nebija pieradusi.

78 — Kas tad tie par jaunumiem! Kam es te esmu pāri nodarījusi? Vai varbūt kādu apsaukājusi? Vai tavam Algoritmam ar kaut ko pa pliko pauri iemetusi? Vai...

— Viņam nemaz nav pliks pauris. Tas pirmkārt. Bet, otrkārt, nevajag trokšņot. Viņš tikai teica tā: ja cilvēks ir apguvis četrus programmēšanas stūrakmeņus — sazarošanās operatoru, ievades un izvades operatorus un piešķires operatoru, tad par programmēšanu viņš zina visu būtisko un palikuši ir sīkumi, nenozīmīgas detaļas. Vārdu sakot, tagad tu vari sākt mācīt citus.

Ilustrācija

— Zini ko, Beisikān! Es dažkārt skatos uz tevi, un man sāk likties, ka tu esi baigi dumjš, nu vienkārši nepārspējams. Un tie tavi sājie jociņi... Bet ja nopietni: vai tad tiešām programmēšanā nekā vairāk nav kā tikai šie četri operatori?

— Kur nu! Vēl būs nezin cik daždažādu noteikumu, operatoru un paņēmienu, gan interesantu, gan ne visai. Taču nekā sevišķi jauna vairāk nebūs, ja nu vienīgi apakšprogrammas un funkcijas jēdzieni, bet tie ir viegli saprotami. Vēl gan ir skaitļu masīva jēdziens, bet par to es tev tūlīt pat izstāstīšu.

Par skaitļu masīviem

MASĪVSSkaitļu masīvs, citiem vārdiem sakot, ir skaitļu tabula jeb skaitļu virkne, turklāt šie skaitļi ir izvietoti mašīnas atmiņā un tiem ir savi numuri, lai tos citu no cita varētu atšķirt. Var teikt arī tā: masīvs ir mainīgais ar vairākām 79 vērtībām, kuras mēs numurējam. Un — kā jau mainīgajam — tam ir apzīmējums, kurš tiek veidots tāpat kā vienkāršo mainīgo apzīmējums — no burta vai no burta un cipara.

MASĪVA ELEMENTSJa mums, piemēram, ir masīvs ar apzīmējumu M, tad šā masīva pirmais skaitlis jeb mainīgā M pirmā vērtība, jeb — kā visbiežāk saka — masīva pirmais elements tiek apzīmēts ar M(1), otrais — ar M(2), trešais — ar M(3) un tā tālāk. Šie apzīmējumi, kā tu pati saproti, jālieto tad, kad tev attiecīgā elementa vērtība ir jāizmanto kādā aritmētiskā izteiksmē vai arī šim elementam tu gribi piešķirt kādu vērtību. Piemēram, pieraksts M(6)=18 nozīmē to, ka masīva M sestajam elementam tiek piešķirta vērtība astoņpadsmit. Izteiksme Z=5*M(6) nozīmē to, ka masīva M sestā elementa vērtība ir jāpareizina ar pieci.

Neliels masīvs ar sešiem elementiem
Neliels masīvs ar sešiem elementiem

— Vai tu vari minēt kaut vienu piemēru, kur tādi masīvi patiešām ir vajadzīgi un noderīgi?

— Protams, varu. Bet, kamēr vēl neesmu aizmirsis, — iekavās pēc masīva apzīmējuma nav obligāti jāraksta skaitlis, lai dabūtu vajadzīgā masīva elementa numuru. Vari rakstīt, piemēram, M(K), tad interpretators atradīs elementu ar numuru K, protams, ja pirms tam šim mainīgajam K ir piešķirta skaitliskā vērtība. Var vēl sarežģītāk: M(K+1) vai M(5×K+3), un vispār — iekavās var būt jebkura aritmētiskā izteiksme. Interpretators šo izteiksmi izrēķinās un atradīs vajadzīgo masīva elementu.

Tagad par to, kad šādi masīvi ir vajadzīgi. Vispārīgi runājot, tie ir vajadzīgi tad, kad tavai programmai ir jāstrādā ar daudziem viena tipa skaitļiem, kas doti tabulās. Teiksim, kaut kādu mērījumu rezultāti — vidējā dienas temperatūra gada laikā vai 80 vienādu katra lieluma apavu skaits veikalā, vai algas apmērs katram strādājošajam kaut kādā darbavietā. Svarīgi ir tas, lai visi strādājošie algu sarakstā būtu stingrā, nemainīgā kārtībā — tad pēc strādājošā kārtas numura algas masīvā varēs atrast viņam pienākošos summu. Bet, lūk, cits piemērs. Masīvā var glabāt atzīmes, kādas skolēni saņēmuši angļu valodas kontroldarbā. Atkal svarīgi ir tas, lai skolēna kārtas numurs klases žurnālā būtu nemainīgs — tas būs arī masīva elementa numurs. Jukas te nedrīkst pieļaut, jo nevienam nebūs nekāda prieka, ja viņam tiks piedēvēta sveša atzīme. Kā redzi, tamlīdzīgu piemēru ir papilnam.

— Labi, diezgan piemēru. Ja kaut kas vēl ir jāzina, tad saki, un sākam darbu.

Tas, kāds masīvs būs vajadzīgs, jāzina pašā sākumā

MASĪVA GARUMS— Pirms sāc darbu, vajag aprakstīt masīvu — piešķirt tam apzīmējumu un garumu. Masīva apzīmējumu var veidot tāpat kā mainīgā apzīmējumu, un turklāt tie var arī sakrist, piemēram, mainīgais A un masīvs A. Apzīmējums būs viens un tas pats, taču vērtības, protams, ne. Bet masīva garums — kā jau to viegli iedomāties — ir maksimālais elementu skaits masīvā. Vispār masīvu apraksta ar speciāla masīvu aprakstes operatora DIM palīdzību. Šie trīs burti ir saīsinājums no angļu vārda dimension — dimensija. Pēc DIM jāraksta masīva apzīmējums un iekavās masīva garums jeb, kā es teicu, maksimālais elementu skaits.

— Bet kas tad īsti ir maksimālais elementu skaits? Un kāpēc maksimālais?

— Tūlīt pateikšu. Vispirms tikai pabeigšu par operatoru DIM. Tas var izskatīties, piemēram, šāds:

Ilustrācija

Kā redzi, ar DIM var definēt vairākus masīvus uzreiz, tie tikai pēc šī operatora jāapraksta, citu no cita 81 atdalot ar komatu. Bet nu par maksimālo elementu skaitu. Tas ir tā. Var gadīties, ka programmā tev ir vajadzīgs masīvs, bet nav zināms, cik šajā masīvā ir elementu. Tad tu šo masīvu vari aprakstīt, par maksimālo elementu skaitu ņemot skaitli, kas katrā ziņā ir lielāks par elementu kopējo skaitu. Ja tu esi aprakstījusi garāku masīvu, nekā tev ir vajadzīgs, — nav nekāda nelaime, svarīgi, lai tas nebūtu īsāks.

Masīva apjoms jāzina savlaicīgi
Masīva apjoms jāzina savlaicīgi

— Bet ja es pat nevaru iedomāties, cik būs elementu?

— Tad programmu rakstīt tev vēl par agru. Parasti jau var un vajag zināt, kāds būs maksimālais elementu skaits masīvā. Piemēram, tu gribi izveidot kontroldarba atzīmju masīvu, ko apzīmējam ar A, pie tam tādu, kas derētu jebkurai klasei. Uzreiz rodas grūtības, jo skolēnu skaits katrā klasē ir atšķirīgs. Tad šo masīvu var aprakstīt šādi:

20 DIM A(50).

Es domāju, ka klasē nekad nebūs vairāk par piecdesmit skolēniem. Šajā gadījumā 50 būs maksimālais elementu skaits, bet faktiskais tev būs mašīnā jāievada atsevišķi.

Maza programma atzīmju ievadīšanai

Tā kā pie mašīnas mēs nevaram tikt, jo pašlaik to remontē, tad sastādi, lūdzu, programmu, kas kaut kādā masīvā ievadītu kontroldarba atzīmes. Šādai programmai lielas vērtības nebūs, bet tu vari iedomāties, ka tā ir lielas programmas sastāvdaļa.

82 — Lūdzu.

10 DIM A(50)
20 PRINT «IEVADIET ATZIHMI»
30 INPUT A(1)
40 PRINT «IEVADIET ATZIHMI»
50 INPUT A(2)

Paklau, vai tie PRINT un INPUT man visu laiku būs jāraksta?

Ilustrācija

— Nē-ē! Tad jau tā programmēšana būtu tīrie rakstu darbi. Atceries vienu no mūsu pirmajiem algoritmiem — skolā iešanas algoritmu! Tur tika izveidots klašu skaitītājs, šeit tu vari izveidot skolēnu skaitītāju.

— Jā, jā, tā tur bija. Ahā! Ja es rakstu 15 N=1, tad skaitītāja N vērtība kļūs vienāda ar 1. Tālāk rindā 40 N=N+1 skolēna numurs palielināsies par vienu. Un tas ir gandrīz viss.

— Rindā ar numuru 30 neaizmirsti A(1) nomainīt ar A(N).

— Jā, jā, citādi visu laiku tiks ievadīts tikai masīva pirmais elements. Bet tagad man vajag, lai pēc skaitītāja vērtības palielināšanas par vienu atkal tiktu izpildīta rinda 20.

Operators, kurš vadību nodod vienmēr

— Ja tu tā gribi, tad vari izmantot pārejas operatoru GO TO, ko izrunā «gou tu».

— Un kas latviski nozīmē «ej uz», bet bija runāts, ka nekādu jaunu operatoru vairāk nebūs.

— Tā nu gan es neteicu. Runa bija par to, ka nekā būtiski jauna nebūs, bet vispār jauni operatori varētu būt. Vēl tikai mazliet par operatoru GO TO. Pēc tā jāraksta tās rindas numurs, kura ir jāizpilda nākamā. Piemēram, 50 GO TO 20 nozīmē, ka nākamās tiks izpildītas rindas, sākot ar numuru 20, un tā tālāk pēc kārtas līdz rindai ar operatoru IF vai GO TO. Starp citu, operators GO TO nav nekas jauns. To var uzrakstīt ar operatora IF palīdzību. Piemēram, šādi:

50 IF Z=Z THEN 20.

Šis operators mainīgā Z vērtību salīdzina pašu ar sevi un, ja tās ir vienādas, bet tās vienmēr ir vienādas, tad vadību nodod uz rindu ar numuru 20.

— Kāpēc tad tāds operators GO TO vispār ir vajadzīgs?

Viņš taču nekad neapstāsies!
Viņš taču nekad neapstāsies!

— Īsuma labad, tikai īsuma labad. Arī skaidrāk būs, ja uzrakstīsi GO TO, nevis kaut kādu tur IF.

— Skaties, programma ir gatava!

10 DIM A(50)
15 N=1
20 PRINT «IEVADIET ATZIHMI»
30 INPUT A(N)
40 N=N+1
50 GO TO 20
60 END

Nemaz nav slikti. Vai ne?

— Slikti jau nav, bet šis un tas tomēr trūkst. Mašīna visu laiku prasīs un prasīs atzīmes.

— Un nekad nebeigs?

— Nē, principā viss beigsies, ievadot piecdesmitā masīva elementa vērtību. Piecdesmit pirmo vairs nevarēsi ievadīt — būs ziņojums par kļūdu.

Kā beidz datu ievadi

— Ko tagad lai daru? Varbūt darīt tā, kā mēs darījām, kad Fārenheita grādus pārvērtām Celsija grādos? Pēc katras atzīmes ievadīšanas vēl papildus ievadīt nulli, ja ievade beidzas.

— Jā, tā varētu. Taču tā tu patiesībā divkāršosi lietotāja darbu. Viņam vajadzēs ievadīt atzīmi un tūdaļ arī norādījumu, vai darbu turpināt vai ne. Cik atzīmju, tik atbilžu. Un ja nu atzīmes ar atbildēm sajūk?

— Nesajuks. Uzrakstīsim uz ekrāna, kas jāievada.

— Visticamāk, ka sajuks. Tādās reizēs vienmēr gribas ievadīt ātrāk un ātrāk, un tas beidzas ar to, ka sajūk.

84 — Pats vainīgs.

— To vēl nevar zināt. Varbūt vainīgs ir programmists, kurš tik nesakarīgi ir noprogrammējis. Labāk būtu darīt tā: pašā sākumā izvadīt ziņu, ka ievade beigsies tad, kad atzīmes vietā tiks ievadīta nulle. Skaidrs, ka atzīmes var būt tikai no 1 līdz 5. Šajā gadījumā katra ievadītā atzīme programmā ir jāpārbauda — ir vai nav nulle.

Vēl varētu pamēģināt citu paņēmienu: pašā sākumā mēs varam pavaicāt, cik klasē ir skolēnu, un katrreiz pirms — es uzsveru — pirms, nevis pēc N palielināšanas rindā 40 pārbaudām, vai N jau ir vienāds ar skolēnu skaitu. Ja nav, tad turpinām. Ja ir, tad beidzam.

— Kāpēc tu tik ļoti uzsver, ka šī pārbaude ir jāliek pirms N palielināšanas?

— Pirms N vērtības palielināšanas jāpārbauda, vai šī vērtība ir vienāda ar skolēnu skaitu, bet pēc N vērtības palielināšanas — vai šī vērtība ir lielāka par skolēnu skaitu. Tur ir tā atšķirība.

— Bet kā tad būtu labāk programmēt to atzīmju ievadi?

— Tagad man liekas,ka labāk būtu, ja pēc rindas 40 rindas 50 vietā mēs izdarītu salīdzināšanu un, ja N vērtība nebūtu lielāka par skolēnu skaitu, tad vadību nodotu uz rindu ar numuru 20.

— Cik es atceros, loģiskā nosacījuma «nav lielāka» sazarošanās operatoram nebija.

— Nebija gan. Bet ko nozīmē «nav lielāka»? Vai nu mazāka, vai vienāda. Bet tāds loģiskais nosacījums mums bija. Ja skolēnu skaitu apzīmējam ar K, tad jaunā rinda būs šāda:

50 IF N<=K THEN 20.

Bet tas vēl nav viss. Lai to, ko mēs te tik ilgi apspriežam, varētu uzrakstīt īsāk, ir izdomāts cikla operators FOR.

Operators, kurš kaut ko dara zināmu reižu skaitu

CIKLA MAINĪGAISBūtībā šis operators veido skaitītāju, kuru mēs šeit saucam par cikla mainīgo.

— Pag, pag, lai varētu veidot skaitītāju, ir taču jāzina, ar kādu skaitli jāsāk un ar kādu jābeidz?!

85 CIKLA ROBEŽA— Tu esi apbrīnojami apķērīga! Cikla operatorā tiešām ir jāuzrāda cikla mainīgā pirmā vērtība un arī robežvērtība. Un vēl jānorāda solis, ar kādu cikla mainīgais pieaug.

Ilustrācija

Cikla operatora piemērs varētu būt šāds:

FOR N=1 TO K STEP 1.

Tā gan ir tikai viena operatora daļa; bet vispirms — ko nozīmē «for»?

— Ja nepareizā latviešu valodā, tad «priekš» vai «dēļ», bet «tu», kas nāk pēc N=1, varētu nozīmēt «pie» vai «uz».

— Jā, bet šeit tas drīzāk nozīmē «līdz». Tūlīt pēc FOR atrodas mainīgā apzīmējums, šajā gadījumā — N. Tas arī ir tas teiksmainais cikla mainīgais. Pēc tā ir vienādības zīme, kurai seko cikla mainīgā pirmā vērtība. Šajā operatorā zīme «=» jālasa «no», tas ir, pavisam citādi nekā piešķires operatorā. Starp citu, kā mēs to tur īsti lasījām?

— «Tiek piešķirta vērtība», bet sazarošanās operatorā mēs to lasījām tā, kā pienākas, — «vienāds ar». Lūk, tā! Šo to es arī atceros.

— Malacis. Pēc TO ir jāraksta cikla mainīgā robežvērtība. Šoreiz tā būs mainīgā K vērtība. Bet pēc vārda «step», kas nozīmē «solis, pakāpiens», tiek rakstīta soļa vērtība.

Un vēl viens triks, ko es pats izdomāju. Tukšā vieta pašās operatora beigās jālasa «izpildiet sekojošos operatorus». Tā, tagad iepriekšējo piemēru mēs varam pārtulkot latviski:

BeisikāFORN=1TOKSTEP1
LatviskiMainīgā N vērtībāmno1līdzKar soli1izpildīt šos operatorus

Ko tas viss nozīmē!

Tagad es pastāstīšu par cikla operatora otro daļu, kas programmā atradīsies pavisam citā vietā un mūsu piemērā izskatīsies šāda:

NEXT N.

— «Nekst» nozīmē «nākamais».

— Jā, tā tas ir. Pievērs tikai uzmanību tam, ka pēc 86 NEXT ir jāraksta cikla mainīgā apzīmējums. Starp abām cikla operatora daļām gluži kā iekavās ir jāliek tie operatori, kas būs jāizpilda visu iespējamo cikla mainīgā vērtību gadījumos.

— Vai visas iespējamās nozīmē tās, kuras iegūst, pieskaitot un pieskaitot soli cikla mainīgā pirmajai vērtībai?

— Jā, bet neaizmirsti, ka pieskaitīšana beigsies tad, kad cikla mainīgā vērtība būs kļuvusi lielāka par robežvērtību. Var gadīties, ka jau pirmā vērtība ir lielāka par robežvērtību. Tad cikla operatori netiks izpildīti ne reizes.

Tagad es tev mēģināšu uzzīmēt kaut ko līdzīgu cikla operatora shēmai.

Ilustrācija

Papēti šo shēmu, tad tev kļūs skaidrāks. Shēma ir vienkāršota, jo patiesībā mainīgo B, C un D vietā var būt patvaļīgas aritmētiskas izteiksmes. No otras puses, ir iespējama vēl vienkāršāka cikla operatora forma: ja solis ir vienāds ar vienu, tad STEP 1 var arī nerakstīt. Saīsināti cikla operators, ar kuru mēs sākām, tad izskatīsies šāds:

FOR N=1 TO K
...
NEXT N

87 Tas nozīmē, ka tiks ņemtas N vērtības 1, 2, 3 un tā tālāk līdz K ieskaitot. Arī šajā, saīsinātajā formā gan vieninieka vietā, gan mainīgā K vietā var rakstīt aritmētiskās izteiksmes.

Programma iesācējiem piegriezējiem
Programma iesācējiem piegriezējiem

Pareizie un nepareizie cikla operatori

Un tagad paskatīsimies piemērus. Vai ir pareizs šāds cikla operators?

FOR I=100 TO 200 STEP K
...
NEXT I

— Es domāju, ka ir pareizs. Tiks ņemtas I vērtības, sākot ar simtu, ar soli K — tik ilgi, kamēr I būs lielāks par 200.

— Kāda būs pēdējā I vērtība, ja K ir vienāds ar seši?

— Ar seši? Man iznāk, ka pēdējā I vērtība būs 100+96, tātad 196.

— Bet tagad paskaties uz šo cikla operatoru. Vai būs pareizi?

FOR K=6+A*B/C TO ((Z+K)/A-Z*C)*2
...
NEXT K

— Nav pareizi.

— Kāpēc?

— Nezinu, bet pareizus operatorus tu taču vairāk nerādīsi, vai tad es skolotājus nepazīstu.

88 — Jāsaka, ka tev ir taisnība, bet tomēr paskaties un pasaki, kāda nepilnība ir šajā piemērā.

— Aritmētiskās izteiksmes taču var būt, solis, ja tas ir vienāds ar vienu, nav obligāti jānorāda...

— Bez šaubām. Vaina ir citur.

— Nezinu. Padodos.

— Šeit cikla beigu noteikšanai tiek izmantota izteiksme, kas satur cikla mainīgo K. Tas ir ļoti slikts stils. Nevar teikt, ka tas būtu nepareizi, jo interpretators, aprēķinot cikla mainīgā robežu, ņems to cikla mainīgā K vērtību, kura tam tobrīd būs. Un tā būs 6+A*B/C, tā ka patiesībā cikla mainīgā robeža tiks aprēķināta pēc izteiksmes ((Z+(6+A*B/C))/A-Z*C)*2. Vēlāk ciklā, kad mainīgajam K būs jauna vērtība, nekas netiks pārrēķināts.

— Viss nu ir skaidrs. Bet kas tad šeit ir tik slikts?

— Redzi, beisikam ir viens diezgan liels trūkums: katrai mašīnai šī valoda ir citāda. Protams, būtisku atšķirību nav, bet sīkumos — tikai šķietamos sīkumos, jo programmēšanā sīkumu nav, — tā var atšķirties. Piemēram, citas mašīnas interpretators visas izteiksmes FOR operatorā katrai cikla mainīgā vērtībai var aprēķināt no jauna. Un tad šī pēdējā programma tiks izpildīta pavisam citādi. Jāiegaumē vispārīgs programmēšanas princips — programmēt pēc iespējas vienkāršāk, tā, lai programma būtu piemērota jebkurai mašīnai un to viegli varētu saprast pats un citi.

— Par citām mašīnām vēl par agru domāt. Jāmēģina tikt galā ar šo pašu.

Un vēlreiz tā pati programma

— Bet nu paskaties uz mūsu atzīmju ievadīšanas programmu. Tagad, kad tu zini cikla operatoru, rindu 15 vari nomainīt ar cikla operatora FOR daļu un rindu ar numuriem 40 un 50 vietā ielikt NEXT N. Un tad tā programma būs šāda:

10 DIM A(50)
12 PRINT «IEVADIET SKOLEHNU SKAITU»;
13 INPUT K
15 FOR N=1 TO K
20 PRINT «IEVADIET »; N; «. SKOLEHNA ATZIHMI»;
30 INPUT A(N)
40 NEXT N
60 END

Skolēna kārtas numura izvadi rindā 20 es ievietoju, lai lietotājs precīzi zinātu, kuram skolēnam atzīme ir jāievada. Bet semikolus visiem tekstu izvades operatoriem beigās liku tādēļ, lai jautājumzīme, kuru pēc tam parādīs operators INPUT, būtu uzreiz pēc šiem tekstiem, tajā pašā rindā. Jā, un vēl ir nākusi klāt arī skolēnu skaita ievade rindā 12.

— Bet paklau — vai tad bija vērts tā ņemties, ja ietaupījām tikai vienu rindiņu? Iepriekš, lai izveidotu ciklu, bija vajadzīgas trīs rindiņas, bet tagad divas. Tāds sīkums vien ir.

— Kā to lai ņem. Es gan domāju, ka cikla operators nav izgudrots tikai ekonomijas labad. Cilvēcei tas ir vajadzīgs citu iemeslu dēļ. Svarīga ir pati cikla ideja!

Galvenais ir apjēgt, ka programmas sastāv no cikliem. Uzdevumos tie jāmeklē un jāatrod. Un programmās tiem ir jābūt skaidri redzamiem. Programmistam ir jādomā ciklos, kā saka Algoritms. Tas jāsaprot tā, ka cikliem jābūt algoritmu un tātad arī programmu pamatā. Nu — un ekonomija tomēr ir. Īstās programmas ir ļoti garas, un, ja kaut ko var uzrakstīt īsāk, tad arī jāraksta īsāk, bet tikai ne uz programmas skaidrības rēķina.

Programma skaitļu summēšanai

Bet tagad, izmantojot cikla operatoru, sastādi tādu programmu, kura summētu visus skaitļus no viena līdz simtam.

Ilustrācija

— Hē! Tik viegli tu mani vis nepaķersi. Ir taču formula tādas summas aprēķināšanai. Summa būs 10100, dalīts ar divi. Tātad... 5050!

— Tik un tā sastādi tādu programmu, bet ņem nevis simtu, bet gan patvaļīgu skaitli N, kuru lietotājs ievadīs.

— Labi jau, labi, kaut arī šim gadījumam ir formula — summa būs N(N+1)2. Tā ka programmu es rakstīšu tikai aiz cieņas pret tevi.

90 — Netērē laiku. Pacenties sastādīt, pirms mēs tiekam pie mašīnas. Un ņem vērā, ka aritmētiskajās izteiksmēs cikla mainīgo var izmantot gluži tāpat kā parastu skaitli.

Maija tā arī izdarīja. Viņas darba rezultāts bija šāds:

10 PRINT «PROGRAMMA SUMME' VISUS SKAITLJUS NO 1 LIHDZ N»
20 PRINT «IEVADIET SKAITLI N»
30 INPUT N
40 S=0
50 FOR I=1 TO N
60 S=S+I
70 NEXT I
80 PRINT «SUMMA IR »; S
90 STOP

— Uh, nomocījos gan, kamēr izdomāju, ka summas mainīgajam S sākumā vajag piešķirt vērtību nulle, bet pēc tam pieskaitīt skaitļus pa vienam. Nu, kā ir?

— Tā nekas, programma strādās.

Vēl kādu laiciņu pagaidījuši, skolēni tika pie ESM.

— Nu, Maija, izsauc interpretatoru!

>BAS

READY

Vispirms topošo programmu vajag kaut kā nosaukt, izmantojot pavēli NEW. Ievadi pavēli NEW un jaunās programmas nosaukumu.

NEW SUMMA

— Vai esi apmierināts?

Ātri un slikti! Tas nav programmistu stils!

— Jā, pilnīgi. Sāc ievadīt programmu un pie tam ātri. Mums šodien maz mašīnlaika.

Maija ķērās pie darba. Drīz viņa pavēstīja:

91 — Gatavs. Var laist.

— Vispirms paskatīsimies.

— Nav ko skatīties. Kādas gan var būt kļūdas, tik īsu programmu ievadot!

RUNNH

PROGRAMMA SUMME' SKAITLJUS NO 1 LIHDZ N
IEVADIET SKAITLI N

?SYNTAX ERROR AT LINE 30

Kas tie par jokiem?!

— Nu protams! Rindā 30 ir sintaktiska kļūda. Tas nozīmē, ka šī rinda beisikā nav iespējama. Visdrīzāk kāds burts nav pareizs. Paskaties šo rindiņu.

— Ar pavēli LIST?

— Jā, LIST un pēc tam rindas numuru.

LISTNH 30
30 INPT N

— Jā, tiešām, nezin kāpēc tur sēž INPT, kur vajadzēja INPUT.

— Sēž, sēž... Un nezin kāpēc.

— Nav liela nelaime. Ievadīšu no jauna.

30 INPUT N
RUNNH

PROGRAMMA SUMME' VISUS SKAITLJUS NO 1 LIHDZ N
IEVADIET SKAITLI N
? 100

?FOR WITHOUT NEXT AT LINE 60

— Atkal kaut kādas muļķības!

— Kļūda, bērniņ, kļūda. Kļūda cikla veidošanā.

92 Kurā rindā tev bija jābūt NEXT?

— Rindā ar numuru 90.

— Paskatīsimies to.

LISTNH 90

90 NXT I

Nu re! Kļūdains ievads!

— Tā, izlaboju.

— Nu, ja izlaboji, vari laist.

RUNNH

PROGRAMMA SUMME' SKAITLJUS NO 1 LIHDZ N
IEVADIET SKAITLI N
? 100
SUMMA IR 5050

STOP AT LINE 110

READY

— Fū-ū-ū... Beidzot viss ir kārtībā.

— Tagad ātri noglabā savu programmu uz diska.

— Viss kārtībā. Varam drāzt uz mājām.