Paskalis dokumentas
5 (100%) 1 vote

Paskalis dokumentas

1121314151

1. TRUMPAI APIE PASKALĮ IR JO PROGRAMAS

Gera pradžia – pusė darbo, – sako liaudies išmintis. Tik kur rasti tą gerą pradžią?

Pažintį su programavimu pradėsime nuo nedidelių, bet veikiančių programų pavyzdžių. Tuos pavyzdžius dėliosime šen ir ten, bandysime suprasti, ką su jais kompiuteris veikia, t.y., kaip kompiuteris atlieka Paskalio programą. Naujų programų dar nerašysime, bet bandysime šiek tiek modifikuoti parašytas programas – programuosime pagal pavyzdžius.

1.1. Paskalis, programuotojas ir kompiuteris

Paskalio kalbą sukūrė žymus informatikas ir pedagogas Virtas (Niklaus Wirth) apie 1970 metus. Paskalis, o taip pat ir kitos N. Virto sukurtos programavimo kalbos (Modula-2, Modula-3, Oberonas-2) pasižymi tuo, kad jos yra universalios, t. y. gerai tinka dažniausiai praktikoje pasitaikančių uždavinių programoms užrašyti. Jos paprastos, logiškos, turi nedaug konstrukcijų, o pačios konstrukcijos yra paprastos ir lengvai įsimenamos. Be to turi gerą apsaugą nuo klaidų. Tai savybės naudingos ir besimokančiajam, ir profesionaliam programuotojui. Na, o iš N. Virto sukurtų kalbų pasirinkome Paskalį todėl, kad jis daugiausiai naudojamas ir Lietuvoje, ir užsienyje. Dauguma (virš 70 procentų) pasaulinių informatikos olimpiadų dalyvių programoms rašyti renkasi Paskalio kalbą.

Paskalio žymenys vartojami algoritmams užrašyti. Algoritmus skaito ir nagrinėja žmogus. Taigi Paskalio kalba skiriama ne tik žmogaus bendravimui su kompiuteriu, bet ir žmogaus (programuotojo) bendravimui su kitu žmogumi (programuotoju). Paskalis yra patogi priemonė algoritmavimo idėjoms ir metodams išreikšti, kad su jais galėtų supažinti kiti bendraminčiai – programuotojai. Todėl į Paskalį reikia žiūrėti visų pirma kaip į algoritminių žymenų sistemą, skirtą žmogui. Informatikoje (konkrečiau algoritmavime ir programavime) jis atlieka analogišką vaidmenį kaip matematiniai žymenys matematikoje, chemijos formulių kalba chemijoje, natų žymenys muzikoje ir pan.

Pateiksime labai paprastą programos, užrašytos Paskaliu, pavyzdį.

program vidurkis;

var a, b, vid: real;

begin

read(a);

read(b);

vid := (a+b)/2;

writeln(vid: 8: 2)

end.

Net ir menkai išmanančiam programavimą nesunku suvokti, kad ši programa skirta dviejų skaičių aritmetiniam vidurkiui skaičiuoti.

Dabar į programą pažvelkime iš kompiuterio pozicijų. Ar kompiuteris ją supras, ar galės įvykdyti, t.y., suskaičiuoti dviejų skaičių vidurkį?

Kompiuteris gali atlikti tiktai tokias programas, kurios sudarytas iš jam suprantamų komandų, kurios žmogui atrodo kaip beprasmis dvejetainių (arba šešioliktainių) skaičių rinkinys.

Kaip įveikti barjerą tarp žmogaus ir kompiuterio, t.y., kaip padaryti, kad kompiuteris suprastų ir galėtų įvykdyti Paskalio kalba parašytą programą?

Reikia programą iš Paskalio kalbos išversti į kompiuterio kalbą. Šį darbą atlieka programa, vadinama transliatoriumi (angl. translator – vertėjas) (1 pav.). Išverstą programą kompiuteris jau gali vykdyti (2 pav.). Kompiuteriui pateikę programą, o po to pradinius duomenis (du skaičius), iš kompiuterio gausime rezultatą (vieną skaičių – aritmetinį vidurkį).

Programa Paskalio kalba Programa kompiuterio kalba

(pradiniai duomenys) (rezultatas)



