Vilniaus universitetas

Size: px
Start display at page:

Download "Vilniaus universitetas"

Transcription

1 PROGRAMAVIMO KALBŲ TEORINIAI PAGRINDAI Mokymo priemon bakalauro studijų programos Matematikos ir informatikos mokymas studentams Valentina Dagien Gintautas Grigas Vilniaus universitetas Matematikos ir informatikos fakultetas Matematikos ir informatikos metodikos katedra El. paštas: Vilnius,

2 Mokymo priemon je pateikiamos pagrindin s procedūrinio programavimo konstrukcijos, parodoma, kaip jos realizuojamos programavimo kalbose. Tikslas pad ti studentams susiformuoti sistemingą požiūrį į įvairias programavimo kalbas ir geriau orientuotis jų įvairov je. Akcentuojamos esmin s semantin s kalbų struktūros, išryškinami bendri įvairių kalbų semantikos bruožai, kurie dažnai būna užmaskuoti skirtingomis sintaksin mis struktūromis. Mokymo priemon skiriama informatikos ir su ja susijusių specialybių pedagoginių studijų studentams. Medžiaga d stoma taip, kad ją paj gtų suprasti skaitytojas, mokantys bent vieną procedūrinio programavimo kalbą (pvz., Paskalį, C). Ši mokymo priemon daugelį metų taikoma Matematikos ir informatikos fakulteto bakalauro studijų programos Matematikos ir informatikos mokymas III kurso studentams d stant informatikos didaktiką. Priemon numatyta kurso daliai. 2

3 Įvadas Programavimo kalbų gyvavimo amžius gana solidus įžengta į penktąjį dešimtmetį: Džono Bekaus (John Backus) vadovaujama grup 1954 metais sukūr pirmąją programavimo kalbą Fortraną (Fortran) ir jos transliatorių. Nuo to laiko iki šiol pasaulyje sukurta keli tūkstančiai programavimo kalbų bei jų transliatorių. Vienos kalbos paplitusios daugelyje šalių, vartojamos įvairiausiems uždaviniams spręsti, kitos egzistuoja tik vienoje ar kitoje šalyje, ar net vienoje įstaigoje, dar kitos taikomos tik specialiems, kartais net labai siauros srities uždaviniams spręsti. Tačiau daugelis programuotojų paprastai moka tik keletą programavimo kalbų, o dažniausiai netgi vieną arba dvi. Tuomet natūraliai kyla klausimas, ar verta nagrin ti, lyginti programavimo kalbas, jeigu daugumai programuotojų su daugeliu kalbų praktiškai neteks susidurti. Jei programavimo kalbas aptartume paviršutiniškai, tik apžvelgtume jų konstrukcijų įvairovę, tai iš tokios pažinties nebūtų didel s naudos nenaudojamų kalbų smulkius ypatumus greitai pamirštume. Visai kas kita, jeigu į programavimo kalbas žvelgtume sistemingai, klasifikuotume jas, aptartume pagrindinius kiekvienos paradigmos realizavimo kelius, išanalizuotume juos tose kalbose, kurios turi konstrukcijas su būdingiausiomis savyb mis. Tuomet įgautume gilią sampratą apie programavimo kalbos sandarą, konstrukcijų savybes ir gal tume tai panaudoti visiškai nepriklausomai nuo to, kurią kalbą mokame. Pateiksime keletą priežasčių, kad programavimo kalbų analiz yra gana svarbi kiekvienam programuotojui. Pirmiausia tokia analiz pagerina kiekvienos konkrečiai naudojamos programavimo kalbos sampratą. Daugelis programavimo kalbų turi įvairiausių konstrukcijų, kurios yra tikrai naudingos tuomet, jei sugebame jas tinkamai panaudoti. Netinkamas konstrukcijų taikymas gali padaryti algoritmą sunkiai suprantamą, tur ti neigiamos įtakos algoritmo efektyvumui ar net tapti įvairių netikslumų ir klaidų šaltiniu. Kartais net profesionalūs programuotojai, daugelį metų kurdami programas kuria nors kalba, gali netur ti gilesnio kai kurių konstrukcijų supratimo. Priežastys paprastai glūdi tame, kad dauguma programavimo kalbų aprašų yra pernelyg paviršutiniški, nepadedantys suprasti esm s. Paprastai programuotojas žino tam tikrą kiekį programavimo konstrukcijų, su kuriomis jis susiduria programuodamas konkrečia programavimo kalba. Programavimo kalbų analiz suteikia galimybę gerokai išpl sti suvokiamų konstrukcijų aibę. Moksliniuose darbuose, kurie nagrin ja žmogaus mąstymą, dažnai sutinkama mintis, kad kalba tiek padeda mąstymui, tiek jį riboja. Iš tikrųjų, žmogus naudoja kalbą, kad išreikštų tai ką jis galvoja. Tačiau iš kitos pus s teisinga ir tai, kad kalba struktūrizuoja, nusako žmogaus mąstymą ir netgi iki tokio laipsnio, kad žmogui sunku mąstyti be žodžių. Vienos programavimo kalbos žinojimas sukelia tokį patį stiprų ribojimo efektą. Spręsdamas vieną ar kitą uždavinį ir parinkdamas jam būtinas konstrukcijas, programuotojas neišvengiamai mąsto tik tos vienintel s žinomos kalbos sąvokomis. Susipažinus su pagrindin mis programavimo kalbų koncepcijomis, žymiai aiškiau nustatyti, kuri kalba tinkamiausia konkrečios klas s uždaviniams spręsti. Teisingai pasirinkta ir taisyklingai vartojama programavimo kalba gali gerokai paspartinti programų rašymą ir pailginti jų gyvavimo trukmę. 3

4 Dar viena svarbių programavimo kalbų teorijos mokymosi priežasčių būtų ta, kad žinant bendruosius kalbų darybos principus galima kur kas greičiau išmokti naujų kalbų. Vis daugiau ir daugiau atsiranda smulkių specializuotų kalbų, kurių prireikia įvairiems profesiniams darbams atlikti. Paprastai tos smulkios kalbos turi bendriausias programavimo kalbų sąvokas bei konstrukcijas. Be to, jei žinosime bendriausius programavimo kalbų principus ir koncepcijas, lengvai suvoksime ir naujas kalbas. Dar daugiau, programuotojas, lengvai suvokdamas kalbų esmę, gali iš karto matyti, kaip kiekvienoje situacijoje tinkamai panaudoti naujos kalbos konstrukcijas. Programavimo kalbų teorijos žinojimas ne tik padeda greitai ir kokybiškai suvokti naujas kalbas, bet ir suteikia galimybę patiems kurti naujas kalbas. Žinoma, nedaug programuotojų ketina kurti naujas kalbas. Tačiau daugeliui tenka kurti užduočių valdymo kalbas arba kalbų poaibius specialiems tikslams. Pateiksime pagrindines procedūrinio programavimo sąvokas ir aptarsime jas realizuojančias konstrukcijas. Dažniausiai min sime tokias plačiai paplitusias kalbas, kurios yra vertingos programavimo kalbų teorijos bei algoritmavimo ir programavimo mokymo metodikos požiūriu. Pirmiausia tai būtų Paskalis (ir jo pagrindu sukurtos kalbos Modula-2, Oberonas-2), Algolas-68 ir Ada. Šiek tiek užuominų bus apie istoriniu požiūriu vertingas kalbas Fortraną ir Algolą-60, o taip pat sisteminio programavimo kalbas C, C++, bei šiuo metu itin populiarią Javos kalbą. Daugiausia vietos skirsime įvairių programavimo kalbų konstrukcijų semantikos analizei. Po to trumpai pailiustruosime, kaip tos konstrukcijos realizuojamos programavimo kalbose. Min dami kalbą visada tur sime omeny jos standartą. Kalb dami apie konkrečią kalbos realizaciją, visada ją įvardinsime. Skaitytojo netur tų gąsdinti daugyb čia pamin tų kalbų. Medžiaga d stoma taip, kad ją paj gtų suprasti studentas, mokantis bent vieną šiuolaikinę procedūrinę kalbą (pvz., Paskalį arba C). 4

5 Turinys Įvadas 3 Turinys 5 1. PROGRAMAVIMO KALBŲ KLASIFIKACIJA IR RAIDA 1.1. Programavimo kalbų klasifikacija Kalbų vertinimo kriterijai Programavimo kalbų raida FORMALŪS KALBŲ APRAŠYMO METODAI 2.1. Leksika, sintaks, semantika Kalba ir jos gramatika Formalios gramatikos Gramatikų klasifikacija Kalbų klasifikacija Kontekstin s kalbos Laisvojo konteksto kalbos Reguliariosios kalbos Baigtinio automato samprata Gramatikų ir kalbų vienareikšmiškumas Kaip praktiškai nustatyti gramatikos tipą Bekaus ir Nauro forma Bekaus ir Nauro formos modifikacijos Sintaks s diagramos LEKSIKA 3.1. Kompiuterio ab c l Programavimo kalbos ab c l Terminalinių simbolių pavaizdavimas kompiuterio ab c l s simboliais Vardai Konstantos Programos teksto išd stymas ir komentarai 71 5

6 4. DUOMENYS 4.1. Duomenų klasifikacija Duomenų rūšys: konstantų, kintamųjų ir rodyklių modelis Konstantos ir jų vardai Kintamieji, programos būsena Operacijos, reiškiniai ir reikšmių priskyrimas DUOMENŲ TIPAI IR STRUKTŪROS 5.1. Paprastieji duomenų tipai Vardiniai tipai Loginis tipas Simbolių tipas Atkarpos tipai ir potipiai Sveikieji skaičiai Realieji skaičiai Trivialūs duomenų tipai Rodykl s Struktūriniai duomenų tipai Rinkinys Variantinis rinkinys Masyvas Kiti duomenų tipai Struktūrinių duomenų tipų suderinamumas Objektai Objektinio programavimo samprata Realizacija procedūrin se programavimo kalbose VALDYMO STRUKTŪROS 6.1. Valdymo struktūrų samprata Struktūrin s schemos Sakinių seka ir sud tinis sakinys Išrinkimas Išrinkimo sakinio samprata Išrinkimas iš dviejų variantų 130 6

7 Išrinkimas išrinkime Variantinis išrinkimas Tiesioginis išrinkimas Kartojimas Kartojimo sakinio samprata Nežinomo kartojimų skaičiaus ciklas Žinomo kartojimų skaičiaus ciklas Nukreipimo sakinys PROCEDŪROS IR FUNKCIJOS 7.1. Valdymo struktūrų abstrakcijos samprata Parametrai Formalieji ir faktiniai parametrai Perdavimas reikšme Perdavimas rezultatu Perdavimas reikšme ir rezultatu Perdavimas adresu Perdavimas vardu Funkcijų ir procedūrų perdavimas parametrais Parametrų perdavimo būdai programavimo kalbose PROGRAMAVIMO KALBŲ STANDARTAI IR REALIZACIJOS 8.1. Oficialūs kalbų aprašymai Kalbų dialektai Interpretatoriai, transliatoriai ir kompiliatoriai Programavimo terp Programavimo kalbų suderinamumas 171 Literatūra 172 7

8 1. PROGRAMAVIMO KALBŲ KLASIFIKACIJA IR RAIDA 1.1. Programavimo kalbų klasifikacija Programavimo kalbas galima klasifikuoti taikant įvairius kriterijus: pagal jų išraiškos priemones, taikymo sritis, naudojamus metodus, sukūrimo laikotarpį ir pan. Kiekvienas klasifikavimo būdas išryškina tam tikras kalbos savybes. Pirmiausia panagrin sime kalbų klasifikaciją pagal jų taikymo sritis. Tai elementariausia ir dažnai pateikiama klasifikacija. Ryškiau skiriasi keturios kalbų grup s, tinkamos šiems uždaviniams: 1) mokslinių tyrimų, 2) komercinių, 3) kompiuterin s intelektikos, 4) sisteminio programavimo. Mokslinių tyrimų uždaviniams būdingas didelis operacijų kiekis su nedideliu duomenų kiekiu. Pirmieji kompiuteriai buvo skirti tokiems uždaviniams spręsti. Tod l ir programavimo kalbų projektavimas prasid jo nuo šių uždavinių programavimo. Pirmoji programavimo kalba Fortranas ir buvo skirta tokiems uždaviniams programuoti. Kuriant Algolą-60 buvo galvojama taip pat apie jos taikymą moksliniams skaičiavimams, tačiau ši kalba paplito ir kitose srityse. V liau at jo eil komercin s informacijos apdorojimui. Šios srities uždaviniams būdingi dideli duomenų kiekiai, o operacijų su jais nedaug ir jos nesud tingos. Geriausiai šiam tikslui tinkama buvo Kobolo (Cobol) kalba [ANSI74], sukurta 1960 metais. Šiuo metu programavimo kalbos komercinei veiklai pasidar neaktualios. Atsirado kitos kompiuterin s priemon s duomenų baz s, skaičiuokl s, o taip pat daugyb programų paketų tam tikriems uždaviniams arba jų grup ms. Šios priemon s pakeičia programavimo kalbų poreikį komercin je veikloje, nes atlieka beveik visus reikalingus veiksmus. Bet atsirado didesnis poreikis sisteminio programavimo kalboms, kuriomis min tos priemon s programuojamos. Kompiuterine intelektika domimasi nuo pat pirmųjų kompiuterio žingsnių. Bet ir dabar nepraranda aktualumo problema, kaip suprojektuoti žmogaus mąstymą atitinkančią sistemą. Šios srities uždaviniams būdingas simbolin s informacijos apdorojimas ir sąrašin s struktūros. Operuojama ryšiais tarp objektų. Reikia kalbos, kurioje būtų patogu aprašyti sud tingos ir dinamiškai besikeičiančios struktūros duomenis bei veiksmus su tais duomenimis. Daugelis įvairių valstybių mokslininkų ieškojo būdų, kaip tokią informaciją apdoroti metais šiam tikslui buvo sukurta funkcin kalba Lispas (Lisp). Ir iki šiol kompiuterin s intelektikos srityje tebenaudojamos kalbos, artimos Lispo kalbai. V liau, 8-ajame dešimtmetyje pasirod loginio programavimo kalba Prologas (Prolog), kuris dar geriau tiko kompiuterin s intelektikos srities uždaviniams spręsti. Min tų trijų grupių uždaviniuose operuojama su žmogaus veiklai būdingais duomenimis skaičiais, tekstais, paveikslais ir pan. Juos kompiuteris tik apdoroja. Jie atsiranda ir naudojami kompiuterio išor je. Tod l kompiuterio požiūriu jie yra išoriniai. Kartu su kompiuteriu atsirado dar viena duomenų rūšis vidiniai kompiuterio duomenys, egzistuojantys tik kompiuterio viduje ir būdingi tik pačiam kompiuteriui. Tai kodai vidinis 8

