PODSTAWY PROGRAMOWANIA

Wielkość: px
Rozpocząć pokaz od strony:

Download "PODSTAWY PROGRAMOWANIA"

Transkrypt

1 PODSTAWY PROGRAMOWANIA Andrzej Marciniak Prezentacja multimedialna przygotowana za pomocą systemu Corel Presentations X3 Copyright by Andrzej Marciniak PP-14(1 z 76)

2 Na poprzednim wykładzie... system pomocy dla programu okienkowego wyświetlanie wskazówek dołączanie plików pomocy i ich obsługa w języku Delphi przygotowanie wersji dystrybucyjnej programu program InstallShield Express plik AUTORUN.INF tworzenie komponentów VCL i ActiveX oraz ich wykorzystanie konstrukcja komponentu VCL testowanie komponentu VCL konstrukcja komponentu ActiveX PP-14(2 z 76)

3 Na tym wykładzie... wielozadaniowość w środowisku Windows programowanie sterowane zdarzeniami wysyłanie wiadomości do okienek (funkcje PostMessage i SendMessage) sprawdzanie obecności poprzedniego egzemplarza programu wielowątkowość pojęcie procesu i wątku zmienne wątkowe klasa TThread priorytety wątków synchronizacja wątków PP-14(3 z 76)

4 Wielozadaniowość... Programowanie sterowane zdarzeniami Środowisko Windows w wersji 32- i 64-bitowej pozwala na jednoczesne uruchamianie wielu programów oraz aktywację wielu wątków dla jednego programu. Podstawowa koncepcja programowania sterowanego zdarzeniami polega na tym, że przebieg programu determinują zdarzenia. Program spędza większość czasu oczekując na te zdarzenia i posiada kod na nie reagujący. Zdarzenia są uszeregowane każde zdarzenie jest obsługiwane dopiero po zakończeniu obsługi poprzedniego. Zdarzenia są w środowisku Windows identyfikowane przez wiadomości. PP-14(4 z 76)

5 Wielozadaniowość... Programowanie sterowane zdarzeniami W 16-bitowym środowisku Windows 3.1 nie było możliwości przerwania procedury obsługi wiadomości. W obecnych wersjach środowiska Windows po upływie ustalonego czasu system przekazuje wiadomość do obsługi do kolejnej aplikacji na liście. Dopiero, gdy skończą działanie wszystkie aplikacje, wznawiana jest pierwsza z nich. Nazywa się to wielozadaniowością z wywłaszczaniem. Po obsłużeniu wiadomości program staje się nieaktywny do chwili otrzymania innej wiadomości (chyba że stosuje się wielowątkowość będzie dalej). PP-14(5 z 76)

6 Wielozadaniowość... Programowanie sterowane zdarzeniami Dla programu uruchomionego w środowisku Windows zdarzenia wejściowe (spowodowane przez myszkę lub klawiaturę) generują jedynie niewielką część całkowitego przepływu wiadomości większość komunikatów to wewnętrzne wiadomości środowiska Windows i wiadomości wymieniane pomiędzy różnymi elementami sterującymi i oknami. PP-14(6 z 76)

7 Wielozadaniowość... Wysyłanie wiadomości do okien W środowisku Windows są dwa różne sposoby wysyłania wiadomości do okien: za pomocą funkcji API PostMessage służy do umieszczenia wiadomości w kolejce wiadomości programu; wiadomość zostanie obsłużona tylko wówczas, gdy dany program przejmie sterowanie od systemu i tylko po obsłużeniu wcześniejszych wiadomości (jest to wywołanie asynchroniczne, gdyż nie wiadomo, kiedy wiadomość będzie rzeczywiście odebrana), PP-14(7 z 76)

8 Wielozadaniowość... Wysyłanie wiadomości do okien W środowisku Windows są dwa różne sposoby wysyłania wiadomości do okien: za pomocą funkcji API SendMessage służy do natychmiastowego wykonania kodu procedury obsługi wiadomości; funkcja ta omija kolejkę wiadomości programu i wysyła wiadomość bezpośrednio do docelowego okna lub elementu sterującego (jest to wywołanie synchroniczne). Różnica pomiędzy tymi sposobami wysyłania wiadomości przypomina różnicę pomiędzy wysłaniem pocztą listu, który dotrze do miejsca przeznaczenia wcześniej lub później, a wysłaniem faksu, który dociera natychmiast do odbiorcy ṖP-14(8 z 76)

9 Wielozadaniowość... Wysyłanie wiadomości do okien Wywołanie funkcji PostMessage ma postać PostMessage (identyfikator, wiadomość, WParam, LParam) gdzie: identyfikator (typu HWND identycznego z typami THandle i LongWord) identyfikator okna nadawany przez środowisko Windows (można go otrzymać za pomocą funkcji FindWindow będzie dalej), wiadomość (typu UINT identycznego z typem LongWord) określa przesyłaną wiadomość (najczęściej za pomocą stałej o przedrostku wm_), WParam i LParam (typów odpowiednio WPARAM i LPARAM identycznych z typem LongInt) określają dodatkowe informacje związane z daną wiadomością. PP-14(9 z 76)

10 Wielozadaniowość... Wysyłanie wiadomości do okien Funkcję SendMessage wywołuje się z takimi samymi parametrami: SendMessage (identyfikator, wiadomość, WParam, LParam) Przypomnienie: Wiadomości środowiska Windows są identyfikowane za pomocą stałych, a przesyłane w rekordach o ogólnym, predefiniowanym typie TMessage (jest on zdefiniowany w module Vinapi.Messages). PP-14(10 z 76)

11 Wielozadaniowość... Obsługa wiadomości (przypomnienie) Metoda służąca do obsługi wiadomości powinna być zadeklarowana w sekcji private definicji typu klasowego i musi być metodą-procedurą. Deklaracja takiej metody zawiera dyrektywę języka message, po której występuje stała całkowita określająca wiadomość (na ogół stałą tę określa się za pomocą identyfikatora, którego nazwa kojarzy się z obsługiwaną wiadomością). Metody obsługujące wiadomości nie mogą być pokrywane przy użyciu dyrektywy języka override. Ewentualne pokrycie takiej metody w typie potomnym jest jednoznacznie określone przez stałą podaną po dyrektywie message. PP-14(11 z 76)

12 Wielozadaniowość... Obsługa wiadomości (przypomnienie) Oprócz funkcji PostMessage i SendMessage do wywołania metody obsługi wiadomości można także zastosować metodę-procedurę Dispatch (zdefiniowaną w typie TObject). Wywołanie metody Dispatch ma postać Dispatch (wiadomość) gdzie wiadomość oznacza rekord (dokładniej: zmienną nieokreślonego typu), którego pierwsze pole (cztery bajty) powinno być typu Cardinal. Wartość tego pola identyfikuje wysyłaną wiadomość. Pozostałe pola rekordu mogą zawierać informacje specyficzne dla przetwarzanej wiadomości. PP-14(12 z 76)

13 Wielozadaniowość... Obsługa wiadomości (przypomnienie) Wywołanie metody Dispatch powoduje wywołanie najbliższej metody obsługującej daną wiadomość. Metoda ta jest poszukiwana najpierw w klasie, w której nastąpiło wywołanie metody Dispatch, następnie w klasie bezpośrednio nadrzędnej, po czym w kolejnej klasie poprzedniej (przodku) itd., aż do osiągnięcia klasy TObject. Jeśli po drodze nie napotkano właściwej metody, to nastąpi wywołanie standardowej metody obsługi DefaultHandler zdefiniowanej w klasie TObject. PP-14(13 z 76)

