Problem plecakowy. Dokumentacja. 3 kwietnia. Algorytm dokładny oparty na metodzie programowania dynamicznego

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

Download "Problem plecakowy. Dokumentacja. 3 kwietnia. Algorytm dokładny oparty na metodzie programowania dynamicznego"

Transkrypt

1 Dokumentacja 3 kwietnia 2009 Problem plecakowy Algorytm dokładny oparty na metodzie programowania dynamicznego Optymalizacja w systemach dyskretnych Prowadzący: dr inż. Jarosław Pempera Termin: ŚR/P/9 15 Paweł Porombka (148955)

2 1. PROBLEM PLECKOWY ROZWIĄZNIE PROBLEM PLECAKOWY 1.1 Problem Plecakowy - (ang. Knapsack problem), jest jednym z typowych problemów dyskretnych. Bardzo często przytaczany jako przykład w literaturze i bardzo często właśnie na tym problemie tłumaczone są techniki programowania dynamicznego. Formalnie dyskretny problem plecakowy możemy sformułować następująco: Mamy zbór przedmiotów A: gdzie każdy przedmiot posiada dwie właściwości w postaci liczb całkowitych (dla nas nieujemnych): Jeżeli zdefiniujemy pewien plecak (pojemnik), który posiada skończoną pojemność P, oraz zbiór zmiennych binarnych możemy zdefiniować następujący problem optymalizacyjny, który będzie polegał na maksymalizacji funkcji celu postaci: przy spełnionych ograniczeniach: W ten sposób sformułowaliśmy dyskretny problem plecakowy. Oczywiście możemy rozważać zmienne, wówczas mówilibyśmy o ciągłym problemie plecakowym, jednakże program rozważa dyskretną formę problemu. Otrzymaliśmy zatem konkretny problem, który polega na znalezieniu takiej grupy przedmiotów (zbioru), spośród określonych wcześniej, których wartość będzie największa uzyskamy największy zysk, ale które to przedmioty zmieszczą się do plecaka, czyli ich sumaryczna waga nie przekroczy dopuszczalnej wagi plecaka. Potocznie zwany problemem złodzieja okradającego jubilera, problem plecakowy jest praktycznym problemem, z którym borykają się choćby firmy transportowe. Wówczas polega on na optymalnym załadowaniu nie tylko przedmiotów o określonej wadze do środka transportu, ale również na odpowiednim rozłożeniu tych przedmiotów, by zmieściło się ich jak najwięcej. Jest to jednak problem bardziej złożony. 2

3 PROGRAMOWANIE DYNAMICZNE 1.2 Jednymi z interesujących technik programistycznych, są techniki programowania dynamicznego. Strategia programowania dynamicznego została wymyślona przez Richarda Bellman a. Jej założenia są dość proste rozłożyć problem na mniejsze podproblemy, które dość łatwo możemy rozwiązać, jeżeli tylko spełniają one własność optymalnej podstruktury 1. Takie rozwiązania cząstkowe pozwalają systematycznie zbliżać się do optimum problemu, przy czym a kolejnych krokach wykorzystujemy najlepsze poprzednie rozwiązania. Metoda ta pozwala wykorzystać rekurencyjną zależność między rozwiązaniami w kolejnych krokach algorytmu i tym samym obliczać każdy problem tylko raz. Parametry wykorzystywane w programowaniu dynamicznym (najczęściej w liczbie dwóch) ustalamy arbitralnie, gdyż to my budujemy algorytm, który ma rozwiązać nasz problem. Zatem bardzo ważnym elementem okazuje się być odpowiedni wybór parametrów i dostosowanie ich do postaci wykorzystywanej w technice programowania dynamicznego. Zdarza się oczywiście, że liczba parametrów wzrasta a ich dobór jest dość skomplikowany, jednakże należy pamiętać, że w programowaniu dynamicznym najczęściej wykorzystanie zasobów (pamięci) wzrasta proporcjonalnie do iloczynu największych wartości parametrów, zatem i czas wykonywania się wydłuża. Z tych powodów rzadko stosuje się więcej niż dwa parametry, gdyż przestaje to być efektywne. W jaki sposób definiować problem dla programowania dynamicznego? Na początek należy poznać podstawowe pojęcie programowania dynamicznego: etap (stadium) fragment procesu szukania rozwiązania, jest charakteryzowany przez pewien stan rozpatrywanego procesu. Z etap możemy przyjąć pewien odcinek czasu, czy drogi. Stadium może stanowić również pewien etap w myśleniu o procesie. Najogólniej rzecz ujmując etap polega na wprowadzeniu nowego wariantu rozwiązania. Dokładnie ilustruje to Rys.1. Widzimy tutaj zależność wykorzystania poprzedniego wyniku by wykonać kolejny krok. Oczywiście nie zawsze musimy korzystać z poprzedniego wyniku, może to być wiele wyników wstecz. x 1 x 2 x n S 0 S 1 S 2 S n-1 S n Rys.1. Schemat wieloetapowego procesu decyzyjnego, który doskonale pokazuje sposób realizacji programowania dynamicznego. S i to wyniki poprzednich problemów (w zerowym kroku najczęściej 0), x i to kolejne decyzje podejmowane w każdym etapie. 1 Dotyczy problemów rozwiązywalnych algorytmami. Własność optymalnej podstruktury spełniają rozwiązania optymalne, które są funkcją rozwiązań optymalnych podproblemów. 3

4 W ten sposób znając pewne własności możemy podsumować teorię programowania dynamicznego podstawowymi dwoma stwierdzeniami, które są filarami całej techniki: a) n wymiarowa funkcja celu powinna mieć postać sumy n funkcji celu, o jednej zmiennej decyzyjnej dla różnych etapów procesu, b) Wartość uzyskana na pewnym etapie zależy od stanu w etapie poprzednim, oraz decyzji uzyskanej w rozważanym stadium. Taka wartość nie powinna jednak zależeć od tego w jaki sposób (jaką drogą) zostało uzyskane rozwiązanie tzw. własność Markowa. Do procesu spełniającego własność Markowa stosuje się podstawową własność strategii optymalnej Bellman a: Polityka optymalna ma tę własność, że niezależnie od początkowego stanu i początkowej decyzji pozostałe decyzje muszą stanowić politykę optymalną ze względu na stan wynikający z pierwszej decyzji. 4

5 PROGRAMOWANIE DYNAMICZNE PROBLEM PLECAKOWY 1.3 Spróbujmy rozważyć problem plecakowy, którym mamy się zająć, przy użyciu techniki programowania dynamicznego. Na początek należy przyjąć, które ze zmiennych zdefiniowanych w problemie ( Rozdz. I ) będą wykorzystane do stworzenia struktury wieloetapowej algorytmu. Biorąc pod uwagę, że problem ma zostać podzielony na podproblemy, które stanowią częściowe rozwiązanie i powinny być elementarne, spróbujmy przeanalizować funkcję celu: przy ograniczeniach: Pierwszą ze zmiennych z pewnością będzie numer kolejno wybieranego elementu - i, gdyż będziemy w stanie określić wagę i wartość tego elementu. Kolejna zmienna decyzyjna powinna zawężać lub poszerzać problem, zatem będzie to rozmiar plecaka P. Im mniejszy rozmiar tym prostsze znalezienie optymalnego upakowania. W ten sposób możemy już stworzyć odpowiednią tablicę (Rys.2.), która pozwoli realizować algorytm n i-ty element P 0 OPT optimum Pojemność plecaka Rys.2. Przyjęta tablica rozwiązań cząstkowych dla programowania dynamicznego Umieszczone zera w pierwszym wierszu i kolumnie zostaną wyjaśnione później. Zatem poszukujemy takiego upakowania plecaka, by otrzymać jak największą wartość i nie przekroczyć ograniczeń. Z tego powodu w tabeli będziemy umieszczać kolejne optymalne wartości plecaka przy konkretnej pojemności plecaka oraz konkretny przedmiot, brany pod uwagę. Stąd definiujemy tabelę Q i,j która zawiera wartość plecaka (jego stan) w danym etapie procesu. Ściślej jest to funkcja celu, o nieco zmienionych ograniczeniach: 5

