Programowanie Obiektowe i C++

Podobne dokumenty
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Programowanie Obiektowe i C++

Część 4 życie programu

1 Podstawy c++ w pigułce.

Podstawy programowania skrót z wykładów:

1 Podstawy c++ w pigułce.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy Programowania Podstawowa składnia języka C++

I - Microsoft Visual Studio C++

Programowanie Obiektowe i C++

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie komputerowe. Zajęcia 3

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

Pętla for. Wynik działania programu:

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Wstęp do programowania

Programowanie obiektowe i C++ dla matematyków

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Podstawy Programowania C++

Pytania sprawdzające wiedzę z programowania C++

Programowanie komputerowe. Zajęcia 1

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Programowanie - wykład 4

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Podstawy Programowania

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Wstęp do programowania

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Kontrola przebiegu programu

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Microsoft IT Academy kurs programowania

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Języki programowania - podstawy

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

Struktura pliku projektu Console Application

Programowanie strukturalne i obiektowe

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Język C - podstawowe informacje

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Wstęp do programowania

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

C-struktury wykład. Dorota Pylak

Programowanie w języku C++ Grażyna Koba

3. Instrukcje warunkowe

Instrukcje sterujące

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Języki i metodyka programowania. Wprowadzenie do języka C

Język ludzki kod maszynowy

Operacje wejścia/wyjścia odsłona pierwsza

Podstawy Programowania. Wykład 1

Techniki Programowania wskaźniki

Podstawy programowania w języku C

7. Pętle for. Przykłady

Programowanie Proceduralne

Programowanie komputerowe. Zajęcia 2

Język C++ Różnice między C a C++

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy algorytmiki i programowania - wykład 4 C-struktury

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Wstęp do programowania. Wykład 1

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Wstęp do Programowania 2

Podstawy programowania C. dr. Krystyna Łapin

Podstawy programowania - 1

( wykł. dr Marek Piasecki )

KOTLIN. Język programowania dla Androida

Ćwiczenie nr 3. Temat: Definicje i wykorzystanie funkcji, parametry funkcji

Wprowadzenie do programowania w języku C

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Wstęp do informatyki- wykład 9 Funkcje

Transkrypt:

Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 2.10.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 1 / 38

Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 2 / 38

Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include <iostream> using namespace std ; main() // Program główny { // do obiektu cout wysyłamy komunikat << // argument - co wypisać cout << "Hello, brave new world" ; cout << endl ; // koniec linii Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 3 / 38

Zmienne i arytmetyka Każda nazwa i każde wyrażenie maja typ, np int i ; deklaruje zmienna i typu int, tj. całkowita. Typami podstawowymi sa: char short int long reprezentujace liczby całkowite oraz float double long double reprezentujace liczby zmiennopozycyjne. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 4 / 38

Operacje arytmetyczne Operatory arytmetyczne można stosować do dowolnej kombinacji typów podstawowych + (plus, jedno- i dwuaargumentowy) - (minus, jedno- i dwuaargumentowy) * (mnożenie) / (dzielenie) % (reszta z dzielenia) Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 5 / 38

Relacje To samo tyczy się operatorów relacji: == (równe)!= (nierówne) < (mniejsze) > (większe) <= (mniejsze lub równe) >= (większe lub równe) Wynik porównania jest typu int. Pamiętaj: symbol = oznacza przypisanie, a nie porównanie! Wyrażenie zakończone średnikiem staje się instrukcja. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 6 / 38

Wskaźniki i tablice Tablicę można zadeklarować następujaco: char t[10]; // tablica 10 znaków podobnie można zadeklarować wskaźnik do znaku char* p; // wskaźnik do znaku Dolnym zakresem wszystkich tablic jest zero. Tablica t ma elementy t[0]..t[9] Wskaźnik przechowuje adres obiektu p = &t[3]; // p wskazuje czwarty element Operator jednoargumentowy & daje w wyniku adres argumentu. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 7 / 38