9 išorinių duomenų pavaizdavimas, jų adresai, komandų kodai ir pan. Su šiais duomenis tenka operuoti rašant programas, tvarkančias vidinį kompiuterio ūkį, pavyzdžiui operacines sistemas. Tai sisteminio programavimo uždaviniai. Šios rūšies uždaviniams programuoti skiriamos sisteminio programavimo kalbos. Šios kalbos yra labiau susijusios su kompiuterio, dažniausiai tam tikros jo dalies, architektūra negu kitos aukšto lygio kalbos.tod l jose yra nemažai mašininių ar asemblerinių konstrukcijų, leidžiančių atlikti veiksmus su kompiuterio atmintimi, registrais ir pan. Viena populiariausių sisteminių kalbų yra C. Pavyzdžiui, gerai žinoma operacin sistema UNIX buvo parašyta C kalba. C kalbą galime laikyti tarpine tarp aukšto ir žemo lygio kalbų. Kartais išskiriamos ir daugiau specializuotos (siauresn s) uždavinių klas s, kurioms sudaromos siauresn s specializacijos programavimo kalbos. Programavimas n ra vienalytis. Tą patį uždavinį galima programuoti įvairiais metodais. Ir atvirkščiai įvairius, netgi skirtingų rūšių uždavinius programuoto tuo pačiu metodu. Programavimo pažiūriu netgi natūraliau programavimo kalbas klasifikuoti pagal programavimo metodiką kalboje esančias (dominuojančias) konstrukcijas. Dažniausiai kalbos skirstomos į keturias grup s pagal toje kalboje realizuotą programavimo paradigmą (gr. paradigma kryptis, pavyzdys): 1) imperatyvios arba procedūrin s, 2) funkcin s, 3) objektin s, 4) login s. Imperatyvių kalbų grupei priklauso kalbos, kurios uždavinio sprendimas išreiškiamas veiksmais komandomis (paliepimais) kompiuteriui vykdyti vieną ar kitą veiksmą. Tai viena seniausių, gausiausia ir dažniausiai naudojamų kalbų grup. Jai priklauso Algolas-60, Algolas-68, Ada, C, Fortranas, Modula, Paskalis ir daugelis kitų kalbų. Imperatyvioji paradigma geriausia derinasi su tradicine algoritmo samprata. Funkcinių kalbų paradigmos pavadinimas sako, kad svarbiausia konstrukcija yra funkcija. Veiksmai išreiškiami funkcijų aprašais ir kreipiniais į funkcijas. Funkcijos aprašas tiesiogiai (matematiškai) apibr žia funkcijos rezultato priklausomybę nuo argumentų. Grynose funkcin se kalbose n ra nei kintamojo, nei priskyrimo sąvokų, tod l rezultatų priklausomyb nuo pradinių duomenų išreiškiama tiesiogiai, nenaudojant tarpinių duomenų. Funkcin kalba pateikia primityvių funkcijų aibę, galimybę aprašin ti sud tingesnes funkcijas, panaudojant primityviąsias, o taip pat kai kurias struktūras duomenims laikyti. Tobulai sukurta funkcin kalba turi gana daug primityvių funkcijų. Aprašant primityvias funkcijas, dažnai naudojama rekursija. Funkcinių kalbų pavyzdžiai: Lispas, Scheme, Miranda. Objektin s kalbos atsirado tik prieš gerą dešimtį metų. Jos išaugo iš abstrakčiųjų duomenų tipų teorijos, perimdamos duomenų abstrakcijos mechanizmą. Pagrindin duomenų struktūra objektas. Vieni objektai gali būti kuriami iš kitų objektų pritaikant paveld jimo mechanizmą. Operacijos su duomenimis yra įmontuotos į objektus. Taigi operacijas atlieka objektai, o jie sąveikauja siųsdami vienas kitam pranešimus. Pirmoji objektin kalba buvo Smalltalk. Nesenai tapo populiari Eiffell. Kalbose Oberon-2 ir Java yra gerai suderintos procedūrinio ir objektinio programavimo paradigmos. Dabar objektinis programavimas yra labai populiarus. Daugelis procedūrinio programavimo kalbų (Paskalis, C) papildomos objektinio programavimo elementais. 9

10 Loginio programavimo kalbose aprašomi faktai ir jų sąryšiai. Vieni jų žinomi prieš atliekant programą (pradiniai duomenys), kiti gaunami ją atlikus (rezultatai). Geriausiai žinoma šios grup s kalba yra Prologas. Kartais programavimo kalbos klasifikuojamos pagal lygius. Kuo žemesnis lygis, tuo kalbos duomenų tipai ir operacijos yra artimesni kompiuterio kodams ir komandoms. Kuo kalbos lygis aukštesnis, tuo kalba abstraktesn, t. y. daugiau nutolusi nuo kompiuterio komandų ir priart jusi prie žmogaus kalbos. Įprasta kalbas skirstyti į tris lygius: 1) žemo, 2) aukšto, 3) labai aukšto. Suprantame, kad žemo lygio programavimo kalbomis laikomos visos mašinin s ir joms artimos kalbos. Aukšto lygio programavimo kalboms priklauso beveik visos mums žinomos kalbos. Kalbų lygis nuolat aukšt ja. Tam, kad galima būtų išskirti kalbas, kurių lygis dar aukštesnis už tų kalbų lygį, kurios jau buvo vadinamos aukšto lygio kalbomis, tokios kalbos imamos vadinti labai aukšto lygio programavimo kalbomis. Jų pavyzdžiai login kalba Prologas, funkcin kalba Miranda, aib mis operuojanti kalba Setlas (Setl) Kalbų vertinimo kriterijai Norint apibūdinti programavimo kalbas, reikia iš anksto susitarti d l jų vertinimo kriterijų. Suprantama, kad gali būti labai daug savybių, kurių tik tum m s iš programavimo kalbų. Reikia atsirinkti svarbiausias, ir dar, pasirenkant konkrečią programavimo kalbą, pagalvoti apie sritį, kurioje bus taikoma ši kalba. Pateiksime keturias pagrindines programavimo kalbų savybes, kurias nurodo R. W. Sebesta [Sebesta93], laikytinas kalbų vertinimo kriterijais: 1) programų skaitomumas, 2) programų rašymo patogumas, 3) patikimumas (programų, parašytų ta kalba), 4) išlaidos (programoms kurti, programuotojams mokytis ir t. t.). Tai išorin s (galutin s) kalbos savyb s. Kiekviena jų priklauso nuo vidinių kalbos savybių, įvardijamų specialiais programavimo terminais ir taip pat laikytinų (vidiniais) kalbos vertinimo kriterijais. Ryšiai tarp įvairių savybių (vertinimo kriterijų) pateikti 1.1 paveiksle. 10

11 1.1 pav. Programavimo kalbų vertinimo kriterijai Svarbesnius kriterijus aptarsime išsamiau. Programų skaitomumas. Kuo lengviau ir greičiau galima suvokti programą, tuo geriau. Kuo programa ilgiau gyvuoja, tuo svarbesnis jos skaitomumas, nes ją ilgiau reikia prižiūr ti, taisyti, papildyti, pritaikyti prie naujų sąlygų, ir, vadinasi dažniau skaityti. Programos skaitomumas tur tų būti gerų programų kūr jų pagrindinis devizas programą rašo vienas žmogus, o skaito daugelis. Programos skaitomumas glaudžiai susijęs su jos paprastumu. Jei programavimo kalba turi pernelyg daug konstrukcijų, ją sunku išmokti. Tod l vertingesn s paprastesn s kalbos, turinčios nedaug motyvuotai parinktų konstrukcijų. Fortrano autorius Dž. Bekus kažkada yra pasakęs, kad būtų laimingas, jeigu jam pavyktų sukurti programavimo kalbą, kurios aprašymas tilptų ant vieno lapo! Kalbą daro sud tinga taip pat savybių persidengimas, t. y. kai kelios konstrukcijos turi tas pačias savybes. Pavyzdžiui, vienetu padidinti kintamojo reikšmę C kalba galima vartojant net keturis būdus: kiek := kiek + 1 kiek += 1 ++kiek kiek++ Kalba pasidaro paini (sud tinga) ir priešingu atveju kai viena ir ta pati konstrukcija (operacijos ženklas, žodis ir pan.) gali būti vartojama keliose skirtingų prasmių vietose. Sakoma, kad vienai sąvokai žym ti turi būti vartojamas vienas simbolis, skirtingoms skirtingi. Ortogonalumas tai galimyb gauti naujas kalbos konstrukcijas visais duotais būdais kombinuojant turimas konstrukcijas. Kuo didesnis kalbos ortogonalumas, tuo mažiau išimčių joje. Kai kalba ortogonali, tai iš nedidelio elementarių (pradinių) konstrukcijų su nedaugeliu kombinacijų galime gauti visas valdymo ir duomenų struktūras. Kiekviena kombinacija yra teis ta ir prasminga. 11

12 Labiausiai ortogonali kalba yra Algolas-68. Joje, pavyzdžiui n ra skirtumo tarp reiškinio ir sakinio. Jų funkcijas atlieka viena ir ta pati konstrukcija, turinti reikšmę ir tipą (kaip sakinys) ir galinti atlikti priskyrimo veiksmą arba kreiptis į procedūrą (kaip sakinys). Nors Paskalio kalba yra gana moderni ir aukšto lygio, tačiau ji n ra ortogonali. Vos ne kiekvienai konstrukcijai esama ribojimų. Pavyzdžiui, cikle while negalima rašyti sakinių sekos, ją turime paversti sud tiniu sakiniu, o cikle repeat galima, ne visi faktiniai parametrai gali būti perduodami procedūrai reikšme (pvz., reikšme negalima perduoti bylų), funkcijos reikšm gali būti tik paprastojo tipo ir t. t. Ortogonalumas turi būti gerai subalansuotas. Kuo ortogonalesn kalba, tuo paprastesn. Iš kitos pus s, pernelyg didelis ortogonalumas teikia didelę laisvę naujoms konstrukcijoms kurti, jų gali atsirasti per daug, kai kurių paskirtis gali pasidaryti miglota. Taip pat sumaž ja kalbos pertekliškumas ir atsiranda didesnis klaidų pavojus (sumaž ja programų patikimumas). Kalbos skaitomumui didelę reikšmę turi jos konstrukcijų forma (sintaks ). Pamin tini trys formos komponentai: 1) vardų forma, 2) bazinių žodžių prasmingumas, bendrumas, grupavimas, patogumas, 3) konstrukcijų formos ryšys su jų semantika. Kuo labiau žodžiai ir konstrukcijos išreiškia bei primena jų semantiką, tuo lengviau išmokti kalbą, tuo ji paprastesn ir ja parašytos programos lengviau skaitomos. Programos rašymo patogumas susijęs su kalbos paprastumu, ortogonalumu, abstrakcija ir išraiškingumu. Abstrakcija tai galimyb aprašyti ir valdyti sud tingas struktūras arba operacijas taip, kad galima būtų ignoruoti daugelį smulkmenų (detalių). Tai viena esminių programavimo kalbų savybių: jos ir kuriamos tam, kad būtų galima atsiriboti nuo smulkmenų techninių detalių. Išraiškingumas siejasi su daugeliu kalbos savybių. Pavyzdžiui, Paskalio kalbos ciklas for išraiškingesnis negu ciklas while. Programos patikimumas suprantamas kiek kitaip, negu aparatūros patikimumas. Aparatūra fiziškai d visi, genda. Kuo patikimesn aparatūra, tuo rečiau ji genda. Vienas tos pačios aparatūros egzempliorius esant absoliučiai toms pačioms sąlygoms gali veikti gerai, kitas sugesti. Programa nedyla. Kiekvienas jos egzempliorius esant toms pačioms sąlygoms veikia absoliučiai vienodai. Programos patikimumas suprantamas kaip jos geb jimas teisingai veikti esant bet kokioms ir retai pasitaikančioms sąlygoms (pradinių duomenų kombinacijoms). Tai klaidos, o ne atsitiktiniai gedimai. Kadangi čia turima omeny retai pasitaikančios klaidos, tai čia daroma analogija su aparatūros gedimais ir jos patikimumu. Sakoma, kad tam tikra kalba parašytos programos yra patikimesn s, jei kalboje yra priemon s, padedančios geriau numatyti ir apriboti klaidas esant neįprastoms, dažniausiai neleistinoms pradinių duomenų kombinacijoms. Vienas iš tokių programų patikimumą didinančių mechanizmų yra duomenų tipų kontrol. Išlaidos susijusios su programavimo kalbos projektavimu, platinimu, priežiūra nesunkiai suvokiamos iš 1.1 paveiksle pateiktų sąsajų. 12