6 Należy już tylko ustalić w jaki sposób będziemy obliczali stany poszczególnych etapów (wartości komórek tabeli) procesu rozwiązywania problemu. Otóż zaproponujmy następujący algorytm rozwiązania stosujący wprowadzone oznaczenia, który ilustruje pseudokod na Rys.3. FOR TO DO BEGIN END FOR TO DO BEGIN END IF THEN := //(1) ELSE //(2) //rozwiązanie optymalne Rys.3. Algorytm rozwiązujący problem plecakowy, przy użyciu technik dynamicznych Analizując algorytm łatwo zauważyć skąd zera w pierwszej kolumnie i pierwszym wierszu. Otóż algorytm działa w ten sposób, że wykorzystuje znalezione wcześniej optymalne rozwiązanie dla danych etapów. Rozwiązanie składa się z dwóch kroków: 1. Jeżeli aktualny przedmiot nie zmieści się w bieżącym plecaku p i, to zwyczajnie przepisz poprzednie optymalne upakowanie z etapu wcześniejszego i-1 (1) 2. W przeciwnym wypadku sprawdź, które upakowanie będzie lepsze (większa wartość), to z poprzedniego etapu, czy to, które będzie zawierać aktualny element (2). W tej sytuacji dodajemy wartość aktualnego elementu, do stanu plecaka, który był optymalny w chwili, gdy pojemność plecaka była mniejsza o wagę bieżącego elementu (j w i ). W ten sposób odwołujemy się do innego najlepszego upakowania plecaka, które zostało już policzone. Zauważmy jak prosty jest algorytm a jego złożoność jest równa. Widzimy, zatem, że dla małych wielkości pojemności plecaka, oraz dla małej puli przedmiotów algorytm jest wielomianowy, jednakże w miarę wzrostu obu wartości staje się bardzo złożony, stąd nazwa algorytm pseudowielomianowy. Algorytmy te są o tyle praktyczne, że pozwalają na zalezienie rozwiązania danego problemu w czasie pseudowielomianowym. Sens tych technik kryje się właśnie w tej własności. Problemy, które dla innych algorytmów rozwiązań są NP-trudne, mają wykładniczą złożoność, dla pewnej grupy instancji problemów dają się rozwiązać w czasie wielomianowym. Jak się okazuje wiele problemów trudnych można rozwiązać dla praktycznych danych w czasie wielomianowym. 6

7 Analizując pseudo kod przedstawiony powyżej, możemy dojść do wniosku, że jest możliwe zredukowanie zużycia pamięci operacyjnej poprzez ograniczenie tablicy do jednego wektora głównego V1 j i jednego pomocniczego V0 j, gdzie oba odpowiadają kolumnom tabeli Q i,j. Wówczas otrzymamy następujący pseudokod: FOR TO DO BEGIN CHANGE //(1) END FOR TO DO BEGIN END IF THEN := //(2) ELSE //(3) //rozwiązanie optymalne Rys.4. Zoptymalizowany algorytm rozwiązujący problem plecakowy, przy użyciu technik dynamicznych Widzimy, że jedyną zmianą w naszym algorytmie jest dodanie nowego kroku (1), który zamienia nam miejscami dwa wektory. Możemy to oczywiście wykonać w innej formie, bez zamiany wektorów, a jedynie biorąc pod uwagę na przemian wektor V1 jako V0 i odwrotnie. W implementacji zastosowano język C#, który operując na referencjach nie wymaga tutaj żadnego nakładu obliczeniowego, stąd zamiana jest natychmiastowa. 7

8 2. ROZWIĄZANIE IMPELEMENTACYJNE W celu rozwiązania DPP (dyskretnego problemu plecakowego), czyli znalezienia rozwiązania optymalnego, w aplikacji wykorzystano programowanie dynamiczne. W klasie rozwiązującej ten problem zaimplementowano 2 formy funkcji rozwiązującej. Było to spowodowane ewolucją rozwiązań. W rezultacie udało się osiągnąć pojedynczy wektor o długości P, na którym pracuje algorytm zamiast tablicy 2D (n x P). Złożoność tak otrzymanego algorytm wynosi cały czas, jednakże po optymalizacji zajętość pamięci modyfikujemy z n x P ilości komórek tablicy do zaledwie P. CELE PROJEKTU Rozwiązanie problemu plecakowego przy użyciu technik programowania dynamicznego. 2. Możliwość przetwarzania dużej liczby przedmiotów. 3. Określenie granicznego rozmiaru plecaka, z powodów wydajności. 4. Możliwość przetwarzania wsadowego plików z danymi (parametry linii komend). 5. Możliwość zapisu rozwiązania optymalnego do pliku. 6. Realizacja projektu w języku C# 3.0 (Windows Presentation Foundation) na platformie.net. 7. Wizualizacja obiektów z możliwością edycji ich parametrów. 8. Realizacja okienka Splash-Screen 2. 2 Ten element traktujemy jako dodatkowy, nie musi zostać zrealizowany. 8

9 SPECYFIKACJA WYMAGAŃ ROZWIĄZANIE - PROGRAMOWANIE DYNAMICZNE A. Rozwiązanie problemu plecakowego, zrealizowane przy użyciu technik programowania dynamicznego. B. Optymalizacja algorytmu w taki sposób, by nie było potrzeby tworzenia nierzadko ogromnej tablicy danych na potrzeby programowania dynamicznego. C. Wynikiem powinna być pojedyncza liczba określająca wartość (sumę wartości wszystkich przedmiotów), przy optymalnie upakowanym plecaku. 2. WYDAJNOŚĆ A. Ograniczenie liczby przedmiotów do obiektów. B. Ograniczenie rozmiaru plecaka do 500. C. Ograniczenie grafiki rastrowej w interfejsie programu, na korzyść grafiki wektorowej ze względu na charakter WPF. D. Pewna ograniczona (najlepiej stała ) liczba przedmiotów, wykorzystywana do wizualizacji (patrz pkt. 4.A.). 3. PRZETWARZANIE WSADOWE A. Możliwość przetwarzania wsadowego plików z gotowymi danymi opisującymi przedmioty oraz plecak. B. Dane w plikach wejściowych są w określonym formacie, opisanym poniżej a) Plik jest w formacie tekstowym UTF-8/ASCII b) Plik zbudowany jest z dwóch kolumn c) Nagłówek pliku: - Pierwsza kolumna N = ilość wszystkich przedmiotów - Druga kolumna W = pojemność plecaka (maksymalna waga) d) Kolejne N wierszy (i = 1 N): - Pierwsza kolumna waga i-tego przedmiotu - Druga kolumna wartość i-tego przedmiotu C. Pliki wyjściowe to pliki w formacie UTF-8, zawierające jedną liczbę optymalne rozwiązanie problemu. D. Podczas przetwarzania wsadowego nie powinno pojawiać się okienko aplikacji. E. Po skończeniu przetwarzania pliku wejściowego, zapisywany jest wynik w pliku wyjściowym, a program zostaje zamknięty. 9

10 4. JĘZYK PROGRAMOWANIA C# 3.0/XAML (WPF), PLATFORMA.NET A. Wykonanie ciekawego interfejsu graficznego z prezentacją wizualną pewnej puli przedmiotów, których parametry (waga i wartość) mogą być modyfikowane w prosty sposób. Pula tych przedmiotów nie musi być wczytywana z pliku, może być zdefiniowana w programie. B. Musi być możliwość modyfikowania zdefiniowanych wartości w.w. przedmiotów oraz pojemności plecaka, w celu arbitralnego parametryzowania problemu. C. Program powinien wykorzystywać MS Framework 3.0/ REALIZACJA OKIENKA POWITALNEGO SPLASH-SCREEN 3 A. Okienko pojawiające się przed załadowaniem właściwego kodu programu oraz głownego okna aplikacji. B. Zabrania się umieszczania animacji i dużej ilości grafiki na tym okienku, ze względu na jego przeznaczenie. Musi się ono błyskawicznie załadować do pamięci. 3 Ten punkt specyfikacji wymagań jest opcjonalny 10

