Geneza C++, manipulatory

Podobne dokumenty
Geneza powstania języka C++

Geneza powstania języka C++

Geneza C++, hermetyzacja struktur danych

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

Style programowania, geneza języka C++

Schemat konstrukcja pliku Makefile

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

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

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

Szablony funkcji i szablony klas

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

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

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

Wprowadzenie do szablonów klas

Praca z aplikacją designer

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

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

Czujniki PSD i dalmierze triangulacyjne

Qt sygnały i designer

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

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

Wstęp do programowania. Wykład 1

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

Dalmierze optyczne. Bogdan Kreczmer.

Zasoby, pliki graficzne

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

Wyliczanie wyrażenia obiekty tymczasowe

Język C++ zajęcia nr 1

Wyjątki (exceptions)

Czujniki PSD i dalmierze triangulacyjne

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

Powłoki systemu operacyjnego i intepretery

Weryfikatory, zasoby graficzne

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Wprowadzenie do szablonów szablony funkcji

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

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

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Podstawy programowania w C++

Wprowadzenie do szablonów szablony funkcji

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 II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Język C++ wykład VIII

Pola i metody statyczne

Referencje do zmiennych i obiektów

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

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

Szablon klasy std::vector

Podstawy programowaniu. Wykład: 3. Budowa programu Operacje we/wy Instrukcje wyboru. dr Artur Bartoszewski - Podstawy programowania, sem.

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

Języki C i C++ Wykład: 1. Wstęp Budowa programu Operacje we/wy Instrukcje wyboru. dr Artur Bartoszewski - Języki C i C++, sem.

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

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Wprowadzenie do UML, przykład użycia kolizja

Wstęp do informatyki- wykład 3 Pierwszy program w C++ Wyprowadzanie danych Deklaracja zmiennych

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

Praktyka Programowania

Wstęp do Programowania 2

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

Podstawy Programowania. Wykład 1

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Przesłanianie nazw, przestrzenie nazw

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

Programowanie - wykład 4

GStreamer. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

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

Programowanie Obiektowew języku C++ Zadania L2

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

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

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

Programowanie i struktury danych

( wykł. dr Marek Piasecki )

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

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

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

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Języki programowania obiektowego

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

Programowanie I. Kornel Warwas. ATH Katedra Matematyki i Informatyki

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

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

Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Operacje na plikach (niskiego poziomu) < IO.H >

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

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

Funkcje standardowej biblioteki wejść-wyjść do wyświetlania i pobierania danych

Lista dwukierunkowa - przykład implementacji destruktorów

Programowanie proceduralne w języku C++ Podstawy

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

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

Programowanie w językach

Spis treści OPERACJE WEJŚCIA-WYJŚCIA W JĘZYKU C++. STEROWANIE FORMATEM, MANIPULATORY. Informatyka 2

Biblioteka standardowa - operacje wejścia/wyjścia

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

Rok akademicki: 2016/2017 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Rzutowanie i konwersje

Transkrypt:

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

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

Plan prezentacji 1 2 3

Wzorce projektowe czym są Wzorzec projektowy (ang. design pattern) jest to rozwiązanie, które często jest stosowane przy rozwiązywaniu pewnej grupy problemów. Jest ono więc dobrze sprawdzonym i ugruntowanym podejściem, do do rozwiązywania danej klasy problemów projektowych. Wzorze projektowy należy traktować jako opis rozwiązania, a nie gotową implementację.

Fabryka obiektów Fabryka obiektów Singleton Przykłady implementacji uproszczonej fabryki oraz singletona dostarczone zostały w materiałach do wykładu nr 10.

Bjarne Stroustrup Bjarne Stroustrup (ur. 30.12.1950 Århus, Dania) jest twórcą języka C++ i nadal aktywnie uczestniczy w jego dalszym rozwoju. Inspiracją do stworzenia tego typu języka były problemy i spostrzeżenia, których dokonał w trakcie swoich prac nad doktoratem w Uniwersytecie Cambridge.

