Wyk lad niesystematyczny Zak lad Chemii Teoretycznej UJ 24 października 2008
Przeglad jezyka Gdzie szukać narzedzi i informacji? 1 Wst ep 2 3 Przeglad jezyka 4 Gdzie szukać narz
Przeglad jezyka Gdzie szukać narz Troch e historii Prehistoria: ALGOL, COBOL, FORTRAN... i prosta droga do C... BCPL B (pierwszy Unix) C (Ritchie, przepisany ca ly kod Unix-a, 1973) C Programming Language, Kernighan, Ritchie, 1978 C++, Java, Perl, PHP,...
Przeglad jezyka Gdzie szukać narz Standardy j ezyka oraz C vs C++ Standardy C C89 C90 C99 C a C++ C nie jest podzbiorem C++ C nie jest kompatybilny z C++ poprawny kod w C może być niepoprawnym kodem w C++
Przeglad jezyka Gdzie szukać narz Cechy j ezyka prosty i minimalistyczny w praktycznych zastosowaniach silnie oparty na bibliotekach niskopoziomowy programy w C zbudowane sa w zasadzie z dwojakiego rodzaju klocków: funkcji - zawieraja instrukcje określajace, jakie operacje należy wykonać zmiennych - przechowuja wartości używane podczas procesu obliczeniowego
Przeglad jezyka Gdzie szukać narz Fazy kompilacji Co si e dzieje gdy: stworz e plik z kodem źród lowym programu w C... i postanowi e go skompilować... gcc my superb code.c?
Przeglad jezyka Gdzie szukać narz Podzia l odpowiedzialności Preprocesor Bierze kod źród lowy, usuwa komentarze, realizuje dyrektywy preprocesora (oznaczane przez #). Kompilator Bierze kod otrzymany od preprocesora, wykonuje optymalizacj e i t lumaczenie na j ezyk maszynowy (asembler). Asembler Tworzy pliki obiektowe - *.o (Unix), *.obj (MS DOS). Linker Bierze pliki obiektowe, do l acza potrzebne biblioteki, tworzy plik z kodem wykonywalnym (program).
Przeglad jezyka Gdzie szukać narz Najpi ekniejszy najkrótszy program świata #i n c l u d e <s t d i o. h> /* Wypisz H e l l o w o r l d */ i n t main ( ) p r i n t f ( H e l l o w o r l d \n ) ; r e t u r n 0 ;
$$$... Przeglad jezyka Gdzie szukać narzedzi i informacji? #i n c l u d e <s t d i o. h> #d e f i n e USD to PLN 2. 5 /* P r z e l i c z podana kwote w USD na PLN. Wersja z d e f i n e */ i n t main ( ) double USD amount ; double PLN amount ; p r i n t f ( I l e USD?\ n ) ; s c a n f ( %l f, &USD amount ) ; PLN amount = USD to PLN * USD amount ; p r i n t f ( USD : %l f PLN %l f \n, USD amount, PLN amount ) ; r e t u r n 0 ;
Przeglad jezyka Gdzie szukać narz $$$... jeszcze raz #i n c l u d e <s t d i o. h> /* P r z e l i c z podana kwote w USD na PLN. Wersja z c o n s t */ i n t main ( ) double USD amount, PLN amount ; c o n s t double USD to PLN = 2. 5 ; p r i n t f ( I l e USD?\ n ) ; s c a n f ( %l f, &USD amount ) ; PLN amount = USD to PLN * USD amount ; p r i n t f ( USD : %l f PLN %l f \n, USD amount, PLN amount ) ; r e t u r n 0 ;
P etla Przeglad jezyka Gdzie szukać narzedzi i informacji? #i n c l u d e <s t d i o. h> /* P r z e l i c z kwoty od 5 do 100 USD na PLN, krok : 5 USD */ i n t main ( ) double USD amount, PLN amount ; c o n s t double begin = 5. 0, end = 100.0, step = 5. 0 ; c o n s t double USD to PLN = 2. 5 ; USD amount = begin ; w h i l e ( USD amount <= end ) PLN amount = USD to PLN * USD amount ; p r i n t f ( USD : %l f PLN %l f \n, USD amount, PLN amount ) ; USD amount += step ; r e t u r n 0 ;
Przeglad jezyka Gdzie szukać narz... i jeszcze jedna p etla #i n c l u d e <s t d i o. h> /* P r z e l i c z kwoty od 5 do 100 USD na PLN, krok : 5 USD, u z y c i e p e t l i f o r */ i n t main ( ) double USD amount ; c o n s t double begin = 5. 0, end = 100.0, step = 5. 0 ; c o n s t double USD to PLN = 2. 5 ; f o r ( USD amount = b e g i n ; USD amount <= end ; USD amount += s t e p ) p r i n t f ( USD : %l f PLN %l f \n, USD amount, USD to PLN * USD amount ) ; r e t u r n 0 ;
Przeglad jezyka Gdzie szukać narz Kopiowanie znaków #i n c l u d e <s t d i o. h> /* K o p i u j z n a k i z w e j s c i a na w y j s c i e */ i n t main ( ) i n t c ; c = g e t c h a r ( ) ; w h i l e ( c!= EOF) p u t c h a r ( c ) ; c = g e t c h a r ( ) ; r e t u r n 0 ;
Przeglad jezyka Gdzie szukać narz i zliczanie... #i n c l u d e <s t d i o. h> /* Z l i c z a j z n a k i na w e j s c i u */ i n t main ( ) unsigned amount = 0 ; w h i l e ( g e t c h a r ( ) amount++;!= EOF) p r i n t f ( Razem %u z n a k i \n, amount ) ; r e t u r n 0 ;
Tablica Przeglad jezyka Gdzie szukać narzedzi i informacji? #i n c l u d e <s t d i o. h> /* Wypisz k o l e j n e l i c z b y c i a g u F i b o n a c c i e g o, F 0,... F 23 */ i n t main ( ) i n t f i b o n a c c i [ 2 4 ] ; i n t i ; f i b o n a c c i [ 0 ] = 0 ; f i b o n a c c i [ 1 ] = 1 ; f o r ( i = 2 ; i < 2 4 ; i ++) f i b o n a c c i [ i ] = f i b o n a c c i [ i 1] + f i b o n a c c i [ i 2]; f o r ( i = 0 ; i < 2 4 ; i ++) p r i n t f ( %3d %6d\n, i, f i b o n a c c i [ i ] ) ;
Przeglad jezyka Gdzie szukać narzedzi i informacji? Funkcja zjadajaca w lasny ogon #i n c l u d e <s t d i o. h> /* Wypisz k o l e j n e l i c z b y c i a g u F i b o n a c c i e g o, F 0,... F 23 w e r s j a z r e k u r e n c y j n y m wywolaniem f u n k c j i */ i n t f i b o n a c c i ( i n t ) ; i n t main ( ) f o r ( i n t i = 0 ; i < 2 4 ; i ++) p r i n t f ( %3d %6d\n, i, f i b o n a c c i ( i ) ) ; r e t u r n 0 ; i n t f i b o n a c c i ( i n t i ) i f ( i == 0) r e t u r n 0 ; i f ( i == 1) r e t u r n 1 ; i f ( i > 1) r e t u r n f i b o n a c c i ( i 1) + f i b o n a c c i ( i 2 ) ;
Przeglad jezyka Gdzie szukać narzedzi i informacji? Kompilatory http://www.thefreecountry.com/compilers/cpp.shtml Linki do darmowych kompilatorów C/C++. GCC - Linux Intel - Linux Cygwin - Windows Mingw - Windows Open Watcom - Windows
Przeglad jezyka Gdzie szukać narz Zasoby w sieci http://www.chemia.uj.edu.pl/~makowskm/c_course.html Materia ly zwiazane z tym kursem. http://galaxy.uci.agh.edu.pl/~chwastek/lectures/c/ spis.html Folie do wyk ladów by AGH. http://www.cprogramming.com/ Your resource for C and C++. http: //www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf Techniczny i szczegó lowy opis standardu C99.
Ksiażki Przeglad jezyka Gdzie szukać narzedzi i informacji? J ezyk ANSI C, Kernighan B.W., Ritchie D.M., WNT Klasyczny podr ecznik napisany przez twórców j ezyka. Zgodny ze standardem ANSI C. J ezyk C. Szko la programowania, Prata S., Helion Obszerny, zgodny z C99. Oprócz kursu C, zagadnienia zwiazane z algorytmika i strukturami danych. J ezyk C. Programowanie, Oualline A., Helion Podobno dobry podr ecznik. Podobno źle przet lumaczony.