C# IR JAVA PROGRAMAVIMO KALBŲ LYGINAMOJI ANALIZĖ

Size: px
Start display at page:

Download "C# IR JAVA PROGRAMAVIMO KALBŲ LYGINAMOJI ANALIZĖ"

Transcription

1 LIETUVOS EDUKOLOGIJOS UNIVERSITETAS GAMTOS, MATEMATIKOS IR TECHNOLOGIJŲ FAKULTETAS INFORMATIKOS KATEDRA Arvydas Putna C# IR JAVA PROGRAMAVIMO KALBŲ LYGINAMOJI ANALIZĖ Magistro baigiamasis darbas Darbo vadovas: doc. Dr. Grigorijus Melničenko Vilnius, 215

2 TURINYS ĮVADAS... 4 Darbo tikslas... 4 Iškelti uždaviniai... 5 TEORINĖ DALIS... 6 JAVA PROGRAMAVIMO KALBA... 6 Java programavimo kalbos istorija... 6 Java kalbos savybės... 6 Java programos veikimas... 7 Java programos kodo kompiliavimas tiesiogiai į mašininį kodą... 8 Darbo pradžia su Java... 9 C# PROGRAMAVIMO KALBA... 9 C# programavimo kalbos istorija...1 C# kalbos savybės...1 C# programos veikimas...11 C# programos kodo kompiliavimas tiesiai į mašininį kodą...12 Darbo pradžia su C#...12.NET Framework Mono projektas Programa C#irC++/CRLkalbomis...16 Duomenų tipai Matematiniai skaičiavimo paketai EKSPERIMENTINĖ DARBO DALIS Naudojama kompiuterinė ir programinė įranga Laiko skaičiavimas Paprastų matematinių operacijų greičiai

3 Duomenų skaitymas iš failo naudojant srautus Trikampių plotų skaičiavimas Kvadratinių lygčių sprendimas Duomenų įrašymas į tekstinius failus Lokaliosios duomenų bazės Darbo pradžia su SQLite duomenų baze Darbas su SQLite duomenų baze...48 Duomenų skaitymas iš SQLite duomenų bazės...49 Doumenų įrašymas į SQLite duomenų bazę...53 Darbo pradžia su Access duomenų baze Darbas su Access duomenų baze...56 Duomenų skaitymas iš Access duomenų bazės...57 Duomenų įrašymas į Access duomenų bazę...6 Java baitkodo ir mašininio kodo palyginimas C# ir Java aplikacijos kūrimą mobiliesiems telefonams IŠVADOS PLAČIAU IŠVADOS TRUMPAI LITERATŪRA SANTRAUKA SUMMARY

4 ĮVADAS Parašytas ne vienas leidinys, kuriame lyginamos Java ir C# programavimo kalbos. Straipsniuose paprastai lyginami programų kodai, savybės, kuriomis pasižymi Java ar C#. Publikacijose įžvelgiamas autorių šališkumas, kai pabrėžiamos vienos programavimo kalbos savybė, kurių neturi kita. Ir neužsimenama apie silpnąsias vietas, kuriose programavimo kalba nusileidžia savo galimybėmis. Tačiau niekur nekalba, kuri programavimo kalba greičiau veikai atlikdama vienas ar kitas operacijas. Darbą sudaro du pagrindiniai skyriai. Pirmame skyriuje apžvelgiama Java ir C# kūrimo istorija, kalbų veikimo principai. Antrame skyriuje nagrinėjami Java ir C# programų greičiai vykdant tas pačias operacijas ir naudojant tuos pačius duomenis. Tyrime nagrinėjama: duomenų skaitymo iš tekstinių failų greitis, duomenų įrašymo į tekstinius failus greitis, matematinių operacijų atlikimo greitis, darbo su lokaliomis duomenų bazėmis greitis. Darbe tai pat lyginamas programų kūrimas išmaniesiems įrenginiams naudojant C# ir Java. Darbo tikslas Atlikti programavimo kalbų C# ir Java lyginamąją analizę ir nustatyti, kurią programavimo kalbą rinktis mokytis, darbui. 4

5 Iškelti uždaviniai Apžvelgti C# ir Java programavimo kalbų kūrimo istorijas. Palyginti Java ir C# tarpinio kodo (baitkodo ir pseudo) kūrimą. Palyginti Java ir C# kompiliatorius (JVM ir CRM). Palyginti vykdomųjų programų (exe) Java ir C# failų kūrimą. Palyginti Java ir C# parašyto kodo vykdymo greitį atliekant matematinius skaičiavimus. Palyginti Java ir C# parašyto kodo vykdymo rašant duomenis į failus. Palyginti Java ir C# parašyto kodo vykdymo greitį skaitant duomenis iš failų naudojant srautus buffer. Palyginti lokaliąsias duomenų Java ir C# bazes. Atlikti darbo greičių tyrimus su lokaliomis duomenų Java ir C# bazėmis. Palyginti C# ir Java aplikacijos kūrimą mobiliesiems telefonams su pavyzdžiais (interaktyviųjų knygų kūrimas). 5

6 TEORINĖ DALIS JAVA PROGRAMAVIMO KALBA Java programavimo kalbos istorija Java programavimo kalbą sukūrė: James Gosling, Patrick Naughton, Chris Warth, Ed Frank, ir Mike Sherida firmoje Sun Microsystems 1991 metais. Pirmąją veikiančią versiją sukurti užtruko 18 mėnesių. Ši kalba turėjo būti pavadinta Oak (Ąžuolas), tačiau pavadinimas buvo pakeistas į Java. Pagrindinis naujos kalbos kūrimo tikslas buvo sukurti kalbą, nepriklausomą nuo platformos (neutrali architektūrai), kalba kuria būtų galima kurti programinę įrangą įvairiausiems elektroniniams įrenginiams, nepriklausomai nuo naudojamų procesorių tipų. Norint to pasiekti, reikėjo kompiliatoriaus, kuris galėtų sukompiliuoti programas visiems procesoriams, tačiau šis sprendimas labai brangus ir užtruktų labai daug laiko. Reikėjo paprastesnio ir ekonomiškesnio sprendimo. Problema buvo išspręsta, negeneruojant programos kodo tiesiai procesoriui, bet programos kodas kompiliuojamas į specialų objektinį kodą, vadinamą baitkodu. Šį kodą toliau skaito ir vykdo Java virtuali mašina (JVM), kurią turi kiekviena kompiuterinė sistema. JVM tai speciali Sun Microsystems firmos programa, parašyta kiekvienai operacinei sistemai atskirai.21 metais sausio 27 d. Sun Microsystems firmą įsigijo Oracle ([2], p. 6). Java kalbos savybės Paprastumas Java buvo sukurta būti lengvai išmokstama ir efektyviai naudojama. Geriausia jei jau turima programavimo patirties su C++, nes Java paveldėjo sintaksę ir objektiškumą iš C ir C++ ([2], p. 11). Saugumas siunčiantis įprastą programą yra rizika, kad programos kode gali būti virusas. Pagrindinė problema, kad virusai gali prieiti prie jūsų kompiuterio resursų. Java programos užtikrina saugumą, nes programos vykdomos Java vykdymo aplinkoje ir neleidžiama prieiti prie kitų kompiuterio dalių ([2], p. 11). Objektiškumas Java nebuvo kuriama suderinta su kitomis kalbomis, todėl kūrėjai turėjo visišką laisvę. Java komanda turėjo savo požiūrį į objektus ir pasirinko geriausias objektines savybes. Neutralumas architektūrai programa parašyta, bet kurioje aplinkoje, tai pat atrodo ir kitose nepriklausomai nuo procesoriaus ir architektūros ([2], p. 11). Mobilumas programa parašyta vienoje operacinėje sistemoje veiks ir kitose ([2], p. 12). Daugiaprocesiškumas Java palaiko daugiasrautį programavimą ([2], p. 12). 6

7 Java programos veikimas Parašytas programos kodas saugomas faile su plėtiniu.java. Java kalboje labai svarbus failo vardas, Java kompiliatorius reikalauja, kad šaltinio failo vardas sutaptų su klasės vardu. Taip yra todėl, kad šiuo požiūriu Java labai jautri. Tačiau toks failų ir klasių susiejimo būdas padeda lengviau išlaikyti ir organizuoti programas. Java kompiliatorius iš šaltinio failo su plėtiniu.java sukuria failą tokiu pačiu pavadinimu su plėtiniu.class, kuriame programuotojui suprantamas kodas paverčiamas į baitkodą, kurį supranta Java virtuali mašina (JVM). Baitkodas negali būti tiesiogiai vykdomas kompiuteryje. Kompiliuojant programą kompiliatorius tikrina, ar programos kode nėra klaidų, tokių kaip praleisti kabliataškiai, neteisingi kintamųjų vardai, kintamieji naudojami už matomumo srities. Java kompiliatorius netikrina programos veikimo, tai atlieka JVM. Java virtuali mašina baitkodą paverčia į mašininį kodą, kurį supranta procesorius. Tokia sistema teoriškai leidžia tą patį programos kodą vykdyti visose operacinėse sistemose. Kiekvienai operacinei sistemai atskirai yra sukurta JVM, todėl tas pats baitkodas vykdomas vienodai nepriklausomai nuo operacinės sistemos ir procesoriaus architektūros (žr. 1pav. Java programos veikimas). Nepaisant tokio sprendimo, praktikoje visgi atsiranda problemų dėl skirtingų JVM realizacijų, jų defektų arba abstrakčios vartotojo sąsajos nesuderinimo dėl OS specifikos ([2], p. 9). 1pav. Java programos veikimas 7

8 Java programos kodo kompiliavimas tiesiogiai į mašininį kodą Nuo 26 metų vasario 8 dienos Java programos kodą galima kompiliuoti tiesiai į mašininį kodą. Tais metais buvo išleistas GNU kompiliatoriaus priedas GCJ, leidžiantis kompiliuoti Java programos kodą tiek į baitkodą, tiek ir į mašininį kodą tiesiogiai. Tai suteikia didesnį programos greitį, nei programos kodo kompiliuojant į baitkodą, o tada interpretuojant į mašininį kodą. GCJ 4. versija pristatė daug paprastesnį kūrimo modelį, skirtą perdarinėti tradicines Java programas, sukompiliuojant tiesiai į mašininį kodą, tai leidžia vykdyti programas nenaudojant tarpinio kodo. Šis kompiliatorius buvo pritaikytas Windows, Linux, Mac, Android ir kitoms aplinkoms. Naudojant GCJ kompiliatorių sukompiliuotos tokios programos kaip:eclipce, OpenOffice, Tomcat, Bittorent klientams ir kitos ([11]). Kompiliuojant Java tiesiai į mašininį kodą atsirado galimybė tiesiogiai valdyti aparatinę įrangą. Tai pat atsirado galimybė naudoti bibliotekas parašytas C, C++ ir Assambly kalbomis. Naudojant Java mašininio kodo sąsają JNI (Java Native Interface) programuotojams atsirado galimybė panaudoti metodus spręsti situacijoms, kurių negalėjo išspręsti naudojant standartines Java bibliotekas, dėl naudojamos platformos specifikos. Java programoms, sukompiliuotoms tiesiai į mašininį kodą, nebereikia JRE (Java Runtime Environment). Sukurtas projektas Excelsior JET, kuris Java programas sukompiliuoja tiesiai į mašininį kodą. Projektas Excelsior JET yra pilnai įgyvendintas Java SE 7 versijai. Šis projektas įgyvendintas aplinkoms: Microsoft Windows, Apple OS X ir Linux. Projektas yra mokamas.excelsior JET programos kaina yra $3. Licencija suteikiama neribotam laikui. Toliau programos atnaujinimas kasmet kainuoja $1. Išbandymui galima atsisiųsti pilnai funkcionuojančią bandomąją versiją, kuri veiks devyniasdešimt dienų. Excelsior JET programą galima atsisiųsti adresu: 8

9 Darbo pradžia su Java Programavimui Java kalbą būtina atsisiųsti ir įdiegti Java plėtojimo rinkinį (Java development kit JDK), nepriklausomai nuo naudojamos operacinės sistemos (žr. 2 pav. Operacinės sistemos, kuriose veikia JDK). 2 pav. Operacinės sistemos, kuriose veikia JDK Jį galima atsisiųsti šiuo adresu downloads html. Įdiegus JDK kompiuteryje galima rašyti ir kompiliuoti parašytą Java kodą. Kodą galima rašyti bet kokiame tekstiniame redaktoriuje, o jį sukompiliuoti komandinėje eilutėje, tačiau tai yra nepatogus ir lėtas būdas. Yra sukurta daug Java programavimo aplinkų: Jcreator, NetBeans, Eclipse, Jbuilder, BlueJ, Kitos. 9

10 C# PROGRAMAVIMO KALBA C# programavimo kalbos istorija Microsoft firma 2 metų viduryje išleido pirmąją C# versiją. C# programavimo kalba kilusi iš dviejų sėkmingiausių pasaulyje programavimo kalbų: C ir C++. Vyriausiasis architektas buvo Anders Hejlsberg. Iš C kalbos buvo perimta sintaksė, raktiniai žodžiai ir didžioji dalis operatorių. Objektinio programavimo modelis perimtas iš C++ kalbos. C# tai pat susijusi su kita labai sėkminga programavimo kalba Java ([1], p. 3). C# programavimo kalba buvo kuriama palaikyti.net Framework technologiją..net Framework technologija apibrėžia aplinką, kurioje leidžiama naudoti skirtingų kompiuterinių kalbų bibliotekas, kurios, suteikia saugumo, programos perkeliamumo ir bendro programavimo modelį Windows platformoje ([1], p. 8). Kompiliuojant C# programą generuojama Microsoft tarpinė kalba MSIL (Microsoft Intermediate Language). Microsoft tarpinė kalba suteikia nepriklausomybę nuo procesorių. Microsoft tarpinės kalbos idėja panaši į Java baitkodą, tačiau tai nėra tas pats. Toliau tarpinis kodas verčiamas į vykdomąjį kodą, kurį supranta procesorius. C# kalbos savybės Paprastumas beveik visi profesionalūs programuotojai moka C, C++ arba Java kalbas, neretai jas visas, todėl pereiti prie C# kalbos nekyla jokių sunkumų. Objektiškumas objektiniam programavimui buvo perimtos geriausios struktūrinio programavimo savybės ir papildytos keliomis naujomis idėjomis. Viena svarbiausių savybių mixed-language programming, tai yra galimybė programuojant viena kalba, įtraukti bibliotekas parašytas kitomis kalbomis. Ši savybė suteikia saugumą, mobilumą ir bendrą programavimo modelį Windows platformai. 1