14 Sprawdzanie obecności poprzedniego egzemplarza programu Każdy program może być wykonany w więcej niż jednym egzemplarzu. Aby zezwolić na co najwyżej jeden egzemplarz, program musi mieć możliwość sprawdzenia, czy poprzedni egzemplarz nie jest już uruchomiony. Poznamy trzy sposoby rozwiązania tego problemu: zastosowanie funkcji API FindWindow, użycie muteksu, przeszukanie listy okien. PP-14(14 z 76)

15 Sprawdzanie obecności poprzedniego egzemplarza programu Zastosowanie funkcji FindWindow Wartością funkcji FindWindow (z modułu Winapi.Windows) jest identyfikator okna (ang. handle) nadawany przez środowisko Windows lub 0, jeśli okno nie zostanie znalezione. Identyfikator ten jest typu HWND: type HWND = type LongWord; Typ ten jest zgodny m. in. z typem THandle (który zaleca się stosować). PP-14(15 z 76)

16 Sprawdzanie obecności poprzedniego egzemplarza programu Zastosowanie funkcji FindWindow Wywołanie funkcji ma postać FindWindow (nazwa-klasy, nazwa-okna) Oba parametry są typu PChar. Wartość nil drugiego parametru oznacza, że nazwa okna może być dowolna. Główny kod (kod programu) powinien być napisany tak, by był wykonywany tylko wówczas, gdy wartością funkcji FindWindow jest 0: PP-14(16 z 76)

17 Sprawdzanie obecności poprzedniego egzemplarza programu Zastosowanie funkcji FindWindow... var ident : THandle; begin ident:=findwindow( TForm1, nil); if ident=0 end. wykonanie, gdy okna nie odnaleziono then begin Application.Initialize; Application.CreateForm(TForm1, Form1);... Application.Run end else SetForegroundWindow (ident) uaktywnienie poprzedniego egzemplarza programu PP-14(17 z 76)

18 Sprawdzanie obecności poprzedniego egzemplarza programu Zastosowanie funkcji FindWindow Technika ta działa tylko wówczas, gdy główne okno poprzedniego egzemplarza programu nie zostało zminimalizowane. Gdy główne okno jest zminimalizowane, to jest ukryte i kod aktywujący nie działa. Program nie uruchomi się także w przypadku, gdy uruchomiono inny program, którego aktualnie aktywne (może jedyne) okno ma taką samą nazwę (Form1 w rozważanym przykładzie). PP-14(18 z 76)

19 Sprawdzanie obecności poprzedniego egzemplarza programu Użycie muteksu muteks obiekt wzajemnie wykluczający się (w środowisku Windows może istnieć tylko jeden muteks o danej nazwie) Po utworzeniu przez program obiektu muteksu o danej nazwie lub sprawdzeniu, że taki obiekt już istnieje (za pomocą funkcji CreateMutex), program może sprawdzić, czy obiekt ten jest już w posiadaniu innego programu. W tym celu wywołuje się funkcję WaitForSingleObject. PP-14(19 z 76)

20 Sprawdzanie obecności poprzedniego egzemplarza programu Użycie muteksu Wywołanie funkcji CreateMutex ma postać CreateMutex (atrybuty-bezpieczeństwa, czy-właściciel, nazwa-muteksu) Pierwszy parametr określa, czy identyfikator muteksu może być dziedziczony przez procesy potomne (jeśli jest on równy nil, to identyfikator ten nie może być dziedziczony taką wartość należy przyjąć w rozważanym problemie). PP-14(20 z 76)

21 Sprawdzanie obecności poprzedniego egzemplarza programu Użycie muteksu Wywołanie funkcji CreateMutex ma postać CreateMutex (atrybuty-bezpieczeństwa, czy-właściciel, nazwa-muteksu) Wartość True dugiego parametru oznacza, że program (proces) wywołujący funkcję staje się właścicielem muteksu (w naszym problemie parametr ten powinien mieć wartość False). Trzeci parametr (typu PChar) określa nazwę muteksu. Wartość funkcji (typu THandle) jest identyfikatorem muteksu (nadawanym przez środowisko Windows). PP-14(21 z 76)

22 Sprawdzanie obecności poprzedniego egzemplarza programu Użycie muteksu Działanie funkcji WaitForSingleObject* ) jest następujące: jeśli muteks nie ma właściciela, funkcja powoduje, że jego właścicielem staje się program wywołujący (tę funkcję). Jeśli muteks ma już właściciela, program czeka aż upłynie czas podany w wywołaniu funkcji, a następnie funkcja przekazuje (jako wartość) kod błędu. * ) w stosunku do muteksu, bo w ogólności funkcja może działać na różnych obiektach PP-14(22 z 76)

23 Sprawdzanie obecności poprzedniego egzemplarza programu Użycie muteksu Wywołanie funkcji WaitForSingleObject : WaitForSingleObject (identyfikator-obiektu, czas-oczekiwania) Jeśli wartością drugiego parametru jest 0, funkcja testuje stan podanego obiektu i natychmiast podaje wynik (co jest pożądane w rozważanym problemie). Wartość funkcji określa zdarzenie, które spowodowało zakończenie testowania. Do zbadania tej wartości wykorzystuje się stałe o przedrostku wait_ (zob. system pomocy). W naszym problemie należy zbadać, czy wartość funkcji jest różna od wait_timeout (w przypadku muteksu stała ta oznacza, że ma on już właściciela). PP-14(23 z 76)

24 Sprawdzanie obecności poprzedniego egzemplarza programu... var muteks : THandle; begin Użycie muteksu utworzenie muteksu i (lub) przypisanie jego identyfikatora zmiennej muteks muteks:=createmutex(nil, False, MojMuteks ); if WaitForSingleObject(muteks, 0)<>wait_TimeOut sprawdzenie, czy muteks jest then begin w posiadaniu innego programu Application.Initialize; Application.CreateForm(TForm1, Form1);... Application.Run end end. PP-14(24 z 76)

25 Sprawdzanie obecności poprzedniego egzemplarza programu Użycie muteksu Jeżeli dwa razy uruchomimy program z podanym kodem, zobaczymy, że tworzy on nową tymczasową kopię programu (na pasku zadań pojawi się piktogram), a następnie po upływie czasu podanego w wywołaniu funkcji WaitForSingleObject usuwa ją. Nie wiadomo jednak w jaki sposób włączyć istniejący egzemplarz programu. Użycie muteksu eliminuje problem innego programu, którego aktualnie aktywne (może jedyne) okno będzie miało taką samą nazwę, jak okno programu z muteksem. PP-14(25 z 76)

26 Sprawdzanie obecności poprzedniego egzemplarza programu Przeszukiwanie listy okien Aby wyszukać określone okno główne w środowisku Windows można użyć funkcji API EnumWindows. Funkcja ta, zwana funkcją wyliczeniową, wymaga podania jako parametru wskaźnika do funkcji (zwanej funkcją zwrotną lub funkcją powtórnego wywołania ang. callback function): EnumWindows (wskaźnik-do-funkcji-zwrotnej, parametr) gdzie parametr oznacza 32-bitowa wartość przekazywana do funkcji zwrotnej (w naszym problemie wartość ta jest nieistotna przyjmujemy 0). PP-14(26 z 76)

27 Sprawdzanie obecności poprzedniego egzemplarza programu Przeszukiwanie listy okien Koncepcja polega na tym, żeby funkcję zwrotną wywołać dla każdego elementu na liście głównych okien środowiska Windows) aż do końca listy lub przyjęcia przez tę funkcję wartości False, co zakończy także działanie funkcji wyliczeniowej EnumWindows. Dla naszych celów funkcja zwrotna może mieć następującą postać (nielokalna zmienna ModuleName zawiera nazwę zbioru wykonywalnego bieżącego programu, a FoundWnd identyfikator odszukanego okna): PP-14(27 z 76)

