kuvan 1 ohjelma saadaan File - New... : New, Console Application tai kirjoitetaan halutulla editorilla ja käännetään ja ajetaan komentorivillä

Koko: px
Aloita esitys sivulta:

Download "kuvan 1 ohjelma saadaan File - New... : New, Console Application tai kirjoitetaan halutulla editorilla ja käännetään ja ajetaan komentorivillä"

Transkriptio

1 Sisällys 1 Object Pascal Ohjelman rakenne Käännösyksiköt Kielen perusrakenteita Muuttujat Tyypit Tyyppikonversiot Vakiot Taulukot Tietueet Lueteltu tyyppi Joukot Osoittimet Dynaamisuus Osoittimien määrittely ja käyttö Operaattorit Aritmeettiset operaattorit Vertailuoperaattorit Lauserakenteita Valintalauseet Toistolauseet Keskeytyslauseet With-lause Aliohjelmat Proseduurit Funktiot Luokat ja oliot Poikkeuksien hallinta Poikkeuksien synnyttäminen...13 Liite 1: Standardifunktioita ja -proseduureja...14 Liite 2: Luokkahierarkiaesimerkki

2 1 Object Pascal helposti luettava nopeasti kääntyvä rakenteinen ohjelmointikieli, joka sisältää olio-ominaisuudet ja pohjalla Pascal-kieli käytetään mm. Delphi-sovelluskehittimessä Javasta Pascaliin - isot ja pienet kirjaimet samanarvoisia - sijoitusoperaattori :=, yhtäsuuruuden vertailu =, erisuuruuden vertailu <>, ei-operaattori not - lohkomääritys end parilla (vrt. Javan { } ) - merkkijonovakiot määritellään yksinkertaisten lainausmerkkien sisällä esim. 'tekstiä' - koodin kommentointi : { }, //, (* *) 1.1 Ohjelman rakenne ohjelma koostuu Delphissä - projektitiedostosta - lomakkeista (form), joissa käytetään VCL-kirjastokomponentteja - käännösyksiköistä (unit) { Konsolisovellus Delphillä} program Tapaus; {$APPTYPE CONSOLE} var MJono : string; // tästä alkaa pääohjelma Mjono := 'Mahtava maailma!'; WriteLn(Mjono); end. Kuva1: Konsolisovellus kuvan 1 ohjelma saadaan File - New... : New, Console Application tai kirjoitetaan halutulla editorilla ja käännetään ja ajetaan komentorivillä dcc32 tapaus tapaus ohjelma alkaa varatulla sanalla program {$APPTYPE CONSOLE} kertoo kääntäjälle, että ohjelma on komentoriviltä ajettava 2

3 seuraavaksi tulee var-lohko, joka alkaa varatulla sanalla var - lohkossa määritellään ohjelmassa käytettävät muuttujat, muotoa: var muuttuja1, muuttuja2, muuttuja3 : tyyppi1; muuttuja4, muuttuja5 : tyyppi2; seuraavana alkaa pääohjelma, joka alkaa varatulla sanalla lauseet erotetaan puolipisteellä. Siis Writeln-rivin lopussa oleva puolipiste ei ole pakollinen... ohjelma loppuu varattuun sanaan end ja sitä seuraavaan pisteeseen. Delphin projektissa, josta tehdään kokonainen 'tuote' (sovellus, komponentti, dll-kirjasto), on oltava aina projektitiedosto program helloprj; uses Forms, hello in 'hello.pas' {Form1}; {$R *.RES} Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Kuva 1: Projektin pääohjelma uses-lauseessa luetellaan ne käännösyksiköt, joiden palveluita (ominaisuuksia) ohjelma käyttää. Lauseella saadaan siis käyttöön haluttujen käännösyksiköiden palvelut. ohjelman rungossa alustetaan ohjelma, luodaan ikkunat ja käynnistetään sovellus 1.2 Käännösyksiköt jokaista lomaketta kohti on aina yksi käännösyksikkö, jossa on esim. lomakkeen tapahtumankäsittelijät voidaan myös tehdä käännösyksiköitä, jotka eivät liity mihinkään lomakkeeseen - ohjelmalogiikka tulisi sijoittaa tällaisiin käännösyksiköihin käännösyksikön osat: unit Yksi; interface uses { interface-osan käyttämät käännösyksiköt } { Interface-osa } implementation uses { implementation-osan käyttämät käännösyksiköt, joita ei nimetty interface-osan uses-kohdassa } 3

