15.

Skaitļotājs — ne tikai skaitļošanai

Nākamo reizi Pēcis bija parūpējies, lai mašīnlaika būtu tik daudz, cik nepieciešams jauno jēdzienu pamatīgai aplūkošanai. Kā vienmēr, viņš sāka ar vispārīgiem pārspriedumiem.

— Daudzi uzskata, ka ESM ir tikai skaitļotājs — mašīna, kas veic skaitliskus aprēķinus, kuri galu galā nav nekas cits kā noteiktā secībā izdarāmas aritmētiskās darbības: saskaitīšana, atņemšana un reizēm reizināšana vai dalīšana. Labums ir tāds, ka ESM šīs darbības veic milzu ātrumā un kļūdās reti. Dažreiz gadās izlasīt, ka kaut kur skaitļotājus izmantojot slimību diagnoscēšanai vai šaha spēlei, un tas izraisa briesmīgu izbrīnu. Programmēt šaha spēli mēs ar tevi, šķiet, varēsim vēl ne tik drīz, bet to, ka ESM nav nekāds milzātrs mikrokalkulators, mēģini aptvert jau tagad.

— Negribu no jums, cienītais, slēpt, ka mana pazīšanās ar šo cilvēces prāta sasniegumu neļauj fiksēt tādas būtiskas atšķirības, par kurām jūs nule atļāvāties izteikties.

— Iespējams, ka tas tev kļūs skaidrāks šodien, kad mēs aplūkosim simboliskos mainīgos.

Simboliskie mainīgie

— Nu, vai zini! Un tu teici, ka nekā jauna vairāk nebūs!

SIMBOLISKIE MAINĪGIE— Protams. Būs tikai vecais. Mainīgie jau bija, simboli bija, tagad būs simboliskie mainīgie, bet vecie mainīgie turpmāk sauksies «skaitliskie mainīgie». Tāda mazītiņa atšķirība. Bet, ja runājam nopietni, tad atšķirība ir; liela vai maza — to pati redzēsi.

— Nu tad sāc.

SIMBOLU VIRKNE— Varbūt sākšu ar to, ka simbolisko mainīgo apzīmē ar burtu un «saulīti», bet vidū vēl var būt arī cipars. Piemēram, A¤, B¤, C1¤ ir pareizie simbolisko mainīgo apzīmējumi, bet nepareizie...

— Nepareizos nevajag. Turpini.

— Simboliskajam mainīgajam vēl ir arī vērtība — viens vai vairāki simboli. Tā sakot, simbolu virkne. Vai šiem simboliem ir kāda jēga vai nav — tas ir tikai programmista ziņā. Mazliet pacieties, tūlīt viss kļūs skaidrāks, kad pateikšu, kāds simbolisko mainīgo gadījumā izskatās piešķires operators. Tas var būt, piemēram, šāds: A¤=«A». Šī rinda nozīmē: simboliskajam mainīgajam ar apzīmējumu A¤ tiek piešķirta vērtība — simbolu virkne, kura sastāv no viena simbola — no burta A. Un iegaumē: simbolisko mainīgo vērtības piešķires operatorā tiek liktas pēdiņās.

Ilustrācija

— Līdzīgs gadījums jau bija operatorā PRINT.

Simbolu izvade

— Pilnīgi pareizi! Par šo operatoru tu ieminējies īstajā brīdī. Simbolisko mainīgo vērtības var izvadīt. Ja tagad ievadītu operatorus... Bet, starp citu, kāpēc gan mēs nevarētu ievadīt!

A¤="A"
PRINT A¤
A

126Redzi nu, ar simboliskajiem mainīgajiem var strādāt tiešajā režīmā, tas ir pirmkārt. Un, otrkārt, viss iznāca, kā vajadzēja: tika izvadīts burts A, kurš ir mainīgā A¤ vērtība, protams, bez pēdiņām. Pamēģināsim vēl!

A¤="MAIJA"
PRINT A¤
MAIJA

Tātad simboliskā mainīgā vērtība tiešām var būt simbolu virkne, ne tikai viens simbols. Izvades operatorā vienlaicīgi var atrasties gan simboliskie, gan skaitliskie mainīgie.

Simbolu virknē var būt tikai 255 simboli!
Simbolu virknē var būt tikai 255 simboli!
A=5
PRINT A¤,A
MAIJA           5

Ceru, ka tagad saproti: ja burtu A mēs izmantojām apzīmējumā A¤, tad tas nenozīmē, ka tajā pašā programmā to nevarētu lietot arī mainīgā A apzīmējumā. Tie ir dažādi mainīgie. Pavisam dažādi.

Bet saki — kāpēc starp vārdu MAIJA un ciparu 5 ir tik liela atstarpe?

— Tu kaut ko stāstīji par zonām.

— Tieši tā. Mainīgo A¤ un A vērtības tika izvadītas 127dažādās zonās, jo operatorā PRINT starp to apzīmējumiem bija komats.

Vienīgā darbība ar simboliem

KONKATENĒŠANAAtšķirībā no skaitliskajiem mainīgajiem, ar kuriem iespējamas veselas četras darbības, ar simboliskajiem mainīgajiem var veikt tikai vienu darbību. Šo vienīgo darbību sauc par konkatenēšanu. Ja vārds tev liekas par grūtu, šo operāciju vari saukt par apvienošanu jeb saķēdēšanu, jeb saplūdināšanu. Bet pati operācija ir pavisam vienkārša: viena pēc otras tiek uzrakstītas simbolisko mainīgo vērtības. Šo darbību apzīmē ar plusu «+». Lūdzu, piemērs.

Pamazām, palēnām — un tā saķēdēsim veselu grāmatu
Pamazām, palēnām — un tā saķēdēsim veselu grāmatu
B¤="SAPRAHTINJA"
PRINT A¤+B¤
MAIJASAPRAHTINJA

— Ha-ha! Triks neizdevās.

— Tūlīt izdosies.

PRINT B¤+C¤+A¤
SAPRAHTINJA MAIJA

READY

128Mainīgā C¤ vērtība ir īpašs simbols — atstarpe jeb tukša vieta. Algoritms to vienreiz nosauca par tuksni un, kad mēs bijām beiguši smieties, paskaidroja, ka tā saukt šo simbolu pilnīgi nopietni iesakot daži valodnieki. Vispār šajā piemērā konkatenēšana diez ko vajadzīga nebija — to pašu var izdarīt arī citādi.

PRINT A¤;C¤;B¤
MAIJA SAPRAHTINJA

Kā salīdzina simbolu virknes

Vēl atliek pastāstīt, kā simboliskos mainīgos var izmantot nosacītās pārejas operatorā. Atšķirīga ir tikai loģiskā nosacījuma rakstība. Pat ne pati rakstība, bet gan apzīmējumu izpratne. Nosacītā pāreja var būt, piemēram, šāda:

40 IF A¤=«BOM» THEN 500.

Šajā piemērā mainīgā A¤ vērtība tiek salīdzināta ar simbolu virkni, kas sastāv no trim burtiem, — BOM. Ja visi simboli sakrīt, tiek secināts, ka nosacījums ir izpildīts un nākamā tiek izpildīta rinda ar numuru 500.

— Skaitliskos mainīgos varēja salīdzināt arī savā starpā un noteikt, kuram vērtība ir lielāka vai mazāka, bet to pašu darīt ar simbolisko mainīgo vērtībām nav jēgas, vai ne?

— Jā. Simboliem nav tādas salīdzināšanas kā lielāks vai mazāks. Taču tos ir iespējams salīdzināt, izmantojot tās pašas zīmes «<», «>», «=<» un «=>», salīdzināt pēc alfabēta.

— Un ko tas nozīmē?

— Tiek noteikts, kura no simbolu virknēm pēc alfabēta ir pirmā un kura otrā. Pieņemsim, ka mēs esam piešķīruši šādas vērtības ar operatoriem: A¤=«ANNA» un B¤=«ZUZANNA». Tad nosacījums A¤<B¤ būs pareizs jeb, runājot precīzāk, patiess. Bet patiess šis nosacījums būs tāpēc, ka vārds ANNA pēc alfabēta ir pirms vārda ZUZANNA.

129Nosacījums A¤>B¤ šajā gadījumā, protams, nebūs patiess, bet B¤>A¤ būs.

Simbolisko mainīgo gadījumā var izdomāt vārdnīcu, kas ir līdzīga tai, kādu mēs uzrakstījām skaitliskajiem mainīgajiem.

BeisikāLatviski
=sakrīt
<>nesakrīt
<alfabētiskajā kārtībā ir pirms
<=alfabētiskajā kārtībā ir pirms vai sakrīt
>alfabētiskajā kārtībā ir pēc
>=alfabētiskajā kārtībā ir pēc vai sakrīt
Ilustrācija

— Tātad šie «pirms» un «pēc» noderēs, kad kaut kādus vārdus vajadzēs sakārtot pēc alfabēta. Bet kad vēl?

Programma divu vārdu sakārtošanai

