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



Podobne dokumenty
Podejście obiektowe wprowadzenie

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

Szablony funkcji i szablony klas

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

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

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

Wprowadzenie do szablonów szablony funkcji

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

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

Wprowadzenie do szablonów szablony funkcji

Przesłanianie nazw, przestrzenie nazw

Podstawy Programowania

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

Wprowadzenie do UML, przykład użycia kolizja

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

Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18

Diagramy UML, przykład problemu kolizji

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

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

Wprowadzenie do szablonów klas

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

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

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

Programowanie obiektowe Wykład 1. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/20

Wstęp do Programowania 2

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

Pola i metody statyczne

Podstawy Programowania Obiektowego

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

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

Podstawy Programowania

Praktyka Programowania

Style programowania - krótki przeglad

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Wstęp do programowania. Wykład 1

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

Funkcja (podprogram) void

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

Wykład 1

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

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Języki i paradygmaty programowania

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

Wyliczanie wyrażenia obiekty tymczasowe

Praca z aplikacją designer

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

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

( wykł. dr Marek Piasecki )

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

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

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

Języki programowania - podstawy

Języki Programowania. Prowadząca: dr inż. Hanna Zbroszczyk. tel: Konsultacje: Piątek: 14:15-15:30

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

Część 4 życie programu

Schemat konstrukcja pliku Makefile

Elektrotechnika I stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny) Kierunkowy (podstawowy / kierunkowy / inny HES)

Zajęcia trwają 15 tygodni (2 godziny wykładu, 2 godziny laboratorium tygodniowo) Zaliczenie zajęć jest uwarunkowane zaliczeniem zajęć laboratoryjnych

Podstawy programowania - 1

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

Język ludzki kod maszynowy

Zasoby, pliki graficzne

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

2 Przygotował: mgr inż. Maciej Lasota

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

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Hermetyzacja oraz pola i metody statyczne

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

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 1. Wprowadzenie, środowisko programistyczne, pierwsze programy

I - Microsoft Visual Studio C++

Zadanie 2: Arytmetyka symboli

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Informatyka 2. Informatyka 2. Wykład nr 1 ( ) Dane podstawowe. - Wydział Elektryczny. Politechnika Białostocka. Program wykładu (1/2)

Wstęp do programowania obiektowego. Wykład 1 Algorytmy i paradygmaty Podstawowe pojęcia PO

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

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

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

Wstęp do programowania

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

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

E5 potrafi zaprojektować i zaimplementować prosty model

Referencje do zmiennych i obiektów

Wstęp do programowania

Przeciążenie (przeładowanie nazw) funkcji

Szablon klasy std::vector

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

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

Konstruktor kopiujacy

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

Laboratorium 1 - Programowanie proceduralne i obiektowe

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

Programowanie proceduralne w języku C++ Funkcje

Programowanie w języku C++

tablica: dane_liczbowe

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

Podstawy Programowania. Wykład 1

Transkrypt:

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 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ą. Organizacja kursu, paradygmaty, ogólnie o C i C++

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: http://latex-beamer.sourceforge.net

Moje dane Organizacja kursu Bogdan Kreczmer, dr inż., pok. 307 bud. C-3 Terminy konsultacji: śr. 15:00 17:00 pt. 13:00 15:00 Strona kursu: http://sequoia.iiar.pwr.wroc.pl/ kreczmer/kpo http://rab.iiar.pwr.wroc.pl/ kreczmer/kpo

Spis treści Organizacja kursu 1 Organizacja kursu 2 Podejście obiektowe Języki programowania 3 Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++ 4 Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji

Warunki udziału i przebieg kursu Warunki udziału w kursie Wykłady i materiały do wykładów Laboratoria

Warunki udziału i przebieg kursu Warunki udziału w kursie Wykłady i materiały do wykładów Laboratoria

Warunki udziału i przebieg kursu Warunki udziału w kursie Wykłady i materiały do wykładów Laboratoria

