Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12
Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład 1) Wstęp do programowania 8 października 2018 2 / 12
Literatura 1 Stephen Prata - Język C: szkoła programowania 2 K.N. King C Programming. A Modern Approach 3 Ben Klemens - 21st Century C: C Tips from the New School 4 Richard M. Reese - Understanding and Using C Pointers (Wykład 1) Wstęp do programowania 8 października 2018 3 / 12
Literatura 1 Stephen Prata - Język C: szkoła programowania 2 K.N. King C Programming. A Modern Approach 3 Ben Klemens - 21st Century C: C Tips from the New School 4 Richard M. Reese - Understanding and Using C Pointers 5 Steve Oualline - Język C. Programowanie 6 Kenneth A. Reek - Język C: wskaźniki: vademecum profesjonalisty 7 Herbert Schildt - Programowanie C 8 Brian W. Kernighan, Dennis M. Ritchie - Język ANSI C (Wykład 1) Wstęp do programowania 8 października 2018 3 / 12
Literatura 1 Stephen Prata - Język C: szkoła programowania 2 K.N. King C Programming. A Modern Approach 3 Ben Klemens - 21st Century C: C Tips from the New School 4 Richard M. Reese - Understanding and Using C Pointers 5 Steve Oualline - Język C. Programowanie 6 Kenneth A. Reek - Język C: wskaźniki: vademecum profesjonalisty 7 Herbert Schildt - Programowanie C 8 Brian W. Kernighan, Dennis M. Ritchie - Język ANSI C 9 Kyle Loudon - Algorytmy w C 10 Frantisek Franek - Pamięć w językach C i C++ 11 John Viega, Matt Messier C i C++. Bezpieczne programowanie. Receptury (Wykład 1) Wstęp do programowania 8 października 2018 3 / 12
Literatura 1 Stephen Prata - Język C: szkoła programowania 2 K.N. King C Programming. A Modern Approach 3 Ben Klemens - 21st Century C: C Tips from the New School 4 Richard M. Reese - Understanding and Using C Pointers 5 Steve Oualline - Język C. Programowanie 6 Kenneth A. Reek - Język C: wskaźniki: vademecum profesjonalisty 7 Herbert Schildt - Programowanie C 8 Brian W. Kernighan, Dennis M. Ritchie - Język ANSI C 9 Kyle Loudon - Algorytmy w C 10 Frantisek Franek - Pamięć w językach C i C++ 11 John Viega, Matt Messier C i C++. Bezpieczne programowanie. Receptury 12 Steve Summit Programowanie w języku C. FAQ 13 Peter van der Linden - Expert C Programming. Deep C Secrets (Wykład 1) Wstęp do programowania 8 października 2018 3 / 12
Literatura 1 Stephen Prata - Język C: szkoła programowania 2 K.N. King C Programming. A Modern Approach 3 Ben Klemens - 21st Century C: C Tips from the New School 4 Richard M. Reese - Understanding and Using C Pointers 5 Steve Oualline - Język C. Programowanie 6 Kenneth A. Reek - Język C: wskaźniki: vademecum profesjonalisty 7 Herbert Schildt - Programowanie C 8 Brian W. Kernighan, Dennis M. Ritchie - Język ANSI C 9 Kyle Loudon - Algorytmy w C 10 Frantisek Franek - Pamięć w językach C i C++ 11 John Viega, Matt Messier C i C++. Bezpieczne programowanie. Receptury 12 Steve Summit Programowanie w języku C. FAQ 13 Peter van der Linden - Expert C Programming. Deep C Secrets 14 http://stackoverflow.com/questions/tagged/c (Wykład 1) Wstęp do programowania 8 października 2018 3 / 12
TIOBE INDEX - http://www.tiobe.com (Wykład 1) Wstęp do programowania 8 października 2018 4 / 12
Czym jest programowanie? (Wykład 1) Wstęp do programowania 8 października 2018 5 / 12
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: (Wykład 1) Wstęp do programowania 8 października 2018 5 / 12
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): (Wykład 1) Wstęp do programowania 8 października 2018 5 / 12
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), (Wykład 1) Wstęp do programowania 8 października 2018 5 / 12
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), dynamiczna (malloc, realloc) (Wykład 1) Wstęp do programowania 8 października 2018 5 / 12
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), dynamiczna (malloc, realloc) Operacje na zmiennych, modyfikacja wartości zmiennych, zmiana stanu programu: (Wykład 1) Wstęp do programowania 8 października 2018 5 / 12
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), dynamiczna (malloc, realloc) Operacje na zmiennych, modyfikacja wartości zmiennych, zmiana stanu programu: operatory, (Wykład 1) Wstęp do programowania 8 października 2018 5 / 12
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), dynamiczna (malloc, realloc) Operacje na zmiennych, modyfikacja wartości zmiennych, zmiana stanu programu: operatory, funkcje (przekazywanie i zwracanie zmiennych). (Wykład 1) Wstęp do programowania 8 października 2018 5 / 12
Czym jest programowanie? Programowanie proceduralne w języku C zarządzanie pamięcią: Alokacja pamięci (zmienne): statyczna (typ, nazwa zmiennej, zakres widzialności), dynamiczna (malloc, realloc) Operacje na zmiennych, modyfikacja wartości zmiennych, zmiana stanu programu: operatory, funkcje (przekazywanie i zwracanie zmiennych). Dealokacja pamięci (free). (Wykład 1) Wstęp do programowania 8 października 2018 5 / 12
Mapa pamięci programu w języku C Skompilowany program w języku C tworzy 4 osobne obszary pamięci: (Wykład 1) Wstęp do programowania 8 października 2018 6 / 12
Mapa pamięci programu w języku C Skompilowany program w języku C tworzy 4 osobne obszary pamięci: Pierwszy obszar zawiera kod wykonywalny programu. (Wykład 1) Wstęp do programowania 8 października 2018 6 / 12
Mapa pamięci programu w języku C Skompilowany program w języku C tworzy 4 osobne obszary pamięci: Pierwszy obszar zawiera kod wykonywalny programu. Drugi obszar zawiera zmienne globalne. (Wykład 1) Wstęp do programowania 8 października 2018 6 / 12
Mapa pamięci programu w języku C Skompilowany program w języku C tworzy 4 osobne obszary pamięci: Pierwszy obszar zawiera kod wykonywalny programu. Drugi obszar zawiera zmienne globalne. Trzeci obszar to stos. Stos przechowuje adresy powrotne wywołań funkcji, argumenty funkcji, zmienne lokalne oraz aktualny stan procesora. (Wykład 1) Wstęp do programowania 8 października 2018 6 / 12
Mapa pamięci programu w języku C Skompilowany program w języku C tworzy 4 osobne obszary pamięci: Pierwszy obszar zawiera kod wykonywalny programu. Drugi obszar zawiera zmienne globalne. Trzeci obszar to stos. Stos przechowuje adresy powrotne wywołań funkcji, argumenty funkcji, zmienne lokalne oraz aktualny stan procesora. Czwarty obszar to sterta. Sterta to obszar wolnej pamięci, z której program może korzystać za pośrednictwem funkcji dynamicznej alokacji pamięci. (Wykład 1) Wstęp do programowania 8 października 2018 6 / 12
Edycja kodu źródłowego Edytor kodu źródłowego: (Wykład 1) Wstęp do programowania 8 października 2018 7 / 12
Edycja kodu źródłowego Edytor kodu źródłowego: Numerowanie linii, (Wykład 1) Wstęp do programowania 8 października 2018 7 / 12
Edycja kodu źródłowego Edytor kodu źródłowego: Numerowanie linii, Kolorowanie składnii. (Wykład 1) Wstęp do programowania 8 października 2018 7 / 12
Edycja kodu źródłowego Edytor kodu źródłowego: Numerowanie linii, Kolorowanie składnii. Edytory: Code::Blocks www.codeblocks.org (Wykład 1) Wstęp do programowania 8 października 2018 7 / 12
Edycja kodu źródłowego Edytor kodu źródłowego: Numerowanie linii, Kolorowanie składnii. Edytory: Code::Blocks www.codeblocks.org Codelite www.codelite.org (Wykład 1) Wstęp do programowania 8 października 2018 7 / 12
Edycja kodu źródłowego Edytor kodu źródłowego: Numerowanie linii, Kolorowanie składnii. Edytory: Code::Blocks www.codeblocks.org Codelite www.codelite.org Microsoft Visual Studio, (Wykład 1) Wstęp do programowania 8 października 2018 7 / 12
Edycja kodu źródłowego Edytor kodu źródłowego: Numerowanie linii, Kolorowanie składnii. Edytory: Code::Blocks www.codeblocks.org Codelite www.codelite.org Microsoft Visual Studio, vim, gvim, (Wykład 1) Wstęp do programowania 8 października 2018 7 / 12
Edycja kodu źródłowego Edytor kodu źródłowego: Numerowanie linii, Kolorowanie składnii. Edytory: Code::Blocks www.codeblocks.org Codelite www.codelite.org Microsoft Visual Studio, vim, gvim, kate, (Wykład 1) Wstęp do programowania 8 października 2018 7 / 12
Edycja kodu źródłowego Edytor kodu źródłowego: Numerowanie linii, Kolorowanie składnii. Edytory: Code::Blocks www.codeblocks.org Codelite www.codelite.org Microsoft Visual Studio, vim, gvim, kate, gedit,... (Wykład 1) Wstęp do programowania 8 października 2018 7 / 12
/* szkielet funkcji typ funkcja ( lista_parametrow ){ sekwencja instrukcji : deklaracje, przypisania, wywolanie funkcji, instrukcje sterujace, instrukcje puste, } */ (Wykład 1) Wstęp do programowania 8 października 2018 8 / 12 Ogólna postać programu w C # dyrektywy preprocesora // deklaracje globalne int main ( void ){ // sekwencja instrukcji } return 0;
Hello World /* Pierwszy program - komentarz ignorowany przez kompilator */ # include <stdio.h> /* dyrektywa preprocesora, plik naglowkowy biblioteki standardowej, prototyp funkcji printf () */ int main ( void ){ // int main ( int argc, char * argv []) printf (" Pierwszy program.\n"); } return 0; (Wykład 1) Wstęp do programowania 8 października 2018 9 / 12
Drugi program - kilka instrukcji # include <stdio.h> int main ( void ){ char i; for (i =65;i <97; i ++) { if (75== i) break ; if (i %2) printf ("%c ",i); else printf ("%c \n",i +32) ; } } return 0; (Wykład 1) Wstęp do programowania 8 października 2018 10 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. plik źródłowy (pierwszyprogram.c) kompilator kod obiektowy (pierwszyprogram.o). (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. plik źródłowy (pierwszyprogram.c) kompilator kod obiektowy (pierwszyprogram.o). linia poleceń: gcc -c pierwszyprogram.c (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. plik źródłowy (pierwszyprogram.c) kompilator kod obiektowy (pierwszyprogram.o). linia poleceń: gcc -c pierwszyprogram.c Konsolidator: (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. plik źródłowy (pierwszyprogram.c) kompilator kod obiektowy (pierwszyprogram.o). linia poleceń: gcc -c pierwszyprogram.c Konsolidator: kod obiektowy (pierwszyprogram.o) + kod biblioteki + kod startowy konsolidator plik wykonywalny (pierwszyprogram.exe) (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. plik źródłowy (pierwszyprogram.c) kompilator kod obiektowy (pierwszyprogram.o). linia poleceń: gcc -c pierwszyprogram.c Konsolidator: kod obiektowy (pierwszyprogram.o) + kod biblioteki + kod startowy konsolidator plik wykonywalny (pierwszyprogram.exe) Kod startowy - interfejs pomiędzy programem a systemem operacyjnym. (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. plik źródłowy (pierwszyprogram.c) kompilator kod obiektowy (pierwszyprogram.o). linia poleceń: gcc -c pierwszyprogram.c Konsolidator: kod obiektowy (pierwszyprogram.o) + kod biblioteki + kod startowy konsolidator plik wykonywalny (pierwszyprogram.exe) Kod startowy - interfejs pomiędzy programem a systemem operacyjnym. Linker (konsolidator) pobiera z bibliotek tylko te fragmenty, które wymagane są przez funkcje użyte w programie. (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. plik źródłowy (pierwszyprogram.c) kompilator kod obiektowy (pierwszyprogram.o). linia poleceń: gcc -c pierwszyprogram.c Konsolidator: kod obiektowy (pierwszyprogram.o) + kod biblioteki + kod startowy konsolidator plik wykonywalny (pierwszyprogram.exe) Kod startowy - interfejs pomiędzy programem a systemem operacyjnym. Linker (konsolidator) pobiera z bibliotek tylko te fragmenty, które wymagane są przez funkcje użyte w programie. linia poleceń: gcc -o pierwszyprogram.exe pierwszyprogram.o (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. plik źródłowy (pierwszyprogram.c) kompilator kod obiektowy (pierwszyprogram.o). linia poleceń: gcc -c pierwszyprogram.c Konsolidator: kod obiektowy (pierwszyprogram.o) + kod biblioteki + kod startowy konsolidator plik wykonywalny (pierwszyprogram.exe) Kod startowy - interfejs pomiędzy programem a systemem operacyjnym. Linker (konsolidator) pobiera z bibliotek tylko te fragmenty, które wymagane są przez funkcje użyte w programie. linia poleceń: gcc -o pierwszyprogram.exe pierwszyprogram.o gcc pierwszyprogram.o (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. plik źródłowy (pierwszyprogram.c) kompilator kod obiektowy (pierwszyprogram.o). linia poleceń: gcc -c pierwszyprogram.c Konsolidator: kod obiektowy (pierwszyprogram.o) + kod biblioteki + kod startowy konsolidator plik wykonywalny (pierwszyprogram.exe) Kod startowy - interfejs pomiędzy programem a systemem operacyjnym. Linker (konsolidator) pobiera z bibliotek tylko te fragmenty, które wymagane są przez funkcje użyte w programie. linia poleceń: gcc -o pierwszyprogram.exe pierwszyprogram.o gcc pierwszyprogram.o Kompilacja i konsolidacja: gcc -o pierwszyprogram.exe pierwszyprogram.c (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilator: przetwarza kod źródłowy na kod wykonywalny, analizuje poprawność składniową kodu źródłowego, dokonuje optymalizacji. plik źródłowy (pierwszyprogram.c) kompilator kod obiektowy (pierwszyprogram.o). linia poleceń: gcc -c pierwszyprogram.c Konsolidator: kod obiektowy (pierwszyprogram.o) + kod biblioteki + kod startowy konsolidator plik wykonywalny (pierwszyprogram.exe) Kod startowy - interfejs pomiędzy programem a systemem operacyjnym. Linker (konsolidator) pobiera z bibliotek tylko te fragmenty, które wymagane są przez funkcje użyte w programie. linia poleceń: gcc -o pierwszyprogram.exe pierwszyprogram.o gcc pierwszyprogram.o Kompilacja i konsolidacja: gcc -o pierwszyprogram.exe pierwszyprogram.c gcc pierwszyprogram.c (Wykład 1) Wstęp do programowania 8 października 2018 11 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilacja i konsolidacja: A gcc -o pierwszyprogram.exe pierwszyprogram.c B gcc pierwszyprogram.c (Wykład 1) Wstęp do programowania 8 października 2018 12 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilacja i konsolidacja: A gcc -o pierwszyprogram.exe pierwszyprogram.c B gcc pierwszyprogram.c Uruchomienie programu z linii poleceń: (Wykład 1) Wstęp do programowania 8 października 2018 12 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilacja i konsolidacja: A gcc -o pierwszyprogram.exe pierwszyprogram.c B gcc pierwszyprogram.c Uruchomienie programu z linii poleceń: A./pierwszyProgram.exe (Wykład 1) Wstęp do programowania 8 października 2018 12 / 12
gcc - kompilacja, konsolidacja, uruchamianie Kompilacja i konsolidacja: A gcc -o pierwszyprogram.exe pierwszyprogram.c B gcc pierwszyprogram.c Uruchomienie programu z linii poleceń: A./pierwszyProgram.exe B./a.out (Wykład 1) Wstęp do programowania 8 października 2018 12 / 12