TTY Ohjelmointi I & II C++-kirjastoreferenssi versio 2.2

Koko: px
Aloita esitys sivulta:

Download "TTY Ohjelmointi I & II C++-kirjastoreferenssi versio 2.2"

Transkriptio

1 TTY Ohjelmointi I & II C++-kirjastoreferenssi versio 2.2 Copyright Ari Suntioinen aps@cs.tut.fi #include <cstdlib> int EXIT_SUCCESS main-funktion paluuarvo int EXIT_FAILURE ok- ja virhetilanteessa. int RAND_MAX Katso rand( ). kokonaislukutyyppi abs(kokonaislukutyyppi) Itseisarvo tyypeistä int ja long int. void exit(int) Ohjelman keskeytys exit-statuksena int. void srand(unsigned) Satunnaislukugeneraattorin alustus siemenluvulla unsigned. int rand( ) Satunnaisluku väliltä 0 RAND_MAX #include <cctype> int isalpha(char) Onko char kirjainmerkki A Z tai a z. int isdigit(char) Onko char numeromerkki 0 9. int isspace(char) Onko char sanaerotin, \n, \r tai \t. int iscntrl(char) Onko char kontrollimerkki. int isprint(char) Onko char tulostuva merkki, siis käytännössä sama kuin!iscntrl(char ) int ispunct(char) Onko char välimerkki eli tulostuva merkki, joka ei ole kirjain, numero tai sanaerotin. int islower(char) Onko char pieni kirjain. int isupper(char) Onko char iso kirjain. char tolower(char) char muutettuna pieneksi kirjaimeksi, jos mahdollista. char toupper(char) char muutettuna isoksi kirjaimeksi, jos mahdollista. Funktioiden isalpha, islower, isupper, tolower ja toupper toiminta skandinaavisilla kirjaimilla riippuu asetuksista. Oletusarvoisesti eivät toimi. #include <cmath> double abs(double) double double sqrt(double) double double pow(double 1, double 2 ) double double 2 1 double exp(double) e double double log(double) ln double double log10(log) log 10 double double sin(double) sin double double cos(double) cos double double tan(double) tan double double asin(double) sin -1 double double acos(double) cos -1 double double atan(double) tan -1 double double ceil(double) Pienin kokonaisarvo joka ei ole pienempi kuin double. double floor(double) Suurin kokonaisarvo joka ei ole suurempi kuin double. Trigonometrisissa funktioissa kulmat esitetään ja palautetaan radiaaneina. #include <limits> numeerinen_tyyppi numeric_limits<numeerinen_tyyppi>::min() Pienin mahdollinen arvo, joka voidaan esittää tietotyypillä numeerinen_tyyppi. numeerinen_tyyppi numeric_limits<numeerinen_tyyppi>::max() Suurin mahdollinen arvo, joka voidaan esittää tietotyypillä numeerinen_tyyppi. #include <string> string: :size_type Tietotyyppi jolla voidaan esittää merkkijonojen pituuksia ja indeksejä. string s Alustettu tyhjäksi. string s(string) Alustettu samaksi kuin string. string s(const char * ) Alustus C-merkkijonolla. string s(int, char) int merkkiä pitkä merkkijono, jonka kaikki merkit alustettu arvoon char. string: :iterator Nämä ja muut iteraattorityypit käyttäytyvät kuten string: :const_iterator kohdassa Iteraattorit on esitetty. string: :size_type string: :npos find-funktioiden paluuarvo, mikäli etsittyä alimerkkijonoa ei löydy. string[int] string 1 = string 2 string = char string 1 += string 2 string += char string 1 + string 2 string + char char + string string 1 == string 2 string 1! = string 2 string 1 < string 2 string 1 <= string 2 string 1 > string 2 string 1 >= string 2 ostream << string istream >> string Merkkijonon indeksointi kohdasta int. Jäsenfunktio at(int ) on yleensä turvallisempi vaihtoehto. void swap(string 1, string 2 ) Vaihda muuttujien string 1 ja string 2 arvot. istream getline(istream, string) istream getline(istream, string, char) Lue syötevirrasta istream rivillinen tekstiä tai kunnes tulee vastaan merkki char ja talleta luettu teksti merkkijonoon string. char at(int) Merkkijonon indeksointi kohdasta int. Voi olla sijoitusoperaattorin vasemmalla puolella. string: :size_type length( ) Merkkijonon pituus. bool empty( ) true, jos merkkijono on tyhjä, false jos ei. Tyhjentää merkkijonon. string erase( ) Tyhjentää merkkijonon. string erase(int) Tuhoaa kaikki merkit alkaen indeksistä int. string erase(int 1, int 2 ) Tuhoaa int 2 merkkiä alkaen merkistä int 1. string append( string) Liittää merkkijonon string merkit loppuun. string insert(int, string) Lisää merkkijonon string merkit kohtaan int. string replace(int 1, int 2, string) Korvaa kohdasta int 1 alkaen int 2 merkkiä merkkijonolla string. string substr(int) Palauttaa lopun merkkijonon alkaen indeksistä int. string substr(int 1, int 2 ) Palauttaa indeksistä int 1 alkavan int 2 pituisen alimerkkijonon. const char* c_str( ) Konversio C-merkkijonoksi. string: :size_type find(char, int =0) string: :size_type find(string, int =0) Etsitään merkkiä char tai alimerkkijonoa string alkaen indeksistä int. Paluuarvo löytyneen kohdan indeksi tai string: :npos, jos ei löytynyt. string: :size_type rfind(...) Kuten find edellä, mutta etsintä tapahtuu merkkijonon lopusta alkua kohti. iteraattori begin( ) Nämä ja muut iteraattorifunktiot toimivat kuten iteraattori end( ) kohdassa Iteraattorit on esitetty.