Plan prezentacji 1 2 3

Tło akcji Bezpośrednim przyczynkiem do powstania koncepcji języka C++ były prace Stroustrupa w Cambridge nad doktoratem. W trakcie swoich prac miał zbadać różne organizacje systemowego oprogramowania w systemach rozproszonych.

Zdarzenia Udana (w sensie konstrukcji aplikacji) realizacja symulatora systemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasy w Simuli było bardzo pomocne na etapie projektu i implmentacji. Poważne problemy związne z wydajnością programów napisanego w Simuli zmusza do poszukiwania bardziej wydajnego narzędzia. Traumatycznie bolesne doświadczenia związane z koniecznością implementacji symulatora w oparciu o język BCPL. Osiągnięta została bardzo dobra wydajność kosztem wielu problemów przy realizacji implementacji.

Zdarzenia Udana (w sensie konstrukcji aplikacji) realizacja symulatora systemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasy w Simuli było bardzo pomocne na etapie projektu i implmentacji. Poważne problemy związne z wydajnością programów napisanego w Simuli zmusza do poszukiwania bardziej wydajnego narzędzia. Traumatycznie bolesne doświadczenia związane z koniecznością implementacji symulatora w oparciu o język BCPL. Osiągnięta została bardzo dobra wydajność kosztem wielu problemów przy realizacji implementacji.

Zdarzenia Udana (w sensie konstrukcji aplikacji) realizacja symulatora systemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasy w Simuli było bardzo pomocne na etapie projektu i implmentacji. Poważne problemy związne z wydajnością programów napisanego w Simuli zmusza do poszukiwania bardziej wydajnego narzędzia. Traumatycznie bolesne doświadczenia związane z koniecznością implementacji symulatora w oparciu o język BCPL. Osiągnięta została bardzo dobra wydajność kosztem wielu problemów przy realizacji implementacji.

Zdarzenia Udana (w sensie konstrukcji aplikacji) realizacja symulatora systemu rozproszenego z wykorzystaniem Simuli. Pojęcie klasy w Simuli było bardzo pomocne na etapie projektu i implmentacji. Poważne problemy związne z wydajnością programów napisanego w Simuli zmusza do poszukiwania bardziej wydajnego narzędzia. Traumatycznie bolesne doświadczenia związane z koniecznością implementacji symulatora w oparciu o język BCPL. Osiągnięta została bardzo dobra wydajność kosztem wielu problemów przy realizacji implementacji.

Epilog Po zakończeniu prac nad doktoratem Stroustrup postanawia stworzyć język programowania, który łączyłby koncepcje klas z Simuli oraz elastyczność tego języka z efektywnością kodu języka BCPL.

Plan prezentacji 1 2 3

Niektóre spostrzeżenia Kompilator Simuli dobrze wychwytywał błędy typu. Błędy te przeważnie były albo wynikiem głupich pomyłek w trakcie programowania albo też potknięć koncepcyjnych. Ten drugi rodzaj błędów ma wręcz fundamentalne znaczenie dla procesu projektowania i pisania programownia (autor kursu pozwolił sobie tę uwagę wzmocnić). Żaden inny prosty system sprawdzania ścisłej zgodności typów nie dostarczył tego rodzaju wsparcia. Przykładem może być system Pascala. Sprawiał on więcej kłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacji projektu, aby dostosować go do warunków narzuconych przez implementację (co nie zmienia faktu, że jest to bardzo dobry język dla początkowego kursu nauki informatyki uwaga autora kursu).

