Symfonia C++ standard : programowanie w języku C++ orientowane obiektowo. T. 1 / Jerzy Grębosz. Wyd. 3 C - popr. Kraków, 2015.

Podobne dokumenty
Opus Magnum C++11 : programowanie w języku C++. Tom 1 / Jerzy Grębosz. Gliwice, cop Spis treści

Spis treœci. 0 Proszê nie czytaæ tego! Startujemy! Pierwszy program Drugi program Æwiczenia...19

0 Proszę nie czytać tego! 1 Startujemy! 2 Instrukcje sterujące. 3 Typy. 1.1 Pierwszy program 1.2 Drugi program 1.3 Ćwiczenia

Opus Magnum C++11 : programowanie w języku C++. T. 2 / Jerzy Grębosz. Gliwice, cop Spis treści

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

ROZDZIAŁ 2. Operatory

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

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Część I Programowanie niskiego poziomu w języku C 19

MIKROKONTROLERY AVR JĘZYK C WYDAWNICTWO ATNEL PODSTAWY PROGRAMOWANIA. Miros aw Kardaś. Szczecin Mojej Żonie Kasi

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

Jedno C i same plusy!

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

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

dr inż. Jarosław Forenc

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

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

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

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

Cena szkolenia. Opis kursu

MATERIAŁY DO ZAJĘĆ II

Symfonia C++ standard : programowanie w języku C++ orientowane obiektowo. T. 2 / Jerzy Grębosz. Wyd. 3 C popr. Kraków, 2015.

Wykład 8: klasy cz. 4

Wykład 2 Składnia języka C# (cz. 1)

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie strukturalne i obiektowe

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

Podstawy Programowania

Lab 9 Podstawy Programowania

Zmienne, stałe i operatory

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Wykład 5: Klasy cz. 3

Wykład 3 Składnia języka C# (cz. 2)

Programowanie (C++) NI 5

Część 4 życie programu

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

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

2 Przygotował: mgr inż. Maciej Lasota

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Programowanie obiektowe

STL: Lekcja 1&2. Filozofia STL

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

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

Słowa kluczowe i nazwy

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

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

Wykład 4: Klasy i Metody

Programowanie obiektowe. Dr hab. Inż. Marta Gładysiewicz-Kudrawiec Pokój 229 A1 Operatory new delete pliki-odczyt

Podstawy Programowania C++

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Wskaźniki. Informatyka

Język C zajęcia nr 11. Funkcje

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

( wykł. dr Marek Piasecki )

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Wykład 1: Wskaźniki i zmienne dynamiczne

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

KARTA PRZEDMIOTU. Egzamin / zaliczenie. Egzamin / zaliczenie. ocenę*

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Rok akademicki: 2013/2014 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

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

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

I - Microsoft Visual Studio C++

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

Podstawy programowania w języku C

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Języki i techniki programowania Ćwiczenia 2

Programowanie w języku C++

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

C++. Æwiczenia zaawansowane

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

Operatory na rzecz typu TString

PROGRAMOWANIE w C prolog

Szablony klas, zastosowanie szablonów w programach

przedmiot kierunkowy (podstawowy / kierunkowy / inny HES) obowiązkowy (obowiązkowy / nieobowiązkowy) polski semestr II

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Functionalization. Funkcje w C. Marcin Makowski. 30 listopada Zak lad Chemii Teoretycznej UJ

Podstawy Programowania

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

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

PARADYGMATY PROGRAMOWANIA Wykład 3

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Język C - podstawowe informacje

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Szkolenia specjalistyczne

Wprowadzenie do programowania

Klasa std::string. Bogdan Kreczmer. ZPCiR IIAiR PWr pokój 307 budynek C3.

Podstawy programowania w języku C++

KOTLIN. Język programowania dla Androida

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

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

Transkrypt:

Symfonia C++ standard : programowanie w języku C++ orientowane obiektowo. T. 1 / Jerzy Grębosz. Wyd. 3 C - popr. Kraków, 2015 Spis treści 0 Proszę nie czytać tego! 19 1 Startujemy! 24 1.1 Pierwszy program 24 1.2 Drugi program 29 1.3 Ćwiczenia 35 2 Instrukcje sterujące 37 2.1 Prawda - Fałsz, czyli o warunkach 37 2.1.1 Wyrażenie logiczne 37 2.1.2 Zmienne logiczne bool jako warunek 38 2.1.3 Stare dobre sposoby z dawnego C++ 38 2.2 Instrukcja warunkowa if 39 2.3 Pętla while 43 2.4 Pętla do...while 44 2.5 Pętla for 45 2.6 Instrukcja switch 47 2.7 Co wybrać: switch czy if...else! 50 2.8 Instrukcja break 52 2.9 Instrukcja goto 54 2.10 Instrukcja continue 55 2.11 Klamry w instrukcjach sterujących 56 2.12 Ćwiczenia 57 3 Typy 60 3.1 Deklaracje typów 60 3.2 Systematyka typów z języka C++ 61 3.3 Typy fundamentalne 62 3.3.1 Definiowanie obiektów w biegu" 66 3.4 Stałe dosłowne 69 3.4.1 Stałe będące liczbami całkowitymi 69 3.4.2 Stałe reprezentujące liczby zmiennoprzecinkowe 71 3.4.3 Stałe znakowe 72 3.4.4 Stałe tekstowe, napisy, albo po prostu stringi 74 3.5 Typy złożone 77 3.6 Typ void 78 3.7 Zakres ważności nazwy obiektu, a czas życia obiektu 78 3.7.1 Zakres: lokalny 79