4 { Implementation-osa } initialization { Initialization-osa, ei pakollinen } finalization { Finalization-osa, ei pakollinen } end. unit-otsikko kertoo käännösyksikön nimen - oltava sama kuin mille nimelle tiedosto tallennetaan (poislukien tiedostopääte) HUOM! käännösyksikön ja projektitiedoston nimi eivät saa olla samat, vaikka niillä on eri tiedostopääte interface-lohkossa esitellään vakiot, muuttujat, tyypit, proseduurit ja funktiot, jotka halutaan tarjota muiden käännösyksiköiden käyttöön - uses-osassa kerrotaan mitä käännösyksiköitä interface-osan määrittelyt käyttävät implementation-lohkossa sijaitsevat interface-lohkossa esiteltyjen proseduurien ja funktioiden toteutukset (ohjelmakoodi) lisäksi määritellään käännösyksikön omassa yksityisessä käytössä olevat vakiot, muuttujat, tyypit, proseduurit ja funktiot initialization-lohko ei ole pakollinen; lohkon koodi suoritetaan ohjelman käynnistyessä ja siellä voidaan suorittaa käännösyksikön muuttujien alustukset finalization-lohko ei ole pakollinen; lohkon koodi suoritetaan ohjelman suorituksen loppuessa käännösyksikön lopussa on aina oltava end. 1.3 Kielen perusrakenteita Muuttujat perustietotyypit Integer Char Boolean Real String kokonaislukutyyppi, eri versioita esim. Shortint ja Longint merkkityyppi, voi sisältää yhden merkin totuusarvo, voi sis. True tai False reaalilukutyyppi, eri versioita merkkijonotyyppi, eri versioita muuttujien määrittelyt joko interface- tai implementation -osaan tai aliohjelman paikalliset muuttujat otsikon ja :n väliin omaan var-lohkoon paikalliset muuttujat (aliohjelman sisäinen tai luokan jäsenmuuttuja) pitää alustaa ennen käyttöä (arvo määrittelemätön muuttujan esittelyn jälkeen) esim. var Form1 : TForm1; Kluku1, Kluku2 : Integer; Merkki : Char; Kluku1 := 1; Kluku1 := Kluku1 +1; // ok // ei ok, arvo satunnainen!! Kluku1 := Kluku2; 4

5 1.3.2 Tyypit määritellään type-lohkossa Delphin kaikki valmiit tyyppinimet (ei-perustietotyypit) alkavat T-kirjaimella (tapaa voi käyttää myös omissa tyyppimäärityksissä) type TPaivat = (Maanantai, Tiistai, Keskiviikko, Torstai, Perjantai, Lauantain, Sunnuntai); TArkipaivat = Maanantai..Perjantai; Tyyppikonversiot esim. tekstikomponentin teksti tarvitaan muuttaa kokonaisluvuksi i := StrToInt(Edit1.Text); paljon valmiita funktioita, yleisesti tyypinmuunnos (type cast) tyyppi(muuttuja) mikäli mahdollista toteuttaa (ei suositella numeerisille tyypeille), oliomuuttujilla myös as-operaattori esim. (Sender as TButton).Caption := '&Ok'; useimmin tarvittavia muunnosfunktioita (kts. myös liite 1) CurrToStr valuutta merkkijono DateTimeToStr DateTime merkkijono DateToStr -"- FloatToStr Float merkkijono IntToStr kokonaisluku merkkijono StrToCurr merkkijono valuutta StrToDate merkkijono DateTime StrToDateTime -"- StrToFloat merkkijono Float StrToInt merkkijono kokonaisluku StrToTime merkkijono DateTime TimeToStr DateTime merkkijono Int liukuluku kokonaisluku Round liukuluku kokonaisluku (pyöristys) Chr kokonaisluku (ASCII-koodi) Char Vakiot määritellään const-lohkossa - kannattaa sijoittaa var-lohkon edelle const MinimiArvo = 0; MaksimiArvo = 10; Pii = ; 5

6 1.3.5 Taulukot yksi- tai useampiulotteinen käytetyt indeksit voidaan valita määrittelyssä (indeksien tarkistukseen voi käyttää low- ja highfunktioita) var taulu1 : array [1..100] of real; taulu2 : array [1..5,1..5,1..5] of integer; taulu3 : array [1..10,1..10] of string; näihin voitaisiin viitata taulu1[5] := 10; taulu2[1,2,5] := 1; taulu3[1,5] := 'Tietoa'; staattisten taulukoiden lisäksi on mahdollista tehdä myös dynaamisia taulukoita (dynamic arrays) esim. var A : array of string; SetLength(A, 1); A[0] := 'teksti'; aliohjelmien parametreissa voidaan jättää tarvittaessa indeksit määrittelemättä (open array parameters) esim. procedure Clear(var A: array of Real); var I: Integer; for I := 0 to High(A) do A[I] := 0; Tietueet tietuetyypin määrittelyllä voidaan luoda rakenteinen tyyppi, jonka arvoja voidaan käsitellä kokonaisina (esim. parametrin välityksessä), vrt. oliot type tietuetyyppinimi = record kenttä : tyyppi;... kenttä : tyyppi; tietuetyyppinimi on uuden tyypin nimi kenttä on kentän nimi tyyppi on kentän tyyppi tietueen kenttiin viitataan pistenotaatiolla tietuemuuttuja.kenttä 6