28 Sprawdzanie obecności poprzedniego egzemplarza programu Przeszukiwanie listy okien function EnumWndProc (hwnd : THandle; Param : Cardinal) : Bool; stdcall; var ClassName, WinModuleName : string; WinInstance : THandle; begin Result:=True; SetLength (ClassName, 100); GetClassName (hwnd, PChar(ClassName), Length(ClassName)); ClassName:=PChar(ClassName); if ClassName=TForm1.ClassName then begin pobranie nazwy klasy o identyfikatorze hwnd dopasowanie długości zakładamy, że główne okno nazywa się Form1 SetLength (WinModuleName, 200); PP-14(28 z 76)

29 Sprawdzanie obecności poprzedniego egzemplarza programu Przeszukiwanie listy okien WinInstance:=GetWindowLong (hwnd, GWL_HINSTANCE); uzyskanie identyfikatora egzemplarza programu GetModuleFileName (WinInstance, PChar(WinModuleName), Length(WinModuleName)); pobranie nazwy zbioru wykonywalnego dotyczącego danego egzemplarza programu WinModuleName:=PChar(WinModuleName); if WinModuleName=ModuleName then begin FoundWnd:=hwnd; end end {EnumWndProc}; Result:=False end porównanie nazw zbiorów wykonywalnych zakończenie wyliczania PP-14(29 z 76)

30 Sprawdzanie obecności poprzedniego egzemplarza programu Przeszukiwanie listy okien Jeśli w podanej funkcji nazwa zbioru programowego głównego okna (WinModuleName) odpowiada nazwie bieżącego programu (ModuleName), możemy być pewni, że odszukaliśmy poprzedni egzemplarz tego samego programu. W takim przypadku należy spowodować uaktywnienie poprzedniego egzemplarza programu. Odpowiedni kod może mieć postać PP-14(30 z 76)

31 Sprawdzanie obecności poprzedniego egzemplarza programu Przeszukiwanie listy okien... var hmutex, FoundWnd : THandle; ModuleName : string;... begin hmutex:=createmutex(nil, False, MyMutex2 ); if WaitForSingleObject(hMutex, 0)<>wait_TimeOut then begin Application.Initialize; Application.CreateForm(TForm1, Form1);... Application.Run end PP-14(31 z 76)

32 end. Sprawdzanie obecności poprzedniego egzemplarza programu Przeszukiwanie listy okien else begin SetLength (ModuleName, 200); GetModuleFileName (HInstance, PChar(ModuleName), Length(ModuleName)); pobranie nazwy zbioru wykonywalnego bieżącego programu ModuleName:=PChar(ModuleName); // dopasuj dlugosc end EnumWindows 0); odszukanie głównego okna poprzedniego egzemplarza programu if FoundWnd<>0 then SetForegroundWindow (FoundWnd) PP-14(32 z 76)

33 Sprawdzanie obecności poprzedniego egzemplarza programu Przeszukiwanie listy okien Wywołanie funkcji SetForegroundWindow nie powoduje uaktywnienia głównego okna poprzedniego egzemplarza programu, gdy zostało ono zminimalizowane (zob. pierwszy przypadek). Problem ten można rozwiązać przez spowodowanie, by poprzedni egzemplarz przywrócił swoje główne okno wskutek wysłania odpowiedniej wiadomości z bieżącego egzemplarza. PP-14(33 z 76)

34 Sprawdzanie obecności poprzedniego egzemplarza programu Przeszukiwanie listy okien Instrukcję if FoundWnd<>0 then SetForegroundWindow (FoundWnd) wystarczy zastąpić przez if FoundWnd<>0 then begin if IsIconic(FoundWnd) then PostMessage (FoundWnd,wm_User, 0, 0); SetForegroundWindow (FoundWnd) end PP-14(34 z 76)

35 Sprawdzanie obecności poprzedniego egzemplarza programu Przeszukiwanie listy okien i w kodzie okna głównego dodać metodę obsługi tej wiadomości: type TForm1 = class(tform)... public procedure WMUser (var msg : TMessage); message wm_user; end;... procedure TForm1.WMUser (var msg : TMessage); begin Application.Restore end; PP-14(35 z 76)

36 ... prezentacja... PP-14(36 z 76)

37 Wielowątkowość Pojęcie procesu i wątku Wykonanie programu, który ma swój kod i dane, zajmuje własną, wirtualną przestrzeń adresową oraz korzysta z zasobów systemowych, nazywa się procesem. Na proces może składać się jeden lub kilka wątków. Wątek jest podstawową jednostką, której system operacyjny przydziela czas procesora. Jest on niezależną ścieżką wykonywania części kodu programu wewnątrz procesu. PP-14(37 z 76)

38 Wielowątkowość Pojęcie procesu i wątku Wątek może wykonać dowolną część kodu programu, w tym część, która jest już wykonywana przez inny wątek. Wszystkie wątki programu wykorzystują tę samą wirtualną przestrzeń adresową, zmienne globalne i zasoby systemowe procesu. Oprócz tego każdy wątek posiada swoje własne rejestry, własny stos i własny mechanizm wejścia, w tym własną kolejkę wiadomości. PP-14(38 z 76)

39 Wady wielowątkowości: Wielowątkowość Pojęcie procesu i wątku powoduje, że program działa wolniej, chyba że jest kilka procesorów i system operacyjny może rozdzielić wątki między nimi, źle napisane programy wielowątkowe mogą działać wolniej w systemach wieloprocesorowych niż w systemie z jednym procesorem, gdyż synchronizacja wątków zużywa o wiele więcej zasobów w systemach wieloprocesorowych, programy wielowątkowe muszą synchronizować dostęp do wspólnych zasobów i pamięci, co powoduje, że jest je o wiele trudniej napisać. PP-14(39 z 76)

40 Zalety wielowątkowości: Wielowątkowość Pojęcie procesu i wątku można uruchomić wątek w tle, pozwalając użytkownikowi na obsługę programu, można spowodować, że jeden wątek będzie działał szybciej niż inne przez ustawienie jego priorytetu, można regulować dostęp różnych wątków do zasobów, przydzielać lokalną pamięć dla każdego wątku i uruchamiać wiele wątków tego samego typu. Operacja, którą warto umieścić w wątku drugoplanowym to taka, której wykonanie zajmuje procesorowi dużo czasu i jest dość odizolowana jeśli chodzi o dostęp do danych. PP-14(40 z 76)

41 Wielowątkowość Zmienne wątkowe W module System zdefiniowano funkcję BeginThread i procedurę EndThread, które dotyczą obsługi wątków. Zwykle funkcji tej i procedury nie używa się bezpośrednio, a zamiast tego korzysta się z klasy TThread określonej w module System.Classes. Z obsługą wątków są związane zmienne wątkowe, które deklaruje się następująco: threadvar sekwencja-deklaracji Deklaracja jakiejś zmiennej jako wątkowej oznacza, że jest ona zmienną lokalną w ramach wątku (wartości przypisane jej w wątku są tracone po zakończeniu wykonywania wątku). PP-14(41 z 76)

42 Wielowątkowość Klasa TThread Służy do kontrolowania wątków. Nie używa się jej bezpośrednio, gdyż jest to klasa z metodą abstrakcyjną Execute. Aby stosować wątki, zawsze tworzy się klasę potomną od TThread i wykorzystuje odpowiednie elementy tej klasy bazowej: # konstruktor Create o wywołaniu Create (zawieszenie) gdzie parametr jest typu Boolean decyduje o tym, czy uruchomić wątek natychmiast, czy też zawiesić go na później, PP-14(42 z 76)

43 Wielowątkowość Klasa TThread # bezparametrowe metody synchronizacji (publiczne) Resume Suspend Terminate WaitFor # własności Priority rozpoczęcie (procedura) zawieszenie (procedura) przerwanie (funkcja) oczekiwanie (funkcja) priorytet typu wyliczeniowego: type TThreadPriority = (tpidle, tplowest, tplower, tpnormal, tphigher, tphighest, tptimecritical); PP-14(43 z 76)

44 # własności (cd.) Suspended Terminated Handle ThreadID Wielowątkowość Klasa TThread zawieszenie (Boolean) przerwanie (Boolean) (tylko do odczytu) (tylko do odczytu) # metody chronione (sekcja protected) Execute metoda abstrakcyjna (musi być zdefiniowana w każdej klasie potomnej, gdyż zawiera główny kod wątku), PP-14(44 z 76)

45 Wielowątkowość # metody chronione (cd.) Klasa TThread Synchronize ma na celu uniknięcie jednoczesnego dostępu do komponentów VCL, a jej wywołanie ma postać Synchronize (metoda) gdzie parametr metoda jest metodą klasową (wykonywaną dla głównego wątku) PP-14(45 z 76)

46 Wielowątkowość Przykłady Przykład 1 (wykorzystanie metody Synchronize) Wątek służy do malowania kolorowych pikseli na formatce. W klasie wątku TPainterThread (klasa potomna klasy TThread) zdefiniowano metodę Execute (pokrywa ona metodę abstrakcyjną z klasy TThread) oraz metodę Paint, która umożliwia dostęp do obiektów VCL (dlatego jest ona wywoływana tylko z metody Synchronize). PP-14(46 z 76)

47 Wielowątkowość Przykłady Przykład 1 (wykorzystanie metody Synchronize) type TPainterThread = class (TThread) private X, Y : Integer; protected procedure Execute; override; procedure Paint; end; procedure TPainterThread.Paint; begin Form1.Canvas.Pixels[X,Y]:=clYellow end; PP-14(47 z 76)

48 Wielowątkowość Przykłady Przykład 1 (wykorzystanie metody Synchronize) procedure TPainterThread.Execute; begin Randomize; repeat X:=Random(Form1.ClientWidth); Y:=Random(Form1.ClientHeight); Synchronize (Paint) until Terminated end; PP-14(48 z 76)

49 Wielowątkowość Przykłady Przykład 1 (wykorzystanie metody Synchronize) Na formatce umieszczamy dwa przyciski: jeden uruchamiający wątek i drugi zatrzymujący wątek (oprogramowujemy zdarzenia OnClick tych przycisków). W metodzie obsługi zdarzenia OnClick pierwszego przycisku umieszczamy wywołanie konstruktora: PT:=TPainterThread.Create (False); pole prywatne w klasie opisującej formatkę powoduje natychmiastowe uruchomienie wątku PP-14(49 z 76)

50 Wielowątkowość Przykłady Przykład 1 (wykorzystanie metody Synchronize) W metodzie obsługi zdarzenia OnClick drugiego przycisku wywołujemy metodę Terminate: PT.Terminate; Można jeszcze dodać metodę obsługi myszki, np. aby po naciśnięciu jej klawisza wymazywane były piksele wokół punktu usytuowania kursora myszki. p r e z e n t a c j a... PP-14(50 z 76)

51 Wielowątkowość Przykłady Przykład 2 (synchronizacja za pomocą metod Lock i Unlock) Ten sam przykład, co poprzednio, ale z wykorzystaniem metod blokujących klasy TCanvas: Lock i Unlock. Za pomocą tych metod uzyskujemy dostęp do powierzchni formatki przez jej blokadę (metoda Synchronize jest wówczas niepotrzebna, co znacznie przyspiesza działanie kodu). Kod metody Execute będzie robił wszystko po zablokowaniu powierzchni formatki. PP-14(51 z 76)

52 Wielowątkowość Przykłady Przykład 2 (synchronizacja za pomocą metod Lock i Unlock) procedure TPainterThread.Execute; var X, Y : Integer; begin Randomize; repeat X:=Random(Form1.ClientWidth); Y:=Random(Form1.ClientHeight); with Form1.Canvas do begin Lock; try Pixels[X,Y]:=clBlue; finally Unlock end end until Terminated end; p r e z e n t a c j a... PP-14(52 z 76)

53 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) Program będzie wyświetlał piksele w czterech różnych kolorach (na ekranie będzie to widoczne jako wyświetlanie linii). Tworzymy nową wersję klasy TPainterThread oraz definiujemy konstruktor, którego zadaniem będzie zainicjowanie prywatnego pola Color i wywołanie konstruktora przodka z utworzeniem wątku w stanie zawieszenia: PP-14(53 z 76)

54 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) type TPainterThread = class (TThread) private Color : Integer; SuspendRequest : Boolean; protected procedure Execute; override; procedure DeleyedSuspend; public constructor Create (Col : TColor); end; PP-14(54 z 76)

55 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) constructor TPainterThread.Create (Col : TColor); begin Color:=Col; inherited Create (True) end; Metodę Execute napiszemy tak, by po kolei przechodziła przez wszystkie wiersze, ustawiając kolor każdego piksela. PP-14(55 z 76)

56 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) procedure TPainterThread.Execute; var X, Y, X1 : Integer; begin X:=0; Y:=0; repeat X1:=X+1; X:=X1 mod 250; Y:=Y+X1 div 250; Y:=Y mod Form1.ClientHeight; Form1.Canvas.Lock; PP-14(56 z 76)

57 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) try Form1.Canvas.Pixels[X,Y]:=Color; finally Form1.Canvas.Unlock end; if SuspendRequest then begin Suspend; SuspendRequest:=False end until Terminated end; znaczenie tej instrukcji wyjaśniono dalej PP-14(57 z 76)

58 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) Na formatce umieszczamy cztery komponenty CheckBox i cztery suwaki (komponenty TrackBar), za pomocą których będziemy ustalać priorytety wątków. Ponadto deklarujemy lokalną tablicę przechowującą cztery obiekty wątków: type TForm1 = class (TForm)... private PT : array [1..4] of TPainterThread; end; PP-14(58 z 76)

59 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) Tablica PT jest inicjowana w chwili tworzenia formatki (przez metodę obsługi zdarzenia OnCreate): procedure TForm1.FormCreate (Sender : TObject); begin PT[1]:=TPainterThread.Create (clred); PT[2]:=TPainterThread.Create (clblue); PT[3]:=TPainterThread.Create (clgreen); PT[4]:=TPainterThread.Create (clblack) end; PP-14(59 z 76)

60 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) Dotychczasowy kod tworzy cztery wątki jako zawieszone. Uruchamiane są one po zaznaczeniu odpowiedniego pola wyboru (komponentu CheckBox) i ponownie zawieszane po usunięciu zaznaczenia: procedure TForm1.CheckBoxClick (Sender : TObject); begin if (Sender as TCheckBox).Checked then PT[(Sender as TCheckBox).Tag].Resume else PT[(Sender as TCheckBox).Tag].DeleyedSuspend end; Aby nie pisać oddzielnych metod dla każdego komponentu CheckBox, własności Tag każdego z nich przypisano numer odpowiedniego wątku. PP-14(60 z 76)