Programa Paskalio kalba Programa kompiuterio kalba

(pradiniai duomenys) (rezultatas)

1 pav. Transliatorius išverčia programą iš Paskalio kalbos į kompiuterio kalbą

Programos Programos

pradiniai duomenys rezultatai

2 pav. Kompiuteris atlieka į jo kalbą išverstą programą

Pastaruoju metu dažniau vartojami kompiliatoriai (angl. compiler – kompiliatorius). Kompiliatorius ne tik išverčia programos tekstą iš Paskalio kalbos į kompiuterio kalbą, bet ir į programą įjungia (įkompiliuoja) tam tikras iš anksto parengtas programas arba programų fragmentus.

Paskalio kalbos kompiliatorius yra didelė ir sudėtinga programa. Tačiau nesibaiminkime – jos veikimo nereikia žinoti. Mes būsime tik Paskalio kompiliatoriaus naudotojai. Na, o tiems, kas nori apie kompiliatorių sužinoti daugiau ir giliau – pamatyti jį iš vidaus, galima parekomenduoti Vaivos Grabauskienės knygelę „Susipažinkime – transliatorius“[2].

Dažnai sakome, kad duomenis paduodame ne kompiuteriui, bet programai ir rezultatus gauname iš programos. Taip kalbėti patogiau. Nors iš tikrųjų veiksmus atlieka kompiuteris, bet atlieka tik tuos, kurie užrašyti programoje. Taigi, visą kompiuterio darbą apsprendžia programa.

1 ir 2 paveiksluose programos vaizduojamos stačiakampiais, o duomenys – rodyklėmis, jungiančiomis programas (į stačiakampį ateinančios rodyklės vaizduoja pradinius duomenis,
o išeinančios – rezultatus). Tie patys duomenys vienai programai gali būti pradiniai duomenys (ateinanti rodyklė), kitai – rezultatas (išeinanti rodyklė). Tai, kad sąveikaujant programoms keičiasi duomenų rolė (rezultatai virsta pradiniais duomenimis) savaime suprantama. Tačiau atidžiau panagrinėję minėtus paveikslus galime pastebėti įdomesnį dalyką: duomenys gali būti laikomi programomis ir atvirkščiai – rezultatai programomis. Žmogaus parašytą Paskalio kalba programą transliatorius laiko pradiniais duomenimis ir ją perdirba į kitus duomenis – rezultatą. Kai šis rezultatas pateikiamas kompiuteriui, kompiuteris ją laiko programa ir ima ją vykdyti. Dabar kompiuteriui reikės pradinių duomenų, kurie nurodyti toje programoje (nagrinėtu atveju – dviejų skaičių) ir atiduos programoje numatytus rezultatus. Tai pavaizduota 3 paveiksle.

Pradiniai duomenys

Programa

Paskalio kalba

Rezultatai

3 pav. Programos transliavimas ir vykdymas. Transliavimo rezultatas virsta programa

Programavimo terpė. Darbo su programomis ir duomenimis schema pateikta 3 paveiksle, yra paprasta ir akivaizdi. Tačiau dirbti pagal šią schemą būtų nelabai patogu: reikia operuoti daugeliu duomenų ir programų bylų. Programos tekstą Paskalio kalba bei jos pradinius duomenis reikia parašyti su kokiu nors tekstų dorokliu. Po to programos tekstą reikia pateikti transliatoriui, iš jo gautą rezultatą (sutransliuotą programą) pateikti kompiuteriui, o kad jis galėtų ją vykdytų – pateikti programos pradinius duomenis, o iš jos gautą rezultatų bylą skaityti vėl su kokiu nors dorokliu. Taigi, reikia atlikti daug veiksmų su bylomis. Šie veiksmai ypač juntami, kai programa yra dar tik rašoma, nes tada ją dažnai tenka taisyti, o pataisius visus tuos veiksmus vėl reikia kartoti.

Tam, kad mažiau rūpesčių keltų darbas su bylomis, programuotojui pateikiamas ne vien transliatorius (kompiliatorius), bet visa programuotojui reikalinga terpė – programavimo sistema. Transliatorius (kompiliatorius) yra svarbiausias sistemos komponentas. Todėl kartais visa programavimo sistema sutapatinama su transliatoriumi (kompiliatoriumi).

Kitas svarbus programavimo sistemos komponentas yra programos tekstų doroklis. (redaktorius). Tada programos tekstui rinkti bei taisyti nereikia atskiro kokio nors kito doroklio. Pradėjus darbą su sistema, iškart įsijungia doroklis ir kompiuterio ekrane galima rinkti programos tekstą. Programavimo kalbos dorokliu su tekstu galima atlikti tokias pat operacijas, kaip ir kitais dorokliais: jį rinkti, taisyti, išbraukti, kopijuoti, įterpti į kitą tekstą, įkelti iš bylos, užrašyti į bylą ir pan.

Programavimo terpė paslepia ir patį transliavimo procesą. Ja naudojantis susidaro įspūdis, kad kompiuteris supranta Paskalio kalba parašytą programą ir čia pat ją atlieka.

Uždaviniai

1.1.1. Programą vidurkis pakeiskite taip, kad ji apskaičiuotų trijų skaičių aritmetinį vidurkį. Jis skaičiuojamas pagal formulę

(a + b + c) / 3.

1.1.2. Vietoj daugtaškių įterpkite tinkamus žodžius:

Paskalio kalbos sistemos terpėje esančiu … renkami ir taisomi programų tekstai. Paskalio kalbos … arba … išverčia programos tekstą iš … kalbos į … kalbą.

1.2. Paskalio kalbos dialektai

Kompiliatorių autoriai stengiasi programavimo kalbą kiek galima geriau pritaikyti programuotojų poreikiams, t.y., patobulinti. Šitaip atsiranda kalbos variantai arba dialektai. Tai gerai, nes kalba vystosi, tobulėja. Tačiau pasidaro sunkiau susikalbėti skirtingų dialektų naudotojams. Dėl to programavimo kalbos norminamos, apibrėžiami jų standartai. Paskalio kalbos standartas yra kalbos branduolys, į kurį surinktos pačios svarbiausios jos konstrukcijos. Jis yra tarsi orientyras, vienijantis programuojančius įvairiais Paskalio dialektais.

Standartinis Paskalis turi universalų, bet nedidelį konstrukcijų rinkinį, kuriuo patogu programuoti įvairių žmogaus veiklos sričių (matematikos, fizikos, chemijos, ekonomikos ir kt.) uždavinius. Tokie uždaviniai egzistavo visą laiką ir buvo sprendžiami įvairiais tuo metu naudotais kompiuteriais: didelėmis skaičiavimo mašinomis, stovėjusiomis skaičiavimo centruose, pirmaisiais kuklių galimybių mikrokompiuteriais ir šiuolaikiniais IBM PC genties kompiuteriais. Jų algoritmus galima pavadinti klasikiniais. Jų mokomasi mokyklose, jie rašomi informatikos olimpiadose, jais užrašomi įvairių žmogaus veiklos sričių uždavinių matematiniai sprendimai.

Paskalis ir buvo suprojektuotas taip, kad jis kuo geriau tiktų minėtų bendros paskirties uždavinių algoritmams užrašyti ir kuo mažiau priklausytų nuo kompiuterio.

Daugiausiai vartojamas Paskalio kalbos dialektas yra Turbo Paskalis. Jis paplito po visą pasaulį ir tapo netgi daugiau žinomas, negu standartinis Paskalis.

Turbo Paskalis turi beveik visas standartinio Paskalio konstrukcijas, o taip pat daugybę naujų konstrukcijų (papildymų). Dalis papildymų suteikia naujų, dažniausiai alternatyvių galimybių
algoritmams užrašyti, tačiau daugiausia papildymų skirti kompiuterio įrenginiams valdyti. Jie įgalina programuoti grafinį žmogaus ir kompiuterio dialogą, tiesiogiai prieiti prie duomenų, saugomų kompiuterio atmintinėje ir jais operuoti. Dėl to Turbo Paskalis tinka taip vadinamoms sisteminėms programoms – įvairioms kompiuterio įrenginių tvarkyklėms, įvairiems operacinių sistemų komponentams rašyti.

Operacinėje sistemoje OS/2 vartojamas Virtualusis Paskalis. Šis dialektas mažai skiriasi nuo Turbo Paskalio. Tačiau jo kompiliatorius gamina ekonomiškesnes programas. Todėl jis geriau tinka profesiniam darbui.

Paskalis-E – tai standartinis Paskalis, papildytas Europos valstybių abėcėlių raidėmis bei kitais simboliais, o taip pat kai kuriomis Turbo Paskalio konstrukcijomis, reikalingoms algoritmavimo uždaviniams bei programos sąsajai su kompiuteriu.

1.3. Kaip kompiuteris atlieka programą

Kompiuteris iš tikrųjų atlieka į jo kalbą išverstą programą. Tačiau mums patogiau kompiuterio darbą sieti su Paskalio programa. Iš tikrųjų, ir Paskalio programa, ir išversta programa atlieka tuos pačius veiksmus. Todėl nagrinėjant veiksmus nesvarbu, kokia kalba tie veiksmai užrašyti. Todėl pasirenkame mums suprantamesnį variantą – programą, užrašytą Paskalio kalba.

Kompiuteris atlieka programoje užrašytas operacijas su duomenimis, saugomais jo atmintinėje (tiksliau atmintinėje, skirtoje programai). Kaip tie duomenys atsiranda atmintinėje ir kaip kompiuteris atskiria vienus duomenis nuo kitų?

Kompiuterio atmintinę galima įsivaizduoti kaip popieriaus lapą, arba dar geriau – klasės lentą, nes joje galima ištrinti nebereikalingus nebereikalingus duomenis ir į jų vietą rašyti naujus. Atmintinė suskirstyta į daugybę langelių duomenims rašyti. Tam tikra jos dalis skiriama programos duomenims saugoti. Kai programa pradedama vykdyti, joje duomenų dar nėra.

Pasekime, kaip kompiuteris atlieka programą.

Jis skaito programą ir atlieka joje užrašytus veiksmus. Panagrinėkime jau pažįstamą aritmetinio vidurkio skaičiavimo programą: ką reiškia užrašai (t.y., kaip ją supranta žmogus) ir kaip ją atlieka (t.y., supranta) kompiuteris (4 pav.).

Pradiniai duomenys Programa Rezultatai

Programos atmintinė

4 pav. Kompiuteris pasiruošęs atlikti programą

Pirmoji programos eilutė

program vidurkis;

yra jos antraštė. Ji prasideda žodžiu program. Tai bazinis Paskalio kalbos žodis. Baziniai žodžiai Paskalio programose turi griežtai nustatytą prasmę (apie juos kalbėsime 1.5 skyr.).

Toliau einantis žodis vidurkis yra programos vardas. Kaip vadinti programą, sugalvoja programuotojas. Jis gali programą pavadinti bet kokiu vardu. Kompiuteriui programos vardas nerūpi. Svarbu tik, kad jis būtų sudarytas taisyklingai. Apie vardų sudarymo taisykles kalbėsime 1.5 skyrelyje.

Antraštė yra svarbi žmogui, kad jis vieną programą atskirtų nuo kitos. Tuo tarpu kompiuteriui ji nenurodo jokių veiksmų.

Antroji eilutė:

var a, b, vid: real;

yra
kintamųjų aprašas. Apie tai pasako bazinis žodis var, kuris yra angliško žodžio variable (kintamasis) santrumpa.

Po žodžio var išvardijami kintamųjų, kurie bus naudojami programoje, vardai. Vardus parenka programuotojas. Kintamieji žymi duomenis. Programoje duomenys nurodomi vardais, o kompiuterio atmintyje saugomos tų duomenų reikšmės. Duomenys gali būti įvairūs: sveikieji skaičiai, realieji skaičiai, tekstai ir t.t. Su skirtingo tipo duomenimis atliekamos skirtingos operacijos, skirtingo tipo duomenims reikia skirtingo vietos kiekio kompiuterio atmintinėje. Todėl reikia žinoti, kokio tipo reikšmes galės įgyti kintamasis ir yra nurodomas kintamųjų tipas. Žodis real pasako, kad prieš jį išvardyti kintamieji žymi realiuosius skaičius. Vadinasi, kintamieji a, b, ir vid galės įgyti tik realiųjų skaičių reikšmes, o kiekviena jų skiriama vietos atmintinėje tiek, kiek reikia vienam realiajam skaičiui įrašyti.

Su aprašais turi darbo ir kompiuteris: jis paskiria vietą atmintinėje kintamųjų reikšmėms saugoti. 5 paveiksle pavaizduota situacija, kad kai kompiuteris perskaitė dvi pirmąsias programos eilutes (perskaitytos ir apdorotos programos eilutės paveiksle patamsintos). Atmintinės vietos, paskirtos kintamiesiems, sužymėtos kintamųjų vardais. Į langelis rašysime kintamųjų reikšmes. Tik ką aprašytų kintamųjų reikšmės pažymėtos klaustukais. Tai reiškia, kad ten gali būti užsilikę nežinomi duomenys iš prieš tai veikusių programų. Šie nežinomi duomenys bus ištrinti, kai kintamiesiems bus priskiriamos reikšmės.

Pradiniai duomenys Programa Rezultatai

Programos atmintinė

5 pav. Kompiuteris paskyrė vietas atmintinėje kintamųjų reikšmėms saugoti

Vietos atmintinėje skyrimas yra pagalbinis veiksmas. Tikrųjų veiksmų pradžią rodo žodis begin. Toliau aprašomi veiksmai. Veiksmų užrašai vadinami sakiniais.

Operacijas kompiuteris atlieka su duomenimis, esančiais jo atmintinėje. Pradžioje programai skirta atmintinė tuščia. Todėl pirmiausia reikia įvesti (skaityti) pradinius duomenis, arba bent dalį jų – kad būtų ką veikti.

Pirmasis sakinys

read(a)

rodo, kad reikia skaityti pradinį duomenį iš klaviatūros ir jį priskirti kintamajam a. Kompiuteris, perskaitęs šį sakinį, programos vykdymą pristabdo ir laukia, kol klaviatūra surinksime skaičių. Tarkime, kad surinkome skaičių 22,6 (6 pav.).

Renkamo skaičiaus trupmeninę dalį nuo sveikosios reikia skirti tašku, o ne kableliu, kaip priimta matematikoje. Toks nukrypimas atsirado dėl to, kad pirmosios programavimo kalbos buvo projektuojamos JAV, o amerikiečiai vietoj kablelio rašo tašką.

Pradiniai duomenys Programa Rezultatai

Programos atmintinė

6 pav. Surinktas, bet dar neperskaitytas pirmasis pradinis duomuo

Kaip pasakyti kompiuteriui, kad skaičius jau surinktas ir jį jau galima skaityti?

Reikia paspausti įvesties klavišą. Tada kompiuteris perskaito skaičių, esantį pagalbinėje klaviatūros atmintinėje ir jį įrašo į kintamojo a reikšmei saugoti skirtą tikrosios atmintinės vietą (7 pav.).

Analogiškai atliekamas sakinys

read(b)

Antrasis pradinis duomuo priskiriamas kintamajam b (8 ir 9 pav.). Tarkime, kad tai buvo skaičius 12,2.

Toliau eina prieskyros sakinys

vid := (a+b)/2

Jis sako, kad reikia apskaičiuoti dešinėje prieskyros ženklo := pusėje esančio reiškinio reikšmę (sudėti du skaičius ir gautą sumą padalyti iš dviejų) ir gautą reikšmę priskirti kintamajam vid, t.y. įrašyti į kintamajam vid skirtą vietą atmintinėje.

Situacija, gauta atlikus šį sakinį, pavaizduota 10 paveiksle.

Liko dar vienas sakinys (veiksmas)

writeln(vid: 8: 2)

Pradiniai duomenys Programa Rezultatai

Programos atmintinė

7 pav. Perskaitytas pirmasis duomuo – skaičius 22,6 ir įrašytas į programai skirtą atmintinę (kintamojo a vietą)

Pradiniai duomenys Programa Rezultatai

Programos atmintinė

8 pav. Surinktas antrasis duomuo – skaičius 12,2, bet dar neperskaitytas ir neįrašytas į atmintinę

Pradiniai duomenys Programa Rezultatai

Programos atmintinė

9 pav. Perskaitytas antrasis duomuo – skaičius 12,2 ir įrašytas į atmintinę (kintamajam b skirtą vietą)

Pradiniai duomenys Programa Rezultatai

Programos atmintinė

10 pav. Apskaičiuota reiškinio a+b)/2 reikšmė ir priskirta kintamajam vid

Juo kompiuteriui sakoma, kad reikia į vaizduoklio ekrano rezultatų langą įrašyti kintamojo vid reikšmę.

Situacija, gauta atlikus šį sakinį, pavaizduota 11 paveiksle.

Skaičiai 8 ir 2 rašymo sakinyje vadinami rašymo formatais. Pirmasis skaičius parodo, kiek vietos (kiek pozicijų) reikia skirti skaičiui, o antrasis – kiek skilčių po kablelio reikia parašyti. Dėl to rezultatas (11 pav. dešinėje viršuje) pavaizduotas su dviem ženklais po kablelio, nors šiuo atveju pakaktų ir vieno.

Sakiniai skiriami kabliataškiais. Todėl reikia dėti kabliataškius tarp greta einančių sakinių, bet nebereikia kabliataškio po paskutinio sakinio (prieš end) – nebėra ką nuo jo atskirti. Nebus klaidos, jeigu ten ir padėsime kabliataškį: tada bus laikoma, kad po kabliataškio eina dar vienas – tuščias sakinys, neatliekąs jokio veiksmo.

Paskutinė programos eilutė

end.

pasako kompiuteriui, kad reikia baigti programą.

Kai programa baigiama, nutrūksta kintamųjų sąsajos su jų reikšmėmis, kurios saugomos atmintinėje (12 pav.). Viskas, kas buvo surašyta programai skirtoje atmintinėje, tampa pamestais ir nebepasiekiamais duomenimis. Jeigu programą paleistume iš naujo, tiems patiems kintamiesiems galėtų būti paskirtos kitos vietos atmintinėje. Taigi, programai baigus darbą, jos kintamųjų reikšmės iš tikrųjų dingsta. Išlieka tik tie rezultatai, kurie buvo įrašyti į vaizduoklio ekraną arba į bylas (apie tai kalbėsime 2.5–2.7 skyr.). Štai todėl reikia nepamiršti veiksmų, kur nors įrašančių gautus rezultatus.

Pradiniai duomenys Programa Rezultatai

Programos atmintinė

11 pav. Kintamojo vid reikšmė (skaičius 17,4) įrašyta į rezultatų langą vaizduolio ekrane

Štai šitaip devyniais paveikslėliais, primenančiais devynis filmo kadrus, parodėme, kokius veiksmus atlieka kompiuteris vykdydamas labai paprastą programą.

Jeigu programai vidurkis pateiktume kitus pradinius duomenis, gautume kitą rezultatą. Tačiau bet kuriuo atveju tai būtų dviejų pateiktų skaičių aritmetinis vidurkis.

Pradiniai duomenys Programa Rezultatai

Programos atmintinė

12 pav. Kai programa baigia darbą, jos duomenų atmintinė lieka tuščia

Visur kalbėjome tik apie duomenų rašymą į atmintinę. Niekur neužsiminėme apie duomenų ištrynimą. Ta atmintinės vieta, vieta, į kurią rašomi nauji duomenys, visada automatiškai ištrinami seni duomenys. Taigi nebereikalingi duomenys išlieka atmintinėje iki tol, kol į jų vietą neužrašomi nauji. Iš tikrųjų kompiuterio atmintinėje išliko ir vidurkio skaičiavimo pradiniai duomenys ir rezultatai programai baigus darbą. Tačiau nebeišliko sąsajos su kintamaisiais. Todėl tų duomenų nebegalima rasti.

Uždaviniai

Šiuo metu Jūs matote 31% šio straipsnio.
Matomi 2764 žodžiai iš 8944 žodžių.
Peržiūrėkite iki 100 straipsnių per 24 val. Pasirinkite apmokėjimo būdą:
El. bankininkyste - 1,45 Eur.
Įveskite savo el. paštą (juo išsiųsime atrakinimo kodą) ir spauskite Tęsti.
SMS žinute - 2,90 Eur.
Siųskite sms numeriu 1337 su tekstu INFO MEDIA ir įveskite gautą atrakinimo kodą.
Turite atrakinimo kodą?
Po mokėjimo iškart gausite atrakinimo kodą, kurį įveskite į laukelį žemiau:
Kodas suteikia galimybę atrakinti iki 100 straispnių svetainėje ir galioja 24 val.