7 esim. program tietueohj; type Henkilotiedot = record Nimi : string; Osoite : string; Ika : Integer; var Tietue : Henkilotiedot; Tietue.Nimi := 'Matti'; Tietue.Ika := 55; end Lueteltu tyyppi merkinnällä type tyyppinimi = (arvo1,..., arvon) voidaan määritellä lueteltuja tyyppejä (enumerated types) esim. type TKorttiMaa = (hertta, ruutu, risti, pata ); määrittelee tyypin TKorttiMaa, jonka mahdollisia arvoja ovat hertta, ruutu, risti, pata. Arvoilla on listan mukainen edeltäjä/seuraaja-järjestys (voidaan käyttää funktioita ord, pred, succ, high, low). TKorttiMaa-tyyppiä voidaan käyttää esim. var maa: TKorttiMaa; maa := ruutu; maa := succ(maa); if (maa = risti) then Joukot case maa of hertta: ruutu: risti: pata: voidaan määritellä joukkoja (sets) vain tietyltä numeroituvalta lukualueelta (esim. kokonaisluku, merkki, lueteltu tyyppi) joukko-operaatiot käytössä (lisäys, unioni, leikkaus, kuuluu joukkoon jne. (set operators) ) esim. type joukko = set of ; var j : joukko;... 7

8 j := [2, 4, 20]; tai esim. if Input in ['k', 'K', 'e', 'E'] then... if Input in j then Osoittimet Dynaamisuus esim. linkitetty lista lista koostuu solmuista, joista jokaisesta osoitin (linkki) seuraavaan tarvitaan osoitin listan alkuun, nimetään se tässä Alku:ksi Alku Osoittimien määrittely ja käyttö kukin osoitin osoittaa aina tietyn tyyppisiä kohteita keskitytään tässä tietuetyyppisiin kohteisiin osoittaviin osoittimiin osoittimen tyyppi määritellään type-lohkossa - ensin määritellään osoitintyyppi: ^osoitettava-tyyppi - sitten määritellään osoitettava tietuetyyppi osoitinmuuttuja arvo nil tarkoittaa, ettei osoitin osoita mihinkään kohteeseen unit UOsoitin; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(tform) Button1 : TButton; procedure Button1Click(Sender : TObject); private { private declarations } public { public declarations } Osoitin = ^Solmu; Solmu = record Nimi : string; Seuraava : Osoitin; var Form1 : TForm1; 8

