Operační systémy. Cvičení 4: Programování v C pod Unixem



Podobné dokumenty
Operační systémy. Cvičení 3: Programování v C pod Unixem

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Př. další použití pointerů

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

IUJCE 07/08 Přednáška č. 6

Algoritmizace a programování

Programování v C++ 1, 1. cvičení

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Algoritmizace a programování

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Větvení a cykly. Úvod do programování 1 Tomáš Kühr

Algoritmizace a programování

Cykly. Základy programování 1 Martin Kauer (Tomáš Kühr)

Programovací jazyk C++ Hodina 1

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

Úvod do programování - Java. Cvičení č.4

Dílčí příklady použití jazykových konstrukcí v projektu. Jazyk C Příklady. Pravidla překladu v gmake. Zadání

Základy programování (IZP)

Řídicí struktury. alg3 1

IUJCE 07/08 Přednáška č. 1

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

- jak udělat konstantu long int: L long velka = 78L;

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

Řídící struktury, if, while, switch

Koncepce (větších) programů. Základy programování 2 Tomáš Kühr

Např.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK;

Základy programování (IZP)

PROGRAMOVÁNÍ V C++ CVIČENÍ

Preprocesor. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík, 2016

Algoritmizace a programování

Funkce, intuitivní chápání složitosti

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

ZPRO v "C" Ing. Vít Hanousek. verze 0.3

Úvod do programování. Lekce 3

Programovani v Maplu Procedura

Algoritmizace a programování

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Základy algoritmizace a programování

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Struktura programu v době běhu

2 Datové typy v jazyce C

Mělká a hluboká kopie

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Základy algoritmizace a programování

Příkazy if, while, do-while, for, switch

Konstruktory a destruktory

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. October 17, 2016

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Jazyk C++, některá rozšíření oproti C

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

IUJCE Přednáška č. 11. další prvky globální proměnné, řízení viditelnosti proměnných, funkcí

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Řídící struktury, if, while, switch

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Základy programování (IZP)

VISUAL BASIC. Přehled témat

Algoritmizace a programování

Algoritmy a datové struktury

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Objektově orientované programování

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

C2110 Operační systém UNIX a základy programování

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Rozklad problému na podproblémy, rekurze

Více o konstruktorech a destruktorech

MIKROPROCESORY PRO VÝKONOVÉ SYSTÉMY

dostat zdroják Petr Zemek Fakulta informačních technologií VUT v Brně izemek

PB071 Programování v jazyce C

Opakování programování

Pointery II. Jan Hnilica Počítačové modelování 17

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

Množina čísel int stl-set-int.cpp

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

2. lekce Algoritmus, cyklus Miroslav Jílek

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Vstupní požadavky, doporučení a metodické pokyny

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Úvod do programování. Lekce 5

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Abstraktní třídy, polymorfní struktury

Programování v C++ 3, 3. cvičení

6 Příkazy řízení toku

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Ukazatel (Pointer) jako datový typ - proměnné jsou umístěny v paměti na určitém místě (adrese) a zabírají určitý prostor (počet bytů), který je daný

Prezentace a vysvětlení programového prostředí NXC

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

Transkript:

Operační systémy Cvičení 4: Programování v C pod Unixem 1

Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné na www nebo na počítačích v K327 v adresáři: ~trdlicka/os/c 2

