narzędzia i metody / Dariusz Bismor. – Warszawa, 2010 Spis treści
Transkrypt
narzędzia i metody / Dariusz Bismor. – Warszawa, 2010 Spis treści
Programowanie systemów sterowania : narzędzia i metody / Dariusz Bismor. – Warszawa, 2010 Spis treści Przedmowa Wstęp 13 15 Część I Programowanie niskiego poziomu w języku C Wprowadzenie 1. Typy 1.1 Fundamentalne typy danych 1.2 Typy pochodne 1.3 Typy niekompletne 19 21 23 23 25 25 2. 2.1 2.2 2.3 2.4 2.5 2.6 Stałe Stałe całkowitoliczbowe Stałe zmiennopozycyjne Stałe znakowe Znaki przestankowe Stałe łańcuchowe Stałe wyliczeniowe 27 27 28 28 29 29 30 3. 3.1 3.2 3.3 3.4 Zmienne i ich nazwy Kwalifikatory typu Kwalifikatory miejsca Kombinacje kwalifikatorów Zakres waŜności nazw zmiennych 31 32 34 36 36 4. 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 Operatory i wyraŜenia WyraŜenia Podstawowe operatory arytmetyczne Operatory inkrementacji i dekrementacji Operatory relacyjne Operatory logiczne Operator przecinka Operatory bitowe Operatory przypisania Konwersje typów i operatory konwersji (rzutowania) WyraŜenie warunkowe Operator sizeof Priorytety operatorów Punkt sekwencji 38 38 38 39 39 40 41 41 43 44 46 47 47 48 5. 5.1 5.2 5.3 5.4 5.5 5.6 Instrukcje sterujące przebiegiem programu Instrukcje i bloki Instrukcja warunkowa Instrukcja wyboru Pętle Sterowanie pętlami — break i continue Instrukcja skoku 50 50 50 51 52 54 54 6. 6.1 6.2 6.3 6.4 6.5 6.6 Funkcje Zwracanie wartości przez funkcję Przesyłanie argumentów do funkcji przez wartość Deklaracja zapowiadająca funkcji i pliki nagłówkowe Rekurencja wywołań funkcji Stary styl definicji funkcji Funkcja o zmiennej liczbie argumentów wywołania 55 56 57 58 59 60 60 7. 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 Wskaźniki i tablice Definiowanie wskaźników Wskaźniki jako argumenty funkcji Tablice Wskaźniki a tablice Działania arytmetyczne na wskaźnikach Wskaźniki nieokreślonego typu (void) Wskaźniki do wskaźników Wskaźniki do funkcji Wskaźniki a kwalifikator const 63 64 65 66 69 71 72 73 75 76 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 8.8 Struktury i unie Deklarowanie i definiowanie struktur Praca ze strukturami Przesyłanie struktur do i z funkcji Tablice struktur Struktury alokowane dynamicznie Deklaracje typu Unie Pola bitowe 78 78 79 80 82 84 86 88 90 9. 9.1 9.2 9.3 9.4 9.5 9.6 Preprocesor Załączanie plików Kompilacja warunkowa Definiowanie symboli Definiowanie makr Makra predefiniowane Inne dyrektywy 91 92 92 93 94 96 96 Część II Programowanie obiektowe w języku C++ Wprowadzenie 10. Język C++ a język C 10.1 Stałe 10.2 Nowe typy danych 10.3 Referencje 10.4 Nazwy zastępcze 10.5 Priorytety operatorów języka C++ 97 99 101 102 103 104 104 105 11. 11.1 11.2 11.3 11.4 107 107 108 109 110 Funkcje w języku C++ Deklarowanie nazw funkcji Funkcje typu „inline" Argumenty domniemane funkcji Nienazwany argument funkcji 11.5 11.6 11.7 11.8 Przekazywanie argumentów funkcji przez referencję Przeładowanie nazw funkcji Typy rozróŜniane przy przeładowaniu Etapy dopasowania przeładowanych funkcji 110 112 114 116 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 12.10 12.11 12.12 12.13 12.14 12.15 12.16 Klasy Deklarowanie i definiowanie klas Elementy składowe klasy Enkapsulacja składników klasy Deklaracja przyjaźni Funkcje składowe Funkcje składowe typu „inline" Wskaźnik „this" Przesłanianie nazw Statyczny składnik klasy Statyczna funkcja składowa klasy Stały składnik klasy Funkcja składowa typu const Składnik dostrajalny (mutable) Funkcja składowa typu volatile Wskaźniki do składników klasy Struktury i unie jako klasy 120 121 121 122 124 126 127 127 128 129 131 132 133 134 135 135 140 13. 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 13.9 Konstruktory i destruktory Deklarowanie i definiowanie konstruktora Deklarowanie i definiowanie destruktora Automatyczne wywołania konstruktora i destruktora Przeładowanie konstruktora Argumenty domniemane i konstruktor domniemany Lista inicjalizacyjna konstruktora Konstruktor kopiujący Niepubliczny konstruktor Singletony 142 142 144 146 147 148 149 150 156 157 14. 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 Konwersja typów Potrzeba konwersji Konwersje automatyczne Konstruktor jako konwerter Jawne wywołanie konwersji Rezygnacja z konwersji automatycznych Operator konwersji Jawne konwersje typów w języku C++ Konwersje a przeładowanie funkcji 161 161 162 163 164 165 165 167 169 15. 15.1 15.2 15.3 15.4 15.5 15.6 Przeładowanie operatorów Zasady przeładowania operatorów Funkcja operatorowa jako składnik klasy Globalna funkcja operatorowa Operator przypisania Operator przypisania a pseudoprzypisania Operator pobrania adresu 174 175 177 179 180 184 185 15.7 15.8 15.9 15.10 15.11 15.12 15.13 Operator przecinka Operatory new i delete Operator tablicowy [] Operator funkcyjny () Operator odniesienia przez wskaźnik -> Operator odniesienia przez wskaźnik do składnika ->* Operatory inkrementacji i dekrementacji 186 186 197 200 200 205 206 16. 16.1 16.2 16.3 16.4 16.5 16.6 16.7 16.8 16.9 16.10 16.11 Obsługa sytuacji wyjątkowych Zgłaszanie wyjątków Obsługa wyjątków RozróŜnianie wyjątków Wyjątki nigdzie nieobsłuŜone Specyfikacje wyjątków RóŜnice między wywołaniem funkcji a obsługą wyjątków Wyjątki w konstruktorze Wyjątki w destruktorze Blok try na poziomie funkcji Wyjątkowe bezpieczeństwo Standardowe klasy wyjątków 208 209 210 212 213 215 217 219 223 225 226 228 17. 17.1 17.2 17.3 17.4 17.5 17.6 17.7 17.8 17.9 17.10 17.11 17.12 Dziedziczenie i zawieranie klas Zawieranie klas Dziedziczenie Reguła przesłaniania Konstruktory klas podstawowych i składowych ZagnieŜdŜona deklaracja klasy Kolejność konstrukcji i destrukcji obiektów składowych Sposoby dziedziczenia Czego się nie dziedziczy? Konwersje standardowe przy dziedziczeniu Dziedziczenie wielokrotne Wieloznaczność przy dziedziczeniu wielokrotnym Dziedziczenie wirtualne 231 231 234 236 237 239 240 241 245 247 251 253 255 18. 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 18.9 Funkcje wirtualne Podstawy Technikalia Kiedy wystąpi polimorfizm? Kiedy nie wystąpi polimorfizm? Nietypowe funkcje wirtualne identyfikacja typu (RTTI) Funkcje czysto wirtualne Klasy abstrakcyjne Wirtualne konstruktory i funkcje globalne 259 259 262 263 265 266 268 272 274 275 19. 19.1 19.2 19.3 19.4 Szablony Szablony funkcji Szablony klas Sposoby ukonkretnienia szablonu Specjalizacja szablonu 280 281 282 284 285 19.5 19.6 19.7 19.8 Szablony z wieloma parametrami Statyczny składnik w szablonie klasy Szablony a przyjaźń Inne uwagi dotyczące szablonów 286 290 291 295 20. 20.1 20.2 20.3 20.4 20.5 Przestrzenie nazw Deklarowanie przestrzeni nazw UŜywanie przestrzeni nazw Dyrektywa using Instrukcja using Anonimowe przestrzenie nazw 297 297 298 299 301 301 21. 21.1 21.2 21.3 21.4 21.5 21.6 Elementy biblioteki standardowej Iteratory Klasy-pojemniki (kontenery) Obiekty funkcyjne Standardowe algorytmy Klasa string Standardowe wejście i wyjście 302 303 308 318 320 331 339 Część III Programowanie symulacji Simulinka Wprowadzenie 22. Podstawy działania s-funkcji 22.1 Matematyczny opis bloku 22.2 Fazy symulacji 22.3 Bezpośrednie przejście sygnału przez blok 22.4 Dynamiczny rozmiar wejść i wyjść 22.5 Czas próbkowania dla bloku 361 363 365 365 366 368 369 369 23. 23.1 23.2 23.3 23.4 23.5 23.6 23.7 S-funkcje w języku Matlaba Format s-funkcji w języku Matlaba Cechy s-funkcji Przykład s-funkcji — wzmacniacz Przykład s-funkcji — dynamika ciągła Przykład s-funkcji - - dynamika dyskretna Przykład s-funkcji — układ hybrydowy Wersja 2 interfejsu s-funkcji w języku Matlaba 371 371 373 373 375 377 378 381 24. 24.1 24.2 24.3 24.4 24.5 24.6 S-funkcje w języku C Kolejność wywoływania metod Struktura SimStruct Metody Szablon s-funkcji w języku C Kompilacja s-funkcji i osadzenie w modelu Kreator s-funkcji 382 383 387 388 395 399 402 25. 25.1 25.2 25.3 25.4 Definiowanie właściwości bloku s-funkcji Zmienne s-funkcji Sygnały wejściowe bloku Sygnały wyjściowe bloku Stany bloku 406 406 407 415 417 25.5 25.6 25.7 25.8 25.9 25.10 25.11 Parametry bloku s-funkcji Zmienne robocze bloku Definiowanie czasów próbkowania Detekcja przejść przez zero Definiowanie własnych typów danych Obsługa błędów Opcje symulacji 419 426 431 437 448 450 453 26. 26.1 26.2 26.3 S-funkcje w języku C++ Szablon s-funkcji w języku C++ Przechowywanie obiektów w pamięci Kompilacja s-funkcji w języku C++ 455 455 459 461 Część IV Symulowanie układów regulacji Wprowadzenie 27. Dokumentacja w projektach programistycznych 27.1 Doxygen — wstęp 27.2 Dokumentowanie kodu 27.3 Formatowanie dokumentacji 463 465 468 469 473 477 28. 28.1 28.2 28.3 Dyskretny obiekt symulacji Model matematyczny Programowanie symulacji modelu ARMAX Sprawdzanie poprawności implementacji 489 489 492 494 29. 29.1 29.2 29.3 29.4 29.5 Dyskretna pętla regulacji i interfejs dla klas regulatorów Dyskretna pętla regulacji Interfejs klasy regulatora Prosty regulator Programowanie dyskretnej pętli regulacji Sprawdzanie poprawności implementacji 496 496 497 500 500 502 30. 30.1 30.2 30.3 30.4 Regulacja PID Ciągły regulator PID Dyskretna postać regulatora PID Implementacja regulatora PID Regulator PID samonastrajalny 504 504 509 510 511 31. 31.1 31.2 31.3 31.4 Regulacja predykcyjna Pojęcia związane z regulacją predykcyjna Algorytm regulacji predykcyjnej uogólnionej Implementacja algorytmu GPC Sprawdzanie poprawności działania 514 515 517 519 520 32. 32.1 32.2 32.3 32.4 32.5 Identyfikacja parametryczna Rekurencyjna waŜona metoda najmniejszych kwadratów Modyfikacje RMNK Rozszerzona RMNK Szybki algorytm RMNK Implementacja algorytmu identyfikacji 522 522 524 527 528 529 33. 33.1 33.2 33.3 33.4 33.5 Graficzny interfejs uŜytkownika Trójstopniowa struktura programów w środowisku KDE Sygnały i gniazda Sygnały i gniazda w akcji Grafika w KDE — tworzenie wykresu Wykres w aplikacji 530 532 541 545 552 560 Bibliografia 566 Skorowidz 568 oprac. BPK