61 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) Metoda DeleyedSuspend ustawia pole wątku SuspendRequest (typu Boolean) i wartość ta jest sprawdzana na końcu cyklu wewnątrz kodu wątku (metody Execute) zob. bliżej. procedure TForm1.RedClick (Sender : TObject); begin if (Sender as TCheckBox).Checked then PT[(Sender as TCheckBox).Tag].Resume else PT[(Sender as TCheckBox).Tag].DeleyedSuspend end; PP-14(61 z 76)

62 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) Metoda DeleyedSuspend ustawia pole wątku SuspendRequest (typu Boolean) i wartość ta jest sprawdzana na końcu cyklu wewnątrz kodu wątku (metody Execute) zob. bliżej: procedure TPainterThread.DeleyedSuspend; begin SuspendRequest:=True end; Zastosowana konstrukcja zapewnia, że metoda Suspend jest wywoływana tylko wtedy, gdy wątek nie blokuje tła formatki (w przypadku wywołania metody Suspend podczas takiej blokady zostałyby zatrzymane wszystkie wątki). PP-14(62 z 76)

63 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) Własności Tag używamy też w przypadku suwaków, które ustawiają aktualny priorytet wątków (dzięki temu wystarczy napisać jedną metodę obsługi zdarzenia OnChage): procedure TForm1.TrackBarChange (Sender : TObject); begin PT[(Sender as TTrackBar).Tag].Priority:= TThreadPriority((Sender as TTrackBar).Position) end; PP-14(63 z 76)

64 Wielowątkowość Przykłady Przykład 3 (priorytety wątków) W metodzie tej w celu ustawienia priorytetu wykonujemy konwersję aktualnego położenia suwaka (Position) na odpowiednią wartość typu wyliczeniowego TThreadPriority, a następnie wykorzystujemy otrzymaną wartość do ustawienia priorytetu właściwego wątku, zgodnie z własnością Tag. procedure TForm1.TrackBarChange (Sender : TObject); begin PT[(Sender as TTrackBar).Tag].Priority:= TThreadPriority((Sender as TTrackBar).Position) end; p r e z e n t a c j a... PP-14(64 z 76)

65 Wielowątkowość Przykłady Wiemy już, że istnieją dwa typowe rozwiązania synchronizacji wątku z resztą programu: użycie metody Synchronize oraz użycie metod Lock i Unlock, które posiadają niektóre komponenty VCL. Jeżeli wątek powinien czekać aż zakończy się inny wątek, może wywołać metodę WaitFor obiektu odpowiadającego wątkowi, który właśnie powinien się zakończyć. PP-14(65 z 76)

66 Wielowątkowość Przykłady Przykład 4 (oczekiwanie na wątek zastosowanie metody WaitFor) Zadaniem programu jest zliczenie liczby wystąpień czterech podanych znaków w tekście komponentu Memo. Znaki podaje się w polu wejściowym (komponent Edit). Każdy z czterech znaków jest szukany przez inny wątek utworzony przez wątek główny. Dodatkowo każdy wątek wyświetla wskaźnik postępu (komponent ProgressBar), który ilustruje rozmiar tekstu już przeszukanego. PP-14(66 z 76)

67 Wielowątkowość Przykłady Przykład 4 (oczekiwanie na wątek zastosowanie metody WaitFor) pole do wpisania poszukiwanych znaków przycisk rozpoczęcia procesu przycisk do wczytania tekstu (z dysku) wskaźniki postępu dla każdego znaku (każdy znak jest szukany przez inny wątek) pole Memo zawierające przeszukiwany tekst PP-14(67 z 76)

68 Wielowątkowość Przykłady Przykład 4 (oczekiwanie na wątek zastosowanie metody WaitFor) Główną klasą programu jest klasa TFindThread: type TFindThread = class (TThread) protected liczba przeczytanych znaków Progr : Integer; procedure UpdateProgress; procedure Execute; override; public wynik obliczeń Found : Integer; przechowanie LookFor : Char; poszukiwanego znaku Progress : TProgressBar; wskaźnik postępu end; PP-14(68 z 76)

69 Wielowątkowość Przykłady Przykład 4 (oczekiwanie na wątek zastosowanie metody WaitFor) Główna metoda wątku Execute: procedure TFindThread.Execute; var i, j : Integer; line : string; begin Found:=0; with Form1.Memo1 do for i:=0 to Lines.Count 1 do begin line:=lines[i]; for j:=1 to Length(line) do if line[j]=lookfor then Inc (Found); Progr:=i+1; Synchronize (UpdateProgress) end end; PP-14(69 z 76)

70 Wielowątkowość Przykłady Przykład 4 (oczekiwanie na wątek zastosowanie metody WaitFor) Cztery kopie wątku są aktywowane przez wątek główny obiekt klasy TMultiFind: type TMultiFind = class (TThread) protected Progr : Integer; procedure UpdateProgress; do wypisania wyników liczbowych procedure Execute; override; procedure Show; public LookFor, Output : string; Progresses : array [1..5] of TProgressBar; end; PP-14(70 z 76)

71 Wielowątkowość Przykłady Przykład 4 (oczekiwanie na wątek zastosowanie metody WaitFor) Metoda Execute tej klasy szuka znaków łańcucha LookFor używając czterech obiektów TFindThread: procedure TMultiFind.Execute; var finders : array [1..4] of TFindThread; i : Integer; begin for i:=1 to 4 do begin finders[i]:=tfindthread.create(true); utworzenie wątku finders[i].lookfor:=lookfor[i]; finders[i].progress:=progresses[i+1]; finders[i].resume rozpoczęcie wykonywania end; PP-14(71 z 76)

72 Wielowątkowość Przykłady Przykład 4 (oczekiwanie na wątek zastosowanie metody WaitFor) Metoda Execute tej klasy szuka znaków łańcucha LookFor używając czterech obiektów TFindThread: for i:=1 to 4 do begin finders[i].waitfor; oczekiwanie na zakończenie wątku Progr:=i; Synchronize (UpdateProgress) end; Output:= Found: ; tworzenie łańcucha z wynikami for i:=1 to 4 do Output:=Output+Format('%d %s, ', [finders[i].found, LookFor[i]]); Synchronize (Show);... tu trzeba dodać usunięcie wątków PP-14(72 z 76)

73 Wielowątkowość Przykłady Przykład 4 (oczekiwanie na wątek zastosowanie metody WaitFor) Przycisk Start uruchamia wątek, który z kolei natychmiast uruchamia wątki drugoplanowe: procedure TForm1.StartClick (Sender : TObject); var i : Integer; begin if Assigned(MainThread) then MainThread.Free; MainThread:=TMultiFind.Create(True); MainThread.Progresses[1]:=ProgressBar1; MainThread.Progresses[2]:=ProgressBar2; MainThread.Progresses[3]:=ProgressBar3; MainThread.Progresses[4]:=ProgressBar4; MainThread.Progresses[5]:=ProgressBar5; PP-14(73 z 76)

74 Wielowątkowość Przykłady Przykład 4 (oczekiwanie na wątek zastosowanie metody WaitFor) Przycisk Start uruchamia wątek, który z kolei natychmiast uruchamia wątki drugoplanowe: MainThread.Progresses[1].Max:=4; for i:=2 to 5 do MainThread.Progresses[i].Max:=Memo1.Lines.Count; for i:=1 to 5 do MainThread.Progresses[i].Position:=0; MainThread.LookFor:=Edit1.Text; MainThread.Resume rozpoczęcie wykonywania głównego wątku end; PP-14(74 z 76)

75 Powodzenia w dokończeniu programu we własnym zakresie... Szkielet programu, zawierający przedstawione elementy, jest do pobrania ze strony www. PP-14(75 z 76)

76 ... i to by było na tyle... PP-14(76 z 76)

