815338A Ohjelmointikielten periaatteet
|
|
- Anneli Mäkelä
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 815338A Ohjelmointikielten periaatteet IV.1 Imperatiivinen ohjelmointi muuttujat ja tietotyypit
2 Sisältö 1. Yleistä muuttujista 2. Sidonta 3. Tyypin tarkistus 4. Näkyvyysalue 5. Yleistä tietotyypeistä 6. Primitiiviset tietotyypit 7. Rakenteelliset tietotyypit 8. Osoitintyyppi A Ohjelmointikielten periaatteet, Muuttujat 2
3 IV.1.1 Yleistä muuttujista Imperatiivisen ohjelmoinnin keskeisimpiä käsitteitä Muuttuja mallintaa tietokoneen muistipaikkaa Muuttujaan liittyy 1. Nimi (name) Tapa yksilöidä muuttuja 2. Osoite (address) Muistiosoite, jossa muuttujan arvo sijaitsee 3. Arvo (value) Data joka kulloinkin on muuttujan osoitteen osoittamassa muistipaikassa A Ohjelmointikielten periaatteet, Muuttujat 3
4 IV.1.1 Yleistä muuttujista (2) Muuttujan ominaisuuksia 1. Tyyppi (type) Muuttujan tietorakenteen nimi 2. Näkyvyysalue (scope) Se ohjelman osa, jossa muuttuja on käytettävissä 3. Elinaika (lifetime, extent) Muuttujan muistinvaraamisen ja muistinvapauttamisen välinen aika A Ohjelmointikielten periaatteet, Muuttujat 4
5 IV Muuttujan nimi Merkkijono, jota käytetään tunnistamaan muuttuja FORTRAN77: max. kuuden merkin mittaiset nimet FORTRAN 90 käyttää 31 merkin rajoitusta C-kieli: Nimen erottelupituutena vähintään 31 ensimmäistä merkkiä Nykyään useimmissa kielissä (C++, Java) mielivaltaisen pitkät nimet Useimmiten nimen alettava kirjaimella (tai alaviivalla) Isojen/pienien kirjainten erottelu Pascal, FORTRAN ei eroa Useimmiten erotetaan (C, Java jne) A Ohjelmointikielten periaatteet, Muuttujat 5
6 IV Erikoissanat Erottavat kielen kontrollirakenteita kuvaavat sanat muuttujista Varatut sanat (reserved words) Ei voi käyttää muuten kuin sille varattuun tarkoitukseen Avainsanat (keywords) Avainsana on erikoismerkityksessä ainoastaan tietyissä yhteyksissä Nykykielissä yleensä ainoastaan varattuja sanoja FORTRAN käyttää avainsanoja A Ohjelmointikielten periaatteet, Muuttujat 6
7 IV Muuttujan osoite Muuttujaan liittyvän fyysisen muistiosoitteen arvo Yleensä ilmaistaan heksalukuna Ei yleensä staattinen, muuttujan osoite saattaa vaihdella ohjelman suorituksen aikana Usein käytetään nimitystä l-value (left value) Osoite tiedettävä, kun muuttuja sijaitsee sijoituslauseen vasemmalla puolella Moninimisyys, aliasing Kaksi erinimistä muuttujaa viittaa samaan muistipaikkaan Yleensä muodostaminen ei suotavaa A Ohjelmointikielten periaatteet, Muuttujat 7
8 IV Muuttujan tyyppi Määrittelee 1. Muuttujan arvoalueen 2. Minkälaisia operaatioita tyypin muuttujalle voidaan tehdä Esimerkki: Java-kielessä Suurin kokonaisluku: Integer.MAX_VALUE pienin: Integer.MIN_VALUE Muuttujiin voidaan soveltaa perusaritmetiikan operaatioita A Ohjelmointikielten periaatteet, Muuttujat 8
9 IV Muuttujan arvo Muuttujan muistiosoitteen kulloinenkin sisältö Tässä muistiosoite = sellainen muistialue, johon koko muuttujan data mahtuu Esimerkki: Javan double-tyyppinen muuttuja kahdeksan tavun kokoinen -> muuttujan osoite kahdeksan tavun kokoinen muistialue, jossa säilytetään muuttujan arvoa. Usein nimitetään r-valueksi (right value) Tarvitaan sijoituslauseen oikealla puolella. Huom! Jotta päästäisiin käsiksi r-valueen, on l-value aina määritettävä ensin A Ohjelmointikielten periaatteet, Muuttujat 9
10 IV.1.2. Sidonta Yksi keskeisimmistä muuttujiin liittyvistä käsitteistä Jonkin ominaisuuden liittämistä ohjelman itsenäiseen kokonaisuuteen Muuttujan tapauksessa tyypinsidonta tai muistinsidonta Tyypinsidonta liittää muuttujaan jonkin tietotyypin Muistinsidonta liittää muuttujaan muistiosoitteen (varaa riittävästi muistia, jotta muuttujan arvo voidaan tallentaa) A Ohjelmointikielten periaatteet, Muuttujat 10
11 IV.1.2. Sidonta (2) Sidonta-aika (binding time) = milloin tietty sidonta tehdään Varhainen sidonta lisää tehokkuutta Myöhäinen sidonta lisää joustavuutta Staattinen sidonta (static binding) ennen ohjelman ajoa ei muutu ajon aikana Dynaaminen sidonta (dynamic binding) = ajonaikainen sidonta A Ohjelmointikielten periaatteet, Muuttujat 11
12 IV Tyypinsidonta Muuttujaan on liitettävä tietotyyppi ennen kuin sitä voi ohjelmassa käyttää Voidaan tehdä: 1. Staattisesti i. eksplisiittisellä tai ii. implisiittisellä esittelyllä 2. Dynaamisesti A Ohjelmointikielten periaatteet, Muuttujat 12
13 IV Tyypin staattinen sidonta Eksplisiittinen esittely: ohjelmalauseessa määritellään muuttuja tietyn tyyppiseksi, esimerkiksi C:ssä float f1; Useimmissa staattista tyypinsidontaa käyttävissä kielissä pakollinen Implisiittinen esittely liittää muuttujaan tietotyypin jonkin sopimuksen mukaan ilman erillistä esittelyä Esim. FORTRANissa muuttuja INTEGER-tyyppinen jos nimi alkaa I, J, K, L, M tai N-kirjaimella; muuten REAL -tyyppinen Haitta: Esittelyn poisjäänti vahingossa voi johtaa hankalasti löydettäviin virhetoimintoihin A Ohjelmointikielten periaatteet, Muuttujat 13
14 IV Tyypin dynaaminen sidonta Tyyppi määrittyy ohjelman suorituksen aikana sijoituslausetta suoritettaessa Dynaamista tyypinsidontaa käyttävät kielet eroavat voimakkaasti staattiseen tyypinsidontaan perustuvista Joustavia ja geneerinen ohjelmointi yksinkertaista Esim luvun APL ja SNOBOL Esimerkki. JavaScript: xz = [1.5, 2.2, 3.7] // Nyt xz taulukko xz = 234 // Nyt xz kokonaisluku Haittoja tehokkuuden menetys ja koodin luotettavuuden heikkeneminen A Ohjelmointikielten periaatteet, Muuttujat 14
15 IV Muistin sidonta Muuttujan tietotyyppi on määrätty -> voidaan varata muistista alue (osoite) muuttujan arvon tallentamiseen Muistin varaaminen = allokointi (allocation) Allokoinnin käänteisprosessi on varatun muistin vapauttaminen = deallokointi (deallocation) Ohjelman muistialue: Staattinen eli globaali alue Pinomuisti Varaamatonta muistia Kekomuisti Yleensä pinomuisti ja kekomuisti kasvavat toisiaan kohti A Ohjelmointikielten periaatteet, Muuttujat 15
16 IV Muuttujan elinikä Muuttujan käyttämän muistin varaamisen ja vapauttamisen välinen aika Muuttujat eliniän perusteella: 1. Staattiset, 2. Pinodynaamiset, 3. Kekodynaamiset (explicit heap dynamic) ja 4. Implisiittisesti kekodynaamiset (implicit heap dynamic) A Ohjelmointikielten periaatteet, Muuttujat 16
17 IV Staattiset muuttujat Sidotaan muistiosoitteeseen ennen ohjelman suoritusta, säilyvät sidottuna samaan osoitteeseen ohjelman päättymiseen saakka Käyttö tuo tehokkuutta Aiheuttaa joustamattomuutta Rekursiivisten aliohjelmien toteuttaminen mahdotonta FORTRANin varhaisemmissa versioissa kaikki muuttujat staattisia C:ssä static-määreellä muuttuja staattiseksi Pascal-kielessä ei staattisia muuttujia A Ohjelmointikielten periaatteet, Muuttujat 17
18 IV Pinodynaamiset muuttujat Tyyppi staattisesti sidottu, mutta muistiosoite sidotaan ajonaikaisesti esittelylausetta suoritettaessa Perua Algol 60-kielestä: paikallisten muuttujien muisti varattu pinomuistista dynaamisesti Näin toimivat yleisimmät imperatiiviset nykykielet Mahdollistavat rekursion Aliohjelman muuttujalle varataan jokaisella kutsulla kohti uusi muistiosoite Säästää muistia - yhteinen muistialue kaikkien aliohjelmien paikallisille muuttujille Dynaaminen muistinvaraus hidastaa vähän suoritusta A Ohjelmointikielten periaatteet, Muuttujat 18
19 IV (Eksplisiittisesti) Kekodynaamiset muuttujat Yleisimmin kekomuistista varattavat muuttujat Varataan kekomuistista ohjelmoijan käskystä ajonaikaisesti Voidaan viitata ainoastaan osoitinmuuttujan tai viitetyypin muuttujan avulla Voidaan varata 1. Operaattorilla (Java ja C++: new) tai 2. Kirjastofunktiolla (C: malloc()) A Ohjelmointikielten periaatteet, Muuttujat 19
20 IV (Eksplisiittisesti) Kekodynaamiset muuttujat (2) Muistin vapauttaminen Jotkin kielet: Automaattinen roskien keruu (garbage collection) (esim. Java) Joissakin kielissä ohjelmoijan vastuulla: C++: operaattori delete C: funktio free() A Ohjelmointikielten periaatteet, Muuttujat 20
21 IV (Eksplisiittisesti) Kekodynaamiset muuttujat (3) *x++=*y++ Esimerkki. Kekodynaamisen muuttujan varaaminen (ja vapauttaminen) C ja C++ -kielissä. C: C++: int *pnewint; pnewint = malloc(sizeof(int)); *pnewint = 10; free(pnewint); int *pnewint; pnewint = new int; *pnewint = 10; delete pnewint; A Ohjelmointikielten periaatteet, Muuttujat 21
22 IV Implisiittisesti kekodynaamiset muuttujat *x++=*y++ Sidotaan kekomuistiin vasta sijoituslauseen yhteydessä Käyttö sallii hyvin joustavan ohjelmoinnin ja erittäin geneerisen koodin kirjoittamisen Monissa skriptikielissä (Perl, JavaScript) merkkijonomuuttujat ja taulukot A Ohjelmointikielten periaatteet, Muuttujat 22
23 IV.1.3. Tyypin tarkistus (type checking) Varmistetaan että ohjelman operaatioissa käytettävien muuttujien tyypit ovat yhteensopivat Dynaaminen tarkistus: tyypit tarkistetaan ajonaikaisesti Staattinen tarkistus: viimeistään käännösaikana A Ohjelmointikielten periaatteet, Muuttujat 23
24 IV Tyyppiyhteensopivuus (type compatibility) 1. Nimityypin yhteensopivuus (name type compatibility) Muuttujat yhteensopivaa tyyppiä ainoastaan, jos ne on määritelty samannimisen tyyppisiksi 2. Rakennetyypin yhteensopivuus (structure type compatibility) Toteutuu, jos muuttujien rakenne on identtinen Yleensä tyypintarkistukseen käytetään jotain välimuotoa Nimityypin tarkistus liian rajoittava Rakennetyypin tarkistus liian hankala toteuttaa A Ohjelmointikielten periaatteet, Muuttujat 24
25 IV Tyyppiyhteensopivuus (2) Esimerkki. Pascal-kielisessä määrittelyssä TYPE MYINT = INTEGER; var a: INTEGER; var ma:myint; muuttujat a ja ma eivät nimityyppiyhteensopivat, mutta ovat rakennetyyppiyhteensopivat Pascal-kielessä ei käytetä nimityypin yhteensopivuutta, sijoitus ma := a; on laillinen A Ohjelmointikielten periaatteet, Muuttujat 25
26 IV Tyyppiyhteensopivuus (2) Esimerkki. C: typedef struct { int x; int y; } mystruct; typedef struct { int xx; int yy; } myotherstruct; mystruct str1; myotherstruct str2; str1 = str2 ei sallittu: C-kielessä muuten rakenneyhteensopivuus paitsi tietueiden (struct) ja unionien (union) suhteen C++ ja Java käyttävät nimityyppiyhteensopivuutta C++: typedefillä samat tyypit A Ohjelmointikielten periaatteet, Muuttujat 26
27 IV Vahvasti tyypitetty (strongly typed) kieli 1. Jokaisella muuttujalla oltava hyvin määritelty tyyppi 2. Tyyppivirheet havaitaan aina Pidetään tavoittelemisen arvoisena piirteenä Estää ohjelmointivirheet, jotka johtuvat 1. Vääräntyyppisen muuttujan sijoittamisesta tai 2. Käyttämisestä parametrina aliohjelmakutsussa Varsin harvat kielet täyttävät, jos sovelletaan tiukasti Muunnossäännöt (coercion) Vaikuttavat tyypintarkistukseen Vahvasti tyypitetyssäkin kielessä esim. aritmeettisille operaatioille sääntöjä, jotka rikkovat periaatteessa tyypitystä vastaan A Ohjelmointikielten periaatteet, Muuttujat 27
28 IV Vahvasti tyypitetty (strongly typed) kieli (2) Pascal vaihtelevia tietueita lukuun ottamatta C:ssä tapauksia, joissa tyyppivirhe voi jäädä havaitsematta -> C ei niin vahvasti tyypitetty kuin Pascal C++: tyypintarkistus vahvempi kuin C:ssä, ei vahvasti tyypitetty Ada, Java ja C# (lähes) vahvasti tyypitettyjä Tyyppivirhe voi syntyä ohjelmoijan itse pakottamana Python vahvasti tyypitetty A Ohjelmointikielten periaatteet, Muuttujat 28
29 IV.1.4. Näkyvyysalue (scope) Niiden ohjelman lauseiden kokonaisuus, joiden alueella muuttuja on näkyvä (visible), t.s. käytettävissä. Globaali (global) muuttuja: koko ohjelma Paikalliset eli lokaalit (local) muuttujat (ohjelmalohkon tai muun vastaavan yksikön) määritelty kyseisessä yksikössä Ei-paikalliset (nonlocal) muuttujat: Lohkon sisällä näkyvät lohkon ulkopuolella määritellyt muuttujat Voi määräytyä Staattisesti ennen ohjelman suoritusta tai Dynaamisesti ohjelman suorituksen aikana A Ohjelmointikielten periaatteet, Muuttujat 29
30 IV Staattinen näkyvyysalueen määräytyminen *x++=*y++ Yleisin menetelmä imperatiivisissa kielissä Muuttujien näkyvyysalueet määräytyvät ennen ohjelman suoritusta ohjelman rakenteen perusteella Rakenteet voivat olla toisilleen alisteisia -> näkyvyysalueiden sisäkkäisyys Aliohjelmalla useimmiten oma näkyvyysalue Nykykielissä voidaan muodostaa uusia näkyvyysalueita määrittelemällä ohjelmalohkoja (blocks) C: aaltosulkujen välinen osa on lohko Kootun lauseen (compound statement) sisällä ei voida esitellä uusia muuttujia (kuten lohkossa) A Ohjelmointikielten periaatteet, Muuttujat 30
31 IV Staattinen näkyvyysalueen määräytyminen *x++=*y++ Jos sisemmissä näkyvyysalueissa esitellään samannimisiä muuttujia kuin alueen sisältävässä lohkossa, on ulomman alueen muuttuja piilotettava sisemmässä lohkossa Pascalissa BEGIN END pari määrittelee kootun lauseen -> Pascalissa ei lohkoja, aliohjelmilla oma näkyvyysalue ja aliohjelmat voivat olla sisäkkäisiä A Ohjelmointikielten periaatteet, Muuttujat 31
32 IV.4.2. Dynaaminen näkyvyysalueen määräytyminen *x++=*y++ Hyvin harvat ohjelmointikielet käyttävät Esim. APL, SNOBOL, Perlissä mahdollinen Perustuu aliohjelmien suoritusjärjestykseen -> aktiivisen aliohjelman muuttujat näkyvät kaikille aliohjelmille, joita kutsutaan kyseisen aliohjelman käynnistämisen jälkeen Ongelmia: Koodin luettavuus huononee Ohjelman luotettavuus heikkenee Etu: Aliohjelmien tiedonvälityksen helpottuminen Haitat suuremmat -> ei juuri käytetä A Ohjelmointikielten periaatteet, Muuttujat 32
33 IV.1.5. Yleistä tietotyypeistä Tietotyyppi (data type): Joukko arvoja, joihin liittyy joukko näihin arvoihin sovellettavia operaatioita Keskeinen käsite ohjelmoinnissa, koska luokittelee ohjelman datan Primitiivinen tietotyyppi (primitive data type): määrittelemiseen ei käytetä muita tietotyyppejä Lähes jokaisessa kielessä määritellään joukko primitiivisiä tietotyyppejä valmiiksi Louden: yksinkertainen (simple) tietotyyppi: tietotyyppi, jolla ei ole muuta rakennetta kuin sisäänrakennettu aritmeettinen tai peräkkäinen rakenne A Ohjelmointikielten periaatteet, Muuttujat 33
34 IV.1.6. Primitiiviset tietotyypit Jaetaan tyypillisesti numeeriseen, loogiseen ja merkkitietoon Useissa varhaisissa ohjelmointikielissä ainoat primitiiviset tietotyypit numeerisia Alkuperäisessä BASIC-kielessä ainoastaan liukulukutyyppi A Ohjelmointikielten periaatteet, Muuttujat 34
35 IV Numeeriset tyypit Kokonaislukutyyppi yleisin numeerinen primitiivinen tietotyyppi Pituus voi vaihdella; 32 bittiä nykyään yleisin Liukulukutyyppi (floating-point type) Esittää reaalilukuja (likimääräisesti) tietokoneessa Esitetään useimmiten IEEE:n standardilla 754 Diskreettien rakenteiden kurssissa esityksestä tarkemmin Desimaalityyppi Tietynmittaisille desimaaliluvuille tarkka esitys Rajoittaa esitettävien lukujen kokoa Käytössä C#-kielessä (decimal), pituus 128 bittiä A Ohjelmointikielten periaatteet, Muuttujat 35
36 IV.6.2. Looginen tietotyyppi (boolean, logical type) Periaatteessa tietotyypeistä yksinkertaisin - tarvitsee vain arvot tosi ja epätosi Esitystapa vaihtelee C: mikä tahansa nollasta poikkeava lukuarvo tulkitaan todeksi ja nolla epätodeksi. Yleensä mahdollisuus saada arvot true ja false A Ohjelmointikielten periaatteet, Muuttujat 36
37 IV Merkkityypit Merkkitieto esitetään tietokoneen sisäisesti numeerisina koodeina. Aiemmin yleisin koodauskäytäntö ASCII (American Standard Code for Information Interchange) Nykyään UNICODE (2 tavua/merkki) yleistyy, esimerkiksi Java, C#: char kahden tavun kokoinen Merkkijonotyyppi (character string type) Useimmiten ei ole primitiivinen FORTRANissa (77 jälkeen) ja BASICissä primitiivisiä Monessa kielessä valmiiksi määriteltyjen perustietotyyppien joukossa A Ohjelmointikielten periaatteet, Muuttujat 37
38 IV Merkkityypit (2) C-kielen merkkijono Merkkiin \0 päättyvä yksiulotteinen merkkitaulukko Oliokielissä yleensä jonkin kirjastoluokan olioita A Ohjelmointikielten periaatteet, Muuttujat 38
39 IV Ordinaalityyppi (ordinal type) Arvot voidaan yhdistää positiivisiin kokonaislukuihin luonnollisella tavalla Useissa kielissä käyttäjän määrittelemiä ordinaalityyppejä; eivät täytä primitiivisen tyypin määritelmää, ovat kuitenkin yksinkertaisia tietotyyppejä Luetellut tyypit (enumeration types) Rajoitetut tyypit (subrange type) Luetellun tyypin muuttujien arvot määritellään luettelemalla symbolisiksi vakioiksi Tyyppiin liittyy järjestys -> arvoja voidaan vertailla A Ohjelmointikielten periaatteet, Muuttujat 39
40 IV Ordinaalityyppi (2) *x++=*y++ Esimerkki. Viikonpäivät lueteltuna tyyppinä Pascalilla: TYPE paiva = (su,ma,ti,ke,tor,pe,la); Sama C-kielellä: enum paiva {su, ma, ti, ke, tor, pe, la}; Vertailu Pascalissa: var ps,pt:paiva; begin ps:=su; pt:=tor; if pt > ps then begin (* lauseet *) end; end. Vertailu C kielessä: enum paiva x = su,y = tor; if(x < y) { // Lauseet } A Ohjelmointikielten periaatteet, Muuttujat 40
41 IV Ordinaalityyppi (3) Luetellun tyypin etuja Määritellyt tyypit ovat helposti tulkittavissa Rajojen ylityksen virhemahdollisuudet poistuvat mikäli tarkistetaan lueteltujen tyyppien yhteensopivuus Ellei lueteltua tyyppiä, on käytettävä numeerisia muuttujia kuvaamaan lueteltuja tyyppejä -> Tähän verrattuna: 1. Koodin luettavuus paranee 2. Luotettavuus paranee A Ohjelmointikielten periaatteet, Muuttujat 41
42 IV Ordinaalityyppi (4) Javassa versiosta 1.5 lähtien enum-tyyppi Esim. enum Paiva { } SUNNUNTAI, MAANANTAI, TIISTAI, KESKIVIIKKO, TORSTAI, PERJANTAI, LAUANTAI Vakiot olioita -> monipuolisempi kuin aiemmin mainitut C++11:ssa myös luokkatyyppinen enum enum class Paiva { }; SUNNUNTAI, MAANANTAI, TIISTAI, KESKIVIIKKO, TORSTAI, PERJANTAI, LAUANTAI A Ohjelmointikielten periaatteet, Muuttujat 42
43 IV Rajoitettu tyyppi Jonkin ordinaalityypin peräkkäisten arvojen osajono Ensimmäiseksi Pascalissa Voidaan käyttää myös Adassa Pascalissa: TYPE allesata = ; pienetkirjaimet = a.. z ; Käyttäminen lisää luotettavuutta mikäli kääntäjä tarkistaa virheelliset operaatiot Ei käytetä muissa yleisissä kielissä Pascalin ja Adan lisäksi A Ohjelmointikielten periaatteet, Muuttujat 43
44 IV.1.7. Rakenteelliset tietotyypit *x++=*y++ Koostuvat yhdestä tai useammasta yksinkertaista tai rakenteista tyyppiä olevasta komponentista 1. Taulukot 2. Tietueet 3. Unionit 4. Joukkotyyppi A Ohjelmointikielten periaatteet, Muuttujat 44
45 IV Taulukot Yleisimmin käytettyjä tietorakenteita Kiinteä määrä samaa tyyppiä olevia tietoalkioita, jotka sijaitsevat peräkkäin yhtenäisessä muistialueessa -> Käyttö tehokasta, koska minkä tahansa alkion muistiosoite voidaan suoraan laskea Alkiot mitä tahansa tietotyyppiä, joko primitiivistä, kielessä määriteltyä tai ohjelmassa määriteltyä Alkioihin viitataan taulukon nimellä ja alkion indeksillä taulukossa C pohjaisissa kielissä indeksit alkavat nollasta A Ohjelmointikielten periaatteet, Muuttujat 45
46 IV Taulukot (2) Esimerkki: Kokonaislukutaulukko eri kielissä C: int lukutaulu[50]; lukutaulu[10] = 34; Pascal: VAR lukutaulu: ARRAY [0..49] OF INTEGER; begin lukutaulu[10] := 34; FORTRAN: INTEGER LTAULU(0:49) LTAULU(10) = 34; A Ohjelmointikielten periaatteet, Muuttujat 46
47 IV Taulukkojen tyypit Neljä tyyppiä indeksien rajojen sidonnan ja muistin allokoinnin tapahtuma-ajan perusteella 1. Staattiset taulukot (static arrays) Rajat sidotaan staattisesti, taulukon muisti varataan staattisesti Suoritusajan tehokkuus 2. Kiinteät pinodynaamiset taulukot (fixed stackdynamic arrays) Rajat sidotaan staattisesti, muisti varataan ajonaikaisesti pinomuistista Muistin käyttö tehokkaampaa kuin staattisilla taulukoilla A Ohjelmointikielten periaatteet, Muuttujat 47
48 IV Taulukkojen tyypit (2) 3. Pinodynaamiset taulukot (stack-dynamic arrays) Rajat sidotaan dynaamisesti, muisti varataan pinomuistista. Molemmat pysyvät vakioina taulukon elinajan Taulukon kokoa ei tarvitse tietää etukäteen -> lisää joustavuutta 4. Kekodynaamiset taulukot (heap-dynamic array) Rajat sidotaan dynaamisesti, taulukon muisti varataan dynaamisesti kekomuistista Taulukon rajat ja varattu muisti voivat muuttua sen elinaikana -> joustavin tyyppi A Ohjelmointikielten periaatteet, Muuttujat 48
49 IV Taulukkotyypit eri kielissä Staattiset taulukot FORTRANin taulukot (versio 77 ja ennen) REAL REAALILUVUT(4) C/C++-kielessä taulukko voidaan esitellä staticmääreellä staattiseksi Kiinteät pinodynaamiset taulukot Yleisimmin pinosta varattavat taulukot, esim. C, C++ (aiemmat versiot), Pascal A Ohjelmointikielten periaatteet, Muuttujat 49
50 IV Taulukkotyypit eri kielissä (2) Pinodynaamiset taulukot Aiemmin harvinaisia imperatiivisissa kielissä Adassa alusta saakka AR_LEN := 25; declare AR: array(1..ar_len) of INTEGER; C/C++-kielissä uusimmissa versioissa sallittu int i,koko = 15; for(i=5; i < 10; i++){ } int taulu[koko]; // Nykyään käy C/C++:ssa A Ohjelmointikielten periaatteet, Muuttujat 50
51 IV Taulukkotyypit eri kielissä (3) Kekodynaamiset taulukot Javan, C#:n kaikki taulukot int[] lukutaulu = new int[50]; C/C++ -kielissä varataan kuten muutkin dynaamiset muuttujat C:ssä malloc int *lukutaulu; lukutaulu = malloc(50*sizeof(int)); lukutaulu[10] = 34; free(lukutaulu); C++:ssa new int[] lukutaulu; lukutaulu = new int[50]; lukutaulu[10] = 34; delete[] lukutaulu; A Ohjelmointikielten periaatteet, Muuttujat 51
52 IV Moniulotteiset taulukot Tarvitaan useampia indeksejä viittaamaan taulukon alkioihin Yleensä tarkoittaa sitä että taulukon ensimmäisen indeksin alkiot (n-1) ulotteisia taulukoita jne. Esimerkki: Pascalissa ARRAY[1..6,3..21,0..3] OF INTEGER on sama kuin ARRAY[1..6] OF ARRAY[3..21] OF ARRAY[0..3] OF INTEGER Yleensä dimensioille ei ylärajaa A Ohjelmointikielten periaatteet, Muuttujat 52
53 IV Taulukko-operaatiot Yleensä kielissä ei juuri operaatioita, jotka käsittelevät taulukkoa itsenäisenä yksikkönä Tavallisesti toteutettu kirjastofunktioina tai sisällytetty luokkakirjastoihin FORTRAN 90: Sisältää taulukko-operaatioita, esimerkiksi taulukkojen summan (alkioittain) Ada: Mahdollista viitata taulukon osiin indeksirajoilla -> voidaan käsitellä matriisin rivejä tai sarakkeita vektoreina A Ohjelmointikielten periaatteet, Muuttujat 53
54 IV Taulukko-operaatiot (2) APL Laaja kokoelma kieleen rakennettuja vektori- ja matriisioperaatioita Suunniteltu tällaisten tehtävien ohjelmoimiseen Sisältää operaattorit mm. matriisin transponointiin, käänteismatriisin etsimiseen, vektoreiden piste- ja ristituloille A Ohjelmointikielten periaatteet, Muuttujat 54
55 IV Tietueet (records) Erityyppisten tietoalkioiden kooste, jossa tiettyyn alkioon eli kenttään (field) viitataan sen nimellä Muodostetaan loogisia kokonaisuuksia, jotka koostuvat erilaisista tietoalkioista Aiemmin sisältynyt kaikkiin yleisiin kieliin Paitsi FORTRANiin Oliokielissä ei tarvetta (C++:ssa mukana) Muisti varataan peräkkäisistä muistipaikoista Yleisarvio: Käyttökelpoisia tietotyyppejä Toteutus varsin suoraviivainen eikä sisällä ongelmia yleensä missään ohjelmointikielessä A Ohjelmointikielten periaatteet, Muuttujat 55
56 IV Tietueet (2) Esimerkki. C-kielessä määrittely struct Asiakas { }; char nimi[25]; int tilinro; esittely ja käyttö (varataan pinosta): struct Asiakas a; strcpy(a.nimi,"huijari"); a.tilinro = 21; varataan dynaamisesti : struct Asiakas* pa; pa = malloc( sizeof(struct Asiakas)); strcpy(pa->nimi,"huijari"); pa->tilinro = 21; A Ohjelmointikielten periaatteet, Muuttujat 56
57 IV Unioni Vastaa tietotyyppien unionia Muuttujassa vain yksi kenttä, joka voi olla tyypiltään jokin annetuista tietotyypeistä -> muuttujan sisältämä tiedon tyyppi voi vaihdella ohjelman suorituksen aikana Käyttö voi olla hyödyllistä esimerkiksi kirjoitettaessa koodia, jonka on tarkoitus toimia eri ympäristöissä Esim. kokonaisluku voi olla 16-, 32- tai 64-bittinen Voidaan kirjoittaa koodia, jossa tehdään eistandardimaisia tyypinmuunnoksia -> Riski: voi aiheuttaa monia ongelmatilanteita A Ohjelmointikielten periaatteet, Muuttujat 57
58 IV Unioni (2) Tyypintarkistusta tyyppiin liitettävä tietokenttä, jonka perusteella päätellään, mikä kulloinkin talletettu tyyppi Valitsinkenttä (tag field, discriminant) C ja C++ -kielissä ns. vapaa unioni (free union). Ei valitsinkenttää kertomassa, minkä tyyppinen tieto on tallennettu muuttujaan Muuttujalle varataan tila suurimman mahdollisen tietotyypin mukaan Ei tyypintarkistusta -> ohjelmoija vapaa muuntamaan tietotyypin miksi tahansa vaihtoehdoista Ongelmien vuoksi jätetty toteuttamatta monissa kielissä Esim. Java, C# A Ohjelmointikielten periaatteet, Muuttujat 58
59 IV Joukkotyyppi (set) Tyypin muuttujat voivat sisältää järjestämättömän kokoelman jonkin ordinaalityypin muuttujan erillisiä arvoja -> mallinnetaan matemaattista joukkoa Yleisistä (imperatiivisista) ohjelmointikielistä ainoastaan Pascalissa Kirjastoluokkana mm. C++:ssa, C#:ssa, Javassa, Pythonissa A Ohjelmointikielten periaatteet, Muuttujat 59
60 IV.1.8. Osoitintyyppi (pointer type) Muuttujien arvot muistiosoitteiden arvoja ja lisäksi erityinen arvo null (tai nil) Muuttujia kutsutaan yleensä osoittimiksi (pointers) Tarvitaan käsittelemään dynaamisia muuttujia ja erityisesti dynaamisia tietorakenteita Lähes kaikissa imperatiivisissa ohjelmointikielissä mahdollista käyttää osoittimia Poikkeus FORTRAN: tietorakenteiden käsittely hankalaa A Ohjelmointikielten periaatteet, Muuttujat 60
61 IV.1.8. Osoitintyyppi (2) Muuttuja sisältää muistiosoitteen -> muuttujana aina saman tyyppinen Ohjelmoinnin kannalta tiedettävä osoitinmuuttujan tarkoitetyyppi (reference type) = minkälaiseen muuttujaan osoittaa Muuttuja, johon osoitinmuuttujan arvo kulloinkin viittaa, on sen tarkoitemuuttuja Osoitinmuuttuja voi viitata mihin tahansa tietotyyppiin, myös toiseen osoittimeen A Ohjelmointikielten periaatteet, Muuttujat 61
62 IV.1.8. Osoitintyyppi (3) Osoitin esitellään kirjoittamalla tarkoitetyyppi ja sen jälkeen tyyppioperaattori ennen muuttujan nimeä C/C++ -kielessä * Pascalissa ^ Adassa access A Ohjelmointikielten periaatteet, Muuttujat 62
63 IV Osoittimien tärkeimmät operaatiot 1. Sijoitus (assignment) *x++=*y++ Sijoittaa osoitinmuuttujan arvoksi jonkin muistipaikan 2. Muistipaikan sisältöön viittaaminen (viittauksen purkaminen, dereferencing) Toteutetaan yleensä jollakin sisältö-operaattorilla 3. Muuttujien vertailu, ts. sen vertaaminen osoittavatko ne samaan muistipaikkaan Pascalissa ainoat sallitut operaatiot osoittimille A Ohjelmointikielten periaatteet, Muuttujat 63
64 IV C/C++ -kielten osoittimet Voi käyttää hyvin monipuolisesti -> ohjelmoijalle monenlaisia mahdollisuuksia, mutta virheellinen käyttö helppoa Muuttujan muistiosoite voidaan selvittää ja sijoittaa osoitinmuuttujaan, esimerkiksi int muuttuja = 20; int *pm; pm = &muuttuja; *pm = 55; // Nyt muuttuja == A Ohjelmointikielten periaatteet, Muuttujat 64
65 IV C/C++ -kielten osoittimet (2) C-kielessä tyypintarkistus väljä: float f = ; int *pif; float *pf; pif = &f; pf = pif; C:ssä sallittu, mutta ei C++ :ssa A Ohjelmointikielten periaatteet, Muuttujat 65
66 IV C/C++ -kielten osoittimet (3) Osoitinaritmetiikka sallittu Jos ptr on osoitintyypin muuttuja, ptr+1 osoittaa seuraavan tarkoitetietotyypin muuttujan osoitteeseen. Esimerkiksi: char* ptr; -> ptr+1 osoittaa seuraavaan tavuun int* ptr; -> ptr+1 osoittaa neljän tavun päähän C/C++ -kielissä geneerinen osoitintyyppi void* voi osoittaa minkätyyppiseen muuttujaan tahansa A Ohjelmointikielten periaatteet, Muuttujat 66
67 IV C/C++ -kielten osoittimet (4) *x++=*y++ Esimerkki. Taulukon läpikäynti osoittimilla C/C++:ssa char c; int ki; double rl; int index; char merkit[4] = {'a','b','c','d'}; int kokoluvut[4] = {1,2,3,4}; double rluvut[4] = {1.1,2.2,3.3,4.4}; char* pc = merkit; int* pi = kokoluvut; double* pd = rluvut; for(index=0;index < 4; index++) { c = *(pc + index); ki = *(pi + index); rl = *(pd + index); printf("merkki on %c, kokonaisluku on %d, reaaliluku on %e\n", c,ki,rl); } A Ohjelmointikielten periaatteet, Muuttujat 67
68 IV Osoitintyypin ongelmia 1. Moninimisyys Seuraa väistämättä osoittimien sallimisesta Osoittimet voidaan asettaa osoittamaan samaan muistipaikkaan Katsotaan yleensä haitallisiksi 2. Roikkuvat osoittimet Osoittavat jo vapautettuun muistiin Käytettäessä arvo satunnainen Voi johtaa hankalasti löydettäviin virheisiin A Ohjelmointikielten periaatteet, Muuttujat 68
69 IV Osoitintyypin ongelmia (2) 3. Muistivuoto (memory leakage) Ohjelmassa varattua dynaamista muistia ei vapauteta Syntyy usein hävittämällä viite dynaamiseen muuttujaan Voi johtaa kekomuistin loppumiseen ja ohjelman kaatumiseen Osoitintyypin virheet yleisimpien C/C++ -ohjelmien virheiden joukossa A Ohjelmointikielten periaatteet, Muuttujat 69
70 IV Viitetyyppi (reference type) Osoitintyypin muuttujien ongelmallisuuden takia ainakin Javassa ja C#:ssa luovuttu niistä ja korvattu viitteillä Aluksi C++ -kieleen lähinnä toteuttamaan viitetyypin parametrinvälitys funktioille Viitetyypin muuttujan avulla voidaan luoda muuttujalle alias A Ohjelmointikielten periaatteet, Muuttujat 70
71 IV Viitetyyppi (2) C++ -kielen viite: vakio-osoitin, jolle tehdään implisiittinen muistiosoitteeseen viittaaminen On vakio -> alustettava jollakin muistiosoitteen arvolla, viittaa samaan muistiosoitteeseen koko elinaikansa Esimerkki float f; float &ref_f = f; tekee muuttujista f ja ref_f aliaksia -> sijoituslause ref_f = 2.78; sijoittaa muuttujan f arvoksi A Ohjelmointikielten periaatteet, Muuttujat 71
72 IV Viitetyyppi (3) Java yleistänyt viitemuuttujan tyyppiä -> osoittimet voitu korvata viitteillä Kaikki luodut oliot Javassa varataan dynaamisesti kekomuistista, olion nimi on viite olioon Osoitinaritmetiikka ei sallittua Eivät ole vakio-osoittimia, viite voidaan asettaa osoittamaan toiseenkin olioon Muistivuotojen estämiseksi Javassa roskien keruu (garbage collection) huolehtii siitä, että oliot vapautetaan, kun niihin ei enää ole viittauksia A Ohjelmointikielten periaatteet, Muuttujat 72
Muuttujat imperatiivisissa ohjelmointikielissä
Muuttujat imperatiivisissa ohjelmointikielissä Seuraavaksi keskitytään nykyään valta-asemassa oleviin, imperatiivisiin ohjelmointikieliin. Tässä dokumentissa perehdytään keskeiseen muuttujan käsitteeseen
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,
LisätiedotOhjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU
Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double
LisätiedotTietueet. Tietueiden määrittely
Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään
Lisätiedot815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
Lisätiedot11/20: Konepelti auki
Ohjelmointi 1 / syksy 2007 11/20: Konepelti auki Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/11 Tämän luennon
LisätiedotOhjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.
Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan
LisätiedotJava-kielen perusteet
Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet
LisätiedotTietorakenteet 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ätiedotTieto- ja tallennusrakenteet
Tieto- ja tallennusrakenteet Sisältö Tyyppi, abstrakti tietotyyppi, abstraktin tietotyypin toteutus Tallennusrakenteet Taulukko Linkitetty rakenne Abstraktit tietotyypit Lista (Puu) (Viimeisellä viikolla)
LisätiedotChapel. 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ätiedotOlion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();
Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio
Lisätiedot815338A Ohjelmointikielten periaatteet
815338A Ohjelmointikielten periaatteet 2015-2016 IV.3 Imperatiivinen ohjelmointi aliohjelmat Sisältö 1. Yleistä aliohjelmista 2. Proseduurit ja funktiot 3. Parametrien välittäminen 4. Taulukon välittäminen
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
LisätiedotSisä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ätiedotDynaaminen 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ätiedotJAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?
JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,
LisätiedotYleistä. 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ätiedotSisä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ätiedot6. 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ätiedot7. 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ätiedotOsoitin 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ätiedot1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on
1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on esiteltävä. char ch; int count=1; struct complex float re, im; complex z; complex sqrt( complex );
LisätiedotOhjelmointi 1 Taulukot ja merkkijonot
Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko
LisätiedotSisä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ätiedotRakenteiset 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ätiedot7/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ätiedotSisä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ätiedotAS-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ätiedotOhjelmointikieli TIE Principles of Programming Languages Syksy 2017 Ryhmä 19
Ohjelmointikieli TIE-20306 Principles of Programming Languages Syksy 2017 Ryhmä 19 Juho Kärnä Ville Mäntysaari 1. Johdanto D on yleiskäyttöinen, strukturoitu, staattisesti tyypitetty, käännettävä ohjelmointikieli
LisätiedotSisä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ätiedotOsoittimet 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ätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero
LisätiedotDynaaminen 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ätiedot815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä
LisätiedotD-OHJELMOINTIKIELI. AA-kerho, 33. Antti Uusimäki. Arto Savolainen
D-OHJELMOINTIKIELI AA-kerho, 33 Antti Uusimäki Arto Savolainen 2 D-OHJELMOINTIKIELI D-kielen historia alkaa vuodesta 1999, kun Walter Bright aloitti uuden ohjelmointikielen kehittämisen. Ensimmäinen versio
LisätiedotTaulukot. 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ätiedotSisä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ätiedot6. 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ätiedotsamalla seuraavaan puoliavaruuteen (sukupolveen), jota siivotaan harvemmin.
3.2. OLIOT 31 Myös tästä menetelmästä on olemassa muunnelmia, jotka pyrkivät vähentämään yksittäisen pysähdyksen pituutta. Nämä ovat niinsanottuja ikäperustaisia (generational) menetelmiä, joissa muisti
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 3: Funktiot 4.3 Funktiot Olkoot A ja B joukkoja. Funktio joukosta A joukkoon B on sääntö, joka liittää yksikäsitteisesti määrätyn
LisätiedotTyypit (eri näkökulmia)
Tyypit (eri näkökulmia) Tyypit arvojen joukkona tyyppi kerää yhteen erilaiset primitiiviarvot (kokonaisluvut, liukuluvut) oleellista arvojen esitystapa tietokoneessa Tyyppien rakentaminen skalaarityypit
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
Lisätiedot2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.
Proseduurit Proseduuri voi olla 1) Funktio, joka palauttaa jonkin arvon: real function sinc(x) real x sinc = sin(x)/x... y = sinc(1.5) 2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma
Lisätiedottietueet eri tyyppisiä tietoja saman muuttujan arvoiksi
tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi ero taulukkoon taulukossa alkiot samantyyppisiä tietueessa alkiot voivat olla erityyppisiä tiedot kuitenkin yhteen kuuluvia ohjelmoinnin perusteet,
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava
LisätiedotRuby. Tampere University of Technology Department of Pervasive Computing TIE Principles of Programming Languages
Tampere University of Technology Department of Pervasive Computing TIE-20306 Principles of Programming Languages Ruby Ryhmä 8 Juho Rintala Sami Paukku Sisällysluettelo 1 Johdanto... 3 2 Paradigma... 3
LisätiedotJakso 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ätiedot12. 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ätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.
LisätiedotLyhyt kertaus osoittimista
, syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä
812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus
Lisätiedotlausekkeiden 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ätiedotC-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ätiedotKielioppia: 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ätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu
LisätiedotTietotyypit ja operaattorit
Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto
LisätiedotPerusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti
C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Merkintöjen tulkintoja *++Pstack->top = item *Pstack->top++ = item (*Pstack->top)++ *(Pstack++)->top = item *(++Pstack)->top = item Lisää pinon toteutuksia Dynaaminen taulukko
LisätiedotTIEP114 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ätiedot815338A Ohjelmointikielten periaatteet
815338A Ohjelmointikielten periaatteet 2015-2016 I Johdanto Sisältö 1. Ohjelmointikielen määritelmä 2. Syitä tutkia ohjelmointikieliä 3. Ohjelmointiparadigmat 4. Suunnittelu- ja arviointikriteerit 5. Suunnitteluun
Lisätiedot815338A Ohjelmointikielten periaatteet 2014-2015
815338A Ohjelmointikielten periaatteet 2014-2015 X Skriptiohjelmointi Sisältö 1. Johdanto 2. Skriptikielten yleispiirteitä 3. Python 815338A Ohjelmointikielten periaatteet, Skriptiohjelmointi 2 X.1 Johdanto
LisätiedotTIES542 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ätiedotLuento 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ätiedotAliohjelmatyypit (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ätiedotMuistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa
ssa ohjelman käytössä suoritusaikana oleva muisti jakautuu neljään osaan: koodisegmentti datasegmentti pinosegmentti (stack) kasa (heap) ssa ohjelman koodisegmentti sisältää käännetyn ohjelmakoodin sisältö
LisätiedotITKP102 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ätiedotAlgebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tällä luennolla Algebralliset tietotyypit Hahmonsovitus (pattern matching) Primitiivirekursio Esimerkkinä binäärinen hakupuu Muistattehan...
LisätiedotTieto ja sen osoite (3) Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Osoitinmuuttujat. Tieto ja sen osoite (5)
Jakso 3 Konekielinen ohjelmointi (TTK-91, KOKSI) Muuttujat Tietorakenteet Kontrolli Optimointi Tarkistukset 1 Tieto ja sen osoite (3) X DC LOAD, =X LOAD R2, X int x =; symbolin X arvo muuttujan X arvo
LisätiedotOhjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka
LisätiedotPerusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti
C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin
LisätiedotKääreluokat (oppikirjan luku 9.4) (Wrapper-classes)
Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi
Lisätiedottään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla
2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
Lisätiedot13. Loogiset operaatiot 13.1
13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.
Lisätiedot1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.
EVTEK Teknillinen ammattikorkeakoulu Ohjelmointi (C) T0004 Syksy 2003 Olli Hämäläinen kurssin sisältö ja tavoitteet työmuodot luennot 1-2/2003 laboratorioharjoitukset 1-2/2003 kotitehtävät, laboratoriokerrat
LisätiedotTIEP114 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ätiedotOlio-ohjelmointi Javalla
1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi
Lisätiedot18. Abstraktit tietotyypit 18.1
18. Abstraktit tietotyypit 18.1 Sisällys Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:
LisätiedotOlio-ohjelmointi Syntaksikokoelma
C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja
LisätiedotC-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys
Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa,
LisätiedotAlgoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
LisätiedotOperaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta
C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus
LisätiedotTIE448 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ätiedotELM 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ätiedotJakso 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ätiedotLuento 4 (verkkoluento 4) Aliohjelmien toteutus
Luento 4 (verkkoluento 4) Aliohjelmien toteutus Tyypit, Parametrit Aktivointitietue (AT) AT-pino, rekursio 1 Aliohjelmatyypit Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri Parametrit
Lisätiedotsama 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ätiedot815338A Ohjelmointikielten periaatteet
815338A Ohjelmointikielten periaatteet 2015-2016 V Abstraktit tietotyypit ja olioohjelmointi Sisältö I. Abstraktit tietotyypit II. 1. Johdatus abstrakteihin tietotyyppeihin 2. Abstraktit tietotyypit Adassa
LisätiedotAlkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)
Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,
LisätiedotSisällys. 15. Lohkot. Lohkot. Lohkot
Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet
Lisätiedot12. 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ätiedotLuento 4 (verkkoluento 4) Aliohjelmien toteutus
Luento 4 (verkkoluento 4) Aliohjelmien toteutus Tyypit, Parametrit Aktivaatiotietue (AT) AT-pino, rekursio 1 Aliohjelmatyypit Korkean tason ohjelmointikielen käsitteet aliohjelma, proseduuri Parametrit
Lisätiedot20. Javan omat luokat 20.1
20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)
LisätiedotSisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang
Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)
LisätiedotC++ Kuva 1-1. C- ja C++ kielien perustana olevat kielet.
1. JOHDANTO C-kieli on perustana useille muille ohjelmointikielille. Esimerkiksi C++-kieli on kehitetty C- kielestä, Java- ja C#-kielen syntaksin perustana on toiminut C-kieli ja useat muutkin ohjelmointikielet
Lisätiedot17. Javan omat luokat 17.1
17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)
LisätiedotLohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3
15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet
Lisätiedot