Loppukurssin järjestelyt

Samankaltaiset tiedostot
Loppukurssin järjestelyt C:n edistyneet piirteet

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

Binäärioperaatiot Tiedostot ja I/O

Tietueet. Tietueiden määrittely

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

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

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

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

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

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

Binäärioperaatiot Tiedostot ja I/O

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

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

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

Lyhyt kertaus osoittimista

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

ITKP102 Ohjelmointi 1 (6 op)

Tietotyypit ja operaattorit

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

Osoittimet ja taulukot

Modulaarinen ohjelmointi

C-ohjelmointi, syksy 2006

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

Moduli 2: Osoittimet ja taulukot. Joel Huttunen

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

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

ITKP102 Ohjelmointi 1 (6 op)

Ohjelmoinnin perusteet Y Python

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

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

Harjoitustyö: virtuaalikone

Harjoitus 4 (viikko 47)

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

ITKP102 Ohjelmointi 1 (6 op)

12 Mallit (Templates)

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

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

Olio-ohjelmointi Syntaksikokoelma

TIETORAKENTEET JA ALGORITMIT

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

Osoittimet ja taulukot

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

Ohjeet. Jaa vastauksesi konsepteille siten, etta:

Tietorakenteet ja algoritmit

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Java-kielen perusteet

Harjoitus 3 (viikko 39)

13 Operaattoreiden ylimäärittelyjä

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

3. Binääripuu, Java-toteutus

Tietorakenteet ja algoritmit

Modulaarinen ohjelmointi Kertaus osoittimista

Taulukot. Jukka Harju, Jukka Juslin

Java-kielen perusteet

Osoitin ja viittaus C++:ssa

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmointiharjoituksia Arduino-ympäristössä

Harjoitus 2 (viikko 45)

C-ohjelmointi: Osoittimet

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

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

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

Tietorakenteet ja algoritmit


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

7. Näytölle tulostaminen 7.1

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

ITKP102 Ohjelmointi 1 (6 op)

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

815338A Ohjelmointikielten periaatteet

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Harjoitus 5 (viikko 48)

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

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

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

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

Ohjausrakenteet. Valinta:

Ohjelmointi 1 Taulukot ja merkkijonot

1. Omat operaatiot 1.1

11. Javan valintarakenteet 11.1

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

T harjoitustehtävät, syksy 2011

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin peruskurssien laaja oppimäärä

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

Transkriptio:

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 määräaika è ti 3.4. Viikolla 2.4. 6.4. ei harjoituksia (tenttiviikko) Sen jälkeen kaksi viikkoa harjoituksia 9.4. 20.4. Apua ohjelmointitehtävään Ohjelmointitehtävän deadline: pe 20.4. klo 23:59

Kunniamainintoja Dani Korpela Jaakko Majuri Eeli Susan

Ohjelmointitehtävä Aihe valittu satunnaisesti Toteuta kokonainen ohjelma tyhjästä Palauta ohjelma TIM:iin Yksi.h otsaketiedosto ja yksi.c - lähdetiedosto Ohjelma testataan TIM-järjestelmässä (Ubuntu 16.04) Kehitä kuitenkin ohjelma omalla tai koulun koneella Arviointi pisteytyksellä 0 10 pistettä Kriteerit tehtävänannon yhteydessä Vähintään 5 pistettä vaaditaan Arviointi ihmisvoimin: myös tyyli ratkaisee

Ohjelmointikoe Järjestetään joukossa mikroluokkia 3.5. 9.5. Muista ilmoittautua! Osallistuminen muuten mahdotonta 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 Koneet tenttimoodissa: Ei kotihakemistoja Mikroluokasta yhteydet maailmalle blokattu, paitsi Harjoitustentti: https://tim.aalto.fi/view/elec-a7100/kokeet/harjoituskoe Ei automaattista arviointia Voit testata ohjelmia järjestelmässä itse

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 2.4. 6.4. ei harjoituksia (tenttiviikko) Sen jälkeen kaksi viikkoa harjoituksia 9.4. 20.4. Apua ohjelmointitehtävään 10. kierroksen deadline 3.4. Ohjelmointitehtävän deadline 20.4. Kokeet 3.5. 9.5. Jos osasuoritteita puuttuu kokeen jälkeen, ota yhteyttä Älä jätä kurssia ensi vuodelle roikkumaan!