Tyypit (eri näkökulmia)

Koko: px
Aloita esitys sivulta:

Download "Tyypit (eri näkökulmia)"

Transkriptio

1 Tyypit (eri näkökulmia) Tyypit arvojen joukkona tyyppi kerää yhteen erilaiset primitiiviarvot (kokonaisluvut, liukuluvut) oleellista arvojen esitystapa tietokoneessa Tyyppien rakentaminen skalaarityypit (primitiiviset tyypit, atomiset tyypit) tyyppikonstruktorit (rakenteisten tyyppien mahdollistaminen) arvojoukko ja operaatiot nähdään tyypin luonnollisina ominaisuuksina Tyypit abstrahointivälineenä kielen rakenteiden avulla voidaan muodostaa tyyppejä ja määritellä niille operaatioita tyyppi nähdän rajapintana (moduulit, luokat) 1

2 Tyyppeihin liittyviä kysymyksiä Onko tyyppi staattinen vai dynaaminen käsite? ovatko tyypin ominaisuudet tiedossa jo käännösaikana vai vasta ajoaikana Sidotaanko muuttujien tyypit staattisesti vai dynaamisesti? Voiko tyyppejä parametroida? ovatko parametrit staattisia vai dynaamisia mitkä osat tyyppimäärittelyssä ovat parametroitavissa Miten määritellään tyyppien ekvivalenssi? milloin kaksi muuttujaa ovat samaa tai yhteensopivaa tyyppiä Esimerkkikoodit kuvitteellisella kielellä var X: Integer;... type T = array [ 1..X ] of Integer; type T ( Max: Integer ) = 1..Max;... var A: T ( 10 ); procedure P ( X: Integer ); var A: T ( X );... 2

3 Vahva tyypitys Muita määritelmiä: tyyppivirheet huomataan (joko käännös- tai ajoaikana) tyypille sopimattomat operaatiot estetään Kieli on vahvasti tyypitetty, jos jokaisella tietoalkiolla (vakio, muuttuja, kenttä) on yksikäsitteinen tyyppi, jonka identiteetti ja ominaisuudet ovat tiedossa käännösaikana tyyppimuunnokset tapahtuvat kontrolloidusti tulkitsemalla arvo toisen tyypin arvona eivät tulkitsemalla arvon esitys toisen tyypin arvon esityksenä tyyppimuunnosten laillisuus on selvitettävissä käännösaikana Staattinen tyypitys jokaisen muuttujan tyyppi on tiedossa käännösaikana Vahva tyypitys käännösaikainen tyypitys 3

4 Tyypitys ohjelmointikielissä Fortran (heikko tyypitys) parametrivälityksessä ei tyyppitarkistusta Equivalence-lause Pascal (lähes vahva tyypitys) vaihtelevat tietueet eivät välttämättä turvallisia Ada (vahva tyypitys) vaihtelevat tietueet turvallisia C ja C++ (heikko tyypitys) parametrivälityksessä tyyppejä ei välttämättä tarkisteta union-rakenne ei turvallinen implisiittiset tyyppimuunnokset Java ja C# (vahva tyypitys) 4

5 Vahva tyypitys Tyyppimuunnokset cast eksplisiittinen muunnos coersion implisiittinen muunnos Vahva tyypitys (Ada) eksplisiittiset muunnokset sallittuja vain rajoitetusti poikkeuksena: Unchecked_Conversion Salliva kieli (C) kääntäjä voi tehdä automaattisesti tyyppimuunnoksia pakotetut (implisiittiset) tyyppimuunnokset johdonmukaisuuden puute milloin ja millaisia automaattisia muunnoksia tapahtuu milloin eksplisiittinen muunnos on mahdollinen 5

6 Ohjelmointikielissä esiintyviä tyyppejä Skalaarityypit Luetellut tyypit Osävälityypit, alityypit, johdetut tyypit Rakenteiset tyypit muodostetaan tyyppikonstruktoreiden avulla Osoitintyypit Joukkotyyppi (set) Aliohjelma- ja funktiotyypit tarkastellaan aliohjelmien yhteydessä Tehtävätyypit (Ada) liittyvät rinnakkaisuuteen, käsitellään siinä yhteydessä 6

7 Numeeriset tyypit Numeerisen tiedon esittäminen tehokkuussyistä kannattaa käyttää tietokoneen sisäistä esitystapaa siirrettävyyttä vaikeuttaa lukujen määrittelyjoukon vaihtelut Kokonaislukujen esitysmuoto: kahden komplementti 2 n-1..2 n-1-1 esim. 16 bittiä: Liukulukujen esitysmuoto: esitys noudattaa standardia Kokonaislukujen käyttö: matemaattisena arvona silmukan laskurina taulukon indeksinä s eksponentti mantissan kasvattaminen suurentaisi tarkkuutta eksponentin kasvattaminen suurentaisi arvoaluetta Desimaaliluvut (Cobol, C#) kiinteä määrä numeroita, desimaalipilkku kiinteässä kohdassa suuri tarkkuus, pieni arvoalue mantissa 7

8 Merkkityypit Yhden merkin esittäminen ohjelmointikielessä Tyypillisiä operaatioita: Yhtäsuuruusvertailut, aakkosjärjestysvertailu (?) I/O Muunnokset merkkijonotyypiin ja takaisin Muunnokset isoista kirjaimista pieniin yms. Sisäinen toteutus tietokoneen muistissa Vanhat koodaukset (EBCDIC IBM-koneissa) ASCII (ISO-646) (7 bittiä) ISO-latin-koodaukset yms. 8-bittiset koodaukset Unicode (32 bittiä) (ennen myös 16-bittinen versio) 8

9 Merkkityyppien ongelmia Merkkityypin koko ja numeroarvon tulkinta Perinteisesti 8 bittiä (aluksi 6-7), sallii maks. 256 eri merkkiä Ei riitä alkuunkaan ei-englanninkielisessä maailmassa! Ratkaisu 1: useita merkistökoodauksia, samalla numerokoodilla eri tulkinta (iso-latin-x) Ratkaisu 2: suurempia merkkityyppejä (Unicode, 16- ja 32-bittiset) Missä määrätään käytetty koodaus? Lähdekooditiedoston koodaus (merkki- ja merkkijonoliteraalit, tunnisteet) Talletus muistissa (ohjelman sisäinen merkki/merkkjonotyypin koodaus) Muunnokset I/O:n yhteydessä Muunnos käyttäjän koodauksen ja sisäisen koodauksen välillä syötteenluvun ja tulostuksen yhteydessä Muunnos tiedostojen koodauksen ja sisäisen koodauksen välillä 9

10 Vertailu Merkkityyppien ongelmia Miten määrätään aakkosjärjestys? Riippuu kielestä (ja maasta)! Onko aakkosvertailu sama kuin merkkityypin < ja >? Mitkä merkit ovat yhtäsuuria? Yksi vai monta merkkiä? Ligatuurit: usean merkin sulautuminen yhdeksi, ß, ij, Ľ, ŋ, œ, ä Muutos pienten/isojen kirjainten välillä: ß SS Monta tapaa esittää merkki: ä (U+00E4) vs. ä = a (U+0061, U+0308) Tukeeko ohjelmointikieli montaa koodausta? Useita merkkityyppejä: hallintaongelmat Yksi merkkityyppi: valittava riittävän laaja (Unicode UCS4) Yhteensopivuus vanhojen kieliversioiden kanssa... 10

11 Lähdekoodin merkistökoodaus Ongelma: tekstiedoston merkkikoodausta ei (yleensä) ilmoiteta! Merkki/merkkijonoliteraalit vs. tunnisteet Ratkaisuyrityksiä: Koodaus määrätään kielessä (Java) Määrätään lähdekooditiedostossa (Python) Kerrotaan komentorivillä (C++-kääntäjät) Jätetään ottamatta kantaa (C++, monet muut) 11

12 Merkkijonotyypit Perinteisesti: jono/lista/taulukko merkkejä Tyypillisiä operaatioita: Indeksointi Iterointi (läpikäynti merkki merkiltä) Paloittelu Tulostus yms. Miten merkkijonon merkit koodataan? Merkkityypin ongelmat koskevat myös merkkijonoja 32 bittiä/merkki nelinkertaistaistaisi muistinkulutuksen (erit. välimuistin) 12

13 Unicode ja merkkijonot Merkkejä standardoitu nyt yli (tilaa :lle) Merkeillä koodit U U+10FFFF Osa koodeista varattu erikoistarkoituksiin Käytännössä 32 bittiä/merkki (4 tavua) Merkkijonokoodaus UTF-32 (UCS4) Merkkijono on jono 32-bittisiä Unicode-merkkejä Helppo, vrt. perinteiset 8-bittiset merkkijonot Muistinkulutus suurta, bittejä tuhlaantuu paljon 13

14 Unicode ja merkkijonot UTF-16 Merkkijono koostuu 16-bittisistä tavupareista Unicode-merkit U+FFFF koodautuvat suoraan (suurin osa maailman kirjainmerkeistä) Loput merkit esitetään sijaismerkeillä (surrogates), kahdella 16-bittisellä tavuparilla (varatuilla alueilla, eivät voi mennä sekaisin kirjainmerkkien kanssa) Sijaismerkit koodattu niin, että parin 1. ja 2. merkit eivät voi mennä sekaisin (tunnistettavissa) Seuraus 1: Tavuparista näkee suoraan, onko se kirjainmerkki, sijaismerkkiparin alkuosa vai loppuosa. Seuraus 2: Yksi kirjain voi viedä yhden tai kaksi tavuparia!!! 14

15 Unicode ja merkkijonot UTF-8 Merkkijono koostuu 8-bittisistä tavuista Unicode-merkit U+7F suoraan (7-bittinen ASCII) Loput merkit U+7FF koodataan 2 tavulla (Eurooppa) Loput U+FFFF 3 tavulla (erikoismerkit, Aasia) Loput 4 tavulla (vanhat kielet, matematiikka,...) Seuraus: Yksi merkki voi viedä 1-4 tavua Monitavuisten merkkien tavut erotettavissa 1-tavuisista, monitavuisten 1. tavu erotettavissa muista Seuraus: tavujonoa voi selata, kunnes ollaan merkin alussa 15

16 Unicode-haasteet/ongelmat Indeksointi yms. taulukoksi tulkinta (UTF-8 ja UTF-16) Merkit eri kokoisia, s[i] ei palauta i+1:ttä merkkiä! Merkkijonon pituus ja taulukon koko eri asia Mahdollisuus indeksoida keskelle merkkiä Merkin korvaaminen toisella vaikeaa jos koko muuttuu Merkkijonoilla koodaaminen erilaista kuin ennen Unicode-iteraattori: palauttaa Unicode-merkkejä, siirtyy jonossa oikean verran eteenpäin 16

17 Unicode-haasteet/ongelmat Muistinkulutus kasvaa, välimuistia tuhlaantuu (erit. UTF-32) Aakkostus Numerokoodeihin perustuva aakkostus mahdotonta Yhtäsuuruusvertailu Merkkijonot normalisoitava ennen vertailua Konversiot eri koodauksien välillä (jos tuetaan useita) 17

18 Unicode joissain kielissä Java Merkkijonojen koodaus UTF-16 Lähdekoodin koodaus UTF-8 Python Merkkijonoja "raaka" ja Unicode Lähdekoodin koodaus ilmoitetaan koodissa C++ C++03: Ei määritelty (wchar_t ehkä UTF-32) C++11: Puutteellinen tuki UTF-8/16/32:lle Lähdekooditiedoston koodaus kääntäjäkohtainen 18

19 Luetellut tyypit Mahdolliset arvot määrittelevät tyypin Nimettyjen vakioiden kokoelma Suunnittelussa huomioitava: voiko lueteltu vakio esiintyä useammassa tyyppimäärittelyssä ja jos voi, niin miten tyyppitarkistukset tehdään tulkitaanko luetellut arvot automaattisesti kokonaisluvuiksi voidaanko muiden tyyppien arvot tulkita luetellun tyypin arvoksi Onko kaikki luettelon arvot annettava tyypin esittelyssä, vai voiko arvoja esitellä lisää muualla 19

20 Esimerkkejä luetelluista tyypeistä Pascal: C++: Java: type colors = ( red, blue, green, yellow, black ); enum colors { red, blue, green, yellow, black }; colors mycolor = blue;... mycolor++; /* sallittu */ mycolor = 4; /* kielletty */ class colors { public final int red = 0; public final int blue = 1;... } 20

21 Alityypit (Ada) subtype SmallInt is Integer range ; subtype MicroInt is SmallInt range ; Arvorajoite, ei itsenäinen tyyppi Nimetyn alityypin etuja (verrattuna nimettömään): rajoitetta ei tarvitse toistaa, jos alityyppiä käytetään useassa esittelyssä rajoitteen muuttuessa riittää tehdä korjaus yhteen paikkaan kuvaava tunnus parantaa luettavuutta toteutus tulee tehokkaammaksi X: Integer;... subtype R is Integer range 1..X; 21

22 Johdetut tyypit (Ada) Uusi tyyppi yhteensopimaton muiden tyyppien kanssa type Color is ( Red, Yellow, Green, Black, White ); type TrafficLight is new Color range Red..Green; c: Color; t: TrafficLight;... c := Red; t := Red;... if Red < Green then kielletty if Color (Red) < Green then sallittu 22

23 Taulukot Vektorit Matriisit Samaa tyyppiä olevien tietoalkioiden järjestetty kokonaisuus Taulukkotyypin määrittelyyn kuuluu: taulukkotyypin nimi (tai nimetön tyyppi) alkioiden tyyppi indeksin tyyppi (arvoalue = taulukon koko) Indeksointi taulukoiden perusoperaatio hakasulut tai kaarisulut 23

24 Taulukoiden suunnittelu Mitkä tyypit voivat olla taulukon indeksityyppeinä? kokonaislukujen osaväli merkkityyppi, lueteltu tyyppi, looginen tyyppi Tarkistetaanko taulukkoviittauksissa indeksirajat? Milloin indeksirajat sidotaan? Milloin taulukolle varataan tilaa? Voidaanko taulukko alustaa tilan varaamisen yhteydessä? Voidaanko taulukosta ottaa viipaleita? 24

25 Assosiatiiviset taulukot Tavanomaiset taulukot alkioilla implisiittinen järjestys taulukon indeksejä ei talleteta Assosiatiiviset taulukot järjestämätön joukko alkioita kuhunkin alkioon liittyy avain, jonka avulla alkioon viitataan myös avainten arvot talletetaan esim. Perl 25

26 Tietueet Heterogeeninen rakenne komponentit (kentät) voivat olla eri tyyppiä komponentteihin viitataan nimellä Komponentit (kentät) voivat olla tietueita hierarkkinen puurakenne Tietuetyypin määrittelyyn kuuluu: tyypin nimi kenttien nimet ja tyypit Operaatioita: sijoitus yhtäsuuruus- ja erisuuruusvertailu Record Name Type Offset... Name Type Offset Address 1. kenttä n. kenttä 26

27 Ada: Tietueen operaatiot Tietueen kenttään viittaaminen Arvojen sijoittaminen kenttiin Yleisin tapa: tietue.kenttä Algol68: kenttä ( tietue ) henkilo := ( etunimi => Matti, sukunimi => Virtanen ); henkilo := ( Matti, Virtanen ); Pascalin with-lause: type complex = record re: real; im: real; end; var x: complex; with x do begin re := 1.5; im := 2.0; end; 27

28 Vaihtelevat tietueet C: Ada: typedef union { char car [ ]; int bicycles; } garage; type owner_type is ( car_freak, bike_freak ); type garage ( owner: owner_type ) is record case owner is when car_freak => car: String; when bike_freak => bicycles: Natural; end case; end record; 28

29 Vaihtelevien tietueiden turvallisuus Ada: C: garage my_garage; my_garage.car = Trabant ; printf ( %d\n, my_garage.bicycles ); my_garage: garage; my_garage := ( owner => car_freak, car => Porsche ); -- could not pay for it my_garage.car := VW ; -- changed my way of life my_garage := ( owner => bike_freak, bicycles => 8 ); 29

30 Vaihtelevien tietueiden turvallisuus Haskell: data Garage = CarFreak String BikeFreak Int sillyfunc (CarFreak type) = length type sillyfunc (BikeFreak num) = num gar1 = (CarFreak "BMW") gar2 = (BikeFreak 8) sillyfunc gar1 -- tulos: 3 sillyfunc gar2 -- tulos: 8 30

31 Ada-koodia: Vaihtelevan tietueen toteutus type Shape is ( Circle, Triangle, Rectangle ); type Colors is ( Red, Green, Blue ); type Figure ( Form: Shape ) is record Filled: Boolean; Color: Colors; case Form is when Circle => Diameter: Float; when Triangle => LeftSide: Integer; RightSide: Integer; Angle: Float; when Rectangle => Side1: Integer; Side2: Integer; end case; end record; Rectangle: Side1 Side2 Circle: Diameter Filled Color Form Triangle: LeftSide RightSide Angle 31

32 Osoittimet kekodynaamisia muuttujia Osoitintyypin arvoalue arvona muistiosoite erikoisarvo (nil, null) Mahdollisia operaatioita arvon asettaminen yhtäsuuruuden vertailu viittauksen arvon haku (dereference) Osoitinaritmetiikka (C) halutun vakioarvon (esim. 0xCE00) asettaminen osoittimeen kokonaisluvun lisääminen osoittimeen kahden osoittimen välinen erotus 32

33 Osoittimien etuja Muistin varaus ja vapautus ovat joustavampia (ei sidottu ohjelman rakenteeseen) Samaan muistipaikkaan voidaan viitata useilla osoittimilla Muistipaikan sisältöä ei tarvitse kopioida esim. isot parametrit Osoittimet ovat luonnollisin tapa rekursiivisten tietorakenteiden toteuttamiseen 33

34 Osoittimien ongelmia Saavuttamaton tietoalkio eli roska (garbage) dynaamiselle muuttujalle varataan tilaa osoittimen kautta tilaa varataan uudestaan saman osoittimen kautta Roikkuva osoitin (dangling reference) muuttujalle varataan tilaa yhden osoittimen kautta osoittimen arvo sijoitetaan toiselle osoittimelle tila vapautetaan jommankumman osoittimen kautta toinen osoitin jää osoittamaan vapautettua muistitilaa New ( p );... New ( p ); Pascalkoodia New ( p1 ); p2 = p1; Dispose ( p1 ); 34

35 Roikkuvien osoittimien käsittely Hautakivimenetelmä jokaisella dynaamisella muuttujalla on erityinen solu (hautakivi), joka myös itse on osoitin dynaamiseen muuttujaan varsinaiset osoitinmuuttujat osoittavat hautakiveen kun muuttuja tuhotaan, hautakivi jää, mutta osoittaa nil:iin Lukot ja avaimet osoittimien arvoihin liitetään kokonaisluku (avain) dynaamisiin muuttujiin liitetään kokonaisluku (lukko) tilaa varattaessa luodaan lukolle arvo, joka tallennetaan sekä lukko- että avainkenttään viittauksissa tarkistetaan, että lukko ja avain täsmäävät tilan vapauttamisessa lukon arvo muutetaan laittomaksi 35

36 Adan osoittimet Roikkuvien osoittimien eliminointi ei operaatiota dynaamisen muuttujan vapauttamiseen paitsi Unchecked_Deallocation, jonka käyttöä ei suositella osoitintyypin esittely kokoelman syntyminen (joukko dynaamisia muuttujia) esittelyn sisältävä lohko päättyminen kokoelma lakkaa olemasta type IntPoint1 is access Integer; R1: IntPoint1 := new Integer; type IntPoint2 is access Integer; R2: IntPoint2;... R2 := R1; -- tyyppivirhe 36

37 Osoittimet C:ssä ja C++:ssa Roikkuvat osoittimet mahdollisia Osoitinaritmetiikka Osoittimilla ja taulukoilla läheinen yhteys int list [ 10 ]; int *ptr; ptr = list; * ( ptr + 1 ) list [ 1 ] * ( ptr + index ) list [ index ]; ptr [ index ] list [ index ]; 37

38 Viitetyypit (reference type) Vakio-osoitin viittaa aina johonkin dataan tunnusta edeltää & (C++:ssa) Yleisin käyttö muodollisena parametrina mahdollistaa kaksisuuntaisen tiedonvälityksen C++-koodia int a = 0; int &a_r = a; C++-koodia void duplicate ( int &i ) { i = i * 2; }... int x = 2; duplicate ( x ); // x 4 C-koodia (ei viitetyyppiä) void duplicate ( int *i ) { *i = *i * 2; }... int x = 2; duplicate ( &x ); // x 384

39 Modula-2:ssa ja Pascalissa Operaatioita (binaarisia) unioni ( + ) leikkaus ( * ) erotus ( - ) symmetrinen erotus ( / ) Joukkotyypit Modula-2-koodia: TYPE Digit = [ 0..9 ]; DigitSet = SET OF Digit; { 0, 3, 5 } alkiot, jotka kuuluvat vain toiseen joukkoon, eivät molempiin sisältyminen Toteutus joukon (bittivektorin) täytyy mahtua yhteen sanaan (esim. 16, 32) operaatiot bittioperaatioita esim. unioni vastaa loogista or-operaatiota 39

40 Tyyppiekvivalenssi Nimiekvivalenssi tyypin tunnus on tyypin identifioiva nimi eri nimiset tyypit ovat eri tyyppejä kukin nimettömän tyypin esittely esittelee erillisen tyypin Rakenne-ekvivalenssi tyypin tunnus on tyyppimäärittelyn lyhenne tyypit ovat samoja, jos niillä on sama rakenne ja rakenteen komponenteilla on sama tyyppi tai identtinen määrittely Molempia voidaan soveltaa sekä skalaarityyppeihin että rakenteisiin tyyppeihin typedef int paino; C-koodia: typedef int pituus; 40

41 Lisää esimerkkijä tyyppien samuusongelmista Pascal-koodia: X, Y: array [ ] of Integer; type T = array [ ] of Integer; U = T; var X: T; Y: U; X: array [ ] of Integer; Y: array [ ] of Integer; 41

42 Rakenne-ekvivalenssin selvittäminen 1. Ota käsiteltäväksi molemmat tyyppimäärittelyt. 2. Korvaa kummassakin tyyppimäärittelyssä jokainen tyypin tunnus vastaavalla tyyppimäärittelyllä. 3. Toista askelta 2 kunnes tyyppimäärittelyissä ei ole enää tyyppien tunnuksia (paitsi standardityyppien) 4. Vertaa tuloksena saatuja määrittelyjä tekstinä. Jos ne ovat identtisiä jonoja kielen alkioita, tyypit ovat samat. 42

43 Nimiekvivalenssin etuja Helpompi toteuttaa Parempi tyyppisuojaus Tyyppien abstraktisuus Ohjelman luettavuuden ja ymmärrettävyyden paraneminen (nimetyt tyypit) 43

44 Tyyppiekvivalenssi ohjelmointikielissä Nimiekvivalenssi Ada poikkeuksena nimetyt alityypit C++ ja Java Rakenne-ekvivalenssi Algol68 ja Modula-3 C paitsi tietuetyypit (struct, union) typedef-määrittely ei luo uutta tyyppiä 44

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

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

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

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

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

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

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

Rakenteiset tietotyypit Moniulotteiset taulukot

Rakenteiset tietotyypit Moniulotteiset taulukot C! Rakenteiset tietotyypit Moniulotteiset taulukot 22.2.2018 Agenda Rakenteiset tietotyypit Vilkaisu 6. kierroksen tehtäviin Moniulotteiset taulukot Esimerkki Seuraava luento to 8.3. Ilmoittautuminen ohjelmointikokeeseen

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

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto

Tiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto Luento 6 (verkkoluento 6) Tiedon esitysmuodot Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto Ohjelman esitysmuoto Rakenteellinen tieto 1 Tiedon tyypit Kommunikointi

Lisätiedot

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

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

Tieto- ja tallennusrakenteet

Tieto- ja tallennusrakenteet Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)

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

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

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. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