Warunki zaliczeń Organizacja kursu Kurs kończy się zaliczeniem. Zaliczenie kursu można uzyskać pod warunkiem uzyskania zaliczenia z laboratorium oraz pozytywnej oceny z ekranówki Sposób liczenia oceny z kursu: 10 ( 20 + 0.25(E L) 2)(E + L) Ocena celująca ekranówka: 5,0; laboratorium: 5,5

Warunki zaliczeń Organizacja kursu Kurs kończy się zaliczeniem. Zaliczenie kursu można uzyskać pod warunkiem uzyskania zaliczenia z laboratorium oraz pozytywnej oceny z ekranówki Sposób liczenia oceny z kursu: 10 ( 20 + 0.25(E L) 2)(E + L) Ocena celująca ekranówka: 5,0; laboratorium: 5,5

Warunki zaliczeń Organizacja kursu Kurs kończy się zaliczeniem. Zaliczenie kursu można uzyskać pod warunkiem uzyskania zaliczenia z laboratorium oraz pozytywnej oceny z ekranówki Sposób liczenia oceny z kursu: 10 ( 20 + 0.25(E L) 2)(E + L) Ocena celująca ekranówka: 5,0; laboratorium: 5,5

Literatura Organizacja kursu Literatura podstawowa: S. B. Leppman, Josée Lajoie, B. E. Moo C++ Primer, 2012 Bjarne Stroustrup, Język C++ Kompedium wiedzy, Wydanie IV, Helion, 2014 J. Grębosz, Symfonia C ++ standard J. Grębosz, Pasja C ++

Literatura Organizacja kursu Literatura pomocnicza: B. Eckel, Thinking in C++ Nicolai M. Josuttis, C++ Biblioteka standardowa, Podręcznik programisty David Vandevoorde, Nicolai M. Josuttis, C++ szablony Grady Booch, James Rumbaugh, Ivar Jacobson, UML użytkownika przewodnik Michał Śmiałek, Zrozumieć UML 2.0 Metody modelowania obiektowego, HELION 2005 James Martin, James J. Odell, Podstawy metod obiektowych

Podejście obiektowe Języki programowania Czym jest? oparte jest na podejściu obiektowym do analizy problemu oraz syntezy i implementacji jego rozwiązania.

Podejście obiektowe Języki programowania Czym jest? 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.

Języki programowania obiektowego Podejście obiektowe Języki programowania To co cechuje jezyki programowania obiektowego (języki obiektowe), to to że wspomagają i wymuszają stosowanie metod podejścia obiektowego. Najistotniejszą cechą podejścia obiektowego jest integracja struktur danych i kodu, który odwołuje się do tych struktur. Ten rodzaj integracji ma formę obiektów. Typy struktur danych zintegrowanych w ten sposób z kodem nazywane są klasami.

Języki programowania obiektowego Podejście obiektowe Języki programowania To co cechuje jezyki programowania obiektowego (języki obiektowe), to to że wspomagają i wymuszają stosowanie metod podejścia obiektowego. Najistotniejszą cechą podejścia obiektowego jest integracja struktur danych i kodu, który odwołuje się do tych struktur. Ten rodzaj integracji ma formę obiektów. Typy struktur danych zintegrowanych w ten sposób z kodem nazywane są klasami.

Języki programowania obiektowego Podejście obiektowe Języki programowania To co cechuje jezyki programowania obiektowego (języki obiektowe), to to że wspomagają i wymuszają stosowanie metod podejścia obiektowego. Najistotniejszą cechą podejścia obiektowego jest integracja struktur danych i kodu, który odwołuje się do tych struktur. Ten rodzaj integracji ma formę obiektów. Typy struktur danych zintegrowanych w ten sposób z kodem nazywane są klasami.

Warto wiedzieć Organizacja kursu Podejście obiektowe Języki programowania Ogólna koncepcja podejścia obiektowego do programowania powstała na przełomie lat 50-tych i 60-tych w MIT. W bardziej formalnej postaci koncepcje te zostały wprowadzone w języku Simula 67 w latach 60-tych.

Języki obiektowe Organizacja kursu Podejście obiektowe Języki programowania Przykłady języków obiektowych: Smalltalk Ruby

C++ Organizacja kursu Podejście obiektowe Języki programowania Język C++ nie jest językiem obiektowym!