3.7.2 Zakres: blok funkcji 79 3.7.3 Zakres: obszar pliku 80 3.7.4 Zakres: obszar klasy 80 3.7.5 Zakres określony przez przestrzeń nazw 80 3.8 Zasłanianie nazw 85 3.9 Specyfikator (przydomek) const 87 3.9.1 Pojedynek: const contra #define 88 3.10 Obiekty register 89 3.11 Specyfikator volatile 90 3.12 Instrukcja typedef 91 3.13 Typy wyliczeniowe enum 92 3.14 Ćwiczenia 95 4 Operatory 99 4.1 Operatory arytmetyczne 99 4.1.1 Operator %, czyli reszta z dzielenia (modulo) 100 4.1.2 Jednoargumentowe operatory + i - 101 4.1.3 Operatory inkrementacji i dekrementacji 102 4.1.4 Operator przypisania = 103 4.2 Operatory logiczne 104 4.2.1 Operatory relacji 104 4.2.2 Operatory sumy logicznej i iloczynu logicznego && 106 4.2.3 Wykrzyknik! czyli operator negacji 107 4.3 Operatory bitowe 108 4.3.1 Przesunięcie w lewo «109 4.3.2 Przesunięcie w prawo» 109 4.3.3 Bitowe operatory sumy, iloczynu, negacji, różnicy symetrycznej 110 4.4 Różnica między operatorami logicznymi, a operatorami bitowymi 111 4.5 Pozostałe operatory przypisania 113 4.6 Operator uzyskiwania adresu (operator &) 114 4.7 Wyrażenie warunkowe 115 4.8 Operator sizeof 116 4.9 Operatory rzutowania 117 4.9.1 Rzutowanie według tradycyjnych (nie zalecanych) sposobów 117 4.9.2 Rzutowanie za pomocą nowych operatorów rzutowania 119 4.9.3 Operator static_cast 119 4.9.4 Operator const_cast 121 4.9.5 Operator dynamic_cast 123 4.9.6 Operator reinterpret_cast 123 4.10 Operator: przecinek 124 4.11 Priorytety operatorów 125 4.12 Łączność operatorów 128 4.13 Ćwiczenia 128 5 Funkcje 133

5.1 Funkcja często wywołuje inną funkcję 136 5.2 Zwracanie przez funkcję rezultatu 136 5.3 Stos 140 5.4 Przesyłanie argumentów do funkcji przez wartość 140 5.5 Przesyłanie argumentów przez referencję 142 5.6 Kiedy deklaracja funkcji nie jest konieczna? 144 5.7 Argumenty domniemane 146 5.7.1 Ciekawostki na temat argumentów domniemanych 148 5.8 Nienazwany argument 153 5.9 Funkcje inline (w linii) 155 5.10 Przypomnienie o zakresie ważności nazw deklarowanych wewnątrz funkcji 158 5.11 Wybór zakresu ważności nazwy i czasu życia obiektu 159 5.11.1 Obiekty globalne 159 5.11.2 Obiekty automatyczne 160 5.11.3 Obiekty lokalne statyczne 161 5.12 Funkcje w programie składającym się z kilku plików 164 5.12.1 Nazwy statyczne globalne 168 5.13 Funkcje rekurencyjne 170 5.14 Funkcje biblioteczne 179 5.15 Ćwiczenia 182 6 Preprocesor 188 6.1 Na pomoc rodakom 188 6.2 Dyrektywa #define 189 6.3 Dyrektywa #undef 192 6.4 Makrodefinicje 192 6.5 Sklejacz nazw, czyli operator ## 195 6.6 Zamiana parametru aktualnego makrodefinicji na string 195 6.7 Dyrektywy kompilacji warunkowej 197 6.8 Dyrektywa #error 201 6.9 Dyrektywa #line 202 6.10 Wstawianie treści innych plików w tekst kompilowanego właśnie pliku 202 6.11 Dyrektywa pusta # 204 6.12 Dyrektywy zależne od implementacji 204 6.13 Nazwy predefiniowane 205 6.14 Ćwiczenia 206 7 Tablice 210 7.1 Elementy tablicy 211 7.2 Inicjalizacja tablic 213 7.3 Przekazywanie tablicy do funkcji 214 7.4 Przykład z tablicą elementów typu enum 218 7.5 Tablice znakowe 220