11 SPECYFIKACJA PROJEKTU ROZWIĄZANIE PRZY UŻYCIU TECHNIK PROGRAMOWANIA DYNAMICZNEGO A. Optymalizacja algorytmu do postaci wykorzystującej tylko jeden 4 wektor danych w pamięci, zamiast dwuwymiarowej tablicy rozwiązań cząstkowych, co powoduje znaczne zmniejszenie zajętości pamięci B. Za wynik przyjmujemy liczbę znajdującą się w przetwarzanym wektorze w ostatniej jego komórce. W przypadku analizowania tablicy 2D byłby to element znajdujący się w prawym dolnym rogu tabeli. 2. UWZGLĘDNIENIE OGRANICZEŃ WYDAJNOŚCIOWYCH A. Ograniczenie liczby przedmiotów do obiektów oraz pojemności plecaka do 500, realizuje konkretna funkcja TryAddParameters( ). Polega to wyłącznie na weryfikacji wejściowych parametrów pod względem zgodności z założeniami. 3. PRZETWARZANIE WSADOWE PLIKÓW Z DANYMI A. Przetwarzanie wsadowe zostaje włączone tylko i wyłącznie, gdy liczba parametrów linii komend pliku aplikacji jest równa 3. Pierwszy parametr to typ operacji jaki chcemy wykonać, następne dwa to kolejno plik wejściowy i wyjściowy. Argumenty w linii poleceń wyglądają następująco: program.exe -wsadowo plik_wejściowy.txt wynik.txt W tej sytuacji zostanie przetworzony plik plik_wejściowy.txt, a wynik zapisany w pliku wynik.txt. B. Podczas przetwarzania wsadowego nie pojawia się okienko aplikacji (nie jest w ogóle ładowane), natomiast pod koniec przetwarzania otrzymujemy komunikat w postaci okna dialogowego (podsumowanie i wynik). Po kliknięciu przycisku OK., program zostaje zamknięty. 4. REALIZACJA PROJEKTU W JĘZYKU C# 3.0/XAML (TECHNOLOGIA WPF), PLATFORMA.NET A. Program został wykonany w oparciu o MS Framework 3.5. B. Interfejs graficzny został zrealizowany w postaci pojedynczego okna głównego, w którego obszarze roboczym pracujemy. Kolejne okienka stanowią zwyczajnie kolejną warstwę (siatkę), która pojawia się (animacja) po konkretnym zdarzeniu. W ten sposób uzyskano dość efektowną aplikację. C. Wizualizacja obiektów polega na przedstawieniu zbioru ikonek (piłka, lornetka, itd.), które w rzeczywistości są komponentami stworzonymi na potrzeby aplikacji. Każdy komponent zawiera dodatkowe właściwości: wagę, wartość oraz nazwę danego przedmiotu. W ten sposób są one identyfikowane (patrz. Dokumentacja Interfejsu Graficznego). 4 Nie do końca jeden, gdyż zawsze musi być dodatkowy wektor tymczasowy. Oba wektory są przetwarzane na zmianę. Co zapobiega przepisywaniu wartości z jednego do drugiego. 11

12 D. Modyfikacja obiektów odbywa się w prosty sposób, klikając dwukrotnie na daną ikonkę. Wówczas mamy możliwość zmodyfikowania również pojemności plecaka. Więcej na ten temat w części Dokumentacja Interfejsu Graficznego. 5. REALIZACJA OKIENKA POWITALNEGO SPLASH-SCREEN A. Udało się zrealizować okienko pojawiające się podczas ładowania głównej części aplikacji. B. Okienko Splash-Screen, musi wywoływać ładowanie pozostałej części aplikacji w osobnym wątku STA (interfejsu graficznego). Wynika to ze struktury realizacji interfejsu w WPF. C. Po utworzeniu obiektu aplikacji głównej oraz załadowaniu bibliotek pojawia się nam okienko główne aplikacji, natomiast Splash-Screen znika. D. Zgodnie z przyjętymi ograniczeniami, okno powitalne nie realizuje żadnych skomplikowanych animacji, a jedynie jest wariacją dwóch obrazków plecaka z przedmiotami (jeden to odblask na podłodze) oraz tekst LOADING. 12

13 MODEL ROZWIĄZANIA 2.4 Do modelowania problemu oraz aplikacji wykorzystano narzędzia do projektowania w języku UML: a) Poseidon for UML 6.0, b) Visual Paradigm for UML 6.4. Modelowanie podzielono na kilka etapów, których realizacją były diagramy poszczególnych problemów OGÓLNY MODEL SYSTEMU Na rys.5. przedstawiono prosty diagram obrazujący ogólną strukturę całego systemu. Rys.5. Diagram zaimplementowanego systemu 13

14 DIAGRAM DZIAŁANIA ALGORYTMU Na rys.6. przedstawiono diagram algorytmu rozwiązującego problem plecakowy. Na diagramie uwzględniono oznaczenia oryginalne z implementacji, opisane w części 2.5. Rys.6. Diagram działania algorytmu 14

15 DIAGRAM DZIAŁANIA INTERFEJSU Rys.7. Diagram działania interfejsu użytkownika na zasadzie diagramu akcji UML 15

16 DIAGRAM PODSTAWOWYCH KLAS APLIKACJI Rys.8. Diagram klas utworzonych na potrzeby systemu 16

17 DOKUMENTACJA KODU 2.5 class KnapsackSolver Klasa zawierająca zaimplementowany algorytm rozwiązania problemu plecakowego, przy użyciu technik programowania dynamicznego. Klasa jest nieskomplikowana, a jej obsługa wyjątkowo prosta. Na potrzeby projektu została ona zamknięta w osobnym pliku, przy czym postanowiono, że nie zostanie utworzona w postaci biblioteki DLL. const int BagLimit = 500; Pole prywatne (stała typu liczba całkowita), przechowuje maksymalną dopuszczalną wartość plecaka, która została poddana weryfikacji: TryAddParameters( ). const int ObjectsLimit = ; Pole prywatne (stała typu liczba całkowita), przechowuje maksymalną dopuszczalną liczbę przedmiotów w puli, która została poddana weryfikacji: TryAddParameters( ). private int[] _Weights Pole prywatne (tablica liczb całkowitych), określające wagi wszystkich przedmiotów wczytane do instancji klasy. Indeksacja od 0.._ItemsCount. To pole zostaje przypisane w chwili dodania poprawnych danych metodą TryAddParameters( ), bądź wymuszenia dodania danych przy użyciu ForceAddParameters( ). 17

18 private int[] _Values Pole prywatne (tablica liczb całkowitych), określające wszystkie wartości (ceny) dodanych przedmiotów. Indeksacja od 0.._ItemsCount. To pole zostaje przypisane w chwili dodania poprawnych danych metodą TryAddParameters( ), bądź wymuszenia dodania danych przy użyciu ForceAddParameters( ). private int _TotalWeight Pole prywatne (liczba całkowita), określające maksymalną dopuszczalną wagę plecaka. To pole zostaje przypisane w chwili dodania poprawnych danych metodą TryAddParameters( ), bądź wymuszenia dodania danych przy użyciu ForceAddParameters( ). private int _ItemsCount Pole prywatne (liczba całkowita), określające ilość przedmiotów, które zostały dodane do puli w instancji klasy. To pole zostaje przypisane w chwili dodania poprawnych danych metodą TryAddParameters( ), bądź wymuszenia dodania danych przy użyciu ForceAddParameters( ). Z zewnątrz klasy pole jest dostępne jako właściwość tylko do odczytu: ItemsCount. private int[,] _Results Pole prywatne (dwuwymiarowa tablica liczb całkowitych), zawierające wyniki w postaci tablicy kroków algorytmu programowania dynamicznego. Pole jest inicjalizowane tylko po wywołaniu metody pierwszej wersji rozwiązywania algorytmu: SolveProblem1(). Z zewnątrz klasy pole jest dostępne jako właściwość tylko do odczytu: Results. Rozwiązanie jest przechowywane naturalnie w prawym dolnym rogu tablicy (jest to rozwiązanie optymalne). 18