11 C# programos veikimas Kitaip nei Java kalboje, C# programos kodo failo pavadinimas neturi sutapti su klasės vardu. Kompiliuojant programos kodą nėra gaunamas mašininis kodas, kaip ir Java kalboje. Sukuriamas failas, kuriame patalpinamas specialaus tipo pseudo kodas, vadinamas Microsoft tarpine kalba (Microsoft Intermediate Language) arba MSIL. Iš pirmo žvilgsnio MSIL labai panaši į Java baitkodą, tačiau taip nėra. MSIL skirta.net technologijai. Visos programavimo kalbos priklausančios.net standartui, tokios kaip: VB.NET, J#, C++/CLI ir kitos, yra kompiliuojamos į pseudo kodus, kuriuose skirtingi programų kodai suvienodinami. Tarpinis kodas perduodamas Common Language Runtime ( CRL) sistemai, kuri pseudo kodą paverčia mašininiu kodu. Bet kurioje aplinkoje, kurioje yra įgyvendinta CRL sistema konkrečiai sistemai ir architektūrai gal vykdyti tą patį pseudo kodą (žr. 3 pav. Kalbų priklausančių.net Framework standartui programų veikimas). Ši savybė suteikia programuotojui galimybę nekreipti dėmesio į vartotojo naudojamą įrangą ir suteikia laisvę kurti programas. Perdavus MSIL kodą CRL sistemai, aktyvuojamas JTI (Just In Time) kompiliatorius. JIT kompiliatorius MSIL kodą verčia mašininį kodą dalimis, paverčiama tik ta dalis, kuri reikalinga vykdyti programai šiuo momentu. Tokiu būdu programų veikimo greitis beveik prilygsta programavimo kalboms kaip C++, kurios programos kodą kompiliuoja tiesiai į mašininį kodą. Tai pat tokiu būdu taupoma operatyvioji atmintis [14]. 3 pav. Kalbų priklausančių.net Framework standartui programų veikimas 11

12 C# programos kodo kompiliavimas tiesiai į mašininį kodą Microsoft firma sukūrė C#.NET Native kompiliatorių, kuris programos kodą sukompiliuoja tiesiai į mašininį kodą. Programos sukompiliuotos naudojant,.net Native kompiliatorių, naudoja 15 2% mažiau atminties, paleidimo laikas sutrumpėja iki 6%. Stabili versija dar nėra sukurta ir nėra skirta produkcijos kūrimui. Šiuo metu platinama versija skirta demonstravimo ir testavimo tikslais. Microsoft firma pabrėžia, jog.net Native būtų naudojama tik virtualiose mašinose arba kompiuteriuose, kurie skirti eksperimentinės įrangos testavimui [17]. Darbo pradžia su C# Norint pradėti programuoti C# kalba Windows aplinkoje nereikia nieko įdiegti, užtenka teksto redaktoriaus. Tereikia sukurti failą su.cs plėtiniu ir jį sukompiliuoti komandinėje eilutėje. Tačiau šis būdas nėra patogus. Yra sukurtos kelios programavimo aplinkos skirtos C# kalbai: Microsoft Visual C#, Microsoft Visual Studio, Microsoft Visual Basic. Mono Develop, 12

13 .NET Framework.NET Framework yra platforma, kurią sudaro bibliotekos, kompiliatoriai ir paslaugos (Utilities). Ši platforma naudojama kurti programoms skirtoms Windows, internetui ir interneto paslaugoms (Web Serwesys)..NET platformoje kompiliavimas vyksta dviem etapais. Pirmame etape programos kodas kompiliuojamas į Microsoft tarpinę kalbą (MSIL), kai kur ji tiesiog vadina tarpine kalba (IL). Programuotojas gali pasirinkti bet kurią kalbą, kurią palaiko.net Framework technologija. Šią technologiją palaiko tokios kalbos kaip: C#, C++/CLI, VB, F#, IronPyton ir daug kitų. Kiekviena programavimo kalba turi savo kompiliatorių, kurie parašytos programos kodą paverčia tarpine kalba (IL). Tarpinė kalba suvienodina programavimo kalbų kodus. Pateiktoje lentelėje užrašyti trijų programų fragmentai, atliekantys tuos pačius veiksmus skirtingomis kalbomis (žr. 1 lentelė. Programų kodai). Pirmoje eilutėje sukuriamas tekstinės eilutės kintamasis txt, antroje eilutėje iš klaviatūros nuskaitoma ir priskiriama reikšmė, kintamajam txt. Trečioje eilutėje inicijuojamas sveikojo tipo kintamasis n, ketvirtoje eilutėje tekstinė eilutė paverčiama sveikuoju skaičiumi ir priskiriama kintamajam n. VB C# C++/CLI Dim txt AsString txt = Console.ReadLine Dim n AsInteger n = Integer.Parse(txt) String txt; txt = Console.ReadLine(); int n; n = int.parse(txt); String^ txt; txt = Console::ReadLine(); int n; n = System::Convert::ToInt32(txt); 1 lentelė. Programų kodai Iš pažiūros visi programų kodai skirtingi, tačiau kiekvieną kodą sukompiliavus gaunamas identiškas pseudo kodas. Naudojant tarpinę kalbą (IL), programos kūrėjui nebereikia galvoti apie tai, kokį kompiuterį turi vartotojas, kokią operacinę sistemą naudoja, koks procesorius kompiuteryje. Tarpinis kodas perduodamas Common Language Runtime (CRL) sistemai, kuri atsakinga už tokius veiksmus kaip, šiukšlių surinkimas, pseudo kodo pavertimo į mašininį kodą, atsako už kodo prieinamumo valdymą ir kitas funkcijas. CRL suteikia galimybę prijungti bibliotekas, parašytas kitomis kalbomis. Tam tikslui naudojama bendra duomenų tipų sistema (Common Type System CTS). CTS užtikrina, kad tie patys duomenų tipai skirtingose programavimo kalbose būtų vienodi. Duomenų tipas int iš C# ir duomenų tipas Integer iš VB yra kilę iš duomenų tipo System.Int32 naudojant bendrą tipų 13

14 sistemą. Tokia duomenų tipų kontrolė užtikrina sklandų komunikavimą tarp skirtingų programavimo kalbų. Į CTS įeina bendra kalbos specifikacija CLS (Common Language Specification). CLS apibrėžia reikalavimus, kurie turi būti užtikrinti visuose programos koduose, norint sujungti kelias programavimo kalbas ([1], p. 9). Mono projektas Mono, tai nemokamas atviro kodo projektas, siekiantis įgyvendinti.net Framework technologiją, leidžiančią kurti programas skirtingoms platformoms. Mono.NET vystymas paremtas ECMA standartu, skirtu C# ir bendrai kalbų infrastruktūrai. ECMA-334 tarptautinis C# standartas, kuriame apibrėžiama C# kalbos sintaksė, apribojimai, nustatytų reikalavimų ribos, semantines taisykles, kurios paaiškina C# programas ([3], p. 5). Projektą parėmė Novell firma, tačiau dabar ją remia firma Xamarin. Mono projektas pasiekė entuziastingą bendruomenę, kuri padėjo toliau vystyti projektą. Mono projektas apima, kūrimo įrankius ir infrastruktūrą, reikalingą vykdyti.net kliento ir serverio programas [13]. Projektą sudarantys komponentai: C# kompiliatorius Mono C# kompiliatorius gali kompiliuoti C# 1., 2., 3., 4. ir 5. versijas, apibrėžtas ECMA standartais Mono darbinė terpė (Runtime) darbinė terpė įgyvendina ECMA bendrų kalbų infrastruktūrą. Pagrindinės klasių bibliotekos Mono platforma teikia visapusišką klasių rinkinį, kuris suteikia tvirtą pagrindą kurti taikomąsias programas. Visos šios klasės suderintos su Microsoft.NET Framework klasėmis. Mono klasių biblioteka Mono tai pat siūlo daug klasių, kurios papildo pagrindines klases. Tai suteikia papildomų funkcijų, kurios yra naudingos, ypač kuriant Linux programas. Keletas klasių pavyzdžių: GTK +, Zip failai, LDAP, OpenGL, Cairo, POSIX ir kitos. Mono palaikomos aplinkos ([3], p. 21): Windows, Linux, OS X, BSD, Soleris. 14

15 Mono palaikomos procesorių architektūros: X86, X86-64, ARM, S39, PowerPC. Mono projekto trūkumai: Nėra pilnai funkcionuojanti, nes trūksta kai kurių paketų. Dalis paketų dar nestabilūs arba visai neįgyvendinti. Gali būti, kad dalis paketų visai nebus įgyvendinti. 15

16 Programa C# ir C++/CRL kalbomis Norint išbandyti programų kūrimą, naudojant dvi programavimo kalbas, buvo pasirinktos C# ir C++/CRL kalbos. Programa atlieka trikampio ploto skaičiavimą pagal Herono formulę (žr. 1 formulė. Herono formulė). C# kalba parašyta programos dalis nuskaito duomenis iš failo naudojant srautą. Toliau gauti duomenys perduodami C++/CRL kalba parašytai programos daliai, kuri apskaičiuoja perduoto trikampio plotą, toliau grąžina gautą reikšmę C# kalba parašytai daliai. Didelis trūkumas, jog C# programoje negalima tiesiogiai naudoti sukurtų C++/CRL klasių, negalima sukurti objektų, galima naudoti tik metodus. Tai pat tiesiogiai negalima kreiptis į sukurtus C++/CRL failus, būtina sukurti atskirą DLL failą, kuriame nurodoma, jog C++/CRL programos kodas būtų paruoštas eksportavimui. Tik per šį failą C# programa gali perduoti duomenis ir gauti rezultatus iš C++/CRL programos (žr. 1 programos kodas. DLL failo programos kodas). #include D:\C++ darbai\cppclass\cppclass\header.h #include D:\C++ darbai\cppclass\cppclass\body.cpp extern C declspec(dllexport) double plotas_s(int a, int b, int c) { CppKlase MK(a, b, c); return MK.plotas(); 1 programos kodas. DLL failo programos kodas Kode įtraukiami sukurti C++/CRL failai, toliau užrašoma būtina komanda extern C declspec(dllexport), kuri nurodo, kad įtrauktų programų failų kodai turi būti paruošiami eksportavimui į kitą programavimo kalbą. Toliau sukuriama funkcija su parametrais ir nurodomas jos grąžinamų duomenų tipas. Tarp riestinių skliaustų sukuriamas objektas, kuris konstruktoriui perduoda reikšmes ir grąžinama reikšmė, gauta iš sukurto objekto metodo. C# programai bus matomi tik metodai aprašyti funkcijose, kitu atveju programai jie nebus prieinami, net jei klasėje nurodoma, kad metodas viešas (public). C++/CRL faile header.h sukuriama klasė (žr. 2 programos kodas. Header.h failas). Klasės viduje apibrėžiami uždari sveikojo tipo parametrai ir viešas klasės konstruktorius ir viešas metodas. Pirmoje eilutėje privaloma užrašyti #pragmaonce, norint tą failą naudoti kitose programose. 16

17 #pragmaonce class CppKlase { public: CppKlase::CppKlase(int a, int b, int c); double plotas(); private: int x; int y; int z; ; 2 programos kodas. Header.h failas Kitame body.cpp faile aprašomi veiksmai, kuriuos atliks header.h faile deklaruotas metodas ir konstruktorius (žr. 3 programos kodas. Body.cpp failas). Į kodą būtina įterpti header.h failą. Konstruktoriuje globaliems sveikojo tipo kintamiesiems priskiriamos reikšmės, kurios buvo perduodamos sukūrus objektą. Metode plotas() patikrinamos perduotos trikampio kraštinės, jeigu jos sudaro trikampį, tuomet apskaičiuojamas trikampio plotas. C# programai grąžinamas trikampio plotas, jei sąlyga patenkinama arba -1, jei sąlyga netenkinama. #pragmaonce #include<math.h> #include header.h CppKlase::CppKlase(int a, int b, int c) { x = a; y = b; z = c; double CppKlase::plotas() { double p = (x + y + z)/2.; double S; if((x + y) > z && (x + z) > y && (y + z) > x ) { S = sqrt(p * (p x) * (p y) * (p z)); Else { S = -1; return S; 3 programos kodas. Body.cpp failas 17

18 Norint jau sukurtą C++/CRL programą panaudoti, C# programoje būtina įkelti klasę System.Runtime.InteropServices, kuri leidžia C# programoje naudoti.dll failus. Toliau būtina importuoti.dll failą. Šiam darbui naudojama funkcija [DllImport( D:\\C++ darbai\\dll_failas\\ Debug\\DLL_failas.dll, CallingConvention = CallingConvention.Cdecl)], funkcijos parametruose nurodomas kelias iki DLL_failas.dll failo ir parametras, skirtas subalansuoti prisijungimą. Toliau būtina užrašyti publicstaticextern ir nurodomas metodas apibrėžtas.dll faile. Nurodomi parametrai skirti metodui ir grąžinamų duomenų tipui. Toliau tokį metodą galima naudoti kaip paprastą metodą (žr. 4 programos kodas. C# kodas). using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Runtime.InteropServices; namespace Csharp_Cpp { Class Program { [DllImport( D:\\C++ darbai\\dll_failas\\debug\\dll_failas.dll, CallingConvention = CallingConvention.Cdecl)] publicstaticexterndouble plotas_s(int a, int b, int c); staticvoid Main(string[] args) { int a = 5; int b = 4; int c = 3; double S = plotas_s(a, b, c); 4 programos kodas. C# kodas Toks skirtingų programavimo kalbų naudojimas vienai programai galimas tik Windows aplinkoje. Nemokamas atviro kodo projektas Mono nepalaiko ir nebus kuriama C++/CLI, nes tam sukurti reikia daug išteklių, o vartotojų, kurie galėtų tuo naudotis, nėra daug. 18

19 Duomenų tipai Java paprastieji duomenų tipai Duomenų tipas Dydis atmintyje Reikšmių sritis Sveikųjų skaičių duomenų tipai byte 8 bitai nuo -128 iki 127 short 16 bitų nuo iki int 32 bitai nuo iki long 64 bitai nuo iki Realiųjų skaičių duomenų tipai float 32 bitai nuo-3.4e 38 iki 3.4e+38 double 64 bitai nuo±4.9e 324 iki ±1.8e+38 Loginis duomenų tipas boolean 1 bitas True arba false Simbolinis duomenų tipas cher 16 bitų simboliai Vardinis duomenų tipas enum 2 lentelė. Paprastieji Java duomenų tipai C# paprastieji duomenų tipai Duomenų tipas Dydis atmintyje Reikšmių sritis Sveikųjų skaičių duomenų tipai byte 8 bitai nuo iki 255 sbyte 8 bitai nuo -128 iki 127 short 16 bitų nuo iki ushort 16 bitų nuo iki int 32 bitai nuo iki uint 32 bitai nuo iki 4,294,967,295 long 64 bitai nuo iki ulong 64 bitai nuo iki 2 64 Realiųjų skaičių duomenų tipai float 32 bitai nuo-3.4e 38 iki 3.4e+38 double 64 bitai nuo ± 4.9e 324 iki ±1.8e+38 decimal 128 bitai nuo 1e 28 iki 7.9e+28 Loginis duomenų tipas bool 1 bitas True arba false Simbolinis duomenų tipas cher 16 bitų simboliai Vardinis duomenų tipas enum 3 lentelė. Paprastieji C# duomenų tipai C# turi daugiau sveikųjų duomenų tipų, nei Java. Visi sveikųjų duomenų tipai esantys Java yra ir C# kalboje, tačiau C# papildyta analogiškais duomenų tipais, kurie skiriasi tik reikšmių sritimi (žr. 2 19

20 lentelė. Paprastieji Java duomenų tipai, 3 lentelė. Paprastieji C# duomenų tipai). Papildomi sveikųjų duomenų tipai skaičių saugojimui naudoja tą patį atminties kiekį, tačiau juose nėra saugomi neigiami skaičiai. C# turi daugiau realiųjų duomenų tipų, nei Java kalba. Abejose kalbose naudojami float ir double duomenų tipai turi tas pačias savybes, tokias kaip reikšmių sritys ir naudojamas atminties dydis skaičiaus talpinimui. C# turi papildomą decimal duomenų tipą, skirtą saugoti realiuosius skaičius. Šiam duomenų tipui skiriami 128 bitai, tačiau jo reikšmių sritis mažesnė, nei float duomenų tipo, nors jam skiriamas tik 32 bitai. Taip yra todėl, kad šis duomenų tipas gali saugoti 28 simbolius po kablelio. Toks tikslumas naudojamas norint išvengti skaičių apvalinimo paklaidų, kurios atsiranda naudojant kitus realiųjų skaičių duomenų tipus. Dažniausiai šis duomenų tipas naudojamas piniginėse operacijose, dėl savybės išvengti apvalinimo paklaidų. Java ir C# kitaip nei kitos programavimo kalbos, kaip C, C++ ir daugelis kitų simbolių, kodavimui nenaudoja 8 bitų. Abejose kalbose simboliams skiriama 16 bitų, kitaip dar vadinamas Unikodu. C#sudėtingieji duomenų tipai Java sudėtingieji duomenų tipai Tipas Paaiškinimas Tipas Paaiškinimas array masyvas array masyvas String simbolių eilutė String simbolių eilutė class klasė Class klasė interface sąsaja Interface sąsaja delegate delegatas 5 lentelė. Sudėtingieji Java duomenų tipai struct struktūra 4 lentelė. Sudėtingieji C# duomenų tipai Abejose programavimo kalbose naudojami tokie patys sudėtingieji duomenų tipai, kaip masyvai, simbolių eilutės arba simbolių masyvai, klasės, sąsajos. Tačiau C# turi papildomus du sudėtinguosius duomenų tipus delegate ir struct. Duomenų tipas delegate skirtas funkcijų inkapsuliacijai. Java kalboje struktūros tipas realizuojamas naudojant klases (žr. 4 lentelė. Sudėtingieji C# duomenų tipai, 5 lentelė. Sudėtingieji Java duomenų tipai). Inkapsulecija tai saugus metodas klasės laukus padaryti neprieinamus kitoms klasėms. Taip gaunamas juodos dėžės principas, kai objektui perduodami parametrai, bet nežinoma kaip klasėje viskas realizuota. Delegatas yra saugi funkcijų rodyklė. Naudojant delegatą galima kreiptis į bet kurią to paties tipo funkciją su vienodais parametrais, naudojant tą patį delegate objektą. Java kalboje nėra tokio duomenų tipo. Inkalsulecija Java kalboje realizuojama naudojant klases. 2

