Wykład 14. Środowisko przetwarzania

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

Download "Wykład 14. Środowisko przetwarzania"

Transkrypt

1 Wykład 14 Środowisko przetwarzania

2 Środowisko przetwarzania Przed generacją kodu, musimy umieć powiązać statyczny kod źródłowy programu z akcjami, wykonywanymi w trakcie działania i implementującymi program; Ta sama nazwa w programie źródłowym może oznaczać różne obiekty danych w maszynie docelowej; Przydzielanie i zwalnianie pamięci dla obiektów danych jest zarządzane przez pakiet wspomagania przetwarzania,, składający się z procedur ładowanych wraz z wygenerowanym kodem wynikowym; Projekt pakietu wspomagania zależy od semantyki procedur; Każde działanie procedury jest nazywane aktywacją tej procedury; Jeśli procedura jest rekurencyjna to w danej chwili może istnieć jednocześnie kilka jej aktywacji.

3 Język źródłowy procedury Definicją procedury jest deklaracja, która, w najprostszej postaci, związuje identyfikator z instrukcją. Identyfikator jest nazwą procedury,, a instrukcja treścią procedury; Przykład: poniższy kod z Pascala w wierszach (3)-(7) zawiera definicję procedury nazwanej czytajtab.. Treść tej procedury jest w wierszach (5)-(7); Procedury zwracające wartość, w wielu językach są nazywane funkcjami, chociaż wygodniej jest odnosić się do nich jak do procedur; Cały program jest również traktowany jak procedura.

4 Procedury 1. program sort(input, output) ; 2. var a: array [0..10] of integer; 3. procedure czytajtab; 4. var i : integer; 5. begin 6. for i := 1 to 9 do read(a[i]) (1) 7. end; 8. function podzial (y,z : integer) : integer; 9. var i, j, x, v: integer; 10. begin end

5 Procedura - cd 12. procedur quicksort (m, n: integer); 13. var i: integer; 14. begin 15. if ( n > m ) then begin 16. i := podzial(m, n); 17. quicksort(m, i-1); 18. quciksort(i+1, n); 19. end 20. end; 21. begin 22. a[0] := -9999; a[10] := 9999; 23. czytajtab; 24. quicksort(1,9); 25. end.

6 Język źródłowy procedury Jeżeli nazwa procedury pojawia się wewnątrz instrukcji, mówimy, że procedura jest w tym miejscu wywoływana; Wywołanie procedury powoduje wykonanie treści procedury i jest to podstawowa zasada jej działania; Główny program w wierszach (21) (25) wywołuje w wierszu (23) procedurę czytajtab i następnie, w wierszu (24) wywołuje procedurę quicksort; Zauważmy, że wywołania procedur mogą również nastąpić w wyrażeniach tak jak w wierszu (16).

7 Język źródłowy procedury Niektóre z identyfikatorów, pojawiające się w definicji procedury, są specjalne i nazywamy je parametrami formalnymi procedury.. ( W języku C nazywam je argumentami formalnymi a w Fortranie argumentami ślepymi ); Identyfikatory m i n w wierszu (12) są parametrami formalnymi procedury quicksort; Argumenty zwane parametrami aktualnymi,, mogą być przekazywane do wywoływanej procedury i podstawione w miejscu formalnych w treści procedury; Wiersz (18) kodu jest wywołaniem procedury quicksort,, z parametrami aktualnymi i+1 i n.

8 Drzewa aktywacji Wprowadźmy dwa założenia na temat przepływu sterowania między procedurami w trakcie wykonywania programu: - Wykonanie programu jest sekwencyjne, czyli składa się z sekwencji kroków, w których może znaleźć się sterowanie programu w trakcie działania; - Każde wykonanie procedury rozpoczyna się na początku treści procedury i po zakończeniu powraca do miejsca bezpośrednio za samym wywołaniem. Oznacza to, że przepływ sterowania między procedurami można przedstawić za pomocą drzew.

9 Drzewa aktywacji Każde wykonanie treści procedury nazywa się aktywacją tej procedury; Czas istnienia aktywacji procedury p jest sekwencją kroków między pierwszym a ostatnim krokiem wykonywania treści procedury, włączając w to czas wykonywania procedur wywoływanych z p, procedur wywoływanych przez te ostatnie, itd.; Na ogół termin czas istnienia odnosi się do sekwencji kolejnych kroków wykonywanych w trakcie działania programu.

10 Drzewa aktywacji W językach, na przykład w Pascalu, sterowanie po każdym wejściu do procedury q z procedury p (w przypadku niewystąpienia błędu krytycznego) ostatecznie musi powrócić do p. Ogólniej, za każdym razem, gdy sterowanie programu przechodzi z aktywacji procedury p do aktywacji procedury q,, musi powrócić do tej samej aktywacji dla p; Jeśli a i b są aktywacjami procedur, to ich czasy istnienia albo są rozłączne, albo jeden jest zawarty w drugim; Sterowanie wchodzi do b i przed opuszczeniem a,, to przed opuszczeniem a musi opuścić b.

11 Drzewa aktywacji Tę własność zawierania czasów istnienia można zilustrować, wstawiając dwie instrukcje print do każdej procedury: jedną przed pierwszą instrukcją z treści procedury, a drugą za ostatnią; Pierwsza instrukcja drukuje napis wejście oraz nazwę procedury i wartości parametrów aktualnych, druga drukuje napis opuszczenie i te same informacje; Przykładowy wynik powyższego programu ze wstawionym instrukcjami print prezentujemy poniżej. Czas istnienia aktywacji quicksort(1,9) składa się z sekwencji kroków wykonywanych od wpisania wejście quicksort(1,9) do opuszczenie quicksort(1,9). Zakładamy że podzial(1,9) zwraca liczbę 4.

12 Wyjście odzwierciedlające aktywację Wykonanie rozpoczete wejscie czytajtab opuszczenie czytajtab wejscie wejscie quicksort(1,9) podzial(1,9) opuszczenie podzial(1,9) wejscie (2) quicksort(1,3) opuszczenie quicksort(1,3) wejscie quicksort(5,9) opuszczenie quicksort(5,9) opuszczenie quicksort(1,9) procedury

13 Język źródłowy procedury Procedura jest rekurencyjna,, jeśli nowa jej aktywacja może rozpocząć się przed zakończeniem wcześniejszej aktywacji tej samej procedury; Na wyjściu odzwierciedlającym wywołanie, widać że sterowanie wchodzi do aktywacji quicksort(1,9), w wierszu (24), na początku wykonywania programu, a opuszcza ją prawie na samym końcu; W międzyczasie, kilkakrotnie następuje kolejne wejście do aktywacji procedury quicksort, więc procedura ta jest rekurencyjna; Rekurencyjna procedura p nie musi wywoływać siebie bezpośrednio: p może wywołać inną procedurę q,, która z kolei może wywołać p w pewnej sekwencji wywołań procedur.

14 Drzewo aktywacji Do zobrazowania kolejności w jakej sterowanie wchodzi i opuszcza aktywację można użyć drzewa, zwanego drzewem aktywacji: Tworzymy je w oparciu o następujące reguły: - każdy węzeł reprezentuje aktywację procedury; - korzeń reprezentuje aktywacje programu głównego; - węzeł dla a jest rodzicem węzła dla b wtdey i tylko wtedy, gdy sterowanie przechodzi z aktywacji a do b; - węzeł dla a znajduje się po lewej stronie węzła dla b wtedy i tylko wtedy, gdy a jest przed b. Ponieważ każdy węzeł reprezentuje odrębną aktywację, a każda aktywacja odrębny węzel, wygodnie jest mówić o sterowaniu znajdującym się w węźle, gdy znajduje się ono w aktywacji reprezentowanej przez ten węzeł.

15 Drzewo aktywacji-przykład Drzewo aktywacji odpowiadającej wyjściu (2). (3)

16 Przykład - interpretacja Na diagramie zaprezentowano jedynie pierwsze litery nazw procedur; Podczas wykonywania sortuj następuje aktywacja czytajtab,, reprezentowana przez pierwsze dziecko korzenia z etykietą c; Następna aktywacja, reprezentowana przez drugie dziecko korzenia, jest dla procedury quicksort z parametrami aktualnymi 1 i 9. Podczas tej aktywacji, wywołania podzial i quicksort z wierszy (16), (17) procedury (1), prowadzą do aktywacji p(1,9), q(1,3) i q(4,9); Zauważmy że aktywacje q(1,3) i q(5,9) są rekurencyjne i że zaczynają się i kończą przed zakończeniem q(1,9).

17 Stosy sterowania Przepływ sterowania w programie odpowiada przechodzeniu w głąb drzewa aktywacji; Przechodzenie w głąb drzewa aktywacji polega na starcie w korzeniu, odwiedzeniu węzła zanim odwiedzimy dzieci i na rekurencyjnych odwiedzinach kolejnych dzieci w kolejności od lewej do prawej; Wynik z (2) może zatem zostać odtworzony przez przejście drzewa aktywacji, w którym wypiszemy wejście w momencie wchodzenia po raz pierwszy do węzła dla aktywacji i wypiszemy opuszczenie po przejściu całego poddrzewa tego węzła.

