STOSY ABSTRACT DATA TYPES (ADT) STOS ADT ZASTOSOWANIA STOSÓW WYJĄTKI PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI STOSY, KOLEJKI, LISTY

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

Download "STOSY ABSTRACT DATA TYPES (ADT) STOS ADT ZASTOSOWANIA STOSÓW WYJĄTKI PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI STOSY, KOLEJKI, LISTY"

Transkrypt

1 PROJEKTOWNIE LGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI STOSY, KOLEJKI, LISTY STOSY 1 Wykład 3 d inż. Łukasz Jeleń Na podstawie wykładów d. T. Fevensa 2 STRCT DT TYPES (DT) STOS DT bstact data type (DT) jest abstakcją stuktuy danych DT deiniuje: Pzechowywane dane Opeacje na danych Deinicję możliwych błędów tych opeacji Pzykład: DT modelujące posty system obotu papieami watościowymi Pzechowywane dane to zamówienia kupna/spzedaży Dostępne opeacje: zamówienie kupna(akcja, udziały, cena) zamówienie spzedaży(akcja, udziały, cena) void cancel(zamówienie) Wyjątki: Kupno/Spzedaż nieistniejąca akcja Cancel nieistniejące zamównienie DT dla stosu pzechowuje dowolne obiekty Dodawanie i usuwanie wykonywane jest na zasadzie LIFO - Last-in Fist-out Można pzyównać do zabawki dozującej cukieki (PEZ) Opeacje na stosie: push(element): dodawanie elementu element pop(): usuwa i zwaca element z wiezchu stosu Dodatkowe opeacje na stosach: object top(): zwaca ostatni element umieszczony na stosie bez jego usuwania intege size(): zwaca ilość pzechowywanych elementów boolean isempty(): mówi, czy są jakieś elementy pzechowywane na stosie 3 4 WYJĄTKI ZSTOSOWNI STOSÓW Póba wywołania opeacji DT może czasami powadzić do wystąpienia błędów, któe nazywamy wyjątkami Exceptions Wyjątki są wyzucane (thown) pzez opeacje i nie mogą być wykonywane Dla stosu opeacje pop i top nie mogą zostać wykonane, jeśli stos jest pusty Póba wywołania metody pop i top dla pustego stosu wyzuci wyjątek EmptyStackException Zastosowania bezpośednie Histoia odwiedzanych ston w pzeglądace intenetowej Sekwencja opeacji conij w edytoze tekstu Łańcuch wywołania metod w Witualnej maszynie Javy Zastosowania pośednie Pomocnicza stuktua danych dla algoytmów Składowa innych stuktu danych 5 6

