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

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

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

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

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

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

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

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

- dělají se také pomocí #define - podobné (použitím) funkcím - předpřipravená jsou např. v ctype.h. - jak na vlastní makro:

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 -

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

Algoritmizace a programování

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Pole stručný úvod do začátku, podrobně později - zatím statická pole (ne dynamicky) - číslují se od 0

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

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

DUM 06 téma: Tvorba makra pomocí VBA

Funkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr

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

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

Základy programování (IZP)

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

Dynamická vícerozměrná pole. Základy programování 2 Tomáš Kühr

Základy programování (IZP)

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

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

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

Programovací jazyk C++ Hodina 1

2 Datové typy v jazyce C

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

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

Abstraktní datové typy, moduly

Základy programování (IZP)

Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března

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

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

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

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

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

8 Třídy, objekty, metody, předávání argumentů metod

Programování v jazyce C pro chemiky (C2160) 10. Grafická knihovna g2

PODPROGRAMY PROCEDURY A FUNKCE

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Maturitní otázky z předmětu PROGRAMOVÁNÍ

int => unsigned int => long => unsigned long => float => double => long double - tj. bude-li:

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

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

Úvod do programování. Lekce 1

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

dovolují dělení velkých úloh na menší = dekompozice

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

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

Sada 1 - Základy programování

Struktura programu v době běhu

Práce se soubory. Základy programování 2 Tomáš Kühr

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

Aplikace Embedded systémů v Mechatronice. Michal Bastl A2/713a

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku

Hotelová škola, Obchodní akademie a Střední průmyslová škola Teplice,Benešovo náměstí 1, příspěvková organizace

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

NPRG030 Programování I, 2015/16 1 / :25:32

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

Algoritmizace a programování

Opakování programování

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

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

C# konzole Podíl dvou čísel, podmínka IF

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

Jazyk C++ II. Šablony a implementace

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Jazyk symbolických adres

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

ČÁST 1. Základy 32bitového programování ve Windows

Výčtový typ strana 67

Přílohy. Příloha 1. Obr. P1.1 Zadání úlohy v MS Excel

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

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

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

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.

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

Obr. P1.1 Zadání úlohy v MS Excel

Základy jazyka C. Základy programování 1 Tomáš Kühr

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

1. Téma 03 - Rozhodování

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Semestrální práce KIV/PC Řešení kolizí frekvencí sítě vysílačů Zdeněk Bečvář A14B0466P 10. ledna 2016

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

Programovací jazyk Pascal

Úvod do programovacích jazyků (Java)

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

Sdílení dat mezi podprogramy

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

1. Programování proti rozhraní

Zápis programu v jazyce C#

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

Transkript:

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

Parametry a návratová hodnota main Již víme, že main je funkce A také tušíme, že je trochu jiná než ostatní funkce v programu Funkce main je volána operačním systémem při spuštění programu Při tomto volání mohou být programu předávány parametry Funkce main může mít Žádný parametr int main(){... } Nebo dva parametry int main(int argc, char* argv[]){... } Typu int a pole textových řetězců Návratová hodnota main může být také zpracována operačním systémem

Předání parametrů programu Parametry lze předat při spuštění z příkazového řádku (či skriptem)./xpm2eps -f nam.xpm -o nam.eps -by 10 xpm2eps.exe -f nam.xpm -o nam.eps -by 10 Do argc se načte počet řetězců Do pole argv se vloží uvedené řetězce (včetně jména programu) Jako oddělovače řetězců v příkazovém řádku slouží bílé znaky (mezery) Lze předat i řetězec obsahující mezery, stačí jej dát do uvozovek pokus.exe 125 "ahoj svete" neco Řetězce v poli argv se nedoporučuje měnit Pro konverzi textového řetězce na číslo lze použít Funkci atoi: int pocet = atoi(argv[1]); Funkci atof: double cislo = atof(argv[2]);

Koncepce větších programů Při vytváření rozsáhlejších programů je potřeba Umožnit souběžnou práci více programátorů Zajistit co největší přehlednost kódu Minimalizovat množství kódu, který se kompiluje při drobných změnách (ušetřit čas) Bývá rozumné rozdělit zdrojový kód do více souborů Každý soubor by měl být co nejvíce nezávislý na ostatních Nelze se ale zcela vyhnout volání funkcí z jiných souborů Ojediněle je potřeba i sdílení globálních proměnných nebe datových typů Na druhou stranu je nutné zabránit nechtěnému sdílení při náhodném použití stejného identifikátoru na více místech

Oddělený překlad Překlad každého zdrojového souboru probíhá samostatně Z každého zdrojového souboru vznikne tzv. objektový soubor (OBJ soubor) Objektové soubory jsou poté spojeny do jednoho spustitelného souboru (EXE soubor) Stačí tedy překládat jen změněné zdrojové soubory Ve větším týmu lze objektové soubory sdílet místo zdrojových souborů Vývojové nástroje organizují soubory do projektů Překlad i spojení se pak provádí jediným kliknutím V prostředí Linuxu (UNIXu) se často používá utilita make

Hlavičkové soubory Zajišťují předání informací o zdrojových souborech, které jsou nezbytné už při kompilaci jiných zdrojových souborů Obsahují typicky informace o funkcích, globálních proměnných, datových typech které jsou používané i v dalších zdrojových souborech Mají příponu.h, název odpovídá zdrojovému souboru, který popisují Přidávají se pomocí direktivy #include do dalších souborů Problémy s vícenásobným vložením běžně řešíme pomocí #ifndef JMENO_H #define JMENO_H... #endif

Sdílení a obrana proti sdílení Sdílené proměnné a funkce definujeme v jediném zdrojovém souboru Jejich deklarace pak vložíme do hlavičkového souboru a označíme je jako extern extern int pocet; extern double fce(double); Pokud na programu pracuje více programátorů Mohou náhodně zvolit stejné identifikátory I když tyto proměnné a funkce nemají být sdílené Nesdílené globální proměnné a funkce necháme jen ve zdrojovém souboru a označíme je jako static static int pocet = 12; static double fce(double x){... } Použití static je silnější než označení extern v jiném souboru

Shrnutí doporučení Obsah následujících snímků je převzat z knihy Pavla Herouta Větší program rozdělit do částečně samostatných modulů Modul obvykle tvoří hlavičkový a zdrojový soubor Mezi moduly sdílet co nejméně funkcí a nejlépe žádné globální proměnné Vše globální, co není sdílené, označit jako static Vše sdílené umístit do hlavičkového souboru modulu a přidat označení extern Hlavičkové soubory přidat pomocí include do dalších modulů (jen tam, kde jsou potřeba) Zásadně nepřidávat přímo zdrojové soubory

Doporučená struktura zdrojových souborů 1. Dokumentace komentář (jméno modulu, verze, autor, datum,...) 2. Všechny potřebné direktivy include Nejprve všechny systémové hlavičkové soubory Pak vlastní hlavičkové soubory 3. Definice sdílených globálních proměnných (tady bez extern) 4. Lokální direktivy define (konstanty a makra) 5. Definice nesdílených typů (nejlépe pomocí typedef) 6. Nesdílené globální proměnné označené jako static 7. Deklarace nesdílených funkcí (sdílené funkce nedeklarujeme, ale jen vložím hlavičkový soubor modulu) 8. Definice funkcí doporučené pořadí: main (pokud je), sdílené, nesdílené (s označením static)

Doporučená struktura hlavičkových souborů 1. Dokumentace komentář (jméno modulu, verze, autor, datum,...) 2. Podmíněný překlad proti opakovanému vložení souboru (vše co následuje je uvnitř konstrukce PP) 3. Případné direktivy include (pokud jsou nezbytné) 4. Definice sdílených konstant 5. Definice sdílených maker 6. Definice sdílených typů (nejlépe pomocí typedef) 7. Deklarace sdílených proměnných (s označením extern) 8. Deklarace sdílených funkcí (s označením extern)

Cvičení Objemy a povrchy Napište program pro výpočet objemu a povrchu válce, pravidelného trojbokého, čtyřbokého a šestibokého hranolu. Parametry výpočtu by mělo být možné předávat programu při spuštění z příkazové řádky. Zdrojový kód programu by měl být rozdělen do 2 modulů. Modul hlavní funkce (soubor main.c) bude zajišťovat zpracování a případně načtení chybějící parametrů výpočtu, budou z něj volány funkce zajišťující vlastní výpočet a vypisovány vypočítané hodnoty na obrazovku. Druhý modul (soubory vypocet.h a vypocet.c) pak bude zajišťovat veškeré požadované výpočty. Při řešení úlohy dbejte všech zásad zmíněných v prezentaci. Příklady použití naleznete na http://jazykc.inf.upol.cz/celkova-koncepceprogramu/objemy-a-povrchy.htm.