18 Stosy sterowania Do przechowywania istniejących w danej chwili aktywacji dla procedur możemy wykorzystać stos zwany stosem sterowania; Metoda polega na umieszczaniu a stosie węzła dla aktywacji, w momencie jej rozpoczęcia i zdejmowaniu jej ze stosu w momencie, gdy się kończy; Zawartość stosu sterowania ma związek ze ścieżkami z korzenia drzewa aktywacji; Gdy na wierzchołku drzewa sterowania znajduje się węzeł n,, stos ten zawiera węzły wzdłuż ścieżki z n do korzenia.

19 Stos sterowania-przykład Stos sterowania zawiera węzły wzdłuż ścieżki do korzenia. (4)

20 Interpretacja przykładu Na stosie widać węzły z drzewa aktywacji (3), które zostały osiągnięte, gdy sterowanie weszło do aktywacji reprezentowanej za pomocą q(2,3); Aktywacje z etykietami c, p(1,9), p(1,3), q(1,0) zostały wykonane do końca, więc rysunek zawiera prowadzące do nich linie przerywane; Linie ciągłe stanowią ścieżkę z q(2,3) do korzenia; W tej chwili stos sterowania zawiera następujące węzły znajdujące się na tej ścieżce do korzenia (w kolejności od liścia do korzenia) s, q(1,9), q(1,3), q(2,3) i nie zawiera żadnych innych.

21 Zakres deklaracji Deklaracja w języku jest konstrukcją składniową, która związuje informację z nazwą; Deklaracje mogą być jawne przekład następująca deklaracja w Pascalu var i : integer; lub niejawne przykład w Fortranie dla każdej zmiennej zaczynającej się od I zakłada się że oznacza ona liczbę całkowitą; W różnych częściach programu mogą znajdować się niezależne deklaracje tej samej nazwy;

22 Zakres deklaracji Zasady widzialności dla danego języka wyznaczają, która deklaracja ma być stosowana do nazwy pojawiającej się w tekście programu; W programie (1) w Pascalu, zmienna i jest zadeklarowana trzykrotnie, w wierszach (4), (9) i (13), i program wykorzystuje tę nazwę niezależnie w procedurach czytajtab, podzial i quicksort. Deklaracja w wierszu (4) jest stosowana do zmiennej i w wierszu (6); Dwa wystąpienia i w wierszu (6) znajdują się w zakresie deklaracji z wiersza (4). Trzy wystąpienia i w wierszach (16)-(18) znajdują się w zakresie deklaracji z wiersza (13).

23 Zakres deklaracji Fragment programu, którego dana deklaracja dotyczy, jest zakresem tej deklaracji. Gdy deklaracja nazwy znajduje się wewnątrz procedury, a jej zakres zawiera się w procedurze, to nazwana jest ona lokalną, w przeciwnym wypadku nielokalną; Rozróżnienie między nazwami lokalnymi i nielokalnymi dotyczy wszystkich konstrukcji składniowych, które mogą zawierać deklaracje;

24 Zakres deklaracji Chociaż zakres jest własnością deklaracji nazw, często wygodniej jest mówić o zakresie zmiennej x zamiast o zakresie deklaracji nazwy x, która jest stosowana do tego wystąpienia ; Wtedy zakresem zmiennej i z wiersza (17) programu (1) jest treść quicksort; W trakcie kompilacji, tablica symboli może zostać użyta do znalezienia deklaracji dla konkretnego wystąpienia danej nazwy; Gdy deklaracja jest wczytywana, w tablicy symboli tworzony jest wpis; Tak długo, jak znajdujemy się w zakresie tej deklaracji, jej wpis jest zwracany, gdy ta nazwa jest poszukiwana w tablicy symboli.

25 Wiązanie nazw Nawet jeśli każda nazwa w programie jest zadeklarowana jednokrotnie, może ona oznaczać różne obiekty danych w czasie działania; Nieformalne określenie obiekt danych odpowiada miejscu w pamięci, które może przechowywać wartość; W semantyce języków programowania, określenie środowisko odnosi się do funkcji, która nazwie przyporządkowuje miejsce w pamięci, a określenie stan funkcji, która z kolei miejscu w pamięci przypisuje wartość tam przechowywaną;

26 Wiązanie nazw Środowiska i stany różnią się przypisanie zmienia stan, ale nie środowisko; Przykład - załóżmy, że adres pamięci 100, związany ze zmienną pi, przechowuje 0. Po przypisaniu pi:=3.14 ten t sam adres pamięci jest związany z pi,, lecz przechowywaną w nim wartością staje się 3.14; Gdy środowisko związuje adres pamięci s z nazwą x, mówi się, że x jest związane z s,, a sam związek jest wiązaniem x.. Określenie miejsce pamięci jest symboliczne, ponieważ jeśli x nie jest typem podstawowym, miejsce pamięci s dla x może stanowić wiele słów pamięci.

