Here comes the sun - Wydział Chemii UJ
Transkrypt
Here comes the sun - Wydział Chemii UJ
Here comes the sun Wyklad niesystematyczny Marcin Makowski Zaklad Chemii Teoretycznej UJ 24 października 2008 Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , 1 Wstep , 2 Kod źródlowy → program 3 Przeglad w przykladach , jezyka , 4 Gdzie szukać narzedzi i informacji? , Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Troche, historii Prehistoria: ALGOL, COBOL, FORTRAN . . . i prosta, droga, do C . . . BCPL B (pierwszy Unix) C (Ritchie, przepisany caly kod Unix-a, 1973) C Programming Language, Kernighan, Ritchie, 1978 C++, Java, Perl, PHP, . . . Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Standardy jezyka 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++ Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Cechy jezyka , 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 Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Fazy kompilacji Co sie, dzieje gdy: stworze, plik z kodem źródlowym programu w C . . . i postanowie, go skompilować . . . gcc my superb code.c? Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Podzial odpowiedzialności Preprocesor Bierze kod źródlowy, usuwa komentarze, realizuje dyrektywy preprocesora (oznaczane przez #). Kompilator Bierze kod otrzymany od preprocesora, wykonuje optymalizacje, i tlumaczenie na jezyk maszynowy (asembler). , Asembler Tworzy pliki obiektowe - *.o (Unix), *.obj (MS DOS). Linker Bierze pliki obiektowe, dolacza potrzebne biblioteki, tworzy plik z , kodem wykonywalnym (program). Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Najpiekniejszy 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 ” ) ; return 0; } Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , 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 . W e r s j a z d e f i n e */ i n t main ( ) { d o u b l e USD amount ; d o u b l e 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 ) ; return 0; } Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , $$$ . . . 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 . W e r s j a z c o n s t */ i n t main ( ) { d o u b l e USD amount , PLN amount ; c o n s t d o u b l e 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 ) ; return 0; } Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Petla , #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 , k r o k : 5 USD * / i n t main ( ) { d o u b l e USD amount , PLN amount ; c o n s t d o u b l e b e g i n = 5 . 0 , end = 1 0 0 . 0 , s t e p = 5 . 0 ; c o n s t d o u b l e USD to PLN = 2 . 5 ; USD amount = b e g i n ; 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 += s t e p ; } return 0; } Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , ... i jeszcze jedna petla , #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 , k r o k : 5 USD , u z y c i e p e t l i f o r * / i n t main ( ) { d o u b l e USD amount ; c o n s t d o u b l e b e g i n = 5 . 0 , end = 1 0 0 . 0 , s t e p = 5 . 0 ; c o n s t d o u b l e 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 ) ; return 0; } Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , 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 ( ) { int c ; c = getchar ( ) ; w h i l e ( c != EOF) { putchar ( c ) ; c = getchar ( ) ; } return 0; } Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , 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 ( ) { u n s i g n e d amount = 0 ; w h i l e ( g e t c h a r ( ) != EOF) amount++; p r i n t f ( ”Razem %u z n a k i \n ” , amount ) ; return 0; } Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Tablica #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 ( ) { int fibonacci [24]; int i ; fibonacci [0] = 0; fibonacci [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 ] ) ; } Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Funkcja zjadajaca wlasny 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 */ int fibonacci ( int ); 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 ) ) ; return 0; } int fibonacci ( int i ) { i f ( i == 0 ) return 0; i f ( i == 1 ) return 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 ) ; } Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , 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 Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Zasoby w sieci http://www.chemia.uj.edu.pl/~makowskm/c_course.html Materialy zwiazane z tym kursem. , http://galaxy.uci.agh.edu.pl/~chwastek/lectures/C/ spis.html Folie do wykladó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. Marcin Makowski Here comes the sun Plan Wstep , Kod źródlowy → program Przeglad j ezyka w przyk ladach , , Gdzie szukać narzedzi i informacji? , Ksiażki , Jezyk ANSI C, Kernighan B.W., Ritchie D.M., WNT , Klasyczny podrecznik napisany przez twórców jezyka. Zgodny ze , , standardem ANSI C. Jezyk C. Szkola programowania, Prata S., Helion , Obszerny, zgodny z C99. Oprócz kursu C, zagadnienia zwiazane z , algorytmika, i strukturami danych. Jezyk C. Programowanie, Oualline A., Helion , Podobno dobry podrecznik. Podobno źle przetlumaczony. , Marcin Makowski Here comes the sun