C++ Paweł Rzechonek Instytut Informatyki Uniwersytetu Wrocławskiego

Slides:



Advertisements
Podobne prezentacje
Kurs języka C++ Paweł Rzechonek Instytut Informatyki
Advertisements

Podstawy informatyki Informatyka Stosowana
Standardowa biblioteka języka C++
Programowanie obiektowe
Wprowadzenie.
Standard Template Library
Wprowadzenie do C++ Zajęcia 2.
Filip Andrzejewski Remigiusz Chiluta
Informatyka Stosowana
argumenty wiersza poleceń: getopt
Technologie Sieciowe 1.
OOPC++ - wstêp w zakresie C1 C++ Bjarne Stroustrup AT&T Bell-Laboratories Historia – dodanie do C klas itp., jako punkt wyjścia przyjęto język Simula.
Standard Template Library
Podstawy informatyki Wirtotechnologia Grupa: 1A
Java – technologie zaawansowane
Zaawansowane technologie Javy
#include #include main () { cout
Programowanie obiektowe W2
PODSTAWY PROGRAMOWANIA
„Język programowania”
Metody Programowania Wykład
Podstawy programowania II Wykład 2: Biblioteka stdio.h Zachodniopomorska Szkoła Biznesu.
Programowanie obiektowe III rok EiT
Podstawy informatyki (4)
Programowanie obiektowe III rok EiT
Podstawy informatyki 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy programowania. Język C i C++– podstawy Temat: 1
Wprowadzenie do programowania w językach C i C++
Informatyka I - Wykład ANSI C
Podstawy Programowania
Zadanie Dev C++.
Przekazywanie argumentów
Programowanie strukturalne i obiektowe
Język programowania Rozwijanie zdolności logicznego
Programowanie obiektowe III rok EiT
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład VIII.
Programowanie obiektowe III rok EiT dr inż. Jerzy Kotowski Wykład IX.
Programowanie obiektowe III rok EiT
Programowanie obiektowe III rok EiT
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014 Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Programowanie obiektowe 2013/2014
Kurs języka C++ – wykład 13 ( )
Programowanie w języku C++
Kurs języka C++ – organizacja zajęć ( )
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
K URS JĘZYKA C++ – WYKŁAD 10 ( ) Szablony.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
XML i nowoczesne technologie zarządzania treścią Wykład monograficzny Semestr zimowy 2008/09 Szymon ZiołoPatryk Czarnik
Programowanie strukturalne i obiektowe C++ Przeładowanie operatorów Robert Nowak.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++ Powtórzenie wiadomości z C++ Robert Nowak.
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
STOS. STL (ang. Standard Template Library) jest to biblioteka zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe.
K URS JĘZYKA C++ – WYKŁAD 1 ( ) Łagodne wprowadzenie do języka C++
K URS JĘZYKA C++ – ORGANIZACJA ZAJĘĆ ( ) Paweł Rzechonek Instytut Informatyki Uniwersytetu Wrocławskiego.
C++ mgr inż. Tomasz Turba Politechnika Opolska 2016.
Patryk Jasik pok. 415 GB Języki programowania Patryk Jasik pok. 415 GB
Kurs języka C++ – organizacja zajęć ( )
Programowanie Obiektowe – Epilog
Różnice między programowanie strukturalnym a obiektowym
Kurs języka C++ – organizacja zajęć ( )
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

C++ Paweł Rzechonek Instytut Informatyki Uniwersytetu Wrocławskiego semestr letni 2011/2012

Organizacja zajęć Cel Nauka programowania obiektowego w języku C++. Umiejętność wykorzystania wybranych klas z biblioteki standardowej. Wymagania Umiejętność programowania strukturalnego w języku ANSI C. Znajomość podstawowych struktur danych (tablice, listy, drzewa, grafy).

Organizacja zajęć Wykład Wykładowca: Paweł Rzechonek Kontakt mailowy: prz@ii.uni.wroc.pl Materiały do wykładu i zadania laboratoryjne będzie można znaleźć na stronie: http://ww.ii.uni.wroc.pl/~prz/ 2012lato/cpp/cpp.html Zakres materiału: programowanie obiektowe w C++; szablony w C++; biblioteka STL.

Organizacja zajęć Laboratorium W semestrze będzie do zrealizowania około 12 prostych zadań. Za każde zaprogramowane zadanie będzie można dostać do 10 punktów. Aby zaliczyć kurs należy do końca semestru zgromadzić co najmniej 50% z możliwych do zdobycia punktów. Zadania należy oddawać w wyznaczonym terminie. Studenci powinni osobiście prezentować swoje programy w czasie trwania ćwiczeń laboratoryjnych.

