You are on page 1of 273

Jonas Blonskis

Valentina Dagienė

PROGRAMAVIMO
PRADMENYS
Xl-Xll
klasėms

Jonas Blonskis
Valentina Dagienė

PROGRAMAVIMO
PRADMENYS
Xl-Xll k l a s ė m s

Scanned by
Cloud Dancing

VILNIUS 2 0 0 1

UDK 004.42(075.3)
Bl-89

Lietuvos Respublikos švietimo ir mokslo ministerijos leista naudoti 200102 06 Nr. 75
Darbas atliktas Matematikos ir informatikos institute ir Kauno technologijos universitete

Recenzentai: Albertas Dinda, Arvydas Verseckas

Darbo vadovas Elmundas Žalys
Redaktorė Rita Julija Klimkienė
Programinė įranga: Tadeuš Šeibak
Kompiuterinė grafika: Daiva Sniečkutė, Edita Tatarinavičiūtė
Tekstą kompiuteriu rinko ir maketavo Nijolė Pragarauskienė
Gamybos vadovas Algimantas Paškevičius
Kalbos konsultantė Diana Gustienė
Korektorė Birutė Laurinskienė

Leidyklos TEV interneto svetainė www.tev.lt

ISBN1 9 9 5 5 - 4 9 1 - 0 1 - 9

© Leidykla TEV, Vilnius, 2001
© Jonas Blonskis, 2001
© Valentina Dagienė, 2001

Turinys
Pratarmė

5

1. Programavimas Turbo Paskaliu
1.1. Paskalio programavimo kalba
1.2. Turbo Paskalio integruotoji terpė
1.3. Darbo su Turbo Paskalio terpe pradmenys
1.4. Programos sudarymas

9
9
10
11
12

2. Pagrindinės valdymo struktūros
2.1. Programos struktūra
2.2. Priskyrimo sakinys
2.3. Sąlyginis sakinys
2.4. Ciklas w h i l e
2.5. Ciklas f o r
2.6. Standartinės funkcijos ir procedūros
2.7. Kompiuterinis dialogas
2.8. Programavimo kultūra

14
14
16
17
21
24
26
21
28

3. Pagrindiniai duomenų tipai
3.1. Skaičiai
3.2. Simboliai
3.3. Loginės reikšmės
3.4. Duomenų grupavimas
3.5. Didžiausios (mažiausios) reikšmės paieška

37
37
37
41
44
47

4. Procedūros ir funkcijos
4.1. Procedūros ir parametrų sąvokos
4.2. Pradinių duomenų perdavimas
4.3. Rezultatų grąžinimas
4.4. Funkcijos sąvoka
4.5. Vardų galiojimo sritys

57
57
59
62
67
69

5. Masyvas ir simbolių eilutė
5.1. Masyvo sąvoka
5.2. Veiksmai su masyvo elementais
5.3. Simbolių masyvai
5.4. Simbolių eilutės
5.5. Duomenų struktūrų pasirinkimas

75
75
79
89
91
96

6. Tekstinės bylos
6.1. Bylų skaitymas ir rašymas
6.2. Duomenų skaitymas iš bylos į masyvą
6.3. Duomenų rašymas iš masyvo į bylą
6.4. Duomenų grupavimas skaitant iš bylos

103
103
109
112
113

7. Įrašas
7.1.
7.2.
7.3.
7.4.

118
Įrašo sąvoka
Įrašų masyvai
Veiksmai su įrašo tipo duomenimis
Duomenų

rikiavimas

118
121
125
133

8. Programavimotechnologijospradmenys
8.1. Programos sudarymo etapai
8.2. Duomenų analizė
8.3. Programos modulinė schema
8.4. Modulių dokumentavimas
8.5. Programos rašymas, derinimas
8.6. Programos testavimas
8.7. Programos išbandymas
8.8. Programos ir vartotojo ryšys
8.9. Programos pavyzdys

138
138
139
140
142
142
143
144
144
145

9. Programos sudarymo pavyzdys
9.1. Užduotis: Zoologijos sodai
9.2. Užduoties analizė
9.3. Duomenų analizė
9.4. Pradinių duomenų įvedimas
9.5. Dialogo priemonės
9.6. Užklausų apdorojimo procedūros
9.7. Galutinė programa
9.8. Programos modifikacija
9.9. Pirmoji programos meniu modifikacija
9.10. Antroji programos meniu modifikacija
9.11. Trečioji programos meniu modifikacija

157
157
158
159
160
161
166
173
180
189
193
195

10. Kompiuterinė grafika
10.1. Ekrano paruošimas darbui
10.2. Darbo su grafika pabaiga
10.3. Koordinačių sistema
10.4. Veiksmai su ekranu
10.5. Taškai ekrane
10.6. Linijų brėžimas
10.7. Geometrinės figūros. Figūrų spalvinimo raštai
10.8. Teksto spausdinimas
10.9. Judesių programavimas
Priedai

206
206
208
208
209
209
212
214
220
224
235

1 priedas. Turbo Paskalio 7.0 integruotoji terpė

235

2 priedas. Svarbiausių Turbo Paskalio procedūrų ir funkcijų sąrašas

247

3 priedas. Pagrindinės Crt bibliotekos priemonės

252

4 priedas. Pagrindinės Dos bibliotekos priemonės

255

5 priedas. Pagrindinės Graph bibliotekos priemonės

257

6 priedas. Turbo Paskalio 7.0 klaidų pranešimai

262

7 priedas. Simbolių lentelės

269

Galima ilgai ir kruopščiai mokytis svetimos kalbos dalių. tačiau nuolat bandykite kurti. kaip tėvų pareigą vaikams.besimokantiems gali būti sunku aprėpti visumą. .žmogui. Programavimas . tebūnie jos ilgesnės. Dažniausiai pateiksime visiškai paruoštas nedidelių uždavinių programas.. Siame vadovėlyje aiškinsimės. be užuolankų.itin kūrybiška ir intelekto pastangų reikalinga veikla. Iš pradžių tikriausiai nepavyks parašyti programos be klaidų. . Kalba turi būti aktyviai vartojama. jų poveikį žmogui. sudarinėti programas vien tik skaitant knygas .šitaip galima tik susipažinti su programavimo elementais ir juos perprasti. ne itin racionalios. taip ir programuotojui nepakanka žinoti vien tik programavimo kalbos konstrukcijas bei taisykles.. derinimo taisykles. Užtat aš ir sakau: pabandykime suprasti gyvenimą kaip pareigą. Kurti programas galima išmokti tik rašant jas patiems. mokėti tapybos techniką. kaip žmogaus pareigą visuomenei. nagrinėti kitų sudarytas programas). kaip mokslininko pareigą mokslui <. dažnai aprašomas daugelyje programavimo kalbas nagrinėjančių knygų.ja reikia bandyti rašyti (žinoma. Taip ir programavimo kalba . kartoti gramatikos taisykles. o ne atskiras programavimo konstrukcijas. Kaip dailininkui nepakanka išmanyti spalvų savybes. tobulės algoritmavimo stilius. kaip dirbančiojo pareigą darbui. Suprantama.Yra tiktai vienas kelias į žmogų. ypač kai dar netvirtai žinomos pagrindinės programavimo sąvokos. Tačiau tai geriausias kelias išmokti kurti programas. kaip sudaromos programos. Neįmanoma išmokti rašyti.> Justinas Marcinkevičius Pratarmė Šiame kurse mokysimės sudarinėti uždavinių algoritmus ir rašyti jų programas Paskalio programavimo kalba. tačiau nuvažiavus į užsienį nesusikalbėti gatvėje. o visuomenės . iš karto pateikdami programas autoriai gana smarkiai rizikuoja . Kaip žmogaus pareigą žmogui. ir tas kelias vadinasi Pareiga. ir skaityti. kaip saulės pareigą žemei. Palaipsniui išsiugdys programuotojo nuojauta.nesijaudinkite. kaip mūsų pareigą tiesai ir ištikimybei. Programavimą galėtume palyginti su užsienio kalbos mokymusi. Priešingu atveju bus tik susipažįstama su kalbos konstrukcijų žymenimis ir liks nepatirtas tikrasis programavimo skonis.

Dauguma pratimų aptarti. ypač devintojo. Aštuntasis ir devintasis skyriai yra programavimo pradžiamokslio pabaiga ir kūrybos pradžia. Antrajame ir trečiajame skyriuose aptariamos pagrindinės programavimo valdymo struktūros ir duomenų tipai. kuriuos reikėtų išnagrinėti norint gerai suvokti masyvo esmę. Septintajame skyriuje sužinosite apie įrašus. atrasite daugiau reikalingų dalykų. vartojamų norint sudaryti bent kiek didesnes programas (o realiai tik tokios ir būna). eksperimentuodami jūs žingsnis po žingsnio mokysitės programuoti. Vėliau grįždami prie šių skyrių. patogesnis atvejis darbui su tekstais . turėtumėte skaityti ne vieną kartą . patiems parašyti bent po keletą procedūrų ir funkcijų. panagrinėti programų. Visuose skyriuose pateikta nemažai pratimų. papildyti . Tai reiškia. ko jums tuo metu labiausiai reikės. Pirmą kartą perskaitę rasite tai.masyvas bei jo atskiras.labai trumpai supažindinama su integruotąja Turbo Paskalio terpe. Todėl šio skyriaus medžiagą reikėtų nagrinėti itin susitelkus. paskui nagrinėjamas nedidelis ir paprastas uždavinys. kad programa „auginama" palaipsniui taip. ypač devintąjį. esminiai dalykai išaiškinti. kad kaskart po pamokos pakilus nuo kompiuterio programa būtų baigtinė ir veikianti. kas pirmą kartą skaitant buvo praleista. patrauklesnės. Ketvirtajame skyriuje supažindinama su procedūros bei funkcijos sąvokomis. . Didesnė šių skyrių dalis bus žinoma iš pagrindinės mokyklos algoritmavimo kurso. Pirmiausiai išsiaiškinsite. Šiuos skyrius. Būtina atlikti kuo daugiau įvairių pratimų.šitaip geriau suprasite programas sudarančių elementų esmę. Čia laikomasi principo. kaip rašyti didesnę programą nei anksčiau pateiktuose pratimuose. kurie pradžioje jums atrodė nereikalingi ar net beprasmiški. Teks ne kartą grįžti prie šių skyrių medžiagos. kad programa kiekvieną kartą būtų papildoma baigtine veiksmų seka. Paskutiniame dešimtajame skyriuje aprašoma daugiau kompiuterinės grafikos galimybių. Šeštajame skyriuje supažindinama su tekstinių bylų sąvoka. prisiminsite. Išsamiau apie šios terpės galimybes galima pasiskaityti 1-ame priede. Medžiagos pateikta. Čia pateikta nemažai pavyzdžių. Vėlgi dėmesys čia kreipiamas į programų sudarymą. čia tik pakartosite. . Tai vienos svarbiausių programavimo sąvokų. atrasti tai. nesuprasta ar tuo metu nepatraukė jūsų dėmesio. kaip pradėti darbą norint surinkti ir atlikti programą kompiuteriu . Suprasite grupinio programavimo jėgą ir žavesį. Devintajame skyriuje programų kūrimo metodika pakartojama nagrinėjant gerokai didesnį ir sudėtingesnį pavyzdį. Penktajame skyriuje aiškinama svarbiausia duomenų struktūra . jog būtina planuoti darbą taip. bandydami programuoti ir vėl grįždami į pradžią. komponuodami.pakanka gebėti skaityti pradinius duomenis iš bylų bei rašyti rezultatus į bylas. Jūsų programos tobulės. tačiau čia nėra naujų sąvokų .jums teks tik kai ką pakeisti. Aštuntajame skyriuje aptariama programų kūrimo metodika. taps efektyvesnės. ypač kai tenka sudaryti didesnes programas. Visuose šio vadovėlio skyriuose programų rezultatams įforminti naudojami dialogo ir kompiuterinės grafikos elementai.Pirmajame vadovėlio skyriuje aptariama. Šių bylų nereikėtų labai išsamiai nagrinėti . kuriuos reikėtų atidžiai išnagrinėti ir atlikti kompiuteriu.eilutė. Visa tai taikydami savo programose.apmąstydami.tik mokoma praktiškai panaudoti įrašus. daugokai. sakytume.

Programavimo praktikumas. Iki užduočiai atlikti skirtų pamokų kiekvienas mokinys turėtų išsiaiškinti ir suplanuoti. sudaryti savo programų eskizus (schemomis ar programavimo kalba).spręsti kūrybines užduotis.mii. jei per kiekvieną naują pamoką galėtumėte skirti keletą minučių konsultacijoms. 2 (II. Kūrybinių užduočių pavyzdžiai pateikti IX skyriuje. kad tik tokiu atveju galėsite bent kiek pajusti programavimo skonį. Vidžiūnas.) 2 (I sk. Dagienė.nerinkite pateiktų programos tekstų. Siūloma programavimo pradmenų mokymosi schema parodyta 1 lentelėje.). Kaunas: Smaltija. Autoriai nepaprastai dėkingi jai už įdėtą triūsą ir sugaištą laiką. uždavinių sprendimą kompiuteriu. 1 lentelė. V. Algoritmai. Rekomenduojama mokymosi schema Pamokų skaičius Vadovėlio skyrius Papildoma medžiaga: šaltinių. 1999. 3 (VII-IX sk. VIII sk. Informatikos pradmenys. kad užtektų laikojoms apgalvoti. Tačiau svarbiausia . Programavimas su Turbo Paskaliu.).) 2 (V. numeriai 4 4 4 5 3 4 10 IIskyrius III skyrius IV skyrius V skyrius VI skyrius VII skyrius Kūrybinė užduotis (geriausia ją pateikti pradedant VII skyrių). V sk. Smolinskas.).) Šio vadovėlio visų pratimų programų tekstus galima rasti internete. nurodytų išnašoje. 1. kad skaitytojo dėmesys būtų sutelktas į programavimą.) VII. Tinklapio adresas: ftp://aldona. kaip ir ką darys. III sk. VII sk.pasitikrinti). II. G. 3 J. 1 V. 3 (IV. IV sk. 3 (II. Būtų gerai. Vilnius: TEV. 3 (I sk. A. Vadovėlį daug kartų skaitė ir vertingų minčių išsakė Klaipėdos „Vėtrungės" gimnazijos informatikos mokytoja Aldona Butkienė. Taupykite laiką produktyvesniems darbams. Bukšnaitis. IX. Susipažinus su pagrindinėmis teorijos sąvokomis. J. papildomai medžiagai susirasti. V. aptarti su mokytoju ir spręsti. Vilnius: TEV. 2000. 3 (III sk. Programavimo pradmenų uždavinynas. Labiau programavimu besidomintys mokiniai galėtų įveikti keletą ar bent vieną sunkesnę užduotį. III. II dalis. Grigas. 3 (VI. VIII. patartume iš karto imtis nagrinėti pateiktų pratimų programas.patikrinti (gal net svarbiau . Kūrybinės užduoties tikslas . X šio vadovėlio skyriai.). 2 . Jei kas nors neaišku. Manome.). Naudinga atlikti keletą kiekvieno skyrelio pabaigoje pateiktų kontrolinių užduočių. kaip gebama pritaikyti įgytas žinias.) 2 (VI sk. jei norite išbandyti juos kompiuteriu ar nedaug modifikuoti. Užduotis reikėtų suformuluoti bei paskirstyti iš anksto. 3 (I. III sk. tuomet reikėtų grįžti ir vėl pasigilinti į teoriją.). Mokantis šį kursą reikėtų sudaryti bent vieną išbaigtą kūrybinės užduoties programą.lt/pms/mokykla/Paskalis/ Pasinaudokite jais . tačiau galima ir patiems susigalvoti uždavinį. Dagienė.) 2 (IX sk.Vadovėlis sudarytas taip. 2000. Užduočiai atlikti turėtų būti skiriama keletas pamokų. Blonskis.

recenzentams .mii . Kauno „Ąžuolo" vidurinės mokyklos informatikos vyr. I t Jonas Blonskis jonasb@soften.Taip pat autoriai nuoširdžiai dėkoja kolegai Aidui Žandariui.už kruopštų darbą ir nuolatinį rūpinimąsi.ktu. Ivinskio gimnazijos mokytojui metodininkui Arvydui Verseckui .Švenčionių Ž. Į autorius galite kreiptis patarimų ir pagalbos šiais adresais: Valentina Dagienė dagiene@ktl . mokytojai Reginai Zlatkauskienei. pateikusiai įdomių uždavinių. Laukiame jūsų pasiūlymų. atidžiai perskaičiusiam rankraštį ir pateikusiam daugybę naudingų pastabų. Žemaičio gimnazijos mokytojui ekspertui Albertui Dindai ir Kuršėnų L.lt Autoriai .

y. Viena tokių yra Paskalio programavimo kalba. trumpa forma. kad jis galėtų išreikšti uždavinio sprendimą aiškia. nukreipta į žmogų. Dabar daugiau dėmesio skirsime pačios kalbos konstrukcijoms. Todėl labai svarbu pasirinkti programavimo kalbą.algoritmams užrašyti ir realizuoti Turbo Paskalio sistema. Tik užrašai paprastai šiek tiek skiriasi. ir programavimo. Vandenų platybėj ir dangaus žydrynėj nėra kelių nė pėdsako. Pradedant mokytis programuoti ypač svarbi pirmoji.1. Tačiau daugelio jų pagrindinės konstrukcijos panašios.ir algoritmavimo. išsiaiškinsime darbo su Turbo Paskalio integruotąja terpe pagrindinius veiksmus.programoms vykdyti. Su Paskalio programavimo kalba jau šiek tiek susipažinote pagrindinės mokyklos baigiamosiose klasėse mokydamiesi informatikos pradmenų kurso. Mokydamiesi programuoti turime mokytis dviejų esminių dalykų: sudaryti algoritmus. t. Taką dengia paukščių sparnai. kad būtų galima atlikti jas kompiuteriu ir gauti rezultatus. o Paskalio kalba vartojama tik kaip viena iš algoritmų užrašymo priemonių. tiksliau sakant . žvaigždžių liepsna ir besikeičiančių metų laikų gėlės. Programavimas Turbo Paskaliu Programos rašomos taip.ji reikalinga žmogui. abu reikalauja tam tikrų įgūdžių. Paskalio programavimo kalbą sukūrė Šveicarijos Federalinės aukštosios politechnikos mokyklos Informatikos instituto direktorius profesorius Niklausas Virtas (Niklaus Wirth) .Kur nutiesti keliai. Paskalio programavimo kalba Algoritmus galima užrašyti įvairiomis programavimo kalbomis. aš pasiklystu. Aš klausiu savo širdį. Šiame skyriuje trumpai aptarsime. antra . Todėl Paskalio kalba parašytus algoritmus galima vadinti ir algoritmais. nes tenka daug kartų patiems skaityti sukurtas programas ir jas nuolatos taisyti. Rabindranatas „Vaisių Tagorė rinkimas" 1. Ten daugiausia dėmesio buvo skiriama algoritmams. ir programomis. turinčią aiškias ir patogias konstrukcijas. Jų sukurta labai daug ir vis randasi naujų. kuris turi įvykdyti užrašytas komandas ir gauti rezultatus. ir kompiuteriui . 1. Paskalis tinka ir žmogui . Abi pusės yra svarbios. Išsamesni šios terpės veiksmai aprašyti 1-ame priede. kaip atlikti Paskaliu parašytą programą kompiuteriu. o pačią kalbą .ji skiriama kompiuteriui. panaudoti algoritmines konstrukcijas ir atlikti sudarytas programas kompiuteriu. Šie darbai labai svarbūs. Programavimo kalba tarytum dvipusė: pirma . ar mano kraujas žino savo nematomą kelią.algoritmams rašyti bei skaityti.

Nors šiuo metu pasaulyje sukuriama vis naujesnių. o po metų pasirodė jo pataisytas variantas. nes sujungia anksčiau minėtus programai atlikti reikalingus veiksmus: tekstų redaktorių. . santrumpa IDE . programai kompiliuoti . Vienas populiariausių Lietuvoje .dauguma jos konstrukcijų tiesiog paimtos iš Paskalio. gruodžio 1 d. Addyman). Ji susilaukė visuotinio pripažinimo ir tapo pagrindine programų publikavimo ir programavimo disciplinos mokymo kalba. atrodytų. Adimanas (A. programai derinti.persidengiančius langus darbui su programų tekstais bei rezultatais. Pavyzdžiui. kai buvo sukurtas pirmasis šios kalbos transliatorius CDC 6400 kompiuteriui. nesunku bus įvaldyti bet kurią kitą programavimo kalbą.0 versijos) turi šias galimybes: . Lietuvoje Paskalio kalba pradėta praktiškai vartoti nuo 1977 m. Vos tik sukurta Paskalio kalba ėmė sparčiai plisti. programavimo kalbų. Paskalio kalba parašytiems algoritmams atlikti sukurta daug transliatorių. Turbo Paskalio integruotoji terpė Norint sudaryti programą kompiuteriui ir gauti rezultatus. be to. derinimo sistemą. kompiliatorių. įsiminimo ir dialogo reagavimo priemones.Blaise Pascal.tekstų redaktorių.Integrated Development Environment).terpės. . Daugelis šiuolaikinių modernių kalbų taip pat remiasi Paskaliu. sukompiliuoti ir suderinti programą. paskelbtas tarptautinis Paskalio kalbos standartas ISO 7185. šiuo metu populiarioje Delphi programavimo sistemoje vartojama Object Pascal programavimo kalba . vis tobulesnių. klaidoms ieškoti bei taisyti . 1623-1662) garbei. 1. M. kuriuo galima tvarkyti bylas. buvo sudaryta mokslininkų grupė Paskalio kalbos standartui parengti.. 1977 m. parinkus įvairius kontrolinius duomenis.jis labai tinka pradedantiems mokytis programavimo. Jai vadovavo A. 1971 m. Paskalio kalba vartojama neakivaizdinėje Jaunųjų programuotojų mokykloje. būtina atlikti šiuos veiksmus: surinkti programos tekstą ir jį ištaisyti. kurioje buvo dirbama. Šiems veiksmams atlikti vartojamos specialios priemonės: tekstui rinkti ir redaguoti .kompiliatorius.derinimo sistema.0 ir 7. Integruotoji programavimo terpė Turbo Paskalis (6. Paskalio kalbos pradžia reikėtų laikyti 1970 metus. Nuo 1979 m. 1983 m.patogių derinimo priemonių. Taigi išmokus rašyti algoritmus Paskalio kalba. .tekstų tvarkymo sistema. Jį ir naudosime šioje knygoje pateiktoms programoms atlikti. . kai Matematikos ir informatikos (tuometinis Matematikos ir kibernetikos) institutas įsigijo šios kalbos transliatorių kompiuteriui БЭСМ-6. Paskalis irgi nepraranda vertės .darbo su pele ir meniu priemones. kuri paprastai vadinama integruojančiąja. padeda programuotojui atlikti dar kai kuriuos darbus. Visiems šiems veiksmams drauge atlikti sukurta Turbo Paskalio programavimo sistema.Turbo Paskalis. buvo paskelbtas pirmasis oficialus Paskalio programavimo kalbos aprašas.1968-1971 metais ir pavadino ją žinomo prancūzų matematiko ir filosofo Blezo Paskalio (. .2. Šiuo standartu iš esmės remiamasi kuriant transliatorius įvairių tipų kompiuteriams. Literatūroje Turbo Paskalio sistema dažnai vadinama integruotąja programavimo terpe (anglų k.

—. c h r .Turbo Paskalio standartinių modulių biblioteka. Jos langas parodytas 1 paveiksle. programos rašymo langas. kuriame laikomos bylos darbui su kompiuterine grafika: g r a p h . .3.integruotoji programavimo terpė. Jums dar bus reikalingas katalogas \BGI. b g i . keletas bylų su prievardžiu . .kompiuterinis žinynas su bet kurios Paskalio kalbos ar sistemos sąvokos aiškinimu. t p . Lango užvėrimas Pagrindinis komandų meniu 4 Lango vardas Lango dydžio keitimas Darbo langas I ^ Tuibo Paacol d>j H i ® AJ • гl sа 1и ю ш в м ш т ж т и ш =т aа^ иHONftHEOfl-PftS шш^ . jos pagrindiniame kataloge (pavyzdžiui. kuriame yra Turbo Paskalio grafinės procedūros ir funkcijos. „ .t u r b o . t p l .t u r b o . reikalingų atlikti veiksmus su programa. h i p . t p u .Įdiegus Turbo Paskalio sistemą.šriftams.t u r b o . . ir informacinė (arba būsenų) eilutė apačioje.modulis. exe arba susiradę šią bylą Turbo Paskalio aktyviame kataloge ir ją įvykdę). TP. e x e . Meniu juostoje galima rasti įvairių komandų. pirmiausia turime išsikviesti Turbo Paskalio integruotąją terpę (surinkę komandą t u r b o . lr —rrr^— . Išsamiau jos aprašytos 1-ame priede.— Lango numeris I ι Vl Haly J4 Suu FJ UiMn ftlt*** Lorpllii |v Плка fllttPlU Local млн Gulsčioji slinkties juosta Žymeklio koordinatės Informacinė eilutė Funkcinių klavišų meniu 1 pav. keletas bylų su prievardžiu . 1.t u r b o .sistemos parametrų nustatymo byla. užimantis didžiausią ekrano dalį (dažniausiai vadinamas darbo langu). Darbo su Turbo Paskalio terpe pradmenys Jei norime sudaryti Paskalio kalba programą. jei sistema įdiegta kataloge C:\TP) randamos šios pagrindinės Turbo Paskalio bylos: . Turbo Paskalio integruotosios terpės redagavimo langas Stačioji slinkties juosta . Integruotosios Turbo Paskalio terpės redagavimo langą sudaro trys pagrindinės dalys: meniu juosta viršuje.kompiuterio videosistemų tvarkyklės.

Kiekvienos eilutės pabaigoje paspaudžiamas Enter (įvesties) klavišas. 4. . Programuotojui būtina sukurti savo vartotojo katalogą. Paspaudus bet kurį klavišą. Pradedant dirbti Turbo Paskalio terpėje. esančią punkte Debug) arba paspausti klavišų Ctrl + F9 kombinaciją. pereiti į File meniu punktą (paspaudus FlO klavišą arba naudojantis pele). Juos galima pamatyti pasirinkus meniu juostoje Window User Screen (arba paspaudus klavišus Alt + F5). tuomet terpė pati pridės prievardį .tą. kuriame būtų laikomos visos jo bylos. Programa pradės darbą. Jei programa sėkmingai sukompiliuota. galima vykdyti programą: tereikia meniu juostoje pasirinkti atitinkamą komandą (Run. nurodyti reikiamą katalogą. Rašant programas labai svarbu jas įsiminti (išsaugoti). ji ves dialogą su vartotoju (pavyzdžiui. kad bylos įrašyti negalima. Jeigu programa dar nebuvo įrašyta į bylą. Jei parašomas tik vardas. ji kompiliuojama: tam pasirenkama atitinkama meniu komanda (esanti punkte Compile) arba spaudžiama klavišų Alt + F9 kombinacija. Taip bus patogiau ir greičiau dirbti. reikia pasinaudoti komanda Save As. Esant tokiai situacijai.Pati programa rašoma centriniame lange. lauks. 2. tuomet terpė praneš. tai bus prašoma nurodyti bylos vardą. Dabar visos programos bus įsimenamos ir randamos tik šiame kataloge. byla bus rašoma Turbo Paskalio kataloge BIN. Jei reikės. pirmiausia būtina nustatyti aktyvų katalogą . kuriame kataloge bus įrašyta programos teksto byla. Tekstas renkamas kaip įprasta bet kurioje redagavimo sistemoje. p a s . programuotojų dažnai vadinama taip: programa „pakibo". po to pateiks rezultatus. paspausti meniu sąraše mygtuką OK. reikia perkelti žymeklį ant to žodžio ir paspausti klavišus Ctrl -f Fl. Tam reikia atlikti šiuos veiksmus: 1. 3. Labai svarbu žinoti. Žinyną išsikviečiame paspaudę Fl klavišą. apie Turbo Paskalio integruotąją terpę galite daugiau sužinoti panagrinėję 1-ame priede pateiktą medžiagą. gausite pranešimą „Compile successful". Baigus rinkti programos tekstą. Rekomenduojame kiekvienai programai. Iškilus klausimų sudarant programas (tada reikės daugiau informacijos). Dažniausiai tai būna amžinas ciklas. ypač jeigu ją sudaro keletas bylų (programos. Jeigu nieko nenurodysime. duomenų. Programos vykdymo metu galima situacija. Prireikus informacijos apie kurią nors Turbo Paskalio konstrukciją ar priemonę. kol bus surinkti pradiniai duomenys). esančia meniu punkte File. pasirinkti punktą Change Dir. Tam reikia paspausti F2 klavišą. Rinkdami programos tekstą arba kompiliuodami programą galime bet kada kreiptis į kompiuterinį Turbo Paskalio žinyną ir pasiskaityti rūpimomis temomis. programos darbas nutraukiamas paspaudus Ctrl + Alt + Break. Jeigu į sisteminių programų diską (paprastai tai būna C) rašyti uždrausta. sukurti atskirą katalogą. rezultatų). Prireikus pasidaryti programos kopiją (įrašyti ją kitu vardu). kuriame yra programų bylos (arba jos bus ten įrašomos).

4) programos rašymas. Programos sudarymas Pradėję spręsti uždavinį pirmiausia turime suvokti. Tai tinka ir programoms. Mažų. kokia ši programa. Ypač daug dėmesio reikėtų skirti rezultatų pateikimo aiškumui (kai duomenys rašomi ekrane). Šios dalys būdingos kiekvienai programai (jei duomenų daug. Nėra bendrų receptų. kaip ir kodėl šitaip rašoma.kūrybinis procesas. tuomet duomenims įvesti ir išvesti geriausia parašyti atskiras procedūras). Sudėtingo uždavinio programavimo technologija skaidant jį į mažesnes dalis pademonstruota aštuntajame ir devintajame skyriuose. vėl skaidoma į dalis. 10) programos dokumentavimas ir diegimas. kada baigia darbą ir atsisveikina su vartotoju. Jei pastaroji vis dar sudėtinga. Vadovėlyje pateikiamų programų sudarymo detaliai neaprašinėsime. Tam reikia išsiaiškinti uždavinio formuluotę ir nustatyti. reikalaujantis daug triūso ir nuovokos. kurias galima programuoti atskirai. Programų sudarymas .kiti.kontrolinių duomenų išsamaus rinkinio sudarymas. kaip sudaryti kiekvieno uždavinio programą. Programos sudarymą galima suskirstyti į šitokias dalis . kur ieškoti rezultatų (pavyzdžiui. kokie turi būti rezultatai. kas jos autorius. Todėl dažniausiai pateiksime paruoštas programas. 3) sprendimo metodo (algoritmo) parinkimas ar sudarymas. išskyrus pradinių duomenų įvedimą ir rezultatų įforminimą. apibūdinsime kontrolinius duomenis.elementarių klaidų paieška. 2) pradinių duomenų analizė. dialogą. 8) programos testavimas. O jums teks patiems nagrinėti ir suvokti. Ypač reikėtų atkreipti dėmesį į pradinių duomenų nusakymą . kiekvienas gali tai padaryti savaip. Tam pačiam uždaviniui spręsti galima sudaryti daug ekvivalenčių programų. kitiems . Tai užimtų nemažai vietos ir būtų nuobodu skaityti pasikartojančius aiškinimus. ko iš mūsų norima. pavaizduosime rezultatus. Pradžioje būtų galima pristatyti.kokius reikalavimus jie turi tenkinti. patogumą vartotojui.4. kam ji skirta. Programa gali pranešti. kartais kai kurie etapai visai nereikalingi. 9) programos bandymas. jei jie pateikiami byloje). Beveik kiekvieną didesnį darbą lengviau įveikti išskaidžius jį į dalis . Šie veiksmai programuojami nesunkiai. pratimo pobūdžio uždavinių programų dažnai nebūtina skaidyti į dalis. . 5) programos tikrinimas . 7) programos derinimas . 6) programos tobulinimas.mažesnius darbus. Programos pabaigoje galima nurodyti. Vadovėlyje pateikiamų pratimų programose paprastai nėra pradžios ir pabaigos veiksmų. geriau jį atlikti. kokie gali būti programos pradiniai duomenys. Reikia pagalvoti apie programos vaizdumą. Todėl kiekviena programa galėtų turėti savo darbo pradžią ir pabaigą. Tačiau sudarant bet kurio uždavinio programą tenka apgalvoti duomenų įvedimą ir rezultatų išvedimą. Didelis uždavinys skaidomas į dalis. kurios padėtų šį darbą paspartinti.etapus: 1) uždavinio formulavimas. Tuomet prognozuojame. Tačiau galima suformuluoti bendras taisykles. Dažnai didesnei daliai rašoma funkcija arba procedūra. Vieniems uždaviniams svarbesni vieni etapai.1.

aprašai ir programos veiksmai.Įvesti visuomenėje tvarką labai lengva: tereikia priversti. po kurio nurodomas programos vardas. taigi galima tikėtis pakankamo vaizdumo. Programos struktūra Paskalio kalba užrašytas baigtinis algoritmas. Sužinosite ir keletą papildomų sąvokų. funkcijos. Jose vartojami paprasti žymenys. kad kiekvienas laikytųsi tvirtai nustatytų taisyklių. duomenų tipai. Aptarsime pagrindines valdymo konstrukcijas: priskyrimo bei sąlyginį sakinį. Antraštė pradedama žodžiu program. kurios dar turės būti aiškinamos. procedūros. kintamieji. Programos struktūrą galime nusakyti struktūrograma (2 pav. Bendru atveju programą sudaro antraštė. . Toliau pateikiami programos veiksmai . Aprašų dalyje aprašomos konstantos. kurių prireiks atliekant programas kompiuteriu. ciklus.1. Ovalo arba apskritimo kontūrais apibrėžti Paskalio kalbos baziniai žodžiai bei simboliai. Stačiakampiuose rašomos tos konstrukcijos. Labai lengva ugdyti neregius. Antuanas de Sent „Žemė žmonių Žmogus turi išmokti būti pavaldus sau pačiam paklusnus savo paties sprendimams. Pagrindinės valdymo struktūros Šis skyrius skirtas pakartoti ir įtvirtinti toms sąvokoms. Egziuperi planeta" ir Ciceronas 2.tarp žodžių b e g i n ir end. Programos pabaigoje dedamas taškas. kurį atliekame kompiuteriu. 2. vadinamas programa.) arba sintaksės diagrama (3 pav. bet ir sintaksės diagramas. Tačiau nepalyginamai sunkiau išlaisvinti žmogų Išmokyti jį valdyti save patį. Pateiksime visų nagrinėjamų Paskalio konstrukcijų ne tik struktūrogramas.). kurte paklusniai vykdytų vedlio ar Korano nurodymus. Vartosime tik dviejų tipų duomenis: sveikuosius ir realiuosius skaičius. su kuriomis susipažinote pagrindinės mokyklos informatikos pradmenų kurse mokydamiesi algoritmavimo dalies. Paskalio paprastieji duomenų tipai išsamiau aprašyti kitame skyriuje.

5. skirtingai nuo standartinės Paskalio programavimo kalbos. (Tuščiu sakiniu laikomas tiesiog kabliataškis. begin Programos veiksmus aprašantys sakiniai end. kurios pradžioje parašytas žodis b e g i n . funkcijos. y. kurį reikia atlikti. kaip reikia aprašyti kintamuosius: po žodžio v a r rašomas kintamojo vardas (arba vardai.p r o g r a m programos vardas. procedūros. o ne užbaigiami kabliataškiais. nekintančius duomenis. Programose neretai reikia vartoti pastovius.) Vadovėlyje pateikiamose programose dažniausiai kiekvieno sakinio gale rašome kabliataškį . Todėl galima teigti. pavyzdžiui: v a r suma : i n t e g e r . prieš programą pradedantį žodį b e g i n . a. Paskalio programų veiksmai užrašomi sakiniais. Vienas sakinys nuo kito atskiriamas kabliataškiu. Programos struktūrograma 3 pav. Patogiausia kintamuosius aprašyti prieš pat programos veiksmus. aprašus galima pateikti laisviau. Sudėtinį sakinį sudarantys sakiniai atliekami paeiliui. Priminsime. pavyzdžiui: c o n s t MAX = 1000. Turbo Paskalyje. todėl prieš žodį e n d kabliataškis nereikalingas.tuo atveju suprantama. T = 2 . Aprašai: konstantos. nusakanti išbaigtą veiksmą. po jo nurodomas konstantos vardas ir reikšmė (atskiriama nuo vardo lygybės ženklu). Atkreipiame dėmesį į tai. tipai. 2 pav. b. jei jį parašysite .taip patogiau. Programos struktūros sintaksės diagrama Po programos antraštės eina aprašų dalis. vadiname sudėtiniu sakiniu. o pabaigoje . Paskalio kalboje sakinių grupę. jog Paskalio programos visi veiksmai užrašomi vienu sudėtiniu sakiniu. kad tarp kabliataškio ir žodžio end atsiranda tuščias sakinys. Sakiniu vadinama Paskalio kalbos konstrukcija. Konstantos aprašomos žodžiu c o n s t . Mes dažniausiai taip ir darysime. kad būtų galima juos rašyti ten. t. c r e a l .end. kad pagal Paskalio kalbos standartą sakiniai atskiriami. Sakiniai dėstomi nuosekliai. kintamieji. jei norime aprašyti iš karto kelis kintamuosius) ir duomenų tipas. kaip parašyti. Keli sakiniai jungiami į sudėtinį sakinį. nors nieko blogo nenutiks. kur pagal Paskalio kalbos taisykles . paskui vienas kitą.

Taip kompiuteris perskaito ir priskiria paeiliui visus surinktus duomenis skaitymo procedūroje išvardytiems kintamiesiems. Priskyrimo sakinio sintaksės diagrama Ш 2. Kairėje priskyrimo simbolio pusėje rašomas kintamojo. standartine procedūra Read arba ReadLn. b := 5. tačiau dažniausiai vartotojui pakanka pasistengti. Kuriam kintamajam kurią reikšmę priskirti. v a r R. iškyla labai svarbus klausimas . kuriam reikia suteikti reikšmę.2. Priskyrimo sakinys Viena svarbesnių ir dažniausiai vartojamų programavimo kalbos konstrukcijų yra priskyrimo sakinys. Jis nurodo. be jų vardų. kol žmogus surenka reikalingus duomenis klaviatūra bei praneša. vardas. { Ritinio pagrindo spindulys } . kad jau baigė rinkti (tai nurodoma paspaudžiant įvesties klavišą Enter). kad kintamajam reikia suteikti (priskirti) reiškinio reikšmę. program Ritinys. tiksliau. surinkus juos kompiuterio klaviatūra. Visi pradiniai duomenys programai pateikiami iš išorės. kurio reikšmę reikia apskaičiuoti ir suteikti kintamajam (4 pav. 4 pav. Todėl galima sakyti.1 pratimas. spausdinamos popieriuje arba įrašomos į rezultatų bylą. pavyzdžiui. Priskyrimo veiksmas žymimas dviem ženklais := (tai vadinama priskyrimo simboliu). po žodžių t h e n . kurioje nurodytų kintamųjų reikšmės užrašomos ekrane. kurio aukštis h ir pagrindo spindulys r . kad priskyrimo sakinio kairiosios pusės kintamojo ir dešiniosios pusės reiškinio tipai sutaptų. nurodoma duomenų skaitymo konstrukcija. Panašiai rezultatai perduodami iš programos į išorę. kampas := 15 + S i n (15*x). Kalbant apie reikšmių priskyrimą kintamiesiems. Kompiuteris atlieka visus programos sakinius iš eilės.reiškinys. kol aptinka duomenų skaitymą. kad baziniai žodžiai b e g i n ir end atlieka skliaustų vaidmenį. Tuomet jo veiksmai sustoja. Sudarykime programą ritinio. Klaviatūra renkamos tik pačios duomenų reikšmės. Iš tikrųjų tai ganėtinai painus klausimas. tiksliau. o dešinėje . do).leidžiamas tik vienas sakinys (pavyzdžiui. Tam vartojama duomenų rašymo (spausdinimo) konstrukcija. ir tuomet viskas bus gerai. e l s e . Kintamųjų vardai yra programos vidaus reikalas.). 2. tūriui ir šoniniam paviršiui rasti. Pavyzdžiui: a := χ + b. Reikalinga viena logiška išimtis: realiojo tipo kintamajam gali būti priskirta sveikojo tipo reikšmė (ji automatiškai pakeičiama realiąja).kaip turi būti derinami dešiniosios ir kairiosios priskyrimo sakinio pusės duomenų tipai. standartinė procedūra ( W r i t e arba WriteLn).

. ReadLn (R). Sąlyginio sakinio sintaksės diagrama Paskalio kalba sąlyginis sakinys užrašomas šitaip: if sąlyga t h e n sakinys 1 e l s e sakinys2 Sąlyga . 2. esantis po žodžio t h e n . V:5:2). sąlyga Taip Pirmasis veiksmas (sakinys) ^ ^ ^ ^ Ne Antrasis veiksmas (sakinys) 5 pav. kad sąlyga tenkinama ir tada atliekamas pirmasis sakinys. kai F a l s e .). tai sakome. ReadLn. V. jei netenkinama . Sąlyginis sakinys Sąlyginiu sakiniu keičiama nuosekli sakinių atlikimo tvarka. { Ritinio aukštis } { Ritinio tūris } { Šoninio paviršiaus plotas } begin Write ( ' Į v e s k i t e r i t i n i o aukštį: '). WriteLn. W r i t e L n ( ' Š o n i n i o p a v i r š i a u s p l o t a s = ' . S := 2 * P l * R * H. 6 pav. kad sąlyga netenkinama ir tada atliekamas antrasis sakinys. kuri lygi: Tt = 3. sakome. S:5:2).1415926535897932385. S : real. Programoje panaudota standartinė konstanta Pi.H. ReadLn (H). W r i t e L n ( ' R i t i n i o t ū r i s = '. einantis po žodžio e l s e (5. Sąlyginio sakinio strukturograma 6 pav. W r i t e ( ' Į v e s k i t e p a g r i n d o s p i n d u l į : '). atliekamas sakinys.atliekamas sakinys. V := P i * R * R * H. Sąlyginio sakinio atliekami veiksmai priklauso nuo sąlygos: jei ji tenkinama.tai loginis reiškinys: kai jo reikšmė yra True.3.

kuri atliekama tik tuomet. y. Pavyzdžiui. konstrukcija i f A t h e n i f B t h e n Sl e l s e S2 gali būti suprantama dvejopai: nesutrumpintame sąlyginiame sakinyje yra sutrumpintas sąlyginis sakinys. kitaip sakant. Atkreipiame dėmesį.Galimas ir sutrumpintas sąlyginis sakinys.sutrumpintame sąlyginiame sakinyje yra nesutrumpintas sąlyginis sakinys. anksčiau pateikta konstrukcija suprantama šitaip: if A then begin if В t h e n Sl e l s e S2 end Kad neapsiriktumėte skaitydami sudėtingą sąlyginį sakinį. iš abiejų pusių apgaubiami žodžiais b e g i n ir end. tuomet jie „apskliaudžiami". Pavyzdžiui. kai tenka atlikti keletą veiksmų (o taip dažniausiai ir būna). Tuomet nesunkiai rastume žodžių i f . rašomas sudėtinis sakinys. . kad prieš žodį e l s e kabliataškio rašyti negalima . sakinį i f A t h e n i f B t h e n i f C t h e n Sl e l s e S2 galėtume perrašyti šitaip: if A then if B then if C t h e n Sl e l s e S2 e l s e else Tuomet jį suprastume šitaip: i f A then if B then i f C t h e n Sl e l s e S2 else else Primename.betgi tokio sakinio nėra! Reikėtų atkreipti dėmesį į tokį atvejį. turintis tik vieną šaką (then).jei užrašytumėte. Vadinasi. kai sąlyginiame sakinyje po žodžio t h e n vėl eina sąlyginis sakinys. sakinius reikia jungti į sudėtinį sakinį apskliaudžiant juos žodžiais b e g i n ir end. tai reikštų. Todėl. arba atvirkščiai . Paskalio kalboje priimta laikytis tokios taisyklės: vidiniai sakiniai laikomi (jei tik galima) nesutrumpintais. kad e l s e pradeda naują sakinį . kai sąlyga tenkinama: if sąlyga t h e n sakinys Jeigu po žodžio t h e n arba e l s e reikia nurodyti kelis sakinius (paprastai taip ir būna). tiek jų reikia prirašyti sąlyginio sakinio gale. galėtume rekomenduoti paprastą taisyklę . t. kad po žodžių t h e n ir e l s e galima rašyti tik vieną sakinį. priklausančius tam pačiam sąlyginiam sakiniui.kiek trūksta žodį i f atitinkančių žodžių e l s e . t h e n ir e l s e trejetus.

dB. Sudarysime programą. ReadLn (xB). end. ReadLn (xC). skirtą nustatyti. k o o r d i n a t e s : ' ) . v a r xA. 6a pav. k o o r d i n a t e s : ' ) . WriteLn ( ' Į v e s k i t e taško B W r i t e ( ' χ = '). yC. dC := S q r t (Sqr(xC) + Sqr(yC)). Taškų A. { Skaičiuojami atstumai dA := S q r t (Sqr(xA) + Sqr(yA)). } . dB := S q r t (Sqr(xB) + Sqr(yB)). kuris iš šių taškų yra arčiausiai koordinačių pradžios (6a pav.). W r i t e ( ' у = '). xB. { Atstumai } begin WriteLn ( ' Į v e s k i t e taško A W r i t e ( ' χ = '). k o o r d i n a t e s : ' ) . { Taškų koordinatės } dA.2 pratimas. WriteLn. '). ReadLn (yC). ReadLn (xA). Plokštumoje žinomos trijų taškų koordinatės. ReadLn (yB). if ('Tai taškas ('Tai taškas A') C') ('Tai taškas ('Tai taškas B') C'). iki koordinačių pradžios apskaičiuojamas pagal formulę: d = J χ1 + y 2 . yB. WriteLn ( ' Į v e s k i t e taško С W r i t e ( ' χ = '). xC. C padėtis koordinačių plokštumoje Atstumas nuo bet kurio plokštumos taško. Pateikiame baigtinę programą: program Atstumas. B. dC : r e a l . W r i t e ( ' у = '). W r i t e ('Atsakymas: dA < dB t h e n i f dA < dC then WriteLn e l s e WriteLn e l s e i f dB < dC then WriteLn e l s e WriteLn ReadLn. ReadLn (yA). W r i t e ( ' y = ').B 2. kurio koordinatės χ ir y. yA.

4 * a * c . 2. b. c : r e a l . Rasime kvadratinės lygties ax2 + bx + c = 0 sprendinius. x l : 6 : 2 . W r i t e L n ( ' x l = ' . v a r a. ar teisingai numatėte rezultatus. { Lygties koeficientai } D : real. { Lygties šaknys } begin W r i t e ( ' Į v e s k i t e l y g t i e s k o e f i c i e n t u s a. Kontrolinių duomenų pavyzdys Testo numeris 1 2 3 Pradiniai duomenys xA yA 2 2 2 2 2 1 Rezultatas xB 2 2 -1 ув хС уС Atsakymas: 2 -1 -1 3 3 1 Taškas А Taškas В Taškas С 1 3 2 Ką programa atspausdins. WriteLn ( ' Š a k n y s l y g i o s : '. xl:6:2) end . program Lygtis. x2 : r e a l . end else if D = 0 then begin x l := . x2 := ( .S q r t (D)) / (2*a).Laipsniui kelti panaudojome standartinę funkciją Sqr. ReadLn (a. x2:6:2). b. c: ').с / b):6:2) else i f (a = 0) a n d (b = 0) a n d (с <> 0) then WriteLn ( ' N e t e i s i n g a l y g t i s ' ) else begin D := b * b . if D > 0 then begin x l := ( . ( .b + S q r t (D)) / (2*a).3 pratimas. ' x2 = ' . jeigu du arba visi trys taškai bus vienodai nutolę nuo koordinačių pradžios taško? Parinkite kontrolinius duomenis ir patikrinkite. { Diskriminantas } x l .6 sk.bet k u r i s s k a i č i u s ' ) else i f (a = 0) a n d (b о 0) t h e n W r i t e L n ( ' T i e s i n ė l y g t i s : χ = ' . 6 2. b.b / (2*a).).b . c). i f (a = 0) a n d (b = 0) a n d (c = 0) then WriteLn ('χ . o šakniai traukti .S q r t (žr.

5 0 2 xl = 0. Dažniausiai sutinkami du: while ir for.e l s e WriteLn ( ' R e a l i ų j ų šaknų nėra') end. х2 = -2 Šaknys lygios: . c = 0 a = 0. kol lygi True (7. t. b φ 0. kartojamas tol.1 1 <Enter> Į v e s k i t e l y g t i e s k o e f i c i e n t u s a. c = 0 0 0 0 2 1 Rezultatai xl = 1. Paskaliui vartojami kelių rūšių ciklai.0 .2 <Enter> Į v e s k i t e l y g t i e s k o e f i c i e n t u s a. b. Ciklas while atliekamas šitaip: sakinys. C i k l a s w h i l e Veiksmų kartojimą išreiškiame ciklo sakiniais. x2 = -0. b. esantis šiame cikle. Ciklo while sintaksės diagrama . kai а 1 1 b с 1 . b = 0. trumpiau juos vadiname tiesiog ciklais. kol sąlygos reikšmė tenkinama. b = 0 .5 Programos darbo rezultatai (fragmentas) Įveskite lygties x l = 1. b. c ^ O a = 0. 8 pav. k o l sąlyga sakinys 7pav. x2 = .). c: 1 1 . y. kaip ir sąlyginiame sakinyje.1 Realių šaknų nėra χ .bet kuris skaičius Neteisinga lygtis Tiesinė lygtis: χ = . ReadLn Kontrolinių duomenų pavyzdys Testo Tikrinamas Koeficientai numeris atvejis. b φ 0 а φ 0. Ciklo while struktūrograma 8 pav.2 2 1 2 1 0 0 2 2 1 0 1 2 3 4 5 6 7 D>0 D= O D<0 a = 0.4. yra loginis reiškinys. Jeigu sąlygos reikšmė iš karto yra False. c: 1 2 Šaknys l y g i o s : . Sąlyga.2 k o e f i c i e n t u s a. tai ciklas neatliekamas nė karto. c: 2 1 R e a l i ų šaknų n ė r a 2 <Enter> 2.

χ : integer. W r i t e L n (suma). kai ciklas atliekamas begalę kartų.b. ReadLn. t.5 pratimas. begin W r i t e ( ' Į v e s k i t e n: '). while i begin у := i := end. d a l m u o := d a l m u o + 1 end. y. i : integer. program Laipsnis. { Pradinis duomuo } i .amžinasis ciklas. pamiršo kintamojo reikšmę padidinti vienetu. vartojamas sudėtinis sakinys. pavyzdžiui: w h i l e a >= b do begin a := a . var n : integer. i := i . <= n do у * χ. WriteLn ReadLn. kai neteisingai suformuluojama ciklo kartojimo sąlyga. tai jie apgaubiami žodžiais b e g i n ir end. t. Tarkime. ('Rezultatas: ' . n). Viena pavojingiausių ciklo w h i l e klaidų . Cikle turi būti sakinys.Jei cikle vartojami keli sakiniai (taip dažniausiai ir būna). Į Programoje yra programuotojo klaida } var n : integer. { Laipsnio rodiklis } { Pagrindas } { Rezultatas } pagrindą ir laipsnio rodiklį:'). ReadLn (n). y. . Sudarysime programą skaičiui pakelti sveikuoju neneigiamu laipsniu. i := 1. kai sąlyga iš karto netenkinama ir ciklas neatliekamas nė karto). end. Taip dažniausiai atsitinka tuomet. y : real. w h i l e i <= n do suma := suma + i * i * i . sudarydamas skaičių nuo 1 iki n kubų sumavimo algoritmą. kuris keistų sąlygą (išskyrus paprastą atvejį. pavyzdžiui: p r o g r a m Kubas. begin WriteLn ( ' Į v e s k i t e ReadLn (x. y := 1. β 2. S 2. kad programuotojas.4pratimas. priešingu atveju sąlygos reikšmė bus pastovi ir ciklas tikrai nesibaigs. i + 1. suma : i n t e g e r . suma := 0. y).

. suma := suma . F l : 4 ) .F2. { Duotas skaičius } FO. w h i l e F2 <= M do begin FO := F l . 1. Tai galima užrašyti šitokia formule: F(n) = 1. B 2. 2. { Fibonačio skaičiai } Suma : integer. W r i t e (Fl:4). end. ne didesnių už duotą natūralųjį skaičių M. . { Pirmųjų trijų Fibonačio skaičių suma } W r i t e ( ' F i b o n a č i o s k a i č i a i . sumai rasti. Kontrolinių duomenų pavyzdys Testo numeris 1 2 Duomenys Rezultatas M = 10 M=I 1 + 1 + 2 + 3 + 5 + f! = 20 1 + 1 = 2 . Tai ir bus amžinasis ciklas. ji visą laiką lygi vienetui. F2 := 2. Pabandykite ištaisyti šią programą. ' : ' .6pratimas.2). var M : integer. Kiekvienas šios eilutės narys. yra lygus dviejų prieš jį einančių narių sumai. suma := suma + F2.1) + F(n . . 3. 8. M. 89. FO := 1. vis jį kartos. kai n = 1. Sudarykime programą visų Fibonačių skaičių. 34. suma). ReadLn (M). F (n) = 1. pradedant trečiuoju. 55. W r i t e L n ( ' A t s a k y m a s : v i s ų š i ų d y d ž i ų suma l y g i ' . kai n = 2. 21. 5. program Fibonacci. F l := 1. kai n ž 3. iš atvestųjų triušių po dviejų mėnesių vėl gaunamas naujas prieauglis). F2 := FO + F l . n e d i d e s n i k a i p ' . Todėl ciklo antraštėje pateikta sąlyga bus tenkinama ir kompiuteris negalės užbaigti ciklo. F2 : i n t e g e r . ReadLn. begin W r i t e ( ' Į v e s k i t e n a t ū r a l ų j į s k a i č i ų M: '). { Iš sumos atimame paskutinį skaičių. Vadinasi. kuris viršija M } WriteLn. F{n) = F (n . 13. Triušių porų skaičius sudarys eilutę: 1.Kas nutiks atliekant šią programą? Kintamojo i reikšmė cikle nekeičiama. F l . Fibonačio skaičiai gerai žinomi iš uždavinio apie triušius: triušių pora kas mėnesį atsiveda du triušiukus (patinėlį ir patelę. Suma := 4. F0:4. F l := F2. 144.

Programos darbo rezultatai
Į v e s k i t e n a t ū r a l ų j į s k a i č i ų M: 10
<Enter>
F i b o n a č i o s k a i č i a i , n e d i d e s n i k a i p 10:
1 1 2
Atsakymas:
v i s ų š i ų d y d ž i ų suma l y g i
20

3

5

8

2.5. Ciklas f o r
Tokiam atvejui, kai ciklo kartojimų skaičius žinomas iš anksto, Paskalio kalba turi
patogesnį ciklą - vadinamąjį žinomo kartojimų skaičiaus ciklą arba tiesiog ciklą f o r (9,
10 pav.).
nuo p i k i

g

sakinys

9 pav. Ciklo f o r struktūrograma

10 pav. Ciklo f o r sintaksės diagrama

Paskalio kalba žinomo kartojimų skaičiaus ciklo užrašą sudaro antraštė ir sakinys, kuris
turi būti kartojamas. Antraštė prasideda žodžiu f o r , po kurio rašomas kintamojo vardas.
Šis kintamasis vadinamas ciklo kintamuoju. Tada nurodoma, su kuriomis šio kintamojo
reikšmėmis turi būti atliekamas ciklas - užrašoma pradinė ir galutinė ciklo kintamojo
reikšmės.
Pateiktoje struktūrogramoje (9 pav.) ciklo antraštė reiškia, kad veiksmai turi būti atliekami su visomis kintamojo i reikšmėmis nuo p iki g (pradinė ciklo kintamojo reikšmė
lygi p, o galutinė lygi g). Ciklas f o r atliekamas tiek kartų, kiek skirtingų reikšmių yra
intervale nuo p iki g imtinai. Pradžioje ciklo kintamojo reikšmė yra p, po to, kiekvieną
kartą atlikus ciklą padidinama vienetu (jei yra žodelis t o , arba mažinama vienetu, jei yra
žodelis downto), kol pasiekiama g reikšmė.
Pradinė ir galutinė ciklo kintamojo reikšmės gali būti ne tik skaičiai (konstantos), bet
ir kintamieji arba reiškiniai. Pradinė ir galutinė reikšmės apskaičiuojamos tik vieną kartą,
ciklo pradžioje. Jeigu atliekant ciklą jos būtų pakeistos, tai jau neturėtų įtakos ciklo
kartojimų skaičiui.
Jeigu ciklo antraštėje yra žodelis t o , tai ciklo kintamojo reikšmė didinama vienetu, jeigu
žodelis downto, - mažinama vienetu. Ciklo kintamojo reikšmė keičiama automatiškai,
pats programuotojas jos keisti negali.
Jeigu antraštėje yra žodelis t o ir pradinė reikšmė didesnė už galutinę, tai ciklas neatliekamas nė karto.

Jeigu antraštėje yra žodelis downto ir pradinė reikšmė mažesnė už galutinę, tai ciklas
neatliekamas nė karto.
2.4 pratime ciklą w h i l e pakeitę ciklu f o r , gautume paprastesnę programą:
y := i ;
f o r i := 1 t o n do y := y*x;

Patikrinkite to pratimo programą su šiuo ciklu.

B 2.7pratimas. Parašysime programą apskaičiuoti šitokiai sumai:
1 + 1/2 2 + 1/3 2 + . . . -f 1 /IOO2
program CiklasFor;
var n
: integer;
a, suma : r e a l ;
begin
suma := 0;
f o r n := 1 t o 100 do
begin
a := 1 / (n*n);
suma := suma + a;
end;
W r i t e L n (suma);
ReadLn;

Ši programa ypatinga - ji neturi pradinių duomenų. Vadinasi, programą pakanka atlikti
vieną kartą - sužinojus rezultatą ji daugiau nebereikalinga.
B 2.8 pratimas.
5

= ι - π

Dabar suskaičiuokime sudėtingesnę sumą:
+ έ - 3 ϊ + ··· + ( - ΐ ) π £

Č i a n l yra skaičiaus n faktorialas, pavyzdžiui, 3 \

= 1 * 2 * 3

p r o g r a m Sumavimas;
v a r χ, S : r e a l ;
P
: real;
{ Dėmuo }
i, n : i n t e g e r ;
begin
W r i t e ( ' Į v e s k i t e n = '); ReadLn (n);
W r i t e ( ' Į v e s k i t e χ = '); ReadLn (x);
S := 1; P := 1;
f o r i := 1 t o n do
begin
P := - P * x / i ;
{ Apskaičiuojamas naujas dėmuo j
S := S + P;
end;
WriteLn;
W r i t e L n ( ' A t s a k y m a s : S = ' , S:7:3);
ReadLn;
end.

= 6.

2.6. Standartinės funkcijos ir procedūros
Paskalio kalboje, kaip ir bet kurioje kitoje programavimo kalboje, yra daugybė standartinių priemonių dažnai pasitaikantiems veiksmams užrašyti. Jos nepaprastai patogios,
kadangi patiems nereikia sudaryti jų algoritmų, o tik mokėti tinkamai pritaikyti.
Funkcijos sąvoką jūs žinote iš matematikos, pavyzdžiui, vartojate s i n (χ), I g (χ) ir
pan. Visiškai analogiškai naudojamasi ir standartinėmis Paskalio kalbos funkcijomis - parašomas jų vardas ir nurodomi parametrai, pavyzdžiui, S i n (x) - apskaičiuoja skaičiaus χ
sinusą, Abs (x) - randa skaičiaus χ modulį, S q r t (x) - iš skaičiaus χ ištraukia kvadratinę šaknį. Funkcijos paskirtis - atlikti tam tikrus veiksmus ir duoti vieną konkretų rezultatą,
kurį būtina vartoti reiškinyje (arba atskiru atveju - tiesiog išspausdinti). Kvadrato kėlimo
funkciją Sqr (x) ir šaknies traukimo funkciją S q r t (x) jau vartojome šio skyriaus 2.1
pratime.
Paskalio kalba turi ir daugybę standartinių procedūrų. Nuo funkcijų jos skiriasi tuo, kad
atlieka įvairius veiksmus ir duoda ne vieną konkretų rezultatą. Jūs jau esate susipažinę
su keliomis standartinėmis procedūromis, kurias neretai vadinome skaitymo ir rašymo
sakiniais - tai R e a d , R e a d L n , W r i t e , W r i t e L n .

Daugybę puikių standartinių funkcijų ir procedūrų turi Turbo Paskalis. Tačiau jo standartinės funkcijos ir procedūros išbarstytos po įvairius modulius - autonomiškus programos
gabalus. Modulius galima kurti patiems, galima naudotis standartiniais esančiais Turbo
Paskalyje.
Modulių šiame kurse nenagrinėsime, tačiau jų teikiamomis paslaugomis naudosimės.
O tam tereikia labai nedaug žinoti: kokios standartinės funkcijos ir procedūros kuriam
moduliui priklauso. Mums bus reikalingi tik keturi moduliai:
S y s t e m - pagrindinis modulis, kuriame yra visos pagrindinės Paskalio standartinės
funkcijos ir procedūros;

C r t - modulis, kuriame yra įvairios tekstinio ekrano, klaviatūros, garsų priemonės;
G r a p h - modulis, reikalingas grafiniam ekrano vaizdui formuoti;

Dos - modulis, leidžiantis naudotis įvairiomis DOS operacinės sistemos galimybėmis.
Modulyje esančiomis funkcijomis ir procedūromis galima naudotis tada, kai tą modulį
įtraukiame į programą, t. y. programos pradžioje nurodome žodį u s e s ir parašome atitinkamo modulio vardą. System modulio nurodinėti nereikia: jis prieinamas visada, jame
yra visos Paskalyje vartojamos standartinės funkcijos ir procedūros. Pagrindinės Paskalio
ir Turbo Paskalio standartinės funkcijos ir procedūros pateiktos 2 priede (jos visos įeina į
modulį System). Kitų modulių funkcijos ir procedūros pateiktos 3-5 prieduose.

2.7. Kompiuterinis dialogas
Dauguma programų bendrauja su vartotoju, t. y. pateikia įvairius pranešimus. Bendravimo formų gali būti daug. Paprasčiausia yra tekstinių pranešimų ekrane seka: ką programa
daro, kiek padarė, kokie gauti rezultatai, jeigu nesiseka dirbti, tai galimų priežasčių sąrašas
ir pan. Pertraukose tarp pranešimų programa gali palinksminti vartotoją animacija, garsais
ar net anekdotais. Šitai vadinama pasyviu programos bendravimu.
Programa gali ir aktyviai bendrauti su jos vartotoju. Tai klausimai ir atsakymai. Programa ekrane gali pateikti klausimą ir laukti atsakymo, nuo kurio priklausytų tolesni programos veiksmai. Atsakymai turi būti tikslūs, todėl daugumą klausimų lydi galimų atsakymų

sąrašas (užuominos). Atsakymai gali būti pateikiami ne tik žodžiais ar raidėmis (renkant juos klavišais), bet ir paspaudžiant ekrane specialiai atsakymams nupieštus mygtukus
(naudojantis pele).
Tokios ir panašios bendravimo formos įprastos visose šiuolaikinėse programose. Žmogus gyvena spalvų ir garsų pasaulyje. Programa vaizdesnė, jeigu panaudoja spalvas ir
garsus. Kuriant dideles programas paprastai dalyvauja dailininkai, muzikai, psichologai.
Programos efektyvumą lemia gebėjimas gauti teisingus žmogaus atsakymus, o tai reiškia,
kad klausimų ir informacijos pateikimo ekrane forma, vieta, šriftas, spalvos, garsai turi
didžiulę prasmę. Jūs dažnai matote, kaip su jumis bendrauja operacinės sistemos, įvairios
taikomosios programos, žaidimai ir kt.
Toliau pateikiame keletą elementarių priemonių - funkcijų ir procedūrų pavyzdžių, kurios jūsų rašomas programas padarys įdomesnes ir patrauklesnes. Tai nėra programavimo
mokymosi tikslas, tačiau šiuolaikinės programos turi pateikti rezultatus vaizdžia, aiškia
forma, suprantamai bendrauti su vartotoju, aiškiai išdėstyti informaciją ekrane.
Paprasčiausios tekstinio ekrano tvarkymo funkcijos ir procedūros yra Turbo Paskalio
modulyje C r t . Kad galėtume programoje naudotis šiuo moduliu, jį reikia nurodyti tuoj
po programos antraštės:
uses

Crt;

Šiame modulyje yra daug funkcijų ir procedūrų. Daugumos jų trumpus aprašus rasite
3 priede. Išsamiau apie šiuos modulius galite pasiskaityti programavimo kalbai skirtoje
literatūroje arba pasinaudoti Paskalio kompiuteriniu žinynu - čia rasite ir jų naudojimo
pavyzdžių.
Pradžioje pateiksime keletą pagrindinių deramo apipavidalinimo pavyzdžių. Išvardysime dažniausiai tam vartojamas procedūras. Jų atliekamus veiksmus užrašysime greta
komentarais.
C l r S c r ; { Valo ekraną }
Ši procedūra valo ekraną. Jame nelieka jokio teksto nei piešinių. Žymeklis atsiduria
pradinėje padėtyje - ekrano viršutiniame kairiajame kampe. Ekranas tampa tos spalvos,
kuri Turbo Paskalio terpėje yra numatytoji (paprastai juoda) arba ta, kurią nurodo programuotojas. Numatytoji spalva bus vartojama tol, kol ji nebus pakeista.
Ekrano fono spalvą galima keisti, t. y. parinkti tokią, kokią norime.
T e x t B a c k g r o u n d ( f o n a s : b y t e ) ; { Nustato nurodytą fono spalvą }
Pavyzdžiui, surinkę nurodymą:
TextBackground

(Green);

ClrScr;

ekraną nudažysime žaliai. Jokio teksto neliks. Žymeklis bus ekrano viršutiniame kairiajame kampe.
Norėdami ne tik pakeisti fono spalvą, bet ir jame rašyti tekstą, nurodome:
TextBackground

(Red);

Write

('Mano

mokykla');

Pranešimas Mano mokykla bus rašomas raudoname fone. Teksto rašymo spalva bus
tokia, kokia yra numatytoji reikšmė - balta. Rašymo spalvą galima pakeisti. Ji tik neturi
sutapti su fono spalva.
TextColor (spalva : byte);

{ Teksto rašymo spalva }

Nurodoma spalva, kuria W r i t e ir W r i t e L n procedūros rašys ekrane.
Yra procedūra, kuri valdo žymeklį:
GoToXY (x, y : i n t e g e r ) ; { Perkelia žymeklį į nurodytą vietą }

Ši procedūra perkelia žymeklį į koordinatėmis nurodytą ekrano vietą. Būtent nuo tos
vietos ir bus spausdinama toliau pateikiama informacija.
Ekrano dydis Turbo Paskalio terpėje vartojant DOS operacinę sistemą yra 80 simbolių
pločio (χ koordinatė) ir 25 eilučių aukščio (y koordinatė). Koordinačių atskaitos taškas
yra ekrano kairysis viršutinis kampas. Jo koordinatės yra (1,1)·
a 2.9 pratimas.
Pateikiame programą, kuri kiekvieną sveikojo skaičiaus skaitmenį
užrašo ekrane skirtinga spalva. Skaičius užrašomas atvirkščia skaitmenų seka negu kad
buvo pateiktas. Juodos spalvos kodas lygus 0. (Apie spalvas žr. 3 priede.)
p r o g r a m P2_9;
uses Crt;
v a r sk : i n t e g e r ;
{ Duotas skaičius }
s : integer;
{ Skaitmuo }
begin
T e x t B a c k g r o u n d (Black); C l r S c r ;
{ Valomas ekranas }
{
Skaičiaus įvedimas }
T e x t C o l o r (Blue); W r i t e L n ( Ό < s k a i c v t t u s <= 3 2 7 6 7 ' ) ;
T e x t C o l o r (Green);
W r i t e ( ' Į v e s k i t e s v e i k ą j į t e i g i a m ą s k a i č i ų : ');
T e x t C o l o r (Red); ReadLn (sk);
{
Skaičiaus skaitmenys rašomi spalvotai ekrane }
GoToXY (20, 10); T e x t C o l o r (Green);
W r i t e ( ' J ū s ų s k a i č i u s a t v i r k š č i a i : ');
w h i l e s k > O do
begin
s := s k mod 10;
s k := s k d i v 10;
T e x t C o l o r (s + 1);
{ Keičiama skaitmens spalva }
W r i t e (s:2);
end;
{
Darbo pabaiga Į
GoToXY (50, 23); T e x t C o l o r ( M a g e n t a );
W r i t e ( ' S p a u s k i t e ENTER');
ReadLn;

Toliau vadovėlyje pateikiamas programas sudarysime taip, kad jos spausdinamus rezultatus dėstytų vaizdžiai ir patogiai. Tačiau nereikia persistengti - neperkrauti ekrano spalvų
mišiniu.

2.8. Programavimo kultūra
Nors gali atrodyti, kad programa skiriama tik kompiuteriui, tačiau neretai ją tenka
skaityti ir žmogui. Juk žmogus rašo programą, ją taiso, perdaro. Ir ne vieną, o daugelį
kartų. Tad labai svarbu išdėstyti programos tekstą kuo vaizdžiau, kad būtų galima lengviau
ir greičiau suprasti jos veiksmus.
Programos teksto suvokiamumui, jos veiksmų aiškumui įvertinti vartojama programavimo kultūros sąvoka.

tačiau svarbiausia. kad lengviau ir greičiau būtų suvokiami programos atliekami veiksmai. funkcijų. Konstrukcijos (sakiniai. procedūrų. kad skaitančiajam būtų vaizdu.programų. Kai kas sutampa su įprastais teksto reikalavimais ir yra griežtai nusistovėję. reikia galvoti. 3) prasmingų vardų (kintamųjų. lyginti. sakiniai) turi būti lygiuojamos vertikaliai (t. kaip jį dėstome šio vadovėlio pratimuose. 4. Daugiausiai dėmesio reikėtų skirti sąlyginio sakinio išdėstymui. ar tikrai šitaip bus geriau. lygiavertė konstrukcija. Programų tekstuose. tipų. 2. jam priskiriamas apgalvotas valdymo konstrukcijų (sakinių) bei duomenų tipų parinkimas. tai kelti reikia toje vietoje. procedūrų. Todėl reikia stengtis matyti ir įsidėmėti tai. ypač reiškiniuose. priklausomai nuo to. Tik trumpi. Toliau būtų galima aptarti atskirų programavimo konstrukcijų išdėstymą. Atkreipkite dėmesį. Eilutės ilgis neturi viršyti ekrano pločio. Svarbiausios yra šios: 1.paprastai tai vadinama algoritmavimo stiliumi. komentarais ir pan. Kiekviena konstrukcija (antraštė. 3. konstantų. Kadangi programą tenka daug kartų skaityti žmogui. sakinys. dažniausiai neaišku. vienodai atitraukiamos nuo kairiojo krašto). 4) taiklų programos aprašų ir veiksmų komentavimą. kas pateikiama. Visa kita rašysime . 6. kad būtų kuo vaizdžiau. kokio ilgio sakiniai ir kaip jie telpa į eilutę. kadangi ji nėra atskira. 5. 2) programos skaidymą į dalis. kuriomis išreiškiami logiškai atskiri ar nedaug susiję veiksmai. Kai kur pateikiame šiek tiek skirtingą išdėstymą. procedūros. modulių vardus. tipų. jų tarpusavio suderinamumas. Todėl rašant programos tekstą laikomasi tam tikrų taisyklių. procedūros. Paskalio programose didžiosios ir mažosios raidės traktuojamos vienodai. procedūros funkcijos) turi būti aiškiai išskiriamos: tuščiomis eilutėmis. logiškai susiję priskyrimo sakiniai gali būti rašomi toje pačioje eilutėje. Jūs galite dėstyti ir kitaip. tarpas būtinas po kablelio (prieš kablelį tarpo neturi būti). procedūra. turi būti pastumtos į dešinę per keletą simbolių (vienodai visoje programoje. funkcija) turi būti pradedama rašyti iš naujos eilutės. y. pavyzdžiui. kur palikinėti tarpus. įeinančios į kitas konstrukcijas. svarbu. kur natūraliai susidaro pauzė. Mes didžiąsias raides naudosime programos teksto skaitymui pagerinti: jomis pradėsime stambesnių vienetų . tinkamumas duotam uždaviniui spręsti. 5) vaizdų programos teksto išdėstymą. geriausiai per du arba tris). racionalų algoritmo parinkimą ar sudarymą . Jei kuri nors konstrukcija netelpa vienoje eilutėje (o taip neretai būna). Atskiros algoritmo dalys (sakinių grupės. Perkeltoji eilutė turi būti šiek tiek pastumta į dešinę ankstesnės eilutės atžvilgiu. Vienodo prasminio lygio konstrukcijos (konstantų. funkcijos. Jų pateikimas įvairiose knygose gali šiek tiek skirtis. Toliau išsamiau aptarsime programos teksto išdėstymo pagrindinius principus. jos tekstas turi būti išdėstomas kuo vaizdžiau. Jį iš tikrųjų sunku pateikti vaizdžiai. konstantų. funkcijų) parinkimą.Programavimo kultūra apima: 1) tinkamą. aprašas. Daugelį kitų skyrybos dėstymo būdų pasirenka patys programų autoriai. Turbo Paskalyje tai sudaro 80 simbolių. O jeigu norima daryti savaip. Viso to laikysimės pateikdami programas vadovėlyje. funkcijos). kintamųjų aprašai.

Rita. Tai lietuvių kalbos vartojimas. 4. turėtume stengtis parinkti tokius žodžius vardams žymėti. Kontroliniai pratimai 1. tad juos galima ir būtina rašyti taisyklinga lietuvių kalba. if if a > b t h e n χ := a. X > с t h e n χ := b e l s e χ := с. Bebras. Vengdami rašyti vardus „šveplai". angliškus. pavyzdžiui. išskyrus komentarus. X <= с t h e n χ := с e l s e χ := b. if if a >= b t h e n χ := a. kurių nėra lotynų kalbos abėcėlėje. tačiau kartais suteikia vaizdumo ir padeda įsiminti (juk žmonės ir viesulus ar kitokius gamtos reiškinius pavadina įvairiais vardais). kaip tai įprasta matematikoje: a 1. Kai kuriems uždaviniams labai tinka abstraktūs vardai. 1. 3. kad Turbo Paskalis yra senokas kompiliatorius. Uosis. Duoti kintamųjų a. Ignas. Rašant programas ir atliekant jas Turbo Paskaliu susiduriama su lietuviams kol kas itin opia problema. Galima parinkti ir žmonių vardus. Žinome. Morka. y3. x2. if a <= b t h e n χ := b e l s e i f b <= с t h e n χ := с e l s e χ := b. skirtas DOS operacinei sistemai. pavyzdžiui. kurie neturi lietuviškų raidžių arba. 2. gyvūnų pavadinimus. nors jie toli gražu neatitinka uždavinyje esančios kintamojo ar kito pavadinimo prasmės. . b ir c reikšmių variantai: Variantai Kintamieji a b c Vl V2 V3 V4 V5 V6 V7 V8 10 8 7 8 10 7 7 10 8 8 7 10 7 8 10 10 8 10 8 8 10 8 10 10 Apskaičiuokite χ reikšmę kiekvienam duomenų variantui su šio pratimo 1-8 programų fragmentais. Žinoma. Stengsimės laikytis Turbo Paskalio terpėje priimtų vardų rašymo taisyklių.mažosiomis raidėmis. Todėl programų tekstuose negalima vartoti lietuviškų raidžių. Komentarų transliatorius neskaito. if a > b t h e n χ := a e l s e i f b > с t h e n χ := e l s e χ := b.

W r i t e L n (s:8:2. b:8:2. end.c. Duoti kintamųjų a. b u c reikšmių variantai: Variantai Kintamieji a b с Vl V2 V3 10 5 2 10 3 3 3 3 3 Su kiekvienu duomenų variantu atlikite šio pratimo 1-5 programų fragmentuose pateikiamus veiksmus ir nustatykite. с t h e n χ := c. c:£ :2). a = a + c. 7. a:£3:2. w h i l e a > b do begin s := s + a.5. a <= then if b then else e l s e χ := > с χ := с χ := b a. 2. W r i t e L n (s:8:2.с. w h i l e a < b do begin s := s + a. 8. . a = a . b := b . 1. b t h e n χ := a e l s e χ := b. b : = b + с. a:S3:2. s := 10. 2. 6. с t h e n χ := c. kokios yra reikšmės ir kaip jos turėtų būti spausdinamos. s := 10. end. if a > if X > if a < = if a < if a then if a then else e l s e χ := > с χ := a χ := b с. c:£ :2). if b t h e n χ := a e l s e χ := b. Kokioms pradinėms reikšmėms esant ciklai pratimuose tampa amžinaisiais? Pateikite bent vieną tokį duomenų rinkinį. b:8:2.

3. 1. s := 10. W r i t e L n (s:8:2. kokios reikšmės ir kaip jos turėtų būti spausdinamos.с с := с + 2. с := с + 2. с:5).3.к).c. end. i f a > b t h e n s := s + e l s e s := s . w h i l e s > 0 do begin s := s . b := b + с с := с + 2. W r i t e L n (s:5. b:8:2. b ir c reikšmių variantai: Variantai Kintamieji a b с Vl V2 V3 10 5 2 10 3 3 3 3 3 Su kiekvienu duomenų variantu atlikite šio pratimo 1-5 programų fragmentuose pateikiamus veiksmus ir nustatykite. c:i5:2). c:ii:2). s := 2. w h i l e s < a + b do begin s := s + a. . b := b . 5. a := a .с. s := 10. Kokioms pradinėms reikšmėms esant ciklai pratimuose tampa amžinaisiais? Pateikite bent vieną tokį duomenų rinkinį. a:8:2. w h i l e a > 0 do begin i f a > b t h e n s := s + e l s e s := s a := a . W r i t e L n (s:8:2. Duoti kintamųjų a. b:5. f o r к := c t o b do s := s + a + (b . b:8:2. 4. a := a . s := 10. c:i5:2). end. end. b:8:2. a:8:2. W r i t e L n (s:8:2.c.a.c. a:8:2. а:5.

W r i t e L n (s:5. a:5. end. s := s + а. f o r k := 1 t o b do begin if a > c t h e n s := s + a e l s e i f с < b t h e n S := s . s := 10. c:5). 2. a:5. 3.5 pratimo programą ir ištaisykite joje esančią klaidą . с := с + 1. s := 2.k > s t h e n s := s + k e l s e s := s . įterpkite jį į programą ir išbandykite su įvairiais kontroliniais duomenimis. + l / n 2 . W r i t e L n (s:5. a:5. W r i t e L n (s:5. . f o r k := c t o b do i f b .4 pratimo pateiktą patobulintos programos fragmentą. с := с + 1.2. Atidžiai išnagrinėkite 2. b:5. f o r к := 1 t o b do begin i f к < с t h e n s := s + с. 4. W r i t e L n (s:5. Kaip reikėtų pakeisti 2.kad nebūtų amžinojo ciklo. b:5. c:5). b:5. c:5). 3.к e l s e S := s + с. i f с > b t h e n s := s + b. Išnagrinėkite 2.k. - k. c:5). . b:5.7 pratimo programą. a:5. a:5. if b > c t h e n f o r к := c t o b do s := s + e l s e f o r к := b t o с do s := s W r i t e L n (s:5. Kontrolinės užduotys 1. b:5. end. Išbandykite programą su įvairiais kontroliniais duomenimis. 5. kad ji tiktų skaičiuoti sumą bendresniu atveju: 1 + 1/2 2 + 1/3 2 + . s := 2. c:5). s := 10 + a.

kuriais butų randama duotojo skaičiaus skaitmenų suma ir spausdinamas pranešimas. . koks gaunamas rezultatas. 6.).9 pratimo programą papildykite sakiniais. kad iš klaviatūros įvedame n skaičių ir norime susumuoti tik teigiamus. 5. Sudarykite šitokio uždavinio programą.4.mažai ką tereikės pakeisti. Analogiškai galima sudaryti struktūrogramą klaviatūra įvedamų skaičių sandaugai skaičiuoti (12 pav. pasinaudokite ja . Pateikiame šio uždavinio sprendimo struktūrogramą: Pagal šią struktūrogramą sudarykite programą ir atlikite ją kompiuteriu. Tarkime. Labai dažnai uždaviniuose tenka skaičiuoti sumas. 2. Jei jau esate sudarę sumavimo programą.

Apskaičiuokite sumą: Z = l + 3 + 5 + . kiek dienų turi prekiauti parduotuvė. 15. 12. rudenį vėl c procentų sublogo ir žiemą d procentų pasitaisė.. „Energijos" klube metinis mokestis yra y l litų. kuri apskaičiuotų. Sudarykite programą jo plotui ir perimetrui rasti. Kasininkė г'-ajam žmogui skiria i. Parašykite programą. .v l litų. Teniso klube „Poilsis" metinis mokestis yra y litų. . 11.01. ar sublogo. Skaičiavimus nutraukite. Ką reikėtų pakeisti 2. 13. kai skaičius Z viršys duotą skaičių A. Parduotuvė pirmą dieną pardavė prekių už p litų. S i n ( S i n (χ)). Sudarykite programą tiesinių lygčių sistemai a\x + b\X -. Pagalvokite apie vaizdų rezultatų apipavidalinimą. kad ji tiktų didesniems sveikiesiems skaičiams skaičiuoti (naudojant l o n g i n t tipą)? Parenkite kontrolinių duomenų rinkinį šiai programai išbandyti. Sudarykite programą tiesinei lygčiai ax = b išspręsti. 16. 17. Skaičiavimus baikite. kol jos vienos dienos parduotų prekių suma taps didesnė už skaičių M (p > M). Ji prekiavo kasdien vis sėkmingiau ir parduodavo prekių kiekvieną sekančią dieną už 3% daugiau negu ankstesnę. 10. .v litų. 8. jeigu kiekvienais Naujaisiais metais jo svoris padidėjo n procentų? . Prie kasos langelio stovi n žmonių. 9. jei žadama žaisti c valandų per savaitę. Koks Kindziulio svoris bus vienuoliktų Naujųjų metų išvakarėse. per vasarą pasitaisė b procentų. Sudarykite programą. Duotam skaičiui χ apskaičiuokite skaičių seką Sin (x). kuri nustatytų pigesnį klubą.9 pratimo pabaigoje. Sudarykite programą bikvadratinei lygčiai ax4 + bx2 + c = 0 išspręsti. 14. kai rastasis narys tampa moduliu mažesnis už 0. Vaizdžiai apiforminkite pradinius duomenis ir rezultatus.7. laiko. kuri apskaičiuotų kiekvieno kliento kliento sugaištą laiką šioje įstaigoje. Parašykite programą. Pradiniai duomenys įvedami iš klaviatūros.0 Ū2X + bix = 0 išspręsti. ar pasitaisė Kindziulis per metus. Duotos trikampio trijų viršūnių koordinatės. Sudarykite programą. 18. kuri apskaičiuotų.. S i n ( S i n ( S i n (χ))). o vietos mokestis už valandą . o vietos mokestis už vieną valandą . Sudarykite programą duoto spindulio skritulio plotui ir to paties spindulio rutulio tūriui rasti. Petro Kindziulio svoris P kilogramų per metus kito taip: pavasarį Kindziulis a procentais sublogo.

jis pasigyrė dviem draugams. Vos spėjęs grįžti namo. kuri apskaičiuotų: a) kiek žiedų ežere buvo po n dienų. Mergaitė nori pasisiūti prijuostę. Kiek metrų juostelės prireiks visos klasės mergaičių prijuostėms apsiūti (a. Prekyba sekėsi. po kiek porcijų ledų jiems būtina parduoti per savaitę. tačiau kiekvieną kitą savaitę parduodavo po p procentų procijų daugiau. Rimas su Rita pradėjo prekiauti ledais. kol pasiekė maksimalų skaičių m. a cm b cm 13 pav. kad atsipirktų išlaidos. Ežere pražydo viena vandens lelija. Ir taip kas 30 minučių kiekvienas išgirdęs naujieną perpasakodavo viską dviem dar nieko nežinantiems. kuri apskaičiuotų. kiek metrų juostelės prireiks. „Šerkšnas" jiems gali teikti ne daugiau kaip m porcijų per savaitę. Parašykite algoritmą. Parašykite programą. kuri apskaičiuotų. Iš programavimo uždavinyno rekomenduojame išspręsti 1-ojo skyriaus „Pagrindiniai valdymo sakiniai" pratimus ir uždavinius. Koks bus metinis pelnas (gal nuostolis)? 20. Parašykite programą. kiek žmonių sužinojo naujieną po y valandų. Ši žinia pasklido labai greitai. Parašyti programą. Pateiktų uždavinių programas papildykite rezultatų apipavidalinimo veiksmais. Rimas ir Rita perka ledus iš UAB „Šerkšnas" po a Lt už porciją ir parduoda po b Lt. 21.19. jeigu visame ežere gali tilpti m žiedų? 22. Vasaros atostogų metu Linas dirbo paštininku. kurių kiekvienas po 30 minučių pasakė žinią dviem kitiems draugams. 23. Dar po 30 minučių kiekvienas iš šių keturių persakė žinią dar dviem kitiems draugams. b ir c kiekvienai prijuostei skirtingi). Už pirmą atlyginimą jis nusipirko dviratį. . Jie išsinuomojo kioską už Y litų per savaitę. Pirmąją savaitę jie pardavė tik ml porcijų. Kad medžiaga nebrigztų. kurios iškarpa parodyta žemiau brėžinyje (skylė viduryje skirta galvai iškišti). kuris nustatytų. Kiekvieną dieną žiedų skaičius patrigubėdavo. reikia vidinius ir išorinius prijuostės kraštus apsiūti juostele. b) kelintą dieną žiedai užklojo pusę ežero.

Pastarasis ypač vertingas. b : i n t e g e r . atimtis.Pro debesų bangas mėnulio rudas diskas Iš lėto atplaukia. o realiojo tipo kintamiesiems . mokate atlikti veiksmus su jais.0 . Ir skraido sidabre pilki nakties drugiai. Jos žymimos d i v . pavyzdžiui: 5. word.0 0.1.1 0 . Skaičiai Turbo Paskalyje vartojami dviejų rūšių skaičiai .realiojo tipo kintamaisiais. kai norime . Sveikojo tipo kintamiesiems žymėti Paskalyje vartojamas žodis i n t e g e r . daugyba. neturintis trupmeninės dalies. Pirmosios dvi atliekamos tik su sveikaisiais skaičiais: operaciją d i v vartojame.2 5. Tai loginiai bei simboliniai duomenys. r : real.5 20.sveikieji ir realieji. Jūs žinote sveikuosius ir realiuosius skaičius. Su skaičiais atliekamos įprastos aritmetinės operacijos: sudėtis. pavyzdžiui. b y t e .duomenų tipų. nes jis leidžia aprašyti didesnius sveikuosius skaičius negu i n t e g e r tipo. o įgyjantys realiųjų skaičių reikšmes . Henrikas Radauskas 3. dalyba bei palyginimas. 0 1E5 Kintamieji. mod ir /. i : integer. Turbo Paskalyje yra ir kitokių sveikųjų bei realiųjų tipų. įgyjantys sveikųjų skaičių reikšmes.5 10 13 Visi kiti skaičiai laikomi realiaisiais. Sveikasis skaičius tai skaičius. 3. tiksliau . pavyzdžiui: O .r e a l .3 0. ir ima keistis viskas: Sidabro upėmis sužybčioja rugiai. vadinami sveikojo tipo kintamaisiais. Pagrindiniai duomenų tipai Programos atlieka veiksmus su įvairių rūšių duomenimis. Jie bus reikalingi vėliau uždavinių programoms sudaryti. Siame skyriuje trumpai aprašysime dar keletą kitų Paskalio kalboje vartojamų paprastųjų duomenų. Dalybos operacijos yra net trijų rūšių. l o n g i n t . Pateikiame sveikojo ir realiojo tipo aprašų pavyzdžių: v a r a.

y2) . jei ekranas padalijamas į skirtingų spalvų sritis. jis yra tokios pat spalvos. B 3.gauti dalmenį. y l ) yra kairiojo viršutinio kampo. kurio kairiojo viršutinio kampo koordinatės (1. 25). operaciją mod . Todėl nelabai prasminga lyginti realiojo tipo kintamųjų reikšmes (vartojant lygybės operaciją). Paskutinis sukurtas langas laikomas aktyviu. netgi tuomet. Langui nubrėžti vartojama procedūra: Window ( x l . jos rezultatas visuomet bus realusis skaičius. jeigu a ir b yra realiojo tipo kintamieji. Priskyrimo sakinio rezultatas visuomet bus realiojo tipo. 1). ε = 0. y. 80. procedūra GoToXY (x.(yl . t. tai rezultatas visuomet bus realiojo tipo. y) joje nurodytas koordinates laiko aktyviojo lango koordinatėmis. t. y. turime nuspalvinti kitokia spalva negu aplinkiniai langai.y2) 2 Lygiašoniu trikampiu laikysime tokį. y l ) ir (x2. lyginama duotuoju tikslumu. Jei koordinatės bus nurodytos už ekrano ribų. Aktyviojo lango viduje koordinatės skaičiuojamos lango kairiojo viršutinio kampo atžvilgiu. pavyzdžiui. čia ε . x2.dešiniojo apatinio kampo. tai jie laikomi lygiais tuomet. Įstrižu brūkšniu žymime realiųjų skaičių dalybą. kai abu operandai sveikieji skaičiai ir dalijasi be liekanos. { Braižo langą ekrane } Čia koordinatės (xl. kiek iš tų trikampių yra lygiašonių (lygiakraščiai taip pat laikomi lygiašoniais). y l . kurio bet kurios dvi kraštinės lygios nurodytu tikslumu. Jei bent vienas iš operandų yra realiojo tipo. aktyviuoju langu tampa visas ekranas. kad kompiuterio ekranas yra stačiakampis langas. . 1) atžvilgiu. jeigu jie vienas nuo kito skiriasi nedaug. Paprastai du realiojo tipo skaičiai laikomi lygiais. Pavyzdžiui.001). Jei aritmetinių operacijų abu operandai yra sveikojo tipo. tuomet langu taps visas kompiuterio ekranas. Jei vienas iš palyginimo operacijos operandų yra realiojo tipo. Primename. kaip ir visas ekranas. 25). jei priskyrimo ženklo kairėje pusėje yra realiojo tipo kintamasis. y).kai norime gauti dalybos liekaną. tai kitas keičiamas realiuoju. Jei norime pamatyti jį. kitaip sakant. Žinomos jų viršūnių koordinatės (χ. Realieji skaičiai kompiuteryje įsimenami tam tikru tikslumu. žmogaus bendravimą su kompiuteriu. o dešiniojo apatinio kampo (80. kai |a — b| < ε. y2 : b y t e ) . Jos visuomet nurodomos ekrano taško (1. t. jame bus atliekami visi tolesni veiksmai. y. Užrašius Window (1. Pavyzdžiui. padaliję 4/2 gausime 2. Procedūra perkelia žymeklį į naujai sukurto lango kairįjį viršutinį kampą.nurodytas tikslumas (pvz. o (x2. Ką tik sukurtas langas ekrane nematomas. t. Programa gali turiningiau bendrauti su žmogumi. Reikia rasti.. Šiek tiek panagrinėkime pradinių duomenų įvedimą bei rezultatų pateikimą. y2) koordinačių plokštumoje skaičiavimo formulę: Atstumas = y/{x 1 .x2)2 . Kraštinių ilgiams rasti pritaikykime atstumo tarp dviejų taškų (jc 1. Tai pagrindinis langas. tuomet ir rezultatas bus sveikojo tipo (išskyrus realiųjų skaičių dalybą /). 1. Programos pradiniai duomenys ir rezultatai bus rašomi šiame lange. y.1 pratimas. kuriame galima nubraižyti daug kitų langų (net persidengiančių). Plokštumoje nubraižyta n trikampių.0 (o ne 2). Tam skaičiuojamas absoliutus skaičių skirtumas ir gauta reikšmė palyginama su nurodytu tikslumu.

ReadLn (xl). Write ('хЗ ReadLn (уЗ).хЗ) + S q r (у2 W r i t e L n ( ' K r a š t i n ė s : ' . f o r i := 1 t o n do begin ClrScr. Jei norime tęsti. { Rezultatų lango parengimas Window (4. a. ReadLn end. b. а:7:2. turime paspausti Enter end. { Trikampio kraštinės } n. c o n s t Tikslumas = 0. 40. T e x t C o l o r (Black). ReadLn { Veiksmai stabdomi. Write ('y2 ReadLn (хЗ).c ) <= T i k s l u m a s ) o r ( c .b ) <= T i k s l u m a s ) begin WriteLn ('Trikampis l y g i a š o n i s ' ) .b ) <= T i k s l u m a s ) o r ( a . k i e k := k i e k + 1. ReadLn (n).уЗ)) . uses Crt. y2. y l . Write ('x2 ReadLn (у2). i:3. Write ( ' x l ReadLn (yl). ' . Ь:7:2. W r i t e L n ( ' T r i k a m p i o N r .хЗ) + S q r ( y l с := S q r t (Sqr (х2 . { Lygiašonių trikampių skaičius i : integer. begin T e x t B a c k g r o u n d (Black).уЗ)) с:7:2). if (Abs (Abs (Abs then . T e x t B a c k g r o u n d (Green). C l r S c r . . Write ('yl ReadLn (х2). x3. 5. { Veiksmai k i e k := 0. { Trikampių skaičius } kiek.х2) + S q r ( y l b := S q r t (Sqr ( x l . c : r e a l . x2. koordinatės:'). y3. { Trikampio koordinatės } v a r x l . end e l s e WriteLn ('Trikampis n e l y g i a š o n i s ' ) . W r i t e ( ' T r i k a m p i ų s k a i č i u s : ').1.у2)) . Write ('уЗ а := S q r t (Sqr ( x l .program P3_l. C l r S c r . ( a . 20).

p r o g r a m P3_2. W r i t e ( ' Į v e s k i t e p i r m o j o a u t o m o b i l i o g r e i t į : '). kml := t l * v l . y. ReadLn (vl). Automobiliai visą kelią važiuoja pastoviu greičiu. { P a v i j o := F a l s e . kml.1. vis tiek bus pranešama: „Trikampis nelygiašonis".2 pratimas. ReadLn (v2). Atstumas tarp miestų yra km kilometrų. Visus šiuos trūkumus jūs galite pašalinti ir ištaisyti programą. kai pavyta } begin ClrScr.Kontrolinių duomenų pavyzdys Testo n numeris Trikampio viršūnių koordinatės xl Rezultatas yi x2 У2 хЗ уз 1 1 0 0 1 1 2 2 Lygiašonis 2 3 0 0 2 0 1 2 1 2 4 2 3 4 2 4 8 3 5 8 Nelygiašonis Lygiašonis Nelygiašonis 3 • 1 0 2 2 4 4 6 Lygiašonis Deja. { Pirmasis nuvažiavo dar vieną km } t 2 := kml / v l . Antrasis išvažiavo viena valanda vėliau v2 km/val. W r i t e ( ' A t s t u m a s V i l n i u s . uses Crt. ReadLn (km). { Antrasis važiavo t2 valandų } . v2.nerodomas galutinis rezultatas. { Atstumas tarp miestų } p a v i j o : boolean. Be to. Kitaip galime gauti kuriozišką pranešimą. tuomet programa turi pranešti. var t l . ši programa ne visiškai užbaigta . θ 3. y. ir išspausdinti. Ar antrasis automobilis pasivys pirmąjį? Jeigu pasivys. { Antrojo automobilio duomenys } km : r e a l . pavyzdžiui. Iš Vilniaus į Klaipėdą išvažiavo du automobiliai. duotas tik vienas taškas. kelintame kilometre tai įvyko. t l := 1. { Pirmojo automobilio duomenys } t 2 . t. { True. greičiu. ir nurodyti. programa turi pranešti. kad nepavijo. kiek antrajam automobiliui dar liko kilometrų iki Klaipėdos. W r i t e ( ' Į v e s k i t e a n t r o j o a u t o m o b i l i o g r e i t į : '). Pirmojo automobilio greitis v l km/val. bendras lygiašonių trikampių skaičius. kai visų viršūnių koordinatės lygios. t. v l . t 2 := 0.K l a i p ė d a : '). Jei nepavys. šiam uždaviniui pradinius duomenis reikia parinkti labai kruopščiai. km2. } { Pirmasis automobilis išvažiavo 1 valanda anksčiau } { Pirmojo automobilio duomenys antrajam išvažiuojant } { Antrojo automobilio duomenys } w h i l e (kml < km) a n d n o t P a v i j o do begin kml := kml + 1. kad pavijo. Skaičiavimus reikia atlikti kilometrų tikslumu. kad iš tikrųjų būtų pateiktos trikampio viršūnių koordinatės. km2 := 0.

2. o raidę a numeriu 97). 3. 5. end. km2:6:2. Pavyzdžiui: 25 + 10 = 35 Papildykite programą. nuvažiavo kml atstumą } { Ar antrasis nuvažiavo daugiau? } { 1 if Pavijo t h e n W r i t e L n ( ' P a v i j o .1 pratimo programą taip. Valdymo klavišai taip pat atitinka tam tikrus kompiuteryje vartojamus simbolius. Simboliai Kompiuterio klaviatūroje yra daug klavišų. Sudarykite programą. Visi simboliai aprašomi kodavimo lentelėmis (žr. Simbolius lentelėje atitinka jų eilės numeris. ' ) e l s e WriteLn ( ' N e p a v i j o .km2 := t 2 * v2.rastų lygiašonių trikampių skaičiui . { Antrasis per tl vai. 2. 3. Liko 150 kilometrų. 6-tą priedą). k a i b u v o n u v a ž i u o t a ' . Pateiktoje 3. Tekstui rinkti naudojami klavišai atitinka tekste vartojamus simbolius. išskleistą sudėties eilute. p a v i j o := kml <= km2. kad būtų atskirai spausdinama. Aprėpkite visus galimus atvejus: kai pasivejama. ' k i l o m e t r ų . L i k o ' . Kontrolinių duomenų pavyzdys Testo numeris 1 2 Atstumas (km) I greitis vl II greitis vl Rezultatas 250 250 25 50 50 25 Pavijo. Parinkite kitas spalvas 3.1 pratimo programoje lygiakraščiai trikampiai priskiriami prie lygiašonių. Papildykite 3. kad tai būtų daroma su visomis aritmetinėmis operacijomis. Automobilių vijimosi programą papildykite taip. 4. . Kontrolinės užduotys 1. kad rezultatui . Simbolį galima nurodyti jo numeriu arba jo vaizdu (pavyzdžiui.2 pratimas) išbandykite su įvairiais kontroliniais duomenimis. kiek rasta lygiašonių ir kiek lygiakraščių trikampių.spausdinti būtų sukurtas naujas langas ekrane. ' ) . Automobilių vijimosi programą (3. kai buvo nuvažiuota 50 kilometrų. Kiekvienas jų turi savo paskirtį. kuri paprašytų surinkti du natūraliuosius skaičius ir išspausdintų jų sumą. raidę A galima nurodyti numeriu 65. (km-km2):6:2. kai nepasivejama ir kai abu automobiliai atvyksta kartu. Programą papildykite taip. Nepavijo. ReadLn.1 pratimo programos pranešimams rašyti. ' k i l o m e t r ų . 6. kad rezultatų pranešimas būtų spausdinamas atskirame lange.

W r i t e ( ' Į v e s k i t e s i m b o l į : T e x t C o l o r (Red). '). uses Crt. kuri kompiuterio darbą stabdo nurodytu milisekundžių skaičiumi.. C l r S c r . K i e k = 200. kurios rezultatas yra argumentu nurodyto numerio simbolis: X := C h r (65). Programa turi išspausdinti šį simbolį ekrane. Pavyzdžiui. kaip ir kitus kintamuosius. Tikslesnę informaciją ir daugiau galimybių sužinosite pasiskaitę Paskalio kalbos žinyną. kurių tipas nurodomas žodžiu c h a r . Lyginimo operacijose simbolių kodai palyginami pagal kodavimo lentelę. Simboliai rašomi tarp apostrofų. s. c o n s t G r e i t i s = 100. kurios argumentas yra sveikasis skaičius. . a 3. galima naudoti priskyrimo sakiniuose. ne didesnis už argumento reikšmę. Juos. Kintamojo reikšmę galima nurodyti ir simbolio numeriu: χ := # 6 5 arba naudojant standartinę funkciją C h r . Čia kintamasis n r turi būti sveikojo tipo. kurio numeris didesnis. Atsitiktinis skaičius generuojamas funkcija Random. Simbolinio tipo reikšmes galima įvesti klaviatūra bei išvesti ekrane. Norėdami stebėti darbą. simbolis bus tas.skaičius. { Pauzė milisekundėmis } { { { { { begin T e x t B a c k g r o u n d (Black). pavyzdžiui. ReadLn (sim). y : i n t e g e r . Sudarysime programą šitokiam žaidimui. Klaviatūra įvedamas bet koks simbolis. p r o g r a m P3_3. sp. atlikus sakinį if Ά' > 'a' then Didesnis . vadinami simboliniais. o rezultatas . { Simbolių skaičius } Duotas simbolis } Skaitiklis } Spalva } Vieta ekrane } { Valomas ekranas } Simbolio įvedimas T e x t C o l o r (Green).Galima aprašyti kintamuosius. rezultatas bus F a l s e .3 pratimas.. kurie įgytų simbolines reikšmes.. turime „pristabdyti" kompiutero darbą. var χ : char. Naudojamas atsitiktinių skaičių generatorius Randomize. v a r sim : char. Kompiuteris veiksmus atlieka labai greitai. χ := Ά'. nes raidės Ά ' numeris yra mažesnis. Tam galima panaudoti procedūrą: Delay (milisek : word). n r := Ord ( Ά ' ) . χ. pvz. Kintamieji. Simbolio numerį galima sužinoti panaudojus standartinę funkciją Ord. pateikdama jį atsitiktinėse vietose atsitiktine spalva.

Kintamieji. pavyzdžiui: χ := True. Tuomet galėsite pateikti ne vieną simbolį. 25). klaviatūra surinkę žodį.3 pratimas). Loginiams kintamiesiems galioja lyginimo ir loginės operacijos (or. pavyzdžiui. Pabandykite su kitais žodžiais. Tai galima padaryti šitaip papildžius programą: . Žymeklio perkėlimas } T e x t C o l o r (sp). and.-Simbolis rašomas spalvotai ekrane T e x t B a c k g r o u n d (Black). 2.4pratimas. Jiems galima priskirti logines reikšmes. Loginės reikšmės Palyginimo ir loginių operacijų rezultatas yra loginė reikšmė T r u e (tiesa) arba F a l s e (netiesa. T e x t C o l o r (Red). Ankstesnio skyrelio 3. vadinami loginiais kintamaisiais: var χ : boolean. kurių tipas nurodomas žodžiu b o o l e a n . ReadLn.3. Keiskite pauzės trukmę. 3. { Atsitiktinių skaičių generatorius f o r s := 1 t o K i e k do begin χ := Random (80). y) у := Random (2 5). Generuojama spalva } GoToXY (χ. simbolių skaičių ekrane. { for } GoToXY (60. у). S 3. { Valomas ekranas } Randomize. Kontrolinės užduotys 1. Išbandykite žaidimo programą (3. Atlikite programą. jeigu jos darbo pabaigą galėtų nurodyti vartotojas. W r i t e ( ' S p a u s k i t e ENTER'). Kompiuterio darbo pauzė } end. parinkdami įvairius simbolius. Išvedamas simbolis } Delay (Greitis). χ := ( a > b) a n d (a > с).3 pratimo programa būtų praktiškesnė. Pakeiskite kintamojo tipą c h a r eilutės tipu s t r i n g . Generuojama žymeklio vieta (x. Simbolio rašymo spalva } W r i t e (sim). s p := Random (15). n o t ) . r a s a . bet visą žodį.T r u e ir F a l s e . Procedūra W r i t e išspausdina loginių kintamųjų reikšmes: žodžius T r u e ar F a l s e . C l r S c r . melas). Loginiams duomenims vaizduoti vartojamos dvi loginės reikšmės .

Arbūzų svorius įvesime klaviatūra.programa papildoma nauju ciklu. w h i l e t a i p do begin { Veiksmai iš 3. S 3. Pavyzdžiui. į kitą . kiek arbūzų yra kiekvienoje krūvoje. Kontrolinės užduotys 1. 25). Žinoma.3 pratimo programą nauju vardu.5 pratimas. end. koks jų bendras svoris ir kokia kiekvienos krūvos piniginė vertė litais. Grupavimo operacijos rezultatai naudojami toliau apdorojant duomenis. Išbandykite.3 pratimo } GoToXY (1.. Write ('Ar k a r t o s i t e (t/n)?').visus kitus. Kol kas to dar nemokame daryti. Tuomet kintamasis t a i p įgys reikšmę True. 2. todėl pamėginsime tik sugrupuoti duomenis. kuri suskaičiuotų. . Visais kitais atvejais (paspaudus bet kurią raidę ar kitą simbolį) kintamojo t a i p reikšmė bus F a l s e . Įvedimo pabaigą žymėsime nuliu arba neigiamu skaičiumi (tokio arbūzo svorio negali būti). Arba mokiniai suskirstomi į pogrupius pagal tai. t a i p := UpCase (sim) = ' T ' . Reikia parašyti programą. programą su įvairiais kontroliniais duomenimis. Tai galite padaryti ir Turbo Paskalio terpėje meniu komanda F i l e —> Save a s . kaip parodyta 13 paveiksle. Perkopijuokite 3.4. Rezultatus pateiksime taip. o visų kitų . kad sugrupuotus duomenis būtina išsaugoti. Taigi visuose uždaviniuose turi būti žinomi požymiai.k2 Lt/kg. Išbandykite 3. Papildykite 3. tuomet naujai nurodomi simboliai bus išvedami ankstesniųjų fone. Duomenų grupavimas Dažnai iš pateiktų duomenų tenka atsirinkti tinkamus arba suskirstyti juos pagal nurodytus požymius į grupes. Juos ir vadinsime atrankos požymiais. Jeigu ekrano valymo veiksmus iškelsite prieš šiame skyrelyje pateiktą naują ciklą. Reikia juos surūšiuoti į dvi kategorijas: į vieną krūvą sudėti lengvesnius kaip a l kg. gaubiančiu programoje buvusius veiksmus: t a i p := T r u e . sudarant krepšinio rinktinę.aprašomi papildomi kintamieji: v a r t a i p : b o o l e a n . Nuimtas arbūzų derlius. Tai reiškia. Todėl vartotojas gali atsakyti spausdamas arba mažąją raidę t . 3. iš kandidatų sąrašo atrenkami įvykdę nustatytus minimalius reikalavimus. . arba didžiąją T. Standartinė funkcija UpCase mažąsias raides pakeičia didžiosiomis. pagal kuriuos atrenkami duomenys arba jie gali būti skirstomi į grupes. kad lengvesniųjų kaina yra k l Lt/kg.3 pratimo programą šiame skyrelyje aprašytais sakiniais. { while } ReadLn (sim). kurią užsienio kalbą mokosi ir pan.

Ay2). Sx2. S y l = 25. Žemiau esančiuose dviejuose languose bus grupuojami arbūzų svoriai. Ax2 = 30.Pirmoji krūva Kaina: Svoris: Suma: Antroji krūva Kaina: Svoris: Suma: Įveskite arbūzų svorius: 13 pav. { Paruošiami langai Window (Kx 1. T e x t B a c k g r o u n d (Fonas2). { Arbūzo svoris } Kl. Kyl = 2. v a r Ax. { Svorių įvedimo langas S x l = 5. Galima vienoje eilutėje rašyti kelių arbūzų svorius. Ay : i n t e g e r . Sy2). suma. C l r S c r . { Sunkesniųjų ir lengvesniųjų arbūzų kaina } Al : real. T e x t B a c k g r o u n d (Fonas). Fonas2 = Blue. Fonasl = Green. Ax2. C l r S c r . ClrScr. c o n s t { Pirmoji krūva } { Krūvos aprašo langas Kxl = 5. program P3_5. { Arbūzų svorių langas Axl = 5. Sx2 = 75. T e x t B a c k g r o u n d ( F o n a s l ) . Ayl = 7. { Arbūzų svorių rašymo vieta lange } s v o r i s . Ayl. Apatinis langas skirtas arbūzų svoriams įvesti. Ay2 = 23. S y l . Ky2 = 5. Arbūzų rūšiavimo programos rezultatų lango eskizas Du viršutiniai langai skirti informacijai apie arbūzų krūvas. Kx2. Paliekame patiems papildyti programą. Kx2 = 30. uses Crt. TextColor (Black). K2. Kyi. { Arbūzų krūvos svoris ir piniginė vertė } sv. C l r S c r . Sy2 = 25. Čia pateikiama programa atlieka reikiamus skaičiavimus tik su pirmosios krūvos duomenimis. Tuomet skaičiai turi būti atskirti bent vienu tarpo simboliu. Fonas = White. Window (Axl. } } } } . Window ( S x l . { Atrankos požymis } begin TextBackground (Black). Ky2).

ReadLn (kl). Ayl. (Fonasl). Read (sv). W r i t e ( ' K a i n a : Į TextBackground ' . 3). Ky2). W r i t e ( ' S v o r i s : '. end. Ay). Ay2). Sx2. S y l . W r i t e ( ' P r a s t ų a r b ū z ų k a i n a (Lt)= '). end. Ay := Ay + 1. Papildomai ekrane parodykite atrankos požymio reikšmę. { Ax := Wherex. ( : Įvedamas kito arbūzo svoris } Window ( S x l . Window (Kx 1. Kontrolinės užduotys 1. Sy2). Kx2. W r i t e (sv:6:3). T e x t B a e k g r o u n d ( F o n a s l ) . Ax2. suma:6:2). Grupavimas s v o r i s := 0. svoris:6:2). 2. T e x t B a e k g r o u n d (Fonas). { Žymeklio vieta arbūzų svorių lange } Window ( S x l . Kyl 1 Kx2. kl:6:2). ReadLn. ReadLn (k2). end.2). } suma := 0. suma := suma + s v * k l . Sy2). } Nustatoma vieta kitam svoriui spausdinti } i f Ax + 6 > Ax2 then begin Ax := 1. Ay := WhereY. . { Duomenys apie pirmąją krūvą } Window (Kx 1. { Svoris spausdinamas krūvos lange } Window (Axl. { Pirmojo arbūzo svorio įvedimas } Write ('Arbūzo svoris = '). Ay := 1. { Įsimenamas žymeklis. GoToXY (2. T e x t B a e k g r o u n d (Fonas2). W r i t e ( ' A r b ū z o s v o r i s = '). S y l . Sx2. ReadLn ( a l ) . Ax := 1. Ky2). 4).{ Duomenys } W r i t e ( ' A r b ū z ų a t r a n k o s p o ž y m i s : s v o r i s (kg) = '). { while sv > O do Veiksmai { Kol yra arbūzų } } begin i f sv < a l then { Ar tinka pirmajai krūvai? } begin s v o r i s := s v o r i s + sv. Kyi. GoToXY (2. W r i t e ('Suma: ' . GoToXY (2. Papildykite programą. W r i t e ( ' G e r ų a r b ū z ų k a i n a (Lt) = '). Read (sv). GoToXY (Ax. T e x t B a c k g r o u n d (Fonas). kad ji apskaičiuotų antrosios arbūzų krūvos rezultatus ir atvaizduotų juos ekrane.

3.l o n g i n t ) . Reikia sudaryti programą sunkiausiam arbūzui nustatyti. Jei randama didesnė.). Ypač tuomet. kai ta reikšmė turi būti apskaičiuojama (pavyzdžiui. kad ši yra didžiausia (kai ieškoma didžiausios reikšmės): d := χ . Po to paeiliui skaitomos kitos reikšmės ir lyginamos su d. tokią. Įvedant pirmąją reikšmę. kai sraute pradžioje gali būti daug neigiamų skaičių). ieškant mažiausio teigiamo skaičiaus. kintamojo d reikšmė pakeičiama kita. svorio . jei sveikasis tipas .5. Pateikiame šitokių uždavinių sprendimo struktūrogramas (14 pav. Tokiu atveju galima pradine didžiausia reikšme laikyti pakankamai mažą reikšmę.kg. kuri tikrai būtų mažesnė už visas galimas reikšmes. kad butų spausdinami matavimo vienetai: pinigų . reikia pradine reikšme imti pakankamai didelį skaičių. . tarp kurių ieškoma didžiausios. Taip patikrinus visą įvedamą duomenų srautą. kurių svoriai žinomi. Aprašomi kintamieji įvedamai (χ) ir didžiausiai (d) reikšmėms.6 pratimas. Cikle analizuojamos visos reikšmės. p r o g r a m P3_6. const Greitis = 1000. geriausia jį laikyti lygiu standartinei Paskalio konstantai m a x i n t (arba m a x l o n g i n t . Pradžia: Minimumas Pradžia: Maksimumas d realieji skaičiai X/ d realieji skaičiai {vesti χ reikšmę Įvesti χ reikšmę d := χ d := χ kol χ o 0 kol χ o ^ ^ ^ ^ χ > d Taip d ^ ^ := χ Ne Taip d Įvesti χ reikšmę 0 χ < d ^ ^ ^ ^ Ne := χ Įvesti χ reikšmę Išvesti didžiausią reikšmę d Išvesti mažiausią reikšmę d Pabaiga Pabaiga 14 pav.3. kintamojo d reikšmė bus didžiausia įvesta reikšmė. Programą papildykite taip. Turguje ant prekystalio guli n arbūzų. daroma prielaida.Lt. B 3. didesniąją: i f χ > d t h e n d := x. uses Crt. Didžiausios ir mažiausios reikšmės paieškos algoritmų struktūrogramos Ne visuomet patogu pirmąją reikšmę laikyti pradine didžiausia (arba mažiausia) reikšme. Populiariausias jų sprendimo būdas yra toks. Ieškant mažiausios reikšmės. Didžiausios (mažiausios) reikšmės paieška Tai tradiciniai programavimo uždaviniai.

1. begin T e x t B a c k g r o u n d (Black). real. '). { Arbūzų skaičius } Arbūzo svoris } Arbūzo numeris } Sunkiausio arbūzo svoris } Sunkiausio arbūzo numeris ClrScr. { Visasekranas ClrScr. 1). 11). d := 0. T e x t C o l o r (Green). 2). T e x t C o l o r (Magenta). T e x t B a c k g r o u n d (White). 80. T e x t B a c k g r o u n d (Blue). d:6:2). ' . end. . T e x t C o l o r (Black). 6). 45. W r i t e ( ' S u n k i a u s i a s a r b ū z a s N r . Delay (Greitis). integer. Write ('Kiek yra arbūzų? TextColor (Red). GoToXY (10. 3. f o r i := 1 t o n do begin W r i t e ( ' Į v e s k i t e ' . 50. Read (n). 2). Dn := i. 9. Sunkiausio arbūzo paieška Window (8. integer. GoToXY (10. 5). 3.n SV i D Dn { { { { { integer. Dn:4). T e x t C o l o r (Green). 20). 35. 3). real. T e x t B a e k g r o u n d (Brown). TextColor (Green). ClrScr. NoSound. GoToXY (3. Kompiuteris groja i := 100. Rezultatai Window (40. i := i + 10. 70. end. Window (10. Dn := 0. GoToXY (5. { Valomas ekranas } Kiek arbūzų? Window (8. i:3. ClrScr. { while } D e l a y ( G r e i t i s ) . GoToXY (1. If sv > D then begin D := sv. ' . 19). 25). W r i t e ( ' J o s v o r i s : ' . w h i l e i < 150 do begin Sound ( i + 50).o j o a r b ū z o s v o r į : ReadLn (sv). end. Window (1. 7. W r i t e l n ('Arbūzų s v o r i ų įvedimas'). T e x t B a c k g r o u n d (Blue). '). { for } ClrScr.

a+c. a:3. a + b > c). Parašykite. 3. W r i t e ( ' S p a u s k i t e ENTER'). end. i f T t h e n T := T a n d (a > c) e l s e T := a < c. T := n o t (a < b). S2 : c h a r . a. i f T t h e n W r i t e ( S i . S2. 1. 4. i f a < b t h e n T := F a l s e . S i . b:4. S2. ReadLn. T : boolean. 5. T := T r u e . T a n d (a > c) t h e n W r i t e ( S i . b+c). T := ( S i < S2) a n d (a > b). S2. T e x t C o l o r (Red). 25). 2. S2. b. jeigu atliksite nurodytus veiksmus šių programų fragmentuose. T t h e n W r i t e ( S i . S i . Pradinių duomenų rinkiniai: Kintamieji Variantai 51 S2 a b c Vl V2 V3 V4 R K a b T F 14 5 8 7 10 5 14 3 20 3 2 3 C d Pratimuose kintamieji aprašyti taip: v a r S i . if S l > S2 t h e n T := T r u e if e l s e T := F a l s e . ką ir kaip matysite kompiuterio ekrane. a. i f a > с t h e n T := n o t T. a+b+c). Sl:3). a+b. S i . W r i t e (T. b) e l s e W r i t e ( S i . c : i n t e g e r . b) e l s e W r i t e (S2. a+b. if if a > b t h e n T := T r u e e l s e T := F a l s e .GoToXY (60. W r i t e (T.c ) e l s e W r i t e ( S i . . Kontroliniai pratimai 1. S i . c). a. a .

Read (S2. S2. Parašykite. c. i f T t h e n W r i t e L n (Si) e l s e W r i t e L n (S2). a). ' = ' . R e a d (b. 2. > b t h e n T := T r u e . b). S2 : c h a r . .2. c). T := T r u e . T : boolean. c:4). A := 13. ką ir kaip matysite kompiuterio ekrane. Read if b Read if a if T 3. b := b + 2. c : i n t e g e r .2. w h i l e T a n d (a > b) do begin a := a . c). a) e l s e W r i t e (S2. Pradinių duomenų rinkiniai tokie: Variantai Klaviatūra renkama eilutė Vl V2 V3 V4 ab ba aa AZ 14 3 10 14 3 14 10 8 2 5 3 13 5 2 5 5 6 4 16 5 Pratimuose kintamieji aprašyti taip: v a r S i . i f a > c t h e n T := T r u e e l s e T := F a l s e . c). a). b. ' = ' . jeigu atliksite nurodytus veiksmus šių programų fragmentuose. S i . then Write ('a > b') e l s e W r i t e (S2. S2. T := F a l s e . ' = ' . ' < ' . 1. b. i f T a n d (a > c) t h e n W r i t e ( S i . b. W r i t e (a. i f a < с t h e n T := F a l s e end. ReadLn ( S i . > a t h e n W r i t e (S2. W r i t e L n ( ' c = ' . (b. Si). a+b+c). c). (a). a. R e a d ( S i .

5 2 5 5 6 4 16 5 . b. c:4) e l s e W r i t e L n (Sl:2. w h i l e (T a n d (a > b)) o r ( n o t T a n d (a > c)) do begin a := a . R e a d ( S i . i f ( S i < S2) a n d (b d i v 2 > b mod 2) t h e n T := T r u e e l s e T := F a l s e . a). 3.4. i f T t h e n W r i t e L n ( ' C = ' . с. S2. Si). S i . b+c. a+b. Pradinių duomenų rinkiniai tokie: Variantai Klaviatūra renkama eilutė Vl V2 V3 V4 ab ba aa AZ 14 3 10 14 3 14 10 8 2 5 3 13 Pratimuose kintamieji aprašyti taip: v a r S i . T := T a n d (c > b). W r i t e L n (S2. b. a.2. W r i t e (a. i f T t h e n W r i t e ( S i . S2. b. b. b). Si). c).b). b). T := (a > b) a n d (a > c). c : i n t e g e r . c) e l s e W r i t e (S2. R e a d (a. ReadLn ( S i . a. a. с := с + 2. ' + ' . c. S2. b := b + 1. S2). 1. Parašykite. b. if T t h e n W r i t e ( S i . S2:2). ' - ' . c. ' = ' . end. R e a d ( S i . jeigu atliksite nurodytus veiksmus šių programų fragmentuose. T : boolean. 5. S2. W r i t e L n ( S i . b). 2 * a . ' = \ a) e l s e W r i t e (S2. i f S l > S2 t h e n T := T r u e e l s e T := F a l s e . S2 : c h a r . ką ir kaip matysite kompiuterio ekrane.

' . c). c). b. a > b) e l s e W r i t e (S2 > Si). ' a > b ' . T := S l > S2. Read T := Read T := if T ( S i . W r i t e (T. c). b+c. W r i t e (a. i f T t h e n W r i t e (T. W r i t e L n ( S i . a. W r i t e (T. W r i t e L n (S2. ( S i < S2) a n d (b d i v 2 > b mod 2).2. T := F a l s e . T := a > с. w h i l e (T a n d (a > b)) o r ( n o t T a n d (a > c)) do begin a := a . R e a d (a). (b. c) e l s e W r i t e (S2. b). T := a > b. R e a d (b. S i . n o t T a n d (a+b < c). S2. w h i l e T a n d (a > b) do begin a := a . b. a. R e a d (b. . b). b := b + 2. t h e n W r i t e ( S i .b). c). a+b. R e a d ( S i .' . A := 13. S i ) . 4. S i ) . n o t T). S2. b. S i .2. I f T t h e n W r i t e L n (T. S2.2. R e a d (S2. a). 3. R e a d (S2. S i . a). c. S2. с). W r i t e (a > b. end. W r i t e L n ( S i + S2. S2) e l s e W r i t e L n (T. c). a. b := b + 1. ' + ' . 2 * a . с := с + 2. a. end. 5. T := T r u e . Si). a+b+c).

S2 := 0. S2:5). S l := 0. y. S2:5). b). c. xg. hx. hx. χ := χ + hx. xp. begin ReadLn (xp. x l . hx. χ := χ + hx. begin ReadLn ( x l . . hx. S l : 5 . 2. w h i l e χ <= x2 do begin у := Abs (χ) . S2 : i n t e g e r . WriteLn ( ' S l = ' . x2. end. W r i t e L n ( ' S l = ' . v a r x. S i . w h i l e χ <= x g do begin у := χ mod 3. S l := 2. d). end. Parašykite. Pradinių duomenų rinkiniai tokie: Variantai Klaviatūra renkama eilutė Vl V2 V3 V4 -10 7 3 3 1. i f χ < с t h e n S l := S l + у e l s e i f χ <= d t h e n S2 := S2 + У e l s e S l := S l + у . end. jeigu atliksite nurodytus veiksmus šių programų fragmentuose. a. ' S2 = ' . d. v a r χ. ' S2 = ' . b. ką ir kaip matysite kompiuterio ekrane. end. c. S i . S2 := 0. xg. i f χ >= a then if χ <= b t h e n S l := S l + у e l s e S2 := S2 + у e l s e S2 := S2 + y. S2 : i n t e g e r . a.4. x2.1 . χ := x l . χ := xp. S l : 5 . 10 12 12 12 4 5 2 3 -3 18 3 1 1 4 3 6 4 7 6 7 7 3 5 8 8 9 8 4 4 9 4 8 p r o g r a m Kdl. y. p r o g r a m Kd2.

v). integer. p r o g r a m Kd3. S2 : begin ReadLn ( x l . begin ReadLn (xa. y. x l .= χ + hx. a. y. u. Sudarykite ir patikrinkite didžiausios reikšmės radimo iš klaviatūra įvedamų duomenų programą pagal 14 paveiksle pateiktą struktūrogramą. WriteLn ( ' S l end. = ' . S2 : i n t e g e r . . 4. S2:5). S l := 1. xb. S l := 0. S l : 5 . x2. Kontrolinės užduotys 1. w h i l e χ <= x b do begin у := χ d i v 3. χ . S l : 5 . S2:5). xb. 2. v a r χ . χ . u. χ := x a . hx. v a r χ. i f (x >= u) a n d (x <= v) t h e n S l := S l + у e l s e S2 := S2 + y. v. S i .3. kad ji ieškotų mažiausios reikšmės. i f χ > a t h e n S l := S l + if e l s e S2 := S2 + y. χ := χ + hx. a). hx. end. w h i l e χ <= x2 do begin у := χ d i v 3. hx. end. ' S2 = ' . W r i t e L n ( ' S l = ' . S i . x2. S2 := 0. ' S2 = ' . χ := x l . xa.у < 10 t h e n S2 := S2 + y. i f χ + у > 10 t h e n S l := S l + y. hx. Pertvarkykite didžiausios reikšmės nustatymo programą taip. p r o g r a m Kd4. S2 := 1. end.

Gyveno kartą išradingas žmogus. 4.. yra K laipsnių. kurio koordinatės ( x t . yc). Sapno pradžioje Petriukas bėgo labai greitai ir persekiotojus paliko labai toli: liūtai atsiliko L km.D2 gramų duonos. yra turimo apskritimo viduje. Stačiakampė dėžė. kad jį vejasi 5 tigrai. Ūkininkas nukasė bulves ir supylė jas į B maišų. 7. kurių koordinatės (xt. kurių vidaus aukštis. Platforma gaminama iš 4 cm storio lentų. 2. Reikia nustatyti. o ilgis L m. . Jis nutarė viename savo buto kambarių įsirengti garažą. Koordinačių plokštumoje yra taškas. kurio koordinatės (x. 30 min. kaimui). 8 liūtai ir 9 mokytojai. ar visas kamuolys tikrai telpa dėžėje. y). Vaikai iki 5 metų amžiaus kasdien suvalgo Dl gramų duonos. kiek kokio amžiaus gyventojų yra? 8. ar taškas. 13. Reikia nustatyti. jeigu vyšnios skersmuo R mm ir vanduo neturi išbėgti? A. kiek kartų teks ūkininkui važiuoti į lauką norint parvežti visą derlių. Įvažiavimui reikia pagaminti ir sumontuoti nuožulnią platformą. jeigu vežime telpa ne daugiau kaip N maišų. y t ) žinomos. keliose iš dėžių telpa tas kamuolys. plotis ir ilgis žinomi. Apskritimo centras taške (xc. jeigu jį laikrodis pažadins po 8 vai. Petriukas sapnuoja. Vėliau Petriukas taip pavargo. kiek taškų.T km. Vienos lentos plotis P cm. Bandymai vykdomi sustatant mašinas vieną prie kitos be tarpo. vyresni (iki 10 metų) . Tilto ilgis L metrų. Kiek jiems reikia pasigaminti stulpelių tvorai. iki pusės pripilta vandens. Petriukas spalio 12 d. Koordinačių plokštumoje nubrėžtas apskritimas. 14 min. kad nebegalėjo bėgti greičiau kaip 1 km/val. 6. o stulpeliai turi būti kasami kas N metrų? 9.Mg km/val. greičiu. Krepšinio kamuolio skersmuo D. Kiek reikia pirkti lentų platformai pagaminti. B ir C reikšmės ne mažesnės kaip 50 cm. jeigu garažo durų plotis yra 3 m? 12. 9 vai. Buto grindų aukštis nuo šaligatvio yra B m. vyresni kaip 10 metų ir suaugę iki 75 metų vidutiniškai suvalgo po D3 gramų duonos kasdien. jeigu jos ilgis bus L metrų. Apskritimo centras yra taške (xc. Dar vyresni tenkinasi D4 gramų duonos per dieną. Pastatyto naujo tilto keliamoji galia T tonų. yra turimo apskritimo viduje. o mokytojai . yc). Kiek galima į dėžę priberti vyšnių (kaip žinome. kurį platforma sudaro su šaligatviu. liūtai . Snigti pradėjo sausio 25 d. Kiek reikia duonos kasdien jūsų miestui (miesteliui. plotis ir ilgis žinomi dydžiai. y t ) . kurio spindulys R. kurios vidaus aukštis. 5. Reikia nustatyti. greičiu. Reikia nustatyti. Du kaimynai nutarė pasidalyti salą ežere pusiau. Turime dėžę. nusipirko slides ir ėmė laukti sniego. 11 vai. Reikia rasti. Ar tilto maksimali apkrova neviršys keliamosios galios? Trumpiausios mašinos ilgis r t metrų ir svoris s t tonų. tigrai . 10. Kampas. kurios pagrindas yra A χ B. Koordinačių plokštumoje nubrėžtas spindulio R apskritimas.Savarankiško darbo užduotys 1. Kas Petriuką pavys. jeigu žinote. jos skęsta). Kiek minučių Petriukas laukė sniego? 11. 3. o mokytojai M km. kai jis pradėjo bėgti lėtai? Tigrai vijosi Tg km/val. o kas ne. nuo to momento. Turime daug dėžių. Reikia nustatyti taško padėtį: koordinačių plokštumos ketvirtį arba koordinačių ašį (jei taškas yra joje). Krepšinio kamuolio skersmuo D. o aukštis C. Yra dvi eismo juostos. greičiu. Ilgiausia mašina yra r l metrų ilgio ir sveria s l tonų.Lg km/val.

ir skanumo požymis 1. Katino šeima vakarienei nutarė pasigauti žuvelių. Ar tilto maksimali apkrova neviršys keliamosios galios? Trumpiausios mašinos ilgis Rt metrų ir sveria St tonų.14. kiek katinas parnešė žuvelių į namus ir koks jų bendras svoris. 16. vyresni kaip 10 metų ir suaugę iki 75 metų vidutiniškai suvalgo po D3 gramų duonos kasdien. kiek buvo tinkamų žuvelių. Žinome. kai neskani. Kiek galima į kiekvieną dėžę priberti vyšnių (kaip žinome. kurios didelės ir skanios. Ilgiausia mašina yra Rl metrų ir svoris Sl tonų. reiškiantis svorį. kai skani. Ima tik tas. ir . B ir C reikšmės ne mažesnės kaip 50 cm. bet neskanių? Papildykite sudarytą programą šiais skaičiavimais. Tilto ilgis L metrų. 15. jeigu vežime telpa ne daugiau kaip N maišų. Kiek duonos suvalgoma kasdien didžiuosiuose Lietuvos miestuose? Duomenys apie kiekvieną iš jų atskirai žinomi. Duomenys įvedami klaviatūra apie kiekvieną žuvelę atskirai: surenkamas skaičius. Duomenų įvedimo pabaiga nurodoma surinkus du nulius. Sudarykite programą. jeigu vyšnios skersmuo R mm ir vanduo neturi išbėgti? A. Koks derlius bus supiltas? 17. Yra dvi eismo juostos. Daug ūkininkų nukasė bulves ir supylė į maišus. vyresni (iki 10 metų) . kiek kartų teks važiuoti į laukus norint parvežti visą derlių kiekvienam ūkininkui atskirai. Turi būti išspausdinta. . Bandymai vykdomi sustatant mašinas vieną prie kitos be tarpo. koks jų bendras svoris. Reikia rasti.1 . kuri analizuotų N tiltų galią. Įdomu. 18. Kiekvienos dėžės pagrindas A χ B ir aukštis C žinomi. Dar vyresni tenkinasi D4 gramų duonos per dieną. jeigu vežėjas vienas ir per dieną jis pajėgia nuvažiuoti į laukus ne daugiau kaip K k a r t ų . bet ne visas žuveles deda į krepšį. kuri suskaičiuotų. Meškerioja senis katinas. Visos dėžės iki pusės pripiltos vandens. Parašykite programą. kiek kuris ūkininkas turi maišų su bulvėmis. Per kiek dienų bus suvežtas derlius. Turime N skirtingų stačiakampių dėžių. jeigu apie kiekvieną sugautą žuvelę turime tokius duomenis: svoris ir skani arba neskani. jos skęsta). Vaikai iki 5 metų kasdien suvalgo Dl gramų duonos. Pastatyto naujo tilto keliamoji galia T tonų. kiek žuvelių parnešė katinas.D2 gramų duonos.

galinčios turėti savus pradinius duomenis.perduodamos kintamųjų reikšmės ir vardai. 2) funkcijų vardais . kad programoje aiškiai matytųsi tų dalių ribos ir būtų nurodyti jų ryšiai. 3) išoriniais (globaliaisiais) vardais. ir daug kartų atlikti jų veiksmus.perduodamos tik rezultatų reikšmės. Visos programoje vartojamos procedūros ir funkcijos (išskyrus standartines) turi būti aprašytos. apibūdindami galime išmokti daugiau kaip ir žiurkės išmoksta šis procesas lėtas ir valdydami mokymosi ir analizuodami savo elgesį. Vienoje programoje gali būti daug procedūrų ir funkcijų. jos įvardijamos ir įforminamos savitais būdais. Procedūros yra bendresnis atvejis negu funkcijos.1. 4. Informacija tarp procedūrų. Seimūras Papertas „Minčių audros" 4. kurioje reikia atlikti procedūros ar funkcijos veiksmus. Sąmoningai procesą. Atskiros programos dalys. Pirmiausia aptarsime. Procedūros ir funkcijos Dažnai uždavinį lengviau programuoti išskaidžius jį į dalis.p r o c e d u r e . kaip aprašyti procedūras. Pirmasis antraštės žodis .). Priėjus programos vietą. nurodomi kintamųjų vardais (15 pav. vadinasi. . Kuo savarankiškesnės dalys ir kuo mažiau tarp jų ryšių. pakanka parašyti kreipinį į tą procedūrą ar funkciją. Pageidautina. rasti kelią labirinte. Jose vartojami duomenys ir veiksmai aprašomi atskirai. Į vieną kartą aprašytą procedūrą ar funkciją galima kreiptis daug kartų.Žmonės sugeba išmokti. Procedūros veiksmai nurodomi visiškai taip pat. Po jo rašomas procedūros pavadinimas (vardas). tuo lengviau sudaryti ir nagrinėti programą. vadinamos procedūromis ir funkcijomis. funkcijų ir pagrindinės programos dalies gali būti persiunčiama šiais būdais: 1) parametrais . Bet primityvus. o tada skliaustuose išvardijami pradiniai ir galutiniai duomenys. Procedūros ir parametrų sąvokos Procedūra pradedama antrašte. kaip ir rašant programą. ir greičiau.

Po procedūros antraštės toliau viskas rašoma taip pat. b : integer. Procedūros aprašo sintaksė Procedūros antraštėje esančius kintamųjų vardus priimta vadinti formaliaisiais parametrais. tipų aprašai.rezultatui grąžinti (realusis skaičius). Procedūros Vidurkis antraštėje pirmieji du parametrai skirti pradiniams duomenims (du realieji skaičiai). konstantas. kaip ir programoje: gali būti konstantų. Procedūros veiksmų pradžia žymima. ir rezultatus). y : real.begin. vardas ir po jo skliaustuose išvardyti parametrai. 4) procedure Rezultatas (var numeris : integer). Pirmasis parametras kreipinyje atitinka pirmąjį parametrą procedūros antraštėje.tipo vardas. var vid : real). Procedūros aprašą kompiuteris įsimena. tiesiog spausdinami.pagrindiniai procedūros veiksmai. t. kuris paprastai vadinamas tiesiog kreipiniu. Kreipinį sudaro procedūros. kintamųjų vardų. kaip ir visi programos kintamieji: po parametro vardo (ar vardų. ir pagaliau .end. kiek jų yra procedūros antraštėje. Procedūrų antraščių pavyzdžiai: 1) procedure Vidurkis (x.užrašomas kreipimosi sakinys. o po jo. у : char). prieš tipo pavadinimą rašomas dvitaškis.antrąjį procedūros antraštėje esantį parametrą ir 1. taip pat . po jo . trečiasis parametras .kitos procedūros bei funkcijos. Tie objektai galioja tik toje procedūroje ir vadinami vidiniais. kurie vadinami faktiniais. Antroji procedūra turi keturis sveikojo tipo parametrus: du pradiniams duomenims perduoti ir du rezultatams grąžinti. kaip įprasta . y. Taigi procedūros aprašas analogiškas visos programos aprašui: jis gali turėti savo aprašytus objektus (kintamuosius. Atkreipkite dėmesį į skyrybą. jei yra keletas vienodo tipo parametrų) rašomas dvitaškis. bet jame užrašytų veiksmų neatlieka. kai į ją kreipiamasi . max :• integer). kuriuo grąžinamas rezultatas (toliau sužinosite. Procedūra atliekama tada. Kreipinyje parametrų turi būti tiek. jos rezultatai. To paties tipo kintamųjų vardai skiriami kableliais. tiksliau . kad šitokiu parametru galima perduoti ir pradinius duomenis. 2) procedure Minmax (a. 3) procedure Argumentai (χ. matyt. kreipinyje esantys parametrai susiejami su antraštės parametrais ir taip jais persiuntinėjama informacija tarp . Tarp šių žodžių surašomi procedūros veiksmus reiškiantys sakiniai. var min. . nurodytas jo tipas.15 pav. į kurią kreipiamasi.atliekant kreipinį į tą procedūrą. procedūras. Ketvirtoji procedūra turi tik vieną parametrą. Procedūros antraštės gale visuomet dedamas kabliataškis.kabliataškis. pabaiga . jei dar yra kitų parametrų. antrasis parametras kreipinyje .1. Taigi atliekant procedūrą. Parametrai aprašomi taip. Kiekvienas antraštėje esantis parametras turi būti aprašytas. Trečioji procedūra turi parametrus tik pradiniams duomenims perduoti. funkcijas).

q : r e a l ) . Pradinių duomenų perdavimas Procedūrai būtinas ryšys su programa . max : integer).) pavaizduota parametrams skirta vieta kompiuterio atmintyje. Tarkime. b : integer.1 ir 2. z. 4. turime procedūrą. b. kuri. Tarp žemiau pateiktų procedūrų antraščių viena neteisinga.2. d) p r o c e d u r e D (a. Transliatorius. Nurodykite. kodėl neteisinga. ir paaiškinkite. jos parametrams paskiria vietą kompiuterio atmintinėje. y : r e a l . y. { Kreipinys } 16 pav. v a r c.reikia mokėti perduoti procedūrai pradinius duomenis. v a r χ : i n t e g e r ) . max) . c) p r o c e d u r e C. xx : r e a l . kurios antraštė tokia: p r o c e d u r e Lapas (x. 2. d : i n t e g e r ) . Kontrolinės užduotys 1. e) p r o c e d u r e E ( v a r a : r e a l . Procedūros L a p a s parametrams skirta vieta . m i n . a. d : r e a l ) . { Programos dalis } Minmax (x. a) p r o c e d u r e A (χ : i n t e g e r . Stačiakampiais langeliais (17 pav. Iš „Programavimo pradmenų" uždavinyno rekomenduojame išspręsti 2. kaip jie parašyti kreipinyje ir antraštėje (16 pav. 17 pav. Kreipinyje esantys parametrai siejami su antraštės parametrais iš eilės. y . χ : i n t e g e r ) .p r o c e d u r e Minmax (a. Jų skaičius turi būti vienodas. Kreipinio ir procedūros antraštės parametrų atitikimas programos ir procedūros. b : i n t e g e r .).2 pratimus. v a r min. perskaitęs procedūros antraštę. b) p r o c e d u r e B (x.

kuri atsitiktinai ekrane rašydavo spalvotus simbolius (3. jos parametrams priskiriamos kreipinyje nurodytos reikšmės. kai tik paspausite kurį nors klavišą. } . Procedūra turės vieną parametrą .4 . begin Randomize. ReadLn. Kiek ( ' * ' ) . reikės paspausti E n t e r klavišą. z. a := 3. s p : i n t e g e r . Pagrindinė programa atliks valdymo veiksmus: kreipsis į procedūrą su skirtingais simboliais. v a r χ. kad atlikus kreipinį.1 pratimas. jei kreipsimės: L a p a s (1. W r i t e (sim). s p := Random (15). y := 12. repeat χ := Random (80). Procedūra baigs darbą. k reikšmė liks lygi 11. Pavyzdžiui. K i e k (#2). d := 5. у). D e l a y (500). 5).šį simbolį. Dabar pabandysime ją pertvarkyti. k d i v z). kuri atliktų tuos veiksmus. 1 2 . Taigi kreipinyje galima rašyti kintamojo vardą ar reiškinį . b.Kreipiantis į šią procedūrą. } { p r o c e d u r e K i e k (sim : c h a r ) . end. K i e k (#1). b := . B 4. Įsidėmėkite. o z . begin { Programos veiksmai Į ClrScr. Nutraukus procedūros darbą. Lapas (k + z.lygi 22. kreipinyje įrašytų kintamųjų reikšmės nepakinta. T e x t C o l o r (sp). d bus suteiktos reikšmės tokia tvarka. { Žymeklio koordinatės у := Random (24).3 pratimas). Anksčiau sudarėme programą. program P4_l. { Spalva } GoToXY (χ. pavyzdžiui. y . kad langeliuose atsiras tų skaičių reikšmės.būtų ją įgijęs anksčiau.svarbu tik. kad būtų atlikta ReadLn procedūra ir pašalinta anksčiau paspausto klavišo reikšmė. bet ir reiškinius ar kintamųjų reikšmes. kaip surašyta. Tai tarsi b ū t u m e atlikę priskyrimo sakinius: χ := 1. Vaizduojamame paveiksle tai reikštų.4 . t. u n t i l KeyPressed. . uses Crt. y. galima rašyti: k := 1 1 . z := 2 2 . Perduoti galima ne tik konstantas. y. k. k - z. Parašysime procedūrą. kad šis kintamasis arba reiškinys turėtų reikšmę . 3. dar prieš kreipiantis. a . tuomet parametrams x.

Generuojant lango koordinates.b). (#6). u n t i l KeyPressed. Procedūra turi generuoti atsitiktinę stačiakampio vietą ekrane (kairiojo viršutinio kampo koordinates) ir spalvą. begin Randomize. B 4. yl. kad jos neišeitų už ekrano ribų. K i e k (5. x2.) p r o g r a m P4_2. Ji nedaug kuo skirsis nuo ankstesnio pratimo. kuris reiškia garsą. end. { } p r o c e d u r e L a n g a s ( x l . begin L a n g a s (1. y2. x l + a. Priešingu atveju galima gauti kitokį. Stačiakampiams dėlioti ekrane sudarysime procedūrą Kiek.a).2 pratimas. { Langas spalvinamas } end. (#4). (#176). 2). begin window ( x l . ClrScr. y l . 80. y2). Nerašykite simbolių.stačiakampio kairiojo viršutinio ir dešiniojo apatinio kampo koordinatės bei fono spalva. L a n g a s (1. (#177). 1. B l a c k ) . 25. { } p r o c e d u r e K i e k (a. nuspalvinti atsitiktinai parinkta spalva. sp : i n t e g e r . B l a c k ) . (Galite pabandyti. Pavyzdžiui. s p := Random (15). . b : i n t e g e r ) . vaizdą. Jos parametrai . 25. y l . s p a l v a : i n t e g e r ) . ReadLn.stačiakampio plotis ir aukštis (matuojama simbolių skaičiumi). sp). kurie neturi grafinio vaizdo. L a n g a s ( x l .eilutės pabaigos žymės. Pastaba. (#5). y l := Random (24 . uses Crt.klavišo Esc kodo. x2. arba 10-ojo . y l + b. 27-ojo . y l . Tik jos parametrai du . D e l a y (500). var xl.Kiek Kiek Kiek Kiek Kiek Kiek end. Vienam stačiakampiui nupiešti sudaroma procedūra Langas. 7-ojo. { Piešiamas langas } TextBackground (spalva). 80. (#3). 1. Ekrane turi būti atsitiktine tvarka dėliojami stačiakampiai. repeat x l := Random (80 . negu planavome. reikia stengtis.

). kad ji nurodytą simbolį užrašytų lango centre. kurios skirtos kreipinyje esantiems kintamiesiems (18 pav. Tam tereikia duomenų tipą c h a r pakeisti tipu s t r i n g . Tuomet bus gražiau .). kurie reikš rezultatus. procedure real. kad procedūra pakeistų pagrindinės programos kintamųjų reikšmes.neliks senųjų simbolių. a. kuri jį parašytų sukurtame lange (procedūra Langas).užrašykite daugiau kreipinių su kitokiais simboliais. y : r e a l ) a b[ EH 18 pav. 2. 4. vieta atmintinėje neskiriama. kad ji stačiakampyje parašytų nurodytą simbolį. 6. ReadLn. Sakoma. P r o g r a m PP. b : •·· P (15. Papildykite procedūrą Kiek ekrano valymu ( C l r S c r ) .2 pratimas) taip. kai pageidaujama. 4. 5. Išbandykite 4. Pamėginkite tai padaryti duotuose pratimuose. Tokie parametrai naudingi tada.1 pratimo programą . kad grąžinamas veiksmų rezultatas (18 a pav. (i : i n t e g e r . . Ekrane rašomą simbolį pakeiskite savo ar draugo vardu (arba kitokiu žodžiu). Pakeiskite 4. 2).reikšmių parametKintamųjų parametrai pakeičiami kreipinyje nurodytais pagrindinės programos kintamaisiais.3. Kontrolinės užduotys 1. var a. O kaip sužinoti rezultatus? Tai paprasta: prieš tuos kintamuosius. Simbolis turėtų būti perduodamas procedūrai Kiek. Jais įvardijamos tos atmintinės vietos. turintiems žodelį v a r . b). Pakeiskite procedūrą Kiek (4. o ankstesniame skyrelyje nagrinėti pradinių duomenų perdavimo parametrai . Pakeiskite 4. kitą iš procedūros. _var χ . end.2 pratimo programą taip.K i e k (2. Procedūros antraštėje esantiems parametrams.2 pratimo programoje vartojamą ekrano fono spalvą. Dažnai šie rezultatus perduodantys parametrai vadinami kintamųjų parametrais. 3. Rezultatų grąžinimas Jau mokame perduoti procedūrai pradinius duomenis. Procedūros rezultatų perdavimas Taigi rezultatams skirtos vietos turi dvigubus vardus: vieną gauna iš programos. tereikia parašyti žodelį v a r .

y2. b : integer. y). Žmonės turi pavardes. Kintamojo tipo parametrų perdavimas Pavyzdžiui: procedure R a s a (x. x2. p r o g r a m P4_3. c. 2). Reikia sudaryti programą šiam skaičiui pakelti kvadratu. { Langas spalvinamas end. begin L a n g a s (10.rezultatui ir trečią . 60. 10.parametrų pavardę atitinka procedūros arba funkcijos vardas. { Piešiamas langas } TextBackground (spalva). kaip kad daugelio žmonių vardai sutampa. 2*3*x. ReadLn (sk). ClrScr. 40. 3. Klaviatūra įvedamas skaičius. 5. t). x. T e x t C o l o r (Magenta). end. kad tris skirtingus veiksmus atliktume skirtinguose ekrano languose. begin L a n g a s (10. } { { { p r o c e d u r e L a n g a s ( x l . Iš ankstesnės programos atkeliama lango piešimo procedūra.apklausai. y2). Kiekvienam iš tų veiksmų padaroma procedūra. b. x2. } } } . Skaičiaus įvedimo procedūra I m t i grąžina įvestą kintamojo reikšmę. r . 2). y l . { Kreipinys } 18 a pav. kitą .3 pratimas. Kėlimas kvadratu p r o c e d u r e K v a d r a t a s (sk : i n t e g e r ) . / var c. Skaičiaus įvedimas p r o c e d u r e Imti (var sk : integer). Ji reikalinga tam. T e x t C o l o r (Red). 5 . Galima atidaryti vieną langą skaičiui įvesti. Green). y l . ar jis dar nori dirbti su kitais skaičiais. Pagrindinė programa valdo visus veiksmus. GoToXY (5. Antraštėje esančių parametrų ir kreipinio parametrų vardai gali sutapti. . GoToXY (5. p. uses Crt. ar dar tęsti darbą. s p a l v a : i n t e g e r ) . 15. S 4. Programoje galima išskirti tris dalis: skaičiaus įvedimą. d : integer).procedure Kintamieji (a. y : r e a l . skaičiaus kėlimą kvadratu ir vartotojo apklausą. W r i t e ( ' Į v e s k i t e s k a i č i ų : '). Blue). v a r a . Kreipinio pavyzdys: R a s a ( 1 5 . d : i n t e g e r ) { Programos dalis ) K i n t a m i e j i (χ. begin Window ( x l . todėl vartojame rezultatų parametrą (su žodžiu v a r ) .

Todėl ir toliau taip darysime. 20. Tuomet šitokiu kintamuoju perduodame pradinę reikšmę ir.{ T e x t C o l o r (Black). GoToXY (5. begin T e x t B a c k g r o u n d (Black). 6). ką ir kaip matysite kompiuterio ekrane. 50. kad šioje programoje kintamuosius aprašėme ne programos pradžioje. Duomenims perduoti procedūrai. ClrScr. kaip ir rezultatams gauti. begin L a n g a s (10. W r i t e ( ' Į v e d a m a s s k a i č i u s : ' . end. o prieš pat programos veiksmus. kaip iki šiol darydavome. Kai programoje esama procedūrų. W r i t e ('ENTER'). kur jie naudojami. end. gali būti vartojami kintamojo tipo parametrai. W r i t e ( ' J o k v a d r a t a s : ' . Tai leistina. i } } v a r sim : char. GoToXY (5. w h i l e s i m = ' T ' do begin I m t i (sk). s i m := ' T ' . Atkreipkite dėmesį. Klausiama. . kai programos kintamojo reikšmė turės būti pakeista procedūroje. Blue). T e x t C o l o r (Red). Pradinių duomenų eilutė surenkama klaviatūra (pabaigoje paspaudžiamas klavišas E n t e r ) . sk). 3).rezultatą. Be to. T e x t C o l o r (Brown). ReadLn. s i m := UpCase (sim). išvengiama programos kintamųjų panaudojimo tiesiogiai procedūrose. N o r i u (sim). taip daryti patogiau: kintamųjų vardų aprašai būna arčiau tos dalies. sk : i n t e g e r . end. ar dar norima dirbti p r o c e d u r e N o r i u ( v a r Sim : c h a r ) . T e x t C o l o r (Black). GoToXY (40. Taip reikės daryti tais atvejais. gauname pakeistą reikšmę . K v a d r a t a s (sk). atlikę procedūrą. S q r (sk)). Read (sim). 2). Kontroliniai pratimai Parašykite. T e x t C o l o r (Red). Write ('Ar dar d i r b s i t e ? Atsakymas: T/N'). jeigu atliksite nurodytus veiksmus duotose programose. 17. bet nerekomenduojama.

ReadLn. R a s a (a : i n t e g e r . ReadLn. v a r var с : integer. с : i n t e g e r . у:5. c. b:5. v a r b : i n t e g e r ) .5) c:5) c:5) . у:5. (x:5. у:5. с:5) W r i t e L n (х:5. R a s a (c. c. b.5. с). W r i t e L n (a:5. b := 2 * c + a. R a s a (с. end. с). х). c : i n t e g e r . y:5. begin ReadLn (x. y). x). p r o c e d u r e R a s a (а : i n t e g e r . integer. begin b integer). y:5. R a s a (у. y. c). end. c). ( procedure var c : begin с := a + b := 2 * c end. y:5.Variantas Duomenų eilutė Vl V2 3 -2 8 2 4 V3 V4 V5 10 program 4 б -2 2 4 5 0 3 2 Prl. v a r χ . с:5) R a s a (х. (x:5. у). y:5. begin ReadLn (χ. с:5) W r i t e L n (х:5. с := a + b. (x:5. W r i t e L n (х:5. у. у. R a s a (у. R a s a (x.5) c. у:5. WriteLn WriteLn WriteLn WriteLn (x:5. у. + a. с:5) program Pr2. end. W r i t e L n (х:5. v a r χ. ' * ').

c:5. у. R a s a (c + x. p r o c e d u r e R a s a (a. end. begin while a begin b := a := end. с:5) R a s a (у. c). W r i t e L n (х:5. (' W r i t e (a:5). у.p r o g r a m РгЗ. program { W r i t e L n (х:5. end. W r i t e L n (х:5. c:5) . y:5. c). W r i t e L n (x:5. y. с:5) R a s a (с. b : i n t e g e r . у. begin ReadLn (x. ReadLn. с := a + b. с:5) Pr4. c : i n t e g e r . y:5. с). ( v a r χ . b:5. W r i t e L n (a:5. с:5) R a s a (х. v a r с : i n t e g e r ) . х). WriteLn end. { v a r χ . p r o c e d u r e R a s a (a : i n t e g e r . у. ' * '). <> O do a mod 10. у:5. у:5. * '). у). 4. с : i n t e g e r . у:5. с. a := (с + b) * 2. у:5. c:5) W r i t e L n (x:5. y:5. c:5) W r i t e L n (x:5. end. c). ReadLn. χ. R a s a (x + у. c:5) W r i t e L n (x:5. с). begin i f a > b t h e n с := a e l s e с := b. y:5. y). a d i v 10. R a s a (у. v a r b : i n t e g e r ) . begin ReadLn (χ. W r i t e L n (х:5.

kuriuo funkcijos vardui priskiriama reikšmė. kokie turi būti pradiniai duomenys. Į funkciją kreipiamasi jos vardu nurodant pradinių duomenų parametrus. kaip ir procedūrose. pavyzdžiui. . n : i n t e g e r ) : r e a l . Round (χ). Funkcija pradedama antrašte. . Sqrt (x). kurie turi atitikti antraštėje esančius parametrus taip pat. gali aprašyti pats vartotojas.). Kaip pastebėjote. kad ji nurodytų vartotojui. 2. jeigu pradiniai duomenys bus teisingai parinkti.3 pratimo programa duos teisingus rezultatus. Papildykite programą komentarais. Jos iš esmės panašios į procedūras. Funkcijos aprašo sintaksė Funkcijos darbo rezultatas grąžinamas funkcijos vardu. uses Crt.4. β 4.ten. kur turi būti panaudota funkcijos reikšmė. po kurios gali būti nurodomi aprašai (konstantų.tiesiog priskiriamas kuriam nors kintamajam). 4. { Skaičiaus χ kėlimas laipsniu n } var i : integer. tik gali turėti vieną rezultatą ir jis priskiriamas funkcijos vardui. Papildykite 4. Funkcijos pagrindiniai veiksmai rašomi taip pat. kad iš pradinio duomens būtų ištraukiama kvadratinė šaknis ir gautas rezultatas būtų spausdinamas kitoje eilutėje negu skaičiaus kvadratas.3 pratimo programą taip. 19 pav. kaip ir procedūras. y : real. Rezultatas turi būti tik viena reikšmė. Funkcijas.Kontrolinės užduotys 1. Abs (x). išreikšti vienu sudėtiniu sakiniu (19 pav. kintamųjų. Pateikta 4. kaip procedūros. Kreipinys į funkciją rašomas priskyrimo sakinyje arba reiškinyje. Sin (x). tipų) ir funkcijos veiksmai. Parašysime programą apskaičiuoti reiškiniui: Z = (A5 + A~ 3 )/2 * AM Čia kėlimą laipsniu atliks funkcija L a i p s n i s . p r o g r a m P4_4. jų gautas rezultatas panaudojamas vietoj kreipinio reiškiniuose (atskiru atveju . Funkcijos sąvoka Jau vartojome Turbo Paskalio bibliotekose esančias standartines funkcijas. { _} f u n c t i o n L a i p s n i s (x : r e a l .4pratimas. Yra tik vienas papildomas reikalavimas: būtinai turi būti bent vienas priskyrimo sakinys.

A.begin У := i . Z := L a i p s n i s (A. 3). kurį perrašius atbulai vėl gaunamas pirminis skaičius. f o r i := 1 t o n do у := у * χ. } B 4. Superpirminiu skaičiumi vadinamas toks pirminis skaičius. ar duotas skaičius pirminis f u n c t i o n P i r m i n i s (sk : i n t e g e r ) : b o o l e a n . 1000] rasti. Z. Pavyzdžiui.5 pratimas. M). W r i t e L n ( ' R e i š k i n i o r e i k š m ė = ' . Z := Z + L a i p s n i s ( l / A . Apgalvodami šios programos sprendimą nesunkiai suvoksime. uses Crt. begin d a l i k l i a i := 0. M). A. } + 1. begin ClrScr. if M = O t h e n R := 1 else if M > О t h e n R := L a i p s n i s (A. i : integer. end. vadinasi. W r i t e ( ' Į v e s k i t e s k a i č i a u s A r e i k š m ę b e i l a i p s n į M '). . L a i p s n i s := у. end. Sudarysime programą superpirminiams skaičiams intervale [2. 5). M) e l s e R := L a i p s n i s ( l / A . f o r i := 2 t o s k d i v 2 do i f s k mod i = 0 t h e n d a l i k l i a i := d a l i k l i a i i f d a l i k l i a i = 0 t h e n P i r m i n i s := T r u e e l s e P i r m i n i s := F a l s e . M). superpirminis skaičius yra 13. ReadLn (A. W r i t e L n ('A= ' . 'M= ' . Z := z / (2 * R). R : r e a l . p r o g r a m P4_5. kiekvieną iš šių fragmentų galima apiforminti funkcija. { Patikrinama. Kadangi abiem atvejais gaunamas vienas rezultatas. var dalikliai. kad čia galima išskirti du atskirus veiksmų fragmentus: pirminiam skaičiui nustatyti ir skaičiui perrašyti atbulai. f var M : integer. nes 31 irgi yra pirminis. Z).

{ Tiriamas intervalo skaičius begin ClrScr. var a : integer.5.= a * 10 + s k mod 10. ar vienos procedūros viduje aprašytą vardą „matys" kita procedūra? Panagrinėkime pavyzdį. end. begin end. begin end. end.{ Skaičių sk perrašo atbulai f u n c t i o n A t b u l a i (sk : i n t e g e r ) : i n t e g e r . Pavyzdžiui.apie vardų (kintamųjų. Čia kyla vienas svarbus klausimas . A t b u l a i := a. ( var χ : integer. f o r χ := 4 t o 999 do i f P i r m i n i s (χ) t h e n i f P i r m i n i s ( A t b u l a i (χ)) t h e n W r i t e L n (x). 4. s k := s k d i v 10. Jas geriausia įforminti procedūromis ir funkcijomis. var A : real. W r i t e L n ( ' S u p e r p i r m i n i a i s k a i č i a i : '). konstantų. w h i l e s k > 0 do begin a . kad sudarydami programas. end. tipų. program Pvz. Vardų galiojimo sritys Jau žinome. p r o c e d u r e Pl. . end. p r o c e d u r e P2. turime jų veiksmus išskaidyti į atskiras dalis. begin end. var A : real. tai pat pačių procedūrų ir funkcijų) galiojimo sritis. begin a := 0..

jie nematomi. sakoma. Skaičiais prie kontūro pažymėta sakinių atlikimo eilė. Žvaigždute pažymėtas nagrinėjamo kintamojo aprašas. nes tenka ieškoti.. Programoje aprašyti vardai galioja ir visose joje esančiose procedūrose bei funkcijose. end. procedure const var begin P <[a~] : r e a l . taip pat jų antraštėje esantys parametrai galioja tik toje procedūroje ar funkcijoje. Ši savybė.toks programavimo stilius blogesnis (tokias programas sunkiau skaityti. c real). galas .kintamieji.). o taškais . kad procedūroje ar funkcijoje aprašyti vardai galioja tik jos viduje. Tačiau jų vartoti ten nederėtų . kiekvienoje jų galima vartoti tuos pačius vardus .. .. . kurioje jie aprašyti.spausdinimo momentą. kurių reikšmės spausdinamos. Spausdinama reikšmė nurodoma rodykle: rodyklės pradžia nusako spausdinamąją reikšmę (apskritime). kur aprašyti vardai). o dešinėje linijomis parodytos atskirų kintamųjų ir procedūrų vardų galiojimo sritys.Procedūrose P l ir P2 tuo pačiu vardu A aprašyti kintamieji yra visiškai skirtingi. Jame galiojimo sritys dar paryškintos rėmeliais. var b.jie nesusipainios. Pagal pateiktą programą spausdinami šitokie rezultatai: 2 1 1 3 3 3 3 4 1 . tarp jų nėra nieko bendra. Procedūroje arba funkcijoje aprašyti kintamieji vadinami vidiniais (kartais dar lokaliaisiais) kintamaisiais. Įsidėmėkite logišką taisyklę: kiekvienoje procedūroje arba funkcijoje aprašyti vardai. Apskritimuose ant vertikalių linijų pažymėtos kintamiesiems suteikiamos reikšmės. labai praverčia: rašant procedūras ar funkcijas. Jos išorėje jų vartoti negalima.. Programoje aprašyti kintamieji vadinami išoriniais (arba globaliaisiais) kintamaisiais. Pateiksime vardų galiojimo sričių pavyzdį (20 pav.

b := 1 . * 5 6 АΦ Φ Φ 0 φ * © φ 4 9 ιΟ (j) <j> 20 pav. с) end. с) end. var b. Duomenų eilutė surenkama klaviatūra (pabaigoje paspaudžiamas klavišas E n t e r ) . := 2 . Vardų galiojimo sričių pavyzdys Kontroliniai pratimai 1. b := 3 . begin a := 2 . Parašykite. с r. w r i t e l n ( a . c : i n t e g e r : begin a : = 3 . b := 2 . var a. Variantas Duomenų eilutė Vl V2 V3 V4 V5 3 -2 8 2 4 4 6 -2 2 10 5 0 3 2 4 8 1 -8 2 4 . begin a := 1 . var a. с r. p. b. b . b : = 4. c : = 3 . c : i n t e g e r . с) end. w r i t e l n ( a . begin a : = 4. procedure r. jeigu atliksite nurodytus veiksmus duotose programose. ką ir kaip matysite kompiuterio ekrane. var a : integer. b : O a a a b b b c c p r r * * integer. c := 1 end. procedure r . b . := 4. b . w r i t e l n ( a . Procedure p.program s r i t y s (output).

end. begin R e a d (a. b:6:2. 2. program Pr6. y. z:5). b : r e a l ) : r e a l . y:5. ReadLn. z : i n t e g e r . y. begin ReadLn (x. c:6:2). z). ( v a r a. у := у + R a s a (χ. ReadLn. W r i t e L n (x:5. begin R a s a := (a * b) / 2. W r i t e L n (((Rasa (x. ( f u n c t i o n R a s a (a. b). W r i t e L n (a:6:2. y) + R a s a (x. b). Parašykite. end.1. W r i t e L n (x:5. 2. p r o g r a m Pr5. b) then WriteLn ( ' P i r m a s i s d i d e s n i s ' ) e l s e WriteLn ( ' A n t r a s i s d i d e s n i s ' ) . Variantas Duomenų eilutė Vl V2 V3 100 80 10 20 40 50 . b). z:5). f u n c t i o n R a s a (a. y:5. с := R a s a (a. end. z). W r i t e L n (a:6:2. b. b : i n t e g e r ) : i n t e g e r . b:6:2). Duomenų eilutė surenkama klaviatūra (pabaigoje paspaudžiamas klavišas E n t e r ) . z))/2):8:2). end. R e a d (a. с : r e a l . jeigu atliksite nurodytus veiksmus duotoje programoje. { v a r χ. ką ir kaip matysite kompiuterio ekrane. i f с > R a s a (a. begin R a s a := (a + b) d i v 2.

begin V := h * P i * r * r . 100. p : r e a l ) : r e a l . { v a r S. ( ' P r a d i n ė p i n i g ų suma: ' . L:8:2). f u n c t i o n V (h. d : r e a l . P:8:2. ( ' M e t i n ė s p a l ū k a n o s : ' . K : integer. L. begin Suma := a + a * p / end. end. r : r e a l ) : r e a l . к := 0. Parašykite. begin ReadLn (L. ką ir kaip matysite kompiuterio ekrane. K:3.program Pr7. S:8:2). Duomenų eilutė surenkama klaviatūra (pabaigoje paspaudžiamas klavišas E n t e r ) . k. 4 7 4 1 4 1 . P : r e a l . S := Suma (S. S := L. i : i n t e g e r . f u n c t i o n Suma (a. WriteLn WriteLn WriteLn WriteLn ReadLn. Variantas Duomenų eilutė Vl V2 V3 3 3 3 program { 2 6 2 5 2 4 6 8 3 7 1 2 Pr8. b. a. end. ( v a r n. 3. ( ' L a u k i a m a p i n i g ų suma: ' . ( ' S u m a p a d v i g u b ė s po: ' . P). w h i l e S < 2*L do begin K := K + 1. ' m e t ų ' ) . jeigu atliksite nurodytus veiksmus duotoje programoje. end. P). ' % ' ) .

Sudarykite procedūras visų jums žinomų geometrinių figūrų plotams skaičiuoti. W r i t e L n ( ' C i l i n d r a s N r . b). 2. ' . к := 0. Įforminkite dialogo veiksmus su vartotoju. d:8:2). Sudarykite procedūras visų jums žinomų geometrinių figūrų tūriams apskaičiuoti. b). W r i t e L n ( ' J o t ū r i s : ' .begin R e a d (n). end. . end. k:3). b) > d then begin d := V (a. ReadLn. end. к := i . d := 0. Šias procedūras įjunkite į programą ir pagalvokite apie jų rezultatų įforminimą. f o r i := 1 t o n do begin R e a d (a. Kontrolinės užduotys 1. i f V (a.

mes iš tikrųjų tik krauname juos vienus ant kitų ir Iš Jų kaip iš plytų mūrijame aukštas ir tvirtas tvoras. Todėl vis toliau esame priversti gyventi tarytum garduose.5 7 A[7] . 5. todėl indeksai rašomi šalia vardo laužtiniuose skliaustuose. Tie numeriai vadinami indeksais. Programavimo kalbose taip rašyti negalima. Dažniausiai numeracija pradedama nuo vieneto. Siųsdami savo atliekamus daiktus Afrikos gentims. gamindami ir pirkdami galybes daiktų. kurią tos kitos bus išmūriję aplink save. Viena dažniausiai vartojamų duomenų struktūrų yra masyvas. O ir patys. Romualdas „Žodžio Granauskas agonija" 5.jas galima laikyti atskiru masyvo atveju. Tokie duomenų rinkiniai vadinami duomenų struktūromis arba struktūriniais duomenimis.Kuo daugiau protas prikuria daiktų. Jeigu pavyktų perlipti. su kuria norėtume ir turėtume bendrauti. Masyvas ir simbolių eilutė Spręsdami uždavinius iki šiol vartojome tik paprastuosius duomenis su pavienėmis reikšmėmis. Taip pat supažindinsime su eilutėmis . gal dar aukštesnę sieną. kurio elementai . artimo link.simboliai. kaip toli ir kitur esame. kurių patys nebeįstengiame perlipti. Programose dažnai prireikia ne tik pavienių reikšmių. bet ir vienaip ar kitaip susietų duomenų rinkinių.5 5 A[5] -45.1. mes nė per nago juodymą nepriartiname jų prie savęs. Matematikoje indeksai rašomi prie simbolio apačioje. Masyvą paprasčiausiu atveju galime įsivaizduoti kaip paeiliui sunumeruotų dydžių seką. kuriame elementai išdėstyti tam tikra tvarka. atsitrenktume dar į vieną. Jo dvasios link. Atvirkščiai. tuo labiau skiria vieną civilizaciją nuo kitos ir vieną žmogų nuo kito. kartais pastatydamas tarp Jų nebeįveikiamas užtvaras. turinčių palengvinti mūsų gyvenimą.24 6 A[6] -7. Masyvo sąvoka Masyvu vadinamas vienodo tipo duomenų rinkinys. Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: 15 -3 18 45 1 2 3 4 A[L] A[2] A[3] A[4] 2. kurj ir panagrinėsime šiame skyriuje. mes tik parodome.

M a x ] of b o o l e a n . type Masyvasl = a r r a y Masyvas2 = a r r a y Masyvas3 = a r r a y Masyvas4 = a r r a y v a r A. B : M a s y v a s 1.) 21 pav. visuomet galima žvilgtelėti į Paskalio kalbos žinynus. dešinėje . 5 0 ] of r e a l .Kadangi masyvo elementų išdėstymas nurodomas indeksais. Masyvo duomenų tipo Turbo Paskalyje nėra. Dvimačių masyvų pavyzdžiai: t y p e E i l = a r r a y [ 1 . . . Galimi ir kitokie užrašų variantai. . Čia pavartota dar viena aprašų rūšis . . būtina nurodyti ne patį tipo vardą (kaip galima daryti esant loginiam ar simboliniam tipams). [ c h a r ] of i n t e g e r . [ 1 . 1 0 ] of L e n t = a r r a y [ 1 .duomenų tipas.pats tipas. Paskalio kalboje masyvas aprašomas nurodant jo elementų indeksų tipą (21 pav. [ 1 . integer. Sudarant tipo aprašą kairėje lygybės pusėje nurodomas naujasis tipo vardas.). 2 0 0 ] of c h a r .mažiausią ir didžiausią leistinąją reikšmę. Paprasčiausia masyvo matavimą atskirti pagal vienam elementui nurodyti reikalingą indeksų skaičių: jei elementai nurodomi vienu indeksu. arba net reiškinys. [ 1 . . vadinama daugiamačiu masyvu. Po to galima aprašyti sukurto masyvo tipo kintamuosius. Masyvo aprašo sintaksės diagrama Dažniausiai pasirenkamas sveikasis indekso tipas. kurie dar kartais vadinami lentelėmis (jų elementų išdėstymą patogu pavaizduoti lentele). Kadangi jis gana didelis (turi daug reikšmių). tai susidarys struktūra. Dažniausiai vartojami dvimačiai masyvai. o jo atkarpą . jeigu dviem .1. X : Masyvas2. Elemento indeksas gali būti sveikasis skaičius arba sveikojo tipo kintamasis. Masyvo elementai gali būti bet kurio anksčiau aprašyto duomenų tipo. kad vieną masyvą sudarytų būtinai to paties tipo elementai. Elementus galima numeruoti ir raidėmis. Masyvo tipų ir kintamųjų aprašų pavyzdžiai: c o n s t Max = 100. Svarbu tik. tai patys masyvų elementai vadinami indeksuotaisiais kintamaisiais. kurio rezultatas yra sveikasis skaičius. . Mes į tai nesigilinsime. tai toks masyvas vadinamas vienmačiu. R : Masyvas4. 5 ] of E i l . Tuomet indekso kintamasis turi būti simbolinio ( c h a r ) tipo. kuris pradedamas nurodžius žodį t y p e . Programuotojas turi pats susikurti reikiamą masyvo tipą pagal nurodytas taisykles (21 pav.dvimačiu ir 1. Jeigu masyvo elemento tipas bus vėl masyvas. Z : Masyvas3.

v a r n : i n t e g e r ) .1 pratimas. kad paskutinis 10-asis skaičius yra dešimtoje vietoje. kad masyve yra 10 skaičių. Sakydami. s p a l v a : i n t e g e r ) . kad abu operacijoje nurodomi masyvai būtų aprašyti vienodai (tuo pačiu masyvo tipu): t y p e Mas = a r r a y [ 1 . Masyve galima laikyti ne daugiau reikšmių negu nurodyta jo apraše. x2. pavyzdžiui. begin Window ( x l . A := B. B : Mas. kaip ir paprasti kintamieji. kurio apskritimo spindulys ilgiausias. Reikia rasti didžiausią apskritimą ir nustatyti. turime galvoje. y2. program P5_l. kiek iš viso yra tokių didžiausių apskritimų. . Įvedant duomenis tikslinga patikrinti. tuomet elementų skaičius ir paskutinės įrašytos reikšmės indeksas sutampa. Ypač paranku juos naudoti tada. H 5. kad masyve yra. 55. uses Crt. Jeigu pirmojo elemento indeksas yra vienetas (taip patogiausia. tačiau tokiu atveju būtina. tuomet reikėtų numatyti galimus tolesnius veiksmus: nutraukti programos darbą. Jų spinduliai žinomo ilgio. 5 0 ] of real. kad indekso reikšmė visuomet būtų iš aprašyto intervalo. nes ir matematikoje taip priimta). t y p e M a s y v a s = a r r a y [ 1 . Apskritimų ilgių skaičiuoti nereikia. Tarkime. Programose labai svarbu stebėti. y2). 2 0 ] of v a r A.Masyvų elementai vartojami reiškiniuose bei kitose konstrukcijose taip pat. kai programoje tenka keletą kartų peržiūrėti tą patį duomenų rinkinį arba kai sudaromi ir apdorojami tarpusavyje susijusių dydžių rinkiniai. Programose masyvai yra patogūs sisteminti vardams ir grupuoti duomenims. Write ('Kiek yra apskritimų? '). pasirinkti maksimaliai leistiną reikšmių skaičių. Blue). x2. 1 } p r o c e d u r e Duomenys ( v a r A : Masyvas. begin L a n g a s (5. y l . pasiūlyti vartotojui iš naujo nurodyti masyvo reikšmių skaičių ir pan. var i : integer.antroje ir 1. I } p r o c e d u r e L a n g a s ( x l . end. . W r i t e L n ('Duomenų į v e d i m a s ' ) . ClrScr. Jei ne.1. char. turime daug apskritimų. ar tiek elementų tilps masyve. 5. 10. turime galvoje. antrasis . 10 skaičių. Sakydami. ReadLn (n). TextColor (Red). Visam masyvui iš karto galima taikyti tiktai priskyrimo operaciją. kad pirmasis iš jų yra pirmoje vietoje. Duomenys įvedami klaviatūra ir iš karto surašomi į masyvą. y l . Taigi pakanka nustatyti. TextBackground (spalva). .

dk). dk : i n t e g e r . 1. dnr). d n r ) . end. 25. B l u e ) . d n r . { p r o c e d u r e Kiek (var A : masyvas. T o k i ų s u r a s t a : ' . . dk). 14. n). end. B l a c k ) . 80. L a n g a s (10. K i e k (A.A[nr]) < = 0 . begin к := 0. 10. L a n g a s (1. n. B l a c k ) . WriteLn ( ' I l g i a u s i a s W r i t e L n (' WriteLn (' ReadLn. { v a r A : Masyvas. 4). f o r i := 1 t o n do i f Abs (A[i] . ClrEol. Duomenys (A.T e x t C o l o r (Green). D i d e l i s (A. ' . T e x t C o l o r (Black). 25. a p s k r i t i m a s y r a : '. n. n : i n t e g e r . { Pirmasis apskritimas } f o r i := 1 t o n do i f A[i] > A[nr] t h e n n r := i . 0 1 { Lyginamatamtikrutikslumu } t h e n к := к + 1. { Didžiausio apskritimo numeris } { Didžiausių apskritimų skaičius } begin L a n g a s (1. dnr. W r i t e ( ' A p s k r i t i m o Nr. J o s p i n d u l y s : ' . var nr : integer). var k : integer). n : i n t e g e r . i : 3 . ' s p i n d u l y s = '). f o r i := 1 t o n do begin GoToXY (5. var i : integer. f p r o c e d u r e D i d e l i s (var A : Masyvas. 50. end. { Spindulių ilgių sąrašas } n. begin nr := 1. var i : integer. ReadLn (A[i]). 80. { Valoma eilutė: nuo žymeklio vietos iki galo } { Apskritimo spindulio reikšmė įrašoma į masyvą end. A[dnr]:5:2). nr : integer. end. 1.

Kontrolinės užduotys 1. Tačiau galima (dažnai ir būtina. kad ji tikrintų. . masyvo tipo aprašą). Galite sugalvoti žaismingus vaizdelius ekrane: programa galėtų pasisveikinti su vartotoju ir parašyti. Tai vienintelis galimas veiksmas su visu masyvu. ir papildykite programą. Visiškai analogiškai galima išspausdinti masyvus . Paskalio kalboje nėra priemonių visam masyvui iš karto perskaityti bei išspausdinti. Papildykite 5. . Šitoks veiksmas vadinamas masyvų kopijavimu. Panagrinėkime keletą masyvams būdingų situacijų. 5 0 ] of v a r A. ką daryti. Pirmiausia aprašykime reikalingus kintamuosius: t y p e Mas = a r r a y [ 1 . Tai būtų programos pristatymas. Jeigu kopijuojami masyvai aprašyti to paties tipo. ciklų sąlygose.2. i . Tam vartojame ciklą: f o r i := 1 t o 50 do A[i] := 0.1 pratimas) masyve išlaiko ne daugiau kaip 50 skaičių (žr. Papildykite programą. D : Mas. masyvo elementus (indeksuotus kintamuosius) galima vartoti reiškiniuose. tuomet galime vartoti tiesioginį priskyrimą: A := D. Dažniausiai reikalingas veiksmas . Neretai tenka vieno masyvo elementams priskirti kito masyvo elementus. Tam paprastai daromos atskiros procedūros. ar įvedamas apskritimų skaičius nėra didesnis? Sugalvokite. Dažnai reikia rasti masyve elementus.užpildyti masyvą pradinėmis reikšmėmis. 3.užsklandą. reikia suskaičiuoti. jei taip atsitiktų. skaitymo ir rašymo sakiniuose ir pan. real. 5. tenkinančius kokias nors sąlygas.vartojamos procedūros W r i t e arba WriteLn. kas jos autorius. kad ji papildomai spausdintų nustatyto didžiausio apskritimo ilgį. Pavyzdžiui. kas numatoma daryti. kad ji turėtų antraštinį puslapį . Pavyzdžiui. f o r i := 1 t o n do { Skaičiuojami nuliniai elementai } i f A[i] = 0 t h e n k := k + 1. Ši programa (5. jei masyvai aprašyti ne to paties tipo) kopijuoti po vieną elementą: f o r i := 1 t o 10 do A[i] := D[i]. Kaip reikėtų pakeisti programą. к : i n t e g e r . kiek masyve A yra lygių nuliui elementų: k := 0. tokius pat kaip ir su paprastaisiais kintamaisiais. 2. Šiems veiksmams atlikti reikia vartoti ciklus: ReadLn (n). f o r i := 1 t o n do ReadLn (A[i]).1 pratimo programą taip. Veiksmai su masyvo elementais Su masyvo elementais galima atlikti įvairius veiksmus. n.

5. Jų koordinatės surašytos į masyvus X ir Y taip. pritaikyti ją kitoms reikmėms. Reikia sudaryti programą. kuri suskaičiuotų atstumą nuo kiekvieno taško iki koordinačių pradžios ir gautus rezultatus surašytų į masyvą A (22 pav. ar kartais nebandoma rašyti duomenų į masyvą su neleistinu. Jei skaičiavimų rezultatus reikia surašyti į masyvą. Atstumų skaičiavimo ir rezultatų rašymo į masyvą strukturograma Čia rezultatų skaičius žinomas iš anksto. Pradžia: Atstumai Įvesti duomenis: masyvo dydį n bei pačių masyvų X ir Y reikšmes Nuo i := 1 iki n Ui = -kf + y} Spausdinti masyvų X. kiek bus rezultatų. Apskritimo centro koordinatės a. kuri nustatytų.3 pratimas. bet ir apimtis. išeinančiu už masyvo ribų indeksu. galimybės modifikuoti programą. Kai nežinome. t.1 pratimą). . 3 1 χ 23 pav.šių taškų y koordinatės. Koordinačių plokštumoje duota n taškų. Reikia sudaryti programą. ar yra bent vienas taškas duoto apskritimo viduje.2 pratimas. būtina tikrinti. Koordinačių plokštumoje duota daug taškų.).Sudarant uždavinių programas labai svarbu tinkamai parinkti duomenų struktūras. A reikšmes Pabaiga 22 pav. kad pirmajame masyve yra visų duotų taškų χ koordinatės. kaip ir įvedant duomenis (žr. Vienas svarbiausių programavimo etapų ir yra parinkti bei sudaryti duomenų struktūras. Y. b ir jo spindulys r žinomi. pateiktos atitinkama tvarka. tai daroma taip pat. B 5. antrajame . B 5. Nuo to priklauso ne tik būsimos programos sudėtingumas. y.

ReadLn (X[i]). var i : Integer.a) + S q r (Y[i] . f var X. ReadLn (n). t y p e Mas = a r r a y [ 1 . W r i t e ( ' χ = '). ' . { '). W r i t e ( ' Į v e s k i t e a p s k r i t i m o s p i n d u l į : '). b. i : 4). W r i t e ( ' у = '). end. n : i n t e g e r . b). nt : integer. b. Y. C l r S c r . begin W r i t e ( ' Į v e s k i t e t a š k ų s k a i č i ų : '). . end. begin ClrScr. ReadLn (r). { Ar yra taškų apskritimo viduje? f u n c t i o n V i d u j e ( v a r X. 2 0 ] of { real. r : r e a l ) . w h i l e ( i <= n) a n d n o t y r a do i f S q r (X[i] . (Black). Y : Mas. a. . i : integer. M a s y v a s (X. Viduje : = yra. f o r i := t o n do begin W r i t e l n ( ' T a š k o N r . Duomenų įvedimo procedūra p r o c e d u r e A p s k r i t i m a s ( v a r a. Y : Mas. T e x t C o l o r A p s k r i t i m a s (a. end.p r o g r a m P5_3. n t ) . r ) . var yra : boolean. Write ( ' Į v e s k i t e apskritimo centro koordinates: ReadLn (a. uses Crt. begin y r a := F a l s e . end. a. b. [ { { { Taškų koordinačių masyvas } Taškų skaičius } Apskritimo centras Į Apskritimo spindulys } begin T e x t B a c k g r o u n d (Blue). Taškų koordinačių masyvų įvedimas p r o c e d u r e M a s y v a s ( v a r X. r : real. b.b) < S q r ( r ) t h e n y r a := T r u e e l s e i := i + 1. WriteLn. ReadLn (Y[i]). v a r n : i n t e g e r ) . r : r e a l ) : b o o l e a n . Y : Mas.

Toks pratimas buvo trečiame skyriuje. y l = 2.4pratimas. y2). x2. begin Window ( x l . s p a l v a : i n t e g e r ) . kaip arbūzai skirstomi į dvi krūvas. bet prireikus išsaugoti byloje.rodyti ekrane masyvo reikšmes. Tada galėsime ne tik papildyti programą naujais veiksmais. y l . NN = 100. Tai aptarsime tolesniuose skyriuose. Fonas = Green. Kontrolinių duomenų pavyzdys Testo Tikrinamas Duomenys numeris atvejis a b r nt Taškų koordinatės 1 Priklauso 1 0 2 3 2 Nepriklauso 1 0 2 2 X Y X Y Rezultatas = = = = ( . B 5.i f V i d u j e (Χ. Juos reikia surūšiuoti pagal svorį į dvi kategorijas: iki 1 kg svorio ir sunkesnius. y l . Dabar duomenis ir gautus rezultatus įrašysime į masyvus. Skirstyti . ClrScr. Čia tik parodysime.1 . 1.1 . n t . 3) (2. . 2) ( . Ūkininkas parsivežė nuimtą arbūzų derlių. { Didžiausias leistinas masyvo elementų skaičius } t y p e Mas = a r r a y [1. uses Crt. { Darbo lango koordinatės } x2 = 40. end. p r o c e d u r e L a n g a s ( x l . x2.NN] of r e a l . y2. Buvo skirstoma kompiuterio ekrane ir arbūzų svorių reikšmės nebuvo įsimenamos. c o n s t x l = 5. end. išspausdinti popieriuje ir pan. b. Duomenys .pradiniams duomenims iš klaviatūros į masyvą įvesti. TextBackground (spalva). 2) Apskritimo viduje yra taškų Apskritimo viduje taškų nėra Duomenų grupavimo pagal nurodytus požymius uždavinio pavyzdžiu gali buti toks pratimas. y2 = 5.. Y. p r o g r a m P5_4. r ) then Write ('Apskritimo v i d u j e yra taškų') e l s e Write ('Apskritimo v i d u j e taškų nėra') ReadLn. 2. Rodyti . Programoje reikalingos tokios procedūros: Langas .ekranui valyti (atkeliama iš ankstesnių programų). a.duomenims grupuoti. 3) (2.

var i : integer. W r i t e l n ( ' K i e k t u r i t e a r b ū z ų ? '). C l r E o l . n : i n t e g e r . p r o c e d u r e R o d y t i ( v a r A : Mas.Pradinių duomenų įvedimas p r o c e d u r e Duomenys ( v a r A : Mas. n2 := 0. var i : integer. begin n l := 0. f o r i := 1 t o n d o begin GoToXY (3. WriteLn. Programos veiksmai } { { { { Pradiniai duomenys ] Tinkami arbūzai } Netinkami arbūzai } Svoris grupavimui } L a n g a s (1. v a r Kl : Mas. ' . K2 [n2] := A[i] end end. end. v a r n2 : i n t e g e r ) . 25. n). s v : r e a l . f o r i := 1 t o n do i f A[i] >= s v then begin n l := n l + 1. n : i n t e g e r . Mas. (Black). ReadLn (n). var i : integer. 3). v a r K2 : Mas. Mas. n2 : i n t e g e r . v a r n l : i n t e g e r . R e a d L n (A[i]) end end. . x2. begin L a n g a s ( x l . i : 2 . var A kl k2 sv begin : : : : { Mas. v a r n : i n t e g e r ) . Arbūzų skirstymas į krūvas procedure Skirstyti ( v a r A : Mas. n l : i n t e g e r . K l [ n l ] := A[i] end else begin n2 := n2 + 1. n : i n t e g e r ) . W r i t e ( ' A r b ū z o n r . ' s v o r i s = '). 80. f o n a s ) . begin f o r i := 1 t o n do { Skirstoma po 7 skaičius eilutėje if i mod 7 = 0 t h e n W r i t e L n (A[i]:7:2) e l s e W r i t e (A[i]:7:2). B l a c k ) . y l . real. y2. T e x t C o l o r Duomenys (A. 1.

Sukeičiame vietomis rastojo elemento ir 3-iojo elemento reikšmes. (A. 2. y. { p r o c e d u r e L a n g a s ( x l . Galite rasti daug rikiavimo metodų. 78. kol intervale lieka tik vienas elementas. 3. n). y l . 5 pratimas. y2). Randame didžiausią elementą masyvo intervale nuo 3-iojo iki ra-ojo elementų. k2. n. Algoritmą šiek tiek pakeiskime. 2. 75. 80. y l . . begin Window ( x l . 25. F o n a s ) . sv. B 5 . Keletas jų aprašyta ir „Programavimo uždavinyne". '). turime daryti taip pat. WriteLn ('Netinkamų arbūzų sąrašas: R o d y t i (k2. y l . n2). B l a c k ) . n l . y2. G r e e n ) . ClrScr. WriteLn ('Tinkamų arbūzų s ą r a š a s : R o d y t i (kl. x2. jo reikšmių išdėstymas didėjančia (nemažėjančia) arba mažėjančia (nedidėjančia) tvarka. 3. B l u e ) . t. Masyve skaičiai bus išdėstyti mažėjimo tvarka. W r i t e ('Tinkamo arbūzo s v o r i s : Skirstyti '). L a n g a s (1. nuo 1-ojo iki n-ojo elementų. WriteLn ( ' P r a d i n i s R o d y t i (A. Algoritmas būtų toks: 1. Pateiksime patį paprasčiausią. T e x t C o l o r (Red). TextBackground (spalva). ) .L a n g a s ( x l . x2. L a n g a s (8. T e x t C o l o r (Magenta). Randame didžiausią elementą masyvo intervale nuo 2-ojo iki и-ojo elementų. end. k l . L a n g a s (5. Pasinaudokime didžiausios reikšmės radimo algoritmu. ReadLn (sv). '). 5 0 ] of real. t y p e Mas = a r r a y [ 1 . Taip darome tol. nl). arbūzų sąrašas: '). n2). 1. Jei norime gauti skaičius išdėstytus didėjimo tvarka. p r o g r a m P5_5. Sukeičiame vietomis rastojo elemento ir 2-ojo elemento reikšmes. s p a l v a : i n t e g e r ) . x2. bet nurodytame masyvo elementų intervale. y. y2. 22. uses Crt. Masyvo reikšmių rikiavimas. Sukeičiame vietomis rastojo elemento ir 1-ojo elemento reikšmes. yra klasikinis programavimo uždavinys. tik šiuo atveju nurodytame intervale ieškosime mažiausios reikšmės. Ieškosime didžiausios reikšmės ne visame masyve. ReadLn. 23. t. Randame didžiausią elementą visame masyve.

var i : integer. f o r i := 1 t o n do W r i t e (A[i]:6:l). (Black). n). begin L a n g a s (1. n). ReadLn (n). A[i] := A[d]. T e x t C o l o r Duomenys (A.{ Pradinių duomenų įvedimas p r o c e d u r e Duomenys ( v a r A : Mas. WriteLn. ReadLn. v a r n : i n t e g e r ) . d : i n t e g e r . end. n : integer. f o r i := 1 t o n do begin W r i t e ( Ά [ \ i . 1. v a r elem : real. n : i n t e g e r ) . e l e m := A[i]. R e z u l t a t a i (A. . { Rikiuojama didėjančiai p r o c e d u r e R i k i u o t i ( v a r A : Mas. 25. ReadLn (A[i]) end end. begin W r i t e ( ' Į v e s k i t e N = '). A[d] := e l e m end end. f o r j := i + 1 t o n do i f A[i] > A[d] t h e n d := j . begin f o r i := 1 t o n . j.1 do begin d := i . W r i t e L n ( ' Į v e s k i t e masyvo e l e m e n t u s : ' ) . { Rezultatų spausdinimas p r o c e d u r e R e z u l t a t a i ( v a r A : Mas. n : i n t e g e r ) . R i k i u o t i (A. Blue). ( v a r A : Mas. n). end. 80. var i : integer. i. begin WriteLn ('Masyvas s u r i k i u o t a s : ' ) . ' ] = ').

1. . jeigu ją vykdydami surinksite klaviatūra tokias skaičių eilutes: Variantas Vl V2 V3 V4 V5 V6 Skaičių eilutė 5 5 4 5 5 5 6 6 5 7 -3 3 3 3 -4 -4 4 -3 p r o g r a m Ml. 1) A = (7. var i : integer. 5. A[i] := s. a) Ką ir kaip parodys ekrane žemiau pateikta programa. begin f o r i := 1 t o n do i f i mod 3 = 0 t h e n W r i t e L n (A[i]:6) e l s e W r i t e (A[i]:6). r. r := 0. 7. c o n s t L = 100. begin R e a d (n). s : i n t e g e r . f o r i := 1 t o n do begin r := A[i]. f o r i := 1 t o n do R e a d (A[i]). . WriteLn. 2. t } p r o c e d u r e R o d y t i ( v a r A : Mas. 1) Kontroliniai pratimai 1. v a r n : i n t e g e r ) . ( } p r o c e d u r e I m t i ( v a r A : Mas. begin s := 0.Kontrolinių duomenų pavyzdys Duomenys Rezultatai N = 4 A = (5. ) p r o c e d u r e D i r b t i ( v a r A : Mas. ReadLn. t y p e Mas = a r r a y [ 1 . n : i n t e g e r ) . i f n > L t h e n n := L. v a r i. v a r n : i n t e g e r ) . var i : integer. 2. end.] of -2 -9 8 4 6 4 4 14 -3 5 -5 6 5 2 12 3 9 2 2 7 2 6 2 2 8 6 1 10 11 8 integer. end.

v a r n : i n t e g e r ) . end. r : i n t e g e r . s := 0. begin Imti (A. A[i] := A[i+1]. n : integer. end. begin r := 0. end. Rodyti (A. 3. . p r o c e d u r e D i r b t i 2 ( v a r A : Mas. s := s + r . Dirbti (A. end. A[r] := A[i]. end. b) Ką ir kaip matysite ekrane. v a r i. end.1 do begin r := A[i]. i f A[i] > A[i+1] t h e n A[i] := s. n). var A : Mas. end. begin f o r i := 1 t o n . begin r := 0. v a r n : i n t e g e r ) . end. end.s := s + r . v a r i. n). v a r n : i n t e g e r ) . s : i n t e g e r . A[i+1] := r . jeigu procedūrą Dirbti pakeisite kitokia: 1. n). p r o c e d u r e D i r b t i 3 ( v a r A : Mas. f o r i := 1 t o n do i f A[i] > 0 t h e n begin r := r + 1. f o r i := 1 t o n . 2. p r o c e d u r e D i r b t i l ( v a r A : Mas.1 do i f A[i] > A[i + 1] t h e n begin r := A[i]. v a r i. r. r : i n t e g e r .

pavaizduotą struktūrograma (22 pav. Apie toliausiai nuo koordinačių pradžios nutolusį tašką apibrėžtas spindulio R apskritimas. Tada sudarykite programėles gautiems rezultatams patikrinti. e n d A[n] := A[i].) atlikti . r : i n t e g e r . end. juos galime sunumeruoti nuo 1 iki n. kurių aukštis ir skersmuo žinomi. Nustatykite didžiausią ir mažiausią temperatūros reikšmę.1-5. . 7. f o r i := 1 t o n do if A[i] > 0 t h e n b e g i n r := r + 1.4. Nustatykite. 3. 5. kiek jis vidutiniškai išleidžia per vieną dieną. Moksleivio kiekvienos mėnesio dienos išlaidos litais įrašytos į masyvą. t. Jei aukščiausiąjį balų skaičių skyrė keli teisėjai. i n t e g e r ) . kurių koordinatės (x. 2.2 pratimas). užrašykite programa. Išbandykite ją su skirtingais duomenimis. end. var i. begin r := 0. 4. Sudarykite programą ligonio temperatūrai analizuoti per parą. Kiekvieno iš jų svoris žinomas. Į masyvą įvedami aštuonių teisėjų pateikti sportininko pasirodymo įverčiai balais. y) žinomos. Parašykite programą sportininko pasirodymo galutiniam įvertinimui rasti. kiek tokio tūrio statinių yra iš viso. v a r n . Analogiškai pasielgiama ir kai keletas teisėjų skiria žemiausiąjį įvertį. p r o c e d u r e D i r b t i 4 ( v a r A : Mas. jos reikšmes klaviatūra įveskite į masyvą. Atlikite žodžiu „Programavimo pradmenų" uždavinyno 5. Pirkėjas prašo vidutinio arbūzo. kuri apskaičiuotų moksleivio išlaidas per k dienų.9 pratimui iš „Programavimo pradmenų"uždavinyno (97 psl. Sudarykite programą. Kiek duotų taškų patenka į apskritimo vidų? 3. tai atmetamas tik vienas iš tų įverčių. A[r] := A[i]. Sudarykite programą 5.kintamoms masyvo reikšmėms stebėti. e l s e b e g i n n := n + 1. Iš gautų įverčių (balų) atmetamas pats aukščiausias ir pats žemiausias įvertis ir tada randamas likusių balų vidurkis. Koordinačių plokštumoje duota daug taškų. Savarankiško darbo užduotys 1. Rezultatų surašymo į masyvą algoritmą (5. y.4 pratimus. Kuris tai bus? 2. 6. Reikia rasti aukščiausios statinės tūrį ir nustatyti. Kai kuriose sporto varžybose sportininko pasirodymą vertina keletas teisėjų. Kontrolinės užduotys 1. Arbūzų rūšiavimo programą išbandykite su įvairiais duomenimis. Sutarkite temperatūrą matuoti kas valandą.). Turguje ant prekystalio šalia vienas kito eilute sudėti arbūzai. Yra daug cilindro formos statinių.

Skaitmenų paieškai įvestame simbolių masyve sudarykime procedūrą Skaitmuo. 5. t. kuriuose reikia apdoroti tekstą. Cilindro formos statinės. Tai galima padaryti įvairiai. žinome atstumą nuo pradinės stoties iki tarpinės stotelės ir laiką. kurios raidės iš viso nepavartotos ir 1. Patogiausia pasinaudoti Turbo Paskalio funkcija Eoln. Turime traukinio judėjimo grafiką. kurių centrai yra trečios viršūnės taške. kurių kiekvienos skersmuo d. Žinomas kievienos skylutės atstumas nuo statinės viršaus. kiek iš viso bus simbolių. Patogiau įvedinėti visus iš eilės renkamus simbolius. o spinduliai lygūs kraštinės ilgiui tarp pirmos ir antros viršūnių. Kaip ir anksčiau. esančią aukštyje h. po to naudojant ciklą for įvesti nurodytą simbolių skaičių. kaip ir skaičių. kiek bus simbolių.1. Čia pirmieji skaičiai visuose masyvuose reiškia pirmojo trikampio viršūnių koordinates. Apie kiekvieną trikampį brėžiami apskritimai. ar aptikta eilutės pabaiga (tuomet jos reikšmė lygi True). Tiesa. kurios aukštis H ir skersmuo D.1. antrieji antrojo ir 1. y. Y2 (n). kol bus nurodyta. S 5. Reikia rasti. kurie visiškai telpa į savo apskritimą. Statinė iki viršaus pripilta vandens. tai toliau skaityti nėra prasmės. Simbolių masyvai Masyve galima saugoti ne tik skaičius. lygus S q r t (2 *g*h). Simbolių masyvą aprašome taip pat. programa turėtų pasiūlyti pasirinkti kitą mėnesį. Reikia paeiliui peržiūrėti visus masyve esančius simbolius ir patikrinti. kaip ir esant skaičių masyvui: pirmiausia paklausti. y) žinomos. kad įvedimas baigtas. reikia pagalvoti. X3 (n). Jeigu jau netelpa. kad reikia tikrinti. Tai reiškia. Per kiek laiko išbėgs vanduo iki apatinės skylutės? Vandens tekėjimo greitis pro skylutę. Programa gana paprasta. Jos surašytos į masyvus Xl (n). ar tai skaitmuo. Viršūnių koordinatės (x. ar skaitomas simbolis dar telpa į masyvą. Yl (n). ar ne. Iš simbolių sudaromas tekstas. 7. 5.c h a r . bet ir simbolius. Yra daug uždavinių. Y3 (n). kuri nurodo. kad reikės ekraną apipavidalinančios ir simbolius įvedančios procedūrų.4. tarp kurių stotelių atstumas mažiausias ir kurią atkarpą traukinys pravažiuos greičiausiai. Procedūrą Langas perkeliame iš ankstesnių programų. Pavyzdžiui. 6. Kuris moksleivis iš klasės pirmasis švęs savo gimtadienį nurodytą mėnesį? Jeigu tokio moksleivio nėra. galima atlikti teksto statistinę analizę: suskaičiuoti. X2 (n). Čia galima įvedimą programuoti taip pat. nes reikės suskaičiuoti. per kurį traukinys atvažiuoja į tą stotelę. šone išgręžtos labai mažos skylutės. rimtai analizei reikalingi didelės apimties tekstai. ar dar ne (tuomet jos reikšmė bus False). Tačiau tai nėra patogu. Eilutė gali būti gana ilga ir jos visi simboliai gali netilpti į masyvą. Klaviatūra surenkama bet kokių simbolių eilutė.6 pratimas. Reikia rasti. kiek skirtingų raidžių yra tekste. tik elementų tipas nurodomas simbolinis . Simbolių eilutei įvesti sudarome procedūrą Simboliai.3. Tam . kuri raidė dažniausiai vartojama. Reikia atrinkti trikampius (nurodyti jų indeksus duomenų masyvuose). kiek toje eilutėje buvo skaitmenų ir parodyti juos ekrane. Plokštumoje yra nubrėžta n trikampių. kokia bus programos struktūra: aišku.

{ Simbolių eilutės įvedimas } p r o c e d u r e S i m b o l i a i ( v a r A : Mas. ( var A : Mas. 1. Prisiminkime. while not Eoln and (n < R) do begin n := n + 1.. begin Langas (10. kurioje lentelės vietoje yra nagrinėjamas simbolis. end. ReadLn. n : integer. . White). TextColor (Black). Ί ' . TextBackground (spalva). Pasiremkime tuo faktu. kad skaitmenys lentelėje surašyti eilės tvarka (žr. } . v a r n : i n t e g e r ) . Šitaip programuodami gautume sudėtingą sąlyginio sakinio konstrukciją (arba dešimt paprastų sąlyginių sakinių i f . y l . Tuomet pakanka patikrinti. Read (A[n]). WriteLn ('Eilutėje buvo tokie skaitmenys: '). n : i n t e g e r ) . y2. ' 9 ' . . c o n s t R = 100. { Simbolių masyvo tipas } } p r o c e d u r e L a n g a s ( x l .reikia kiekvieną masyvo simbolį palyginti su simboliais Ό ' . 10. then). uses Crt. 25. . { Tarp skaitmenų paliekami du tarpai } WriteLn. Fonas = Green. ClrScr. s p a l v a : i n t e g e r ) . . ' 2 ' . var i : integer. { type Mas = array [1. . n := 0. f o r i := 1 t o n do if (A[i] >= Ό ' ) and (A[i] <= '9') t h e n W r i t e (A[i]:3). begin Window ( x l . { Skaitmenų paieška eilutėje } p r o c e d u r e S k a i t m u o ( v a r A : Mas. B l a c k ) . . Siūlome trumpesnį sprendimą. T e x t C o l o r (Green). kad lyginant simbolius jie pakeičiami atitinkamais kodais pagal kodų lentelę. end. 80. begin L a n g a s (1. x2. begin WriteLn ('Surinkite simbolių eilutę:'). y2). end. x2. R] of char. y l . 15. 50. end. p r o g r a m P5_6. 8 priedą).

kiek simbolių yra toje eilutėje. Eilutės tipo duomenys turi įdomią savybę: nulinio indekso elementas nurodo. kitaip . pavyzdžiui: var A : n : A := string. . ReadLn. o operacija in patikrina. kaip ir prieš tai nagrinėtame pratime. Programoje skaitmenų atpažinimo sąlygoje ' O' pakeiskite į Ά ' . Patys simboliai eilutėje rašomi nuo pirmos vietos. Simbolių eilutės Turbo Paskalyje simbolių eilutei įsiminti yra labai patogus duomenų tipas .Simboliai (A. Kontrolinės užduotys 1. Netelpantys simboliai bus paprasčiausiai atmetami.eilutė. Jis žymimas žodžiu string. Tam vartojama standartinė funkcija L e n g t h . . ar elemento A[i] reikšmė yra iš intervalo Ό ' . nereikia. kiek eilutėje iš viso yra simbolių. ar ne per daug simbolių. Iš tikrųjų užrašas [ Ό ' . Jeigu eilutės simbolius reikia nagrinėti atskirai. { n bus lygu 16 (tiek simbolių yra eilutėje A) } . tai atsakymas bus True. Ką reikėtų pakeisti programoje. ' 9 ']. Katinas'. Nuliniu indeksu eilutėje bus užrašytas dešimtas (10) simbolis pagal kodų lentelę. užuot pačiam vėl programavus. Šitaip rašome.4. Dabar programa turėtų ekrane parodyti visos surinktos eilutės didžiąsias raides. tai vartojame ciklus.tai tam tikras simbolių masyvas. ' 9 ' . Tikrinti. kad eilutė . Eilutėje A saugoma 10 simbolių. integer. Matome. kai norime nustatyti. n). Jei taip.False. A := 'Antarktida'. kad ji tiktų surinktos eilutės lotynų abėcėlės mažosioms raidėms parodyti ekrane? 5. 'Batuotas n := L e n g t h (A). Tik tas kiekis rašomas ne skaičiumi. ' 9 ' ] reiškia skaitmenų aibę. 3. Tuomet būtina žinoti. Šį tipą galima laikyti aprašytu šitaip: type string = array [0. ο '9' į 'Z'. Procedūroje S k a i t m u o sąlyginio sakinio lyginimo sąlygą pakeiskite šitokia: A[i] in [' O ' . Skaitmuo (A. kad gausite tą patį rezultatą.. 2. n). Lotynų abėcėlės didžiosios raidės kodų lentelėje yra surašytos iš eilės. bet jį atitinkančiu simboliu kodų lentelėje. Įsitikinkite. Darbui su tokio tipo duomenimis (eilutėmis) yra sudaryta nemažai standartinių procedūrų ir funkcijų. ar kairėje pusėje parašyta reikšmė priklauso dešinėje pusėje nurodytai aibei. Pavyzdžiui: var A : string.255] of char. todėl programuotojui labai patogu jomis pakeisti daugelį veiksmų. .

Jeigu įvedant klaviatūra bus surinkta ilgesnė eilutė. ' 9 ' ] then Write (A[i]:3). W r i t e L n ( ' E i l u t ė j e buvo t o k i e s k a i t m e n y s : ' ) . B l a c k ) . ) { var A : string. Jos aprašomos šalia laužtiniuose skliaustuose nurodant jų ilgį. begin L a n g a s (1. y l . { Skaitmenų paieška masyve } p r o c e d u r e Skaitmuo (var A : s t r i n g ) . y2). T e x t C o l o r (Black).Perdarykime ankstesnio skyrelio programą. Daugiau simbolių nebus reikalaujama. var i : integer. TextColor (Green). 50. TextBackground (spalva). Ji gerokai supaprastės. . y l . ClrScr. tai pirmiausia aprašome jos tipą. begin L a n g a s (10. Jeigu reikia keliose aprašų vietose panaudoti tą patį eilutės tipą. ReadLn. 80. pavyzdžiui: type Eil = string [15]. W h i t e ) . begin WriteLn ( ' S u r i n k i t e simbolių e i l u t ę .. tuomet eilutė bus trumpesnė. ReadLn (A). tačiau čia to nenagrinėsime. pvz. tai perskaičius 15-ąjį simbolį eilutė bus baigta skaityti. end. χ 2 . uses Crt. f o r i := 1 t o L e n g t h (A) do i f A[i] i n [ ' 0 ' . Eilutę vartosime žodžiams (arba žodžių sekai. end. end. x2. pavyzdžiui: var A : string[15]. pavardei ir vardui) įsiminti. Su eilutėmis galima atlikti įvairiausius veiksmus. S i m b o l i a i (A). { Simbolių eilutės įvedimas } p r o c e d u r e L a n g a s ( x l . p r o g r a m P5_6a. { Tarp skaitmenų paliekami du tarpai } WriteLn. y2. ' ) . Labai naudinga programose vartoti sutrumpintas eilutes. begin Window ( x l . { Skaitmenų paieška eilutėje } p r o c e d u r e S i m b o l i a i (var A : s t r i n g ) . . Tokia eilutė gali turėti tik iki 15 simbolių. 15. Jeigu įvedant bus surinkta mažiau simbolių. s p a l v a : i n t e g e r ) . S k a i t m u o (A). 10. 25. 1.

n : integer). const L = 30.. ReadLn (n). begin Write ('Kiek k l a s ė j e moksleivių? '). begin к := 0. WriteLn ( ' Į v e s k i t e moksleivio pavardę i r ūgį:'). T i n k a = 170.var a : Eil. Daugumoje uždavinių tekstinė ir skaitmeninė informacija neatskiriamos. var i : integer. C[k] := A[i]. v a r B : Mas. uses Crt. b : Eil. 7 pratimas. L] of r e a l . Veiksmuose vienodai traktuojami ir simboliniai duomenys. end. var k : integer). . n : integer. var C : Mokiniai. } . kad pretenduoti gali ne žemesni kaip 170 cm ūgio moksleiviai. var n : integer). ' P a v a r d ė : '). p r o g r a m P5_7. Panagrinėkime paprastą uždavi- S 5 . Kurie moksleiviai gali būti kandidatai į mokyklos krepšinio komandą? Tarkime. L ] of Mas string. end. = a r r a y [1. f o r i := 1 t o n do i f B[i] > T i n k a t h e n b e g i n к := к + 1. f o r i := 1 t o n do begin W r i t e ( i . ir skaičiai. v a r B : Mas. Writeln. i p r o c e d u r e R e z u l t a t a i (var A : Mokiniai. var i : integer. ReadLn (B[i]) end. ReadLn (A[i]). { Mokinių ūgiai } I } p r o c e d u r e Duomenys ( v a r A : M o k i n i a i . end. t y p e M o k i n i a i = a r r a y [ 1 . W r i t e (' Ū g i s : '). begin WriteLn ( ' K r e p š i n i o komanda'). kuriame nurodyta kiekvieno moksleivio pavardė ir ūgis. Tarkime turime klasės mokinių sąrašą. ( } p r o c e d u r e K a n d i d a t a i ( v a r A : M o k i n i a i . var i : integer.

end. reikia nepamiršti įvertinti ir tokio atvejo. mokomąjį dalyką ir to dalyko pažymius. Mokinio pavardė. Tuo atveju vidurkis turi būti nulis. y l . { Kandidatų pavardės } k : integer. ) . k). Žinome mokinio pavardę. R e z u l t a t a i (Kand. Duomenys įvedami klaviatūra. A[i]). ' ' . y2). TextBackground (spalva). Kontrolinių duomenų Testo numeris } pavyzdys Tikrinamas atvejis Mokinių skaičius Pavardė Ugis Rezultatas Yra kandidatų Jonaitis Keras Lapinas 171 165 178 1 Jonaitis 2 Lapinas Nėra kandidatų Petraitis Rimša 169 165 Kandidatų nėra Si 5. I l g i s . t y p e Mas = a r r a y [ 1 .i f n = O t h e n WriteLn (' K a n d i d a t ų n ė r a ' ) . s p a l v a : i n t e g e r ) . vardas ir dalyko pavadinimas bus įvedami klaviatūra atskiromis eilutėmis. Tam programoje numatomas dialogas: programa pati paprašo. n). end. n : integer. k). 2 5 ] of { integer. y l . n. Pažymiai bus pateikiami vienoje eilutėje. Kand : M o k i n i a i . . kada ką įvesti. begin Window ( x l . uses Crt. p r o c e d u r e L a n g a s ( x l . p r o g r a m P5_8. vardą. K a n d i d a t a i (Pav. I l g i s . end. ReadLn. ClrScr.8 pratimas. Žodžiams įsiminti bus vartojamas eilutės tipas s t r i n g . Kand. x2. Duomenys (Pav. I var pav : Mokiniai. f o r i := 1 t o n do W r i t e L n ( i . Reikia suskaičiuoti mokinio to dalyko aritmetinį vidurkį ir jo įvertinimą pažymiu (suapvalintą sveikųjų skaičių tikslumu). Skaičiuojant vidurkį. i l g i s : Mas. x2. begin ClrScr. atskiriant juos bent vienu tarpu. kai mokinys negavo nė vieno pažymio. y2.

40. 3. v : real. d a l y k a s ) . M a g e n t a ) . ReadLn. v a r d . { Pažymių vidurkio skaičiavimas p r o c e d u r e V i d u r k i s ( v a r A . V i d u r k i s (A. var vid : real). B l a c k ) . Mas. n. end. v a r d . begin T e x t C o l o r ( B l a c k ) . 13. L a n g a s (5. p a v . vard. W r i t e L n ( d a l y k a s . Write ('Pavardė : Write ('Vardas : ') ReadLn (vard). 10. pav. 2 5. v a r n : i n t e g e r . ' ' . var s : real. d a l y k a s : s t r i n g ) .Duomenų apie mokinį įvedimas p r o c e d u r e Duomenys ( v a r A : Mas. end. ReadLn (pav). begin L a n g a s (5. ReadLn. begin s := 0. W r i t e ( ' D a l y k a s : ') ReadLn ( d a l y k a s ) . n : i n t e g e r . v a r d ) . f o r i := 1 t o n do s := s + A[i]. v). W r i t e L n (pav. d a l y k a s : s t r i n g . L a n g a s (1. 7. 40. v a r pav.= n + 1. n : i n t e g e r . v:8:3). G r e e n ) . 80. Round (v)). w h i l e n o t E o l n do begin n . end. n. { v a r A : Mas. W r i t e ( ' P a ž y m i a i : '): n := 0. end. W r i t e L n ( ' V i d u r k i s = ' . 1. . Duomenys (A. ' į v e r t i n t a p a ž y m i u : ' . R e a d (A[n]). if n > 0 ( A r sąraše buvo bent vienas pažymys? t h e n v i d := s / n e l s e v i d := 0. i : integer.

taip ir kiekvienas programuotojas savaip parašo programą konkrečiam uždaviniui spręsti. kelių moksleivių ūgis didesnis ir kelių mažesnis už vidutinį ūgį. kad mokinys tikrai negali gauti daugiau kaip 25 pažymius per trimestrą. 5. Pateikiame vieno uždavinio keletą sprendimo variantų. 7. kurio aukštis Ta. bet ir nuo duomenų interpretacijos tame masyve.8 pratimo programa dirba tik su vieno mokinio duomenimis. Reikia išdėstyti dienas pradedant nuo šalčiausių. tačiau jį būtina kūrybiškai taikyti konkrečiuose uždaviniuose.5. o surinkus pasisveikintų. Papildykite pažymių įvedimą apsauga. apdorojusi vieno mokinio duomenis. Duotame skaičių masyve sukeiskite vietomis didžiausią ir mažiausią elementą.Kontrolinės užduotys 1. Išbandykite programą surinkdami trumpesni.8 pratimo eilutę s t r i n g pakeiskite sutrumpinta. 6. Juliau! 2. Klaviatūra įvedami sveikieji teigiami skaičiai. Pertvarkykite programą taip. kurių kiekvieno skersmuo žinomas. Nustatykite. Programose daroma prielaida. 10. Skaičių įvedimo pabaiga bus tuomet. taip pat nustatyti. išdėstydami elementus atvirkščia tvarka. Jeigu taip. jeigu jūsų vardas Julius. 5. kuriuos universalius sukurti taip pat neįmanoma). Žinomi klasės mokinių ūgiai. Išvadas padarykite patys. kuri komanda laimėjo pirmąją ir kuri antrąją vietą. o plotis Tp.8 pratimo programoje nėra apsaugos įvedant pažymius. kuri iš tokių programų yra geresnė (būtini griežti programų vertinimo kriterijai.ilgesnį tekstą. . 8. tai programa ekrane turėtų parašyti: Sveikas. kuri paprašytų surinkti jūsų vardą. θ 5. Žinomi kiekvienos komandos surinkti taškai. 5. 4. Nėra bendrų ir universalių nurodymų. kad duomenys bus įvesti teisingai ir kad bus įvestas bent vienas skaičius. kai įvesime nulį (0) arba neigiamą skaičių. Duomenys pateikiami centimetrais. kuris iš jų turi daugiausiai skirtingų skaitmenų. Nustatykite. Turime vieno mėnesio kiekvienos dienos oro temperatūros vidurdienį duomenis. Parašykite programą. Kokio didžiausio skersmens sviedinys gali pralįsti per tvoros plyšį ir kiek tokio skersmens sviedinių yra? 9. po to . 3. Pavyzdžiui. Duomenų struktūrų pasirinkimas Masyvas yra labai populiari duomenų struktūra. Vieno masyvo elementus perrašykite į kitą. tai reikia kartoti visus veiksmus. Programos apimtis ir sudėtingumas priklauso ne tik nuo pasirinkto masyvo tipo. jų atvaizdavimo būdo masyve. paklaustų vartotojo. ar norima apdoroti kito mokinio duomenis. 5. Tikimasi. Vaikų darželyje yra N sviedinių. Reika pasakyti. 5.9pratimas. Kaip kiekvienas uždavinys turi savo skirtingus spredimo būdus (ir ne vieną). N moksleivių komandų dalyvavavo bėgimo estafetės varžybose. Kartais net neįmanoma pasakyti. Reikia apskaičiuoti vidutinį moksleivio ūgį. kad ji. kiek sviedinių pralįs pro tvoros plyšį.

К := 0. .Procedūra Kiek randa. s 4 := 0. К : integer. [ Kiek kokių skaitmenų yra skaičiuje Skl w h i l e Sk <> 0 do begin b := Sk mod 10. Sk := Sk d i v 10. s3. begin ClrScr. kiek duotame skaičiuje Sk yra skirtingų skaitmenų. s 4 . s 9 := 0. begin sO := 0. s i s9 : i n t e g e r . v a r K v a r sO. kiek kokių skaitmenų yra skaičiuje. s 6 := 0. Sd : i n t e g e r . s 8 := 0. p r o c e d u r e K i e k (Sk : i n t e g e r . s7 := 0. Sk. s5. s2 := 0. Daug := 0. s 3 := 0. { Kiek skaičiuje Sk yra skirtingų skaitmenų? i f sO > 0 t h e n K К + 1. v a r Daug. s 2 . c a s e b of 0 sO = sO + 1 sl = sl + 1 1 s2 = s2 + 1 2 3 s3 = s3 + 1 4 s4 = s4 + 1 5 s5 = s5 + 1 s6 = s6 + 1 6 7 s 7 = s7 + 1 8 s8 = s8 + 1 9 s9 = s9 + 1 end: end. s6. s7. uses Crt. p r o g r a m Masl. if sl K + 1 0 then K i f s2 0 then K К + 1 i f s3 К + 1 0 then K i f s4 К + 1 0 then K i f s5 К + 1 0 then K if sб К + 1 0 then K i f s7 к + ι 0 then K i f s8 К + 1 0 then K i f s9 к + ι 0 then K end. Norint rasti. Sd := 0. s l . s l := 0. Nenaudojami masyvai. reikia 10 kintamųjų. s 5 := 0. Pirmas variantas. b : integer. integer). W r i t e ( ' Į v e s k i t e s k a i č i ų (0 r e i š k i a p a b a i g ą ) : ').

begin f o r i := O t o 9 do S k a i t m u o [ i ] := 0. f o r i := O t o 9 do i f S k a i t m u o [ i ] > O t h e n K := K + 1. b : integer. . skaitmenų: '). W r i t e (Sd:5). К). Naudojami masyvai. K : integer. w h i l e Sk > O do } '). 10). ReadLn (Sk). GoToXY (5. t y p e Mas = a r r a y [ 0 . p r o g r a m Mas2. Skaitmenims suskaičiuoti vartojamas masyvas. kiek skaičiuje yra skaitmenų lygių nuliui (0).1. kad masyve nuliniu indeksu būtų įsiminta. . Antras variantas. f v a r Daug. K := 0. Patogu susitarti. W r i t e ( ' Į v e s k i t e s k a i č i ų (0 r e i š k i a p a b a i g ą ) : ReadLn (Sk). Sd := 0. begin ClrScr. end. W r i t e (Daug:5). w h i l e Sk <> 0 do begin b := Sk mod 10. v a r K : i n t e g e r ) . antru . i f К > Daug t h e n begin Daug := к. Daug := 0. 9 ] of { integer. end. Sk := Sk d i v 10. Sd : i n t e g e r .kiek lygių vienetui. T e x t C o l o r (Green). pirmu indeksu . v a r S k a i t m u o : Mas. i : i n t e g e r . uses Crt. end. ) p r o c e d u r e K i e k (Sk : i n t e g e r . T e x t C o l o r (Red ). W r i t e ( ' S k a i č i u s ' ) .kiek dvejetui ir 1. S k a i t m u o [ b ] := S k a i t m u o [ b ] + 1.R e a d L n (Sk). w h i l e Sk > O do begin K i e k (Sk. W r i t e ( ' Į v e s k i t e s k a i č i ų (O r e i š k i a p a b a i g ą ) : '). Sk. T e x t C o l o r (Green). W r i t e ( ' t u r i d a u g i a u s i a i s k i r t i n g ų T e x t C o l o r (Red ). Sd := Sk end.

end. šioje programoje to dar nedarėme. T e x t C o l o r (Red ). Sd. Naudojami masyvai.. jeigu ji atitinka duomenų skaičiaus užrašymo reikalavimus. if K > Daug then begin Daug := K. Sd := ". Ankstesnis variantas nepatogus tuo. Sd := Sk end. Write (' turi daugiausiai skirtingų skaitmenų: '). Kiekvienas skaitmuo bus atskiras masyvo elementas. uses Crt. I var Daug.'9'] of integer. Šiame variante surinktai klaviatūra eilutei saugoti aprašysime s t r i n g tipo kintamąjį. ( } procedure Kiek (Sk : string. TextColor (Green). sim : char. while Sk o " do begin Kiek (Sk. TextColor (Red ). T e x t C o l o r (Green). 10). var K : integer). if K > Daug then begin Daug := K. Write ('Įveskite skaičių (O reiškia pabaigą): '). } . K : integer. GoToXY (5. paverčia reikiamu skaičiumi. program Mas3. Trečias variantas. K). ReadLn (Sk). Ankstesniuose programos variantuose gautą skaičių skaidėme į atskirus skaitmenis. kad klaviatūra įvedami duomenys yra simbolių seka. Write (Daug:5). Sk : string. Tolesniems skaičiavimams simbolius būtų galima paversti skaitmenimis. begin f o r s i m := Ό ' t o ' 9 ' do S k a i t m u o f s i m ] := 0. end. W r i t e (Sd:5). i : integer. W r i t e ( ' S k a i č i u s '). f o r i := 1 t o L e n g t h (Sk) do Skaitmuo[Sk[i]] := Skaitmuo[Sk[i]] + 1. Tada galėsime įvesti labai ilgą sveikąjį skaičių. kad galime įvesti tik nedidelius skaičius ( i n t e g e r nėra didelis). Daug := 0. Write ('Įveskite skaičių (O reiškia pabaigą): '). var Skaitmuo : Mas. K := 0. begin ClrScr. Pasinaudosime tuo. f o r s i m := Ό ' t o ' 9 ' do if Skaitmuofsim] > O then K := K + 1. Sd := Sk end. Procedūros Read ir ReadLn tą simbolių seką. K). type Mas = array [Ό'.begin Kiek (Sk. ReadLn (Sk).

B[5] := A[0]. 3. skaitmenų: '). T e x t C o l o r (Green). A[3] := -B[5]. B[0] := A[0]. Ar visi sakiniai žemiau pateiktuose pratimuose teisingi? Jeigu ne. в[0] := 5. A := в[8]. end. A[3] := в[9] * 3. var A : Mas. Mnim = array [1. T e x t C o l o r (Green). 1. W r i t e (Daug:5). 4. в := A. A := A. A := B. B[2] := B[2]. W r i t e (Sd:5). в[3] := в[0].10] of integer. 5. A[3] := в[0]. GoToXY (5. Kontroliniai pratimai 1. в[5] := -A[5]. B : Mmm. tai kurie neteisingi ir kodėl? Visų pratimų tipų ir kintamųjų aprašymai tokie: type Mas = array [1. A[4] := B[4] * 4. 2. A := 5. b[0] := A[0]. A[6] := 9. A[5] := A[3] + A[8]. b[0] := A[0]. 6. end. . B[3] := A[5]. B := A. A[2] := B. 10). ReadLn (Sk). T e x t C o l o r (Red ). A[0] := в[0]. W r i t e ( ' t u r i d a u g i a u s i a i s k i r t i n g ų T e x t C o l o r (Red ). B := A. A := в. A[0] := 5. A[0] := 9.Write ('Įveskite skaičių (0 reiškia pabaigą): '). в := в. в[6] := 9.10] of integer.. в[2] := A.. W r i t e ( ' S k a i č i u s ').

var A : Mas. Visų pratimų tipų ir kintamųjų aprašymai tokie: type Mas = array [1. к := 3. .0 ).2.0 . m := 8. к := 4.k + l ] := B[k]. 1. (A[k] > 0) a n d (B[k] > A[n]) t h e n B[m-k+l] := A[k] t h e n B[m-k+l] := A[k] e l s e A [ n . m := 8.1 2 . . e l s e A [ n .4 6 . 12.k + l ] := B[k]. .k + l ] := B[k]. 9.0 . к := 3. kokie skaičiai bus masyvuose A ir B.10] of integer. B : Mmm.10] of integer. if (B[k] > A[n]) 3. if (A[k] < 0) a n d (B[k] > A[n]) t h e n B[m-k+2] := A[k] t h e n A [ n . Mmm = array [1. 12.k + l ] := B[k] e l s e A[n-k+2] := B[k]. m := 8.0 ). 59. if (B[k] < A[n]) (A[k] < 0) a n d (B[k] > A[n]) t h e n B[m-k+l] := A[k] t h e n A [ n . Pradinės reikšmės masyvuose tokios: A = ( 5. к := 3. n := 6. 6. 66. if (A[k] < 0) a n d (B[k] > A[n]) 6. n := 6. (A[k] < 0) a n d n := 6. . к := 5.5 . m := 8. m := 8.5 . m := 8.0 . if 2. ..k + l ] := B[k] e l s e A [ n . к := 3. if 4. (A[k] < 0) a n d n := 6.5 6 . n := 6. . n := 6. Atlikite žemiau pateiktus pratimus ir parašykite. 0. В = (16. e l s e B[m-k+l] := A[k]. . 25. e l s e B[m-k+l] := A[k].

i := i + 2 . end. 6.A[i] + B[i]. n := 6. . n := 6. w h i l e ( i < m) a n d ( i < n) do begin if (A[i] > B[i]) if t h e n s := s + A[i] . B : Mmm. Mrnm = a r r a y [ 1 . s := 0. 4.5 . 25. end. . n := 6. end.B[i] e l s e s := s + A[i] + B[i]. m := 8. kokia bus S reikšmė. i := 0.1 2 . w h i l e ( i < m) a n d ( i < n) do begin if (A[i] > B[i]) i := i + 2 .A[i] . m := 8.4 6 . (A[i] < B[i]) then s := s + A[i] . 66.5 . i := i + 2 . if n := 6.5 6 .B[i] else s := s . end. of integer. i := 0.A[i] + B[i]. В = (16. var Pradinės reikšmės masyvuose tokios: A = ( 5. m := 7.A[i] . while (i < m) and (i < n) do begin 6. (A[i] < B[i]) e l s e s := s . end.0 ). 12. i := 0.0 . . 12. . 0. n := 6. w h i l e ( i < m) a n d ( i < n) do begin (A[i] < B[i]) t h e n s := s .3. s := 10. . s := 20.B[i]. Atlikite žemiau pateiktus pratimus ir parašykite.B[i] else s := s . m := 8. Visų pratimų tipų ir kintamųjų aprašymai tokie: t y p e Mas = a r r a y [ 1 .0 .A[i] + B[i] 5. m := 7. . i := 0. m := 8. 1.A[i] + B[i]. while (i < m) and (i < n) do begin if (A[i] < B[i]) then s := s + A[i] + B[i] else s := s . s := 10. 1 0 ] A : Mas. 9. end.0 . while (i < m) and (i < n) do begin if t h e n s := s .B[i]. s := 10. i := 1. 59.B[i] then s := s + A[i] . n := 6. 1 0 ] of integer. . i := i + 2 . . i := 1. e l s e s := s + A[i] .0 ). s := 10. 2. i := i + 2 . 3. i := i + 2 .

patikrinti ir įsitikinti. laikomas išorinėje kompiuterio atmintinėje. Bylos pabaigą žymi bylos pabaigos simbolis. Volfgangas Gėtė 6. kuri kitiems atrodė nepakeičiama. Byla dar vadinama rinkmena arba failu. Tekstinėse bylose duomenys pateikiami suskirstyti į eilutes. Sprendžiant uždavinius dažnai paranku atskirti pradinių duomenų parengimo.tekstines bylas . Bylų skaitymas ir rašymas Byla vadinamas duomenų rinkinys. kad jie teisingi. Paskalio kalboje yra keletas duomenų bylų rūšių. Ekrane eilučių ir bylos pabaigos simboliai nerodomi. Nagrinėsime tik pačias paprasčiausias . kaip tuščių žodžių. Tekstinės bylos Iki šiol spręsdami uždavinius visus pradinius duomenis įvesdavome naudodamiesi klaviatūra. ir frazė be minties bei Jausmo. man buvo neįmanoma. Tai galima padaryti šitaip: surašyti pradinius duomenis į bylas ir parengti tų bylų apdorojimo programas.ir tik tam. Todėl būtų kur kas geriau reikalingus programai duomenis paruošti iš anksto. jų apdorojimo ir rezultatų analizės procesus. kreipinys į kurią šitoks: Assign (BylosKintamasis. jei duomenų bent kiek daugiau . Programos aprašų dalyje darbui su tokiomis bylomis aprašomi bylos kintamieji. BylosVardas). kurių tipas nurodomas žodžiu t e x t . 6.programa turi laukti. Pradiniams duomenims ir rezultatams saugoti vartojamos tekstinio tipo bylos. be to. Tokie duomenų rinkiniai vadinami duomenų bylomis. ir tik tada pateikti duomenų rinkinį programai atlikti. lengvai galime suklysti. kad išmoktume skaityti byloje esančius pradinius duomenis bei surašyti gautus rezultatus į bylą. o rezultatus vėl įrašyti į bylas. kol surinksime duomenis.Savo gyvenime aš nieko kitko taip nesu bodėjęsis. kuris įrašomas automatiškai. Eilučių pabaigos žymimos specialiais simboliais. Programos pagrindinėje dalyje kiekvienas bylos kintamasis turi būti susietas su konkrečia operacinės sistemos byla. Bylai suteikiamas vardas. kuriuo duomenys nurodomi kompiuterio programoms. Tačiau tai nėra patogu.1. o pastebėjus klaidą dažnai jau neįmanoma ištaisyti. . Tai nurodoma standartine procedūra.

Skirtumas tik tas.. com.dat'). Duomenys. . skaitoma kita bylos eilutė ir tik tuomet jų reikšmės skirstomos kintamiesiems. Jei eilutėje duomenų būna per daug. doc. kitais atvejais reikšmė bus F a l s e . exe. A s s i g n (Byla. kad čia duomenys programai surašomi tokia seka. k2 ir 1. k l . Skaitymas iš bylos Jei norime skaityti byloje esančius duomenis. . Kiekviena vartotojo programa. A s s i g n ( B y l a .dat'. Bylos vardas sudaromas pagal tam tikras operacinių sistemų taisykles. Procedūra Read iš tekstinės bylos visuomet skaito tiek reikšmių. cpp ir pan. kad pradinių duomenų bylos turės prievardį d a t .bylą sudarančių eilučių pabaigai atpažinti bei visos bylos pabaigai nustatyti: E o L n (Bk) i r Eof (Bk). visur kitur bylą nurodo jos kintamasis. p p t . var Byla : t e x t . pertekliniai duomenys atmetami. . Galima sutarti. tačiau nepatariama duoti tokius. prievardį r e z . Duomenys iš bylos skaitomi panašiai kaip ir įvedant klaviatūra. kad ji iš pradžių perskaito visą eilutę ir tik po to skirsto duomenis kintamiesiems. k2 . į kurią turime kreiptis šitaip: R e s e t (Bk). Programoje bylos vardas tiesiogiai nurodomas tik procedūroje A s s i g n . asm. Jei jų trūksta. o rezultatų bylos. kiek jos antraštėje esama kintamųjų. Paskalio programos bylos privalo turėti prievardį p a s . . yra tekstinė byla. Tam yra standartinė procedūra. ) . Tekstinėse bylose esantys skaičiai turi būti atskirti tarpais arba eilutės pabaigos simboliais. 'Duomenys. k2. parašyta Turbo Paskaliu ir įrašyta į kompiuterio atmintinę. p a s . kai atitinkamoje eilutėje arba byloje perskaitomas paskutinis duomenų elementas. kokius priimta vartoti kitose gerai žinomose programose (pvz. ) . Baigus darbą su bylomis. kokia juos įvedame klaviatūra.Čia B y l o s V a r d a s nurodomas eilute (rašoma tarp apostrofų kaip įprasta simbolių eilutė) arba aprašant konstanta: 1 variantas 2 variantas c o n s t Bv = 'Duomenys. v a r Byla : t e x t . ReadLn (Bk. į kurią kreipiamės šitaip: Close (Bk). . perskaityti naudojant procedūras Read ir ReadLn. pavyzdžiui: R e a d (Bk. Panašiai sukuriama ir duomenų byla. į kurias programa surašys skaičiavimų duomenis. Procedūra ReadLn skiriasi tuo.1. priskiriami kintamiesiems k l . Duomenų byloms galima duoti bet kokius prievardžius. jas būtina uždaryti. pirmiausia turime paruošti bylą skaitymui. Šių funkcijų reikšmė lygi True. Tam yra standartinė procedūra R e s e t . Bv). Dar mums bus labai reikalingos dvi loginės funkcijos .). k l . . b a t . čia Bk .tekstinės bylos kintamasis.

ReadLn. Bylos uždarymas Prieš pradėdami vykdyti programą turime sukurti pradinių duomenų bylą. end end. Skaičių suma ) begin T e x t B a c k g r o u n d (Black). end. { Skaičiaus spausdinimas ekrane W r i t e (x:6). { Sumavimas } S := S + x. T e x t C o l o r (Red). S k a i t o (Duomenys. o sudarytą bylą įrašyti į darbinį katalogą. w h i l e n o t Eof (B) do begin { Skaičiaus skaitymas Į Read (B.B 6. { Rezultatų išvedimas į ekraną } W r i t e L n ('Suma: '. WriteLn ( ' B y l o j e r a s t i s k a i č i a i : ' ) . ' P 6 _ l . integer). uses Crt. suma:8). Tam patogiausia vartoti Turbo Paskalio terpės redaktorių. d a t ' surašytus skaičius. v a r S . dat pavyzdys 15 -5 12 5 2 8 5 6 45 5 4 -12 7 8 . Reikia susumuoti tekstinėje byloje ' P 6 _ l . {Pradinių duomenų byla v a r Duomenys : t e x t . ir gautą rezultatą parodyti ekrane. C l o s e (Duomenys). d a t ' ) . suma : integer. Suma). WriteLn. { Bylos parengimas skaitymui A s s i g n (Duomenys. Pradinių duomenų bylos P6_l. begin Pradinė reikšmė S := 0. R e s e t (Duomenys). p r o c e d u r e S k a i t o (var B : t e x t . program P6_l. T e x t C o l o r (Green).1 pratimas. C l r S c r . var χ : integer. W r i t e L n ( ' * * B y l o s duomenų s k a i t y m a s i r a p d o r o j i m a s * * ' ) . x).

V a r d a s ) . { Pradinių duomenų byla } begin ClrScr. Reikia susumuoti duotos tekstinės bylos kiekvienos atskiros eilutės skaičius ir gautus rezultatus parodyti ekrane. C l o s e (Duomenys). nurodantį katalogą.1 2 5 6 7 8 Suma: 105 Atsiminkite. end. Duomenų byla bus ta pati kaip ir ankstesniame pratime. suma := suma + χ. begin Eilutės numeris } n := 0. Kitaip sakinyje A s s i g n reikės nurodyti kelią.Ekrane bus išspausdinta: * * B y l o s duomenų s k a i t y m a s i r a p d o r o j i m a s * * Byloje r a s t i skaičiai: 15 2 45 . { Bylos uždarymas } ReadLn.2 pratimas. χ. p r o g r a m p6_2. kaip ir ją apdorojanti programa. suma:8).5 8 5 4 12 5 . A s s i g n (Duomenys. kad pradinių duomenų byla turi būti tame pačiame kataloge. W r i t e L n ( ' * * B y l o s duomenų s k a i t y m a s i r a p d o r o j i m a s * * ' ) . uses Crt. ' suma: ' . end. ReadLn (D). Perėjimas į naują eilutę } WriteLn ( ' E i l u t ė s n r .dat' Duomenų bylos vardas p r o c e d u r e S k a i t o (var D : text). Eilutės apdorojimas } w h i l e n o t EoLn (D) do begin Skaičiaus skaitymas } Read (D. Sumavimas } end. c o n s t V a r d a s = 'P6 1. suma : i n t e g e r . Eilutės numeris } n := n + 1. R e s e t (Duomenys). x). v a r n. n. S k a i t o (Duomenys). w h i l e n o t Eof (D) do Bylos skaitymas } begin Suma eilutei } suma := 0. H 6. . kuriame yra byla. end. {- v a r Duomenys : t e x t .

). WriteLn (Bk. const Vardasl = 'P6_l. tai joje esantys duomenys bus sunaikinti. ReadLn (D). 1 2 3 4 skaitymas ir a p d o r o j i m a s* * 62 suma: suma: suma: suma: 12 5 26 Rašymas į bylą Dabar panagrinėsime. Reikia susumuoti duotos tekstinės bylos kiekvienos atskiros eilutės skaičius. Rezultatai į bylas surašomi naudojant standartines procedūras.dat'. kl..3 pratimas. t. r e z ' . Procedūra WriteLn nuo Write skiriasi tuo.). bet ir surašyti į tekstinę bylą. įterpia eilučių pabaigos simbolius. nr. n := n + 1. uses Crt.. kaip surašyti rezultatus (duomenis) į bylą.Ekrane matysime tokius rezultatus: * * Bylos Eilutės Eilutės Eilutės Eilutės duomenų nr. R : { Duomenų bylos vardas } { Rezultatų bylos vardas } text). Jeigu jau yra byla tokiu vardu. . Jų savybės analogiškos atitinkamoms išvedimo į ekraną procedūroms. . p r o g r a m P6_3. Jeigu sakinyje Assign nurodytu vardu bylos nebuvo. nr. begin n := 0. Papildome ankstesnio pratimo programą reikalingais sakiniais. while (D) d o {{ IEilutės numeris Į { Bylos skaitymas ) E o L n (D) do { Suma eilutei } { Eilutės numeris } { Eilutės apdorojimas } suma := suma + x. integer. end. kl. tuomet bus sukurta nauja byla tokiu vardu. χ. procedure var Skaito n. Byla rašymui parengiama naudojant standartinę procedūrą Rewrite. o gautus rezultatus ne tik parodyti ekrane. { Skaičiaus skaitymas } { Sumavimas } not Eof begin suma := 0. { Perėjimas į naują eilutę } . kad ji sugrupuoja išvedamus duomenis eilutėmis. x ) . į kurias galima kreiptis Write (Bk.. y. nr. while not begin R e a d (D. Vardas2 = ' P 6 _ 3 . k2. į kurią galima kreiptis taip: Rewrite (Bk).. β 6. k2. s u m a (var : D.

Assign ( R e z u l t a t a i . Pakeiskite 6. nr. V a r d a s l ) . Pakeiskite 6. kad ji gale pateiktų ir visų duotos pradinės bylos skaičių sumą? 5. Kontrolinės užduotys 1. { Pradinių duomenų byla } { Rezultatų duomenų byla } begin ClrScr. Sudarykite programą.2 pratimo programą taip. kurie yra pirminiai. A s s i g n (Duomenys. 1 suma: 2 suma: 3 suma: 4 suma: 62 12 5 26 Rezultatų bylos duomenis galima pamatyti po to. Rezultatai). { Bylos uždarymas } Close (Rezultatai). Sudarykite programą. kiek duotoje pradinių duomenų byloje yra lyginių ir kiek nelyginių skaičių. kai programa baigia darbą. 2. ir surašytų juos į rezultatų bylą. var Duomenys : text. Close (Duomenys). Parenkite pradinių duomenų bylų pavyzdžių. end. kuri suskaičiuotų. 4.). R e s e t (Duomenys). Įtraukite šią procedūrą į programą ir išbandykite. Rezultatai : text. ' . 6. end. 3. kad ji atskirai susumuotų teigiamus ir atskirai neigiamus skaičius. Vardas2).{ Rezultatų išvedimas byloje } W r i t e L n (R.1 pratimo programą taip. suma:8). nr. n. ' E i l u t ė s n r . kad ji kiekvienoje eilutėje atskirai susumuotų teigiamus ir neigiamus skaičius. S k a i t o (Duomenys. ReadLn. W r i t e L n ( ' * * B y l o s duomenų s k a i t y m a s i r a p d o r o j i m a s * * ' ) . ' suma: ' . kuri iš duotos pradinių duomenų bylos (sveikųjų skaičių) išrinktų tuos skaičius. end.3 pratimo programą. nr. Rewrite ( R e z u l t a t a i ) . Kaip reikėtų papildyti 6. Gerai išnagrinėkite trupmeninių skaičių skaitymo procedūrą iš „Programavimo pradmenų uždavinyno" (174 psl. . Rezultatų byloje rasime: Eilutės Eilutės Eilutės Eilutės nr.

arbūzų skaičius } w h i l e n o t Eof (D) a n d (n < 100) do begin n := n + 1. Masyvo dydžio labai smarkiai didinti negalime. Kitose eilutėse surašyti arbūzų . Už jį lengvesni arbūzai netinkami prekybai. Pirmoje bylos pirmoje eilutėje parašyta ūkininko pavardė.4 pratimas. A [ i ] ) . Parašius programą parengiamas dokumentas (instrukcija vartotojui). didesni arba lygūs . kai duomenų skaičius iš anksto nežinomas. Visuose šios knygos pratimuose apdorosime tiek duomenų. kur buvo vartojamas šis skaičius). { D . end. būtina kiekvieną kartą patikrinti. kiek yra duomenų. Aišku. Galimi du būdai. kad pradinių duomenų yra daugiau negu telpa į masyvą. Duomenų skaitymas iš bylos į masyvą Turėjote pastebėti. nes kompiuterio atmintinė ribota. tuomet būtina duomenis surašyti taip. Ankstesnio skyriaus pratimuose skaitėme skaičius iš duotos duomenų bylos. Tačiau visuomet galima parašyti programas. Antroje eilutėje pateiktas skaičius . kai norime pakeisti masyvo dydį (nereikia ieškoti visų vietų. programa turėtų apie tai informuoti vartotoją.2. galima juos apdoroti dalimis. galima sutarti. kad programa juos teisingai perskaitytų. Jeigu pradinių duomenų byla sudaroma jau parašius programą. tai reikia programoje įvertinti duomenų surašymo į bylą struktūrą ir nuoseklumą. Čia maksimalus galimas duomenų skaičius 100 įrašytas tiesiog į ciklo sakinį. kurios pačios suskaičiuotų. ar masyve dar yra vietos naujam skaitomam skaičiui. Rašant duomenis iš bylos į masyvą. Jeigu paaiškės. kiek joje bus skaičių. Tuomet surašymo į masyvą programos fragmentas mažai kuo skirsis nuo skaitymo iš klaviatūros: Read (D. kaip paruošti pradinius duomenis. Tarkime. Vadinasi. Dabar pasimokykime surašyti skaitomus skaičius į masyvą. d a t . kuriame būtina nurodyti ne tik vartotojui reikalingas žinias apie programą. a 6. Kartais būna keblu suskaičiuoti. Tai sudėtingesnis procesas. Paprastai taip nedaroma. Geriau tą skaičių aprašyti programos pradžioje panaudojus konstantos vardą ir toliau vartoti šį vardą. ūkininko arbūzų derlius surašytas tekstinėje byloje P e t r a s . kiek ir kokių duomenų yra. n . Taip patogiau. n). II būdas. n . bet ir pamokyti. vardas ir derliaus nuėmimo data. o toliau pateikiami tų arbūzų svoriai. Pabandėme tai daryti ir atskiromis eilutėmis. kiek ūkininkas parsivežė arbūzų. A[n]). Kai duomenų daug.bylos kintamasis. kad byloje pirmasis skaičius reiškia. Pavyzdžiui.arbūzų kritinis svoris. Skaitymo į masyvą programos fragmentas atrodytų šitaip: n := 0. tai likusių duomenų galima nebeskaityti ir veiksmus atlikti tik su perskaitytais. jei duomenų byla paruošta anksčiau negu buvo rašoma programa.bylos kintamasis. Paprastai bylose saugoma daug duomenų. Bylos apimtį riboja tik fizinės disko galimybės. Pirmoje bylos eilutėje nurodoma. / būdas.6.arbūzų skaičius } for i := 1 t o n d o R e a d (D. R e a d (D. kad pradinių duomenų išdėstymas byloje ir skaitymo veiksmai tarpusavyje susieti. kiek jų tilps į nurodyto dydžio masyvą.tinkami. { D .

5 0. p r o g r a m P6_4.5 6 3 5 0. duomenims skirstyti į du masyvus. tik šiek tiek ją pakeitus. begin n := 0. kuri pateiktų ekrane arbūzų rūšiavimo į dvi krūvas rezultatus.3 Programa rašoma kaip nurodyta 5. y l . end. end.4 1. const Svoriai = 'Petras. ( p r o c e d u r e L a n g a s ( x l . begin Window ( x l . masyvo duomenims apdoroti (svorių sumai rasti) ir rezultatams išvesti į ekraną.dat'.2 4 Petras 2 2000 . Svarbiausi pakeitimai paryškinti.3 pratime.5 10 15 1. x2 = 40. kad procedūros antraštėje esantis bylos parametras turi būti kintamojo tipo. type { Pranešimų langas } NN = 100. y2). kitame . y2 = 5. 0 9 . ( ( p r o c e d u r e Duomenys ( v a r D : t e x t . 1 5 4 2. Atkreipkite dėmesį. y l . kiek kiekvienoje krūvoje yra arbūzų ir koks jų bendras svoris. Sudarome procedūras: duomenims skaityti iš bylos. TextBackground (spalva). ClrScr. x2. w h i l e n o t Eof (D) a n d (n < NN) do begin n := n + 1. x2. x l = 5. Reikia sudaryti programą. Visus pradinėje byloje pateiktus duomenis surašome į masyvą. y l = 2. s p a l v a : i n t e g e r ) . Mas = a r r a y [1. Turi būti nurodoma. A[n]). v a r A : Mas.. f o n a s = Green. uses Crt. . v a r n : i n t e g e r ) . Ekrane viename lange parodome pirmosios krūvos duomenis ir rezultatus. Pradinių duomenų bylos pavyzdys: Petraitis 2.5 1.NN] of real. y2.2 1. Pateikiame vieną iš daugelio galimų šio uždavinio sprendimo būdų. R e a d (D.svoriai.antrosios. end.

y2. ReadLn (Byla. string. text. Black). Byla paruošiama skaityti Skaitoma pirma eilutė } Skaitoma antra eilutė } Duomenų skaitymas } . Langas (5. v a r K2 : Mas. 3. Blue). Duomenys (Byla. WriteLn. k2. 1. 2 5 . integer. B l a c k ) . begin n l := 0. 1.procedure Skirstyti ( v a r A : Mas. L a n g a s ( x l . n Mas. n l . n : i n t e g e r ) . n). Langas (1. var i : integer. Pradiniai duomenys } Tinkami arbūzai } Netinkami arbūzai } Svoris rūšiavimui } Bylos kintamasis } Ūkininko pavardė. v a r Kl : Mas. 80. { { { { { { TextColor Assign (Byla. Green). integer. n2). kl. n : i n t e g e r . n2 real. 2. begin f o r i := 1 t o n do i f i mod 7 = 0 Skirstoma po 7 skaičius eilutėje } t h e n W r i t e L n (A[i]:7:2) e l s e W r i t e (A[i]:7:2). 78. integer. v a r n l : i n t e g e r . f o n a s ) . A. 75. A[i] + 1. 8 0 . Vardas). x2. ReadLn (Byla. ( 1 . Close (Byla). end. n l Mas. f o r i := 1 t o n do i f A[i] >= s v then begin n l := n l K l [ n l ] := end else begin n2 := n2 K2[n2] := end. y l . Reset (Byla). Svoriai). sv. S k i r s t y t i (A. 23. + 1. n2 := 0. } var A kl k2 sv Byla Vardas begin Langas : : : : : : Mas. 22. Langas (8. WriteLn (Vardas). sv). s v : r e a l . A[i] p r o c e d u r e R o d y t i ( v a r A : Mas. var i : integer. n. v a r n2 : i n t e g e r ) . 25. end. vardas ir data } (Black).

6. Pagrindinėje programos dalyje prieš rezultatų išvedimą parašykite sakinius: A s s i g n (Byla. nes ankstesnė jo reikšmė (duomenų byla) nebereikalinga (byla jau uždaryta). '). WriteLn ('Netinkamų arbūzų sąrašas: R o d y t i (k2. end. galite aprašyti naują bylos . arbūzų sąrašas: '). Kontrolinės užduotys 1. T e x t C o l o r (Magenta). Arbūzų rūšiavimo programai parenkite didelę pradinių duomenų bylą (turinčią ne mažiau kaip 100 arbūzų svorių). Dabar paruoškite rezultatams rašyti naują bylą. WriteLn ('Tinkamų arbūzų s ą r a š a s : R o d y t i (kl. n2). Programos teksto pradžioje aprašykite konstantą: const Rezultatai = 'Petras. jei norite. Nukopijuokite (užrašykite) 6. θ 6.4 pratime parodytam duomenų surašymui iš bylos j masyvą. Masyvo duomenis išvesti į ekraną irgi mokame.4 pratimo programą kitu vardu.rez'. Bylos kintamasis B y l a gali būti panaudotas dar kartą. '). n). R e z u l t a t a i ) . Duomenų rašymas iš masyvo į bylą Rezultatus į bylą rašyti jau pabandėme. var A : Mas. Kuri procedūra iš esmės skiriasi ir kodėl? 2. Pakeiskite duomenų išvedimo procedūrą R o d y t i šitaip: p r o c e d u r e Rodyti (var Byla : t e x t . A[i]:7:2) e l s e W r i t e ( B y l a . ReadLn. Išbandykite programą su šia byla. begin f o r i := 1 t o n do { Skirstoma po 7 skaičius į eilutę } if i mod 7 = 0 t h e n W r i t e L n ( B y l a . Atidžiai palyginkite 5.3 ir 6. var i : integer. n : i n t e g e r ) . T e x t C o l o r (Red).4 pratimų programas.3. R e s e t (Byla). Duomenų surašymas iš masyvo į bylą analogiškas 6.WriteLn ( ' P r a d i n i s R o d y t i (A.5 pratimas. Tačiau. A[i]:7:2). W r i t e L n (Byla). nl).

Antrojo intervalo riba parenkama teigiant. 'Tinkamų a r b ū z ų s ą r a š a s : '). kurią rasite aktyviajame kataloge. Pakeiskite skaitymo procedūrą taip. 100]. Čia arbūzą. ' P r a d i n i s s ą r a š a s : '). Tai viena ar keletas reikšmių. 01). Jis saugo informaciją apie bylą. W r i t e L n (Byla. C l o s e ir kitų. Duomenis skaitančiai procedūrai būtina pateikti duomenų atrinkimo požymį. n2). k l . R o d y t i ( O u t p u t . R e z u l t a t a i ) . s . kurias tenkinantys duomenys turi būti perkelti į masyvą. bet ir byloje. o programą papildyti naujais kintamaisiais intervalo rėžiams įsiminti. k2. Vardas). 6. Pagrindinėje programoje turėtų būti šitokie papildymai: A s s i g n (Byla. tai bylų rezultatams šios spalvos jokio poveikio nedarys. rezultatus matysime ekrane. a 6. o tik jų dalis.4. R o d y t i (Byla. kad vietoj kintamojo B y l a parašę vardą O u t p u t . kurių svoris yra iš duotojo intervalo. ir ekranui.6 pratimas. Close (Byla). jeigu ji tinkama. . Tai labai patogu. Programą papildykite naujais kreipiniais į masyvo išvedimo procedūrą: R o d y t i ( B y l a . nes tas nurodymas galioja tik ekranui. A. Turbo Paskalyje yra tekstinės bylos kintamasis O u t p u t . W r i t e L n (Byla. A. W r i t e L n (Byla. Bylai O u t p u t negalima vartoti procedūrų A s s i g n . kiek vienu metu galima turėti tokių kintamųjų.4 pratimo programą kitu vardu. skirtų darbui su bylomis. Priešingu atveju dalies rezultatų galite nerasti. ir jose nurodomos spalvos. kad sunkesnio kaip 100 kg arbūzo tikrai nebus. Jų skaičių riboja turima kompiuterio atmintinės talpa. kurios vieta yra kompiuterio ekranas. Perrašykite 6. kurio svoris šiek tiek mažesnis už s. ir tada atsirinkinėti tinkamus. Programa pateiks rezultatus ne tik ekrane. 'Netinkamų a r b ū z ų s ą r a š a s : '). Turbo Paskalyje nėra pasakyta. W r i t e L n (Byla. Rewrite (byla). Tuomet netikslinga visus duomenis skaityti į masyvą. laikome netinkamu. Tegu bus tai pirmajai krūvai intervalas [0. Jei procedūros sudaromos drauge ir byloms. Nepamirškite uždaryti bylą. R o d y t i ( B y l a . R o d y t i ( B y l a . n). o antrajai [s. kad ji iš pradinių duomenų bylos išrinktų tik tuos arbūzus. nl). rašoma į masyvą.0 . Tai reiškia. A. Intervalų reikšmes galima įrašyti į antrą bylos eilutę (kaip ir s reikšmę). Duomenų grupavimas skaitant iš bylos Skaičiavimams dažnai reikalingi ne visi iš karto byloje esantys duomenys. nes naudojant tą pačią procedūrą R o d y t i galima surašyti rezultatus į reikalingą bylą diske ir ekrane. Tai galima padaryti skaitant: perskaityta reikšmė analizuojama ir. n).kintamąjį. n).

Mas = a r r a y [1. y2). end. ClrScr. ( s v >= v l ) a n d ( s v <= v2) then begin n := n + 1.rez'. y l = 2.NN] o f real. v2 : r e a l ) . x2 = 40. end. var sv : real. reikės du kartus skaityti bylą. uses Crt. kad norint gauti tuos pačius rezultatus. const Svoriai = 'Petras. ) p r o c e d u r e L a n g a s ( x l . y2. begin f o r i := 1 t o n do i f i mod 7 = 0 t h e n W r i t e L n (B. v l . ( } procedure Duomenys (var D : text. Reikės arba dar kartą skaityti bylą. y l . x2. s p a l v a : i n t e g e r ) . arba praleisti tas eilutes: masyvo skaitymo procedūrai visuomet būtina pateikti bylą.Pertvarkius skaitymą akivaizdu. R e a d (D. w h i l e n o t Eof (D) a n d (n < NN) do begin R e a d (D. TextBackground (spalva). { Pranešimų langas } f o n a s = Green. paruoštą skaityti duomenis nuo reikalingos vietos. type ( NN = 100. Rezultatai = 'Petras. v a r A : Mas. end. Reikia nepamiršti. v a r n : i n t e g e r .. x l = 5. begin n := 0. var i : integer. x2.dat'. n : i n t e g e r ) . y l . if sv). ( } procedure Rodyti (var B : text. p r o g r a m Рб_б. end. y2 = 5. begin Window ( x l . Procedūra R e s e t paruoš bylą skaityti. A[i]:7:2) . kad pradinių duomenų bylos pirmosiose dviejose eilutėse yra papildoma informacija. A[n]). v a r A : Mas.

Mas. 23. 25. 0 1 ) . nl). (Magenta). (Byla. (Black). A[i]:7:2). 25. TextColor { WriteLn '). kl. : : : Mas. '). n2. (8. k2. s . s. W r i t e L n (Byla. W r i t e L n (В). WriteLn ('Netinkamų arbūzų sąrašas: R o d y t i ( O u t p u t . 1. k2. R e a d L n ( B y l a . 100). 80. B l a c k ) . 78. Assign } ( x l . 2. Vardas). Rezultatai surašomi į bylą (Byla. (1. 'Netinkamų a r b ū z ų s ą r a š a s : R o d y t i ( B y l a . R e s e t (Byla). ReadLn (Byla). B l u e ) . '). kl. y l . S v o r i a i ) . end. 22. arbūzų sąrašas: '). n2 : i n t e g e r . C l o s e (Byla). ReadLn. G r e e n ) . TextColor (Red). Kl. C l o s e (Byla). (5. 80. r e a l . { Ribinis svoris } text. 'Tinkamų (Byla. WriteLn ('Tinkamų arbūzų s ą r a š a s : Rodyti (Output. y2. n2). { Langas Langas Langas Langas WriteLn Rezultatai rodomi ekrane (Vardas). Rewrite } (Byla). O. T e x t C o l o r A s s i g n ( B y l a . Duomenys ( B y l a . n l . R e z u l t a t a i ) . B l a c k ) . ReadLn ( B y l a .0 . string. . 3. Duomenys ( B y l a . C l o s e (Byla). V a r d a s ) . 75. end. s). K2. { var kl k2 s Byla Vardas : . n2). x2. nl). begin L a n g a s (1. ReadLn (Byla). n l : i n t e g e r .e l s e W r i t e (B. f o n a s ) . R e s e t (Byla). 1. WriteLn Rodyti (Byla.

4 pratimo programai išbandyti. Toliau surašyti dalykų gauti pažymiai per metus. Mokinio metų mokymosi rezultatai surašyti tekstinėje byloje.1. Surikiuokite masyvuose esančius skaičius mažėjančiai.Kontrolinės užduotys 1. bet suskaičiuotus vidurkius. pirmoje iš jų parašytas dalyko pavadinimas. jeigu šeši. Antrojoje to dalyko gauti įvertinimai. kai duomenys yra tekstinėje byloje ir rezultatus reikia pateikti ne tik ekrane. Čia yra keletas sudėtingesnių uždavinių.tai trikampis ir 1. kur yra to trikampio duomenys. bet ir byloje. pavardė ir kasė.93 Metinis 8 . taip pat rasti. Duotoje pradinių duomenų byloje surašyti sveikieji skaičiai. Reikia rasti. Pavyzdžiui: Snieguolė Miškinytė Lietuvių kalba 8 9 10 10 8 9 5a klasė 7 10 10 10 10 9 10 6 10 Programavimo p a g r i n d a i 5 6 7 8 9 10 10 10 10 Matematika Reikia išvesti ekrane ir byloje mokinio metinius rezultatus pagal dalykus ir galutinį įvertinimą. tai jais apibrėžtas taškas. Pavyzdžiui: Snieguolė Miškinytė Lietuvių kalba: 9 Matematika: 9 Programavimo p a g r i n d a i : 8 5a k l a s ė 9 8. jeigu keturi skaičiai. y). plotą ir eilutės numerį byloje.72 įvertinimas: 9 . Parenkite keletą pradinių duomenų bylų 6. Nurodyti ne tik išvestus pažymius. Jeigu eilutėje yra du skaičiai. Rezultatus įrašykite į dvi atskiras bylas. kraštinių ilgius. 1.tai tiesės atkarpa. . Vienam dalykui skirtos dvi eilutės. skirtų trikampiams. Pirmoje eilutėje parašytas mokinio vardas. vietoje pradinių duomenų byla skaitoma antrą kartą? Kurioje 2. 2. . kiek byloje yra eilučių.86 8. kuri perskaitytų tuos skaičius ir sugrupuotų juos į du masyvus: atskirai teigiamus ir atskirai neigiamus. kuris tų trikampių yra didžiausio ploto: ekrane išspausdinti to trikampio viršūnių koordinates. Savarankiško darbo užduotys Visi iki šiol duoti uždaviniai pritaikomi atvejui. Tekstinėje byloje eilutėmis surašytos geometrinių figūrų viršūnių koordinatės (χ. Parašykite programą.

Palangos autobusų stotyje kontrolieriai visą parą registravo. Antroje sužymėjo. kurios liko laisvos: raide K žymėjo keleivį. Kiekvienam automobiliui skyrė dvi eilutes.neužimtą vietą. Tai surašė į tekstinę bylą. Eilutės ilgis reiškia vietų skaičių automobilyje. raide L . Pavyzdžiui: LKA-1254 R Vilnius KKKKLLLLLKKLLLLLKLLLLK A15-B32 Utena LLLLKLK Automobilio efektyvumą galima išreikšti keleivių skaičiaus ir automobilio vietų skaičiaus santykio reikšme (užpildymo koeficientas). Ribinis vietų skaičius N. Pirmoje parašė automobilio numerį ir maršrutą. sudaryta tik iš raidžių K ir L. pagal kurį galima nustatyti. Reikia nustatyti: a) kuris automobilis efektyviausias. koks yra automobilis (mažas ar didelis). .3. Lietuvoje keleiviai vežiojami mažais automobiliais (juose ne daugiau kaip N vietų) ir dideliais (vietų skaičius didesnis kaip N). Taip buvo gauta simbolių eilutė. įvedamas klaviatūra. kiek kokiu maršrutu išvažiavo keleivių. c) visų automobilių paros efektyvumą. kurios vietos užimtos. b) kurie automobiliai (dideli ar maži) efektyvesni. Visose bylos eilutėse tekstas pradedamas rašyti nuo eilutės pradžios.

Vieno masyvo reikėtų pavardėms. Todėl labai svarbu suvokti įrašo prasmę ir mokėti naudotis juo sudarant programas. tai reikėtų aprašyti daug masyvų.nieko neveikiant.įrašu. Tai nėra sudėtinga. padaro programą vaizdžią ir lengvai skaitomą. kaip reikia. Įrašas skirtas sujungti į visumą skirtingo tipo duomenis. o visas gyvenimas . Įrašo sąvoka Bent kiek didesnėse programose dažnai prireikia įvairių tarpusavyje susijusių duomenų. dar vieno gimimo datai ir 1. tai masyvu jų neaprašysi. v a r d : adresas : telefonas : profesija: lytis : svoris : gim_data : telefonas : string[15]. Kam nors gal ir atrodo. duomenis apie asmenį galima aprašyti šitaip: v a r pav. string[25]. Reikėtų susitarti. longint.vardams.Įsižiūrėk atidžiai. kad ši duomenų struktūra nėra labai svarbi . jas išvesti. char.juk ir be jos galima rašyti programas. atlikti leistinus veiksmus su kiekvieno iš jų reikšmėmis jau mokame. kad visuose masyvuose pirmieji elementai nusakytų . .1. Pavyzdžiui. 7. Tačiau ką daryti. Tektų aprašinėti kiekvieną duomenį atskirai. Pavardė ir vardas Gimimo data Įvesti šitokių kintamųjų reikšmes. tačiau ji labai pagerina programavimo stilių. tektų vartoti masyvą. Įrašas Šiame skyriuje susipažinsime su dar viena duomenų struktūra . 7.veikiant ne taip.pamatysi. Kadangi jie paprastai skirtingo tipo. kito .1. padeda išvengti klaidų. ką jau esame išmokę. o kadangi jame duomenys turi būti vienodo tipo. norint įvesti dviejų asmenų duomenis? Reikėtų dvigubai daugiau kintamųjų. didelė dalis . kad didžiausia gyvenimo dalis praeina mums darant klaidas. string. real. O jeigu prireiktų turėti duomenis apie visus mokyklos mokinius ir mokytojus? Aišku. susistemina duomenis. string[10]. longint.

naudojami sudėtiniai vardai.vieno vienoks. Pratime parodyta. kito kitoks. Turime šitokius duomenis apie mokinį: pavardė. Bendra įrašo tipo schema parodyta 23 pav. Įrašo laukų tipai gali būti įvairūs . . Kitas būdas racionalesnis . pavyzdžiui: v a r Alma : Asmuo. Paskalyje tam skirta struktūra vadinama įrašu. β 7. longint. kaip tai daroma naudojant procedūrą G e t D a t e . d i e n a .vard. klasė. kuri yra Dos modulyje ir kreipinys į kurią šitoks: G e t D a t e ( m e t a i . kad programos vartotojas įvestų metus klaviatūra. Paprasčiausia paprašyti. Taigi anksčiau pateiktus duomenis apie asmenį galėtume nusakyti šitokia struktūra: t y p e Asmuo = r e c o r d pav. kuriame surašyti visi duomenys apie jį (o ne daug pasų su atskirais duomenimis). Duomenys įvedami klaviatūra.pirmojo žmogaus duomenis. vadinamos laukais. string[10]. sudaryti iš dviejų dalių: kintamojo vardo ir lauko vardo. Tokia duomenų struktūra nepatogi dėl didelio kintamųjų skaičiaus. Norint sužinoti. išvedant. kad nė vienoje klasėje nebuvo antramečių.paimti kompiuteryje esančią datą.pav. vardas. Alma. Tai galima padaryti dviem būdais.antrojo ir 1. antrieji . kad asmeniui skiriamas vienas pasas. Reikia nustatyti. galimų klaidų įvedant. Tokias galimybes turi visos programavimo kalbos. Žinome. pavyzdžiui: Alma.1. A l m a .1 pratimas. t e l e f o n a s . Įrašas {record) laukų sąrašas -(end) - Laukų sąrašas 23 pav. atliekant veiksmus. sav_diena). mėnuo. kelerių metų mokinys pirmą kartą įžengė klasėn. gimimo data. kelerių metų amžiaus būdamas mokinys pradėjo lankyti mokyklą. vard lytis gim_data telefonas end. char. : : : : string[15]. reikia žinoti dabartinius metus. Tarp jų išvardijamos įrašo sudedamosios dalys. Žinoma. atskirtų tašku. kur kas patogiau būtų visus duomenis aprašyti viena struktūra. Nurodomas kiekvieno lauko vardas ir tipas. Įrašo tipo sintaksės diagrama Įrašo aprašas pradedamas žodžiu r e c o r d ir baigiamas žodžiu end. Kreipiantis į tokio kintamojo laukus. Dabar pakanka turėti tik vieną kintamąjį. Be abejonės.

a . tai bus teisingas sakinys: Ml := M2. v a r M : Mokinys. kad priskyrimo operacija teisinga. g_mt. min. Jūs žinote. begin W r i t e ( ' M o k i n i o p a v a r d ė : '): Write ('Mokinio vardas : ') Write ('Mokinio k l a s ė : '): W r i t e ( ' M o k i n i o gimimo m e t a i : W r i t e ( ' M o k i n i o gimimo mėnuo: W r i t e ( ' M o k i n i o gimimo d i e n a : end. g_dn : i n t e g e r . (M. Dos modulyje rasite ir daugiau jums naudingų priemonių. d). M . d : word.M. p r o c e d u r e Duomenys ( v a r M : Mokinys). kad jeigu turime du kintamuosius Ml ir M2 ir abiejų duomenų tipai yra Mokinys. v a r d . W r i t e L n (M. k l . program P7_l. c. ' m o k o s i ' . Mokinys = r e c o r d pav. ' ' .vard). k l . Dauguma realių programų savo darbo rezultatus surašo į bylas. . g_dn). kad dešinėje pusėje esančio kintamojo reikšmės kopijuojamos į kairėje pusėje nurodytą kintamąjį. u s e s C r t . seklOO). Duomenys (M). (M. W r i t e L n ( ' M o k i n y s : '). c. b. kuri pateikia kompiuterio laikrodžio laiką: G e t T i m e ( v a i . end. Dos.pav. kurių sukūrimo data ir net laikas nurodomi. g_mn. Tai reiškia. b. ' k l a s ė j e ' ) .M . M . s e k . jeigu kairėje ir dešinėje operacijos ženklo pusėse yra to paties tipo arba tapatūs pagal tipą užrašai. D o s modulyje rasite dar vieną labai naudingą procedūrą. a. kl : integer.Čia parametrų tipas turi būti word. Šis užrašas reiškia.kl). G e t D a t e (a. Pavardė ir vardas Klasė } Gimimo metai } Gimimo mėnuo ] Gimimo diena } ReadLn ReadLn ReadLn ReadLn ReadLn ReadLn (M. metų'). Pasinaudokite tomis procedūromis. begin ClrScr. W r i t e L n ( ' M o k y k l ą p r a d ė j o l a n k y t i ' . type E i l = string[15].g_mt . Parametrai kreipinyje turi būti word tipo. (M. (M. (M. ' ReadLn.g_mt). end.pav). v a r d : E i l . g_mn).

7. papildytą jungtuku w i t h . kaip to reikalauja programa. Tai daryti nebūtina. Tam panaudokite procedūrą. arba dar blogiau .). taigi šiuo atveju rašysime įrašo tipo vardą. Jungtuko w i t h galiojimo sritis nurodoma skliaustais b e g i n ir end. kad tie duomenys būtų surašyti tiksliai pagal sutartas taisykles. papildykite programą. 3. kaip matematiniuose reiškiniuose bendrus daugiklius prieš skliaustus.Atkreipkite dėmesį. bet naudinga. Įveskite šiuos duomenis. Vadovėlyje pateiktą 7.4 pratimus iš „Programavimo pradmenų uždavinyno" (123-124 psl. Įrašų masyvai Daugumoje programų tenka apdoroti duomenis. tai įrašo vardą. Siame vadovėlyje laikysimės nuostatos. 5 ] of Mokinys. Nerašant skliaustų.2. Papildykite sakiniais. Masyvo apraše po žodelio of parašomas duomenų tipas. Jei abejojate savo atsakymais.1 pratimo programą .aprašykite antrąjį kintamąjį kito mokinio duomenims laikyti. Įrašo tipo duomenys paprastai skaitomi iš bylų ir saugomi įrašų masyvuose. nes naudojant jungtuką nukenčia programos vaizdumas. Išbandykite. 4. Duomenis apie mokinius išveskite į ekraną. kl. nes priešingu atveju programa neveiks. Pratimo programoje galėjome parašyti trumpiau: w i t h M do W r i t e L n (pav. Jungtuką w i t h vartokite atsargiai tik nedideliems užrašams trumpinti. Toliau modifikuokite 7. vard. Pritaikykite jungtuką duomenų įvedimo sakinių grupei. ' klasėje'). Išnagrinėkite 6. . Vyresniojo mokinio duomenis spausdinkite ekrane. Jeigu su to paties įrašo laukais atliekama keletas veiksmų.1 pratimo programą. ' mokosi '. kad tai galioja tik priskyrimo operacijai. pavyzdžiui: t y p e Mas = a r r a y [ 1 . ' '. būtent taip. Jokie kiti veiksmai su viso įrašo tipo duomenimis negalimi. Ar rezultatai spausdinami pakankamai vaizdžiai? Jei ne. . kuris iš mokinių yra vyresnis. kad pateikiami duomenys paruošti tinkamai. Tokių masyvo tipo aprašas niekuo nesiskiria nuo anksčiau nagrinėtų. jungtukas galioja tik vienam po jo einančiam sakiniui. didesnė galimybė suklysti. Itin svarbu. Duomenų teisingumo tikrinimo problemos nespręsime. 2. sunkiau suprasti programą.1 pratimo programą išbandykite kompiuteriu su įvairiais pradiniais duomenimis.duos klaidingus rezultatus. Kontrolinės užduotys 1. galima iškelti prieš veiksmus aprašančius sakinius. Modifikuokite 7.1-6. Jeigu didelės naudos iš jungtuko negaunate. patikrinkite kompiuteriu. geriau jo atsisakyti. kad būtų galima nustatyti. Duomenis paprastai tikrina specialios tam sudarytos programos.

y. Užrašas M [ i ] . Skaitant eilutės ( s t r i n g ) tipo duomenis. Pirmiausia būtina parinkti vaizdžią ir patogią žmogui formą. p a v := ' P e t r a i t i s ' . kada ką galima padaryti geriau. kurioje buvo nutrauktas ankstesnis skaitymas. Taigi turint pradinius duomenis. jeigu turime kintamąjį A. skaityti baigiama tada. nes programuojamas dialogas ir įvedama kiekvieno lauko reikšmė atskirai. kuris nurodytų skaičiaus pabaigą. esančius sąraše M. Jį komplikuoja ne programavimo. Jeigu po skaičiaus seka simboliai ( s t r i n g arba c h a r tipo duomenys). tai bus paliekama mažiau klaidų. nuo tarpo simbolio. bet ir neefektyvu. imami visi bylos eilutėje nurodyti simboliai eilės tvarka nuo tos vietos. Būtinas bent vienas tarpo simbolis. tačiau tik rašant programas galima pajusti. Tas tarpo simbolis nepriskiriamas prie tolesnių duomenų. kurio tipas s t r i n g [ 1 0 ] . Pavyzdžiui. kaip juos tinkamai surašyti byloje. kai visi jie perskaityti. Toliau pabandysime iliustruoti tai pavyzdžiais. Simboliai ir simbolių eilutės ( c h a r ir s t r i n g tipo duomenys) skaitomi iš eilės. Indeksuotas kintamasis M[i] nurodys i-ojo mokinio duomenis. Klaviatūra įvedant įrašo tipo duomenis didelių sunkumų nekyla. tai jų negalima pradėti rašyti tuoj po skaičiaus. Įsidėmėkite tai. kadangi būtina tvarkingai surašyti juos į bylą ir suderinti su įvedimo sakiniais. tai: .Po to galima aprašyti kintamuosius. Šiuos duomenis galima priskyrimo veiksmu kopijuoti: A := M[i]. Tada ir duomenų įvedimo procedūra bus paprastesnė. Kiek kitaip yra su skaičiais. A : Mokinys. iki jo pradžios esantys tarpai praleidžiami. Kaip ir anksčiau. Galima taikyti jungtuką w i t h : w i t h M[i] do begin v a r d := ' P e t r a s ' . pavyzdžiui: v a r M : Mas. . o duomenų rengimo sunkumai. . kad duomenų skaitymas iš bylos būtų kaip galint paprastesnis. Toliau skaityti vėl pradedama ties ta vieta. reikia gerai apgalvoti. Skaičius skiriame bent vienu tarpo simboliu. nurodant konkrečius duomenis vartojami sudėtiniai vardai. Jeigu duomenis byloje bus patogu ir lengva surašyti. Sudėtingiausias veiksmas yra duomenų įvedimas. Toliau reikia pasistengti. Įrašo tipo duomenų skaitymas paprastas.kai yra mažiau kaip 10 simbolių. o skaitymo pabaigą nurodo pirmasis sutiktas tarpas po skaičiaus (arba eilutės pabaigos simbolis). nes duomenis parašytai programai rengs jos vartotojas. end. Todėl reikia mokėti juo atsikratyti. skaityti baigiama perskaičius dešimtąjį simbolį. kaip pateikti. Byloje rašyti kiekvieno lauko reikšmę į atskirą eilutę ne tik nepatogu ir nevaizdu. kiek jo tipo aprašyme nurodyta. Skaitymas baigiamas. Skaitant skaičių.kai yra daugiau kaip 10 simbolių. kai sutinkama eilutės pabaiga arba kai perskaityta tiek simbolių. ties kuria buvo baigtas ankstesnis skaitymas. Todėl duomenys rašomi eilutėmis. kai eilutėje yra tik skaičiai. v a r d rodys i-ojo mokinio vardą. t.

klasė ir dalykų metinių pažymių aritmetinis vidurkis. Naudojantis pirmoje eilutėje parašytais skaičiais lengviau atskaičiuoti poziciją nuo eilutės pradžios. klasė ir vidurkis. taigi skaičius.2pratimas. { Duomenų byla } type Eil = string[15]. Rašant duomenų įvedimo programą būtinai reikės į šią tvarką atsižvelgti. Pavardė bus pradedama rašyti nuo eilutės pradžios. { Didžiausias galimas mokinių skaičius } Duomenys = ' M o k i n i a i . o vardas . vardas. o stačiakampėliais kitos pozicijos. Duomenys surašyti byloje eilutėmis. rašome toliau. skirta puikiai besimokančių mokinių skaičiui nustatyti. Reikia rasti. Dos.procedūra duomenims skaityti iš bylos į masyvą.8 Petraitis Petras 5 8 Vilkas Arūnas 8 9.В 7. Programoje numatomos dvi procedūros: . { Klasė } vid : real. c o n s t NN = 1 0 0 . y. vardas. v a r d : E i l . Vardo užrašo pabaiga yra 30-a pozicija. Duomenų surašymą galime atvaizduoti tokia schema: 10 Petraitis Kazlauskas Paberžauskaitė 20 30 «ППППППППП-Г 5 9 12 Petras Liutauras Skirmantė 9. pozicijos eilutėje. Pradinių duomenų bylos pavyzdys: Burokas Jurgis 8 8. 20-a.5 8.5 Žaldokas Linas 8 8 p r o g r a m P7_2. N N ] o f M o k i n y s . Mokinys = r e c o r d pav.1. u s e s C r t .procedūra. kurių suapvalintas mokymosi vidurkis lygus 10). Mas = a r r a y [ 1 . { Vidurkis } end. . kurie reiškia klasę ir mokymosi vidurkį.9 Čia antroje eilutėje taškais pažymėtos 1-a.5 9. Turime mokinių sąrašą: pavardė. kiek mokinių mokosi puikiai (t. . byla skaitymui paruošiama procedūros viduje.5 Kazlauskas Vytautas 9 7 Morkaitė Rima 9 9.pradedant nuo šešioliktos pozicijos (vieta eilutėje). Kiekvienam mokiniui skirta viena eilutė. { Pavardė ir vardas kl : integer. 10-a. Duomenų surašymo tvarka pasirinkta. 30-a ir 1. Į . kad tokio ilgio pakaks). Duomenys rašomi tokia tvarka: pavardė. d a t ' . Pavardei ir vardui skiriame po 15 simbolių (tikimės.

Yra funkcija Round. k l . n : i n t e g e r . var M к a.p r o c e d u r e S k a i t y t i ( v a r A : Mas. с. b.5. n := 0. Pratimo 7. f o r i := 1 t o n do i f A[i] . Pakeiskite procedūroje Rasti lyginimo sakinio sąlygą į tokią: Round (A[i]. ' . C l o s e (B). end. w h i l e n o t Eof (B) a n d (n < NN) do begin n := n + 1. c:2). n : i n t e g e r . ' . Duomenys). integer.2 programoje puikiai besimokantys buvo tie. ' . k). v a r d . b:2. G e t D a t e (a. R a s t i (M. d begin ClrScr. ar nepasikeitė rezultatas. a:4. pav. kurių vidurkis didesnis arba lygus 9. v a r n : i n t e g e r ) . n. Kontrolinės užduotys 1. n). 5 t h e n к := к + 1. var i : integer. .vid) = 10 Patikrinkite. ' . c. end. var к : integer). R e s e t (В). begin к := 0. w i t h A[n] do ReadLn (B. ' . end. Mas. k). begin A s s i g n (B. v i d ) . p r o c e d u r e R a s t i ( v a r A : Mas.5) y r a : ReadLn. ' . kad programa išspausdintų puikiai besimokančių mokinių duomenis. v i d > = 9 . d).2 programą papildykite taip. var B : text. WriteLn ( ' P u i k i a i b e s i m o k a n č i ų mokinių ( v i d u r k i s >=9. W r i t e L n ( ' D a t a . { Mokinių sąrašas } { Puikiai besimokančių skaičius S k a i t y t i (M. 2. Pratimo 7. kuri randa artimiausią duotam realiajam skaičiui sveikąjį skaičių. b. word.

puikiai besimokančių mokinių ūgio aritmetinį vidurkį. tačiau esant didelės apimties masyvams reikės daugiau atminties. v l . Tai itin efektyvu masyvams. skaičių. Parametrais. Procedūra turi grąžinti skaičių mokinių. Pavyzdžiui. o duomenų bylą . Kompiuteris sugaiš nedaug laiko. Gali būti. kuriems nurodomas žodelis v a r . Išbandykite programą su įvairiais kontroliniais duomenimis. .2 pratimas) papildykime veiksmais atrinkti mokiniams. kreipiantis bus daroma to masyvo kopija.kiekvieno mokinio ūgio reikšme. tai masyvui reikia tikrai daug atminties.2 pratimo procedūrą Rasti taip. var i : integer. { Duomenys } { Vidurkių intervalas } { Rezultatas } Pateiksime keletą patarimų. Procedūra gali būti tokia: p r o c e d u r e R i n k t i ( v a r A : Mas. kaip galima efektyviau ir suprantamiau rašyti programas.. Jei masyvas aprašytas reikšmės tipo parametru. 2. kurių mokymosi vidurkis būtų iš nurodyto intervalo. kurių ūgis didesnis kaip 170 cm. ir rezultatai. kurių mokymosi vidurkis yra iš nurodyto intervalo. Labai svarbu procedūrose parametrų pateikimo seka. kad ji rastų: . kad parametrais būtų galima nurodyti mokymosi vidurkių intervalą. . 1.aukščiausią mokinį (arba mokinius). Jei masyvo elementai sudėtingos įrašo struktūros (užima kelis šimtus baitų). Jie sėkmingai naudojami ir pradiniams duomenims perduoti. 4. Parametrai turi būti išdėstomi atsižvelgiant į pradinius duomenis ir rezultatus. . v a r n r : i n t e g e r ) . Pertvarkykite 7. galima parašyti vieną priskyrimo sakinį visam įrašui. Papildykite ankstesnio pratimo duomenų struktūrą nauju lauku ūgio reikšmei saugoti. žinomas kiekvieno klasės mokinio ūgis. v i d ) a n d ( A [ i ] . Toliau parametrai grupuojami pagal jų paskirtį (pvz.3. masyvas ir jo elementų skaičius). kai reikia perduoti daug duomenų. Tarkime. ne tik perduodami rezultatai. Todėl procedūroje Rinkti masyvo parametras A nurodytas kintamuoju. v i d <= v2) then begin к := к + 1. kad tie patys parametrai yra ir pradiniai duomenys. ankstesnio skyrelio programą (7. R[k] := A[i]. begin n r := 0. v2 : r e a l . 7. n : i n t e g e r .3. Pakeiskite programą taip.mokinių. f o r i := 1 t o n do i f ( v l <= A[i] . Veiksmai su įrašo tipo duomenimis Užuot taikius priskyrimo operaciją kiekvienam įrašo laukui atskirai. v a r R : Mas. end.

' ' . { 10 tarpo simbolių. nebūtina vartoti ciklą. kurie turi būti parenkami tokie.. ' ' . Yra paaiškinimas. Sąlyginiuose sakiniuose sąlygos sudaromos kaip galint suprantamiau. begin f o r i := 1 t o n do w i t h A[i] do W r i t e L n (Byla. o ne atvirkščiai?). kuris žodis reiškia pavardę. Įrašo tipo duomenis patogu išvesti eilutėmis laukų reikšmes lygiuojant pagal stulpelius. if Did < A[i] then . Išvedant eilutės tipo duomenis. Nuo jos priklauso. kiek vietos skiriama išvedamai eilutei). kaip greitai ir teisingai suprasime rezultatus ir. tuomet reikšmė išvedama lygiuojant iš dešinės: nepanaudota vieta paliekama kaip tarpai prieš reikšmę. . Šitaip trumpiau bei lengviau suvokti. kuris paso numeris. Procedūroje Rinkti galima keliais būdais teisingai parašyti sąlygą. kuris skaičius yra asmens kodas. '. kad Rimas Jonas yra žmogus pavarde Rimas ir vardu Jonas. . v a r d . Jeigu jis yra didesnis.antrasis gali klaidinti. tuomet kintamasis A turės tik 4 simbolius. 5. jas papildant tarpo simboliais gale. Masyvo elemento viso įrašo priskyrimas R[k] := A[i] yra teisingesnis vartojimo požiūriu negu priskyrimas atskirais laukais. Įrašo tipo masyvo duomenims surašyti į bylą galima sudaryti tokią procedūrą. jeigu jis yra per mažas išvedamai reikšmei. galima vartoti formatą (sveikąjį skaičių. Pavyzdžiui. Štai kad ir jūsų pasas. pav. } Čia pasinaudojama savybe. n : i n t e g e r ) . Kasdieniniame gyvenime informacija beveik visuomet papildoma paaiškinimais. nes jis turi ženklą > (daugiau). Labai svarbu yra duomenų išvedimo ekrane ar byloje forma. Norint užpildyti eilutę iki galo. kad duomenys gražiai atrodytų ir informacija būtų aiškiai suvokiama.1.vid <= V2. Pavyzdžiui. var i : integer.. nurodantį. ' end. kuris vardą (beje. ar be paaiškinimo atskiltumėte. p r o c e d u r e Rodyti (var Byla : t e x t .3.. Galima parašyti priskyrimo sakinį: A := A + ' '. Lygiavimą galima atlikti naudojantis išvedimo formatais. ReadLn (A). Profesionalai vartos tik pirmąjį. Norint papildyti iki šešių simbolių. ar suvoksime jų teisingumą.. 4. čia pasirinkome dažniausiai vartojamą: Vl <= M[i]. Geriau yra visų išvedamų eilučių ilgius suvienodinti. var A : Eil. Jeigu klaviatūra surinkome žodį Rasa ir paspaudėme Enter klavišą. k l : 5 . Turbo Paskalyje išvedimo formatas ignoruojamas. galima parašyti: f o r i := L e n g t h (A) + 1 t o 10 do A := A + ' '. kad pertekliniai simboliai atmetami. išbaigtumą. v a r A : Mas. ir 1.. vid:7:2).. turime: type E i l = string[10]. svarbiausia. ieškant didžiausios reikšmės skaičių masyve A yra teisingi tokie užrašai: if A[i] > Did then .

begin WriteLn (Byla. Pabandysime suformuluoti populiariausią dokumento dalį . ': V a r d a s : P a v a r d ė : K l a s ė W r i t e L n (Byla. sim : char. *. Jas galima sudaryti iš simbolių I .Taigi ir programos išvedami duomenys turėtų būti paaiškinti. t. : Mokymosi : ' ) . begin W r i t e L n (Byla. Tam galima panaudoti linijas. Lentelės vaizdumui padeda vertikalios linijos. n : i n t e g e r ) . palengvintų suprasti išvedamus duomenis. ' W r i t e L n (Byla. pav.lentelę. ' '. fragmentai. ' end. : ir pan. Papildykite procedūrą Rodyti taip. sudarytas iš vienodų simbolių. Visoms lentelėms būtinos antraštės. Brūkšniui formuoti galima parašyti universalią procedūrą. sim). '. . WriteLn (Byla. v a r d . kl:5. v a r d . Simbolius reikėtų parinkti tokius. var i : integer. ' : '. ' '. kad lentelė būtų graži. pvz. : vid. ' : W r i t e L n (Byla. ': '. ' '. y. ': '). f o r i := 1 t o n do w i t h A[i] do W r i t e L n (Byla. užrašyto tarp apostrofų.: p r o c e d u r e L i n i j a (var Byla : t e x t . '). Paaiškinimus tikslinga atskirti nuo informacinių eilučių. paaiškinančios pateikiamus duomenis. n : i n t e g e r ) . kad ji sudarytų lentelę: p r o c e d u r e Rodyti (var Byla : t e x t . '). Procedūra Rodyti galėtų būti tokia: p r o c e d u r e Rodyti (var Byla : t e x t . n : i n t e g e r ) . ' '). W r i t e L n (Byla). var i : integer. kad jie netrukdytų skaityti dokumentą. dokumentuoti. begin f o r i := 1 t o n do W r i t e ( B y l a .'). v a r A : Mas. ' '). Vertikalių linijų elementai įterpiami kaip išvedami teksto. vid:7:2. Antraštę sudaro keletas eilučių. vid:7:2). WriteLn (Byla. ' Vardas Pavardė Klasė Mokymosi vid. v a r A : Mas. Tokia linija galima užbaigti lentelę. pav. var i : integer. Tai padaroma antraštės sakiniuose ir duomenų išvedimo sakiniuose. ': '. ': : : f o r i := 1 t o n do w i t h A[i] d o W r i t e L n (Byla. ' '). kl:5. WriteLn (Byla. : :'). :'). ': : : W r i t e L n (Byla. kaip parodyta pavyzdyje.

Algoritmas parodytas 25 pav. Duoti įvairių dalykų mokinių trimestro pažymiai.Lentelei reikalingi papildomi paaiškinimai. Būtina supaprastinti. Čia procedūra V i e n a s skaito duomenų bylos vienos eilutės duomenis. Eil2 = string[5]. { Masyvo dydis } type E i l l = string[25]. vid : real. kurių pažymių aritmetinis vidurkis ne mažesnis kaip 9. pažymiai (sveikieji skaičiai) iki eilutės galo skiriant juos bent vienu tarpu. Tam atliksime dvi procedūras. Programos struktūrograma parodyta 24 pav. Programa pradedama sukuriant reikalingas duomenų struktūras. todėl nedetalizuosime. o procedūrai paliksime darbo organizavimo funkcijas. Reikia sudaryti sąrašą mokinių. 5 0 ] of i n t e g e r . skaičiai) perduodami per parametrus. Ml = a r r a y [ 1 . formuoti naują masyvą. ar reikia jį saugoti masyve. Verta nurodyti lentelės suformavimo datą (gal ir laiką). pateiktus pradinėje duomenų byloje. Mūsų pavyzdyje tai gali būti eilutė su pranešimu. end. analizuoti jį. Vidurkio skaičiavimo funkciją jau aptarėme anksčiau. arba išvesti prieš kreipinį programoje. Duomenų skaitymo procedūra S k a i t y t i tampa sudėtinga: skaityti mokinio duomenis. Mokinys = r e c o r d pav : E i l l . arba programuotojo pavardė ir vardas. Vienoje eilutėje pateikiama: mokinio pavardė ir vardas (1-25 pozicijos). jeigu pranešimui reikalingi duomenys (tekstas. Mokykloje mokinių daug. adresas konsultacijai). Pakaks vidurkio. Tam reikės rasti mokinių pažymių aritmetinį vidurkį. Kadangi baigus programos darbą nereikalaujama parodyti pažymių.3 pratimas. skaičiuoti pažymių aritmetinį vidurkį. ar ne. netinkamus . tai nereikia jų ir saugoti. klasė (25-30 pozicijos). . Tai nesudėtinga. B 7. Tai gali būti padaryta procedūroje. Netikslinga visų duomenis. . Duomenis grupuosime skaitymo metu: tinkamus rašysime į masyvą. kokios mokyklos tas mokinių sąrašas. o po to atrinkti reikalingus į atskirą masyvą.praleisime. Tikslinga parašyti.. Duomenų struktūra gali būti šitokia. { Pavardė ir vardas } { Klasės šifras } { Mokymosi vidurkis } Mas = a r r a y [1. skaityti į masyvą. kokio vidurkio intervalo mokinių sąrašas arba kad tai visų mokinių sąrašas. Skaitydami duomenis iš karto nustatinėsime. c o n s t NN = 100.NN] of Mokinys. Duomenys byloje surašyti eilutėmis. Lentelės pabaigoje paprastai parašomas autorius (programos pavadinimas. Tam atskirsime veiksmus (įvesime tam reikalingas priemones). { Pažymiams užrašyti } Programoje aiškiai išsiskiria dvi dalys: duomenų skaitymas atrenkant tinkamus ir rezultatų išvedimas. kl : Eil2.

Skaitomi duomenys. A. Pabaiga 24 pav. Procedūros S k a i t y t i strukturograma p r o g r a m P7_3. Eil2 = string[5]. n) i Įvesti rezultatų bylos vardą Re z Klaviatūra įvedamas žodis. uses Crt. Mokinys = r e c o r d p a v : E i l 1. skirtas rezultatams. NN = 100. Prievardis r e z formuojamas programoje. { Klasės šifras } vid : real. (Duom. { Mokymosi vidurkis } end. type E i l l = string[25].dat'. Tai duomenų bylos vardas. Rezultatai = 'Atrinkti. Skaityti Masyvas A (n). n) Pradinių duomenų bylos paruošimas skaityti n = 0 k o l yra byloje duomenų ir jie telpa j masyvą Skaitomi požymiai: procedūra V i e n a s Randamas požymių vidurkis: funkcija V i d u r k i s jei v i d u r k i s > 9 Taip ^ ^ ^ ^ Ne n := n + 1 Mokinys įtraukiamas į masyvą Bylos uždarymas Pabaiga 25 pav. n) Pranešimai ekrane Sėkmingo darbo pabaigos pranešimai. { Pavardė ir vardas } kl : Eil2. c o n s t Duomenys = 'Mokykla.dat'. A. Rodyti Rezultatai A (n) išvedami lentele. Programos strukturograma ir paaiškinimai Procedūra: S k a i t y t i ( B y l a . Prievardis d a t formuojamas programoje. (Rez.Pradžia Įvesti duomenų bylos vardą Duom Klaviatūra įvedamas žodis. A. Tai rezultatų bylos vardas. .

v a r n : i n t e g e r ) . M . { Mokinių sąrašas } Ml { Pažymiai } = a r r a y [ 1 . v i d >= 9 then begin n := n + 1. N N ] of Mokinys. 5 0 ] of integer. { Pažymių skaitymas } w h i l e n o t E o l n ( B y l a ) do begin n := n + 1. w h i l e n o t Eof ( B y l a ) a n d (n < NN) do begin V i e n a s ( B y l a . v i d := V i d u r k i s (p. v a r n : i n t e g e r ) . M : Mokinys. end. v a r M : Mokinys. M. p r o c e d u r e V i e n a s (var B y l a : t e x t . R e s e t (Byla). R e a d ( B y l a . f o r i := 1 t o n do s := s + A[i]. v a r A : Ml. ReadLn (Byla). k). M . n := 0. A[n]). begin R e a d ( B y l a . к). C l o s e (Byla). end. v a r i. ( f u n c t i o n V i d u r k i s ( v a r A . v a r Byla : t e x t . i f M . A[n] := M. begin A s s i g n ( B y l a . p. end. Ml.Mas = a r r a y [ l . . n : i n t e g e r ) : r e a l . end. . end. i f n > 0 t h e n V i d u r k i s := s / n e l s e V i d u r k i s := 0. p : Ml. . n := 0. M. k l ) . begin s := 0. p r o c e d u r e S k a i t y t i ( v a r A : Mas. end. к : integer. Duomenys). s : i n t e g e r .pav.

Labai svarbu patikrinti. ' W r i t e L n (В. R e z u l t a t a i ) . A. Klasės šifrui skirtos sekančios 5 pozicijos. n). Byla : t e x t . vid:6:2. end. ' : f o r i := 1 t o n do w i t h W r i t e L n (В. W r i t e L n (В. ' : ' . A s s i g n ( B y l a . begin W r i t e L n (В. text. Mas. ' A t r i n k t ų m o k i n i ų s ą r a š a s : ' ) . '). Duomenis reikia ruošti itin kruopščiai. Duomenys. n : i n t e g e r ) . begin ClrScr. : Klasė : Vidurkis A[i] do ': '. :').p r o c e d u r e Rodyti (var B : var A : var i : integer. kl. ' : M o k i n y s W r i t e L n (B. W r i t e L n (Byla. Byloje negali būti tuščių eilučių. n : i n t e g e r . '). p a v . C l o s e (Byla). W r i t e L n ( ' I š b y l o s ' . ( } var A : Mas. R e w r i t e (Byla). ' a t r i n k t ų mokinių s ą r a š a s yra b y l o j e ReadLn. n). . :'). ': '. ' end. Pradinių duomenų bylos pavyzdys: Burokas Kazlauskas Jurgis Vytautas Morkutė Petraitis Vilkas Žemaitis Rima Petras Arūnas Linas 5a 8a 9b 8c 9a 8c 8 9 10 5 10 10 10 10 9 8 7 8 5 7 8 10 9 10 9 9 9 9 8 10 10 10 Mokinio pavardei ir vardui skirtos pirmosios 25 eilutės pozicijos. '. ': '). R o d y t i ( B y l a . Rezultatai). Pažymius galima pradėti rašyti nuo 31 pozicijos. ar po paskutinės duomenų eilutės nėra tuščių eilučių. S k a i t y t i (A.

Rezultatų bylos pavyzdys:
Atrinktų mokinių sąrašas:
Mokinys

: Klasė

Vidurkis :

Burokas

Jurgis

: 5a

9.71

:

Morkutė

Rima

: 9b

9.20:

:

Gauta programa yra gerokai sudėtingesnė už ankstesnes. Atkreipkite dėmesį, kad norint supaprastinti atskiras priemones, buvo įdiegta keletas papildomų priemonių, susietų
tarpusavyje laikantis tam tikros hierarchijos. Ją galima pavaizduoti schema, kuri vadinama
moduline. Stačiakampiu vaizduojamas programinis modulis (pagrindinė programa, funkcija, procedūra), kurio viduje užrašomas pavadinimas. Galima parašyti paaiškinimus kita
eilute. Stačiakampius jungia linijos. Jos gali prasidėti tik apatinėje stačiakampio kraštinėje
ir baigtis tik viršutinėje kito stačiakampio kraštinėje. Linija modeliuoja duomenų srautą
tarp modulių. Jeigu linijos turi galuose (ar tik viename) rodykles, tai jos nurodo duomenų
srauto kryptį. Rodyklės naudojamos retai.
Stačiakampiai schemoje braižomi hierarchiškai. Modulinė schema patogi pirmai pažinčiai su programa, ypač kai programa didoka. Naudinga tuo, kad matomi ryšiai tarp atskirų
programos elementų. Modifikuojant, keičiant, papildant, pritaikant naujiems poreikiams
programą, modulinė schema yra tarsi gidas, žemėlapis, kuris leidžia greitai ir sėkmingai
orientuotis programoje. Pratimo modulinė schema parodyta 26 pav.

26 pav. Programos p 7 _ 3 savarankiškų dalių
ryšių schema

Kontrolinės užduotys
1. Papildykite 7.2 pratimo programą šio skyrelio pradžioje pateikta procedūra R i n k t i ir
patikrinkite programos darbą. Tam reikia parašyti masyvo duomenų išvedimo procedūrą
arba keletą laikinai tam skirtų sakinių programoje.
2. Papildykite 7.2 pratimo programą procedūra R o d y t i ir ja naudodamiesi išveskite duomenų ir rezultatų masyvus į ekraną ir į bylą. Jei abu sąrašai ekrane netelpa (per daug
eilučių), tuomet po kiekvieno išvedimo ekrane parašykite ReadLn. Programa bus stabdoma tol, kol pasigėrėję duomenimis paspausite klavišą Enter.

7.4. Duomenų rikiavimas
Duomenų rikiavimas norima tvarka yra viena iš pagrindinių darbo su duomenimis operacijų. Netvarkinguose duomenų rinkiniuose rasti dominančią informaciją yra keblu ir
reikalauja daug pastangų, ypač kai duomenų labai daug. Pavyzdžiui, telefonų abonentų
knyga yra netvarkinga adreso požiūriu. Žinant tik dominančio žmogaus adresą (telefonas
registruotas ne jo pavarde), rasti telefono numerį mažai kam užteks kantrybės bandyti.
Tačiau surikiavus tokį sąrašą pagal adresą, paieška tampa greita ir patogi.
Rikiavimo algoritmų yra daug. Kiekvienas jų turi savo trūkumų ir privalumų.
Vienas paprasčiausių ir populiariausių algoritmų yra rikiavimas išrinkimo metodu. Yra
keletas jo modifikacijų. Viena jų buvo parodyta 5.5 pratime. Stai dar viena, rikiuojanti
masyvą A(n) mažėjimo tvarka:
Pradžia RikMinMax ( v a r A : m a s ;
Kintamieji C : r e a l ;
1

1,
j

i,

j

:

n :

integer)

integer

n-l

:= i + 1 ,

n

C := A [ i ] ;
A [ i ] := A [ j ] ;
A [ j l := C;
Pabaiga RikMinMax
27 pav.

Šiame algoritme tinkamas duomenų tipas gali būti:
t y p e mas = a r r a y [ 1 . . 1 0 0 ] of

real;

Išrinkimo algoritmo aprašymas:
- Masyve A tarp elementų a\, a2, аз, oų, ..., an ieškoma didesnio už a\ ir radus jis
sukeičiamas vietomis su pirmuoju a\.
- Toliau masyve A tarp elementų аг, аз, a 4 , ..., a n ieškoma didesnio už ai ir jis
sukeičiamas vietomis su antruoju a2 (pirmuoju paieškos intervale).
- Toliau masyve A tarp elementų аз, 04, ... an ieškoma didesnio už <23 ir jis sukeičiamas
vietomis su trečiuoju Ω3 (pirmuoju paieškos intervale).
- Veiksmai kartojami tol, kol intervale liks vienas elementas. Intervalo pradžią nusako
pirmojo ciklo parametras i .
Jeigu didžiausios reikšmės paieškos veiksme pakeisime ženklą > (daugiau) į < (mažiau), gausime mažiausios reikšmės paiešką. Tada duomenų masyvas bus rikiuojamas
didėjimo tvarka. Loginis reiškinys (A[j]>A[i]) vadinamas rikiavimo raktu. Nuo jo priklauso duomenų sutvarkymo pobūdis. Sudėtingose duomenų struktūrose šis reiškinys gali
būti sudėtingas.

Kontrolinės užduotys
1. Papildykite 7.3 pratimo programą procedūra, kuri surikiuotų masyvą mokinio pažymių,
gautų už įvairius dalykus, vidurkių mažėjimo tvarka.
p r o c e d u r e T v a r k a ( v a r A : Mas; n : i n t e g e r ) ;
v a r i, j : i n t e g e r ;
M
: Mokinys;
begin
f o r i := 1 t o n - 1 do
f o r j := i + 1 t o n do
if A[j].vid > A[i].vid
then begin
M := A[i];
A[i] := A[j];
A[j] := M;
end;
end;

Paskui įterpkite pagrindinėje programoje kreipinį į šią procedūrą, kad rezultatų masyvas
būtų surikiuotas. Įvykdykite programą. Dabar rezultatų lentelėje duomenys turės būti
surikiuoti pažymių vidurkių atžvilgiu.
2. Pakeiskite rikiavimo požymį šitokiu:
(A[j].vid > A[i].vid) or
( ( A [ j ] . v i d = A[i] . v i d ) a n d ( A [ j ] . k l < A [ i ] . k l ) ) .

Dabar, esant vienodiems vidurkiams, duomenys bus dėstomi pagal klases jų numerio
didėjimo tvarka. Galutinis rezultatas bus duomenys, surikiuoti pagal du požymius:
vidurkių mažėjimo ir klasės didėjimo tvarka. Antrasis požymis galioja kiekvienai lygių
vidurkių grupei.
3. Struktūros požiūriu programa efektyvesnė, jeigu rikiavimo požymis įforminamas funkcija. Ką tik aptartam požymiui gali būti parašyta tokia funkcija:
f u n c t i o n S u k e i s t i (A, B : M o k i n y s ) : b o o l e a n ;
begin
S u k e i s t i := ( A . v i d > B . v i d ) o r
((A.vid = B.vid) and (A.kl < B.kl))
end;

Patikrinkite pertvarkytą 7.3 pratimo programą su naujai parašyta funkcija.

Kontroliniai pratimai
1. Parašykite kintamojo A reikšmių įvedimo iš bylos programos fragmentą. Turime tokius
aprašus:
type Eil
= string[10];
Lapas = r e c o r d

var

a, b : E i l ;
c, d : r e a l
end;
A : Lapas;

Tekstinėje byloje yra tokia duomenų eilutė:
H Π 111 I n-DDDŪDDDDD-LJLlJ I l l l l t f
Rasa

Liepa

13.2

•••••••••D*
0.56

2. Pakartokite 1-ą pratimą, kai byloje duomenys pateikti trijose eilutėse:
ι·[ΠΓΕΓΠΕ·ι
13.2
Liepa
Rasa

•ddddddddd-dddc

H E -

0.56

3. Turime programos fragmentą:
c o n s t N = 10;
type E i l = string[N];
Asmuo = r e c o r d
pav, v a r d
pn
k
end;
v a r A : Asmuo;
F : text;
begin

Eil;
real;
integer;

Pavardė ir vardas ]
Turimi pinigai }
Banknotų skaičius

ReadLn (F, A. v a r d , А. к);
Read (F, A.pav);
ReadLn (F, A.pn);

Surašykite tekstinėje byloje duomenis apie asmenį taip, kad ką tik pateiktas programos
fragmentas juos tinkamai perskaitytų. Duomenų pavyzdys:
Pavardė: Petrauskas
Vardas: Algis
Turimi pinigai: 125,25
Dalis pinigų yra banknotais: 15.
4. Parašykite procedūrą kintamojo A visiems laukams užpildyti, kai duomenų byloje informacija pateikta dviem eilutėmis: pirmoje įrašyta pavardė ir vardas, o antroje - dalyko
pažymiai. Mokymosi aritmetiniam vidurkiui skaičiuoti parašykite funkciją ir ją panaudokite.

c o n s t N = 30;
t y p e E i l = s t r i n g [N];
Mas = a r r a y [1. . N] of i n t e g e r ;
Asmuo = r e c o r d
pav, v a r d : E i l ;
{
к
: integer; {
A
: Mas;
{
vid
: real;
{
end;
S a r = a r r a y [ 1 . . N ] of Asmuo; {
v a r A : Asmuo;
B : Sar; m : i n t e g e r ;
F : text;

Pavardė ir vardas }
Pažymių skaičius }
Pažymiai }
Mokymosi vidurkis }
Sąrašas }

5. Parašykite procedūrą masyvui B užpildyti naudojant ankstesnio pratimo duomenis bei
parašytas procedūras. Duomenų aprašai lieka tie patys.

Užduotys savarankiškam darbui
1. Bibliotekos lankytojų sąrašo tekstinę bylą sudaro: pavardė, vardas, skaitytojo bilieto numeris, knygų paėmimo data, paimtų knygų skaičius, kiek dienų leistina skaityti.
Reikia sudaryti skaitytojų, kurie vėluoja grąžinti knygas, sąrašą: pavardė, vardas, skaitytojo bilieto numeris, vėluojamas dienų skaičius, knygų skaičius. Taip pat reikia išvesti
dvi lenteles: duomenų ir skaičiavimų rezultatų.
2. Viešbučio gyventojų sąrašo tekstinę bylą sudaro: pavardė, vardas, atvykimo data, išvykimo data, kaina už parą. Reikia sudaryti sąrašą: pavardė, vardas, atvykimo data,
išvykimo data, mokestis. Duomenis ir rezultatus norima sutvarkyti pagal atvykimo datą.
Reikia išvesti dvi lenteles: duomenų ir skaičiavimų rezultatų.
3. Knygų sąrašą sudaro: autorius, pavadinimas, išleidimo metai, tiražas, kaina. Reikia
sudaryti sąrašą: autorius, pavadinimas, išleidimo metai, tiražo piniginė vertė; sutvarkyti
sąrašą pagal išleidimo datą. Reikia išvesti lenteles: duomenų ir skaičiavimų rezultatų.
4. Turime sąrašą: prekė, atvežimo į parduotuvę data, pardavimo data. Reikia sudaryti
sąrašą prekių, kurios buvo parduotos per ilgesnį laiką nei 5 dienos. Sąrašą reikia
sutvarkyti pagal prekių pavadinimą. Reikia išvesti dvi lenteles: duomenų ir skaičiavimų
rezultatų.
5. Turistinės grupės sąrašas toks: pavardė, vardas, amžius, profesija, lytis. Reikiasudaryti
nurodyto amžiaus moterų ir vyrų sąrašus: pavardė, vardas, amžius, profesija ir sutvarkyti juos pagal pavardes ir vardus. Reikia išvesti tris lenteles: duomenų ir skaičiavimų
rezultatų.
6. Turime gyventojų sąrašą: pavardė, vardas, adresas, gimimo metai. Reikia sudaryti
nurodyto amžiaus gyventojų sąrašą ir surikiuoti abėcėlės tvarka. Reikia išvesti lenteles:
duomenų ir skaičiavimų rezultatų.

Koeficientui skaičiuoti sugalvokite formulę.7. Reikia sudaryti finišo protokolą: sportininko vardas ir pavardė. Starto protokolas žinomas: sportininko pavardė ir vardas. Turime krepšininkų aktyvumo duomenis: pavardė. sekundės). tritaškių skaičius. Gautą sąrašą reikia sutvarkyti rezultatų mažėjimo tvarka. finišo laikas (valandos. sekundės). Išvesti lentelėmis duomenis ir rezultatus. kurioje būtų panaudoti visi duomenys apie sportininką. 8. Automatinis finišo registratorius sudarė sąrašą: starto numeris. naudingumo koeficientas. starto laikas (valandos. varžybų skaičius. starto numeris. sekundės). taškų skaičius. vardas. minutės. minutės. laikas (valandos. Sąrašą reikia surikiuoti koeficiento mažėjimo tvarka. minutės. starto numeris. vardas. Išvesti lenteles: duomenų ir skaičiavimų rezultatų. neįmestų baudų skaičius. įmestų baudų skaičius. Reikia sudaryti sąrašą: pavardė. .

kuriuos galima atlikti vienomis ar kitomis programomis. Susipažinti su čia pateikta medžiaga gali ir tik perskaitę pirmuosius knygos skyrius.Jam sunku apsispręsti. Šio skyriaus medžiaga turėtų būti naudinga pradedantiems rašyti programas savarankiškai arba su darbo grupe. Programa dialoginė. Pateiktą medžiagą gali nagrinėti skirtingą programavimo patirtį turintys mokiniai.1.konkretiems praktiniams darbams. testavimu. transliavimu į kompiuterio kalbą. . kas „perkrimto" visą knygą.tie. Šiaip ar taip. žinoma. vykdymu. kaip parengiamos programos. įgalinanti panaudoti universalų įrankį . kur sprendimo akimirką Jis net nenujautė atsidursiąs. Vartotojo nedomina. Vartotojui programa yra kompiuterių valdymo priemonė. ir. kurias lygiagrečiai gali kurti keli savarankiški programuotojai. išsaugojimu. Išsiaiškinę svarbiausias programavimo kalbos konstrukcijas ir įgiję bent nedidelę programavimo patirtį. žmogus iš tikrųjų pasineria veržlion srovėn. o svarbu tik programų teikiamos paslaugos darbai. paprasčiausi pratimai. sudaryta iš nepriklausomų dalių. Darydamas sprendimą. Mokantis programuoti iš pradžių rašomos nedidelės programėlės. kuri Jį nuneša ten. šiame skyriuje pateikta medžiaga teks naudotis ne kartą.Vaikinas vis dar dvejoja. Dabar Jis supranta vieną svarbią tiesą: sprendimas tėra tik ko nors pradžia.Alchemikas" 8. 8. redagavimu. kuriais aiškinamos programavimo kalbos konstrukcijos bei elementarūs algoritmai. Programavimo technologijos pradmenys Šiame skyriuje vaizdžiai pateiktas programos kūrimas naudojant struktūrinio projektavimo metodą (vadinamąjį „iš viršaus žemyn"). . Paulo Coelho .kompiuterį . Dar kitaip skaitys ir supras sukūrę bent keletą savų programų. ir nebūtina stengtis viską iš pat pradžių suvokti. Programos sudarymo etapai Programa paprastai suprantama kaip uždavinio sprendimo algoritmo pateikimas programavimo kalba. galėsite imtis sudėtingesnių praktinių programų projektavimo. Kartu reikia susipažinti su pagalbinėmis programų rengimo priemonėmis (programavimo terpe) ir pagrindiniais programų rengimo technologijos elementais: pirminio programos teksto paruošimu. kitokiu lygiu .

turite iš anksto susiplanuoti darbą. Kadangi kiekvienam duomenų tipui paprastai esti numatytas tik jam skirtas operacijų rinkinys. Šiame etape ieškoma programoje esančių netikslumų. naudoti įvairius formalius darbo planavimo ir programos struktūros projektavimo metodus. vadinamosiose parankinėse (toolbox). Sintaksės ir logikos klaidų paieška ir taisymas. Ruošiama dokumentacija (nurodymai) vartotojui. Duomenų analizė Pradedant kurti programą būtina išsiaiškinti. tai nuo duomenų vaizdavimo būdo parinkimo labai priklauso ir visos programos struktūra. kokių pagalbinių priemonių reikia ir kaip jas naudoti. Sprendžiamo uždavinio algoritmas aprašomas aukštesniu loginiu lygiu: aprašomi veiksmai atitinka jau ne paprastas kalbos konstrukcijas. Čia reikėtų bent apytiksliai numatyti programai reikalingus modulius (procedūras. kol gaunami paprasti.Programos rašymas ir derinimas.Užduoties analizė. Siūloma tokia supaprastinta struktūrinio projektavimo tvarka: . negalima parinkti duomenų struktūrų. modulių jungimas. Duomenų įvedimo paprogramių sudėtingumas priklauso nuo duomenų vaizdavimo būdo: kiek ir kokiose bylose jų saugoma. ar rašant programą įvertinti visi galimi duomenų variantai. kaip jas sujungti į vientisą programą. . Taigi šis etapas yra labai glaudžiai susijęs su uždavinio sprendimo algoritmo aprašymu. Dažniausiai tai daroma tikrinant programos darbą. Detalus užduoties nagrinėjimas siekiant išsiaiškinti programos argumentų (pirminių duomenų) ir rezultatų prasmę bei savybes ir parinkti arba sugalvoti uždavinio sprendimo algoritmą. Visas projektuojamai programai reikalingas priemones iš anksto numatyti sunku. . . Tai visos programos teksto rašymas. vartotojas gali susidaryti savo sukurtų pagalbinių priemonių bibliotekas. jų ryšius. tenka ieškoti atsakymų į daugelį su darbo organizavimo būdu susijusių klausimų: kaip sudėtingą uždavinį suskaidyti į smulkesnes dalis. Kad galėtumėte atsakyti į šiuos klausimus. ar rezultatai visais atvejais tenkina programos vartotoją. vėliau nuolat papildomas ir tikslinamas.Programos testavimas. . kaip ir dirbant bet kurį kitą didesnį darbą. Dažnai vartojamų universalios paskirties struktūrinių elementų aprašai laikomi standartinėse programavimo aplinkų bibliotekose. o nežinant struktūrų.2. Apmokomi darbuotojai.Duomenų analizė ir struktūrų parinkimas. kai sudėtinga užduotis nuosekliai skaidoma į smulkesnes dalis. jos praktinio veikimo bandymas. 8. funkcijas).neįmanoma sudaryti algoritmo. kaip paskirstyti darbus keliems vykdytojams. kokia jų pateikimo forma ir apimtis. ir jie ištaisomi. .Programos diegimas. lengvai suvokiami ir aprašomi struktūriniai elementai.Projektuojant sudėtingas programas. kokie yra duomenys.Programavimo priemonių parinkimas. Programa bandoma su realiais duomenimis ir realiomis darbo sąlygomis. Nežinant algoritmo (taikomų veiksmų). Tikrinama. kokia duomenų pateikimo struktūra . . o gerokai sudėtingesnes vartotojo parinktas pagalbines priemones. todėl iš pradžių dažniausiai tik daugmaž numatomas pagrindinių priemonių sąrašas. Šioje dalyje kreipiamas dėmesys į programos ir vartotojo ryšių patogumą. Jei jose turimų priemonių nepakanka. Paskalio kalba pritaikyta struktūriniam programų projektavimui. pateikiant įvairius argumentų reikšmių rinkinius. neatitikimų užduočiai. kokia tvarka tas dalis rengti.

galima skaičiavimams parinkti patogias duomenų struktūras ir jas aprašyti: sukurti duomenų tipus. papildyti bei koreguoti. Žemiausiajame lygyje gali būti moduliai. simbolinio. Jei juos numatoma saugoti tekstinėse bylose. įskaitant ir įrašus (išskyrus bylos tipą). Programos modulinė schema Programos modulis . f i l e .). naudojami aukščiau esančių modulių. Schema braižoma pagal hierarchiją . Tuomet skaičiavimus atliekanti programa turi tik reikalingų duomenų įvedimo ir rezultatų išvedimo priemones. antrajame . tai programuotojas turi suprojektuoti ir pasiūlyti ne tik būsimai programai patogią formą. i n t e g e r . Modulis gali būti sudarytas kaip pagrindinė programa. tikslinga duomenų struktūras parinkti tokias. vardinio). Jei reikia sukurti naujus tipus. Tai būsimos programos darbo rezultatų pavidalas. loginio. naudojami nuliniame ir pirmajame lygyje. 8. tuo mažiau jose lieka klaidų. kas yra duomenys ir rezultatai. atliekantis tam tikrą savarankišką funkciją: jis įveda duomenis. bet ir duomenis rengiantiems programą. atlieka kokius nors konkrečius veiksmus ir pan. kad jose būtų galima laikyti ir pradinius duomenis. tai reikšmes reikia surašyti taip. Duomenų tipų tarpusavio ryšiai parodyti 28 paveiksle. kaip jam saugoti bylose duomenų rinkinius. galima pagal tą schemą apžvelgti. atkarpos tipas gali būti sudaromas iš vienos kurios nors diskretinio tipo atkarpos (sveikojo.bei nuoseklumas. Paskalio kalboje yra keletas standartinių duomenų tipų ( r e a l . sudėtinis sakinys ir pan. Kiekvienam moduliui būtinas savas vardas. Jeigu programos užsakovas dar nežino. kaip jie vaizduojami. Programos darbo rezultatai užsakovui pateikiami sutartu pavidalu. r e c o r d ir pan. Ši schema skaitoma taip pat kaip ir sintaksės diagramos. ir rezultatus. įformina rezultatus. vaizdavimo būdus bei kur ir kaip tie rezultatai turi būti pateikiami. kuriuos naudoja tik pagrindinė programa (nulinis lygis). Galima programos struktūra parodyta 29 paveiksle.nulinį (viršutinį) lygį paprastai sudaro pagrindinės programos modulis. procedūra. s e t . kurie toliau naudojami naujiems duomenų tipams kurti. įrašo tipas gali apimti visų tipų laukus. Programuotojas privalo išsiaiškinti su užsakovu apie norimus rezultatus.tai programos elementas. funkcija. kad būtų lengva rasti.1. kuriuo jis pažymimas schemoje. jų struktūrą. kokie ir kaip gali būti vartojami kiti duomenų tipai. Pavyzdžiui.). Rezultatų įforminimo programinės priemonės naudoja pradinių duomenų rinkinius. Patys jie . c h a r . tuomet būtina numatyti tam tikras programines priemones tokių duomenų rinkiniams peržiūrėti. b o o l e a n ir 1. Tuomet turėsite vienoje vietoje visą informaciją galutiniam rezultatų pateikimui ir bus paprastesni programos elementai. Jeigu numatomos kokios nors savitos struktūros bylos. Kompiuteryje duomenys gali būti saugomi kitokia nei buvo įvesti forma. Nauji tipai kuriami naudojant jau esamus duomenų tipus ir taikant Paskalio kalboje numatytus struktūrinius būdus ( a r r a y .moduliai. atpažinti ir suprasti duomenis. Kuo lengviau ir patogiau surašyti duomenis į bylas.3. Didesnės apimties programose duomenų paruošimo ir dokumentų įforminimo programinės priemonės atskiriamos nuo skaičiavimų ir pertvarkomos į savarankiškas programas arba sujungiamos į dialoginę programinę sistemą. Turint galimybę. Pirmajame lygyje braižomi moduliai. Išsiaiškinus.

Programos schema . Turbo Paskalio duomenų tipų sąveikos schema 29 pav.28 pav.

Tuomet tie moduliai taikomosios programos modulinėje schemoje gali būti praleisti. Paskui rašomi aukštesniojo lygio moduliai (ne visi iš karto) ir derinami. Testui parengiami duomenų rinkiniai bei programinė terpė moduliams vykdyti. Parašyta programa. ar teisingi ryšiai. Tikslinga pirmiausiai patikrinti. kaip daro (metodas. pradedant nuo pakoreguoto modulio.kaip veikia pats modulis. Kuriant programą „iš apačios".gali naudoti tik standartinius kalbos modulius. Programa kuriama dalimis.4. Tai formalioji dalis. Modulio apraše yra labai svarbi informacija apie autorių. kaip (individualiai. kurie yra modulinės schemos žemiausiajame lygyje. Asmeninė ar organizacijai priklausanti modulių kartoteka papildoma kiekvieno iš jų programos tekstu bei diskeliu arba nuoroda į diskelį ar bylą. Nerekomenduojama parašyti visą programą ir tik tada derinti. po to . Parašius vieną ar keletą modulių. ir reikiamai pakoreguoti programą. paskutinės modifikacijos data. kuriuos jis naudoja. tuomet jo apraše tikslinga surašyti modulius. Visą modulio aprašą sudaro algoritmas. Jei modulio programinis tekstas yra ne pagrindinėje programoje (galbūt kito modulio viduje arba išorinėje bibliotekoje). kur tekstas laikomas. derinimo ir testavimo etapai yra tarpusavyje glaudžiai susiję. 8. Programuotojas paprastai turi savo standartinių modulių biblioteką. Jeigu modulis skirtas konkrečiai programai. Programos modulinė schema padeda susivokti sudėtingoje programoje. dar gali kisti. atskirai detalizuojant sudėtingesnius modulius. konsultavimo priemonės ir būdai. Modulių dokumentavimas Kiekvieną modulį (paprastai tai būna funkcija arba procedūra) apibūdina jo antraštė ir parametrų sąrašas. kol ji derinama. Taip programa surenkama pagal modulinę schemą „iš apačios". tuomet derinimo bei testavimo procesas pakartojamas iš naujo. ir modulius. Schemą reikia taip išskaidyti. būdas). jos rašymo. kuri yra būtinas modulio atributas. Procedūrų (funkcijų) viduje aprašytų kitų procedūrų ar funkcijų schemoje galima nepateikti. Paskui surašomas modulio paskirtį aiškinantis tekstas: ką ji daro. 8. Didelių programų modulines schemas tikslinga braižyti atskirais paveikslais. kolektyviai) kuriama programa. kurios sudėtį aprašo atskirai. kad būtina koreguoti žemesniojo lygio modulį. pirmiausia parašomi tie moduliai. atskirai testuojami ne tik jų veikimą aprašantys veiksmai. kurie jį naudoja. tuomet būtina nurodyti. kad kuo mažiau būtų ryšių tarp atskirų dalių (kuo mažiau modulių pakartojimų įvairiose dalyse). duomenų ir rezultatų pavyzdys. . duomenų ribojimai. kur jis yra. naudojimo pavyzdys. kur naudojami tie moduliai. nes bus sugaištama daugiau laiko.5. Kiekvienas jų derinamas atskirai. jie pateikiami tuoj pat po oficialiosios modulio antraštės. nustatyti modulių tarpusavio ryšius. Baigiant derinti programą testuojami ryšiai tarp modulių. derinimas Nesvarbu. Modifikuojant modulius pagal schemą lengva rasti programos vietas. Jeigu derinant paaiškėja. reikia juos suderinti ir testuoti. avarinės situacijos. Schema padeda sudaryti testus. išskirti mažiausiai tarpusavyje susijusias dalis ir pavesti jas sudaryti atskiriems programuotojams. bet ir tikrinami ryšiai su kitais naudojamais moduliais. Jei parametrai yra nestandartinio tipo. Toliau turi būti parametrų paskirties aprašymas. Programos rašymas.

kad pirmiausia įsitikiname modulių ryšių teisingumu.tai programos vykdymas siekiant nustatyti. . kiekvienai neleistinai sąlygai patikrinti. o paskui ištirti jo vidų pagal šiuos požymius: 1) pagal išorines modulio specifikacijas parengti testą kiekvienai situacijai. ar programa tinkamai veikia. Derinimas . Kompleksinis testavimas . Ryšių testavimas . tačiau pateikia ne skaičiavimų rezultatus. . sukuriant programinę ir informacinę aplinką. Vis dėlto galima rekomenduoti keletą paprastų taisyklių. Testavimo procesą sudaro tokie žingsniai: . kai pirmiausiai parašoma pagrindinė programa. Kitas privalumas. kiekvienam ciklui turi būti trys testai: . kol įsitikinama. kad modulio programa veikia teisingai. Iš pradžių į modulį patartina žiūrėti kaip į „juodąją dėžę". išbandomas su skirtingais duomenimis.testo projektavimas. tinkamas derinti. 2) pagal programos (arba algoritmo) vidų paruošti testus kiekvienos sąlygos visiems atvejams patikrinti. sukuriant jam informacinę aplinką. pavyzdžiui. Paruošiami testai ir atliekamas kompleksinis testavimas. y. 8. . ar suplanuotos paprogramių antraštės mus tenkina. tada visas dėmesys sukoncentruojamas į pačią sistemos programą.testo tikslo formulavimas.tai autonominis modulio programos vykdymas. Testas . ar sudaryti testai patikrina visus galimus kelius. kiekvienai galimybei. Šis būdas turi daug privalumų. kiekvienai duomenų ribinei reikšmei.tai visos sistemos vykdymas su iš anksto paruoštais testais ir palyginimas su numatomais rezultatais. Programos testavimas Testavimas . ar tinkama paprogramių paskirtis. ką reikia keisti ar modifikuoti. . bet iš anksto numatytas konkrečias reikšmes. anksčiau paaiškėja smulkesnių modulių trūkumai. Testų paruošimas . Jeigu testas rodo klaidą. 3) pagal programos tekstą (arba algoritmą) patikrinti. tai modulis derinamas.rezultatų analizė. Derinant ir testuojant dar neparašyti moduliai keičiami jų darbo imitatoriais.tai kontrolinių duomenų rinkinys.tai klaidų paieška ir taisymas. reikalaujantis kruopštaus triūso ir išmanymo. jų struktūra. Vienas iš jų yra toks: žingsnis po žingsnio detalizuojant programą. Pradžioje visas dėmesys sukoncentruojamas į vieną modulį. Kai visi moduliai jau ištestuoti ir gerai veikia.tai ryšių tarp modulių tikrinimas. Prieš pradedant rašyti programą būtina atidžiai peržvelgti būsimų modulių sąrašą: gal rasime jau sudarytų ir esamų bibliotekoje. gal galime kiek papildę ar modifikavę turimus modulius gauti naujus arba gal nedideli naujos programos projekto pakeitimai leis daugiau ir efektyviau panaudoti bibliotekos modulius.testo vykdymas.testo tikrinimas.Dažnai naudojamas ir programos kūrimo „iš viršaus" būdas. t. Jie turi modulio antraštę. Paruošiami jo testai ir vykdomi.tai kūrybinis procesas.6. Modulio testavimas . paskui pagal modulinę schemą rašomi joje naudojami moduliai. Sužinome. reikalingumas.

tuščias. 8. tuomet galima teigti. ar įmanoma situacija. Bandymui imami realūs duomenys arba ruošiami (generuojami) panašūs į realius.jau yra surikiuotas. kad programos testavimas galėjo būti dalinis.tai programos patikrinimas.1. Kai kurie duomenys turi tam tikras ribas.kai ciklas kartojamas daug kartų. tai būtina.7. Programos ir vartotojo ryšys Vykdymo metu programa bendrauja su vartotoju pasyviai (tik pranešimais apie darbo eigą: vartotojas stebi pranešimus. kad programa tinkama naudoti. Pavyzdžiui. Bandymas .. t. jei testuojamas modulis rikiuoja įrašų sąrašą. jeigu bandymams naudojami įvairūs duomenys ir jų būna kuo daugiau. .kai ciklas visai nevykdomas. Pavyzdžiui. parodo ekrane kontrolinius tarpinius sprendimo rezultatus. kad rezultatai visuomet bus teisingi. kurie bus apdorojami su programa. y. esant leistinoms duomenų reikšmėms.8. kurie patikrintų. išsiaiškinti programos taikymo ribojimus. klausia ir vykdo vartotojo nurodymus (komandas). ar pošaknio reiškinys netaps neigiamu ir pan. +1.turi vienodas reikšmes. Jei programos darbo rezultatai sutaps su jau žinomais. O. tai reikia paruošti tris testus reikšmėms: -1.turi tik vieną įrašą. kurie duomenys trikdo programą. tai reikia paruošti testus. . nors visiškai garantuoti. 3) programa dirba dialogo režimu. bet yra didelė reikšmių sklaida. 4) programos sprendimo eigą valdo vartotojas: nurodo duomenis. 4) pagal programos tekstą (arba algoritmą) nustatyti. kiek ir ką yra padariusi. 8. kai sąrašas: . Rezultatai turi būti žinomi iš anksto. laukia rezultatų) arba aktyviai (vartotojas dirba su programa dialogo režimu). sprendimo būdus ir 1. . Bandymais išsiaiškinama. rezultatų formą ir apimtį. Galima skirti tokius programos ir vartotojo ryšio lygius: 1) programa praneša.kai ciklas vykdomas tik vieną kartą. ar ji vartotojui tinkama. 2) programa informuoja apie galimybę valdyti sprendimo eigą atitinkamais klavišais. rasti ir pašalinti algoritmo ir programavimo netikslumus ir klaidas. . . pavyzdžiui. negalima. Programa turi pranešti apie sėkmingą ar nesėkmingą darbo pabaigą. ar vartotojui patogu naudotis programa. ar programa tikrai tenkina jai keliamus reikalavimus. Bandymas yra programos patikrinimas su galimais realiais duomenimis. veiksmų seką. kaip modulis veikia. jei programos dirba ilgiau nei kelias minutes. kai gali būti bandoma dalyti iš nulio. jei argumentas gali kisti kito nuo —1 iki 1. . Programos išbandymas Programa testuojama siekiant užtikrinti jos patikimumą. Jeigu pradinių duomenų nedaug. Programos patikimumas padidėja. Nereikia užmiršti. tai funkcinės ribos bus.

yi). Tam. kuriuos taškus sujungę tiesių atkarpomis. kad visi galimi trikampiai būtų nagrinėjami tik po vieną kartą. j ir k yra taškų numeriai (nagrinėjamo trikampio viršūnės) iš duoto sąrašo. Programos pavyzdys Užduotis. Tai reiškia. kuriuos įterpus į programą greitai gaunama langų tipo programa. išvengia daugelio avarinių situacijų. 8.Уз)2 кз = sj(Xi .Уз)2 . (χι. Delphi. 1. reikia juos apgalvotai parinkti. (хз. kad iš duoto taškų sąrašo reikia paimti po tris taškus. tokią programą lengva išsidalijus kurti grupei žmonių. Naujausios programavimo priemonės (pavyzdžiui. Trikampio kraštiniu ilgių skaičiavimas Atstumą tarp dviejų taškų skaičiuojame pagal formulę: Atstumas = л/ (x\ — Х2)2 + (yi — У2)2 Turėdami trijų taškų koordinates (xi.2 do f o r j := i + 1 t o n . . Turbo Paskalis turi keletą priemonių tokiems komponentams kurti. Čia i . У2). apskaičiuotus trikampių kraštinių ilgius bei trikampių plotus reikia surašyti į tekstinę bylą. negu nuosekliai vykdomoje programoje. Nors jų nedaug. Vartotojas pats sprendžia. Reikia rasti. nemokantis programuoti. jai lengviau suteikti naujas savybes. Programiškai tai galima gauti naudojant tris ciklus cikle: f o r i := 1 t o n . kad loginiai ryšiai tarp programos elementų yra paprastesni. kada kokius veiksmus ir kokia tvarka atlikti. Šią savybę tenkinančias taškų koordinates. kurių koordinatės (χ. Kiekvienas kreipinys į programą ir atsakymas (reakcija) turi būti gerai apgalvoti. Be to.У2)2 k2 = Ų(x\ .X3)2 + (У2 . galėtų naudotis programos paslaugomis ir jo netrikdytų šokiruojantys atsakymai. C + + Builder) siūlo daug paruoštų komponentų.1 do f o r к := j + 1 t o n do . Koordinačių plokštumoje duota daug taškų.X 3 ) 2 + (yi . tačiau ir jomis galima sukurti pakankamai patogias programas. kad vartotojas.parinkti ir suprojektuoti duomenų struktūras. Svarbiausias ir sudėtingiausias etapas . Vienam trikampiui analizuoti reikia atlikti tokius veiksmus. Šiuolaikinės programos kuriamos dialoginės. Trikampį nusako trys viršūnės. išsamumą. y) poromis surašytos tekstinėje byloje. juos taisyti bei papildyti. Gerai parinkus duomenų struktūras gaunama paprastesnė programa. Toliau pateikiamas dialoginės programos kūrimo pavyzdys. kurį panagrinėję matysite.Х2)2 + (yi . galintis proceso metu operatyviai spręsti apie apdorojamų duomenų korektiškumą. . gausime stačiuosius trikampius. Užduoties analizė. Teks patikrinti visus galimus trikampius. gausime tokius kraštinių ilgius: = л/(*1 .Уз).9. Tarp vartotojo ir programos nėra tarpininko.Vartotojas.

Jeigu taškų daug. jei atstumas tarp taškų mažesnis už nurodytą skaičiavimų tikslumą. Galima pasinaudoti bet kokio trikampio ploto skaičiavimo formule: S = V p . Trikampis nesusidarys. tuomet patogiau būtų eilutėje rašyti ne vieno taško koordinates. Trikampis nesusidarys. Kuriant programą buvo daroma prielaida. { Leistinas taškų skaičius } { Tašką aprašanti konstrukcija } . vienam taškui bus skiriama viena eilutė . jeigu jų skirtumas absoliutiniu didumu neviršija nurodyto tikslumo. kai tas pats taškas duomenų byloje parašytas du ir daugiau kartų).1 2 25 2 5 22 2 12 5 6 1 4 5 -8 1 -8. Taip rašydami gautume lyginį stulpelių skaičių. kurios kraštinės yra statiniai. Bus nesunku pastebėti. Byloje visų taškų koordinates patogiausia surašyti dviem stulpeliais. type Vienas = record χ. Stulpelių poras reikia atskirti didesniu intervalu. jei bus teisinga bent viena iš tokių lygybių: k^ — I ^ = ^ ^— j 3 > · 2. Rašant skaičius būtina juos lygiuoti. Pirmajame būtų χ koordinatės. Duomenų analizė ir struktūrų parinkimas.Nustatome.55 22 9 14 4 8. jei keli taškai bus vienoje plokštumos vietoje (tai vartotojo klaida. ar tos kraštinės sudaro statųjį trikampį. 2 5 -5 -9 Uždavinyje pradiniai duomenys yra taškai. Pavyzdžiui: . o analizuojama geometrinė figūra .tada bus aiškiau ir lengviau išvengti klaidų. tačiau reikia žinoti. jeigu eilutėje per mažai arba per daug skaičių. Statusis trikampis bus tada. Juos aprašanti įrašo struktūra bus tokia. Visi šie skaičiavimai atliekami su realiaisiais skaičiais. kad vartotojas duomenis teisingai surašys byloje ir atstumai tarp taškų bus didesni už nurodytą tikslumą. y : r e a l .( p .12 -2.ki) • (p . antrajame . pavyzdžiui. kai trys nagrinėjami taškai yra vienoje tiesėje ir negali sudaryti trikampio. Taip rašant. 0. Trikampio ploto skaičiavimas Stačiojo trikampio plotui skaičiuoti yra paprasta formulė.trikampis.y. todėl skaičių palyginimo veiksmuose turi būti laikomasi tam tikro tikslumo: skaičiai lygūs. end.k2) • (p .5 12.5 14.kį) čia p yra pusė trikampio perimetro: p = (ki+k2 + h)/2.8 -5 12 . c o n s t L = 100. y) nusako du realūs skaičiai. Skaičiavimuose reikia įvertinti situaciją.01. Taško koordinates (x.

jeigu trikampis status.Mas = a r r a y [1. . ir F a l s e priešingu atveju. Kab. Daug = a r r a y [1. įsitikinama. kuris įrašomas į T r . vienas. Rezultatas yra atstumas tarp tų taškų. Tai pirmoji programos versija. Kbc : r e a l . o po to ieškoti klaidų ir jas taisyti. L] of Vienas. end. Vienas = record χ. Ištaisius klaidas ir įsitikinus. būtų galima darbus pradėti su viena iš ankstesnių versijų. S lauką. C . Tai būtina. { Trikampių masyvo tipas } Programavimo priemonių parinkimas. { Taškų masyvo tipas Į } { Galimas stačiųj7 trikampių skaičius } Trikampis = record А. kad programa jau daro tai. в. randamos ir ištaisomos klaidos. c) trikampio plotui skaičiuoti: p r o c e d u r e P l o t a s (var Tr : Trikampis). y). . y : r e a l . gaunama tolesnė programos versija. tačiau veikianti. ar trikampis statusis: f u n c t i o n S t a t u s (Tr : T r i k a m p i s ) : b o o l e a n . Rezultatas True. Čia Tr yra vieno trikampio duomenys. Padaroma ankstesnės programos versijos kopija ir papildoma naujais veiksmais. Kac. Neracionalu būtų parašyti visą programos tekstą. Programai rašyti reikalingos tokios priemonės (procedūros. L ] o f V i e n a s . kad reikia iš esmės keisti dalį programos. uses Crt. S : real { Trikampio viršūnės } { Trikampio kraštinės } { Trikampio plotas } end. { const LL = 50. d a t ' . B : V i e n a s ) : r e a l . Padarius dalį programos.. funkcijos): a) atstumui tarp dviejų taškų skaičiuoti: f u n c t i o n A t s t u m a s (A. nes jei kuriame nors programos rašymo etape paaiškėtų. ką reikia. Čia A ir B taškų koordinatės (x. Čia Tr yra trikampio duomenys. Programos rašymas ir derinimas. Skaičiuojamas trikampio plotas. Reikia rašyti ir derinti programą dalimis. Taip gauta programa nėra išbaigta. Visas ankstesnes programos versijas reikia saugoti tol. LL] of Trikampis. Programos S t a t u s i s T r i k a m p i s pirmoji versija program StatusisTrikampis. kad programa veikia teisingai. b) nustatyti. Mas = a r r a y [ 1 . const Duomenys = ' T r i k . type { Duomenų bylos vardas } L = 100.. kol gausime galutinę teisingą programos versiją.

n:5.x:6:2. kaip programa elgiasi tais atvejais. i : integer. A [ n ] . n : i n t e g e r . v a r n : i n t e g e r ) . nei įmanoma sutalpinti masyve. begin ClrScr. begin A s s i g n (F. Duomenys). Reikalingas veiksmų imitatorius. 2 . { } } ReadLn. Close (F). visų pirma įsitikinama. Pavyzdžiui. n := 0. skirtus rezultatams grąžinti. f o r i := 1 t o n do W r i t e L n (A[i]. S k a i t y t i D u o m e n i s (A.1 0 .{ ) p r o c e d u r e S k a i t y t i D u o m e n i s ( v a r A : Mas. χ := 1 5 . with A[n] d o R e a d (F. 5 . ' t a š k ų k o o r d i n a t ė s : ' ) . end. end. { Programai derinti reikalingi sakiniai W r i t e L n ( ' B y l o j e y r a ' . y : 6 : 2 ) . ( } v a r A : Mas. text. šioje programoje tai gali būti toks duomenų skaitymo procedūros imitatorius. var F . kai byloje nėra skaičių ir kai byloje yra daugiau skaičių. x . w h i l e n o t Eof (F) a n d (n < L) do begin n := n+1. Vienas tokių variantų gali būti. Dažniausiai pasitaikanti klaida yra tokia: kai neparašomas žodelis v a r prieš procedūros formaliuosius parametrus. w i t h A[n] do b e g i n A[n]. Ištaisę programos sintaksės klaidas. Programos testavimas. patikriname. . end. A [ i ] . p r o c e d u r e S k a i t y t i D u o m e n i s ( v a r A : Mas. ' ' . v a r n : i n t e g e r ) . kaip programa veikia su byloje esančiais duomenimis. T e x t C o l o r (Green). kad parametrų sąrašai yra teisingi. begin n := l . kai rezultatus grąžinantiems parametrams priskiriamos fiksuotos reikšmės. Jeigu duomenys skaitomi ir teisingai rodomi ekrane. reikia patikrinti. n). R e s e t (F). Rašant sudėtingesnes programas. y := . Tam nebūtina parašyti visą procedūrą. y) end.

type Vienas = record χ. m := m+1. Tr. y : r e a l .A := A[i]. . C l o s e (F). Kbc real.. В. S real end. С Vienas. uses Crt. tuomet bus galima pradėti skaičiuoti. Daug = array [1. Tr. L = 100. Duomenys). var m : integer). w i t h A[n] d o R e a d (F. j. k : integer. end. n : integer. LL = 50. L ] of V i e n a s . { procedure Veiksmai (var A : Mas. Trikeunpis s record А.Programos S t a t u s i s T r i k a m p i s antroji versija Parašome svarbiausią programos dalį . end.LL] of Trikampis. 1 .C := A[k]. Tr : Trikampis. for i := 1 to n-2 do for j := i+1 to n-1 do for k := j+1 to n do begin Tr. v a r n : i n t e g e r ) . T[m] := Tr end.B := A[j]. c o n s t Duomenys = ' T r i k . x. R e s e t (F). КаЬ. w h i l e n o t Eof (F) a n d (n < L) do begin n := n+1. Papildymus ir pakeitimus pateikiame pusjuodžiu šriftu. n := 0. program StatusisTrikampis. var F : text. Mas = a r r a y [ 1 . end. var T : Daug. d a t ' . begin m := 0. begin A s s i g n (F.taškų grupavimo po tris. p r o c e d u r e S k a i t y t i D u o m e n i s ( v a r A : Mas. Кас. y) end. Jei teisingai rasime visus galimus trikampius. var i.

A.C). n). I } procedure Veiksmai ( v a r A : Mas. C. for i := 1 to m do with T[i] do WriteLn (i:4.В. ' ' .A. m : integer. Tr. begin ClrScr.2 do f o r j := i + 1 t o n . WriteIdi ('Gauti trikampiai:'). Tr. в := A [ j ] .B). ' t a š k ų k o o r d i n a t ė s : ' ) . ją galima tikrinti skaičiuojant trikampių kraštines. v a r integer.i } var A : Mas.x:6:2.Kac := Atstumas (Tr. Programos StatusisTrikampis trečioji versija Užrašoma atstumo tarp dviejų taškų skaičiavimo funkcija. n. T[m] := Tr.χ) + Sqr (Α. m). m := m + 1 . C := A[k]. Tr. B : Vienas) : real. m : integer). Trikampis.у . T.у)). в. Papildome programą: function Atstumas (A. y : 6 : 2 ) . n : var var i. Tr j. к : : T : Daug. A.A := A [ i ] .у:6:2.x:6:2. f o r i := 1 t o n . n : integer. Veiksmai (A.Kab := Atstumas (Tr. begin Atstumas := Sqrt (Sqr (Α. . ' : '.y:6:2 ). τ : Daug.χ .Kbc := Atstumas (Tr. A [ i ] . ' : '. kad nesunku būtų patiems iš anksto apskaičiuoti numatomus rezultatus.y:6:2. Jeigu tokia jau buvo naudojama kitose programose.B. Tr. A. bet turint daugiau patirties.1 do f o r к := j + 1 t o n do begin Tr. f o r i := 1 t o n do W r i t e L n (A[i]. Parašytą funkciją galimą patikrinti atskirai. T r . C. Tr.C). T e x t C o l o r (Green).x:6:2. integer. ( } ReadLn. в. { Programai derinti reikalingi sakiniai } WriteLn ( ' B y l o j e yra n:5. begin m := 0.B. Tam daug duomenų nereikia. end. tai reikia perkelti ją į šią programą.х:6:2. S k a i t y t i D u o m e n i s (A. Taškų koordinates byloje surašome tokias. T r . Tr.

в. Į masyvą T įrašomi tik stačiųjų trikampių duomenys. y : 6 : 2 .x:6:2. d a t ' . ' ' .x:6:2. Kac. ' : ' . { Taškų masyvo tipas } { Trikampis = record A. A. Programos S t a t u s i s T r i k a m p i s ketvirtoji versija Parašoma procedūra trikampio plotui skaičiuoti. patikslinami) po to.x:6:2. real.01. c . real { { { I } Vieno trikampio struktūra } Viršūnės } Kraštinės } Plotas } . f o r i := 1 t o n do W r i t e L n (A[i]. Kbc:6:2). WriteLn ( ' G a u t i t r i k a m p i a i : ' ) . kai visi trikampiai statieji. Programos S t a t u s i s T r i k a m p i s penktoji versija Parašoma funkcija. A[i]. Komentarai iš esmės sutvarkomi (papildomi. C. Kab:6:2. C Kab. Mas = a r r a y [ 1 .Programai derinti reikalingi sakiniai W r i t e L n ( ' B y l o j e y r a ' . kurie buvo reikalingi programai derinti.х:6:2. ' t a š k ų k o o r d i n a t ė s : ' ) . ir su duomenimis. A. n:5. { Trikampių masyvo dydis } type Vienas = record { Vieno taško aprašymas } χ. uses Crt. Programos sakiniai. Kbc S end.y:6:2. Kac:6:2. . Atkreipkite dėmesį į tai. o kitą dalį suderinus programą. kad ekranas taip pat yra tekstinė byla. Programos komentarai rašomi ne visi iš karto. Gauname tokią programą: program StatusisTrikampis. r e z ' . B. ' : '. kai stačiųjų trikampių tikrai yra. Programos S t a t u s i s T r i k a m p i s galutinė versija Parašoma procedūra gautiems rezultatams surašyti lentele į bylą. kai stačiųjų trikampių nėra. Vienas. kai gaunama galutinė programa. end. pašalinami. kad skaitant programos tėkštąjį būtų lengva suprasti. f o r i := 1 t o m do w i t h T[i] do W r i t e L n (i:4. { Taškų masyvo dydis } LL = 50. { Rezultatų bylos vardas } Tikslumas = 0. Tikslinga dalį komentarų parašyti rašant pirminį programos teksto variantą. в. c o n s t Duomenys = ' T r i k . parašyta procedūra parodys rezultatus ekrane. { Duomenų bylos vardas } R e z u l t a t a i = ' T r i k . Derinimo veiksmai analogiški ankstesnei versijai. Po to reikia patikrinti su duomenimis. { Skaičiavimų tikslumas } L = 100.у:б:2. todėl kreipinyje nurodant ekrano bylos vardą O u t p u t . y : r e a l . L] of V i e n a s . skirta nustatyti. Programa derinama su duomenimis.y:6:2). Komentarų turi būti tiek ir tokių. ar trikampis statusis. ' : : ' .

1 do . end.Daug = a r r a y [ 1 . : Trikampis) : boolean. .B. B : V i e n a s ) : r e a l . ( p r o c e d u r e P l o t a s (var Tr . begin A s s i g n (F. Trikampis). var p : real. end.Kbc)). p r o c e d u r e V e i k s m a i ( v a r A : Mas. begin A t s t u m a s := S q r t ( S q r (Α. i n t e g e r ) . end. begin w i t h T r do begin p := (Kab + Kac + Kbc) / 2. var F : text. w h i l e n o t Eof (F) a n d (n < L) do begin n := n+1. Tr : Trikampis. { f u n c t i o n A t s t u m a s (A. v a r i. f o r i := 1 t o n .у . ( f u n c t i o n S t a t u s i s (Tr begin w i t h T r do S t a t u s i s := (Abs (Sqr(Kab) or (Abs (Sqr(Kac) or (Abs (Sqr(Kbc) end.2 do f o r j := i + 1 t o n . S := S q r t (p*(p . n : i n t e g e r . L L ] of T r i k a m p i s . w i t h A[n] do Read (F.χ . v a r m : i n t e g e r ) . x. R e s e t (F). Duomenys). v a r T : Daug. { Trikampių sąrašas } p r o c e d u r e S k a i t y t i D u o m e n i s ( v a r A : Mas. end. k : i n t e g e r . j. χ ) + S q r (А. v a r n . begin m := 0.Kac)*(p . (Sqr(Kac) + Sqr(Kbc))) <= T i k s l u m a s ) (Sqr(Kab) + Sqr(Kbc))) <= T i k s l u m a s ) (Sqr(Kab) + Sqr(Kae))) <= T i k s l u m a s ) .В. n := 0. y) end.Kab)*(p .у)). C l o s e (F).

R e w r i t e (F). W r i t e L n (F. C ) . T[m] := T r end. begin ClrScr. R e z u l t a t a s ( O u t p u t . A . m : i n t e g e r .f o r k := j + 1 t o n do begin T r . v a r A : Mas. A s s i g n (F. A . T.y:5:l. K b c := A t s t u m a s ( T r . R e z u l t a t a i ) . C ) . T. ' : ' . m integer). в. F : text. C. C. n : i n t e g e r . Exit end. S:5:2. i f S t a t u s i s (Tr) t h e n b e g i n m := m+1. T r . x : 5 : l . T e x t C o l o r (Green). R e z u l t a t a s (F. T. T r . m). f o r i := 1 t o m do w i t h T [ i ] do W r i t e L n (F. S k a i t y t i D u o m e n i s (A.' '). T r . W r i t e L n (F. в := A[j]. : = .x:5:l. P l o t a s (Tr). Kab := A t s t u m a s ( T r .' : A : в : C Kab Kac Kbc s :').x:5:l. T r . T r . WriteLn (F/ end. B. V e i k s m a i (A. ' : '). begin if m = O then begin W r i t e L n (F. end. m). A . Rezultatų lentelė byloje Rezultatų lentelė ekrane '). A . var i : integer. n. S t a č i ų j ų trikampių negalima gauti'). Kbc:5:l. K a c : 5 : l . — :'). T r . С := A[k].y:5:l. p r o c e d u r e R e z u l t a t a s (var F text. T r . B). . W r i t e L n (F. n).' . var T Daug. K a c := A t s t u m a s ( T r . y : 5 : l . m). T : Sar. B . end. Kab:5:l. T r . A := A[i].

Minimalų aparšymą iliustruosime pavyzdžio programai. 0 10. skirtas programuotojui. vadinasi. Kas buvo aprašyta kuriant programą. 8 10. Jeigu ne. Jeigu norėsime kada nors keisti programą. daug priklauso nuo programos sudėtingumo ir paskirties.C l o s e (F). Prie programos pridedamas kontrolinis testas. ReadLn. 14. čia nekartosime. kas ir kokia seka turi būti pateikiama. kaip jie surašomi byloje. 1. Gali būti labai detalūs ir tikslūs. 0 10. 1 10. Programos S t a t u s i s T r i k a m p i s testas. Jeigu programa sudėtinga. kas yra duomenys. Komentarais visko neišaiškinsi. Užduotis. vien jos teksto nepakaks. kas yra rezultatai ir kaip juos surasti bei suprasti. Kbc 7 2 0 7 6 8 0 1 1 0 10 0 10. Vartotojui pateikiama programa ir vartojimo instrukcija. Pateikiama keletas pavyzdžių.5 Gauti rezultatai: B 12 12 25 1 13 13 -5 -5 -5 5 0 0 0 0 0 0 0 0 0 0 -5 -5 26 2 -5 -5 -5 -5 -5 -5 0 0 0 0 0 0 0 0 0 0 -5 5 1 0 -5 5 5 5 -5 -5 0 0 0 0 0 0 0 0 0 0 C -5 -5 2 3 -5 -5 -5 -5 5 5 0 0 0 0 0 0 0 0 0 0 -5 5 0 -8 -5 5 -5 5 5 5 0 5 0 0 5 0 0 3 0 0 -7 0 0 5 0 0 5 0 0 5 0 0 5 0 0 5 0 0 5 0 Kab 17 7 33 1 18 8 10 10 10 14 Kac 0 0 9 4 0 0 0 0 0 1 19 12 34. 0 14. 0 S 85 35 24 9 90 40 50 50 50 50 00 00 00 00 00 00 00 00 00 00 Programos aprašas. tuomet būtina išmokyti vartotoją naudotis programa. Duomenų byla: 12 -5 -5 -5 25 26 1 2 0 5 -5 -5 5 5 3 -8 -7 5 13 . 4 12 . Jeigu vartotojas be niekieno pagalbos sugeba teisingai pasinaudoti programa. 12 20 12 10. 14 10. gali būti tik esminius dalykus komentuojantys tekstai. dokumentas parašytas teisingai. Pažymėsime. Programos diegimas. Instrukcijoje labai svarbu teisingai ir aiškiai nusakyti. tai kartu su vartotoju tikslinama ir papildoma instrukcija. Surašoma detali uždavinio sąlyga. Tai dokumentas. . Parašoma instrukcija vartotojui apie darbą su programa. Reikalavimai programos aprašui įvairiose organizacijose skirtingi. 0 10. 0 1.

Pradiniai duomenys. n . sąrašas. pavyzdys. Stačiųjų trikampių skaičius.procedūra V e i k s m a i . kurios aprašytos kituose dokumentuose (nurodoma). Rezultatai. Programos konstantų sąrašas su paaiškinimais. n : i n t e g e r . n : integer). Po to pateikiami visų modulinėje schemoje parodytų procedūrų ir funkcijų aprašymai. Pirmiausia pateikiamas pagrindinės programos aprašymas. Toliau pateikiamas programai vykdyti naudojamų priemonių. Pavyzdžiui: • Pagrindinė programa A : Mas. Gautieji rezultatai surašomi į rezultatų bylą. Konstantos ir duomenų tipai. Programos modulinė schema.taškų koordinačių sąrašas.2. Pavyzdžio programos modulinė schema tokia: Turbo Paskalio duomenų tipų sąveikos schema 5. kokie duomenys reikalingi programai. Bylos kintamasis. Nurodoma. • procedure SkaitytiDuomenis ( v a r A : Mas.taškų skaičius. Paruošiama byla rezultatams rašyti. Paprogramės minimalų aprašą sudaro antraštė. T : Sar. Programa nuskaito duomenis į masyvą A(n). Tai kintamieji ir jų paskirtis. Programos teksto aprašymas. Taškų skaičius. v a r A . kokie taikomi matematiniai metodai. Trumpai aptariami programos veiksmai. . Naudojamas darbui su rezultatų byla. Nurodoma. Po to atliekami veiksmai . kurios vardas nurodytas konstanta R e z u l t a t a i . tai atliekama procedūra S k a i t y t i D u o m e n i s . Sukurtų duomenų tipų pristatymas su paaiškinimais. Duomenys programai. parametrų paskirties išaiškinimas ir trumpas atliekamų veiksmų aprašymas. F : text. Rezultatus byloje ir ekrane surašo procedūra R e z u l t a t a s . 3. 4. m : i n t e g e r . pateikiama duomenų surašymo byloje instrukcija. Taškų koordinačių masyvas. Stačiųjų trikampių sąrašas.

Suskaičiuojamas ir grąžinamas atstumas tarp tų taškų koordinačių plokštumoje. ar trikampis status. var m : integer).galimų stačiųjų trikampių sąrašas. • procedure Plotas (var Tr : Trikampis). B : Vienas) : real.stačiųjų trikampių skaičius. A.stačiųjų trikampių skaičius. Pateikiamas rezultatų pavyzdys ir reikalingi paaiškinimai. var T : Sar. Jeigu taškų yra daugiau nei telpa masyve. Patikrinami visi galimi trikampių sudarymo pagal duotą taškų sąrašą A(n) variantai. • function Atstumas (A.taškų skaičius.False. Programos tekstas. . Skaičiuojamos trikampių kraštinės ir plotai.trikampio duomenys: viršūnių koordinatės ir kraštinės ir plotas. B . • procedure Rezultatas (var F : text. 6. Duomenys procedūrai: A . norint teisingai suprasti. var T : sar. kurios vardą saugo konstanta Duomenys.Iš duomenų bylos. n : integer. m . m .trikampio duomenys: viršūnių koordinatės ir kraštinės.bylos kintamasis.taškų sąrašas. Rezultatai. Gautų stačiųjų trikampių duomenys kaupiami masyve T(m). n .stačiųjų trikampių sąrašas. • procedure Veiksmai (var A : Mas. • function Statusis (Tr : Trikampis) : boolean. Rezultatas: T . Į juo nurodomą bylą lentele surašomi rezultatai.taškų koordinatės. F . T . tai rezultatas yra loginė reikšmė True. skaitomi skaičiai ir surašomi į masyvą A(n). 7. Tr . Tr . Suskaičiuojamas trikampio plotas. m : integer). tai skaitymas nutraukiamas perskaičius tiek taškų koordinačių. kiek telpa į masyvą. Priešingu atveju . Pateikiamas programos tekstas su komentarais. Jeigu status. Nustatoma.

peštis ar siekti valdžios Būryje. Užduotis: Zoologijos sodai Tekstinėje byloje Zoo. kad gyvenimo prasmė . kad gyvenimo tikslas yra pasiekti tobulumą ir jį skleisti. Programos sudarymo pavyzdys Praeitame skyriuje aptarėme programos sudarymo etapus. 2) tolesnėse eilutėse pateikiama informacija apie kiekvieną to sodo gyvūną (vienoje eilutėje aprašomas vienas gyvūnas): . Džonai. Žinoma. ir dar kitą šimtą gyvenimų. O po to dar šimtą gyvenimų. kol paaiškėjo. kol juos pagaliau nugalėsi.gyvūno vardas (1-20 pozicijos). kol supratome. kol pagaliau mumyse gimė miglotas supratimas.tos rūšies suaugusių gyvūnų skaičius. "Džonatanas Ričardas Livingstonas Bachas žuvėdra" 9. kurie ribos tavo galias ir slėgs kaip švinas tol. Rygos ir Berlyno) zoologijos sodus gali būti pateikta šitaip: . informacija apie tris (Kauno. Tūkstantį gyvenimų. Visa informacija apie kiekvieną zoologijos sodą surašyta laikantis tokių taisyklių: 1) pirmoje eilutėje nurodytas zoologijos sodo pavadinimas (1-20 pozicijos) bei skirtingų tame sode įkurdintų gyvūnų skaičius. 9. kitas pasaulis bus toks pat kaip ir šis. . Dabar tai pritaikysime praktiškai konkrečiam nesudėtingam uždaviniui spręsti. kaip tobulėjimas. t x t turime informaciją apie garsiausius pasaulio zoologijos sodus. kiek daug gyvenimų turėjome pragyventi. Jei nieko neišmoksi.ne vien tik valgyti. kad yra toks dalykas. . dešimt tūkstančių. tie patys dėsniai mums ir dabar galioja: mūsų būsimasis pasaulis priklauso nuo to.tos rūšies jauniklių skaičius. toliau naujoje eilutėje pateikiama informacija apie kitus zoologijos sodus (pagal 1-2 punktus) Pavyzdžiui.Ar tu gali įsivaizduoti. į jį atsineši tuos pačius savo trūkumus. 3) aprašius vieno zoologijos sodo gyvūnus.1. ką esame išmokę štame.

Sudėtingesnis darbas yra pasirinkti dialogo organizavimo būdą. Užduoties analizė Užduotyje pakankamai išsamiai pasakyta.2. Kiekvieną iš jų galima užrašyti atskira procedūra. . b) kuris zoologijos sodas turi daugiausiai gyvūnų ir kiek. 30 pav. 9. Taip kartojama.nesudėtingi skaičiavimai. c) kuris zoologijos sodas turi daugiausiai skirtingų gyvūnų ir kiek.visi veiksmai gana paprastai suskaidomi į kelias savarankiškas dalis (žr. Toliau išsamiau panagrinėkime kiekvieną algoritmo dalį ir galėsime rašyti programą. Įvykdžius užsakymą. e) kokie gyvūnai yra mus dominančiame zoologijos sode. Atidžiau peržvelgę pageidaujamų paslaugų sąrašą matome. d) kokiuose zoologijos soduose yra mus dominantis gyvūnas ir kiek jų ten. 2) apie zoologijos sodus: a) apie kokį zoologijos sodų skaičių yra duomenų. d) kuriame zoologijos sode yra daugiausiai jauniklių ir kiek. kuri pateiktų tokią informaciją: 1) apie gyvūnus: a) kiek skirtingų pavadinimų gyvūnų yra zoologijos soduose. o vartotojas turės nurodyti paslaugos numerį. kokias paslaugas turi teikti programa. b) kiek iš viso gyvūnų yra zoologijos soduose.). c) kiek suaugusių gyvūnų ir kiek jauniklių yra zoologijos soduose. kol vartotojas nurodys pabaigos veiksmą. Užduoties sprendimo algoritmas nesudėtingas . ekrane vėl rodoma pradinė situacija.Kauno zoologijos sodas 2 1 5 sodas 2 12 3 12 5 4 3 3 4 2 5 16 5 Tigras Antis Rygos zoologijos Vanagas Vilkas Arklys Berlyno zoologijos Tigras Arklys Katinas sodas 5 6 25 Reikia parašyti dialoginę programą. e) kiek ir kokių gyvūnų yra zoologijos soduose (programa turi pateikti gyvūnų pavadinimus be pasikartojimų. suaugusių bei jauniklių skaičių). kad daugelis veiksmų . Siūlome pasirinkti paprasčiausią variantą: ekrane parodyti numeruotą paslaugų sąrašą.

.kompiuterio operatyviojoje atmintyje patartina laikyti nedidelį kiekį duomenų. kur ir kokiu pavidalu laikysime visą informaciją apie gyvūnus. end. Tiesa. paprasčiau atlikti veiksmus su jais: nereikia skaityti duomenų. { Maksimalus skirtingų gyvūnų skaičius } { Gyvūnų sąrašo forma } Dabar jau galima parinkti duomenų struktūrą visai informacijai apie zoologijos sodo gyventojus laikyti. t y p e f o r m a = a r r a y [ 1 . gyvis = record pav : vardas. seni. Taigi gyvūną galime aprašyti taip: type vardas = string[20]. nesudėtinga atsakymų į užklausas paieška.3. priešingu atveju tai bus tik teorinis algoritmas. patogu numatyti papildomus elementus tarpiniams skaičiavimams laikyti . { Gyvūno aprašas } { Pavadinimas } { Suaugusių ir jauniklių skaičius } Visus vieno zoologijos sodo gyvūnus galime surašyti į vieną sąrašą (masyvą): c o n s t N1 = 20. Tiesa. Programos struktūros schema 9.kintamuosius bendram suaugusių gyvūnų ir . Duomenų analizė Pirmiausia reikia nuspręsti. kad zoologijos sodo gyventojus apibūdina trys komponentai: vardas (20 simbolių eilutė) ir du sveikieji skaičiai (kiek yra suaugusių gyvūnų ir kiek jauniklių). N1] of g y v i s . Taip laikant duomenis.kol vykdoma programa visus duomenis laikyti kompiuterio atmintinėje. kurį atlikti galės tik didžiulės talpos atmintinę turintis kompiuteris. iš anksto žinoma. Tam geriausiai tinka įrašas.Zoologijos sodai Pradinių duomenų iš bylos įvedimas ir parengimas užklausoms tinkamu formatu Rezultatų langų suformavimo ir vaizdavimo ekrane procedūros Užklausų apdorojimo procedūros Dialogas su vartotoju: užklausų priėmimas ir vykdymas Pagrindinė dalis: nurodymas įvesti pradinius duomenis. jauni : integer. suformuoti rezultatų langus bei vesti dialogą su vartotoju 30 pav. Vienas paprasčiausių būdų . verta žinoti ir silpnąsias tokio pasirinkimo puses . kiek ir ko yra. Iš uždavinio formuluotės matyti.

. { Zoologijos sodų sąrašas } c o n s t N2 = 20. var B : text. t y p e V i s i S o d a i = a r r a y [ 1 .nereikės skaičiuoti kiek ir kokių gyvūnų yra: t y p e Sodas = r e c o r d Zoo : vardas. { Gyvūnų sąrašas } c o n s t Nl = 20.4. G : forma. { Skirtingų gyvūnų skaičius } G : forma. Pradinių duomenų įvedimas Žinodami. c o n s t Zoo = ' Z o o . sg. j g. { Pavadinimas } sg. i : integer. { Gyvūnų sąrašo forma } { Zoologijos sodo aprašas } t y p e Sodas = r e c o r d Zoo : vardas. . parašome skaitymo procedūrą S k a i t y t i ir pagrindinės programos dalį. { Suaugusių ir jauniklių skaičius } k : integer. .jauniklių skaičiui. k : integer. kurioje parašome kreipinį į tą procedūrą. kaip pradinių duomenų byloje surašyta informacija apie zoologijos sodus bei atsižvelgdami į pasirinktas duomenų vaizdavimo struktūras. end. Zoologijos sodo aprašas } Pavadinimas } Suaugusių ir jauniklių skaičius Skirtingų gyvūnų skaičius } Gyvūnų sąrašas } Visų zoologijos sodų duomenims įsiminti geriausiai tinka masyvas: c o n s t N2 = 20. { Pradinius duomenis įvedanti programa } uses Crt. N 2 ] of S o d a s . { Pavadinimas } seni. Maksimalus zoologijos sodų skaičius Zoologijos sodų sąrašas } 9. N 1 ] of g y v i s . Pirmasis programos variantas būtų toks. { Pradinių duomenų sutvarkymas } p r o c e d u r e S k a i t y t i (var A : V i s i S o d a i . { Gyvūno aprašas } gyvis = record pav : vardas. { Gyvūnų sąrašas } end. program Zoologi j osSodai_Vl. type vardas = string[20]. v a r n : i n t e g e r ) . { Maksimalus skirtingų gyvūnų skaičius } t y p e f o r m a = a r r a y [ 1 . { Maksimalus zoologijos sodų skaičius } t y p e V i s i S o d a i = a r r a y [ 1 . jauni : integer. Tada bus lengiau ieškoti atsakymų j kai kuriuos klausimus . . t x t ' . j g. N 2 ] of Sodas. { Suaugusių ir jauniklių skaičius Į end.

teks grįžti prie duomenų skaitymo procedūros. p a v . ('Duomenys perskaityti. Dažniausiai pasitaikanti klaida yra tuščios eilutės bylos gale. G [ i ] . jg . Z o o .k := 0. Galima tokios procedūros ir nerašyti pradžioje pakaks pasiekti. Juk neįsitikinome. kai programa jau gerai dirbs. begin Skaityti WriteLn (B. Vėliau. do do begin R e a d L n (B. while not Eof (B) do begin n := n + 1. Z o o ) . Dialogo priemonės Dabar galima pereiti prie dialogo priemonių. sg . Procedūra parašyta tikintis. n). ar nėra padaryta klaidų ruošiant duomenų bylą. n := 0. A[n]. s g := 0. Zoologijos sodų yra: '. Būtina patikrinti. n ) . + G[i]. ar duomenys gerai skaitomi. Reikia patikrinti.seni. t. end. turime sukurti ir atlikti duomenų spausdinimo ekrane procedūrą. Jų neturi būti! Programuojant paslaugų veiksmus. kuriuos vėliau užpildysime. A [ n ] . kad programa su šia procedūra dirbtų. nebūtų avarinių situacijų. todėl teks pašalinti. Pirmiausia reikėtų tikrinti zoologijos sodų skaičių.k). R e s e t (B).= s g G[i]. ReadLn (B. n { Duomenų sąrašas } { Zoologijos sodų skaičius } : integer.begin Assign (B. kad visi duomenys skaitomi taip. y. Tai bus programos griaučiai. var- . ar skaičiai teisingi ir ar jie nepatenka į žodžiui skirtas pozicijas. paslaugų sąrašo išvedimo ekrane. end. Dialogui vesti reikės lango piešimo. A[n]. papildykite skaitymo veiksmus apsauga nuo per didelio duomenų skaičiaus. Jei norime įsitikinti.= j g G[i]. Toliau ji nebus reikalinga.5. Duomenų skaitymo veiksmuose nėra apsaugos. 9. jeigu negausime norimo rezultato. Žodžiai turi būti rašomi pagal duomenų tipų aprašymus (mūsų atveju tam skirta 20 pozicijų). Close (B). Sudėtingesnėse programose tai padaryti būtina. A [ n ] . Duomenis reikia surašyti labai atidžiai.seni. j a u n i . jog visi duomenys tikrai tilps masyve. + G[i]. { } var B : VisiSodai. j a u n i ) . Masyvų apimtys nurodytos konstantomis Nl (gyvūnų rūšių skaičius kiekviename zoologijos sode) ir N2 (zoologijos sodų skaičius). kaip norime. j g for i := 1 t o with A[n] A[n].

{ Ž o d ž i ų m a s y v o tipas } . Galima padaryti racionaliau. '). Pirmiausiai pateiksime tų procedūrų antraštes bei aptarsime. Tokiam masyvui sudaryti reikalingos duomenų struktūros gali būti tokios: const kiek ilg type simb Mas = 11. WriteLn ('11. Tai paprasta. x2. { P a s l a u g ų skaičius } = 15.totojo apklausos. Siūlome vartoti šitokius meniu punktus. Ji taip pat sukuria langą. Ji nupiešia ekrane nurodytomis koordinatėmis langą ir nuspalvina nurodyta fono spalva. y2. Pabaiga'). A[i]). Kiek ir kokių gyvūnų yra zoologijos soduose (pateikti gyvūnų Visi gyvūnai pavadinimus be pasikartojimų. Čia reikia susitarti. = array [1. Klausimas iš uždavinio formuluotės Meniu punktas Kiek skirtingų pavadinimų gyvūnų yra zoologijos soduose? Skirtingi gyvūnai Kiek iš viso gyvūnų yra zoologijos soduose? Iš viso gyvūnų Kiek suaugusių gyvūnų ir kiek jauniklių yra zoologijos soduose? Suaugusieji ir jaunikliai Kuriuose zoologijos soduose rasti gyvūną ir kiek jų yra? Gyvūno Kur rasti? pavadinimas įvedamas klaviatūra. { M e n i u p u n k t o ilgis } = stringfilg]. '. Sodo g y v e n t o j a i '). viso gyvūnai gyvūnų '). ir darbo su rezultato langu procedūrų. Pabaiga Programos darbo pabaiga Visus meniu punktus galima išvesti tokiais sakiniais: WriteLn (' 1. kaip parinkti trumpus meniu punktų pavadinimus. yl. procedure Langas (xl. pavyzdžiui. procedure Paslaugos. kiek] { Meniu punktas } of simb. Tai jau ankstesniuose pratimuose vartota procedūra. '. Skirtingi WriteLn (' 2. Visus paslaugų pavadinimus iš anksto surašyti į masyvą. ką daryti. A. kokius veiksmus jos turi atlikti. s p a l v a : byte).. suaugusių ir jauniklių skaičių)? Apie kiek zoologijos sodų yra duomenų? Kiek sodų? Kuris zoologijos sodas turi daugiausiai gyvūnų ir kiek jų turi? Daugiausiai gyvūnų Kuris zoologijos sodas turi daugiausiai skirtingų pavadinimų Daugiausiai skirtingų gyvūnų ir kiek jų turi? Kuriame zoologijos sode yra daugiausiai jauniklių ir kiek jų yra? Jaunikliai Kokie gyvūnai yra dominančiame zoologijos sode? Zoologijos Sodo gyventojai sodo pavadinimas įvedamas klaviatūra. Iš WriteLn ('10. o procedūroje parašyti ciklą: for i := 1 t o 11 do W r i t e L n (i:5. kuriame išveda numeruotą paslaugų sąrašą.

kaip matote pavyzdyje. ' P a b a i g a ' ) . V a l y t i . V a l y t i . p r o c e d u r e P a s i r i n k i m a s (var k : integer). begin WriteLn ('Dar n e p a d a r y t a ' ) . kur k . šiuo atveju žodžių. 'Daugiausiai skirtingų'. Programa atlieka visus parengiamuosius darbus. 'Sodo g y v e n t o j a i ' . end.{ Žodžių masyvas.pasirinktos sąrašo paslaugos numeris. end. Tam bus panaudota procedūra Langas. kurie modeliuotų paslaugas. ' I š v i s o g y v ū n ų ' . b e g i n WriteLn ('Dar n e p a d a r y t a ' ) . Aprašomas kintamasis. Langas if k = if к = if к = if (xl. Rezultatams parodyti ekrane reikalingas atskiras langas. end. program Zoologij osSodai_V2. 1 then 2 then 3 then x2. V a l y t i . paprasta. V a l y t i . Reikšmių. к = 11 t h e n b e g i n W r i t e L n ( ' D a r b o p a b a i g a ' ) . begin WriteLn ('Dar n e p a d a r y t a ' ) . f o n a s ) . end. kiek skelbiama tipo apraše } c o n s t A : Mas = ( ' S k i r t i n g i g y v ū n a i ' . Juos šioje procedūroje ir laikysime. Dabar galime papildyti pagrindinę programą sakiniais. po to dedamas lygybės ženklas ir skliaustuose paeiliui išvardijamos reikšmės. gauname antrąjį programos variatą. end. Pranešimai tame lange bus skirtingi kiekvienai paslaugai. ' S u a u g u s i e j i i r j a u n i k l i a i ' . end. čia k . 'Kiek sodų?'. pranešimas „Įveskite pasirinktos paslaugos numerį" ir ReadLn (k). uses Crt. end. Vienmačio konstantų masyvo aprašymo sintaksė. V a l y t i . Tai lango panaikinimo ir perėjimo į pasirinkimo langą veiksmai. 'Kur r a s t i ? ' . Reikėtų patikrinti. tai reikėtų pasiūlyti pakartoti veiksmą procedure Valyti. V a l y t i . kiek nurodyta masyvo tipo apraše. turi būti tiek. y2. { Dialogo ir pradinių duomenų įvedimo programa } . bet dar jų nedarytų. Tai galima realizuoti sakinių grupe. Duomenų turi būti tiek. y l . kad žmogus gali klysti. 'Jaunikliai'. ' V i s i gyvūnai'. end. todėl juos šiai procedūrai perduoti netikslinga (nors ir nesudėtinga). Procedūroje gali būti tik trys sakiniai: lango piešimas.į visas užklausas atsako „Dar nepadaryti darbai". V a l y t i . Tačiau žinoma. nors jokios informacijos apie zoologijos sodus dar neteikia . ar nurodytas skaičius atitinka nors vieną paslaugą iš nurodytų sąraše. Jeigu ne. V a l y t i . ' D a u g i a u s i a i gyvūnų'. end.pasirinkimo numeris. Parašę visas minėtas procedūras ir papildę programą naujais sakiniais. Belieka viena bendra sakinių grupė visoms paslaugoms. Patogiau ir vaizdžiau naudoti išrinkimo pagal požymį operaciją c a s e : c a s e k of begin WriteLn ('Dar begin WriteLn ('Dar begin WriteLn ('Dar 11: nepadaryta') nepadaryta') nepadaryta') begin WriteLn ('Darbo pabaiga'). Išsamiau apie c a s e sakinį rasite kompiuteriniame Turbo Paskalio žinyne arba bet kurioje kalbą aprašančioje literatūroje.

3 0. begin L a n g a s (1. 15. 2. } integer). y l . 'Kiek sodų?'. 'Daugiausia gyvūnų'. s p a l v a : b y t e ) . TextColor L a n g a s (5. 25. end. ' P a b a i g a ' ) . 1. 'Sodo g y v e n t o j a i ' . ReadLn (к). { Žodžių masyvas. ' . ' V i s i gyvūnai'. end. k i e k ] of simb. 40. . y2). y l = 5. y l . B l a c k ) . x2 = 79. k i e k ] t h e n j a u := T r u e else begin WriteLn ReadLn. ilg = 25. 17. TextBackground (spalva). Paslaugos Į procedure Paslaugos. Dialogo priemonės } Langas } p r o c e d u r e L a n g a s ( x l . 'Kur r a s t i ? ' . . A[i]). var i : byte. 20. Mas = a r r a y [ 1 . 80. y2 = 15. x l = 45. viso gyvūnų'. begin j a u := F a l s e . t y p e simb = s t r i n g [ i l g ] . end. end. Green). begin L a n g a s (3. f o r i := 1 t o k i e k do W r i t e L n (i:4. i f к i n [1. x2.{ Meniu organizavimas } c o n s t k i e k = 11. W r i t e ( ' K ą r e n k a t ė s : '). begin Window ( x l . { Rezultatų lango koordinatės } f o n a s = Green. 'Daugiausia s k i r t i n g ų ' . w h i l e n o t j a u do . Red). ' S u a u g u s i e j i i r j a u n i k l i a i ' . ' . . y2. ClrScr end. kiek tipo apraše skelbiama const 'Iš A : Mas = ('Skirtingi gyvūnai'. ' J a u n i k l i a i ' . ('Klaidingas pasirinkimas - kartoti'). x2. var jau : boolean. Jų { Paslaugų skaičius } { Meniu punkto ilgis } { Meniu punktas } { Žodžių masyvo tipas Į turi būti tiek. Pasirinkimas procedure Pasirinkimas (var k : (Black).

forma. Duomenų struktūros } c o n s t Zoo = 'Zoo. w h i l e n o t Eof (B) do begin n := n + 1. { Lango valymas } L a n g a s (1. . x2. Gyvūnų sąrašas } c o n s t Nl = 20. i : integer. { Maksimalus skirtingų gyvūnų skaičius t y p e f o r m a = a r r a y [ 1 . к do w i t h A[n] do begin ReadLn (B. j g. . j g := 0. { Gyvūnų sąrašas } end. { Suaugusių ir jauniklių skaičius } end.x l . n := 0. j g := j g + G[i]. s e n i . s e n i . { Lango apačia ir dešinė pusė } Write ( ' = = = > Enter < = = = ' ) . { Visas ekranas } end. G[i]. j a u n i . s g := s g + G[i]. Zoo). A[n]. { Didelių ir mažų skaičius } k : integer. { Pavadinimas } seni. { Gyvūnų sąrašo forma J Zoologijos sodo aprašas } t y p e Sodas = r e c o r d Zoo : vardas. N 1 ] of g y v i s . G[i]. j a u n i ) . Pradinių duomenų sutvarkymas ) p r o c e d u r e S k a i t y t i (var A : VisiSodai. 25. A[n]. y 2 . y2. A[n]. y l . ReadLn (B. R e s e t (В). B l a c k ) . Gyvūno aprašas } gyvis = record pav : vardas. s g := 0. N 2 ] of S o d a s .1 5 . var B : text.y l + l ) . jauni : integer. { Skirtingų gyvūnų skaičius } G . A [ n ] . Zoologijos sodų sąrašas } c o n s t N2 = 20. 1. G [ i ] . к). begin GoToXY ( x 2 . L a n g a s ( x l . Zoo. { Pranešimas } ReadLn. { Pavadinimas } sg. type vardas = string[20]. begin A s s i g n (B.Valyti } procedure Valyti. { Maksimalus zoologijos sodų skaičius } t y p e V i s i S o d a i = a r r a y [ 1 . 80. . v a r n : integer). B l a c k ) .txt'. f o r i := 1 t o A[n]. end. end. p a v .

c a s e k a s of 1. end. atsakančią į pirmąjį klausimą. Kiekvieną naujai sukurtą procedūrą įterpsime į k ą tik parašytą programą Z o o l o g i j o s S o d a i _ V 2 bei pagrindinės programos dalies variantiniame sakinyje ( c a s e ) atitinkamoje eilutėje vietoj sakinio W r i t e L n ( ' D a r n e p a d a r y t i d a r b a i ' ) įrašysime kreipinį į šią procedūrą. kas : integer. end. Pavyzdžiui. ('Darbo pabaiga').6. y l . := T r u e . { Bendras gyvūnų skaičius } } . end. integer. { { { { Darbo pabaigos požymis } Pasirinkto veiksmo numeris Duomenų sąrašas } Zoologijos sodų skaičius ) nepadaryti darbai'). programos pakeitimai turėtų būti įterpti taip: program Zoologi josSodai_v2. Užklausų apdorojimo procedūros Šiame skyrelyje sukursime procedūras. В : VisiSodai. atsakančias į pateiktus klausimus pagal anksčiau pateiktoje lentelėje numatytus meniu punktus (31 pav. y2.. end. f o n a s ) .kiek-1 WriteLn ('Dar kiek begin WriteLn Pabaiga end. n : integer. n : integer. parašius procedūrą. begin Paslaugos. n). { Dialogo ir pradinių duomenų įvedimo programa } uses Crt. P a b a i g a := F a l s e . k l : integer. konstantos. Valyti. { Dialogo priemonės: procedūros. integer. duomenų tipų aprašai } { Naujoji procedūra turi būti įterpta čia var Pabaiga kas B k : : : : boolean. x2. VisiSodai. L a n g a s ( x l .C l o s e (В). к.). S k a i t y t i (B. 9. w h i l e n o t P a b a i g a do begin P a s i r i n k i m a s (kas). var Pabaiga : boolean.

Galima rezultatus paruošti ir iš karto visiems veiksmams. kad programa visiškai teisinga. kiekvienam naujam veiksmui papildyti. w h i l e n o t P a b a i g a do begin P a s i r i n k i m a s (kas). Paprastesnėms programoms testai dažnai sudaromi intuityviai. Tik visiškai įsitikinus. Laukiami rezultatai paruošiami kiekvienam meniu veiksmui. kad papildymai netinkami. end. nes paaiškėjus. Be to. y l . Po kiekvieno papildymo gautą programos variantą būtina išsaugoti. f o n a s ) . P a b a i g a := F a l s e . n). 2: k i e k . end. Testiniai duomenys turi būti tokie. kad jeigu programos darbo rezultatai nesutaptų su numatytaisiais. tačiau teigti. ar įvairiems duomenų rinkiniams gaunami teisingi rezultatai. tai pagal juos būtų galima sužinoti. duomenys turi būti parenkami taip. parenkant artimus realiems. negalima. galima atiduoti naudotis vartotojui. c a s e k a s of 1: b e g i n { Čia bus kreipinys į naująją procedūrą bei gauto rezultato spausdinimas } end.1 : W r i t e L n ( ' D a r n e p a d a r y t i kiek : begin WriteLn ('Darbo pabaiga'). kad numatytuosius rezultatus būtų galima nesunkiai suskaičiuoti. Ištaisius klaidas reikia įsitikinti. Testas kuriamai programai Z o o l o g i j o s S o d a i yra pateikiamas byloje ' Z o o . y2. end. Valyti. Kiekvienam testui paruošiami laukiami rezultatai. Be to. P a b a i g a := T r u e . ankstenį programos variantą galima pašalinti. Su jais patikrinamas programos darbas. turimą programos variantą. Nauji papildymai atliekami programos kopijoje. tuomet būtų galima pradėti darbą iš naujo. Tam būtina paruošti reikalingą bylų su pradiniais testavimo duomenimis rinkinį. kuri programos vieta neteisinga.begin Paslaugos. . Taip daryti būtina. tačiau jie ne visuomet veiksmingi dėl didelio testų skaičiaus ir didelės darbų apimties. Programą po kiekvieno naujo papildymo būtina derinti ir testuoti. darbai'). t x t ' . Testai ruošiami pagal tam tikrus formalius metodus. L a n g a s ( x l . nors ir nepilną. Pateiksime šiai kuriamai programai numatomų rezultatų pavyzdį. S k a i t y t i (B. kad nauji papildymai tinkami ir nebus keičiami. x2.

Tai reiškia. Skirtingi gyvūnai Ši procedūra turi nustatyti. Kuriant programą nebūtina visus suplanuotus veiksmus programuoti tokia eilės tvarka. zoologijos sodų skaičius (kintamasis n) bei rezultatas . kiek skirtingų gyvūnų pavadinimų yra. tuomet. kiek skirtingų pavadinimų gyvūnų yra zoologijos soduose. nori ar nenori. Tai ir bus atsakymas. tuo vartotojas linksmesnis (ir naudingesnis programuotojui). Jeigu programą kuria ne vienas žmogus.bendras gyvūnų skaičius (kintamasis g). veiksmai programuojami ne iš eilės.Meniu punktas Rezultatas Klaviatūra įvedamas užsakymas paryškintas Skirtingi gyvūnai Iš viso gyvūnų Suaugusieji ir jaunikliai S k i r t i n g ų gyvūnų y r a : 6 Z o o l o g i j o s soduose gyvūnų yra: Zoologijos soduose yra s u a u g u s i ų : 44 j a u n i k l i ų : 68 Kur rasti? Tigras Kauno z o o l o g i j o s s o d a s 2 1 Berlyno zoologijos sodas 3 5 Avis Tokių gyvūnų z o o l o g i j o s s o d a i n ė r a Tigras 5 6 Antis 12 5 V a n a g a s 12 5 Vilkas 5 16 Arklys 8 11 Katinas 2 25 Z o o l o g i j o s sodų yra: 3 Turtingiausias zoologijos ssodas yra R y g o s z o o l o g i j o s s o d a s : 47 D a u g i a u s i a i s k i r t i n g ų gyvūnų t u r i Rygos z o o l o g i j o s s o d a s : 3 Daugiausiai jauniklių t u r i B e r l y n o z o o l o g i j o s s o d a s : 36 Kauno zoologijos sodas Tigras 2 1 Antis 12 5 Vilniaus zoologijos sodas Sąraše t o k i o sodo nėra Visi gyvūnai Kiek sodų? Daugiausiai gyvūnų Daugiausiai skirtingų Jaunikliai Sodo gyventojai 112 Pabaiga Dabar aptarsime visus meniu punktus. Galima pradėti nuo trumpiausių ir lengviausiai padaromų. Tai aktualu. Čia meniu punktai aptariami paeiliui kaip surašyta. . kad reikia peržiūrėti visus sodus ir suskaičiuoti. Procedūrai parametrais turi būti perduodamas visų zoologijos sodų gyvūnų sąrašas (pažymėkime jį kintamuoju A). Pabaigai galima pasilikti sunkiausią veiksmą. kokia jie surašyti. kai programos užsakovui atiduodamas naudotis dar neišbaigtas programos variantas: kuo daugiau programa daro.

Programos kintamųjų sąrašą reikia papildyti: k : i n t e g e r . f o r i := 1 t o n do к := к + A [ i ] . Rr[g] := p a v . f o r i := 1 t o n do { Zoologijo sodų peržiūra } f o r j := 1 t o A[i]. k). k). zoologijos sodų skaičius (kintamasis n) bei rezultatas .bendras gyvūnų skaičius (kintamasis k). var g : integer). j : i n t e g e r .p r o c e d u r e S k i r t i n g i G y v i a i (var A : VisiSodai. Papildymai sąraše. n : i n t e g e r . n. n. { Ar pavadinimas yra masyve Rr? f o r r := 1 t o g do i f R r [ r ] = p a v t h e n y r a := t r u e . r : integer. n : i n t e g e r . var k : integer). Iš viso gyvūnų Suskaičiuoti. if not yra then begin { Naujas vardas: nauja rūšis. end. v a r Rr : Vardai. p r o c e d u r e KiekGyvena (var A : V i s i S o d a i . k do { Vieno sodo sąrašo peržiūra } w i t h A [ i ] . { Skirtingų skaičius } t y p e V a r d a i = a r r a y [ l . k:3). j g . } g := g + 1. k:3). G [ j ] do begin y r a := f a l s e . informacija apie kiekvienos rūšies gyvūnų suaugusius ir jauniklius laikoma įrašo Sodas laukuose s g ir j m. end. . v a r i. N l * N 2 ] of v a r d a s . yra labai paprasta . yra : boolean. kiek zoologijos soduose iš viso yra gyvūnų (bendras suaugusių ir jauniklių skaičius). Kreipinys į šią procedūrą ir rezultato išvedimas tokie: K i e k G y v e n a (B. Tad tereikia susumuoti juos visus. Procedūrai parametrais turi būti perduodamas visų zoologijos sodų gyvūnų sąrašas (masyvas A). W r i t e L n ( ' S k i r t i n g ų g y v ū n ų y r a : ' . { Rūšių pavadinimų masyvas Į i. begin g := 0. s g + A [ i ] . . j.kaip pamename iš duomenų struktūrų aprašų. } Kreipinys į šią procedūrą ir rezultato išvedimas tokie: S k i r t i n g i G y v i a i (B. begin к := 0. W r i t e L n ( ' Z o o l o g i j o s s o d u o s e g y v ū n ų y r a : ' .

var V : vardas. end. i. ir kiek tokių gyvūnų tuose soduose yra. j : i n t e g e r . skirtą nustatyti. g j : i n t e g e r ) . turi būti išvedamas pranešimas. end. Šį kartą užduotis truputį sunkesnė negu buvo iki šiol. t. skirtą suskaičiuoti.kiekvieno sodo sąraše G ieškoma įvesto gyvūno pavadinimo. y l . neperduoti rezultatų į pagrindinę programą. kad nežinome. f o r i := 1 t o n do f o r j := 1 t o A [ i ] . Kur rasti? Parašysime procedūrą. y2. g j := g j + j g . T : boolean. WriteLn ('Koks gyvūnas j u s domina?'). kuriuose zoologijos soduose yra mus dominantis gyvūnas. { Sode yra toks gyvūnas } W r i t e L n (A[i]. Neradus nė vieno ieškomo gyvūno. y. p r o c e d u r e K u r R a s t i (var A : V i s i S o d a i . Gyvūno paieška soduose nesunki .išvedamas sodo pavadinimas ir kiek yra tos rūšies suaugusių gyvūnų bei jauniklių. kiek zoologijos soduose yra suaugusių gyvūnų ir kiek jauniklių (prieauglio). . V := V + ' '. n : i n t e g e r .Z. T e x t C o l o r (Red). Reikia susumuoti A masyvo s g ir j g laukų skaičius atskirai. Čia siūlome paprasčiausią variantą . f o n a s ) . Kebliausia yra tai. G [ j ] do i f pav = V then begin τ := T r u e . kad būtų įvestas ieškomo gyvūno pavadinimas (tai padaryti nesunku). s e n i : 4 . Pirmiausia turime paprašyti. kiek rezultatų bus. Procedūra labai panaši į KiekGyvena: p r o c e d u r e S e n a s I r J a u n a s (var A : VisiSodai. x2.informaciją apie sodą išspausdinti pačioje procedūroje. T := F a l s e . j a u n i : 4 ) .Suaugusieji ir jaunikliai Parašysime procedūrą. n : i n t e g e r ) . Radus jį . ReadLn (V). ' ' . f o r i := 1 t o n do w i t h A[i] do begin g s := g s + sg. g j := 0. begin L a n g a s ( x l . kad tokio gyvūno nė viename sode nėra. k do w i t h A [ i ] . begin g s := 0. var i : integer. v a r gs.

end. . end. : boolean. Gyvūnų pavadinimams laikyti galime panaudoti masyvą. n : integer). f o r j j := 1 t o r do { Paieška. radus tigrų kituose soduose. s e n i + s e n i .ir kurio elementai . padidinsime tik suaugusių bei jauniklių skaičių). kurių jame dar nėra (pavyzdžiui.forma . { Naujo sąrašo elementų skaičius } f o r i := 1 t o n do w i t h A[i] do { Sodų sarašo peržiūra } f o r j := 1 t o k do w i t h G[j] do begin { Gyvūnų sąrašo peržiūra } T := F a l s e . s e n i := B [ j j ] . tai į naująjį masyvą tigrą įtrauksime tik pirmą kartą. B [ j j ] . kurio tipas . kiek elementų turi masyvas B (taip pavadintas kintamasis pagrindinėje programoje). B [ j j ] . B[r] := G[j]. Kiek sodų? Zoologijos sodų skaičių nustatyti labai paprasta . ar yra naujame sąraše } if pav = B[jj]. jei tigras yra ne viename sode. end. f o n a s ) . j a u n i + j a u n i . y2. kuriame būtų saugomas suvestinis gyvūnų sąrašas.jau skaitant iš pradinių duomenų bylos suskaičiuojama. p r o c e d u r e V i s i (var A : VisiSodai. var B : forma.yra įrašai. Gyvūnų pavadinimus į naująjį masyvą surašysime taip: imsime kiekvieno zoologijos sodo gyvūnų sąrašus (įrašo Sodas laukas G) ir iš jų į naująjį masyvą įrašysime tik tuos gyvūnų pavadinimus. Visi gyvūnai Parašysime procedūrą. begin r := 0. j. r.g y v i s .pav then { Pavadinimas sąraše jau yra } begin T := T r u e . j a u n i :=B[j j ] . kiek jų yra. nėra'). if not T then { Sąraše tokio pavadinimo nebuvo } b e g i n r := r + 1 . pateikiančią ekrane zoologijos soduose esančių gyvūnų sąrašą.i f n o t T t h e n W r i t e L n ( ' T o k i ų gyvūnų s o d u o s e T e x t C o l o r (Black). Pakanka išspausdinti. { Rezultatai ekrane } f o r i := 1 t o r do w i t h B[i] do W r i t e L n (pav. s e n i : 4 . j j T : integer. Tad mums net nereikalinga papildoma procedūra. Lengviausia pasikartojančių gyvūnų pavadinimų išvengti sudarius papildomą masyvą. Tai kintamojo n reikšmė. y l . L a n g a s ( x l . j a u n i : 4 ) . Gautus rezultatus taip pat išspausdinsime ir jų į pagrindinę programos dalį neperduosime. i. x2.

begin g := 1. galima taip: kaip jau minėta anksčiau. var g : integer). taip pat nesunku . Mums tereikia rasti įrašą.jg) > g l then begin g := i . f o r i := 1 t o n do i f (A[i]. begin g := i . n : i n t e g e r . s g + A [ i ] .zoologijos sodą aprašančiame įraše yra sg ir j g laukai (suaugusių gyvūnų ir jauniklių tame sode skaičiai). g l : i n t e g e r . end. kad jokių duomenų apie zoologijos sodus nėra. . Tai ir bus atsakymas. tai reikia visai neatlikinėti skaičiavimų. var g : integer).reikia peržiūrėti sodų sąrašą ir surasti. (var A : VisiSodai. zoologijos sodą aprašančiame įraše yra s g ir j g laukai (suaugusių gyvūnų ir jauniklių tame sode skaičiai). j g . begin g := i . Tai turėtų būti padaryta pagrindinėje programoje. kuriame zoologijos sode daugiausia jauniklių.k t h e n g := i . Jeigu duomenų masyve nėra.Daugiausiai gyvūnų Nustatyti. v a r i. kad duomenų sąrašas gali būti tuščias. kurio sodo gyvūnų sąrašo masyvas turi daugiausiai elementų. n : i n t e g e r . procedure K u r i s D a u g i a u s i a i (var A : VisiSodai. j g . s g + A [ l ] . g l := A [ l ] . var g : integer). p r o c e d u r e KurisSodas (var A : VisiSodai. Daugiausiai skirtingų Nustatyti. f o r i := 1 t o n do i f A [ i ] . kuriame zoologijos sode daugiausiai gyvūnų nesunku . Jaunikliai Nustatyti. Šioje procedūroje neatsižvelgta į tai. kuris sodas turi daugiausiai skirtingų gyvūnų. n : i n t e g e r . kurio minėtų laukų suma didžiausia. Mums tereikia surasti įrašą. var i : integer. g l := A [ i ] . tik pranešti. kurio j g lauko reikšmė didžiausia. procedure Jaunikliai var i : integer. k > A[g].sg + A[i].

Toliau reikia patikrinti. programą kūrėme pažingsniui: po kiekvieno žingsnio (t. ReadLn (V). Sodo gyventojai Parašysime procedūrą. T e x t C o l o r (Red).Z = V t h e n begin τ := T r u e . y. kurias dalis pakeitus ką būtina taip pat atitinkamai pakeisti. Galutinė programa Pagaliau sukurta viskas. . T : boolean. G [ j ] do W r i t e L n (pav. ką galima programuoti lygiagrečiai (t. kad tokio sodo nėra. radus . V := V + ' '.išvesti rasto įrašo lauko G duomenis. vienu metu atskiriems programuotojams). j : i n t e g e r . var V : vardas. Bet kuriuo metu turimą versiją buvo galima atiduoti vartotojui. ko užduotyje reikalaujama. 9. Tai patogus programų kūrimo būdas. y. { Rasto sodo duomenų spausdinimas } f o r j := 1 t o A [ i ] . n : i n t e g e r ) . T := F a l s e . end. Neradus ieškomo sodo pavadinimo. begin L a n g a s ( x l . f o n a s ) . WriteLn ('Koks z o o l o g i j o s sodas j u s domina?'). ar toks sodas yra (palyginti įvestą pavadinimą su zoologijos sodų masyvo elementų laukais Zoo). Atskirų programos dalių . end. Pirmiausia turime paprašyti įvesti zoologijos sodo pavadinimą. bet veikiančią programos versiją. k do w i t h A [ i ] . Joje akivaizdžiai matyti. Kaip pastebėjote.funkcijų ir procedūrų . s e n i : 5 . i. x2. p r o c e d u r e ZooGyventojai (var A : V i s i S o d a i . j g t h e n g := i . f o r i := 1 t o n do i f A[i]. j g > A[g]. pranešti. pateikiančią ekrane vieno zoologijos sodo gyvūnų sąrašą. sukūrus naują procedūrą) turėdavome nors ir ne viską. atliekančią.tarpusavio ryšiai pavaizduoti 31 paveiksle pateiktoje schemoje.f o r i := 1 t o n do i f A [ i ] . y l . kas numatyta užduotyje. j a u n i : 5 ) .7. Iš pradžių ji neteikė jokios informacijos (tik dialogas buvo). vėliau po truputį teikiamų paslaugų daugėjo. y2. T e x t C o l o r (Black). i f n o t T t h e n WriteLn ( ' S ą r a š e t o k i o sodo n ė r a ' ) .

kurias galima parašyti tobuliau. 'Jaunikliai'. 'Visi gyvūnai'. 'Daugiausia 'Sodo x l = 45. 'Daugiausia skirtingų gyventojai'. Duomenų turi būti tiek. Svarbu. Pateikiame galutinį visos programos tekstą (t. praleiskite. Panagrinėję rasite daug vietų. { Rezultatų lango koordinatės } Green. y2). Funkcijų ir procedūrų tarpusavio ryšiai Programa nėra tobula. kas reikalinga zoologijos sodų programai). { Meniu organizavimas c o n s t k i e k = 11. fonas = ir jaunikliai'. sodų?'. y l = 5. kad suprastumėte dialogo sukūrimo principą. ' I š v i s o gyvūnų'. k i e k ] of simb. y l . } { Meniu punktas } Mas = a r r a y [ 1 . { Dialogo priemonės { Langas p r o c e d u r e L a n g a s ( x l . } } . 'Suaugusieji 'Kur 'Kiek rasti?'. { Galutinė versija } uses Crt. x2 = 79. begin Window ( x l . nesunkiai tai pastebėsite. s p a l v a : b y t e ) . . y.31 pav. y2. Nenusiminkite. TextBackground (spalva). Tai ypač svarbu kuriant šiuolaikines programas. surenkame iš visur į vieną vietą viską. Įgavę daugiau patirties. { Žodžių masyvo tipas } { Žodžių masyvas. x2. Jei ne viską iš karto suprasite. { Paslaugų skaičius } iIg = 25. Juk paslaugų skaičius ir jų sudėtingumas priklauso nuo jūsų. x2. prprogram ZoologijosSodai_V12. y2 = 15. '. y l . jeigu ne iš karto tai pamatysite. kiek skelbiama tipo apraše } c o n s t A : Mas = ( ' S k i r t i n g i g y v ū n a i ' . 'Pabaiga'). { Meniu punkto ilgis } type simb = s t r i n g į i l g ] . C l r S c r end. gyvūnų'.

{ Valyti procedure Valyti. { Lango apačia ir dešinė pusė } W r i t e ( ' = = = > E n t e r < = = = ' ) . ' . 80.kiek] t h e n j a u := T r u e else begin WriteLn ( ' K l a i d i n g a s p a s i r i n k i m a s : ReadLn. { Pasirinkimas p r o c e d u r e P a s i r i n k i m a s (var k : i n t e g e r ) . 15. { Suaugusių ir jauniklių skaičius } end. x2. 1. begin GoToXY ( x 2 . begin L a n g a s (1. ReadLn (к). B l a c k ) .y l + l ) . A[i]). 1. { Maksimalus skirtingų gyvūnų skaičius } t y p e f o r m a = a r r a y [ 1 . f o r i := 1 t o k i e k do W r i t e L n (i:4. } } kartoti'). { Gyvūnų sąrašas } c o n s t N1 = 20. type vardas = string[20]. var i : byte. L a n g a s (5. T e x t C o l o r (Black). t x t ' . 25. { Pranešimas ) ReadLn. end.x l . Green). { Pavadinimas } seni. 80. 25. if к in [1. w h i l e n o t j a u do begin L a n g a s (3. L a n g a s ( x l .{ Paslaugos procedure Paslaugos. 40. 20.. B l a c k ) . W r i t e ( ' K ą r e n k a t ė s : '). y 2 .1 5 . end. { Gyvūno aprašymas } gyvis = record pav : vardas. begin j a u := F a l s e . { Gyvūnų sąrašo forma } . 2. Į Visasekranas } end. 17. { Duomenų struktūros } } c o n s t Zoo = ' Z o o . . y l . 40. end. { Lango valymas } L a n g a s (1. var jau : boolean. B l a c k ) . y2. jauni : integer. end. N1] of g y v i s . Red).

N l * N 2 ] of v a r d a s . j a u n i ) . { Zoologijos sodų sąrašas } c o n s t N2 = 20.= 1 t o g do i f R r [ r ] = p a v t h e n y r a := T r u e . { Skirtingų skaičius } t y p e V a r d a i = a r r a y [ l . if not yra then . var B : text. G[i]. A[n]. f o r i := 1 t o n do { Zoologijos sodų peržiūra ) f o r j := 1 t o A[i].{ Zoologijos sodo aprašymas } t y p e Sodas = r e c o r d Zoo : vardas. n : i n t e g e r . v a r Rr : Vardai. { Gyvūnų sąrašas } end. var g : integer). . j g := j g + G[i]. k do { Vieno sodo sąrašo peržiūra } w i t h A [ i ] . Zoo. j Pradinių duomenų sutvarkymas } p r o c e d u r e S k a i t y t i (var A : VisiSodai. G [ j ] do begin y r a := F a l s e . f o r i := 1 t o A[n]. s e n i . Z o o ) . к). ( procedure S k i r t i n g i G y v i a i (var A : VisiSodai. A[n]. { Rūšių pavadinimų masyvas } i. ReadLn (B. Close (B). p a v . s g := s g + G [ i ] . j g. . end. { Ar pavadinimas yra masyve Rr? } for r . begin Assign (B. r : integer. j a u n i . i : integer. n := 0. v a r n : i n t e g e r ) . yra : boolean. begin g := 0. j g := 0. s g := 0. while not Eof (B) do begin n := n + 1. { Pavadinimas } sg. к do w i t h A[n] do begin ReadLn (B. R e s e t (В). s e n i . G [ i ] . { Suaugusių ir jauniklių skaičius } k : integer. { Skirtingų gyvūnų skaičius } G : forma. A[n]. N 2 ] of S o d a s . end. j. A [ n ] . end. G [ i ] . { Maksimalus zoologijos sodų skaičius t y p e V i s i S o d a i = a r r a y [ 1 .

n : i n t e g e r . ReadLn (V). . begin L a n g a s ( x l . begin g s := 0. end. WriteLn ('Koks gyvūnas Jus domina?'). } g := g + 1. j : integer. p r o c e d u r e KurRasti (var A : VisiSodai. x2. T : boolean. n : i n t e g e r . p r o c e d u r e KiekGyvena (var A : V i s i S o d a i . f o r i := 1 t o n do w i t h A[i] d o begin g s := g s + s g . f o r i := 1 t o n do f o r j := 1 t o A [ i ] . end. var к : integer). n : integer). end. ' '. g j := g j + j g . { Sode yra toks gyvūnas } W r i t e L n (A[i]. j : i n t e g e r . var i : integer. p r o c e d u r e S e n a s I r J a u n a s (var A : VisiSodai. g j := 0. Papildymai sąraše. T := F a l s e . T e x t C o l o r (Black). seni:4.Zoo. jauni:4). s g + A [ i ] . G [ j ] do if pav = V then begin T := True. k do w i t h A [ i ] . end. y l .' '. end. i. v a r gs.begin { Naujas vardas: nauja rūšis. var V : vardas. end. f o n a s ) . V := V -t. begin к := 0. end. j g . Rr[g] := p a v . T e x t C o l o r (Red). end. y2. f o r i := 1 t o n do к := к + A [ i ] . v a r i. g j : i n t e g e r ) . i f n o t T t h e n W r i t e L n ( ' T o k i ų gyvūnų s o d u o s e n ė r a ' ) .

y l . { Naujo sąrašo elementų skaičius } n do w i t h A[i] do { Sodų sąrašo peržiūra } f o r t := 1 t o k do w i t h G[t] do begin { Gyvūnų sąrašo peržiūra } T := F a l s e . forma. var g : integer).{ ) procedure Visi var B : r. f o r i := 1 t o n do } . j j : T : begin r := 0. integer. g l := A [ l ] . begin g := 1. end. s e n i : 4 . var i : integer. boolean. f o n a s ) . { Rezultatai ekrane } f o r i := 1 t o r do w i t h B[i] do W r i t e L n (pav. x2. j g . j a u n i + j a u n i . var g : integer). j a u n i : 4 ) . t. end. B [ j j ] . f o r i := 1 t o n do i f ( A [ i ] . j g) > g l then begin g := i . ( } p r o c e d u r e K u r i s D a u g i a u s i a i (var A : VisiSodai. g l := A [ i ] . if not τ then { Sąraše tokio pavadinimo nebuvo } b e g i n r := r + 1 . s g + A [ l ] . n : i n t e g e r . s g + A [ i ] .pav then begin { Pavadinimas sąraše jau yra } T := T r u e . s e n i := B [ j j ] . j g . gl : i n t e g e r . ( procedure KurisSodas (var A : VisiSodai. n : integer). end. v a r i. begin g := 1. B[r] := G[t]. f o r i := 1 t o (var A : VisiSodai. n : i n t e g e r . L a n g a s ( x l . y2. f o r j j := 1 t o r do { Paieška. ar yra tokių naujame sąraše } ifpav = B[jj]. s e n i + s e n i . i. end. B [ j j ] · j a u n i := B [ j j ] . end. end. s g + A[i].

y l . y l . { Rasto sodo duomenų spausdinimas } f o r t := 1 t o A [ i ] . y2. T e x t C o l o r (Red). k do w i t h A[i]. L a n g a s ( x l . s e n i : 5 . begin g := 1. w h i l e n o t P a b a i g a do begin var { { { { Darbo pabaigos požymis } Pasirinkto veiksmo numeris Duomenų sąrašas } Zoologijos sodų skaičius } P a s i r i n k i m a s (kas). f o n a s ) .i f A[i]. { p r o c e d u r e ZooGyventojai (var A : V i s i S o d a i . P a b a i g a := F a l s e . Zoo = V t h e n begin T := T r u e . ReadLn (V). x2. . end. boolean. end. j g > A[g]. end. f o n a s ) . S k a i t y t i (B. var i : integer. j a u n i : 5 ) . i. begin L a n g a s ( x l . f o r i := 1 t o n do i f A[i]. integer). var V : vardas. T := F a l s e . n : i n t e g e r .k t h e n g := i . Pabaiga kas integer. n integer. V := V + ' '. n). x2. p r o c e d u r e J a u n i k l i a i (var A : VisiSodai. G[t] do W r i t e L n (pav.= 1 t o n do i f A[i]. k l integer. var g . B VisiSodai. i f n o t T t h e n WriteLn ( ' S ą r a š e t o k i o sodo n ė r a ' ) . k > A[g]. k. begin Paslaugos. T e x t C o l o r (Black). WriteLn ('Koks z o o l o g i j o s sodas j u s domina?'). f o r i . t : i n t e g e r . n : i n t e g e r ) . T : boolean. j g t h e n g := i . y2. end.

Daug patogiau dirbti su mažesnės apimties programų tekstais. Programa skaidoma į modulius ne tik patogumui: labai ilgų programos tekstų kompiliatorius nepajėgia tvarkyti. k l ) .Zoo. W r i t e L n (B[k].Zoo. n).8. k).c a s e k a s of 1 : b e g i n S k i r t i n g i G y v i a i (B. n. Programuojant Turbo Paskaliu galima saugoti programą keliose bylose. W r i t e L n ( ' J a u n i k l i ų : '. W r i t e L n ( ' Z o o l o g i j o s s o d u o s e g y v ū n ų y r a : ' . 2 : b e g i n K i e k G y v e n a (B. B [ k ] . kai programą kuria ne vienas žmogus. W r i t e L n ( ' D a u g i a u s i a i j a u n i k l i ų t u r i '). Jų struktūra ir panaudojimas yra toks pat kaip ir Crt. Dos ir kt. end. W r i t e L n ( ' S k i r t i n g ų g y v ū n ų y r a : ' . ' : ' . W r i t e L n ( ' g y v ū n ų t u r i '). n). 10 : Z o o G y v e n t o j a i (B. к). tačiau tai papildomas darbas. к). k:3). n. B [ k ] . end. Programos modifikacija Parašyta programa jau turi daugiau kaip 300 eilučių.Zoo. k:3). к). n). k. Labai patogu ne tik ku- . n. Tokią ilgą programos bylą tvarkyti nepatogu. end. 9. kl:3). Geriau sukaupti jas atskirose bylose ir kuriamoje programoje tik nurodyti tas bylas. n). Jas nesunku perkelti iš vienos programos į kitą. end. Kuriant programas pastebima. WriteLn ('Suaugusių : k:3). 4 : K u r R a s t i (B. 8 : b e g i n K u r i s S o d a s (B. W r i t e L n (B[k]. ' : ' . W r i t e L n ( ' D a u g i a u s i a i s k i r t i n g ų p a v a d i n i m ų '). n. 9 : b e g i n J a u n i k l i a i (B. B[k]. end. 5 : V i s i (B. Valyti. P a b a i g a := T r u e . 3 : b e g i n S e n a s I r J a u n a s (B. n. kiek : begin WriteLn ('Darbo pabaiga'). end. end. j g ) . Moduliai naudingi. WriteLn ( ' Z o o l o g i j o s soduose yra'). W r i t e L n ( ' T u r t i n g i a u s i a s z o o l o g i j o s s o d a s y r a '). end. 7 : b e g i n K u r i s D a u g i a u s i a i (B. k). ' : ' . n. W r i t e L n (B[k]. k). j g ) . s g + B [ k ] . kad dalis paprogramių pradeda kartotis. 6 : W r i t e L n ( ' Z o o l o g i j o s s o d ų y r a : ' . Tai vartotojo moduliai. end.

tai surašomi duomenų tipai. Kitose bylose tekstas pradedamas žodžiu u n i t . Paleidus vykdyti pagrindinę programą. kintamieji. Visos bylos užrašomos su priedėliu p a s . kurias vartoja ryšio dalyje nurodytos paprogramės. kas bus reikalinga kitoms programoms. Modulio byla prijungiama prie programos sakinyje u s e s užrašant bylos vardą taip pat. tuomet žodį b e g i n galima praleisti. Programinio modulio struktūra tokia: u n i t Rasa. Tai kartu ir bylos vardas R a s a . bet ir dažniausiai vartojamas priemones (ne tik procedūras ir funkcijas) saugoti atskirose bylose. Modulio priemonių realizacija. begin end. paprogramių antraštės.riamos programos tekstą saugoti keliose bylose. Čia gali būti rašomas programos tekstas. y. kad čia naujos surašytos priemonės gali būti naudojamos tik šioje dalyje (yra lokalios modulyje) ir jomis negalės pasinaudoti kitos programos. Dirbant su Turbo Paskaliu. p a s i n t e r f a c e Ryšio dalies su kitomis programomis aprašymo pradžia. grupuojant pagal paskirtį ar kitokius programuotojo pasirinktus požymius. paruoštą vartoti su priedėliu t p u . Čia surašomi duomenų tipai. tačiau tik pagrindinės programos tekstas pradedamas žodžiu program. Jeigu šioje dalyje nieko nerašoma. Turbo Paskalio terpė pati tai padarys ir sukurs modulį. t. nebūtina atskirai kompiliuoti modulio teksto. kurių antraštės buvo surašytos ryšio dalyje. implementation Ryšio dalies pabaiga. tomet čia rašomi tekstai vykdomi modulių prie programos prijungimo seka. . Jeigu programa vartoja daug modulių. kintamieji ir kitos paprogramės. Juo nurodyti veiksmai atliekami prieš pagrindinės programos darbo pradžią. Reikia žinoti. kaip ir standartinių modulių vardus. Pilnų antraščių kartoti nebūtina. Modulio vardas. Jeigu reikia. Čia surašomi paprogramių tekstai. visa.

pas Procedūra S k a i t y t i . { Pavadinimas } seni. j g.pas SodaiMl. . procedūros. G : forma. . Gyvūno sąrašas { c o n s t N1 = 20. begin end. Pagrindinė programa. Visų veiksmų procedūros. v a r n : i n t e g e r ) . { Gyvūnų sąrašo forma } { Zoologijos sodo aprašas t y p e Sodas = r e c o r d Zoo : vardas.Dabar pertvarkykime sukurtą programą.pas Dialogo organizavimo priemonės: konstantos. { Maksimalus skirtingų gyvūnų skaičius t y p e f o r m a = a r r a y [ 1 .pas Veiksmai. N 1 ] of g y v i s . implementation procedure Skaityti. var B : text. t x t ' . ( Gyvūno aprašas gyvis = record pav : vardas. Meniul Veiksmai SodaiMl Meniul. unit Duomenys. tipai. sg. { Pradinių duomenų sutvarkymas p r o c e d u r e S k a i t y t i (var A : VisiSodai. interface uses Tipai. { { { { Pavadinimas } Suaugusių ir jauniklių skaičius } Skirtingų gyvūnų skaičius } Gyvūnų sąrašas } end. Duomenys Duomenys. { const N2 = 20. Modulių tekstai unit Tipai. { Suaugusių ir jauniklių skaičius } end. N 2 ] of implementation Sodas. i : integer. interface { Duomenų struktūros c o n s t Zoo = ' Z o o . Zoologijos sodų sąrašas { Maksimalus zoologijos sodų skaičius } t y p e V i s i S o d a i = a r r a y [ 1 .pas Saugomos duomenų struktūros. type vardas = string[20]. k : integer. . Galime programą išskaidyti į tokias dalis: Modulis Byla Turinys Tipai Tipai. j a u n i : i n t e g e r .

unit Meniu 1. 'Daugiausiai skirtingų'. A[n]. { Paslaugų skaičius } i I g = 25. Zoo. begin end. 'Sodo g y v e n t o j a i ' . x2. k i e k ] of simb. ' D a u g i a u s i a i gyvūnų'. y l = 5. 'Kiek sodų?'. ' V i s i g y v ū n a i ' . A[n]. { Meniu punktas } Mas = a r r a y [ 1 . end. к do w i t h A[n] do begin ReadLn (B. ' P a b a i g a ' ) . { Dialogo priemonės } p r o c e d u r e L a n g a s ( x l . x2. A[n]. p r o c e d u r e P a s i r i n k i m a s (var k : i n t e g e r ) . { Meniu punkto ilgis } t y p e simb = s t r i n g f i l g ] . { Rezultatų lango koordinatės: } x2 = 79. . s p a l v a : b y t e ) . s e n i . Langas } . x l = 45.begin A s s i g n (B. procedure Valyti. c o n s t k i e k = 11. ReadLn (B. n := 0. { Žodžių masyvo tipas } { Žodžių masyvas. C l o s e (B). end. y2 = 15. Jų turi būti tiek. G[i]. begin Window ( x l . p a v . {Meniu organizavimas } interface uses Crt. s g := 0. y2). s g := s g + G [ i ] . s e n i . j g := 0. 'Jaunikliai'. Zoo). w h i l e n o t Eof (B) do begin n := n + 1. A [ n ] .= j g + G[i]. G[i]. procedure Paslaugos. 'Suaugusieji ir jaunikliai'. R e s e t (B). f o r i := 1 t o A[n]. k). j g . kiek tipo apraše skelbiama } c o n s t A : Mas = ( ' S k i r t i n g i g y v ū n a i ' . ' I š v i s o g y v ū n ų ' . y2. 'Kur r a s t i ? ' . j a u n i . j a u n i ) . y l . implementation { p r o c e d u r e Langas. G [ i ] . f o n a s = Green. end. y l .

40. end. procedure SkirtingiGyviai (var A : v i s i a o a a i . W r i t e ('===> E n t e r <==='). p r o c e d u r e KiekGyvena (var A : V i s i S o d a i . n : int var g : integer). L a n g a s (5. Meniul. 2. i f к i n [1. Pasirinkimas } procedure Pasirinkimas. 80. w h i l e n o t j a u do begin L a n g a s (3. y 2 . x2. 17. k i e k ] t h e n j a u := T r u e else begin WriteLn ( ' K l a i d i n g a s pasirinkimas: ReadLn. { kartoti'). begin j a u := F a l s e . var jau : boolean. B l a c k ) . 80. interface u s e s Crt. var к : integer). ReadLn. 15. W r i t e ( ' K ą r e n k a t ė s : '). end.y l + l ) . 40.TextBackground (spalva). begin end. { ClrScr Paslaugos procedure Paslaugos. A[i]). ReadLn (к). L a n g a s (1. 1. . y2. y l . B l a c k ) . B l a c k ) . { Lango apačia ir dešinė pusė } { Pranešimas } { Lango valymas } { Visas ekranas } unit Veiksmai. G r e e n ) .1 5 . 25. end. Valyti- procedure Valyti. 25. end. begin L a n g a s (1. 20. Tipai. 1. L a n g a s ( x l . . end. { } TextColor (Black). ' . begin GoToXY ( x 2 . end.x l . var i : byte. f o r i := 1 t o k i e k do W r i t e L n (i:4. n : i n t e g e r . Red).

r : i n t e g e r . integer). Papildymai sąraše. f o r i := к := к end. end. G [ j ] do begin y r a := F a l s e . p r o c e d u r e K u r i s D a u g i a u s i a i (var A : VisiSodai. n : i n t e g e r ) . p r o c e d u r e KurisSodas (var A var g VisiSodai. var g : integer). v a r Rr : V a r d a i .p r o c e d u r e S e n a s I r J a u n a s (var A : V i s i S o d a i . p r o c e d u r e V i s i (var A : VisiSodai. N l * N 2 ] of v a r d a s . n : integer). j begin к := 0. { Skirtingų skaičius } t y p e V a r d a i = a r r a y [ l . Į KiekGyvena. { procedure v a r i. p r o c e d u r e KurRasti (var A : VisiSodai. s g + A [ i ] . n : integer. end. g := g + 1. : integer. f o r i := 1 t o n do { Zoologijo sodų peržiūra } f o r j := 1 t o A [ i ] . v a r gs. g j : i n t e g e r ) . . n : integer. j g . Rr[g] := pav. integer). I implementation procedure SkirtingiGyviai. p r o c e d u r e ZooGyventojai (var A : V i s i S o d a i . p r o c e d u r e J a u n i k l i a i (var A var g VisiSodai. if not yra then begin { Naujas vardas: nauja rūšis. { Ar pavadinimas yra masyve Rr? Į f o r r := 1 t o g do i f R r [ r ] = p a v t h e n y r a := T r u e . begin g := 0. . 1 t o n do + A[i]. k do { Vieno sodo sąrašo peržiūra } w i t h A [ i ] . n : i n t e g e r . n : i n t e g e r . var i : integer. j. { Rūšių pavadinimų masyvas } i. yra : boolean. end. n : integer). procedure SenasIrJaunas.

f o n a s ) . f o r i := 1 t o n do w i t h A[i] do begin g s := g s + s g . ' '.pav then begin { Pavadinimas sąraše jau yra } T := T r u e .= True. end. x2. y2. . '. i. WriteLn ('Koks gyvūnas Jus domina?'). t : i n t e g e r . end. k do w i t h A [ i ] . ReadLn (V). begin r := 0. { Naujo sąrašo elementų skaičius } f o r i := 1 t o n do with A[i] do { Sodų sarašo peržiūra } f o r t := 1 t o k d o w i t h G[t] do begin { Gyvūnų sąrašo peržiūra } T := F a l s e . V := V + ' T e x t C o l o r (Red). end. T : boolean. j j : i n t e g e r . g j := 0. T := F a l s e . f o r i := 1 t o n do f o r t := 1 t o A [ i ] .Zoo. { Sode yra toks gyvūnas } W r i t e L n (A[i].begin g s := 0. t. nėra'). r. seni:4. i procedure Visi. T : boolean. jauni:4). var B : forma. i procedure KurRasti. var V : vardas. g j := g j + j g . ar yra naujame sąraše } i f pav = B[jj]. begin L a n g a s ( x l . i. G [ t ] do if pav = V then begin τ . i f n o t T t h e n WriteLn ( ' T o k i ų gyvūnų s o d u o s e T e x t C o l o r (Black). y l . f o r j j := 1 to r do { Paieška. end.

y2. { Sąraše tokio pavadinimo nebuvo } if not T then b e g i n r := r + 1 . s e n i : 4 . var i : integer. . jauni:4). s g + A [ l ] . begin g := 1. s g t h e n g := i . var i : integer. e n d . end. s g > A[g]. end. g l := A [ i ] . begin g := i. B[r] := G[t]. k > A[g]. i. end. procedure KurisDaugiausiai. end. T : boolean.B [ j j ] . x2. s g + A [ i ] . f o r i := 1 t o n do i f (A[i].sg + A[i]. begin L a n g a s ( x l . g l : i n t e g e r . yl. j a u n i + j a u n i . x2. end. s e n i := B [ j j ] . var V : vardas. procedure Jaunikliai. g l := A [ l ] . y l . procedure KurisSodas. procedure ZooGyventojai. { Rezultatai ekrane } f o r i := 1 t o r do w i t h B[i] do W r i t e L n (pav. B [ j j ] · j a u n i := B [ j j ] . end.k t h e n g := i . t : i n t e g e r . v a r i. j g . s e n i + s e n i . begin g := i. f o r i := 1 t o n d o i f A [ i ] . y2. fonas). j g ) > g l then begin g := i. end. j g . f o n a s ) . WriteLn ('Koks z o o l o g i j o s sodas j u s domina?'). f o r i := 1 t o n do i f A [ i ] . Langas (xl.

ReadLn (V). k:3). n : i n t e g e r ) . к). WriteLn (' j a u n i k l i ų : ' . k:3). Pagrindinėje programoje belieka tik organizuoti veiksmus. var Pabaiga : boolean. end. { Pasirinkto veiksmo numeris } k. nes jos tekstas labiau struktūrizuotas. { Darbo pabaigos požymis } kas : integer. kl:3). lengviau rasti reikiamas vietas. WriteLn ( ' Z o o l o g i j o s soduose y r a ' ) . T e x t C o l o r (Red). k do w i t h A [ i ] . end. ( } p r o c e d u r e Darbas (var B : VisiSodai. { } begin end. f o r i := 1 t o n do i f A[i]. end. . T e x t C o l o r (Black). y l . Duomenys. k. u s e s C r t . T i p a i . j a u n i : 5 ) . n. n. x2. { Rasto sodo duomenų spausdinimas } f o r t := 1 t o A [ i ] . k l : integer. L a n g a s ( x l . end. к). k l ) . c a s e k a s of 1 : b e g i n S k i r t i n g i G y v i a i (B. 2 : b e g i n K i e k G y v e n a (B. f o n a s ) . pavyzdžiui. G [ t ] do W r i t e L n (pav. w h i l e n o t P a b a i g a do begin P a s i r i n k i m a s (kas). s e n i : 5 . 3 : b e g i n S e n a s I r J a u n a s (B. WriteLn (' s u a u g u s i ų : ' . veiksmus cikle įforminti atskira procedūra. W r i t e L n ( ' S k i r t i n g ų g y v ū n ų y r a : ' . M e n i u l . V e i k s m a i . T := F a l s e . W r i t e L n ( ' Z o o l o g i j o s s o d u o s e g y v ū n ų y r a : ' . patogiau papildyti programą naujomis savybėmis. Zoo = V t h e n begin T := T r u e . Čia taip pat galima kai ką pakeisti. Gauta programa yra patogesnė. program ZoologijosSodai_Ml. begin P a b a i g a := F a l s e . V := V + ' '. n. k:3). i f n o t T t h e n WriteLn ( ' S ą r a š e t o k i o sodo n ė r a ' ) . y2. end.

n). kiek : begin WriteLn ('Darbo pabaiga'). Perskaitytos reikšmės iš buferio pašalinamos. K u r i s D a u g i a u s i a i (B. f . ' : ' . Tam reikia mokėti klaviatūra valdyti žymeklio padėtį ekrane. n : integer. k). y. Pirmoji programos meniu modifikacija Programoje dialogas organizuotas vartotojui nepatogiai . ' : ' . 10 : Z o o G y v e n t o j a i (B. end.k). Valyti.reikia pasirinkto veiksmo numerį teisingai surinkti klaviatūra.4 5 6 7 : : : : begin K u r R a s t i (B. n). j g ) . Klavišai koduojami vieno arba dviejų baitų skaičiais. S k a i t y t i (B. . end. yra'). s g + B [ k ] .Zoo. D a r b a s (B. W r i t e L n (B[k]. end. end. ženklai) ir kai kurie kiti (pvz. ' : B[k]. V i s i (B. Esc. kurių pirmojo reikšmė yra nulis. Enter) koduojami vienu baitu. WriteLn ( ' D a u g i a u s i a i j a u n i k l i ų t u r i ' ) . j g ) . 9 : b e g i n J a u n i k l i a i (B. ! (nors galima susitarti naudoti bet kuriuos kitus). Paspaudus klavišą generuojamas jo kodas. Paaiškinsime. к). begin Paslaugos. n). n. n. WriteLn ( ' T u r t i n g i a u s i a s z o o l o g i j o s sodas W r i t e L n (B[k]. B [ k ] . Informaciniai klavišai (raidės.» . var B : VisiSodai. W r i t e L n ( ' Z o o l o g i j o s s o d ų y r a : ' . Geriau būtų žymekliu pasirinkti (nurodyti) norimą veiksmą. n).. ReadKey skaito tik vieno baito reikšmę ir neparodo jos ekrane (Read procedūra parodo ekrane perskaitytą reikšmę). W r i t e L n (B[k]. k). skaitmenys. Valdymo klavišai dažniausiai koduojami dviem baitais. 8 : b e g i n K u r i s S o d a s (B. n). WriteLn ( ' D a u g i a u s i a i s k i r t i n g ų gyvūnų t u r i ' ) . P a b a i g a := T r u e .9. end.Zoo. Patogiausia naudoti krypčių klavišus -¢-. kuris įrašomas į įvedimo buferį (t. n. kas vyksta įvedant duomenis klaviatūra. į specialiai įvedimui skirtą atmintinės vietą). Reikšmes iš buferio galima skaityti standartine Read (ReadLn) procedūra 'arba CRT modulio ReadKey funkcija. B [ k ] . { Duomenų sąrašas } { Zoologijos sodų skaičius } 9. end. .Zoo. n).

'Sodo g y v e n t o j a i ' . Žymeklis ekrane matomas neaiškiai. ' D a u g i a u s i a gyvūnų '. 80. B l a c k ) . { Paslaugų skaičius } i l g = 25. y l . Reikėtų žymekliu r o d o m ą vietą išskirti kokia nors kita spalva. M ū s ų programos dialogo dalį teks truputį pakeisti . x l = 4 5 . { Meniu punkto ilgis } t y p e simb = s t r i n g f i l g ] . ' . x2. k i e k ] of simb. { Žodžių masyvo tipas } { Žodžių masyvas. y2). T e x t C o l o r (Black). { Paslaugos procedure Paslaugos. begin Window ( x l . L a n g a s (5. 2. { Meniu punktas } Mas = a r r a y [ 1 . f } c o n s t k i e k = 11. x2. f o n a s = Green. p r o c e d u r e P a s i r i n k i m a s (var k : integer). unit Meniu2. } } } . 40. 'Daugiausia skirtingų'. begin L a n g a s (1. . ClrScr end. { Rezultatų lango koordinatės } x2 = 79. Taip žymeklio buvimo vieta bus labiau pastebima. Panaudosime šias priemones naujam dialogui sukurti. s p a l v a : b y t e ) . 1.reikės pertvarkyti procedūrą Pasirinkimas. y2 = 15. y l . y2. f o r i := 1 t o k i e k do W r i t e L n (i:4. Jų turi būti tiek. Green). ' K i e k s o d ų ? ' . { Dialogo priemonės } r o c e d u r e L a n g a s ( x l . 'Suaugusieji ir jaunikliai'. TextBackground (spalva). { Pasirinkimas p r o c e d u r e P a s i r i n k i m a s (var к : i n t e g e r ) .Žymekliui valdyti turime GoToXY procedūrą. 15. 'Kur r a s t i ? ' . y l = 5. ' . 25. ' J a u n i k l i a i ' . A[i]). var i : byte. kiek tipo apraše skelbiama ) c o n s t A : Mas = ( ' S k i r t i n g i g y v ū n a i ' . procedure Paslaugos. implementation { Langas p r o c e d u r e Langas. procedure Valyti. ' I š v i s o g y v ū n ų ' . interface uses Crt. ' P a b a i g a ' ) . end. ' V i s i g y v ū n a i ' .

x2.= 1.l 5 . W r i t e (k:4. { Lango apačia ir dešinė pusė } W r i t e ( ' = = = > E n t e r <==='). k). end. k).nurodyti pradinio pasirinkto meniu punktą. A[k]). var kas : i n t e g e r . k). { Skaitomas paspausto klavišo kodas } i f s i m = #13 t h e n j a u := T r u e . y 2 . Pradinė jo padėtis turi būti apibrėžta programoje.y l + l ) . Šioje versijoje programuotojas nurodys žymekliu. Vienas jų .1.x l . T i p a i . j a u := F a l s e . ' . W r i t e (k:4. begin Paslaugos. { Klavišas Enter } i f s i m = #0 t h e n begin s i m := ReadKey. ' .var jau : boolean. ' . u s e s C r t . { Kai pasiektas meniu viršus } i f k > K i e k t h e n k . end. Duomenys. Procedūrą D a r b a s galima truputį pakeisti. atsisakant loginio kintamojo P a b a i g a . V e i k s m a i . W r i t e (k:4. Ankstesnėje programos versijoje reikšmę klaviatūra nurodydavo vartotojas. 25. w h i l e n o t j a u do begin s i m := ReadKey. { Lango valymas } L a n g a s (1. { p r o c e d u r e Darbas (var B : VisiSodai. . { Valyti } procedure Valyti. { Kita spalva užrašomas meniu punktas k } GoToXY (1. B l a c k ) . y l . program ZoologijosSodai_M2. n . sim : char. A[k]). { Kai pasiekta meniu apačia } T e x t C o l o r (Red). i f s i m = #72 t h e n k := k . { Pasirinkto veiksmo numeris } . ' . { Klavišas f } i f s i m = #80 t h e n k := k + 1. { Atstatoma punkto k spalva } GoToXY (1. A[k]). 80. L a n g a s ( x l .} i f k < 1 t h e n k := K i e k . T e x t C o l o r (Red). { Visasekranas } end. { Kita spalva užrašomas meniu punktas k } GoToXY (1. Meniu2. { Klavišas 4. B l a c k ) . begin GoToXY ( x 2 . { Skaitomas antrasis klavišo baitas Į T e x t C o l o r (Black). 1. begin Pagrindinėje programoje reikia atlikti keletą pakeitimų. i n t e g e r ) . y2. { Pranešimas } ReadLn. end.

к). k). n). B [ k ] . W r i t e L n ( ' S u a u g u s i ų : ' . 7 : b e g i n K u r i s D a u g i a u s i a i (B. f o n a s ) . end. c a s e k a s of 1 : b e g i n S k i r t i n g i G y v i a i (B. end. k:3). 8 : b e g i n K u r i s S o d a s (B. B [ k ] . к). 10 : Z o o G y v e n t o j a i (B. D a r b a s (B. W r i t e L n (B[k]. y l . W r i t e L n (B[k]. { var в : VisiSodai. k l : i n t e g e r . WriteLn ( ' Z o o l o g i j o s soduose y r a ' ) . end. ' : ' . 5 : V i s i (B. WriteLn ( ' T u r t i n g i a u s i a s z o o l o g i j o s sodas y r a ' ) . 4 : K u r R a s t i (B. kl:3). к). end. n.k.Zoo. W r i t e L n (' J a u n i k l i ų : ' . n). y2.k). end. j g ) . begin kas := 1. n. end. n : integer. 6 : W r i t e L n ( ' Z o o l o g i j o s s o d ų y r a : ' . n).Zoo. W r i t e L n (B[k]. k. ' : ' . S k a i t y t i (B. w h i l e k a s o k i e k do begin P a s i r i n k i m a s (kas). n. n. WriteLn ( ' D a u g i a u s i a i j a u n i k l i ų t u r i ' ) . n. L a n g a s ( x l . end. s g + B [ k ] . end. W r i t e L n ( ' S k i r t i n g ų g y v ū n ų y r a : ' . kiek : WriteLn ('Darbo pabaiga'). k). end. Valyti. n.Zoo. B[k]. WriteLn ( ' D a u g i a u s i a i s k i r t i n g ų gyvūnų t u r i ' ) . n). ReadLn. k:3). k:3). 3 : b e g i n S e n a s I r J a u n a s (B. x2. n). begin Paslaugos. 2 : b e g i n K i e k G y v e n a (B. n). } { Duomenų sąrašas Į { Zoologijos sodų skaičius } . 9 : b e g i n J a u n i k l i a i (B. j g ) . k l ) . W r i t e L n ( ' Z o o l o g i j o s s o d u o s e g y v ū n ų y r a : ' . ' : ' .

masyvą. Langą nusako penki parametrai: vietos ekrane koordinatės (keturi skaičiai) ir fono spalva. . Pakeitimai paryškinti. { Meniu punkto ilgis } t y p e simb = s t r i n g [ i l g ] . juoba kad jos reikalingos ne vienoje vietoje (pradinio vaizdo piešimas ir pasirinkimas). 3. Blue ). 11. Reikia sukurti masyvų tipus. y. 38. Tai reiškia. Blue ). { Žodžių masyvo tipas } { Žodžių masyvas. 11. t. Masyvui formuoti yra daug būdų (iš bylos. 7. 15. { Rezultatų lango koordinatės } x2 = 79. Blue ). ( 7. Langų bus daug. Antroji programos meniu modifikacija Žaismingesnis ir vaizdesnis meniu bus naudojant langelius. 13. const M : MeniuLangai = (( 7. Blue ). Patogiausias yra konstantų masyvas. unit Meniu3. t. ' V i s i g y v ū n a i ' . y2 = 15. ' J a u n i k l i a i ' . ( 7. Pasirenkant metu punktą. Vartojant tokį masyvą bus naudojami du indeksai. Blue ). ' P a b a i g a ' ) . Tai bus masyvas. MeniuLangai = array [1. 'Sodo g y v e n t o j a i ' . ( 7. y. 5. ( 7. { Meniu punktas } Mas = a r r a y [ 1 . ' I š v i s o g y v ū n ų ' . x l = 45. Blue ).. ( 7. 38. ( 7. interface uses Crt. atskirti kableliu. 'Kiek sodų?'. 'Suaugusieji ir jaunikliai'. Pirmasis nurodys langą.5] of byte. y l = 5. išskiriant kiekvieną meniu punktą spalvotu langu. k i e k ] of simb. konstantų masyvas). 9. o antrasis to lango konkrečią koordinatę ar spalvą. 13. Blue ). kurio elementai bus masyvai.10. 9. priskyrimo veiksmais. 38. f o n a s = Green.9. Langų koordinates fiksuoti programos tekste nepatogu. Tai rasite programos pavyzdyje. keičiamas to lango fonas. tinkamus langų charakteristikoms surašyti. Jų turi būti tiek. . Meniu organizavimo priemonės pakinta. 7. 38. 'Kur r a s t i ? ' . type MeniuLangas = array [1. { } c o n s t k i e k = 11. kad langas su jame esančiu pranešimu bus kuriamas iš naujo (kaip ir anksčiau naujai perrašoma). { Paslaugų skaičius } ilg = 25. 15. 38. 5.. 'Daugiausia gyvūnų'. 'Daugiausia skirtingų'. kiek tipo apraše skelbiama } c o n s t A : Mas = ( ' S k i r t i n g i g y v ū n a i ' . 38. 38.kiek] of MeniuLangas. bet pagrindinė programa lieka nepakitusi. Galima sukurti langų masyvą. 3. Patogiausia jas laikyti masyve.

begin Langas (M[k. end. TextBackground (spalva). { Pasirinkimas } p r o c e d u r e P a s i r i n k i m a s (var к : i n t e g e r ) . w h i l e n o t j a u do begin sim := ReadKey. Dialogo priemonės } p r o c e d u r e L a n g a s ( x l . M[k.2]. i f sim = #72 then к := к . M[k. { Skaitomas paspausto klavišo kodas i f sim = #13 then jau := True.3]. 23. )). A[i]). y2. s p a l v a : b y t e ) .l]. Write (' "Л. begin Window ( x l . ). { Klavišas Enter } if s i m = #0 begin then sim := ReadKey. x2. y l .3]. 19. 25.4]. 21. f o r i := 1 t o k i e k do begin Langas (M[i.l]. 7. { Klavišas f } { Klavišas į } .l]. L a n g a s (5. x2. y2). M[k.4]. M[k. 38. end. var i : byte. 38. 17. M[k. 7. sim : char. Red).3]. var jau : boolean. 40. 1. 23.5]). M[i. y l . 2. 38. 21. Write (' ':4.{ Keičiama punkto k spalva } Write (' ':4. M[k. T e x t C o l o r ( B l a c k ) . A[k]). M[k. 7. end. begin L a n g a s (1.( ( ( ( { 7. 25. Blue Blue Blue Blue ). { Skaitomas antrasis klavišo baitas } { Atstatoma punkto k spalva } Langas (M[k. M[i.2]. p r o c e d u r e P a s i r i n k i m a s (var к : integer).4]. M[i. ). procedure Paslaugos. implementation { Langas p r o c e d u r e Langas. A[k]). 38. procedure Valyti. 19. i f sim = #80 then к := к + 1.1. 80. 17.5]). j a u := F a l s e . { } ClrScr Paslaugos Į procedure Paslaugos.2]. B l a c k ) . M[i. G r e e n ) .

brūkšnelius ir kt. piešiančias simbolių sulietuvinimo elementus: varneles. 25. begin { Lango valymas } { Visasekranas } Kaip pastebite. begin GoToXY ( x 2 . k i e k ] of simb. Cia pateikiame programų tekstus be lietuviškų simbolių. Trečioji programos meniu modifikacija Visos šiuolaikinės programos pateikia į ekraną grafiniu režimu. Tai daug naujų galimybių.3].if if k < 1 t h e n k := K i e k . { ) c o n s t k i e k = 11. Prieš tai būtinai perskaitykite 10 skyrių.l]. y l . { Žodžių masyvo tipas } . M[k. Dabar. { Meniu punktas } Mas = a r r a y [ 1 . 80. { Lango apačia ir dešinė pusė } { Pranešimas } ReadLn.1 5 . Norint grafiniame ekrane rašyti lietuviškai.x l . { Kai pasiektas meniu viršus ) k > K i e k t h e n k := 1. write (' ' :4. nes programuotojas gali dirbti ekrane su kiekvienu tašku atskirai. Pristatome modulius. L a n g a s (1. kitaip komponuoti. 9.11. M[k. { Valyti procedure } Valyti. M[k.2]. Nestandartinės dalys paryškintos. Šiame skyrelyje pateikiama programos apie zoologijos sodus modifikacija su grafiniu ekranu. y 2 . nosines. unit Meniu4. { Paslaugų skaičius } iIg = 25. kai principas aiškus.4]. W r i t e ('===> E n t e r <==='). { Meniu punkto ilgis } t y p e s i m b = s t r i n g [ i l g ] . . B l a c k ) . kuriai įdiegti konkrečiai programai grafiniu režimu yra speciali procedūra. B l a c k ) . Galima pasidaryti savo priemones iš taškų. L a n g a s ( x l . Analogiškai galima padaryti keleto pakopų meniu struktūras. { Kai pasiekta meniu apačia } { Kita spalva užrašomas meniu punktas k } Langas (M[k. galite sukurti kitokio vaizdo meniu struktūras. dialogo priemonės nedaug tepasikeitė. y2. kuriuose buvo daryti pakeitimai. Graph. end. reikia turėti šriftų bylą (su priedėliu c h a r ) . 1. Red). A[k]). end. Tekstiniame ekrane mažiausias programuotojui prieinamas ekrano elementas buvo simbolis. interface u s e s C r t . tačiau vaizdas ekrane visai kitoks. Galima kurti horizontalias langų eilutes.y l + l ) . x2. end.

335. Į StaUis procedure Status. Green ). { Paslaugos procedure Paslaugos. Green ). 125. 410. 265. 0. 280. 195. yl. 1). y2 = 400. 20. begin SetLineStyle (O. 330. 400. spalva : integer). end. 155. 225. 370. Green ). 280. Green ). 300. Green ). 20. 20. . { Dialogo priemonės p r o c e d u r e L a n g a s ( x l . 20. 'Suaugusieji ir jaunikliai'. 20. x2. Green ). Rectangle (xl. kiek tipo apraše skelbiama } c o n s t A : Mas = ( ' S k i r t i n g i g y v ū n a i ' .. implementation { Langas p r o c e d u r e Langas. 365. 260. 280. x2. Magenta). } } } } . Green)). 230. 280. 50. 280. x2 = 600. begin SetLineStyle (O. 280. 20. 20. 'Daugiausia gyvūnų'. 20. ( Rezultatų lango koordinatės } f o n a s = Green. x2. 280. ' P a b a i g a ' ) . 20. y2). 190. end. 10. Green ). 'Daugiausia skirtingų'. y2. 90. 55. y l = 20. yl. 290. type MeniuLangas = array [1. k i e k ] of M e n i u L a n g a s . p r o c e d u r e P a s i r i n k i m a s (var к : integer). Green ). var i : byte. y l . ' V i s i g y v ū n a i ' . 280. Green). 160. procedure Paslaugos. 280. 'Sodo g y v e n t o j a i ' . 20. 120. SetColor (spalva). 'Kiek sodų?'. SetFillStyle (1. spalva). ' J a u n i k l i a i ' . c o n s t M : MeniuLangai = 20. Bar (xl. Jų turi būti tiek. yl. begin Status (10. 280. 20. x2. s p a l v a : i n t e g e r ) . 280. x l = 300. Green ). procedure Valyti. y2. 85.5] of integer. M e n i u L a n g a i = a r r a y [ 1 .{ Žodžių masyvas. ' I š v i s o g y v ū n ų ' . 295. O. 1). 'Kur r a s t i ? ' . procedure Status (xl. y2).

M[k. { Klavišas f } i f s i m = #80 t h e n k := k + 1.2].l]. { Visas ekranas } end. Red). 1. М[к. B l a c k ) .4].l]. M[k. B l a c k ) .2]. Status (M[k. M[k. SetTextStyle (1. L a n g a s (1. M[k. O. begin S t a t u s (M[k. M[i.2].5]). M[i. OutTextXY (M[i. M[k.5]). interface u s e s C r t . M[k.4]. { Lango valymas } OutTextXY (x2 + 150. y2 + 20. M[i. end. i f s i m = #72 t h e n k := k .2] + 5.' ===> Enter <===').l]. 25. Čia peteikiamos tik pakitusios procedūros. { Kai pasiektas meniu viršus } i f k > Kiek then k := 1. sim : char. { Klavišas Enter } s i m = #0 t h e n begin { Skaitomas antrasis klavišo baitas } { Atstatoma punkto k spalva } s i m := R e a d K e y . kurios išveda duomenis ekrane. { Klavišas 4. end. M[k. w h i l e n o t j a u do begin sim := ReadKey. { Kai pasiekta meniu apačia } { Kita spalva užrašomas meniu punktas k } Status (M[k. Red). { Pasirinkimas } p r o c e d u r e P a s i r i n k i m a s (var k .l].3]. . { Valytį procedure Valyti. begin L a n g a s ( x l . var jau : boolean. A[i]).3]. begin } { Pranešimas } Veiksmų procedūros pakito tik tos. end.2].} i f k < 1 then k := Kiek. M[k. unit Veiksmai. integer). 1). y2.l] + 5. if if { Skaitomas paspausto klavišo kodas } s i m = #13 t h e n j a u := T r u e . 80. x2. Meniu4. end. M[k.3]. M[i. { Keičiama punkto k spalva } j a u := F a l s e .4].for i := 1 to kiek do begin Status (M[i. M[i.3]. SetColor (White). G r a p h . end.4].1. T i p a i . y l .

p r o c e d u r e K u r i s D a u g i a u s i a i (var A : V i s i S o d a i . V vardas. sim integer. ( p r o c e d u r e KurisSodas (var A var g VisiSodai. i. { Skirtingų skaičius p r o c e d u r e KiekGyvena (var A : V i s i S o d a i . T char. fonas). procedure KurRasti (var A : VisiSodai. k d o w i t h A [ i ] . g j : i n t e g e r ) . var g : integer). integer). n : i n t e g e r . var k : integer). n : i n t e g e r . y2. Yl + 10. n : i n t e g e r . n : integer. var g : integer). V := ". j boolean. v a r gs. end. sim := ReadKey. x2. procedure Jaunikliai VisiSodai. begin Langas (xl. sim := ReadKey. (var A var g procedure ZooGyventojai (var A : VisiSodai. yl. implementation p r o c e d u r e KurRasti.procedure SkirtingiGyviai (var A : VisiSodai. MoveTo (xl + 20. n : integer). procedure Visi (var A : VisiSodai. к := 50. k S. n : integer). n : integer). G [ j ] do if pav = V then begin T := T r u e . Sl string. while sim <> #13 do begin V := V + sim. v := V + ' τ := F a l s e . OutText (sim). { Sode yra toks gyvūnas . n : integer. p r o c e d u r e S e n a s I r J a u n a s (var A : VisiSodai. OutText (sim). n : i n t e g e r . 'Koks gyvūnas Jus domina?'). integer. integer). f o r i := 1 f o r j := 1 t o A [ i ] . OutTextXY (xl+10. yl + 30).

fonas). Zoo + ' ' + S + S). boolean. t integer. OutTextXY (xl + 10. if not T then OutTextXY (xl + 20. yl + k. j { procedure Visi. var B : r. i. pav + ' ' + S + Si). Str (seni:4. A[i]. f o r i := 1 t o r do w i t h B[i] do begin к := к + 15. T boolean. forma. к { Rezultatai ekrane } := 10. s e n i + s e n i . ar yra naujame sąraše } pav = B[jj]. OutTextXY (xl + 20. B [ j j ] . sim } . s e n i := B [ j j ] . integer. i. Str (jauni:4. { Naujo sąrašo elementų skaičius } f o r i := 1 t o n do with A[i] do { Sodų sąrašo peržiūra } f o r t := 1 t o k d o w i t h G[t] d o begin { Gyvūnų sąrašo peržiūra } T := F a l s e . t. f o r j j := 1 to r do if { Paieška. yl + k. integer. yl + к. end. end. Str (jaunl:4. end. end. j a u n i := B [ j j ] . x2. j j : T : S. end. B[r] := G[t]. 'Tokio gyvūno soduose nėra'). S). char. Langas (xl. Si). yl. j a u n i + j a u n i . S l : к : begin r := 0. end. S). end. { Sąraše tokio pavadinimo nebuvo } if not T then b e g i n r := r + 1 .pav then begin { Pavadinimas sąraše jau yra } T := T r u e .k := k + 15. { procedure ZooGyventojai. Str (seni:4. B [ j j ] . y2. S). string. var V vardas.

v a r gd. к do w i t h A [ i ] . Si). S2). r := 40. pav + ' ' + Sl + S2). end. MoveTo (xl + 20. end. T := F a l s e . . S2: string.= True. f o n a s ) . begin L a n g a s ( x l . begin g d := D e t e c t . yl +10. OutTextXY (xl + 10. y l . 'Koks zoologijos sodas jus domina?'). yl + 30). G [ t ] do begin r := r + 15. kuri saugoma G r a f i k a modulyje: unit Grafika. d y : i n t e g e r ) . V := V + ' '. x2. end. interface u s e s Graph. Zoo = V t h e n begin τ . { Į begin Ekrano darbui grafiniu režimui paruošti yra padaryta procedūra E k r a n a s . while sim o #13 do begin V := V + sim. Si. OutText (sim). sim := ReadKey. yl + 60. { Rasto sodo duomenų spausdinimas } f o r t := 1 t o A [ i ] . V := ". if not T then OutTextXY (xl + 10. Str (jauni:5. y2. implementation procedure Ekranas. Str (seni:5. 'Sąraše tokio sodo nėra'). yl + r.r : integer. OutText (sim). const Kelias = 'C:\Programs\TP7\Bgi'. sim := ReadKey. gm : i n t e g e r . OutTextXY (xl + 10. p r o c e d u r e E k r a n a s ( v a r dx. f o r i := 1 t o n do i f A [ i ] . end.

OutTextXY (xl+15. к). 'Zoologijos soduose gyvūnų yra: OutTextXY (xl+15. OutTextXY (xl+15. f o n a s ) . end. begin Pagrindinėje programoje teko pakeisti pranešimų išvedimo į ekraną sakinius. ' suaugusių : ' Str (kl:5. S). { } p r o c e d u r e Darbas (var B : VisiSodai. + S). Str (k:4. n). k l ) . s).I n i t G r a p h (gd. yl+30. 'Zoologijos soduose yra'). i f G r a p h R e s u l t o grOk t h e n begin WriteLn ('Aparatūros k l a i d a end. 'Skirtingų gyvūnų yra: ' + S). kas : integer. +S). n : integer). !!!'). n). x2. d y := GetMaxY. '). k. + S). y2. n. S). w h i l e k a s <> k i e k do begin P a s i r i n k i m a s (kas). k e l i a s ) . L a n g a s ( x l . yl+30. S). begin k a s := 1. 3 : b e g i n S e n a s I r J a u n a s (B. dx := GetMaxX. 5 : V i s i (B. yl+10. yl+10. OutTextXY (xl+15. Graph.gm. T i p a i . Grafika. OutTextXY (xl+15. k l : i n t e g e r . 4 : K u r R a s t i (B. yl+50. n. c a s e k a s of 1 : b e g i n S k i r t i n g i G y v i a i (B. OutTextXY (xl+15. program ZoologijosSodai_M4. end. yl+10. u s e s C r t . 2 : b e g i n K i e k G y v e n a (B. y l . var S : string. n. Str (к:4. к). V e i k s m a i . ' ' end. Meniu4. Duomenys. ' jauniklių : ' end. . { Pasirinkto veiksmo numeris } k. Halt (1). Str (к: 4.

yl + 20. end. end. OutTextXY (xl + 10. OutTextXY ( x 2 . kiek : OutTextXY (xl + 20. ' E n t e r '). OutTextXY (xl + 2.1 0 0 . S k a i t y t i (B. Str (B[k].Zoo + ': ' + S). yl + 20. dy).k. ( var B : VisiSodai. 10 : Z o o G y v e n t o j a i (B. yl + 2 0.6 : b e g i n Str (n:5. OutTextXY (xl + 2. n. CloseGraph. x2. end. L a n g a s ( x l .2 0 . к). OutTextXY (xl + 10. end. n). 'Daugiausiai skirtingų gyvūnų turi'). B[k].sg + B[k]. 'Daugiausiai jauniklių turi'). k). B[k]. S). D a r b a s (B. yl + 50. S). end. yl + 20. 9 : b e g i n J a u n i k l i a i (B. n). 7 : b e g i n K u r i s D a u g i a u s i a i (B.jg. n. dy : integer. OutTextXY (xl + 10. end. Str (B[k]. 'Turtingiausias zoologijos sodas: '). j g. dx. begin Ekranas (dx. y l . OutTextXY (xl + 10. end. yl + 50. B[k]. 'Zoologijos sodų yra: ' + S). yl + 50. n. 8 : b e g i n K u r i s S o d a s (B.Zoo + ': ' + S). B l a c k ) . 'Darbo pabaiga'). yl + 80. Str (B[k]. } { Duomenų sąrašas } { Zoologijos sodų skaičius Į . Valyti. y2. n : integer. S). ReadLn. y 2 .Zoo + ': ' + S). к). OutTextXY (xl + 2. S). Paslaugos. n).

įterpkite ją į programą. kiek skirtingų gyvūnų yra zoologijos sode ir vieno sodo informaciją nuo kito sodo informacijos atskirkime tuščia eilute. Praleidus bent vieną gyvūną ar neteisingai nurodžius skirtingų gyvūnų skaičių. kad skaitvardžių ir greta parašytų žodžių junginių linksniai būtų suderinti. suderinkite programą ir papildykite 31 pav. Kitos informacijos nekeiskime. Reikėtų sukurti suflerio langą ir keletą naujų procedūrų duomenims gauti. tačiau būtinų dalykų . Meniu punktai. Padarykite tuos pakeitimus. Tada programos vartotojui nereikėtų spėlioti. nurodančio. 4.neatsisveikina. kokie gyvūnai ir kokie zoologijos sodai yra duotame sąraše. t x t . Pavyzdžiui. . kiek skirtingų gyvūnų yra tame sode ir po to tiek eilučių privalo būti apie gyvūnus. kuri skaitytų taip sutvarkytos pradinių duomenų bylos informaciją. atitinkamai gyvūnų skaičiui atsakymas į pirmąjį klausimą turėtų būti pateikiamas taip: Soduose yra 2 0 skirtingų gyvūnų Soduose yra 21 skirtingas gyvūnas Soduose yra 22 skirtingi gyvūnai Tokiam atsakymui išvesti parašykite atskirą procedūrą. Parašykite tam skirtas procedūras ir papildykite programą jomis. Mūsų sukurtoje programoje dar trūksta keleto formalių. 3. pabaigoje . Tuomet užduoties apie zoologijos sodus formuluotėje pateiktas pradinių duomenų pavyzdys turėtų būti toks: Kauno Z o o l o g i j o s Tigras sodas Antis Rygos Z o o l o g i j o s s o d a s Vanagas Vilkas Arklys Berlyno Zoologijos sodas Tigras Arklys Katinas 2 1 12 5 12 5 16 5 5 4 3 4 2 5 6 25 Parašykite naują duomenų įvedimo procedūrą.darbo pradžioje ji savęs nepristato. Labai lengva suklysti kuriant pradinių duomenų bylą Zoo.Kontrolinės užduotys 1.po zoologijos sodo pavadinimo nurodoma. informacija apie visus tolesnius zoologijos sodus bus neteisinga (iš tikrųjų netgi gali būti nutrauktas programos vykdymas). jeigu pasufleruotų. pateiktą schemą. Atsisakykime skaičiaus. nes jos duomenys yra susiję vieni su kitais . kuriais teikiama informacija apie konkretų gyvūną bei zoologijos sodą. būtų efektyvesni. Pakeiskite visų rezultatų išvedimą taip. 2.

nurodytos stotelės duomenis (maršrutų numerius). maksimalus greitis. jeigu tokių yra keletas. . ar yra galimybė su persėdimais arba tiesiogiai patekti iš bet kurios stotelės į bet kurią kitą. kiek kokiu maršrutu vienu metu kursuoja troleibusų. . kuri: . praneštų „NEGALIMA". tai išvardyti visus. kitaip reikia nurodyti kelionę su persėdimais arba be jų: . 100 km suvartojamo kuro kiekio. Duomenys apie maršrutus surašyti tekstinėje byloje 'Miestai. . 4. t.j e i g u yra keletas variantų. variklio galia. kurių neteikia parašytoji programa. teikiančias šias paslaugas. Sugalvokite naujų paslaugų.nurodomas „pigiausias maršrutas" (minimalus persėdimų skaičius). .nurodyto maršruto duomenis (kokiose stotelėse sustoja).ilgiausio maršruto numerį (aptarnaujama daugiausiai stotelių). Sukurkite procedūras. 2. 3.j e i g u yra keletas variantų. Reikia sukurti dialoginę programą. pagaminimo data. .kiek mieste yra maršrutų. tai nurodomas tik vienas. kokius papildomus duomenis apie transporto sistemą būtų galima pasiūlyti programos vartotojui. Sukurkite naują programos versiją.pateiktų ekrane duomenis apie miesto transporto sistemą: . vietų skaičius. svoris. . . ar visos stotelės sudaro vieningą transporto schemą. Sukurti dialoginę programą informacijai apie turimus automobilius gauti. Pirmąjį uždavinį papildykite duomenimis. . . rida iki kapitalinio remonto. tai pateikiami visi. Galite pakeisti (papildyti) turimas duomenų struktūras (pavyzdžiui. Duomenys surašyti tekstinėje byloje. koks atstumas nuvažiuotas. kuriose jie sustoja. Jeigu taip nėra. Turime firmos „Uosis" automobilių parko sąrašą. nurodančiais.5. Jeigu negalima. . Kauno mieste yra daug troleibusų maršrutų ir daug stotelių. Savarankiško darbo užduotys 1.pateikiamas vienas tik be persėdimų maršrutas. Sugalvokite. kurioje daugiausiai skirtingų maršrutų troleibusų sustoja.Patartų keleiviui. tai suskirstytų stoteles į nepersidengiančias grupes pagal priklausomybę atskiroms transporto zonoms. pavadinimą. Apie kiekvieną automobilį yra tokie duomenys: markė.kiek mieste yra stotelių.pateikiami visi be persėdimo maršrutai.dat' struktūrizuotomis eilutėmis. kaip nuvažiuoti iš stotelės Sl į stotelę S2 (pavadinimai nurodomi klaviatūra). . . Vienos stotelės duomenys vienoje eilutėje: stotelės pavadinimas ir toliau iki eilutės galo maršrutų numeriai (sveiki skaičiai). gabaritai. Žinome Lietuvos tarpmiestinių autobusų tarp įvairių miestų maršrutus. nurodant kurioje stotelėje kokio maršruto troleibusai sustoja.pasakytų. papildyti naujais laukais). y.stotelės.

. Vardai rašomi iš didžiosios raidės. Pavyzdžiui: 235 Kaunas Panevėžys 15 Vilnius Ukmergė Klaipėda Palanga Mažeikiai Panevėžys Reikia parašyti dialoginę programą.Kiekvienam maršrutui skiriama viena eilutė: maršruto kodas (bet koks sveikasis teigiamas skaičius. užrašytas pirmosiose 5-iose eilutės pozicijose). toliau miestų pavadinimai (kiekvienam iš jų skiriama po 15 eilutės pozicijų). kuri pateiktų keleiviui reikalingus duomenis apie galimas keliones.

grafinių puslapių skaičių. Tam yra specialios priemonės. Standartinį tvarkyklės numerį nusako konstanta Detect = 0. Kintamojo GraphDriver reikšmė nurodo procedūrai. Jei reikšmė nenurodyta.Realistai tapė pasauli tokį. . DriverPath : string). Kintamasis GraphMode nusako ekrano formatą: taškų skaičių. kaip suprantu. Pablas - Pikaso 10. Žmogus klaviatūra surenka programai nurodymus ir pageidavimus. Ekrano paruošimas darbui Norint dirbti grafiniu režimu. Kompiuterinė grafika Klaviatūra ir ekranas nėra pagrindinės priemonės. kuriomis programos vartotojas perduoda pradinius duomenis ir gauna rezultatus. tpu pagrindinių priemonių sąrašą. Tačiau ekranas ir klaviatūra yra žmogaus bendravimo su programa priemonės. tpu byloje. kurios antraštė tokia: p r o c e d u r e I n i t G r a p h (var GraphDriver : i n t e g e r . aš vaizduoju jl taip. impresionistai kokį jie matė. bet įvairiose ekrano vietose ir pan. Ekrano grafinio darbo režimą nusakantys parametrai laikomi specialiose * . tam skirtos bylos. Kur kas daugiau galimybių teikia grafinis ekranas. Grafinių priemonių biblioteka saugoma Graph. programa ekrane pateikia reikalingą informaciją. Kompiuterio ekraną darbui grafiniu režimu paruošia procedūra InitGraph. pirmiausia reikia paruošti kompiuterio ekraną. bgi tipo bylose. duomenys išdėstomi ekrane ne nuosekliai eilutėmis. Programos bendravimas su vartotoju yra efektyvesnis. 5-ame priede rasite modulio Graph. koks bus ekrano grafinės tvarkyklės numeris. Tekstiniame ekrane mažiausia vaizdo kuriamoji dalelė yra simbolis. iliustruojančių kai kuriuos darbo su grafika veiksmus. tai parenkama standartinė numatytoji reikšmė. 10. Čia mažiausia kuriamoji dalelė yra taškas (žinomos jo koordinatės ekrane ir spalva). Šiame skyriuje bus supažindinama su darbu grafiniame ekrane. spalvas ir jų skaičių. kai naudojamos spalvos ir garsai.1. koks jis yra. v a r GraphMode : integer. Pateiksime programų pavyzdžių.

viršutiniame kairiajame ekrano kampe. tai tekstiniame ekrane spausdinamas pranešimas ir tolesnis programos darbas nutraukiamas. d i d Y ) . Iš reikšmės (sveikasis skaičius) nustatoma galimos nesėkmės priežastis (žr. Ekrano galimybes riboja aktyvaus ekrano taškų skaičius horizontalia ir vertikalia kryptimis.vertikalia kryptimi. ar sėkmingai buvo suaktyvintas grafinis ekrano darbo režimas. end.ą priedą). kurio koordinatės yra (0. Kreipinio į procedūrą pavyzdys: E k r a n a s (didX. galima patikrinti funkcija G r a p h R e s u l t . interface u s e s Graph. dx := GetMaxX. Ekrano aktyviąją spalvą nurodo procedūra: p r o c e d u r e S e t B k C o l o r ( s p a l v a : word). !!!'). V i e t a ) . dy := GetMaxY. Geriausia visus tuos veiksmus įforminti procedūra. kurios rezultatas yra reikšmė. jo koordinatės (O. Jei dėl kokių nors priežasčių nepavyko paruošti ekrano darbui. I n i t G r a p h (gd. dy : i n t e g e r ) .0). dirbančioms grafiniame ekrane. rodanti. y. Ekrano atskaitos tašku laikomas kairysis viršutinis ekrano kampas. ar tinkamai paruoštas sutvarkytas grafinis ekranas. Grafinių tvarkyklių katalogas nurodomas konstanta Vieta. Tai galimos didžiausios X ir Y koordinačių reikšmės. Visoms programoms. gm. Numatytoji standartinė f o n o spalva yra juoda. Jos tekstas įrašytas modulyje Grafika. 0). . implementation { ) procedure Ekranas. kelią iki to katalogo). kuriame saugoma tvarkyklės byla. žymeklis . Jų reikšmes pateikia funkcijos GetMaxX ir GetMaxY. const Vieta = 'C:\programs\TP7\bgi'. i f G r a p h R e s u l t o grOk then begin WriteLn ('Aparatūros k l a i d a H a l t (1). jis nerodomas (paslėptas). v a r gd. reikia jį paruošti.D r i v e r P a t h nurodo katalogą (t. gm : i n t e g e r . Sio skyriaus pratimuose bus vartojama procedūra Ekranas. E k r a n ą valo (iš tikrųjų spalvina nurodyta spalva) procedūra C l e a r D e v i c e . 6 . Standartinės konstantos GrOK reikšmė nurodo. Si procedūra paruošia kompiuterio ekraną darbui su grafika bei pateikia didžiausią galimą taškų skaičių: dx horizontalia kryptimi ir dy . { Grafinių tvarkyklių katalogas } p r o c e d u r e E k r a n a s ( v a r dx. Ekrano spalva juoda. end. Ekrano grafinis režimas parenkamas automatiškai. unit Grafika. Ar tinkamai ir sėkmingai paruoštas kompiuterio ekranas darbui su grafika. begin gd := D e t e c t .

Piešiant vaizdus ekrane būtina sekti. kurios nurodo žymeklio X ir Y koordinates. Procedūra MoveTo (X. tpu). . Vykdant šią procedūrą išlaisvinama atmintinė. 100). Ypos : i n t e g e r . Y). Kitose operacinėse sistemose gali būti nepatogu dirbti su šia DOS grafika (dažnai vadinama dar b g i grafika). Tai daroma su neturinčia parametrų procedūra C l o s e G r a p h . 10. Skaičiuoti pradedama nuo viršutinio kairiojo ekrano kampo. 10) žymeklis bus perkeltas iš taško (200. Byla prijungiama prie programos sakiniu u s e s . Tam naudojamos funkcijos GetX ir GetY. būtina tikrinti. būtina išeiti iš grafinio režimo. Dirbant su Turbo Paskaliu. atskirai kompiliuoti modulio teksto nebūtina. skirta grafinėms tvarkyklėms. kad piešinio taškai būtų ekrane. Šis modulis įrašytas byloje G r a f i k a . Xpos := G e t x . kuri turi būti programuotojo aktyviajame kataloge (kartu su rašoma programa). Dažnai būtina nustatyti žymeklio koordinates ekrane. 100) į tašką (205. Tekstiniu režimu šį tašką nurodo ekrane esantis žymeklis (jei jo nebuvome tyčia pašalinę). Norint piešti vaizdą. taip pat atstatomas toks vaizdo plokštės režimas. žymeklis bus perkeltas į tašką (2 00.3. Procedūra MoveRel (dx. b g i ) ir šriftus (*. Siūlome perkelti iš Turbo Paskalio BGI katalogo reikalingas tvarkykles (* . y. pavyzdžiui: v a r Xpos. t. Pavyzdžiui. koks buvo prieš pradedant darbą su grafika. b g i . būtina nurodyti bent jau pradinį tašką. Pastaba. 10. Taigi įvykdžius procedūrą MoveRel (5. kurio koordinatės (O. tarpiniams duomenims. Koordinačių sistema Vaizdams kurti ekrane naudojama koordinačių sistema. Y reikšmė (eilutė) didėja iš viršaus į apačią. Paleidus vykdyti pagrindinę programą.M o v e T o ir M o v e R e l . Ypos := GetY. 110). Pačios būtiniausios . nurodant bylos vardą taip pat. 100).2. Turbo Paskalis sukurtas dirbti su diskine operacine sistema DOS. Darbo su grafika pabaiga Baigus darbą su grafika.begin end. ar koordinačių reikšmės neviršija galimų didžiausių X ir Y koordinačių. šriftų byloms. Žymekliui perkelti grafiniame ekrane naudojamos kelios procedūros ir funkcijos. Grafiniame ekrane žymeklis nerodomas. X reikšmė (stulpelis) didėja iš kairės į dešinę. dY : i n t e g e r ) perkels žymeklį per dX taškų horizontalia kryptimi ir per dY taškų vertikalia kryptimi. Y) perkelia aktyvųjį žymeklį į tašką (X. p a s . Iš pradžių pakanka standartinės tvarkyklės EgaVga. kaip ir standartinių modulių vardus. įvykdžius procedūrą MoveTo (200. 0). Turbo Paskalio terpė pati sukompiliuos modulius ir sukurs paruoštą vartoti modulį ( G r a f i k a . c h r ) į savo programos aktyvųjį katalogą.

n a u d o j a m a procedūra C l e a r D e v i c e . y l . Tai analogija langams tekstiniame ekrane. čia X ir Y .tai stačiakampė ekrano sritis. 10.kairiojo viršutinio taško koordinatės. kad langas . Kai norime sužinoti konkretaus taško spalvą. x2. Nustačius langą. S p a l v a . Y : i n t e g e r . Kintamasis C l i p nurodo. y2 : i n t e g e r . ar ne ( C l i p := F a l s e ) . Ją įvykdžius panaikinamos visos spalvos. t. x2.dešiniojo apatinio taško koordinatės. Kiekvienu konkrečiu momentu gali būti aktyvus tik vienas langas. GetMaxY. Taškai ekrane Visi ekrane pateikiami vaizdai sudaryti iš taškų. . C l i p : b o o l e a n ) . net paveikslus. 0). o žymeklis atsiranda taške (0. Koordinačių sistemą visame ekrane galima nustatyti naudojant p r o c e d ū r ą C l e a r D e v i c e arba lango kūrimo procedūroje užrašius didžiausias galimas reikšmes: S e t V i e w P o r t (O. Reikėtų priminti.10. Spalvų kodai (arba pavadinimai) yra tokie pat kaip ir tekstiniame ekrane. atliekanti visas ekranui būdingas funkcijas. f o n o ir langų parinktys. o (x2. Primename. y. langas užima visą ekraną. visa likusioji ekrano sritis tarsi nebeegzistuoja ir visi veiksmai su ekranu vyksta tik tame lange. GetMaxX. S p a l v a : word). grafinių langų. Kintamasis Vp yra standartinio tipo V i e w P o r t T y p e : type ViewPortType = r e c o r d x l . fonas pasikeičia (kartu su bendru ekrano fonu). čia ( x l .5. Sukūrus langą atskaitos tašku i m a m a s viršutinis kairysis lango kampas. Y : i n t e g e r ) : w o r d . Clip : boolean end. Langui sukurti naudojama procedūra: S e t V i e w P o r t ( x l . y l . Aktyvaus lango atributus galima gauti procedūra G e t V i e w S e t t i n g s ( v a r Vp : V i e w P o r t T y p e ) . Norint ištrinti visus vaizdus ekrane. Jeigu yra keletas langų. Taigi iš taškų galime sudaryti bet kokias figūras. Tai automatiškai padaro pradžioje panaudota procedūra I n i t G r a p h . Taškui ekrane pateikti vartojama procedūra: P u t P i x e l (X. O. Kol kitaip nenurodyta. kurio vidinės koordinatės (O. Veiksmai su ekranu Ekrane gali būti kuriami langai. kreipiamės į funkciją: G e t P i x e l (X. kad panaudojus fono nustatymo procedūrą S e t B k C o l o r bei ištrynim o procedūrą C l e a r V i e w P o r t . y2) . y2 : i n t e g e r . Todėl grafiniam lango fonui nustatyti geriau pasirinkti procedūras S e t F i l l S t y l e ir S e t F i l l P a t e r n .4. kai išeinama už lango ribų ( C l i p := T r u e ) . tai jų aktyvumą tvarko programuotojas. 0).taško padėties ekrane koordinatės. skirtingai nuo tekstinių.taško spalva. ar piešinėlis bus nukerpamas. y l ) . True). kuri yra be parametrų. išvalyti ekraną.

sp). PutPixel PutPixel PutPixel PutPixel (dx-x. s p := Random (15). (dx+x. dy). repeat χ := Random (dx). dy+y. y := T r u n c (Random * Random * у). Delay (Greitis). c o n s t G r e i t i s = 10. { Taško koordinatės ir spalva } y := Random (dy). { Taško koordinačių transformacija } Delay (Greitis). (dx+x. x. todėl koordinatės sutankinamos. dy. Taškų koordinatės ir spalva parenkami atsitiktinių skaičių generatoriumi. { Padedami 4 taškai } . sp). sp). begin E k r a n a s (dx. Kompiuterio ekrane dėliojami taškai. v a r dx. Graph. (dx-x. u s e s C r t . m 32 pav. Delay (Greitis). Randomize. y.θ 10. Taškai turi būti ne tolygiai dėliojami visame ekrane. χ := T r u n c (Random * Random * x). dy-y. { Ekrano centro koordinatės } d y := d y d i v 2. dy-y. Delay (Greitis).1 pratimas. s p : i n t e g e r . sp). o koncentruojami ekrano centre. dy+y. Kiekvienas taškas atsiranda ekrane padaugintas simetriškai keturis kartus. Ekrane gauto spalvoto vaizdo nespalvotas paveikslas parodytas 32 pav. { Paruošiamas ekranas darbui } dx := dx d i v 2. G r a f i k a . program Pr_10_l.

end. program Pr_10_2.2 pratimas. G r a f i k a . Pirmiausia sukuriamas spalvotas skritulys. 33 pav.nededamas. spalva : integer). r. u s e s C r t . ( } p r o c e d u r e S k r i t u l y s (x. yt : longint. B 10. Jeigu jos yra nurodyto apskritimo viduje. repeat x t := Random (r). { Nuspausto klavišo skaitymas } ReadLn. Reikia iš taškų sukurti įvairias geometrines figūras. { Ekrano užlaikymas } CloseGraph. kitaip . figūros centro atžvilgiu dedamas ne vienas.u n t i l KeyPressed.). Graph. Spalva vienoda. { Skritulio centro koordinatės } { Skritulio spindulys } { Skritulio spalva } . c o n s t G r e i t i s = 10. y. y t := Random (r). begin Randomize. tai taškas dedamas. Po to analogiškai piešiamas stačiakampis. var xt. Kad vaizdas būtų gražesnis ir spalva intensyvesnė. Atsitiktinių skaičių generatoriumi generuojamos taškų koordinatės. o keturi simetriški taškai (33 pav. { Kol paspausime bet kurį klavišą } ReadLn.

dy : i n t e g e r . 300. P u t P i x e l (x . s p a l v a ) .x t . P u t P i x e l (χ + x t . yt. P u t P i x e l (χ . у + y t . s p a l v a + 2 ) . Brown). I { * y t ) <= r у у у у + + yt. CloseGraph. S t a t u s (150. Linijų brėžimas Liniją ekrane atitinka tiesės atkarpa. 550. 100. spalva). 150. ReadLn end. ReadLn. P u t P i x e l (χ . P u t P i x e l (χ + x t . b. у + y t . (410. 120. S t a t u s (150. Red). у . tipas ir storis. ) v a r dx. yt. spalva).y t . 330. у . dy). { Stačiakampio plotis ir aukštis } χ. 100. repeat x t := Random (a d i v 2). y). spalva). } p r o c e d u r e S t a t u s (a. Green). Red). Skritulys Skritulys Skritulys Skritulys (100. 80. Delay (Greitis). yt. then spalva). begin E k r a n a s (dx.x t . P u t P i x e l (χ + x t .if S q r t (xt * x t + y t begin P u t P i x e l (χ . { Pradinė spalva } var xt. 150. s p a l v a + 3 ) . yt : integer.x t . 70. 330. Magenta). (300. u n t i l KeyPressed. { Stačiakampio centro koordinatės } spalva : integer). Ją nusako galų taškų koordinatės (x. s p a l v a + 1 ) . Delay (Greitis). P u t P i x e l (χ + x t . 540. Green). (285. begin Randomize. у. u n t i l KeyPressed. 100.6. 100. 100.x t . Šie parametrai nurodomi atskirai . 10. end. Brėžiamą liniją apibūdina tokie parametrai: spalva. ReadLn end. S t a t u s (150. y t := Random (b d i v 2). Blue). 210.y t . 150.

Kompiuterio ekrane brėžiamos linijos.pabaigos koordinatės. Linijų spalvą nustato procedūra S e t C o l o r . tuomet naudojama taško spalva. kuris telpa 16 bitų žodyje. 1/ 34 pav. nes standartiniam linijos tipui kodas nereikalingas. kuris atitinka tą numerį. β 10. rašome 3) užimamą vietą. kokia buvo). Y2) . о (X2. kur spalva nurodoma jos kodu 0. Parametro s t o r i s reikšmė gali atitikti vieno taško (rašome 1) arba trijų taškų (stora linija. tuomet parametro t i p a s reikšmė nurodoma numeriu 4.). Linijos tipas ir storis nurodomas procedūra S e t L i n e S t y l e : S e t L i n e S t y l e ( t i p a s .ir galioja visoms brėžiamoms atkarpoms tol. Y2 : i n t e g e r ) . . Jeigu programuotojas linijos formą sukūrė pats. Jį sudaro atkarpos fragmentas. Jos atitinka programuotojo sukurtą linijos tipą (34 pav. Yl. 3 arba konstantos vardu. Būtina nurodyti sukurtos linijos formą įvedus parametrą k o d a s . kol jų nepakeisime naujais. Jeigu bito reikšmė lygi 1. tuomet lieka fono spalva (tokia. s t o r i s : word).3 pratimas. . . Linijoms brėžti yra keletas procedūrų. p r o c e d u r e S e t C o l o r ( s p a l v a : word). Pagrindinė yra L i n e : L i n e (XI. o jeigu O.15 arba konstantos pavadinimu. Parametro k o d a s reikšmė paprastai rašoma O. Pavyzdžiui: 1111 1111 1111 1111 $FFFF 1010 1010 1010 1010 $AAAA 1111 0010 0100 1001 $F249 Kodas užrašomas šešioliktainiu skaičiumi. X2. čia (XI. Linijos t i p a s nurodomas linijos tipo numeriu O.linijos pradžios koordinatės. Yl) . kodas.

3). z : word. apskritimui bei jo lankui. Linijų. spalva nurodoma procedūra SetColor. L i n i j a i . Geometrinės figūros. p r o c e d u r e Bar3D ( x l . 0. 350. y2 : i n t e g e r ) . 600. 100. Line (300. 100). Line (200. begin E k r a n a s (dx.program Pr_10_3. L i n i j a i . 300). (3. L i n i j a 2 . 3). 3). 200. 200). u s e s C r t . kurios apibrėžia figūrą. (O. 250.7. L i n e (400. 300). 300. 150). 150. S e t C o l o r (Brown). Pilnavidurėms figūroms stačiakampiams bei stačiakampiams gretasieniams . Geometrinėms figūroms . 600. S e t C o l o r (Green). kurio spalva ir raštas nurodomi atskirai. 100. L i n e (400. x2. 300). L i n i j a 3 = $9999. y l . 600. x2. repeat until CloseGraph. y2 : i n t e g e r . Graph. Stačiakampiui galima nurodyti linijos tipą naudojantis procedūra SetLineStyle. { Mėlyna linija } S e t C o l o r (Blue). 155). S e t L i n e S t y l e (4. dy). L i n e (400.piešti pateiktos procedūros. L i n i j a 3 . $F555. 300. elipsei bei jos lankui . c o n s t L i n i j a i = $FFF0. 155. { Žalių storų punktyrinių linijų šaudyklė } SetColor (Green). 200. S e t C o l o r (Magenta). 3). 300. 200. 300. Linija būna ištisinė. Line (100. 200). 300. 111). dy : i n t e g e r .piešti yra dvi procedūros: p r o c e d u r e B a r ( x l . Figūrų spalvinimo raštai GRAPH bibliotekoje yra daug procedūrų. S e t L i n e S t y l e (4. 100. { Įvairios programuotojo sukurtos linijos } S e t C o l o r (Red). v i r š u s : b o o l e a n ) . L i n i j a 2 = $0B0C. . 100. S e t L i n e S t y l e (4. 600. 3). S e t L i n e S t y l e Line (100. L i n e (400. 400. SetLineStyle Line (200. G r a f i k a . v a r dx. 10. { Programuotojo sukurtos linijos } { Raudonų storų ištisinių linijų stačiakampis } SetColor (Red). 3). 100. KeyPressed.stačiakampiui. y l . 300). 200. kuriančių įvairiausias figūras pagal nurodytus parametrus. 1). O. Line (100. S e t L i n e S t y l e (4. Gauto uždaro kontūro figūra gali būti užpildyta pasirinktu raštu. 250). L i n e (100. S e t L i n e S t y l e (4. Line (100. 100). 200.

R e c t a n g l e (20. 50). 30). Kompiuterio ekrane piešiamos įvairios geometrinės figūros. 150). 50. Linijų spalvos nurodomos naudojant procedūrą SetColor. o kitos dalys tuščiavidurės. G r a f i k a . E l l i p s e (280. 150. kurio trečioji koordinatė yra z (brėžiama linija 45° kampu). 360. užpildytus aktyvia spalva. Antroji procedūra piešia gretasienį. S e t B k C o l o r (White). 50). 150. 340. var dx. 50. forma . dy : i n t e g e r . jeigu True . Jeigu kintamojo viršus reikšmė yra False. 150. 20). 50). O. 360. 340.4 pratimas. tuomet gretasienio viršaus stačiakampis nebus nubrėžtas. 360. 50.naudojant SetLineStyle. program Pr_10_4.bus nubrėžtas. Demonstruojamas geometrinių figūrų piešimo procedūrų darbas (35 pav. S e t C o l o r (Red). 35 pav. 30). S 10. begin E k r a n a s (dx. 230. 0. 300. dy). 150. 10. 150. E l l i p s e (400. 80. 20).Pirmoji procedūra piešia stačiakampius be kontūrų. P i e S l i c e (200. 250. C i r c l e (80. 120) { { { { { { { { Stačiakampis } Apskritimas } Lankas } Elipsė } Elipsė } Elipsė } Elipsės lankas } Skritulio išpjova } . 360. E l l i p s e (450. S e t C o l o r (Green). E l l i p s e (300. 20. E l l i p s e (430. C l e a r D e v i c e . 150. 10. 0.). 200. Priekinė figūros dalis bus nuspalvinta (pilnavidurė). u s e s Graph. 50. 0. 0. A r c (100.

y) nurodomos procedūros kreipinyje. Užpildymas plinta nuo nurodyto taško į visas puses bangos sklidimo principu.ReadLn. { Apskritimų centro koordinatės } . išskyrus nurodytos K o n t ū r o S p a l v o s kliūtis. Kiekvienas apskritimas brėžiamas vis mažesniu spinduliu. var i : integer. esančio figūros viduje.jos apeinamos. Bus užpildomas visas plotas nuo nurodyto taško iki nurodytos spalvos linijos (kontūro). Tam skirta procedūra F i g . CloseGraph. tai bus užpildytas plotas ir išorėje. Jei figūra bus atvira. Bangos sklidimo kelyje viskas naikinama. program Pr_10_3. Kiekvieno apskritimo vidus užpildomas vis kitu raštu (36 pav. tuomet nurodome 12. Kompiuterio ekrane nurodytoje vietoje skirtingomis spalvomis reikia nupiešti koncetriškus apskritimus.5pratimas. procedure Fig (χ. tai raštu bus padengta išorinė figūros dalis neliečiant vidaus. G r a f i k a . у : integer). s p a l v a : word). koordinatės. y : i n t e g e r . Užpildo parametrai nurodomi atskirai procedūra S e t F i l l S t y l e : S e t F i l l S t y l e ( r a š t a s . Apskritimų centro koordinatės (x. kuri nurodyta parametru K o n t ū r o S p a l v a . Jei taškas bus uždaros figūros išorėje. F l o o d F i l l (x. B 10. K o n t ū r o S p a l v a : word). u s e s C r t . Procesas stabdomas sutikus kliūtį. Jeigu norime naudoti savo sukurtą raštą. Nubraižytą uždarą kontūrą (sudarytą iš linijų) galima užpildyti tam tikros spalvos raštu.). Figūrai užpildyti nurodytu raštu ir nurodyta spalva naudojama procedūra F l o o d F i l l . . kurioje parašomos bet kurio taško. Graph. Raštas nurodomas jo numeriu: nuo O iki 11. 36 pav.

( } v a r dx. . Rašte surašomos bitų reikšmės kaip baitai su šešioliktainio skaičiaus reikšme. 200). tuomet naudoti rašto kodo 12 negalima. $55. kur kiekvienas bitas parodo arba paslepia atitinkamą tašką matricoje. у.begin f o r i := 10 d o w n t o 1 do begin SetColor (i). i + 1). Norint savo raštu užpildyti figūrą. SetFillStyle (i. ReadLn. 200). end. Tam naudojama procedūra: S e t F i l l P a t t e r n ( S a v o R a š t a s : F i l l P a t t e r n T y p e . Procedūroje S e t F i l l S t y l e galime nurodyti kodą 12. Tai stačiakampis 8 x 8 taškų plotas. begin E k r a n a s (dx. reikšmė O . pakanka naudojant šią procedūrą nurodyti pageidavimus. $55. end. C i r c l e (χ. Norint savo raštu užpildyti figūrą. pvz. Ši procedūra daro tą patį. y. S p a l v a : word). 15 * i ) . Savo rašto paveikslą galime aprašyti tipizuota konstanta. Vartotojo raštas užima 8 x 8 dydžio matricą (8 baitai arba 64 bitai). $AA. kuriame bito reikšmė 1 rodo. $AA. dy). Jeigu savo raštas nebuvo sukurtas. 8 ] of byte. i). jeigu anksčiau buvo panaudota procedūra S e t F i l l P a t t e r n ir norime vėl tuo savo sukurtu raštu pasinaudoti. kad šioje vietoje bus piešiamas taškas. CloseGraph.kad taško nebus.: c o n s t Savo : F i l l P a t t e r n T y p e = ($AA. Pateikiame porą pavyzdžių: 1 2 3 4 1 1 0 1 0 2 3 4 0 1 0 1 0 1 0 1 0 :i 0 1 5 6 7 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 i 0 1 0 1 0 baitas 8 0 1 0 1 5 6 7 8 1 0 1 0 0 1 0 1 0 1 0 1 $AA $55 $AA $55 $AA $55 $AA $55 1 2 3 4 5 6 7 8 1 1 0 0 0 0 0 0 1 2 3 4 5 6 7 8 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 O O O 1 1 1 1 O 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 baitas $F0 $78 $3C $1E $1E $3C 578 $F0 . ką ir S e t F i l l S t y l e . kurio tipas toks: t y p e F i l l P a t t e r n T y p e = a r r a y [ 1 . pirmiausia reikia sukurti tą raštą. Tam reikalui dažniausiai naudojamas iš anksto nustatytas 8 baitų masyvas. dy : i n t e g e r . F i g (460. F l o o d F i l l (χ.jo pasirinkta spalva. F i g (150. $AA. $55). o S p a l v a . $55. čia S a v o R a š t a s .programuotojo sukurtas užpildymo raštas.

$33. begin S e t C o l o r (Spalva). C i r c l e (χ. y : i n t e g e r . $AA. G r a f i k a . F l o o d F i l l ( x l + 1. Tam skirta procedūra F i g . { Kontūro spalva } v a r χ. S e t F i l l S t y l e ( r l . i : i n t e g e r . yl. $AA. { Figūra procedure Fig (xl. } { Stačiakampio vieta } { Stačiakampio užpildymo raštas ir spalva { Apskritimo užpildymo raštas ir spalva } Spalva : integer). χ := x l + 50. r l . S p a l v a ) .6 pratimas. dy. r2. Reikia naudotis programuotojo sukurtu raštu (37 pav. $33. R e c t a n g l e (XI. f 1). Yl. { Apskritimo centro koordinatės } { v a r dx. y l + 1. Graph. SetFillstyle F l o o d F i l l (χ. $33. program Pr_10_6. (r2. u s e s C r t . S e t B k C o l o r ( L i g h t G r a y ) . f2). 20).). y. end. Xl + 100. ) ClearDevice. c o n s t Savo : F i l l P a t t e r n T y p e = ($AA. у. dy). y := y l + 50. Tų stačiakampių viduje nubrėžti apskritimus ir užpildyti juos kitokiu raštu. . Yl + 100). f2. $33. Kompiuterio ekrane reikia nupiešti stačiakampius ir juos užpildyti standartiniais skirtingais raštais. begin E k r a n a s (dx. f 1.В 10. $33). 37 pav. S p a l v a ) .

f o r i := 1
begin
Figūra
Figūra
Figūra
end;

{

t o 4 do
(30, 10 + 1 1 0 * ( i - l ) , 1, G r e e n + ( i - 1 ) , 4, Red + ( i - 1 ) , B l u e ) ;
(200, 10 + 1 1 0 * ( i - l ) , 2, Brown + ( i - 1 ) , 5, Cyan + ( i - 1 ) , B l u e ) ;
(350, 10 + 1 1 0 * ( i - l ) , 3, M a g e n t a + ( i - 1 ) , 6, Y e l l o w + ( i - 1 ) , B l u e ) ;

Vidurinio stulpelio figūros apibrėžiamos stačiakampiu

}

S e t C o l o r ( B l u e ) ; S e t F i l l S t y l e (9, M a g e n t a ) ;
R e c t a n g l e (180, 5, 320, 450); F l o o d F i l l (181, 6, B l u e ) ;

{

Stačiakampis užpildomas savo sukurtu raštu

}

S e t C o l o r (Red); S e t F i l l P a t t e r n (Savo, B l u e ) ;
R e c t a n g l e (500, 100, 600, 300);
F l o o d F i l l (501, 101, Red);
ReadLn;
CloseGraph;
end.

S 10.7 pratimas.
Kompiuterio ekrane piešiamas stačiakampis, kuris užpildomas atsitiktiniu raštu ir spalva (38 pav.). Veiksmai palydimi garsais.

38 pav.

program Pr_10_7;
u s e s C r t , Graph, G r a f i k a ;
c o n s t G r e i t i s = 3000;
{
procedure Groti;
var i : integer;
begin
i := 1;
repeat

}

S o u n d (Random (180) + 40 + i ) ;
D e l a y (Random (17 0));
S e t F i l l S t y l e (Random (11), Random (16));
B a r (50, 50, 400, 300);
NoSound;
Delay (Greitis);
u n t i l KeyPressed;
ReadLn;
end;
{

}

var

dx, dy

:

integer;

begin
Ekranas

(dx,

dy);

Groti;
ReadLn;

CloseGraph;

10.8. Teksto spausdinimas
Spausdinamus ekrane vaizdus dažniausiai lydi rašytinis tekstas. Tam dirbant su grafiniu
režimu naudojamos dvi procedūros:
OutText (Tekstas : string);
OutTextXY

(χ, у

: integer;

Tekstas

:

string);

Pirmoji procedūra pradeda spausdinti tekstą nuo tos vietos, kur yra žymeklis, antroji
- nuo taško, kurio koordinatės (χ, y). Tekstas bus rašomas menamame stačiakampyje,
kurio viršutinis kairysis kampas ir yra nurodytasis taškas (x, y).
Rašomo teksto spalva nurodoma procedūra S e t C o l o r ( S p a l v a : word).
Spausdinamo teksto charakteristikos nurodomos atskira procedūra
SetTextStyle

(šriftas,

Šriftai
0
1
2
3
4

pagrindinis
pastorintas
plonas
figūrinis
gotiškasis

kryptis,

dydis

: word);

Kryptis
O
1

horizontali
vertikali (iš apačios į viršų)

Pagrindinio šrifto dydis yra 8 x 8 taškų kvadratas. Tie šriftai saugomi matricoje. Jie
dar vadinami taškiniais simboliais, nes simbolio vaizdas sudaromas iš taškų. Taškiniai
simboliai yra tam tikro dydžio ir išdėstyti tam tikru būdu. Fono ir šrifto taškai susieti
spalva. Pagrindinio šrifto dydis gali būti nurodomas skaičiumi iš intervalo [0..10].
Kitų šriftų simboliai saugomi vektoriniu (atkarpų) principu. Jų piešimo programos yra
bylose * . c h r . Simboliai aprašomi tiesių atkarpomis arba vektoriais. Tokių šriftų dydis
lengvai keičiamas: galima didinti iki norimo dydžio arba mažinti net iki nematomo dydžio.
Simboliai nesusiję su stačiakampės srities, kurioje jie piešiami, fonu. Vektorinių simbolių

aprašymas nesusietas su fonu. Jie gali turėti kintamą spalvinimą, jei tai leidžia turimos
spausdinimo priemonės (39 pav.).

39 pav. Vektorinio ir taškinio šriftų simbolio pavyzdys

Jeigu šrifto numeris procedūroje nurodomas didesnis už nulį, tuomet surandama atitinkamo šrifto programa ir įkeliama į kompiuterio atmintį. Jei bylos nerandama, tuomet
naudojamas pagrindinis šriftas.
Kiekvienas vektorinio šrifto simbolis turi savo bazinį plotį ir aukštį. Juos keičiant,
gaunami norimo dydžio simboliai. Tam skirta procedūra:
S e t U s e r C h a r S i z e (Ax, Bx, Ay, By : word);

Tuomet spausdinat simbolius atliekami perskaičiavimai:
S i m b o l i o P l o t i s = ( S i m b o l i o P l o t i s * Ax) / Bx;
S i m b o l i o A u k š t i s = ( S i m b o l i o A u k š t i s * Ay) / By;

B 10.8pratimas.

Įvairūs teksto pavyzdžiai (40 pav.).

3-Progrema
Vogrcmo

2
Į

~~ P
|

o

Г О Э
P

a s a k a

Г Э Н З
-!

•m, ж Jmta:л — :
I I Ш
Г'·-'.': Ю

40 pav.

Pasirf

program Pr_10_8;
u s e s C r t , Graph, G r a f i k a ;
p r o c e d u r e R a š o (Χ, Y : i n t e g e r ; T e k s t a s : s t r i n g ;
S p a l v a : word;
Š r i f t a s , K r y p t i s , D y d i s : word);
begin
S e t C o l o r (Spalva);
SetTextStyle (Šriftas, Kryptis,
OutTextXY (X, Y, T e k s t a s ) ;
end;

Dydis);

v a r dx, d y : i n t e g e r ; Sim : s t r i n g ;
begin
E k r a n a s (dx, dy); S e t B k C o l o r (Green);
Sim := ' P r o g r a m a ' ;
R a š o ( 10, 20, ' 1 - ' + Sim, Red,
+ Sim, B l u e ,
R a š o (200, 20, ' 2 - '
+ Sim, Red,
R a š o ( 10, 30, ' 3 - '
+ Sim, Y e l l o w ,
R a š o ( 10, 50, ' 4 - '
+ Sim, Red,
R a š o ( 10, 70, ' 5 - '
+ Sim, Y e l l o w ,
R a š o ( 10, 100, ' 6 - '
+ Sim, M a g e n t a ,
R a š o (200, 80, ' 7 - '
+ Sim, M a g e n t a ,
R a š o (210, 80, ' 8 - '
+ Sim, M a g e n t a ,
R a š o (240, 80, ' 9 - '
+
Sim, M a g e n t a ,
R a š o (260, 80, ' 1 0 - '
R a š o ( 30, 200, ' 1 1 - ' + Sim, Red,
R a š o ( 30, 270, ' 1 2 - ' + Sim, Red,
R a š o ( 30, 340, ' 1 3 - ' + Sim, B l u e ,
S e t T e x t S t y l e (2, О, 8);

ClearDevice;
0, 0, 0)
0, 0, 4)
1, 0, 2)
2, 0, 6)
3, 0, 2)
4, 0, 2)
0, 1, 1)
1, 1, 1)
2, 1, 6)
3, 1, 1)
1, 0, 8)
3, 0, 8)
4, 0, 8)

OutTextXY (300, 80,

'Pasaka-I');

S e t U s e r C h a r S i z e (4, 1, 1, 1); OutTextXY (300, 120,

'Pasaka-2');

S e t U s e r C h a r S i z e (1, 1, 4, 1); OutTextXY (300, 130,

'Pasaka-3');

S e t U s e r C h a r S i z e (3, 1, 1, 1); OutTextXY (300, 180,

'Pasaka-4');

ReadLn;
CloseGraph;
end.

H 10.9pratimas. Ekrane rašomi žodžiai. ICiekviena žodžio raidė atbėga ekranu iki jai
skirtos vietos. Raidės judesys imituojamas jos perpiešimu naujoje vietoje (41 pav.).

41 pav.
program Pr_10_9;
u s e s C r t , Graph, G r a f i k a ;
c o n s t P a u z ė = 300;
dx = 15; dy = 15;
v a r DidX, DidY : i n t e g e r ;
{

{

{ Taškų skaičius ekrane }
_____

}

p r o c e d u r e R a i d ė (xx, y y : i n t e g e r ;
{ Raidės vieta }
Spalva
: i n t e g e r ; { Raidės spalva }
sim
: char);
{ Raidė }
v a r χ, y : i n t e g e r ;
begin
S e t T e x t S t y l e (1, 0, 50);
χ := Didx; у := xx;
{ Pradinės raidės koordinatės }
w h i l e (χ > xx) o r (у < yy) do
begin
S e t C o l o r ( S p a l v a ) ; OutTextXY (χ, y, sim);
D e l a y (Pauze);
S e t C o l o r (Black); OutTextXY (χ, y, sim);
i f χ - dx > xx t h e n χ := χ - dx { Naujos raidės koordinatės }
e l s e χ := χ χ ;
i f у + dy <= y y t h e n у := у + dy
e l s e у := yy;
end;
S e t C o l o r ( S p a l v a ) ; OutTextXY (χ, y, sim);
end;

}

p r o c e d u r e R a š y t i (A : s t r i n g ;
χ, у : i n t e g e r ) ;
var i : integer;

{ Pirmos raidės vieta }

pirma turime vieną kartą nupiešti figūrą. perpiešiama figūra naudojant XorPut. Antrą kartą toje pačioje vietoje piešiant figūrą tuo pačiu XorPut režimu. . χ := χ + 70. nes figūra tampa permatoma. Procedūra GetImage išsaugomas figūros vaizdas tam tikslui išskirtoje atmintinės vietoje. Xor.1 lentelėje. ClearDevice. end. t. (White). 200). 10. nes gaunamas trūkčiojantis judesys. Tam reikia sukurtą atskirą figūros vaizdą išsaugoti kompiuterio atmintyje. Sukuriamas figūros vaizdas ekrane ir naudojantis funkcija I m a g e S i z e sužinomas figūrą apibrėžiančios stačiakampės srities dydis baitais. Galimi figūros piešimo režimai parodyti 10. Programuojant judesį įdomiausias figūros piešimo ekrane režimas XorPut. kaip elgtis su ekrano ir figūros taškais. galima sukelti judėjimo įspūdį. Jei norime gauti natūralesnį judesį. Galima figūros ir ekrano taškus sudėti operacijomis Or. Procedūrą GetMem naudojame reikiamai atminčiai išskirti dinaminėje atmintyje (tam tikra atmintinės sritis). GRAPH bibliotekoje esančiomis Turbo Paskalio priemonėmis galima programuoti nesudėtingų figūrų judėjimą ekrane. po to ją dėlioti tam tikru dėsningumu skirtingose ekrano vietose.9. 5. And. begin Ekranas (DidX. Galima ekrane esančius taškus pakeisti figūros taškais. gaunamas judesio vaizdas. 50). 300). R a š y t i ( ' V a l e n t i n a ' . parodomas žiūrovui vaizdas (naudojama procedūra Delay). Vienas figūros žingsnis atliekamas šiais veiksmais: nupiešiama figūra režimu XorPut. Veiksmų seka gali būti tokia. tačiau vaizdas išlieka.begin for i := 1 t o Length (A) do begin Raidė (χ. y. CloseGraph. i . Reikiamos paprogramės aprašytos 10. turime greitai perpiešti figūros pokyčius. Rašyti ('Vilnius'. 5.2 lentelėje. SetBkColor DidY). Sudėtingesnių figūrų judesių šiomis priemonėmis vaizduoti neverta. po ja esančių ekrano taškų spalva pakinta. end. Judesių programavimas Perpiešiant figūrą naujoje vietoje. 5. figūra išnyksta ir ekrano vaizdas atsistato. A[i]). ReadLn. Jei norime gauti natūraliai atrodantį judesį. vėl atstatomas ekrano vaizdas. Rašyti ('LIETUVA'. Pagal tam tikrą dėsnį keičiant figūros koordinates ekrane. Figūras ekrane galima piešti nurodant. y.

1 lentelė. Koordinatėmis nurodytos stačiakampės ekrano srities (kaip ir I m a g e S i z e atveju) vaizdą užrašo į atminties sritį. dydį baitais. y2 : i n t e g e r ) : w o r d .Kompiuterinė grafika 10.10 pratimas. Suskaičiuoja stačiakampės ekrano srities. p r o c e d u r e P u t I m a g e (χ. kurią rodo rodyklė A d r e s a s . invertuojant jų spalvą B 10. Galimos reikšmės parodytos 10. y 2 ) koordinatėmis. x 2 . Parametro K a i p reikšmė nurodo perkėlimo būdą. K a i p : word). y l ) ir dešiniojo apatinio kampo (x2. saugomas dinaminėje atmintyje. Pirmieji šeši baitai skirti užrašyti išsaugomos srities parametrams: pločiui ir aukščiui. p r o c e d u r e G e t I m a g e ( x l . Vaizdas. 42 pav. Sudėties operacijos prasmė Konstanta CopyPut XorPut OrPut AndPut NotPut O 1 2 3 4 Pakeičia ekrano sritį atkeliamo vaizdo taškais Nauja ekrano taško spalva gaunama sudėjus ekrano taškų spalvas su atkeliamo vaizdo taškų spalvomis Pakeičia ekrano sritį atkeliamo vaizdo taškais. y l . y). kurios rodyklė A d r e s a s . y2 : i n t e g e r . Ekrane pastovia orbita juda figūra „saulutė". var Adresas : pointer). x 2 . perkeliamas į ekrano vietą. у : i n t e g e r . 10. y l .).2 lentelėje. nurodytos kairiojo viršutinio kampo ( x l . v a r A d r e s a s : p o i n t e r .2 lentelė. f u n c t i o n I m a g e S i z e ( x l . kurios viršutiniojo kairiojo kampo koordinatės yra (x. . Jos fone piešiami įvairiaspalviai skrituliai (42 pav.

SetLineStyle for i ( 0 .t 4 . y. p r o c e d u r e S a u l u t ė (χ. SetFillStyle (1. r .t + r . у := Random (dy . r . G r a f i k a . 210. t 3 .t 4 + 3. t t 2 = r d i v 7. y . t . SetColor (Black). r . := 1 t o n 1). y . r := Random (30) + 5. s p a l v a . O. (x+t. F l o o d F i l l (x.2 . y . { Rodyklė į dinaminę atmintį } Skritulių skaičius p r o c e d u r e S k r i t u l i a i (n : b y t e ) . S e t F i l l S t y l e (1. S e t C o l o r (Random (11)). B l a c k ) .30) + 20. S e t L i n e S t y l e (O.2 ) . r : i n t e g e r .30) + 20. FillEllipse (χ. A r c (χ. A r c (χ. White). (1. y. y+2. t l ) . y . Graph. Yellow). { Šypsena } { Nosytė } . begin Randomize. t 3 = r d i v 8. t 2 . y + t . ( x + t .t 4 + 3. t 5 : word. ( x . B l a c k ) . Red). c o n s t G r e i t i s = 300. { Judesio greitis (pauzė tarp piešimų) v a r dx. { Ekrano taškų skaičius } S : pointer. t 3 ) . r : i n t e g e r ) . r ) .t ) . S e t C o l o r (Red). 150. t2. t 3 ) . 1). t 5 = T r u n c ( r / S q r t (2)). χ := Random (dx . do begin S e t F i l l S t y l e (Random (11). t l = r d i v 5. u s e s C r t . t 4 = r d i v 2.t . t 4 . t 3 . t2. y . y.program Saulė. y. 30. { Geltonas skritulys SetFillStyle FillEllipse FillEllipse SetFillStyle FillEllipse FillEllipse (1. t l . Random (15)). 360. begin = r d i v 4. end.t 4 . x. v a r i . end. 0. dy : i n t e g e r . (x-t.2 ) . r . { Akys } Arc (χ. 180. F i l l E l l i p s e (x. t 3 . end. r). Vieta ir spindulys v a r t . 340. tl). y .t .

200.k . y := dy d i v 2. 2 * r. y . w h i l e t <= 360 do begin P u t I m a g e ( x . u n t i l KeyPressed. y .k . po to užbaigtą vaizdą parodyti ekrane. t . y . dy). Antroji padaro aktyvų grafinį puslapį. Jų skaičius ir dydis priklauso nuo vaizduoklio (monitoriaus) ir tvarkyklės. y . S~). kuriame atliekami visi veiksmai. Numatytieji aktyvus ir matomas puslapiai sutampa ir yra nuliniai. k : i n t e g e r . Dažnai nėra reikalo stebėti piešimo procesą. 1). Jeigu puslapis sutampa su matomo puslapio numeriu. CloseGraph. 1). begin E k r a n a s (dx. Pirmoji padaro matomą ekrane nurodytą puslapį. y. k. Darbui su grafiniais puslapiais skirtos dvi procedūros. dx. S". S". Kompiuterio grafinė atmintis organizuota puslapiais. 1). Kur kas patogiau yra iš karto parodyti ekrane visą paveikslą.k .R c * S i n ( t * 2 * P i / 360)). { Saulutė valoma ) χ := Round (Xe + Rc * Cos ( t * 2 * P i / 360)). P u t I m a g e ( x . 0. tai piešimo procesą galima stebėti ekrane. GetMem (S. v a r χ.k . J u d a (300. p r o c e d u r e S e t A c t i v e P a g e ( P u s l a p i s : word). y := Round (Ye .k . repeat S k r i t u l i a i (20. y+k. Yc. P u t I m a g e ( x .Orbitos centras ir spindulys p r o c e d u r e J u d a (Xe.k . S". Grafinėje atmintyje puslapiai numeruojami pradedant nuliu (0). p r o c e d u r e S e t V i s u a l P a g e ( P u s l a p i s : word). { Saulutė perkeliama į ekraną Delay (Greitis). x+k. 2*k. 2*k)). G e t I m a g e ( x . { Saulutės skersmuo } 0. r := 20. y := Yc. S a u l u t ė (x. I m a g e S i z e (0. dy).k . todėl prieš rašant tokio tipo programas reikia išsiaiškinti savo kompiuterio galimybes. Re. y. . 150. end. Saulutės spindulys } r : integer). y. k := 2 * r . r : i n t e g e r . r). end. t := t + 5. χ := dx d i v 2. Taigi galima figūrą nupiešti puslapyje. begin { Saulutės judesio pradžios vieta Xc + Re.k . Ekrano centras } Saulutės spindulys ir skersmuo Nupiešiama saulutė } Atminties išskyrimas } Saulutė užrašoma į atmintį } Saulutės valymas Į Sudėtingesnėms figūroms perpiešti ekrane reikia daug laiko. kuris ekrane nematomas. v a r χ. r).

Programa naudoja du puslapius. Tvarkyklė Režimas (konstanta) EGA EGALo=O EGAHi=I VGALo=O VGAMed=I VGAHi=2 IBM8514Lo=0 IBM8514Lo=l VGA IBM8514 Ekrano dydis (tšk. G r a f i k a . d y : i n t e g e r . Pateikiame pavyzdį. v a r dx. 43 pav. kuri buvo nurodyta GraphInit procedūroje.). kaip naudotis puslapiais. y.Kompiuterio grafinį režimą galima pakeisti naudojant procedūrą SetGraphMode: p r o c e d u r e SetGraphMode (Režimas : i n t e g e r ) . { Koordinatės ir spindulys . r : i n t e g e r ) . 10. Figūra (stačiakampis gretasienis ir jo priekinėje plokštumoje esantis skritulys) piešiama nematomame puslapyje.) Spalvų skaičius Puslapių skaičius 640x200 640x350 640x 200 640x350 640x480 640x480 16 16 16 16 16 256 4 2 4 2 1 1 1024x768 256 1 B 10. { Ekrano taškų skaičius p r o c e d u r e F i g (χ. Darbo režimus galima keisti tik neišeinant iš tos pačios grafinės tvarkyklės. program Pr_10_ll. kuriuos pakaitomis rodo ekrane (43 pav. ribų. Graph. Nupieštas vaizdas parodomas ekrane.11 pratimas. o nauja figūra piešiama kitame puslapyje. u s e s C r t . Kai kurių galimų režimų ir juose naudojamų puslapių skaičius parodytas 10.3 lentelėje.3 lentelė. c o n s t G r e i t i s = 500.

i f p=0 t h e n b e g i n p = 1. begin Puslapiai } p := 0. end. u n t i l KeyPressed. y + r + r . F i l l E l l i p s e (x+r. naudojami figūroms piešti. Spindulio keitimas } I n c (r. Yellow). kuri vadinama palete. dy). begin E k r a n a s (dx. Green). f o r i := 1 t o 50 do begin { Matomas puslapis } S e t V i s u a l P a g e (p). . v a r i . Parametro I n d e k s a s vietoje užrašomas naujos spalvos kodas. t. nuspalvintų naujomis spalvomis. у. Įdomius efektus galima gauti spalvinant figūras skirtingomis spalvomis. χ. e n d e l s e b e g i n p = 0. B a r 3 d (χ. repeat V a i z d a s (10). r . end. antroje vietoje yra 2 (Green). { Aktyvus (nematomas) puslapis S e t A c t i v e P a g e (pi). Paletės spalvoms kaitalioti naudojama procedūra: S e t P a l e t t e ( I n d e k s a s : word. Nulinėje masyvo vietoje yra spalvos kodas. y + r . y. { Geltonas gretasienis S e t F i l l S t y l e (1. 2). { Aktyvaus puslapio valymas } ClearDevice. x + r + r . p. end. у : i n t e g e r . y. p l := 0. у := dy d i v 3. ketvirtoje vietoje . atitinkantis fono spalvą. Ekrane turimo piešinio spalvas galima keisti neperpiešiant figūrų.4 (Red) ir 1. Ekrano centras χ := dx d i v 3. F i g (x. p l := 1.begin S e t C o l o r (Red). žalios spalvos. Standartinėje paletėje spalvos išdėstytos lentelėje pagal jų kodus. p i . S e t F i l l S t y l e (1. Delay (Greitis). Jeigu lentelėje į ketvirtą vietą įrašysime kodą 2 (Green). r). r). p i := 1. tuomet užrašas Red (ketvirta lentelės spalva) reikš tą spalvą. S e t G r a p h M o d e (EGAHi). Skritulio spindulys p r o c e d u r e V a i z d a s (r : i n t e g e r ) . kurios kodas bus čia parašytas. t. N a u j a S p a l v a : s h o t i n t ) . r . Visos spalvos (jų kodai) surašyti tam tikra tvarka lentelėje (masyve). True). end. CloseGraph.1. Kitose vietose yra spalvų kodai. y. { Žalias skritulys } end.

Nurodoma spalva Red. Crt.standartinės paletės kopija . kurio indeksas Nr. { Spausti bet kurį klavišą } { Ketvirta spalva pakeičiama: Green = 2.12pratimas. 100. ReadLn. 450. Red). } SetPalette (4. kurią nurodo kintamasis P G e t P a l e t t e (var P : PaletteType). program uses var Pr_10_12. Darbui su palete yra skirtos tokios procedūros: S e t P a l e t t e (Nr : w o r d . Stačiakampis bus žalias. P . begin Ekranas (dx. { Red = 4 } Bar (100. Į masyvo elementą.aktyvios paletės kopija G e t D e f a u l t P a l e t t e (var P : PaletteType).0 10. Ekrane piešiamas raudonos spalvos stačiakampis. Graph. Visa aktyvi paletė pakeičiama nauja. { Raudonas stačiakampis } sim := ReadKey. Grafika. 200). Red). s p : s h o r t i n t ) . (350.). dy). Stačiakampis tampa žaliu. įrašomas spalvos kodas s p S e t A l l P a l e t t e ( v a r P). end. 3 00. Green). dx. dy : i n t e g e r . bet ten yra žalios } { spalvos kodas. 44 pav. { Piešiamas antras stačiakampis. 300). j SetFillStyle Bar (2. sim : char. CloseGraph. 100. P . SetFillStyle (1. Raudonos spalvos kodas yra 4 ir jis užrašytas ketvirtoje paletės vietoje (44 pav.

Ekrane iš skirtingos spalvos segmentų piešiamas skritulys. u s e s C r t . sp). P i e S l i c e (χ d i v 2. M a x C o l o r s ] of shortint. f o r i := 1 t o 3 60 d i v t p do begin S e t F i l l S t y l e (1.type PaletteType = record Size : byte. 45 pav. end. { Rato centro koordinatės } tp : integer). Graph. 100). . y. Procedūra Keisti cikliškai perrašo spalvų kodus paletėje. { p r o c e d u r e R a t a s (x.13 pratimas. Konstanta MaxColors = 15 nurodo didžiausią galimą spalvos kodo reikšmę. c o n s t G r e i t i s = 100. Ekrane matome besisukančio rato vaizdą (45 psl. t + t p . } . t . y d i v 2. begin t := 0. t : i n t e g e r . Colors : array[0. sp. s p := 1.). Masyve Colors aprašoma spalvų tvarka paletėje. program Pr_10_13. { Segmento dydis laipsniais } v a r i . Lauke Size yra saugomas aktyvioje paletėje esančių spalvų skaičius. G r a f i k a . β 10.

repeat { Paletės kopija } { Paletės spalvos perstumiamos per vieną poziciją 1 s p := P . sim begin Keisti. P . dy : i n t e g e r . žalios ir mėlyŠią procedūrą galima naudoti tik IBM8514 ir VGA tvarkyklėms.l ] := P . S e t A l l P a l e t t e (P). Keisti. { end. ReadLn. G e t P a l e t t e (P). s i m := r e a d K e y . Kiekviena spalva gaunama iš trijų pagrindinių spalvų: raudonos. end. { Nauja paletė. f o r i . PaletteType. B l u e V a l u e : i n t e g e r ) .255] intensyvumus: S e t R G B P a l e t t e (SpNr. C o l o r s [ i . end. . dy). C o l o r s [ i ] ..if s p < 10 t h e n s p := s p + 1 e l s e s p := 1. b g i galima dirbti su 255 spalvomis. R a t a s (dx. : char. Procedūra S e t R G B P a l e t t e leidžia nustatyti naudojamų spalvų iš intervalo [0. Kiekviena tvarkyklė suteikia galimybę naudoti skirtingą spalvų skaičių. end. t := t + t p . Kinta spalvos ekrane } Delay (Greitis). i : integer. u n t i l KeyPressed. čia SpNr spalvos numeris. Tik tvarkyklėje IBM8514. } procedure var P : sp. { } v a r dx. begin E k r a n a s (dx. 20). dy. R e d V a l u e . o kiti parametrai nurodo spalvos pagrindinių komponentų reikšmes. C o l o r s [ 2 ] . G r e e n V a l u e . C o l o r s [ M a x C o l o r s ] := s p .= 2 t o M a x C o l o r s do P . CloseGraph.

Vietoj žalios ir raudonos spalvų (2 ir 4 numeriai) įrašomos skirtingo intensyvumo violetinės spalvos (46 pav. G r e e n ) . 270). v a r dx. B a r (130. c h a r . ReadLn. 300. S e t R G B P a l e t t e (2.257.14 pratimas. dy). B a r (100. Red). S e t G r a p h M o d e (IBM8514). 100. Atliekamas spalvų perkodavimas. S e t R G B P a l e t t e (4. d y : i n t e g e r . c o n s t G r e i t i s = 1.107). u s e s C r t . S e t F i l l S t y l e (1. 105. 100. Graph. { Red = 4 } { Raudonas stačiakampis } { Green = 2 } { Žalias stačiakampis } { Stačiakampiai violetiniai: { tamsesnis } { šviesesnis } } . end.157.109).).S 10. 270. begin E k r a n a s (dx. • 46 pav. S e t F i l l S t y l e (1. G r a f i k a . 300). program Pr_10_14. s i m . s i m := ReadKey. 130. CloseGraph.

400-i*20. Ekrane nupiešiami šeši pilnaviduriai stačiakampiai.15 pratimas.0 10. Gaunama piramidės iliuzija (47 pav. f o r i := 1 t o 6 do begin S e t F i l l S t y l e (1.'·'· if "·-•- - 47 pav. 70). end. dy). i*20. begin E k r a n a s (dx. 90.). i ) . s i m : c h a r . Graph. program Pr_10_15. G r a f i k a . i : i n t e g e r . . Ekrane stebime skirtingo intensyvumo žalius stačiakampius. 103 + i * 3 . f o r i := 1 t o 6 do S e t R G B P a l e t t e ( i . Bar (i*20. 400-i*20). d y : i n t e g e r . s i m := ReadKey. Visi skirtingos spalvos. ШШШЙШ^· it ДЙ "'-· :: . CloseGraph. end. Pakeičiamos paletės spalvos. u s e s C r t . S e t G r a p h M o d e (IBM8514). v a r dx. ReadLn.

tada žymeklio krypties valdymo klavišais pasirenkama norima komanda ir paspaudžiamas Enter klavišas. Pagrindinį meniu sudaro 10 pagrindinių komandų grupių: File Edit Search Run Compile Debug Tools Options Window Help Byla Redaguoti Paieška Vykdyti Kompiliuoti Derinti Parametrai Langas Priemonės Žinynas Į pagrindinį meniu patenkame paspaudę FlO klavišą arba perkėlę į jį pelės žymeklį. . šios knygos 11 puslapyje): . vadinamą Dialogo langu. Turbo Paskalio 7.ekrano viršuje esantis pagrindinis meniu. Priede pateikiami reikalingiausių terpės elementų paaiškinimai. Jeigu langai išdėstyti pakopomis. 2) nuspaudžiamas FlO klavišas. Darbinis Turbo Paskalio terpės langas visada būna pažymėtas rėmeliu ir turi šiuos elementus: lango dydžio keitimo bei uždarymo simbolius. Programos rengimą sudaro tokie svarbiausi etapai: programos įvedimas ir redagavimas.stulpelio ir eilutės numerius. kuriais galima naudotis dirbant su pele. saugoma. lango numerį ir darbinio lango stačiąją bei gulsčiąją slinkties juostas. kompiliavimas. 1 pav. Bet kurią komandų grupę galima pasirinkti keturiais būdais: 1) nuspaudžiamas FlO klavišas. iškviečiama. Darbas Turbo Paskalio 7. kurie rodo žymeklio koordinates . vykdymas bei derinimas. tai aktyvusis langas visuomet yra pirmame plane. vadinama darbiniu langu. Labai patogūs yra reiškinių reikšmių stebėjimo. Vienu metu galima turėti keletą atvertų langų. kai ji pasirenkama žymeklio krypties klavišais arba pele. 3) laikant nuspaustą Alt klavišą.didžioji ekrano dalis. 4) pelės žymeklis perkeliamas ties norima komandų grupe ir paspaudžiamas kairysis pelės klavišas. Jei prie pagalbinio meniu kurios nors komandos yra daugtaškis. Meniu komandos gali būti pasyvios ir aktyvios. Darbinio lango apačioje esančioje informacinėje eilutėje pateikiama informacija apie kai kurias dažniausiai vartojamas komandas ir jas atitinkančius funkcinius klavišus.apačioje esanti informacinė eilutė. kad ši komanda turi savo specialios paskirties pagalbinį langą. Atgal grįžtama paspaudus Esc klavišą arba naudojantis pele. Kai kurios tų klavišų kombinacijos yra nurodomos šalia terpės komandų.0 integruotoji terpė Turbo Paskalio sistemos integruotąją terpę sudaro trys pagrindinės dalys (žr. Komanda tampa aktyvia tiktai tada. tada paspaudžiamas pasirinktos komandų grupės pavadinimo pirmąją raidę atitinkantis klavišas. tai reiškia.0 integruotoje terpėje pagrįstas meniu bei langų sistemų principais. dialogų langai. Turbo Paskalio darbiniame lange renkamas programos tekstas. tačiau konkrečiu momentu tik vienas iš jų bus aktyvusis (jis būna pažymėtas dvigubu rėmeliu). . Toliau programa gali būti įrašoma į bylą. rezultatų. Virš šios eilutės kairėje pusėje yra du skaičiai XX:YY.Priedai 1 priedas. spaudžiamas pasirinktos komandų grupės pavadinimo pirmąją raidę atitinkantis klavišas. . Langai numeruojami dešiniajame viršutiniame kampe. Terpės elementai pasiekiami pele arba klavišais.

pakeitimo režimą. Mirksintis žymeklio brūkšnelis žymi įterpimo. esantį Turbo Paskalio integruotoje terpėje.tekstų redaktorių. Režimai keičiami kiekvienu klavišo Insert paspaudimu. kaip ir bet kuria kita tekstų rengimo sistema. Į naują eilutę pereinama paspaudus Enter klavišą.p a ž v m ė t a teksto dalis) Komanda Klavišai Pažymėti bloko pradžią Pažymėti bloko pabaigą Pažymėti žodį Kopijuoti bloką Perkelti bloką Pašalinti bloką Skaityti bloką iš bylos Įrašyti bloką į bylą Pažymėti ar paslėpti bloką Spausdinti bloką Perstumti bloką į dešinę Perstumti bloką į kairę Ctrl Ctrl Ctrl Ctrl Ctrl Ctrl Ctrl Ctrl Ctrl Ctrl Ctrl Ctrl + + + + + + + + + + + + KB KK KT KC KV KY KR KW KH KP KI KU . stačiakampiukas . kur rodo žymeklis.Programa pradedama rašyti iškvietus tekstų rengimo sistemą . Žymeklio valdymo komandos Komanda Klavišai Per eilutę aukštyn Per eilutę žemyn Per simbolį į kairę Per simbolį į dešinę Per žodį į kairę Per žodį į dešinę Į eilutės pradžią J eilutės galą Per ekraną aukštyn Per ekraną žemyn Ekranas aukštyn Ekranas žemyn t arba Ctrl + E į arba Ctrl + X arba Ctrl + S . dešiniau žymeklio esantis tekstas pasislenka. Šis redaktorius automatiškai iškviečiamas pradėjus darbą.> arba Ctrl + D Ctrl + A arba Ctrl + < Ctrl + F arba Ctrl + Home End PgUp arba Ctrl + R PgUp arba Ctrl + C Ctrl + W Ctrl + R T e k s t o į v e d i m o ir p a n a i k i n i m o k o m a n d o s Komanda Klavišai Įterpimo režimas Ins arba Ctrl + V Ctrl + N Ctrl + Y Ctrl + QY Del arba Ctrl + G BkSp arba Ctrl + U Ctrl + T Įterpti eilutę Panaikinti eilutę Panaikinti iki eilutės galo Panaikinti simbolį Panaikinti simbolį (iš kairės) Panaikinti žodį iš dešinės D a r b o su blokais k o m a n d o s (blokas . Antruoju atveju naujai renkami simboliai pakeičia anksčiau buvusius. Tekstas renkamas paprastai. Yra įterpimo bei pakeitimo režimai. Pirmuoju atveju tekstas įterpiamas ten.

. Tam tekstų rengimo sistemos lango apačioje nurodytas komandos Save funkcinis klavišas F2. kuris iš karto tampa aktyvus. reikia ties tos bylos vardu paspausti pelės klavišą arba Enter klavišą. Šį veiksmą reikia atlikti tuoj pat..įsiminti (F2). Dialogo lange .atversti (F3). Lango vardai numeruojami. Šiuo atveju galima pakeisti aktyvaus redagavimo lange esančios bylos vardą arba įrašyti ją į kitą katalogą bei į kitą diską. Ši komanda atveria Save file as dialogo langą. Print Printer setup. Save S a v e as. Save . bylų sąrašo laukas (File) bei informacinis laukas.įsiminti nurodant vardą. New . tai bus atveriamas langas Save File as + (įsiminti bylą vardu) dialogo langas. Jeigu bylos vardas tebėra standartinis NONAMExr. Jvedimo lauke rašomas atveriamos bylos vardas arba bylų vardų šablonas. Šia komanda atveriamas bylos atvėrimo (Open a File) dialogo langas. kai tik parašome dalį programos teksto. Šia komanda atveriamas naujas tekstų rengimo sistemos langas su standartiniu vardu NONAMEixx:. kurios reikalingos darbui su parengtomis bylomis. Šiame lange yra įvedimo laukas (Name) su ankstesnių reikšmių sąrašu. žymenys xx reiškia skaitmenis nuo OO iki 99. kuriame bus galima nurodyti norimą bylos vardą. Bylų sąrašo lauke visos aktyviojo katalogo bylos.Papildomos komandos Komanda Klavišai Pagrindinis meniu Išsaugoti bylą Nauja byla Užverti aktyvų langą Tabuliacijos simbolis Tabuliacijos režimas Automatinis postūmis Atkurti redaguojamą eilutę Jvesti specialų simbolį Ieškoti Ieškoti ir pakeisti Pakartoti paskutinę paiešką Nutraukti komandos vykdymą FlO F2 arba Ctrl + KS F3 Alt + F3 TAB arba Ctrl + 1 Ctrl + O T Ctrl + OI Ctrl + QL Ctrl + P Ctrl + QF Ctrl + QA Ctrl + L Esc File grupės komandos Edit S e a r c h R u n C o m p i l e D e b u g Tools O p t i o n s W i n d o w File New Open. y. Ši komanda tekstų rengimo sistemos lange esančią bylą įrašo į diską. Po to reikia pasirinkti komandos klavišą. Pirmoji komanda (Open) atveria naują redagavimo langą ir į jį įkelia pasirinktą bylą.. kurių vardai tenkina įvedimo lauko šabloną.) bei visi žemesniojo lygio katalogai. Open . Save as . Ši grupė turi dar daugelį kitų komandų.PAS.naujas. aukštesniojo lygio katalogas (\... t. S a v e all Help F3 F2 C h a n g e dir. Norint atverti bet kurią bylą.... neatidarydama naujo. Antroji komanda (Replace) pasirinktą bylą įkelia į aktyvių tekstų rengimo sistemos langą. langelį Open arba Replace. Komanda Save yra pagrindinio meniu pirmojoje grupėje File.PAS. D o s shell Exit Alt+X Parašytą programą reikia įsiminti į tam tikrą atmintinės vietą. aprašantis pasirenkamą bylą..

Pavyzdžiui. Šia komanda įsimenamos visos bylos.programos tekstas. Ši komanda leidžia laikinai iš Turbo Paskalio terpės ir vykdyti įvairias DOS komandas bei kitas programas.paruošti spausdintuvą. ar reikia jas įrašyti. Ji taikoma tik po Undo arba Redo komandų. Undo . tai prieš baigiant darbą bus paklausta. Šia komanda keičiamas aktyvusis katalogas.baigti darbą (Alt + X). esančios atvertuose redagavimo languose. Šios komandos veiksmas atvirkščias Undo komandai.pereiti į DOS terpę. Redo . Šia komanda galima panaikinti atliktos komandos rezultatą. Jeigu tvarkomos bylos nebuvo įrašytos (įsimintos). Paste .pas. Šia komanda išeinama iš integruotos Turbo Paskalio terpės ir grįžtama į DOS.nusiųsti skiriamuosius kodus. Change dir .atstatyti ką tik panaikintą redagavimo komandą. Taip sudaroma galimybė daugiau eksperimentuoti: jei nepavyks kuri nors komanda. reikia dialogo lange nustatyti parametrą Send highlighting escape codes . tai tą dalį reikia pažymėti ir nurodyti komandą Ctrl K + P. Tekstą pažymime perkėlę žymeklį į teksto pradžią. Šia komanda pažymėtas tekstas ištrinamas iš redagavimo lango ir įkeliamas į krepšį (Clipboard). . Šia komanda krepšyje esantis tekstas perkeliamas į aktyvųjį redagavimo langą .įterpti (Shift + Ins).kopijuoti (Ctrl + lns). kur baigiasi pažymėtas tekstas. pabrauktą ir pan.pašalinti pažymėtą teksto dalį (Shift+ Del). Katalogo medyje vaizduojamas aktyvusis katalogas ir jo pakatalogiai. reikia surinkti komandą Exit. Vartojant šią komandą galima kopijuoti ir aprašus iš žinyno (Help) lango. Ši komanda atveria dialogo langą. kuriame yra katalogo įvedimo laukas su ankstesnių reikšmių sąrašu bei katalogų medžių laukas. DOS shell . Tuo ši komanda skiriasi nuo komandos Cut. Print . Pakeitus katalogą. Jeigu šio teksto dėl kokių nors priežasčių spausdinti negalima. Printer setup . Cut . tačiau jo nepanaikina. Šia komanda gali būti spausdinamas aktyvaus redagavimo lango turinys . Norint sugrįžti atgal į Paskalio terpę. Šia komanda nurodomi įvairūs spausdinimo parametrai.įterpiamas į žymeklio vietą. tai šios komandos atlikti neleidžiama (jos užrašas tampa šviesios spalvos). Norint. bylų sąrašo lauku bei informaciniu lauku.yra įvedimo laukas su ankstesnių reikšmių sąrašu. Spausdinamų simbolių skiriamieji kodai aprašomi terpės byloje prnfltr.atšaukti ką tik atliktą komandą (Alt + BkSp). kurios nustato simbolių šriftus: pusjuodį. Tekstą galima žymėti naudojantis darbo su blokais komandomis arba naudojantis pele bei Shift klavišu. rodomas naujasis. kursyvą.įsiminti viską. Save all . kurį įterpia paskutinė atlikta Cut arba Copy komanda. Edit grupės komandos File S e a r c h Run C o m p i l e D e b u g Tools O p t i o n s W i n d o w H e l p Edit Undo Redo Alt+BkSp Cut Copy Paste Clear Shift+Del Ctrl+lns Shift+lns Ctrl+Del S h o w clipboard Kai kurioms komandoms reikalingas pažymėtas tekstas. Nustatytą situaciją reikia patvirtinti mygtuku OK (pele arba klavišu Tab išrinkus ir paspaudus Enter). Įvairių tipų teksto fragmentų skiriamieji kodai į spausdintuvus siunčiami specialiomis kodų sekomis. arba laikydami nuspaustą Shift klavišą ir spaudydami atitinkamus žymeklio krypties klavišus. redaktoriaus lange rodomame tekste įvairios paskirties Turbo Paskalio kalbos žodžių grupės paryškintos skirtingomis spalvomis.spausdinti. kad šie žymenys išliktų ir nespalvotu spausdintuvu spausdinamame tekste. Jeigu reikia spausdinti tik dalį teksto. Ši komanda aktyviajame redagavimo lange pažymėtą tekstą kopijuoja į krepšį. Įvedimo lauke nurodomas naujo katalogo kelias. Šis dialogo langas yra visiškai analogiškas komandos Open dialogo langui.keisti katalogą. Krepšyje būna tekstas. Copy . Exit . jos galima atsisakyti. laikydami nuspaustą kairįjį pelės klavišą ir vilkdami ją iki tos vietos.

Ieškomasis ir keičiamasis tekstai rašomi dialogo lange. New text . einančius po šio žodžio. Dauguma pakeitimo komandos dialogo lango laukų sutampa su paieškos komandos dialogo lango laukais.. S h o w last compiler error Find error . Replace .paieškos šablonas. Šia komanda nurodytas teksto fragmentas keičiamas kitu surinktu tekstu. Spaudant žymeklio krypties klavišą — g a l i m a išvysti tolesnius. Find p r o c e d u r e .nurodo bylos dalį.parametrai . Šia komanda atidaromas paieškos dialogo langas. 4) Origin . Galimos dvi paieškos kryptys: Forward .nurodo. 1) Options .atliekami visi galimi pakeitimai aktyviame redagavimo lange (t. . Kadangi tekstai krepšyje kaupiasi. Search grupės komandos File Edit S e a r c h R u n C o m p i l e D e b u g Tools O p t i o n s W i n d o w H e l p Find. Numatytąja paskutine komanda Cut arba Copy įkeltas tekstas pažymimas automatiškai.ieškomasis tekstas. 2) Scope . Šiame lange yra keletas laukų: įvedimo.paklausti prieš pakeičiant. ar paiešką vykdyti pagal tam tikrus šablonus. kuriame dar galima nurodyti įvairius paieškos ir keitimo variantus.sutampa su paieškos įvedimo lauku. kuriuo turi būti pakeistas ieškomasis tekstas. Šia komanda pažymėtasis tekstas panaikinamas iš redagavimo lango ir neįkeliamas į krepšį.Text to find .nuo esamos žymeklio padėties ir Entire scope .link bylos pradžios.. Find . tai šis žodis automatiškai atsiras įvedimo lauke.Norint pradėti paiešką..Change all . ..link bylos pabaigos ir Backward .Įvedimo laukas turi antraštę Text to find . Čia saugomi visi tekstai. kurioje reikia atlikti paiešką.pakeisti visus .skirtas įvesti tekstui. Yra keturi pasirinkimo langeliai.pradžia . R e p l a c e . pažymėtoji teksto dalis bus įrašyta į darbo lango teksto pabaigą. . Šia komanda patogu išvalyti krepšį. Show Clipboard .pažymėtoje bylos dalyje. ar ieškoti tik ištisų žodžių (Whole words only).nuo bylos pradžios.. Jeigu prieš iškviečiant šią komandą žymeklis redagavimo lange buvo ties kokiu nors žodžiu. Šis laukas turi ankstesnių reikšmių sąrašą. S e a r c h again G o to line n u m b e r . kurie buvo kada nors įkelti komandomis Cut ir Copy. Šiame lauke galima nustatyti. . 3) Direction . Galimos dvi paieškos sritys: Global visoje byloje ir Selected text .Paieškos sąlygos aprašomos įvairiais pasirenkamais bei įjungiamais parametrais. kad prieš kiekvieną keitimą sistema reikalautų patvirtinimo... simbolius.. Atveriamas krepšio langas. nuo kur pradėti paiešką.panaikinti tekstą (Ctrl + Del).ieškomasis tekstas . .Clear . . Kiekvieną kartą naujas tekstas rašomas į galą. reikia pasirinkti komandą OK1 priešingu atveju . kurie nuo jų skiriasi. y.Cancel. Šiame lauke įvedamasis ieškomas tekstas .pakeisti.rasti. Esant krepšio lange ir pažymėjus jame teksto dalį bei pasirinkus komandą Cut arba Copy.Prompt to replace .kryptis .. Galimi du būdai: From cursor .sritis .nurodo paieškos byloje kryptį.nurodo įvairias paieškos galimybes: ar skirti mažąsias ir didžiąsias raides (Case sensitive). kuriuose vartojami apibendrinantys simboliai (Regular expressions). patariama retkarčiais peržiūrėti jo turinį ir nereikalingus tekstus išmesti (komanda Clear).. Todėl jo negalima atstatyti komanda Paste. pasirinkimo ir tikrinimo. kuriame galima nurodyti ieškomą tekstą bei papildomus reikalavimus. .naujas tekstas . nereikia vartoti operaciją kartojančios komandos Ctrl + L. tad aprašysime tik tuos.rodyti krepšį. Krepšio lange galima redaguoti jame esantį tekstą.

Parameters .. Search again . Jeigu programa nebuvo prieš tai sukompiliuota. kuris yra pagrindinės komandos Options Debugger dialogo lange. Trace into . kuriuo galima pasinaudoti. Be to. Run . Jos išvardytos pagrindinio meniu komandų grupėje Debug . Šia komanda atveriamas programos parametrų dialogo langas. Tačiau su derinimu susietų komandų yra ir grupėje Run.iki žymeklio. numeris. Klaidos adresas žymimas dviem šešioliktainiais skaičiais taip: SEG:POS. einama į jo vidų ir atliekama po vieną jame esantį sakinį). tai ji kompiliuojama (atliekama taip. programa vykdoma. kad programa bus vykdoma iki eilutės. Go to line number . tačiau ji leidžia sustoti prie nurodyto taško.įvesti naujos eilutės numerį . bet patį aprašą. čia SEG yra atminties segmentas. Tokiu atveju reikia dar kartą pakartoti komandą Go to cursor. Parametrai . Eilutės. kurioje yra žymeklis.derinimas. turi būti aktyvus tikrinimo laukas Debugging Integrated (derinimas terpėje). Findprocedure .tai atliekama komanda Parameters. po to vykdoma. Kai programa vykdoma. jeigu tik šis taškas yra aukščiau negu pasiekta reikalinga eilutė.nurodomas reikalingas eilutės numeris. Ši komanda yra pagrindinė: nurodžius ją. Šia komanda nurodoma. Program reset . kurios leidžia vykdyti programą sakiniais bei eilutėmis (kartais dar vadinama vykdymu žingsnis po žingsnio).vykdyti pažingsniui. kuriame galima nurodyti programai perduodamų parametrų eilutę (panašiai kaip iškviečiant programą iš DOS). Ši komanda kartoja paskutinę paieškos (Find) arba pakeitimo (Replace) komandą. Redaktoriaus ekrane spalvota juosta žymi vykdomą eilutę. pasirenkame komandą Program reset. Show last compiler error . kuriame nurodomos vykdant komandą rastos klaidos adresas ir aptinkama programos eilutė. Jei norime įpusėję derinimą nutraukti programą ir pradėti vėl iš pradžių. Ypač reikalingos komandos. Run grupės komandos File Edit S e a r c h R u n C o m p i l e D e b u g T o o l s Options W i n d o w H e l p Run Ctrl+F9 S t e p over F8 T r a c e into F7 G o to cursor F4 P r o g r a m reset Ctrl+F2 Parameters.vykdyti gilyn.Komandų Find ir Replace kartojimui vartojama komanda Ctri + L. Step over . Šia komanda atidaromas dialogo langas. į kurią reikia pereiti. numeris matomas apatiniame kairiajame redagavimo lango kampe.parametrai. Šią komandą galima vartoti tik dirbant derinimo režimu. tarytum būtų duota kompiliavimo komanda Make iš Compile grupės). Nors ši programa nenustato nuolatinio programos pertraukties taško (kaip galima daryti derinimo komandomis). sakinys po sakinio (pavyzdžiui. Go to cursor . Šia komanda atveriamas procedūros paieškos dialogo langas. Įvedimo laukas Find procedure turi ankstesnių reikšmių sąrašą. Šia komanda atveriamas dialogo langas. kad suranda ne nurodyto procedūros ar funkcijos vardo panaudojimo vietą. kai yra ciklas.parodyti paskutinę kompiliavimo klaidą. Kreipinys į procedūrą arba funkciją laikomas vienu sakiniu. o TOS .ieškoti dar kartą. Programa vykdoma nuosekliai.nutraukti programos vykdymą. kuriame nurodomas ieškomos procedūros ar funkcijos vardas. kurioje yra žymeklis. pereinama prie šios procedūros arba funkcijos sakinių žingsnis po žingsnio vykdymo. Jame nurodomas eilutės. Find error . Dialogo lange esančiame įvedimo lauke Enter new line number .padėtis jame.klaidų paieška. yra galimybė pakoreguoti jos vykdymo parametrus . Kad ši komanda gerai veiktų.. Klaidų paieškai vartojamos įvairios programos derinimo priemonės.procedūros paieška. kuri sukėlė šią klaidą. laukas turi ankstesnių reikšmių sąrašą. kuriuo galima pasinaudoti. Ši komanda nuo paprastos paieškos komandos Find skiriasi tuo. kad sutikus kreipinį į procedūrą ar funkciją. Ši komanda skiriasi nuo komandos Step over tik tuo.pereiti į nurodytą eilutę.vykdyti.

Ši komanda besąlygiškai kompiliuoja ne visą programą. Jeigu modulio sąsajos dalis buvo modifikuota. Šia komanda galima nurodyti. Clear primary file Information Parašyta programa kompiliuojama. kurioje yra klaida. Destination memory . žinoma. jeigu Disk .nurodomi įvedimo lauke Parameters (čia programos vardo rašyti nereikia). Jeigu pakeitimų moduliuose nebūta.sukurti: sąlyginė kompiliacija ( R ) . kompiliavimas nutraukiamas. sukompiliuota programa bus įkelta į pagrindinę (operatyviąją) atmintį. tai sukurtos exe bylos vardas bus arba komanda Primary file (pagrindinė byla) apibrėžtas vardas. ar po ankstesnės kompiliacijos buvo pakeitimų.. susijusios su kompiliuojamąja. tai iš naujo bus kompiliuojami visi susiję moduliai. kur reikia įkelti komandomis Make arba Build sukompiliuotą programą. Ši komanda vartojama tada. o žymeklis atsiduria programos eilutėje. sudarytas iš daugelio modulių ar bylų. Yra du pasirinkimai: Memory . Jeigu pagalbinio modulio byla buvo modifikuota vėliau negu sukurta tpu (objektinio kodo) byla. Klaidos vietą parodo žymeklis. Jeigupasirenkame Memory. arba aktyviame redagavimo lange esančios bylos vardas. pertvarkomi. jie neperkompiliuojami.sudaryti.talpinimo vieta. tai jie neperkompiliuojami. Jeigu tpu modulis turi ryšį su išoriniu paprogramių moduliu obj ir pastarasis buvo sukurtas vėliau negu tpu modulis. y. ar buvo jose pakeitimų. jog gautoje vykdymo byloje atsižvelgiama į visus anksčiau padarytus pakeitimus. o pirmiausiai tikrina: jei buvo anksčiau sukompiliuoti kai kurie moduliai ir juose nebuvo klaidų. Šia komanda kompiliuojama programa arba modulis. Build . Atlikę šią kompiliaciją galite būti tikri. Čia labai svarbu. kad modulių kūrimo metu sistema rodytų tikslų laiką. tai šis modulis bus kompiliuojamas iš naujo. kai moduliai dažnai taisomi. kai reikia kompiliuoti sudėtingas programas. esantys tekstų rengimo sistemos aktyviajame lange. Ši komanda analogiška Make komandai. Jeigu kompiliuojamoje programoje yra kreipinių į vartotojo sukurtus modulius. paskutinėje eilutėje.byla su programos vykdomuoju kodu bus įkeliama diske su prievardžiu exe. jeigu tokia buvo nurodyta komanda Primary file. tai šis modulis kompiliuojamas iš naujo. Compile . ar ne. kuriame pateikiama transliatoriaus darbo eiga ir rezultatai. Kai įkeliama į diską. Parametrai daro įtaką tolesniam programos vykdymui. tai jos iškvietimo klavišai Alt + F9 yra prieinami ir redaktoriaus lango apačioje. Disk į diską. Aptikęs sintaksės klaidą kompiliatorius perduoda valdymą tekstų rengimo sistemai ir praneša apie klaidos tipą. . kuri buvo sukurta vėliau negu pats modulis. Kadangi šią komandą tenka dažnai atlikti. Jeigu kompiliuojant sutinkami vartotojo aprašyti moduliai.kompiliuoti (Alt + F9). kuri turi būti kompiliuojama drauge su visais moduliais.. Klaidų kontrolė aprašoma komandų grupės Options (parametrai) komandos Compiler dialogo lange. perrašoma kompiuterio vidine kalba (mašininiais kodais). Jeigu programoje yra sintaksės klaidų. (Pagrindinė byla yra tokia. tai kompiliuojama ta programa. ypač ji naudinga tada. tik yra vienas skirtumas: tpu modulių visos pas bylos perkompiliuojamos iš naujo nepaisant.) Jeigu pagrindinė byla nenurodyta. Programos kompiliavimo metu atveriamas kompiliavimo būklės langas. Pirmiausia kompiliuojama pagrindinė byla. tai šie moduliai turi būti sukompiliuoti anksčiau ir užrašyti su prievardžiu tpu. Compile grupės komandos File Edit S e a r c h R u n Compile Compile Make Build Debug Tools Options Window Help Alt+F9 F9 Destination M e m o r y Primaryfile. Kad galėtų rasti šias klaidas. tai šis modulis bus kompiliuojamas iš naujo. Toliau tikrinamos visos bylos. t. tai tikrinama. Kompiliavimo metu ieškoma sintaksės (ir kai kurių semantikos) klaidų. kompiliatorius kodais perrašytą programą papildo specialiomis lentelėmis. kuri yra redaktoriaus aktyviajame lange.į atmintį. Make . kaip tai daro komanda Compile. Jeigu modulyje yra byla.

sauganti pagrindinę programą. Call stack langas yra labai vertingas derinant sudėtingas programas. kai komandų grupės Options komandos Debugger dialogo lange yra nustatytas integruotos terpės parametras Integrated Debugging bei komandos Compiler dialogo lange . Debug grupės komandos File Edit . kai didelė programa yra suskaidyta į daugelį logiškai susijusių modulių. Visas derinimo komandas galima atlikti tik tada..vartojamas norint pervesti pagrindinę bylą iš aktyvaus į neaktyvų režimą. Komanda Primary file paprastai vartojama.informacija.pagrindinė byla. kreipimosi tvarką. Primary file . Jame pateikiamos visos aktyviojo katalogo bylos. Išvalymo (Clear all) laukas panaikina visus pertraukties taškus. Veiksmo laukas Clear .. Kartais derinimo proceso metu reikia sužinoti programos vykdymo eigą iki šio momento. Ši byla reikalinga kompiliuojant. sukūrimo data ir laikas. t. Run Compile Debug Breakpoints Call stack Register Watch Output User s c r e e n Tools Options Window Help Ctrl+F3 Alt+F5 Evaluate/modify. esančius pertraukties taškų sąraše. Informaciniame lauke rodomas pasirinktos bylos vardas. Atveriant pagrindinės bylos dialogo langą ši byla būna pažymėta bylų sąraše . Ctrl+F7 A d d breakpoint Derinimo sistema vartoja aktyvų redagavimo langą.parametrai Debug information ir Local symbols. atitinkančia pertraukties tašką. . atliekant derinimą galima vartoti visas pagrindinio meniu komandas. kai reikia sustojus programai keisti pertraukties taškų sąlygas. Šia komanda atveriamas informacijos langas. Breakpoints . Be to.pasirinkta. taip pat visas bylos kelias. Jis parodo. Bylų sąrašo laukas turi antraštę Files (bylos). taip pat aukštesniojo lygio katalogas bei visi žemesniojo lygio katalogai.valyti . kurios funkcijos bei procedūros buvo kviečiamos. t.pertraukties taškai. Šiame lange yra pertraukties taškų sąrašas (Breakpoint list). šitaip sužinome aktyvių procedūrų bei funkcijų pavadinimus. Pertraukties taškai . Jais pažymimos vietos. Šia komanda atveriamas pertraukties taškų dialogo langas. Information . Tam yra Call stack langas. kurių vardai tenkina įvedimo lauko šabloną. parametrų reikšmes. Primename: kad ir kiek modulių būtų. Call stack . yra viena.Visi komandomis Make arba Build iš naujo sukompiliuoti moduliai įkeliami į diską.tai viena iš derinimo priemonių. kuriame pateikiama išsami informacija apie kompiliavimo rezultatus ir atminties paskirstymą. Jeigu yra apibrėžtų reiškinių... y.net jeigu talpinimo vieta buvo nurodyta Memory. sąlyga ir kartojimų skaičius. Šia komanda atveriamas Primary file dialogo langas. dydis. pagrindinė byla.. kuriame galima nustatyti naujus pertraukties taškus. Redagavimo (Mit) laukas atveria pertraukties taškų redagavimo (Edit Breakpoints) dialogo langą. kompiliuoti bei vykdyti šią programą iš naujo. numeris. kuriame galime redaguoti visus pertraukties taškus. Dialogo lange. . Kiekvienam taškui rodomas eilutės. kuriame yra šis taškas. be bylos vardo. y. Jame reikia nurodyti pagrindinės programos teksto bylą su prievardžiu pas. Sąlygos turi ankstesnių reikšmių sąrašus: jie praverčia.dėklo duomenų lango atidarymas (Ctrl -I. tai specialiame reiškinių lange matomos jų reikšmės.F3). įvedimo lauko yra bylų sąrašo bei informacinis laukas. Ctrl+F4 A d d watch. Tuomet galima koreguoti redagavimo lange esančios programos tekstą. Sąlyga apibrėžiama sąlygos (Condition) įvedimo lauke. pagrindinė programa yra viena. kuriame rodomos programos pertraukties taškų vietos. kuriose norima stebėti kintamųjų reikšmes. kai vartojamos kompiliavimo komandos Make arba Build.. Peržiūros (View) laukas suaktyvina tekstų rengimo sistemos darbinį langą ir žymeklį pastato ties eilute.

galima pereiti per pertraukties tašką nestabdant programos. kuriame yra trys laukai: Expression . Šia komanda galima papildyti norimų stebėti duomenų sąrašą. Toliau reiškinį galima modifikuoti bei jį keisti. numeris. kuriame nurodomas norimo įrašyti kintamojo vardas. kuriuose aprašomos pertraukimų sąlygos ir vieta: 1) lauke Condition . Atkreipkite dėmesį. Šia komanda atveriamas rezultatų langas. Add watch . 2) lauke Pass count . šis parametras labai praverčia testuojant ciklus. reikia nurodyti komandą Evaluate .skaitiklis .sąlyga . pakeisti ją. Redaguoti stebimas kintamųjų reikšmes galima dviem būdais: 1) esant aktyviam stebėjimo langui ir krypties klavišais pasirinkus norimą kintamąjį. a[i]. Struktūrinių kintamųjų reikšmės rodomos pagal struktūrinių konstantų sudarymo taisykles.reikia nurodyti pertraukimo sąlygas aprašantį loginį reiškinį. Evaluate/modify . Result . Pasirinkus pirmąjį būdą atveriamas dialogo langas. Jeigu turimas kontrolines duomenų reikšmes norima pakeisti. Taip pat galima nurodyti ir Paskalio kalbos reiškinius. Šia komanda atveriamas kontrolinių duomenų reikšmių stebėjimo langas.rezultatas ir New value .stebėti.išdėsčius juos greta. . Šia komanda atidaromas specialus langas.skaičiuoti ar modifikuoti (Ctrl + F4).stebimų duomenų papildymas (Ctrl + F7). kuriame derinamas programos tekstas. pavyzdžiui. t.rezultatų langas. Šia komanda numatomi programos pertraukties taškai.procesoriaus registrų duomenų lango atidarymas.Register . kiek kartų vykdant programą.pertraukties taškų papildymas. Stebėjimo lange galima nurodyti tiek paprastuosius.paspaudus Delete klavišą. kuriose pageidaujama matyti stebimų duomenų reikšmes. Jos reikalingos tada. kurioje yra pertraukties taškas.vartotojo ekranas (Alt + F5). 2) vartojant Debug grupės komandą Add watch. Tai nurodoma komandų grupės Window komanda Tile. Paprasčiausias būdas nurodyti pertraukties taškus: į norimą programos teksto vietą nuvesti žymeklį ir atlikti komandą Go to cursor iš vykdymo grupės Run (arba paspausti F4 klavišą). Patogiau dirbti.nurodoma.nauja reikšmė.).reiškinys. Jos dialogo lange yra keturi parametrų įvedimo laukai. Šitokius veiksmus galima kartoti daug kartų. Šis langas paprastai būna ekrano apačioje ir uždengia dalį tekstų rengimo sistemos lango. 3) laukuose File name ir Line number nurodomas atitinkamos programos bylos vardas bei jos eilutės. Šia komanda patenkama į MS DOS terpę ir rodomas ekranas.tuomet suskaičiuotąją reikšmę matysime rezultatų lauke Result. pažymimos tos vietos. Šiuo atveju pertraukties taškus geriau aprašyti iš anksto. pamatyti bet kurio programoje esančio kintamojo ar duomenų elemento reikšmę. kai pasirenkame jį krypties klavišais. taip daryti nepatogu. Stebėjimo lange rodomos kontroliuojamų duomenų reikšmės. pašalinamas . kuriame yra derinamos programos tekstas (1 pav. Į reiškinio įvedimo lauką galima klaviatūra įvesti bet kurį reiškinį. tiek struktūrinius duomenis. Komanda atveria dialogo langą. Tam ir skirta komanda Add breakpoint. kurios buvo programos stabdymo momentu.) Kintamasis į reikšmių stebėjimo langą patenka paspaudus Insert klavišą. Tam reikia pasirinkti Modify komandą. kai programoje vartojamas operacinės sistemos pertraukimas bei įterpiami tekstai Asemblerio kalba. kai šie langai nedengia vienas kito . User screen . Antrasis būdas aprašytas šiek tiek toliau. Šia komanda galima skaičiuoti reiškinių reikšmes. Ši komanda paprastai vartojama kontroliniams duomenims tikrinti bei jų reikšmėms keisti. Šiuo atveju atveriamas stebėjimo duomenų papildymo dialogo langas. Watch . kad naujas reikšmes galima keisti tik esant paprastiems duomenų elementams. Tačiau jei programa didelė arba pageidaujama nemažai pertraukties taškų skirtingose programos vietose. (Kintamasis atsiranda dialogo lange. Vykdant šią komandą programa sustabdoma žymeklio vietoje ir valdymas perduodamas tekstų rengimo sistemai. Norint suskaičiuoti jo reikšmę. Gautosios reikšmės padeda aptikti klaidų vietas bei nustatyti jas sukėlusias priežastis. panašus į reikšmių stebėjimo langą: paprastai jis būna apačioje ir uždengia dalį tekstų sistemos lango. Output . y. s. i. kuriame rodomos kompiuterio centrinio procesoriaus registrų reikšmės. kuriame galima rasti įvestas pradinių duomenų reikšmes bei išspausdintus rezultatus. Add breakpoint . vartojamas New value laukas: čia nurodoma nauja kintamojo reikšmė. po to pasirenkama Modify komanda.

Tools grupės komandos
File Edit S e a r c h R u n C o m p i l e ...

Tools

Options Window Help

Messages...
G o to next
G o to previous

Alt+F8
Alt+F7

Grep
Shift+F2
T u r b o A s s e m b l e r Shift+F3
T u r b o D e b u g g e r Shift+F4
T u r b o Profiler
Shift+F5

Šiomis komandomis galima peržiūrėti visus pranešimus apie kompiliavimo klaidas bei tyrinėti su jomis
susijusi programos tekstą. Čia taip pat yra priemonės, kuriomis naudojantis galima neišeinant iš Turbo Paskalio
terpės išsikviesti kitas analizės ir derinimo programas: Greep, TXirbo Assembler, T\irbo Debbuger, Turbo
Profiler (pastarosios galimybės yra versijoje Borland Pascal with Object 7.0).

Options grupės komandos

File Edit S e a r c h R u n C o m p i l e D e b u g

Tools

Options

Window

Help

Compiler...
M e m o r y sizes...
Linker...
Debugger...
Directories...
Tools...
Environment

>•

Open...
Save \ . . . \TURBO.TP
S a v e as...
Turbo Paskalio integruotos terpės parametrų yra daug. Jiems nustatyti bei keisti vartojama komandų grupė
Options - parametrai.
Compiler - kompiliatoriaus parametrai. Dažniausiai pakanka nustatyti tik šios komandos parametrus ir gaunama norima integruota terpė. Daugelis kompiliatoriaus parametrų yra kompiliatoriaus direktyvų atitikmenys.
Keletą dažniausiai vartojamų:
Force far calls
Word align data
Overlays allowed
Range checking
Stack checking
I/O checking
Debug information

(vartoti tolimus kreipinius) yra direktyvos $F analogas, tik veikia visuotinai.
(duomenų lygiavimas ties žodžio riba) yra direktyvos $A analogas.
(persiklojantys moduliai) yra direktyvos $ 0 analogas.
(intervalo rėžių tikrinimas) yra direktyvos $R analogas.
(dėklo tikrinimas) yra direktyvos $S analogas.
(įvesties ir išvesties operacijų tikrinimas) yra direktyvos $1 analogas.
(derinimo informacija) yra direktyvos $D analogas.

Memory sizes - atminties panaudojimo parametrai. Ši komanda atidaro atminties panaudojimo dialogo
langą, kuriame nurodomas atminties perskirstymas programai. Jei vykdant programą nepakaks nurodytos atminties, tai programos darbas bus nutrauktas ir bus pranešta apie klaidą. Šio dialogo langas yra kompiliatoriaus
direktyvos $M analogas.

Linker - sisteminių ryšių redaktoriaus parametrai. Ši komanda reikalinga, kai kompiliuojant programą kuriamas jos objektų modulis. Tuomet ryšių redaktorius planuoja modulių išdėstymą pagrindinėje (operatyviojoje)
atmintyje ir organizuoja informacinius ryšius tarp jų.
Debbuger - derinimo parametrai. Ši komanda atidaro derinimo parametrų langą, apie kurį jau buvo kalbėta
anksčiau. Šiame lange nustatomi parametrai, turintys įtakos visai programų derinimo sistemai.
Directories - katalogai. Ši komanda atidaro katalogų dialogo langą, kuriame nurodoma, kur Turbo Paskalio
sistema turi įrašyti bei ieškoti bylų. Dialogo lange yra keturi įvedimo langai: EXE & TPU directory lauke
nurodoma, kur rašyti vykdomas (.exe) ir objektų modulių (.tpu) bylas; įjungiamų katalogų (Include directories)
lauke nurodomi katalogai, kuriuose reikia ieškoti įjungiamų bylų; modulių katalogų (Unit directories) - katalogus, kuriuose yra standartinių Turbo Paskalio ir vartotojo bibliotekų bylos; objektų bylų katakogų (Objeck
directories) - katalogus, kuriuose yra objektų (.obj) bylos.
Tools - priemonės.
Environment - terpės parametrai. Ši komanda atidaro papildomą meniu langą, kuriame yra komandos,
įgalinčios keisti įvairios terpės, spalvų parinkimo, pelės, redaktoriaus parametrus.

Window grupės komandos
File Edit S e a r c h Run C o m p i l e D e b u g Tools O p t i o n s

Window

Help

Tile
Cascade
C l o s e all
Refresh display
Size/Move
Zoom
Next
Previous
Close
List...

Ctrl+F5
F5
F6
Shift+F6
Alt+F3
Alt+O

Langas - tai ribota ekrane matomo vaizdo dalis, kuri turi aiškią paskirtį ir kurią galima atverti, užverti, keisti
dydį, aktyvumą, poziciją kitų langų ar ekrano atžvilgiu.
Tile - gretutiniai langai. Ši komanda atvertus redagavimo langus išdėsto taip, kad jie visi matytųsi ekrane
vienas greta kito.
Cascade - pakopiniai langai. Ši komanda visus atvertus redagavimo langus išdėsto taip, kad jie būtų vienas
ant kito, pakopomis, tačiau matytųsi jų antraštės.
Close all - užverti visus - užveriami visi langai.
Close - užverti - užveria aktyvųjį langą.
Refresh display - atstatyti ekrano vaizdą. Ši komanda atkuria integruotos terpės standartinį ekrano vaizdą,
jeigu įvairios programos jį buvo pakeitusios.
Size/Move - lango dydžio keitimas klavišais (Ctrl + F5). Nurodžius šią komandą žymeklio krypties klavišais
galima keisti lango dydį.
Zoom - lango dydžio keitimas pele (F5). Pasirinkus komandą Zoom viršutiniame dešiniajame kampe
pasirodo rodyklė ()) ties ja nustatę pelės žymeklį ir spustelėję kairįjį pelės klavišą, galime padidinti langą iki
maksimalaus. Jei viršutiniame dešiniajame kampe yra φ rodyklė, tai reiškia, kad, esamas langas yra maksimalus,
pasirinkę šią rodyklę pele, galime tik sumažinti šį langą iki anksčiau buvusio.
Next - tolesnis (F6). Ši komanda suaktyvina tolesnį langą, t. y. tą, kurio numeris yra vienetu didesnis negu
to, kuris buvo aktyvus. Jei atvertas paskutinis langas, tai aktyviu taps langas, kurio numeris lygus 1.
Previous - ankstesnis (Shift+F6). Ši komanda suaktyvina ankstesnį langą, t. y. tą, kurio numeris yra vienetu
mažesnis negu to, kuris buvo aktyvus. Jeigu aktyviojo lango numeris buvo 1, tai ši komanda atvers langą su
didžiausiu numeriu.

List - langų sąrašas. Šia komanda atveriamas dialogo langas (Window List), kuriame yra langų sąrašo
laukas. Jame išvardijami visi atverti langai. Pasirinkus bet kurią bylą iš sąrašo, jos langas tampa aktyviu. Jeigu
pasirenkamas užvertas langas, tai jis atveriamas įkeliant į jį bylą, kuri buvo jame prieš užveriant langą.

Help grupės komandos
Turbo Paskalio integruota terpė turi puikų žinyną (Help). Jame pateikiamas išsamus integruotos terpės bei
Turbo Paskalio kalbos aprašas. Žinyną sudaro langas (puslapiai), kiekvienas iš jų pateikia bazinio žodžio,
procedūros, funkcijos ar kitos konstrukcijos arba integruotos terpės elemento aprašymą.
Norint sužinoti apie žymekliu rodomą konstrukciją, reikia paspausti klavišų porą Ctrl 4- F l .

2 priedas. Standartinės Paskalio procedūros ir funkcijos
Pateiksime ne visas Paskalio ir Turbo Paskalio standartines procedūras bei funkcijas, esančias modulyje
S y s t e m (kurio aprašyti nereikia), o tik svarbiausias, kurios vartojamos vadovėlyje arba gali būti reikalingos
užduotims atlikti.

Aritmetinės funkcijos
function Abs (X): argumento tipas;
Rezultatas yra argumento X absoliutinė reikšmė. Rezultato tipas sutampa su argumento
tipu ( i n t e g e r arba r e a l ) ,
function ArcTan (X: real): real;
Skaičiuoja duoto argumento X arktangentą.
function Cos (X: real): real;
Skaičiuoja duoto argumento X kosinusą,
function Exp (X: real): real;
Skaičiuoja duoto argumento X eksponentę,
function Frac (χ: real): real;
Grąžina duoto argumento X trupmeninę dalį.
function Int (x: real): real;
Grąžina duoto argumento X sveikąją dalį.
function Ln (χ: real):
real; duoto argumento X natūralųjį logaritmą.
Skaičiuoja
function Pi: real;
Grąžina reikšmę 3.1415926535897932385.
function Sin (x: real): real;
Skaičiuoja duoto argumento X sinusą,
function Sqr (χ): < toks tipas, kaip parametro X >;
Skaičiuoja duoto argumento X kvadratą,
function Sqrt (X: real): real;
Skaičiuoja duoto argumento X kvadratinę šaknį.

Atminties dinamiško paskirstymo paprogramės
procedure Dispose (var P: pointer [, destructor]);
Išlaisvina dinamiškai išskirtą atmintį,
procedure FreeMem (var P: pointer; kiekis: word);
Išlaisvina nurodyto dydžio dinamiškai išskirtą atmintį,
procedure GetMem (var P: pointer; kiekis: word);
Išskiria nurodyto dydžio dinaminę atmintį,
procedure New (var P: pointer [, Pradžia: constructor]);
Išskiria dinaminę atmintį,
function MaxAvail: longint;
Nustato didžiausio vientiso dinaminėje atmintyje esančio bloko apimtį,
function MemAvail: longint;
Suskaičiuoja visų neužimtų dinaminėje atmintyje blokų apimtį.

Vykdymo valdymo procedūros
procedure Exit;
Nutraukia aktyvaus programinio bloko darbą,
procedure Halt [(Kodas: word)];
Nutraukia programos vykdymą,
procedure RunError [(KlaidosKodas: byte)];
Nutraukia programos vykdymą ir formuoja klaidos kodą.

Duomenų mainų paprogramės
procedure Assign (var BylosKintamasis; BylosVardas);
Prijungia išorinę bylą.
function Assigned (var P): boolean;
Analizuoja, ar rodyklės tipo kintamasis apibrėžtas N I L .
procedure CbDir (KatalogoVardas: string);
Pakeičia aktyvųjį katalogą naujai nurodytu,
procedure Close (var BylosKintamasis);
Uždaro atvertą bylą.
function Eof [(var BylosKintamasis: text)]: boolean;
Analizuoja tekstinės bylos pabaigą,
function Eof [(var BylosKintamasis)]: boolean
Analizuoja tipinės arba betipės bylos pabaigą,
procedure Erase (var BylosKintamasis);
Naikina išorinę bylą.
function FilePos (var BylosKintamasis): longint;
Randama bylos aktyvaus elemento pozicija,
function FileSize (var BylosKintamasis): longint;
Randamas bylos elementų skaičius,
procedure GetDir (TvarkyklėsNumeris: byte; var Eilutė: string);
Grąžina aktyviojo katalogo vardą nurodytoje tvarkyklėje,
function IOResult: integer;
Grąžina paskutinės įvedimo ar išvedimo operacijos pabaigos kodą. Jeigu nebuvo klaidų,
funkcijos reikšmė lygi nuliui,
procedure MkDir (Eilutė: string);
Sukuria
katalogą.
procedure Rename (var
BylosKintamasis;
Naujas vardas);
Pakeičia išorinės bylos vardą,
procedure Reset (var BylosKintainasis [: file; Buferis: word]);
Atidaro bylą skaitymui,
procedure Rewrite (var BylosKintainasis [: file; Buferis: word]);
Atidaro bylą rašymui,
procedure RmDir (Eilutė: string);
Pašalina tuščią katalogą. Jeigu netuščias - vadinasi, klaida,
procedure Seek (var BylosKintamasis; N: longint);
Padaro aktyvų N-ąjį bylos elementą,
procedure TruncatePašalina
(var BylosKintamasis);
bylos elementus nuo aktyvaus iki bylos galo.

Numatytoji reikšmė . Grąžina atsitiktinį skaičių.1]. Grąžina argumento X baitų kiekį. Elementas: Tipas). esantį programos komandų eilutėje. ne didesnį už nurodytą ribą. pradedant baitu. . kurio adresą nurodo kintamasis X. function High (X) Grąžina didžiausią reikšmę iš kintamojo X reikšmių. procedure Inc (var X [. Jei riba nenurodoma. Nurodytą reikšmių skaičių surašo į atmintį. Numatytoji reikšmė . function ParamCount: word. function Swap (X): Sutampa_su_kintamojo_tipu.vienetas. Kiekis: word: Reikšmė). function Random [(Riba: word)]: Sutampa_su_kintamojo_tipu. didžiosiomis. Padidina kintamojo X reikšmę dydžiu N. jeigu reikšmė X yra nelyginė.Įvairios paprogramės procedure Exclude (var Aibė: set of Tipas: Elementas: Tipas). procedure Move (var Kl. function Hi (X): byte: Grąžina kintamojo X vyriausiojo baito reikšmę. Paruošia darbui atsitiktinių skaičių generatorių su pradine atsitiktine reikšme.vienetas. function Succ (X): Grąžina Argumento_tipas. Grąžina ankstesnę argumento reikšmę. procedure FillChar (var X. function Lo (X): byte. function Pred (X): Argumento_tipas. Grąžina komandų eilutėje nurodyto indekso parametro reikšmę. K2. Kopijuoja nurodytą skaičių baitų iš kintamojo Kl į K2. Grąžina mažiausią reikšmę iš kintamojo X reikšmių. function Odd (Χ: longint): boolean. function UpCase (Simbolis: char): char. Kiek: word). procedure Include (var Aibė: set of Tipas. Prie aibės prijungia naują elementą.. function ParamStr (Indeksas): string. function Low (X). T r u e . N: longint]). Sukeičia vyriausiojo ir jauniausiojo kintamojo baitų reikšmes vietomis. tai reikšmė bus intervale [0. Pakeičia raides (simbolius) Sekos paprogramės procedure Dec (var X [. Sumažina kintamojo X reikšmę dydžiu N. Iš aibės pašalina elementą. Grąžina parametrų skaičių. N: longint]). function SizeOf (X): integer. procedure Randomize. Grąžina kintamojo X jauniausiojo baito reikšmę. tolesnę argumento reikšmę.

Atidaro egzistuojančią bylą. Sujungia eilutes į vieną. Ieško eilutės pasikartojimo pradžios simbolių sekoje S. Simbolių seką S verčia skaičiumi V ( r e a l arba i n t e g e r ) . Klaidingo simbolio numeris grąžinamas kaip kodas. S: string): byte. Indeksas: integer. procedure Str (X [: Dydis [: Skaitmenys]]. Kiek: integer): string. sn]: string): string. Grąžina argumento adresą. function Seg (X): word. kuris nurodomas atskiromis dalimis. var S: string. var V. . s2. Grąžina DS registro reikšmę. Grąžina argumento adreso postūmio reikšmę. Formuoja rodyklę į nurodytą adresą. function EoLn [(var BylosKintamasis: text)]: boolean. ... function CSeg: word. function Pos (Eilutė: string. Vn]). procedure Insert (Eilutė: string. Nuo indeksu nurodytos vietos išskiria iš eilutės S nurodytą simbolių skaičių (arba iki galo). procedure Flush (var BylosKintamasis: text). Galima nurodyti formatą (analogija spausdinant su W r i t e procedūra). Grąžina SP registro reikšmę. Grąžina SS registro reikšmę. Darbo su eilutėmis paprogramės function Concat (sl [. Įterpia eilutę į S simbolių seką nuo nurodyto indekso. function DSeg: word. Grąžina eilutės S ilgį. Nuo indeksu nurodytos vietos pašalina iš eilutės S nurodytą simbolių skaičių (arba iki galo). procedure Read (BylosKintamasis. Postūmis: word): pointer. function Copy (S: string: Indeksas: integer. Grąžina CS registro reikšmę. var S: string). var Kodas: integer). Indeksas: integer). V2. Vl Į. Iš įvardytos bylos skaito kintamųjų reikšmes. function Ptr (Segmentas. Darbo su bylomis paprogramės procedure Append (var BylosKintamasis: text).Rodyklės ir adresų funkcijos function Addr (X): pointer. kad būtų galima ją papildyti gale.. Skaičių X paverčia simbolių eilute. function Length (S: string): integer. Užrašo į bylą buferyje likusius simbolius. procedure Val (S. Analizuoja bylos eilutės pabaigą. function Ofs (X): word. Grąžina argumento adreso segmento reikšmę function SPtr: word.. . procedure Delete (var S: string.. Kiek: integer): string. function SSeg: word..

procedure BlockWrite (var BylosKintamasis: file.. V2. Rezultatas . Vn])... var Rezultatas: word]). Grąžina nurodytą kodu simbolį... Grąžina nurodytos sekos elemento kodą.] Pl [. procedure Write (BylosKintamasis.. P2. . Pn]). V2. . Iš tekstinės bylos skaito kintamųjų reikšmes. Vl [.. . Iš tekstinės bylos skaito kintamųjų reikšmes.] Vl [. procedure Write ([var BylosKintamasis: text. kurio dydis nurodomas baitais. Pakeitimo (transformavimo) funkcijos function Chr (x: byte): char. jeigu po to bus bylos pabaiga. Praleidžia tarpus ir tabuliacijos ženklus ir grąžina T r u e . jeigu po to bus eilutės pabaiga. Pn]). Išskiria bylos kintamajam buferį. Darbo su netipinėmis bylomis procedūros procedure BlockRead (var BylosKintamasis: file.atmeta trupmeninę dalį. P2. . Vn]). procedure ReadLn ([var BylosKintamasis: text.. Rezultatas yra užrašytų baitų skaičius.. var Buferis. function Round (X: real): longint. eilutės pabaigos simbolius ir grąžina T r u e . var Buferis [. function SeekEoln [(var BylosKintamasis: text)]: boolean. Dydis: word]).procedure Read ([var BylosKintamasis: text. Kiek: word [.. function Ord (x): longint. Realųjį skaičių paverčia sveikuoju ( i n t e g e r ) . . var Rezultatas: word]).perskaitytų baitų skaičius. . Skaito iš netipinės bylos į buferį nurodytą baitų skaičių. . . I tipinę bylą surašo kintamųjų reikšmes. Į tekstinę bylą surašo argumentų reikšmes. procedure SetTextBuf (var BylosKintamasis: text. Kiek: word [. procedure WriteLn ([var BylosKintamasis: text.suapvalina. V2. tabuliacijos ženklus.. var Buferis. function SeekEof [(var BylosKintamasis: text)]: boolean. function Trunc (x: real): longint. Perrašo iš buferio į netipinę bylą nurodytą baitų skaičių. Vn]).] Pl [.. Realųjį skaičių paverčia sveikuoju ( i n t e g e r ) .. Praleidžia tarpus.] Vl [. [ tekstinę bylą surašo argumentų reikšmes.

TextColor(spalva: byte). WindMin Yl Xl Baito Nr.. Aktyvaus lango minimalios koordinatės. 0 . Užrašo į TextAttr simbolių spalvą. TextAttr : byte. Aktyvaus lango maksimalios koordinatės. Konstanta Reikšmė Spalva Black Blue Green Cyan Red Magenta Brown LightGray DarkGray LightBlue LightGreen LightCyan LightRed LightMagenta Yellow White 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Juoda Mėlyna Žalia Melsvai žalsva Raudona Violetinė Ruda Šviesiai pilka Tamsiai pilka Šviesiai mėlyna Šviesiai žalia Šviesiai melsvai žalia Šviesiai raudona Šviesiai violetinė Geltona Balta WindMin : word. Y2 X2 1 0 Procedūros ClrScr.3 priedas. Bito numeris 7 6 Prasmė Mirksėjimas Fono spalva 5 4 3 2 1 Simbolio spalva Fono spalvos gali būti tik pagrindinės: kodai 0.7.15. Simbolio spalvos gali būti visos leistinos: kodai 0. WindMax : word. Užrašo į TextAttr simbolių fono spalvą. TextBackground(spalva: byte). 1 0 WindMin Baito Nr. Išvalo ir nudažo aktyvų langą TextAttr nurodyta fono spalva.. Pagrindinės Crt bibliotekos priemonės Kintamieji Laikomos aktyvios spalvos.

P r o g r a m a v i m o elementai Čia surašytos rečiau naudojamos priemonės. Perkelia žymeklį į aktyviojo lango poziciją (x. TextColor (Red+Blink). Žodžių analizės funkcijos Lo ir Hi atskiria žodį sudarančių baitų reikšmes. Grąžina žodžio K i n t jaunesniojo baito reikšmę. Delay(laikas: word). Tai tolygu kreipiniui į procedūrą: Window(xl. Funkcijos Wherex: byte. Aktyviojo lango koordinačių reikšmes galima taip sužinoti: Xl := Lo(WindMin) +1. ReadKey: char. Y2). WindMax := (Y2-1) * 2 56 + (X2-1). Aktyviojo lango keitimas WindMin := ( Y l . Čia naudojamas tipų interpretavimo keitimo veiksmas.I ) * 256 + (X1-1). kol nepaspaudžiamas koks nors klavišas. x2. Paspausto klavišo simbolis. KeyFres sed: boolean. Tam gali būti panaudota funkcija ReadKey arba procedūra ReadLn. Stabdo veiksmus nurodytą laiko tarpą milisekundėmis. Užrašo į WindMin ir WindMax aktyviojo lango koordinates GoToXY(x. Praneša žymeklio eilutės numerį aktyviajame lange. Tai tolygu tokiems veiksmams: TextBackColor(Green ). Y2 := Hi(WindMax) +1. Dviejų baitų informaciją sujungti galima: Pirmasis būdas: Antrasis būdas: χ := 15 * 256 + 18. Pastaba. T e x t A t t r := G r e e n *16 + Red + Blink. Lango koordinatės kintamuosiuose WindMin ir WindMax saugomos vienetu sumažintos. kurios leidžia pagreitinti programos darbą. Praneša žymeklio stulpelio numerį aktyviajame lange. Hi(Kint: word): word. X2. y2: byte). X2 := Lo(WindMax) +1. . Grąžina žodžio K i n t vyresniojo baito reikšmę. b := 18. Y l .Window(xl. b: v a r X : word. Lo(Kint: word): word. i n f ( χ ) . t y p e i n f = r e c o r d a. yl. Aktyvių spalvų keitimas T e x t A t t r := S i m b o l i o F o n a s * 1 6 + S i m b o l i o S p a l v a + 1 2 8 . reikia pašalinti iš įvedimo buferio nuspausto klavišo reikšmę. i n f ( X ) . y: byte). Y l := Hi(WindMin) +1. WhereY: byte. a := 15. Reikšmė F a l s e tol. Reikšmė lygi 1518 b y t e end. Norint atstatyti funkcijos K e y P r e s s e d pradinę reikšmę F a l s e .y).

Ekrano atmintis Kompiuterio ekrane galime užrašyti 25 eilutes po 80 simbolių. begin χ := 4 5 .x]). o jo struktūra tokia pat.b := R e d end. baitas ( e k r a n a s f v i e t a ] ) . end. spalva. kurio adresas sutaptų su ekrano atminties adresu. simbolio vieta masyve skaičiuojama taip: vieta := ( Y ..I ) * 80 + X. kaip kintamojo TextAttr. Duomenys apie ekrano simbolius yra saugomi atminties zonoje. type var masyvas = array baitas = record ekranas χ. : masyvas 1.b Ord^R').. Pirmas baitas saugo vaizduojamo simbolio kodą. Pavyzdžiui: uses Crt. baitas (ekranas[y. у := 5. a := baitas (ekranas[y.2000] a. . type masyvas baitas var = array = record ekranas : masyvas vieta : word. Ekrano atmintį gali būti patogiau interpretuoti kaip dvimatį masyvą: program uses Pvz. : byte. Crt. Norint užrašyti simbolį ekrano taške (Χ. byte absolute end. b : of word. Simbolį aprašančio žodžio struktūra: Simbolis Spalvos 1 0 Baito Nr. fono spalva ir vieta ekrane. у [1. reikia sukurti žodžių masyvą. b : b y t e absolute of word. Nulinis baitas saugo spalvas. Jeigu dirbame ne visame ekrane. := R e d * 16 + Green. $B800:$0000. kurio koordinatės saugomos kintamuosiuose WindMin ir WindMax. Ekrane matysime žalią simbolį 'R' raudoname fone.Υ)..1) * 80 + Lo(WindMin) + X. Norint duomenis tiesiogiai rašyti į ekrano atmintį.80] a. $B800:$0000.x]). * 16 + Green. lokalines simbolio koordinates reikės perskaičiuoti: v i e t a := (Hi(WindMin) + Y . o lange.25. Ord('R'). [1. kurios adresas $B800:$0000. tai yra 2000 simbolių. Ekrano simbolį apibrėžia jo reikšmė. a := baitas (ekranasfvieta]).

Size: Longint. D o s E r r o r kintamojo reikšmė nulis rodo. procedure FindNext (var F: TSearchRec). Požymių kodų suma. u s e s Dos. . A t t r : Byte. Bylos dydis baitais. program Rasti. var D : SearchRec. 2 1 ] of B y t e . Ieško nurodytame arba aktyviajame kataloge P a t h bylos su nurodytomis savybėmis A t t r . } Kintamasis v a r DosError: i n t e g e r . Ieško sekančios iš eilės bylos pagal savybes. end. Kitos kodų reikšmės nurodo klaidą. Vartoja sistema. Name: a r r a y [ 0 . B y l ų tvarkymo procedūros ir funkcijos procedure FindFirst (Path: PChar. } Sukūrimo data ir laikas. kad nėra klaidos. Re- zultatas grąžinamas įrašo tipo kintamuoju F. . . Pavyzdys. 1 2 ] of C h a r . ar paieška buvo sėkminga. Pagrindinės Dos bibliotekos priemonės Dažniausiai vartojamos tokios bylų tvarkymui skirtos priemonės. Rezultatas grąžinamas įrašo tipo kintamuoju F. Attr: Word. ar paieška buvo sėkminga. nurodytas paskutiniame F i n d F i r s t kreipinyje. Konstantos Vardas Reikšmė Readonly Hidden SysFile VolumeID Directory Archive AnyFile $01 $02 $04 $08 $10 $20 $3F Tik skaitomos bylos Paslėptos bylos Sisteminės bylos Duomenų tomo žymė Katalogai Dar nearchyvuotos bylos Visos bylos Tipas type SearchRec = r e c o r d F i l l : a r r a y [ 1 . Reikšmė nulis (0) reiškia. } Bylos vardas su prievardžiu. { Saugo Dos klaidos kodą. var F: TSearchRec). Time: L o n g i n t . Supakuota forma. Spausdina ekrane aktyviajame kataloge esančių bylų su prievardžiu p a s vardus. D o s E r r o r kintamojo reikšmė nulis rodo. { { { { { Specialūs OS duomenys.4 priedas.

program Dabar. ' : ' . Populiariausios datos ir laiko procedūros procedure GetDate (var Year. Writeln ('Laikas: '. '/'. DayOfWeek: Word). kuri spausdina ekrane datą ir laiką. end. DosError D). '. Second. die. mėn. = O do begin Writeln FindNext (D. v a i . Day. PAS'. mėnesį. min. Month. (D). Pavyzdys. min. Grąžina operacinės sistemos laikrodžio laiką: valandas. A r c h i v e . . dal). minutes. sek. '/'. begin GetDate (met. dal). '/'. procedure GetTime (var Hour. var m e t . Grąžina operacinės sistemos saugomą datą: metus. sav : word. SeclOO: Word). sekundes ir sekundžių šimtąsias dalis. sek. d i e . Programa. end. min. mėn. vai. met. ':'. yra sav). d i e . mėn. sav). uses Dos. d a l : word. ':'. sek.begin FindFirst while (' * . Minute.Name). kitos dienos numeruojamos eilės tvarka). Writeln ('Dabar GetTime (vai. dieną ir savaitės dieną (sekmadienis žymimas nuliu.

Nustatoma linijų spalva (konstantos vardas arba kodas: 0. Spalvinimo klaida (Flood Fill). Galimos tipo ir storio reikšmės surašytos lentelėje. y). kol jų nepakeisime naujomis. y.15). Šrifto byloje yra klaidų. kurio nurodytos koordinatės (x. Tvarkyklei neužtenka atminties. Netinka grafiniam įrenginiui. Nesurastas grafinis įrenginys. Atkarpą nusako tokie parametrai: spalva. Šie parametrai nurodomi atskirai ir galioja visoms brėžiamoms atkarpoms tol. Tipas 0 1 2 3 4 Storis ištisinė linija punktyrinė linija ašinė linija taškinė linija vartotojo sukurta linija 1 3 3 normalus (vieno taško) storas (trijų taškų) . procedure SetLineStyle (tipas. Atminties patikrinimo klaida (Scan Fill). Jis naudojamas tik tuo atveju. Grafikos klaida Grafinio įvedimo ar išvedimo klaida. Tokios tvarkyklės nėra Taškai procedure PutFixel (χ. tipas ir storis.. Nurodomos linijų charakteristikos. spalva: word). y) ir spalva. Pagrindinės Graph bibliotekos priemonės Darbo grafiniu režimu klaidų sąrašas Paaiškinimas Konstanta ir jos kodas grOK grNoInitGraph grNotDetected grFiIeNotFound grIvalidDrivers grNoLoadMem grNoScanMem grNoFloodMem grFontNotFound grNoFontMem grInvalidMode grError grIOerror grInvalidFont grInvalidFontNum grInvalidDeviceNum O -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 Klaidų nėra. Tai šešioliktainis skaičius. Ekranas neparuoštas darbui grafiniu režimu (reikia InitGraph). procedure SetColor (spalva: word). kodas. Tvarkyklės byloje yra klaidų. Tokiu numeriu šrifto bylos nėra. Linijos Linija ekrane traktuojama kaip tiesės atkarpa.5 priedas. Ekrane piešiamas spalvotas taškas. kai nurodomas linijos tipas 4. Ją nusako galų taškų koordinatės (x. Tuomet rašomas tas kodas. Trūksta atminties šriftui saugoti. Nerasta šrifto byla. storis: word). kurį sukūrė vartotojas. Esamai tvarkyklei nurodytas neteisingas darbo režimas. Kodas kreipinyje rašomas O (nulis). Tvarkyklės byla nerasta.

kokia buvo). Tai linijos tipo aprašas. у: integer. rx. spindulys r . yl.raštui naudojama spalva. Nurodome kokį raštą ir kokią spelvą naudosime. kl. Nubrėžia stačiakampį. procedure LineTo (xl. kurio centras yra taške (x. Nubrėžia apskritimo lanką. kurio pradžios kampas yra k l . y: integer.Kodas Kodas naudojamas tuomet. k l . tuomet nurodome tipą 12. y). o pabaigos . procedure Arc (χ.lanko pradžios kampas. ry: word). y). dy: integer). Geometrinės figūros. tuomet raštu bus padengta išorinė figūros dalis neliečiant vidaus. o vertikalia . procedure LineRel (dx. Jeigu norime naudoti savo sukurtą raštą. o jeigu O. Figūros centras yra taške (x. Pavyzdžiui: 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 1 1 0 0 1 1 0 1 0 1 SFFFF SAAAA SF249 procedure Line (xl. d y nurodo per kiek pasikeičia pradinio taško (x. x2. y2: integer). r: word). г: word). Iš taško. Žymeklis perkeliamas į ekrano vietą. y: integer. jos parametrai nurodyti anksčiau. brėžama linija į tašką ( x l .k2. Nubrėžia apskritimą. kuris telpa žodyje iš 16 bitų. procedure MoveTo (χ. kl. y) ir figūros kontūro spalvą. Figūrų užpildymo raštai procedure Rectangle (xl. к2. spalva: word). Užpildymo raštas procedure SetFillPattern (savo_raitas: FillPatternType. Spindulys horizontalia kryptimi yra r x . Jeigu taškas bus uždaros figūros išorėje. spalva: word). Jeigu bito reikšmė 1. tik dx. Parametru s a v o _ r a š t a s nurodomas programuotojo sukurtas raštas. к2. tik dx. tuomet bus užpildytas plotas ir išorėje. procedure Ellipse (χ. procedure Circle (χ. procedure FloodFill (χ. yl: integer). tuomet lieka fono spalva (tokia. Bus užpildomas visas plotas nuo nurodyto taško iki nurodytos spalvos linijos (kontūro). KontūroSpalva: word). kurio centras yra taške (x. Kampai nurodomi laipsniais pradedant skaičiuoti nuo horizontalios linijos prieš laikrodžio kryptį. Vienas iš esančių dvylikos raštų nurodomas užrašant jo numerį: 0-11. y) koordinatės. kur yra žymeklis. y2: integer). y). kai nurodomas tipas 4. yl. Nurodome bet kokį tašką figūros viduje (x. Nubrėžia atkarpą tarp nurodytų dviejų taškų. procedure SetFillStyle (raitas. . o parametru s p a l v a . Analogiška L i n e T o . tuomet naudojama taško spalva. d y nurodo per kiek pasikeičia pradinio taško (x. procedure MoveRel (dx. y2). kurią nusako taškas (x. o dešiniojo apatinio kampo koordinatės (x2. kurio viršutinio kairiojo kampo koordinatės ( x l .r y . y) koordinatės. o spindulys r. y). y: integer). y l ) . Jį sudaro atkarpos fragmentas. x2. Nubrėžia elipsės lanką. k2 . dy: integer). Jeigu figūra bus atvira. y: integer.lanko pabaigos kampas. Analogiška MoveTo. y l ) . Žymeklis grafiniame ekrane nematomas.

y2: integer): word. Vykdomi perskaičiavimai: SimbolioPlotis = (SimbolioPlotis SimbolioAukštis = (SimbolioAukštis * A x ) / Bx. kurioje yra (nematomas) žymeklis (nuo aktyvaus taško). tekstas: string).10]. Vektoriniams šriftams [1. y2: integer. x2.4]. var Adresas: pointer). dydį baitais. x2.. o apatinio dešiniojo kampo . Bx.. * A y ) / By.4] dydžiai gali būti nurodomi procedūra S e t U s e r C h a r S i ze. Parametro Kaip reikšmė n u r o d o p e r k ė l i m o b ū d ą : CopyPut. procedure PutImage (χ. y2). Jeigu parametro riba reikšmė yra True.. Tokiu atveju koordinatės gali būti neigiamos (lango viršuje ir kairėje pusėje).(x2. apatinio dešiniojo kampo . procedure GetImage (xl. yl. Piešiamas gretasienis. Vektorinio šrifto proporcijos. Pirmi šeši baitai skirti užrašyti išsaugomos srities parametrams: pločiui ir aukščiui. Stačiakampio viršutinio kairiojo kampo koordinatės (xl. Kaip: word). tuomet leidžiama piešti tik lango viduje.(x2. z: word. tuomet gretasienio viršaus stačiakampis nebus nubrėžtas. Vaizdas. Nurodomos teksto spausdinimo charakteristikos. y 2 ) koordinatėmis. y2: integer.kairiojo viršutinio kampo ir (x2. y2) dešiniojo apatinio kampo. yl) ir dešiniojo apatinio kampo (x2. riba: boolean). Stačiakampio lango koordinatės: (xl. yl). y). Linijų spalvas nurodome su SetColor. jeigu True. y: integer. Simbolių eilutė tekstas spausdinama nuo tos vietos ekrane. Ay. kryptis. var Adresas: pointer. Jeigu kintamojo riba reikšmė yra False. x2. yl) . y). nurodomą rodykle Adresas. y2: integer). x2. Piešinio dalys. procedure SetTextStyle (šriftas. Simbolių eilutė tekstas spaudinama ekrane pradedant nurodyta vieta (x. tuomet bus nubrėžtas. yl. kurios viršutiniojo kairiojo kampo koordinatės (x. procedure Bar3d (xl. Stačiakampis be ribojančių linijų ir užpildytas aktyvia spalva. viršus: boolean). kuris iš dinaminės atminties. A n d P u t 1 N o t P u t . kurio trečia koordinatė yra z (linija brėžiama 45°). y: integer. formą su SetLineStyle. yl. dydis: word). y2: integer. Nurodytos koordinatėmis stačiakampės ekrano srities (kaip ir ImageSize) vaizdą užrašo i atmintinės sritį. kryptis O (horizontali) arba 1 (vertikali) ir simbolių dydis iš intervalo [1. procedure SetUserCharSize (Ax. Judesių programavimas function IinageSize (xl. Priekinė figūros dalis bus užpildyta (pilnavidurė). procedure OutText (tekstas: string). yl). By: word). yl. o kitos dalys tuščiavidurės. tuomet piešiama ir už lango ribų. Grafiniai langai procedure SetViewPort (xl. šriftai procedure OutTextXY (χ. XorPut. Tekstas. nurodytos kairiojo viršutinio kampo (xl. nupjaunamos. perkeliamas į ekrano vietą. x2. Suskaičiuoja stačiakampės ekrano srities. Stačiakampio viršutinio kairiojo kampo koordinatės (xl. OrPut. Šrifto numeris šriftas iš intervalo [0. Jeigu kintamojo viršus reikšmė yra False.Pilnavidurės figūros procedure Bar (xl. y2). yl. kurios netelpa lange. kurios rodyklė Adresas. .

procedure SetAllPalette (var P: PaletteType). string). end. S " . B y l o s V a r d a s ) . ribose. Tvarkyklė Režimas (konstanta) Ekrano dydis (tšk. procedure var F : n VaizdasByloje (var S . BylosVardas . : word. n). n). kuri ekrane. (F. . n ) . 1). BlockRead Close (F. procedure VaizdasSaugomasByloje (var : word.paletės lentelės numeris. BylosVardas var F : n { Rodyklė į dinaminėje atmintyje esantį paveikslą. file. file. { Paveikslo dydis baitais } S : pointer. (F). pavyzdžiui. Nr . B l o c k R e a d Close Reset (F. B y l o s V a r d a s ) . nurodytu. Keičiamas grafinio ekrano režimas tos pačios grafinės tvarkyklės. kuriame atliekami visi veiksmai.) Spalvų skaičius Puslapių skaičius EGA EGALo=O EGAHi=I VGALo=O VGAMed=I VGAHi=2 IBM8514Lo=0 IBM8514Lo=l 640 x 200 640x350 640 x 200 640x350 640x480 640x480 1024x768 16 16 16 16 16 256 256 4 VGA IBM8514 2 4 2 1 1 1 Paletė procedure SetPalette (Nr: word. Reset (F. begin Assign n (F. Pakeičia visą aktyvią paletę nauja palete nurodyta kintamuoju P. end. pointer. Norint panaudoti taip išsaugotą vaizdą. (F). S " . n : } string). s p . 1). taip. begin Assign (F. : word. reikia veiksmus atlikti atvirkščia seka. (F). Nurodytas puslapis tampa aktyviu.Figūrų vaizdus galima saugoti bylose. := F i l e S i z e G e t M e m (S.spalvos kodas. Nurodytas puslapis tampa matomu procedure SetActivePage (Puslapis: word). procedure SetVlsualPage (Puslapis: word). kaip parodyta procedūroje V a i z d a s B y l o j e . Į spalvų masyvo paletėje vietą Nr įrašo spalvos kodą s p . Darbo režimų perjungimas galimas tik buvo nurodyta G r a p h l n i t . procedure SetGraphMode (Režimas: integer). sp: shortint).

BlueValue: integer). shortint. Gauname aktyvios paletės kopiją kintamajame P. procedure SetRGBPalette (SpNr. o kiti parametrai nurodo spalvos pagrindinių komponentų reikšmes. Gauname standartinės paletės kopiją kintamajame P. C o l o r s : a r r a y [O. Lauke s i z e yra saugomas aktyvioje paletėje esančių spalvų skaičius. type PaletteType = record Size : byte. Čia SpNr spalvos numeris. . Kiekviena spalva gaunama trijų bazinių spalvų: raudonos.procedure GetPalette (var P: PaletteType). Tik IBM8514 turi galimybę dirbti su 255 spalvomis. Masyvas C o l o r s aprašo spalvų tvarką paletėje. GreenValue. Konstanta M a x C o l o r s = 15 nurodo didžiausią galimą spalvos kodo reikšmę.MaxColors] of end. procedure GetDefaultPalette (var P: PaletteType). Kiekviena tvarkyklė leidžia naudoti skirtingą spalvų skaičių. žalios ir mėlynos pagrindu. RedValue. Šią procedūrą galima naudoti tik IBM8514 ir VGA tvarkyklėms..

. procedūros vardas sutampa su kintamojo vardu ir pan. Vardas neaprašytas arba tai gali būti neteisingai parašytas Paskalio žodis. 8 String constant exceeds line. Toje programos vietoje turi būti vardas. Gali nebūti komentarų pabaigos žymės. Aktyviajame kataloge byla nerasta. 11 L i n e t o o long. Kompiliatoriaus pranešimai 1 O u t of memory. Dažna klaida yra simbolių eilutės pradžioje neparašytas apostrofo simbolis. o b j e c t . programos ir kt. kurie tiesiogiai siejasi su knygos medžiaga. (CONFIG. kuris nurodytas to tipo byloms saugoti. Neteisingas bylos vardas arba kelias iki bylos klaidingas. 3 Unknown identifier. Jos nėra kataloge. Toks vardas jau yra programoje. 13 Too many o p e n files. Tai gali būti neparašytas apostrofo simbolis eilutės gale arba simbolių eilutė tekste parašyta keliose eilutėse. Per daug atidarytų bylų. Buvo stengtasi atrinkti tuos pranešimus. 4 Duplicate identifier. Diske nėra vietos. Leidžiama iki 126 simbolių. 15 F i l e n o t found. 16 D i s k full. Turbo Paskalio klaidų pranešimai Čia pateikiami pagrindiniai kompiliatoriaus ir programos vykdymo metu išvedamų klaidų pranešimų paaiškinimai. ar visos konstrukcijos. Toje programos vietoje turėtų būti parašytas tipo vardas.6 priedas. 5 Syntax error. Nėra bylos pabaigos požymio e n d . kurio vardas sutampa su procedūros. 6 Error in real constant. Tai gali būti kintamasis. Galbūt tai rezervuotas Paskalio žodis. Kompiliatoriaus darbui nepakanka atminties. 2 Identifier expected. Neteisingai parašytas sveikasis skaičius. kad sistemoje nurodytas leistinas bylų skaičius per mažas name. u n i t ) . kurioms privalu turėti pabaigos žymę e n d . Reikia patikrinti. vardu. 7 Error in integer constant. skyriklis. 14 I n v a l i d f i l e Gali būti. c a s e . ją turi ( r e c o r d . kintamasis du kartus aprašytas. ar teisingai sudėti operatoriniai skliaustai b e g i n . Programos eilutė per ilga. Sintaksinė klaida. kintamasis. .SYS). Neteisingai parašytas realusis skaičius. e n d . . Per daug simbolių simbolinėje eilutėje. Tai neteisingai parašytas Paskalio žodis. 12 T y p e i d e n t i f i e r expected. 10 U n e x p e c t e d e n d o f file.

expected. Turi būti i n t e g e r arba r e a l tipo konstanta. 20 V a r i a b l e identifier expected. 30 I n t e g e r c o n s t a n t expected. 35 L a b e l i d e n t i f i e r expected. Turėtų būti išvardijamojo tipo reiškinys. Turėtų būti i n t e g e r 39 O r d i n a l e x p r e s s i o n tipo reiškinys. masyvo indekso tipai neleistini. Neteisingai nurodytas eilutės s t r i n g ilgis. 38 I n t e g e r e x p r e s s i o n expected. Čia turėtų būti b e g i n .255]. 32 I n t e g e r o r r e a l constant expected. Gali būti visi paprasti tipai. Toje vietoje turėtų būti kintamojo vardas. 25 I n v a l i d s t r i n g Tai turi būti atkarpa [0. pavyzdžiui. Turėtų būti b o o l e a n 41 O p e r a n d t y p e s do n o t Neleistini veiksmai. 37 END e x p e c t e d . 21 E r r o r in type. Žymės vardas blogas arba neaprašytas. expected. eilutės. Turi būti intervale [1. daugiau kaip 256 reikšmes. turintis ne length.. Nesuderinti tipai parašytoje konstrukcijoje. .17 I n v a l i d c o m p i l e r directive. Struktūrinis duomenų tipas viršija 65535 leistinus baitus. Funkcijos rezultato tipas neteisingas.. match. struktūros ir rodyklės tipai toje vietoje neleistini. 27 I n v a l i d s u b r a n g e b a s e type. Turėtų būti i n t e g e r 31 C o n s t a n t tipo konstanta.255] arba vardinis tipas. eilutės ir rodyklės. Atkarpos apatinė reikšmė didesnė už viršutinę. 22 S t r u c t u r e too large. 28 L o w e r b o u n d > t h a n u p p e r bound. Neteisingai parašyta arba duota nuoroda kompiliatoriui. Aibės duomenų tipas per didelis. Turi būti konstanta. Būtinas vardinis tipas. Tipo aprašas negali prasidėti tuo simboliu. 29 O r d i n a l type expected. 23 S e t b a s e t y p e o u t o f range. kreipiniuose į paprogrames (faktinių ir formalių parametrų tipai skiriasi). 40 B o o l e a n e x p r e s s i o n expected. 18 Too many files. tipo reiškinys. Neleistina atkarpa bazinio tipo atžvilgiu (bazinis tipas neteisingas). 26 T y p e mismatch. 3 6 BEGIN e x p e c t e d . Programos arba programinio modulio kompiliavime naudojama per daug bylų. priskyrimuose. Realus. 34 I n v a l i d function result type. Čia turėtų būti e n d .

Dalyba iš nulio negalima. Bylos tipas neatitinka nurodyto veiksmo. Leistinas 65520 baitų. 58 TO o r DOWNTO e x p e c t e d . Kompiliatoriaus stekas perpildytas. 66 S t r i n g v a r i a b l e expected. 71 I n t e r n a l stack overflow.. 55 INTERFACE expected. be nurodytų. du moduliai ( u n i t ) kreipiasi vienas į kitą. Programinio modulio u n i t vardas (. nurodytas sakinyje u s e s . Tai gali būti dėl per didelio sakinių i f vienas kitame. 62 D i v i s i o n b y zero.42 E r r o r in expression. r e a l . Betipėms byloms ir kintamiesiems neleistinas priskyrimas. 61 I n v a l i d typecast. Skaityti iš tekstinės bylos (klaviatūros) galima tik i n t e g e r . Gali būti praleistas operacijos ženklas. tekstinei bylai taikoma S e e k . daug ciklų cikle ir pan. 69 U n i t name m i s m a t c h . Programos arba modulio kodas per didelis. t p u ) . Reikia iš naujo kompiliuoti. Parašytas vardas nėra r e c o r d ar o b j e c t lauko pavadinimas. Pvz. Negalima įvesti arba išvesti esamo tipo kintamojo reikšmės. c h a r ir s t r i n g tipo reikšmes. Turbo Paskalyje. 67 S t r i n g e x p r e s s i o n expected. Neleistinas modulio panaudojimas. Turėtų būti žodis o f . 68 C i r c u l a r u n i t reference. 64 C a n n o t r e a d o r w r i t e v a r i a b l e s of t h i s Pvz. 54 OF e x p e c t e d . Turėtų būti s t r i n g tipo reiškinys.. Skelkite programą ar modulį bent į dvi dalis. Turėtų būti žodis do. 44 F i e l d i d e n t i f i e r expected. Funkcijos vardui galima priskirti reikšmę tik funkcijoje. Tipų nesuderinamumas. Objektinė byla per didelė. tipinei bylai taikoma procedūra R e a d L n arba type. 63 I n v a l i d file type. 50 DO e x p e c t e d . Nėra i n t e r f a c e dalies modulio u n i t struktūroje. Neteisingas reiškinys. Modulio ( u n i t ) tekstas buvo pakeistas. 45 O b j e c t f i l e too large. dar galima b o o l e a n tipo kintamųjų reikšmes. nesutampa su modulio vardu. Turėtų būti žodis t h e n . . 43 I l l e g a l assignment. Turėtų būti s t r i n g tipo kintamasis. 57 THEN e x p e c t e d . Išvesti į bylą (ekraną). 70 U n i t v e r s i o n mismatch. Turėtų būti žodis t o arba d o w n t o . W r i t e L n . 48 Code s e g m e n t t o o large. OBJ tipo bylos negali viršyti 64k.

Praleistas simbolis "[" arba "(. Praleistas simbolis ")". 88 "(" expected. т р и gali būti sukurta su kita Turbo Paskalio versija. 93 "]" o r " . 76 C o n s t a n t o u t of range. Modulio u n i t byla . 73 I m p l e m e n t a t i o n expected. . 92 *[* o r "(·" expected.)". Sakinio c a s e reiškinio tipas ir konstantų tipas skirtingi. Gali būti. 74 C o n s t a n t a n d c a s e t y p e s d o n ' t match. Praleistas simbolis ". Gali būti. Praleistas simbolis "]" arba ". · expected. Reikia kompiliuoti tai versijai.". Turi būti įrašo arba objekto tipo kintamasis. Per daug kintamųjų. Praleistas simbolis ". 75 R e c o r d o r o b j e c t v a r i a b l e expected. 97 I n v a l i d FOR c o n t r o l variable." 95 « . 85 expected. Praleistas simbolis ":=". Praleistas simbolis ":".". " expected. Modulyje ( u n i t ) nėra i m p l e m e n t a t i o n dalies arba tik žodžio. kad globaliųjų kintamųjų užimama atmintis viršija 64k arba lokaliųjų kintamųjų apimtis didesnė kaip 64k. . Praleistas simbolis "(". Praleistas simbolis ". 89 *)* expected. 9 1 ":=" expected. kad konstanta neatitinka kintamojo ar parametro leistinų reikšmių intervalo. Praleistas simbolis ". su kuria dirbama. 79 I n t e g e r o r r e a l expression expected. Turėtų būti bylos tipo kintamasis. Konstantos reikšmė turi būti leistinų reikšmių intervale. Praleistas programinio modulio žodis u n i t . Reiškinio rezultato tipas turi būti i n t e g e r arba r e a l tipo. Ciklo f o r parametras turi būti diskretinio tipo. ) " expected. 86 ":" expected. 84 UNIT e x p e c t e d ." expected. Praleistas simbolis "=". 77 F i l e v a r i a b l e expected. 90 " = " expected.". 94 " ." 96 Too many variables.72 U n i t file format error.. 87 ".

104 O r d i n a l v a r i a b l e expected. Pvz. arba i n t e g e r . bet nėra. 134 E x p r e s s i o n incorrectly terminated. 108 O v e r f l o w i n a r i t h m e t i c operation. Parašytas simbolis negali būti vartojamas to sakinio pirmuoju simboliu. W h i l e o r R e p e a t statement. Turi būti s t r i n g tipo konstanta. kuris nėra įrašo tipo ir pan.. Standartinės procedūros B r e a k ir C o n t i n u e gali būti panaudotos tik cikluose. 106 C h a r a c t e r e x p r e s s i o n expected.98 I n t e g e r v a r i a b l e expected. Aritmetinio reiškinio rezultatas nepatenka į leistinų reikšmių l o n g i n t intervalą -2147483648.2147483647. kiek telpa į 64k. Kompiliatorius leidžia apie 24k. parašytos i m p l e m e n t a t i o n srityje arba toliau. 123 Too many symbols. Čia negalima vartoti bylų. 121 I n v a l i d qualifier. Procedūros arba funkcijos antraštė parašyta i n t e r f a c e srityje neatitinka antraštės. Įrašo tipo konstantoje laukai turi būti rašomi įrašo apraše esančia tvarka. Leidžiama turėti tiek. Programoje arba modulyje ( u n i t ) yra per daug vardų. Bandoma indeksuoti kintamąjį. 112 CASE c o n s t a n t o u t of range. Tikslinga sakinių grupę skaidyti į dalis. 133 C a n n o t e v a l u a t e this expression. apiforminant jas procedūromis. arba c h a r leistiname reikšmių intervale. . konstanta. t. 12 6 F i l e s m u s t b e v a r parameters. f o r w a r d atveju. 100 S t r i n g length mismatch. Bylos tipo parametrai turi būti kintamųjų tipo. 99 F i l e s types are not allowed here. Negalima suskaičiuoti reiškinio. 102 S t r i n g c o n s t a n t expected.. 103 I n t e g e r o r r e a l v a r i a b l e expected. Programa taps struktūrizuota ir aiškesnė. Sakinio c a s e konstantos turi būti w o r d . 137 S t r u c t u r e d v a r i a b l e s a r e n o t a l l o w e d here. Turi būti c h a r tipo reiškinys. Neleistini veiksmai su struktūrinio tipo kintamaisiais. Simbolių eilutės konstantos ilgis neatitinka simbolių masyvo ilgio. Tipinės konstantos negali būti bylos tipo. Pvz. Sakinių grupė per didelė. Turėtų būti sakinio arba reiškinio pabaiga. 124 S t a t e m e n t p a r t too large. kurioje panaudota funkcija S i n . aprašomi žodeliu v a r . y.. 109 No e n c l o s i n g F o r . Turi būti vardinio tipo kintamasis. Turi būti i n t e g e r arba r e a l tipo kintamasis. arba nurodyti laukus kintamajam. kuris nėra masyvas. bandoma atlikti neleistinus veiksmus su visa struktūra. 1 0 1 I n v a l i d o r d e r i n g of fields. Turi būti i n t e g e r tipo kintamasis. 131 H e a d e r d o e s n o t m a t c h p r e v i o u s definition. 113 E r r o r in statement.

Procedūroje RmDir directory. Kelias į katalogą. 145 Too many n e s t e d scopes. Programos vykdymo metu galimi klaidų pranešimai 1. F i l e n o t open f o r Byla neatidaryta. Per daug konstrukcijų. nurodyta. . 4. input. 104. Negalima (gal uždrausta sistemoje?) atidaryti bylą skaitymui ar rašymui. File access files. w i t h viduje daug kitų w i t h . gal byla buvo atidaryta rašymu: < и к я и к b>ia ū>diroma tik rašymui arba skaitymui). No m o r e files. negu senoji byla (procedūra Rename). Path not found. įraše per daug įrašų. Cannot rename a c r o s s d r i v e s . Dažniausiai pasitaiko tada. Negalima suteikti bylai naują vardą. 146 F i l e a c c e s s denied. kad reikia pašalinti aktyvų katalogą. Per daug atidarytų bylų. nurodant kitą diską. Invalid driver number. vartojamų viena kitoje. 103. Disk r e a d error. Kreipinys į neegzistuojančią Dos funkciją. Tai bandymas su FindFirst arba FindNext rasti aktyviajame arba nurodytame kataloge bylą su nurodytais pavadinimo atributais. File not open. tokios bylos nurodytame kataloge nėra. Invalid f i l e access code. 101. kuriame turi būti reikalinga byla. Veiksmuose su dviem r e a l tipo kintamaisiais gautas rezultatas viršija leistinas ribas arba buvo dalyba iš nulio. Disk w r i t e error. found. R e n a m e ir E r a s e p r o c e d ū r o s . Bylos F i l e M o d e neteisinga reikšmė. Cannot remove e u r e n t 17. neteisingas. A p p e n d . 3. Reikia patikrinti. 102. kai diske nebėra vietos. Invalid 2. 15. Pranešimą formuoja A p p e n d arba R e s e t . 16. Klaida rašant į diską. Byla neatidaryta skaitymui. Pranešimas perduodamas kintamuoju DosError (modulis Dos). Neleidžiama pasinaudoti byla. denied.140 I n v a l i d floating-point operation. File not assigned. G e t D i r procedūroje vartojamas disko numeris neteisingas arba draudžiamas vartojimui. Too many o p e n 5. Pvz. Klaidą nustato Reset. 100. File not function number. 12. Klaida skaitant iš disko. Bylos kintamasis turi bylos vardą. u n i t sakinyje u s e s ir pan. Bylai nenurodytas vardas. 18.

Klaida duomenyse. ready. Heap o v e r f l o w error. Viršyti ribojimai. General Protection fault. P r i n t e r o u t of Sektoriaus diske nerasta. Nežinomas įrenginys. 205. Įrenginio klaida skaitant. Invalid floating point opration. ar neatjungtas diskų įrenginys. Hardware failure. Range c h e c k zero. Reikia patikrinti. Stack overflow 203. Disk seek error. Sector not found. Kreipiantis į diską nurodyta neteisinga struktūra. 159. D i v i s i o n by 2 01. Operacijose / . 216. Neteisingai parašytas skaičius. gal byla buvo atidaryta skaitymui (tekstinė byla atidaroma tik rašymui arba skaitymui. d i v .105. Veiksmuose su r e a l tipo duomenimis „dingo" eilė. 202. Floating point overflow. 158. 156. 106. Procedūra R e a d arba R e a d L n negali rastos simbolių sekos konvertuoti į skaičių. 206. 150. Klaida skaitymo įrenginyje (skaitymo galvutės blogai nustatytos). papildant bylą gale reikia atidaryti su Append). Disk i s write-protected. Neparuoštas darbui diskas. mod bandoma dalyti iš nulio. į kurį uždrausta rašyti. error. Bad d r i v e r e q u e s t 152. 151. 157. 154. . I n v a l i d numeric format. 207. Rezultatas bus lygus nuliui. Aparatūros trikis. Dinaminės atminties neužtenka. CRC e r r r o r in data. Spausdinimo įrenginyje nėra popieriaus. Patikrinti. 162. Bendri apsaugos režimo pažeidimai. 200. Veiksmų su r e a l tipo duomenimis rezultatas viršijo leistinas ribas. Steke nėra vietos. F i l e not open f o r output. 161. Neleistinas veiksmas su r e a l tipo duomenimis. Byla neatidaryta rašymui. error. Įrenginio klaida rašant. Praneša Dos. Drive not structure length. Bandoma rašyti į diską (diskelį). 160. Device w r i t e fault. Floating point underflow. Unknown m e d i a type. paper. Device read fault.

7 priedas.35 151 124 } 125 126 165 I I § 166 168 152 1 137 0 154 138 < » 139 156 141 V *143 » ό Č ό а δ 195 A 196 E O 212 X 199 227 228 215 245 e 231 247 232 ų 248 L ė Š 2 E Ū ϋ ė Ū 235 251 g< Ū 200 ^ 2 1 6 201 Ž 202 K /4 190 r 203 * 205 206 £6 191 244 б Ė A 189 243 č ę 204 3 ' 242 Č 1 175 211 226 241 n Ę198 О214 ę 230 0246 172 158 ^ 225 240 ή č '/4 188 173 N209 ą 224 N'210 194 187 ®174 208 F Š а 171 157 159 ^186 '170 —I 140 142 155 Š E A 185 R « 184 1 169 153 182 183 %0 TM © JE 127 180 t.93 D A ό к μ 197 229 M81 213 167 0 136 179 164 148 t 134 178 3 β O 79 161 147 131 Z 122 C 176 A 92 2 130 117 " 1 3 3 104 160 • W 105 144 ?? IO3 119 X h i B O CC V 102 A ? 115 t 9 129 U 8 92 94 7 S C \ 76 M S O 63 6 B 66 R 82 b 60 45 30 A L > 14 @64 5 ^207 1 217 218 219 220 233 234 249 Š 250 236 252 г V Ž Ž 1 Ž β 1 221 222 223 237 238 239 253 254 255 .12 €128 1. Simbolių lentelės Baltijos šalių Windows 1257 kodai 0 0 1 2 3 4 5 6 7 8 9 A B C D E F 1 0 2 16 32 ι 1 17 33 Il 2 3 4 5 34 18 19 20 21 # 35 $ % 36 37 & 6 22 38 I 7 8 9 23 24 25 4 3 39 ( 40 ) 41 0 1 2 3 4 5 6 7 8 9 48 49 50 51 52 53 54 55 56 57 * 10 11 12 13 26 42 58 + 27 28 43 5 29 ' 59 < 44 61 15 31 62 46 / ? 47 65 P % 80 Q8I C D 67 68 E 69 F 70 G 71 H I 72 73 J K 74 75 a 97 N T U V W X Y Z 98 83 84 85 86 87 88 89 [„ 90 77 78 8 P.13 r 99 d e f 100 101 114 116 ' 106 k 107 108 ] 93 m л n 109 110 145 118 120 У121 146 { 123 I ~ 95 111 ± 177 *162 "132 £ 163 149 150 ί.

Valdymo simboliai Kodo numeris 0 1 2 Nurodymas Klavišų programoje derinys Ctrl+@ Ctrl+A Λ Β 5 6 7 8 9 10 11 12 a F л G Λ A Ι L 13 15 16 17 18 19 20 21 22 Л ¥ • Cir/+E Φ Cfr/+F Cfr/+G Cfr/+H Cfr/+1 Cfr/+J Cfr/+K Cfr/+L Φ • • О ш ό 9 Ctrl+ M Jl О Р Cfr/+N Cfr/+O Cfr/+P R Ctrl+ Q Ctrl+ R t 14 л © Cfr/+B Ctrl+C Ctrl+D 3 4 Vaizdas ekrane л Cfr/+S XV rp Cfr/+T -i • IĮ Ctrl+ U § -v Cfr/+V — 23 24 A W Х Cfr/+W i Ctrl+X 25 a Y Cfr/+Y t I 26 A Z Cfr/+Z — > Cfr/+[ <— 27 28 29 30 31 127 Л /V XV •V л ? Ctrl+\ Ctrl+] Ctrl+ л Ctrl+_ Ctrl+Ί · - <—• A T Q Tarptautinė santrumpa Reikšmė NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF Tuščioji reikšmė Antrašės pradžia CR Vežimėlio grąžinimas SO SI DLE DCl DC2 DC3 DC4 NAK SYN ETB CAN EM SUB Nacionalinis registras ESC FS GS RS US DEL Teksto pradžia Teksto pabaiga Perdavimo pabaiga Klausimas Patvirtinimas Skambutis Grįžtis Horizontalioji tabuliacija Nauja eilutė Vertikalioji tabuliacija Naujas puslapis Lotyniškas registras 1-asis autoregistras 1-ojo registro valdymas 2-ojo registro valdymas 3-ojo registro valdymas 4-ojo registro valdymas Neigiama pažyma Sinchronizavimas Bloko pabaiga Anuliavimas Laikmenos pabaiga Keitimas 2-asis autoregistras Failų skirtukas Grupių skirtukas Įrašų skirtukas Elementų skirtukas Pašalinimas .

virpino dvigubus priebalsius. sukapoti pauzėmis ir atsikvėpimais. Žanas Polis Sartras „Žodžiai" . nepaaukodami dėl manęs nė kablelio. visai nesidomėdami manimi: kartais jie dingdavo. Šitie dainuojantys.. jie knibždėjo skiemenimis ir raidėmis. nosiniai. Iš jos lipo sakiniai. o kartais man jau būdavo viskas aišku.. kurie man kėlė baimę: tai buvo tikri šimtakojai. kupini nežinomų žodžių sakiniai žavėjosi patys savimi ir savo vingiais. Galų gale supratau: kalbėjo knyga. dar net nesuspėjus man jų suprasti. bet jie dar teberiedėdavo didingai lig pat galo. tęsė dvibalsius..

ISBN 9955-491-01-9 .