Zaawansowane programowanie w (pakiecie) Delphi

Zaawansowane programowanie w (pakiecie) Delphi DEL420 Zaawansowane programowanie w (pakiecie) Delphi Andrzej Marciniak Prezentacja multimedialna przygotowana za pomoc¹ systemu Corel Presentations 11 Copyright 2004-2010 by Andrzej Marciniak DEL-11(1

Bardziej szczegółowo

Zaawansowane programowanie w (pakiecie) Delphi

Zaawansowane programowanie w (pakiecie) Delphi Zaawansowane programowanie w (pakiecie) Delphi Andrzej Marciniak Prezentacja multimedialna przygotowana za pomoc¹ systemu Corel Presentations 11 i X3 Copyright 2004-2010 by Andrzej Marciniak DEL-12(1 z

Bardziej szczegółowo

Wprowadzenie do systemu Delphi

Wprowadzenie do systemu Delphi 50 Rozdział 4 Wprowadzenie do systemu Delphi W niniejszym rozdziale zilustrujemy na prostych przykładach proces programowania wizualno-obiektowego w systemie Delphi. 4.1 Znajdowanie elementu maksymalnego

Bardziej szczegółowo

Tworzenie własnych komponentów

Tworzenie własnych komponentów Tworzenie własnych komponentów 1. Tworzenie nowego komponentu W tym celu należy wykorzystać menu Component. Interesujące są dwie opcje menu New Component i Install Component. Pierwsze polecenie służy do

Bardziej szczegółowo

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

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści Język programowania DELPHI / Andrzej Marciniak. Poznań, 2012 Spis treści Przedmowa 11 Przyjęta notacja 13 Rozdział 1. Wprowadzenie 15 1.1. Ogólne zasady programowania zorientowanego obiektowo 15 1.2. Historia

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Nazwa implementacji: Kółko i krzyżyk w Lazarusie. Autor: Piotr Fiorek Andrzej Stefaniuk

Nazwa implementacji: Kółko i krzyżyk w Lazarusie. Autor: Piotr Fiorek Andrzej Stefaniuk Nazwa implementacji: Kółko i krzyżyk w Lazarusie Autor: Piotr Fiorek Andrzej Stefaniuk Opis implementacji: Implementacja prezentuje środowisko Lazarus oraz prosty program w języku FreePascal. Na początku

Bardziej szczegółowo

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel Wstęp do programowania Procedury i funkcje Piotr Chrząstowski-Wachtel Po co procedury i funkcje? Gdyby jakis tyran zabronił korzystać z procedur lub funkcji, to informatyka by upadła! Procedury i funkcje

Bardziej szczegółowo

Podstawy Programowania 2

Podstawy Programowania 2 Podstawy Programowania 2 Laboratorium 7 Instrukcja 6 Object Pascal Opracował: mgr inż. Leszek Ciopiński Wstęp: Programowanie obiektowe a programowanie strukturalne. W programowaniu strukturalnym, któremu

Bardziej szczegółowo

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe. Programowanie Wizualno-Obiektowe (studia zaoczne - inżynieria komputerowa) Zajęcia z Delphi 5, program 1 Temat: Zadanie: Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków

Bardziej szczegółowo

Materiały do laboratorium MS ACCESS BASIC

Materiały do laboratorium MS ACCESS BASIC Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I

Bardziej szczegółowo

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego:

Typy klasowe (klasy) 1. Programowanie obiektowe. 2. Założenia paradygmatu obiektowego: Typy klasowe (klasy) 1. Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która definiuje programy za pomocą obiektów

Bardziej szczegółowo

Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5. Ćwiczenie 5 Aplikacja wielo-okienkowa

Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5. Ćwiczenie 5 Aplikacja wielo-okienkowa Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5 Ćwiczenie 5 Aplikacja wielo-okienkowa 1. Opracuj aplikację realizującą obliczenia na podstawie danych wpisywanych w komponencie

Bardziej szczegółowo

Wstęp do programowania. Różne różności

Wstęp do programowania. Różne różności Wstęp do programowania Różne różności Typy danych Typ danych określa dwie rzeczy: Jak wartości danego typu są określane w pamięci Jakie operacje są dozwolone na obiektach danego typu 2 Rodzaje typów Proste

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Delphi Laboratorium 3

Delphi Laboratorium 3 Delphi Laboratorium 3 1. Procedury i funkcje Funkcja jest to wydzielony blok kodu, który wykonuje określoną czynność i zwraca wynik. Procedura jest to wydzielony blok kodu, który wykonuje określoną czynność,

Bardziej szczegółowo

PODSTAWY PROGRAMOWANIA

PODSTAWY PROGRAMOWANIA PODSTAWY PROGRAMOWANIA Andrzej Marciniak Prezentacja multimedialna przygotowana za pomocą systemu Corel Presentations X3 Copyright 2003-2013 by Andrzej Marciniak PP-12(1 z 46) Na poprzednim wykładzie...

Bardziej szczegółowo

Wstęp do programowania 2

Wstęp do programowania 2 Wstęp do programowania 2 wykład 10 Zadania Agata Półrola Wydział Matematyki UŁ 2005/2006 http://www.math.uni.lodz.pl/~polrola Współbieżność dotychczasowe programy wykonywały akcje sekwencyjnie Ada umożliwia

Bardziej szczegółowo

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem. Podstawy programowania Wykład PASCAL Zmienne wskaźnikowe i dynamiczne 1 dr Artur Bartoszewski - Podstawy prograowania, sem. 1- WYKŁAD Rodzaje zmiennych Zmienne dzielą się na statyczne i dynamiczne. Zmienna

Bardziej szczegółowo

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem. WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM NetBeans Wykonał: Jacek Ventzke informatyka sem. VI 1. Uruchamiamy program NetBeans (tu wersja 6.8 ) 2. Tworzymy

Bardziej szczegółowo

Programowanie w Turbo Pascal

Programowanie w Turbo Pascal Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji

Bardziej szczegółowo

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach.

Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach. Nazwa implementacji: Gra w życie Autor: Piotr Fiorek Opis implementacji: Implementacja przedstawia Grę w życie jako przykład prostej symulacji opartej na automatach. Zaprojektuj prostą grę, której celem

Bardziej szczegółowo

5. Model komunikujących się procesów, komunikaty

5. Model komunikujących się procesów, komunikaty Jędrzej Ułasiewicz str. 1 5. Model komunikujących się procesów, komunikaty Obecnie stosuje się następujące modele przetwarzania: Model procesów i komunikatów Model procesów komunikujących się poprzez pamięć

Bardziej szczegółowo

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ 1. Na dysku STUDENT we własnym folderze utwórz podfolder o nazwie: WarMax. 2. Uruchom program Delphi. 3. Zapamiętaj w folderze WarMax poszczególne pliki tworzące

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,

Bardziej szczegółowo

TEMAT : KLASY DZIEDZICZENIE

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ą

Bardziej szczegółowo

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

procesów Współbieżność i synchronizacja procesów Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak Plan wykładu Abstrakcja programowania współbieżnego Instrukcje atomowe i ich przeplot Istota synchronizacji Kryteria poprawności programów współbieżnych

Bardziej szczegółowo

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

Bardziej szczegółowo

Mechanizmy pracy równoległej. Jarosław Kuchta

Mechanizmy pracy równoległej. Jarosław Kuchta Mechanizmy pracy równoległej Jarosław Kuchta Zagadnienia Algorytmy wzajemnego wykluczania algorytm Dekkera Mechanizmy niskopoziomowe przerwania mechanizmy ochrony pamięci instrukcje specjalne Mechanizmy

Bardziej szczegółowo

Tworzenie aplikacji Windows Podstawy obsługi komunikatów Windows (Delphi)

Tworzenie aplikacji Windows Podstawy obsługi komunikatów Windows (Delphi) Jacek Matulewski http://www.phys.uni.torun.pl/~jacek/ Tworzenie aplikacji Windows Podstawy obsługi komunikatów Windows (Delphi) Ćwiczenia Toruń, 2 grudnia 2002 Najnowsza wersja tego dokumentu znajduje

Bardziej szczegółowo

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/

Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/ Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Programowanie na poziomie sprzętu. Programowanie w Windows API

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.

Bardziej szczegółowo

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1 Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego

Bardziej szczegółowo

Podstawy Programowania semestr drugi. Wykład czternasty

Podstawy Programowania semestr drugi. Wykład czternasty Wykład czternasty 1. Polimorfizm Ostatni wykład zakończyliśmy stwierdzeniem, że możemy obiektowi dowolnej klasy przypisa ć obiekt klasy dziedziczącej po tej klasie. Przypisanie takie obejmuje jednak jedynie

Bardziej szczegółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

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

Bardziej szczegółowo

Procedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym

Procedury i funkcje - powtórzenie i uzupełnienia. Przykład funkcji potęgowanie przy wykładniku naturalnym Procedury i funkcje - powtórzenie i uzupełnienia Przykład funkcji potęgowanie przy wykładniku naturalnym program potegowanie; {$APPTYPE CONSOLE} uses SysUtils; var x: real; n: integer; function Potega(podstawa:

Bardziej szczegółowo

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 Uwaga: DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0 1. Zostały pominięte diagramy: CYFRA, CYFRA SZESNASTKOWA, ZNAK i LITERA. Nie została uwzględniona możliwość posługiwania się komentarzami. 2. Brakuje

Bardziej szczegółowo

Pascal - wprowadzenie

Pascal - wprowadzenie Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego

Bardziej szczegółowo

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych Jacek Matulewski, Sławek Orłowski http://www.phys.uni.torun.pl/~jacek/ Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych Wersja α Ćwiczenia Toruń, 20 grudnia 2005 Najnowsza wersja tego dokumentu

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych: Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym

Bardziej szczegółowo

Delphi podstawy programowania. Środowisko Delphi

Delphi podstawy programowania. Środowisko Delphi Delphi podstawy programowania Środowisko Delphi Olsztyn 2004 Delphi Programowanie obiektowe - (object-oriented programming) jest to metodologia tworzeniu programów komputerowych definiująca je jako zbiór

Bardziej szczegółowo

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

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

Bardziej szczegółowo

Dodawanie operacji dodatkowych w WAPRO Mag.

Dodawanie operacji dodatkowych w WAPRO Mag. Dodawanie operacji dodatkowych w WAPRO Mag. obowiązuje od wersji 8.21.0 Opracował i wykonał: Grzegorz Lenarczyk Asseco Business Solutions SA Oddział w Warszawie Warszawa, ul. Branickiego 13 02-972 Warszawa

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo

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

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec PROE wykład 2 operacje na wskaźnikach dr inż. Jacek Naruniec Zmienne automatyczne i dynamiczne Zmienne automatyczne: dotyczą kontekstu, po jego opuszczeniu są usuwane, łatwiejsze w zarządzaniu od zmiennych

Bardziej szczegółowo

Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor

Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor W lekcji 5 objaśniane jest działanie i zastosowanie funkcji handlemessage() oraz initialize(). Omówiony zostanie również konstruktor

Bardziej szczegółowo

3 Delegacje. 3.1 Tworzenie delegacji. 3.2 Skojarzenie delegacji z procedurą czy funkcją

3 Delegacje. 3.1 Tworzenie delegacji. 3.2 Skojarzenie delegacji z procedurą czy funkcją 3 Delegacje Delegacja to specjalny typ danych, który przechowuje referencję (adres) do procedury lub funkcji. W środowisku.net delegacja jest odpowiednikiem wskaźnika (pointer) do funkcji znanego z języka

Bardziej szczegółowo

16) Wprowadzenie do raportowania Rave

16) Wprowadzenie do raportowania Rave 16) Wprowadzenie do raportowania Rave Tematyka rozdziału: Przegląd wszystkich komponentów Rave Tworzenie nowego raportu przy użyciu formatki w środowisku Delphi Aktywacja środowiska Report Authoring Visual

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania 1) Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z podstawowymi elementami obiektowymi systemu Windows wykorzystując Visual Studio 2008 takimi jak: przyciski, pola tekstowe, okna pobierania danych