2 #include <iostream> Standardivirrat cin cout cerr #include <fstream> Rakentajat ifstream muuttuja Ei alustusta. Katso open( ). ifstream muuttuja(const char * ) Avataan tiedosto luettavaksi. ofstream muuttuja Ei alustusta. Katso open( ). ofstream muuttuja(const char * ) Avataan tiedosto kirjoitettavaksi. Tyhjennetään jos olemassa jo entuudestaan. fstream muuttuja Ei alustusta. Katso open( ). fstream muuttuja(const char *, avaustapa) Avataan tiedosto. Se mitä tiedostolle voi tehdä, riippuu parametrista avaustapa. Katso kohdasta. ios::in ios::out ios::app ios::trunc ios::binary Avataan luettavaksi. Avataan kirjoitettavaksi. Kaikki kirjoittaminen tapahtuu tiedoston loppuun. Tyhjennetään tiedosto, jos ennestään olemassa. Tiedosto on binääritiedosto. Ei merkitystä UNIX-systeemeissä, mutta esim. Windows erittelee teksti- ja binääritiedostot. avaustapa voi olla myös mikä tahansa järkevä yhdistelmä edellisiä. Yhdistäminen tapahtuu binäärisellä tai-operaattorilla. Esimerkiksi ios::in ios::out ios::binary avaa tiedoston sekä luettavaksi että kirjoitettavaksi binäärimuodossa. void open(const char * ) void open(const char *, avaustapa) Tiedoston avaaminen. Tilanteissa joissa rakentaja ei riitä. void close( ) Sulkee tiedoston/tietovirran. #include <sstream> Rakentajat istringstream muuttuja(string) Mahdollistaa merkkijonosta string lukemisen tietovirran avulla. ostringstream muuttuja Virtaan tehtyjen tulostusoperaatioiden tulos saadaan merkkijonona. void str(string) string str( ) #include <iomanip> Tulostusasun muokkaus Asettaa virran luku- tai kirjoitusmerkkijonon arvoon string. Palauttaa luku- tai kirjoitusmerkkijonon sisällön. ostream << left Tulostus kentän vasempaan laitaan. ostream << right Tulostus kentän oikeaan laitaan. ostream << setw(int ) Tulostuskentän leveydeksi int. ostream << setfill(char ) Tulostuskentän mahdollinen ylimääräinen tila täytetään merkillä char. ostream << setprecision( int ) Reaalilukujen tulostustarkkuudeksi int. ostream << fixed setprecision(int ) -ohjeessa int tulkitaan desimaalien lukumääräksi. Yhteistä kaikille syötevirroille streampos int EOF ios::beg ios::cur ios::end istream Tietotyyppi lukukohtien esittämiseen. Joidenkin funktioiden paluuarvo, kun tietovirta on luettu loppuun. Katso kohta jäsenfunktiot. seekg(int, seekpos) -kutsussa seekpos-parametrin mahdolliset arvot. Kertoo tulkitaanko int-parametri suhteellisena tiedoston alkuun, tämänhetkiseen lukukohtaan vai virran loppuun. Tietovirtaa voi käyttää sinällään ehtolausekkeena. "Tosi", jos viimeisin virralle tehty operaatio onnistui.! istream Edellisen komplementti. istream >> muuttuja Luetaan arvo virrasta istream muuttujaan muuttuja. istream getline(istream, string) istream getline(istream, string, char) Katso kohdasta #include <string> int get( ) Lukee ja palauttaa yhden merkin virrasta. Virran loputtua paluuarvo EOF. istream get(char) Lukee virrasta yhden merkin parametriin char. int peek( ) Kuten get( ), mutta merkkiä ei poisteta virrasta. istream ignore(int) Hyppää yli virran int seuraavaa merkkiä. istream ignore(int, char) Hyppää yli virran int seuraavaa merkkiä tai kunnes vastaan tulee ensimmäinen merkki char. bool eof( ) true jos virtaa on yritetty lukea ohi lopun. Asettaa virran normaaliin (ehkä) lukukelpoiseen tilaan virhetilanteen jälkeen. streampos tellg( ) Palauttaa tämänhetkisen lukukohdan. istream seekg( streampos) Asettaa lukukohdan paikkaan streampos. istream seekg( int, seekpos) Asettaa lukukohdan paikkaan int suhteessa parametriin seekpos. Katso kohta vakiot. Yhteistä kaikille tulostusvirroille streampos ios::beg ios::cur ios::end ostream Tietotyyppi kirjoituskohtien esittämiseen. seekp(int, seekpos) -kutsussa seekpos-parametrin mahdolliset arvot. Kertoo tulkitaanko int-parametri suhteellisena tiedoston alkuun, tämänhetkiseen kirjoituskohtaan vai virran loppuun. Tietovirtaa voi käyttää sinällään ehtolausekkeena. "Tosi", jos viimeisin virralle tehty operaatio onnistui.! ostream Edellisen komplementti. ostream << arvo Kirjoita arvo virtaan ostream. ostream << endl Kirjoita rivinvaihto virtaan ostream. ostream put(char) Kirjoittaa virtaan merkin char. Asettaa virran normaaliin (ehkä) kirjoituskelpoiseen tilaan virhetilanteen jälkeen. streampos tellp( ) Palauttaa tämänhetkisen kirjoituskohdan. ostream seekp(streampos) Asettaa kirjoituskohdan paikkaan streampos. ostream seekp(int, seekpos) Asettaa kirjoituskohdan paikkaan int suhteessa parametriin seekpos. Katso kohta vakiot.