13 1.3. Programavimo kalbų raida Trumpai peržvelgsime svarbesnes programavimo kalbas jų atsiradimo chronologine tvarka. Daugiau d mesio kreipsime į tai, kuo tos kalbos prisid jo kuriant teorinius programavimo kalbų pagrindus, ką jos dav programavimo kalbų teoriją. 1.2 paveiksle pavaizduota aukšto lygio programavimo kalbų genealogija ir jų tarpusavio ryšiai: kurios kalbos kurias įtakojo. 1.2 pav. Programavimo kalbų raida 13

14 Reik tų pamin ti pirmąją programavimo kalbą Plankalkül. Ją sukūr vokiečių mokslininkas Konradas Ciuz (Konrad Zuse) 1945 m. rašydamas daktaro disertaciją. Kalba tur jo pačius primityviausius duomenų tipus ir nedaug valdymo struktūrų. Kalba nebuvo realizuota tais laikais dar tik prad jo atsirasti pirmieji, labai primityvūs kompiuteriai. Tačiau kalba tur jo neabejotiną svarbą: parodytas kelias, kaip kurti programavimo kalbas. Kaip istorinę reikšmę turintis dokumentas, jos aprašas buvo išspausdintas tik 1972 m. [Bauer72]. Programavime dažniausiai minimi 1954 metai. Tų metų lapkritį Dž. Bekus ir jo grup paruoš projektą apie matematinių formulių transliavimo sistemą Fortraną (angl. FORTRAN = FORmula TRANslating System). Tai buvo pirmoji realizuota aukšto lygio (ne mašinin ) programavimo kalba. Nors šioje kalboje duomenų ir valdymo struktūros buvo labai menkos, tačiau kelios pagrindin s programavimo kalbų teorin s id jos buvo perteiktos. Čia buvo vartojami loginiai kintamieji suprasta jų reikšm programavime. Buvo įgyvendinta išrinkimo sakinio id ja, nors dar gana netobulai, labai neaiškiai. Apskritai pirmosios kalbos vis dar tebebuvo labiau skiriamos kompiuteriui, o ne žmogui. Fortranas jau tur jo žinomo kartojimų skaičiaus ciklą ir masyvą. Fortrano kalba buvo nuolat tobulinama, kuriamos vis naujos jos versijos. Daugiausia žinomos Fortranas-4, Fortranas-77, Fortranas-90. Funkcinių kalbų krypties pradininkai yra Džonas Makkartis (John MacCarthy) ir Marvinas Minskis (Marvin Minsky), kurie 1958 m. sukūr Lispo (Lisp) kalbą. Lispas turi labai paprastas, tačiau tvirtai teoriškai pagrįstas duomenų struktūras atomus ir sąrašus. Sąrašai apibr žiami labai paprastai, jų gylis nurodomas skliaustais, pavyzdžiui, (A B C D) (A (BC) D (E (FG))) Skaičiavimai atliekami taikant argumentams funkcines programas (funkcijas). Iteratyvūs procesai modeliuojami rekursiniais kreipiniais. Tai aiškiai išreikšta funkcinio programavimo koncepcija. Lispas dav pradžią ir simbolin s informacijos apdorojimui metais dvi didel s tarptautin s organizacijos ACM (angl. Association for Computing Machinery) ir GAMM (vok. Gesellschaft für Angewandte Mathematik und Mechanik) m si projektuoti tokią programavimo kalbą, kuri būtų tinkama sud tingiems uždaviniams spręsti ir būtų teoriškai pagrįsta. Metų pradžioje šios abi grup s, susitikusios Ciūriche, išk l pagrindinius tikslus: 1. Kalba turi būti kiek galima artimesn standartiniams matematikos žymenims ir ja parašytos programos turi būti lengvai skaitomos be papildomų paaiškinimų. 2. Kalba turi būti tokia, kad ja galima būtų aprašyti skaičiavimus, publikuojamus spaudoje būtų lengva suprasti juos. 3. Šios kalbos programos turi būti mechaniškai išverčiamos į mašininius kodus. Buvo parengtas projektas pirmoji Algolo-58 kalba (pavadinimas sudarytas iš angliškų žodžių ALGOrithmic Language pirmųjų raidžių) m. buvo pateikta nauja, iš esm s patobulinta šios kalbos versija Algolas-60 [Naur61, Naur63]. Svarbiausios konstrukcijos, suprojektuotos Algole-60 ir v liau vartojamos daugelyje programavimo kalbų, buvo šios: 1. Blokin programos struktūra. Tai leido programuotojams apriboti vardų galiojimą. Pavyzdžiui, 14

15 begin integer suma, kiekis;... end; Čia žodiniais skliaustais begin ir end nurodoma bloko pradžia ir pabaiga; bloke aprašyti vardai suma ir kiekis galioja (kitaip sakant, matomi) tik bloko viduje, o išor je jie neegzistuoja, taigi ir nežinomi. 2. Du procedūrų parametrų perdavimo būdai: reikšme ir vardu. 3. Rekursinių procesų samprata. 4. Pusiau dinaminiai masyvai. Tai masyvai, kurių r žiai nusakomi kintamaisiais ir d l to masyvo dydis gali būti nustatomas programos vykdymo metu, kai tik atliekama aprašų dalis. Pavyzdžiui, procedure įterpk (ilgis, nauja); value ilgis; integer ilgis, nauja; begin integer array [1: ilgis] sąrašas;... end įterpk; Šioje programoje sąrašas yra sveikųjų skaičių masyvas, kurio viršutinis r žis ilgis yra procedūros parametras. Taigi, kol procedūra neatliekama, n ra žinomas. Tačiau kai masyvas jau sukurtas, jo r žių pakeisti nebegalima. Algolas-60 tur jo įtakos daugelio programavimo kalbų projektavimui. V lesn s kalbos arba per m Algolo-60 konstrukcijas, arba jas patobulino. Su Algolu-60 glaudžiau susijusi Bekaus ir Nauro forma (BNF) formalus būdas programavimo kalbos sintaksei aprašyti. Būtent, projektuojant Algolą-60 kalbą ir buvo iškeltas uždavinys: surasti formalų būdą kalbos sintaksei aprašyti. Būdą pateik Džonas Bekus, o patobulino Peteris Nauras (Peter Naur). Pasirodžius asmeniniams kompiuteriams buvo suprojektuota Beisiko (Basic) kalba. Ji netur jo jokios įtakos kalbų moksliniams tyrimams, mokslininkai kompiuterininkai ignoravo šią kalbą. Tačiau daugumai programuotojų praktikų ši kalba tur jo nemažą reikšmę, buvo pirmoji jų kalba. Pagrindinis reikalavimas, iškeltas projektuojant šią kalbą naudoti kuo mažiau kompiuterio atmintin s, nes tai buvo itin svarbu pirmiesiems asmeniniams kompiuteriams. Peržvelgiant šios programavimo kalbos iškeltus tikslus, vienas jų buvo gana revoliucingas ir tur jęs įtakos tolesnių kalbų raidai: žmogaus laikas, sugaištamas programos rašymui, yra svarbesnis dalykas negu kompiuterio laikas, skirtas programos vykdymui metais buvo suprojektuota kalba Simula-67 [Dahl68]. Ji per m Algolo-60 blokinę struktūrą bei valdymo sakinių konstrukcijas, tačiau tur jo ir naujovių. Svarbiausia naujov duomenų abstrakcijos samprata, išreikšta šios kalbos konstrukcija klase. Klas s id ja dav 15

16 impulsą abstraktiems duomenų tipams atsirasti, o v liau iš tų pačių id jų išsirutuliojo objektinis programavimas metais buvo suprojektuotas Algolas-68 [Wijngaarden75]. Tai buvo ne vien tik Algolo- 60 tobulinimas ar išpl timas, o iš esm s nauja kalba, su daugeliu naujų konstrukcijų ir sampratų. Viena įdomiausių Algolo-68 savybių yra jos ortogonalumas. Su ortogonalumu susijusių kalbų raidai itin reikšmingas rezultatas programuotojo aprašomi duomenų tipai. Algolo-68 kalboje leidžiama programuotojui pačiam, panaudojant standartinius tipus ir keletą jų komponavimo būdų konstruoti naujus duomenų tipus. Šią savybę per m v lesn s kalbos: Paskalis, C, Modula 2. Ada. Algolas-68 jau tur jo dinaminius masyvus. Tokio masyvo dydis gali kisti atliekant programą. Algolas-68 tur jo didelę įtaką programavimo kalbų teorijai. Tačiau praktikoje nepaplito, nes kalba gana sud tinga, pernelyg formalus ir įkandamas jos aprašymas. Kaip priešingyb Algolo-68 sud tingumui 1970 metais buvo sukurta Paskalio kalba. Jos devizas paprastumas. Projektuojant Paskalį buvo iškeltas tikslas: sukonstruoti tokią kalbą, kad ji tiktų programavimui mokyti. Kalba buvo tiek paprasta ir išraiškinga, be to tur jo tokias geras aukšto lygio duomenų ir valdymo struktūras, kad greitai paplito tarp programuotojų ne tik kaip mokymosi kalba. Maždaug tuo pačiu metu buvo suprojektuota ir kita kalba C. Jos konstrukcijos buvo perimtos iš Paskalio, Algolo-68 ir netipizuotos žemo lygio programavimo kalbos BCPL. Tod l C kalba turi nemažai žemo lygio programavimo kalboms būdingų bruožų. Pavyzdžiui, beveik n ra duomenų tipų kontrol s. Daugelis programuotojų m gsta kalbą C d l jos lankstumo, didesnių galimybių tiesiogiai prieiti prie kompiuterio vidaus. Tačiau visa tai yra klaidų šaltinis. Kalbos C++ pagrindu buvo suprojektuota kalba Java. Tai galima sakyti modernizuota C++ iš jos pašalinus daugelį nelabai tobulų žemo lygio konstrukcijų. Tačiau Javos sintaks yra labai artima C++ sintaksei. Taip padaryta populistiniais tikslais, kad kalba nebūtų svetima dabar populiarios kalbos C++ programuotojams. Spartų Javos plitimą lemia jos naudojimas internete m. buvo prad ta Ados (ji pavadinta pirmosios pasaulyje programuotojos, Bairono dukters Ados Lavelais vardu) kalbos projektas. Jį finansavo JAV gynybos departamentas, nor damas tur ti universalią programavimo kalbą procesorių, įmontuotų į karinius įtaisus, programoms rašyti. Projektui buvo skiriama daug l šų. Dirbo didel s žmonių grup s. Buvo parengti keli kalbos variantai. Į kalbą buvo įtraukti svarbiausi tiek programų inžinerijos, tiek programavimo kalbų projektavimo teoriniai principai lygiagretūs procesai, ypatingų situacijų valdymas, išsamūs realiųjų skaičių aprašai, abstraktieji duomenų tipai ir pan. Tod l ši kalba dažnai naudojama profesionaliam programavimui d styti. 16

17 2. FORMALŪS KALBŲ APRAŠYMO METODAI 2.1. Sintaks ir semantika Kalba yra bendravimo priemon. Žmon s bendrauja natūraliomis kalbomis, pavyzdžiui, lietuvių, latvių, anglų, vokiečių. Programavimo kalba skirta žmogaus ir kompiuterio bendravimui. Ja bendravimui naudojasi ir žmon s, kai vienas programuotojas skaito kito programuotojo parašytą programą. Tam, kad bendravimas būtų s kmingas, reikia, kad visi tos pačios kalbos vartotojai vienodai ją suprastų visi programuotojai, rašantys programas ta pačia kalba ir kompiuteriai, analizuojantys ir atliekantys jų parašytas programas. Čia už kompiuterio v l slypi žmogus dabar jau programuotojas, parašęs transliatorių. Aukšto lygio programavimo kalbos yra gana sud tingos. Retai kas gali pasigirti, kad tobulai moka visą kurią nors programavimo kalbą nuo pradžios iki galo. Tod l programavimo kalbų aprašymui skiriama nemažai d mesio. Siekiama, kad programavimo kalbos aprašas būtų trumpas, aiškus ir svarbiausia visų vienareikšmiškai suprantamas. Pirmas žingsnis programavimo kalbos aprašymui susisteminti yra jo skirstymas į lygius. Išskirtini du lygiai: sintaks ir semantika. Sintaks apibr žia programos teksto sandarą. Semantika nusako sintaksiškai teisingos programos prasmę. Pavyzdžiui, Paskalio kalbos sąlyginio sakinio sintaks gal tų būti aprašyta šitaip: Sąlyginis sakinys turi tokį pavidalą: if b then S 1 else S 2 čia b loginis reiškinys, S 1 ir S 2 sakiniai. Sąlyginio sakinio dalis else S 2 gali būti praleista. Sąlyginio sakinio semantika gali būti aprašyta šitaip: Apskaičiuojama loginio reiškinio b reikšm. Jeigu ji yra teisinga (true), tai atliekamas sakinys, S 1, jei neteisinga (false) sakinys S 2. Jeigu sąlyginis sakinys neturi dalies else S 2, tai antruoju atveju neatliekamas joks sakinys. Čia sintaksę ir semantiką apraš me lietuvių kalba, panaudodami matematikos žymenis. Natūraliomis kalbomis išreikšti aprašai dažnai būna ilgoki, o svarbiausia kai kurios vietos nevienareikšm s, kitos išvis sunkiai paaiškinamos. Tai susiję su natūralių kalbų sąvokų daugiareikšmiškumu, vartojimo laisve. Abu lygiai sintaks ir semantika vartojami ne tik dirbtin ms kalboms aprašyti, bet ir lingvistikoje, kai nagrin jamos natūraliosios (gyvosios) kalbos. Ir sintaks, ir semantika gali būti aprašytos formaliai, vartojant griežtą matematinį formalizmą. Pirmuosius darbus apie natūralių kalbų sintaks s formalizavimą paraš JAV kalbininkas N. Chomskis (Naam Chomsky) 20 amž. 6 ojo dešimtmečio pabaigoje 7 ojo dešimtmečio pradžioje. 17

18 Tuoj pat po N. Chomskio paskelbtų darbų, Džonas Bekus ir Peteris Nauras sukūr formalizuotą formą algoritmin s kalbos Algolo-60 kalbos sintaksei aprašyti. Šis metodas pavadintas Bekaus ir Nauro forma (sutrumpintai BNF). Programavimo kalbų sintaks n ra sud tinga (tokią stengiamasi padaryti jau kuriant kalbą), tod l ją aprašyti formaliai nesunku ir beveik visada vartojami formalūs būdai. Šie formalūs būdai, aprašantys programavimo kalbų sintaksę, vadinami formaliosiomis gramatikomis. Programavimo kalbų semantika sud tingesn. N ra gero matematinio formalizmo, įgalinančio trumpai ir aiškiai ją aprašyti. Programavimo kalbų semantikai aprašyti daugiausiai žinomi trys būdai: operacinis, aksiomatinis ir denotacinis. Tačiau bet kuriuo jų parengti semantikos aprašai gana griozdiški ir sunkiai skaitomi. Tod l programavimo kalbų semantika dažniausiai aprašoma neformaliai, natūralia, kartais šiek tiek matematizuota kalba. Riba tarp programavimo kalbos sintaks s ir semantikos ne visada vienareikšmiškai nubr žiama. Nesutariama, pavyzdžiui, ar vardų galiojimo bei duomenų tipų suderinimo taisykl s priklauso sintaksei, ar semantikai. Kadangi šios taisykl s reglamentuoja programos teksto taisyklingumą, tai jas tiktų priskirti kalbos sintaksei. Tačiau beveik niekada šių dalykų neapibr žia kalbos sintaks s taisykl s, nes beveik visada naudojami sintaks s aprašymo metodai, kurie programavimo kalbos konstrukcijas aprašo autonomiškai, t. y. neatsižvelgiant į kontekstą. Pavyzdžiui, sakinio, kuriame panaudotas kintamasis, sintaks nesiejama su to paties kintamojo aprašo sintakse. Nors sintaks ir semantika dažniausiai tyrin jamos atskirai, tačiau jos yra glaudžiai susijusios. Iš gerai aprašytos programavimo kalbos sintaks s gal tų išplaukti ir semantikos dalykų Kalba ir jos gramatika Kas yra kalba ir iš ko ji sudaryta? Prad sime nuo ab c l s. Kiekviena kalba turi savą ab c lę. Apibr žtis. Terminalinių simbolių ab c l tai netuščia simbolių aib. Ją žym sime T. Simboliai vadinami terminaliniais d l to, kad juos būtų galima atskirti nuo kitų gramatikose vartojamų neterminalinių simbolių, apie kuriuos kalb sime toliau. Ab c l s simbolius reikia suprasti abstrakčiau, negu mums įprastas 32 lietuvių kalbos ab c l s raides. Ab c lę gali sudaryti bet kokie simboliai, kurie rašte gali būti vaizduojami įvairiais ženklais (pvz., skaitmenimis, skyrybos ženklais) arba išreiškiami keliais spausdintais ženklais. Sintaks nagrin ja natūralios kalbos sakinį, sudarytą iš žodžių. Taigi sintaks s požiūriu žodis yra pats mažiausias, toliau nebeskaidomas sakinio elementas. Vadinasi, jį reikia laikyti terminalin s ab c l s simboliu. Jeigu kalbą tirtume morfologiniu požiūriu, tai tada reik tų nagrin ti, kaip iš raidžių sudaromi žodžiai ar jų dalys. Programavimo kalbos ab c lę sudaro skaitmenys, raid s, operacijų ir skyrybos simboliai (kai kurie jų dažnai žymimi rašto ženklų poromis, pvz., :=, <=), baziniai žodžiai (pvz., begin, if). Gramatikų nagrin jimui natūralios kalbos, o taip pat ir programavimo kalbos, yra perdaug sud tingos. Tod l šiam tikslui imsime labai paprastas kalbas, kurių ab c l s turi vos kelis 18

19 simbolius. Dažniausiai ab c lei naudosime pirmąsias mažąsias lotyniškos ab c l s raides, pavyzdžiui, T = {a, b}, T = {a, b, c}. Apibr žtis. Seka s = t 1 t 2...t n, sudaryta iš ab c l s T simbolių, vadinama eilute. Eilut s ilgiu laikomas ją sudarančių simbolių skaičius. Eilut s u ilgį žym sime u. Apibr žtis. Eilut, kurios ilgis 0, vadinama tuščia eilute ir žym sime ją ε; ε = 0. Apibr žtis. Dviejų eilučių u ir v sąjunga vadinama operacija, kurios rezultatas uv gaunamas vieną eilutę v = b 1 b 2...b m prirašius po kitos u = a 1 a 2...a n : uv = a 1 a 2...a n b 1...b m. uv = u + v. Tuščia eilut turi savybę: uε = u = εu Apibr žtis. T* vadinsime aibę visų eilučių, sudarytų iš ab c l s T simbolių, įskaitant ir tuščią eilutę. Visų ab c l s T eilučių, išskyrus tuščią, aibę žym sime T +. Vadinasi, T + + {ε} = T*. 3 pavyzdys. T = a, b T* = ε, a, b, aa, ab, ba, bb, aaa,... T + = a, b, aa, ab, ba, bb, aaa,... Apibr žtis. Kalba L (turinti ab c lę T) yra eilučių aib s T* poaibis. Kalbą sudaro eilučių, sudarytų iš jos ab c l s simbolių, rinkinys, t. y. kalba yra eilučių aib. Tačiau ne visų galimų eilučių, o tik tam tikrų. Pavyzdžiui, ne visi lietuvių kalbos ab c l s raidžių rinkiniai yra lietuviški žodžiai. Taigi kalba L yra eilučių aib s T* poaibis: L T*. 4 pavyzdys. Tegu T = {a, b}. Panaudodami šią ab c lę galime apibr žti daugybę kalbų: L 1 = T* = {ε, a, b, aa, ab, ba, bb, aaa...} L 2 = {aa, ab, ba, bb} L 3 = {ba p p pirminis skaičius} L 4 = {a n b n n 1} Čia vertikaliu brūkšniu atskiriami ribojimai kalbos eilut ms. Žym jimu a n suprantame n ilgio eilutę, sudarytą iš a simbolių, a 0 tuščia eilut. Kalbą L 1 sudaro ab c l s {a, b} bet kokios eilut s: ε, a, b, aa, ab, ba, bb, aaa... Kalbą L 2 sudaro keturios eilut s. 19

20 Kalbai L 3 priklauso eilut s, prasidedančios raide b, o po jos einančių raidžių a skaičius, lygus bet kuriam pirminiam skaičiui: baa, baaa, baaaaa. Kalbai L 4 priklauso eilut s, sudarytos iš vienodo raidžių a ir b skaičiaus, be to raid s b eina po raidžių a: ab, aabb, aaabbb. Kalba L 2 yra baigtin, kitos trys nebaigtin s Kalbą apibr žti kaip aibę nesunku. Tačiau šitaip apibr žti galima tik labai paprastas kalbas, kurias patogu naudoti tyrin jant gramatikas kitokius kalbų apibr žimo būdus. Deja, praktiškai vartojamoms kalboms, net ir paprasčiausioms programavimo kalboms, tokios aibių teorijos apibr žimo priemon s yra per silpnos. Naudojami sud tingesni apibr žimo būdai, vadinami formaliomis gramatikomis. Apie jas kalb sime kitame skyrelyje. Gramatikos būna dviejų rūšių: generuojančios ir atpažįstančios. Generuojančios gramatikos turi taisykles, pagal kurias kuriamos (generuojamos) kalbai priklausančios simbolių eilut s. Atpažįstančios gramatikos turi taisykles, nustatančias, ar duotoji eilut priklauso kalbai. Programavimo kalbų aprašuose įprasta pateikti generuojančias gramatikas. Jos pritaikytos programuotojui, rašančiam (kuriančiam) programą. Tuo tarpu kompiuteriui tenka analizuoti žmogaus parašytą programą, t. y. tikrinti, ar ji taisyklinga. Tod l čia geriau tinka atpažįstančios gramatikos. Iš karto sugeneruoti (apibr žti) visą sud tingesn s kalbos eilutę (pvz., programą) arba ją atpažinti (išnagrin ti) būtų sunku. D l to darbas atliekamas palaipsniui, dalimis. Natūralios kalbos sakinys skaidomas į sakinio dalis: veiksnį, tarinį, papildinį ir pan. (2.1 pav.). Programa skaidoma į programavimo kalbos konstrukcijas: aprašus, sakinius ir t. t. tol, kol nusileidžiama iki kalbai priklausančios terminalinių simbolių eilut s (2.2 pav.). 2.1 pav. Lietuvių kalbos sakinio Žmogus eina plačiu keliu struktūra, išreikšta medžiu 20

21 2.2 pav. Supaprastinta priskyrimo sakinio a := b+2 struktūra, išreikšta medžiu Medžiu pavaizduotas eilut s generavimas atspindi eilut s struktūrą. Tai svarbi gramatikos savyb. Gramatika, kurioje naudojami neterminaliniai simboliai ir eilut s generavimą galima išreikšti medžiu, vadinama struktūrine gramatika. Gramatikos sąvokų vardai (veiksnys, tarinys ir t. t.) yra vadinami neterminaliniais simboliais ir jie sudaro neterminalinių simbolių ab c lę N. Šiuo atveju N = veiksnys, tarinys,... Ši ab c l skiriasi nuo anksčiau apibr žtos terminalinių simbolių ab c l s T. Neterminaliniai simboliai yra vartojami pačiai kalbai nagrin ti ir jie priklauso gramatikai arba metakalbai, kuria kalbama apie kitą kalbą. Pati kalba sudaroma tik iš terminalinių simbolių ab c l s. Taigi N T =. 2.1 paveiksle pateiktas simbolių (žodžių) skirstymas į terminalinius ir neterminalinius gali pasirodyti dirbtinas, kadangi neterminaliniai simboliai (veiksnys, tarinys... ) taip pat yra lietuviški žodžiai. Skirstymas būtų aiškesnis, jeigu lietuviškai aprašytume kitą, ne lietuvių kalbą. Tada aiškiai matytųsi, kad lietuviški sakinio dalių pavadinimai ir nagrin jamas sakinys priklauso skirtingoms kalboms (2.3 pav.). Tokiu atveju lietuvių kalbą ir ja parašytą gramatiką būtų galima laikyti metakalba tos, kitos, kalbos atžvilgiu. 21

