Wstęp do programowania 1 Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1
Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i jego celem jest nauczenie projektowania i psania programów w tym języku. Zalecana Literatura Kernighan Brian W., Ritchie Dennis M. Język ANSI C. Wydawnictwa Naukowo-Techniczne. Warszawa, 2004 i późniejsze. Stephen Prata. Język C. Szkoła Programowania. Wydanie V. Wydawnictwo Helion. 2006 i poźniejsze.
Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i jego celem jest nauczenie projektowania i psania programów w tym języku. Zalecana Literatura Kernighan Brian W., Ritchie Dennis M. Język ANSI C. Wydawnictwa Naukowo-Techniczne. Warszawa, 2004 i późniejsze. Stephen Prata. Język C. Szkoła Programowania. Wydanie V. Wydawnictwo Helion. 2006 i poźniejsze.
Wprowadzenie Plan Pisanie programów w C Nasz pierwszy program - podstawy
Rozwój języka C Język C został zaprojektowany przez Dennisa Ritchie ego w laboratoriach AT&T Bell na poczatku lat 70-tych XX wieku. Poprzednikiem języka C był interpretowany język B, który Ritchie rozwinał właśnie w język C. Pierwszy okres rozwoju języka to lata 1969-1973. W roku 1973 w języku C udało się zaimplementować jadro (ang. kernel) systemu operacyjnego Unix. W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali dokumentację języka: The C Programming Language (wydanie polskie, Język ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3.
Rozwój języka C Język C został zaprojektowany przez Dennisa Ritchie ego w laboratoriach AT&T Bell na poczatku lat 70-tych XX wieku. Poprzednikiem języka C był interpretowany język B, który Ritchie rozwinał właśnie w język C. Pierwszy okres rozwoju języka to lata 1969-1973. W roku 1973 w języku C udało się zaimplementować jadro (ang. kernel) systemu operacyjnego Unix. W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali dokumentację języka: The C Programming Language (wydanie polskie, Język ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3.
Rozwój języka C Język C został zaprojektowany przez Dennisa Ritchie ego w laboratoriach AT&T Bell na poczatku lat 70-tych XX wieku. Poprzednikiem języka C był interpretowany język B, który Ritchie rozwinał właśnie w język C. Pierwszy okres rozwoju języka to lata 1969-1973. W roku 1973 w języku C udało się zaimplementować jadro (ang. kernel) systemu operacyjnego Unix. W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali dokumentację języka: The C Programming Language (wydanie polskie, Język ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3.
Rozwój języka C Język C został zaprojektowany przez Dennisa Ritchie ego w laboratoriach AT&T Bell na poczatku lat 70-tych XX wieku. Poprzednikiem języka C był interpretowany język B, który Ritchie rozwinał właśnie w język C. Pierwszy okres rozwoju języka to lata 1969-1973. W roku 1973 w języku C udało się zaimplementować jadro (ang. kernel) systemu operacyjnego Unix. W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali dokumentację języka: The C Programming Language (wydanie polskie, Język ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3.
Rozwój języka C Język C został zaprojektowany przez Dennisa Ritchie ego w laboratoriach AT&T Bell na poczatku lat 70-tych XX wieku. Poprzednikiem języka C był interpretowany język B, który Ritchie rozwinał właśnie w język C. Pierwszy okres rozwoju języka to lata 1969-1973. W roku 1973 w języku C udało się zaimplementować jadro (ang. kernel) systemu operacyjnego Unix. W roku 1978 Brian Kernighan i Dennis Ritchie opublikowali dokumentację języka: The C Programming Language (wydanie polskie, Język ANSI C). Englewood Cliffs, NJ: Prentice Hall. ISBN 0-13-110163-3.
Rozwój języka C Wersja języka C opisana w The C Programming Language często nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja od późniejszego standardu C89 wprowadzonego w roku 1989, nazywanego dziś ANSI C lub też Standard C. W roku 1990 standard ANSI C został zmodyfikowany i nazwany C90. W roku 1999 standard C90 został zmodyfikowany i nazwany C99. W roku 2007 ogłoszono pracę nad nowym standardem C1X. Na wykładzie z programowania prodeduralnego i laboratoriach będziemy używać standardu C89/C99.
Rozwój języka C Wersja języka C opisana w The C Programming Language często nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja od późniejszego standardu C89 wprowadzonego w roku 1989, nazywanego dziś ANSI C lub też Standard C. W roku 1990 standard ANSI C został zmodyfikowany i nazwany C90. W roku 1999 standard C90 został zmodyfikowany i nazwany C99. W roku 2007 ogłoszono pracę nad nowym standardem C1X. Na wykładzie z programowania prodeduralnego i laboratoriach będziemy używać standardu C89/C99.
Rozwój języka C Wersja języka C opisana w The C Programming Language często nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja od późniejszego standardu C89 wprowadzonego w roku 1989, nazywanego dziś ANSI C lub też Standard C. W roku 1990 standard ANSI C został zmodyfikowany i nazwany C90. W roku 1999 standard C90 został zmodyfikowany i nazwany C99. W roku 2007 ogłoszono pracę nad nowym standardem C1X. Na wykładzie z programowania prodeduralnego i laboratoriach będziemy używać standardu C89/C99.
Rozwój języka C Wersja języka C opisana w The C Programming Language często nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja od późniejszego standardu C89 wprowadzonego w roku 1989, nazywanego dziś ANSI C lub też Standard C. W roku 1990 standard ANSI C został zmodyfikowany i nazwany C90. W roku 1999 standard C90 został zmodyfikowany i nazwany C99. W roku 2007 ogłoszono pracę nad nowym standardem C1X. Na wykładzie z programowania prodeduralnego i laboratoriach będziemy używać standardu C89/C99.
Rozwój języka C Wersja języka C opisana w The C Programming Language często nazywana jest K&R C (od nazwisk autorów), aby odróżnić ja od późniejszego standardu C89 wprowadzonego w roku 1989, nazywanego dziś ANSI C lub też Standard C. W roku 1990 standard ANSI C został zmodyfikowany i nazwany C90. W roku 1999 standard C90 został zmodyfikowany i nazwany C99. W roku 2007 ogłoszono pracę nad nowym standardem C1X. Na wykładzie z programowania prodeduralnego i laboratoriach będziemy używać standardu C89/C99.
Gdzie jest stosowany język C? C stał się popularny poza Laboratoriami Bella (gdzie powstał) po 1980 roku i stał się dominujacym językiem do programowania: systemów operacyjnych z rodziny Linux. mikrokontrolerów: samochody, samolotach, urzadzeniach kuchennych, itp. systemów wbudowanych: telefony komórkowe, ipod-y, itp. procesorów sygnałowych (ang. digital signal processor - DSP), czyli procesorów do cyfrowej obróbki sygnałów: systemy telewizji cyforowej, odtwarzacze audio, itp.... wszędzie tam, gdzie zależy nam na pisaniu szybkich i niskopoziomowych programów. Na bazie języka C w latach osiemdziesi atych Bjarne Stroustrup stworzył język C++, który wprowadza możliwość programowania obiektowego.
Gdzie jest stosowany język C? C stał się popularny poza Laboratoriami Bella (gdzie powstał) po 1980 roku i stał się dominujacym językiem do programowania: systemów operacyjnych z rodziny Linux. mikrokontrolerów: samochody, samolotach, urzadzeniach kuchennych, itp. systemów wbudowanych: telefony komórkowe, ipod-y, itp. procesorów sygnałowych (ang. digital signal processor - DSP), czyli procesorów do cyfrowej obróbki sygnałów: systemy telewizji cyforowej, odtwarzacze audio, itp.... wszędzie tam, gdzie zależy nam na pisaniu szybkich i niskopoziomowych programów. Na bazie języka C w latach osiemdziesi atych Bjarne Stroustrup stworzył język C++, który wprowadza możliwość programowania obiektowego.
Gdzie jest stosowany język C? C stał się popularny poza Laboratoriami Bella (gdzie powstał) po 1980 roku i stał się dominujacym językiem do programowania: systemów operacyjnych z rodziny Linux. mikrokontrolerów: samochody, samolotach, urzadzeniach kuchennych, itp. systemów wbudowanych: telefony komórkowe, ipod-y, itp. procesorów sygnałowych (ang. digital signal processor - DSP), czyli procesorów do cyfrowej obróbki sygnałów: systemy telewizji cyforowej, odtwarzacze audio, itp.... wszędzie tam, gdzie zależy nam na pisaniu szybkich i niskopoziomowych programów. Na bazie języka C w latach osiemdziesi atych Bjarne Stroustrup stworzył język C++, który wprowadza możliwość programowania obiektowego.
Cechy języka C Niewielka liczba słów kluczowych. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while
Cechy języka C Niewielka liczba słów kluczowych. auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while
Cechy języka C Możliwość definiowania złożonych struktur danych: struktury, unie. Jawne stosowanie wskaźników - zarzadzanie pamięcia i tablicami. Kompilacja do kodu natywnego (ang. native code), czyli kodu pracujacego z danym procesorem (np. Intel x86) i zbiorem jego instrukcji. Współpraca z macro preprocessor-em: m.in. obsługa dyrektywy #include, #ifndef, #define, #endif, itp. Szeroka gama bibliotek standardowych.
Cechy języka C Możliwość definiowania złożonych struktur danych: struktury, unie. Jawne stosowanie wskaźników - zarzadzanie pamięcia i tablicami. Kompilacja do kodu natywnego (ang. native code), czyli kodu pracujacego z danym procesorem (np. Intel x86) i zbiorem jego instrukcji. Współpraca z macro preprocessor-em: m.in. obsługa dyrektywy #include, #ifndef, #define, #endif, itp. Szeroka gama bibliotek standardowych.
Cechy języka C Możliwość definiowania złożonych struktur danych: struktury, unie. Jawne stosowanie wskaźników - zarzadzanie pamięcia i tablicami. Kompilacja do kodu natywnego (ang. native code), czyli kodu pracujacego z danym procesorem (np. Intel x86) i zbiorem jego instrukcji. Współpraca z macro preprocessor-em: m.in. obsługa dyrektywy #include, #ifndef, #define, #endif, itp. Szeroka gama bibliotek standardowych.
Cechy języka C Możliwość definiowania złożonych struktur danych: struktury, unie. Jawne stosowanie wskaźników - zarzadzanie pamięcia i tablicami. Kompilacja do kodu natywnego (ang. native code), czyli kodu pracujacego z danym procesorem (np. Intel x86) i zbiorem jego instrukcji. Współpraca z macro preprocessor-em: m.in. obsługa dyrektywy #include, #ifndef, #define, #endif, itp. Szeroka gama bibliotek standardowych.
Cechy języka C Możliwość definiowania złożonych struktur danych: struktury, unie. Jawne stosowanie wskaźników - zarzadzanie pamięcia i tablicami. Kompilacja do kodu natywnego (ang. native code), czyli kodu pracujacego z danym procesorem (np. Intel x86) i zbiorem jego instrukcji. Współpraca z macro preprocessor-em: m.in. obsługa dyrektywy #include, #ifndef, #define, #endif, itp. Szeroka gama bibliotek standardowych.
Standardowe zbiory nagłówkowe stdio.h - funkcje standardowego wejścia/wyjścia, obsługa plików stdlib.h - najbardziej podstawowe funkcje, np. do zarzadzania pamięcia ctype.h - klasyfikowanie znaków. math.h - funkcje matematyczne string.h - funkcje do obsługi łańcuchów znaków limits.h/float.h - właściwości typów całkowitych/zmiennoprzecinkowych zależne od implementacji. time.h - funkcje obsługi czasu. stdarg.h - narzędzia dla funkcji ze zmienna liczba argumentów. locale.h - ustawienia międzynarodowe. errno.h - deklaracje kodów błędów.
Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).
Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).
Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).
Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).
Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).
Cechy języka C Język C nie posiada obsługi: wyjatków. sprawdzania zakresów, np. zakresów tablic (ang. range-checking). sprawdzania zgodności typów podczas czasu wykonania. automatycznego zarzadzania dynamicznie przydzielona pamięcia (ang. garbage collection). obiektów - nie jest to język zorientowany na programowanie obiektowe tak ja np. C++, Java, C#, czy Python. metod/funkcji wirtualnych - możliwość istnienia wielu funkcji o tej samej nazwie, powiazana z możliwościa wyboru konkretnej metody podczas czasu wykonania (ang. polymorphism).
Programy pisane na wykładzie 1 #include < s t d i o. h> 2 i n t main ( void ) 3 { 4 i n t i ; 5 for ( i =1; i < 10 ; i ++) 6 { 7 i f ( i%5 == 0) { p r i n t f ( " Uciekam z p e t l i : )! \ n " ) ; break ; } 8 i f ( i%2 == 0) { 9 p r i n t f ( " Jestem parzysta wiec s i e nie wydrukuje! \ n " ) ; 10 continue ; 11 } 12 p r i n t f ( "%d \ n ", i ) ; 13 14 } 15 p r i n t f ( " \ n " ) ; 16 return 0; 17 }
Programy pisane na wykładzie 1 #include < s t d i o. h> 2 i n t main ( void ) 3 { 4 for ( i n t i =1; i < 10 ; i ++) 5 { 6 i f ( i%5 == 0) { p r i n t f ( " Uciekam z p e t l i : )! \ n " ) ; break ; } 7 i f ( i%2 == 0) { 8 p r i n t f ( " Jestem parzysta wiec s i e nie wydrukuje! \ n " ) ; 9 continue ; 10 } 11 p r i n t f ( "%d ", i ) ; 12 13 } 14 p r i n t f ( " \ n " ) ; 15 return 0; 16 }
Programy pisane na wykładzie 1 #include < s t d i o. h> 2 i n t main ( void ) 3 { 4 char a = a ; 5 p r i n t f ( " Znak %c ma kod %d \ n ", a, a ) ; 6 for ( a= A ; a < z ; a++) 7 { 8 p r i n t f ( " Znak %c ma kod %d \ n ",a, a ) ; 9 } 10 return 0; 11 }
Programy pisane na wykładzie 1 #include < s t d i o. h> 2 i n t main ( void ) 3 { 4 char a = a ; 5 p r i n t f ( " Typ znakowy ma %u BajtĂłw \ n ", sizeof ( a ) ) ; 6 p r i n t f ( " Typ i n t ma %u Bajtow \ n ", sizeof ( i n t ) ) ; 7 p r i n t f ( " Typ unsigned i n t ma %u Bajtow \ n ", sizeof ( unsigned i n t ) ) ; 8 p r i n t f ( " Typ long ma %u Bajtow \ n ", sizeof ( long ) ) ; 9 p r i n t f ( " Typ long long ma %u Bajtow \ n ", sizeof ( long long ) ) ; 10 11 typedef i n t A ; 12 A b = 6; 13 p r i n t f ( "%d \ n ", b ) ; 14 return 0; 15 }