12. Monimuotoisuus 12.1

12. Monimuotoisuus 12.1 12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Myöhäinen ja aikainen sidonta. Parametrinvälitys

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

lausekkeiden tapauksessa. Jotkin ohjelmointikielet on määritelty sellaisiksi,

lausekkeiden tapauksessa. Jotkin ohjelmointikielet on määritelty sellaisiksi, 3.5. TYYPIT 59 indeksit voidaan siirtää kielitasolta oliotasolle siirryttäessä alkamaan nollasta. Vain mikäli indeksin alin arvo oliotasolla ei ole tiedossa ennen suorituksen alkua, on tarpeen lisätä taulukko-olioon

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

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

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

12. Monimuotoisuus 12.1

12. Monimuotoisuus 12.1 12. Monimuotoisuus 12.1 Sisällys Johdanto. Periytymismekanismi määrittää alityypityksen. Viitteiden sijoitus ja vertailu. Staattinen ja dynaaminen luokka. Parametrinvälitys eräs monimuotoisuuden sovellus.

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

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

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

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

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

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

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

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

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

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

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

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017. C! Dynaaminen muisti 9.2.2017 Agenda Kertausta merkkijonoista Dynaaminen muisti Valgrind-perusteet ja esimerkkejä Seuraava luento to 2.3. Ei harjoituksia arviointiviikolla 13.2. 17.2. 2 Palautetta merkkijonoihin