22 2.3 pav. Latvių kalbos sakinio Cilvēk iet platu ceĝu struktūra, išreikšta medžiu Skirtumas tarp terminalinių ir neterminalinių simbolių yra aiškesnis programavimo kalbose (2.2 pav.). Akivaizdu, kad sakinys a := b + 2 priklauso programavimo kalbai. Tuo tarpu tos kalbos konstrukcijų pavadinimai (kintamasis, priskyrimo ženklas ir t. t.) yra neterminaliniai simboliai ir tarnauja pagalbiniams tikslams pačios kalbos aprašymui. Gramatika, kurioje kalba apibr žiama naudojant tarpinius simbolius, o konkrečios eilut s išreiškiamos medžiu, vadinama struktūrine kalba Formalios gramatikos Formaliomis gramatikomis apie 20 amž. 6 ąjį dešimtmetį susidom jo kalbotyrininkai, kai atsirado realios technin s galimyb s automatiškai, kompiuteriu, versti tekstus iš vienos kalbos į kitą. Buvo bandoma sudaryti matematinį kalbos modelį. Matematika nagrin ja griežtai apibr žtus objektus. Taigi reik jo mechanizmo formaliam kalbos apibr žimui. Taip gim formalios gramatikos id ja. Pirmuosius darbus atliko JAV Masačūsetso universiteto lingvistas, profesorius N. Chomskis, kuris pateik gramatikų klasifikaciją. Gramatikų prireik ir dirbtinių kalbų programavimo kalbų kūr jams. Pirmą kartą praktiškai formalių gramatikų teorija buvo pritaikyta Algolo-60 kalbai apibr žti. Programuotojas Dž. Bekus ir lingvistas P. Nauras sukūr specialiai šiam tikslui pritaikytą gramatiką, kuri buvo pavadinta jų vardu Bekaus ir Nauro forma (BNF). Kompiuterijoje imta dom tis gramatikomis netgi daugiau, negu lingvistikoje. Mat lingvistikoje tekstą iš vienos kalbos į kitą s kmingai verčia žmogus, nesinaudodamas formaliu matematiniu modeliu. Pasaulis nesugrius, jeigu šis darbas bus neautomatizuotas arba nepakankamai automatizuotas. Tuo tarpu programavimo kalba, kurios kompiuteris negali išversti į savą kompiuterinę kalbą, yra bevert. Ir dar formalizmą lengviau taikyti dirbtiniam daiktui (t. y. programavimo kalbai), nes jį galima kurti pagal gramatikos taisykles. Matyt šios priežastys ir l m, kad dabar formalių kalbų teorija beveik visai persik l iš lingvistikos į kompiuteriją. 22

23 Paprasčiausias būdas apibr žti kalbą, kaip aibę, yra išvardyti visus jos elementus, pvz., sakinius. Bet realios kalbos yra nebaigtin s aib s. Tod l einama kitu keliu sudaromos taisykl s, kurių pagalba galima generuoti kalbos elementus. Taisykles galima sudaryti taip, kad baigtinis jų skaičius gal tų generuoti nebaigtinį kalbos elementų skaičių. Kadangi kalbos elementai yra eilut s, tai jų generavimui natūralu taikyti eilučių operacijas. Programuotojams gerai žinomos eilučių (ar jų dalių) keitimo komandos, vartojamos tekstų tvarkymo sistemose. Operacija u v reiškia, kad simbolių seką u, rastą pradin je eilut je, reikia pakeisti seka v. Šitaip gaunama nauja eilut. Pavyzdys. Tarkime, kad turime eilutę aab. Taikydami operaciją ab bac iš šios eilut s galime gauti dvi naujas eilutes: aab abac bacac Taikydami operaciją b bb iš pradin s eilut s galime gauti be galo daug naujų eilučių: aab aabb aabbb aabbbb Formaliųjų gramatikų taisykl ms ir buvo pasirinkta ši operacija. Apibr žtis. Formalią gramatiką sudaro keturios dalys: 1) neterminalinių simbolių baigtin aib N; 2) terminalinių simbolių baigtin aib (kalbos ab c l ) T; 3) gramatikos taisyklių baigtin aib P; bendru atveju taisykl išreiškiama u v, čia u (N T) +, v (N T)*; 4) pradinis neterminalinis simbolis S (S N), nuo kurio pradedamas eilučių generavimas. Sutrumpintai gramatika G gali būti užrašoma: G = (N, T, P, S). Ankstesniuose pavyzdžiuose pradiniai simboliai buvo sakinys (2.1 ir 2.3 pav.) ir priskyrimo sakinys (2.2 pav.). Taigi, pradžioje turime vienintelę eilutę, sudarytą tik iš vieno neterminalinio simbolio S. Taikydami generavimo taisykles gauname naujas eilutes. Šitaip taisyklių pagalba iš pradinio simbolio S gaunamos visos kalbai priklausančios eilut s. 1 pavyzdys. Sudarysime kalbos L 1 L 1 = a n b n n 1 gramatiką (ją galima žym ti G(L 1 )): G(L 1 ) = ( S, a, b, S asb, S ab, S) Gramatika G(L 1 ) turi dvi taisykles. Taisykl S asb sako, kad eilutę (arba jos dalį) S galima keisti eilute asb, o taisykl S ab sako, kad simbolį S galima pakeisti eilute ab. Taikydami šias taisykles gausime eilutes: S ab 23

24 S asb aabb S asb aasbb aaabbb S asb aasbb aaasbbb aaaabbbb... Šitaip galima gauti bet kurią kalbai L 1 priklausančią eilutę ir tik jas jokių kitų eilučių. Kurią iš dviejų taisyklių taikyti, pasirenkame patys. Jeigu taikome taisyklę S asb, tai eilutę praplečiame vienu simboliu į abi puses, o viduryje paliekame simbolį S tolesnio pl timo galimybę. Kai norime užbaigti eilut s generavimą, taikome taisyklę S ab. Tada eilut je nebelieka neterminalinio simbolio S. Ji tampa sudaryta vien iš terminalinių simbolių. Apibr žtis. Eilut, sudaryta vien iš terminalinių simbolių, vadinama terminaline eilute. Terminalin eilut priklauso kalbai. Tuo tarpu eilut, kurioje dar yra neterminalinių simbolių, kalbai nepriklauso, nes neterminaliniai simboliai n ra kalbos simboliai (jie yra gramatikos simboliai). 2 pavyzdys. Tarkime, kad duota L 2 kalbos gramatika: G(L 2 ) = ( B, C, S, a, b, c, P, S) Generavimo taisyklių yra keletas, tod l jas užrašome atskirai: P = S BC B abb B abb C Ccc C c Pateikiame keletą eilučių, kurios priklauso kalbai L 2 : abbc aabbbc aaabbbbc abbccc abbccccc aabbbccccc Kalbos L 2 eilučių aibę galima išreikšti šitokia formule: L 2 = a n b n+1 c m, n > 0, m > 0, m \ 2 = 1 Ženklu / žym sime sveikųjų skaičių dalybą, o ženklu \ dalybos liekaną. Taigi sąlyga m \ 2 = 1 reiškia, kad skaičius m yra nelyginis. Taisykles, kurių kair s pus s vienodos, apjungsime panaudodami alternatyvos simbolį (vadinamą arba): B abb abb C Ccc c 24

25 3 pavyzdys. G(L 3 ) = ({D, E}, {a}, P, D} Čia taisykl s P aprašomos: D a ae E ad Nor dami nustatyti, kokios eilut s priklauso gramatika G(L 3 ) aprašytai kalbai, imkime nuosekliai taikyti taisykles: D a, taigi a L 3. D ae aad aaa, taigi aaa L 3. D ae aad aaae aaaad aaaaa, taigi aaaaa L Toliau galime įžvelgti d sningumą, tod l užrašome kalbai L 3 priklausančių eilučių bendrą pavidalą: L 3 = {a 2n+1 n 0}. Seka u 1 u 2 u 3... u n vadinama generavimo seka. 4 pavyzdys. Pateiksime sud tingesn s gramatikos pavyzdį: G(L 4 ) = ({A, B, C}, {a, b, c}, P, A). Jos taisyklių aibę P sudaro A abc abbc Bb bb Bc Cbcc bc Cb ac aab aa Norint suvokti kalbą L 4, reikia pabandyti sugeneruoti pagal duotas taisykles bent keletą jai priklausančių eilučių. Kadangi taisyklių nemažai ir jos painokos, užrašysime ne tik generavimo seką, bet ir taisykles, kurias taik me. Štai kokios eilut s priklauso kalbai L 4 : 1) abc L 4, nes A abc 2) aabbcc L 4, nes A abbc abbc abcbcc acbbcc aabbcc Bb bb Bc Cbcc bc Cb ac aa 25

26 3) aaabbbccc L 4, nes A abbc abbc abcbcc acbbcc aabbbcc aabbbcc aabbbcc aabbcbccc aabcbbccc aacbbbccc aaabbbccc Bb bb Bc Cbcc bc Cb ac aab Bb bb Bb bb Bc Cbcc bc Cb bc Cb ac aa Dabar jau galime užrašyti ir kalbai priklausančių eilučių bendrą pavidalą: L 4 = {a n b n c n n 1} Iš tikrųjų, šitą teiginį tur tume pirmiausia įrodyti. Įrodymas susid tų iš dviejų dalių: reik tų įrodyti, kad {a n b n c n n 1} L 4 ir kad {a n b n c n n 1} L 4 Įrodymas remiasi matematiniais samprotavimais ir indukcija. Jį galima rasti knygoje [Backhouse79??]. Formalias gramatikas ir kalbos eilučių generavimą galima sugretinti su login mis teoremų įrodymo sistemomis ir teoremų įrodymu. Pradžioje turime aksiomų sistemą ir teoremų įrodymo taisykles. Taikydami taisykles iš aksiomų, gauname naujus teiginius teoremas, kurių skaičius gali būti nebaigtinis. Panašiu keliu einama ir formalių gramatikų teorijoje. Čia aksioma laikomas pradinis neterminalinis simbolis S. Taikydami gramatikos taisykles iš jo gauname naujas eilutes, prilygstančias naujoms teoremoms. Pratimas 2.1 lentel s eilut s įvardintos simbolių eilut mis, o stulpeliai gramatikomis (tiksliau jų taisykl mis). Pažym kite pliusais tuos lentel s langelius, kurių eilut se parašytas simbolių eilutes galima sugeneruoti panaudojant jų stulpelių gramatikas. 26

27 Eilut 2.1 lentel S asb S abb B bb B b S asb S abb B bb B bb S aas S at S aab B bbb B bb T bb S aas S aab B bbb B bbb S aas S ab B bb B bbb B bb aaaaaabbb aaaabbbb aaabbbb abbbbbbbbb 2.4. Gramatikų klasifikacija Bendru atveju gramatikos taisykl s pavidalas yra šitoks: u v u (N T) + ; v (N T)* u vadinama kairiąja taisykl s puse, v dešiniąja. Šitokiomis taisykl mis galima aprašyti bet kokią programavimo kalbą. Tačiau taisyklių pavidalas yra toks bendras, kad iš jų maža naudos. Naudojant šitokias bendro pavidalo taisykles, galima apibr žti labai daug pačių įvairiausių kalbų. Tačiau toks universalumas sukuria tokią didelę kalbų aibę, kad sunku rasti naudingų (ypač realizacijai) savybių, kurias tur tų visos kalbos. Kalbų aibes galima sumažinti įvedant ribojimus taisykl ms. Tokius ribojimus pasiūl N. Chomskis ir pagal juos suklasifikavo gramatikas ir kalbas. Jo pateikta klasifikacija tapo visuotinai priimta. Klasifikacija remiasi šitokiais gramatikos taisyklių ribojimais: 1. uav uwv 2. A w 3. A a A ab čia u, v, w (N T)* a T A, B N Jeigu gramatikos taisykl ms netaikomi jokie ribojimai, tai tokios gramatikos tipas yra 0. Jei tik pirmasis ribojimas tipas 1, jei antrasis tipas 2, jei trečiasis tipas 3. Kiekvienas ribojimas su didesniu numeriu apima ribojimus su mažesniais numeriais. Pavyzdžiui, jeigu pirmąjį ribojimą papildysime sąlyga u = v = ε, tai gausime antrąjį ribojimą. Taip pat akivaizdu, kad trečiojo ribojimo dešin je rodykl s pus je esančios dalys yra atskiri antrojo ribojimo taisykl s dešin s pus s atvejai. 27

JAVA pagrindai Lek. Liudas Drejeris