19 public int[,] Results Właściwość publiczna (dwuwymiarowa tablica liczb całkowitych), pozwalająca na dostęp do tablicy rozwiązań cząstkowych algorytmu dynamicznego. Odpowiada prywatnemu polu: _Results. Właściwość tylko-do-odczytu. public int ItemsCount Właściwość publiczna (liczba całkowita), pozwalająca na dostęp do liczby określającej ilość przedmiotów zaakceptowanych w instancji klasy. Odpowiada prywatnemu polu: _ ItemsCount. Właściwość tylko-do-odczytu. public readonly int BagSizePercentage Właściwość publiczna (liczba całkowita), pozwalająca na dostęp do liczby określającej, jaka może być maksymalna suma wag wszystkich dodanych przedmiotów w stosunku do pojemności plecaka. Wartość ta jest określana z góry podczas tworzenia instancji obiektu klasy i wyrażona jest w procentach wielkości plecaka. Domyślnie ustawiana na jest na 70(%) i nie może zostać zmodyfikowana. Pozwala nałożyć pewne wymogi co do parametrów przedmiotów. Ta wartość m.in. jest wykorzystywana podczas weryfikacji danych metodą TryAddParameters( ). Właściwość tylko-do-odczytu. public KnapsackSolver(int BagSizePercent) Publiczny konstruktor parametryzujący. Tworzy instancję obiektu klasy. 19

20 Parametry: int BagSizePercent - określa procentowy udział wielkości przedmiotów, w wielkości plecaka (patrz BagSizePercentage) Konstruktor ustawia podaną wartość jednorazowo, później właściwość jest już niemodyfikowalna. public KnapsackSolver() Publiczny konstruktor domyślny. Tworzy instancję obiektu klasy, ustawiając od razu domyślna wartość parametru BagSizePercentage na 70(%). Konstruktor ustawia podaną wartość jednorazowo, później właściwość jest już niemodyfikowalna. public Boolean TryAddParameters( int[] ItemsWeights, int[] ItemsValues, int BagMaxWeight ) Publiczna metoda. Pozwala na weryfikację dodawanych danych, które będą przetwarzane przy użyciu metod rozwiązujących w dwóch wersjach: SolveProblem1() oraz SolveProblem2(). Parametry: int[] ItemsWeights - Wektor określający wagi wszystkich przedmiotów dodawanych do puli elementów w klasie (patrz _Weights). int[] ItemsValues - Wektor określający wartości wszystkich przedmiotów dodawanych do puli elementów w klasie (patrz _Values). int BagMaxWeight - Liczba całkowita określająca maksymalny rozmiar plecaka, 20

21 czyli jego pojemność (patrz _TotalWeight). Wynik: Boolean zwracany wynik to true, gdy dodano poprawnie nowe parametry, lub false, gdy parametry są nie poprawne i nie zostały dodane. Dzięki tej metodzie jest możliwość weryfikacji, czy dany problem jest już rozwiązanym gdyż pula przedmiotów o sumarycznej wadze mniejszej, równej pojemności plecaka może w całości mieścić się w nim. Co za tym idzie nie ma tutaj sensu rozwiązywanie algorytmu. Kolejnym wariantem jest sprawdzenie ilości przedmiotów oraz wielkości plecaka, które są ograniczone zgodnie ze specyfikacją. public void ForceAddParameters( int[] ItemsWeights, int[] ItemsValues, int BagMaxWeight ) Publiczna metoda. Pozwala na dodanie nowych danych o przedmiotach do puli klasy, bez weryfikacji ich poprawności. Dalej dane te są przetwarzane przez jedną z metod rozwiązujących: SolveProblem1() oraz SolveProblem2(). Parametry: int[] ItemsWeights - Wektor określający wagi wszystkich przedmiotów dodawanych do puli elementów w klasie (patrz _Weights). int[] ItemsValues - Wektor określający wartości wszystkich przedmiotów dodawanych do puli elementów w klasie (patrz _Values). int BagMaxWeight - Liczba całkowita określająca maksymalny rozmiar plecaka, czyli jego pojemność (patrz _TotalWeight). 21

22 Metoda ta zwyczajnie wymusza wykonanie algorytmu dla wszystkich podanych danych. Jest wykorzystywana podczas przetwarzania wsadowego. public int[,] SolveProblem1() Publiczna metoda rozwiązująca. Metoda, która znajduje rozwiązanie optymalne metodą techniki programowania dynamicznego, z wykorzystaniem dwuwymiarowej tablicy cząstkowych rozwiązań. Ma to związek z charakterem programowania dynamicznego. Metoda opracowana na potrzeby prezentacji wyników w postaci tablicy, oraz dla potrzeb interfejsu (mniej wydajna niż SolveProblem2()). Wynik: int[,] zwracany wynik to dwuwymiarowa tablica liczb całkowitych, która jest wspomnianą tablicą cząstkowych rozwiązań problemu. Prawy dolny róg tabeli (komórka) zawiera znalezione optymalne rozwiązanie. Ze względów wydajnościowych nie jest ona raczej stosowana, do przetwarzania wsadowego wykorzystuje się metodę w wersji 2. public int SolveProblem2() Publiczna metoda rozwiązująca. Metoda, która znajduje rozwiązanie optymalne metodą techniki programowania dynamicznego, z wykorzystaniem jednowymiarowej tablicy (wektora) cząstkowych rozwiązań. Ma to związek z charakterem programowania dynamicznego. Metoda stanowi ulepszenie metody w wersji 1 (SolveProblem1()) w sferze wydajnościowej, zajętości pamięci oraz szybkości. Tak naprawdę w metodzie jest wykorzystywany jeszcze jeden wektor pomocniczy, zatem operacje odbywają się na dwóch identycznych wektorach zamienianych miejscami. Wadą tej techniki jest niemożność odzyskania sekwencji dodanych do plecaka przedmiotów, przy sensownej wydajności. Wynik: 22

23 int zwracany wynik to optymalne upakowanie plecaka, a dokładnie optymalne rozwiązanie, którym jest wartość plecaka tak upakowanego. class FileOperations Klasa pozwalająca na wczytywanie plików z danymi dotyczącymi problemu. Format danych opisano w specyfikacji programu. public static Boolean ReadDataFromFile( String FileName, out int[] w_i, out int[] c_i, out int W ) Publiczna metoda statyczna. Wczytuje parametry algorytmu z pliku tekstowego o określonym formacie (UTF-8), oraz zwraca te parametry w postaci argumentów oznaczonych operatorem out. Parametry: String FileName - Łańcuch znaków opisujący ścieżkę do pliku wraz z jego nazwą, int[] w_i int[] c_i int[] W - Wektor określający wagi poszczególnych przedmiotów. Operator out definiuje, że podany parametr jest zwracany w tym miejscu, zatem pod tą zmienną zostanie podstawiony wynik, - Wektor określający wartości poszczególnych przedmiotów, - Pojemność plecaka. poszczególnych przedmiotów. Operator out definiuje, że podany parametr jest zwracany w tym miejscu, zatem pod tą zmienną 23

24 zostanie podstawiony wynik. Wynik: Boolean zwracany wynik to true, gdy wczytano poprawnie nowe parametry, lub false, gdy plik FileName nie istniał. Metoda ta jest wykorzystywana podczas przetwarzania wsadowego do wczytywania danych z pliku wejściowego. 24

