int main(void) int **matrix; matrix : malloc(5 * sizeof(int *) ); *matrix : malloc(20 * sizeof(int) ); #include <stdlib.h> #include <stdio.

Samankaltaiset tiedostot
Tietorakenteet ja algoritmit

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

Tietorakenteet ja algoritmit

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

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

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Loppukurssin järjestelyt C:n edistyneet piirteet

Rakenteiset tietotyypit Moniulotteiset taulukot

Tietueet. Tietueiden määrittely

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

Loppukurssin järjestelyt

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

Ohjelmointi 1 Taulukot ja merkkijonot

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

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

Tietorakenteet ja algoritmit

Ohjelmointiharjoituksia Arduino-ympäristössä

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

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Moduli 5: Kehittyneitä piirteitä

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

Ohjelmoinnin perusteet Y Python

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Tietotyypit ja operaattorit

Lyhyt kertaus osoittimista

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

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

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Harjoitustyö: virtuaalikone

Tietorakenteet ja algoritmit

Ohjelmoinnin peruskurssi Y1

ITKP102 Ohjelmointi 1 (6 op)

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

Tietorakenteet ja algoritmit

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

Osoittimet ja taulukot

Algoritmi ja abstraktio

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne

5.6. C-kielen perusteet, osa 6/8, Taulukko , pva, kuvat jma

Ohjeet. Jaa vastauksesi konsepteille siten, etta:

TIETORAKENTEET JA ALGORITMIT

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

Binäärioperaatiot Tiedostot ja I/O

13 Operaattoreiden ylimäärittelyjä

Dynaaminen muisti Rakenteiset tietotyypit

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

1. luento. Ohjelmointi (C) T0004 Syksy luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

Taulukot. Jukka Harju, Jukka Juslin

Ohjelmoinnin jatkokurssi, kurssikoe

C-ohjelmointi, syksy 2006

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

ITKP102 Ohjelmointi 1 (6 op)

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Ohjelmoinnin perusteet Y Python

Binäärioperaatiot Tiedostot ja I/O

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

ITKP102 Ohjelmointi 1 (6 op)

Java-kielen perusteet

C-ohjelmointi: Osoittimet

Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä.

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

Kirjoita, tallenna, käännä ja suorita alla esitelty ohjelma, joka tervehtii käyttäjäänsä.

Java-kielen perusteet

if-lauseen yksinkertaisin muoto on sellainen, missä tietyt lauseet joko suoritetaan tai jätetään suorittamatta.

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

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

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Moduli 2: Osoittimet ja taulukot. Joel Huttunen

Luennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö ja tulostu

Rakenne. C-ohjelmointi: Tietorakenteita ja tyyppejä. Tyyppimuunnoksia aritmeettisten tyyppien välillä. Tyyppimuunnokset. & (bitti and) Bittioperaatiot

2 Pistejoukko koordinaatistossa

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Osoittimet ja taulukot

Ohjelmoinnin perusteet Y Python

Muuttujien roolit Kiintoarvo cin >> r;

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Ohjelmoinnin perusteet Y Python

Java kahdessa tunnissa. Jyry Suvilehto

VOLKER BECK P. =H. o:_ie!r n^: =:l - dö5i6 = '1 arcii - a; +; s*. P <,R< qe 5 +ä a. c g-;i-(d1. ::qp io > iädaa :; 3fE,:E A. Ö!\lo: Y.

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

////// VENETIETO.FI \\\\\\ //// Autopilotti 2014 \\\\ //-PID säätimellä. #include <EEPROM.h> #include <SoftwareSerial.h>

Transkriptio:

AS-0.1101 C-ohjelmoinnin peruskurssi / Tentti 29.08.2006 / Aki Hiisilä Vastaa viiteen kvsvmvkseen! Tentin arvosteluasteikko on 0-30 pistenä. Kaikkien kysymysten painoarvo on sama (6 pistettatehtava). Ohjeimointitehtät tuiee kirjoittaa C-kieleiiä hyvää ohj elmlointityyliä noudattaen. Palauta kolme konseptia, siten etfå ensimmåiisellä konseptilla on vastaukset tehtiiviin I ja 2, toisella konseptilla vastaukset tehtiiviin 3 ja 4, sekä kolmannella konseptilla vastaukset tehtäviin 5ja 6. Tehtävä L Mita alla oleva ohjelma tulostaa? #include <stdlib.h> #include <stdio.h> int main(void) int **matrix; matrix : malloc(5 * sizeof(int *) ); *matrix : malloc(20 * sizeof(int) );.tr^- /.r *+.r _^. i<5; i++ ) rv! \!r1l f -v t matrixli]:matrixl0] + 4 * i; l for ( int j:0 ; )<4; j++ ) matrixtiltjl :10 * i + ); l/!rrrl! ^-.i^+.tr//fl- \ q nri n+ / ilh }/! rrr u! \ nri nl- f ( rt a nri nif / tlr nri n1- f I rr o m:l-riv[4.l nri ^+ F I rt P!rrru! \! %d\n", matrixt1lt1l); %d\n", * (matrix [3 ] ) ) ;?d\n", matrixt0l t11 I ) ; %d\n", matrix[3] - matrixtll); %d\n", *(*(matrix + 1) + 2)); : matrix[3]; %d, åd\n", matrix[4] [3], matrixl0l tlgl ); froa t/*m:.l- niv\. fraalm:,'riv\. return EXIT_SUCCESS;

Tehtävä 2 Tie6y määrä opiskelijoita räyttää kysymyslomakkeen, jossa on 25 kysymystä. Jokaiseen kysymykseen vasiataan arrtamaila vaihtoehdoksi iuku!,2,3, 4 tai 5. Laadi ohjelma, joka ensin k'"syy vasianneiden opiskelijoiden lukumäärän. Tämän jälkeen se lukee annetut vastaukset siten, että ensin luetaan ensimmäisen opiskelijan vastaukset lähtien kysymyksestä 1 ja päätyen kysymykseen 25, sitten toisen opiskelijan antamat vastaukset samalla tavalla jne. Kun kaikkien opiskelijoiden vastaukset on syötetty' ohjelma selvittää mihin kysymyksiin kaikki ovat vastanneet samalla tavalla. Lopuksi ohjelma tulostaa niiden kysymysten numerot, joihin kaikki ovat vastanneet samalla tavalla. Huomautus L: Tehtävä pitää funktioilla jakaa tehtäväkuvauksen mukaisiin tai muuten järkeviin osiin ja tietojen välitys on tehtävä parametreilla. Globaaleja muuttujia ei saa käyttää. Huomautus 2: Syöttötiedoille ei tarvitse tehdä muuta järkevyystarkastusta kuin, että vastausnumero on välillä 1...5. Huomautus3:ohje1mankäyttäjälleeitarvitseantaamitäänohjeitataikehotte1j3.. a

Tehtiivä 3 On olemassa abstrakti tietotyyppi piste, joka muodostuu tietotyypistä TPoint ja sen operaatiofunkiioista: void pointlnitialize(tpoint **p, float x0, float. y0); float pointdistance(const TPoint p1, const TPoint p2); void pointmove(tpoint *p, float deltax, float deltay); void pointdestruct(tpoint *p) ; Tietotyyppi TPoint on määritelty tietueeksi, joka sisältää pisteen paikan tasolla määrittämiseen tarvittavat tiedot (tässä x- ja y-koordinaatti). Funktio pointlnitialize varaa muistia pisteelle ja asettaa pisteen koordinaattiarvoiksi parametrina annetut arvot (x0, y0). Funktio pointdistance laskee kahden pisteen välisen etäisyyden ja funktio pointmove siirtaa pisteen paikkaa parametrien deltax ja deltay ilmoittamien suhteellisten siirtymien verran. pointdestruct vapauttaa pisteelle varatun tilan. Ympyrän tietoja ovat säde ja keskipiste. Ympyrän tietotyyppiin ei tällä kertaa sisällytetä keskipistettä kuvaavaa pistettä itseään, vaan vain osoitin pisteeseen. Tila keskipisteelle varataan dynaamisesta muistista ympyrän muodostamisen yhteydessä. Ympyrän muodostamiseen tehdään operaatiofunktio circlelnitialize. Ympyrällä on kaikkiaan seuraavat operaatiofunktiot: circlelnitialize, jolle voidaan antaa parametrina ympyrän keskipisteen x-koordinaatti, y-koordinaatti ja sade. Funktio varaa tilan ympyrälle ja asettaa sille keskipisteen ja säteen. circlemove, joka siirtää ympyrän paikkaa (parametrina deltax ja deltay). circledistance, joka laskee kahden ympyrän välisen etäisyyden (säteet huomioiden, jolloin etäisyys voi siis olla negatiivinen). circledestruct, joka vapauttaa ympyrälle varatun tilan. Toteuta ADT ympyrä ylliiesitettyjen periaatteiden mukaisesti eli miiåirittele tietotyyppi TCircle ja toteuta sen neljä operaatiofunktiota. Huomautus: Ympyrän operaatioita toteutettaessa on käytettävä hyvåiksi annettua ADT pistettä. Pisteelle ei kirj oiteta toteutusta.

Tehtåivä4 Toteuta seuraavat merkkij onoj a käsittelevät fu nktiot: /** Kääntää merkkijonon toisinpäin (esim. ABC -> CBA) - * Gparam str Merkkijono joka käännetään. */ void reverse(char *str) ; /** Lisää (liittää) merkkijonon n merkkijonon str perään. * Gparam str Osoitin merkkijonoon. * Gparam n Merkkijono, joka lisätään merkkijonon str perään. * Sreturn 0 jos onnistui, 1 virhetilanteissa. :1,ra int addtoend(char **str, const char *n); /** poistaa kaikki merkin c il_mentymät merkkijonosta str. * Gparam str Osoitin merkkijonoon. * Gparam c Merkki, jonka i-lmentymät poistetaan- * Greturn Kuinka monta merkkiä poistettiin tai -1 vi-rhetilanteissa. int removechars(char **str' char c); Iluomautus 1: Funktioiden pitää pitaä huoli siitii, että merkkijonolle on varattuna aina täsmälleen oikea määrä muistia.,.iv,.1,lå' '5 \t1,\ I c...ns n!, *b*u \

Tehtåivä5 Mitä alla oleva ohjelma tulostaa, kun oletetaan, että yksi tavu on kahdeksan bittiä? #incl-ude <stdlib. h> #incl-ude <stdio. h> void print_1(unsigned char byte) rzni rl nri nt ) ( ttnq i anad nh:r J'\\'f ^ \ vvru y! Lt!e_L \ ulrjryrreu vrtq! py Le I int maj-n (void ) unsigned char byte : 0x73; 1 nrinj- f /trä. lt\: t, nrinl- 1/-l-rrzfa\. pllvrl nri nj- f 1 rt \ nr. fr I : nri nf -l 14!rlu! \ y! llr U_r / \ vj l.rrzta Uv r. ' ' nrinl- f (tr\nc. il\: nr.inf.l r44rre!\\rfv.tfu_r\v)'sutl ll.rrzfa 0xFA) nrinl- f /ft\nt-). il\. nrinl- 1ll t/! lrr L! \ \rru., '_- \ Jyte >> Ll t nrintf 1[\nI]. il\. nr.ini_?/l.rrrfo\. I/! f Ir L! \ \Ir!. L I/! IIr u_- \ Vy Lg /, y! nr.in1- rrr ur f /ll\ne. \ \rrr. ll). l, nrint y! rrr L_å )(l,:lvt-a \!J LE. ^ 0x71 ) ; nrinif/il\nili. I/!!rru!\\arlI retutn EXIT_SUCCESS; void print_l(unsigned char byte) rrn q i anod char ma qlz. lrrs e J!, f or (mask : 0xB0; mask > 0; mask : mäsk )) 1) i f i/ l.rrzt a r- r! \vj ue nri nf i/ y! rrr L! \ else nri n1_ f / mask ) rrvn \. It^w \. ) ) void print_2(unsigned char byte) if(byte) print_2(byte >> 7); printf ( uåc", (byte e 0x01)? 'X' : 'o' ]

Tehtiivä 6 Sovelluksessa tarvitaan paljon funktioita, joilla kaikilla on prototyyppi muotoa double func(clouble a, double b); Funktiot (niiden osoitteet) tallennetaan taulukkoon, josta niitä on helppo hakea indeksillä (eli niiden paikkanumerolla taulukossa). Funktiotaulukon luonti, yksittäisen funktion tallentaminen taulukkoon ja funktion haku taulukosta halutaan tehdä selkeillä funktioilla, joiden nimet ovat funcarraycreate, funcarray S e tf unc ja funcarray G e tf unc. Funktiolle funcarraycreate annetaan parametriksi funktioiden maksimimäärä. Se varaa tilan funktiotaulukolle ja palauttaa funktiotaulukon osoitteen. Funktiolle/ttncArraySetFunc annetaan parametreina funktioltafuncarraycreate saatu funktiotaulukko, funktio joka tallennetaan funktiotaulukkoon ja paikan indeksi taulukossa, joka ilmoittaa mihin kohtaan taulukossa funktio tallennetaan. Funktio funcarraysetfunc yksinkertaisesti vain tallentaa funktion funktiotaulukkoon. Funktiolle funcarraygetfunc annetaan parametreina funktiotaulukko ja paikan indeksi taulukossa, josta funktio haetaan. Funktio funcarraygetfunc palauttaa funktion funktiotaulukosta parametrin ilmoittamasta paikasta. Kirjoita ylliimainitut kolme funktiota ja lyhyt påiåbhjelma, jolla näytät kuinka funktioita käytet?iän. Pääohjelmassa luodaan kahden funktion taulukko siten, että alkioon 0 tallennetaan funktio double sum(double a, double b) jaalkioonlfunktiodouble mul(double a, double b). Sitten pääohjelmassa haetaan funktio taulukon alkiosta 1 ja kutsutaan sitä parametreilla 6 ja 7, jolloin siis tulee suoritetuksi lukujen 6 ja 7 kertolasku, koska oletetaan, että funktio mul suorittaa kertolaskun. Huomautus: Funktioita sum ja mul ei tarvitse kirjoittaa, koska ne ovat itsestään selviä.