Niektóre spostrzeżenia Kompilator Simuli dobrze wychwytywał błędy typu. Błędy te przeważnie były albo wynikiem głupich pomyłek w trakcie programowania albo też potknięć koncepcyjnych. Ten drugi rodzaj błędów ma wręcz fundamentalne znaczenie dla procesu projektowania i pisania programownia (autor kursu pozwolił sobie tę uwagę wzmocnić). Żaden inny prosty system sprawdzania ścisłej zgodności typów nie dostarczył tego rodzaju wsparcia. Przykładem może być system Pascala. Sprawiał on więcej kłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacji projektu, aby dostosować go do warunków narzuconych przez implementację (co nie zmienia faktu, że jest to bardzo dobry język dla początkowego kursu nauki informatyki uwaga autora kursu).

Niektóre spostrzeżenia Kompilator Simuli dobrze wychwytywał błędy typu. Błędy te przeważnie były albo wynikiem głupich pomyłek w trakcie programowania albo też potknięć koncepcyjnych. Ten drugi rodzaj błędów ma wręcz fundamentalne znaczenie dla procesu projektowania i pisania programownia (autor kursu pozwolił sobie tę uwagę wzmocnić). Żaden inny prosty system sprawdzania ścisłej zgodności typów nie dostarczył tego rodzaju wsparcia. Przykładem może być system Pascala. Sprawiał on więcej kłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacji projektu, aby dostosować go do warunków narzuconych przez implementację (co nie zmienia faktu, że jest to bardzo dobry język dla początkowego kursu nauki informatyki uwaga autora kursu).

Niektóre spostrzeżenia Kompilator Simuli dobrze wychwytywał błędy typu. Błędy te przeważnie były albo wynikiem głupich pomyłek w trakcie programowania albo też potknięć koncepcyjnych. Ten drugi rodzaj błędów ma wręcz fundamentalne znaczenie dla procesu projektowania i pisania programownia (autor kursu pozwolił sobie tę uwagę wzmocnić). Żaden inny prosty system sprawdzania ścisłej zgodności typów nie dostarczył tego rodzaju wsparcia. Przykładem może być system Pascala. Sprawiał on więcej kłopotów niż pozwalał ich uniknąć. Zmuszał do modyfikacji projektu, aby dostosować go do warunków narzuconych przez implementację (co nie zmienia faktu, że jest to bardzo dobry język dla początkowego kursu nauki informatyki uwaga autora kursu).

Niektóre spostrzeżenia Pojęcie klasy było zasadniczym elementem różniącym sztywny Pascal od elastycznej Simuli. Wyczerpujące sprawdzanie zgodności typów w Simuli sprawiało, że liczba problemów i błędów nie wzrastała szybciej niż liniowo wraz ze wzrostem programu.

Niektóre spostrzeżenia Pojęcie klasy było zasadniczym elementem różniącym sztywny Pascal od elastycznej Simuli. Wyczerpujące sprawdzanie zgodności typów w Simuli sprawiało, że liczba problemów i błędów nie wzrastała szybciej niż liniowo wraz ze wzrostem programu.

Plan prezentacji 1 2 3

Ważniejsze daty 1979 (Maj) Początek prac na C z Klasami. (Październik) Oddanie do użytku pierwszej implementacji tego języka. 1983 (Sierpień) Oddanie do użytku pierwszej implementacji języka C++. (Grudzień) Powstanie nazwy C++. 1985 (Luty) Powstanie pierwszej wersji języka C++ (wersja E) do użytku zewnętrznego. (Październik) Ukazanie się pierwszego wydania książki Język C++. 1987 (Grudzień) Ukazanie się kompilatora GNU C++.

Ważniejsze daty 1979 (Maj) Początek prac na C z Klasami. (Październik) Oddanie do użytku pierwszej implementacji tego języka. 1983 (Sierpień) Oddanie do użytku pierwszej implementacji języka C++. (Grudzień) Powstanie nazwy C++. 1985 (Luty) Powstanie pierwszej wersji języka C++ (wersja E) do użytku zewnętrznego. (Październik) Ukazanie się pierwszego wydania książki Język C++. 1987 (Grudzień) Ukazanie się kompilatora GNU C++.