Řídící struktury Větvení výpočtu if ( výraz ) { příkaz1; příkazn; else { příkaz1; příkazm; ; switch ( výraz ) { case hodnota1: příkaz1; break; case hodnotan: příkazn; break; default: příkaz; 3

Relační operátory < > <= >= ==!= menší než větší než menší než nebo rovno větší než nebo rovno rovnost nerovnost 4

Úkol Napište program, který interaktivně načte celé číslo a vypíše informaci, zda je sudé nebo liché. 5

Cykly Cyklus for() for (výraz1; výraz2 ; výraz3) { příkaz1; příkazn; Cyklus while() while (výraz) { příkaz1; příkazn; do { příkaz1; příkazn; while (výraz); 6

Příklad: sum.c Program sečte čísla na příkazové řádce. #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { int i, p, sum; printf("\npocet cisel na radce: %d\n", argc-1); printf("vlozena cisla: "); sum=0; for (i=1; i< argc; i++){ p=atoi(argv[i]); /* prevod retezce na int */ printf("%d, ", p); sum=sum+p; ; printf("\nsoucet cisel je: %d\n\n", sum); return (0); 7

Funkce Deklarace: Příklad: typ_výsledku jméno_funkce (seznam argumentů) { příkaz1; příkazn; return(výsledek); int sum (int a; int b) { return ( a + b ); 8

Příklad: content.c Program interaktivně načte poloměr kruhu a na standardní výstup vypíše obvod a plochu kruhu. #include <stdio.h> /* preprocesor sem vlozi obsah souboru stdio.h */ #define PI 3.14256 /* definice symbolicke konstanty */ float obvod (float a) /* funkce pro vypocet obvodu */ { return (2*PI*a); float obsah (float a) /* funkce pro vypocet plochy */ { return (PI*a*a); main() { float r; /* deklarace cisla typu float */ printf("\nzadej polomer:"); /* vypis na st. vystup */ scanf("%f", &r); /* cteni ze st. vstupu */ printf("\nobvod kruhu je %f", obvod(r)); printf("\nplocha kruhu je %f\n\n", obsah(r)); return (0); /* navratovy kod programu */ 9

Příklad: maximum.c Program najde nejvyšší číslo v poli. #include <stdio.h> #define MAX 10 int maximum (int *b) /* funkce vrati nejvyssi cislo v poli */ { int i,m; m=b[0]; for (i=1; i<max; i++) { if ( m < b[i] ) { m=b[i];; return (m); main() { int a[max]={ 9, 2, 7, 11, 33, 5, 88, -5, 17, 10 ; /* pole celych cisel */ printf("\nmaximum je %d.\n\n", maximum(a)); return (0); 10

Úkol Napište program, který z příkazové řádky přečte zadaná celá čísla a vypíše je na výstup v opačném pořadí. program 1 2 3 4 5 6 7 8 Výstup: 8 7 6 5 4 3 2 1 11

Dynamická alokace paměti funkce pro alokaci paměti void *malloc(size_t size); funkce pro dealokaci paměti void free(void *ptr); 12

Příklad: array.c Program ukazuje jak dynamicky alokovat pole. #include <stdio.h> main() { int i, n, *pa; printf("\nzadej pocet cisel:"); scanf("%d", &n); pa = (int *) malloc( n*sizeof(int) ); /* dynamicka alokace pole */ printf("pole cisel zacina na adrese %u\n", pa); for (i=0; i< n; i++) { printf("vloz cislo %d:", i); scanf("%d", &pa[i]); ; for (i=0; i<n; i++) { printf("na adrese %u je prvek pa[%d]=%d\n", &pa[i], i, pa[i]); ; free (pa); /* dealokovani pameti */ return (0); 13

Ladící program gdb Zdrojový program musíme kompilovat s přepínačem g. Spuštění programu: gdb program Příkazy gdb help prikaz (h) run parametr (r) break radka/funkce (b) list N info breakpoints (i) info locals delete (d) delete N (d N) vypíše velice stručnou informaci o příkazu spustí program s parametry definuje breakpoint na řádce nebo na vstupu funkce výpis zdrojových kódů okolo řádky N výpis všech definovaných breakpointů vypíše všechny lokální proměnné vymaže všechny breakpointy vymaže ntý breakpoint 14

Ladící program gdb (2) Příkazy gdb step (s) next (n) finish trasování se zanořuje do funkcí trasování se nezanořuje do funkcí dotrasuje až na konec aktuální funkce continue (c) backtrace (bt) print objekt (p) display objekt display pokračuje v běhu programu až do ukončení programu nebo breakpointu vypíše zásobník a aktuální pozici v programu vypíše obsah proměnné, adresu funkce a podobně vypíše seznam všech sledovaných objeků vypíše seznam všech sledovaných objeků 15

Ladící program ddd grafická nadstavba gdb. 16

Úkol Zkuste přeložit a krokovat příklad maximum.c. 17

Kde najít další informace Programování v C/C++ http://programovani.einstein.cz/clanek/programovani-v-c-1 Programming in C http://www.cs.cf.ac.uk/dave/c/ce.html 18