slide1
Download
Skip this Video
Download Presentation
C++

Loading in 2 Seconds...

play fullscreen
1 / 28

C++ - PowerPoint PPT Presentation


  • 177 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'C++' - manjit


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
slide1

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

using namespace std;

int main (int argc, char *argv[])

{

cout<<”witaj na kursie C++”<

return 0;

}

drugi program
Drugi program

Oto program, który zamieni milimetry na cale:

# include

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 # include # include
  • Nazwy odnoszące się do starych plików nagłówkowych z języka C są poprzedzone literą ”c”, na przykład:# include
  • 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 .
  • 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);
ad