9 Alku, P, Apu : Osoitin; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender TObject); New(Alku); P := Alku; Alku^.Seuraava := nil; Alku^.Nimi := 'Matti'; New(Apu); Apu^.Seuraava := nil; P^.Seuraava := Apu; Apu^.Nimi := 'Antero'; end. New:lla varattu tila pitää vapauttaa dispose:lla, kun varattua tilaa ei enää tarvita - varattua tilaa ei automaattisesti vapauteta, vaan tarpeettomaksi jäänyt tila haaskaa muistia dispose(p); { P on osoitintyyppiä ja osoittaa varattuun tilaan } 1.4 Operaattorit toisin kuin esim. Javassa, C:ssä ja C++:ssa, Pascalissa sijoitus(operaattori) on := Aritmeettiset operaattorit + - * / div (kokonaislukujakolasku) mod (jakojäännös) Vertailuoperaattorit = <> < > <= >= in (kuuluu joukkoon, esim. vastaus in ['k', 'K'] Loogiset operaattorit and or not toimivat myös bittioperaattoreina 1.5 Lauserakenteita Valintalauseet if ja case if ehtolause then lause else lause; else-osa ei ole pakollinen 9

10 HUOM! jos else-osa on, ei then-osan lause:en perässä saa olla puolipistettä! if Kluku1<=MaksimiArvo and Kluku1>=MinimiArvo then Edit1.Text := 'Tosi'; Kluku1 := 0; end else Edit1.Text := 'Epätosi'; Huom! Ei puolipistettä end:n perässä!!! case-lauseella voidaan valita useasta vaihtoehdosta case lauseke of arvovaihtoehto: lause; else lause; end lausekkeen on oltava ordinaali (lueteltu tyyppi, kokonaisluku, merkki) else-osa ei pakollinen esim. case Kluku1 of 0 : Edit1.Text:='Nolla'; 1 : Edit1.Text:='Yksi'; 2,3 : Edit1.Text:='Kaksi tai kolme'; 4..6 : Edit1.Text:='Neljästä kuuteen'; else Edit1.Text := 'Yli kolmen.'; { case-lauseen päättävä end!} Toistolauseet repeat until, while ja for repeat lause until ehtolause while ehto do lause for indeksi:=alaraja to yläraja do lause esim. Vastaus := 1; i := 1; repeat Vastaus := i*vastaus; i := i + 1; until i>10; Vastaus := 1; i := 1; while i<=10 do 10

11 Vastaus := i*vastaus; i := i + 1; Vastaus := 1; for i:=1 to 10 do Vastaus := i*vastaus; Keskeytyslauseet Exit (keskeyttää proseduurin ja function suorituksen) Break (keskeyttää for-, while- ja repeat lauseet) Continue (keskeyttää for-, while- ja repeat lauseiden toistokierroksen) Halt (keskeyttää koko ohjelman suorituksen, graafisissa VCL-sovelluksissa normaali lopetus esim. Application.Terminate-kutsulla ) With-lause With.. Do -lausetta voidaan käyttää lyhentämään pitkiä viittausketjuja, esim. var Tietue : Henkilotiedot; with Tietue do Nimi := 'Matti'; Ika := 55; end. 1.6 Aliohjelmat kahdenlaisia - funktiot palauttavat arvon - proseduurit eivät aliohjelmat kuten esim. muuttujat pitää olla esitelty ennen käyttöä (joko esittely tai koko toteutus), joten aliohjelmien kirjoitusjärjestyksellä on joissakin tapauksessa väliä Proseduurit procedure kertomap(var kert : Integer, const k : Integer = 1;); var i : Integer; kert := 1; for i:=2 to k do kert := i*kert; otsikon ja rungon välissä voidaan määritellä tyyppejä, vakioita ja muuttujia 11

12 var-sana parametrin nimen edessä mahdollistaa parametrina annetun muuttujan arvon muuttamisen (ns. muuttujaparametri), listan lopussa olevilla parametreilla voi olla myös oletusarvo, jota käytetään, jos kutsussa ei välitetä parametria const-sanalla voidaan parametri määritellä vakioksi aliohjelman sisällä, jolloin kääntäjä estää muuttujan arvon muuttamisen aliohjelman sisällä proseduurista voidaan poistua kesken suorituksen käyttämällä standardiproseduuria exit proseduurin kutsu esim. var krt : Integer;... kertomap(strtoint(edit1.text),krt); Edit1.Text := IntToStr(krt); Funktiot function kertoma(k : Integer) : Integer; var kert, i : Integer; kert := 1; for i:=2 to k do kert := i*kert; kertoma := kert; // result := kert; arvo palautetaan sijoittamalla se funktion nimeen tai result-muuttujaan (valmiiksi määritelty), sijoitus ei lopeta funktion suorittamista kuten esim. Javan return-kutsu funktion kutsu esim. Edit1.Text := IntToStr(kertoma(StrToInt(Edit1.Text))) 1.7 Luokat ja oliot luokka määritellään type-lohkossa käyttäen class-esittelyä (Kts. liite 2) näkyvyys joko public, protected tai private, (published komponenttien ominaisuuksilla) class-esittelyssä voidaan antaa yliluokka, kaikkien luokkien yliluokka on TObject kaikki luokista luodut oliot ovat dynaamisia (käytännössä osoittimia), eli ne pitää itse luoda ennen käyttöä (=kutsua muodostinta (constructor)) ja poistaa käytön jälkeen (kutsua hajotinta, (destructor)) self- osoitin Delphissä vastaa Javan this-osoitinta aliluokissa mahdollisesti ylikirjoitettavat metodit määritellään varatun sanan virtual avulla ja metodin ylikirjoitus tehdään varatun sanan override avulla yliluokan metodia kutsutaan varatun sanan inherited avulla Delphin versiosta 4 alkaen metodien ylikuormitus mahdollista overload-määreellä yliluokan muodostimet periytyvät automaattisesti, mutta kannattaa ehkä aina kirjoittaa yksi Create - niminen parametritön muodostin, koska tällainen on kantaluokassa (TObject) ja käyttäjä voi vanhasta tottumuksesta luoda olion esiintymän käyttäen tätä muodostinta myös hajottimet periytyvät, eli sitä ei tarvitse kirjoittaa joka luokkaan uudelleen. 12

13 vaikka hajottimia voi kirjoittaa useita eri nimisiä, kannattaa ehkä kirjoittaa aina vain Destroy - niminen hajotin, koska valmiit oliot tuhotaan Free - metodilla, joka taas kutsuu Destroy:ta (TObject- luokassa) dynaamisuuden takia joudutaan aina kutsumaan itse eksplisiittisesti olion esiintymän luomiseksi jotakin muodostinta ja lopuksi olion hävittämiseksi jotakin hajotinta, käytännössä varminta käyttää Free-metodia. As- ja Is-operaattoreita käytetään luokkien ja olioiden yhteydessä tyypinmuunnoksiin ja olion tyypin (luokan) testaamiseen 1.8 Poikkeuksien hallinta try.. finally ja try.. except try.. finally suorittaa try-osan ja riippumatta kuinka sen suoritus päättyy, suoritetaan finallyosan koodi aina sen jälkeen try.. except suorittaa try-osan ja poikkeuksen sattuessa se käsitellään oikeassa poikkeuksenkäsittelijässä except-osassa tai jos sopivaa ei löydy, jossain kauempana kutsuketjussa esim. { pseudoa } try Avaa tiedosto Lue ensimmäinen tietue Muuta tietueen arvoja Talleta tietue finally Sulje tiedosto procedure TForm1.Button1Click(Sender : TObject); var i : Integer; try i := StrToInt(Edit1.Text); except on E:exception do ShowMessage('Virhe: ' +E.message); Poikkeuksien synnyttäminen esim. raise EMathError.Create('Synnytetty poikkeus'); 13

14 Liite 1: Standardifunktioita ja -proseduureja Procedure or function Description Abort Ends the process without reporting an error. Addr Returns a pointer to a specified object. AllocMem Allocates a memory block and initializes each byte to zero. ArcTan Calculates the arctangent of the given number. Assert Tests whether a boolean expression is True. Assigned Tests for a nil (unassigned) pointer or procedural variable. Beep Generates a standard beep using the computer speaker. Break Causes control to exit a for, while, or repeat statement. ByteToCharIndex Returns the position of the character containing a specified byte in a string. Chr Returns the character for a specified ASCII value. Close Terminates the association between a file variable and an external file. CompareMem Performs a binary comparison of two memory images. CompareStr Compares strings case sensitively. CompareText Compares strings by ordinal value and is not case sensitive. Continue Returns control to the next iteration of for, while, or repeat statements. Copy Returns a substring of a string or a segment of a dynamic array. Cos Calculates the cosine of an angle. CurrToStr Converts a currency variable to a string. Date Returns the current date. DateTimeToStr Converts a variable of type TDateTime to a string. DateToStr Converts a variable of type TDateTime to a string. Dec Decrements an ordinal variable. Dispose Releases memory allocated for a dynamic variable. ExceptAddr Returns the address at which the current exception was raised. Exit Exits from the current procedure. Exp Calculates the exponential of X. FillChar Fills contiguous bytes with a specified value. Finalize Uninitializes a dynamically allocated variable. FloatToStr Converts a floating point value to a string. FloatToStrF Converts a floating point value to a string, using specified format. FmtLoadStr Returns formatted output using a resourced format string. FmtStr Assembles a formatted string from a series of arrays. Format Assembles a string from a format string and a series of arrays. FormatDateTime Formats a date-and-time value. FormatFloat Formats a floating point value. FreeMem Disposes of a dynamic variable. GetMem Creates a dynamic variable and a pointer to the address of the block. GetParentForm Returns the form or property page that contains a specified control. Halt Initiates abnormal termination of a program. Hi Returns the high-order byte of an expression as an unsigned value. High Returns the highest value in the range of a type, array, or string. Inc Increments an ordinal variable. 14

15 Initialize Insert Int IntToStr Length Lo Low LowerCase MaxIntValue MaxValue MinIntValue MinValue New Now Ord Pos Pred Ptr Random ReallocMem Round SetLength SetString ShowException ShowMessage ShowMessageFmt Sin SizeOd Sqr Sqrt Str StrToCurr StrToDate StrToDateTime StrToFloat StrToInt StrToTime StrUpper Succ Sum Time TimeToStr Trunc UniqueString UpCase UpperCase VarArrayCreate Initializes a dynamically allocated variable. Inserts a substring at a specified point in a string. Returns the integer part of a real number. Converts an integer to a string. Returns the length of a string or array. Returns the low-order byte of an expression as an unsigned value. Returns the lowest value in the range of a type, array, or string. Converts an ASCII string to lowercase. Returns the largest signed value in an integer array. Returns the largest signed value in an array. Returns the smallest signed value in an integer array. Returns smallest signed value in an array. Creates a new dynamic variable and references it with a specified pointer. Returns the current date and time. Returns the ordinal value of an ordinal-type expression. Returns the index of the first character of a specified substring in a string. Returns the predecessor of an ordinal value. Converts a specified address to a pointer. Generates random numbers within a specified range. Reallocates a dynamic variable. Returns the value of a real rounded to the nearest whole number. Sets the dynamic length of a string variable or array. Sets the contents and length of the given string. Displays an exception message with its address. Displays a message box with an unformatted string and an OK button. Displays a message box with a formatted string and an OK button. Returns the sine of an angle in radians. Returns the number of bytes occupied by a variable or type. Returns the square of a number. Returns the square root of a number. Formats a string and returns it to a variable. Converts a string to a currency value. Converts a string to a date format (TDateTime). Converts a string to a TDateTime. Converts a string to a floating-point value. Converts a string to an integer. Converts a string to a time format (TDateTime). Returns a string in upper case. Returns the successor of an ordinal value. Returns the sum of the elements from an array. Returns the current time. Converts a variable of type TDateTime to a string. Truncates a real number to an integer. Makes a string unique. Converts a character to uppercase. Returns a string in uppercase. Creates a variant array. 15

16 VarArrayCreate VarArrayDimCount VarARrayHighBound VarArrayLock VarArrayLowBound VarArrayOf VarArrayRedim VarArrayRef VarArrayUnlock VarAsType VarCast VarClear CarCopy VarToStr VarType Returns number of dimensions of a variant array. Returns number of dimensions of a variant array. Returns high bound for a dimension in a variant array. Locks a variant array and returns a pointer to the data. Returns the low bound of a dimension in a variant array. Creates and fills a one-dimensional variant array. Resizes a variant array. Returns a reference to the passed variant array. Unlocks a variant array. Converts a variant to specified type. Converts a variant to a specified type, storing the result in a variable. Clears a variant. Copies a variant. Converts variant to string. Returns type code of specified variant. 16

17 Liite 2: Luokkahierarkiaesimerkki program Luokkia; { Konsolisovellus } {$APPTYPE CONSOLE } { Esimerkki ehdollisesta kaantamisesta: } {$DEFINE RTTI } uses SysUtils; {Format-funktiota varten} { } type cagraafinenolio = class protected x,y:integer; nakyy:boolean; procedure paikka(nx,ny:integer); public constructor Create; constructor Create2(ix,iy:integer); // overload, jos ylikuormitus destructor Destroy; override; procedure piirra; virtual; abstract; function nakyvissa:boolean; procedure sammuta; procedure sytyta; procedure siirra(nx,ny:integer); procedure tulosta(s:string); virtual; procedure cagraafinenolio.paikka( nx,ny:integer); x := nx; y := ny; constructor cagraafinenolio.create2( ix,iy:integer); inherited Create; paikka(ix,iy); nakyy := False; constructor cagraafinenolio.create; Create2(0,0); destructor cagraafinenolio.destroy; sammuta; inherited Destroy; function cagraafinenolio.nakyvissa:boolean; Result := nakyy; procedure cagraafinenolio.siirra( nx,ny:integer); if ( not nakyvissa ) then paikka(nx,ny); exit; 17

18 sammuta; paikka(nx,ny); sytyta; procedure cagraafinenolio.tulosta(s:string); {$IFDEF RTTI} write(format('%-10s: ',[ClassName])); {$ENDIF} write(format('%-10s (%02d,%02d)',[s,x,y])); procedure cagraafinenolio.sammuta; if ( not nakyvissa ) then exit; write('sammutettu: '); nakyy := False; piirra; procedure cagraafinenolio.sytyta; if ( nakyvissa ) then exit; write('sytytetty: '); nakyy := True; piirra; { } type casateellinenolio = class(cagraafinenolio) protected r:integer; procedure koko(nr:integer); public constructor Create3(ix,iy,ir:integer); constructor Create2(ix,iy:integer); constructor Create; procedure tulosta(s:string); override; procedure muuta_koko(nr:integer); procedure casateellinenolio.koko(nr:integer); r := nr; constructor casateellinenolio.create3( ix,iy,ir:integer); inherited Create2(ix,iy); koko(ir); constructor casateellinenolio.create2( ix,iy:integer); Create3(ix,iy,1); constructor casateellinenolio.create; inherited Create; koko(1); procedure casateellinenolio.tulosta(s:string); 18

19 inherited tulosta(s); write(' r=',r); procedure casateellinenolio.muuta_koko( nr:integer); if ( not nakyvissa ) then koko(nr); exit; sammuta; koko(nr); sytyta; { } type cpiste = class(cagraafinenolio) public procedure piirra; override; procedure cpiste.piirra; tulosta('piste'); writeln; { } type cympyra = class(casateellinenolio) public procedure piirra; override; procedure cympyra.piirra; tulosta('ympyra'); writeln; {Pääohjelma alkaa } var p : cagraafinenolio; kuvat : array[0..9] of cagraafinenolio; p1,p2 : cpiste; y1 : cympyra; i : integer; p1 := cpiste.create; p2 := cpiste.create2(10,20); y1 := cympyra.create3(1,1,2); p1.sytyta; p2.sytyta; p1.siirra(7,8); y1.sytyta; y1.muuta_koko(5); (* Esimerkki polymorfismista *) p := cympyra.create3(9,9,9); p.sytyta; p.siirra(8,8); { p.muuta_koko(4); ei laillinen } {$IFDEF RTTI } if ( p is casateellinenolio ) then {$ENDIF} (p as casateellinenolio).muuta_koko(4); p.free; (* Esimerkki polymorfismista *) kuvat[0] := cympyra.create3(10,10,100); kuvat[1] := cpiste.create2(11,11); kuvat[2] := cympyra.create3(12,12,102); kuvat[3] := NIL; 19

20 i:=0; while ( kuvat[i] <> NIL ) do kuvat[i].sytyta; inc(i); i:=0; while ( kuvat[i] <> NIL ) do kuvat[i].free; inc(i); y1.free; p2.free; p1.free; end. {pääohjelma loppuu } Kuva 2: Esimerkin luokkahierarkia 20

Kielioppia: toisin kuin Javassa

Kielioppia: toisin kuin Javassa Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n

Lisätiedot

Kuvat: Malliohjelmat:

Kuvat: Malliohjelmat: Sisällys Lukijalle...1 1. Malliohjelma...3 1.1 Yleistä Delphistä...3 1.2 Autolaskuri...3 1.2.1 Nappuloiden lisääminen...4 1.2.2 Laskuriruutujen lisääminen...4 1.2.3 Talletus...5 1.2.4 Kääntäminen ja ajaminen...5

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 811122P (5 op.) 12.12.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

Lisätiedot

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmointi 1 C#, kevät 2013, 2. tentti ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla

Lisätiedot

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus) VISUAL BASIC OHJEITA Kutsuttava ohjelma alkaa kometoparilla Sub... End Sub Sub ohjelmanimi()...koodia... End Sub Muuttujat Muuttujan esittely Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency,

