Ogólne jednostki programowe 1

Slides:



Advertisements
Podobne prezentacje
Funkcje w PHP ABK.
Advertisements

C++ wykład 9 ( ) Szablony.
C++ wykład 2 ( ) Klasy i obiekty.
Język C/C++ Funkcje.
Deklaracje i definicje klas w C++ Składowe, pola, metody Konstruktory
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas. 2 Wzorce Często pojawia się konieczność pisania podobnych funkcji lub klas operujących na argumentach.
1 Dzisiejszy wykład Wzorce funkcji Wzorce klas Tablica asocjacyjna Składowe statyczne.
Wzorce.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
PROGRAMOWANIE STRUKTURALNE
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Języki formalne i gramatyki
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Kurs Pascala – spis treści
Struktury.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
Podprogramy 1 W Adzie mamy dwa rodzaje podprogramów (subprograms, subroutines): funkcje (functions) i procedury (procedures) Deklaracja i treść funkcji 
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
Typy pochodne 1 Często dogodnie jest wprowadzić nowy typ, który jest podobny do istniejącego, niemniej jednak różny. Niech T będzie pewnym typem. Możemy.
Programowanie zorientowane obiektowo 1 Programowanie zorientowane obiektowo (object-oriented programming) jest to metodologia programowania bazująca na.
Dynamiczne struktury danych 1
Tablice jednowymiarowe 1
Typy danych – podstawy 1 W Adzie wszystkie dane muszą być określonego typu. Definicja Typ danych (data type) jest to zbiór wartości i operacji, które można.
Typy prywatne 1 Typy prywatne W Adzie typy prywatne (private types) służą do bezpiecznego udostępniania danych zdefiniowanych w pakiecie, z którego korzysta.
Rekordy 1 Definicja Typ strukturalny nazywamy typem rekordowym, jeżeli zawiera pewną liczbę nazwanych składowych, które mogą być różnych typów. Dostęp.
Stałe i zmienne 1 Definicja Literałem (literal) nazywamy wartość danej jawnie pisaną w programie Przykład Ada.Float_Text_Io.Put ( ); Definicja Stałą
Typy wskaźnikowe ogólne 1 Typy wskaźnikowe ogólne (general access types) umożliwiają pośredni dostęp (indirect access), czyli przez wskaźniki, do zadeklarowanych.
Wykład 2 struktura programu elementy języka typy zmienne
22 listopada 2000Regula konkatenacji II1 Dziedziczenie (cd.) Reguła konkatenacji II przykład - heapsort Reguła konkatenacji III.
Podprogramy.
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Pakiety w Javie Łukasz Smyczyński (132834). Czym są pakiety? Klasy w Javie są grupowane w pewne zbiory zwane pakietami. Pakiety są więc pewnym podzbiorem.
Podstawy programowania
Programowanie strukturalne i obiektowe
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Operacje na strukturach listowych
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
Turbo Pascal Turbo Pascal - jedna z popularniejszych implementacji kompilatorów języka PASCAL, zintegrowane srodowisko programistyczne, produkt firmy Borland.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Struktura programu w Turbo Pascalu.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Procedury i funkcje.
Jerzy F. Kotowski1 Informatyka I Wykład 8 STRUKTURA PROGRAMU n Funkcje n Klasy zmiennych n Projekt.
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Zbiory i rekordy mgr inż. Agata Pacek. Deklaracja typu zbiorowego (określa ilość elementów w zbiorze) type biegi=set of 0..6; Definiowanie zmiennej typu.
Przekazywanie parametrów do funkcji oraz zmienne globalne i lokalne
Wykład 10 typ zbiorowy rekurencja.
Funkcje w C++ Funkcja – wydzielony fragment kodu użyty w programie (raz lub więcej razy) spełniający określone zadanie, np. obliczenie średniej ocen.
K URS JĘZYKA C++ – WYKŁAD 10 ( ) Szablony.
Programowanie strukturalne i obiektowe C++
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Programowanie proceduralne Podstawy Programowania dla geoinformatyków Wykład 3 Rafał Witkowski, 2015.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
Podstawy informatyki Preprocesor Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Podstawy informatyki Funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Pakiety numeryczne Skrypty, funkcje Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania.
Dominik Benduski Michał Mandecki Podstawy Visual Basic w Excelu.
K URS JĘZYKA C++ – WYKŁAD 3 ( ) Przenoszenie Składowe statyczne Funkcje wbudowane Argumenty domyślne.
Wykład 1 Informatyka II MPZI2 sem.letni. Tablice Tablice deklarujemy array [ lista typów indeksów ] of typ bazowy (składowych) np. var t1,t2:array [1..5,
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy kombinacyjne.
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
(według:
Dane, zmienne, instrukcje
Zapis prezentacji:

Ogólne jednostki programowe 1 Przykład Procedura Wymien W Adzie parametry formalne i parametry aktualne podprogramów muszą być zgodne. Procedura wymieniająca wartości zmiennych typu Natural procedure Wymien_Natural (N1, N2 : in out Natural) is Temp: Natural; begin Temp := N1; N1 := N2; N2 := Temp; end Wymien_Natural;

Ogólne jednostki programowe 2 Ta sama procedura wymieniająca wartości zmiennych typu Float procedure Wymien_Float (F1, F2 : in out Float) is Temp: Float; begin Temp := N1; N1 := N2; N2 := Temp; end Wymien_Float; Przy wymianie danych innych typów musimy pisać nowe procedury i nigdy nie mamy pewności, że te które już napisaliśmy wyczerpią wszystkie aktualne i przyszłe potrzeby programów klienckich.

Ogólne jednostki programowe 3 Wszystkie procedury Wymien możemy umieścić w pakiecie, np. Procedury_Wymiany, ale po włączeniu do niego procedury obsługującej kolejny typ danych, musimy dokonać ponownej kompilacji tego pakietu. Podejście takie jest nieoszczędne, nieeleganckie i zawodne, bo w przypadku wykrycia i usunięciu błędów w jednej z testowanych procedur możemy zapomnieć o poprawie jednej, lub kilku pozostałych. Zadanie Czy procedury Wymien_Natural i Wymien_Float mogą obydwie mieć nazwę Wymien?

Ogólne jednostki programowe 4 Ada umożliwia opracowanie jednej procedury ogólnej (generic), która po odpowiednim przystosowaniu, czyli konkretyzacji (instantiation) do aktualnie używanego typu danych może być użyta w programie klienckim wymieniającym wartości zmiennych. Procedura ogólna wymieniająca wartości typu Typ_Danych może mieć postać: procedure Wymien_Ogolnie (W1, W2 : in out Typ_Danych) is Temp: Typ_Danych; begin Temp := N1; N1 := N2; N2 := Temp; end Wymien_Ogolnie;

Ogólne jednostki programowe 5 Typy jako parametry formalne jednostki ogólnej W tekście programu musimy umieścić sekcję ogólną, w której deklarujemy nazwę typu będącego typem parametrów procedury Wymien_Ogolnie, podajemy nagłówek tej procedury, a potem całą jej deklarację. Piszemy: -- Specyfikacja ogólnej procedury wymiany generic type Typ_Danych is private; procedure Wymien_Ogolnie (W1, W2 : in out Typ_Danych); -- Treść ogólnej procedury wymiany -- Tutaj wstawiamy treść pokazaną na poprzednim -- slajdzie

Ogólne jednostki programowe 6 Kompilacja tej procedury daje kod gotowy do jej konkretyzacji w programie klienckim, lub w dalszej części naszego programu, w którym pojawiła się sekcja ogólna. W przypadku typów Integer i Natural konkretyzacje mogą mieć postać: procedure Wymien_Integer is new Wymien_Ogolnie (Typ_Danych => Integer); procedure Wymien_Float is new Wymien_Ogolnie (Typ_Danych => Float); Zadanie Czy typ Typ_Danych zadeklarowany w sekcji ogólnej jako private, może być typem prywatnym ograniczonym – limited private? Uzasadnij odpowiedź.

Ogólne jednostki programowe 7 Przykład Wymiana_Ogolna W programie sekcja ogólna i treść procedury ogólnej znajdują się w części deklaracyjnej programu. Drugim rozwiązaniem jest umieszczenie procedury ogólnej w pakiecie, którego część publiczna zawiera deklarację typu Typ_Danych i nagłówek naszej procedury Wymien_Ogolnie Przykład Wymiana Wymiana_Ogolna_Import

Ogólne jednostki programowe 8 Definicja Jednostka ogólna (generic unit) jest wzorcem (template) procedury, funkcji, albo pakietu. Jednostka ogólna definiowana jest z parametrami formalnymi, którymi zazwyczaj są typy danych, ale mogą nimi być też nazwy procedur i funkcji. Podprogramy jako parametry formalne jednostki ogólnej Przykład Weźmy pod uwagę funkcję obliczającą wartość większego z jej dwóch argumentów typu Integer.

Ogólne jednostki programowe 9 function Maksimum (A, B : in Integer) return Integer is Wynik : Integer; begin if A > B then Wynik := A; else Wynik := B; end if; return Wynik; end Maksimum; Chcemy skonstruować ogólną funkcję Maksimum wyznaczającą wartość większego z dwóch jej argumentów, niezależnie od tego jakiego są typu. Możemy oczywiście użyć ogólnego typu parametrów formalnych, aby poinformować kompilator, że konkretyzacja może dotyczyć dowolnego typu.

Ogólne jednostki programowe 10 Nie jest to jednak w rozpatrywanym przypadku informacja wystarczająca ponieważ nie wszystkie typy mogące konkretyzować naszą funkcję ogólną mają zdefiniowaną wstępnie relację większości, używaną w części operacyjnej tej funkcji. Możemy oczywiście napisać odpowiednią funkcję obliczającą wartość tej relacji w przypadku podanego w konkretyzacji typu, ale kompilator musi posiadać informację, że ma tej funkcji użyć. W sekcji ogólnej umieszcza się informację, że taka funkcja istnieje. Piszemy:

Ogólne jednostki programowe 11 Sekcja ogólna generic type Typ_Danych is private; with function Wiekszy(L, R : Typ_Danych) return Boolean; function Maksimum (W1, W2 : Typ_Danych) return Typ_Danych;

Ogólne jednostki programowe 12 Treść funkcji ogólnej function Maksimum (W1, W2 : Typ_danych) return Typ_danych is begin if Wiekszy(W1, W2) then return W1; else return W2; end if; end Maksimum;

Ogólne jednostki programowe 13 Konkretyzacja w przypadku typu standardowego Float może mieć postać: function Maksimum_Float is new Maksimum (Typ_Danych => Float, Wiekszy => ">"); Trzeba jednak pamiętać, że kompilator nie może sprawdzić, czy przy konkretyzacji stosujemy właściwą funkcję wyznaczającą wartość relacji Wiekszy. Moglibyśmy również napisać function Maksimum_Float is new Maksimum (Typ_Danych => Float, Wiekszy => "<");

Ogólne jednostki programowe 14 Przykład Obliczanie_Maksimum