Od koncepcji do paradygmatu Podejście obiektowe Języki programowania Podejście obiektowe do programowania wyznacza sposób patrzenia na struktury danych i przepływ sterowania w programie oraz wykonywanie całego programu. Wprowadza ono pewien zbiór pojęć i koncepcji, który determinuje sposób rozumienia procesu programowania.

Od koncepcji do paradygmatu Podejście obiektowe Języki programowania Podejście obiektowe do programowania wyznacza sposób patrzenia na struktury danych i przepływ sterowania w programie oraz wykonywanie całego programu. Wprowadza ono pewien zbiór pojęć i koncepcji, który determinuje sposób rozumienia procesu programowania. Ten zbiór pojęć i koncepcji odnoszący się do programowania określany jest mianem paradygmatu programowania.

Podejście obiektowe Języki programowania Przykładowe paradygmaty programowania Programowanie proceduralne Programowanie strukturalne Programowanie modularne Programowanie imperatywne Programowanie uogólnione Programowanie sterowane zdarzeniami

Podejście obiektowe Języki programowania Przykładowe paradygmaty programowania Programowanie proceduralne zaleca dzielenie programu na procedury i nie wykorzystywanie zmiennych globalnych. Programowanie strukturalne Programowanie modularne Programowanie imperatywne Programowanie uogólnione Programowanie sterowane zdarzeniami

Podejście obiektowe Języki programowania Przykładowe paradygmaty programowania Programowanie proceduralne Programowanie strukturalne wywoływanie procedur powinno tworzyć hierarchiczną strukturę z wykorzystanie instrukcji warunkowych i pętli. Zakazuje się używania instrukcji goto. Programowanie modularne Programowanie imperatywne Programowanie uogólnione Programowanie sterowane zdarzeniami

Podejście obiektowe Języki programowania Przykładowe paradygmaty programowania Programowanie proceduralne Programowanie strukturalne Programowanie modularne zaleca stosowanie modułów grupujących zbiory procedur. Programowanie imperatywne Programowanie uogólnione Programowanie sterowane zdarzeniami

Podejście obiektowe Języki programowania Przykładowe paradygmaty programowania Programowanie proceduralne Programowanie strukturalne Programowanie modularne Programowanie imperatywne opisuje proces wykonywania programu jako sekwencję instrukcji zmieniających stan programu. Programowanie uogólnione Programowanie sterowane zdarzeniami

Podejście obiektowe Języki programowania Przykładowe paradygmaty programowania Programowanie proceduralne Programowanie strukturalne Programowanie modularne Programowanie imperatywne definiuje program jak zbiór obiektów. Ich istotą jest łączenie stanu i zachowania. Program to zbiór obiektów komunikujących się między sobą w celu wykonania zadania. Programowanie uogólnione Programowanie sterowane zdarzeniami

Podejście obiektowe Języki programowania Przykładowe paradygmaty programowania Programowanie proceduralne Programowanie strukturalne Programowanie modularne Programowanie imperatywne Programowanie uogólnione kładzie nacisk na ogólną konstrukcję algorytmu bez konieczności znajomości typów danych, np. sortowanie. Programowanie sterowane zdarzeniami

Podejście obiektowe Języki programowania Przykładowe paradygmaty programowania Programowanie proceduralne Programowanie strukturalne Programowanie modularne Programowanie imperatywne Programowanie uogólnione Programowanie sterowane zdarzeniami opis programu uwypuklający przekazywanie sterowania między poszczególnymi modułami. Odnosi się on przede wszystkim do środowisk wieloprocesorowych. Jednak nie tylko. Przykładem są okienkowe systememy graficzne, np. system X-Window.

Języki programowania Podejście obiektowe Języki programowania Języki programowania mogą wspierać jednocześnie wiele paradygmatów programowania. Czyste języki obiektowe wspierają zasadniczo tylko paradygmat programowania obiektowego.

Języki programowania Podejście obiektowe Języki programowania Języki programowania mogą wspierać jednocześnie wiele paradygmatów programowania. Czyste języki obiektowe wspierają zasadniczo tylko paradygmat programowania obiektowego.

