Loppukurssin järjestelyt C:n edistyneet piirteet

Samankaltaiset tiedostot
Loppukurssin järjestelyt

Moduli 5: Kehittyneitä piirteitä

Rakenteiset tietotyypit Moniulotteiset taulukot

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

Dynaaminen muisti Rakenteiset tietotyypit

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

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

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

Tietueet. Tietueiden määrittely

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

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

Binäärioperaatiot Tiedostot ja I/O

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

ITKP102 Ohjelmointi 1 (6 op)

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

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

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

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

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

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

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

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

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

Tietotyypit ja operaattorit

C-ohjelmointi, syksy Modulaarinen ohjelmointi. Luento C-ohjelmointi Syksy

Modulaarinen ohjelmointi

Osoittimet ja taulukot

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

Lyhyt kertaus osoittimista

ITKP102 Ohjelmointi 1 (6 op)

12 Mallit (Templates)

Binäärioperaatiot Tiedostot ja I/O

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Moduli 2: Osoittimet ja taulukot. Joel Huttunen

C-ohjelmointi, syksy 2006

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

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

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

ITKP102 Ohjelmointi 1 (6 op)

Tietorakenteet ja algoritmit

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

Osoitin ja viittaus C++:ssa

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Ohjelmoinnin perusteet Y Python

Olio-ohjelmointi Syntaksikokoelma

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

Osoittimet ja taulukot

Ohjeet. Jaa vastauksesi konsepteille siten, etta:

Harjoitustyö: virtuaalikone

// // whiledemov1.c // #include <stdio.h> int main(void){ int luku1 = -1; int luku2 = -1;

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

7. Näytölle tulostaminen 7.1

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

Java-kielen perusteet

13 Operaattoreiden ylimäärittelyjä

Taulukot. Jukka Harju, Jukka Juslin

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

Modulaarinen ohjelmointi Kertaus osoittimista

3. Binääripuu, Java-toteutus

TIETORAKENTEET JA ALGORITMIT

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Java-kielen perusteet

Tietorakenteet ja algoritmit

Ohjelmointiharjoituksia Arduino-ympäristössä

Harjoitus 4 (viikko 47)

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

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

C-ohjelmointi: Osoittimet

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

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

815338A Ohjelmointikielten periaatteet

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Ohjausrakenteet. Valinta:

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

Ohjelmoinnin perusteet Y Python

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

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

1. Omat operaatiot 1.1

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

11. Javan valintarakenteet 11.1

Ohjelmoinnin perusteet Y Python

Harjoitus 3 (viikko 39)

Luennon sisältö. C-kurssi kevät Tasokokeen kohta 1: Taulukon järjestäminen. Tasokokeen kohta 2. Tasokokeen kohta 2. Tasokokeen kohta 3

C-kurssi kevät Luennon sisältö

Tietorakenteet ja algoritmit

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

Olio-ohjelmointi Javalla

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet Y Python

Kääntäjän virheilmoituksia

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

Jakso 4 Aliohjelmien toteutus

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

ITKP102 Ohjelmointi 1 (6 op)

Harjoitus 2 (viikko 45)

Ohjelmointi 1 Taulukot ja merkkijonot

Transkriptio:

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 Parkkola Ella Hakala Oskar Tainio Pyry Aalto

Aikatauluista Viikolla 3.4. 7.4. ei harjoituksia (tenttiviikko) Sen jälkeen kaksi viikkoa harjoituksia 10.4. 21.4. 10. tehtäväkierros Apua ohjelmointitehtävään

Ohjelmointitehtävä Neljä vaihtoehtoista aihetta, kullekin valittu yksi Toteuta kokonainen ohjelma tyhjästä Palauta ohjelma MyCoursesiin tiedostopalautuksena Max. 3.c tai.h päätteistä tiedostoa Ohjelman tulee toimia Aallon Linux-järjestelmillä Arviointi pisteytyksellä 0 10 pistettä Kriteerit tehtävänannon yhteydessä Vähintään 5 pistettä vaaditaan Muunnetaan osa-arvosanaksi, paino 20% kokonaisarvosanasta Arviointi ihmisvoimin: myös tyyli ratkaisee

Ohjelmointikoe Järjestetään joukossa mikroluokkia 3.5. 8.5. Muista ilmoittautua! Osallistuminen muuten mahdotonta Ilmoittaudu vain yhteen! Poistamme duplikaatti-ilmoitukset ennen tenttiä Säännöt kuten muissakin tenteissä Kesto kolme tuntia Poistua saa ensimmäisen tunnin jälkeen Tunnin jälkeen koetta ei saa enää aloittaa

Ohjelmointikoe Tehdään selaimella TIM-systeemiin Kysymykset valitaan satunnaisesti Tentin aikana järjestelmään pääsee vain tenttiluokista Erillinen tenttitunnus è ei kotihakemistoja Mikroluokasta yhteydet maailmalle blokattu, paitsi tim.aalto.fi http://en.cppreference.com/w/c Harjoitustentti: https://tim.aalto.fi/view/elec-a7100/kokeet/harjoituskoe Ei automaattista arviointia

Esikääntäjä Käsittelee lähdekoodia ennen varsinaista käännösvaiheetta Tuotos pysyy tekstimuotoisena Esimerkiksi: #include tiedostojen sisällön liittäminen ohjelmaan Kommenttien poisto Erikoismerkkien käsittely (esim. \n ) Esikäännöksen direktiivit alkavat # - merkillä Rivin alusta rivin loppuun ei puolipistettä Pelkän esikäännöksen voi ajaa gcc E komennolla 8

#include Sisällyttää toisen tiedoston osaksi lähdekoodia Funktiorajapintojen määrittelyt Tietotyyppien, vakioiden, ym. määrittelyt #include <tiedosto> Käytetään standardikirjaston otsikkotiedostoihin #include tiedosto Käytetään omiin otsikkotiedostoihin Periaatteessa minkä tahansa tiedoston voi sisällyttää Eivät saa sisältää funktioiden toteutuksia.h - nimeämiskäytäntö 9

#define Määrittelee esikääntäjämakron joka korvataan annetulla tekstillä #define NIMI arvo Esim: #define NULL ((void *)0) Yleinen käytäntö: makrojen nimet isoilla kirjaimilla #include <string.h> #define MAXSTRING 80 int main(void) { char str[maxstring]; strncpy(str, "string", MAXSTRING - 1); } ( arvo voisi olla myös joku merkkijono) 10

#define-makrot parametreilla Makroon voi myös määrätä parametreja Korvautuvat annetulla sisällöllä esikäännösvaiheessa #include <stdio.h> #define PLUS(x,y) (x + y) Huomaa sulkujen käyttö int main(void) { int a = 2 * PLUS(3,4); printf( %d\n", a); } Tulostaa 14 11

#if, #else, #elif #endif Esikäännösvaiheen ehtorakenteet Ehtolausekkeet ja totuusarvot toimivat kuten normaalisti #elif tarkoittaa else if Esimerkiksi kaksi erilaista versiota rajapinnasta #if (VERSION == 1) #include "hdr_ver1.h" #elif (VERSION == 2) #include "hdr_ver2.h" #else #error "Unknown version" #endif #error aiheuttaa käännösvirheen Suoritettavaa ohjelmaa ei tällöin synny 12

Ehto-operaattori Vaihtoehto if-else rakenteelle Kolmiosainen operaattori Muoto: a > b? x : y; Operaattorin tulos on joko x tai y

Parametrilistat Eli: miten printf ja scanf on toteutettu?

Virtuaalimuistin rakenne mm. paikalliset muuttujat 0xFFFF FFFF FFFF FFFF Dynaamisesti varattu muisti Koodi ja vakiomerkkijonot 0x0000 0000 0000 0000 15

Funktio-osoittimet Osoitin voi viitata myös funktioon (eli koodiin) Funktiota voi tällöin kutsua osoittimen kautta Funktio-osoittimen tyyppi koostuu useasta osasta Paluuarvon tyyppi Parametrien tyypit Formaatti: paluuarvo (*nimi)(ptyyppi1, ptyyppi2, ) nimi on muuttujan nimi, johon funktion osoite talletetaan ptyyppi1, jne. Funktion parametrien tyypit Paluuarvo ja parameterit voivat olla myös void 16

Funktio-osoittimien määrittely #include <stdlib.h> int funcadd(int a) { return a + 1; } int main(void) { // The following declares four variables for function pointers int (*add_one)(int) = funcadd; void* (*varaa)(size_t); void (*vapauta)(void *); void* (*varaa_uudestaan)(void *, size_t); // above pointers are now uninitialized } // set the pointers to the addresses of functions in C library varaa = malloc; vapauta = free; varaa_uudestaan = realloc; 17

Funktio-osoittimen käyttö Funktio-osoitinta voi käyttää kuten mitä tahansa muuttujaa Funktion parametreina Funktion paluuarvona Paikallisena muuttujana Osana rakenteista tietotyyppiä Määrittely voi olla syntaktisesti hankalaa joissain yhteyksissä Esim. funktion paluuarvona Funktion kutsu tapahtuu muuttujan nimen kautta (esimerkki verkkomateriaalissa) 18

Esimerkki funktio-osoittimesta parametrina: qsort qsort funktio on määritelty stdlib.h otsakkeessa Järjestää taulukon annettua järjestysfunktiota käyttäen Toimii millä tahansa tietotyypillä (myös rakenteisilla tyypeillä) Järjestysfunktio pitää määritellä itse void qsort (void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)); 19

Luolapeli ja Makefile Make: työkalu, jolla voidaan ohjata käännösprosessia Makefilessä voidaan esimerkiksi määritellä erilaisia esikäännösmakroja tilanteen / tietokoneympäristön mukaan Isoissa projekteissa makefile generoidaan (esim. Cmakella) Käännösohjeet määritelty Makefilessä

Lisää C:tä (ja C++:aa)? ELEC-A7150 C++ Programming Periodit I - II ELEC-C7241 Tietokoneverkot Periodit III IV ELEC-C7310 Sovellusohjelmointi Periodit I II CS-C3100 Computer Graphics Periodit I II (Varmaan joitain muitakin)

Eli: Viikolla 3.4. 7.4. ei harjoituksia (tenttiviikko) Sen jälkeen kaksi viikkoa harjoituksia 10.4. 21.4. 10. tehtäväkierros Apua ohjelmointitehtävään 10. kierroksen deadline 21.4. Ohjelmointitehtävän deadline 21.4. Kokeet 3.5. 8.5. Jos jotain puuttuu kokeen jälkeen, ota yhteyttä