Bloki { double d; int i; short s; d = d+i; i = s*i; Każda instrukcję kończymy średnikiem Ciag instrukcji otoczony nawiasami klamrowymi jest instrukcja Deklaracje w bloku sa widoczne tylko wenatrz bloku Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 8 / 38

Testy if (i % 2) { i = i / 2 ; else i = 3 * i + 1 ; Instrukcja warunkowa: if (warunek) instrukcja else instrukcja Pierwsza instrukcja zostanie wykonana jeśli warunek ma wartość różna od zera. Forma skrócona (bez else): if (warunek) instrukcja Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 9 / 38

Pętla while int i ; cin >> i ; // pobierz i z wejscia while (i!= 0) { // albo: while(i) if (i % 2) i = i / 2 ; else i = 3 * i + 1 ; Ciało pętli będzie wykonywane tak długo jak warunek będzie miał wartość niezerowa. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 10 / 38

Pętla for Konstrukcja for(wyrażenie1; wyrażenie2;wyrażenie3) instrukcja odpowiada konstrukcji wyrażenie1; while(wyrażenie2) { instrukcja wyrażenie3 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 11 / 38

Pętla for przykład for(i = 0; i < 10 ; i++) cout << t[i] ; Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 12 / 38

Instrukcja do-while Składnia: do instrukcja (wyrażenie) Przykład do { char ch ; cin >> ch ; cout << ch ; while(ch!= q ) ; Pętla wykonuje się tak długo jak warunek jest prawdziwy. Warunek jest sprawdzany na końcu pętli. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 13 / 38

Instrukcje break i continue Instrukcja break wewnatrz pętli powoduje natychmiastowe wyjście z niej. W przypadku zagnieżdżonych pętli wyjście dotyczy tylko jednej (wewnętrznej) pętli. Instrukcja continue powoduje natychmiastowe przejście do sprawdzania warunku pętli. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 14 / 38

Przykład break i continue for(;;) { // pętla nieskończona char ch ; cin >> ch ; if(ch == q ) break ; // Wyjdź z pętli if(ch == a ) { cout << Ala ma kota << endl ; continue ; // Następny obrót pętli if(ch == b ) cout << "Beeee!" << endl ; Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 15 / 38

Instrukcja switch Instrukcja switch pozwala na wybór wariantu w zależności od wartości podanego wyrażenia całkowitego. Składnia: switch(wyrażenie) { case stała 1 : ciąg instrukcji //... case stała n : ciąg instrukcji default: ciąg instrukcji Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 16 / 38

Instrukcja switch c.d. Każdy z ciagów instrukcji powinien w zasadzie kończyć się instrukcja break, w przeciwnym wypadku zostanie wykonany również następny ciag instrukcji... Ciag instrukcji z etykieta default zostanie wykonany jeśli wartość wyrażenia nie pasuje do żadnego z wymienionych przypadków. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 17 / 38

Przykład switch int quit = 0 ; do { char ch ; cin >> ch ; switch(ch) { case q : quit = 1 ; break ; // Wyjdź ze switch case a : cout << Ala ma kota << endl ; break ; //... while(!quit) Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 18 / 38

Deklaracje funkcji Deklaracja funkcji umożliwia użycie funkcji zdefiniowanej później lub w innym pliku. Deklaracja funkcji podaje typ wyniku funkcji, jej nazwę oraz typy argumentów. Można (ale nie trzeba) podać nazwy argumentów. Typ wyniku void oznacza, że funkcja nie daje wyniku Deklarację funkcji kończymy średnikiem. Przykłady: void drawline(int x1,int x2,int y1,int y2) ; int foo(int, float) ; Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 19 / 38

Definicje funkcji Definicja funkcji podaje jej nagłówek (podobnie jak deklaracja, z tym, że tu nazwy argumentów sa obowiazkowe) oraz treść Treść funkcji jest zawsze blokiem Definicji funkcji nie kończymy średnikiem. Przykład: void paint() { drawline(100,100,300,100) ; Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 20 / 38

Powrót z funkcji i dawanie wyniku Instrukcja return powoduje natychmiastowy powrót z funkcji Jeśli funkcja daje wynik (typ wyniku różny od void), argumentem dla return jest wyrażenie, którego wartość stanie się wynikiem funkcji. Przykład: char cfunc(int i) { switch(i) { case 0: return a ; case 1: return g ; //switch //cfunc Zwróćmy uwagę, że po return użycie break jest zbędne. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 21 / 38

Rekurencja Podobnie jak w innych językach możemy definiować funkcje rekurencyjne. Każde wcielenie funkcji ma własne wartości parametrów i zmiennych lokalnych. int silnia(int n) { if(n<=1) return 1; int s ; s = silnia(n-1); return n * s ; Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 22 / 38

Modyfikacja obiektów zewnętrznych Argumenty funkcji sa przekazywane przez wartość, tj. funkcja otrzymuje kopię wartości argumentu. Zmiana wartości argumentu wewnatrz funkcji jest widoczna tylko wewnatrz funkcji void f(int a) { a = 5; int main { int x = 42 ; f(x) ; // x ma nadal wartość 42 Jeśli chcemy zmienić wartość obiektu zewnętrznego (z punktu widzenia funkcji) możemy przekazać wskaźnik do niego Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 23 / 38

Modyfikacja obiektów zewnętrznych Jeśli chcemy zmienić wartość obiektu zewnętrznego (z punktu widzenia funkcji) możemy przekazać wskaźnik do niego void g(int* a) { *a = 5; int main { int x = 42 ; g(&x) ; // x ma wartość 5 Funkcja g otrzymuje adres zmiennej x i może operować na niej samej, a nie tylko na jej kopii. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 24 / 38

Referencje Język C++ (w odróżnieniu od C) umożliwia również przekazywanie argumentów przez referencję void h(int& a) { a = 5; int main { int x = 42 ; h(x) ; // x ma wartość 5 Wywołanie funkcji h wyglada tak samo jak wywołanie przez wartość,ale w istocie przekazywany jest adres zmiennej x, a nie kopia jej wartości. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 25 / 38

Wskaźniki do funkcji void run(void (*paint)()) { //... (*paint)() void paint() { drawline(100,100,300,100) ; int main() { run(paint) ; Argumentem funkcji run jest wskaźnik do funkcji bezwynikowej. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 26 / 38

Wskaźniki do funkcji void run(void (*paint)()) { //... (*paint)() void paint() { drawline(100,100,300,100) ; int main() { run(paint) ; Dla ustalenia adresu funkcji nie używamy operatora & a tylko jej nazwy. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 27 / 38

Wskaźniki do funkcji void run(void (*paint)()) { //... (*paint)() void paint() { drawline(100,100,300,100) ; int main() { run(paint) ; Jeśli pf jest wskaźnikiem do funkcji, to do jej wywołania używamy konstrukcji (*pf)(argumenty) Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 28 / 38

Program w wielu plikach Program może być zapisany w wielu plikach źródłowych. W C++, podobnie jak w C nie ma jawnego systemu modułów. Namiastkę modułu tworzymy zapisujac jego interfejs w jednym pliku (często z rozszerzeniem.h) a implementację w innym (innych). Korzystajac z modułu właczamy jego interfejs dyrektywa preprocesora #include #include "foo" działa tak jakby w jej miejscu znalazła się treść pliku foo. #include <foo> oznacza, że pliku foo należy szukać w standardowych miejscach dla nagłówków (np. #include <iostream>). Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 29 / 38

Kompilacja i łaczenie Każdy plik z implementacja kompilujemy do pliku obiektowego z rozserzeniem.o (pod Windows.obj), np. g++ -c dtest.cpp g++ -c drawing.cpp Na zakończenie łaczymy uzyskane pliki obiektowe w plik wykonywalny, np: g++ -o dtest dtest.o drawing.o Gotowe biblioteki możemy dołaczyć używajac opcji -l,np g++ -o dtest -lx11 dtest.o drawing.o dołacza bibliotekę zawierajac a podstawowe funkcje systemu Xwindow. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 30 / 38

dtest: dtest.o drawing.o Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 31 / 38 Makefile Zwykle wygodnie jest użyć programu make, opisujac proces kompilacji w Makefile: LIBS=-lX11 LDFLAGS=-L/usr/X11R6/lib -g CFLAGS=-g check: dtest./dtest drawing.o: drawing.cpp drawing.h g++ $(CFLAGS) -c $< btest.o: btest.cpp drawing.h g++ $(CFLAGS) -c $<

Makefile Plik Makefile składa się z definicji zmiennych (CFLAGS, LDFLAGS) oraz reguł. Reguły maja składnie następujac a: cel : zależności TAB polecenia make kompiluje tylko te pliki które sa nieaktualne, tj. starsze od plików od których zależa. Korzysta w tym celu z reguł wyspecyfikowanych w pliku, oraz z tzw. reguł domyślnych. Marcin Benke (IIUW) Programowanie Obiektowe i C++ 2.10.2006 32 / 38