27 Wiązanie nazw Związanie jest dynamicznym odpowiednikiem deklaracji; Pojęcie statyczne definicja procedury deklaracja nazwy zakres deklaracji Odpowiednik dynamiczny aktywacje procedury wiązanie nazwy czas istnienia wiązania W tym samym czasie może istnieć wiele aktywacji pojedynczej procedury rekurencyjnej; W Pascalu nazwa zmiennej lokalnej jest przypisana do innego miejsca w pamięci w każdej aktywacji procedury.

28 Pojawiające się pytania Sposób, w jaki kompilator języka organizuje swoją pamięć i wiąże nazwy, w dużym stopniu zależy od odpowiedzi na następujące pytania: - Czy procedury mogą być rekurencyjne? - Co się dzieje z wartościami nazw lokalnych, gdy sterowanie powraca z aktywacji procedury? - Czy procedury mogą odwoływać się do zmiennych nielokalnych? - Jakie parametry są przekazywane w momencie wywołania procedur?

29 Pojawiające się pytania - cd Sposób, w jaki kompilator języka organizuje swoją pamięć i wiąże nazwy, w dużym stopniu zależy od odpowiedzi na następujące pytania: - Czy procedury mogą być przekazywane jako parametry? - Czy procedury mogą być zwracane jako rezultaty? - Czy pamięć może być przydzielana dynamicznie pod kontrolą programu? - Czy pamięć musi być zwalniana jawnie?

30 Podział pamięci w czasie wykonania Załóżmy, że kompilator otrzymuje blok pamięci od systemu operacyjnego w celu uruchomienia w nim skompilowanego programu; Pamięć w czasie wykonywania możemy podzielić na: - wygenerowany kod wynikowy; - obiekty danych; - odpowiednik stosu do przechowywania aktywacji procedur. Rozmiar wygenerowanego kodu jest ustalany w trakcie kompilacji, więc kompilator może umieścić go w obszarze wyznaczonym statycznie, na przykład na początku pamięci.

31 Podział pamięci w czasie wykonania Podobnie, rozmiar niektórych obiektów danych może być znany w czasie kompilacji i te obiekty również mogą zostać umieszczone w obszarze inicjowanym statycznie. (7)

32 Podział pamięci w czasie wykonania Jednym z powodów rezerwacji pamięci dla jak największej liczby obiektów danych jest możliwość wkompilowania konkretnych adresów tych obiektów w kod wynikowy; Wszystkie obiekty w Fortranie mogą być umieszczane w pamięci statycznie; Implementacje języków takich jak Pascal i C używają rozszerzeń stosu sterowania do zarządzania aktywacjami procedur; Gdy wykonywane jest wywołanie procedury, wykonanie aktywacji jest wstrzymywane i informacja o stanie maszyny, jak wartość licznika rozkazów i rejestry procesora, jest zapisywana na stosie.

33 Podział pamięci w czasie wykonania Gdy sterowanie powraca z wywołania, aktywacja może zostać wznowiona po przywróceniu właściwych wartości rejestrów i ustawieniu licznika rozkazów na miejsce bezpośrednio za wywołaniem; Miejsce na obiekty danych, których czasy istnienia są zawarte w czasie istnienia aktywacji, może zostać zarezerwowane na stosie, razem z innymi informacjami związanymi z aktywacją; Odrębny obszar pamięci w czasie wykonywania, zwany stertą,, przechowuje wszystkie pozostałe informacje;

34 Podział pamięci w czasie wykonania Pascal pozwala, aby pamięć dla danych była reprezentowana przez sam program; Pamięć na te dane jest pobierana ze sterty; Implementacje języków, w których czasy istnienia aktywacji nie mogą być reprezentowane przez drzewo aktywacji, mogą używać sterty do przechowywania informacji o tych aktywacjach; Kontrolowany sposób rezerwowania i zwalniania pamięci na stosie jest tańszy od takich operacji na stercie; Rozmiar stosu i sterty mogą zmieniać się w trakcie działania programu, więc na rys (7) mamy je umieszczone na przeciwnych krańcach pamięci, aby mogły łatwo zwiększać swój rozmiar.

35 Podział pamięci w czasie wykonania Zgodnie z konwencją stosy rosną w dól, to znaczy, że wierzchołek stosu znajduje się na dole strony; Ponieważ adresy pamięci rosną w czasie poruszania się w dół strony, wzrost w dół oznacza: przejście w kierunku wyższych adresów; Jeśli wskaźnik wierzchołek oznacza wierzchołek stosu, przesunięcia względem wierzchołka stosu mogą być obliczane przez odjęcie przesunięcia od wierzchołka; Na wielu maszynach obliczenia te mogą być wykonane wydajnie przez przechowywanie wartości wierzchołek w rejestrze; Adresy na stosie mogą zatem być reprezentowane jako przesunięcia względem wierzchołka.

36 Rekordy aktywacji Informacja potrzebna do pojedynczego wykonania procedury jest przechowywana w ciągłym bloku pamięci, zwanym rekordem aktywacji lub ramką, składającym się z pól.

37 Rekordy aktywacji Nie wszystkie języki ani kompilatory używają wszystkich tych pól; Często rejestry zawierają tylko niektóre z tych informacji; W językach takich jak Pascal lub C, rekord aktywacji procedury zwykle jest umieszczany na stosie sterowania, gdy procedura jest wywoływana, i zdejmowany ze stosu, gdy sterowanie powraca z jej wywołania;

38 Pola w rekordzie aktywacji Przeznaczenia poszczególnych pól w rekordzie aktywacji są następujące: 1. W polu danych tymczasowych są przechowywane wartości tymczasowe, pojawiające się w trakcie obliczeń wyrażeń; 2. W polu danych lokalnych przechowuje się dane lokalne dla tego wykonania procedury; 3. W polu do zapamiętania stanu procesora przechowuje się informacje o nim bezpośrednio sprzed wywołania procedury. To pole zawiera wartości licznika rozkazów, rejestrów procesora, które powinny być przywrócone po powrocie z procedury;

39 Pola w rekordzie aktywacji -cd 4. Opcjonalne wiązanie dostępu jest używane do odwołania się do danych nielokalnych przetrzymywanych w innych rekordach aktywacji. Dla języków takich jak Fortran, wiązania dostępu nie są potrzebne, ponieważ wszystkie dane nielokalne są trzymane w stałym miejscu. Wiązania dostępu lub podobny mechanizm, nazywany tablicą display, są wykorzystywane w Pascalu; 5. Opcjonalne wiązanie sterowania wskazuje rekord aktywacji procedury wywołującej;

40 Pola w rekordzie aktywacji -cd 6. Pole z parametrami aktualnymi jest używane przez procedurę wywołującą do przekazania parametrów do wywoływanej procedury (na rys jest miejsce na parametry aktualne, lecz w praktyce w celu uzyskania większej wydajności parametry są przekazywane do rejestrów procesora); 7. Pole dla wartości zwracanej jest wykorzystywane przez wywoływaną procedurę do przekazywania rezultatu do procedury wywołującej. W praktyce, wartość ta jest zwracana w rejestrze, w celu uzyskania większej wydajności.

41 Rekord aktywacji Rozmiar wszystkich tych pól można wyznaczyć w czasie wywoływania procedury; W rzeczywistości, rozmiary prawie wszystkich pól można wyznaczyć w czasie kompilacji; Wyjątek stanowi procedura mająca tablice lokalne, których wielkość jest wyznaczana przez wartość parametru aktualnego, dostępnego dopiero wtedy, gdy procedura jest wywoływana w trakcie działania programu.

42 Koniec wykładu czternastego

Przydział pamięci. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Przydział pamięci. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki Przydział pamięci Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Terminologia Program s(input,output) {SORT} program główny można traktować także jako procedurę var a: array[0..10] of integer;

Bardziej szczegółowo

14. Elementy systemu wykonawczego