Lisätiedot

Verilogvs. VHDL. Janne Koljonen University of Vaasa

Verilogvs. VHDL. Janne Koljonen University of Vaasa Verilogvs. VHDL Janne Koljonen University of Vaasa Sälää Huom! Verilogistauseita versioita: 1995, 2001 ja 2005. Kommentit Javasta tutut // ja /* */ ovat kommenttimerkkejä. Case sensitivity Isot ja pienet

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

815338A Ohjelmointikielten periaatteet

815338A Ohjelmointikielten periaatteet 815338A Ohjelmointikielten periaatteet 2015-2016 IV.1 Imperatiivinen ohjelmointi muuttujat ja tietotyypit Sisältö 1. Yleistä muuttujista 2. Sidonta 3. Tyypin tarkistus 4. Näkyvyysalue 5. Yleistä tietotyypeistä

Lisätiedot

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka

Lisätiedot

Osoittimet ja taulukot

Osoittimet ja taulukot C! ja taulukot 1.2.2018 Tiedotteita Tämän jälkeen taas pari väliviikkoa (tenttiviikko) Seuraava luento 22.2. Laskareita ei tenttiviikolla 12.2. 16.2. 2 ja muisti Muisti Keskusyksikkö Suorittaa muistissa

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin Ohjausjärjestelmien jatkokurssi Visual Basic vinkkejä ohjelmointiin http://www.techsoft.fi/oskillaattoripiirit.htm http://www.mol.fi/paikat/job.do?lang=fi&jobid=7852109&index=240&anchor=7852109 Yksiköt

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö Algoritmit 2 Luento 3 Ti 21.3.2017 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2017 Luento 3 Ti 21.3.2017

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

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö Algoritmit 2 Luento 3 Ti 20.3.2018 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2018 Luento 3 Ti 20.3.2018

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

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

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009