21 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Delegatas{ public delegate void Vaiksmas(int a, int b); class Program{ static void Main(string[] args) { Vaiksmas delegatas = new Vaiksmas(sudetis); delegatas(5, 5); delegatas = new Vaiksmas(atimtis); delegatas(5, 5); delegatas = new Vaiksmas(daugyba); delegatas(5, 5); delegatas = new Vaiksmas(dalyba); delegatas(5, 5); Console.Read(); Static void sudetis(int x, int y) { Console.WriteLine(x y + = + (x + y)); Static void atimtis(int x, int y) { Console.WriteLine(x + + y + = + (x y)); Static void daugyba(int x, int y) { Console.WriteLine(x + * + y + = + (x * y)); Static void dalyba(int x, int y) { Console.WriteLine(x + / + y + = + (x / (double)y)); 5 programos kodas. Delegato naudojimas 21

22 Matematiniai skaičiavimo paketai Naudojant Java programavimo kalbą sukurta daug programų skaičiavimams ir duomenų apdorojimui. ND4J matematinis paketas algebriniams ir matricinėms skaičiavimams. Matlab matematinis paketas skirtas skaičiavimams su matricomis, funkcijų braižymui, algoritmų įgyvendinimui. ScaViS sistema duomenų tirybai ir vizualizavimui. Scilab nemokamas atviro kodo matematinis paketas inžineriniams ir moksliniams darbams. COMSOL Multiphysics fizikinis paketas modeliavimui ir simuliavimui. Mathematica simbolinė matematinė sistema, moksliniams ir inžineriniams skaičiavimams. Maple matematinis paketas inžineriniams ir moksliniams tyrimams. Baudline paketas signalų analizei. Dataplot duomenų analizės ir vizualizavimo, prognozavimo paketas. EJS arba Easy Java Simulations paketas interaktyvioms simuliacijoms. ELKI paketas duomenų gavybai. Sherlock Automated Design Analysis sistema skirta elektronikos projektavimui, testavimui ir tikrinti patikimumą. Naudojant Microsoft C# programavimo kalbą nebuvo rasta programų skaičiavimams ar duomenų tyrimui. Naudojant nemokamą atviro kodo projektą Mono C# sukurti trys matematiniai paketai skirti matematiniams skaičiavimams. Math.NET Numerics matematinis paketas inžineriniams ir moksliniams tyrimams. ILNumeric.NET matematinis paketas inžineriniams ir moksliniams tyrimams ir vizualizavimui. 22

23 DnAnalytics papildomai prijungiama sistema prie Math.NET Numerics, kuri išplečia apdorojamų duomenų kiekį, prideda papildomų galimybių. Naudojant Mono C# parašytos programos veikia daugelyje platformų, kaip ir parašytos programos su Java. COMSOL Multiphysics yra baigtinių elementų analizės ir modeliavimo programinė įranga, skirta įvairių fizikos ir inžinerijos reiškinių modeliavimui ir imitacijai, visų pirma, susietųjų ir pereinamųjų procesų ir sistemų analizei pasitelkiant modeliavimui reikiamus modulius. COMSOL Multiphysics gali dirbti naudojant lygiagrečiuosius skaičiavimus. Palaikomos tiesioginės sąsajos su šiomis programomis: MATLAB, MS Excel, SolidWorks, SpaceClaim, Inventor, AutoCAD, Creo TM Parametric, Pro/ENGINEER, SolidEdge. Nors Comsol Multiphysics turi tiesioginių sąsajų su populiariausiomis projektavimo programomis, tačiau yra galimybė kurti modelius ir šioje programoje. 23

24 EKSPERIMENTINĖ DARBO DALIS Naudojama kompiuterinė ir programinė įranga Naudojamas kompiuteris Dell Inspirion 15. Kompiuterio parametrai: Procesorius Intel Celeron 117U 1,6Ghz. Operatyvioji atmintis 2GB DDR-16. Kietasis diskas 32GB 54rpm. Naudojamos operacinės sistemos: Windows 7 Ultimate 32bit toliau vadinama Windows. Ubuntu 14.4 LTS 32bit toliau vadinamalinux. Laiko skaičiavimas Visų eksperimentų vykdymo laikai buvo matuojami specialiais metodais, kai darbo laikas gaunamas suskaičiavus procesoriaus darbo taktus. Tokiu būdu gaunamas labai tikslus programos veikimo laikas. C# programavimo kalboje naudojama klasė Stopwatch. Klasė įtraukiama į projektą naudojant using System.Diagnostics;. Sukuriamas naujas objektas Stopwatch timer = newstopwatch(). Naudojant metodą Start() objektas pradeda skaičiuoti procesoriaus taktus. Su metodu Stop() objektas sustabdomas. Rezultatą galima gauti naudojant parametrus ElapsedTicks, reikšmė yra atliktų procesoriaus taktų skaičius arba naudojant parametrą ElapsedMilliseconds, kurio reikšmė procesoriaus taktų skaičius išreikštas milisekundėmis. Java programavimo kalboje taip pat naudojama panaši klasė StopWatch. Tačiau tai nėra standartinė klasė, todėl reikia atsisiųsti commons-lang3-3..jar failą, jį galima rasti šiuo adresu įtraukti.jar failą į projektą ir importuoti klasę import org.apache.commons.lang3.time.stopwatch;. Sukuriamas naujas objektas StopWatch timer = new StopWatch(). Naudojami tokie patys metodai Start()ir Stop() matavimui pradėti ir sustabdyti. Programos vykdymo laiką galima gauti procesoriaus taktais ir milisekundėmis naudojant metodus getnanotime() ir gettime(). 24

25 Paprastų matematinių operacijų greičiai Atliekami pagrindiniai keturi veiksmai su sveikaisiais ir su realiaisiais skaičiais. Skaičiavimai atliekami dešimt milijonų kartų. Eksperimentai atliekami Windows aplinkoje naudojant Java ir C# ir Linux aplinkoje naudojant Java ir Mono C#. Su sveikaisiais kintamaisiais atliekamos sudėties, atimties, daugybos ir dalybos, kai gaunama tik sveikoji dalis, operacijos. Atliekant eksperimentus su dalybos veiksmu, kai gaunamos liekanos, laikai praktiškai identiški, todėl jų rezultatai neįtraukiami į diagramą (žr. 1 diagrama. Veiksmai su int tipo duomenimis). Java programavimo kalba atlieka skaičiavimus greičiau, nei C# programavimo kalba atliekant tas pačias operacijas (žr. 6 programos kodas. Operacijos su sveikojo tipo kintamaisiais). Tačiau greičiausiai su sveikaisiais skaičiais operacijos atliekamos Java Linux aplinkoje. Vienintelė Java dalybos operacija, kai gaunama sveikoji dalis Windows aplinkoje atliekama panašiu greičiu, kaip ir C# kalboje. Microsoft sukurtas C# ir nemokamas atviro kodo projektas Mono C# skaičiavimus atlieka panašiu greičiu, tačiau nemokama versija nežymiai, bet lenkia Microsoft C#. Milisekundės Java (Windows) C# (Windows) 4 Java (Linux) C# (Linux) 6 sudetis atimtis daugyba dalyba Veiksmai 1 diagrama. Veiksmai su int tipo duomenimis Java C# inta;int b = 2; double n = 2, x1; int k = 1; StopWatch timer = new StopWatch(); timer.start(); for (int i = 1; i <= k; i++) { a = b + i; int a;int b = 2; double n = 2,x1; int k = 1; Stopwatch timer = new Stopwatch(); timer.start(); for (int i = 1; i <= k; i++) { a = b + i; 25

26 timer.stop(); timer.stop(); 6 programos kodas. Operacijos su sveikojo tipo kintamaisiais Atliekant operacijas su realiaisiais skaičiais, labiausiai išsiskiria Java Linux aplinkoje. Sudėties veiksmai vidutiniškai atliekami apie septynis kartus greičiau, nei C# abejose tirtose aplinkose ir Java Windows aplinkoje, nors programų kodai identiški (žr. 7 programos kodas. Operacijos su realiojo tipo kintamaisiais). Java, ir C# aritmetinės operacijos atliekamos greičiau Linux aplinkoje. Daugybos operacija Java Linux aplinkoje vidutiniškai dešimt kartų greičiau, nei visose kitose aplinkose. Daugiausiai laiko užima Java dalybos operacija Windows aplinkoje (žr. 2 diagrama. Veiksmai su double tipo duomenimis). C# Windows ir Linux aplinkose dideliu greičio skirtumu nepasižymi, išskyrus atimties operaciją. Atliekant šią operaciją Mono C# du kartus greičiau atliko identiškas užduotis. Milisekundės Java (Windows) C# (Windows) Java (Linux) C# (Linux) sudetis atimtis daugyba dalyba Veiksmai 2 diagrama. Veiksmai su double tipo duomenimis Java C# int a; int b = 2; double n = 2, x1; int k = 1; int a; int b = 2; double n = 2,x1; int k = 1; StopWatch timer = new StopWatch(); timer.start(); Stopwatch timer = new Stopwatch(); timer.start(); for (int i = 1; i <= k; i++) { for (int i = 1; i <= k; i++) { 26

27 x1 = n + (double)i; timer.stop(); x1 = n + (double)i; timer.stop(); 7 programos kodas. Operacijos su realiojo tipo kintamaisiais Duomenų skaitymas iš failo naudojant srautus Pirmoje failo eilutėje buvo įrašomas eilučių su duomenimis skaičius. Kiekvienoje eilutėje įrašyti trys sveikieji skaičiai. Skaičiai kiekvienoje eilutėje apibrėžia kvadratinės lygties koeficientus a, b ir c. Skaičiai atsitiktinai generuojami iš intervalo [-1; 1]. Failų pavyzdžiai Windows aplinkoje (žr. 4 pav. Duomenų failas Windows aplinkoje)ir Linux aplinkoje (žr. 5 pav. Duomenų failas Linux aplinkoje). 4 pav. Duomenų failas Windows aplinkoje 5 pav. Duomenų failas Linux aplinkoje Lentelėje pateikti gauti rezultatai milisekundėmis nuskaitant atitinkamą duomenų kiekį, naudojant srautą (stream) (žr. 6 lentelė. Duomenų skaitymo iš tekstinių failų laikai). Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) C# (Linux) lentelė. Duomenų skaitymo iš tekstinių failų laikai Iš gautų rezultatų matyti, kad Windows aplinkoje C# programoje duomenų nuskaitymas iš failų vykdomos greičiausiai. Lėčiausiai Linux aplinkoje Java programoje (žr. 3 diagrama. Duomenų 27

28 skaitymas iš failų naudojant srautus). Tačiau iki dviejų šimtų tūkstančių eilučių skaitymo iš failų greičiai panašūs Milisekundės Java (Windows) Java (Linux) C# (Windows) C# (Linux) Duomenų kiekis 3 diagrama. Duomenų skaitymas iš failų naudojant srautus Java kalba parašytų programų gauti rezultatai rodo, kad Windows 7operacinėje sistemoje duomenų nuskaitymas iš failų atliekamas greičiau, nei Ubuntu 14.4LTS operacinėje sistemoje (žr. 4 diagrama. Java duomenų skaitymo iš tekstinių failų). Vienintelis skirtumas Java kode yra kelio iki failo adreso užrašymas (žr. 8 programos kodas. Java duomenų skaitymas iš tekstinių failų), kitų skirtumų nėra. Iki dviejų šimtų tūkstančių eilučių abejose operacinėse sistemos duomenų nuskaitymo greitis panašus, tačiau viršijus šį kiekį, Linux aplinkoje programa ima atsilikti. Windows BufferedReader fin;... fin = new BufferedReader(new FileReader( D:/Rezultatai (Windows)/ + pavadinimas +.txt ));... ns = fin.readline();... for(int g = ; g<n;g++){ eil[g] = fin.readline(); fin.close(); Linux BufferedReader fin;... fin = new BufferedReader(new FileReader( /home/kompas/c# darbai/ + pavadinimas +.txt ));... ns = fin.readline();... for(int g = ; g<n;g++){ eil[g] = fin.readline(); fin.close(); 8 programos kodas. Java duomenų skaitymas iš tekstinių failų 28

29 Milisekundės Duomenų kiekis 4 diagrama. Java duomenų skaitymo iš tekstinių failų greitis Windows Linux C# kalba parašytos programos duomenų nuskaitymas operacinėje sistemoje Ubuntu 14.4LTS vykdomas lėčiau, naudojant nemokamą ir atviro kodo projektą Mono, skirtą įgyvendinti.net Framwork technologiją. Operacinėje sistemoje Windows 7 Ultimate C# duomenų nuskaitymas vykdomas greičiau (žr. 5 diagrama. C# duomenų skaitymo iš tekstinių failų greitis). Windows Linux using (System.IO.StreamReader failas using (System.IO.StreamReader failas = new = new System.IO.StreamReader( D:/Rezultatai/ + System.IO.StreamReader( /home/kompas/c# pavadinimas +.txt )) darbai/ + pavadinimas +.txt )) pr = failas.readline(); pr = failas.readline(); for(int i = ; i<n; i++) for(int i = ; i<n; i++) { { eil[i] =failas.readline().split( ); eil[i] =failas.readline().split( ); failas.close(); failas.close(); 9 programos kodas. C# duomenų skaitymas iš tekstinių failų Tiek Windows tiek Linux aplinkose programų kodai nesiskiria. Vienintelis skirtumas adresas iki failo (žr. 9 programos kodas. C# duomenų skaitymas iš tekstinių failų). 29

30 25 2 Milisekundės Windows Linux Duomenų kiekis 5 diagrama. C# duomenų skaitymo iš tekstinių failų greitis Windows ir Linux aplinkose Java programų vykdymų greičiai atsilieka nuo C# programų skaitant duomenis iš failų (žr. 6 diagrama. Duomenų skaitymo iš falų greitis Windows aplinkoje, 7 diagrama. Duomenų skaitymo iš falų greitis Linux aplinkoje). 25 Milisekundės Java 5 C# Duomenų kiekis 6 diagrama. Duomenų skaitymo iš falų greitis Windows aplinkoje 3 25 Milisekundės Java C# Duomenų kiekis 7 diagrama. Duomenų skaitymo iš falų greitis Linux aplinkoje 3

31 Trikampių plotų skaičiavimas Matematinių skaičiavimų palyginimui buvo pasirinkta Herono formulė (žr. 1 formulė. Herono formulė), trikampio plotui apskaičiuoti. Lentelėje pateikta: duomenų kiekis, programavimo kalba ir operacinė sistema, kurioje buvo atliekami bandymai. Duomenų kiekis trikampių kiekis, kurių plotas apskaičiuojamas. Ties kiekviena programavimo kalba ir operacine sistema nurodomas laikas, kurį užtruko programos, atlikdamos skaičiavimus milisekundėmis (žr. 7 lentelė. Trikampių plotų skaičiavimų laikai milisekundėmis). Duomenų kiekis Java (Linux) Java (Windows) C# (Linux) C# (Windows) lentelė. Trikampių plotų skaičiavimų laikai milisekundėmis = ( ) ( ) ( ) 1 formulė. Herono formulė Pateikiamos abiejų kalbų Java ir C# programų kodų dalys, apskaičiuojančios nurodyto kiekio trikampių plotus (žr. 1 programos kodas. Trikampių plotų skaičiavimas). Java C# for(int i = ; i < n; i++){ if((sk[i][]+sk[i][1] > sk[i][2]) &(sk[i][2]+sk[i][1] > sk[i][]) & (sk[i][]+sk[i][2] > sk[i][1])){ p = (sk[i][] + sk[i][1] + sk[i][2]) / 2.; S[i] = Math.sqrt(p * (p sk[i][]) * (p sk[i][1]) * (p sk[i][2])); else{ S[i] = -1; for(int i = ; i < n; i++) { if ((sk[i, ] + sk[i, 1] > sk[i, 2]) & (sk[i, 2] + sk[i, 1] > sk[i, ]) & (sk[i, ] + sk[i, 2] > sk[i, 1])) { p = (sk[i, ] + sk[i, 1] + sk[i, 2])/2.; S[i] = Math.Sqrt(p * (p sk[i,]) * (p sk[i,1]) * (p sk[i,2])); else { S[i] = -1; 31

32 1 programos kodas. Trikampių plotų skaičiavimas Java programos kodas identiškas abejose tirtose operacinėse sistemose: Windows ir Linux. C# programos kodai nesiskiria Windows ir Linux aplinkose. Palyginus Java ir C# kodus skirtumų beveik nėra, vienintelis skirtumas dvimačio masyvo elementų indeksų užrašymas. Java kalboje dvimačiai masyvo indeksai užrašomi atskiriant tarp laužtinių skliaustų, sk[ i ][ ]. C# programavimo kalboje dvimačiai masyvo indeksai užrašomi tarp vienos laužtinių skliaustų poros, indeksus atskiriant kableliu, sk[ i, ]. Milisekundės Duomenų kiekis Java (Windows) Java (Linux) C# (Linux) C# (Windows) 8diagrama. Trikampių plotų skaičiavimo pagal Herono formulę greitis Matematinius veiksmus, kai trikampių kiekis mažesnis nei du šimtai tūkstančių trikampių, greičiau atlieka programos parašytos C# kalba Windows ir Linux aplinkose. Tačiau duomenų kiekiui esant tarp dviejų ir trijų šimtų tūkstančių C# ir Java programų sprendimų laikai išsilygina, o viršijus šį kiekį C# pradeda atsilikinėti (žr. 8diagrama. Trikampių plotų skaičiavimo pagal Herono formulę greitis). Milisekundės Duomenų kiekis Java C# 9 diagrama. Trikampių plotų skaičiavimo Windows aplinkoje pagal Herono formulę greitis 32

33 Windows aplinkoje C# pirmauja prieš Java atliekant skaičiavimus pagal Herono formulę iki dviejų šimtų tūkstančių trikampių. Esant tokiam duomenų kiekiui C# programa dviejų šimtų tūkstančių trikampių plotus apskaičiuoja per 29ms, o Java programa apskaičiuoja per 28ms. Toliau didėjant duomenų kiekiui Java daro vis didesnį atotrūkį nuo C#(žr. 9 diagrama. Trikampių plotų skaičiavimo Windows aplinkoje pagal Herono formulę greitis). Milisekundės Duomenų kiekis Java C# 1 diagrama. Trikampių plotų skaičiavimolinux aplinkoje pagal Herono formulę greitis Linux aplinkoje nemokamas atviro kodo projektas Mono C# atlieka skaičiavimus greičiau esant iki trijų šimtų tūkstančių trikampių, trikampių plotų apskaičiavimas atliekamas per 27ms. Java kalba parašyta programa tą patį kiekį apskaičiuoja per 22ms. Padidinus trikampių kiekį geresnius rezultatus rodo Java (žr. 1 diagrama. Trikampių plotų skaičiavimolinux aplinkoje pagal Herono formulę greitis). Milisekundės Duomenų kiekis Linux Windows 11 diagrama. Trikampių plotų skaičiavimo C# kalba pagal Herono formulę greitis C# kalba parašytos programos skaičiavimus atlieka panašiu greičiu. Tačiau nemokamas atviro kodo projektas Mono C# matematinius veiksmus atlieka nežymiai greičiau ir tik pasiekus pusantro 33

34 milijono trikampių kiekį Microsoft C# Windows aplinkoje pasiveja nemokamą Mono C# Linux aplinkoje (žr. 11 diagrama. Trikampių plotų skaičiavimo C# kalba pagal Herono formulę greitis). Toliau didinant duomenų kiekį Microsoft firmos C# atlieka skaičiavimus greičiau. Milisekundės Duomenų kiekis Linux Windows 12 diagrama. Trikampių plotų skaičiavimo Java kalba Herono formulę greitis Java programos tiek Windows, tiek Linux aplinkose trikampių plotus apskaičiuoja apylygiai iki dvidešimties tūkstančių trikampių. Viršijus šį kiekį Windows aplinkoje Java trikampių plotus apskaičiuoja greičiau nei Linux aplinkoje (žr. 12 diagrama. Trikampių plotų skaičiavimo Java kalba Herono formulę greitis). 34

35 Kvadratinių lygčių sprendimas Matematinių skaičiavimų palyginimui buvo pasirinktas kvadratinių lygčių sprendimas, kai randami taškai, kuriuose funkcijos grafikas kerta x ašį. Lentelėje pateikta: duomenų kiekis, programavimo kalba ir operacinė sistema, kurioje buvo atliekami bandymai. Duomenų kiekis kvadratinių lygčių, kurių reikšmės apskaičiuotos. Ties kiekviena programavimo kalba ir operacine sistema nurodomas laikas, kurį užtruko programos, atlikdamos skaičiavimus milisekundėmis (žr. 8 lentelė. Kvadratinių lygčių sprendimų laikai milisekundėmis). Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) C# (Linux) lentelė. Kvadratinių lygčių sprendimų laikai milisekundėmis Iš pateiktų duomenų matyti, kad Windows aplinkoje nėra Java parašytos programos apskaičiuojančios kvadratines lygtis sprendimo laiko, kai lygčių kiekis du milijonai. Rezultatai negaunami, nes nepakanka operatyvios atminties (žr. 6 pav. Java klaida, kai nepakanka operatyvios atminties). 6 pav. Java klaida, kai nepakanka operatyvios atminties Java programoms leidžiama naudoti ribotą atminties kiekį. Apribojimai apibrėžiami paleidžiant programą. Java atmintį padalina į dvi atskiras dalis. Dalys vadinamos heap ir permgen. Permgen dalyje saugomos naudojamos klasės, kurių objektai yra inicijuoti. Abiejų dalių dydį nustato Java virtuali mašina (JVM) apibrėždama parametrus XmxirXX: MaxPermSize, jeigu jie nėra nustatomi, Java nustatys konkrečius parametrus pagal nutylėjimą. Kompiuteryje gali būti užtektinai operatyviosios atminties, tačiau jei heap dalies dydis mažesnis nei reikia programos veikimui, tuomet atsiranda klaida dėl nepakankamo atminties kiekio. 35

36 Galima pasitikrinti heap dalies dydį, kurią pagal nutylėjimą priskyrė JVM (žr. 7 pav. Nustatytas ir maksimalus heap dalies dydis). Komandų lauke užrašius komandą Javaw XX:+PrintFlagsFinal find InitialHeapSize. Norint sužinoti maksimalų heap dalies dydį, komandų lauke užrašyti komandą Javaw XX:+PrintFlagsFinal find MaxHeapSize(žr. 7 pav. Nustatytas ir maksimalus heap dalies dydis). 7 pav. Nustatytas ir maksimalus heap dalies dydis Norint galima pakeisti heap dalies dydį per valdymo skydą (Control Panel). Surasti Java nuorodą (žr. 8 pav. Java nuoroda). Atsivėrusiame lange (žr. 9 pav. Java Control Panel) pasirinkti Java etiketę ir spausti mygtuką View pav. Java nuoroda 9 pav. Java Control Panel Naujame lange (žr. 1 pav. Atminties kiekio nustatymas) nurodoma kiek atminties norima skirti: Xms512m priskiria 512MB atminties. Xms124m priskiria 1GB atminties. Xms248m priskiria 2GB atminties. Xms372m priskiria 3GB atminties. 36

37 Įvedus norimą kiekį spaudžiama OK. 1 pav. Atminties kiekio nustatymas Iš diagramų matyti, kad lėčiausiai skaičiavimai atliekami Java kalba parašytoje programoje Windows aplinkoje. Greičiausiai rezultatai gaunami C# kalba parašytoje programoje Linux aplinkoje (žr. 13 diagrama. Kvadratinių lygčių sprendimo greitis).šie rezultatai prieštarauja rezultatams, gautiems skaičiuojant trikampių plotus pagal Herono formulę. Taip atsitiko, nes į lygčių skaičiavimo kodą buvo įrašyti veiksmai su tekstinėmis eilutėmis. Kai tos pačios lygtys apskaičiuojamos neatliekant veiksmų su tekstinėmis eilutėmis, gaunamas analogiškas rezultatas kaip ir trikampių plotų uždavinyje Milisekundės Java (Windows) Java (Linux) C# (Windows) C# (Linux) Duomenų kiekis 13 diagrama. Kvadratinių lygčių sprendimo greitis Pateiktose Java kvadratinių lygčių sprendimo koduose matyti, kad jie identiški tiek Windows, tiek Linux aplinkose (žr. 11 programos kodas. Java kvadratinių lygčių sprendimas). Nepaisant to, kad programos kodas vienodas ir rezultatai gaunami identiški, skaičiavimų laikai skiriasi (žr. 14 diagrama. Java kvadratinių lygčių sprendimo greitis). Kai sprendimų kiekis iki šimto tūkstančių, Java programa vykdoma greičiau Windows aplinkoje, tačiau viršijus šį kiekį pranašesnė programa veikianti Linux aplinkoje. Linux aplinkoje Java skiria daugiau operatyviosios atminties heap dalyje, todėl galima atlikti skaičiavimus su didesniu duomenų kiekiu. 37

38 Windows for(int i = ; i<n; i++){ D = sk[i][1]*sk[i][1]-4*sk[i][]*sk[i][2]; if(d>=){ x1 = (-1 * sk[i][1] Math.sqrt(D)) / (2 * sk[i][]); x2 = (-1 * sk[i][1] + Math.sqrt(D)) / (2 * sk[i][]); lygtis[i] += x1= + x1 +, x2= + x2; elseif (D<) { lygtis[i] +=, Lygtis neturi sprendiniu ; Linux for(int i = ; i<n; i++){ D = sk[i][1]*sk[i][1]-4*sk[i][]*sk[i][2]; if(d>=){ x1 = (-1 * sk[i][1] Math.sqrt(D)) / (2 * sk[i][]); x2 = (-1 * sk[i][1] + Math.sqrt(D)) / (2 * sk[i][]); lygtis[i] += x1= + x1 +, x2= + x2; elseif (D<) { lygtis[i] +=, Lygtis neturi sprendiniu ; 11 programos kodas. Java kvadratinių lygčių sprendimas 15 Milisekundės 1 5 Linux Windows Duomenų kiekis 14 diagrama. Java kvadratinių lygčių sprendimo greitis 38

39 Pateiktuose C# kvadratinių lygčių sprendimų koduose matyti, kad jie identiški tiek Windows, tiek Linux aplinkose (žr. 12 programos kodas. C# kvadratinių lygčių sprendimas). Nors Windows aplinkoje naudojamas oficialus Microsoft firmos sukurtas C# standartas, Linux aplinkoje naudojamas nemokamas atviro kodo standartas, tačiau abiejų standartų skaičiavimo laikai praktiškai vienodi (žr. 15 diagrama. C#kvadratinių lygčių sprendimo greitis). Sprendimo greičiai pradeda skirtis pasiekus vieną milijoną kvadratinių lygčių. Kitaip nei Java, C# naudoja visą galimą operatyvinę atmintį. Windows for(int i = ; i<n; i++){ D = sk[i,1]*sk[i,1]-4*sk[i,]*sk[i,2]; if(d>=) { x1 = (-1 * sk[i,1] Math.Sqrt(D)) / (2 * sk[i,]); x2 = (-1 * sk[i,1] + Math.Sqrt(D)) / (2 * sk[i,]); lygtis[i] += x1= + x1 +, x2= + x2; elseif (D<) { lygtis[i] +=, Lygtis neturi sprendiniu ; Linux for(int i = ; i<n; i++){ D = sk[i,1]*sk[i,1]-4*sk[i,]*sk[i,2]; if(d>=) { x1 = (-1 * sk[i,1] Math.Sqrt(D)) / (2 * sk[i,]); x2 = (-1 * sk[i,1] + Math.Sqrt(D)) / (2 * sk[i,]); lygtis[i] += x1= + x1 +, x2= + x2; elseif (D<) { lygtis[i] +=, Lygtis neturi sprendiniu ; 12 programos kodas. C# kvadratinių lygčių sprendimas 39

40 Milisekundės Duomenų kiekis 15 diagrama. C#kvadratinių lygčių sprendimo greitis Windows Linux Nors C# ir Java kalbomis užrašytas kodas atrodo identiškai, tačiau sprendimo laikas skiriasi (žr. 13 programos kodas.). Java atsilieka (žr. 16 diagrama. Kvadratinių lygčių sprendimo Windows aplinkoje greitis). Didelis Java trūkumas operatyvios atminties padalinimas į dvi dalis, dėl šios priežasties maksimalus galimų skaičiavimų kiekis yra mažesnis esant tam pačiam operatyviosios atminties kiekiui kompiuteryje. Java gali atlikti skaičiavimus kai maksimalus duomenų kiekis vienas milijonas kvadratinių lygčių, o C# testavimų metu buvo pasiekti penki milijonai kvadratinių lygčių Windows aplinkoje. Toliau didinti duomenų kiekio nebeliko prasmės, nes Windows aplinkoje Java pajėgė išspręsti tik milijoną kvadratinių lygčių. Java for(int i = ; i<n; i++){ D = sk[i][1]*sk[i][1]-4*sk[i][]*sk[i][2]; if(d>=){ x1 = (-1 * sk[i][1] Math.sqrt(D)) / (2 * sk[i][]); x2 = (-1 * sk[i][1] + Math.sqrt(D)) / (2 * sk[i][]); lygtis[i] += x1= + x1 +, x2= + x2; elseif (D<) { lygtis[i] +=, Lygtis neturi sprendiniu ; 4

41 C# for(int i = ; i<n; i++) { D = sk[i,1]*sk[i,1]-4*sk[i,]*sk[i,2]; if(d>=) { x1 = (-1 * sk[i,1] Math.Sqrt(D)) / (2 * sk[i,]); x2 = (-1 * sk[i,1] + Math.Sqrt(D)) / (2 * sk[i,]); lygtis[i] += x1= + x1 +, x2= + x2; elseif (D<) { lygtis[i] +=, Lygtis neturi sprendiniu ; 13 programos kodas. Kvadratinių lygčių sprendimas Windows aplinkoje 8 Milisekundės Java C# Duomenų kiekis 16 diagrama. Kvadratinių lygčių sprendimo Windows aplinkoje greitis Linux aplinkoje C# ir Java kalbomis užrašytas kodas atrodo identiškai (žr. 14 programos kodas. Kvadratinių lygčių sprendimas Linux aplinkoje), kaip ir Windows aplinkoje, tačiau sprendimo laikas skiriasi (žr. 17 diagrama. Lygčių sprendimo Linux aplinkoje greitis).c# kalboje veiksmai su tekstinėmis eilutėmis atliekami greičiau. Java atsilieka nuo C#. Kaip ir Windows aplinkoje ir visose kitose operacinėse sistemose. Java trūkumas operatyvios atminties padalinimas į dvi dalis, dėl šios priežasties maksimalus galimų skaičiavimų kiekis yra mažesnis esant tam pačiam operatyviosios atminties kiekiui kompiuteryje. Nors Linux aplinkoje Java skiria daugiau atminties heap daliai, dėl šios priežasties programa išsprendė du milijonus kvadratinių lygčių, tačiau pasirodė klaida, dėl nepakankamo atminties kiekio, kai buvo perduoti trys milijonai kvadratinių lygčių. Mono C# Linux aplinkoje programa apskaičiavo penkis milijonus kvadratinių lygčių, tačiau duomenys lentelėse nėra pateikiami, nes net padidinus Java naudojamos operatyvinė atminties dydį iki maksimalaus leidžiamo,java programa negali pasiekti tokių rezultatų. 41

42 Java for(int i = ; i<n; i++){ D = sk[i][1]*sk[i][1]-4*sk[i][]*sk[i][2]; if(d>=){ x1 = (-1 * sk[i][1] Math.sqrt(D)) / (2 * sk[i][]); x2 = (-1 * sk[i][1] + Math.sqrt(D)) / (2 * sk[i][]); lygtis[i] += x1= + x1 +, x2= + x2; elseif (D<) { lygtis[i] +=, Lygtis neturi sprendiniu ; C# for(int i = ; i<n; i++) { D = sk[i,1]*sk[i,1]-4*sk[i,]*sk[i,2]; if(d>=) { x1 = (-1 * sk[i,1] Math.Sqrt(D)) / (2 * sk[i,]); x2 = (-1 * sk[i,1] + Math.Sqrt(D)) / (2 * sk[i,]); lygtis[i] += x1= + x1 +, x2= + x2; elseif (D<) { lygtis[i] +=, Lygtis neturi sprendiniu ; 14 programos kodas. Kvadratinių lygčių sprendimas Linux aplinkoje 15 Milisekundės 1 5 Java C# Duomenų kiekis 17 diagrama. Lygčių sprendimo Linux aplinkoje greitis 42

43 Duomenų įrašymas į tekstinius failus Į tekstinius failus pirmoje eilutėje įrašomas kvadratinių lygčių kiekis, žemiau esančiose eilutėse įrašomos lygtys ir gauti rezultatai (žr. 11 pav. C#rezultatai Windows aplinkoje, 12 pav. C# rezultatai Linux aplinkoje,13 pav. Java rezultatai Windows aplinkoje, 14 pav. Java rezultatai Linux aplinkoje). Lentelėje pateikta: duomenų kiekis, programavimo kalba ir operacinė sistema, kurioje buvo atliekami bandymai. Duomenų kiekis kvadratinių lygčių ir reikšmių kiekis. Ties kiekviena programavimo kalba ir operacine sistema nurodomas laikas, kurį užtruko programos, atlikdamos įrašymą milisekundėmis. Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) C# (Linux) lentelė. Duomenų įrašymo į tekstinius failus laikai milisekundėmis Pateiktoje rezultatų lentelėje nėra pateiktas laikas, per kurį Java programa įrašo du milijonus kvadratinių lygčių Windows aplinkoje, nes negalėjo jų apskaičiuoti dėl operatyvinės atminties trūkumo, todėl programa nieko neįrašė. Nenorint iškraipyti rezultatų įrašant atsitiktines reikšmes, toliau su tuo duomenų kiekių eksperimentai nebuvo atliekami. Iš gautų rezultatų įrašant duomenis į kietąjį diską Java ir C# duomenų įrašymo greičiai mažai skiriasi, kai kiekis iki šimto tūkstančių kvadratinių lygčių. Programos sukuria tekstinio tipo (.txt) failus. Į failą pirmoje eilutėje įrašomas lygčių kiekis, toliau iš naujos eilutės užrašoma lygties numeris, pilna kvadratinė lygtis ir gautų sprendinių x 1 ir x 2 reikšmės arba, jei lygtis neturi sprendinių, ties ta lygtimi įrašoma Lygtis neturi sprendinių (žr. 11 pav. C#rezultatai Windows aplinkoje, 12 pav. C# rezultatai Linux aplinkoje,13 pav. Java rezultatai Windows aplinkoje, 14 pav. Java rezultatai Linux aplinkoje). Kadangi Java apskaičiuoti rezultatai gaunami keliais skaitmenimis po kablelio didesniu tikslumu, nuo didelio duomenų kiekio susidaro didelis papildomų simbolių kiekis, dėl kurių pailgėja įrašymo trukmė (žr. 18 diagrama. Duomenų įrašymo į failus greitis). 43

44 Milisekundės Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) C# (Linux) 18 diagrama. Duomenų įrašymo į failus greitis 11 pav. C#rezultatai Windows aplinkoje 12 pav. C# rezultatai Linux aplinkoje 44

45 13 pav. Java rezultatai Windows aplinkoje 14 pav. Java rezultatai Linux aplinkoje Milisekundės Java C# Duomenų kiekis 19 diagrama. Duomenų įrašymo greitis Windows aplinkoje 45

46 Milisekundės Duomenų kiekis 2 diagrama. Duomenų įrašymų greitis Linux aplinkoje Java C# Abejose bandytose aplinkose Java greitis buvo beveik vienodas. skirtumas iki šimto milisekundžių (žr. 21 diagrama. Java duomenų įrašymo greitis). Milisekundės Duomenų kiekis 21 diagrama. Java duomenų įrašymo greitis Windows Linux Linux aplinkoje C# užduotį atliko greičiau, nei Windows aplinkoje, kai įrašomų duomenų kiekis neviršijo dviejų šimtų tūkstančių. Viršijus šį kiekį nemokama atviro kodo versija Linux aplinkoje ėmė atsilikti (žr. 22 diagrama. C# duomenų įrašymų greitis). 5 Milisekundės Windows Linux Duomenų kiekis 22 diagrama. C# duomenų įrašymų greitis 46

47 Abejose programavimo kalbų programose kodai labai panašūs (žr. 15 programos kodas. Duomenų įrašymas į tekstinius failus). Skirtumai: raktiniai žodžiai rašymui į failą. Java kalboje naudojama komanda println(), o C# kalboje komanda WriteLine(). Abi komandos atlieka tą patį veiksmą. Java C# Failas.println(n); Failas.WriteLine (n); for(int i = ; i<n;i++) for(int i = ;i<n; i++) { { Failas.println(lygtis[i]); Failas.WriteLine(lygtis[i]); Failas.close(); Failas.Close(); 15 programos kodas. Duomenų įrašymas į tekstinius failus 47

48 Lokaliosios duomenų bazės Lokaliosios duomenų bazės darbui buvo pasirinktos dėl paprastesnio darbo. Naudojant lokaliąsias duomenų bazes lengviau kurti ir keisti failus, nes nereikia jungtis prie serverio. Jungimasis prie serverio tampa problema, nes programos veikimas tampa priklausomas nuo interneto ryšio. Padarius pakeitimus lokalioje duomenų bazėje, pakeitimus galima matyti iš karto, nelaukiant, kol duomenys bus įkelti į serverį. Naudojant Java yra sukurta ne viena lokali duomenų bazė, tokios kaip H2, HyperSQL, Apache Derby, DB4O, iboxdbhypertable, Drizzle. Duomenų bazės DB4O, iboxdb, STSdb sukurtos naudojant ir C#, todėl jos veikia operacinėse sistemose, kurios palaiko Java arba.net. Java gali dirbti su H2, HyperSQL, Apache Derby, iboxdb,db4o, Ms Access, SQLite, SQL Server, Hypertable, Drizzle ir kitomis lokaliosiomis duomenų bazėmis. C# gali dirbti su Microsoft Access SQLite, Microsoft SQL Server, iboxdb,db4o, H2 ir kitomis duomenų bazėmis veikiančiomis Windows aplinkoje [1]. SQLite yra atviro kodo ir nemokama naudoti, nesvarbu kokiais tikslais naudojama ji būtų, ar privačiais, ar komerciniais. SQLite duomenis nuskaito ir įrašo tiesiogiai į failus. Duomenų bazės formatas nėra griežtai apibrėžtas, todėl duomenų bazę galima laisvai kopijuoti tarp 32 ir 64 bitų sistemų. SQLite reliacinė duomenų bazių valdymo sistema. SQLite palaiko standartinę SQL sintaksę. SQLite yra C kalba parašyta biblioteka, sukurianti duomenų bazę faile [9]. Microsoft Access arba dar žinomas, kaip Microsoft Office Access, yra duomenų bazių valdymo sistema, kurią sukūrė Microsoft firma. Access saugo duomenis savo formatu, kurio pagrindas Access Jet Database Engine [18]. 48

49 Darbo pradžia su SQLite duomenų baze C# programavimo kalboje norint dirbti su SQLite duomenų baze reikia naudoti System.Data.SQLite biblioteką, tačiau tai nėra standartinė biblioteka, esanti.net bibliotekų pakete. Ją galima atsisiųsti iš interneto puslapio adresu: Tuomet biblioteką reikia patalpinti į aplanką projekte. Ir įtraukti biblioteką į projektą naudojant using System.Data.SQLite. Tik atlikus šiuos veiksmus programa, gali dirbti su SQLite duomenų baze. Naudojant nemokamą atviro kodo projektą Mono C# jau yra biblioteka, skirta darbui su SQLite duomenų baze, tereikia ją įtraukti naudojant using Mono.Data.SQLite, tačiau palaikoma tik trečioji versija (SQLite3). Prieš naudojant SQLite duomenų bazę Java programoje būtina įsitikinti, ar kompiuteryje yra SQLite JDBC biblioteka, jei jos nėra, ją galima atsisiųsti: Atsiųstą SQLite-jdbc-(versija).jar failą pridėti prie kuriamo projekto. Šis prijungimas vienodas, nepriklausomai nuo naudojamos operacinės sistemos. Darbas su SQLite duomenų baze Tyrimui buvo sukurta SQLite duomenų bazė, joje buvo sukurta lentelė, kurioje buvo įrašytą dvidešimt tūkstančių įrašų (žr. 15 pav. SQLite duomenų bazė). Vienas įrašas sudarytas iš keturių laukų. Pirmas ID identifikavimo numeris sveikųjų skaičių tipo, antras Vardas tekstinio duomenų tipo laukas, trečias Pavarde tekstinio duomenų tipo laukas ir ketvirtas sveikųjų skaičių duomenų tipo laukas Rezultatas. Laukai Vardas ir Pavarde sugeneruoti iš atsitiktinių simbolių, kurie buvo sudėti į tekstines eilutes, kurių ilgis nuo 5 iki 14 simbolių. Į lauką Rezultatas buvo įrašomi atsitiktiniai sveikieji skaičiai iš intervalo [; 999]. Per eksperimentus atliekamos trys užduotys su duomenų baze: duomenų nuskaitymas iš lentelės eilės tvarka, duomenų nuskaitymas iš lentelės pagal lauką Rezultatas mažėjimo tvarka, duomenų įrašymas eilės tvarka į naują lentelę. 49

50 15 pav. SQLite duomenų bazė Duomenų skaitymas iš SQLite duomenų bazės Pateiktoje lentelėje (žr. 1 lentelė. Duomenų išrinkimo eilės tvarka iš SQLite duomenų bazės laikai milisekundėmis) pateikti laikai, per kuriuos programos iš eilės nuskaitė nurodytus duomenų kiekius. Laikas nurodytas milisekundėmis. Visose programose naudota ta pati duomenų bazė ir ta pati lentelė su sugeneruotais duomenimis. Naudojama užklausa select * from Lentele. Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) C# (Linux) lentelė. Duomenų išrinkimo eilės tvarka iš SQLite duomenų bazės laikai milisekundėmis Greičiausiai duomenis nuskaito C# Windows aplinkoje. Iš gautų rezultatų matyti, kad Windows aplinkoje duomenys nuskaitomi greičiau, nei Linux aplinkoje. Lėčiausiai duomenys iš SQLite duomenų bazes nuskaitomi Java kalba Linux aplinkoje (žr. 23 diagrama. Duomenų išrinkimo eilės tvarka iš SQLite duomenų bazės greitis). 5

51 Milisekundės Java (Windows) Java (Linux) C# (Windows) C# (Linux) Duomenų kiekis 23 diagrama. Duomenų išrinkimo eilės tvarka iš SQLite duomenų bazės greitis Naudojant užklausą select * from Lentele order by Rezultatas desc iš SQLite duomenų bazės duomenys išrenkami pagal duomenų bazės lauko Rezultatas reikšmes nuo didžiausios iki mažiausios. Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) C# (Linux) lentelė. Duomenų išrinkimo rikiuojant iš SQLite duomenų bazės laikai milisekundėmis Kaip ir skaitant duomenis iš eilės, taip ir išrenkant pagal tam tikrą tvarką, greičiausiai darbą atlieka C# Windows aplinkoje. Kitaip, nei skaitant iš eilės Java abejose aplinkose darbus atliko per panašų laiką. Lėčiausias pasirodė nemokamas atviro kodo projektas Mono C# (žr. 24 diagrama. Duomenų skaitymo iš SQLite duomenų bazės rikiuojant duomenis greitis). Milisekundės Duomenų kiekis 24 diagrama. Duomenų skaitymo iš SQLite duomenų bazės rikiuojant duomenis greitis Java (Windows) Java (Linux) C# (Windows) C# (Linux) 51

52 Atliekant eksperimentus labiausiai nustebino tai, kad duomenų išrinkimas iš SQLite duomenų bazės, kokia nors tvarka atliekamas tokiu pačiu greičiu arba dar greičiau, nei duomenų išrinkimas eilės tvarka. Naudojant abi Microsoft C# ir Mono C# programavimo kalbos versijas, duomenų išrinkimas iš SQLite duomenų bazės išrenkant duomenis tam tikra tvarka, atliekama panašiu greičiu, kaip ir išrinkimas skaitant duomenis iš eilės. Naudojant Mono C#, didėjant išrenkamų duomenų kiekiui išrinkimo greičiai išsilygina, tačiau esant mažesniam išrenkamų duomenų kiekiui, užklausa select * from Lentele order by Rezultatas desc atliekama nežymiai greičiau nei užklausa select * from Lentele (žr. 25 diagrama. C# Linux aplinkoje išrinkimo iš duomenų bazės greitis). 4 Milisekundės Pagal rezultatus Iš eilės Duomenų kiekis 25 diagrama. C# Linux aplinkoje išrinkimo iš duomenų bazės greitis Vykdant programą Microsoft firmos C# programavimo kalba, duomenų nuskaitymas iš SQLite duomenų bazės atliekamas panašiu greičiu, tačiau duomenų kiekiui viršijus penkiolika tūkstančių įrašų, skaitymas iš eilės pradeda ryškiau atsilikti (žr. 26 diagrama. C# Windows aplinkoje išrinkimo iš duomenų bazės greitis). 15 Milisekundės 1 5 Pagal rezultatus Iš eilės Duomenų kiekis 26 diagrama. C# Windows aplinkoje išrinkimo iš duomenų bazės greitis 52

53 Windows aplinkoje Java programa elgiasi, kiek kitaip, išrenkamų duomenų kiekiui nesiekiant septynių tūkstančių įrašų užklausa select * from Lentele atliekama greičiau,bet viršijus šį kiekį greičiau imama vykdyti užklausa select * from Lentele order by Rezultatas desc (žr. 27 diagrama. Java Windows aplinkoje išrinkimo iš duomenų bazės greitis) Milisekundės Pagal_rezultatus 1 Iš eilės Duomenų kiekis 27 diagrama. Java Windows aplinkoje išrinkimo iš duomenų bazės greitis Linux aplinkoje Java elgiasi kitaip, domenų išrinkimas iš SQLite duomenų bazės skaitant duomenis iš eilės atsiliekama lėčiau, nei išrenkant kokia nors tvarka ir ši tendencija išlieka nepaisant išrenkamo duomenų kiekio (žr. 28 diagrama. C# Linux aplinkoje išrinkimo iš duomenų bazės greitis). 5 4 Milisekundės Pagal rezultatus Iš eilės Duomenų kiekis 28 diagrama. C# Linux aplinkoje išrinkimo iš duomenų bazės greitis 53

54 Duomenų įrašymas į SQLite duomenų bazę Į SQLite duomenų bazę įrašomi duomenys, kurie buvo nuskaityti naudojant užklausą select * from Lentele. Duomenų bazėje kiekvienam bandymui buvo sukuriama nauja lentelė, į kurią ir buvo įrašomi duomenys naudojant užklausą insert into + lentele + (ID, Vardas,Pavarde,Rezultatas) values ( + id[i] +, + vardas[i] +, + pavarde[i] +, + rezultatas[i] + ) (žr. 16 pav. Lentelės SQLite duomenų bazėje). Sukurtų lentelių pavadinimai nurodo: kokia kalba vykdyta užklausa, kurioje aplinkoje programa veikė, koks duomenų kiekis įrašytas į lentelę. Įrašant duomenis į SQLite duomenų bazę susidurta su didele problema, duomenys įrašomi labai lėtai. Laikas matuojamas milisekundėmis, todėl iš pateiktų rezultatų lentelėje sunku pasakyti, koks tai didelis laiko tarpas(žr. 12 lentelė. Duomenų įrašymo į SQLite duomenų bazę laikai milisekundėmis). 16 pav. Lentelės SQLite duomenų bazėje Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) C# (Linux) lentelė. Duomenų įrašymo į SQLite duomenų bazę laikai milisekundėmis 54

55 Gretimoje lentelėje (žr. 13 lentelė. Duomenų įrašymo į SQLite duomenų bazę laikai minutėmis) pateikti rezultatai perskaičiuoti iš milisekundžių į minutes, siekiant susidaryti aiškesnį vaizdą, kaip ilgai atliekamas įrašymas į SQLite duomenų bazę. Duomenų kiekis Java (Windows) 2,8 5,4 14,9 25,8 4 6 Java (Linux) 3,6 1 15, ,5 54,4 C# (Windows) 2,8 5,5 13,6 28,5 4,4 62,6 C# (Linux) 1,8 3,2 7,9 17,2 24,8 35,3 13 lentelė. Duomenų įrašymo į SQLite duomenų bazę laikai minutėmis Diagramoje matyti (žr. 29 diagrama. Duomenų įrašymo į SQLite duomenų bazę greitis), kad Java abejose aplinkose ir C# Windows aplinkoje duomenis įrašo panašiu greičiu. Tačiau nemokamas atviro kodo projektas Mono C# užklausą insert into + lentele + (ID, Vardas,Pavarde,Rezultatas) values ( + id[i] +, + vardas[i] +, + pavarde[i] +, + rezultatas[i] + ) atlieka gerokai greičiau. 4 Milisekundės Duomenų kiekis 29 diagrama. Duomenų įrašymo į SQLite duomenų bazę greitis Java (Windows) Java (Linux) C# (Windows) C# (Linux) Pagal nutylėjimą SQLite duomenų bazė prieš įrašydama duomenis į duomenų bazę, pirmiausia laukia, kol duomenys bus išsaugoti pastoviojoje atmintyje, ir tik po to duomenis rašo į duomenų bazę. Tai užtikrina duomenų saugumą dingus elektros sroviai ar sutrikus operacinės sistemos veiklai. Į SQLite duomenų bazę galima įrašyti duomenis ir nesaugant jų pastoviojoje atmintyje. Išjungus sinchronizavimą SQLite duomenų bazėje įrašymo greitis padidėja nuo penkiasdešimties ir daugiau kartų, tačiau nutrūkus įrašymui, dėl dingusios elektros srovės ar sutrikusios operacinės sistemos veiklos duomenų bazė gali būti sugadinta. 55

56 Darbo pradžia su Access duomenų baze Norint naudotis Access duomenų bazę C# Windows aplinkoje nereikia siųstis jokių bibliotekų. Tai standartinė biblioteka, esanti.net bibliotekų pakete. Biblioteką tereikia įtraukti naudojant raktinius žodžius using System.Data.OleDb. Mono C# Linux aplinkoje naudoti Access duomenų bazes galima tik teoriškai, bibliotekos skirtos prisijungimui ir darbui yra, tačiau Linux aplinkoje nėra tilto tarp operacinės sistemos ir Access duomenų bazės. Mono kūrėjams šiuo metu tai nėra prioritetinė užduotis, todėl greičiausiu metu nebus galimybės Linux aplinkoje naudotis Microsoft Access duomenų bazėmis [13]. Windows aplinkoje dirbant su Java tai pat nereikia siųstis jokių bibliotekų, reikia importuoti klasę prisijungimui prie duomenų bazių import Java.sql.*;. Linux aplinkoje Java net ir turėdama tinkamą klasę negali pilnai dirbti su Access duomenų bazėmis. Linux aplinkoje nėra JDBC-ODBC (JOB) tilto leidžiančio bendrauti Java programavimo kalbai ir Access duomenų bazėms. Šis tiltas realizuotas tik Windows aplinkoje. Naudojantis esamomis klasėmis Java programose galima nuskaityti duomenis iš duomenų bazių, bet negalima jų įrašinėti, kurti lentelių ar duomenų bazių. Taigi norint dirbti su Access duomenų baze ji jau turi būti sukurta, joje jau turi būti sukurtos lentelės, kurios turi būti užpildytos duomenimis. Norint Linux aplinkoje Java programavimo kalba laisvai be apribojimų dirbti su Access duomenų bazėmis, galima įsigyti JDBC-ODBC tiltą tarp Access duomenų bazės ir operacinių sistemų Windows, Linux ir Unix. Šis tiltas kainuoja apie 657 eurus (~2268Lt). Jį galima įsigyti šiuo adresu: 56

57 Darbas su Access duomenų baze Tyrimui buvo sukurta Access duomenų bazė, joje buvo sukurta lentelė, kurioje buvo įrašyta dvidešimt tūkstančių įrašų (žr. 17 pav. Access duomenų bazė). Vienas įrašas sudarytas iš keturių laukų. Pirmas ID identifikavimo numeris sveikųjų skaičių tipo, antras Vardas tekstinio duomenų tipo laukas, trečias Pavarde tekstinio duomenų tipo laukas ir ketvirtas sveikųjų skaičių duomenų tipo laukas Rezultatas. Laukai Vardas ir Pavarde sugeneruoti iš atsitiktinių simbolių, kurie buvo sudėti į tekstines eilutes, kurių ilgis nuo 5 iki 14 simbolių. Į lauką Rezultatas buvo įrašomi atsitiktiniai sveikieji skaičiai iš intervalo [; 999]. 17 pav. Access duomenų bazė Per eksperimentus atliekamos analogiško užduotys su duomenų baze: duomenų nuskaitymas iš lentelės eilės tvarka, duomenų nuskaitymas iš lentelės pagal lauką Rezultatas mažėjimo tvarka ir duomenų įrašymas eilės tvarka į naują lentelę kaip ir SQLite domenų bazėje. 57

58 Duomenų skaitymas iš Access duomenų bazės Kadangi Linux aplinkoje Mono C# negali dirbti su Access duomenų bazėmis, todėl duomenų i6rinkimo rezultatų nėra pateiktoje lentelėje (žr. 14 lentelė. Duomenų išrinkimo eilės tvarka iš Access duomenų bazės laikai milisekundėmis). Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) C# (Linux) 14 lentelė. Duomenų išrinkimo eilės tvarka iš Access duomenų bazės laikai milisekundėmis Windows ir Linux aplinkose Java duomenis iš eilės išrenka panašiu greičiu, tačiau smarkiai atsilieka nuo C#, kaip ir su SQLite duomenų baze (žr. 3 diagrama. Duomenų išrinkimo eilės tvarka iš Access duomenų bazės greitis). Duomenų išrinkimui eilės tvarka naudojama užklausa SELECT * FROM Lentele. Milisekundės Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) 3 diagrama. Duomenų išrinkimo eilės tvarka iš Access duomenų bazės greitis Dėl jau minėtų priežasčių rezultatų lentelėje nėra Mono C# rezultatų (žr. 15 lentelė. Duomenų išrinkimo rikiuojant iš Access duomenų bazės laikai milisekundėmis). Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) C# (Linux) 15 lentelė. Duomenų išrinkimo rikiuojant iš Access duomenų bazės laikai milisekundėmis 58

59 Kaip ir rezultatai gauti atliekant eksperimentus su SQLite duomenų baze, greičiausiai su Access duomenų baze dirba C#. Java abejose aplinkose duomenis išrinko panašiu greičiu, tačiau nuo trylikos tūkstančių įrašų Windows operacinėje sistemoje Java pradėjo atsilikinėti nuo analogiškos programos Linux operacinėje sistemoje. Duomenų išrinkimui buvo naudojama tokia užklausa SELECT * FROM Lentele ORDER BY Rezultatas DESC. Kaip ir dirbant su SQLite duomenų baze, išrenkant duomenis iš Access duomenų bazės tam tikra tvarka, išrinkimas atliekamas greičiau nei imant įrašus iš eilės (žr. 31 diagrama. Duomenų išrinkimo pagal rezultatus iš Access duomenų bazės greitis) Milisekundės Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) 31 diagrama. Duomenų išrinkimo pagal rezultatus iš Access duomenų bazės greitis C# kalba parašytoje programoje nėra ryškaus skirtumo tarp įrašų išrinkimo eilės tvarka ir išrinkimo mažėjimo tvarka pagal lentelės lauką Rezultatas (žr. 32 diagrama. C# Windowsaplinkoje skaitymo iš Access duomenų bazės greitis) Milisekundės Iš eilės Pagal rezultatus Duomenų kiekis 32 diagrama. C# Windowsaplinkoje skaitymo iš Access duomenų bazės greitis 59

60 Java Windows ir Linux aplinkose skirtumai tarp išrinkimo eilės tvarka ir išrenkant pagal konkretų lauką mažėjimo tvarka Access duomenų bazėje išlieka, kaip ir SQLite duomenų bazėje (žr.33 diagrama. Java Linux aplinkoje skaitymo iš Access duomenų bazės greitis). Įrašų išrinkimas eilės tvarka atliekamas lėčiau, nei išrenkant pagal kriterijų Milisekundės Duomenų kiekis Iš eilės Pagal rezultatus 33 diagrama. Java Linux aplinkoje skaitymo iš Access duomenų bazės greitis 6

61 Duomenų įrašymas į Access duomenų bazę Access Duomenų bazėje išrinkti duomenys įrašomi į atskiras lenteles, kurių pavadinimai nurodo: programavimo kalbą, operacinę sistemą ir įrašų kiekį lentelėje (žr. 18 pav. Lentelės Access duomenų bazėje). Kadangi Linux operacinėje sistemoje nėra tilto tarp Access duomenų bazių ir pačios operacinės sistemos, duomenų įrašymo rezultatų nėra nei Mono C#, nei Java kalbomis. Didžiausią staigmeną sukėlė laikas, per kurį buvo įrašomi išrinkti įrašai (žr. 16 lentelė. Įrašų įrašymo į Access duomenų bazę laikai milisekundėmis). Java Windows aplinkoje vidutiniškai 341 kartą greičiau įrašo duomenis į Access duomenų bazę, nei SQLite duomenų bazę. C# Windows aplinkoje vidutiniškai 227 kartus greičiau įrašo duomenis į Access duomenų bazę, nei SQLite duomenų bazę. 18 pav. Lentelės Access duomenų bazėje Duomenų kiekis Java (Windows) Java (Linux) C# (Windows) C# (Linux) 16 lentelė. Įrašų įrašymo į Access duomenų bazę laikai milisekundėmis Tai pat netikėta, jog Java duomenis į Access duomenų bazę įrašo greičiau nei C#, nors abu C# ir Access yra Microsoft firmos kūrinai (žr. 34 diagrama. Įrašų rašymo į Access duomenų bazę greitis). 61

62 Milisekundės Duomenų kiekis Java (Windows) C# (Windows) 34 diagrama. Įrašų rašymo į Access duomenų bazę greitis 62

63 Java baitkodo ir mašininio kodo palyginimas Sukompiliavus Java programą su Excelsior JET programa, Windows aplinkoje sukuriamas failas su plėtiniu.exe, Linux aplinkoje sukuriamas failas su plėtiniu.bin. Visi eksperimentai buvo atliekami naudojant tuos pačius duomenis. Programų kodai nebuvo keičiami. Duomenų skaitymas naudojant srautus iš tekstinių failų greičiausiai atliekamas Linux aplinkoje, programoje sukompiliuotoje tiesiai į mašininį kodą. Gauti rezultatai rodo, kad programos sukompiliuotos į mašininį kodą skaito duomenis iš failų greičiau (žr. 35 diagrama. Duomenų skaitymo iš failų greitis) Milisekundės Duomenų kiekis Java(exe) Java(bin) Java (Windows) Java (Linux) 35 diagrama. Duomenų skaitymo iš failų greitis Skaičiuojant trikampių plotus pagal Herono formulę, programos su plėtiniais.exe ir.bin Windows ir Linux aplinkose skaičiavo vienodu greičiu. Šios programos greičiu lenkia programas naudojančias JVM (žr. 36 diagrama. Trikampių plotų skaičiavimo pagal Herono formulę greitis). Milisekundės Duomenų kiekis Java (exe) Java(Windows) Java (bin) Java (Linux) 36 diagrama. Trikampių plotų skaičiavimo pagal Herono formulę greitis 63

64 Atliekant veiksmus su simbolių eilutėmis programos, sukompiliuotos tiesiai į mašininį kodą, atlieka veiksmus lėčiau, nei naudojant JVM interpretatorių. Tačiau programoms su plėtiniais.exe ir.bin nebereikia naudoti JRE, tai leidžia išnaudoti didesnį operatyviosios atminties kiekį. Windows aplinkoje programas su plėtiniu.jar negalėjo apskaičiuoti kvadratinių lygčių, kai jų kiekis viršijo vieną milijoną lygčių, tačiau programas su plėtiniu.exe apskaičiavo du milijonus kvadratinių lygčių (žr. 37 diagrama. Kvadratinių lygčių sprendimo greitis). 6 5 Milisekundės Java(exe) Java(bin) Java (Windows) Java (Linux) Duomenų kiekis 37 diagrama. Kvadratinių lygčių sprendimo greitis Duomenų įrašymas į tekstinius failus atliekamas greičiau naudojant baitkodą ir JVM. Java sukompiliuota tiesiai į mašininį kodą duomenis įrašo lėčiau. Didėjant įrašomų duomenų kiekiui lėčiausiai įrašymas atliekamas Linux aplinkoje (žr. 38 diagrama. Duomenų įrašymo į failus greitis). Milisekundės Duomenų kiekis Java(exe) Java(bin) Java (Windows) Java (Linux) 38 diagrama. Duomenų įrašymo į failus greitis 64

65 Duomenų įrašymo greitis į Access duomenų bazę praktiškai nesiskiria tarp programos sukompiliuotos tiesiai į mašininį kodą ir programos sukompiliuotos į baitkodą (žr. 39 diagrama. Įrašų rašymo į Access duomenų bazę greitis). Milisekundės Duomenų kiekis Java(exe) Java (Windows) 39 diagrama. Įrašų rašymo į Access duomenų bazę greitis Java programos sukompiliuotos tiesiai į mašininį kodą greičiau išrenka įrašus iš Access duomenų bazės, nei Java programos naudojančios JVM. Tačiau kompiliuojant programas tiesiai į mašininį kodą Windows aplinkoje Java nepasiekia tokio greičio, kaip C#. Panašiu greičiu, kaip C# veikia tik Java programa, sukompiliuota tiesiai į mašininį kodą Linux aplinkoje (žr. 4 diagrama. Duomenų išrinkimas eilės tvarka iš Access duomenų bazės) Milisekundės Java(exe) Java (Windows) Java (bin) C# (Windows) Java (Linux) Duomenų kiekis 4 diagrama. Duomenų išrinkimas eilės tvarka iš Access duomenų bazės Java programa, sukompiliuota tiesiai į mašininį kodą, Linux aplinkoje greičiau išrenka įrašus pagal pasirinktą lauką iš Access duomenų bazės, nei Java programos naudojančios JVM. Windows aplinkoje 65

66 sukompiliuotos tiesiai į mašininį kodą programos greitis mažai skiriasi nuo programų naudojančių JVM (žr. 41 diagrama. Duomenų išrinkimo pagal rezultatus iš Access duomenų bazės greitis) Milisekundės Duomenų kiekis Java(exe) Java (bin) Java (Windows) Java (Linux) C# (Windows) 41 diagrama. Duomenų išrinkimo pagal rezultatus iš Access duomenų bazės greitis Duomenų įrašymas į SQLite duomenų bazę atliekamas tokiu pačiu greičiu, nesvarbu, ar programa sukompiliuota tiesiai į mašininį kodą ar naudojant JVM (žr. 42 diagrama. Duomenų įrašymo į SQLite duomenų bazę greitis). Pagal nutylėjimą SQLite duomenų bazė prieš įrašydama duomenis į duomenų bazę, pirmiausia laukia, kol duomenys bus išsaugoti pastoviojoje atmintyje, ir tik po to duomenis rašo į duomenų bazę. Tai užtikrina duomenų saugumą dingus elektros srovei ar sutrikus operacinės sistemos veiklai. 4 3 Milisekundės 2 1 Java (exe) Java (bin) Java (Windows) Java (Linux) Duomenų kiekis 42 diagrama. Duomenų įrašymo į SQLite duomenų bazę greitis 66

67 Windows aplinkoje programa sukompiliuota tiesiai į mašininį kodą išrenka įrašus iš SQLite duomenų bazės panašiu greičiu, kaip naudojanti JVM. Linux aplinkoje programa sukompiliuota tiesiai į mašininį kodą veikia greičiau, bet neprilygsta programų greičiui Windows aplinkoje (žr. 43 diagrama. Duomenų skaitymo iš SQLite duomenų bazės greitis). Visos Java programos atsilieka nuo C# programų, išrenkant įrašus iš SQLite duomenų bazės. 5 4 Milisekundės Java (exe) Java (bin) Java (Windows) Java (Linux) Duomenų kiekis 43 diagrama. Duomenų skaitymo iš SQLite duomenų bazės greitis Išrenkant įrašus pagal lentelės lauką (Rezultatas) mažėjimo tvarka, greičiausiai užduotį atlieka programa sukompiliuota tiesiai į mašininį kodą Windows aplinkoje. Lėčiausiai išrinkimo užklausą atlieka programa sukompiliuota tiesiai į mašininį kodą Linux aplinkoje (žr. 44 diagrama. Duomenų skaitymo iš SQLite duomenų bazės rikiuojant duomenis greitis). 67

68 5 Milisekundės Java (exe) Java (bin) Java (Windows) Java (Linux) Duomenų kiekis 44 diagrama. Duomenų skaitymo iš SQLite duomenų bazės rikiuojant duomenis greitis C# ir Java aplikacijos kūrimas mobiliesiems telefonams Android yra atviro kodo operacinė sistema, kuri labai plačiai naudojama išmaniuosiuose telefonuose ir planšetiniuose kompiuteriuose. Ši operacinė sistema, tai Linux operacinės sistemos ir įvairių Google sukurtų papildomų plėtinių kombinacija. Šioje operacinėje sistemoje naudojama programavimo kalba Java. Kuriamos programos sąsaja yra dalinai aprašoma.xml (extensible markup language) [19]. Kurti programas išmaniesiems telefonams ir planšetiniams kompiuteriams su Android operacine sistema yra sukurtos kelios aplinkos: Eclipse, Android studio, IntelliJ IDEA, NetBeans. Kompiuteryje tai pat reikia įdiegti Android emuliatorių, tačiau tai nėra būtina, nes sukurtas programas galima paleisti tiesiai į įrenginį. Programų testavimas naudojant Android emuliatorių užtrunka ilgiau ir naudoja daugiau kompiuterio resursų, nei testavimas mobiliajame įrenginyje. Sukūrus naują projektą sukuriamas ir rodomas grafinis langas, kuriame yra antraštė su projekto pavadinimu ir teksto laukas su žodžiais Hello World, kuriame galima įkelti norimus valdiklius, tokius kaip mygtukai, teksto laukai, etiketės ir kitus valdiklius (žr. 19 pav. Naujas Android projektas). Pirmas objektas kuris būtinas, tai schema pagal kurią bus lygiuojami kiti valdikliai (layout), įprastai pagal nutylėjimą jau būna įkelta tokia schema. Visi reikalingi objektai įkeliami iš įrankių juostos. 68

69 19 pav. Naujas Android projektas Du kartus spragtelėjus pele ant bet kurio objekto atveriamas langas, kuriame yra.xml kodas (žr. 16 programos kodas. Objekto.xml kodas). Kode aprašyti visi įkelti objektai ir jų savybės. 69

70 <Button Android:layout_width="match_parent" Android:layout_height="wrap_content" Android:layout_marginTop="124dp" Android:text="Button"/> 16 programos kodas. Objekto.xml kodas Visi įkelti objektai turi turėti unikalius vardus, aprašytus xml kode visi sukurti objektai yra vieši ir prieinami visoms klasėms. Nesvarbu kiek būtų sukurta xml failų, tačiau visų objektų, esančių failuose, vardai turi būti skirtingi. 2 pav. Android programos langai Java kode pagrindinėje klasėje nurodoma, kurį.xml failą rodyti išmaniojo telefono ar planšetinio kompiuterio ekrane, naudojant funkciją setcontentview(r.layout.activity_main) (žr. 17 programos kodas. Pagrindinėje klasėje nurodomas.xml failas). Failas pasirenkamas iš jau esamų failų sąrašo (žr. 2 pav. Android programos langai). publicclass MainActivity extends ActionBarActivity protectedvoid oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); 7

71 17 programos kodas. Pagrindinėje klasėje nurodomas.xml failas Norint naudoti visus įkeltus valdiklius, aprašytus.xml kode Java klasėje, būtina sukurti norimo tipo objektus ir jiems priskirti.xml kode aprašyto objekto vardą. Button ivd = (Button) findviewbyid(r.id.ivadas);. Toliau aprašomi veiksmai Java kode, ką turi daryti sukurtas objektas. Java skirtingose klasėse galima naudoti tuos pačius vardus Java objektams (žr. 18 programos kodas. Vienodi objektų vardai skirtingose klasėse). Pirma klasė publicclass MainActivity extends ActionBarActivity protectedvoid oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); Button migtukas = (Button) findviewbyid(r.id.ivadas); Antra klasė publicclass Priskirimas extends ActionBarActivity protectedvoid oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.priskirimas); Button migtukas= (Button) findviewbyid(r.id.p3); 18 programos kodas. Vienodi objektų vardai skirtingose klasėse Windows yra operacinė sistema išmaniesiems telefonams, kurią sukūrė Microsoft firma. Šioje operacinėje sistemoje naudojamos programavimo kalbos C# ir Visual Basic. Windows Phone išmaniųjų telefonų programų kūrimui yra aplinkos tokios kaip Microsoft Visual Studio 21 for Windows Phone, Microsoft Visual Studio 212 for Windows Phone. Naudojant Microsoft Visual Studio 21 for Windows Phone aplinką galima kurti programas tik Windows phone 7. ir Windows Phone 7.1 operacinėms sistemoms, tačiau naujesnėse operacinių sistemų versijose 71

72 Windows Phone 8. ir Windows Phone 8.1 programos tai pat veikia. Parašius programas Microsoft Visual Studio 212 for Windows Phone aplinkoje programos veikia tik Windows Phone 8. ir Windows Phone 8.1 operacinėse sistemose. Kompiuteryje tai pat reikia įdiegti Windows Phone emuliatorių. Windows Phone emuliatorius pasižymi tuo, kad veikia labai greitai, neapkrauna kompiuterio, kaip Android emuliatorius. Programuojant Windows Phone yra galimybė programas testuoti ne emuliatoriuje, bet išmaniajame telefone, tačiau greičio skirtumas nėra didelis, todėl labai patogu naudoti emuliatorių [15]. Sukūrus naują projektą, sukuriamas grafinis langas su dviem teksto laukais, šalia grafinio lango rodomas.xaml kodas. Kaip ir Android naudojamame.xml kode, taip ir Microsoft.xaml kode aprašomos įkeltų objektų savybės (žr. 21 pav. Naujas Windows Phone projektas). 21 pav. Naujas Windows Phone projektas Kitaip nei Android programose,.xaml kode aprašyti objektai yra lokalūs ir nematomi kitoms klasėms. Tai labai patogu naudojant kelis langus, kuriuose tokie patys objektai, atliekantys tas pačias operacijas ir jiems galima suteikti tokius pačius vardus. Kaip ir Android, taip ir Windows Phone programai reikalingi valdikliai imami iš įrankių juostos, kurioje yra mygtukai, tekstų laukai, etiketės ir kiti valdikliai (žr. 22 pav. Įrankių juosta). 72

73 22 pav. Įrankių juosta Du kartus spustelėjus pele ant įkelto objekto, atveriamas langas su C# kodu, kuriame automatiškai sugeneruojama dalis kodo (žr. 19 programos kodas. Automatiškai sugeneruojamas C# kodas). Kuriant programas, skirtas Windows Phone, nereikia susieti C# objektų su.xaml objektais, tai atliekama automatiškai. publicpartialclassmainpage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); privatevoid mygtukas_click(object sender, RoutedEventArgs e) { 19 programos kodas. Automatiškai sugeneruojamas C# kodas Automatinis susiejimas padeda išvengti klaidų, kai susiejami objektai yra skirtinguose failuose. Tai pat galima automatiškai sugeneruoti įvykių kodus (žr. 23 pav. Automatinis įvykių generavimas). 73

74 23 pav. Automatinis įvykių generavimas Pagrindinis trūkumas programuojant Windows Phone izoliuoti failai ir aplankai. Tiesiogiai nuskaityti izoliuotus failus neįmanoma, kaip ir įeiti į izoliuotus aplankus. Tai sukelia problemų, kai norima atidaryti skaitymui ar rašymui failus esančius aplankuose. Iš pirmo žvilgsnio failų ir aplankų izoliavimas turėtų suteikti saugumą, bet taip nėra, nes pridėjus biblioteką iš trečiųjų šalių, apsauginis mechanizmas išjungiamas ir atsiranda laisvas priėjimas prie failų. Yra sukurtas nemokamas ir atviro kodo projektas Xamarine, skirtas kurti programas išmaniesiems telefonams naudojant C# programavimo kalbą. Tą patį parašytą programos kodą galima vykdyti Windows Phone, Android, ios operacinėse sistemose. Projekto kūrėjai teigia, kad viską, ką galima padaryti su Java, Swift ar Objectiv-C galima padaryti ir su C#. Ši aplinka nebuvo išbandyta ir nebuvo sukurta jokių programų. 74

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

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

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

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

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. 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

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

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

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

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

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

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++ 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

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

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

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

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

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

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

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

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

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

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

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

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

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

Į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

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

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

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

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

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

INFORMACINĖS SISTEMOS INVENTORIAUS VALDYMO SISTEMA

INFORMACINĖS SISTEMOS INVENTORIAUS VALDYMO SISTEMA ŠIAULIŲ UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA Denas Pavlavičius Informatikos specialybės II kurso dieninio skyriaus studentas INFORMACINĖS SISTEMOS INVENTORIAUS VALDYMO

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

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

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

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

Naujos galimybės su Lotus Notes 8.5.1: naudotojams ir programuotojams

Naujos galimybės su Lotus Notes 8.5.1: naudotojams ir programuotojams Naujos galimybės su Lotus Notes 8.5.1: naudotojams ir programuotojams IBM Programinės įrangos diena 2009 m. spalio 21 d. Andrejus Chaliapinas, IĮ Infosana vadovas http://www.infosana.com Prezentacijos

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++ 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

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

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

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

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

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

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

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

VERSLO KLIENTŲ APTARNAVIMAS TEL

VERSLO KLIENTŲ APTARNAVIMAS TEL paslaugos Virtualus biuras valdymas ir naudojimas VERSLO KLIENTŲ APTARNAVIMAS TEL. 1816 Skambučio kaina tel. 1816 TEO tinkle 0,16 Lt/min., sujungimo mokestis 0,12 Lt; iš Omnitel, Bitė Lietuva ir Tele2

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

JAVA PROGRAMOS KODO ANALIZĖS NAUDOJANT SCRO ONTOLOGIJĄ GALIMYBIŲ TYRIMAS

JAVA PROGRAMOS KODO ANALIZĖS NAUDOJANT SCRO ONTOLOGIJĄ GALIMYBIŲ TYRIMAS KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS VYTENIS SODAITIS JAVA PROGRAMOS KODO ANALIZĖS NAUDOJANT SCRO ONTOLOGIJĄ GALIMYBIŲ TYRIMAS Baigiamasis magistro projektas Vadovas doc. dr. R. Butkienė

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

Š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

PROGRAMINĖS ĮRANGOS KŪRIMO PRIEMONIŲ MOBILIOSIOMS PLATFORMOMS TYRIMAS

PROGRAMINĖS ĮRANGOS KŪRIMO PRIEMONIŲ MOBILIOSIOMS PLATFORMOMS TYRIMAS KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS INFORMATIKOS STUDIJŲ PROGRAMA AUDRIUS MIČIULIS PROGRAMINĖS ĮRANGOS KŪRIMO PRIEMONIŲ MOBILIOSIOMS PLATFORMOMS TYRIMAS Magistro darbas Darbo vadovas

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

Ž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

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

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

WVGA :9 None. This is the only supported resolution for Windows Phone OS 7.1.

WVGA :9 None. This is the only supported resolution for Windows Phone OS 7.1. Windows Phone Palaikomi ekranai Resolution Resolution Aspect ratio Delta from Windows Phone OS 7.1 Scaled resolution WVGA 480 800 15:9 None. This is the only supported resolution for Windows Phone OS 7.1.

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

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

Step-by step guide for MRU students to uploading Master s Thesis to elaba repository

Step-by step guide for MRU students to uploading Master s Thesis to elaba repository Step-by step guide for MRU students to uploading Master s Thesis to elaba repository www.elaba.lt Log in the repository Go to www.elaba.lt Select Submit to repository Select your institutional affiliation

More information

VILNIAUS PEDAGOGINIS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA EDITA MUDURYTĖ

VILNIAUS PEDAGOGINIS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA EDITA MUDURYTĖ VILNIAUS PEDAGOGINIS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS INFORMATIKOS KATEDRA EDITA MUDURYTĖ MICROSOFT OPERACINIŲ SISTEMŲ SĄSAJŲ LYGINAMOJI ANALIZĖ Magistro baigiamasis darbas Darbo vadovai

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

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

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

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

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

Microsoft Access ir Visual FoxPro duomenų bazių valdymo sistemų palyginimas

Microsoft Access ir Visual FoxPro duomenų bazių valdymo sistemų palyginimas VILNIAUS PEDAGOGINIS UNIVERSITETAS Matematikos ir informatikos fakultetas Informatikos katedra Microsoft Access ir Visual FoxPro duomenų bazių valdymo sistemų palyginimas Baigiamasis darbas informatikos

More information

Virtualizavimo infrastruktūros parinkimas ir taikymas mažose ir vidutinio dydžio įmon se

Virtualizavimo infrastruktūros parinkimas ir taikymas mažose ir vidutinio dydžio įmon se KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS KOMPIUTERIŲ KATEDRA Žygimantas Žąsytis Virtualizavimo infrastruktūros parinkimas ir taikymas mažose ir vidutinio dydžio įmon se Magistro darbas

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

IBM Trusteer Fraud Protection

IBM Trusteer Fraud Protection Paslaugos aprašas IBM Trusteer Fraud Protection Šiame Paslaugos apraše apibūdinta Cloud Service, kurią IBM pateikia Klientui. Klientas reiškia susitariančiąją šalį, jos įgaliotuosius vartotojus ir Cloud

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

PROJEKTAS PROFESIJOS MOKYTOJŲ IR DĖSTYTOJŲ TECHNOLOGINIŲ KOMPETENCIJŲ TOBULINIMO SISTEMOS SUKŪRIMAS IR ĮDIEGIMAS (NR.: VP1-2.2-ŠMM-02-V ) 1

PROJEKTAS PROFESIJOS MOKYTOJŲ IR DĖSTYTOJŲ TECHNOLOGINIŲ KOMPETENCIJŲ TOBULINIMO SISTEMOS SUKŪRIMAS IR ĮDIEGIMAS (NR.: VP1-2.2-ŠMM-02-V ) 1 SISTEMOS SUKŪRIMAS IR ĮDIEGIMAS (NR.: VP1-2.2-ŠMM-02-V-02-001) 1 UGDYMO PLĖTOTĖS CENTRAS PROJEKTAS PROFESIJOS MOKYTOJŲ IR DĖSTYTOJŲ TECHNOLOGINIŲ KOMPETENCIJŲ TOBULINIMO SISTEMOS SUKŪRIMAS IR ĮDIEGIMAS

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

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

16. ŠABLONAI. int abs( int ); float fabs( float ); double dabs( double ),...

16. ŠABLONAI. int abs( int ); float fabs( float ); double dabs( double ),... 16. ŠABLONAI Šablonas (angl. template) lakoniškas mechanizmas užrašyti funkcijų ar klasių, besiskiriančių tik argumentų ar laukų formatais, šeimą. Pavyzdžiui, absoliutinis dydis C kalboje (joje nėra šablonų)

More information

6-7-8 PASKAITOS. Bendros žinios

6-7-8 PASKAITOS. Bendros žinios 6-7-8 PASKAITOS Turinys: Paveldimumas Bendros žinios. Išvestinės klasės konstruktoriai. Paveldimumas ir metodų perkrovimas. Įvadas į abstrakčias klases. Bendrasis ir dalinis paveldimumas. Daugybinis paveldimumas.

More information

PROGRAMAVIMAS IR PROGRAMINĖ ĮRANGA

PROGRAMAVIMAS IR PROGRAMINĖ ĮRANGA ISSN 1392-0561. INFORMACIJOS MOKSLAI. 2009 50 PROGRAMAVIMAS IR PROGRAMINĖ ĮRANGA Ensuring Models Consistency in the OMT, Booch, and OOSE Object-Oriented Methods * Rūta Dubauskaitė Vilnius Gediminas Technical

More information

2011 m. valstybinio brandos egzamino uþduotis, pagrindinë sesija

2011 m. valstybinio brandos egzamino uþduotis, pagrindinë sesija 1 iš 24 LIETUVOS RESPUBLIKOS ÐVIETIMO IR MOKSLO MINISTERIJA NACIONALINIS EGZAMINØ CENTRAS Kandidato (-ës) darbo vietos þymë 2011 m. valstybinio brandos egzamino uþduotis, pagrindinë sesija Egzamino trukmë

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

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

Išplėtimo lizdai gale (kiekis): 7 Korpuso spalva: Black Išorinių 5.25" lizdų skaičius: 4 Išorinių 3.5" lizdų skaičius: 1 Vidinių 3.

Išplėtimo lizdai gale (kiekis): 7 Korpuso spalva: Black Išorinių 5.25 lizdų skaičius: 4 Išorinių 3.5 lizdų skaičius: 1 Vidinių 3. Korpusas (case) MicroATX: Yra 3.5" External: 2 3.5" Internal: 1 5.25" External: 2 Audio-Out: 1 USB 2.0: 2 Spalva: Juodas / Sidabrinis Unit Brutto Volume: 0.021805 Unit Net Weight: 4.37 Unit Gross Weight:

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

Programinio kodo saugumas

Programinio kodo saugumas Programinio kodo saugumas Rolandas Griškevičius rolandas.griskevicius@fm.vgtu.lt MSN: rgrisha@hotmail.com http://fmf.vgtu.lt/~rgriskevicius 2009-12-18 R. Griškevičius, Saugus programavimas, VGTU, 2009

More information

Scrum su Kanban naudojančios organizacijos programų sistemų kūrimo proceso vertinimas

Scrum su Kanban naudojančios organizacijos programų sistemų kūrimo proceso vertinimas ISSN 9-056. INORMACIJOS MOKSLAI. 07 79 DOI: https://doi.org/0.588/im.07.79.05 Scrum su Kanban naudojančios organizacijos programų sistemų kūrimo proceso vertinimas Vaidotas Pėkis Vilniaus universiteto

More information

Aktyvaus procesų stebėjimo kompiuteryje programinės įrangos kūrimas ir tyrimas

Aktyvaus procesų stebėjimo kompiuteryje programinės įrangos kūrimas ir tyrimas KAUNO TECHNOLOGIJOS UNIVERSITETAS INFORMATIKOS FAKULTETAS PROGRAMŲ INŽINERIJOS KATEDRA Simonas Jusas Aktyvaus procesų stebėjimo kompiuteryje programinės įrangos kūrimas ir tyrimas Magistro darbas Darbo

More information

Asta Čitavičienė LIBRARY

Asta Čitavičienė LIBRARY elaba REPOSITORY USER GUIDE FOR A STUDENT Asta Čitavičienė LIBRARY 2016-09-10 Login Go to elaba website at www.elaba.lt Select a reference Deposit to elaba Login 1. 2. Select your institution: Kauno technologijos

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

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

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

LARGE-SCALE SET PARTITIONING PROBLEMS: SOME REAL-WORLD INSTANCES HIDE A BENEFICIAL STRUCTURE

LARGE-SCALE SET PARTITIONING PROBLEMS: SOME REAL-WORLD INSTANCES HIDE A BENEFICIAL STRUCTURE 18 ISSN 1392-8619 print/issn 1822-3613 online ÛKIO TECHNOLOGINIS OGINIS IR EKONOMINIS VYSTYMAS TECHNOLOGICAL OGICAL AND ECONOMIC DEVELOPMENT OF ECONOMY http://www.tede.vgtu.lt 2006, Vol XII, No 1, 18 22

More information

2006 m. valstybinio brandos egzamino užduotis

2006 m. valstybinio brandos egzamino užduotis LIETUVOS RESPUBLIKOS ÐVIETIMO IR MOKSLO MINISTERIJA NACIONALINIS EGZAMINØ CENTRAS 2006 m. valstybinio brandos egzamino užduotis 2006 m. gegužės 26 d. Egzamino trukmė 3 val. Testas 1 val. 25 min (85 min.)

More information

Didelės apimties svetainės optimizavimas taikant SEO principus

Didelės apimties svetainės optimizavimas taikant SEO principus VILNIAUS UNIVERSITETAS MATEMATIKOS IR INFORMATIKOS FAKULTETAS PROGRAMŲ SISTEMŲ KATEDRA Didelės apimties svetainės optimizavimas taikant SEO principus Large-scale website optimization applying SEO principles

More information

GREITAS IR TIKSLUS OBJEKTO PARAMETRŲ NUSTATYMAS MAŠININĖS REGOS SISTEMOSE

GREITAS IR TIKSLUS OBJEKTO PARAMETRŲ NUSTATYMAS MAŠININĖS REGOS SISTEMOSE 14-osios Lietuvos jaunųjų mokslininkų konferencijos Mokslas Lietuvos ateitis ISSN 2029-7149 online 2011 metų teminės konferencijos straipsnių rinkins ISBN 978-9955-28-835-0 KOMPIUTERINĖ GRAFIKA IR PROJEKTAVIMAS

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

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

Vilniaus Gedimino technikos universitetas,

Vilniaus Gedimino technikos universitetas, INFORMATIKA 11-osios Lietuvos jaunųjų mokslininkų konferencijos Mokslas Lietuvos ateitis, įvykusios Vilniuje 2008 m. balandžio 9 11 d., straipsnių rinkinys VERSLO VALDYMO SISTEMOS MICROSOFT DYNAMICS AX

More information

FUNDAMENTINIŲ MOKSLŲ FAKULTETAS GRAFINIŲ SISTEMŲ KATEDRA. Tadas Kazakevičius

FUNDAMENTINIŲ MOKSLŲ FAKULTETAS GRAFINIŲ SISTEMŲ KATEDRA. Tadas Kazakevičius VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS FUNDAMENTINIŲ MOKSLŲ FAKULTETAS GRAFINIŲ SISTEMŲ KATEDRA Tadas Kazakevičius GREITAS IR TIKSLUS OBJEKTO PARAMETRŲ NUSTATYMAS MAŠININĖS REGOS SISTEMOSE FAST AND

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

C++ programavimo kalba

C++ programavimo kalba C++ programavimo kalba Santrauka doc.dr. Dalius Mažeika Dalius.Mazeika@fm.vtu.lt VGTU SC L318 Programavimo kalbos Procedūrinės (Assembler, ankstyvos, Fortran versijos) Pagrindą sudaro procedūros. Kiekvienas

More information