Programowanie, część II
|
|
- Dariusz Sadowski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Programowanie, część II Rafał J. Wysocki Instytut Fizyki Teoretycznej, Wydział Fizyki UW 16 kwietnia 2012 Rafał J. Wysocki Programowanie, część II 16 kwietnia / 60
2 Biblioteka standardowa C++ Biblioteka standardowa C Rola standardowej biblioteki C Współpraca z jądrem systemu Zawiera funkcje pozwalające programom z przestrzeni użytkowników (ang. user space), czyli np. aplikacjom, na używanie funkcji udostępnianych przez jądro systemu, czyli wywołań systemowych (ang. system call). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
3 Biblioteka standardowa C++ Biblioteka standardowa C Rola standardowej biblioteki C Współpraca z jądrem systemu Zawiera funkcje pozwalające programom z przestrzeni użytkowników (ang. user space), czyli np. aplikacjom, na używanie funkcji udostępnianych przez jądro systemu, czyli wywołań systemowych (ang. system call). Funkcje wykonujące typowe zadania Niektóre operacje są przeprowadzane praktycznie zawsze w taki sam sposób (np. buforowane wejście-wyjście, przetwarzanie łańcuchów). Nie ma zatem potrzeby (ani sensu) programowania ich za każdym razem od nowa w każdej aplikacji i w bibliotece dostępne są funkcje narzędziowe realizujące te operacje. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
4 Biblioteka standardowa C++ Biblioteka standardowa C Rola standardowej biblioteki C Współpraca z jądrem systemu Zawiera funkcje pozwalające programom z przestrzeni użytkowników (ang. user space), czyli np. aplikacjom, na używanie funkcji udostępnianych przez jądro systemu, czyli wywołań systemowych (ang. system call). Funkcje wykonujące typowe zadania Niektóre operacje są przeprowadzane praktycznie zawsze w taki sam sposób (np. buforowane wejście-wyjście, przetwarzanie łańcuchów). Nie ma zatem potrzeby (ani sensu) programowania ich za każdym razem od nowa w każdej aplikacji i w bibliotece dostępne są funkcje narzędziowe realizujące te operacje. Standardowe definicje Np. M PI (liczba π), EXIT SUCCESS (0). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
5 Biblioteka standardowa C++ Pliki nagłówkowe z biblioteki C Biblioteka standardowa C Nagłówek C++ Nagłówek C Zawartość cassert assert.h Diagnostyka cctype ctype.h Funkcje operujące znakami cerrno errno.h Obsługa błędów cfloat float.h Zmiennoprzecinkowe typy danych ciso646 iso646.h Alternatywny zapis operatorów ISO 646 climits limits.h Rozmiary całkowitych typów danych clocale locale.h Obsługa narodowych standardów notacji cmath math.h Obliczenia numeryczne csetjmp setjmp.h Nielokalne skoki csignal signal.h Obsługa sygnałów cstdarg stdarg.h Obsługa zmiennych argumentów funkcji cstddef stddef.h Standardowe definicje cstdio stdio.h Standardowe wejście-wyjście cstdlib stdlib.h Funkcje ogólnego przeznaczenia cstring string.h Obsługa łańcuchów ctime time.h Mierzenie czasu itp. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
6 Klasa string Biblioteka standardowa C++ Reprezentacja łańcuchów Obiekt klasy string reprezentuje łańcuch (ciąg zaków) o zmiennej długości. Znaki są reprezentowane przez wartości typu char. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
7 Klasa string Biblioteka standardowa C++ Reprezentacja łańcuchów Obiekt klasy string reprezentuje łańcuch (ciąg zaków) o zmiennej długości. Znaki są reprezentowane przez wartości typu char. Funkcje globalne o argumentach klasy string operator+() swap Operatory porównania getline() operator<<() operator>>() Łączenie łańcuchów Zamiana zawartości 2 łańcuchów Porównywanie łańcuchów Odczyt wiersza tekstu Wyjście na strumień Wejście ze strumienia Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
8 Klasa string Biblioteka standardowa C++ Reprezentacja łańcuchów Obiekt klasy string reprezentuje łańcuch (ciąg zaków) o zmiennej długości. Znaki są reprezentowane przez wartości typu char. Funkcje globalne o argumentach klasy string operator+() swap Operatory porównania getline() operator<<() operator>>() Łączenie łańcuchów Zamiana zawartości 2 łańcuchów Porównywanie łańcuchów Odczyt wiersza tekstu Wyjście na strumień Wejście ze strumienia Metody służące do manipulowania łańcuchami Np..insert(),.erase(),.find(),.operator=(),.length() Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
9 Klasa wstring Biblioteka standardowa C++ Reprezentacja łańcuchów Analogiczna do klasy string, tylko znaki są reprezentowane przez wartości typu wchar t. Rafał J. Wysocki Programowanie, część II 16 kwietnia / 60
10 Klasa wstring Biblioteka standardowa C++ Reprezentacja łańcuchów Analogiczna do klasy string, tylko znaki są reprezentowane przez wartości typu wchar t. Ta klasa może być używana do przechowywania i przetwarzania tekstów reprezentowanych zgodnie ze standardem Unicode. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
11 Klasa wstring Biblioteka standardowa C++ Reprezentacja łańcuchów Analogiczna do klasy string, tylko znaki są reprezentowane przez wartości typu wchar t. Ta klasa może być używana do przechowywania i przetwarzania tekstów reprezentowanych zgodnie ze standardem Unicode. Implementacje w różnych systemach operacyjnych mogą się różnić (np. dla UNIX-a wchar t odpowiada reprezentacji UTF-32, a dla Windows UTF-16). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
12 Biblioteka standardowa C++ Strumieniowe wejście-wyjście Klasy wejścia-wyjścia wykorzystujące strumienie ios base ios istream (cin), ostream (cout, cerr, clog) ifstream ofstream istringstream ostringstream iostream [fstream, stringstream] Rafał J. Wysocki Programowanie, część II 16 kwietnia / 60
13 Biblioteka standardowa C++ Strumieniowe wejście-wyjście Klasy wejścia-wyjścia wykorzystujące strumienie ios base ios istream (cin), ostream (cout, cerr, clog) ifstream ofstream istringstream ostringstream iostream [fstream, stringstream] streambuf filebuf stringbuf Rafał J. Wysocki Programowanie, część II 16 kwietnia / 60
14 Biblioteka standardowa C++ Strumieniowe wejście-wyjście Klasy wejścia-wyjścia wykorzystujące strumienie ios base ios istream (cin), ostream (cout, cerr, clog) ifstream ofstream istringstream ostringstream iostream [fstream, stringstream] streambuf filebuf stringbuf Z tymi klasami powiązane są typy danych (fpos, streamoff, streampos, streamsize) oraz manipulatory (np. endl) wejścia-wyjścia. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
15 Biblioteka standardowa C++ Strumieniowe wejście-wyjście Klasy wejścia-wyjścia zorientowane na wchar t Klasa ios oraz klasy pochodne w stosunku do niej są zorientowane na obsługę znaków reprezentowanych przez wartości typu char (tzn. 8-bitowe). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
16 Biblioteka standardowa C++ Strumieniowe wejście-wyjście Klasy wejścia-wyjścia zorientowane na wchar t Klasa ios oraz klasy pochodne w stosunku do niej są zorientowane na obsługę znaków reprezentowanych przez wartości typu char (tzn. 8-bitowe). Oznacza to, że każdy wyprowadzany bądź wprowadzany bajt danych jest interpretowany jako reprezentacja pewnego znaku (to, jaki znak będzie wyświetlony, zależy od ustawień terminala itp.). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
17 Biblioteka standardowa C++ Strumieniowe wejście-wyjście Klasy wejścia-wyjścia zorientowane na wchar t Klasa ios oraz klasy pochodne w stosunku do niej są zorientowane na obsługę znaków reprezentowanych przez wartości typu char (tzn. 8-bitowe). Oznacza to, że każdy wyprowadzany bądź wprowadzany bajt danych jest interpretowany jako reprezentacja pewnego znaku (to, jaki znak będzie wyświetlony, zależy od ustawień terminala itp.). Istnieją odpowiedniki tych klas, które są zorientowane na obsługę znaków reprezentowanych przez wartości typu wchar t. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
18 Biblioteka standardowa C++ Strumieniowe wejście-wyjście Klasy wejścia-wyjścia zorientowane na wchar t Klasa ios oraz klasy pochodne w stosunku do niej są zorientowane na obsługę znaków reprezentowanych przez wartości typu char (tzn. 8-bitowe). Oznacza to, że każdy wyprowadzany bądź wprowadzany bajt danych jest interpretowany jako reprezentacja pewnego znaku (to, jaki znak będzie wyświetlony, zależy od ustawień terminala itp.). Istnieją odpowiedniki tych klas, które są zorientowane na obsługę znaków reprezentowanych przez wartości typu wchar t. Tworzą one hierarchię rozpoczynającą się od klasy wios, od której pochodzą klasy wistream, wostream itd. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
19 Biblioteka standardowa C++ Standard Template Library Części składowe STL (Standard Template Library) Pojemniki (ang. container) bitset zestaw bitów deque kolejka dwukierunkowa (ang. double ended queue) list lista map mapa (pary klucz, wartość ) multimap uogólniona mapa (wiele kluczy dla jednej wartości) set zbiór (niepowtarzające się elementy) multiset zbiór (dopuszczalne powtarzające się elementy) priority queue kolejka z priorytetami queue kolejka (typu FIFO) stack stos vector uporządkowane elementy Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
20 Biblioteka standardowa C++ Standard Template Library Części składowe STL (Standard Template Library) c. d. Iteratory (ang. iterator) Iterator jest obiektem, który można wykorzystać do przejrzenia wszystkich elementów danego pojemnika. Musi implementować przynajmniej operatory ++ oraz * (wyłuskanie). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
21 Biblioteka standardowa C++ Standard Template Library Części składowe STL (Standard Template Library) c. d. Iteratory (ang. iterator) Iterator jest obiektem, który można wykorzystać do przejrzenia wszystkich elementów danego pojemnika. Musi implementować przynajmniej operatory ++ oraz * (wyłuskanie). Można powiedzieć, że iteratory są uogólnieniem wskaźników. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
22 Biblioteka standardowa C++ Standard Template Library Części składowe STL (Standard Template Library) c. d. Iteratory (ang. iterator) Iterator jest obiektem, który można wykorzystać do przejrzenia wszystkich elementów danego pojemnika. Musi implementować przynajmniej operatory ++ oraz * (wyłuskanie). Można powiedzieć, że iteratory są uogólnieniem wskaźników. Można wyróżnić 5 typów interatorów: RandomAccess, Bidirectional, Forward, Input, Output, o różnych własnościach (i możliwych zastosowaniach). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
23 Biblioteka standardowa C++ Standard Template Library Części składowe STL (Standard Template Library) c. d. Iteratory (ang. iterator) Iterator jest obiektem, który można wykorzystać do przejrzenia wszystkich elementów danego pojemnika. Musi implementować przynajmniej operatory ++ oraz * (wyłuskanie). Można powiedzieć, że iteratory są uogólnieniem wskaźników. Można wyróżnić 5 typów interatorów: RandomAccess, Bidirectional, Forward, Input, Output, o różnych własnościach (i możliwych zastosowaniach). Z każdym typem pojemnika związany jest typ iteratora pozwalający na przeszukiwanie pojemników danego typu. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
24 Biblioteka standardowa C++ Standard Template Library Części składowe STL (Standard Template Library) c. d. Algorytmy (ang. algorithm) Funkcje pozwalające na przeprowadzanie typowych działań na pojemnikach (np. przeszukiwanie, wykonywanie określonej czynności dla każdego elementu, obliczanie liczby elementów, podział na części). Rafał J. Wysocki Programowanie, część II 16 kwietnia / 60
25 Biblioteka standardowa C++ Standard Template Library Części składowe STL (Standard Template Library) c. d. Algorytmy (ang. algorithm) Funkcje pozwalające na przeprowadzanie typowych działań na pojemnikach (np. przeszukiwanie, wykonywanie określonej czynności dla każdego elementu, obliczanie liczby elementów, podział na części). Zostały one zaimplementowane w taki sposób, że bardzo trudno jest zrobić to lepiej i wykorzystują iteratory oraz szablony tak, aby elementy mogły być dowolnej klasy. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
26 Biblioteka standardowa C++ Standard Template Library Części składowe STL (Standard Template Library) c. d. Algorytmy (ang. algorithm) Funkcje pozwalające na przeprowadzanie typowych działań na pojemnikach (np. przeszukiwanie, wykonywanie określonej czynności dla każdego elementu, obliczanie liczby elementów, podział na części). Zostały one zaimplementowane w taki sposób, że bardzo trudno jest zrobić to lepiej i wykorzystują iteratory oraz szablony tak, aby elementy mogły być dowolnej klasy. Zalecane jest wykorzystywanie pojemników oraz algorytmów z STL zamiast definiowania swoich własnych, równoważnych funkcjonalnie. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
27 Biblioteka standardowa C++ Przykład wykorzystania STL Standard Template Library Sortowanie wierszy z pliku tekstowego #include <iostream> #include <fstream> #include <string> #include <vector> #include <algorithm> #include <cstdlib> using namespace std; // Nazwa pliku jest argumentem programu. int main(int argc, char *argv[]) { if (argc < 2) { cerr << "Oczekiwany 1 argument" << endl; return EXIT_FAILURE; } ifstream plik(argv[1]); if (!plik) { cerr << "Problem z otwieraniem " << argv[1] << endl; return EXIT_FAILURE; } vector<string> wiersze; string w; while (getline(plik, w)) wiersze.push_back(w); sort(wiersze.begin(), wiersze.end()); for (int i = 0; i < wiersze.size(); i++) cout << wiersze[i] << endl; } return EXIT_SUCCESS; Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
28 Rola bibliotek graficznych Biblioteki i podsystemy graficzne Biblioteki graficzne (ang. graphics library) Są potrzebne, aby można było programować grafikę w C++, ponieważ (niestety) we współczesnych systemach komputerowych podsystemy graficzne (ang. graphics subsystem) są bardzo skomplikowane. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
29 Rola bibliotek graficznych Biblioteki i podsystemy graficzne Biblioteki graficzne (ang. graphics library) Są potrzebne, aby można było programować grafikę w C++, ponieważ (niestety) we współczesnych systemach komputerowych podsystemy graficzne (ang. graphics subsystem) są bardzo skomplikowane. Przykład GNU/Linux Sprzęt (ang. hardware) wyświetlanie, przetwarzanie scen 3D, komunikacja z użytkownikiem Sterowniki w jądrze operowanie sprzętem (niski poziom) Serwer X Windows komunikacja ze sterownikami, system okien, udostępnianie przez sieć, zdarzenia Menedżer okien (ang. window manager) dekoracje okien, komunikacja z aplikacjami i serwerem X Windows, zdarzenia Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
30 Rola bibliotek graficznych Obsługa zdarzeń Zdarzenie (ang. event) Sytuacja potencjalnie wymagająca reakcji ze strony co najmniej jednego z programów korzystających z podsystemu graficznego. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
31 Obsługa zdarzeń Biblioteka Qt Rola bibliotek graficznych Zdarzenie (ang. event) Sytuacja potencjalnie wymagająca reakcji ze strony co najmniej jednego z programów korzystających z podsystemu graficznego. Źródła zdarzeń 1 Serwer X Windows Sprzęt (klawiatura, mysz, ekran dotykowy) Interakcje między oknami (zachodzenie na siebie itp.) 2 Menedżer okien Komunikaty z menu itp. Komunikaty od aplikacji Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
32 Obsługa zdarzeń Biblioteka Qt Rola bibliotek graficznych Zdarzenie (ang. event) Sytuacja potencjalnie wymagająca reakcji ze strony co najmniej jednego z programów korzystających z podsystemu graficznego. Źródła zdarzeń 1 Serwer X Windows Sprzęt (klawiatura, mysz, ekran dotykowy) Interakcje między oknami (zachodzenie na siebie itp.) 2 Menedżer okien Komunikaty z menu itp. Komunikaty od aplikacji Sygnalizowanie zdarzenia Sprzęt Serwer X Windows Menedżer okien Aplikacja Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
33 Związki między zdarzeniami Rola bibliotek graficznych Jedno zdarzenie może powodować wystąpienie kolejnych zdarzeń. Rafał J. Wysocki Programowanie, część II 16 kwietnia / 60
34 Rola bibliotek graficznych Związki między zdarzeniami Jedno zdarzenie może powodować wystąpienie kolejnych zdarzeń. Przykład: ukrywanie okna 1 Zdarzenie klinięcie myszą w obszarze przycisku ukrywania okna. 2 Serwer X Windows przekazuje informację o tym zdarzeniu do menedżera okien. 3 Menedżer okien inicjuje operację ukrywania okna. W jej wyniku inne okna mogą stać się widoczne. 4 Serwer X Windows wykrywa te sytuacje i traktuje je jako zdarzenia. Przekazuje informacje o nich do menedżera okien. 5 Menedżer okien przekazuje informacje o zdarzeniach do aplikacji korzystających z odsłoniętych okien. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
35 Rola bibliotek graficznych Graficzny interfejs użytkownika GUI (ang. Graphical User Interface) Umożliwia użytkownikowi sterowanie komputerem (systemem operacyjnym i aplikacjami) za pośrednictwem podsystemu graficznego. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
36 Rola bibliotek graficznych Graficzny interfejs użytkownika GUI (ang. Graphical User Interface) Umożliwia użytkownikowi sterowanie komputerem (systemem operacyjnym i aplikacjami) za pośrednictwem podsystemu graficznego. Sterowanie z wykorzystaniem zdarzeń Poczynania użytkownika wytwarzają zdarzenia (np. ruch myszą, wciśnięcie klawisza), które są interpretowane (na wielu poziomach) i skutkują przeprowadzeniem odpowiednich działań. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
37 Rola bibliotek graficznych Graficzny interfejs użytkownika GUI (ang. Graphical User Interface) Umożliwia użytkownikowi sterowanie komputerem (systemem operacyjnym i aplikacjami) za pośrednictwem podsystemu graficznego. Sterowanie z wykorzystaniem zdarzeń Poczynania użytkownika wytwarzają zdarzenia (np. ruch myszą, wciśnięcie klawisza), które są interpretowane (na wielu poziomach) i skutkują przeprowadzeniem odpowiednich działań. Jeśli każda akcja w systemie komputerowym jest skutkiem jakiegoś zdarzenia (np. związanego z GUI), to mamy do czynienia ze środowiskiem sterowanym zdarzeniami (ang. event-driven environment). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
38 Rola bibliotek graficznych Komunikacja z użytkownikiem w GUI Machanizm obsługi zdarzeń pozwala użytkownikowi wpływać na zachowanie się komputera (systemu operacyjnego i aplikacji), ale potrzebne jest też przekazywanie informacji zwrotnych (ang. feedback) użytkownikowi. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
39 Rola bibliotek graficznych Komunikacja z użytkownikiem w GUI Machanizm obsługi zdarzeń pozwala użytkownikowi wpływać na zachowanie się komputera (systemu operacyjnego i aplikacji), ale potrzebne jest też przekazywanie informacji zwrotnych (ang. feedback) użytkownikowi. W GUI do tego celu wykorzystywana jest grafika wyświetlana na ekranie reprezentuje informacje przeznaczone dla użytkownika. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
40 Rola bibliotek graficznych Komunikacja z użytkownikiem w GUI Machanizm obsługi zdarzeń pozwala użytkownikowi wpływać na zachowanie się komputera (systemu operacyjnego i aplikacji), ale potrzebne jest też przekazywanie informacji zwrotnych (ang. feedback) użytkownikowi. W GUI do tego celu wykorzystywana jest grafika wyświetlana na ekranie reprezentuje informacje przeznaczone dla użytkownika. Może ona zawierać tekst, ale w GUI tekst jest wyświetlany w towarzystwie elementów graficznych (tzn. tekst jest traktowany jako część grafiki). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
41 Rola bibliotek graficznych Podstawowe elementy grafiki (ang. graphics primitives) Każdy rysunek jest zbudowanych z podstawowych elementów, takich jak pojedyncze punkty, linie proste, łuki, prostokąty itp. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
42 Rola bibliotek graficznych Podstawowe elementy grafiki (ang. graphics primitives) Każdy rysunek jest zbudowanych z podstawowych elementów, takich jak pojedyncze punkty, linie proste, łuki, prostokąty itp. Zwykle sprzęt (tzw. karta graficzna) może być zaprogramowany do umieszczania takich podstawowych elementów w odpowiednich miejscach ekranu. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
43 Rola bibliotek graficznych Podstawowe elementy grafiki (ang. graphics primitives) Każdy rysunek jest zbudowanych z podstawowych elementów, takich jak pojedyncze punkty, linie proste, łuki, prostokąty itp. Zwykle sprzęt (tzw. karta graficzna) może być zaprogramowany do umieszczania takich podstawowych elementów w odpowiednich miejscach ekranu. Pamięć obrazu (ang. video memory) Pamięć dostępna dla procesora karty graficznej (zwykle wchodzi w skład samej karty), zawierająca informacje o tym, co ma być wyświetlane. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
44 Rola bibliotek graficznych Podstawowe elementy grafiki (ang. graphics primitives) Każdy rysunek jest zbudowanych z podstawowych elementów, takich jak pojedyncze punkty, linie proste, łuki, prostokąty itp. Zwykle sprzęt (tzw. karta graficzna) może być zaprogramowany do umieszczania takich podstawowych elementów w odpowiednich miejscach ekranu. Pamięć obrazu (ang. video memory) Pamięć dostępna dla procesora karty graficznej (zwykle wchodzi w skład samej karty), zawierająca informacje o tym, co ma być wyświetlane. Podstawowe elementy grafiki są zapisywane (w odpowiedni sposób i we właściwej kolejności) w pamięci obrazu, dzięki czemu (później) stają się widoczne na ekranie wyświetlacza (np. monitora). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
45 Rola bibliotek graficznych Piksele Grafika rastrowa (ang. raster graphics) Obraz wyświetlany jest w postaci siatki (ang. raster) złożonej z punktów o różnych kolorach. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
46 Rola bibliotek graficznych Piksele Grafika rastrowa (ang. raster graphics) Obraz wyświetlany jest w postaci siatki (ang. raster) złożonej z punktów o różnych kolorach. Piksel (ang. picture element) Odpowiada pojedynczemu punktowi o ustalonym kolorze na wyświetlanym obrazie. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
47 Rola bibliotek graficznych Piksele Grafika rastrowa (ang. raster graphics) Obraz wyświetlany jest w postaci siatki (ang. raster) złożonej z punktów o różnych kolorach. Piksel (ang. picture element) Odpowiada pojedynczemu punktowi o ustalonym kolorze na wyświetlanym obrazie. RGB (ang. Red, Green, Blue) Najczęściej wykorzystywany zapis pikseli w pamięci, w którym każdy piksel jest reprezentowany przez 3 B (24 b) danych określających natężenie poszczególnych składowych światła widzialnego (czerwonej, zielonej i niebieskiej). Dla każdej składowej można używać wartości od 0 do 255. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
48 Rola bibliotek graficznych Bufor klatki i przyspieszanie grafiki 2D Bufor klatki Obszar pamięci obrazu reprezentujący całą (dwuwymiarową) scenę do wyświetlenia. Jego rozmiar zależy od rozdzielczości wyświetlacza i reprezentacji pikseli. Dla wyświetlacza 1280x1024 i pikseli w 24-bitowej reprezentacji RGB wynosi on B = 3840 KiB = 3, 75 MiB. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
49 Rola bibliotek graficznych Bufor klatki i przyspieszanie grafiki 2D Bufor klatki Obszar pamięci obrazu reprezentujący całą (dwuwymiarową) scenę do wyświetlenia. Jego rozmiar zależy od rozdzielczości wyświetlacza i reprezentacji pikseli. Dla wyświetlacza 1280x1024 i pikseli w 24-bitowej reprezentacji RGB wynosi on B = 3840 KiB = 3, 75 MiB. Manipulowanie pikselami Praktycznie każda karta graficzna umożliwia modyfikowanie pojedynczych pikseli bezpośrednio w buforze klatki i odczytywanie zawartości bufora klatki. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
50 Rola bibliotek graficznych Bufor klatki i przyspieszanie grafiki 2D Bufor klatki Obszar pamięci obrazu reprezentujący całą (dwuwymiarową) scenę do wyświetlenia. Jego rozmiar zależy od rozdzielczości wyświetlacza i reprezentacji pikseli. Dla wyświetlacza 1280x1024 i pikseli w 24-bitowej reprezentacji RGB wynosi on B = 3840 KiB = 3, 75 MiB. Manipulowanie pikselami Praktycznie każda karta graficzna umożliwia modyfikowanie pojedynczych pikseli bezpośrednio w buforze klatki i odczytywanie zawartości bufora klatki. Przyspieszanie grafiki 2D (ang. 2D graphics acceleration) Sprzętowe wspomaganie przez kartę graficzną operacji na zawartości bufora klatki, takich jak rysowanie linii prostych, łuków, prostokątów, wypełnianie wzorem (ang. pattern) itp. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
51 Rola bibliotek graficznych Tworzenie rysunków poza buforem klatki Piksmapa (ang. pixmap) Odwzorowany w pamięci operacyjnej komputera fragment bufora klatki odpowiadający prostokątnemu obszarowi na ekranie. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
52 Rola bibliotek graficznych Tworzenie rysunków poza buforem klatki Piksmapa (ang. pixmap) Odwzorowany w pamięci operacyjnej komputera fragment bufora klatki odpowiadający prostokątnemu obszarowi na ekranie. Piksmapy można wykorzystywać do tworzenia ryskunków, podobnie jak bufor klatki, ale będą one wyświetlane dopiero po skopiowaniu zawartości piksmapy do bufora klatki. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
53 Rola bibliotek graficznych Tworzenie rysunków poza buforem klatki Piksmapa (ang. pixmap) Odwzorowany w pamięci operacyjnej komputera fragment bufora klatki odpowiadający prostokątnemu obszarowi na ekranie. Piksmapy można wykorzystywać do tworzenia ryskunków, podobnie jak bufor klatki, ale będą one wyświetlane dopiero po skopiowaniu zawartości piksmapy do bufora klatki. Niektóre karty graficzne wspomagają sprzętowo kopiowanie piksmap, zarówno między buforem klatki i pamięcią główną, jak i w obrębie bufora klatki. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
54 Rola bibliotek graficznych Tworzenie rysunków poza buforem klatki Piksmapa (ang. pixmap) Odwzorowany w pamięci operacyjnej komputera fragment bufora klatki odpowiadający prostokątnemu obszarowi na ekranie. Piksmapy można wykorzystywać do tworzenia ryskunków, podobnie jak bufor klatki, ale będą one wyświetlane dopiero po skopiowaniu zawartości piksmapy do bufora klatki. Niektóre karty graficzne wspomagają sprzętowo kopiowanie piksmap, zarówno między buforem klatki i pamięcią główną, jak i w obrębie bufora klatki. Piksmapy pochodzące z jednego komputera nie muszą być poprawnie wyświetlane po umieszczeniu ich zawartości w buforze klatki karty graficznej na innym komputerze. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
55 Grafika trójwymiarowa (3D) Rola bibliotek graficznych Większość współczesnych kart graficznych jest konstruowana z myślą o grafice trójwymiarowej (3D). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
56 Grafika trójwymiarowa (3D) Rola bibliotek graficznych Większość współczesnych kart graficznych jest konstruowana z myślą o grafice trójwymiarowej (3D). Pamięć obrazu jest wykorzystywana do zapisu trójwymiarowej sceny (w przestrzennym układzie współrzędnych), na podstawie której generowany jest obraz (może on składać się z wielu nakładających się na siebie części). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
57 Rola bibliotek graficznych Grafika trójwymiarowa (3D) Większość współczesnych kart graficznych jest konstruowana z myślą o grafice trójwymiarowej (3D). Pamięć obrazu jest wykorzystywana do zapisu trójwymiarowej sceny (w przestrzennym układzie współrzędnych), na podstawie której generowany jest obraz (może on składać się z wielu nakładających się na siebie części). Renderowanie (ang. rendering) Operacja, w czasie której na podstawie sceny 3D zapisanej w pamięci obrazu tworzone są piksele, a następnie sygnały dla urządzeń wyświetlających. Obejmuje przekształcenia brył, nakładanie tekstur, wygładzanie krawędzi, dodawanie efektów oświetlenia, mgły, przezroczystości itp. oraz rzutowanie. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
58 Rola bibliotek graficznych Grafika 3D w GUI Przyspieszanie grafiki 3D (ang. 3D graphics acceleration) Wspomaganie sprzętowe przez kartę graficzną przetwarzania scen 3D podczas renderowania. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
59 Rola bibliotek graficznych Grafika 3D w GUI Przyspieszanie grafiki 3D (ang. 3D graphics acceleration) Wspomaganie sprzętowe przez kartę graficzną przetwarzania scen 3D podczas renderowania. Współczesne karty graficzne sprawniej przyspieszają grafikę 3D, niż grafikę 2D, więc często bardziej opłaca się wykorzystywać pełne możliwości karty zamiast manipulować tylko zawartością bufora klatki. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
60 Rola bibliotek graficznych Grafika 3D w GUI Przyspieszanie grafiki 3D (ang. 3D graphics acceleration) Wspomaganie sprzętowe przez kartę graficzną przetwarzania scen 3D podczas renderowania. Współczesne karty graficzne sprawniej przyspieszają grafikę 3D, niż grafikę 2D, więc często bardziej opłaca się wykorzystywać pełne możliwości karty zamiast manipulować tylko zawartością bufora klatki. Scalanie GUI (ang. GUI compositing) Okna wykorzystywane przez aplikacje do komunikacji z użytkownikiem są traktowane jako elementy sceny 3D i renderowane z wykorzystaniem sprzętowego wspomagania ze strony karty graficznej. Następnie są one łączone w jedną scenę i prezentowane użytkownikowi. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
61 Rola bibliotek graficznych Od czego zależy w jakim stopniu wykorzystujemy sprzęt To, w jakim stopniu można będzie wykorzystywać możliwości sprzętu w zakresie przyspieszania tworzenia grafiki, zależy od sterowników w jądrze systemu i (dla GNU/Linuksa) serwera X Windows oraz menedżera okien. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
62 Rola bibliotek graficznych Od czego zależy w jakim stopniu wykorzystujemy sprzęt To, w jakim stopniu można będzie wykorzystywać możliwości sprzętu w zakresie przyspieszania tworzenia grafiki, zależy od sterowników w jądrze systemu i (dla GNU/Linuksa) serwera X Windows oraz menedżera okien. Sterowniki karty graficznej w jądrze systemu i w serwerze X Windows muszą wiedzieć jak zaprogramować sprzęt do przeprowadzania poszczególnych operacji. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
63 Rola bibliotek graficznych Od czego zależy w jakim stopniu wykorzystujemy sprzęt To, w jakim stopniu można będzie wykorzystywać możliwości sprzętu w zakresie przyspieszania tworzenia grafiki, zależy od sterowników w jądrze systemu i (dla GNU/Linuksa) serwera X Windows oraz menedżera okien. Sterowniki karty graficznej w jądrze systemu i w serwerze X Windows muszą wiedzieć jak zaprogramować sprzęt do przeprowadzania poszczególnych operacji. Serwer X Windows udostępnia menedżerowi okien i, za jego pośrednictwem, aplikacjom, szereg standardowych funkcji, z których mogą one korzystać w celu przeprowadzania podstawowych operacji związanych z tworzeniem grafiki. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
64 Rola bibliotek graficznych Rola biblioteki graficznej Tworząc aplikację z reguły nie wiemy z góry na jakich systemach będzie ona uruchamiana: Nie wiemy jakie będą możliwości sprzętu. Nie wiemy jakie funkcje będzie udostępniał serwer X Windows. Nie wiemy jaki menedżer okien będzie używany. Nie wiemy na co będzie pozwalał menedżer okien. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
65 Rola bibliotek graficznych Rola biblioteki graficznej Tworząc aplikację z reguły nie wiemy z góry na jakich systemach będzie ona uruchamiana: Nie wiemy jakie będą możliwości sprzętu. Nie wiemy jakie funkcje będzie udostępniał serwer X Windows. Nie wiemy jaki menedżer okien będzie używany. Nie wiemy na co będzie pozwalał menedżer okien. Biblioteka graficzna rozpoznaje możliwości podsystemu graficznego i dostosowuje do nich działanie funkcji oraz klas, z których mogą korzystać aplikacje. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
66 Rola bibliotek graficznych Rola biblioteki graficznej Tworząc aplikację z reguły nie wiemy z góry na jakich systemach będzie ona uruchamiana: Nie wiemy jakie będą możliwości sprzętu. Nie wiemy jakie funkcje będzie udostępniał serwer X Windows. Nie wiemy jaki menedżer okien będzie używany. Nie wiemy na co będzie pozwalał menedżer okien. Biblioteka graficzna rozpoznaje możliwości podsystemu graficznego i dostosowuje do nich działanie funkcji oraz klas, z których mogą korzystać aplikacje. Biblioteka graficzna pozwala korzystać z różnych podsystemów graficznych w jednolity sposób. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
67 Biblioteki graficzne i zdarzenia Rola bibliotek graficznych Biblioteki graficzne dostarczają narzędzi ułatwiających obsługę zdarzeń na poziomie aplikacji. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
68 Rola bibliotek graficznych Biblioteki graficzne i zdarzenia Biblioteki graficzne dostarczają narzędzi ułatwiających obsługę zdarzeń na poziomie aplikacji. Widżet (ang. widget, WIndow gadget) Obiekt reprezentujący podstawowy komponent GUI, taki jak okno, przycisk, suwak, rozwijane menu itp. W środowiskach MS Windows takie komponenty GUI nazywane są kontrolkami (ang. control). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
69 Rola bibliotek graficznych Biblioteki graficzne i zdarzenia Biblioteki graficzne dostarczają narzędzi ułatwiających obsługę zdarzeń na poziomie aplikacji. Widżet (ang. widget, WIndow gadget) Obiekt reprezentujący podstawowy komponent GUI, taki jak okno, przycisk, suwak, rozwijane menu itp. W środowiskach MS Windows takie komponenty GUI nazywane są kontrolkami (ang. control). Każdemu widżetowi przypisuje się prostokątny obszar ekranu i zdarzenia związane z tym obszarem są interpretowane w standardowy sposób w kontekście funkcji spełnianej przez widżet (np. kliknięcie lewym przyciskiem myszy w obszarze przypisanym widżetowi reprezentującemu przycisk może być interpretowane jako wciśnięcie przycisku). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
70 Co zawiera biblioteka Qt Podstawowe klasy z biblioteki Qt QApplication Obiekt tej klasy reprezentuje program (aplikację). Inicjuje zasoby wykorzystywane przez bibliotekę. Do konstruktora przekazuje się argumenty funkcji main(). Wywołanie metody exec() uruchamia pętlę obsługi zdarzeń. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
71 Co zawiera biblioteka Qt Podstawowe klasy z biblioteki Qt QApplication Obiekt tej klasy reprezentuje program (aplikację). Inicjuje zasoby wykorzystywane przez bibliotekę. Do konstruktora przekazuje się argumenty funkcji main(). Wywołanie metody exec() uruchamia pętlę obsługi zdarzeń. Pętla obsługi zdarzeń (ang. event loop) Pętla, w której zdarzenia sygnalizowane przez różne części podsystemu graficznego są przetwarzane i przekazywane odpowiednim widżetom. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
72 Co zawiera biblioteka Qt Podstawowe klasy z biblioteki Qt QApplication Obiekt tej klasy reprezentuje program (aplikację). Inicjuje zasoby wykorzystywane przez bibliotekę. Do konstruktora przekazuje się argumenty funkcji main(). Wywołanie metody exec() uruchamia pętlę obsługi zdarzeń. Pętla obsługi zdarzeń (ang. event loop) Pętla, w której zdarzenia sygnalizowane przez różne części podsystemu graficznego są przetwarzane i przekazywane odpowiednim widżetom. Obiekt klasy QApplication musi być utworzony przed jakimkolwiek innym obiektem związanym z GUI i może być tylko jeden. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
73 Co zawiera biblioteka Qt Podstawowe klasy z biblioteki Qt (c. d.) QObject Od tej klasy pochodzi większość klas dostępnych w bibliotece Qt. Definiuje ona interfejs umożliwiający przekazywanie informacji o zdarzeniach od jednego komponentu GUI do drugiego (jego konstrukcja wykracza poza standard C++). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
74 Co zawiera biblioteka Qt Podstawowe klasy z biblioteki Qt (c. d.) QObject Od tej klasy pochodzi większość klas dostępnych w bibliotece Qt. Definiuje ona interfejs umożliwiający przekazywanie informacji o zdarzeniach od jednego komponentu GUI do drugiego (jego konstrukcja wykracza poza standard C++). QPaintDevice Obiekty tej klasy reprezentują prostokątne powierzchnie, na których można rysować (np. prostokątne wycinki ekranu lub piksmapy). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
75 Co zawiera biblioteka Qt Podstawowe klasy z biblioteki Qt (c. d.) QObject Od tej klasy pochodzi większość klas dostępnych w bibliotece Qt. Definiuje ona interfejs umożliwiający przekazywanie informacji o zdarzeniach od jednego komponentu GUI do drugiego (jego konstrukcja wykracza poza standard C++). QPaintDevice Obiekty tej klasy reprezentują prostokątne powierzchnie, na których można rysować (np. prostokątne wycinki ekranu lub piksmapy). Z każdą taką powierzchnią jest związana prostokątna siatka współrzędnych (o wartościach całkowitych nieujemnych) i punktem o współrzędnych [0, 0] w lewym górnym rogu. Każdy punkt tej siatki reprezentuje jeden piksel. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
76 Co zawiera biblioteka Qt Podstawowe klasy z biblioteki Qt (c. d.) QWidget Klasa pochodna od QObject i QPaintDevice. Od tej klasy pochodzą wszystkie klasy reprezentujące typowe komponenty GUI. Własne komponenty GUI najłatwiej tworzy się poprzez definiowanie własnych klas pochodnych względem QWidget. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
77 Co zawiera biblioteka Qt Podstawowe klasy z biblioteki Qt (c. d.) QWidget Klasa pochodna od QObject i QPaintDevice. Od tej klasy pochodzą wszystkie klasy reprezentujące typowe komponenty GUI. Własne komponenty GUI najłatwiej tworzy się poprzez definiowanie własnych klas pochodnych względem QWidget. QPainter Obiekty tej klasy służą do przeprowadzania podstawowych operacji graficznych (takich, jak rysowanie podstawowych elementów grafiki) na powierzchniach reprezentowanych przez obiekty klasy QPaintDevice. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
78 Co zawiera biblioteka Qt Podstawowe klasy z biblioteki Qt (c. d.) QWidget Klasa pochodna od QObject i QPaintDevice. Od tej klasy pochodzą wszystkie klasy reprezentujące typowe komponenty GUI. Własne komponenty GUI najłatwiej tworzy się poprzez definiowanie własnych klas pochodnych względem QWidget. QPainter Obiekty tej klasy służą do przeprowadzania podstawowych operacji graficznych (takich, jak rysowanie podstawowych elementów grafiki) na powierzchniach reprezentowanych przez obiekty klasy QPaintDevice. W celu narysowania czegoś tworzy się obiekt klasy QPainter związany z obiektem klasy QPaintDevice reprezentującym powierzchnię, na której ma powstać rysunek. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
79 Co zawiera biblioteka Qt Najprosztszy program wykorzystujący Qt #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel hello("hello world!"); hello.resize(100, 30); } hello.show(); return app.exec(); // Start pętli obsługi zdarzeń Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
80 Co zawiera biblioteka Qt Najprosztszy program wykorzystujący Qt #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel hello("hello world!"); hello.resize(100, 30); } hello.show(); return app.exec(); // Start pętli obsługi zdarzeń Argumenty funkcji main() są przekazywane do konstruktora obiektu app (inicjalizacja struktur danych Qt). Obiekt hello reprezentuje etykietę (ang. label), czyli prostokątny wycinek ekranu z napisem. Metody resize() i show() pochodzą z klasy QWidget, która jest klasą bazową dla QLabel. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
81 Co zawiera biblioteka Qt Kompilowanie programów używających Qt Interfejs obsługi zdarzeń wykorzystywany przez Qt wykracza poza standard C++, więc programy używające Qt muszą być kompilowane w specjalny sposób. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
82 Co zawiera biblioteka Qt Kompilowanie programów używających Qt Interfejs obsługi zdarzeń wykorzystywany przez Qt wykracza poza standard C++, więc programy używające Qt muszą być kompilowane w specjalny sposób. 1 Tworzymy katalog o nazwie, która ma być nazwą pliku z programem. 2 W tym katalogu tworzymy (przynajmniej) plik o nazwie main.cpp zawierający funkcję main(). Kod źródłowy programu może być zapisany w wielu plikach (w tym katalogu). 3 W katalogu z plikami źródłowymi wykonujemy polecenia: $ qmake -project $ qmake $ make Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
83 Co zawiera biblioteka Qt Kompilowanie programów używających Qt (c. d.) qmake -project Tworzy plik z rozszerzeniem.pro zawierający informacje m. in. o tym z jakich plików składa się program. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
84 Co zawiera biblioteka Qt Kompilowanie programów używających Qt (c. d.) qmake -project Tworzy plik z rozszerzeniem.pro zawierający informacje m. in. o tym z jakich plików składa się program. qmake Przygotowuje plik Makefile dla polecenia make, zawierający instrukcje kompilacji programu. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
85 Co zawiera biblioteka Qt Kompilowanie programów używających Qt (c. d.) qmake -project Tworzy plik z rozszerzeniem.pro zawierający informacje m. in. o tym z jakich plików składa się program. qmake Przygotowuje plik Makefile dla polecenia make, zawierający instrukcje kompilacji programu. make Wykonuje instrukcje zapisane w pliku Makefile. Poza uruchamianiem kompilatora C++ z odpowiednimi opcjami wykonuje programy przekształcające niestandardowy kod związany Qt na standardowy kod w C++. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
86 Qt i tworzenie rysunków Przesłanianie metody paintevent() W celu zaprogramowania tworzenia rysunku z użyciem Qt najłatwiej jest utworzyć klasę pochodną w stosunku do QWidget, w której zostanie przesłonięta (ang. override) metoda paintevent(), np.: class Obrazek : public QWidget { public: Obrazek(QWidget *parent); protected: void paintevent(qpaintevent *event); }; Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
87 Qt i tworzenie rysunków Przesłanianie metody paintevent() W celu zaprogramowania tworzenia rysunku z użyciem Qt najłatwiej jest utworzyć klasę pochodną w stosunku do QWidget, w której zostanie przesłonięta (ang. override) metoda paintevent(), np.: class Obrazek : public QWidget { public: Obrazek(QWidget *parent); protected: void paintevent(qpaintevent *event); }; void paintevent(qpaintevent *event) Metoda wirtualna wywoływana wtedy, gdy obszar ekranu (lub piksmapy) przypisany obiektowi, w kontekście którego jest ona wywoływana, wymaga odświeżenia (ang. refresh). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
88 Qt i tworzenie rysunków Przesłanianie metody paintevent() W celu zaprogramowania tworzenia rysunku z użyciem Qt najłatwiej jest utworzyć klasę pochodną w stosunku do QWidget, w której zostanie przesłonięta (ang. override) metoda paintevent(), np.: class Obrazek : public QWidget { public: Obrazek(QWidget *parent); protected: void paintevent(qpaintevent *event); }; void paintevent(qpaintevent *event) Metoda wirtualna wywoływana wtedy, gdy obszar ekranu (lub piksmapy) przypisany obiektowi, w kontekście którego jest ona wywoływana, wymaga odświeżenia (ang. refresh). Jej zadaniem jest utworzenie rysunku, który powinien się tam znajdować. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
89 Treść metody paintevent() Qt i tworzenie rysunków Argument metody paintevent() określa rodzaj zdarzenia, które spowodowało konieczność odtworzenia rysunku oraz obszar, który ma być przemalowany. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
90 Treść metody paintevent() Qt i tworzenie rysunków Argument metody paintevent() określa rodzaj zdarzenia, które spowodowało konieczność odtworzenia rysunku oraz obszar, który ma być przemalowany. Treść metody paintevent() zwykle zawiera instrukcje rysowania z użyciem obiektu klasy QPainter, np.: void Obrazek::paintEvent(QPaintEvent *event) { (void)event; // Ignoruj argument (blokuje ostrzeżenie kompilatora). QPainter painter(this); } // Narysuj prostokąt o lewym górnym rogu w punkcie (10, 10) // oraz szerokości 200 pikseli i wysokości 100 pikseli. painter.drawrect(10, 10, 200, 100); Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
91 Treść metody paintevent() Qt i tworzenie rysunków Argument metody paintevent() określa rodzaj zdarzenia, które spowodowało konieczność odtworzenia rysunku oraz obszar, który ma być przemalowany. Treść metody paintevent() zwykle zawiera instrukcje rysowania z użyciem obiektu klasy QPainter, np.: void Obrazek::paintEvent(QPaintEvent *event) { (void)event; // Ignoruj argument (blokuje ostrzeżenie kompilatora). QPainter painter(this); } // Narysuj prostokąt o lewym górnym rogu w punkcie (10, 10) // oraz szerokości 200 pikseli i wysokości 100 pikseli. painter.drawrect(10, 10, 200, 100); Rysowanie polega na wywoływaniu metod dla obiektów klasy QPainter. Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
92 Konstruktory podklas QWidget Qt i tworzenie rysunków Konstruktor klasy pochodnej w stosunku do QWidget powinien przyjmować przynajmniej jeden argument będący wskaźnikiem do obiektu klasy QWidget, zawierającym adres obiektu nadrzędnego (ang. parent). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
93 Konstruktory podklas QWidget Qt i tworzenie rysunków Konstruktor klasy pochodnej w stosunku do QWidget powinien przyjmować przynajmniej jeden argument będący wskaźnikiem do obiektu klasy QWidget, zawierającym adres obiektu nadrzędnego (ang. parent). Wartość tego wskaźnika powinna być używana jako argument wywołania konstruktora z klasy QWidget, np.: Obrazek::Obrazek(QWidget *parent) : QWidget(parent) { resize(300, 200); // Rozmiary zajmowanego obszaru (długość, wysokość). } Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
94 Konstruktory podklas QWidget Qt i tworzenie rysunków Konstruktor klasy pochodnej w stosunku do QWidget powinien przyjmować przynajmniej jeden argument będący wskaźnikiem do obiektu klasy QWidget, zawierającym adres obiektu nadrzędnego (ang. parent). Wartość tego wskaźnika powinna być używana jako argument wywołania konstruktora z klasy QWidget, np.: Obrazek::Obrazek(QWidget *parent) : QWidget(parent) { resize(300, 200); // Rozmiary zajmowanego obszaru (długość, wysokość). } Wskaźnik ten może mieć domyślną (ang. default) wartość NULL, np.: class Obrazek : public QWidget { public: Obrazek(QWidget *parent = NULL);... // Pola i metody. }; Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
95 Sygnały i sloty Sygnalizacja zdarzeń przez obiekty Jeżeli w obrębie widżetu ma miejsce zdarzenie (np. użytkownik kliknął myszą na grafikę reprezentującą przycisk ), to (w większości przypadków) powinno być ono zasygnalizowane innym obiektom (np. wykonującym działanie, które ma następować po naciśnięciu tego przycisku). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
96 Sygnały i sloty Sygnalizacja zdarzeń przez obiekty Jeżeli w obrębie widżetu ma miejsce zdarzenie (np. użytkownik kliknął myszą na grafikę reprezentującą przycisk ), to (w większości przypadków) powinno być ono zasygnalizowane innym obiektom (np. wykonującym działanie, które ma następować po naciśnięciu tego przycisku). Kod realizujący powiadamianie o zdarzeniu nie powinien zależeć od tego, które obiekty mają być powiadamiane (jeśli by tak było, to ten kod w ogólności nie mógłby być powtórnie wykorzystany). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
97 Sygnały i sloty Sygnalizacja zdarzeń przez obiekty Jeżeli w obrębie widżetu ma miejsce zdarzenie (np. użytkownik kliknął myszą na grafikę reprezentującą przycisk ), to (w większości przypadków) powinno być ono zasygnalizowane innym obiektom (np. wykonującym działanie, które ma następować po naciśnięciu tego przycisku). Kod realizujący powiadamianie o zdarzeniu nie powinien zależeć od tego, które obiekty mają być powiadamiane (jeśli by tak było, to ten kod w ogólności nie mógłby być powtórnie wykorzystany). Kod implementujący reakcje na zdarzenia nie powinien zależeć od tego, z jakiego obiektu sygnalizowane jest zdarzenie (z tej samej przyczyny). Rafał J. Wysocki (rwys@fuw.edu.pl) Programowanie, część II 16 kwietnia / 60
Programowanie, część III
9 kwietnia 2010 Biblioteki i podsystemy graficzne Biblioteki graficzne (ang. graphics library) Są potrzebne, aby można było programować grafikę w C++, ponieważ (niestety) we współczesnych systemach komputerowych
Programowanie i struktury danych
Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne
1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.
1. Pierwszy program // mój pierwszy program w C++ #include using namespace std; cout
Część 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Język C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
I - Microsoft Visual Studio C++
I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i
// Potrzebne do memset oraz memcpy, czyli kopiowania bloków
ZAWARTOŚCI 3 PLIKOW W WORDZIE: MAIN.CPP: #include #include #include pamięci // Potrzebne do memset oraz memcpy, czyli kopiowania bloków #include "Rysowanie_BMP.h" using
Podstawy programowaniu. Wykład: 3. Budowa programu Operacje we/wy Instrukcje wyboru. dr Artur Bartoszewski - Podstawy programowania, sem.
programowaniu Wykład: 3 Budowa programu Operacje we/wy Instrukcje wyboru 1 Podstawowe pojęcia Środowisko programistyczne Kod źródłowy - program napisany w języku takim jak Pascal lub C++,czyli w języku
2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne
Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie
Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++
Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 10 Kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard
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.
Języki C i C++ Wykład: 1 Wstęp Budowa programu Operacje we/wy Instrukcje wyboru 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD Podstawowe pojęcia Środowisko programistyczne Kod źródłowy - program
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Przestrzenie nazw Standardowa biblioteka szablonów
Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33
Programowanie w C++ Wykład 8 Katarzyna Grzelak 15 kwietnia 2019 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec
PROE wykład 3 klasa string, przeciążanie funkcji, operatory dr inż. Jacek Naruniec Przypomnienie z ostatnich wykładów Konstruktory/destruktory i kolejność ich wywołania w złożonej klasie. Referencja Obiekty
Zaawansowane programowanie w C++
Zaawansowane programowanie w C++ Micha l Tanaś, PhD Adam Mickiewicz University, Faculty of Physics http://www.amu.edu.pl/~mtanas Michal.Tanas@amu.edu.pl Wykonanie klasycznego programu System operacyjny
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Programowanie w środowiskach RAD Qt i C++
Programowanie w środowiskach RAD Qt i C++ Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wprowadzenie do programowania w języku C++ z wykorzystaniem biblioteki Qt Qt i QtCreator Aktualnie
Operacje wejścia/wyjścia (odsłona druga) - pliki
Operacje wejścia/wyjścia (odsłona druga) - pliki Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały
Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.
Języki C i C++ to bardzo uniwersalne platformy programistyczne o ogromnych możliwościach. Wykorzystywane są do tworzenia systemów operacyjnych i oprogramowania użytkowego. Dzięki niskiemu poziomowi abstrakcji
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 9 Katarzyna Grzelak 14 maja 2018 K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe plus
Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Standardowa biblioteka szablonów (Standard Template
Język C++ Różnice między C a C++
Język C++ Różnice między C a C++ Plan wykładu C a C++ Różnice ogólne Typy Deklaracje zmiennych C++ jako rozszerzenie C Domyślne argumenty funkcji Przeciążanie funkcji Referencje Dynamiczny przydział pamięci
STL: Lekcja 1&2. Filozofia STL
STL: Lekcja 1&2 Tematy: Filozofia STL Po co nam STL? Podstawowa zawartość STL Co warto znać zanim zaczniemy pracę z STL?: wskaźniki Praca na tekstach: klasa String Vector: nowy wymiar standardowych tablic.
Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt
Implementacja aplikacji sieciowych z wykorzystaniem środowiska Qt 1. Wprowadzenie Wymagania wstępne: wykonanie ćwiczeń Adresacja IP oraz Implementacja aplikacji sieciowych z wykorzystaniem interfejsu gniazd
Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43
Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Programowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Praktyka programowania projekt
Praktyka programowania projekt Zadanie projektowe nr. 2 Gra PacMan K. M. Ocetkiewicz, T Goluch 19 listopada 2012 Plan prezentacji Opis 2 zadania projektowego Plan prezentacji Opis 2 zadania projektowego
Operacje wejścia/wyjścia odsłona pierwsza
Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.
Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia
Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka
Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
TEMAT : KLASY DZIEDZICZENIE
TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą
Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz
Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz Zagadnienia 1. Delegaty wiązane, właściwości indeksowane 2. Delegaty niewiązane 3. Nowa wersja kalkulatora, delegaty
Zaawansowane programowanie w języku C++ Biblioteka standardowa
Zaawansowane programowanie w języku C++ Biblioteka standardowa Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1
Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja
Podstawy programowania skrót z wykładów:
Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace
Qt - podstawowe cechy
Qt - podstawowe cechy Bogdan Kreczmer ZPCiR ICT PWR pokój 307 budynek C3 kreczmer@ict.pwr.wroc.pl Copyright c 2003 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania
Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.
Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python. Pliki z rozwiązaniami projektu (wszystkie polecenia
Programowanie na poziomie sprzętu. Programowanie w Windows API
Programowanie w Windows API Windows API Windows Application Programming Interface (API) to zestaw funkcji systemu operacyjnego Windows, które umożliwiają aplikacjom korzystanie z wszystkich usług systemu.
Programowanie w językach
Programowanie w językach wysokiego poziomu Obsługa plików za pomocą strumieni Elektronika i Telekomunikacja, semestr III rok akademicki 2013/2014 dr inż. Paweł Myszkowski Plan zajęć a) otwieranie i zamykanie
Programowanie w języku C++ Grażyna Koba
Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad
Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24
Programowanie w C++ Wykład 11 Katarzyna Grzelak 21 maja 2018 K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24 Strumienie Strumień bajtów płynacy od źródła do ujścia: 1 standardowe strumienie wejściowe
Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe
Wstęp do programowania obiektowego Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe 1 PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI W C++ 2 W C++
Programowanie - wykład 4
Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include
Szablony funkcji i klas (templates)
Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp
Dziedziczenie & W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.
Dziedziczenie 27.04.2016 & 04.05.2016 W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt class A{ private: int x, y; public: void setvaluex(); void setvaluey();
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Popularne biblioteki C++
Popularne biblioteki C++ Biblioteka standardowa 1. Biblioteki odziedziczone z C (assert.h) (ctype.h) (errno.h) (fenv.h) (float.h) (inttypes.h)
Schematy blokowe. Algorytmy Marek Pudełko
Schematy blokowe Algorytmy Marek Pudełko Metody zapisu algorytmów Algorytmy można zapisywać w postaci słownej, listy kroków lub symbolicznej - używając metajęzyków. Metajęzyk to język bardzo ogólny - opisujący
Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this
Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE
Programowanie obiektowe
Programowanie obiektowe 10.04.2017 W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt Przykład wykorzystania obiektu Obiekt X jest instancją klasy Y Obiekt
Funkcja (podprogram) void
Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji
Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)
Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface) 1. Udostępnianie wszystkich prywatnych atrybutów do prezentacji, wprowadzenie standardu nazewnictwa plików nazwy plików
Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1
Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem
Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 7 Katarzyna Grzelak 23 kwietnia 2018 K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40 Standard Template Library (STL) K.Grzelak (Wykład 7) Programowanie w C++ 2 / 40 C++ Templates
Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki
Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:
Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32
Programowanie w C++ Wykład 12 Katarzyna Grzelak 20 maja 2019 K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32 Klasy - powtórzenie Klasy typy definiowane przez użytkownika Klasy zawieraja dane składowe
Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 1 Podstawy programowania dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Ramowy program warsztatów 1. Pierwsze: Podstawy programowania 2. Drugie:
Wykład 9 2014-06-20 09:37 PP2_W9
Wykład 9 Przykłady programów z wykorzystaniem klas - przykład funkcji operatorowych - obiektowa implementacja listy jednokierunkowej kopiowanie obiektów - klasa "latający napis" Pozycjonowanie w plikach
Języki i metodyka programowania. Wprowadzenie do języka C
Literatura: Brian W. Kernighan, Dennis M. Ritchie Język Ansi C, Wydawnictwa Naukowo - Techniczne, 2007 http://cm.bell-labs.com/cm/cs/cbook/index.html Scott E. Gimpel, Clovis L. Tondo Język Ansi C. Ćwiczenia
Wykład 2 Składnia języka C# (cz. 1)
Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu
Wykład 5 Okna MDI i SDI, dziedziczenie
Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie
Laboratorium 1 - Programowanie proceduralne i obiektowe
Laboratorium 1 - Programowanie proceduralne i obiektowe mgr inż. Kajetan Kurus 4 marca 2014 1 Podstawy teoretyczne 1. Programowanie proceduralne (powtórzenie z poprzedniego semestru) (a) Czym się charakteryzuje?
Rys. 1. Główne okno programu QT Creator. Na rysunku 2 oznaczone zostały cztery przyciski, odpowiadają kolejno następującym funkcjom:
1. QT creator, pierwsze kroki. Qt Creator wieloplatformowe środowisko programistyczne dla języków C++, JavaScript oraz QML, będące częścią SDK dla biblioteki Qt. Zawiera w sobie graficzny interfejs dla
utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,
Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz
Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia
Materiały Operacje na plikach Informatyka Operacje wejścia-wyjścia w C/C++: Podejście proceduralne Podejście obiektowe Standardowe strumienie wejścia i wyjścia stdin - strumień wejściowy (klawiatura) cin
Utworzenie pliku. Dowiesz się:
Dowiesz się: 1. Jak rozpocząć pisanie programu 2. Jak wygląda szkielet programu, co to są biblioteki i funkcja main() 3. Jak wyświetlić ciąg znaków w programie 4. Jak uruchamiać (kompilować) napisany program
Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń
System komputerowy. System komputerowy
System komputerowy System komputerowy System komputerowy układ współdziałających ze sobą (według pewnych zasad) dwóch składowych: sprzętu komputerowego (hardware) oraz oprogramowania (software) po to,
Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy.
Wejście-wyjście Nie jest elementem języka C++ Niezbyt istotne dla użytkownika, ważne dla języka: jest mocny, skoro da się w nim wyrazić nowe pojęcia; łatwiej przenieść go na nową platformę jest mniejszy.
Instrukcja laboratoryjna cz.3
Języki programowania na platformie.net cz.2 2015/16 Instrukcja laboratoryjna cz.3 Język C++/CLI Prowadzący: Tomasz Goluch Wersja: 2.0 I. Utworzenie projektu C++/CLI z interfejsem graficznym WPF 1 Cel:
Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40
Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne
Oprogramowanie i wykorzystanie stacji roboczych. Wykład 4
Wykład 4 p. 1/1 Oprogramowanie i wykorzystanie stacji roboczych Wykład 4 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Obsługa sieci Wykład
Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski
Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski dr Dariusz Wardowski, Instytut Matematyki i Informatyki PWSZ w Płocku 1 O mnie prowadzący wykład i laboratoria: Dariusz Wardowski pokój: 102
Pliki wykład 2. Dorota Pylak
Pliki wykład 2 Dorota Pylak Struktura programu działającego na plikach 1) Dyrektywa preprocesora #include //zapewnia dostęp do strumieni ifstream i ofstream 2) deklaracja zmiennej (strumienia)
Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup
Baltie 3 Podręcznik do nauki programowania dla klas I III gimnazjum Tadeusz Sołtys, Bohumír Soukup Czytanie klawisza lub przycisku myszy Czytaj klawisz lub przycisk myszy - czekaj na naciśnięcie Polecenie
Programowanie w języku Python. Grażyna Koba
Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i
UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.
UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami
Qt hierarchia elementów graficznych
Qt hierarchia elementów graficznych Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan Kreczmer Niniejszy
STL Standardt Template Library (wprowadzenie)
STL Standardt Template Library (wprowadzenie) Biblioteka standardowych szablonów na dzień dzisiejszy stanowi jedną z najpotężniejszych możliwości języka C++ Zawiera szablony klas ogólnego przeznaczenia
C++ wprowadzanie zmiennych
C++ wprowadzanie zmiennych Każda zmienna musi być zadeklarowana, należy określić jej nazwę (identyfikator) oraz typ. Opis_typu lista zmiennych Dla każdej zmiennej rezerwowany jest fragment pamięci o określonym
Dodanie nowej formy do projektu polega na:
7 Tworzenie formy Forma jest podstawowym elementem dla tworzenia interfejsu użytkownika aplikacji systemu Windows. Umożliwia uruchomienie aplikacji, oraz komunikację z użytkownikiem aplikacji. W trakcie
Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD
Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak
- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy
Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy - Narzędzie Windows Forms - Przykładowe aplikacje 1 Narzędzia Windows Form Windows Form jest narzędziem do tworzenia aplikacji dla
Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest
Qt sygnały i designer
Qt sygnały i designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan
C++ - [3-5] Pliki i strumienie w C++
Slajd 1 z 13 C++ - [3-5] Pliki i strumienie w C++ Nysa 2004-2013. Autor: Wojciech Galiński. wersja dnia 19 maja 2013 r. Slajd 2 z 13 Klasy i obiekty do obsługi plików Aby korzystać z obiektów do obsługi
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;
14.3. Podstawy obsługi X Window 14.3. Podstawy obsługi X Window W przeciwieństwie do systemów Windows system Linux nie jest systemem graficznym. W systemach Windows z rodziny NT powłokę systemową stanowi
Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.
Instrukcja laboratoryjna nr 2 Programowanie w języku C 2 (C++ poziom zaawansowany) Kontenery i iteratory. Wykorzystanie kontenerów w praktyce. dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż.
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 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Programowanie Obiektowe i C++
Programowanie Obiektowe i C++ Marcin Benke Instytut Informatyki UW 13.11.2006 Marcin Benke (IIUW) Programowanie Obiektowe i C++ 13.11.2006 157 / 201 Wejście-wyjście Nie jest elementem języka C++ Niezbyt
ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje
Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych
Rysowanie punktów na powierzchni graficznej
Rysowanie punktów na powierzchni graficznej Tworzenie biblioteki rozpoczniemy od podstawowej funkcji graficznej gfxplot() - rysowania pojedynczego punktu na zadanych współrzędnych i o zadanym kolorze RGB.
Wprowadzenie. Programowanie Obiektowe Mateusz Cicheński
Wprowadzenie Programowanie Obiektowe Mateusz Cicheński Paradygmaty programowania C++ Krótki przykład Kompilacja i linkowanie Makefile Przydatne flagi kompilatora Zaliczenie przedmiotu Harmonogram roku
Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.
Program 7 Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku. #include #include using namespace std; int main()
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie