Bogdan Kreczmer. Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska

Wielkość: px
Rozpocząć pokaz od strony:

Download "Bogdan Kreczmer. Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska"

Transkrypt

1 Podejście obiektowe, przeciążenia operatorów, referencje Bogdan Kreczmer Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową. Podejście obiektowe, przeciążenia operatorów, referencje

2 Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer:

3 Spis treści Podejście obiektowe 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję

4 Spis treści Podejście obiektowe Rozumienie świata Pojęcie Obiekty 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

5 Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania.

6 Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania. Podejście obiektowe bazuje na fundamentalnej cesze aktywności intelektualnej, która pozwala ludziom (i nie tylko) wyróżniać odrębne obiekty w swoim otoczeniu, przypisywać im własności oraz określać sposób ich interakcji między sobą i otoczeniem.

7 Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania. Podejście obiektowe bazuje na fundamentalnej cesze aktywności intelektualnej, która pozwala ludziom (i nie tylko) wyróżniać odrębne obiekty w swoim otoczeniu, przypisywać im własności oraz określać sposób ich interakcji między sobą i otoczeniem. Wyróżnianie obiektów może być dokonywane na różne sposoby. Oparte jest ono na obserwacji i wcześniejszej wiedzy.

8 Podejście obiektowe Rozumienie świata Pojęcie Obiekty oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania. Podejście obiektowe bazuje na fundamentalnej cesze aktywności intelektualnej, która pozwala ludziom (i nie tylko) wyróżniać odrębne obiekty w swoim otoczeniu, przypisywać im własności oraz określać sposób ich interakcji między sobą i otoczeniem. Wyróżnianie obiektów może być dokonywane na różne sposoby. Oparte jest ono na obserwacji i wcześniejszej wiedzy. Obiektowi lub obiektom jesteśmy w stanie przypisać pojęcia. Proces ten nazywa się postrzeganiem.

9 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty

10 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty

11 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty...

12 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty...

13 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obserwując otoczenie jesteśmy w stanie wyodrębnić przedmioty i przypisać im pojęcia.

14 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Wyodrębnieniu może podlegać zestaw elementów, jako osobna całość.

15 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Pojęcie odnosi się wówczas do zbioru elementów między którymi zachodzą odpowiednie relacje.

16 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Każdemu z elementów może być osobno wyróżniony poprzez przypisanie mu indywidualnego pojęcia.

17 Postrzeganie Podejście obiektowe Rozumienie świata Pojęcie Obiekty Znajdując cechy wspólne wszystkich elementów możemy również przyporządkować pojęcie ich zbiorowi.

18 Spis treści Podejście obiektowe Rozumienie świata Pojęcie Obiekty 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

19 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia abstrakcyjnego jest przypisanie mu pewnego pojęcia.

20 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia abstrakcyjnego jest przypisanie mu pewnego pojęcia. Pojęcie jest wyobrażeniem lub oznaczeniem, które stosujemy do rzeczy lub wyobrażeń abstrakcyjnych.

21 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Istotnym elementem aktu wyróżnienia jakiegoś tworu lub wyobrażenia abstrakcyjnego jest przypisanie mu pewnego pojęcia. Pojęcie jest wyobrażeniem lub oznaczeniem, które stosujemy do rzeczy lub wyobrażeń abstrakcyjnych. Przypisywanie pojęć jest możliwe dzięki rozpoznaniu własności wspólnych dla reprezentantów zbiorów, do których stosuje się dane pojęcie.

22 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu.

23 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne

24 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom

25 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma

26 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma posiadanie przynależność małżeństwo

27 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma posiadanie przynależność małżeństwo spotkanie zakup wyjazd

28 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Przyswojenie sobie zbioru pojęć pozwala nadawać znaczenie obiektom znajdującym się w naszym otoczeniu. Przykłady pojęć: materialne niematerialne relacyjne zdarzenia inne pojazd budynek atom czas poprawność firma posiadanie przynależność małżeństwo spotkanie zakup wyjazd wzorowy nietypowy ikona

29 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia

30 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia

31 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia

32 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia Intensja jest pełną definicją pojęcia i testu określającego, czy dane pojęcie odnosi się do danej rzeczy lub wyobrażenia abstrakcyjnego.

33 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia Intensja jest pełną definicją pojęcia i testu określającego, czy dane pojęcie odnosi się do danej rzeczy lub wyobrażenia abstrakcyjnego. Ekstensja jest zbiorem wszystkich rzeczy i wyobrażeń abstrakcyjnych, do których stosuje się dane pojęcie.