Organizacja zajęć Literatura B.Stroustrup: Język C++. WNT, Warszawa 2000. N.M.Josuttis: C++. Biblioteka standardowa. Podręcznik programisty. Wydawnictwo Helion, Gliwice 2003. J.Grębosz: Symfonia C++ (tom 1, 2, 3). Oficyna Kallimach, Kraków 2002. J.Grębosz: Pasja C++ (tom 1, 2). Oficyna Kallimach, Kraków 2003. S.B.Lippman, J.Lajoie: Podstawy języka C++. WNT, Warszawa 2001. C.L.Tondo, B.P.Leung: Podstawy języka C++. Ćwiczenia i rozwiązania. WNT, Warszawa 2001.

Cechy języka C++ C++ jest rozszerzeniem ANSI C. C++ jest zorientowany na programowanie obiektowe. C++ to język ogólnego przeznaczenia. Wygenerowany przez kompilator C++ kod wynikowy jest bardzo efektywny. C++ i jego standardowe biblioteki zakładają przenośność.

Historia języka C++ Język C++ został wymyślony Bjarnea Stroustrupa. Pierwsza wersja języka, znana jako C z klasami, pojawiła się w roku 1979 (było to obiektowe rozszerzenie języka C). Nazwa języka C++ została zaproponowana przez Ricka Mascitti w 1983 roku. Pierwszy standard języka C++ powstał w 1998 roku (ISO/IEC 14882:1998 "Information Technology – Programming Languages – C++"). Aktualny standard języka C++ pochodzi z roku 2003 (jest to ISO/IEC 14882:2003).

Łagodne wprowadzenie do języka C++ C++ wykład 1 (8.02.2011) Łagodne wprowadzenie do języka C++

Spis treści Pierwsze programy w C++ Struktura programu w C++ Stałe Zmienne ulotne Referencje Napisy Typ void Standardowe wejście i wyjście Klasy, obiekty, pola, metody

Pierwszy program Oto program powitalny w języku C++: # include <iostream> using namespace std; int main (int argc, char *argv[]) { cout<<”witaj na kursie C++”<<endl; return 0; }

Drugi program Oto program, który zamieni milimetry na cale: # include <iostream> using namespace std; int main () { cerr << "podaj długość w [mm]: "; int mm; cin >> mm; double inch = mm*25.3995; cerr << "ta sama długość w [in]: "; cout << mm << "[mm] = " << inch << "[in]"<< endl; return 0; }

Struktura programu w C++ Podział na pliki: nagłówkowe (rozszerzenie .h lub .hpp) z deklaracjami, źródłowe (rozszerzenie .cpp) z definicjami. W plikach nagłówkowych stosujemy włączanie warunkowe: # ifndef moje_h # define moje_h /* właściwa zawartość pliku moje_h */ # endif Aby otrzymać uruchamialny plik wynikowy w jednym z plików źródłowych musi się znaleźć definicja funkcji main().

Standardowe pliki nagłówkowe Pliki nagłówkowe odnoszące się do biblioteki standardowej nie mają żadnego rozszerzenia, na przykład: # include <iostream> # include <iomanip> # include <string> Nazwy odnoszące się do starych plików nagłówkowych z języka C są poprzedzone literą ”c”, na przykład: # include <cmath> Wszystkie definicje z biblioteki standardowej są umieszczone w przestrzeni nazw std, dlatego wygodnie jest na początku (małego) programu włączyć tą przestrzeń poleceniem: using namespace std;

Stałe, czyli zmienne ustalone Stałe są oznaczone deklaratorem const w deklaracji: const TYP zmienna = wyrażenie; Stałą należy zainicjalizować podczas deklaracji. Inicjalizacja stałego argumentu w funkcji następuje podczas wywołania funkcji. Do stałej nie wolno w programie nic przypisać – jej wartość określamy tylko podczas inicjalizacji.

Stałe w porównaniu z makrodefinicjami Dlaczego stałe są bezpieczniejsze od makrodefinicji? można określić zasięg nazwy stałej nazwa stałej jest znana kompilatorowi stała to komórka pamięci posiadająca swój adres łatwiejsza praca z debugerem

Zmienne ulotne Zmienne ulotne są oznaczone deklaratorem volatile w deklaracji: volatile TYP zmienna; Obiekt ulotny może się zmieniać w sposób wymykający się spod kontroli kompilatora (na przykład w obliczeniach współbieżnych). Kompilator nie optymalizuje kodu ze zmiennymi ulotnymi.