7.6 Tablice wielowymiarowe 228 7.6.1 Typ wyrażeń związanych z tablicą wielowymiarową 231 7.6.2 Przesyłanie tablic wielowymiarowych do funkcji 233 7.7 Ćwiczenia 234 8 Wskaźniki 239 8.1 Wskaźniki mogą bardzo ułatwić życie 239 8.2 Definiowanie wskaźników 241 8.3 Praca ze wskaźnikiem 242 8.4 L-wartość 245 8.5 Operator rzutowania reinterpret_cast, a wskaźniki 246 8.6 Wskaźniki typu void 249 8.7 Cztery domeny zastosowania wskaźników 251 8.8 Zastosowanie wskaźników wobec tablic 251 8.8.1 Ćwiczenia z mechaniki ruchu wskaźnika 251 8.8.2 Użycie wskaźnika w pracy z tablicą 255 8.8.3 Arytmetyka wskaźników 259 8.8.4 Porównywanie wskaźników 261 8.8.5 Wskaźnik można porównać z adresem 0 (zero) 263 8.9 Zastosowanie wskaźników w argumentach funkcji 264 8.9.1 Jeszcze raz o przesyłaniu tablic do funkcji 267 8.9.2 Odbieranie tablicy jako wskaźnika 268 8.9.3 Argument formalny będący wskaźnikiem do obiektu const 269 8.10 Zastosowanie wskaźników przy dostępie do konkretnych komórek pamięci 272 8.11 Rezerwacja obszarów pamięci 273 8.11.1 Operatory new i delete albo Oratorium Stworzenie Świata 274 8.11.2 Dynamiczna alokacja tablicy 277 8.11.3 Tablice wielowymiarowe tworzone operatorem new 278 8.11.4 Umiejscawiający operator new 280 8.11.5 "Przychodzimy, odchodzimy - cichuteńko, na..." 285 8.11.6 Zapas pamięci to nie jest studnia bez dna 287 8.11.7 Funkcja set_new_handler 291 8.11.8 Pojedynek: new contra malloc 292 8.12 Stałe wskaźniki 293 8.13 Stałe wskaźniki, a wskaźniki do stałych 294 8.14 Strzał na oślep - Wskaźnik zawsze pokazuje na coś 295 8.15 Sposoby ustawiania wskaźników 296 8.16 Parada kłamców, czyli o rzutowaniu const_cast 298 8.17 Tablice wskaźników 302 8.18 Wariacje na temat C-stringów 304 8.19 Wskaźniki do funkcji 311 8.19.1 Ćwiczenia z definiowania wskaźników do funkcji 315 8.19.2 Wskaźnik do funkcji jako argument innej funkcji 320 8.19.3 Tablica wskaźników do funkcji 329

8.20 Argumenty z linii wywołania programu 334 8.21 Ćwiczenia 336 9 Przeładowanie nazwy funkcji 344 9.1 Co to znaczy przeładowanie 344 9.2 Bliższe szczegóły przeładowania 347 9.3 Czy przeładowanie nazw funkcji jest techniką obiektowo orientowaną? 350 9.4 Linkowanie z modułami z innych języków 351 9.5 Przeładowanie, a zakres ważności deklaracji funkcji 352 9.6 Rozważania o identyczności lub odmienności typów argumentów 354 9.6.1 Przeładowanie, a typedef i enum 354 9.6.2 Tablica, a wskaźnik 354 9.6.3 Pewne szczegóły o tablicach wielowymiarowych 356 9.6.4 Przeładowanie, a referencja 358 9.6.5 Identyczność typów T, const T volatile T 358 9.6.6 Przeładowanie - a typy T, const T volatile T 359 9.6.7 Przeładowanie - a typy T&, volatile T&, const T& 361 9.7 Adres funkcji przeładowanej 361 9.7.1 Zwrot rezultatu będącego adresem funkcji przeładowanej 363 9.8 Kulisy dopasowywania argumentów do funkcji przeładowanych 365 9.9 Etapy dopasowania 366 9.9.1 Etap 1. Dopasowanie dokładne 367 9.9.2 Etap 1a. Dopasowanie dokładne, ale z tzw. trywialną konwersją 367 9.9.3 Etap 2. Dopasowanie z awansem (z promocją) 368 9.9.4 Etap 3. Próba dopasowania za pomocą konwersji standardowych 370 9.9.5 Etap 4. Próba dopasowania z użyciem konwersji zdefiniowanych przez użytkownika 372 9.9.6 Etap 5. Próba dopasowania do funkcji z wielokropkiem 372 9.9.7 Wskaźników nie dopasowuje się inaczej niż dosłownie 372 9.10 Dopasowywanie wywołań z kilkoma argumentami 373 9.11 Ćwiczenia 374 10.1 Typy definiowane przez użytkownika 377 10.2 Składniki klasy 379 10.3 Składnik będący obiektem 380 10.4 Kapsułowanie 381 10.5 Ukrywanie informacji 382 10.6 Klasa, a obiekt 385 10.7 Funkcje składowe 387 10.7.1 Posługiwanie się funkcjami składowymi 387 10.7.2 Definiowanie funkcji składowych 388 10.8 Jak to właściwie jest? (this) 394 10.9 Odwołanie się do publicznych danych składowych 396 10.10 Zasłanianie nazw 397 10.10.1 Nie sięgaj z klasy do obiektów globalnych 400

10.11 Przeładowanie i zasłonięcie równocześnie 401 10.12 Nowa klasa? Osobny plik! 401 10.13 Przesyłanie do funkcji argumentów będących obiektami 412 10.13.1 Przesyłanie obiektu przez wartość 412 10.13.2 Przesyłanie przez referencję 415 10.14 Konstruktor - pierwsza wzmianka 415 10.15 Destruktor - pierwsza wzmianka 420 10.16 Składnik statyczny 423 10.16.1 Deklaracja składnika statycznego połączona z inicjalizacją 428 10.17 Statyczna funkcja składowa 432 10.18 Do czego może nam się przydać składnik statyczny w klasie? 436 10.19 Funkcje składowe typu const oraz volatile 436 10.19.1 Przeładowanie, a funkcje składowe const i volatile 440 10.20 Specyfikator mutable 440 10.21 Ćwiczenia 452 11 Biblioteczna klasa std::string do operacji z tekstami 456 11.1 Przykład programu z użyciem klasy string 458 11.2 Definiowanie obiektów klasy string 463 11.3 Użycie operatorów =, +, +=, w pracy ze stringami 467 11.3.1 Jak umieścić w tekście liczbę? 468 11.4 Pojemność, rozmiar i długość stringu 469 11.4.1 Funkcje size() i length() 470 11.4.2 Funkcja składowa empty 470 11.4.3 Funkcja składowa max_size 471 11.4.4 Funkcja składowa capacity 471 11.4.5 Funkcja składowa reserve 473 11.4.6 resize - zmiana długości stringu na siłę" 473 11.4.7 Funkcja składowa clear 475 11.5 Użycie operatora [] oraz funkcji at 476 11.5.1 Działanie operatora [] 477 11.5.2 Działanie funkcji składowej at 477 11.6 Praca z fragmentem stringu, czyli z sub-stringiem 480 11.7 Funkcja składowa substr 481 11.8 Szukanie zadanego substringu w obiekcie klasy string - funkcje find 481 11.9 Szukanie rozpoczynane od końca stringu 485 11.10 Szukanie w stringu jednego ze znaków z zadanego zestawu 486 11.11 Usuwanie znaków ze stringu - funkcje erase 488 11.12 Wstawianie znaków do już istniejącego stringu - funkcje insert 490 11.13 Zamiana części znaków na inne znaki - replace 492 11.14 Zamiana zawartości obiektu klasy String na C-string 496 11.15 Zaglądanie do wnętrza obiektu klasy string funkcją data 499 11.16 W porządku alfabetycznym - czyli porównywanie stringów 501 11.16.1 Porównywanie stringów funkcjami compare 501 11.16.2 Porównywanie stringów przy użyciu operatorów ==,!=, <, >,

<=, >= 506 11.17 Zamiana treści stringu na małe (lub wielkie) litery 508 11.18 Kopiowanie treści obiektu klasy string do wybranej tablicy znakowej - funkcja copy 513 11.19 Wzajemna zamiana treści dwóch obiektów klasy string - funkcja swap 514 11.20 Przypisanie do obiektu klasy string, funkcja assign 515 11.21 Dopisywanie do końca stringu za pomocą funkcji append 517 11.22 Wczytywanie z klawiatury długiego stringu o nieznanej wcześniej długości - getline 518 11.22.1 Pułapka - czyli jak getline może Cię zaskoczyć 521 11.23 Iteratory stringu 525 11.23.1 Iterator do obiektu stałego 529 11.23.2 Funkcje składowe klasy string pracujące z iteratorami 530 11.24 Bryk - czyli "pamięć zewnętrzna" programisty 537 11.25 Ćwiczenia 545 12 Deklaracje przyjaźni 551 12.0.1 Klasy zaprzyjaźnione 560 12.0.2 Słowo o zakresie 562 oprac. BPK