JAVA pagrindai Lek. Liudas Drejeris JAVA pagrindai Lek. Liudas Drejeris Programa (1) Programa, tai eilė instrukcijų (vadinamų programiniais sakiniais), kurie vykdomi paeiliui, kol gaunamas norimas rezultatas. Programa (2) Programa (2) /*

More information

Kas yra masyvas? Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: A[1] A[2] A[3] A[4] A[5]

Kas yra masyvas? Skaičių masyvo A reikšmės: Elementų indeksai (numeriai): Užrašymas Turbo Paskaliu: A[1] A[2] A[3] A[4] A[5] Masyvas 2013 1 Vienmatis masyvas Veiksmai su masyvo elementais: reikšmių priskyrimas ir išvedimas, paieška, rikiavimas. Masyvų perdavimas procedūros (funkcijos) parametrais. 2 Kas yra masyvas? Masyvu vadinamas

More information

Pasirenkamojo modulio kūrybinio darbo atlikimas ir vertinimas

Pasirenkamojo modulio kūrybinio darbo atlikimas ir vertinimas Pasirenkamojo modulio kūrybinio darbo atlikimas ir vertinimas Pasirenkamojo modulio kūrybinis darbas atliekamas keliais etapais: kūrybinio darbo temos (problemos / užduoties) pasirinkimas ir derinimas

More information

Parengė ITMM Artūras Šakalys 1

Parengė ITMM Artūras Šakalys 1 2014.02.02 Parengė ITMM Artūras Šakalys 1 2014.02.02 Parengė ITMM Artūras Šakalys 2 Kaip suprantame masyvą? Pavyzdys: Peteliškių šeima; Gėlių laukas; 2014.02.02 Parengė ITMM Artūras Šakalys 3 Kaip suprasti

More information

C programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() )

C programavimo kalba. 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() ) C programavimo kalba 3 paskaita (Sąlygos ir ciklo operatoriai, funkcija scanf() ) Sąlygos operatorius if - else Sąlygos operatoriai skirti perduoti programos vykdymą vienai ar kitai programos šakai. Operatorius

More information

Come to the TypeScript

Come to the TypeScript Come to the TypeScript we have type hinting! Sergej Kurakin Sergej Kurakin Amžius: 36 Dirbu: NFQ Technologies Pareigos: Programuotojas Programuoti pradėjau mokytis 1996 metais. Programuotoju dirbu nuo

More information

C programavimo kalba. 5 paskaita (Funkcijos, masyvai)

C programavimo kalba. 5 paskaita (Funkcijos, masyvai) C programavimo kalba 5 paskaita (Funkcijos, masyvai) Funkcijų pavyzdys // Skaičių lyginimo programa #include void pmax(int, int); /* prototipas */ int main() {int i, j; for (i = -10; i

More information

Informacijos apsaugos standartai serija

Informacijos apsaugos standartai serija Informacijos apsaugos standartai 27000 serija Pareng : Marius Celskis www.isec.lt 2007 m. balandis 12 d. ISO 27000 serija 2 iš 9 Tarptautin standartizacijos organizacija ISO informacijos apsaugos standartizavimui

More information

PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS

PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS PHP PROGRAMOS EIGOS VYKDYMO VALDYMAS Sąlygos sakiniai PHP skriptų vykdymo eigą galite valdyti naudodami sąlygos sakinius. Sąlygos sakiniai tai loginės struktūros, kuriose saugomas kodas, įvykdomas įgyvendinus

More information

Masyvai Javoje. Masyvai. Objektų talpyklos. Masyvo tipas. Deklaravimo pavyzdžiai. Deklaracija ir sukūrimas. Masyvo superklas - Object

Masyvai Javoje. Masyvai. Objektų talpyklos. Masyvo tipas. Deklaravimo pavyzdžiai. Deklaracija ir sukūrimas. Masyvo superklas - Object Masyvai Javoje Masyvai. Objektų talpyklos (Arrays, collections) Dinamiškai sukuriami java objektai iš anksto apibr žtam komponenčių skaičiui saugoti. Komponent s g.b. primityvaus tipo arba nuorodos tipo

More information

DUOMENŲ STRUKTŪROS IR ALGORITMAI. Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo)

DUOMENŲ STRUKTŪROS IR ALGORITMAI. Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo) DUOMENŲ STRUKTŪROS IR ALGORITMAI Rūšiavimo algoritmai (įterpimo, burbulo, išrinkimo) Rūšiavimo veiksmas Kasdieniniame gyvenime mes dažnai rūšiuojame: Failus kataloguose Katalogus lokaliame diske Kasdienines

More information

Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; //

Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; // C programavimo kalba 10 paskaita (Struktūros) Struktūrų sintaksė Struktūra tai vienodo arba skirtingo tipo kintamųjų rinkinys. Sintaksė: struct vardas { ; type1 var1; type2 var2;... typen varn; // Gale

More information

C++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita)

C++ programavimo kalba. Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita) C++ programavimo kalba Konstruktorius, destruktorius, klasių metodų modifikatoriai, objektų masyvai (4 paskaita) Konstruktorius Sukuriant objektą, jo duomenims paprastai turi būti priskiriamos pradinės

More information

Amadeus On-Line Helpdesk

Amadeus On-Line Helpdesk Amadeus On-Line Helpdesk Vartotojo instrukcija Skirta kelionių agentūroms Turinys Įžanga... 3 Jungimasis prie Amadeus Helpdesk... 3 Patarimai ir pastabos... 7 Dokumento valdymas 2007 Apsauga Viešas Įmon

More information

Elektroninis.lt šakninių sertifikatų diegimas

Elektroninis.lt šakninių sertifikatų diegimas Elektroninis.lt šakninių sertifikatų diegimas Ši instrukcija aprašo, kaip į kompiuterį įdiegti šakninius elektroninis.lt sertifikatus. Diegimo darbus galima atlikti turint kompiuterio administratoriaus

More information

Gijos. Gijų modelis Javoje. R.Vaicekauskas, OP, 2017

Gijos. Gijų modelis Javoje. R.Vaicekauskas, OP, 2017 Gijos Gijų modelis Javoje R.Vaicekauskas, OP, 2017 1 Turinys Motyvacija Sukūrimas Valdymas Sinchronizacija Susijusios klasės 2 Motyvacija Gijos reikalingos tam, kad išreikšti lygiagretumą vieno proceso

More information

Gintautas GRIGAS P R O G R A M A V I M A S P A S K A L I U

Gintautas GRIGAS P R O G R A M A V I M A S P A S K A L I U Gintautas GRIGAS P R O G R A M A V I M A S P A S K A L I U Vilnius 1998 Ši knyga yra programavimo pradžiamokslis. Aprašomos pagrindins Paskalio kalbos konstrukcijas bei j bei j panaudojimas algoritmams

More information

Redis Ma as, greitas, galingas. Specialiai VilniusPHP

Redis Ma as, greitas, galingas. Specialiai VilniusPHP Redis Ma as, greitas, galingas Specialiai VilniusPHP 2013.06.06 Sergej Kurakin Na, Jūs mane jau nekarta matėte, tai nieko nesakysiu apie save. Kaip aš susipa inau! Tai buvo prieš keletą metų! Projektas

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Operatorių perkrovimas (7 paskaita) Operatorių perdengimas Programavimo kalbose naudojami operatoriai pasižymi polimorfizmu (daugiavariantiškumu). Kaip pavyzdys gali būti operatorius

More information

El. pašto konfigūravimas

