Wstęp do programowania Wykład 1 1 / 49
Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata. Język C++. Szkoła programowania. Bjarne Stroustrup. Język C++. Kompendium wiedzy. Lippman Stanley B., Lajoie Josee. Podstawy języka C++. 2 / 49
Czym jest C++? Język C++ wywodzi się od języka C powstałego w latach 70 ubiegłego wieku. 3 / 49
Czym jest C++? Język C++ wywodzi się od języka C powstałego w latach 70 ubiegłego wieku. Język C++ został stworzony przez Bjarne a Stroustrupa pracownika laboratoriów Bella. 4 / 49
Czym jest C++? Język C++ wywodzi się od języka C powstałego w latach 70 ubiegłego wieku. Język C++ został stworzony przez Bjarne a Stroustrupa pracownika laboratoriów Bella. Jest to język wysokiego poziomu. 5 / 49
Czym jest C++? Język C++ wywodzi się od języka C powstałego w latach 70 ubiegłego wieku. Język C++ został stworzony przez Bjarne a Stroustrupa pracownika laboratoriów Bella. Jest to język wysokiego poziomu. Język C jest językiem proceduralnym nacisk na wykonywanie ciągu instrukcji, język C++ zawiera podejście obiektowe. 6 / 49
Czym jest C++? Język C++ wywodzi się od języka C powstałego w latach 70 ubiegłego wieku. Język C++ został stworzony przez Bjarne a Stroustrupa pracownika laboratoriów Bella. Jest to język wysokiego poziomu. Język C jest językiem proceduralnym nacisk na wykonywanie ciągu instrukcji, język C++ zawiera podejście obiektowe. W stosunku do C: 7 / 49
Czym jest C++? Język C++ wywodzi się od języka C powstałego w latach 70 ubiegłego wieku. Język C++ został stworzony przez Bjarne a Stroustrupa pracownika laboratoriów Bella. Jest to język wysokiego poziomu. Język C jest językiem proceduralnym nacisk na wykonywanie ciągu instrukcji, język C++ zawiera podejście obiektowe. W stosunku do C: dodano obsługę obiektów, 8 / 49
Czym jest C++? Język C++ wywodzi się od języka C powstałego w latach 70 ubiegłego wieku. Język C++ został stworzony przez Bjarne a Stroustrupa pracownika laboratoriów Bella. Jest to język wysokiego poziomu. Język C jest językiem proceduralnym nacisk na wykonywanie ciągu instrukcji, język C++ zawiera podejście obiektowe. W stosunku do C: dodano obsługę obiektów, zwiększono produktywność programisty, 9 / 49
Czym jest C++? Język C++ wywodzi się od języka C powstałego w latach 70 ubiegłego wieku. Język C++ został stworzony przez Bjarne a Stroustrupa pracownika laboratoriów Bella. Jest to język wysokiego poziomu. Język C jest językiem proceduralnym nacisk na wykonywanie ciągu instrukcji, język C++ zawiera podejście obiektowe. W stosunku do C: dodano obsługę obiektów, zwiększono produktywność programisty, wyeliminowano pewne błędy języka C. 10 / 49
Jak tworzymy aplikację w C++? Analiza problemu 11 / 49
Jak tworzymy aplikację w C++? Analiza problemu Zapis kodu źródłowego (program.cpp). Program napisany w języku programowania ma postać pliku tekstowego zwanego kodem źródłowym. 12 / 49
Jak tworzymy aplikację w C++? Analiza problemu Zapis kodu źródłowego (program.cpp). Program napisany w języku programowania ma postać pliku tekstowego zwanego kodem źródłowym. Kod źródłowy programu musi zostać przetłumaczony na kod wykonywalny zapisany w języku maszynowym. 13 / 49
Jak tworzymy aplikację w C++? Analiza problemu Zapis kodu źródłowego (program.cpp). Program napisany w języku programowania ma postać pliku tekstowego zwanego kodem źródłowym. Kod źródłowy programu musi zostać przetłumaczony na kod wykonywalny zapisany w języku maszynowym. Proces tłumaczenia programu składa się z dwóch części: 14 / 49
Jak tworzymy aplikację w C++? Analiza problemu Zapis kodu źródłowego (program.cpp). Program napisany w języku programowania ma postać pliku tekstowego zwanego kodem źródłowym. Kod źródłowy programu musi zostać przetłumaczony na kod wykonywalny zapisany w języku maszynowym. Proces tłumaczenia programu składa się z dwóch części: kompilacji przetworzenie kodu źródłowego przez program zwany kompilatorem, który zamienia program w kodzie źródłowym na plik binarny zawierający program w kodzie maszynowym, nie jest to zwykle końcowa wersja programu (zawiera odwołania do zewnętrznych podprogramów umieszczonych w bibliotekach) 15 / 49
Jak tworzymy aplikację w C++? Analiza problemu Zapis kodu źródłowego (program.cpp). Program napisany w języku programowania ma postać pliku tekstowego zwanego kodem źródłowym. Kod źródłowy programu musi zostać przetłumaczony na kod wykonywalny zapisany w języku maszynowym. Proces tłumaczenia programu składa się z dwóch części: kompilacji przetworzenie kodu źródłowego przez program zwany kompilatorem, który zamienia program w kodzie źródłowym na plik binarny zawierający program w kodzie maszynowym, nie jest to zwykle końcowa wersja programu (zawiera odwołania do zewnętrznych podprogramów umieszczonych w bibliotekach) łączenia (konsolidacji, linkowania) wykonywanego przez program zwany konsolidatorem, który tworzy plik binarny (program.exe) w którym jest już wszystko co jest potrzebne do wykonania programu. Proces kompilacji jest poprzedzany przez analizę kodu źródłowego wykonywaną przez program zwany preprocesorem. Preprocesor analizuje kod poszukując przeznaczonych dla niego poleceń (linie zaczynające się #) i modyfikuje kod źródłowy zgodnie z treścią tych poleceń. Preprocesor nie dokonuje sprawdzenia poprawności programu. 16 / 49
Jak tworzymy aplikację w C++? Analiza problemu Zapis kodu źródłowego (program.cpp). Program napisany w języku programowania ma postać pliku tekstowego zwanego kodem źródłowym. Kod źródłowy programu musi zostać przetłumaczony na kod wykonywalny zapisany w języku maszynowym. Proces tłumaczenia programu składa się z dwóch części: kompilacji przetworzenie kodu źródłowego przez program zwany kompilatorem, który zamienia program w kodzie źródłowym na plik binarny zawierający program w kodzie maszynowym, nie jest to zwykle końcowa wersja programu (zawiera odwołania do zewnętrznych podprogramów umieszczonych w bibliotekach) łączenia (konsolidacji, linkowania) wykonywanego przez program zwany konsolidatorem, który tworzy plik binarny (program.exe) w którym jest już wszystko co jest potrzebne do wykonania programu. Proces kompilacji jest poprzedzany przez analizę kodu źródłowego wykonywaną przez program zwany preprocesorem. Preprocesor analizuje kod poszukując przeznaczonych dla niego poleceń (linie zaczynające się #) i modyfikuje kod źródłowy zgodnie z treścią tych poleceń. Preprocesor nie dokonuje sprawdzenia poprawności programu. Uruchomienie skompilowanego pliku. 17 / 49
Co jest potrzebne do programowania w C++? kompilator języka C++ np. g++. 18 / 49
Co jest potrzebne do programowania w C++? kompilator języka C++ np. g++. edytor tekstu. 19 / 49
Co jest potrzebne do programowania w C++? kompilator języka C++ np. g++. edytor tekstu. zintegrowane środowisko programistyczne (IDE Integrated Development Environtment) 20 / 49
Co jest potrzebne do programowania w C++? kompilator języka C++ np. g++. edytor tekstu. zintegrowane środowisko programistyczne (IDE Integrated Development Environtment) http://www.codeblocks.org/ 21 / 49
Najprostszy programy w C++ int main () { return 0 ; } 22 / 49
Najprostszy programy w C++ int main () { return 0 ; } Funkcja main jest najważniejszą częścią każdego programu w C++. 23 / 49
Najprostszy programy w C++ int main () { return 0 ; } Funkcja main jest najważniejszą częścią każdego programu w C++. Wykonywanie programu w C++ zawsze zaczyna się od wywołania funkcji main. 24 / 49
Najprostszy programy w C++ int main () { return 0 ; } Funkcja main jest najważniejszą częścią każdego programu w C++. Wykonywanie programu w C++ zawsze zaczyna się od wywołania funkcji main. Każda funkcja może zwracać wartość pewnego typu, który podawany jest przed nazwą funkcji. 25 / 49
Najprostszy programy w C++ int main () { return 0 ; } Funkcja main jest najważniejszą częścią każdego programu w C++. Wykonywanie programu w C++ zawsze zaczyna się od wywołania funkcji main. Każda funkcja może zwracać wartość pewnego typu, który podawany jest przed nazwą funkcji. Dla funkcji main typ zwracanej wartości to int - wartość całkowita. 26 / 49
Najprostszy programy w C++ int main () { return 0 ; } Funkcja main jest najważniejszą częścią każdego programu w C++. Wykonywanie programu w C++ zawsze zaczyna się od wywołania funkcji main. Każda funkcja może zwracać wartość pewnego typu, który podawany jest przed nazwą funkcji. Dla funkcji main typ zwracanej wartości to int - wartość całkowita. Po nazwie funkcji w nawiasach ( ) podaje się listę argumentów danych wejściowych. 27 / 49
Najprostszy programy w C++ int main () { return 0 ; } Funkcja main jest najważniejszą częścią każdego programu w C++. Wykonywanie programu w C++ zawsze zaczyna się od wywołania funkcji main. Każda funkcja może zwracać wartość pewnego typu, który podawany jest przed nazwą funkcji. Dla funkcji main typ zwracanej wartości to int - wartość całkowita. Po nazwie funkcji w nawiasach ( ) podaje się listę argumentów danych wejściowych. Nawiasy puste oznaczają że funkcja nie ma argumentów. 28 / 49
Najprostszy programy w C++ int main () { return 0 ; } Funkcja main jest najważniejszą częścią każdego programu w C++. Wykonywanie programu w C++ zawsze zaczyna się od wywołania funkcji main. Każda funkcja może zwracać wartość pewnego typu, który podawany jest przed nazwą funkcji. Dla funkcji main typ zwracanej wartości to int - wartość całkowita. Po nazwie funkcji w nawiasach ( ) podaje się listę argumentów danych wejściowych. Nawiasy puste oznaczają że funkcja nie ma argumentów. Nawiasy klamrowe { } wyznaczają początek i koniec bloku w którym umieszcza się instrukcje do wykonania treść funkcji, treść programu. 29 / 49
Najprostszy programy w C++ int main () { return 0 ; } Funkcja main jest najważniejszą częścią każdego programu w C++. Wykonywanie programu w C++ zawsze zaczyna się od wywołania funkcji main. Każda funkcja może zwracać wartość pewnego typu, który podawany jest przed nazwą funkcji. Dla funkcji main typ zwracanej wartości to int - wartość całkowita. Po nazwie funkcji w nawiasach ( ) podaje się listę argumentów danych wejściowych. Nawiasy puste oznaczają że funkcja nie ma argumentów. Nawiasy klamrowe { } wyznaczają początek i koniec bloku w którym umieszcza się instrukcje do wykonania treść funkcji, treść programu. Na końcu treści programu znajduje się instrukcja return 0; która powoduje zwrócenie zera i zakończenie wykonywania funkcji. 30 / 49
Najprostszy programy w C++ int main () { return 0 ; } Funkcja main jest najważniejszą częścią każdego programu w C++. Wykonywanie programu w C++ zawsze zaczyna się od wywołania funkcji main. Każda funkcja może zwracać wartość pewnego typu, który podawany jest przed nazwą funkcji. Dla funkcji main typ zwracanej wartości to int - wartość całkowita. Po nazwie funkcji w nawiasach ( ) podaje się listę argumentów danych wejściowych. Nawiasy puste oznaczają że funkcja nie ma argumentów. Nawiasy klamrowe { } wyznaczają początek i koniec bloku w którym umieszcza się instrukcje do wykonania treść funkcji, treść programu. Na końcu treści programu znajduje się instrukcja return 0; która powoduje zwrócenie zera i zakończenie wykonywania funkcji. Prawie każda linia w programie zakończona jest średnikiem. 31 / 49
Najprostszy programy w C++ 32 / 49
Najprostszy programy w C++ // pierwszy program # include <iostream > int main () { std :: cout <<" Pierwszy \ nprogram w C++" ; return 0 ; } /* Koniec programu */ #include <iostream> jest dyrektywą preprocesora wstawia w dane miejsce, plik podany po dyrektywie include w nawiasach kątowych < >. W tym przypadku dołączamy bibliotekę iostream, ponieważ będziemy używać strumieni do operacji wejścia/wyjścia. Użycie strumienia cout pozwala na przesyłanie danych na standardowe wyjście (ekran). Po znakach << określamy dane, które mają zostać przesłane na ekran. zwróćmy uwagę na średnik i podwójne apostrofy, zawierające tekst. W tekście można umieszczać znaki specjalne np..: \n przejście do nowej linii; \t wstawienie znaku tabulacji. 33 / 49
Najprostszy programy w C++ // pierwszy program # include <iostream > int main () { std :: cout <<" Pierwszy "<< std :: endl <<" program w C++" ; return 0 ; } /* Koniec programu */ Przejście do nowej linii można uzyskać przesyłając na standardowe wyjście znak oznaczony przez manipulator endl. Jak już zauważyliśmy, wyprowadzanie danych odbywa się z wykorzystaniem operatora <<, zwanego wstawiaczem (ang. inserter) Zwróćmy też uwagę, że możliwe jest wielokrotne użycie wstawiaczy powiązanych z jednym użyciem cout. Człon std:: występujący przed cout jest związany z przestrzeniami nazw (ang. namespace) zaawansowanym zagadnieniem służącym określaniu, które obiekty i funkcje są możliwe do użycia w danym miejscu. 34 / 49
Najprostszy programy w C++ Niedogodność tę możemy usunąć poprzez zadeklarowanie nad funkcją main, po dyrektywie include informacji, że będziemy używać funkcji (obiektów) pochodzących z danej przestrzeni nazw: // pierwszy program # include <iostream > using std :: cout ; using std :: endl ; int main () { cout <<" Pierwszy "<< endl <<" program w C++" ; return 0 ; } /* Koniec programu */ 35 / 49
Najprostszy programy w C++ Jeszcze lepszym rozwiązaniem jest zadeklarowanie nad funkcją main, po dyrektywie include informacji, że będziemy używać konkretnej przestrzeni nazw: // pierwszy program # include <iostream > using namespace std ; int main () { cout <<" Pierwszy "<< endl <<" program w C++" ; return 0 ; } /* Koniec programu */ 36 / 49
Najprostszy programy w C++ // pierwszy program # include <iostream > using std :: cout ; using std :: endl ; int main () { cout <<" Pierwszy "<< endl <<" program w C++" ; return 0 ; } /* Koniec programu */ Komentarz to taki fragment kodu którego treść nie jest brana pod uwagę przez kompilator podczas kompilacji. Komentarzem jest tekst zawarty między /* (początek komentarza) i */ (koniec komentarza). Komentarzy tych nie można zagnieżdżać. W tym przypadku treść komentarza może być zapisana w kilku wierszach. Komentarzem jest też tekst zaczynający się od // do końca linii. Komentarze tego typu mogą być zagnieżdżanie. Jest to komentarz jednowierszowy. 37 / 49
Najprostszy programy w C++ Testowany poprzednio program można zapisać również w postaci // pierwszy program # include <iostream. h> int main ( ) { cout <<" Pierwszy \ nprogram w C++" ; return 0 ; } /* Koniec programu */ Taki zapis programu pogarsza znacznie jego czytelność. Powinniśmy zawsze dbać o czytelność kodu! 38 / 49
Zmienne wprowadzenie Zmienna (ang. variable) w C++ służy do przechowywania (zapamiętania w pamięci komputera) wprowadzonej z klawiatury lub wyliczonej w programie wartości określonego typu. Dla zmiennej przydzielana jest pamięci o rozmiarze odpowiadającym typowi zmiennej, w którym można zapamiętać wartość i z którego można tę wartość odczytać. W programie do zmiennej odwołujemy się przez nazwę zmiennej. Aby użyć zmiennej musimy ją zadeklarować, czyli ogłosić, że zmienna o podanej nazwie będzie określonego typu. typdanych nazwazmiennej ; przykładowo: int x ; double x ; Deklaracja zmiennej informuje kompilator o nazwie zmiennej i o typie zmiennej, ale nie powoduje zarezerwowania pamięci dla zmiennej. 39 / 49
Zmienne wprowadzenie Zasady tworzenie identyfikatorów: Identyfikator może zawierać jedynie litery, cyfry oraz znak podkreślenia _ (identyfikator nie może zawierać spacji!). Pierwszym znakiem identyfikatora może być jedynie litera bądź znak pokreślenia, Rozróżnialna jest wielkość liter: x oraz X są różnymi zmiennymi. Nazwy (identyfikatory) nie mogą pokrywać się ze słowami kluczowymi np. int, main. Nazwa zmiennej powinna się jakoś kojarzyć z jej przeznaczeniem. Istnieją dwie główne konwencje tworzenia identyfikatorów: dlugoscboku oraz dlugosc_boku. 40 / 49
Pierwszy program Napiszemy program wyznaczający pole kwadratu. Tworzenie programu składa się z następujących etapów: analiza wymagań i specyfikacji zaprojektowanie sposobu rozwiązania (algorytmu) implementacja zapisanie programu w wybranym języku programowania kompilacja i uruchamianie testowanie 41 / 49
Pierwszy program rozwiązanie # include <iostream > using namespace std ; int main () { double bok ; // zadeklarowalismy zmienna rzeczywista cout<<" Podaj dlugosc boku kwadratu : " ; cin>>bok ; /* Użycie strumienia cin pozwala na przesyłanie danych ze standardowego wejścia ( klawiatura ) do zmiennej. Po znakach>>podajemy identyfikator zmiennej której wartość wczytujemy. Przed pobraniem wartości zmiennej, zmienna musi być zdefiniowana. } Polecenie przesyłania danych do zmiennej musi zostać zakończone średnikiem. */ double pole=bok * bok ; // Deklaracja zmiennej w locie. cout<<" Pole kwadratu wynosi : "<<pole ; return 0 ; /* Uwaga. Ze zmiennej możemy korzystać począwszy od miejsca deklaracji do końca bloku w której deklaracja została umieszczona. */ 42 / 49
Typowe błędy 43 / 49
Typowe błędy 44 / 49
Typowe błędy 45 / 49
Typowe błędy 46 / 49
Typowe błędy 47 / 49
Typowe błędy 48 / 49
Dziękuję za uwagę!!! 49 / 49