Ważniejsze daty 1979 (Maj) Początek prac na C z Klasami. (Październik) Oddanie do użytku pierwszej implementacji tego języka. 1983 (Sierpień) Oddanie do użytku pierwszej implementacji języka C++. (Grudzień) Powstanie nazwy C++. 1985 (Luty) Powstanie pierwszej wersji języka C++ (wersja E) do użytku zewnętrznego. (Październik) Ukazanie się pierwszego wydania książki Język C++. 1987 (Grudzień) Ukazanie się kompilatora GNU C++.

Ważniejsze daty 1979 (Maj) Początek prac na C z Klasami. (Październik) Oddanie do użytku pierwszej implementacji tego języka. 1983 (Sierpień) Oddanie do użytku pierwszej implementacji języka C++. (Grudzień) Powstanie nazwy C++. 1985 (Luty) Powstanie pierwszej wersji języka C++ (wersja E) do użytku zewnętrznego. (Październik) Ukazanie się pierwszego wydania książki Język C++. 1987 (Grudzień) Ukazanie się kompilatora GNU C++.

Ważniejsze daty 1979 (Maj) Początek prac na C z Klasami. (Październik) Oddanie do użytku pierwszej implementacji tego języka. 1983 (Sierpień) Oddanie do użytku pierwszej implementacji języka C++. (Grudzień) Powstanie nazwy C++. 1985 (Luty) Powstanie pierwszej wersji języka C++ (wersja E) do użytku zewnętrznego. (Październik) Ukazanie się pierwszego wydania książki Język C++. 1987 (Grudzień) Ukazanie się kompilatora GNU C++.

Ważniejsze daty 1989 (Grudzień) Powstanie zespołu ANSI X3J16 do spraw normalizacji języka C++. 1990 (Maj) Powstawnie w firmie Borland pierwszej implementacji języka C++. Lipiec: Przyjęcie koncepcji szablonów. Listopad: Przyjęcie koncepcji wyjątków. 1990 Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 1990. Stał się on nieformalnym standardem języka, określanego jako C++ ARM.

Ważniejsze daty 1989 (Grudzień) Powstanie zespołu ANSI X3J16 do spraw normalizacji języka C++. 1990 (Maj) Powstawnie w firmie Borland pierwszej implementacji języka C++. Lipiec: Przyjęcie koncepcji szablonów. Listopad: Przyjęcie koncepcji wyjątków. 1990 Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 1990. Stał się on nieformalnym standardem języka, określanego jako C++ ARM.

Ważniejsze daty 1989 (Grudzień) Powstanie zespołu ANSI X3J16 do spraw normalizacji języka C++. 1990 (Maj) Powstawnie w firmie Borland pierwszej implementacji języka C++. Lipiec: Przyjęcie koncepcji szablonów. Listopad: Przyjęcie koncepcji wyjątków. 1990 Wydanie książki: Ellis Margaret A., Stroustrup B. The Annotated C++ Reference Manual, Reading, MA, Addison-Wesley 1990. Stał się on nieformalnym standardem języka, określanego jako C++ ARM.

Ważniejsze daty 1992 (Luty) Powstanie pierwszej implementacji języka C++ (zawierającej szablony i wyjątki) w firmie DEC. (Marzec) Powstanie pierwszej implementacji języka C++ w firmie Microsoft. (Maj) Powstanie pierwszej implementacji języka C++ w firmie IBM. 1993 Marzec: Przyjęcie koncepcji identyfikowania typu podczas wykonywania programu. Lipiec: Przyjęcie koncepcji przestrzeni nazw. 1998 Przyjęcie standardu ANSI/ISO języka C++.

Ważniejsze daty 1992 (Luty) Powstanie pierwszej implementacji języka C++ (zawierającej szablony i wyjątki) w firmie DEC. (Marzec) Powstanie pierwszej implementacji języka C++ w firmie Microsoft. (Maj) Powstanie pierwszej implementacji języka C++ w firmie IBM. 1993 Marzec: Przyjęcie koncepcji identyfikowania typu podczas wykonywania programu. Lipiec: Przyjęcie koncepcji przestrzeni nazw. 1998 Przyjęcie standardu ANSI/ISO języka C++.