C++ Organizacja kursu Podejście obiektowe Języki programowania Język C++ jest językiem hybrydowym!

Po co to wszystko? Podejście obiektowe Języki programowania Dlaczego powstają nowe języki?

Podejście obiektowe Języki programowania Przestrzenie rozwiązania i przestrzenie problemu

Podejście obiektowe Języki programowania Przestrzenie rozwiązania i przestrzenie problemu

Podejście obiektowe Języki programowania Przestrzenie rozwiązania i przestrzenie problemu

Podejście obiektowe Języki programowania Przestrzenie rozwiązania i przestrzenie problemu

Podejście obiektowe Języki programowania Przestrzenie rozwiązania i przestrzenie problemu

Podejście obiektowe Języki programowania Przestrzenie rozwiązania i przestrzenie problemu

Podejście obiektowe Języki programowania Przestrzenie rozwiązania i przestrzenie problemu

Podejście obiektowe Języki programowania Co się dzieje, gdy zabraknie zgodności Terminarz Mars Climate Orbiter Data startu: 11 grudnia 1998 Osiągnięcie celu: wrzesień 1999 http://mars.jpl.nasa.gov/msp98/orbiter/moi.html Cel misji Badanie klimatu Marsa jego atmosfery i zmian na powierzchni. Miał również służyć jako satelita komunikacyjny na potrzeby programu Mars Surveyor 98 oraz Mars Polar Lander. Sonda Mars Climate Orbiter za bardzo zbliżyła się do Marsa i weszła w górne warstwy jego atmosfery, co skutkowało jej zniszczeniem. Bezpośrednią przyczyną okazało się przyjęcie złych jednostek. Oprogramowanie komputera pokładowego generowało dane w jednostkach imperialnych zamiast w jednostkach SI. To, że mają to być jednostki SI było uzgodnione w kontrakcie między NASA i firmą Lockheed producentem sondy.

Zastanówmy się... Podejście obiektowe Języki programowania Czy C++ jest lepszym językiem niż C?

Podejście obiektowe Języki programowania Przestrzeń rozwiązana i przestrzeń problemu

Podejście obiektowe Języki programowania Przestrzeń rozwiązana i przestrzeń problemu

Podejście obiektowe Języki programowania Przestrzeń rozwiązana i przestrzeń problemu

Podejście obiektowe Języki programowania Przestrzeń rozwiązana i przestrzeń problemu

Podejście obiektowe Języki programowania Przestrzeń rozwiązana i przestrzeń problemu

Konkluzja Organizacja kursu Podejście obiektowe Języki programowania Ani język C ani też C++ nie jest ani generalnie gorszy ani też generalnie lepszy. Ocena języka zależy od problemu, dla którego chcemy stworzyć model implementacji rozwiązania (program komputerowy). Dopiero w tym kontekście można uzasadniać wybór języka programowania. Dotyczy to również wszystkich innych języków programowania.

C++ nie jest nadzbiorem C Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++ Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania. ANSI C: const int Zm=23; extern const int Zm=23; ANSI/ISO C++: const int Zm=23; static const int Zm=23; Rozmiary stałych znakowych: ANSI C: sizeof ( a ) sizeof (int) ANSI/ISO C++: sizeof ( a ) sizeof (char) Niezadeklarowane funkcje: ANSI C: przyjmowane jest automatycznie int fun(int,...). ANSI/ISO C++: jest to niedopuszczalne. Deklaracja extern int fun(): ANSI C: równoważna extern int fun(...). ANSI/ISO C++: extern int fun(void).

C++ nie jest nadzbiorem C Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++ Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania. ANSI C: const int Zm=23; extern const int Zm=23; ANSI/ISO C++: const int Zm=23; static const int Zm=23; Rozmiary stałych znakowych: ANSI C: sizeof ( a ) sizeof (int) ANSI/ISO C++: sizeof ( a ) sizeof (char) Niezadeklarowane funkcje: ANSI C: przyjmowane jest automatycznie int fun(int,...). ANSI/ISO C++: jest to niedopuszczalne. Deklaracja extern int fun(): ANSI C: równoważna extern int fun(...). ANSI/ISO C++: extern int fun(void).