Referencje Operatory, które umożliwiają tworzenie typów złożonych: [] tablica * wskaźnik () funkcja & referencja Referencja odnosi się do istniejącego w pamięci obiektu. Referencję trzeba zainicjalizować. Referencja nie może zmienić obiektu, z którym została związana w czasie inicjalizacji.

Referencje Definicja referencji: typ &ref = obiekt; Przykład referencji: int x = 4; int &r = x; Referencje mają zastosowanie głównie jako argumenty funkcji i jako wartości zwracane przez funkcje. Przykład funkcji, która zamienia miejscami wartości zewnętrznych zmiennych: void zamiana (double &a, double &b) { double c = a; a = b; b = c; } Referencje implementuje się jako stały wskaźnik.

Napisy C-string to napis umieszczony w tablicy typu char[] zakończony znakiem o kodzie 0 '\0'. String to napis typu string przechowywany w obiekcie. Stringi są zadeklarowane w pliku nagłówkowym <string>. Stringi można ze sobą konkatenować za pomocą operatorów + i +=. W przypadku stringów nie trzeba się martwić o miejsce na napis – zostanie ono automatycznie zaalokowane.

Typ void Typ void informuje nas o braku typu. Typ void jest typem fundamentalnym, jednak nie wolno zadeklarować zmiennej typu void. Słowo void może wystąpić jako typ prosty w deklaracji typu złożonego: void *ptr; oznacza wskaźnik do pamięci na obiekt nieznanego typu; void fun (); oznacza, że funkcja nie będzie zwracała żadnego wyniku.

Stos i sterta Stos to pamięć zarządzana przez program. Zmienne lokalne tworzone w instrukcji blokowej są automatycznie usuwane przy wychodzeniu z bloku. Sterta to pamięć, którą zarządza programista. Programista przydziela obszar pamięci dla zmiennej operatorem new, ale musi pamiętać o zwolnieniu tej pamięci operatorem delete.

Standardowe wejście i wyjście W bibliotece standardowej są zdefiniowane cztery obiekty związane ze standardowym wejściem i wyjściem: cin standardowe wejście, cout standardowe wyjście, clog standardowe wyjście dla błędów, cerr niebuforowane standardowe wyjście dla błędów. Do czytania ze strumienia wejściowego został zdefiniowany operator >>: cin >> zmienna; Do pisania do strumieni wyjściowych został zdefiniowany operator <<: cout << wyrażenie; clog << wyrażenie; cerr << wyrażenie; Operatory czytające >> ze strumienia i piszące << do strumienia można łączyć kaskadowo w dłuższe wyrażenia (wielokrotne czytanie albo pisanie).

Klasy Klasa to nowy typ danych (projekt). Obiekt to instancja klasy (realizacja projektu). Klasa posiada różne pola i metody: wartości pól w obiekcie określają stan obiektu, metody determinują funkcjonalność obiektu. Klasę definiuje się następująco: class klasa { // definicje pól // deklaracje metod };

Klasy Przykład klasy: class Punkt { public: double x, y; Punkt (double a, double b); void przesun_x (double dx); void przesun_y (double dy); double odleglosc (Punkt p); };

Klasy Metody w klasie tylko deklarujemy (jak funkcje w plikach nagłówkowych). Definicje metod umieszczamy poza klasą (definicje te są kwalifikowane nazwą kasy za pomocą operatora zakresu ::). Przykład definicji metody poza klasą: void Punkt::przesun_x (double dx) { x += dx; }

Konstruktor Konstruktor to specjalna metoda uruchamiana tylko podczas inicjalizacji obiektu. Konstruktor ma taką samą nazwę jak klasa. Konstruktor nie zwraca żadnego wyniku. Przykład konstruktora: Punkt::Punkt (double a, double b) { x = a, y = b; }

Obiekty Można utworzyć obiekt na stosie za pomocą zwykłej deklaracji połączonej z inicjalizacją. Przykład obiektu automatycznego: Punkt a = Punkt(4,6); Punkt b(5,7); Można też utworzyć obiekt na stercie za pomocą operatora new. Pamiętaj o usunięciu go operatorem delete, gdy będzie niepotrzebny. Przykład obiektu w pamięci wolnej: Punkt *p = new Punkt(-2,-3); // … delete p;

Składowe w obiekcie Do składowych w obiekcie odwołujemy się za pomocą operatora dostępu do składowych (kropka . dla obiektów i referencji albo strzałka -> dla wskaźników). Metoda jest wywoływana na rzecz konkretnego jednego obiektu. Przykłady odwołania do składowych w obiekcie: Punkt a(17,23), b(20,19), *p = &p; double d = a.odleglosc(b); b.przesun_y(8); p->przesun_x(6);