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