14. Elementy systemu wykonawczego 14. Elementy systemu wykonawczego 14.1 Wprowadzenie system wykonawczy (ang. run-time system) stanowi zestaw danych i operacji realizujących tzw. maszynę wirtualną języka programowania (na maszynie tej

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Podstawy programowania. 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

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada

Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Instrukcja do ćwiczenia P4 Analiza semantyczna i generowanie kodu Język: Ada Spis treści 1 Wprowadzenie 1 2 Dane i kod 2 3 Wyrażenia 2 3.1 Operacje arytmetyczne i logiczne.................. 2 3.2 Podstawowe

Bardziej szczegółowo

Metody Kompilacji Wykład 3

Metody Kompilacji Wykład 3 Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

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

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/2012 2 / 24 Wymagania proceduralnych języków wysokiego poziomu ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH modele programowe procesorów ASK MP.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad.

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki Analiza leksykalna 1 Języki formalne i automaty Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych

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

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują

Bardziej szczegółowo

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np.

zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np. ZMIENNE 39 zmienne stanowią abstrakcję komórek pamięci: programista może przechowywać dane w pamięci, nie martwiąc się o techniczne szczegóły (np. przydział pamięci). 40 Nazewnictwo zmiennych Dozwolone

Bardziej szczegółowo

Język C++ zajęcia nr 2

Język C++ zajęcia nr 2 Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator

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

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Wskaźniki Krzysztof Banaś Podstawy programowania 1 Adresy zmiennych Język C pozwala na operowanie adresami w pamięci stąd, między innymi, kwalifikowanie C jako języka relatywnie

Bardziej szczegółowo

JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI

JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI JAK DZIAŁAJĄ FUNKCJE PODZIAŁ PAMIĘCI Gdy wywołujesz daną funkcję, program przechodzi do tej funkcji, przekazywane są parametry i następuje wykonanie ciała funkcji. Gdy funkcja zakończy działanie, zwracana

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

Warsztaty dla nauczycieli

Warsztaty dla nauczycieli WPROWADZENIE Wyprowadzanie danych: Wyprowadzanie na ekran komunikatów i wyników umożliwia instrukcja wyjścia funkcja print(). Argumentami funkcji (podanymi w nawiasach) mogą być teksty, wyrażenia arytmetyczne

Bardziej szczegółowo

XML i nowoczesne technologie zarządzania treścią 2007/08

XML i nowoczesne technologie zarządzania treścią 2007/08 Zadanie 3 Poprawkowe XML i nowoczesne technologie zarządzania treścią 2007/08 Wprowadzenie Należy napisać program w Javie, który czytając w trybie SAX plik z listą operacji, wykonuje zadane operacje na

Bardziej szczegółowo

Pakiety i interfejsy. Tomasz Borzyszkowski

Pakiety i interfejsy. Tomasz Borzyszkowski Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji

Bardziej szczegółowo

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki Analiza leksykalna 1 Teoria kompilacji Dr inż. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Kod źródłowy (ciąg znaków) Analizator leksykalny SKANER Ciąg symboli leksykalnych (tokenów)

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

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Bardziej szczegółowo

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Programowanie współbieżne Wykład 2. Iwona Kochańska

Programowanie współbieżne Wykład 2. Iwona Kochańska Programowanie współbieżne Wykład 2 Iwona Kochańska Miary skalowalności algorytmu równoległego Przyspieszenie Stały rozmiar danych N T(1) - czas obliczeń dla najlepszego algorytmu sekwencyjnego T(p) - czas

Bardziej szczegółowo

System plików przykłady. implementacji

System plików przykłady. implementacji Dariusz Wawrzyniak Plan wykładu CP/M MS DOS ISO 9660 UNIX NTFS System plików (2) 1 Przykłady systemu plików (1) CP/M katalog zawiera blok kontrolny pliku (FCB), identyfikujący 16 jednostek alokacji (zawierający

Bardziej szczegółowo

Podstawy Informatyki. Wykład 6. Struktury danych

Podstawy Informatyki. Wykład 6. Struktury danych Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą

Bardziej szczegółowo

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad

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

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

Bardziej szczegółowo

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

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Wykład VI PASCAL procedury i funkcje przekazywanie parametrów,

Wykład VI PASCAL procedury i funkcje przekazywanie parametrów, Podstawy programowania Wykład VI PASCAL procedury i funkcje przekazywanie parametrów, 1 I. Procedury i funkcje Zakres widoczności zmiennych i tab_los i, suma 2 I. Procedury i funkcje Procedury z parametrami

Bardziej szczegółowo

Podstawy Programowania semestr drugi. Wykład czternasty

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

Bardziej szczegółowo

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

Bardziej szczegółowo

Programowanie Niskopoziomowe

Programowanie Niskopoziomowe Programowanie Niskopoziomowe Wykład 11: Procedury zaawansowane Dr inż. Marek Mika Państwowa Wyższa Szkoła Zawodowa im. Jana Amosa Komeńskiego W Lesznie Plan Wstęp Ramki stosu Rekurencja INVOKE, ADDR, PROC,

Bardziej szczegółowo

4. Procesy pojęcia podstawowe

4. Procesy pojęcia podstawowe 4. Procesy pojęcia podstawowe 4.1 Czym jest proces? Proces jest czymś innym niż program. Program jest zapisem algorytmu wraz ze strukturami danych na których algorytm ten operuje. Algorytm zapisany bywa

Bardziej szczegółowo

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa Wieczorowe Studia Licencjackie Wrocław, 7.11.2006 Wstęp do programowania Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa Zaprezentujemy teraz algorytm na wyznaczanie wszystkich

Bardziej szczegółowo

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

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

Bardziej szczegółowo

Ada-95. Dariusz Wawrzyniak

Ada-95. Dariusz Wawrzyniak Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki

Bardziej szczegółowo

Java EE produkcja oprogramowania

Java EE produkcja oprogramowania Java EE produkcja oprogramowania PPJ PODSTAWY PROGRAMOWANIA W JAVIE PODSTAWY JĘZYKA JAVA 1 Warszawa, 2016Z 2 Ogólna charakterystyka języka Java 3 Java 1/2 Język programowania Java został opracowany przez

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

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

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp

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

System plików przykłady implementacji

System plików przykłady implementacji System plików przykłady implementacji Dariusz Wawrzyniak CP/M MS DOS ISO 9660 UNIX NTFS Plan wykładu System plików (2) Przykłady implementacji systemu plików (1) Przykłady implementacji systemu plików

Bardziej szczegółowo

Języki formalne i techniki translacji

Języki formalne i techniki translacji Języki formalne i techniki translacji Laboratorium - Projekt Termin oddania: ostatnie zajęcia przed 17 stycznia 2016 Wysłanie do wykładowcy: przed 23:59 28 stycznia 2016 Używając BISON-a i FLEX-a napisz

Bardziej szczegółowo

Zadanie analizy leksykalnej

Zadanie analizy leksykalnej Analiza leksykalna 1 Teoria kompilacji Dr inŝ. Janusz Majewski Katedra Informatyki Zadanie analizy leksykalnej Przykład: We: COST := ( PRICE + TAX ) * 0.98 Wy: id 1 := ( id 2 + id 3 ) * num 4 Tablica symboli:

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów przeznaczonych do wykonania w komputerze (ang. software).

Bardziej szczegółowo

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

Paradygmaty programowania

Paradygmaty programowania Paradygmaty programowania Jacek Michałowski, Piotr Latanowicz 15 kwietnia 2014 Jacek Michałowski, Piotr Latanowicz () Paradygmaty programowania 15 kwietnia 2014 1 / 12 Zadanie 1 Zadanie 1 Rachunek predykatów

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

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

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie PASCAL Język programowania wysokiego poziomu Opracowany przez Mikołaja Wirtha na początku lat 70 XX wieku Prosty, z silną kontrolą poprawności Stosowany prawie wyłącznie na uczelniach do nauki programowania

Bardziej szczegółowo

Metody Kompilacji Wykład 1 Wstęp

Metody Kompilacji Wykład 1 Wstęp Metody Kompilacji Wykład 1 Wstęp Literatura: Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman: Compilers: Princiles, Techniques, and Tools. Addison-Wesley 1986, ISBN 0-201-10088-6 Literatura: Alfred V. Aho,

Bardziej szczegółowo

Elementy języków programowania

Elementy języków programowania Elementy języków programowania Olsztyn 2007-2012 Wojciech Sobieski Języki programowania wymyślono po to, by można było dzięki nim tworzyć różnorodne programy komputerowe. Oczekuje się również, że tworzone

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

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

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

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

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

Bardziej szczegółowo

Architektura komputerów

Architektura komputerów Architektura komputerów Tydzień 4 Tryby adresowania i formaty Tryby adresowania Natychmiastowy Bezpośredni Pośredni Rejestrowy Rejestrowy pośredni Z przesunięciem stosowy Argument natychmiastowy Op Rozkaz

Bardziej szczegółowo

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Bazy danych. Andrzej Łachwa, UJ, /15

Bazy danych. Andrzej Łachwa, UJ, /15 Bazy danych Andrzej Łachwa, UJ, 2013 andrzej.lachwa@uj.edu.pl www.uj.edu.pl/web/zpgk/materialy 15/15 PYTANIA NA EGZAMIN LICENCJACKI 84. B drzewa definicja, algorytm wyszukiwania w B drzewie. Zob. Elmasri:

Bardziej szczegółowo

Programowanie w Turbo Pascal

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

Bardziej szczegółowo

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

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

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

Bardziej szczegółowo

KONSTRUKCJA KOMPILATORÓW

KONSTRUKCJA KOMPILATORÓW KONSTRUKCJA KOMPILATORÓW WYKŁAD Robert Plebaniak PLATFORMA PROGRAMOWA LINUX (może nie zawierać LLgen, wówczas instalacja ze strony http://tack.sourceforge.net); WINDOWS (używa się wtedy programu Cygwin,

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu. Zrozumienie funkcji danych statycznych jest podstawą programowania obiektowego. W niniejszym artykule opiszę zasadę tworzenia klas statycznych w C#. Oprócz tego dowiesz się czym są statyczne pola i metody

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. Wykład 3. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania,

SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. Wykład 3. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania, SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania Wykład 3 1 SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania Przykład Bingo 2 Treść przykładu Jak wygląda karta do

Bardziej szczegółowo

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Metody Kompilacji Wykład 7 Analiza Syntaktyczna Metody Kompilacji Wykład 7 Analiza Syntaktyczna Parsowanie Parsowanie jest to proces określenia jak ciąg terminali może być generowany przez gramatykę. Włodzimierz Bielecki WI ZUT 2/57 Parsowanie Dla każdej

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 5

Algorytmy i struktury danych. wykład 5 Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również

Bardziej szczegółowo

Zarządzanie pamięcią operacyjną

Zarządzanie pamięcią operacyjną Dariusz Wawrzyniak Plan wykładu Pamięć jako zasób systemu komputerowego hierarchia pamięci przestrzeń owa Wsparcie dla zarządzania pamięcią na poziomie architektury komputera Podział i przydział pamięci

Bardziej szczegółowo

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. 1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. Algorytmy przeszukiwania w głąb i wszerz są najczęściej stosowanymi algorytmami przeszukiwania. Wykorzystuje się je do zbadania istnienia połączenie

Bardziej szczegółowo

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325 PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj

Bardziej szczegółowo

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe Podstawy programowania Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe 1 Podstawy programowania Część I Łańcuchy znaków 2 I. Zmienne łańcuchowe Klasyfikacja zmiennych statycznych

Bardziej szczegółowo

Algorytmy i struktury danych

Algorytmy i struktury danych Algorytmy i struktury danych Funkcje i procedury Zasięg zmiennych Rekurencja Witold Marańda maranda@dmcs.p.lodz.pl 1 Modularyzacja programu Algorytmy strukturalne moŝna redukować, zastępując złoŝone fragmenty

Bardziej szczegółowo

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne: Strona 1 z 17 Typy danych 1. Dane tekstowe rozmaite słowa zapisane w różnych alfabetach: Rozwój metod badawczych pozwala na przesunięcie granicy poznawania otaczającego coraz dalej w głąb materii: 2. Dane

Bardziej szczegółowo

Drzewa podstawowe poj

Drzewa podstawowe poj Drzewa podstawowe poj ecia drzewo graf reprezentujacy regularna strukture wskaźnikowa, gdzie każdy element zawiera dwa lub wiecej wskaźników (ponumerowanych) do takich samych elementów; wez ly (albo wierzcho

Bardziej szczegółowo

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel Wstęp do programowania Drzewa podstawowe techniki Piotr Chrząstowski-Wachtel Drzewa wyszukiwań Drzewa często służą do przechowywania informacji. Jeśli uda sie nam stworzyć drzewo o niewielkiej wysokości

Bardziej szczegółowo

Ćwiczenie nr 6. Programowanie mieszane

Ćwiczenie nr 6. Programowanie mieszane Ćwiczenie nr 6 Programowanie mieszane 6.1 Wstęp Współczesne języki programowania posiadają bardzo rozbudowane elementy językowe, co pozwala w większości przypadków na zdefiniowanie całego kodu programu

Bardziej szczegółowo

Pierwsze kroki z easy Soft CoDeSys. 2009 Eaton Corporation. All rights reserved.

Pierwsze kroki z easy Soft CoDeSys. 2009 Eaton Corporation. All rights reserved. Pierwsze kroki z easy Soft CoDeSys Tworzenie prostego programu Rozpoczęcie pracy 2 Tworzenie prostego programu Wybór aparatu 3 Tworzenie prostego programu Wybór języka programowania Do wyboru jest sześć

Bardziej szczegółowo

Przykład 1: Funkcja jest obiektem, przypisanie funkcji o nazwie function() do zmiennej o nazwie funkcja1

Przykład 1: Funkcja jest obiektem, przypisanie funkcji o nazwie function() do zmiennej o nazwie funkcja1 Rachunek Prawdopodobieństwa i Statystyka lab 3. Kaja Gutowska (Kaja.Gutowska@cs.put.poznan.pl) 1. Funkcje: - Funkcje nie powinny korzystać ze zmiennych globalnych. - Funkcje powinny być możliwie krótkie.

Bardziej szczegółowo

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie Krzysztof Banaś Podstawy programowania 1 są sposobem na przechowywanie w ramach pojedynczej zmiennej zestawu zmiennych różnych typów,

Bardziej szczegółowo

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17 Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8

Bardziej szczegółowo

Podstawy Kompilatorów

Podstawy Kompilatorów Podstawy Kompilatorów Laboratorium 3 Uwaga: Do wykonania poniższych zadań związanych z implementacją niezbędny jest program LEX oraz kompilator. Dla środowiska Linux mogą to być: Darmowa wersja generatora

Bardziej szczegółowo

Generacja kodu docelowego

Generacja kodu docelowego Generacja kodu docelowego Zagadnienia związane z generacją kodu Język wejściowy i wynikowy Zarządzanie pamięcią (adresacja) Wybór rozkazów maszynowych (koszty rozkazów) Przydział i wyznaczanie rejestrów

Bardziej szczegółowo

Mikroprocesor Operacje wejścia / wyjścia

Mikroprocesor Operacje wejścia / wyjścia Definicja Mikroprocesor Operacje wejścia / wyjścia Opracował: Andrzej Nowak Bibliografia: Urządzenia techniki komputerowej, K. Wojtuszkiewicz Operacjami wejścia/wyjścia nazywamy całokształt działań potrzebnych

Bardziej szczegółowo

Delphi Laboratorium 3

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

Bardziej szczegółowo