Osoittimet ja taulukot
|
|
- Annikki Nieminen
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 Osoittimet ja taulukot Hannu Laine Copyright Hannu Laine
2 Osoittimet int main (void) { int a; int *p; //p on osoitinmuuttuja p = &a; *p = 10; printf( %d, *p); //tulostuu muuttujan a sisältö scanf( %d, p); //muuttujaan a luetaan uusi arvo printf( %d, a); //tulostetaan se * muuttujan määrittelyssä (määrää muuttujan tyypin) * muuttujaa käytettäessä (tarkoittaa epäsuoraa osoitusta) & ei voi esiintyä muuttujan määrittelyssä (C:ssä) & muuttujaa käytettäessä on osoiteoperaattori int * vai int*? *(&a) ok ja on sama kuin a *a on kielioppivirhe &(*p) Entä &p? ok ja on sama kuin &a Left value / Right value HL 1
3 Taulukot (käännösaikana varattavat) 1 Taulukkomuuttujan määrittely Yleinen muoto: alkiotyyppi nimi[koko]; Esim: float taulukko[5]; //tila varataan pinosta 5 floatalkiolle. Koon pitää olla vakio (käännösaikana selvitettävissä oleva luku). Alkiotyyppi voi olla mikä tyyppi tahansa. Taulukon nimi on muistissa vakio-osoitin, jonka kohdetyyppi on alkion tyyppi. Yllä olevassa tapauksessa siis vakion taulukko tyyppi on float *. Sisäinen esitys muistissa: taulukko HL 2
4 Taulukot (käännösaikana varattavat) 2 Taulukon alustus float t1[5] = {1.0, 2.0, 3.0, 4.0, 5.0; float t2[5] = {0; // kaikki 5 alkiota alustetaan nollaksi float t3[ ] = {1.0, 2.0, 3.0, 4.0, 5.0; //varataan tila 5:lle float t4[ ] ; //ei ole järkevä merkintä // muuttujan määrittelyssä Taulukon sijoitus: Taulukon sijoitus ei onnistu: float t5[5]; t5 = t1; Edellä oleva lause aiheuttaa käännösvirheen: Syntax error: Left value required tai t5 is constant Tarvitaan silmukka, jossa kopioidaan alkio alkiolta Yksittäistä alkiota voidaan osoittaa indeksoimalla: t1[3] tarkoittaa neljättä alkiota eli neljättä float lukua taulukossa. HL 3
5 Osoitinmuuttuja edustaa taulukkoa float t [5]; float *p; float x; //Varataan tila taulukolle //Varataan tila osoittimelle p = t; //tämä onnistuu ( t = p ei onnistuisi ) Tämän jälkeen ilmaisut t [2] ja p [2] viittaavat samaan alkioon taulukossa t. Miksi näin? Koska indeksointi merkitsee vain osoitinaritmetiikkaa: *t = 1.0; t [0] = 1.0; *(t+1) = 2.0; t [1] = 2.0; *(t+2) = 3.0; t [2] = 3.0; Osoitinaritmetiikka: lisätään int ( + ) osoitin vähennetään int ( - ) osoitin vähennetään osoitin ( - ) int int edustaa näissä kohdetyypin kokoisia yksiköitä vertailuoperaatiot mahdollisia t p HL 4
6 Osoitinmuuttujan juoksutus int main(void) { float t [5]; float *p; //Tietojen luku for (p = t ; p < t + 5 ; p++) scanf( %f, p); //Tietojen tulostus for (p = t ; p < t + 5 ; p++) printf( %f, *p); //Vastaa allaolevaa ohjelmaa int main(void) { float t [5] ; int i; //Tietojen luku for (i = 0; i < 5 ; i++) scanf( %f, &t [i]); //Tietojen tulostus for (i = 0; i < 5 ; i++) printf( %f, t [i]); HL 5
7 Taulukko parametrina 1 int lue_taulukko(float *t, int koko); void tulosta_taulukko(const float *t, int n); int main(void) { float taul[5] ; int n; n = lue_taulukko(taul, 5); tulosta_taulukko(taul, n); return 0; taul //Funktioiden toteutukset #include <stdio.h> t int lue_taulukko(float *t, int koko) { 5 int i = 0; float x ; printf( \nanna taulukon %d :s alkio, i); scanf( %f, &x ); while ( x > 0 && i < koko) { t [ i++ ] = x; if ( i < koko) { printf( \nanna taulukon %d :s alkio, i); scanf( %f, &x ); return i; HL 6 koko
8 Taulukko parametrina 2 //Funktioiden toteutukset void tulosta_taulukko(const float *t, int n) { int i ; printf( \ntaulukon sisältö on ); for (i = 0 ; i < n ; i++) printf( \n %7.2f, t [i]); Lisämääre const parametrilistassa Taulukko välitetään siis aina osoittimena tehokkuussyistä. Halutaan säilyttää periaate, että protosta näkee, mitä parametreja funktio pääsee muuttamaan. Kääntäjä huolehtii, että osoitinta ei käytetä kohteen muuttamiseen. Yllä olevan funktion toteutuksessa t++; olisi ok, koska muuttaa osoitinta t *t++ = x; ei ole ok, koska muuttaa kohdetta HL 7
9 Taulukko dynaamisessa muistissa (esim) //Vastaa muuten aikaisemmin esillä ollutta (sivun 5 // alaosa) ohjelmaa mutta nyt taulukko varataan // ajonaikana dynaamisesta muistista #include <stdlib.h> int main(void) { float *t; //tässä on ero int koko, i; //Tilan varaus alkioille koko = 5; //koko voi nyt olla muuttujassa t = (float*)malloc(koko*sizeof(float)); //tässä on ero //Tietojen luku for (i = 0; i < koko ; i++) scanf( %f, &t [i]); //Tietojen tulostus for (i = 0; i < koko ; i++) printf( %f, t [i]); free(t); //taulukolle varatun tilan vapautus Huom. Tässä varattu taulukko t voitaisiin välittää aivan samalla tavalla funktioille lue_taulukko ja tulosta_taulukko kuin aikaisempi staattisesti varattu taulukko t. HL 8
10 Taulukon palautus funktiosta Esimerkki #include <stdlib.h> float *f(int *size); int main(void) { float *t; int n, i; t = f(&n); //Tietojen tulostus for (i = 0; i < n ; i++) printf( %f, t [i]); return 0; //Tällä ei toimi. Miksi? float *f(int *n) { float taul [4] = {1.0, 2.0, 3.0, 4.0; *n = 4; return taul; //Tällä toimii. Miksi? float *f(int *n) { float *taul = (float*)malloc(4*sizeof(float)); taul[0] =1.0; taul[1] =2.0; taul[2] =3.0; taul[3] =4.0; *n = 4; return taul; HL 9
11 2-ulotteiset taulukot (staattiset) Määrittely: Vaihtoehto 1. TElementType arr_2dim[n][m]; Vaihtoehto 2. (Määritellään tyyppinimi riville (typedef)) typedef TElementType Trow[M]; Trow arr_2dim[n]; Molemmissa tapauksissa tilaa varataan NxM alkiolle. Taulukon nimi arr_2dim on edelleen vakio-osoitin. Tämän osoittimen kohdetyyppi on yksiulotteinen taulukko (Trow). arr_2dim Kuinka määritellään vastaava osoitinmuuttuja? Vaihtoehto 1. TElementType (*pointer_for_arr_2dim)[m]; Vaihtoehto 2 typedef TElementType Trow[M]; Trow *pointer_for_arr_2dim; Nyt siis tilaa varataan osoittimelle, ei taulukon alkioille. HL 10
12 2-ulotteinen taulukko (staattinen) parametrina Edellisellä sivulla määritelty osoitinmuuttuja pointer_for_arr_2dim voi edustaa kaksiulotteista taulukkoa, jossa on M saraketta. Tämän muuttujan tyyppi on siis samalla sellaisen funktion parametrin tyyppi, joka ottaa kyseisenlaisen kaksiulotteisen taulukon parametrina. Tällaisen funktion prototyyppi on silloin Vaihtoehto A. void f(trow *array, int rows); Vaihtoehto B. void f(titem (*array)[m], int rows); Kuinka tällaista funktiota kutsutaan: typedef Titem Trow[M]; void main (void) { //Trow arr[n]; //Vaihtoehto A Titem arr[n][m]; //Vaihtoehto B f(arr, N); // Tässä kutsutaan funktiota f Kuinka funktio toteutetaan Funktion toteutuksessa taulukon alkioihin päästään käsiksi normaalilla kaksoisindeksoinnilla tai osoitinaritmetiikalla: array[i][j] *(*(array+i)+j) Rivien määrä voi siis funktiossa olla vaihteleva, mutta sarakkeiden määrä on nyt lyöty lukkoon käännösaikana. HL 11
13 Rivien määrän suhteen dynaaminen 2- ulotteinen taulukko Vain rivien lukumäärä voidaan tässä määrätä ajonaikana. Tiedämme jo millainen osoitinmuuttuja voi edustaa tällaista kaksiulotteista taulukkoa (pointer_for_arr_2dim). Nyt vain pitää varata tila dynaamisesta muistista: Vaihtoehto A. pointer_for_arr_2dim = (Trow *) malloc(n*sizeof(trow)); Tämä versio on täysin analoginen yksiulotteisen taulukon kanssa. Nyt vain alkiotyyppi on Trow, joka sattuu olemaan taulukko. Vaihtoehto B. pointer_for_arr_2dim = (float (*)[M]) malloc(m*n* sizeof(float)); tai pointer_for_arr_2dim = (float (*)[M])malloc(n*sizeof(float [M])); Vain rivimäärä voidaan valita ajonaikana. Sarakkeiden määrän on oltava käännösaikainen vakio. Seuraavaksi tehdään taulukko, jossa sarakkeiden määrä on valittavissa ajonaikana ja rivien määrä on käännösaikainen vakio Lopullisena vaiheena on taulukko, jossa molemmat dimensiot määrätään ajonaikana. HL 12
14 Sarakkeiden määrän suhteen dynaaminen 2-ulotteinen taulukko 1 Nyt oletetaan tilanne, että tarvittavien rivien maksimimäärä tiedetään käännösaikana, mutta riville tarvittavien sarakkeiden määrä saadaan selville vasta ajonaikana. Vaaditaan edelleen, että yksittäiseen alkioon päästään merkinnällä arr [ i ] [ j ]; Nyt jokainen rivi on varattava dynaamisesta muistista, koska sen koko määräytyy vasta ajonaikana. Jokaista riviä edustava osoitin tallennetaan osoittimien taulukkoon. Tämä taulukko voi tässä tapauksessa olla staattinen taulukko. 2-ulotteista taulukkoa edustavan staattisen yksiulotteisen osoitintaulukon määrittely on silloin: Telement *arr[rows]; Rakenne näyttää silloin seuraavalta: arr HL 13
15 Sarakkeiden määrän suhteen dynaaminen 2-ulotteinen taulukko 2 Tilanvarausfunktio: void allocatematrix(telement **arr, int rows, int cols) { int i; for(i = 0; i < rows ; i++) arr[i] = (Telement*)malloc(cols*sizeof(Telement)); HL 14
16 Täydellisesti dynaaminen 2-ulotteinen taulukko 1 Halutaan, että rivien määrä ja sarakkeiden määrä on valittavissa ajonaikana. Vaaditaan silti edelleen, että yksittäiseen alkioon päästään merkinnällä arr [ i ] [ j ]; Tilanne on nyt muuten sama kuin edellä, mutta nyt myös rivejä edustavien osoittimien taulukko on varattava dynaamisesta muistista, koska senkin koko määräytyy vasta ajonaikana. Tätä osoittimien taulukkoa edustaa silloin osoitin, jonka kohdetyyppi on osoitin. 2-ulotteista taulukkoa edustavan osoittimen tyyppi on nyt Telement **arr; Rakenne näyttää silloin seuraavalta: arr Tilanvarausfunktio: Telement ** allocatematrix(int rows, int cols) { Telement **p; int i; p =(Telement**)malloc(rows*sizeof(Telement*)); for(i = 0; i < rows ; i++) p[i] = (Telement*)malloc(cols*sizeof(Telement)); return p; HL 15
17 Täydellisesti dynaaminen 2-ulotteinen taulukko 2 Huomautus 1. Nyt jokainen rivi voisi olla myös pituudeltaan erilainen (ragged array). Huomautus 2. Varausfunktion looppi voitaisiin korvata yhdellä varauksella ja sen jälkeen käydä loopissa sijoittamassa oikeat osoitteet osoitintaulukkoon. Pohdittavaa. Entä kun varausfunktion halutaan tuottavan varatun alueen osoitin parametrissaan. Tällöin siis varausfunktio allocatematrix olisi prototyypiltään muotoa void allocatematrix(????); HL 16
18 Täydellinen 2-ulotteinen taulukko parametrina Esimerkkinä 2-ulotteinen float-taulukko //Funktioiden prototyypit float ** allocatematrix(int rows, int cols); void readmatrix(float **matrix, int rows, int cols); void displaymatrix(float **matrix, int rows, int cols); int main (void) { float **matrix; int n = 3, m = 4; matrix = allocatematrix(n,m); //koko voidaan määrätä ajonaikana readmatrix(matrix, n, m); printf( %f, matrix[ 1 ][ 2 ]); //kaksoisindeksointi toimii displaymatrix(matrix, n, m); return 0; //Tässä funktion readmatrix toteutus: void readmatrix(float **matrix, int rows, int cols) { int i, j; for (i = 0 ; i < rows ; i++ ) for (j = 0 ; j < cols ; j++ ) scanf( %f, &matrix[ i ] [ j ]); //kaksoisindeksointi toimii HL 17
19 Merkkijonot (luku, tulostus, kopiointi) Merkkijono on C-kielessä merkkien taulukko, jossa merkki, jonka koodi on 0, päättää merkkijonon. Tähän erityisominaisuuteen perustuu kaikki merkkijonofunktiot. Merkkijonon tyyppi on siis osoitin merkkiin (char *). Esimerkki. int main(void) { char name[20]; //tilaa 19 merkille + loppunollalle char kopio[20]; scanf( %s, name); //voidaan lukea ilman looppia strcpy(kopio, name); //kopioi merkki merkiltä //kopio = name; on edelleen käännösvirhe printf( %s, kopio); return 0; Huomautus 1. scanf ja strcpy hoitavat myös päätösnollan kohteeseensa. Merkkien tulostuksen lopetus ajoissa perustuu päätösnollan löytymiseen. Huomautus 2. Jos kyseessä olisi mikä tahansa muu kuin merkkitaulukko, sen lukemiseen, kopioimiseen ja tulostamiseen pitää itse kirjoittaa loopin sisältävä koodi. HL 18
20 Merkkijonot (määrittely ja alustus) A) Kaikki mitä on sanottu taulukoista yleensä on edelleen voimassa: A1) staattinen taulukko char string1[10]; //tilan varaus char string2[10] = { a, b, c, d, e, \0 ; //tilanvaraus ja alustus (tilaa 10) char string3[ ] = { a, b, c, d, e, \0 ; //tilanvaraus ja alustus (tilaa 6) A2) dynaamisesti varattu n = 6; char *string4 = (char*)malloc(n*sizeof(char)); string4[0] = a ; string4[1] = b ; string4[2] = c ; string4[3] = d ; string4[4] = e ; string4[5] = \0 ; string4 = abcde ; //ei kopioi merkkejä mutta mitä? B) Voimassa erityisesti merkkijonoille char string5[10] = abcde ; //helppo alustus char string6[ ] = abcde ; // (tilaa 6) char *string7 = abcde ; //mikä on ero edellisiin! string6 = abcde ; // ei toimi (left value required!) string7 = abcde ; // toimii HL 19
21 Merkkijonotaulukot Merkkijonojen taulukko on 2-ulotteinen taulukko, koska yksi merkkijono on jo taulukko. Kaikki mitä on sanottu kaksiulotteisista taulukoista yleensä pätee edelleen. Nyt vain yhtä merkkijonoa (yhtä 2-ulotteisen taulukon riviä) voidaan käsitellä kokonaisuutena kirjastofunktioilla. Kaikki versiot siis staattisesta, merkkijonojen määrän (rivien määrän) suhteen dynaamisesta, merkkien määrän (sarakkeiden määrän) suhteen dynaamisesta ja täysin dynaamisesta versiosta ovat mahdollisia. Lisäksi vielä on muistettava, että itse merkkijonot voivat sijaita vakio-merkkijonoalueella. HL 20
22 char names1[4][30]={ Pekka, Petra, Matti, Maija ; char names1[ ][30] ={ Pekka, Petra, Matti, Maija ; Mitä antaa sizeof (names1)? Seuraava ei toimi: char names1[ ][ ] = { Pekka, Petra, Matti, Maija ; Mikä on erona seuraavissa? char *names2[4] = { Pekka, Petra, Matti, Maija ; char *names2[ ] = { Pekka, Petra, Matti, Maija ; Mitä antaa sizeof (names2)? Entä mitä eroa seuraavassa? char **names3; Mitä antaa sizeof (names3)? Sijoitukset names3 = names1; // ei ok names3 = names2; //on ok Kaikissa tapauksissa toimii: int i; Merkkijonotaulukot (esimerkkejä) for (i = 0 ; i < 4 ; i++) printf("%s", namesx[i]); //X voi olla 1,2 tai 3 HL 21
23 Komentoriviparametrit (Command line parameters) Ohjelmalle voidaan antaa käynnistyksen yhteydessä komentoriviparametreja. Käytännössä nämä ovat käytettävissä main-funktion parametreina. startup koodi vie parametrit pinoon ennen mainfunktion kutsua normaalin funktion kutsumenettelyn mukaan. int main (int argc, char **argv) { for (int i = 0 ; i < argc ; i++) printf( %s, argv[i]); //or printf( %s, *argv++); return 0; Oletus: Komentorivi on muotoa C:\>oh.exe aaa bb 123 Pino argc 4 argv o h. e x e \0 a a a \0 b b \ \0 HL 22
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ä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ätiedotMerkkijono 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ätiedotModuli 4: Moniulotteiset taulukot & Bittioperaatiot
C! : Moniulotteiset taulukot & Bittioperaatiot 15.3.2016 Agenda Pieni kertausharjoitus Moniulotteiset taulukot Esimerkki taulukoista Tauko (bittitehtävä) Binäärioperaatioista Esimerkki (vilkaistaan IP
Lisä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ä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ä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ä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ä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ä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ä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ä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ä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ä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ä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ätiedotTiedostot. 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ätiedotModuli 2: Osoittimet ja taulukot. Joel Huttunen
: Osoittimet ja taulukot 26.1.2016 Moduli 1 yhteenvetoa laskuharjoituksista (PS: palautteen saa jättää myös suomeksi jos haluaa) Ongelmia ympäristön asennuksessa Hoitakaa kuntoon ajoissa, niin loppukurssilla
Lisätiedot5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma
5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma Every cloud has a silver line. - englantilainen sananlasku Tässä osiossa tärkeää: yksi- ja moniulotteinen taulukko Sisältö Yleistä Yksiulotteinen
LisätiedotC-ohjelmointi: Osoittimet
C-ohjelmointi: Osoittimet Liisa Marttinen & Tiina Niklander 22.2.2005 Muistinhallinta Java vs C Luokka on viittaustyypin määritelmä ja olio on viittaustyypin ilmentymä Muistinhallinta on implisiittistä.
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Elegantti toteutus funktiolle insert_to_list_end Alkion lisäys sisällön mukaan järjestettyyn listaan (insert_to_list) Linkatun listan yleisyys alkiotyypin suhteen source-tasolla
LisätiedotLoppukurssin järjestelyt C:n edistyneet piirteet
C! Loppukurssin järjestelyt C:n edistyneet piirteet 30.3.2017 Ohjelmassa Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Esikääntäjä Parametrilistat Funktio-osoittimet Kunniamainintoja Kuura
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ätiedotLoppukurssin järjestelyt
C! Loppukurssin järjestelyt 29.3.2018 Ohjelmassa Yhteenvetoa palautteesta Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Kysyttävää / kerrattavaa 10-kierroksen asioista? Aikatauluista 10. kierroksen
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ä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ätiedotLuokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:
1. Luokan jäsenet Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat: class luokan_nimi tyypit: enum, struct, class, typedef
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin
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ä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ätiedotHarjoitus 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ä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ä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ä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ä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ätiedotTietorakenteet 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ätiedot1. Mitä seuraava ohjelma tulostaa? Vastaukseksi riittää yksi rivi joka esittää tulosteen. (6 p)
C- ohjelmoinnin peruskurssi, Tentti 28.5.2015 Lyhyt referenssi funktioista tehtäväpaperin lopussa. Paperilla on 5 tehtävää, joista useimmissa on muutama alikohta. Maksimipistemäärä on 30 pistettä. Kirjoita
LisätiedotLuennon sisältö. Taulukot (arrays) (Müldnerin kirjan luku 10) Yksiulotteiset taulukot. Mikä taulukko on? Taulukko-osoitin. tavallinen osoitin
, kevät 2006 Taulukot Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot Binääritiedostot Luento 8 21.3.2006 Kevät 2006 Liisa Marttinen 1 Luennon sisältö Taulukoiden käsittelyä Yksiulotteiset
LisätiedotC-ohjelmointi, syksy 2006
, syksy 2006 Taulukot Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot Binääritiedostot Luento 8 3.10.2006 Syksy 2006 1 Luennon sisältö Taulukoiden käsittelyä Yksiulotteiset taulukot
LisätiedotC-ohjelmointi, syksy Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot. Binääritiedostot. Luento
, syksy 2006 Taulukot Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot Binääritiedostot Luento 8 3.10.2006 Syksy 2006 1 Luennon sisältö Taulukoiden käsittelyä Yksiulotteiset taulukot
Lisätiedot13 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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n
LisätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
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ätiedotTaulukot. 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ätiedotModuli 5: Kehittyneitä piirteitä
C! : Kehittyneitä piirteitä 19.4.2016 Aikataulusta 5. harjoituskierroksen määräaika: pe 22.4. Maari-C keskiviikkoisin ja torstaisin (12-14) Ti 26.4. Harjoitustentti (eli kertausluento) Normaalin luennon
LisätiedotDynaamiset tietorakenteet
1 Dynaamiset tietorakenteet Muuttujien sijaintipaikat ja muut ominaisuudet Kuten tiedetään, muuttujan määrittely tarkoittaa tilan varausta muuttujalle. Tämä tila voidaan varata eri paikoista. Periaatteessa
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Useampitasoiset ADT:t Käytetään esimerkkiohjelmaa Ratkaisuyritys 1 Ratkaisuyritys 2 Lopullinen ratkaisu Lopullisen ratkaisun toteutusyritys Lopullisen ratkaisun oikea toteutus
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ä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ätiedotC++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi
1 C++11 Syntaksi Jari-Pekka Voutilainen 13.4.2012 2 Range-for Iteroi säiliön kaikki alkiot for-silmukassa. Säiliöltä vaaditaan begin- ja end-iteraattorit. Pätee kaikille C++11 STL-säiliöille, taulukoille,
LisätiedotTIETORAKENTEET JA ALGORITMIT
TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle
LisätiedotSisältö. C-ohjelmointi Luento 5: Osoittimet. Keko (heap) Pino (stack) Muistinhallinta Java vs C. Prosessin rakenne
Sisältö C-ohjelmointi Luento 5: Osoittimet 14.2.2006 Tiina Niklander Muistin rakenteesta Operaatiot ja void-tyyppi Muistinhallinta varaus, vapautus Osoitinaritmetiikka ja muistilohkon käsittely Osoittimet
LisätiedotKoottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.
2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet
LisätiedotC++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:
C++ rautaisannos Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout: # include #include main ( ) main (
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla
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ätiedotif-lauseen yksinkertaisin muoto on sellainen, missä tietyt lauseet joko suoritetaan tai jätetään suorittamatta.
if- valintarakenne Yksittäisen vaihtoehdon valinta if-lauseen yksinkertaisin muoto on sellainen, missä tietyt lauseet joko suoritetaan tai jätetään suorittamatta. Syntaksi: if (ehto) lauseita; Aaltosulkeiden
LisätiedotOhjelmoinnin 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ä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ätiedotTietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)
Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä
Lisätiedot3. Binääripuu, Java-toteutus
3. Binääripuu, Java-toteutus /*-------------------------------------------------------------/ / Rajapinta SearchTree: binäärisen hakupuun käsittelyrajapinta / / Metodit: / / void insert( Comparable x );
Lisätiedot#include <stdio.h> // io-toiminnot. //#define KM_MAILISSA int main( ){
demo1.c 30/09/15 08:19 #include // io-toiminnot //#define KM_MAILISSA 1.609 int main( ){ double mailit = 0.0; double kilometrit; const double KM_MAILISSA = 1.609; printf("anna maililukema > ");
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ätiedotOsoittimet. 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ätiedotSisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä
Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.
LisätiedotLuennon sisältö. C-kurssi kevät Tasokokeen kohta 1: Taulukon järjestäminen. Tasokokeen kohta 2. Tasokokeen kohta 2. Tasokokeen kohta 3
Luennon sisältö C-kurssi kevät 2006 Luento 2: tyypit, rakenteet, makrot 24.1.2006 Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö
LisätiedotC-kurssi kevät Luennon sisältö
C-kurssi kevät 2006 Luento 2: tyypit, rakenteet, makrot 24.1.2006 Luennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö
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ätiedotModulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä.
3. Funktiot Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä. Modulaarisuudella pyritään parantamaan ohjelman ymmärrettävyyttä, testattavuutta sekä
LisätiedotC++11 lambdat: [](){} Matti Rintala
C++11 lambdat: [](){} Matti Rintala bool(*)(int) Tarve Tarve välittää kirjastolle/funktiolle toiminnallisuutta Callback-funktiot Virhekäsittely Käyttöliittymät Geneeristen kirjastojen räätälöinti STL:n
Lisätiedot11. Javan toistorakenteet 11.1
11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin
Lisätiedot1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...
1. Tietorakenteet Tietorakenteet organisoivat samankaltaisten olioiden muodostaman tietojoukon. Tämä järjestys voidaan saada aikaan monin tavoin, esim. Keräämällä oliot taulukkoon. Liittämällä olioihin
LisätiedotBinäärioperaatiot Tiedostot ja I/O
C! Binäärioperaatiot Tiedostot ja I/O 8.3.2018 Tiedotteita Viimeinen luento to 29.3. Ohjelmointitehtävä, ohjelmointikoe ja niiden järjestelyt Ohjelmointikokeeseen ilmoittautuminen auki 2 .c tiedostot ja.h
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta
Lisätiedot15. oppitunti. Taulukot. Osa. Mikä on taulukko?
Osa IV 15. oppitunti Taulukot Aiemmissa luvuissa on käytetty yksinkertaisia int-, char-, yms. kohteita. Usein on kuitenkin tarvetta käyttää kohteiden kokoelmia, kuten joukkoa, jossa on 20 int-arvoa tai
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ä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ätiedotPerusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti
C! Perusteet 19.1.2015 Työkaluista Perinteinen: komentorivi + tekstieditori Editori: esimerkiksi Kate, Notepad++, Aquamacs (Emacs) Ohjelman kääntäminen ja suorittaminen komentoriviterminaalissa TMC - komentorivityökalu
LisätiedotHarjoitus 5 (viikko 48)
Moni tämän harjoituksen tehtävistä liittyy joko suoraan tai epäsuorasti kurssin toiseen harjoitustyöhön. Harjoitustyö edistyy sitä paremmin, mitä enemmän tehtäviä ratkaiset. Mikäli tehtävissä on jotain
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ätiedotMetropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne
Seuraavista tehtävistä saatu yhteispistemäärä (max 7 pistettä) jaetaan luvulla 3.5 ja näin saadaan varsinainen kurssipisteisiin laskettava pistemäärä. Bonustehtävien pisteet jaetaan luvulla 4 eli niistä
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ätiedot1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä
OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan
LisätiedotOhjelmoinnin jatkokurssi, kurssikoe 28.4.2014
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.
LisätiedotOhjelmointi funktioiden avulla
Ohjelmointi funktioiden avulla 8 Ohjelmointi funktioiden avulla Ohjelman jakaminen hallittaviin osiin on idea, joka on perustana kaikille ohjelmointikielille. Funktio on kaikkien C++-ohjelmien perusosa.
LisätiedotOhjelmointiharjoituksia Arduino-ympäristössä
Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet
Lisä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ätiedotOhjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:
1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri
Lisä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ätiedotLuennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö ja tulostu
C-kurssi Viikko 1: tyypit, rakenteet, makrot Luennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö ja tulostus Makrot
LisätiedotMetodien tekeminen Javalla
1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.
Lisä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ä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ätiedotOhjelmointi 1 / 2009 syksy Tentti / 18.12
Tentti / 18.12 Vastaa yhteensä neljään tehtävään (huomaa että tehtävissä voi olla useita alakohtia), joista yksi on tehtävä 5. Voit siis valita kolme tehtävistä 1 4 ja tehtävä 5 on pakollinen. Vastaa JOKAISEN
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ätiedotOhjeet. AS C-ohjelmoinnin peruskurssi Aalto-yliopiston sahkotekniikan korkeakoulu Tentti , Raimo Nikkila
AS-0.1103 C-ohjelmoinnin peruskurssi Aalto-yliopiston sahkotekniikan korkeakoulu Tentti 15.05.2013, Raimo Nikkila Ohjeet Kaikki ohjelmointitehtavat tulee toteuttaa C-kielella hyvaa ohjelmointityylia noudattaen.
LisätiedotSisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista
Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma
Lisä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ätiedot