Bardziej szczegółowo

Tak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS www.informatyka.edu.pl

Tak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS www.informatyka.edu.pl To jeden z ostatnich odcinków naszego kursu. Mam nadzieję, że pisanie własnego programu było ciekawym doświadczeniem. Zaproponowana w tym odcinku funkcja uatrakcyjni twój program. Stworzymy tak zwane okno

Bardziej szczegółowo

PODSTAWY PROGRAMOWANIA

PODSTAWY PROGRAMOWANIA PODSTAWY PROGRAMOWANIA Andrzej Marciniak Prezentacja multimedialna przygotowana za pomocą systemu Corel Presentations X3 Copyright 2003-2017 by Andrzej Marciniak PP-8(1 z 78) Na poprzednim wykładzie...

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w obrębie skryptu. Wyrażenia include() i require() są niemal

Bardziej szczegółowo

Język programowania PASCAL

Język programowania PASCAL Język programowania PASCAL (wersja podstawowa - standard) Literatura: dowolny podręcznik do języka PASCAL (na laboratoriach Borland) Iglewski, Madey, Matwin PASCAL STANDARD, PASCAL 360 Marciniak TURBO

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

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

Bardziej szczegółowo

Smarty PHP. Leksykon kieszonkowy

Smarty PHP. Leksykon kieszonkowy IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK

Bardziej szczegółowo

Instrukcja do programu Do7ki 1.0

Instrukcja do programu Do7ki 1.0 Instrukcja do programu Do7ki 1.0 Program Do7ki 1.0 pozwala w prosty sposób wykorzystać dane z systemu sprzedaży Subiekt GT do generowania listów przewozowych dla firmy kurierskiej SIÓDEMKA w połączeniu

Bardziej szczegółowo

Zapis programu z wykorzystaniem modułu (Podstawy Delphi 2.1, 2.2, 2.3 str11 )

Zapis programu z wykorzystaniem modułu (Podstawy Delphi 2.1, 2.2, 2.3 str11 ) Przypomnienie dziedziczenie obiektów Przykład (p6) Zapis programu z wykorzystaniem modułu (Podstawy Delphi 2.1, 2.2, 2.3 str11 ) Przykład (p7) przypomnienie zapis z wykorzystaniem rekordu W pliku projektu

Bardziej szczegółowo

Programowanie RAD Delphi

Programowanie RAD Delphi Programowanie RAD Delphi Dr Sławomir Orłowski Zespół Fizyki Medycznej, Instytut Fizyki, Uniwersytet Mikołaja Kopernika w Toruniu Pokój: 202, tel. 611-32-46, e-mial: bigman@fizyka.umk.pl Delphi zasoby Aplikacje

Bardziej szczegółowo

Laboratorium 15: Bazy Danych Tworzenie bazy danych i programowanie elementów nawigacyjnych aplikacji stworzonej przy pomocy technologii dbexpress

Laboratorium 15: Bazy Danych Tworzenie bazy danych i programowanie elementów nawigacyjnych aplikacji stworzonej przy pomocy technologii dbexpress Laboratorium 15: Bazy Danych Tworzenie bazy danych i programowanie elementów nawigacyjnych aplikacji stworzonej przy pomocy technologii dbexpress dr inż. Marcin Witczak Instytut Sterowania i Systemów Informatycznych,

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