34 Czym jest pojęcie Rozumienie świata Pojęcie Obiekty Termin pojęcie zawiera: intensję treść pojęcia ekstensję zakres pojęcia Intensja jest pełną definicją pojęcia i testu określającego, czy dane pojęcie odnosi się do danej rzeczy lub wyobrażenia abstrakcyjnego. Ekstensja jest zbiorem wszystkich rzeczy i wyobrażeń abstrakcyjnych, do których stosuje się dane pojęcie. Trójka pojęciowa = (nazwa, intensja, ekstensja)

35 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja)

36 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy

37 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa intensja ekstensja

38 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja ekstensja

39 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja ekstensja Maszyna manipulacyjna sterowana automatycznie za pomocą sygnałów generowanych w programowalnym układzie sterowania.

40 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja Maszyna manipulacyjna sterowana automatycznie za pomocą sygnałów generowanych w programowalnym układzie sterowania. ekstensja irb-6, IRB1400, Puma 560,...

41 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Robot przemysłowy nazwa Robot przemysłowy intensja Maszyna manipulacyjna sterowana automatycznie za pomocą sygnałów generowanych w programowalnym układzie sterowania. ekstensja irb-6, IRB1400, Puma 560,...

42 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) nazwa intensja ekstensja

43 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa intensja ekstensja

44 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja

45 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja Uczciwy, rzetelny,...

46 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja Uczciwy, rzetelny,...

47 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Idealny człowiek nazwa Idealny człowiek intensja ekstensja Uczciwy, rzetelny,... Niektóre pojęcia mogą nie mieć swoich reprezentantów.

48 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) nazwa intensja ekstensja

49 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa intensja ekstensja

50 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja

51 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja

52 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja 40S25, 40S25,...

53 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) 40S25 nazwa 40S25 intensja ekstensja 40S25, 40S25,... Pojęcie może nie mieć swojej definicji. Przykład układu scalonego, którego dokumentacja i opis zostały zagubione.

54 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) nazwa intensja ekstensja

55 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa intensja ekstensja

56 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja ekstensja

57 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja ekstensja Osoba lub organizacja kupująca dobra lub usługi.

58 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego

59 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego

60 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient, Interesant nazwa Klient, Interesant intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego

61 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient, Interesant nazwa Klient, Interesant intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego Pojęcia mogą mieć synonimy.

62 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. ekstensja Jan Kowalski, Firma Jana Kowalskiego

63 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. Aplikacja programowa, która żąda od innej aplikacji realizacji usług. ekstensja Jan Kowalski, Firma Jana Kowalskiego xclock, xterm,...

64 Przykłady trójek pojęciowych Rozumienie świata Pojęcie Obiekty Trójka pojęciowa = (nazwa, intensja, ekstensja) Klient nazwa Klient intensja Osoba lub organizacja kupująca dobra lub usługi. Aplikacja programowa, która żąda od innej aplikacji realizacji usług. ekstensja Jan Kowalski, Firma Jana Kowalskiego xclock, xterm,... Pojęcia mogą mieć homonimy.

65 Spis treści Podejście obiektowe Rozumienie świata Pojęcie Obiekty 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

66 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiekt?! Co to takiego???

67 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiektem jest to coś, do czego da się zastosować jakieś pojęcie. Tak więc obiekt jest egzemplarzem pojęcia.

68 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiektem jest to coś, do czego da się zastosować jakieś pojęcie. Tak więc obiekt jest egzemplarzem pojęcia. Pojęcie = robot przemysłowy

69 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Obiektem jest to coś, do czego da się zastosować jakieś pojęcie. Tak więc obiekt jest egzemplarzem pojęcia. Pojęcie = robot przemysłowy Obiekt = konkretny egzemplarz robota, np. robota IRB1400

70 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

71 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

72 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

73 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

74 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

75 Obiekty Podejście obiektowe Rozumienie świata Pojęcie Obiekty Własności: Obiekt może mieć cechy, którym przypisywane są nazwy, np. kulistość. Obiekt może mieć atrybuty, np. promień kuli. Obiektowi możemy przyporządkować stan. Stan obiektu jest kolekcją atrybutów i związków dotyczących danego obiektu. Zmiana stanu jest zmianą atrybutu i/lub związków danego obiektu (np. położenie obiektu x, y, z). Obiekt może mieć pewien ograniczony czas życia. Obiekt może być powiązany z innymi obiektami poprzez odwzorowania lub relacje. Odwzorowania i relacje mogą także być modelowane jako obiekty.