3 Iteraattorit Jokaiselle STL-säiliölle on määritelty joukko iteraattorityyppejä, jotka mahdollistavat rakenteen läpikäynnin ja yksittäisiin alkioihin viittaamisen. säiliötyyppi<alkiotyyppi>: :iterator säiliötyyppi<avaintyyppi, infotyyppi>: :iterator Iteraattorit, jotka mahdollistavat iteraattorin osoittaman informaation modifioinnin, sikäli kun se on mielekästä (ei set-rakenteen eikä map-rakenteen avainkentän). säiliötyyppi<alkiotyyppi>: :const_iterator säiliötyyppi<avaintyyppi, infotyyppi>: :const_iterator Iteraattorit, jotka eivät salli informaation modifiointia: voidaan käyttää const-tietorakenteilla. säiliötyyppi<alkiotyyppi>: :reverse_iterator säiliötyyppi<avaintyyppi, infotyyppi>: :reverse_iterator säiliötyyppi<alkiotyyppi>: :const_reverse_iterator säiliötyyppi<avaintyyppi, infotyyppi>: :const_reverse_iterator Käänteisiteraattoreiden idea sama kuin edellä, mutta ne käyvät säiliön alkiot läpi lopusta alkuun-järjestyksessä. iteraattorien luontiin Kaikki STL-säiliöt tarjoavat jäsenfunktiot, joiden avulla voidaan luoda iteraattori, joka osoittaa säiliön ensimmäiseen alkioon tai säiliön loppuun. iteraattori begin( ) Iteraattori säiliön alkuun. iteraattori end( ) Iteraattori säiliön loppuun. käänteisiteraattori rbegin( ) Käänteisiteraattori säiliön loppuun. käänteisiteraattori rend( ) Käänteisiteraattori säiliön alkuun. Jos halutaan, että säiliöön iteraattorin avulla tehdyt muutokset lisäävät alkioita sen sijaan, että muutetaan vanhoja arvoja, voidaan käyttää lisäysiteraattoreita. lisäysiteraattori front_inserter(säiliö) Alkiot lisätään säiliön säiliö alkuun. lisäysiteraattori back_inserter(säiliö) Alkiot lisätään säiliön säiliö loppuun. lisäysiteraattori inserter(säiliö, iteraattori ) Lisäys säiliön säiliö kohtaan, johon iteraattori osoittaa. Huom! Lisäysiteraattoreita luovat funktiot eivät ole jäsenfunktioita. jotka ovat yhteisiä STL-säiliöitä käsitteleville iteraattoreille. * iteraattori Arvoksi evaluoituu tietoalkio, johon iteraattori osoittaa. Voi olla sijoitusoperaattorin vasen operandi, mikäli se on järkevää (ei set- eikämap-rakenteen avainkenttä). iteraattori > kenttä Jos iteraattori osoittaa struct- taiclass-tyyppiseen alkioon, sen kenttä-osatietoon päästään suoraan käsiksi. Voi olla sijoituksen kohde, mikäli se on järkevää. iteraattori 1 = iteraattori 2 Kopioi iteraattorin arvon toiseen saman tyyppiseen iteraattoriin. ++iteraattori Siirtää iteraattorin osoittamaan säiliön seuraavaan iteraattori tai edelliseen alkioon. iteraattori 1 == iteraattori 2 Vertailee osoittavatko iteraattorit samaan iteraattori 1! = iteraattori 2 vai eri alkioon säiliön sisällä. Lisäksi seuraavat operaattorit toimivat vector- jadeque-rakenteita käsitteleville iteraattoreille ja käytettäessä osoittimia iteraattorien tavoin. iteraattori += int Siirtää iteraattorin iteraattori osoittamaan iteraattori = int int alkiota eteenpäin/taaksepäin. iteraattori + int Arvoksi evaluoituu iteraattori, joka osoittaa int alkiota iteraattori int eteenpäin/taaksepäin iteraattorista iteraattori. iteraattori 1 iteraattori 2 Kuinka kaukana iteraattorien iteraattori 1 ja iteraattori 2 osoittamat alkiot ovat toisistaan. iteraattori 1 < iteraattori 2 Iteraattorien iteraattori 1 ja iteraattori 2 osoittamien iteraattori 1 > iteraattori 2 alkioiden sijainnin (indeksi) vertailuoperaattorit. iteraattori 1 <= iteraattori 2 iteraattori 1 >= iteraattori 2 #include <vector> vector<alkiotyyppi>: :size_type Tietotyyppi jolla voidaan esittää vektoreiden kokoja. vector<alkiotyyppi> muuttuja Tyhjä vektori. vector<alkiotyyppi> muuttuja(vector<alkiotyyppi>) Alustus toisella vektorilla. vector<alkiotyyppi> muuttuja(int) Koko int alkiota, jotka alustettu oletusrakentajalla. vector<alkiotyyppi> muuttuja(int, alkiotyyppi) Koko int alkiota, joiden kaikkien arvona alkiotyyppi. vector<alkiotyyppi> muuttuja(iteraattori b, iteraattori e ) Alustus jossain toisessa säiliössä avoimella välillä [iteraattori b, iteraattori e ) olevilla arvoilla. vector[int] Vektorin indeksointi kohdasta int. Jäsenfunktio at(int ) on yleensä turvallisempi vaihtoehto. vector 1 = vector 2 Sijoitus. vector 1 == vector 2 Vertailu. vector 1! = vector 2 vector 1 < vector 2 vector 1 <= vector 2 vector 1 > vector 2 vector 1 >= vector 2 alkiotyyppi at(int) Vektorin indeksointi kohdasta int. Voi olla sijoitusoperaattorin vasemmalla puolella. alkiotyyppi front( ) Ensimmäinen alkio. alkiotyyppi back( ) Viimeinen alkio. vector<alkiotyyppi>: :size_type size( ) Alkoiden lukumäärä. bool empty( ) true jos vektori on tyhjä, muutoin false. void swap(vector<alkiotyyppi>) Vaihtaa kahden vektorin sisällöt keskenään. void push_back(alkiotyyppi) Arvo alkiotyyppi lisätään vektorin viimeiseksi alkioksi. Vektorin koko kasvaa yhdellä. void pop_back( ) Vektorin viimeinen alkio poistetaan. Vektorin koko pienenee yhdellä. Tyhjennetään vektori kaikista alkioista. void resize(int) Kasvattaa tai pienentää vektorin alkioiden lukumääräksi int. Jos koko kasvaa, uudet alkiot on alustettu oletusrakentajalla. void resize(int, alkiotyyppi) Kuten edellinen, mutta mahdolliset lisätyt alkiot on alustettu arvolla alkiotyyppi. iteraattori p insert(iteraattori i, alkiotyyppi) Lisää arvon alkiotyyppi parametrin iteraattori i osoittamaan paikkaan. Vektorin koko kasvaa yhdellä. Paluuarvo iteraattori p osoittaa lisättyyn alkioon. void insert(iteraattori i, int, alkiotyyppi) Lisää int kappaletta arvoja alkiotyyppi kohtaan iteraattori i. Vektorin koko kasvaa parametrin int verran. void insert(iteraattori i, iteraattori b, iteraattori e ) Lisää kohtaan iteraattori i kaikki avoimella välillä [iteraattori b, iteraattori e ) olevat arvot. Vektorin koko kasvaa lisättyjen alkioiden lukumäärän verran. Huom! Tarkoitus on, että iteraattori b ja iteraattori e ovat iteraattoreita eri säiliöön kuin iteraattori i. iteraattori p erase(iteraattori i ) Poistaa vektorista alkion kohdasta iteraattori i. Vektorin koko pienenee yhdellä. Paluuarvo iteraattori p osoittaa poistettua alkiota seuranneeseen alkioon. iteraattori p erase(iteraattori b, iteraattori e ) Poistaa vektorista avoimella välillä [iteraattori b, iteraattori e ) olevat alkiot. Vektorin koko pienenee poistettujen alkioiden lukumäärän verran. Paluuarvo iteraattori p osoittaa poistettuja alkioita seuranneeseen alkioon.