C++ nie jest nadzbiorem C Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++ Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania. ANSI C: const int Zm=23; extern const int Zm=23; ANSI/ISO C++: const int Zm=23; static const int Zm=23; Rozmiary stałych znakowych: ANSI C: sizeof ( a ) sizeof (int) ANSI/ISO C++: sizeof ( a ) sizeof (char) Niezadeklarowane funkcje: ANSI C: przyjmowane jest automatycznie int fun(int,...). ANSI/ISO C++: jest to niedopuszczalne. Deklaracja extern int fun(): ANSI C: równoważna extern int fun(...). ANSI/ISO C++: extern int fun(void).

C++ nie jest nadzbiorem C Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++ Deklaracja stałych. Zachowanie zgodności wymaga jawnego dowiązania. ANSI C: const int Zm=23; extern const int Zm=23; ANSI/ISO C++: const int Zm=23; static const int Zm=23; Rozmiary stałych znakowych: ANSI C: sizeof ( a ) sizeof (int) ANSI/ISO C++: sizeof ( a ) sizeof (char) Niezadeklarowane funkcje: ANSI C: przyjmowane jest automatycznie int fun(int,...). ANSI/ISO C++: jest to niedopuszczalne. Deklaracja extern int fun(): ANSI C: równoważna extern int fun(...). ANSI/ISO C++: extern int fun(void).

Wyświetlenie prostego komunikatu Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka 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 ; Funkcja main w języku C++ domyślnie zwraca wartość 0. Operacje wyjścia są realizowane na obiekcie cout z wykorzystaniem przeciążenia operatora lewostronnego przesunięcia bitowego <<

Wyświetlenie prostego komunikatu Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++ Język C #include <stdio.h> Język C++ #include <iostream> int main( ) printf( Hejka!!!\n ); return 0; int main( ) std::cout << Hejka!!! << std::endl; Funkcja main w języku C++ domyślnie zwraca wartość 0. Operacje wyjścia są realizowane na obiekcie cout z wykorzystaniem przeciążenia operatora lewostronnego przesunięcia bitowego <<

Wyświetlenie prostego komunikatu Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++ Język C #include <stdio.h> int main( ) printf( Hejka!!!\n ); return 0; Język C++ #include <iostream> using namespace std; int main( ) cout << Hejka!!! << endl; Użycie dyrektyw using namespace pozwala pominąć przedrostek przestrzeni nazw std

Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++ Odpowiedniość plików nagłówkowych dla C i C++ <math.h> <stdio.h> <ctype.h> <stdlib.h> <string.h>

Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++ Odpowiedniość plików nagłówkowych dla C i C++ <math.h> <cmath> <stdio.h> <ctype.h> <stdlib.h> <string.h>

Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka 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>

Rozszerzenia plików C++ Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++ Nie ma jednej ustalonej konwencji....

Rozszerzenia plików C++ Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++.H.C Najczęściej spotykane są:...

Rozszerzenia plików C++ Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++.H.C.hh.cc Najczęściej spotykane są:..

Rozszerzenia plików C++ Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++.H.C.hh.cc.hpp.cpp Najczęściej spotykane są:.

Rozszerzenia plików C++ Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++.H.C.hh.cc.hpp.cpp.hxx.cxx Najczęściej spotykane są:

Rozszerzenia plików C++ Kilka przykładowych różnic Różnice w zapisie podstawowych elementów programu Pliki nagłówkowe funkcji z języka C Konwencje nazw plików źródłowych dla języka C++.H.C.hh.cc.hpp.cpp.hxx.cxx Można również stosować konwencje mieszane.

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x )??? int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a...

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x )??? int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b =?...

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x )??? int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b =?..

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x )??? int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b =?.

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x )??? int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x )??? int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x )??? int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x )??? int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x )??? int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x )??? int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol Dodaj( Symbol y, Symbol x ) return TabliczkaDzialania[y][x]; int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol operator + ( Symbol y, Symbol x ) return TabliczkaDzialania[y][x]; int main( ) Symbol wynik =???(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol operator + ( Symbol y, Symbol x ) return TabliczkaDzialania[y][x]; int main( ) Symbol y = a, x = b, wynik; wynik = operator + (y, x); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol operator + ( Symbol y, Symbol x ) return TabliczkaDzialania[y][x]; int main( ) Symbol wynik = y + x; y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol operator + ( Symbol y, Symbol x ) return TabliczkaDzialania[y][x]; Czy są jakieś ograniczenia na int main( ) Symbol wynik = y + x; definiowanie funkcji operatorowych? y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e

Arytmetyka symboli Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ; Symbol TabliczkaDzialania[3][3] = e, a, b, a, b, e, b, e, a ; Symbol operator + ( Symbol y, Symbol x ) return TabliczkaDzialania[y][x]; Tabliczka działania Nie możemy definiować funkcji operatorowych. gdy ich wszystkie parametry są typów wbudowanych takich jak float, int, itd. np. + e a b int int main( operator ) + (int arg1, float arg2) e e a b a a b e Symbol y = a, x = b, wynik;... b b e a wynik = y + x; a + b = e Dla tych typów definicje tych operacji są już wbudowane w kompilator.

To samo na kilka sposobów Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e...

To samo na kilka sposobów Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol wynik = Dodaj(y, x); y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e...

To samo na kilka sposobów Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = Dodaj(y, x); wynik = operator+ (y, x); Tabliczka działania + e a b e e a b a a b e b b e a a + b = e..

To samo na kilka sposobów Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = Dodaj(y, x); wynik = operator+ (y, x); wynik = y + x; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e.

To samo na kilka sposobów Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = Dodaj(y, x); wynik = operator+ (y, x); wynik = y + x; Tabliczka działania + e a b e e a b a a b e b b e a a + b = e.

Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji Łączność działania porządek wykonywania operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b + a =?...

Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji Łączność działania porządek wykonywania operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol wynik = y + x + y; y = a, x = b, wynik; Tabliczka działania + e a b e e a b a a b e b b e a a + b + a =?...

Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji Łączność działania porządek wykonywania operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = (y + x) + y; Tabliczka działania + e a b e e a b a a b e b b e a a + b + a =?..

Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji Łączność działania porządek wykonywania operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = (y + x) + y; wynik = operator+ (operator+ (y,x), y ); Tabliczka działania + e a b e e a b a a b e b b e a a + b + a =?.

Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji Łączność działania porządek wykonywania operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = (y + x) + y; wynik = operator+ (operator+ (y,x), y ); wynik = Dodaj(Dodaj(x, y), y); Tabliczka działania + e a b e e a b a a b e b b e a a + b + a =?.

Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji Jawna zmiana porządku wykonywanych operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = y + (x + y); Tabliczka działania + e a b e e a b a a b e b b e a a + (b + a) =?...

Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji Jawna zmiana porządku wykonywanych operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = y + (x + y); wynik = operator+ (y, operator+ (x,y) ); Tabliczka działania + e a b e e a b a a b e b b e a a + (b + a) =?...

Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji Jawna zmiana porządku wykonywanych operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = y + (x + y); wynik = operator+ (y, operator+ (x,y) ); wynik = Dodaj(y, Dodaj(x, y) ); Tabliczka działania + e a b e e a b a a b e b b e a a + (b + a) =?..

Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji Jawna zmiana porządku wykonywanych operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = y + (x + y); wynik = operator+ (y, operator+ (x,y) ); wynik = Dodaj(y, Dodaj(x, y) ); Tabliczka działania + e a b e e a b a a b e b b e a a + (b + a) =?.

Operatory jako funkcje Łączność operatorów i porządek wykonywania operacji Jawna zmiana porządku wykonywanych operacji enum Symbol e, a, b ;... Symbol Dodaj( Symbol x, Symbol y ); Symbol operator + ( Symbol x, Symbol y );... int main( ) Symbol y = a, x = b, wynik; wynik = y + (x + y); wynik = operator+ (y, operator+ (x,y) ); wynik = Dodaj(y, Dodaj(x, y) ); Tabliczka działania + e a b e e a b a a b e b b e a a + (b + a) =?.