76 Spis treści Podejście obiektowe Standardowe pliki nagłówkowe w C++ 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

77 Wyświetlenie prostego komunikatu Standardowe pliki nagłówkowe w C++ Język C #include <stdio.h> Język C++ #include <iostream> int main( ) { printf( Hejka!!!\n ); return 0; } int main( ) { std::cout << Hejka!!!\n ; } Jedną z istotnych cech programów pisanych w języku C++ jest brak rozszerzeń w nazwach plików nagłówkowych.

78 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

79 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

80 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

81 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

82 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

83 Jak do tego doszło Trochę historii Standardowe pliki nagłówkowe w C : Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley Stała się ona opisem nieformalnego standardu języka, określanego jako C++ ARM 1998: Przyjęcie standardu języka C++ przez ANSI i ISO. ANSI American National Standards Institute ISO International Organization for Standardization ANSI/ISO C++

84 C++ ARM versus ANSI/ISO C++ Standardowe pliki nagłówkowe w C++ C++ ARM #include <iostream.h> int main( ) { cout << Hejka!!! << endl; return 0; } ANSI/ISO C++ #include <iostream> using namespace std; int main( ) { cout << Hejka!!! << endl; } Różnica w nazwach plików nagłówkowych umożliwiło środowisku programistów łagodne przejście z C++ARM do standardu ANSI/ISO C++.

85 Standardowe pliki nagłówkowe w C++ Odpowiedniość plików nagłówkowych dla C i C++ <math.h> <cmath> <stdio.h> <ctype.h> <stdlib.h> <string.h> Przypomnienie

86 Standardowe pliki nagłówkowe w C++ Odpowiedniość plików nagłówkowych dla C i C++ <math.h> <cmath> <stdio.h> <cstdio> <ctype.h> <cctype> <stdlib.h> <cstdlib> <string.h> <cstring> Przypomnienie

87 Standardowe pliki nagłówkowe w C++ Rozszerzenia plików C++ Przypomnienie.H.C.hh.cc.hpp.cpp.hxx.cxx Nie ma jednej ustalonej konwencji.

88 Standardowe pliki nagłówkowe w C++ Rozszerzenia plików C++ Przypomnienie.H.C.hh.cc.hpp.cpp.hxx.cxx Można również stosować konwencje mieszane.

89 Standardowe pliki nagłówkowe w C++ Chronologia wprowadzanych standardów C (ISO/IEC 14882:2011) Przyjęcie standardu ANSI/ISO języka C (ISO/IEC 14882:2003) Korekcja wcześniejszego standardu (ISO/IEC TR 19768:2007) Oparty na technicznym raporcie Library Technical Report 1, który wprowadzał rozszerzenia do biblioteki standardowej. C (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.

90 Standardowe pliki nagłówkowe w C++ Chronologia wprowadzanych standardów C (ISO/IEC 14882:2011) Przyjęcie standardu ANSI/ISO języka C++. C (ISO/IEC 14882:2003) Korekcja wcześniejszego standardu. C++TR (ISO/IEC TR 19768:2007) Oparty na technicznym raporcie Library Technical Report 1, który wprowadzał rozszerzenia do biblioteki standardowej. C (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.

91 Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++ C usunięcie błędów i uzupełnienie wcześniejszego standardu. C++14 pełni rolę korekty do C++11. W niewielkim tylko stopniu rozszerzy koncepcje standardu C++11. C Będzie miał charakter zasadniczego rozszerzenia w stosunku do standardu C++11.

92 Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++ C usunięcie błędów i uzupełnienie wcześniejszego standardu. C++14 pełni rolę korekty do C++11. W niewielkim tylko stopniu rozszerzy koncepcje standardu C++11. C Będzie miał charakter zasadniczego rozszerzenia w stosunku do standardu C++11.

93 Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++ C usunięcie błędów i uzupełnienie wcześniejszego standardu. C++14 pełni rolę korekty do C++11. W niewielkim tylko stopniu rozszerzy koncepcje standardu C++11. C Będzie miał charakter zasadniczego rozszerzenia w stosunku do standardu C

94 Dalszy rozwój Podejście obiektowe Standardowe pliki nagłówkowe w C++

95 Standard wykorzystywany na zajęciach Standardowe pliki nagłówkowe w C++ Obowiązuje nas: ISO C++14 g++ -c -Wall -pedantic -std=c++14 program.cpp

96 Standard wykorzystywany na zajęciach Standardowe pliki nagłówkowe w C++ Obowiązuje nas: ISO C++14 g++ -c -Wall -pedantic -std=c++14 program.cpp Należy jednak pamiętać, że implmenetacja standardu C++14 ma wciąż charakter eksperymentalny i nie jest pełna!

97 Spis treści Podejście obiektowe Przeciążenie (przeładowanie) funkcji 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

98 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przeciążanie funkcji (ang. function overloading) pozwala na definiowanie funkcji o tych samych nazwach, które różnią się ilością lub typami parametrów. Mogą (lecz nie muszą) zwracać wartości różnego typu. Mechanizm ten pozwala stosować funkcję realizującej ten sam typ operacji w różnych kontekstach.

99 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przeciążanie funkcji (ang. function overloading) pozwala na definiowanie funkcji o tych samych nazwach, które różnią się ilością lub typami parametrów. Mogą (lecz nie muszą) zwracać wartości różnego typu. Mechanizm ten pozwala stosować funkcję realizującej ten sam typ operacji w różnych kontekstach. Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; }

100 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przeciążanie funkcji (ang. function overloading) pozwala na definiowanie funkcji o tych samych nazwach, które różnią się ilością lub typami parametrów. Mogą (lecz nie muszą) zwracać wartości różnego typu. Mechanizm ten pozwala stosować funkcję realizującej ten sam typ operacji w różnych kontekstach. Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; }