4 #include <deque> deque<alkiotyyppi>: :size_type Tietotyyppi jolla voidaan esittää deque-tyyppisten deque<alkiotyyppi> muuttuja deque<alkiotyyppi> muuttuja(deque<alkiotyyppi>) deque<alkiotyyppi> muuttuja(int) deque<alkiotyyppi> muuttuja(int, alkiotyyppi) deque<alkiotyyppi> muuttuja(iteraattori b, iteraattori e ) Rakentajat analogisia vektorin rakentajien kanssa. Kaikki operaattorit, jotka toimivat vektorilla, toimivat deque-rakenteella. Kaikki jäsenfunktiot, jotka toimivat vektorilla, toimivat samoin deque-rakenteella. void push_front(alkiotyyppi) Arvo alkiotyyppi lisätään ensimmäiseksi alkioksi. Koko kasvaa yhdellä. void pop_front( ) Poistetaan ensimmäinen alkio. Koko pienenee yhdellä. #include <list> list<alkiotyyppi>: :size_type Tietotyyppi jolla voidaan esittää list-tyyppisten list<alkiotyyppi> muuttuja list<alkiotyyppi> muuttuja(list<alkiotyyppi>) list<alkiotyyppi> muuttuja(int) list<alkiotyyppi> muuttuja(int, alkiotyyppi) list<alkiotyyppi> muuttuja(iteraattori b, iteraattori e ) Rakentajat analogisia vektorin rakentajien kanssa. Kaikki operaattorit, jotka toimivat vector-jadeque-rakenteilla, toimivat myös listoilla, paitsi ettei listaa voi indeksoida [ int ]-operaattorilla. Kaikki jäsenfunktiot, jotka toimivat vector-jadeque-rakenteilla, toimivat listoilla, paitsi ettei listaa voi indeksoida at(int )-jäsenfunktiolla. void reverse( ) Kääntää listan alkiot takaperoiseen järjestykseen. void sort( ) Lajittelee listan alkiot kasvavaan järjestykseen. void sort(vertailufunktio) Lajittelee listan alkiot kasvavaan järjestykseen käyttäen alkioiden vertailuun funktiota vertailufunktio. void remove(alkiotyyppi) Poistaa listasta kaikki alkiot, joiden arvo on yhtäsuuri kuin alkiotyyppi. void remove_if(valintafunktio) Poistaa listasta alkiot, joille valintafunktio palauttaa true. #include <set> set<alkiotyyppi>: :size_type Tietotyyppi jolla voidaan esittää set-tyyppisten set<alkiotyyppi> muuttuja set<alkiotyyppi> muuttuja(set<alkiotyyppi>) set<alkiotyyppi> muuttuja(iteraattori b, iteraattori e ) Analogisia vektorin rakentajien kanssa. Kaikki operaattorit, jotka toimivat vector-jadeque-rakenteilla, toimivat myös set-rakenteella, paitsi ettei sitä voi indeksoida [ int ]-operaattorilla. set<alkiotyyppi>: :size_type size( ) Alkoiden lukumäärä. bool empty( ) true jos joukko on tyhjä, muutoin false. iteraattori find(alkiotyyppi) Tutkii kuuluuko arvo alkiotyyppi joukkoon. Paluuarvo on iteraattori, joka osoittaa löytyneeseen alkioon tai end(), jos arvo alkiotyyppi ei kuulu joukkoon. pair<iteraattori, bool> insert(alkiotyyppi) Yrittää lisätä arvon alkiotyyppi joukkoon. Paluuarvo on pari, jonka first-kenttä (iteraattori) osoittaa lisättyyn tai löytyneeseen alkioon ja second-kenttä (bool) ontrue, jos lisäys onnistui tai false, jos arvo alkiotyyppi kuului joukkoon jo ennestään. void insert(iteraattori b, iteraattori e ) Lisää joukkoon kaikki avoimella välillä [iteraattori b, iteraattori e ) olevat arvot. void erase(alkiotyyppi) Poistaa joukosta arvon alkiotyyppi. void erase(iteraattori) Poistaa joukosta alkion, johon iteraattori osoittaa. Poistaa joukosta kaikki alkiot. #include <map> map<avaintyyppi, infotyyppi>: :size_type Tietotyyppi map-rakenteiden kokojen esittämiseen. pair<avaintyyppi, infotyyppi> Tietotyyppi (struct) jossa kaksi kenttää: first joka on tyypiltään avaintyyppi ja second joka on tyypiltään infotyyppi. Käytetään map-rakenteeseen lisättävien avain-informaatio-parien esittämiseen ja käsittelyyn. map<avaintyyppi, infotyyppi> muuttuja Määrittelee map-muuttujan, jonka hakuavaimen tyyppi on avaintyyppi ja talletettavan tiedon tyyppi infotyyppi. map<avaintyyppi, infotyyppi> muuttuja(map<avaintyyppi, infotyyppi>) Kuten edellinen mutta muuttuja alustetaan toisella samantyyppisellä map-muuttujalla. pair<avaintyyppi, infotyyppi> make_pair(avaintyyppi f, infotyyppi s ) Funktio luo parin (struct), jonka first-kentän arvo on avaintyyppi f ja second-kentän arvo on infotyyppi s. Kaikki operaattorit, jotka toimivat vector- ja deque-rakenteilla, toimivat myös map-rakenteella, paitsi ettei sitä voi indeksoida [ int ]-operaattorilla alkion järjestysnumeroon perustuen (paitsi jos avaintyyppi sattuu olemaan int). map[avaintyyppi] Muuttujan map indeksointi hakuvaimella avaintyyppi. Arvoksi evaluoituu avaimeen sidottu tieto (tyypiltään infotyyppi). Voi olla sijoitusoperaattorin vasemmalla puolella: mahdollistaa yksinkertaisen alkioiden lisäämisen map-tyyppiseen muuttujaan. Huom! Lisää avaimen avaintyyppi aina rakenteeseen, silloinkin kun map[avaintyyppi] ei ole sijoituksen kohteena. map<avaintyyppi, infotyyppi>: :size_type size( ) Alkoiden lukumäärä. bool empty( ) true jos rakenne on tyhjä, muutoin false. Kaikki map-tyyppiä käsittelevät iteraattorit osoittavat aina pair<avaintyyppi, infotyyppi>-tyyppiseen pariin. iteraattori find(avaintyyppi) Etsii hakuavainta avaintyyppi map-rakenteesta. Jos avain löytyy, paluuarvona iteraattori hakuavaimen sisältävään pariin. Jos avainta ei löydy, paluuarvona on end(). pair<iteraattori, bool> insert(pair<avaintyyppi, infotyyppi>) Yrittää lisätä (avaintyyppi, infotyyppi )-parin map-rakenteeseen. Paluuarvo on pari, jonka first-kenttä (iteraattori) osoittaa lisättyyn tai löytyneeseen pariin ja second-kenttä (bool) ontrue, jos lisäys onnistui, false, jos hakuavain avaintyyppi oli rakenteessa ennestään. map<avaintyyppi, infotyyppi>::size_type erase(avaintyyppi) Poistaa parametrina annetun hakuavaimen avaintyyppi määräämän alkion rakenteesta. Paluuarvo kertoo poistettujen alkioiden lukumäärän (0 tai 1). void erase(iteraattori) Poistaa parametrin iteraattori osoittaman alkion. Tyhjentää map-rakenteen kaikista alkioista.

5 #include <algorithm> Ohjausfunktiot Useimmista algorithm-kirjaston funktioista on versio, jolle käyttäjä voi välittää funktioparametrina toimintaa ohjaavan apufunktion. bool valintafunktio(const alkiotyyppi&) Toimenpide suoritetaan vain niille säiliön alkioille, joille valintafunktio palauttaa true. bool vertailufunktio(const alkiotyyppi&, const alkiotyyppi&) Suuruusvertailu kahdelle alkiolle. Paluuarvo true vain, jos ensimmäinen parametri on pienempi kuin toinen. void unaarialiohjelma(alkiotyyppi&) void unaarialiohjelma(const alkiotyyppi&) Tehdään jokin toimenpide parametrina saadulle arvolle. alkiotyyppi unaarikuvaus(const alkiotyyppi&) Kuvataan parametrin arvo joksinkin toiseksi arvoksi. alkiotyyppi binäärikuvaus(const alkiotyyppi 1 &, const alkiotyyppi 2 &) Kuvataan arvot alkiotyyppi 1 ja alkiotyyppi 2 joksinkin kolmanneksi arvoksi. Lähes kaikki STL-algoritmit saavat parametrinaan vähintään kaksi iteraattoria, jotka kertovat mihin osaan säiliön sisältämistä alkioista operaatio kohdistuu. Näitä lähdeiteraattoreita on merkitty iteraattori b ja iteraattori e. STL-algoritmit, jotka tallettavat tuloksia iteraattorin osoittamaan paikkaan, olettavat että joko osoitetussa paikassa on alkioille riittävästi tilaa valmiina tai että käytetään lisäysiteraattoria. Näitä kohdeiteraattoreita on merkitty iteraattori k. void swap(tietoalkio 1, tietoalkio 2 ) Vaihtaa kahden saman tyyppisen tietoalkion arvot keskenään. Alkioiden tulee olla sellaista tyyppiä, että sille toimii sijoitus ja alustus. Jos kyseessä on STL-säiliöt, on tehokkaampaa käyttää säiliön omaa jäsenfunktiota tietoalkio 1.swap(tietoalkio 2 ). int count(iteraattori b, iteraattori e, alkiotyyppi ) int count_if(iteraattori b, iteraattori e, valintafunktio) Laskee niiden välillä [ iteraattori b, iteraattori e )olevien alkioiden lukumäärän, joiden arvo on sama kuin alkiotyyppi, tai jälkimmäisessä tapauksessa, joille valintafunktio palauttaa true. iteraattori find(iteraattori b, iteraattori e, alkiotyyppi ) iteraattori find_if(iteraattori b, iteraattori e, valintafunktio) Etsii väliltä [ iteraattori b, iteraattori e ) ensimmäisen alkion, jonka arvo on alkiotyyppi, tai jälkimmäisessä tapauksessa, jolle valintafunktio palauttaa true. Paluuarvo on iteraattori, joka osoittaa kyseiseen alkioon, tai end( ), jos sopivaa alkiota ei löydy. iteraattori min_element(iteraattori b, iteraattori e ) iteraattori max_element(iteraattori b, iteraattori e ) iteraattori min_element(iteraattori b, iteraattori e, vertailufunktio) iteraattori max_element(iteraattori b, iteraattori e, vertailufunktio) Etsii väliltä [ iteraattori b, iteraattori e ) pienimmän/suurimman alkion ja palauttaa iteraattorin, joka osoittaa kyseiseen alkioon. Kaksi jälkimmäistä versiota muuten samoin, mutta alkioita vertaillaan funktiolla vertailufunktio. bool equal(iteraattori b1, iteraattori e, iteraattori b2 ) bool equal(iteraattori b1, iteraattori e, iteraattori b2, vertailufunktio ) Tutkii sisältääkö väli [ iteraattori b1, iteraattori e ) järjestyksessä samat alkiot kuin iteraattorista iteraattori b2 alkava väli. Jälkimmäinen versio käyttää alkioiden vertailuun funktiota vertailufunkio. iteraattori copy(iteraattori b, iteraattori e, iteraattori k ) Kopioidaan välin [ iteraattori b, iteraattori e ) alkiot iteraattorin iteraattori k osoittamaan paikkaan. Paluuarvo osoittaa kohderakenteeseen kopioitujen alkioiden perässä olevaan alkioon. Kohteen on oltava vector, deque, list tai osoitin (taulukko). void replace(iteraattori b, iteraattori e, alkiotyyppi o, alkiotyyppi n ) void replace_if(iteraattori b, iteraattori e, valintafunktio, alkiotyyppi n ) Korvaa välillä [ iteraattori b, iteraattori e ) kaikki arvot alkiotyyppi o arvolla alkiotyyppi n. Jälkimmäinen versio korvaa arvolla alkiotyyppi n kaikki alkiot, joille valintafunktio palauttaa true. Säiliön on oltava vector, deque, list tai osoitin (taulukko). iteraattori remove(iteraattori b, iteraattori e, alkiotyyppi ) iteraattori remove_if(iteraattori b, iteraattori e, valintafunktio ) Poistaa väliltä [ iteraattori b, iteraattori e ) kaikki alkiot, joiden arvo on sama kuin alkiotyyppi, tai ne alkiot, joille valintafunktio palauttaa true. Paluuarvo on muutetun säiliön uusi looginen end( ). Todellisuudessa alkioita ei poisteta säiliöstä, vaan ne siirretään säiliön loppuun: remove-algoritmit eivät toimi assosiatiivisille säiliöille. Säiliön oma erase-funktio on yleensä käyttökelpoisempi. void reverse(iteraattori b, iteraattori e ) Kääntää välin [ iteraattori b, iteraattori e ) alkioiden järjestyksen takaperin. Käytettävissä vain vector-, dequeja list-iteraattoreilla sekä osoittimilla (taulukoilla). void random_shuffle(iteraattori b, iteraattori e ) Sekoittaa välin [ iteraattori b, iteraattori e ) alkiot satunnaiseen järjestykseen. Käytettävissä vain vector-ja deque-rakenteilla sekä osoittimilla (taulukoilla). void sort(iteraattori b, iteraattori e ) void sort(iteraattori b, iteraattori e, vertailufunktio) Lajitellaan välin [ iteraattori b, iteraattori e ) alkiot. Jälkimmäisessä versiossa alkioiden vertailu suoritetaan funktiolla vertailufunktio. Käytettävissä vain vector- ja deque-iteraattoreilla sekä osoittimilla (taulukoilla). void for_each(iteraattori b, iteraattori e, unaarialiohjelma) Kutsutaan aliohjelmaa unaarialiohjelma järjestyksessä kaikilla välin [ iteraattori b, iteraattori e ) alkioilla. Unaarialiohjelma voi muuttaa alkioiden arvoja. void transform(iteraattori b, iteraattori e, iteraattori k, unaarikuvaus) Kutsutaan funktiota unaarikuvaus järjestyksessä kaikilla välin [ iteraattori b, iteraattori e ) alkioilla. Paluuarvot talletetaan samassa järjestyksessä iteraattorin iteraattori k osoittamaan paikkaan. iteraattori transform(iteraattori b1, iteraattori e, iteraattori b2, iteraattori k, binäärikuvaus) Kutsutaan funktiota binäärikuvaus kaikille välin [ iteraattori b1, iteraattori e ) ja saman mittaisen iteraattorista iteraattori b2 alkavan välin vastinalkioille. Kuvausfunktion paluuarvot talletetaan järjestyksessä iteraattorin iteraattori k osoittamaan paikkaan. Paluuarvo on iteraattori, joka osoittaa kohderakenteessa viimeistä muutettua alkiota seuraavaan alkioon. Muita huomautuksia Tämä dokumentaatio ei yritä olla täydellinen kuvaus edes niistä standardikirjaston osista, jotka on esitelty. Mukaan otettu vain kurssin kannalta mahdollisesti hyödylliset ominaisuudet. Kyseessä ei myöskään ole (itse)opiskelumateriaali, sillä asiaa tuskin voi ymmärtää pelkästään tätä referenssiä tutkiskelemalla. Viimeisin versio löytyy osoitteesta Korjaus- ja muutosehdotukset voi lähettää osoitteeseen aps@cs.tut.fi Tekstissä on oletettu, että kaikissa standardikirjaston palveluita käyttävissä lähdekooditiedostoissa on esiintynyt komento using namespace std; ennen palveluiden käyttöä tai että tarvittavat std-nimiavaruuden nimet on otettu käyttöön yksittäin.

Olio-ohjelmointi Syntaksikokoelma

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

Lisätiedot

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

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

Lisätiedot

Osoitin ja viittaus C++:ssa

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

Lisätiedot

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 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ätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Java-kielen perusteet

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

Lisätiedot

Demo 6 vastauksia. 1. tehtävä. #ifndef #define D6T1 H D6T1 H. #include <iostream> using std::ostream; using std::cout; using std::endl;

Demo 6 vastauksia. 1. tehtävä. #ifndef #define D6T1 H D6T1 H. #include <iostream> using std::ostream; using std::cout; using std::endl; Demo 6 vastauksia 1. tehtävä #ifndef #define D6T1 H D6T1 H #include using std::ostream; using std::cout; using std::endl; #include using std::string; 10 template class

Lisätiedot

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

Lisätiedot

OHJ-1150 Ohjelmointi II

OHJ-1150 Ohjelmointi II OHJ-1150 Ohjelmointi II syksy 2013 Luentomoniste Ari Suntioinen arisuntioinen@tutfi Sisällysluettelo Sisältö OHJ-1150 Ohjelmointi II vector-tyyppi 252 Standard Template Library (STL) 261 STL-säiliöt 263

Lisätiedot

Olio-ohjelmointi 2. välikoe HYV5SN

Olio-ohjelmointi 2. välikoe HYV5SN Olio-ohjelmointi 2. välikoe 27.4.2007 HYV5SN 1. Tee ohjelma, joka sisältää laatikko-luokan. Luokan tietojäseninä ovat laatikon syvyys, leveys ja korkeus. Toteuta luokkaan muodostin, jonka avulla olio voidaan

Lisätiedot

STL:n uudistukset. Seppo Koivisto TTY Ohjelmistotekniikka

STL:n uudistukset. Seppo Koivisto TTY Ohjelmistotekniikka STL:n uudistukset Seppo Koivisto TTY Ohjelmistotekniikka 2012-05-04 Sisältö 1 Muutokset säiliöihin ja uudet säiliötyypit 2 3 4 5 STL:n säiliöt Viitteet ja osoittimet ovat muuttuneet: Allocator::reference

Lisätiedot

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

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

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. V Geneerisyys

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. V Geneerisyys 812347A Olio-ohjelmointi, 2015 syksy 2. vsk V Geneerisyys Sisältö 1. Johdanto geneerisyyteen 2. Geneeriset funktiot 3. Geneeriset luokat 4. Standard Template Library (STL) 5. IOStream-kirjasto 812347A

Lisätiedot

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

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

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

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

Lisätiedot

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

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

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

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

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

Lisätiedot

Java-kielen perusteet

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

Lisätiedot

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2 Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2 Syntaksilomake (22.4.2007) C-kielen standardikirjaston funktioita gets(merkkijono); scanf("formaatti", &muuttuja1,..., &muuttujan); sscanf(merkkijono,

Lisätiedot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot Tiedosto yhteenkuuluvien tietojen joukko, joka on tavallisesti talletettu pysyväismuistiin muodostuu tietueista, jotka voivat olla keskenään samanlaisia tai vaihdella tyypiltään tiedostot ovat joko tekstitiedostoja

Lisätiedot

13 Operaattoreiden ylimäärittelyjä

13 Operaattoreiden ylimäärittelyjä 248 13 C++-kielessä voidaan operaattoreita ylimäärittää. Ylimääriteltävää operaattoria voidaan pitää ikäänkuin metodina, joka esitellään luokan esittelyssä ja määritellään luokan ulkopuolella kuten metoditkin.

Lisätiedot

Osoittimet. Mikä on osoitin?

Osoittimet. Mikä on osoitin? Osoittimet 7 Osoittimet On aika siirtyä käsittelemään osoittimia, C++:lle elintärkeätä ominaisuutta. Osoittimet ovat tärkeitä, koska ne luovat perustan muistin dynaamiselle varaukselle ja käytölle. Ne

Lisätiedot

int puts(char *buff) Kirjoittaa puskurissa buff \0 :lla päätetyn merkkijonon standarditulostukseen. Formatoitu konsoli-i/o Tiedostot

int puts(char *buff) Kirjoittaa puskurissa buff \0 :lla päätetyn merkkijonon standarditulostukseen. Formatoitu konsoli-i/o Tiedostot 1. Standardikirjasto Ohjelmankehitysympäristössä on joukko kirjastoituja funktioita. on joukko otsikkotiedostoja, joissa on kirjastofunktioiden prototyypit (esittelyt) ja tarvittavien vakioiden, tietotyyppien

Lisätiedot

7. Näytölle tulostaminen 7.1

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

Lisätiedot

Tietueet. Tietueiden määrittely

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

Lisätiedot

Lyhyt kertaus osoittimista

Lyhyt 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ätiedot

Tietotyypit ja operaattorit

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

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

Operaattoreiden uudelleenmäärittely

Operaattoreiden uudelleenmäärittely Operaattoreiden uudelleenmäärittely 14 Operaattoreiden uudelleenmäärittely Tässä luvussa käsittelemme, kuinka voit lisätä toiminnallisuutta luokkiisi, jotta ne toimivat enemmän C++:n perustietotyyppien

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

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

Lisätiedot

C++ -ohjelmointikieli vs. muut kielet

C++ -ohjelmointikieli vs. muut kielet C++ -ohjelmointikieli vs. muut kielet C++-kieli ohjelmointikielten sukupuussa (C++ -kielen kehittäjää Bjarne Stroustrupia mukaillen): 1 C++ -ohjelman kääntämisen vaiheet kuin C-kieli 2 C C++ C++: kehittäjänsä

Lisätiedot

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

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

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

Lisätiedot

C++ -ohjelmointikieli vs. muut kielet C C++ C vs. C++: Hello World. C++ -ohjelman kääntämisen vaiheet kuin C-kieli

C++ -ohjelmointikieli vs. muut kielet C C++ C vs. C++: Hello World. C++ -ohjelman kääntämisen vaiheet kuin C-kieli C++ -ohjelmointikieli vs. muut kielet C++-kieli ohjelmointikielten sukupuussa (C++ -kielen kehittäjää Bjarne Stroustrupia mukaillen): C++ -ohjelman kääntämisen vaiheet kuin C-kieli C C++ C++: kehittäjänsä

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Lisätiedot

etunimi, sukunimi ja opiskelijanumero ja näillä

etunimi, sukunimi ja opiskelijanumero ja näillä Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

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

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

Lisätiedot

Algoritmit 1. Luento 7 Ti Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö Algoritmit 1 Luento 7 Ti 31.1.2017 Timo Männikkö Luento 7 Järjestetty binääripuu Binääripuiden termejä Binääripuiden operaatiot Solmun haku, lisäys, poisto Algoritmit 1 Kevät 2017 Luento 7 Ti 31.1.2017

Lisätiedot

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

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

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

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

Lisätiedot

Algoritmit 2. Luento 7 Ti Timo Männikkö

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

Lisätiedot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit. 3. Muuttujat ja operaatiot Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi.. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit. Arvojen

Lisätiedot

3. Muuttujat ja operaatiot 3.1

3. Muuttujat ja operaatiot 3.1 3. Muuttujat ja operaatiot 3.1 Sisällys Imperatiivinen laskenta. Muuttujat. Nimi ja arvo. Muuttujan nimeäminen. Muuttujan tyyppi. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeettiset operaattorit.

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

Standardi mallikirjasto

Standardi mallikirjasto Standardi mallikirjasto 20 Standardi mallikirjasto Kuten jo tiedätkin C++ sisältää laajan standardikirjaston, joka yksinkertaistaa monia ohjelmointitehtäviä. Tähän saakka näkemäsi lisäksi tämä kirjasto

Lisätiedot

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

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

Lisätiedot

Olio-ohjelmointi Geneerisyys. 1. Johdanto

Olio-ohjelmointi Geneerisyys. 1. Johdanto Olio-ohjelmointi Geneerisyys Aiemmin käsiteltiin kolme monimuotoisuuden muotoa. Tässä osassa tutustutaan niistä neljänteen geneerisyyteen. Esitys perustuu pääosin teoksen [Bud] lukuun 18. Java-kielen geneerisyyden

Lisätiedot

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

Lisätiedot

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

Lisätiedot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat ja operaatiot 3. Muuttujat ja operaatiot Sisällys Muuttujat. Nimi ja arvo. Algoritmin tila. Muuttujan nimeäminen. Muuttujan tyyppi. Muuttuja ja tietokone. Operaattorit. Operandit. Arvon sijoitus muuttujaan. Aritmeetiikka.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/

Lisätiedot

1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi

Lisätiedot

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

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

Lisätiedot

18. Abstraktit tietotyypit 18.1

18. 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ätiedot

Tietorakenteet ja algoritmit

Tietorakenteet 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ätiedot

17. Javan omat luokat 17.1

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

Lisätiedot

Tieto- ja tallennusrakenteet

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

Lisätiedot

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

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

Lisätiedot

20. Javan omat luokat 20.1

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

Lisätiedot

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

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

Lisätiedot

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

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

Lisätiedot

Esimerkki luokkahierarkiasta: C++-kielen IOstream-kirjasto

Esimerkki luokkahierarkiasta: C++-kielen IOstream-kirjasto Esimerkki luokkahierarkiasta: C++-kielen IOstream-kirjasto Tässä materiaalissa tutustutaan tarkemmin C++:n luokkahierarkiaan. Koska kyseessä on oliopohjainen kieli, C++:n luokat on järjestetty hierarkisesti

Lisätiedot

Kääntäjän virheilmoituksia

Kääntäjän virheilmoituksia OHJ-1101 Ohjelmointi 1e 2008-09 1 Kääntäjän virheilmoituksia Kun progvh2 ohjelma käännetään antaa tutg++ seuraavat virheilmoitukset ja varoitukset: proffa> tutg++ progvh2.cc progvh2.cc:29:13: warning:

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

17. Javan omat luokat 17.1

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

Lisätiedot

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

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

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

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 10.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 10.2.2010 1 / 43 Kertausta: listat Tyhjä uusi lista luodaan kirjoittamalla esimerkiksi lampotilat = [] (jolloin

Lisätiedot

Java-kielen perusteet

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

Lisätiedot

Rakenteiset tietotyypit Moniulotteiset taulukot

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

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento

Lisätiedot

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Algebralliset 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ätiedot

1. Mitä tehdään ensiksi?

1. Mitä tehdään ensiksi? 1. Mitä tehdään ensiksi? Antti Jussi i Lakanen Ohjelmointi 1, kevät 2010/ Jyväskylän yliopisto a) Etsitään Googlesta valmis algoritmi b) Mietitään miten itse tehtäisiin sama homma kynällä ja paperilla

Lisätiedot

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

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

Lisätiedot

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto Sisällys 18. bstraktit tietotyypit Johdanto abstrakteihin tietotyyppeihin. Pino ja jono. Linkitetty lista. Pino linkitetyllä listalla toteutettuna. 18.1 18.2 Johdanto Javan omat tietotyypit ovat jo tuttuja:

Lisätiedot

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

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

Lisätiedot

Algoritmit 1. Luento 5 Ti Timo Männikkö

Algoritmit 1. Luento 5 Ti Timo Männikkö Algoritmit 1 Luento 5 Ti 24.1.2017 Timo Männikkö Luento 5 Järjestetty lista Järjestetyn listan operaatiot Listan toteutus taulukolla Binäärihaku Binäärihaun vaativuus Algoritmit 1 Kevät 2017 Luento 5 Ti

Lisätiedot

13. Loogiset operaatiot 13.1

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

Lisätiedot

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

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

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Pino Pinon määritelmä Pinon sovelluksia Järjestyksen kääntäminen Palindromiprobleema Postfix-lausekkeen laskenta Infix-lausekkeen muunto postfix-lausekkeeksi Sisäkkäiset funktiokutsut

Lisätiedot

Luku 3. Listankäsittelyä. 3.1 Listat

Luku 3. Listankäsittelyä. 3.1 Listat Luku 3 Listankäsittelyä Funktio-ohjelmoinnin tärkein yksittäinen tietorakenne on lista. Listankäsittely on paitsi käytännöllisesti oleellinen aihe, se myös valaisee funktio-ohjelmoinnin ideaa. 3.1 Listat

Lisätiedot

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero Alkioiden avaimet Usein tietoalkioille on mielekästä määrittää yksi tai useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero 80 op

Lisätiedot

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

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

Lisätiedot

Algoritmit 2. Luento 3 Ti Timo Männikkö

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

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP2 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 17. toukokuuta 219 Yleistä Tentti 1 oli pistekeskiarvon (14,6) perusteella hieman tavanomaista helpompi. Omasta tehtäväpaperista

Lisätiedot

Ohjelmoinnin perusteet Y Python

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

Lisätiedot

Osoittimet ja taulukot

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

Lisätiedot

Harjoitus 4 (viikko 47)

Harjoitus 4 (viikko 47) Kaikki tämän harjoituksen tehtävät liittyvät joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Saa hyvän alun harjoitustyön tekoon, kun ratkaiset mahdollisimman monta tehtävää. Mikäli tehtävissä

Lisätiedot

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

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

Lisätiedot

Harjoitustyö: virtuaalikone

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

Lisätiedot

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

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

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 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ätiedot

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan soveltamista List-luokan metodeja Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan metodeja List-luokan

Lisätiedot

Merkkijonot ja C++ Antti-Juhani Kaijanaho. 5. maaliskuuta 2001. 1 Vanhojen C++-kääntäjien käyttäjät, huomio! 2 Merkkijonojen perusteet

Merkkijonot ja C++ Antti-Juhani Kaijanaho. 5. maaliskuuta 2001. 1 Vanhojen C++-kääntäjien käyttäjät, huomio! 2 Merkkijonojen perusteet Merkkijonot ja C++ Antti-Juhani Kaijanaho 5. maaliskuuta 2001 1 Vanhojen C++-kääntäjien käyttäjät, huomio! Tämä kirjoitus perustuu vuonna 1998 julkistettuun C++-kielen kansainväliseen ISO-standardiin.

Lisätiedot