Lyhyt kertaus osoittimista

Samankaltaiset tiedostot
Modulaarinen ohjelmointi Kertaus osoittimista

Tietueet. Tietueiden määrittely

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

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Rakenteiset tietotyypit Moniulotteiset taulukot

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa

Tietorakenteet ja algoritmit

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

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

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

Osoittimet ja taulukot

Osoitin ja viittaus C++:ssa

C-ohjelmointi, syksy 2006

C-ohjelmointi, syksy Yksiulotteiset taulukot Moniulotteiset taulukot Dynaamiset taulukot. Binääritiedostot. Luento

Luennon sisältö. Taulukot (arrays) (Müldnerin kirjan luku 10) Yksiulotteiset taulukot. Mikä taulukko on? Taulukko-osoitin. tavallinen osoitin

Java-kielen perusteet

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

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

Sisältö. C-ohjelmointi Luento 5: Osoittimet. Keko (heap) Pino (stack) Muistinhallinta Java vs C. Prosessin rakenne

TIETORAKENTEET JA ALGORITMIT

Tietorakenteet ja algoritmit

Dynaaminen muisti Rakenteiset tietotyypit

C-ohjelmointi: Osoittimet

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

1.1 Pino (stack) Koodiluonnos. Graafinen esitys ...

Moduli 5: Kehittyneitä piirteitä

Osoittimet ja taulukot

Ohjelmoinnin perusteet Y Python

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus

7. Oliot ja viitteet 7.1

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Harjoitus 4 (viikko 47)

2) Aliohjelma, jonka toiminta perustuu sivuvaikutuksiin: aliohjelma muuttaa parametrejaan tai globaaleja muuttujia, tulostaa jotakin jne.

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Loppukurssin järjestelyt

Loppukurssin järjestelyt C:n edistyneet piirteet

Listarakenne (ArrayList-luokka)

1. Mitä seuraava ohjelma tulostaa? Vastaukseksi riittää yksi rivi joka esittää tulosteen. (6 p)

Jakso 4 Aliohjelmien toteutus

18. Abstraktit tietotyypit 18.1

Luento 4 Aliohjelmien toteutus

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

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

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Tietorakenteet ja algoritmit

Muuttujien roolit Kiintoarvo cin >> r;

Java-kielen perusteet

Binäärioperaatiot Tiedostot ja I/O

Taulukot. Jukka Harju, Jukka Juslin

Binäärioperaatiot Tiedostot ja I/O

Tieto- ja tallennusrakenteet

Metodien tekeminen Javalla

3. Binääripuu, Java-toteutus

Ohjelmointi 1 Taulukot ja merkkijonot

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

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

Tietorakenteet ja algoritmit

ITKP102 Ohjelmointi 1 (6 op)

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

ITKP102 Ohjelmointi 1 (6 op)

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

Olio-ohjelmointi Syntaksikokoelma

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

Luento 4 Aliohjelmien toteutus

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:

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

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

C++11 lambdat: [](){} Matti Rintala

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

Algoritmit 2. Luento 2 To Timo Männikkö

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

Algoritmit 1. Luento 3 Ti Timo Männikkö

Harjoitus 5 (viikko 48)

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

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

#include <stdio.h> // io-toiminnot. //#define KM_MAILISSA int main( ){

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Jakso 4 Aliohjelmien toteutus. Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Monipuolinen esimerkki

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Tietorakenteet ja algoritmit - syksy

ITKP102 Ohjelmointi 1 (6 op)

Ohjeet. AS C-ohjelmoinnin peruskurssi Aalto-yliopiston sahkotekniikan korkeakoulu Tentti , Raimo Nikkila

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

1. Omat operaatiot 1.1

Ohjelmoinnin perusteet Y Python

Luento 4 (verkkoluento 4) Aliohjelmien toteutus

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

Jakso 4 Aliohjelmien toteutus

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

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

13 Operaattoreiden ylimäärittelyjä

A TIETORAKENTEET JA ALGORITMIT

Transkriptio:

, 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 osoittavat */ Nämä määrittelyt varaavat tilan vain osoittimelle! : muistilohko char *p = Tätä varten varataan muistitilaa ; int luvut[] = {1, 2,,, ; double taulu[100]; Nämä varaavat tilaa myös muistilohkolle sekä asettavat osoittimen osoittamaan ko. muistilohkoa. 678: 680: osoitin p ohjelmakoodi 70: funktio foo1 80: funktio foo2 Tilaa voidaan varata myös malloc- ja callocfunktioilla ja samalla asettaa jokin osoitin osoittamaan varattua muistilohkoa. 91: osoitin q Syksy 2007 2 1

Osoittimien käyttöä int **p; int *q,*r; int i; i= **p q = &i; /* i:n osoite q:n arvoksi i = *q+1; i = ++*q; /* i=6*/ i = *q++; /*???? */ r = q; *r = ; /* i= */ q i p char *pv = On aika ; On aika\0 void *p; i= *(int*) p; pv Syksy 2007 12 char viesti [] = On aika ; 9 const int *p; int const *p; const int const *p; viesti: On aika\0 Osoitin parametrina x:n osoite, y:n osoite C:ssä vain arvoparametreja => funktio käyttää vain kopioita eikö voi mitenkään muuttaa saamiensa parametrien arvoja: void swap(int x, int y) { int apu; kopioita apu=x; x=y; y= apu; void swap(int *x, int *y) { int apu; apu=*x; *x=*y; *y= apu; Kutsu: swap (&x, &y); Varmistaa, ettei funktio muuta viiteparametrina saamaansa lohkoa Syksy 2007 x y double product (const double block, int size); 2

Java: overriding C: funktio-osoittimet Esimerkki: funktio voi suorituksen aikana vaihtaa käyttämäänsä lajittelualgoritmia alkioiden lukumäärän perusteella int (*fp) (void); int *fp() Funktio, joka palauttaa inttyyppisen osoittimen! Osoitin int-tyypin palauttavaan funktiooon int fname(); /* kunhan funktio on oikean tyyppinen */ fp = fname; /* fp() merkitsee nyt samaa kuin fname() Funktion parametrina funktio void qsort(*line[], int left, int right, int (*comp)(void *, void*)); Syksy 2007 void main (void) { int choice; double x, fx; typedef double (*funcptr) (double ); funcptr fp;.. funcprt function[7] = {NULL, sin, cos, tan, log, log_2, exp; /*määriteltyjä funktioita*/ /* funktiomenun tulostus: käyttäjää valitsee haluamansa vaihtoehdon */. scanf ( %i, &choice); function [0] [1] [2] [] [] [] [6] /* lisäksi tarkistetaan, että valinta on sallittu arvo */ if (choice ==0) break; printf( Enter x: ); scanf( %lg, &x); fp = function[choice]; fx = fp(x); printf( \n (%g) = %g\n, x, fx); NULL sin cos tan log log_2 exp

Kurssikokeesta 19.10. klo 9-12 Kokeessa saa olla mukana A:n kokoinen muistilappu Syksy 2007 7 Vähän kokeesta: mitä pitää osata Aiempien kurssin asioista perusohjelmointi, algoritmien kirjoittaminen, tietorakenteiden käyttö( taulukko, lista, pino) ja niiden tavanomaiset käsittelyrutiinit (lisääminen, poisto ja järjestäminen) C-kielen syntaksi ja semantiikka. Kirjastorutiinien käyttöä ei sinänsä edellytetä, mutta erimerkiksi merkkijonojen ja tiedostojen käsittelyyn käytettävät tavanomaiset funktiot on syytä hallita. Kielen rakenteista on hyvä hallita ainakin: Funktioiden ja niiden parametrien käyttö Taulukko Tekstitiedosto Linkitetty tietorakenne ja osoittimet Komentoriviparametrit Merkkijonot Syksy 2007 8

Lisää kokeesta Näistä osattavista asioista muodostetaan sitten kokeessa erilaisia yhdistelmiä eri tehtävissä. Esimerkiksi toukokuun 200 kokeessa oli tehtävässä 1: funktion käyttöä ja tietojen lukemista käyttäjältä (eli tiedostosta stdin), tehtävässä 2: funktio, osoittimia ja linkitetyn listan kopiointi ja järjestäminen tehtävässä : Tekstitiedosto, komentoriviparametri ja taulukko Koska koeaikaa on vain 2, tuntia, niin kolmeen tehtävään vastaaminen edellyttää jonkinlaista rutiinia C-ohjelmien kirjoittamisessa Tätä rutiinia on saatu kurssin harjoitustehtäviä tehdessä! Muistilappu helpottaa asioiden muistamista! Syksy 2007 9