Ważniejsze daty 1992 (Luty) Powstanie pierwszej implementacji języka C++ (zawierającej szablony i wyjątki) w firmie DEC. (Marzec) Powstanie pierwszej implementacji języka C++ w firmie Microsoft. (Maj) Powstanie pierwszej implementacji języka C++ w firmie IBM. 1993 Marzec: Przyjęcie koncepcji identyfikowania typu podczas wykonywania programu. Lipiec: Przyjęcie koncepcji przestrzeni nazw. 1998 Przyjęcie standardu ANSI/ISO języka C++.

Genealogia

Dalszy rozwój i wprowadzane standardy 1998 (ISO/IEC 14882:2011) Przyjęcie standardu ANSI/ISO języka C++. 2003 (ISO/IEC 14882:2003) Korekcja wcześniejszego standardu. 2007 (ISO/IEC TR 19768:2007) Oparty na technicznym raporcie Library Technical Report 1, który wprowadzał rozszerzenia do biblioteki standardowej. 2011 (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.

Dalszy rozwój i wprowadzane standardy 1998 (ISO/IEC 14882:2011) Przyjęcie standardu ANSI/ISO języka C++. 2003 (ISO/IEC 14882:2003) Korekcja wcześniejszego standardu. 2007 (ISO/IEC TR 19768:2007) Oparty na technicznym raporcie Library Technical Report 1, który wprowadzał rozszerzenia do biblioteki standardowej. 2011 (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.

Dalszy rozwój i wprowadzane standardy 1998 (ISO/IEC 14882:2011) Przyjęcie standardu ANSI/ISO języka C++. 2003 (ISO/IEC 14882:2003) Korekcja wcześniejszego standardu. 2007 (ISO/IEC TR 19768:2007) Oparty na technicznym raporcie Library Technical Report 1, który wprowadzał rozszerzenia do biblioteki standardowej. 2011 (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.

Dalszy rozwój i wprowadzane standardy 1998 (ISO/IEC 14882:2011) Przyjęcie standardu ANSI/ISO języka C++. 2003 (ISO/IEC 14882:2003) Korekcja wcześniejszego standardu. 2007 (ISO/IEC TR 19768:2007) Oparty na technicznym raporcie Library Technical Report 1, który wprowadzał rozszerzenia do biblioteki standardowej. 2011 (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.

Dalszy rozwój i wprowadzane standardy C++98 C++03 C++TR1 C++11 1998 2003 2007 2011 (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. (ISO/IEC 14882:2011) 11 sierpnia 2011: Nowy standard języka C++ wcześniej roboczo określany jako C++0x.

Aktualna mapa drogowa

Wzajemne powiązania Kilka faktów: Słowo kluczowe class pochodzi z Simuli (podobnie jak notacja wskaźnika this). Zapis funkcja(void) w ANSI C pochodzi z języka C z Klasami.

Wzajemne powiązania Kilka faktów: Słowo kluczowe class pochodzi z Simuli (podobnie jak notacja wskaźnika this). Zapis funkcja(void) w ANSI C pochodzi z języka C z Klasami.

Wzajemne powiązania Kilka faktów: Słowo kluczowe class pochodzi z Simuli (podobnie jak notacja wskaźnika this). Zapis funkcja(void) w ANSI C pochodzi z języka C z Klasami.

Dlaczego C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym

Dlaczego C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym

Dlaczego C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym

Dlaczego C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym

Dlaczego C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym

Dlaczego C C jest językiem elastycznym nie ma wewnętrznych ograniczeń wykluczających możliwość napisania jakiegoś rodzaju programu, tzn. można korzystać w nim z większości technik programowania. C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym

Dlaczego C C jest językiem elastycznym C jest językiem wydajnym semantyka języka znajduje się na niskim poziomie, tzn. podstawowe pojęcia języka odzwierciedlają podstawowe pojęcia tradycyjnego komputera. C jest językiem szeroko dostępnym C jest językiem przenośnym

Dlaczego C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym implementacje tego języka istnieją zarówno dla mikrokomputerów jak też dla dużych superkomputerów. C jest językiem przenośnym

Dlaczego C C jest językiem elastycznym C jest językiem wydajnym C jest językiem szeroko dostępnym C jest językiem przenośnym programy napisane w C zazwyczaj nie można automatycznie przenosić z jednego systemu operacyjnego do drugiego. Jednak przenośność z uwzględnieniem odpowiednich uwarunkowań jest możliwa.

Dlaczego C Język C Język C++ char Znak; int Znak; scanf( %c, &Znak); cin >> Znak; char Tab[10000]; char Tab[10000]; scanf( %s, Tab); cin >> Tab;

Dlaczego C Język C Język C++ char Znak; int Znak; scanf( %c, &Znak); cin >> Znak; char Tab[10000]; char Tab[10000]; scanf( %s, Tab); cin >> Tab; Tak można, ale mimo to tak nie należy robić!!! (niebezpieczeństwo niekontrolowanego przepełnienia)

Formatowanie strumienia wejściowego Język C Język C++ char Tab[10]; char Tab[10]; scanf( %10s, Tab); cin >> setw(sizeof(tab)) >> Tab;

Formatowanie strumienia wejściowego Język C Język C++ char Tab[10]; char Tab[10]; scanf( %10s, Tab); cin >> setw(sizeof(tab)) >> Tab; char Znak, Tab[10]; char Znak, Tab[10]; scanf( %c%10s, &Znak, Tab); cin >> Znak >> setw(sizeof(tab)) >> Tab;

Formatowanie strumienia wejściowego Język C Język C++ Wczytywanie bez pomijania znaków białych int KodZnaku; char Znak; scanf( %c, &Znak); cin >> noskipws >> Znak;

Formatowanie strumienia wejściowego Język C Język C++ Wczytywanie bez pomijania znaków białych int KodZnaku; char Znak; scanf( %c, &Znak); cin >> noskipws >> Znak; Wymuszenie pomijania znaków białych char Znak; char Znak; scanf( %c, &Znak); cin >> skipws >> Znak;

Formatowanie strumienia wejściowego Język C Język C++ Wczytywanie bez pomijania znaków białych int KodZnaku; char Znak; scanf( %c, &Znak); cin >> noskipws >> Znak; Wymuszenie pomijania znaków białych char Znak; char Znak; scanf( %c, &Znak); cin >> skipws >> Znak; Odrzucenie znaku int KodZnaku; char Znak; KodZnaku = getchar( ); cin.get(znak); ungetc(kodznaku, stdin); cin.unget( );

Zestawienie dostępnych strumieni Język C Język C++ fprintf(stderr, Komunikat o błędzie... ); cerr << Komunikat o błędzie... ;

Zestawienie dostępnych strumieni Język C Język C++ fprintf(stderr, Komunikat o błędzie... ); cerr << Komunikat o błędzie... ; Predefiniowane strumienie wejścia/wyjścia FILE stdin istream cin FILE stdout ostream cout FILE stderr ostream cerr ostream clog

Zestawienie dostępnych strumieni Język C Język C++ fprintf(stderr, Komunikat o błędzie... ); cerr << Komunikat o błędzie... ; Predefiniowane strumienie wejścia/wyjścia FILE stdin istream cin FILE stdout ostream cout FILE stderr ostream cerr ostream clog Deklaracje plików nagłówkowych dla operacji wejścia/wyjścia #include <stdio.h> #include <iostream> #include <iomanip> using namespace std;

Koniec prezentacji Dziękuję za uwagę