TIE448 Kääntäjätekniikka, syksy Antti-Juhani Kaijanaho. 27. lokakuuta 2009 TIE448 Kääntäjätekniikka, syksy 2009 Antti-Juhani Kaijanaho TIETOTEKNIIKAN LAITOS 27. lokakuuta 2009 Sisällys Sisällys Seuraava deadline Vaihe D tiistai 10.11. klo 10 välikielen generointi Kääntäjän rakenne

Lisätiedot

TIES542 kevät 2009 Tyyppijärjestelmän laajennoksia

TIES542 kevät 2009 Tyyppijärjestelmän laajennoksia TIES542 kevät 2009 Tyyppijärjestelmän laajennoksia Antti-Juhani Kaijanaho 16. helmikuuta 2009 Tyypitetyt ohjelmointikielet sisältävät paljon muitakin konstruktioita kuin yksinkertaisesti tyypitetyn lambda-kielen,

Lisätiedot

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi 1 C++11 Syntaksi Jari-Pekka Voutilainen 13.4.2012 2 Range-for Iteroi säiliön kaikki alkiot for-silmukassa. Säiliöltä vaaditaan begin- ja end-iteraattorit. Pätee kaikille C++11 STL-säiliöille, taulukoille,

Lisätiedot

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä?

Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä? Ongelma 1: Onko datassa tai informaatiossa päällekkäisyyttä? 2012-2013 Lasse Lensu 2 Ongelma 2: Voidaanko dataa tai informaatiota tallettaa tiiviimpään tilaan koodaamalla se uudelleen? 2012-2013 Lasse

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

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

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

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Muuttujat eri muisteissa Ohjelman muistialueen layout Paikallisen ja globaalin muuttujan ominaisuudet Dynaamisen muistinkäytön edut Paikallisten muuttujien dynaamisuus ADT

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 11.08.2010 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

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

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA341 Funktio-ohjelmointi 1, kevät 2008 TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 4 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 17. tammikuuta 2008 Modulin viimeistelyä module Shape ( Shape ( Rectangle, E l l i p

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

TAMPEREEN TEKNILLINEN YLIOPISTO

TAMPEREEN TEKNILLINEN YLIOPISTO TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja Tietokonetekniikan laitos TKT-3200 Tietokonetekniikka ASSEMBLER: QSORT 06.09.2005 Ryhmä 00 nimi1 email1 opnro1 nimi2 email2 opnro2 nimi3 email3 opnro3 1. TEHTÄVÄ

Lisätiedot

Algoritmit 2. Luento 7 Ti Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö Algoritmit 2 Luento 7 Ti 4.4.2017 Timo Männikkö Luento 7 Joukot Joukko-operaatioita Joukkojen esitystapoja Alkiovieraat osajoukot Toteutus puurakenteena Algoritmit 2 Kevät 2017 Luento 7 Ti 4.4.2017 2/26

Lisätiedot

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: KERTAUSTEHTÄVIÄ Tietue Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: struct henkilotiedot char nimi [20]; int ika; char puh [10]; ; Edellä esitetty kuvaus määrittelee

Lisätiedot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot C! : Moniulotteiset taulukot & Bittioperaatiot 15.3.2016 Agenda Pieni kertausharjoitus Moniulotteiset taulukot Esimerkki taulukoista Tauko (bittitehtävä) Binäärioperaatioista Esimerkki (vilkaistaan IP

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

sama tyyppi (joka vastaa kaikkien mahdollisten arvojen summa-aluetta). Esimerkiksi

sama tyyppi (joka vastaa kaikkien mahdollisten arvojen summa-aluetta). Esimerkiksi 3.5. TYYPIT 51 3.5.3 Kielitason tyypit Staattinen tyypitys Kielitasolla tyyppejä käytetään sulkemaan pois joitakin merkittäviä ja automaattisesti tunnistettavissa olevia merkitysopillisia virheitä (oliotason

Lisätiedot

Luento 2: Tiedostot ja tiedon varastointi

Luento 2: Tiedostot ja tiedon varastointi HELIA 1 (19) Luento 2: Tiedostot ja tiedon varastointi Muistit... 2 Päämuisti (Primary storage)... 2 Apumuisti (Secondary storage)... 2 Tiedon tallennuksen yksiköitä... 3 Looginen taso... 3 Fyysinen taso...

Lisätiedot

Osoittimet ja taulukot

Osoittimet ja taulukot Osoittimet ja taulukot Hannu Laine Copyright Hannu Laine Osoittimet int main (void) { int a; int *p; //p on osoitinmuuttuja p = &a; *p = 10; printf( %d, *p); //tulostuu muuttujan a sisältö scanf( %d, p);

Lisätiedot

Luku- ja merkkikoodit. Digitaalitekniikan matematiikka Luku 12 Sivu 1 (15)

Luku- ja merkkikoodit. Digitaalitekniikan matematiikka Luku 12 Sivu 1 (15) Digitaalitekniikan matematiikka Luku 12 Sivu 1 (15) A = a = i i w i Digitaalitekniikan matematiikka Luku 12 Sivu 2 (15) Johdanto Tässä luvussa esitetään kymmenjärjestelmän lukujen eli BCD-lukujen esitystapoja

Lisätiedot

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

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

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

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100 Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).

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

Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

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

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 1: Joukot 4.1 Joukot Matemaattisesti joukko on mikä tahansa hyvin määritelty kokoelma objekteja, joita kutsutaan joukon alkioiksi

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ELM GROUP 04. Teemu Laakso Henrik Talarmo ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................

Lisätiedot

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö

Algoritmit 1. Luento 10 Ke 11.2.2015. Timo Männikkö Algoritmit 1 Luento 10 Ke 11.2.2015 Timo Männikkö Luento 10 Algoritminen ongelman ratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Väliinsijoituslajittelu Valintalajittelu

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

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa Tietojen tallennusrakenteet Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa tiedot tiedostoon kuuluvista lohkoista esim. taulukkona, joka voi muodostua ketjutetuista

Lisätiedot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot

Lisätiedot

Dynaaminen muisti Rakenteiset tietotyypit

Dynaaminen muisti Rakenteiset tietotyypit C! Dynaaminen muisti Rakenteiset tietotyypit 1.3.2016 Agenda Kertausta Dynaaminen muisti Valgrind-perusteet ja esimerkkejä Yhteenveto tietorakenteista Vilkaisu 3. kierroksen tehtäviin Esim: miten linkitetty

Lisätiedot

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg

ASM-kaavio: reset. b c d e f g. 00 abcdef. naytto1. clk. 01 bc. reset. 10 a2. abdeg. 11 a3. abcdg Digitaalitekniikka (piirit) Metropolia / AKo Pikku nnitteluharjoitus: Suunnitellaan sekvenssipiiri, jolla saadaan numerot juoksemaan seitsensegmenttinäytöllä: VHDL-koodin generointi ASM-kaavioista Tässä

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne

Lisätiedot