C++
This presentation is the property of its rightful owner.
Sponsored Links
1 / 28

C++ PowerPoint PPT Presentation


  • 123 Views
  • Uploaded on
  • Presentation posted in: General

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

Download Presentation

C++

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


C

C++

Paweł Rzechonek

Instytut Informatyki

Uniwersytetu Wrocławskiego

semestr letni 2011/2012


Organizacja zaj

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 zaj1

Organizacja zajęć

Wykład

  • Wykładowca:Paweł Rzechonek

  • Kontakt mailowy:[email protected]

  • 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 zaj2

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 zaj3

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

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

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).


C wyk ad 1 8 02 2011

C++wykład 1 (8.02.2011)

Łagodne wprowadzenie do języka C++


Spis tre ci

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

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

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

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

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, czyli zmienne ustalone

  • Stałe są oznaczone deklaratorem const w deklaracji:constTYP 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

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

  • Zmienne ulotne są oznaczone deklaratorem volatile w deklaracji:volatileTYP 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

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.


Referencje1

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

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

  • 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 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

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

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};


Klasy1

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);};


Klasy2

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

  • 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

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

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);


  • Login