— Liekas, vairāk nekad. Tagad pamēģini sastādīt šādu programmu. Vārdi tiek ievadīti patvaļīgā kārtībā, bet izvadīti — alfabētiskā. Ņem divus vārdus!

— Labi, pamēģināšu... Bet kā ievada simboliskos mainīgos?

— Ar to pašu operatoru INPUT. Uzraksti tajā to, kas tev jāievada, un — uz priekšu. Mums gan līdz šim bija tikai tādi operatori INPUT, kuri ievadīja pa vienai mainīgā vērtībai. Taču iespējams ievadīt arī vairākas, vienīgi visu ievadāmo mainīgo apzīmējumus vajag uzrakstīt pēc kārtas, tos atdalot ar komatu. Tātad tos divus vārdus vari ievadīt ar operatoru INPUT V1¤, V2¤, kur V1¤ ir mainīgā apzīmējums pirmajam vārdam, bet V2¤ — mainīgā apzīmējums otrajam vārdam.

— Uzreiz es to neizdarīšu. Man vajag pasēdēt pie papīra lapas.

Maija apsēdās pie galda un sāka domāt. Bet viņa domāja pavisam neilgi.

— Vai zini, es sapratu, kas šeit ir darāms! Lūk, mans priekšlikums.

10 PRINT «PROGRAMMA SAKAHRTO 2 VAHRDUS PEHC ALFABEHTA»
20 PRINT «IEVADIET DIVUS VAHRDUS»
30 INPUT S1¤, S2¤
40 IF S1¤>S2¤ THEN 60
50 PRINT S1¤, S2¤
60 PRINT S2¤, S1¤
70 STOP
80 END

— Pastāsti, ko tu te dari.

— Tātad vispirms paziņoju, ko programma dara. Pēc tam lūdzu ievadīt divus vārdus. Tad es šos vārdus ievadu. Rindā 40 tos salīdzinu un, ja pirmais alfabētiskajā secībā ir pēc otrā, tad eju uz rindu 60, kur abus vārdus izvadu, vispirms otro un tad pirmo. Bet, ja, tos salīdzinot, izrādās, ka pirmais ir pirms otrā, tad es vispirms izvadu pirmo un tad otro...

Es tikai savākšu — lai kārto citi
Es tikai savākšu — lai kārto citi

— Un pēc tam? Kas ir pēc tam?

— Jā, kas ir pēc tam... Pēc tam ir vēl kaut kāda rezultātu izvade.

— Jā, kaut kāda izvade.

— Hā! Es iespiedīšu vēl vienu rindiņu.

55 STOP

— Tagad viss ir kārtībā.

— Bet, paklau, kā lai programmas darba laikā tos vārdus ievadu un kā interpretators tos varēs atšķirt?

— Vari darīt divējādi. Pirmkārt, tiklīdz ir parādījusies jautājumzīme, ievadi pirmo vārdu, tūlīt parādīsies vēl viena jautājumzīme, un tad, protams, dod otro vārdu. Vairāk jautājumzīmju nebūs, protams, ja viss būs pareizi. Otrais variants — abus vārdus ievadi uzreiz, tos atdalīdama ar komatu.

131— Man viss ir skaidrs. Es gribu savu programmu sākt ievadīt.

— Labi. Tikai neaizmirsti ievadīt pavēli NEW — tā iztīrīs atmiņu.

Ilustrācija

Šoreiz Maija programmu centās ievadīt ļoti rūpīgi un pat izskatīja tekstu ar pavēles LIST palīdzību. Viss bija it kā pareizi.

— Nu ko, es laižu!

RUNNH

PROGRAMMA SAKAHRTO 2 VAHRDUS PEHC ALFABEHTA
IEVADIET DIVUS VAHRDUS
? ZUZANNA
? ANNA
ANNA          ZUZANNA

STOP AT LINE 70

Urrā, programma strādā!

— Kāpēc tu tā domā?

— Kas te ko šaubīties! Paskaties, tā taču visu izvadīja pareizi!

— Bet tu jau neaplūkoji variantu, kur abi vārdi ir ievadīti pareizā kārtībā.

— Kādēļ?! Kas tad ar tiem var notikt!

— Vienalga, vajag pārbaudīt. Katrs operators ir jāpārbauda, un ne tikai rūpīgi izskatot cauri. Laid vien vēlreiz.

— Ja jau tu vēlies...

RUNNH

PROGRAMMA SAKAHRTO 2 VAHRDUS PEHC ALFABEHTA
IEVADIET DIVUS VAHRDUS
? ANNA
? ZUZANNA
ANNA          ZUZANNA

STOP AT LINE 55

Nu, ko es teicu?! Viss ir pareizi.