El. pašto konfigūravimas El. pašto konfigūravimas Outlook Express (integruota Windows XP) elektroninio pašto klientas Žemiau pateikta instrukcija, kaip sukonfigūruoti savo elektroninį paštą vartotojams, turintiems elektroninio

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Šablonai (10 paskaita) Kodėl šablonai (templates)? Programuojant egzistuoja situacijos, kai reikia atlikti tuos pačius veiksmus su skirtingais duomenų tipais (pvz. modulio radimas,

More information

ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV

ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV ios Uždara operacinė sistema skirta tik Apple įrenginiams: iphone ipad ipod touch Apple TV Pagrindas OS X, skirtas ARM įrenginiams Programavimo aplinka: XCode ir Objective-C Programavimo kompiuteris -

More information

Buferio perpildymo klaida Įvadas, techniniai klausimai

Buferio perpildymo klaida Įvadas, techniniai klausimai Buferio perpildymo klaida Įvadas, techniniai klausimai Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2009-10-16 R. Griškevičius, Saugus

More information

Projektas. .h failai Header failai (interface) .m failai Pačios programos failai ( .xib /.storyboard Vartotojo sąsajos failai

Projektas. .h failai Header failai (interface) .m failai Pačios programos failai ( .xib /.storyboard Vartotojo sąsajos failai ios Projektas.h failai Header failai (interface).m failai Pačios programos failai (.xib /.storyboard Vartotojo sąsajos failai AppDelegate.h / AppDelegate.m aplikacijos pradiniai startavimo prpograminiai

More information

Trumpai-ilga istorija

Trumpai-ilga istorija Įvadas į Web Services Kas yra Web Service? Kas ką žino??? 70-ieji: Mainframe Trumpai-ilga istorija 80-ieji: Client-Server Istorijos 90-ieji: Web 2000: SOA 2010: Cloud Computing Šaltinis: Sergejus Barinovas,

More information

Programavimas C kalba

Programavimas C kalba Programavimas C kalba Mokomoji priemonė Elektronikos specialybės studentams Vytautas Vyšniauskas 2008.01.28 09:26 Šiaulių Universitetas, 2007 Turinys Įvadas... 4 1 Simbolių kodavimas ir ASCII kodų lentelė...

More information

Lokalizuojamųjų programinės įrangos išteklių metainformacijos formalizavimo metodas

Lokalizuojamųjų programinės įrangos išteklių metainformacijos formalizavimo metodas ISSN 1392-0561. INFORMACIJOS MOKSLAI. 2009 50 Lokalizuojamųjų programinės įrangos išteklių metainformacijos formalizavimo metodas Tatjana Jevsikova Matematikos ir informatikos instituto doktorantė Institute

More information

Web servisai WSDL. Osvaldas Grigas

Web servisai WSDL. Osvaldas Grigas Web servisai WSDL Osvaldas Grigas Web servisų aprašymas Kiekvienas web servisas yra unikalus Jis turi adresą(arba kelis adresus), kuriuo į jį galima kreiptis. Jis supranta tik tam tikros struktūros įeinančius

More information

Programavimo stilius ir programų internacionalizavimo mokymas

Programavimo stilius ir programų internacionalizavimo mokymas LMD2010midm_dag_gri 2010/10/23 19:12 page 1 #1 Lietuvos matematikos rinkinys. LMD darbai ISSN 0132-2818 Volume 51, 2010, pages 1 14 www.mii.lt/lmr/ Programavimo stilius ir programų internacionalizavimo

More information

Polimorfizmas. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

Polimorfizmas. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras. Polimorfizmas Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2009-2010 m. m. pavasario semestras Dar apie paveldėjimą Java kalboje kiekvienas paveldėtos klasės objektas gali būti naudojamas ten, kur

More information

K R I S T I N A L A P I N. I dalis. Matematikos ir statistikos studijų krypčių pirmo kurso studentams

K R I S T I N A L A P I N. I dalis. Matematikos ir statistikos studijų krypčių pirmo kurso studentams V I L N I A U S U N I V E R S I T E T AS M A T E M A T I K O S I R I N F O R M A T I K O S F A K U L T E T A S P R O G R A M Ų S I S T E M Ų K A T E D R A K R I S T I N A L A P I N Programavimas C I dalis

More information

A.Kynienė. С, C++ kalbų ABC. Metodinė priemonė

A.Kynienė. С, C++ kalbų ABC. Metodinė priemonė A.Kynienė С, C++ kalbų ABC Metodinė priemonė Vilnius 2004 TURINYS C KALBOS PRIVALUMAI...4 PROGRAMAVIMO PROCESAS...5 OPERACIJOS...6 PAPRASTOS PROGRAMOS STRUKTŪRA...8 DUOMENŲ IR KINTAMŲJŲ TIPAI...9 SIMBOLINĖS

More information

T u r b o P a s k a l i s 7.0

T u r b o P a s k a l i s 7.0 Vilniaus universitetas Matematikos ir informatikos fakultetas Programų sistemų katedra I N F O R M A T I K A T u r b o P a s k a l i s 7.0 Doc. V. Undzėno paskaitų konspektai (skaitoma Fizikos fakulteto

More information

WWW aplikacijų saugumas 2

WWW aplikacijų saugumas 2 WWW aplikacijų saugumas 2 Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2010-11-26 R. Griškevičius, Saugus programavimas, VGTU, 2009

More information

Vilniaus universitetas Fizikos fakultetas Radiofizikos katedra R. Grigalaitis Programavimas (Programavimo C++ kalba paskaitų konspektas)

Vilniaus universitetas Fizikos fakultetas Radiofizikos katedra R. Grigalaitis Programavimas (Programavimo C++ kalba paskaitų konspektas) Vilniaus universitetas Fizikos fakultetas Radiofizikos katedra R. Grigalaitis Programavimas (Programavimo C++ kalba paskaitų konspektas) Vilnius 2010 - 2 - Turinys PROGRAMAVIMO SAMPRATA... - 4 - KINTAMIEJI

More information

DTD aprašas gali būti XML failo viduje. Šiuo atveju jis įterpiamas į žymę DOCTYPE naudojant tokią sintaksę:

DTD aprašas gali būti XML failo viduje. Šiuo atveju jis įterpiamas į žymę DOCTYPE naudojant tokią sintaksę: XML DTD paskirtis DTD (angl. Document Type Definition) paskirtis nusakyti, iš kokių blokų gali būti sudarytas XML (o taip pat ir HTML) dokumentas. Taigi DTD apibrėžia dokumento struktūrą išvardindama leistinus

More information

Vienlusčių įtaisų projektavimas. 1 paskaita

Vienlusčių įtaisų projektavimas. 1 paskaita Vienlusčių įtaisų projektavimas 1 paskaita HDL įvadas Tradicinės programavimo kalbos (C, Pascal, Python) yra nuoseklios: jomis parašytos programos yra kompiliuojamos į universalaus procesoriaus instrukcijų

More information

2-3 PASKAITOS. Paprasčiausia programa:

2-3 PASKAITOS. Paprasčiausia programa: 2-3 PASKAITOS Turinys: Paprasčiausios programos pavyzdys. Darbas su programavimo terpėmis. Duomenys. Duomenų tipai ir charakteristikos. Paprasčiausia įvestis/išvestis. Paprasčiausia programa: /* Pirmoji

More information

Eksperimentiniai sprendimai

Eksperimentiniai sprendimai Komandos Eksperimentiniai sprendimai Prisistatymas Vilniaus Universitetas, MIF 2005 1. Bendras komandos prisistatymas Komanda Eksperimentiniai sprendimai tai Vilniaus Universiteto, Matematikos ir Informatikos

More information

Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras. Apletai (įskiepiai) Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2008-2009 m. m. pavasario semestras Java grafinės bibliotekos AWT (Abstract Window Toolkit) Swing 2009.04.09 P.Kasparaitis. Objektinis

More information

C# IR JAVA PROGRAMAVIMO KALBŲ LYGINAMOJI ANALIZĖ

C# IR JAVA PROGRAMAVIMO KALBŲ LYGINAMOJI ANALIZĖ LIETUVOS EDUKOLOGIJOS UNIVERSITETAS GAMTOS, MATEMATIKOS IR TECHNOLOGIJŲ FAKULTETAS INFORMATIKOS KATEDRA Arvydas Putna C# IR JAVA PROGRAMAVIMO KALBŲ LYGINAMOJI ANALIZĖ Magistro baigiamasis darbas Darbo

More information

Principles of Computer Architecture Processors Lecture 1

Principles of Computer Architecture Processors Lecture 1 Principles of Computer Architecture Processors Lecture 1 prof.dr. Dalius Mažeika Dalius.Mazeika@vgtu.lt http://dma.vgtu.lt Room No. L424 Lectures and evaluation Scope of the course is 3 ECTS (80 hours)

More information

Simboliai ir simbolių eilutės 2 val. Standartinės procedūros ir funkcijos darbui su simbolių eilutėmis

Simboliai ir simbolių eilutės 2 val. Standartinės procedūros ir funkcijos darbui su simbolių eilutėmis T8 Simboliai ir simbolių eilutės 2 val. Standartinės procedūros ir funkcijos darbui su simbolių eilutėmis 1 Kintamasis, kurio tipas nurodomas žodžiu char, skirtas simboliui saugoti. var a, b : char; Su

More information

Interneto technologijų taikymai

Interneto technologijų taikymai Interneto technologijų taikymai Mantas Puida (mantasp@gmail.com) VI paskaita Entity pirminis raktas Kiekviena Entity klasė privalo turėti pirminį raktą (Primary Key). Jei turima Entity objektų hierarchija,

More information

C programos struktūra ir funkcijos

C programos struktūra ir funkcijos C programos struktūra ir funkcijos 1. C programą sudaro 1 arba daugiau failų (arba kompiliavimo vienetų). programa ::= { failas 1+ 2. C programos failas tai vienas paskui kitą einantys kintamųjų, funkcijų

More information

Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos struktūra; Sudaroma galimy

Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos struktūra; Sudaroma galimy C programavimo kalba 12 paskaita (Daugiafailinės programos, laiko ir datos funkcijos) Kodėl programą sudaro daug failų? Sukurtos tipinės funkcijų galėtų būti panaudojamos dar kartą; Sudaroma aiškesnė programos

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Klasės, klasių savybės, vardų erdvės (3 paskaita) OOP Struktūrinio programavimo modelio problema: Didelės programos tampa labai sudėtingos t.y. egzistuoja tūkstančiai kintamųjų ir

More information

Paprastų lentelių kūrimas

Paprastų lentelių kūrimas HTML lentelės Lentelės Informacijos pateikimas HTML-dokumentuose lentelių pagalba yra vienas iš dažniausiai naudojamų. HTML kalboje lentelės yra naudojamos ne tik tradiciškai, kaip duomenų pateikimo metodas,

More information

2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai

2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai Pavyzdys A 2017 m. pagrindinės sesijos informacinių technologijų valstybinio brandos egzamino programavimo užduoties galimi sprendimai int konvertuojamas(int skaic, int id); char konvertuojamas2(int dal);

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Rodyklė this, C++ string klasė (9 paskaita) Rodyklėthis Visos objekto funkcijos gali naudotis rodykle this, kuri rodo į patį objektą. Tokiu būdu kiekviena funkcija gali rasti objekto,

More information

ELEKTRONINIŲ PROJEKTŲ RENGIMO IR VALDYMO SISTEMA

ELEKTRONINIŲ PROJEKTŲ RENGIMO IR VALDYMO SISTEMA ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA Asta Drukteinien ELEKTRONINIŲ PROJEKTŲ RENGIMO IR VALDYMO SISTEMA MAGISTRO DARBAS Darbo vadov : Doc. S. Turskien Recenzentas:

More information

ĮVADAS JVM Java Virtual Machine Java virtualios mašinos (JVM) JVM write once, run everywhere

ĮVADAS JVM Java Virtual Machine Java virtualios mašinos (JVM) JVM write once, run everywhere ĮVADAS The Java programming language was introduced in 1995 by Sun Microsystems which has since merged into Oracle Corporation. Derived from languages such as C and C++. Pradžioje Java buvo skirta programuoti

More information

Parengė ITMM Artūras Šakalys

Parengė ITMM Artūras Šakalys 29 pamoka (Kodo narstymas - hakingas) For ciklas Užduotys. Supraskite pateiktą uždavinį ir kodą (FreePascal) ir perrašykite jį C++ kalboje. Uždavinį renkamės pagal sėdimos prie kompiuterio vietos numerį.

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba I/O biblioteka (2 paskaita) I/O operatoriai Išvedimo > #include using namespace std; void main() { float A = 18.236; cout

More information

Pažintis su C++ Builder

Pažintis su C++ Builder Pažintis su C++ Builder Turinys C++ Builder aplinka... 2 Komponentai, jų savybės ir metodai, įvykiai... 2 Programos objektų savybių keitimas... 4 Vartotojo programos kūrimas, saugojimas ir vykdymas...

More information

KAUNO TECHNOLOGIJOS UNIVERSITETAS

KAUNO TECHNOLOGIJOS UNIVERSITETAS KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS VALDIKLIŲ PROGRAMAVIMAS STANDARTO IEC 61131-3 KALBOMIS Referatas Atliko: Kęstutis Valinčius Kaunas 2011 Turinys 1 Įvadas... 3 2 Struktūriniai elementai...

More information

Uždavinių sprendimas MATLAB aplinkoje

Uždavinių sprendimas MATLAB aplinkoje Operacijų tyrimas. Įvadas. Laboratoriniai darbai 1 Uždavinių sprimas MATLAB aplinkoje Matlab tai interaktyvi sistema, skirta atlikti inžinerinius bei mokslinius skaičiavimus. Sistemos aplinkoje galima

More information

Interaktyviame režime: visi 5 etapai vykdomi nuosekliai; DBVS SQL sakinius interpretuoja. Programose: dalis etap gali bti atlikti kompiliuojant.

Interaktyviame režime: visi 5 etapai vykdomi nuosekliai; DBVS SQL sakinius interpretuoja. Programose: dalis etap gali bti atlikti kompiliuojant. 8. SQL sakiniai taikomosiose programose SQL gali bti vartojama dviem režimais: interaktyviai taikomosiose programose Dvilypumo privalumai: interaktyvaus režimo prieinamos ir programose; SQL derinamas interaktyviai

More information

Sisteminio lygmens projektavimo automatizavimas naudojant aktoriais paremtą modeliavimą ir UML

Sisteminio lygmens projektavimo automatizavimas naudojant aktoriais paremtą modeliavimą ir UML KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS PROGRAMŲ INŽINERIJOS KATEDRA Linas Ramanauskas Sisteminio lygmens projektavimo automatizavimas naudojant aktoriais paremtą modeliavimą ir UML Magistro

More information

double *pdouble1, *pdouble2, *pdouble3, double4;

double *pdouble1, *pdouble2, *pdouble3, double4; 11. RODYKLĖS Rodyklė (angl. pointer) kintamasis, saugantis kito konkretaus tipo kintamojo adresą. Rodyklės taikomos: - Netiesioginei prieičiai prie kintamojo - Prieičiai prie masyvo elementų - Argumentų

More information

Sequential Nonlinear Mapping versus Simultaneous One

Sequential Nonlinear Mapping versus Simultaneous One INFORMATICA, 2002, Vol. 13, No. 3, 333 344 333 2002 Institute of Mathematics and Informatics, Vilnius Sequential Nonlinear Mapping versus Simultaneous One Algirdas Mykolas MONTVILAS Institute of Mathematics

More information

PHP Lietuviškai. Turinys

PHP Lietuviškai. Turinys PHP Lietuviškai Informacija iš interneto pakampių surinko, visa savaitgalį prie Easy PDF sėdėjo ir kankinosi Justinas L. aka scooox. Taigi, kad visi girdėtų, sakau: šitas dokumentas yra surinktas iš visų

More information

I. FFDATA STRUKTŪROS APRAŠYMAS

I. FFDATA STRUKTŪROS APRAŠYMAS PATVIRTINTA Valstybinio socialinio draudimo fondo valdybos prie Socialinės apsaugos ir darbo ministerijos direktoriaus 2010 m. birželio 4 d. Nr. V-243 (Valstybinio socialinio draudimo fondo valdybos prie

More information

Paveikslėliai. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras.

Paveikslėliai. Lekt. dr. Pijus Kasparaitis m. m. pavasario semestras. Paveikslėliai Lekt. dr. Pijus Kasparaitis pkasparaitis@yahoo.com 2008-2009 m. m. pavasario semestras Klasė Image Priklauso paketui java.awt Abstrakti klasė paveldėta iš Object Tai visų grafinių paveikslėlių

More information

STUDIJŲ PROGRAMOS PAVADINIMAS

STUDIJŲ PROGRAMOS PAVADINIMAS AUKŠTOSIOS MOKYKLOS PAVADINIMAS PATVIRTINTA STUDIJŲ PROGRAMOS PAVADINIMAS KETINAMOS VYKDYTI STUDIJŲ PROGRAMOS APRAŠAS Aukštosios mokyklos vadovas (pareigos)... (laipsnis) Vardas Pavardė (parašas) Programos

More information

KOMPIUTERIŲ TINKLAI. 5 paskaita Tinklo lygmuo, IP protokolas

KOMPIUTERIŲ TINKLAI. 5 paskaita Tinklo lygmuo, IP protokolas KOMPIUTERIŲ TINKLAI 5 paskaita Tinklo lygmuo, IP protokolas Lokalus tinklas (kartojimas) Lokalaus tinklo technologijos: Kokius žinote prieigos prie terpės metodus? Kas yra Ethernet, kokie jo skiriamieji

More information

KLIENTŲ DUOMENŲ BAZĖS IR SANTYKIO SU KLIENTAIS VALDYMO PROGRAMA

KLIENTŲ DUOMENŲ BAZĖS IR SANTYKIO SU KLIENTAIS VALDYMO PROGRAMA KTU INFORMATIKOS FAKULTETAS HENRIKAS SINICKAS KLIENTŲ DUOMENŲ BAZĖS IR SANTYKIO SU KLIENTAIS VALDYMO PROGRAMA MAGISTRO DARBAS Darbo vadovas doc. dr. Ojaras Purvinis KAUNAS 2004 TURINYS 2 1. ĮVADAS... 3

More information

Baltymų struktūrų modeliavimas naudojant HHpred ir SWISS-MODEL Laboratorinis darbas

Baltymų struktūrų modeliavimas naudojant HHpred ir SWISS-MODEL Laboratorinis darbas Baltymų struktūrų modeliavimas naudojant HHpred ir SWISS-MODEL Laboratorinis darbas Justas Dapkūnas 2017 1 Įvadas Šio darbo tikslas yra praktiškai išbandyti baltymų struktūrų modeliavimą, naudojant paprastus

More information

PROJEKTAS BRANDOS EGZAMINŲ KOKYBĖS SISTEMOS PLĖTRA. arba

PROJEKTAS BRANDOS EGZAMINŲ KOKYBĖS SISTEMOS PLĖTRA. arba EUROPOS SĄJUNGA Europos socialinis fondas Lietuvos Respublikos Švietimo ir mokslo ministerija PROJEKTAS BRANDOS EGZAMINŲ KOKYBĖS SISTEMOS PLĖTRA 2007 M. INFORMACINIŲ TECHNOLOGIJŲ PILOTINĖS UŽDUOTIES Testas

More information

PAŽINTIS SU PROGRAMŲ LIETUVINIMU. Gintautas Grigas

PAŽINTIS SU PROGRAMŲ LIETUVINIMU. Gintautas Grigas PAŽINTIS SU PROGRAMŲ LIETUVINIMU Gintautas Grigas el. p. Gintautas.Grigas@mii.vu.lt Programos vertimas į kitą kalbą ir jos pritaikymas tos kalbos aplinkai vadinamas lokalizavimu. Atskiras lokalizavimo

More information

OBJEKTŲ SAVYBIŲ MODELIO GRAFINIS REDAKTORIUS

OBJEKTŲ SAVYBIŲ MODELIO GRAFINIS REDAKTORIUS KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS INFORMACIJOS SISTEMŲ KATEDRA Saulius Menkevičius OBJEKTŲ SAVYBIŲ MODELIO GRAFINIS REDAKTORIUS Magistro darbas Vadovas doc. dr. B. Paradauskas KAUNAS,

More information

Paskirstytos atminties lygiagretusis programavimas Įvadas į MPI

Paskirstytos atminties lygiagretusis programavimas Įvadas į MPI Paskirstytos atminties lygiagretusis programavimas Įvadas į MPI Distributed memory parallel programming Paskirstytos atminties lygiagretieji kompiuteriai Kiekvienas procesorius turi tik savo nuosavą atmintį

More information

ŽILVINAS VAIRA. Programinės įrangos kūrimo technologijos. Mokomoji priemonė

ŽILVINAS VAIRA. Programinės įrangos kūrimo technologijos. Mokomoji priemonė ŽILVINAS VAIRA Programinės įrangos kūrimo technologijos Mokomoji priemonė Projektas Socialinių mokslų kolegijos vykdomų studijų programų internacionalizacija kuriant atvirą aukštąją mokyklą užsienio šalių

More information

VHDL: skaitmeninių įtaisų projektavimo kalba. 1 paskaita. dr. Giedrius Masalskis

VHDL: skaitmeninių įtaisų projektavimo kalba. 1 paskaita. dr. Giedrius Masalskis VHDL: skaitmeninių įtaisų projektavimo kalba 1 paskaita dr. Giedrius Masalskis Literatūros šaltiniai Paskaitų skaidrės. Lengvai ieškoma knyga, kai reikia greitai prisiminti VHDL sintaksę, surasti pavyzdžius:

More information

4 SKYRIUS. Programuojamieji loginiai valdikliai. Įvadas

4 SKYRIUS. Programuojamieji loginiai valdikliai. Įvadas 4 SKYRIUS Programuojamieji loginiai valdikliai Įvadas Programuojamieji loginiai valdikliai tai esminis pramonės automatizavimo veiksnys. Juos naudojant galima lanksčiai prisitaikyti prie besikeičiančių

More information

HTML dokumentai. Praktinės užduotys

HTML dokumentai. Praktinės užduotys HTML dokumentai Praktinės užduotys 1. DzSoft PHP Editor šablonai Pakeiskite HTML šabloną į: ... Programos

More information

Tautvydas Dagys Microsoft Lietuva

Tautvydas Dagys Microsoft Lietuva Tautvydas Dagys Microsoft Lietuva Programos akademinėms institucijoms ir studentams Studentų partnerių programa Akademinės institucijoms Studentams MSDN AA Tai efektyvus būdas aprūpinti savo laboratorijas/klases

More information

ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA. Mindaugas Gapšys BAKALAURO DARBAS

ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA. Mindaugas Gapšys BAKALAURO DARBAS ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA Mindaugas Gapšys Informatikos specialybės IV kurso dieninio skyriaus studentas Bash skriptų panaudojimas Unix/Linux operacinių

More information

KAUNO TECHNOLOGIJOS UNIVERSITETAS PASLAUGŲ ARCHITEKTŪROS MODELIŲ KŪRIMAS VEIKLOS PROCESŲ MODELIŲ PAGRINDU

KAUNO TECHNOLOGIJOS UNIVERSITETAS PASLAUGŲ ARCHITEKTŪROS MODELIŲ KŪRIMAS VEIKLOS PROCESŲ MODELIŲ PAGRINDU KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS Jurgita Krukonytė PASLAUGŲ ARCHITEKTŪROS MODELIŲ KŪRIMAS VEIKLOS PROCESŲ MODELIŲ PAGRINDU Baigiamasis magistro projektas Vadovas doc. dr. T. Skersys

More information

C# ir VB.NET palyginimas taikomųjų programų kūrimo požiūriu

C# ir VB.NET palyginimas taikomųjų programų kūrimo požiūriu VILNIAUS PEDAGOGINIS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA Arnoldas Judinas C# ir VB.NET palyginimas taikomųjų programų kūrimo požiūriu Magistro baigiamasis darbas Darbo

More information

MD3 Integrated Model-Driven Data Design for Objects, XML, and Relational Databases

MD3 Integrated Model-Driven Data Design for Objects, XML, and Relational Databases ISSN 392-056. INFORMACIJOS MOKSLAI. 2009 50 MD3 Integrated Model-Driven Data Design for Objects, XML, and Relational Databases Darius Šilingas UAB Baltijos programinė įranga mokymų skyriaus vadovas No

More information

II SEKCIJA. Duomenų bazės ir modeliai

II SEKCIJA. Duomenų bazės ir modeliai II SEKCIJA Duomenų bazės ir modeliai VEIKLOS TAISYKLIŲ SAUGYKLA, INTEGRUOTA SU VEIKLOS TAISYKLIŲ IŠKVIETIMO MECHANIZMU 1 Rimantas Butleris, Liudas Motiejūnas Kauno technologijos universitetas Straipsnyje

More information

Web technologijos. Hostingas JavaScript PHP

Web technologijos. Hostingas JavaScript PHP jquery & PHP Web technologijos Hostingas JavaScript PHP Kelios hostingo kompanijos serveriai.lt hostex.lt hostinger.lt Nemokamas hostingas su PHP/mysql http://mindaugas.zz.mu/jm1.html Hostingo paslaugų

More information

DUOMENŲ BAZIŲ VALDYMO SISTEMŲ ANALIZĖ

DUOMENŲ BAZIŲ VALDYMO SISTEMŲ ANALIZĖ DUOMENŲ BAZIŲ VALDYMO SISTEMŲ ANALIZĖ Renata Baronienė, Egidijus Paliulis Šiaulių universitetas, Technologijos fakultetas Įvadas Kasmet didėja kaupiamų, saugojamų ir apdorojamų duomenų kiekiai ir apimtys.

More information

JAKUŠEV DEVELOPMENT, ANALYSIS AND APPLICATIONS OF THE TECHNOLOGY FOR PARALLELIZATION OF NUMERICAL ALGORITHMS FOR SOLUTION OF PDE AND SYSTEMS OF PDES

JAKUŠEV DEVELOPMENT, ANALYSIS AND APPLICATIONS OF THE TECHNOLOGY FOR PARALLELIZATION OF NUMERICAL ALGORITHMS FOR SOLUTION OF PDE AND SYSTEMS OF PDES Aleksandr JAKUŠEV DEVELOPMENT, ANALYSIS AND APPLICATIONS OF THE TECHNOLOGY FOR PARALLELIZATION OF NUMERICAL ALGORITHMS FOR SOLUTION OF PDE AND SYSTEMS OF PDES Summary of Doctoral Dissertation Technological

More information

char *strstmt; /* - kintamasis SELECT sakiniui */ / Išskiriame atmint kiekvieno stulpelio reikšmei. */

char *strstmt; /* - kintamasis SELECT sakiniui */ / Išskiriame atmint kiekvieno stulpelio reikšmei. */ 8.9. Dinamini užklaus vykdymas Sudarant program, kuri išvest vartotojo pasirinktos lentel s ir pasirinkt jos stulpeli reikšmes, negalime aprašyti bazini kintam j, nes nežinome: stulpeli skai iaus; stulpeli

More information

HTML dokumentai aprašo tinklalapius. HTML dokumentus sudaro HTML gairės ir grynas tekstas. HTML dokumentai vadinami tinklalapiais.

HTML dokumentai aprašo tinklalapius. HTML dokumentus sudaro HTML gairės ir grynas tekstas. HTML dokumentai vadinami tinklalapiais. 1 P u s l a p i s HTML dokumentai HTML kalba HTML yra kalba, naudojama tinklalapių aprašymui. HTML kilo iš HyperText Markup Language. HTML nėra programavimo kalba, ji yra žymėjimo kalba. Žymėjimo kalba

More information

14. GNU operacinės sistemos komponentas Linux

14. GNU operacinės sistemos komponentas Linux 14. GNU operacinės sistemos komponentas Linux 99 14. GNU operacinės sistemos komponentas Linux Čia trumpai pristatysime GNU/Linux istoriją, kodėl kai kas rašo GNU/Linux, kas yra Linux distributyas. Unix,

More information

1 iš 24. RIBOTO NAUDOJIMO (iki teisëtai atskleidþiant vokus, kuriuose yra valstybinio brandos egzamino uþduoties ar jos dalies turinys)

1 iš 24. RIBOTO NAUDOJIMO (iki teisëtai atskleidþiant vokus, kuriuose yra valstybinio brandos egzamino uþduoties ar jos dalies turinys) 1 iš 24 (iki teisëtai atskleidþiant vokus, kuriuose yra valstybinio brandos egzamino uþduoties ar jos dalies turinys) LIETUVOS RESPUBLIKOS ÐVIETIMO IR MOKSLO MINISTERIJA NACIONALINIS EGZAMINØ CENTRAS 2009

More information

Objektinis programavimas su C++ naudojant Qt 4

Objektinis programavimas su C++ naudojant Qt 4 Vilniaus Universitetas Matematikos ir Informatikos fakultetas Kompiuterijos katedra Saulius Narkevičius Objektinis programavimas su C++ naudojant Qt 4 mokomoji priemon ruduo 2007 Turinys Pratarm...5 Literatūra...7

More information

MINING FREQUENT SEQUENCES IN LARGE DATA ARRAYS

MINING FREQUENT SEQUENCES IN LARGE DATA ARRAYS INSTITUTE OF MATHEMATICS AND INFORMATICS VYTAUTAS MAGNUS UNIVERSITY Romanas Tumasonis MINING FREQUENT SEQUENCES IN LARGE DATA ARRAYS Summary of Doctoral Dissertation Physical Sciences (P 000) Informatics

More information

LOGINĖS DB SCHEMOS ATSTATYMAS NAUDOJANT JDBC

LOGINĖS DB SCHEMOS ATSTATYMAS NAUDOJANT JDBC LOGINĖS DB SCHEMOS ATSTATYMAS NAUDOJANT JDBC Bronius Paradauskas, Aurimas Laurikaitis, Sigitas Paulavičius, Anna Truncaitė Kauno technologijos universitetas, Informacijos sistemų katedra, Studentų g. 50,

More information

Trigeris, realizuojantis dalykin taisykl darbuotojas negali dalyvauti daugiau nei 3 projektuose : trigerio kamienas - vienas ar keli SQL sakiniai,

Trigeris, realizuojantis dalykin taisykl darbuotojas negali dalyvauti daugiau nei 3 projektuose : trigerio kamienas - vienas ar keli SQL sakiniai, 7.5. Dalykins taisykls ir trigeriai 7.5.1. Dalykini taisykli užtikrinimas Duomen vientisumas yra tampriai susijs su vidine konkreios organizacijos darbo tvarka ir galiojaniomis joje taisyklmis, pvz.: darbuotojas

More information

KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS INFORMACIJOS SISTEMŲ KATEDRA

KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS INFORMACIJOS SISTEMŲ KATEDRA KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS INFORMACIJOS SISTEMŲ KATEDRA Giedrius Tamulis Dalykinės srities kalbų kūrimo UML MagicDraw aplinkoje metodika ir šios metodikos pritaikymas, kuriant

More information

KRISTINA LAPIN PROGRAMAVIMAS PASKALIU IR C. II dalis MATEMATIKOS IR STATISTIKOS STUDIJŲ KRYPČIŲ PIRMO KURSO STUDENTAMS

KRISTINA LAPIN PROGRAMAVIMAS PASKALIU IR C. II dalis MATEMATIKOS IR STATISTIKOS STUDIJŲ KRYPČIŲ PIRMO KURSO STUDENTAMS VILNIAUS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS PROGRAMŲ SISTEMŲ KATEDRA KRISTINA LAPIN PROGRAMAVIMAS PASKALIU IR II dalis MATEMATIKOS IR STATISTIKOS STUDIJŲ KRYPČIŲ PIRMO KURSO STUDENTAMS

More information

Atminties technologijos

Atminties technologijos Atminties technologijos 3 paskaita RAM (laisvosios kreipties atmintis) Atminties hierarchija Kreipties trukmė Talpa Kompiuterio resursai apibrėžiami pagal lokališkumo principą (laike ir erdvėje), kas leidžia

More information

I.SAF DUOMENŲ RINKMENOS XML STRUKTŪROS APRAŠO SPECIFIKACIJA

I.SAF DUOMENŲ RINKMENOS XML STRUKTŪROS APRAŠO SPECIFIKACIJA VALSTYBINĖ MOKESČIŲ INSPEKCIJA PRIE LIETUVOS RESPUBLIKOS FINANSŲ MINISTERIJOS I.SAF DUOMENŲ RINKMENOS XML STRUKTŪROS APRAŠO SPECIFIKACIJA Versija 1.2.1 159 lapai VILNIUS 2016-10-12 2 Dokumento versijos

More information

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Standartinė šablonų biblioteka (STL) Duomenų struktūros (11paskaita) Šablonai Programuojant egzistuoja situacijos, kai reikia atlikti tuos pačius veiksmus su skirtingais duomenų

More information

Ian Sommerville 2008 Software Engineering, 8th edition. Chapter 28 Slide 1. Tikslai

Ian Sommerville 2008 Software Engineering, 8th edition. Chapter 28 Slide 1. Tikslai Programinės įrangos kūrimo proceso tobulinimas Ian Sommerville 2008 Software Engineering, 8th edition. Chapter 28 Slide 1 Tikslai Paaiškinti programinės įrangos kūrimo proceso tobulinimo principus. Paaiškinti,

More information

Programos kodo generavimas naudojant UML veiksmų semantiką

Programos kodo generavimas naudojant UML veiksmų semantiką KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS INFORMACIJOS SISTEMŲ KATEDRA Linas Ablonskis Programos kodo generavimas naudojant UML veiksmų semantiką Magistro darbas Kalbos konsultantė Lietuvių

More information