2 STOS WYWOŁŃ W C++ STOS WYWOŁŃ W C++ C++ kontoluje łańcuch wywołań unkcji za pomocą stosu Kiedy jakaś unkcja jest wywoływana, system dodaje do stosu amkę zawieającą: Zmienne lokalne i watość zwacaną z unkcji Licznik pogamu kontolujący wywoływane Jeśli unkcja kończy swoje działanie, to amka jest pobieana ze stosu (pop()), a kontola jest pzekazywana do metody na góze stosu. Pozwala na stosowanie ekuencji main() { int i = 5; oo(i); oo(int j) { int k; k = j+1; ba(k); ba(int m) { main PC = 2 i = 5 C++ kontoluje łańcuch wywołań unkcji za pomocą stosu Kiedy jakaś unkcja jest wywoływana, system dodaje do stosu amkę zawieającą: Zmienne lokalne i watość zwacaną z unkcji Licznik pogamu kontolujący wywoływane Jeśli unkcja kończy swoje działanie, to amka jest pobieana ze stosu (pop()), a kontola jest pzekazywana do metody na góze stosu. Pozwala na stosowanie ekuencji main() { int i = 5; oo(i); oo(int j) { int k; k = j+1; ba(k); ba(int m) { oo PC = 3 j = 5 k = 6 main PC = 2 i = STOS WYWOŁŃ W C++ STOS WYWOŁŃ W C++ C++ kontoluje łańcuch wywołań unkcji za pomocą stosu Kiedy jakaś unkcja jest wywoływana, system dodaje do stosu amkę zawieającą: Zmienne lokalne i watość zwacaną z unkcji Licznik pogamu kontolujący wywoływane Jeśli unkcja kończy swoje działanie, to amka jest pobieana ze stosu (pop()), a kontola jest pzekazywana do metody na góze stosu. Pozwala na stosowanie ekuencji main() { int i = 5; oo(i); oo(int j) { int k; k = j+1; ba(k); ba(int m) { ba PC = 1 m = 6 oo PC = 3 j = 5 k = 6 main PC = 2 i = 5 C++ kontoluje łańcuch wywołań unkcji za pomocą stosu Kiedy jakaś unkcja jest wywoływana, system dodaje do stosu amkę zawieającą: Zmienne lokalne i watość zwacaną z unkcji Licznik pogamu kontolujący wywoływane Jeśli unkcja kończy swoje działanie, to amka jest pobieana ze stosu (pop()), a kontola jest pzekazywana do metody na góze stosu. Pozwala na stosowanie ekuencji main() { int i = 5; oo(i); oo(int j) { int k; k = j+1; ba(k); ba(int m) { oo PC = 3 j = 5 k = 6 main PC = 2 i = STOS WYWOŁŃ W C++ STOS ZUJĄCY N TLICY C++ kontoluje łańcuch wywołań unkcji za pomocą stosu Kiedy jakaś unkcja jest wywoływana, system dodaje do stosu amkę zawieającą: Zmienne lokalne i watość zwacaną z unkcji Licznik pogamu kontolujący wywoływane Jeśli unkcja kończy swoje działanie, to amka jest pobieana ze stosu (pop()), a kontola jest pzekazywana do metody na góze stosu. Pozwala na stosowanie ekuencji main() { int i = 5; oo(i); oo(int j) { int k; k = j+1; ba(k); ba(int m) { main PC = 2 i = 5 Postym sposobem implementacji Stosu jest zastosowanie tablicy Dodajemy elementy od lewej do pawej Dodatkowa zmienna kontolująca indeks elementu na wiezchu stosu S lgoytm size() etun t + 1 lgoytm pop() i isempty() then thow EmptyStackException else t t 1 etun S[t + 1] t N

3 STOS ZUJĄCY N TLICY WYDJNOŚĆ I OGRNICZENI Tablica pzechowująca elementy stosu może się zapełnić Opeacja push() powinna zatem wyzucać wyjątek FullStackException Oganiczenie związane z implementacją bazującą na tablicy Nie zawsze występujące pzy implementacji stosu S lgoytm push(e) i t = S.length 1 then thow FullStackException else t t + 1 S[t] e t Wydajność Niech n będzie ilością elementów na stosie Wykozystane miejsce będzie ówne O(n) Każda opeacja będzie działała w czasie O(1) Oganiczenia Maksymalny ozmia stosu musi zostać zdeiniowany a pioi i nie może zostać zmieniony Póba dodania nowego elementu do pełnego stosu powoduje wyjątki typowe dla danej implementacji 9 10 STOS ZUJĄCY N POWIĘKSZNEJ TLICY PORÓWNNIE STRTEGII Wykonując opeację push, kiedy tablica jest pełna, zamiast wyzucania wyjątku, możemy możemy zastąpić ją większą tablicą Jak duża powinna być nowa tablica? Stategia inkementalna: zwiększ ozmia o stałą c Stategia podwajania: podwój ozmia tablicy lgoytm push(e) i t = S.length 1 then nowa tablica o ozmiaze o i 0 to t do [i] S[i] S t t + 1 S[t] e Poównamy stategię inkementalną i podwajania popzez analizę całkowitego czasu T(n) niezbędnego do wykonania n opeacji push() Zakładamy, że ozpoczynamy od pustego stosu epezentowanego pzez tablicę o ozmiaze 1 Czasem śednim będzie śedni czas opeacji push niezbędny do wykonania seii opeacji, np.: T(n)/n STRTEGI INKREMENTLN Tablica zostanie zastąpiona k = n/c azy Całkowity czas T(n) wykonania n opeacji push jest popocjonalny do: STRTEGI PODWJNI Tablica zostanie zastąpiona k = log 2 n azy n + c + 2c + 3c + 4c + + kc = n + c( k) = n + ck(k + 1)/2 Ponieważ c jest stałą, T(n) jest w O(n +k 2 ), tj. O(n 2 ) Śedni czas opeacji push jest w O(n) Całkowity czas T(n) wykonania n opeacji push jest popocjonalny do: n k = T(n) jest w O(n) n + 2 k+1-1 = 2n -1 Śedni czas opeacji push jest w O(1) ciąg geometyczny

4 INTERFEJS STOSU W C++ STOS ZUJĄCY N TLICY W C++ Inteejs jest odniesieniem do DT stosu Wymaga zdeiniowania klasy EmptyStackException Najbadziej zbliżoną konstukcją jest vecto template <typename Object> class Stack{ public: int size(); bool isempty(); Object& top() thow(emptystackexception); void push(object o); Object pop() thow(emptystackexception); template <typename Object> class TabStack{ pivate: int pojemnosc; //pojemność stosu Object *S //tablica stosu int top //góa stosu public: TabStack(int p){ pojemnosc = p; S = new Object[pojemnosc]; top = -1; bool isempty() {etun (top<0); Object pop() thow(emptystackexception){ i (isempty()) thow EmptyStackException ( Dostęp do pustego stosu ); etun S[top--]; // pozostałe unkcje ominięte SPRWDZNIE DOPSOWNI NWISÓW Każdy nawias (, {, lub [ musi być spaowany z odpowiadającym mu nawiasem ),, lub ] pawidłowo: ( )(( )){([( )]) pawidłowo: (( )(( )){([( )])) błędnie: )(( )){([( )]) błędnie: ({[ ]) błędnie: ( 17 DOPSOWNIE NWISÓW - LGORYTM lgoytm DopNawiasow(X,n): Wejście: Tablica X z n tokenami, z któych każdy jest albo symbolem gupującym, zmienną, opeatoem aytmetycznym lub liczbą Wyjście: tue wtedy i tylko wtedy, gdy symbole gupujące w X są dopasowane Niech S będzie pustym stosem o i 0 to n-1 do i X[i] jest symbolem otwieającym then S.push(X[i]) else i X[i] jest symbolem zamykającym then i S.isEmpty() then etun alse {nie było dopasowania i S.pop() nie jest dopasowaniem do X[i] then etun alse {niepawidłowy typ i S.isEmpty() then etun tue {wszystkie symbole zostały dopasowane else etun alse {niektóe symbole nigdy nie zostały dopasowane 18 KOLEJK DT KOLEJKI 19 Kolejka pzechowuje dowolne obiekty Dodawanie i usuwanie jest wykonywane według zasady FIFO - ist-in ist-out Elementy dodawane są na końcu kolejki, a usuwane z pzodu kolejki Główne opeacje na kolejce: enqueue(element): dodaje element na końcu kolejki element dequeue(): usuwa i zwaca element z początku kolejki Dodatkowe opeacje: element ont(): zwaca element na pzodzie listy bez usuwania go intege size(): zwaca ilość pzechowywanych elementów boolean isempty(): inomuje czy w kolejce są pzechowywane jakieś elementy Wyjątki Póba wywołania dequeue lub ont na pustej kolejce wyzuca EmptyueueException 20

5 PRZYKŁD KOLEJKI ZSTOSOWNI KOLEJEK Opeacja Wyjście enqueue(5) (5) enqueue(3) (5, 3) dequeue() 5 (3) enqueue(7) (3, 7) dequeue() 3 (7) ont() 7 (7) dequeue() 7 () dequeue() eo () isempty() tue() enqueue(9) (9) enqueue(7) (9, 7) size() 2 (9, 7) enqueue(3) (9, 7, 3) enqueue(5) (9, 7, 3, 5) dequeue() 9 (7, 3, 5) Zastosowanie bezpośednie Listy oczekujących, Dostęp do zasobów współdzielonych (np.:, dukaka), Multipogamming Zastosowania pośednie Pomocnicza stuktua danych dla algoytmów Składowa innych stuktu danych KOLEJK ZUJĄC N TLICY Zastosowanie tablicy o ozmiaze N w sposób okężny/kolisty Dwie zmienne kontolują pzód i tył kolejki indeks piewszego elementu indeks następny do ostatniego elementu Pozycja w tablicy jest pusta koniguacja tadycyjna koniguacja okólna OPERCJE N KOLEJCE Wykozystujemy opeato modulo lgoytm size() etun (N + ) mod N lgoytm isempty() etun ( = ) OPERCJE N KOLEJCE OPERCJE N KOLEJCE Opeacja enqueue wyzuca wyjątek jeśli tablica jest pełna Wyjątek jest zależny od implementacji lgoytm enqueue(e) i size() = N 1 then thow FullueueException else [] e ( + 1) mod N Opeacja dequeue wyzuca wyjątek jeśli kolejka jest pusta Ten wyjątek jest okeślony w DT dla kolejki lgoytm dequeue() i isempty() then thow EmptyueueException else temp [] ( + 1) mod N etun temp

6 ZSTOSOWNIE : SYMULTORY SYSTEMU KOŁOWEGO Możemy zaimplementować symulato systemu kołowego (tzw. systemu każdy z każdym) z zastosowaniem kolejki,, popzez wielokotne wywoływanie następujących koków: 1. e.dequeue() 2. Obsługa elementu e 3..enqueue(e) Kolejka KOLEJK ZUJĄC N POWIĘKSZNEJ TLICY Wykonując opeację enqueue, kiedy tablica jest pełna, zamiast wyzucania wyjątku, możemy możemy zastąpić ją większą tablicą nalogicznie do poceduy, któą omawialiśmy w pzypadku stosu Opeacja enqueue ma śedni czas działania: 1. Deque kolejny element 2. Obsłuż kolejny element Obsługa 3. Enqueue obsłużony element O(n) w pzypadku stategii inkementalnej O(1) w pzypadku stategii podwajającej NIEFORMLNY INTERFEJS KOLEJKI W C++ Wymaga zdeiniowania klasy EmptyueueException ak wbudowanego odpowiednika w klasie STL template <typename Object> class ueue{ public: int size(); bool isempty(); Object& ont() thow(emptyueueexception); void enqueue(object o); Object dequeue() thow(emptyueueexception); LISTY LISTY JEDNOKIERUNKOWE DEFINICJ WĘZŁ DL ELEMENTÓW LISTY element Węzeł Lista jednokieunkowa jest konketną stuktuą danych składającą się z sekwencji węzłów Każdy węzeł pzechowuje: element link do następnego węzła element następny węzeł template <typename E> class SNode{ pivate: E elem; SNode<E>* iend class SLinkedList<E> ; //węzeł listy jednokie. //watość elementu listy //następny elem. listy //dostęp dla listy //metody dostępu do danych: public E getelement() {etun elem; //metody modyikujące: public void setelement(e newe) {elem = newe; C D public SNode getnext() {etun ; public void setnext(node<e> newn) { = newn; 31 32

7 INTERFEJS KOLEJKI JEDNOKIERUNKOWEJ W C++ DODWNIE N POCZĄTKU template <typename E> class SLinkedList{ public: SLinkedList(); ~SLinkedList(); bool empty() const; const E& ont() const; void addfont(const E& e) void emovefont() pivate: SNode<E>* head; ; //lista jednokieunkowa //konstukto //destukto //spawdzanie czy lista jest pusta //zwaca piewszy element //dodawanie na początek listy //usuń piewszy element listy //początek listy 1. lokacja nowego węzła 2. Dodanie nowego elementu 3. Dodać powiązanie tak, aby nowy węzeł wskazywał na początek listy (stay head) 4. Uaktualnić head tak, aby wskazywało na nowy węzeł ZSTOSOWNIE KLSY SNODE USUWNIE Z PRZODU LISTY template <typename E> SLinkedList<E>::SLinkedList :head(null){ template <typename E> void SLinkedList<E>::addFont(const E& e){ SNode<E>* v = new SNode<E>; v->elem = e; v-> = head; head = v; template <typename E> void SLinkedList<E>::emoveFont(){ SNode<E>* old = head; head = old->; delete old; //konstukto //twozy pustą listę //dodawanie na pzodzie listy //twozy nowy węzeł //zapis danych //v wskazuje na head //v jest teaz head //usuwanie z pzodu listy //zapis bieżącego head //ominięcie staego head //usunięcie old 1. Uaktualnić head tak, aby wskazywało na kolejny element w liście 2. Usunąć piewszy węzeł DODWNIE Z TYŁU LISTY 1. lokacja nowego węzła 2. Dodanie nowego elementu 3. Dodać powiązanie tak, aby nowy węzeł wskazywał na 4. Dodać powiązanie tak, aby ostatni element wskazywał na nowy węzeł 5. Uaktualnić tail tak, aby wskazywało na nowy węzeł USUWNIE Z TYŁY LISTY Usuwanie elementów z tyłu listy jednokieunkowej nie jest wydajne! Nie da się pzepowadzić uaktualnienia tail tak, aby wskazywał na węzeł popzedzający w stałym czasie 37 38

8 LIST JEDNOKIERUNKOW JKO STOS Możemy zaimplementować stos za pomocą listy jednokieunkowej Góny element jest pzechowywany w piewszym węźle listy Wykozystanie miejsca to O(n), a każda opeacja stosu jest wykonywana w czasie O(1) t węzły LIST JEDNOKIERUNKOW JKO KOLEJK Możemy zaimplementować kolejkę za pomocą listy jednokieunkowej Element początkowy jest pzechowywany w piewszym węźle Ostatni element jest pzechowywany w ostatnim węźle Wykozystane miejsce to O(n), a każda opeacja kolejki jest wykonywana w czasie O(1) węzły elementy elementy Node<Sting> = new Node<Sting>(); Node<Sting> = new Node<Sting>(); ->setelement(new Sting( ed )); Node<Sting> = new Node<Sting>(); ->setelement(new Sting( ed )); Node<Sting> = new Node<Sting>(); ->setelement(new Sting( ed )); Node<Sting> = ; ed ed

9 Node<Sting> = new Node<Sting>(); ->setelement(new Sting( ed )); Node<Sting> = ; Node<Sting> = new Node<Sting>(); ->setelement(new Sting( ed )); Node<Sting> = ; = ; // jest eeencją do obiektu ed ed Node<Sting> = new Node<Sting>(); ->setelement(new Sting( ed )); Node<Sting> = ; = ; // jest eeencją do obiektu Node<Sting> = new Node<Sting>(); ->setelement(new Sting( ed )); Node<Sting> = ; = ; // jest eeencją do obiektu ->setelement(new Sting( PMSI )); ed ed Node<Sting> = new Node<Sting>(); ->setelement(new Sting( ed )); Node<Sting> = ; = ; // jest eeencją do obiektu ->setelement(new Sting( PMSI )); PMSI ed Node<Sting> = new Node<Sting>(); ->setelement(new Sting( ed )); Node<Sting> = ; = ; // jest eeencją do obiektu ->setelement(new Sting( PMSI )); ->setelement(new Sting( Montéal )); PMSI ed

10 Node<Sting> = new Node<Sting>(); ->setelement(new Sting( ed )); Node<Sting> = ; = ; // jest eeencją do obiektu ->setelement(new Sting( PMSI )); ->setelement(new Sting( Montéal )); PMSI ed Montéal II ->setnext(new Node<Sting>( PW,)); // konstukto PMSI II ->setnext(new Node<Sting>( PW,)); // konstukto II ->setnext(new Node<Sting>( PW,)); // konstukto.getnext().setelement(new Sting( Wykład )); PMSI PW PMSI PW II ->setnext(new Node<Sting>( PW,)); // konstukto.getnext().setelement(new Sting( Wykład )); II ->setnext(new Node<Sting>( PW,)); // konstukto.getnext().setelement(new Sting( Wykład )); =.getnext(); PMSI Wykład PW PMSI Wykład PW

11 II ->setnext(new Node<Sting>( PW,)); // konstukto.getnext().setelement(new Sting( Wykład )); =.getnext(); II ->setnext(new Node<Sting>( PW,)); // konstukto.getnext().setelement(new Sting( Wykład )); =.getnext(); PMSI Wykład PW PMSI Wykład PW II ->setnext(new Node<Sting>( PW,)); // konstukto.getnext().setelement(new Sting( Wykład )); =.getnext();.setnext(new Node<Sting>( Laboatoium,)); ; II ->setnext(new Node<Sting>( PW,)); // konstukto.getnext().setelement(new Sting( Wykład )); =.getnext();.setnext(new Node<Sting>( Laboatoium,)); ; PMSI Wykład PW PMSI Wykład PW Laboatoium

Metody getter https://www.python-course.eu/python3_object_oriented_programming.php 0_class http://interactivepython.org/runestone/static/pythonds/index.html https://www.cs.auckland.ac.nz/compsci105s1c/lectures/

Bardziej szczegółowo

Dynamiczne struktury danych

Dynamiczne struktury danych Dynamiczne struktury danych 391 Dynamiczne struktury danych Przez dynamiczne struktury danych rozumiemy proste i złożone struktury danych, którym pamięć jest przydzielana i zwalniana na żądanie w trakcie

Bardziej szczegółowo

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.) Kontenery - - wektor vector - - lista list - - kolejka queue - - stos stack Kontener asocjacyjny map 2016-01-08 Bazy danych-1 W5 1 Kontenery W programowaniu

Bardziej szczegółowo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Programowanie i struktury danych 1 / 44

Programowanie i struktury danych 1 / 44 Programowanie i struktury danych 1 / 44 Lista dwukierunkowa Lista dwukierunkowa to liniowa struktura danych skªadaj ca si z ci gu elementów, z których ka»dy pami ta swojego nast pnika i poprzednika. Operacje

Bardziej szczegółowo

Struktura danych = system relacyjny U, U uniwersum systemu - zbiór relacji (operacji) na strukturze danych

Struktura danych = system relacyjny U, U uniwersum systemu - zbiór relacji (operacji) na strukturze danych Temat: Stuktuy dzewiste 1. Stuktua słownika { } I Stuktua danych = system elacyjny U, i i U uniwesum systemu { i } i I - zbió elacji (opeacji) na stuktuze danych Fomalna definicja stuktuy danych składa

Bardziej szczegółowo

KOLEJKA (QUEUE) (lista fifo first in, first out)

KOLEJKA (QUEUE) (lista fifo first in, first out) KOLEJKA (QUEUE) (lista fifo first in, first out) Kolejki są listami, których elementy można wstawiać z jednego końca (rear-tył) a usuwać z drugiego (front - przód). Operacje: 1. MAKENULL(Q) czyni kolejkę

Bardziej szczegółowo

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych Algorytmy i Struktury Danych Wykład IV Sortowania cd. Elementarne struktury danych 1 Co dziś? Dolna granica sortowań Mediany i statystyki pozycyjne Warstwa implementacji Warstwa abstrakcji #tablice #listy

Bardziej szczegółowo

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos) Algorytmy i struktury danych Wykład 3: Stosy, kolejki i listy Dr inż. Paweł Kasprowski pawel@kasprowski.pl Kolejki FIFO First In First Out (kolejka) LIFO Last In First Out (stos) Stos (stack) Dostęp jedynie

Bardziej szczegółowo

Paradygmaty programowania. Paradygmaty programowania

Paradygmaty programowania. Paradygmaty programowania Paradygmaty programowania Paradygmaty programowania Dr inż. Andrzej Grosser Cz estochowa, 2013 2 Spis treści 1. Zadanie 2 5 1.1. Wprowadzenie.................................. 5 1.2. Wskazówki do zadania..............................

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Podstawowe struktury danych, cd. Wykład na podstawie ksiażki Roberta Sedgewicka i Kevina Wayne: Algorithms. Furth Edition. Princeton University dr hab. Bożena Woźna-Szcześniak

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne Sortowanie Dane wejściowe : trzy liczby w dowolnym porządku Dane wyjściowe: trzy liczby

Bardziej szczegółowo

Graf skierowany. Graf zależności dla struktur drzewiastych rozgrywających parametrycznie

Graf skierowany. Graf zależności dla struktur drzewiastych rozgrywających parametrycznie Gaf skieowany Gaf skieowany definiuje się jako upoządkowaną paę zbioów. Piewszy z nich zawiea wiezchołki gafu, a dugi składa się z kawędzi gafu, czyli upoządkowanych pa wiezchołków. Ruch po gafie możliwy

Bardziej szczegółowo

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja 1 struktura, kolekcja Kiedy potrzebne Duża liczba danych takiego samego typu tablice a jak nieznana liczba elementów? dane zawierające wartości różnego typu (osoba: pesel, nazwisko, rok urodzenia, pracuje/niepracuje,

Bardziej szczegółowo

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych kolekcji. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych

Bardziej szczegółowo

E S - uniwersum struktury stosu

E S - uniwersum struktury stosu Temat: Struktura stosu i kolejki Struktura danych to system relacyjny r I r i i I U,, gdzie U to uniwersum systemu, a i i - zbiór relacji (operacji na strukturze danych). Uniwersum systemu to zbiór typów

Bardziej szczegółowo

Struktury danych (I): kolejka, stos itp.

Struktury danych (I): kolejka, stos itp. Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Struktury danych (I): kolejka, stos itp. Struktury danych (I): kolejka, stos itp. Struktura danych stanowi sposób uporządkowania

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04 Cel zajęć. Celem zajęć jest zapoznanie się ze sposobem działania popularnych. Wprowadzenie teoretyczne. Rozważana w ramach niniejszych zajęć

Bardziej szczegółowo

Metody optymalizacji. dr inż. Paweł Zalewski Akademia Morska w Szczecinie

Metody optymalizacji. dr inż. Paweł Zalewski Akademia Morska w Szczecinie Metody optymalizacji d inż. Paweł Zalewski kademia Moska w Szczecinie Optymalizacja - definicje: Zadaniem optymalizacji jest wyznaczenie spośód dopuszczalnych ozwiązań danego polemu ozwiązania najlepszego

Bardziej szczegółowo

Marcin Matusiak i Łukasz Stasiak

Marcin Matusiak i Łukasz Stasiak Marcin Matusiak i Łukasz Stasiak Lista jest sekwencyjną strukturą danych, która składa się z ciągu elementów tego samego typu. Dostęp do elementów listy jest sekwencyjny tzn. z danego elementu listy możemy

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Spis treści JĘZYK C - FUNKCJE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF07Z

Spis treści JĘZYK C - FUNKCJE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF07Z Politechnika Białostocka Wydział Elektyczny Kateda Elektotechniki Teoetycznej i Metologii Instukcja do pacowni specjalistycznej z pzedmiotu Inomatyka Kod pzedmiotu: EZC00 00 (studia niestacjonane) Spis

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Wykład 4. Klasa List Kolejki Stosy Słowniki

Wykład 4. Klasa List Kolejki Stosy Słowniki Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Stos LIFO Last In First Out

Stos LIFO Last In First Out Stos LIFO Last In First Out Operacje: push - dodanie elementu na stos pop - usunięcie elementu ze stosu empty - sprawdzenie, czy stos jest pusty size - zwrócenie liczby elementów na stosie value (peek)

Bardziej szczegółowo

Podstawy informatyki 2. Podstawy informatyki 2. Wykład nr 2 ( ) Plan wykładu nr 2. Politechnika Białostocka. - Wydział Elektryczny

Podstawy informatyki 2. Podstawy informatyki 2. Wykład nr 2 ( ) Plan wykładu nr 2. Politechnika Białostocka. - Wydział Elektryczny Wykład nr 2 2/6 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne Rok akademicki 2006/2007 Plan wykładu nr 2 Argumenty funkcji main Dynamiczne struktury danych

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna

Kurs programowania. Wykład 9. Wojciech Macyna Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy

Bardziej szczegółowo

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)

Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) Języki i Paradygmaty Programowania Laboratorium 1 Obiekty i klasy C++ Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) UWAGA! Umiejętność tworzenia

Bardziej szczegółowo

Struktury danych: stos, kolejka, lista, drzewo

Struktury danych: stos, kolejka, lista, drzewo Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja

Bardziej szczegółowo

C++ Przeładowanie operatorów i wzorce w klasach

C++ Przeładowanie operatorów i wzorce w klasach C++ i wzorce w klasach Andrzej Przybyszewski numer albumu: 89810 14 listopada 2009 Ogólnie Przeładowanie (przeciążanie) operatorów polega na nadaniu im nowych funkcji. Przeładowanie operatora dokonuje

Bardziej szczegółowo

Monitory. Jarosław Kuchta

Monitory. Jarosław Kuchta Monitory Jarosław Kuchta Co to jest monitor Monitor to zebrane w jednej konstrukcji programowej zmienne i operacje na tych zmiennych. Część tych operacji jest udostępnianych na zewnątrz monitora. Tylko

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

Algorytmy i Struktury Danych. Anna Paszyńska

Algorytmy i Struktury Danych. Anna Paszyńska Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;

Bardziej szczegółowo

Wprowadzenie do szablonów klas

Wprowadzenie do szablonów klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2008-2010 Bogdan Kreczmer Niniejszy

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Liniowe struktury danych. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 4 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych. Wykład

Bardziej szczegółowo

Programowanie w języku Java. Kolekcje

Programowanie w języku Java. Kolekcje Programowanie w języku Java Kolekcje Definicja Kolekcja to obiekt, który grupuje elementy danych (inne obiekty) i pozwala traktować je jak jeden zestaw danych, umożliwiając jednocześnie wykonywanie na

Bardziej szczegółowo

Lista, Stos, Kolejka, Tablica Asocjacyjna

Lista, Stos, Kolejka, Tablica Asocjacyjna Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Podstawowe struktury danych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych.

Bardziej szczegółowo

Algorytmy i Struktury Danych.

Algorytmy i Struktury Danych. Algorytmy i Struktury Danych. Abstrakcyjne struktury danych dr hab. Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie

Bardziej szczegółowo

Podstawy informatyki 2

Podstawy informatyki 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne Rok akademicki 2006/2007 Wykład nr 2 (07.03.2007) Wykład nr 2 2/46 Plan wykładu nr 2 Argumenty funkcji main

Bardziej szczegółowo

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika. Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika. 1. Pojcie struktury danych Nieformalnie Struktura danych (ang. data

Bardziej szczegółowo

Listy, kolejki, stosy

Listy, kolejki, stosy Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:

Bardziej szczegółowo

Struktury Danych i Złożoność Obliczeniowa

Struktury Danych i Złożoność Obliczeniowa Struktury Danych i Złożoność Obliczeniowa Zajęcia 1 Podstawowe struktury danych Tablica Najprostsza metoda przechowywania serii danych, zalety: prostota, wady: musimy wiedzieć, ile elementów chcemy przechowywać

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)

Bardziej szczegółowo

Struktury. Przykład W8_1

Struktury. Przykład W8_1 Struktury Struktury pozwalają na grupowanie zmiennych różnych typów pod wspólną nazwą. To istotnie ułatwia organizacje danych, które okazują się w jednym miejscu kodu programu. To jest bardzo ważne dla

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

Bardziej szczegółowo

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula Programowanie i struktury danych Wykład 4 Dr Piotr ybula Typ wska ź nikowy int* pointer; //wskaźnik do zmiennych typu int pozwala na dostęp do dowolnego miejsca pamięci (zmienne

Bardziej szczegółowo

. Podstawy Programowania 2. Kolejki i ich zastosowania. Arkadiusz Chrobot. 21 marca 2016

. Podstawy Programowania 2. Kolejki i ich zastosowania. Arkadiusz Chrobot. 21 marca 2016 .. Podstawy Programowania 2 Kolejki i ich zastosowania Arkadiusz Chrobot Zakład Informatyki 21 marca 2016 1 / 60 Plan.1 Kolejki i ich klasyfikacja.2 Kolejka fifo Implementacja za pomocą tablicy.3 Testowanie

Bardziej szczegółowo

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )

Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2 ( $%%) )'20 )*0) 1 / ) Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,

Bardziej szczegółowo

WYKŁAD 11 OPTYMALIZACJA WIELOKRYTERIALNA

WYKŁAD 11 OPTYMALIZACJA WIELOKRYTERIALNA WYKŁAD OPTYMALIZACJA WIELOKYTEIALNA Wstęp. W wielu pzypadkach pzy pojektowaniu konstukcji technicznych dla okeślenia ich jakości jest niezędne wpowadzenie więcej niż jednego kyteium oceny. F ) { ( ), (

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019 Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości

Bardziej szczegółowo

Algorytm selekcji Hoare a. Łukasz Miemus

Algorytm selekcji Hoare a. Łukasz Miemus Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Bardziej szczegółowo

Listy powiązane zorientowane obiektowo

Listy powiązane zorientowane obiektowo Listy powiązane zorientowane obiektowo Aby zilustrować potęgę polimorfizmu, przeanalizujmy zorientowaną obiektowo listę powiązaną. Jak zapewne wiesz, lista powiązana jest strukturą danych, zaprojektowaną

Bardziej szczegółowo

dr inż. Paweł Myszkowski Wykład nr 11 ( )

dr inż. Paweł Myszkowski Wykład nr 11 ( ) dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 11 (11.05.2016) Plan prezentacji:

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 5b: Model danych oparty na listach http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Słowem wstępu Listy należą do najbardziej

Bardziej szczegółowo

FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1)

FUNKCJE WZORCOWE. Wykład 10. Programowanie Obiektowe (język C++) Funkcje wzorcowe wprowadzenie (2) Funkcje wzorcowe wprowadzenie (1) Programowanie Obiektowe (język C++) Wykład 10. FUNKCJE WZORCOWE Funkcje wzorcowe wprowadzenie (1) Funkcje wzorcowe wprowadzenie (2) int max ( int a, int b ) return a>b? a : b; Aby mieć analogiczną funkcję

Bardziej szczegółowo

Język programowania: Lista instrukcji (IL Instruction List)

Język programowania: Lista instrukcji (IL Instruction List) Język programowania: Lista instrukcji (IL Instruction List) Wykład w ramach przedmiotu: Sterowniki programowalne Opracował dr inż. Jarosław Tarnawski 08.12.2009 Norma IEC 1131 Języki tekstowe Języki graficzne

Bardziej szczegółowo

Wstęp do programowania. Stosy i kolejki. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Stosy i kolejki. Piotr Chrząstowski-Wachtel Wstęp do programowania Stosy i kolejki Piotr Chrząstowski-Wachtel Stosy Stosy elementów ze zbioru A, to struktury danych, które umożliwiają wykonanie następujących operacji i funkcji {var x:typa; s:stack

Bardziej szczegółowo

Algorytmy i język C++

Algorytmy i język C++ Wykład 6 Wskaźniki Wskaźnik nie przechowuje wartości zmiennej ale, podobnie jak tablica, wskazuje miejsce w pamięci, w którym znajduje się zmienna danego typu. W poniższym przykładzie symbol * pomiędzy

Bardziej szczegółowo

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki Parsery LL() Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy generacyjnej (zstępującej, top-down) symbol początkowy już terminale wyprowadzenie lewostronne pierwszy od lewej

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 11.1 abstrakcyjne Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post

Bardziej szczegółowo

. Podstawy Programowania 2. Algorytmy dfs i bfs. Arkadiusz Chrobot. 2 czerwca 2019

. Podstawy Programowania 2. Algorytmy dfs i bfs. Arkadiusz Chrobot. 2 czerwca 2019 Podstawy Programowania Algorytmy dfs i bfs Arkadiusz Chrobot Zakład Informatyki czerwca 09 / 70 Plan Wstęp Algorytm BFS Podsumowanie / 70 Wstęp Wstęp Istnieje wiele algorytmów związanych z grafami, które

Bardziej szczegółowo

Podstawy Programowania 2 Kolejki i ich zastosowania. Plan. Kolejki i ich klasyfikacja. Kolejki i ich klasyfikacja Kolejki dwustronne. Notatki.

Podstawy Programowania 2 Kolejki i ich zastosowania. Plan. Kolejki i ich klasyfikacja. Kolejki i ich klasyfikacja Kolejki dwustronne. Notatki. Podstawy Programowania 2 Kolejki i ich zastosowania Arkadiusz Chrobot Zakład Informatyki 18 marca 2019 1 / 60 Plan Kolejki i ich klasyfikacja Testowanie niektórych operacji dynamicznych struktur danych

Bardziej szczegółowo

Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Animacja. Algorytm DFS Animacja. Notatki. Notatki.

Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Wprowadzenie teoretyczne. Algorytm DFS Animacja. Algorytm DFS Animacja. Notatki. Notatki. Podstawy Programowania Algorytmy dfs i bfs Arkadiusz Chrobot Zakład Informatyki czerwca 09 / 70 Plan Wstęp Podsumowanie / 70 Wstęp Istnieje wiele algorytmów związanych z grafami, które w skrócie nazywane

Bardziej szczegółowo

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

Abstrakcyjne struktury danych w praktyce

Abstrakcyjne struktury danych w praktyce Abstrakcyjne struktury danych w praktyce Wykład 13 7.4 notacja polska A.Szepietowski Matematyka dyskretna rozdział.8 stos kompilacja rozłączna szablony funkcji Przypomnienie Drzewo binarne wyrażenia arytmetycznego

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych 1 / 19 Dynamiczne struktury danych Dynamiczną strukturą danych nazywamy taka strukturę danych, której rozmiar, a więc liczba przechowywanych w niej danych, może się dowolnie

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część dziewiąta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Stos liczb całkowitych

Stos liczb całkowitych Stos liczb całkowitych class StosInt int* tab; unsigned size ; StosInt(unsigned s=10) tab=new int[size=s];top=0; ~StosInt()delete[] tab; void push(int i)tab[top++]=i; int pop(void) return tab[--top]; int

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

Abstrakcyjny typ danych

Abstrakcyjny typ danych Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są

Bardziej szczegółowo

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

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

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część ósma Zmienne wskaźnikowe koncepcja, podstawowe zastosowania Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski

Bardziej szczegółowo

Rodzajowy rachunek kosztów Wycena zuŝycia materiałów

Rodzajowy rachunek kosztów Wycena zuŝycia materiałów Rodzajowy achunek kosztów (wycena zuŝycia mateiałów) Wycena zuŝycia mateiałów ZuŜycie mateiałów moŝe być miezone, wyceniane, dokumentowane i ewidencjonowane w óŝny sposób. Stosowane metody wywieają jednak

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Zaawansowane programowanie w C++ (PCP) Wykład 6 - szablony. dr inż. Robert Nowak - p. 1/15 Kolekcje i algorytmy» Deklaracja szablonu y Pojęcia niezależne od typu: kolekcje (np. listy) algorytmy (np. znajdowania

Bardziej szczegółowo

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

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

Wstęp do programowania

Wstęp do programowania wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: Struktura danych Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: rekord tablica lista stos kolejka drzewo i jego odmiany (np. drzewo

Bardziej szczegółowo

Szablony funkcji i klas (templates)

Szablony funkcji i klas (templates) Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp

Bardziej szczegółowo

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Programowanie w C++ Wykład 6 Katarzyna Grzelak 1 kwietnia 2019 K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły

Bardziej szczegółowo

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych:

Struktura danych. Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: Struktura danych Sposób uporządkowania informacji w komputerze. Na strukturach danych operują algorytmy. Przykładowe struktury danych: rekord tablica lista stos kolejka drzewo i jego odmiany (np. drzewo

Bardziej szczegółowo

. Podstawy Programowania 2. Jednokierunkowa lista liniowa. Arkadiusz Chrobot. 28 marca 2017

. Podstawy Programowania 2. Jednokierunkowa lista liniowa. Arkadiusz Chrobot. 28 marca 2017 .. Podstawy Programowania 2 Jednokierunkowa lista liniowa Arkadiusz Chrobot Zakład Informatyki 28 marca 2017 1 / 57 Plan.1 Jednokierunkowa lista liniowa.2 Implementacja Typ bazowy i wskaźnik listy Tworzenie

Bardziej szczegółowo

Podstawy Programowania 2 Jednokierunkowa lista liniowa. Plan. Jednokierunkowa lista liniowa. Jednokierunkowa lista liniowa. Notatki. Notatki.

Podstawy Programowania 2 Jednokierunkowa lista liniowa. Plan. Jednokierunkowa lista liniowa. Jednokierunkowa lista liniowa. Notatki. Notatki. Podstawy Programowania 2 Jednokierunkowa lista liniowa Arkadiusz Chrobot Zakład Informatyki 26 marca 2019 1 / 57 Plan Jednokierunkowa lista liniowa Implementacja Typ bazowy i wskaźnik listy Tworzenie listy

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 6 Program wykładu Pojęcie interfejsu i implementacji Hermetyzacja Pakiety w Javie Składowe statyczne Kompozycja - korzystanie z gotowych

Bardziej szczegółowo

kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych,

kiedy znowu uzyska sterowanie, to podejmuje obliczenie od miejsca, w którym poprzednio przerwała, i z dotychczasowymi wartościami zmiennych, Korutyny Wykład13,str1 tak działa podprogram: PROGRAM GŁÓWNY wywołanie PODPROGRAM tak działają korutyny: KORUTYNA A resume B resume B KORUTYNA B resume A Korutyny Wykład13,str2 Korutyny mają zwykle więcej

Bardziej szczegółowo

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo