Rozsáhlé programy = projekty



Podobné dokumenty
Odvozené a strukturované typy dat

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

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

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

Úvod do programovacích jazyků (Java)

PB161 Programování v jazyce C++ Přednáška 10

Základy programování (IZP)

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

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

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

Výčtový typ strana 67

Vstup a výstup datové proudy v C

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

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

Programovací jazyk C++ Hodina 1

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

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

PB161 Programování v jazyce C++ Přednáška 10

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

Jazyk C++ I. Polymorfismus

katedra informatiky FEI VB-TU Ostrava 10. jna 2005 etr aloun (katedra informatiky FEI VB-TU Ostrava) Dal vrazy 10. jna / 25

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

Opakování programování

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

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

Úvod do programování. Lekce 1

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

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

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

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

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

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

Úvod do programovacích jazyků (Java)

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

Šablonové metaprogramování v C++ Miroslav Virius KSI FJFI ČVUT

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

Třídy a struktury v C++

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

Rekurze. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava. Prezentace ke dni 12.

Kalendář na stěnu A3 nastojato

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

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

Řešení sady 1. Úvod do programování 1 Tomáš Kühr

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

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

(a) vyšší programování se provádí pomocí příkazů, program je psán v tzv zdrojovém kódu. Tyto příkazy jsou člověku bližší a programování je pro

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í

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

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

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

Algoritmizace a programování

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

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.

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

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

PB přednáška (23. listopadu 2015)

EVERY SATURDAY! EVERY SATURDAY EVERY SATURDAY EVERY SATRUDAY. Station. Station. Station. Station. e 1 / 20

Algoritmizace a programování

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

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

Poslední nenulová číslice faktoriálu

Algoritmizace a programování

PROGRAMOVÁNÍ V C++ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH ROSTISLAV FOJTÍK

Základy programování (IZP)

Konec a tak. PB173 Programování v C++11. Vladimír Štill, Jiří Weiser. Fakulta Informatiky, Masarykova Univerzita. 15.

Základy programování (IZP)

Algoritmizace a programování

Jazyk C++ I. Šablony 3

Objektově orientované programování

Softwarové komponenty a Internet

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

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

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 -

PREPROCESOR POKRAČOVÁNÍ

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

Základy C++ I. Jan Hnilica Počítačové modelování 18

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

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

Zápis programu v jazyce C#

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;

Úvod do programování. Lekce 3

AUTHOR : Robert Follner DATE. Abstrakt ABSTRACT: Několik poznatků autora (Robert Follner) z programování

Základy programování (IZP)

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

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

IPA - Lab.1 Úvod do programování v ASM

Pokročilé programování v jazyce C pro chemiky (C3220) Úvod do jazyka C++

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

4. Rekurze. BI-EP1 Efektivní programování Martin Kačer

Základy programování (IZP)

IB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat

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

Metodický list. EU-OPVK-CJ-A1ST-39 strana 1. Zařazení materiálu:

10 Práce s řetězci - pokračování

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

Cvičení z programování v C++ ZS 2016/2017 Přemysl Čech

Berger Blanc Suisse. Dag-mar travel s.r.o. česká cestovní agentura / czech incomming travel agency / tschechische Reiseagentur

Programování v jazyce C pro chemiky (C2160) 11. Vizualizace sekvence proteinů

2 Datové typy v jazyce C

BEZPEČNOST ÚDRŽBA ELEKTŘINA

Transkript:

Rozsáhlé programy = projekty Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 28. listopadu 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 1 / 13

Programový projekt definice versus deklarace c/cpp zdrojové texty versus h hlavičkové soubory rozdělení projektu na logické celky, interface do.h a #include možný inkrementální překlad make/ant a překladač gcc versus vývojové nástroje (Visual Studio, Eclipse) (popis závislostí v projektu) Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 2 / 13

Činnost překladače zdrojový text knihovní deklarace překladač objektový kód knihovní definice spojovací program proveditelný kód Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 3 / 13

Projekt schema Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 4 / 13

Příklad projektu přehled 1 Soubor s funkcí main() tvoří rozhraní a volá funkce. 2 Převod celého čísla (den v týdnu) na řetězec. 3 Celočíselný argument funkce pro výpočet faktoriálu a hodnoty členu Fibonacciho posloupnosti. Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 5 / 13

Projekt soubory stdio.h funkce.h kalendar.h funkce.c prj-demo.c kalendar.c funkce.obj prj-demo.obj kalendar.obj std-knihovny prj-demo Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 6 / 13

kalendar.c #i n c l u d e k a l e n d a r. h const char e den s d e n ( tden d, tlang l ) / p ř e v e d e v ý č t o v ý den v týdnu na o d p o v í d a j í c í ř e t ě z e c ve zvoleném j a z y c e / { s t a t i c char sdny [ ebe +1][eNE+1] = {{ p o n d e l i, u t e r y, s t r e d a, c t v r t e k, patek, sobota, n e d e l e }, { Monday, Tuesday, Wednesday, Thursday, F r i d a y, Saturday, Sunday } } ; return sdny [ l ] [ d ] ; } / c o n s t char e d e n s d e n ( tden d, tlang l ) / Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 7 / 13

kalendar.h typedef enum {epo, eut, est, ect, epa, eso, ene} tden ; / v y c t o v y typ pro den v tydnu PONDELI.. NEDELE > epo.. ene ( 0.. 6 ) / typedef enum {ecz, ebe} tlang ; / v y c t o v y typ pro j a z y k : CZ c e s t i n a BE B r i t i s h E n g l i s h / const char e den s den ( tden d, tlang l ) ; / p ř e v e d e v ý č t o v ý den v týdnu na o d p o v í d a j í c í ř e t ě z e c ve zvoleném j a z y c e / Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 8 / 13

funkce.c #i n c l u d e f u n k c e. h double f a c t ( i n t n ) { double f = 1. 0 L ; f o r ( ; n > 0 ; n ) f = n ; return f ; } / double f a c t ( i n t n ) / long f i b ( long n ) { i f ( n == 1) return 1 ; e l s e i f ( n == 2) return 2 ; e l s e return f i b ( n 1) + f i b ( n 2 ) ; } / l o n g f i b ( l o n g n ) / Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 9 / 13

funkce.h double f a c t ( i n t n ) ; / v y p o c t e n f a k t o r i á l pro n < 0 v r á t í 1 / long f i b ( long n ) ; / v r á t í hodnotu n tého c l e n u F i b b o n a c i h o p o s l o u p n o s t i / Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 10 / 13

prj-demo.c #i n c l u d e <s t d i o. h> #i n c l u d e f u n k c e. h #i n c l u d e k a l e n d a r. h i n t main ( void ) { i n t i = 1; tden eden ; do { p r i n t f ( \ nzadej c i s l e m den v tydnu <0, 6>: ) ; s c a n f ( %d, &i ) ; } while ( i < 0 i > 6 ) ; eden = ( tden ) i ; p r i n t f ( \ nzadal j s i : %s ( a n g l i c k y : %s )\ n, e d e n s den ( eden, ecz ), e d e n s d e n ( eden, ebe ) ) ; do { p r i n t f ( \ nzadej c e l e c i s l o do 2 0 : ) ; s c a n f ( %d, &i ) ; } while ( i < 0 i > 2 0 ) ; p r i n t f ( \n%d! = %0.0 l f \ t f i b (%d ) = %0.0 l d \n, i, f a c t ( i ), i, f i b ( i ) ) ; return 0 ; Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 11 / 13

Výstup Zadej c i s l e m den v tydnu <0, 6>:3 Zadal j s i : c t v r t e k ( a n g l i c k y : Thursday ) Zadej c e l e c i s l o do 20:12 12! = 479001600 f i b (12) = 233 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 12 / 13

prj-demo make # soubor prj demo. mak CPP=c l. exe ALL : $prj demo. exe CLEAN : f u n k c e. o b j k a l e n d a r. o b j p r j demo. o b j vc60. i d b @erase $prj demo. exe BSC32=bscmake. exe LINK32=l i n k. exe LINK32 OBJS= \ p r j demo. o b j \ k a l e n d a r. o b j \ f u n k c e. o b j $prj demo. exe :. $ ( LINK32 OBJS ) $ ( LINK32 ) @<< $ ( LINK32 FLAGS ) $ ( LINK32 OBJS ) <<. c{$ ( INTDIR ) }. o b j : : $ (CPP) @<< $ (CPP PROJ) $< << SOURCE=..\ f u n k c e. c funkce. obj : $ (SOURCE) $ ( INTDIR ) $ (CPP) $ (CPP PROJ) $ (SOURCE) SOURCE=..\ k a l e n d a r. c kalendar. obj : $ (SOURCE) $ ( INTDIR ) $ (CPP) $ (CPP PROJ) $ (SOURCE) SOURCE=.. \ p r j demo. c prj demo. obj : $ (SOURCE) $ ( INTDIR ) $ (CPP) $ (CPP PROJ) $ (SOURCE) Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Rozsáhlé programy = projekty 28. listopadu 2011 13 / 13