101 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; } void main( ) { Wyswietl(123.14); Wyswietl( Jak dobrze wstać skoro świt. ); }

102 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; } void main( ) { Wyswietl(123.14); Wyswietl( Jak dobrze wstać skoro świt. ); }

103 Przeciążanie funkcji Przeciążenie (przeładowanie) funkcji Przykład: void Wyswietl( float Liczba ) { cout << Liczba: << Liczba << endl; } void Wyswietl( const char Napis ) { cout << Napis: \ << Napis << \ << endl; } void main( ) { Wyswietl(123.14); Wyswietl( Jak dobrze wstać skoro świt. ); }

104 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie?

105 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie Jak to rozumieć?

106 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalną obciążalność lub pojemność.

107 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie (2) istniejącą zawartość wyładowujemy i na jej miejsce wprowadzamy nowy ładunek.

108 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeciążenie A to jak rozumić?

109 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeciążenie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalny ciężar.

110 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeciążenie (2) do istniejących obowiązków (zadań, powinności itd.) dodajemy nowe przekraczając nominalny zakres.

111 Nieszczęsne słowo: overload Przeciążenie (przeładowanie) funkcji Przeładowanie czy przeciążenie? Przeładowanie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalną obciążalność lub pojemność. Przeładowanie (2) istniejącą zawartość wyładowujemy i na jej miejsce wprowadzamy nowy ładunek. Przeciążenie (1) do istniejącego ładunku dodajemy nowy przekraczając dopuszczalny ciężar. Przeciążenie (2) do istniejących obowiązków (zadań, powinności itd.) dodajemy nowe przekraczając nominalny zakres.

112 Spis treści Podejście obiektowe Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

113 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol Dodaj( Symbol Arg1, Symbol Arg2 ) { } int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

114 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol Dodaj( Symbol Arg1, Symbol Arg2 ) { } int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

115 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol Dodaj( Symbol Arg1, Symbol Arg2 ) { return TabliczkaDzialania[Arg1][Arg2]; } int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

116 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { return TabliczkaDzialania[Arg1][Arg2]; Tabliczka działania } + e a b int main( ) { Symbol } x = a, wynik; wynik = operator + (x, b); e e a b a a b e b b e a a + b = e

117 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { return TabliczkaDzialania[Arg1][Arg2]; Tabliczka działania } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b = e

118 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { Nie możemy return definiować TabliczkaDzialania[Arg1][Arg2]; funkcji operatorowych, gdy ich wszystkie Tabliczka parametry działania są typów wbudowanych } takich jak float, int, itd. np. + e a b int operator + (int arg1, float arg2) int main( ) e e a b { { a a b e Symbol... x = a, wynik; b b e a } wynik = x + b; } Dla tych typów definicje tych operacji są już wbudowane w kompilator. a + b = e

119 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { Uwaga: return Wbudowanych TabliczkaDzialania[Arg1][Arg2]; definicji operatorów dodawania nie możnatabliczka jawnie wywołać działania tak jak operacji } np. dla symboli, tzn. + e a b int Liczba main( = ) operator + (10, 2); { Symbol x = a, wynik; } wynik = x + b; e e a b a a b e b b e a a + b = e

120 Arytmetyka symboli Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 ) { Uwaga: return Wbudowanych TabliczkaDzialania[Arg1][Arg2]; definicji operatorów dodawania nie możnatabliczka jawnie wywołać działania tak jak operacji } np. dla symboli, tzn. + e a b int Liczba main( ) e e a b = operator + (10, 2); { a a b e Symbol x = a, wynik; b b e a } wynik = x + b; a + b = e

121 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } wynik = x + b; x = a, wynik; + e a b e e a b a a b e b b e a a + b = e

122 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } wynik = x + +b; x = a, wynik; + e a b e e a b a a b e b b e a a + b = e

123 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } x = a, wynik; wynik = x + (+b); + e a b e e a b a a b e b b e a a + b = e

124 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } x = a, wynik; wynik = x + operator+(b); + e a b e e a b a a b e b b e a a + b = e

125 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator + ( Symbol Arg) {??? } int main( ) { Symbol } x = a, wynik; wynik = x + operator+(b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

126 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator + ( Symbol Arg) { return Arg; } int main( ) { Symbol } x = a, wynik; wynik = x + operator+(b); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

127 Przeciążanie operatora + Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator + ( Symbol Arg) { return Arg; } int main( ) { Symbol } wynik = x + +b; x = a, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

128 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Tabliczka działania int main( ) { Symbol } wynik = x + b; x = a, wynik; + e a b e e a b a a b e b b e a a + b =?

129 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) {??? Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

130 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

131 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { e +? = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

132 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { e + e = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

133 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { e + e = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

134 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { a +? = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

135 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { a + b = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

136 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { b +? = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

137 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { b + a = e Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania??? } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

138 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania return ElemOdwrotny[Arg]; } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b =?

139 Przeciążanie operatora Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b }; Symbol TabliczkaDzialania[3][3] = { { e, a, b }, { a, b, e }, { b, e, a } }; Symbol operator + ( Symbol Arg1, Symbol Arg2 )... Symbol operator ( Symbol Arg) { Symbol ElemOdwrotny[ ] = { e, b, a }; Tabliczka działania return ElemOdwrotny[Arg]; } + e a b int main( ) { Symbol } wynik = x + b; x = a, wynik; e e a b a a b e b b e a a + b = a + a = b

140 Jeszcze raz dodawanie Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b };... Symbol Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol } x = a, wynik; wynik = Dodaj(x, b); wynik = operator+ (x, b); wynik = x + b; + e a b e e a b a a b e b b e a a + b = e

141 Jeszcze raz dodawanie Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję enum Symbol { e, a, b };... Symbol Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol x = a, wynik; + e a b e e a b a a b e b b e a } wynik = x + b; a + b = e

142 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol wynik = a; + e a b e e a b a a b e b b e a } wynik += b; a + b = e

143 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol wynik = a; + e a b e e a b a a b e b b e a } wynik += b; a + b = e

144 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); Symbol operator + ( Symbol Arg1, Symbol Arg2 );... Tabliczka działania int main( ) { Symbol wynik = a; + e a b e e a b a a b e b b e a } wynik += b; a + b = e

145 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; Tabliczka działania + e a b e e a b a a b e b b e a } wynik += b; a + b = e

146 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... void Dodaj( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; } operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

147 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; } operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