25 INTERFEJS (UI) 2.6 Ponieważ interfejs został wykonany w jednej z nowszych technologii firmy Microsoft, postanowiono, że opis tegoż przedsięwzięcia powinien również stanowić część dokumentacji. Platforma.NET pozwala na niezwykle rozwijanie się w sferze nowych technologii. Tego typu technologia jest Windows Presentation Foundation (WPF), która stanowy śmiały krok na przód w dziedzinie projektowania interfejsów. Ten wyjątkowy pakiet dostępny w bibliotekach MS Framework od wersji 3.0, posiada niesamowite możliwości. Teraz okienko staje się przestrzenią dla animacji zarówno 2D jak i 3D, a efekty graficzne są tutaj na bardzo wysokim poziomie. Cała technologia jest oparta o MS DirectX od wersji 9.0c, co powoduje, że wspiera wszelką grafikę wektorową SPLASH SCREEN Ponieważ, jak wspomniano w specyfikacji projektu, WPF wymaga załadowania kilku bibliotek DirectX, oraz wygenerowania pewnej liczby elementów graficznych, pierwsze uruchomienie aplikacji zajmuje trochę czasu. Z tego powodu w projekcie po raz pierwszy uwzględniono okno powitalne, które aktualnie stosuje praktycznie w każdej aplikacji. Okienko pojawia się tuż po uruchomieniu aplikacji, i znika w chwili załadowania się okienka głównego z wygenerowaną i przygotowaną grafiką. Wówczas pojawia się główne okienko programu. Jest praktycznie jedyna rola tego elementu graficznego (Rys.9.) aplikacji. Rys.9. Splash Screen aplikacji KnapsackProblem 25

26 OKNO GŁÓWNE APLIKACJI Interfejs programu stanowi główne okno aplikacji przedstawione na Rys.10. Rys.10. Główne okienko aplikacji Po lewej widzimy zbiór przykładowych przedmiotów w postaci ikon. Każdy przedmiot stanowi osobny komponent UI, który posiada trzy właściwości: Nazwę (String), Wagę (int), Wartość (int). Dzięki nim klikając na konkretny element dwukrotnie jesteśmy w stanie w prosty sposób modyfikować te właściwości, wraz ze zmianą pojemności plecaka (Rys.11.) 26

27 Rys.11. Modyfikacja parametrów dostępnych przedmiotów Oznaczenia na rysunku dotyczą w tym przypadku obiektu Lornetka. Oczywiście nazwa przedmiotu może również zostać zmodyfikowana w tym okienku. Klikając OK zatwierdzamy wprowadzone zmiany ROZWIAZANIE PROBLEMU Gdy skonfigurowaliśmy przedmioty w wymagany sposób możemy przystąpić do obejrzenia wyników. Ponieważ obiektów jest dość mało, obliczenia trwają ułamek sekundy. W tym celu wystarczy kliknąć na plecak (Rys.12.), co powoduje uruchomienia algorytmu. Rys.12. Przycisk rozwiązujący problem 27

28 Wynik otrzymujemy w postaci wartości plecaka, który został optymalnie upakowany (Rys. 13.). Rys.13. Wynik obliczeń W przypadku domyślnych ustawień przedmiotów wartość ta wynosi 38. Dodatkowo, ponieważ algorytm wykorzystuje drugą wersję metody rozwiązującej, mamy możliwość obejrzenia tablicy cząstkowych wyników, które zostały wykorzystane podczas rozwiązywania. W tym celu klikamy fioletową tabelę w prawym górnym rogu otwartego okienka (Rys. 14.). Rys.14. Przycisk pokazujący tabelę rozwiązań cząstkowych 28

29 Pojawi się wówczas okienko z tabelą, której kolejno numerowane wiersze odpowiadają kolejnym rozmiarom plecaka, natomiast pierwszy wiersz to indeksy kolumn numery przedmiotów (pula). Rozwiązanie optymalne znajduje się w prawym dolnym rogu tabeli (Rys. 15.). Rys.15. Wynik obliczeń w postaci tabeli rozwiązań cząstkowych Poszczególne okienka zamyka się z reguły klikając na nie, jednakże w przypadku tabeli korzystamy z przycisku w kształcie litery X. 29

30 3. WYDAJNOŚĆ I WYMAGANIA WYMAGANIA APLIKACJI 3.1 Program został napisany z uwzględnieniem następujących wymogów 1. System Microsoft Windows XP SP3 lub nowszy 2. Zainstalowany MS Framework 3.5 SP1 3. Komputer z procesorem co najmniej 800MHz 4. Z minimalną ilością pamięci operacyjnej 256MB 5. Miejscem na dysku twardym ok. 2MB 6. Dodatkowo system koniecznie musi posiadać Microsoft DirectX 9.0c lub nowszy (Win XP posiada już zainstalowany ten zestaw modułów) WYDAJNOŚĆ 3.2 Aplikacja została przetestowana pod względem realizacji wielokrotnego rozwiązywania problemu dostępnymi dwoma sposobami, w celu wykazania różnicy. Testy wykonano na dość szybkim komputerze Athlon Core 2 Duo 4.2GHz, pamięci operacyjnej 2GB/800MHz, dysku twardym ATA, oraz systemie operacyjnym MS Windows XP spełniającym stawiane wcześniej wymagania. 16 Zależność czasu wykonywania algorytmów od ilości dostępnych przedmiotów Pojemnoość plecaka P = 150 Czas wykonywania algorytmów [ms] Algorytm wykorzystujący tablicę 2D danych cząstkowych Algorytm zoptymalizowany, wykorzystuje jeden wektor danych Ilość dostępnych przedmiotów n 30

31 3 Zależność czasu wykonywania algorytmów od rozmiaru plecaka Ilość przedmiotów n = 100 Czas wykonywania algorytmów [ms] 2,5 2 1,5 1 0,5 0 Algorytm zoptymalizowany, wykorzystuje jeden wektor danych Algorytm wykorzystujący tablicę 2D danych cząstkowych Rozmiar plecaka P Przedstawione wykresy ilustrują wpływ poszczególnych parametrów na czasy wykonywania algorytmów. Widzimy, że oba wykresy wyraźnie wraz ze wzrostem rozmiaru plecaka i ilości przedmiotów zaczynają rozbiegać się w stronę nieskończoności. Jest to spowodowane różnicami w algorytmach, które testowano. Przedstawione dwa podejścia wyraźnie ilustrują przewagę drugiej metody nad pierwszą. Optymalizacja zajętości pamięci spowodowała również przyspieszenie algorytmu. W ogólnym rozrachunku są to dość duże zmiany, skąd wniosek, że optymalizacja działa bardzo dobrze. Dla formalności testy realizowano poprzez wczytywanie danych z plików wejściowych. Początkowo wygenerowano odpowiednie zestawy danych, następnie wczytywano je i przetwarzano. Podczas pomiaru czasu uwzględniono tylko czas wykonywania się algorytmu, zaniechano pomiaru całościowego wraz z odczytem danych, gdyż byłoby to nie obiektywne (różne prędkości dysków twardych itp.) 31

32 4. BIBLIOGRAFIA 1. Sysło M., Deo N., Kowalik J. Algorytmy optymalizacji dyskretnej. PWN Warszawa Wikipedia wolna encyklopedia: 3. Studia informatyczne beta: Opracowania z zakresu programowania dynamicznego i zaawansowanego 4. Wykład z programowania dynamicznego: 32

Programowanie dynamiczne cz. 2

Programowanie dynamiczne cz. 2 Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy

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

Schemat programowania dynamicznego (ang. dynamic programming)

Schemat programowania dynamicznego (ang. dynamic programming) Schemat programowania dynamicznego (ang. dynamic programming) Jest jedną z metod rozwiązywania problemów optymalizacyjnych. Jej twórcą (1957) był amerykański matematyk Richard Ernest Bellman. Schemat ten

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 006 Wydajność systemu 2 SO i SK/WIN Najprostszym sposobem na poprawienie wydajności systemu, jeżeli dysponujemy zbyt małą ilością pamięci RAM

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

Bardziej szczegółowo

Expo Composer. www.doittechnology.pl 1. Garncarska 5 70-377 Szczecin tel.: +48 91 404 09 24 e-mail: info@doittechnology.pl. Dokumentacja użytkownika

Expo Composer. www.doittechnology.pl 1. Garncarska 5 70-377 Szczecin tel.: +48 91 404 09 24 e-mail: info@doittechnology.pl. Dokumentacja użytkownika Expo Composer Dokumentacja użytkownika Wersja 1.0 www.doittechnology.pl 1 SPIS TREŚCI 1. O PROGRAMIE... 3 Wstęp... 3 Wymagania systemowe... 3 Licencjonowanie... 3 2. PIERWSZE KROKI Z Expo Composer... 4

Bardziej szczegółowo

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for. Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9

Bardziej szczegółowo

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania

Modele i narzędzia optymalizacji w systemach informatycznych zarządzania Politechnika Poznańska Modele i narzędzia optymalizacji w systemach informatycznych zarządzania Joanna Józefowska POZNAŃ 2010/11 Spis treści Rozdział 1. Metoda programowania dynamicznego........... 5

Bardziej szczegółowo

6.4. Efekty specjalne

6.4. Efekty specjalne 6.4. Efekty specjalne W programie MS PowerPoint 2010 znajdziemy coś takiego jak efekty specjalne. Służą one po to by prezentacja nie stała się monotonna i zachęcała widzów do uwagi poprzez zastosowane

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne Algorytmy i struktury danych Wykład VIII Elementarne techniki algorytmiczne Co dziś? Algorytmy zachłanne (greedyalgorithms) 2 Tytułem przypomnienia metoda dziel i zwyciężaj. Problem można podzielić na

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

Sortowanie zewnętrzne

Sortowanie zewnętrzne Algorytmy i struktury danych Instytut Sterowania i Systemów Informatycznych Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski Sortowanie zewnętrzne 1 Wstęp Bardzo często

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

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania Analiza i projektowanie oprogramowania 1/32 Analiza i projektowanie oprogramowania 2/32 Cel analizy Celem fazy określania wymagań jest udzielenie odpowiedzi na pytanie:

Bardziej szczegółowo

Programowanie obiektowe

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

Bardziej szczegółowo

Makropolecenia w Excelu

Makropolecenia w Excelu Makropolecenia w Excelu Trochę teorii Makropolecenie w skrócie nazywane makro ma za zadanie automatyczne wykonanie powtarzających się po sobie określonych czynności. Na przykładzie arkusza kalkulacyjnego

Bardziej szczegółowo

Algorytmy sortujące i wyszukujące

Algorytmy sortujące i wyszukujące Algorytmy sortujące i wyszukujące Zadaniem algorytmów sortujących jest ułożenie elementów danego zbioru w ściśle określonej kolejności. Najczęściej wykorzystywany jest porządek numeryczny lub leksykograficzny.

Bardziej szczegółowo

Złożoność obliczeniowa zadania, zestaw 2

Złożoność obliczeniowa zadania, zestaw 2 Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze

Bardziej szczegółowo

Temat: Algorytmy zachłanne

Temat: Algorytmy zachłanne Temat: Algorytmy zachłanne Algorytm zachłanny ( ang. greedy algorithm) wykonuje zawsze działanie, które wydaje się w danej chwili najkorzystniejsze. Wybiera zatem lokalnie optymalną możliwość w nadziei,

Bardziej szczegółowo

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod

Bardziej szczegółowo

