Tyypit (eri näkökulmia)
|
|
- Maarit Karvonen
- 9 vuotta sitten
- Katselukertoja:
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 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,
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
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
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
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
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
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
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
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ä.
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
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
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
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
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
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
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
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:
Tieto- ja tallennusrakenteet
Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)
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
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
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,
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
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
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ä
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
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
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ä
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
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
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.
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
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
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
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
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
Harjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
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
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
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
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
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,
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
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
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
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
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ä
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
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
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ä
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
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.
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
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 );
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
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
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
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
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,
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,
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
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ä
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
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
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
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
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Ä
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
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
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
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Ä
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
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
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
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
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
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...
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);
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
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,
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
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ä
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
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).
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
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,
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
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,
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
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
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,
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................................
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
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
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.
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
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
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
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ä
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ä:
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