Lisätiedot

RINNAKKAINEN OHJELMOINTI A,

RINNAKKAINEN OHJELMOINTI A, RINNAKKAINEN OHJELMOINTI 815301A, 18.6.2005 1. Vastaa lyhyesti (2p kustakin): a) Mitkä ovat rinnakkaisen ohjelman oikeellisuuskriteerit? b) Mitä tarkoittaa laiska säikeen luominen? c) Mitä ovat kohtaaminen

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)

Tieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Tieto ja sen osoite (3) X DC LOAD, =X LOAD R2, X int x =; symbolin X arvo muuttujan X arvo

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

Lisätiedot

Olio-ohjelmointi Syntaksikokoelma

Olio-ohjelmointi Syntaksikokoelma C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja

Lisätiedot

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Muuttujan X osoite on 230 Muuttujan X arvo on 12 Symbolin X arvo on 230 symbolit ovat yleensä

Lisätiedot

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double

Lisätiedot

Ohjelmointi 1 C#, kevät 2013,

Ohjelmointi 1 C#, kevät 2013, Ohjelmointi 1 C#, kevät 2013, 19.4.2013 (English versions of the questions can be requested from the supervisor. Englanninkieliset kysymykset saa pyytämällä tentin valvojalta.) Tentti (yliopisto opiskelijat)

Lisätiedot

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python 7. helmikuuta 2009 Ohjelmoinnista Ohjelman peruselementtejä Koodin kommentointi Lohkorakenne Ohjausrakenteet If For While Try Funktiot Käyttö

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Muuttujan X osoite on 230 Muuttujan X arvo on 12 Symbolin X arvo on 230 Tieto ja sen osoite

Lisätiedot

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 4: Symbolit, derivojaesimerkki, kierroksen 1 ratkaisut (mm. SICP 2.32.3.2) Riku Saikkonen 1. 11. 2011 Sisältö 1 Symbolit ja sulkulausekkeet 2 Lisää Schemestä:

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

Groovy. Niko Jäntti Jesper Haapalinna Group 31

Groovy. Niko Jäntti Jesper Haapalinna Group 31 Groovy Niko Jäntti Jesper Haapalinna Group 31 Johdanto Groovy on Apachen kehittämä Javaan perustuva dynaaminen oliopohjainen ohjelmointikieli. Kielen kehitys alkoi vuonna 2003, versio 1.0 julkaistiin 2007

Lisätiedot

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia

Javascript 2: Ohjelmointikielen ominaisuudet. Jaana Holvikivi Metropolia Javascript 2: Ohjelmointikielen ominaisuudet Jaana Holvikivi Metropolia HTML - sivun rakenne ja osiot HTML HEAD STYLE SCRIPT STYLEsheet Javascript file BODY Javascript

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

9. Periytyminen Javassa 9.1

9. Periytyminen Javassa 9.1 9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

5/20: Algoritmirakenteita III

5/20: Algoritmirakenteita III Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Taulukon edut Taulukon haitat Taulukon haittojen välttäminen Dynaamisesti linkattu lista Linkatun listan solmun määrittelytavat Lineaarisen listan toteutus dynaamisesti linkattuna

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä 812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus

Lisätiedot

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

Lisätiedot

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi ero taulukkoon taulukossa alkiot samantyyppisiä tietueessa alkiot voivat olla erityyppisiä tiedot kuitenkin yhteen kuuluvia ohjelmoinnin perusteet,

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

Funktionimien kuormitus. TIES341 Funktio ohjelmointi 2 Kevät 2006

Funktionimien kuormitus. TIES341 Funktio ohjelmointi 2 Kevät 2006 Funktionimien kuormitus TIES341 Funktio ohjelmointi 2 Kevät 2006 Kertausta ongelma Mikä on (+) operaattorin tyyppi? Num a => a -> a -> a Mikä on (==) operaattorin tyyppi? Eq a => a -> a -> a Mikä on show

Lisätiedot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tyyppejä ja vähän muutakin TIEA341 Funktio ohjelmointi 1 Syksy 2005 Viime luennolla... Haskellin alkeita pääasiassa Hello World!... ja muita tutunoloisia ohjelmia Haskellilla Haskellin voima on kuitenkin

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

System.out.printf(%d / %d = %.2f%n, ekaluku, tokaluku, osamaara); Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Ohjelmointitehtävien osalta palautetaan

Lisätiedot

Muuttujat ja kontrolli. Ville Sundberg

Muuttujat ja kontrolli. Ville Sundberg Muuttujat ja kontrolli Ville Sundberg 14.9.2007 Alkeistyyppi Alin abstraktiotaso josta tarvitsee välittää Yksittäinen, jakamaton tiedonjyvä Tavallaan kaikki alkeistyypit ovat lukuja arvojoukko vaihtelee

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu Laskennallisesti Älykkäät Järjestelmät Sumean kmeans ja kmeans algoritmien vertailu Annemari Auvinen (annauvi@st.jyu.fi) Anu Niemi (anniemi@st.jyu.fi) 28.5.2002 1 Tehtävän kuvaus Tehtävänämme oli verrata

Lisätiedot

Ehto- ja toistolauseet

Ehto- ja toistolauseet Ehto- ja toistolauseet 1 Ehto- ja toistolauseet Uutena asiana opetellaan ohjelmointilauseet / rakenteet, jotka mahdollistavat: Päätösten tekemisen ohjelman suorituksen aikana (esim. kyllä/ei) Samoja lauseiden

Lisätiedot

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

Lisätiedot

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: C++ rautaisannos Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: # include #include main ( ) main (

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

Lisätiedot

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot. EVTEK Teknillinen ammattikorkeakoulu Ohjelmointi (C) T0004 Syksy 2003 Olli Hämäläinen kurssin sisältö ja tavoitteet työmuodot luennot 1-2/2003 laboratorioharjoitukset 1-2/2003 kotitehtävät, laboratoriokerrat

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

812336A C++ -kielen perusteet, 21.8.2010

812336A C++ -kielen perusteet, 21.8.2010 812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on

1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on 1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on esiteltävä. char ch; int count=1; struct complex float re, im; complex z; complex sqrt( complex );

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

P e d a c o d e ohjelmointikoulutus verkossa P e d a c o d e ohjelmointikoulutus verkossa Java-kielen perusteet Teoria ja ohjelmointitehtävät Java-kielen perusteet 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN 10 JAVA-KIELEN PERUSTEET 10 OPISKELUN ALOITTAMINEN

Lisätiedot

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19

Ohjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19 Ohjelmointikieli TIE-20306 Principles of Programming Languages Syksy 2017 Ryhmä 19 Juho Kärnä Ville Mäntysaari 1. Johdanto D on yleiskäyttöinen, strukturoitu, staattisesti tyypitetty, käännettävä ohjelmointikieli

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

7. Näytölle tulostaminen 7.1

7. Näytölle tulostaminen 7.1 7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio

Lisätiedot

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä Sisällys 9. Periytyminen Javassa Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Metodien korvaaminen ja super-attribuutti. Attribuutin peittäminen periytymisen kautta. Rakentajat

Lisätiedot

05/04/2004. Digitaalisen median tekniikat, k2004 HY/TKTL, javascript_1. Harri Laine 1. JavaScript

05/04/2004. Digitaalisen median tekniikat, k2004 HY/TKTL, javascript_1. Harri Laine 1. JavaScript Digitaalisen median tekniikat ent. LiveScript (Netscape), muunnelma JScript (Microsoft) yhteensopivat yksinkertaisissa asioissa, aiemmin yhteensopimattomat hiemankin edistyneemmissä nyk. ECMAScript (standardi)

Lisätiedot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Digitaalisen median tekniikat JavaScript

Digitaalisen median tekniikat JavaScript Digitaalisen median tekniikat JavaScript 5.4.2004 Harri Laine 1 JavaScript ent. LiveScript (Netscape), muunnelma JScript (Microsoft) yhteensopivat yksinkertaisissa asioissa, aiemmin yhteensopimattomat

Lisätiedot

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI)

Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Luento 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Tieto ja sen osoite (3) X DC 12 LOAD R1, =X LOAD R2, X int x =12; symbolin X arvo muuttujan

Lisätiedot

Digitaalisen median tekniikat JavaScript Harri Laine 1

Digitaalisen median tekniikat JavaScript Harri Laine 1 Digitaalisen median tekniikat JavaScript 5.4.2004 Harri Laine 1 JavaScript ent. LiveScript (Netscape), muunnelma JScript (Microsoft) yhteensopivat yksinkertaisissa asioissa, aiemmin yhteensopimattomat

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli

TIE PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli TIE-20306 PRINCIPLES OF PROGRAMMING LANGUAGES Eiffel-ohjelmointikieli Seminaariesitelmä ryhmä 24 Markku Ahokas Jani Kuitti i SISÄLLYSLUETTELO 1. YLEISTÄ EIFFELISTÄ... 1 1.1 Historia ja tausta... 1 1.2

Lisätiedot