kuvan 1 ohjelma saadaan File - New... : New, Console Application tai kirjoitetaan halutulla editorilla ja käännetään ja ajetaan komentorivillä
|
|
- Jaana Pirkko Penttilä
- 7 vuotta sitten
- Katselukertoja:
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
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ätiedotJava-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ätiedotAlkuarvot 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ätiedotPerusteet. 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ätiedotKuvat: 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ätiedot815338A 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ätiedot1.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ätiedot1.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ätiedot17. 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ätiedot20. 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ätiedotEhto- 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ätiedotSisä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ätiedotOhjelmointi 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ätiedotPerusteet. 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ätiedotOhjelmointiharjoituksia 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ätiedot17. 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ätiedotJava-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ätiedotMetodit. 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ätiedotJava-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ätiedotMuuttujatyypit 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ätiedotRINNAKKAINEN 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ätiedotJava-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ätiedotTieto 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ätiedotJava 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ätiedotTä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ätiedotOlio-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ätiedotJakso 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ätiedotOhjelmointi 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ätiedotOhjelmointi 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ätiedotVertailulauseet. 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ätiedotOperaattoreiden 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ätiedotTä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ätiedotOhjelmoinnin 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ätiedot815338A 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ätiedotJakso 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ätiedotKoottu 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ätiedotOhjelmoinnin 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ätiedotRajapinta (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ätiedotOhjelmassa 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ätiedotGroovy. 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ätiedotPythonin 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ätiedotJavascript 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ätiedotTietueet. 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ätiedot9. 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ätiedotITKP102 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ätiedot13. 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ätiedotITKP102 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ätiedotKää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ätiedot5/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ätiedotOhjelmointitaito (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ätiedotTutoriaalilä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ätiedotOhjelmoinnin 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ätiedotTietorakenteet 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ätiedotOhjelmoinnin 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ätiedot812347A 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ätiedotTietorakenteet. 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ätiedottietueet 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ätiedot15. 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ätiedotFunktionimien 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ätiedotLuokka 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ätiedotJAVA-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ätiedotTyyppejä 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ätiedot815338A 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ätiedotOlion 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ätiedot15. 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ätiedotSystem.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ätiedotMuuttujat 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ätiedotOhjelmoinnin 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ätiedotA274101 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ätiedotIDL - 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ätiedot815338A 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ätiedotATK 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ätiedotLaskennallisesti Ä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ätiedotEhto- 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ätiedotSisä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ätiedotOhjelmassa 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ätiedotC++ 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ätiedotOhjelmoinnin 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ätiedot1. 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ätiedotOpintojakso 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ätiedotOlio-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ätiedotTietotyypit 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ätiedot13. 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ätiedot812336A 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ätiedotHarjoitus 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ätiedot4. 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ätiedotOhjelmoinnin 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ätiedot1. 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ätiedotP 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ätiedotOhjelmointikieli 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ätiedot2. 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ätiedot7. 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ätiedotSisä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ätiedot05/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ätiedotSisä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ätiedotDigitaalisen 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ätiedotLuento 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ätiedotDigitaalisen 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ätiedotListarakenne (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ätiedotTIE 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