Dodatek Solver Teoria Dodatek Solver jest częścią zestawu poleceń czasami zwaną narzędziami analizy typu co-jśli (analiza typu co, jeśli?

Dodatek Solver Teoria Dodatek Solver jest częścią zestawu poleceń czasami zwaną narzędziami analizy typu co-jśli (analiza typu co, jeśli? Dodatek Solver Teoria Dodatek Solver jest częścią zestawu poleceń czasami zwaną narzędziami analizy typu co-jśli (analiza typu co, jeśli? : Proces zmieniania wartości w komórkach w celu sprawdzenia, jak

Bardziej szczegółowo

Algorytmy i struktury danych.

Algorytmy i struktury danych. Algorytmy i struktury danych. Wykład 4 Krzysztof M. Ocetkiewicz Krzysztof.Ocetkiewicz@eti.pg.gda.pl Katedra Algorytmów i Modelowania Systemów, WETI, PG Problem plecakowy mamy plecak o określonej pojemności

Bardziej szczegółowo

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII Spis treści Od autora..................................................... Obliczenia inżynierskie i naukowe.................................. X XII Ostrzeżenia...................................................XVII

Bardziej szczegółowo

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) 16.01.2003 Algorytmy i Struktury Danych PIŁA ALGORYTMY ZACHŁANNE czas [ms] Porównanie Algorytmów Rozwiązyjących problem TSP 100 000 000 000,000 10 000 000

Bardziej szczegółowo

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

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

Bardziej szczegółowo

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

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

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

OPROGRAMOWANIE DEFSIM2

OPROGRAMOWANIE DEFSIM2 Politechnika Warszawska Wydział Elektroniki i Technik Informacyjnych OPROGRAMOWANIE DEFSIM2 Instrukcja użytkownika mgr inż. Piotr Trochimiuk, mgr inż. Krzysztof Siwiec, prof. nzw. dr hab. inż. Witold Pleskacz

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 5 Prof. dr hab. inż. Jan Magott DMT rozwiązuje problem decyzyjny π przy kodowaniu e w co najwyżej wielomianowym czasie, jeśli dla wszystkich łańcuchów wejściowych

Bardziej szczegółowo

Maciej Piotr Jankowski

Maciej Piotr Jankowski Reduced Adder Graph Implementacja algorytmu RAG Maciej Piotr Jankowski 2005.12.22 Maciej Piotr Jankowski 1 Plan prezentacji 1. Wstęp 2. Implementacja 3. Usprawnienia optymalizacyjne 3.1. Tablica ekspansji

Bardziej szczegółowo

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4 Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Algorytmy i struktury danych Laboratorium Nr 4 Algorytmy sortowania zewnętrznego 1 Wstęp Bardzo często przy rozwiązywaniu praktycznych

Bardziej szczegółowo

Projektowanie i analiza algorytmów

Projektowanie i analiza algorytmów POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Projektowanie i analiza algorytmów www.pk.edu.pl/~zk/piaa_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład

Bardziej szczegółowo

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska Katedra Cybernetyki i Robotyki Politechnika Wrocławska Kurs: Zaawansowane metody programowania Copyright c 2014 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania

Bardziej szczegółowo

4.2. Ustawienia programu

4.2. Ustawienia programu 4.2. Ustawienia programu Zmiana wielkości dokumentu Pracując w programie MS Excel 2010 niejednokrotnie doświadczysz sytuacji, w której otwarty przez Ciebie arkusz nie będzie mieścił się na ekranie monitora.

Bardziej szczegółowo

Zad. 3: Układ równań liniowych

Zad. 3: Układ równań liniowych 1 Cel ćwiczenia Zad. 3: Układ równań liniowych Wykształcenie umiejętności modelowania kluczowych dla danego problemu pojęć. Definiowanie właściwego interfejsu klasy. Zwrócenie uwagi na dobór odpowiednich

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca

Bardziej szczegółowo

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE WINDOWS 1 SO i SK/WIN 005 Plik wymiany Pamięć wirtualna 2 SO i SK/WIN Plik wymiany - rodzaj pamięci wirtualnej komputerów. Plik ten służy do tymczasowego przechowywania

Bardziej szczegółowo

Zagadnienia programowania liniowego dotyczą modelowania i optymalizacji wielu problemów decyzyjnych, na przykład:

Zagadnienia programowania liniowego dotyczą modelowania i optymalizacji wielu problemów decyzyjnych, na przykład: Programowanie liniowe. 1. Aktywacja polecenia Solver. Do narzędzia Solver można uzyskać dostęp za pomocą polecenia Dane/Analiza/Solver, bądź Narzędzia/Solver (dla Ex 2003). Jeżeli nie można go znaleźć,

Bardziej szczegółowo

Tabele przestawne tabelą przestawną. Sprzedawcy, Kwartały, Wartości. Dane/Raport tabeli przestawnej i wykresu przestawnego.

Tabele przestawne tabelą przestawną. Sprzedawcy, Kwartały, Wartości. Dane/Raport tabeli przestawnej i wykresu przestawnego. Tabele przestawne Niekiedy istnieje potrzeba dokonania podsumowania zawartości bazy danych w formie dodatkowej tabeli. Tabelę taką, podsumowującą wybrane pola bazy danych, nazywamy tabelą przestawną. Zasady

Bardziej szczegółowo

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

lekcja 8a Gry komputerowe MasterMind

lekcja 8a Gry komputerowe MasterMind lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych

Bardziej szczegółowo

Informatyka II. Laboratorium Aplikacja okienkowa

Informatyka II. Laboratorium Aplikacja okienkowa Informatyka II Laboratorium Aplikacja okienkowa Założenia Program będzie obliczał obwód oraz pole trójkąta na podstawie podanych zmiennych. Użytkownik będzie poproszony o podanie długości boków trójkąta.

Bardziej szczegółowo

Układy VLSI Bramki 1.0

Układy VLSI Bramki 1.0 Spis treści: 1. Wstęp... 2 2. Opis edytora schematów... 2 2.1 Dodawanie bramek do schematu:... 3 2.2 Łączenie bramek... 3 2.3 Usuwanie bramek... 3 2.4 Usuwanie pojedynczych połączeń... 4 2.5 Dodawanie

Bardziej szczegółowo

ZAGADNIENIE TRANSPORTOWE

ZAGADNIENIE TRANSPORTOWE ZAGADNIENIE TRANSPORTOWE ZT jest specyficznym problemem z zakresu zastosowań programowania liniowego. ZT wykorzystuje się najczęściej do: optymalnego planowania transportu towarów, przy minimalizacji kosztów,

Bardziej szczegółowo

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia nowego projektu (poniżej są utworzone projekty) Po kliknięciu

Bardziej szczegółowo

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli Diagnostyka stanu nawierzchni - DSN Generalna Dyrekcja Dróg Krajowych i Autostrad Warszawa, 21 maja 2012 Historia dokumentu

Bardziej szczegółowo

Optymalizacja systemów

Optymalizacja systemów Optymalizacja systemów Laboratorium Sudoku autor: A. Gonczarek Cel zadania Celem zadania jest napisanie programu rozwiązującego Sudoku, formułując problem optymalizacji jako zadanie programowania binarnego.

Bardziej szczegółowo

1. Pamięć wirtualna. 2. Optymalizacja pliku pamięci wirtualnej

1. Pamięć wirtualna. 2. Optymalizacja pliku pamięci wirtualnej 1. Pamięć wirtualna Jeśli na komputerze brakuje pamięci RAM wymaganej do uruchomienia programu lub wykonania operacji, system Windows korzysta z pamięci wirtualnej, aby zrekompensować ten brak. Aby sprawdzić,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - wprowadzenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 Klasa zbiór pól i metod Obiekt

Bardziej szczegółowo

Zastosowanie Informatyki w Medycynie

Zastosowanie Informatyki w Medycynie Zastosowanie Informatyki w Medycynie Dokumentacja projektu wykrywanie bicia serca z sygnału EKG. (wykrywanie załamka R) Prowadzący: prof. dr hab. inż. Marek Kurzyoski Grupa: Jakub Snelewski 163802, Jacek

Bardziej szczegółowo

Instrukcja obsługi programu Do-Exp

Instrukcja obsługi programu Do-Exp Instrukcja obsługi programu Do-Exp Autor: Wojciech Stark. Program został utworzony w ramach pracy dyplomowej na Wydziale Chemicznym Politechniki Warszawskiej. Instrukcja dotyczy programu Do-Exp w wersji

Bardziej szczegółowo

Microsoft EXCEL SOLVER

Microsoft EXCEL SOLVER Microsoft EXCEL SOLVER 1. Programowanie liniowe z wykorzystaniem dodatku Microsoft Excel Solver Cele Po ukończeniu tego laboratorium słuchacze potrafią korzystając z dodatku Solver: formułować funkcję

Bardziej szczegółowo

5.4. Tworzymy formularze

5.4. Tworzymy formularze 5.4. Tworzymy formularze Zastosowanie formularzy Formularz to obiekt bazy danych, który daje możliwość tworzenia i modyfikacji danych w tabeli lub kwerendzie. Jego wielką zaletą jest umiejętność zautomatyzowania

Bardziej szczegółowo

Projektowanie baz danych za pomocą narzędzi CASE

Projektowanie baz danych za pomocą narzędzi CASE Projektowanie baz danych za pomocą narzędzi CASE Metody tworzenia systemów informatycznych w tym, także rozbudowanych baz danych są komputerowo wspomagane przez narzędzia CASE (ang. Computer Aided Software

Bardziej szczegółowo

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

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

wagi cyfry 7 5 8 2 pozycje 3 2 1 0

wagi cyfry 7 5 8 2 pozycje 3 2 1 0 Wartość liczby pozycyjnej System dziesiętny W rozdziale opiszemy pozycyjne systemy liczbowe. Wiedza ta znakomicie ułatwi nam zrozumienie sposobu przechowywania liczb w pamięci komputerów. Na pierwszy ogień

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 2. Prof. dr hab. inż. Jan Magott Metody konstrukcji algorytmów: Siłowa (ang. brute force), Dziel i zwyciężaj (ang. divide-and-conquer), Zachłanna (ang.

Bardziej szczegółowo

Zadania laboratoryjne i projektowe - wersja β

Zadania laboratoryjne i projektowe - wersja β Zadania laboratoryjne i projektowe - wersja β 1 Laboratorium Dwa problemy do wyboru (jeden do realizacji). 1. Water Jug Problem, 2. Wieże Hanoi. Water Jug Problem Ograniczenia dla każdej z wersji: pojemniki

Bardziej szczegółowo

Zapisywanie algorytmów w języku programowania

Zapisywanie algorytmów w języku programowania Temat C5 Zapisywanie algorytmów w języku programowania Cele edukacyjne Zrozumienie, na czym polega programowanie. Poznanie sposobu zapisu algorytmu w postaci programu komputerowego. Zrozumienie, na czym

Bardziej szczegółowo

Programowanie celowe #1

Programowanie celowe #1 Programowanie celowe #1 Problem programowania celowego (PC) jest przykładem problemu programowania matematycznego nieliniowego, który można skutecznie zlinearyzować, tzn. zapisać (i rozwiązać) jako problem

Bardziej szczegółowo

Polcode Code Contest PHP-10.09

Polcode Code Contest PHP-10.09 Polcode Code Contest PHP-10.09 Przedmiotem konkursu jest napisanie w języku PHP programu, którego wykonanie spowoduje rozwiązanie zadanego problemu i wyświetlenie rezultatu. Zadanie konkursowe Celem zadania

Bardziej szczegółowo

Algorytmy zachłanne. dr inż. Urszula Gałązka

Algorytmy zachłanne. dr inż. Urszula Gałązka Algorytmy zachłanne dr inż. Urszula Gałązka Algorytm zachłanny O Dokonuje wyboru, który w danej chwili wydaje się najkorzystniejszy. O Mówimy, że jest to wybór lokalnie optymalny O W rzeczywistości nie

Bardziej szczegółowo

Ćwiczenia nr 4. Arkusz kalkulacyjny i programy do obliczeń statystycznych

Ćwiczenia nr 4. Arkusz kalkulacyjny i programy do obliczeń statystycznych Ćwiczenia nr 4 Arkusz kalkulacyjny i programy do obliczeń statystycznych Arkusz kalkulacyjny składa się z komórek powstałych z przecięcia wierszy, oznaczających zwykle przypadki, z kolumnami, oznaczającymi

Bardziej szczegółowo

Sposób tworzenia tabeli przestawnej pokażę na przykładzie listy krajów z podstawowymi informacjami o nich.

Sposób tworzenia tabeli przestawnej pokażę na przykładzie listy krajów z podstawowymi informacjami o nich. Tabele przestawne Tabela przestawna to narzędzie służące do tworzenia dynamicznych podsumowań list utworzonych w Excelu lub pobranych z zewnętrznych baz danych. Raporty tabeli przestawnej pozwalają na

Bardziej szczegółowo

Wprowadzenie do projektu QualitySpy

Wprowadzenie do projektu QualitySpy Wprowadzenie do projektu QualitySpy Na podstawie instrukcji implementacji prostej funkcjonalności. 1. Wstęp Celem tego poradnika jest wprowadzić programistę do projektu QualitySpy. Będziemy implementować

Bardziej szczegółowo

Instrukcja obsługi. Helpdesk. Styczeń 2018

Instrukcja obsługi. Helpdesk. Styczeń 2018 Instrukcja obsługi Helpdesk Styczeń 2018 1 Spis treści: Ogólna obsługa Helpdesk...3 1. Logowanie do systemu....3 2. Menu główne...3 2.1 Strona domowa...4 2.2 Zmiana hasła...6 3. Otwarcie zgłoszenia...6

Bardziej szczegółowo

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

Bardziej szczegółowo

DODAWANIE ARTYKUŁÓW DO STRONY INTERNETOWEJ

DODAWANIE ARTYKUŁÓW DO STRONY INTERNETOWEJ DODAWANIE ARTYKUŁÓW DO STRONY INTERNETOWEJ Aby dodać artykuł musimy się zalogować. W tym celu wchodzimy na stronę http://sp1.brzesckujawski.pl/3/administrator/, wprowadzamy swoje dane: Nazwę użytkownika,

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Pomorski Czarodziej 2016 Zadania. Kategoria C

Pomorski Czarodziej 2016 Zadania. Kategoria C Pomorski Czarodziej 2016 Zadania. Kategoria C Poniżej znajduje się 5 zadań. Za poprawne rozwiązanie każdego z nich możesz otrzymać 10 punktów. Jeżeli otrzymasz za zadanie maksymalną liczbę punktów, możesz

Bardziej szczegółowo

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu?

Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu? Jak przygotować pliki gotowe do publikacji w sieci za pomocą DigitLabu? Po zainstalowaniu DigitLabu na komputerze otrzymujemy pakiet programów niezbędnych do przygotowania cyfrowych wersji obiektów tekstowych.

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

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Rozdział 5: Style tekstu

Rozdział 5: Style tekstu 5. STYLE TEKSTU Posługując się edytorem MS Word trudno nie korzystać z możliwości jaką daje szybkie formatowanie z użyciem stylów. Stylem określa się zestaw parametrów formatowych, któremu nadano określoną

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych POLITECHNIKA KRAKOWSKA - WIEiK KATEDRA AUTOMATYKI i TECHNIK INFORMACYJNYCH Algorytmy i Struktury Danych www.pk.edu.pl/~zk/aisd_hp.html Wykładowca: dr inż. Zbigniew Kokosiński zk@pk.edu.pl Wykład 9: Programowanie

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Stawiamy pierwsze kroki

Stawiamy pierwsze kroki Stawiamy pierwsze kroki 3.1. Stawiamy pierwsze kroki Edytory tekstu to najbardziej popularna odmiana programów służących do wprowadzania i zmieniania (czyli edytowania) tekstów. Zalicza się je do programów

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014

Modelowanie diagramów klas w języku UML. Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Modelowanie diagramów klas w języku UML Łukasz Gorzel 244631@stud.umk.pl 7 marca 2014 Czym jest UML - Unified Modeling Language - Rodzina języków modelowania graficznego - Powstanie na przełomie lat 80

Bardziej szczegółowo

Rys.1. Technika zestawiania części za pomocą polecenia WSTAWIAJĄCE (insert)

Rys.1. Technika zestawiania części za pomocą polecenia WSTAWIAJĄCE (insert) Procesy i techniki produkcyjne Wydział Mechaniczny Ćwiczenie 3 (2) CAD/CAM Zasady budowy bibliotek parametrycznych Cel ćwiczenia: Celem tego zestawu ćwiczeń 3.1, 3.2 jest opanowanie techniki budowy i wykorzystania

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Publikacja jest dystrybuowana bezpłatnie Program Operacyjny Kapitał Ludzki Priorytet 9 Działanie 9.1 Poddziałanie

Bardziej szczegółowo

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

Bardziej szczegółowo

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

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem. Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -

Bardziej szczegółowo

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI 1 Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI 1. Obliczenia w arkuszu kalkulacyjnym Rozwiązywanie problemów z wykorzystaniem aplikacji komputerowych obliczenia w arkuszu kalkulacyjnym wykonuje

Bardziej szczegółowo

Projekt ZSWS. Instrukcja uŝytkowania narzędzia SAP Business Explorer Analyzer. 1 Uruchamianie programu i raportu. Tytuł: Strona: 1 z 31

Projekt ZSWS. Instrukcja uŝytkowania narzędzia SAP Business Explorer Analyzer. 1 Uruchamianie programu i raportu. Tytuł: Strona: 1 z 31 Strona: 1 z 31 Explorer Analyzer 1 Uruchamianie programu i raportu PoniŜsze czynności uruchamiają program Bex Analyzer oraz wybrany raport z hurtowni danych. 1. uruchom z menu Start>Programy>Business Explorer>Analyzer

Bardziej szczegółowo

UMOWY INSTRUKCJA STANOWISKOWA

UMOWY INSTRUKCJA STANOWISKOWA UMOWY INSTRUKCJA STANOWISKOWA Klawisze skrótów: F7 wywołanie zapytania (% - zastępuje wiele znaków _ - zastępuje jeden znak F8 wyszukanie według podanych kryteriów (system rozróżnia małe i wielkie litery)

Bardziej szczegółowo

Instrukcja laboratoryjna cz.3

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:

Bardziej szczegółowo

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

- 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

Bardziej szczegółowo

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

Wykład 3 Składnia języka C# (cz. 2) Wizualne systemy programowania Wykład 3 Składnia języka C# (cz. 2) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Metody 2 Metody W C# nie jest

Bardziej szczegółowo

Programowanie dynamiczne

Programowanie dynamiczne Programowanie dynamiczne Ciąg Fibonacciego fib(0)=1 fib(1)=1 fib(n)=fib(n-1)+fib(n-2), gdzie n 2 Elementy tego ciągu stanowią liczby naturalne tworzące ciąg o takiej własności, że kolejny wyraz (z wyjątkiem

Bardziej szczegółowo

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu.

Tutorial prowadzi przez kolejne etapy tworzenia projektu począwszy od zdefiniowania przypadków użycia, a skończywszy na konfiguracji i uruchomieniu. AGH, EAIE, Informatyka Winda - tutorial Systemy czasu rzeczywistego Mirosław Jedynak, Adam Łączyński Spis treści 1 Wstęp... 2 2 Przypadki użycia (Use Case)... 2 3 Diagramy modelu (Object Model Diagram)...

Bardziej szczegółowo

Rozkład materiału do zajęć z informatyki. realizowanych według podręcznika

Rozkład materiału do zajęć z informatyki. realizowanych według podręcznika Rozkład materiału do zajęć z informatyki realizowanych według podręcznika E. Gurbiel, G. Hardt-Olejniczak, E. Kołczyk, H. Krupicka, M.M. Sysło Informatyka, nowe wydanie z 007 roku Poniżej przedstawiamy

Bardziej szczegółowo

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot. Rozpoznawanie obrazu Implementujesz oprogramowanie do rozpoznawania obrazu dla robota. Za każdym razem, gdy robot robi zdjęcie kamerą, jest ono zapisywane jako czarno-biały obraz w pamięci robota. Każdy

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2010/2011 Wykład nr 7 (24.01.2011) dr inż. Jarosław Forenc Rok akademicki

Bardziej szczegółowo

Zaawansowane aplikacje WWW - laboratorium

Zaawansowane aplikacje WWW - laboratorium Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w

Bardziej szczegółowo