PODSTAWY PROGRAMOWANIA

PODSTAWY PROGRAMOWANIA PODSTAWY PROGRAMOWANIA Andrzej Marciniak Prezentacja multimedialna przygotowana za pomocą systemu Corel Presentations X3 Copyright 2003-2016 by Andrzej Marciniak PP-5(1 z 93) Na poprzednim wykładzie...

Bardziej szczegółowo

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Blok 2 - PHP Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Podstawy podstaw, czyli małe wprowadzenie do PHP, Podstawy

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

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

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 07 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami tworzenia aplikacji okienkowych w C#. Wprowadzenie teoretyczne. Rozważana w

Bardziej szczegółowo

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

Kalkulator. Programowanie komputerów. Kalkulator możliwe udoskonalenia. Kalkulator. Kalkulator. Kalkulator możliwe udoskonalenia

Kalkulator. Programowanie komputerów. Kalkulator możliwe udoskonalenia. Kalkulator. Kalkulator. Kalkulator możliwe udoskonalenia Programowanie komputerów Relatywnie prosty interfejs użytkownika Złożony algorytm. Elementy obowiązkowe (2,) Klawisze: numeryczne..9, znak dziesiętny (","), operacje arytmetyczne, -, *, /, wynik () oraz

Bardziej szczegółowo

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku

Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Przykładowa dostępna aplikacja w Visual Studio - krok po kroku Zadaniem poniższego opisu jest pokazanie, jak stworzyć aplikację z dostępnym interfejsem. Sama aplikacja nie ma konkretnego zastosowania i

Bardziej szczegółowo

BAZY DANYCH Panel sterujący

BAZY DANYCH Panel sterujący BAZY DANYCH Panel sterujący Panel sterujący pełni z reguły rolę centrum, z którego wydajemy polecenia i uruchamiamy różnorodne, wcześniej zdefiniowane zadania, np. wyświetlamy formularze lub drukujemy

Bardziej szczegółowo

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

Bardziej szczegółowo

Laboratorium Systemów SCADA

Laboratorium Systemów SCADA Laboratorium Systemów SCADA Ćwiczenie 4. Tworzenie skryptów w programie InTouch Opracował: dr hab. inż. Sebastian Dudzik 1. Cel ćwiczenia Zapoznanie się z rodzajami skryptów w programie InTouch. Zapoznanie

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

Ćwiczenie: JavaScript Cookies (3x45 minut)

Ćwiczenie: JavaScript Cookies (3x45 minut) Ćwiczenie: JavaScript Cookies (3x45 minut) Cookies niewielkie porcje danych tekstowych, które mogą być przesyłane między serwerem a przeglądarką. Przeglądarka przechowuje te dane przez określony czas.

Bardziej szczegółowo

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

Bardziej szczegółowo

Zaawansowane programowanie w (pakiecie) Delphi

Zaawansowane programowanie w (pakiecie) Delphi DEL420 Zaawansowane programowanie w (pakiecie) Delphi Andrzej Marciniak Prezentacja multimedialna przygotowana za pomoc¹ systemu Corel Presentations 11 i X3 Copyright 2004-2010 by Andrzej Marciniak DEL-9-10(1

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

15. Funkcje i procedury składowane PL/SQL

15. Funkcje i procedury składowane PL/SQL 15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp

Bardziej szczegółowo

OPERACJE NA PLIKACH. Podstawowe pojęcia:

OPERACJE NA PLIKACH. Podstawowe pojęcia: OPERACJE NA PLIKACH Podstawowe pojęcia: plik fizyczny, zbiór informacji w pamięci zewnętrznej wykorzystywany do trwałego przechowywania danych lub jako przedłużenie pamięci operacyjnej w przypadku przetwarzania

Bardziej szczegółowo

Instrukcja do programu DoUPS 1.0

Instrukcja do programu DoUPS 1.0 Instrukcja do programu DoUPS 1.0 Program DoUPS 1.0 pozwala w prosty sposób wykorzystać dane z systemu sprzedaży Subiekt GT do generowania listów przewozowych dla firmy kurierskiej UPS w połączeniu z bezpłatnym

Bardziej szczegółowo

PHP: bloki kodu, tablice, obiekty i formularze

PHP: bloki kodu, tablice, obiekty i formularze 1 PHP: bloki kodu, tablice, obiekty i formularze SYSTEMY SIECIOWE Michał Simiński 2 Bloki kodu Blok if-else Switch Pętle Funkcje Blok if-else 3 W PHP blok if i blok if-else wyglądają tak samo i funkcjonują

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki

Informatyka I. Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Informatyka I Dziedziczenie. Nadpisanie metod. Klasy abstrakcyjne. Wskaźnik this. Metody i pola statyczne. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Dziedziczenie klas

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

Aplikacje w środowisku VBA. Visual Basic for Aplications

Aplikacje w środowisku VBA. Visual Basic for Aplications Aplikacje w środowisku VBA Visual Basic for Aplications Podstawowe informacje o VBA Visual Basic for Aplications, w skrócie VBA, to język programowania rozwijany przez Microsoft, którego zastosowanie pozwala

Bardziej szczegółowo

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy. 1. Instrukcję case t of... w przedstawionym fragmencie programu moŝna zastąpić: var t : integer; write( Podaj

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Wykład 2 28 lutego 2019 Plan wykładu 1 2 3 4 5 Plan wykładu 1 2 3 4 5 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie; standardy ISO i ECMA; podobny składniowo do C++; Język C Krótka

Bardziej szczegółowo

Informatyka 1. Przetwarzanie tekstów

Informatyka 1. Przetwarzanie tekstów Informatyka 1 Wykład IX Przetwarzanie tekstów Robert Muszyński ZPCiR ICT PWr Zagadnienia: reprezentacja napisów znakowych, zmienne napisowe w Sun Pascalu, zgodność typów, operowanie na napisach: testowanie

Bardziej szczegółowo

Microsoft Visual C++

Microsoft Visual C++ Microsoft Visual C++ Typy aplikacji okna dialogowe Typy aplikacji Multiple Document Obsługa zdarzeń - komunikaty W celu obsługi zdarzeń pochodzących z wielu źródeł funkcja MainLoop odbiera komunikaty systemowe

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

Bardziej szczegółowo

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi)

Instrukcja do laboratorium Systemów Operacyjnych. (semestr drugi) Instrukcja do laboratorium Systemów Operacyjnych (semestr drugi) Ćwiczenie drugie (jedne zajęcia) Temat: Procesy i sygnały w Linuksie. Opracowanie: mgr in ż. Arkadiusz Chrobot Wprowadzenie 1. Budowa procesu

Bardziej szczegółowo

Projektowanie i programowanie aplikacji biznesowych. Wykład 2

Projektowanie i programowanie aplikacji biznesowych. Wykład 2 Projektowanie i programowanie aplikacji biznesowych Wykład 2 Kontrolki w Windows API Aby korzystać z kontrolek należy dołączyć plik nagłówkowy o nazwie commctrl.h oraz bibliotekę o nazwie libcomctl32.a.

Bardziej szczegółowo

Programowanie wielowątkowe. Jarosław Kuchta

Programowanie wielowątkowe. Jarosław Kuchta Programowanie wielowątkowe Jarosław Kuchta Procesy i wątki w systemie Windows Windows jest systemem wielowątkowym. Każdy proces ma przynajmniej jeden wątek, chociaż może mieć wiele wątków. Start programu,

Bardziej szczegółowo