Rozs´ahl´e programy = projekty ˇ Petr Saloun ˇ katedra informatiky FEI VSB-TU Ostrava
28. listopadu 2011
ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e programy = projekty
28. listopadu 2011
1 / 13
Programov´y projekt
definice versus deklarace c/cpp zdrojov´e texty versus h – hlaviˇckov´e soubory rozdˇelen´ı projektu na logick´e celky, interface do .h a #include moˇzn´y inkrement´aln´ı pˇreklad make/ant a pˇrekladaˇc gcc versus v´yvojov´e n´astroje (Visual Studio, Eclipse) (popis z´avislost´ı v projektu)
ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e programy = projekty
28. listopadu 2011
2 / 13
ˇ Cinnost pˇrekladaˇce
zdrojov´ y text
knihovn´ı deklarace
pˇrekladaˇc
objektov´ y k´ od
knihovn´ı definice
spojovac´ı program
provediteln´ y k´od ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e programy = projekty
28. listopadu 2011
3 / 13
Projekt – schema
ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e programy = projekty
28. listopadu 2011
4 / 13
Pˇr´ıklad projektu – pˇrehled
1
Soubor s funkc´ı main() tvoˇr´ı rozhran´ı a vol´a funkce.
2
Pˇrevod cel´eho ˇc´ısla (den v t´ydnu) na ˇretˇezec.
3
Celoˇc´ıseln´y argument funkce pro v´ypoˇcet faktori´alu a hodnoty ˇclenu Fibonacciho posloupnosti.
ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e 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 Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e 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 d e n s d e n ( tDen d , t L a n g l ) /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ pˇr e v e d e v ´y ˇc t o v ´y den v t´y d n u na o d p o v´ı d a j´ı c´ı ˇr e t ˇe z e c ∗ ve z v o l e n´e m j a z y c e ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/ { s t a t i c char ∗ s d n y [ 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 ” , ” nedele ” } , { ”Monday” , ” Tuesday ” , ” Wednesday ” , ” T h u r s d a y ” , ” F r i d a y ” , ” S a t u r d a y ” , ” Sunday ” } } ; return sdny [ l ] [ d ] ; } /∗ c o n s t c h a r ∗ e d e n s d e n ( tDen d , t L a n g l ) ∗/ ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e 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 t y p p r o den v t y d n u ∗ PONDELI . . NEDELE −> ePO . . eNE ( 0 . . 6 ) ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/ t y p e d e f enum {eCZ , eBE} t L a n g ; /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ vyctovy 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 d e n s d e n ( tDen d , t L a n g l ) ; /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ pˇr e v e d e v ´y ˇc t o v ´y den v t´y d n u na o d p o v´ı d a j´ı c´ı ˇr e t ˇe z e c ∗ ve z v o l e n´e m j a z y c e ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/ ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e 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 ; } /∗ d o u b l e 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; else return f i b ( n − 1) + f i b ( n − 2 ) ; } /∗ l o n g f i b ( l o n g n ) ∗/ ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e 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 ´a l ∗ p r o n < 0 v r ´a t´ı −1 ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/ long f i b ( long n ) ; /∗ ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗ v r ´a t´ı hodnotu n−t´e h o c l e n u ∗ Fibbonaciho posloupnosti ∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗∗ ∗/
ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e 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 ( v o i d ) { i n t i = −1; tDen eden ; do { p r i n t f ( ” \ n Z a d e j c i s l e m den v t y d n u <0, 6>:” ) ; s c a n f ( ”%d” , & i ) ; } while ( i < 0 | | i > 6 ) ; eden = ( tDen ) i ; p r i n t f ( ”\ n Z a d a l j s i : %s ( a n g l i c k y : %s ) \ n” , e d e n s d e n ( eden , eCZ ) , e d e n s d e n ( eden , eBE ) ) ; do { p r i n t f ( ” \ n Z a d e j 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 , fact ( i ) , i , fib ( i )); return 0; ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e programy = projekty
28. listopadu 2011
11 / 13
V´ystup
Zadej Zadal Zadej 12! =
c i s l e m den v t y d n u <0, 6 >:3 j s i : c t v r t e k ( a n g l i c k y : Thursday ) c e l e c i s l o do 2 0 : 1 2 479001600 f i b ( 1 2 ) = 233
ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e programy = projekty
28. listopadu 2011
12 / 13
prj-demo – make
# s o u b o r p r j −demo . mak CPP=c l . e x e ALL : ” $ p r j d e m o . e x e ” CLEAN : ” funkce . obj ” ” kalendar . obj ” ” p r j −demo . o b j ” ” vc60 . i d b ” −@ e r a s e ” $ p r j d e m o . e x e ” BSC32=bscmake . e x e LINK32= l i n k . e x e LINK32 OBJS= \ ” p r j −demo . o b j ” \ ” kalendar . obj ” \ ” funkce . obj ” ” $ p r j d e m o . e x e ” : ” . ” $ ( LINK32 OBJS ) $ ( LINK32 ) @<< $ ( LINK32 FLAGS ) $ ( LINK32 OBJS ) <<
. c{$ ( INTDIR ) } . o b j : : $ (CPP) @<< $ ( CPP PROJ ) $< << SOURCE=..\ f u n k c e . c ” f u n k c e . o b j ” : $ (SOURCE) ” $ ( INTDIR ) ” $ (CPP) $ ( CPP PROJ ) $ (SOURCE) SOURCE=..\ k a l e n d a r . c ” k a l e n d a r . o b j ” : $ (SOURCE) ” $ ( INTDIR ) ” $ (CPP) $ ( CPP PROJ ) $ (SOURCE) SOURCE=” . . \ p r j −demo . c ” ” p r j −demo . o b j ” : $ (SOURCE) ” $ ( INTDIR ) ” $ (CPP) $ ( CPP PROJ ) $ (SOURCE)
ˇ ˇ Petr Saloun (katedra informatiky FEI VSB-TU Ostrava) Rozs´ ahl´ e programy = projekty
28. listopadu 2011
13 / 13