148 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); void operator += ( Symbol Arg1, Symbol Arg2 );... int main( ) { Symbol wynik = a; } DodajIPodstaw(wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

149 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); { return Arg1 = TabliczkaDzialania[Arg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

150 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol Arg1, Symbol Arg2 ); { return Arg1 = TabliczkaDzialania[Arg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

151 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol *parg1, Symbol Arg2 ); { return *parg1 = TabliczkaDzialania[*pArg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(&wynik, b); operator+= (wynik, b); wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

152 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję A jak zdefiniować operację dodania i podstawienia? enum Symbol { e, a, b };... Symbol DodajIPodstaw( Symbol *parg1, Symbol Arg2 ); { return *parg1 = TabliczkaDzialania[*pArg1][Arg2]; }... int main( ) { Symbol wynik = a; } DodajIPodstaw(&wynik, b); operator+= (&wynik, b); &wynik += b; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

153 Spis treści Podejście obiektowe Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję 1 Podejście obiektowe Rozumienie świata Pojęcie Obiekty 2 Standardowe pliki nagłówkowe w C++ 3 Przeciążenie (przeładowanie) funkcji 4 Operatory jako funkcje Referencja czym jest Porównanie referencje i zmienne wskaźnikowe Przekazywanie parametrów przez referencję Podejście obiektowe, przeciążenia operatorów, referencje

Podejście obiektowe wprowadzenie

Podejście obiektowe wprowadzenie wprowadzenie Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2013 Bogdan Kreczmer

Bardziej szczegółowo

Podejście obiektowe - podstawowe pojęcia

Podejście obiektowe - podstawowe pojęcia Podejście obiektowe - podstawowe pojęcia Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2003 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

Organizacja kursu, paradygmaty, ogólnie o C i C++

Organizacja kursu, paradygmaty, ogólnie o C i C++ Organizacja kursu, paradygmaty, ogólnie o C i C++ Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechniki Wrocławskiej Kurs: Copyright c 2015 Bogdan

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Geneza C++, manipulatory

Geneza C++, manipulatory Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

Bardziej szczegółowo

Wprowadzenie do szablonów klas

Wprowadzenie do szablonów klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do

Bardziej szczegółowo

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

Bardziej szczegółowo

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

Operacje wejścia/wyjścia odsłona pierwsza Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

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

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

Bardziej szczegółowo

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Qt sygnały i sloty Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera

Bardziej szczegółowo

Schemat konstrukcja pliku Makefile

Schemat konstrukcja pliku Makefile Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Zadanie 2: Arytmetyka symboli

Zadanie 2: Arytmetyka symboli 1 Cel ćwiczenia Zadanie 2: Arytmetyka symboli Wykształcenie umiejętności abstrahowania operacji arytmetycznych. Zapoznanie się i przećwiczenie mechanizmu tworzenia przeciążeń funkcji operatorowych. Utrwalenie

Bardziej szczegółowo

Praca z aplikacją designer

Praca z aplikacją designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2014 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Wyliczanie wyrażenia obiekty tymczasowe

Wyliczanie wyrażenia obiekty tymczasowe Wyliczanie wyrażenia obiekty tymczasowe Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

Pola i metody statyczne

Pola i metody statyczne Pola i metody statyczne Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2009 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania

Bardziej szczegółowo

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2018 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

Bardziej szczegółowo

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski dr Dariusz Wardowski, Instytut Matematyki i Informatyki PWSZ w Płocku 1 O mnie prowadzący wykład i laboratoria: Dariusz Wardowski pokój: 102

Bardziej szczegółowo

Qt sygnały i designer

Qt sygnały i designer Qt sygnały i designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan

Bardziej szczegółowo

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

Język C++ Różnice między C a C++ Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci

Bardziej szczegółowo

Przesłanianie nazw, przestrzenie nazw

Przesłanianie nazw, przestrzenie nazw Przesłanianie nazw, przestrzenie nazw Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2013 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

Operacje wejścia/wyjścia (odsłona druga) - pliki

Operacje wejścia/wyjścia (odsłona druga) - pliki Operacje wejścia/wyjścia (odsłona druga) - pliki Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały

Bardziej szczegółowo

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

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:

Bardziej szczegółowo

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

Podstawy algorytmiki i programowania - wykład 4 C-struktury 1 Podstawy algorytmiki i programowania - wykład 4 C-struktury Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy

Bardziej szczegółowo

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Referencje do zmiennych i obiektów

Referencje do zmiennych i obiektów Referencje do zmiennych i obiektów Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

Bardziej szczegółowo

Geneza C++, hermetyzacja struktur danych

Geneza C++, hermetyzacja struktur danych Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

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

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe Wstęp do programowania obiektowego Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe 1 PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI W C++ 2 W C++

Bardziej szczegółowo

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej. Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.

Bardziej szczegółowo

Wprowadzenie do UML, przykład użycia kolizja

Wprowadzenie do UML, przykład użycia kolizja Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2012 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Konstruktor kopiujacy

Konstruktor kopiujacy Konstruktor kopiujacy Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego. Jest on udostępniony

Bardziej szczegółowo

Wartości domyślne, przeciażenia funkcji

Wartości domyślne, przeciażenia funkcji Wartości domyślne, przeciażenia funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

Wartości domyślne, przeciażenia funkcji

Wartości domyślne, przeciażenia funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 12 Katarzyna Grzelak 28 maja 2018 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27 Klasy cd K.Grzelak (Wykład 12) Programowanie w C++ 2 / 27 Klasy - powtórzenie Klasy typy definiowane

Bardziej szczegółowo

Bibliografia 1. B. Stroustrup. Jezyk C++. Wydawnictwo Naukowo-Techniczne, Warszawa,

Bibliografia 1. B. Stroustrup. Jezyk C++. Wydawnictwo Naukowo-Techniczne, Warszawa, Programowanie obiektowe (OOP) Dr. Inż. Hab. Siergiej Fialko, IMK-PK, http://torus.uck.pk.edu.pl/~fialko sfialko@riad.pk.edu.pl Bibliografia 1. B. Stroustrup. Jezyk C++. Wydawnictwo Naukowo-Techniczne,

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych

Bardziej szczegółowo

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++ Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 10 Kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard

Bardziej szczegółowo

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

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Programowanie w C++ Wykład 11 Katarzyna Grzelak 13 maja 2019 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30 Klasy cd K.Grzelak (Wykład 11) Programowanie w C++ 2 / 30 Klasy - powtórzenie Klasy typy definiowane

Bardziej szczegółowo

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka

Bardziej szczegółowo

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 1 Literatura Literatura podstawowa: Prata Stephen. Szkoła programowania. Język C++. Wydanie V. Helion,

Bardziej szczegółowo

Szablon klasy std::vector

Szablon klasy std::vector Szablon klasy std::vector Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat

Bardziej szczegółowo

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.

Bardziej szczegółowo

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

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor

Bardziej szczegółowo

Programowanie - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

Bardziej szczegółowo

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:

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: 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: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

Bardziej szczegółowo

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej

Bardziej szczegółowo

Przeciążanie operatorów

Przeciążanie operatorów Instrukcja laboratoryjna nr 4 Programowanie w języku C 2 (C++ poziom zaawansowany) Przeciążanie operatorów dr inż. Wilk-Jakubowski Jacek mgr inż. Lasota Maciej dr inż. Kaczmarek Tomasz Wprowadzenie Oprócz

Bardziej szczegółowo

Programowanie 2. Język C++. Wykład 3.

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Składnia C++ Programowanie Obiektowe Mateusz Cicheński Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory

Bardziej szczegółowo

Techniki Programowania wskaźniki

Techniki Programowania wskaźniki Techniki Programowania wskaźniki Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Wskaźniki Dla typu T zapis T* oznacza

Bardziej szczegółowo

Hermetyzacja oraz pola i metody statyczne

Hermetyzacja oraz pola i metody statyczne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2010 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

1 Wskaźniki. 1.1 Główne zastosowania wskaźników 1 Wskaźniki Wskaźnik (ang. pointer) jest obiektem (zmienną) przechowującym adres pamięci. Definiowanie wskaźników: typ *nazwa wskaznika; np.: int *wsk na x;, double *xxx;, char *znak;. Aby można było pracować

Bardziej szczegółowo

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.: Program przedmiotu Programowanie Obiektowe (język C++) Wykład 1. Definiowanie prostych klas. Przykłady. Przypomnienie: typy referencyjne, domyślne wartości argumentów, przeciąŝanie funkcji. Konstruktory,

Bardziej szczegółowo

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami: Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie

Bardziej szczegółowo

Dalmierze optyczne. Bogdan Kreczmer. bogdan.kreczmer@pwr.wroc.pl

Dalmierze optyczne. Bogdan Kreczmer. bogdan.kreczmer@pwr.wroc.pl Dalmierze optyczne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2013 Bogdan Kreczmer

Bardziej szczegółowo

Funkcja (podprogram) void

Funkcja (podprogram) void Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji

Bardziej szczegółowo

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 5 1 SPECYFIKATOR const Specyfikator (przydomek) const: Umieszczenie przed nazwą zmiennej specyfikatora const w jej definicji informuje kompilator,

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013 Wykład nr 6 (07.12.2012) dr inż. Jarosław Forenc Rok

Bardziej szczegółowo

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.

Bardziej szczegółowo

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów Rok akademicki 2016/2017, Wykład nr 5 2/40 Plan wykładu nr 5 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

Bardziej szczegółowo

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017

Bardziej szczegółowo

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

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów Funkcje. Spotkanie 5 Dr inż. Dariusz JĘDRZEJCZYK Tworzenie i używanie funkcji Przekazywanie argumentów do funkcji Domyślne wartości argumentów Przeładowanie nazw funkcji Dzielenie programu na kilka plików

Bardziej szczegółowo

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni

Każdy z nich posiada swoje parametry. W przypadku silnika może to być moc lub pojemność, w przypadku skrzyni biegów można mówić o skrzyni Język obiektowy był krokiem ewolucji w programowaniu komputerów. Powstał w wyniku rozwoju języków strukturalnych i zmiany podejścia do problemów informatycznych. Cały otaczający świat składa się z obiektów.

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Wykład 5: Klasy cz. 3

Wykład 5: Klasy cz. 3 Programowanie obiektowe Wykład 5: cz. 3 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD - podstawy Konstruktor i destruktor (część I) 2 Konstruktor i destruktor KONSTRUKTOR Dla przykładu

Bardziej szczegółowo

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. PROGRAMOWANIE OBIEKTOWE W C++ cz. 2 Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów. Dziedziczenie Dziedziczenie jest to technika pozwalaj c na definiowanie nowej klasy przy wykorzystaniu

Bardziej szczegółowo

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

Zasoby, pliki graficzne

Zasoby, pliki graficzne Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)

Bardziej szczegółowo

Zad. 5: Układ równań liniowych liczb zespolonych

Zad. 5: Układ równań liniowych liczb zespolonych Zad. 5: Układ równań liniowych liczb zespolonych 1 Cel ćwiczenia Wykształcenie zdolności abstrahowania operacji arytmetycznych od konkretnych typów. Unaocznienie problemów związanych z programowaniem uogólnionym

Bardziej szczegółowo

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d.

Programowanie obiektowe, wykład nr 7. Przegląd typów strukturalnych - klasy i obiekty - c.d. Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 7 Przegląd typów strukturalnych - klasy i obiekty - c.d. Klasa - powtórzenie

Bardziej szczegółowo

Przeciążenie (przeładowanie nazw) funkcji

Przeciążenie (przeładowanie nazw) funkcji Przeciążenie (przeładowanie nazw) funkcji dla większości języków (w tym C) zasada w programie może być tylko jedna funkcja o danej nazwie kompilator C++ - dopuszcza więcej niż jedną funkcję o tej samej

Bardziej szczegółowo

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

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

Struktury Struktura polami struct struct struct struct

Struktury Struktura polami struct struct struct struct Struktury Struktura jest zbiorem zmiennych występujących pod wspólna nazwą. Zmienne wchodzące w skład struktury nazywane są polami lub elementami, a czasem członkami struktury. Struktury używamy, jeśli

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 3

PARADYGMATY PROGRAMOWANIA Wykład 3 PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Programowanie obiektowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka

Bardziej szczegółowo

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

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

Diagramy UML, przykład problemu kolizji

Diagramy UML, przykład problemu kolizji Bogdan Kreczmer bogdan.kreczmer@pwr.edu.pl Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu

Bardziej szczegółowo

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje Zbudujemy klasę Definicję klasy zapiszmy w pliku tstring.h #ifndef TSTRING_H #define TSTRING_H #include // w pliku nagłówkowym NIE // otwieramy przestrzeni std // interfejs private: // implementacja

Bardziej szczegółowo

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.: Program przedmiotu Programowanie (język C++) Wykład 1. Język C a C++. Definiowanie prostych klas. Typy referencyjne. Domyślne wartości argumentów. PrzeciąŜanie funkcji. Konstruktory, destruktory. Definiowanie

Bardziej szczegółowo

Style programowania, geneza języka C++

Style programowania, geneza języka C++ Style programowania, geneza języka C++ Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Programowanie

Bardziej szczegółowo

Język C++ zajęcia nr 2

Język C++ zajęcia nr 2 Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl

Bardziej szczegółowo

Projektowanie klas c.d. Projektowanie klas przykład

Projektowanie klas c.d. Projektowanie klas przykład Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej

Bardziej szczegółowo

PROGRAMOWANIE w C prolog

PROGRAMOWANIE w C prolog PROGRAMOWANIE w C prolog dr inż. Jarosław Stańczyk Uniwersytet Przyrodniczy we Wrocławiu Wydział Biologii i Hodowli Zwierząt Katedra Genetyki 1 / jaroslaw.stanczyk@up.wroc.pl programowanie w c 17.10.2014

Bardziej szczegółowo

Style programowania - krótki przeglad

Style programowania - krótki przeglad Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

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

Języki i metodyka programowania. Wprowadzenie do języka C Literatura: Brian W. Kernighan, Dennis M. Ritchie Język Ansi C, Wydawnictwa Naukowo - Techniczne, 2007 http://cm.bell-labs.com/cm/cs/cbook/index.html Scott E. Gimpel, Clovis L. Tondo Język Ansi C. Ćwiczenia

Bardziej szczegółowo