Ada-95. Dariusz Wawrzyniak



Podobne dokumenty
Wstęp do programowania 2

Ada95 przetwarzanie rozproszone

Ada95 przetwarzanie rozproszone

Wstęp do programowania 2

Wykład 8: klasy cz. 4

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

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

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

Pakiety są logicznymi zbiorami obiektów takich jak podprogramy, typy, zmienne, kursory, wyjątki.

Oracle PL/SQL. Paweł Rajba.

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

Bazy danych wykład dwunasty PL/SQL, c.d. Konrad Zdanowski ( Uniwersytet Kardynała Stefana Bazy danych Wyszyńskiego, wykładwarszawa)

Pakiety podprogramów Dynamiczny SQL

PL/SQL. Zaawansowane tematy PL/SQL

w PL/SQL bloki nazwane to: funkcje, procedury, pakiety, wyzwalacze

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

Październik Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska. Systemy baz danych - wykład III. dr inż.

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Zaawansowane programowanie w języku C++ Klasy w C++

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

DECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];

15. Funkcje i procedury składowane PL/SQL

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Delphi Laboratorium 3

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Wykład 5: Klasy cz. 3

Plan wykładu Projekt fizyczny bazy danych Wprowadzenie PL/SQL PL/SQL Cechy PL/SQL

ZASADY PROGRAMOWANIA KOMPUTERÓW

Język PL/SQL. Rozdział 5. Pakiety podprogramów. Dynamiczny SQL

Wstęp do programowania

Lab 9 Podstawy Programowania

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Procedury i funkcje składowane

PODSTAWY BAZ DANYCH 13. PL/SQL

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Materiały. Technologie baz danych. Plan wykładu Kursory. Wykład 5: Kursory jawne. Podprogramy. Kursory jawne. Kursory niejawne

Deklarowanie kursora. CURSOR nazwa [ ( param1 typ1 [,param2 typ2]... ) ] [RETURN typ zwracany] IS zapytanie SQL;

Klasy abstrakcyjne, interfejsy i polimorfizm

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

Programowanie obiektowe

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

Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

Materiały do zajęć VII

Podstawy Programowania semestr drugi. Wykład czternasty

Efekty uboczne błędów

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

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

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

14. Elementy systemu wykonawczego

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Oracle PL/SQL. Paweł Rajba.

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

Bloki anonimowe w PL/SQL

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Język PL/SQL Procedury i funkcje składowane

Wstęp do programowania 2

Wykład 4: Klasy i Metody

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

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Szablony klas, zastosowanie szablonów w programach

PARADYGMATY PROGRAMOWANIA Wykład 4

Język C++ Programowanie obiektowe

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Podstawy programowania komputerów

Wykład 9: Polimorfizm i klasy wirtualne

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

Wstęp do programowania

ALGORYTMY I STRUKTURY DANYCH

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

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

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy PRAWA PRZYJACIÓŁ KLASY. Dostęp z zewnątrz: Dostęp z wewnątrz:

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Deklaracja struktury w C++

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

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

Rozdział 4 KLASY, OBIEKTY, METODY

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

Funkcje w PL/SQL Funkcja to nazwany blok języka PL/SQL. Jest przechowywana w bazie i musi zwracać wynik. Z reguły, funkcji utworzonych w PL/SQL-u

Język PL/SQL Pakiety podprogramów

Programowanie obiektowe

PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT

Definicje klas i obiektów. Tomasz Borzyszkowski

Kursory i wyjątki. (c) Instytut Informatyki Politechniki Poznańskiej 1

TEMAT : KLASY DZIEDZICZENIE

Podstawy programowania w języku C++

C# 6.0 : kompletny przewodnik dla praktyków / Mark Michaelis, Eric Lippert. Gliwice, cop Spis treści

Programowanie obiektowe

Zmienne, stałe i operatory

Wyzwalacze. Anna Fiedorowicz Bazy danych 2

Obsługa wyjątków. Język C++ WW12

Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.

Wprowadzenie do programowania w języku C

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:

Wstęp do programowania obiektowego. Wykład 2

Wskaźniki. Informatyka

Tabela wewnętrzna - definicja

Transkrypt:

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 w języku Ada Wskaźnik w języku Ada jest odpowiednikiem referencji w innych językach programowania. Wskaźnika nie należy utożsamiać z adresem w pamięci. Rodzaje wskaźników: wskaźniki na dynamicznie przydzielone obszary pamięci, wskaźniki na obiekty utworzone statycznie, wskaźniki na podprogramy.

Typy wskaźnikowe typ wskaźnikowy ograniczony wskaźniki na obiekty tworzone dynamicznie, typ wskaźnikowy ogólny: typ wskaźnikowy na zmienne i stałe z modyfikatorem constant wskaźniki na obiekty statyczne lub dynamiczne, za pośrednictwem których można tylko odczytywać wartości wskazywanych obiektów, typ wskaźnikowy na zmienne z modyfikatorem all wskaźniki na obiekty statyczne lub dynamiczne, za pośrednictwem których można zarówno odczytywać wartości wskazywanych obiektów, jak i je zapisywać, typ wskaźnikowy na podprogramy wskaźniki na funkcje lub procedury, za pośrednictwem których można wywoływać wskazywane podprogramy.

Przykłady definicji typu wskaźnikowego Przykład: typ wskaźnikowy ograniczony type Pool_Pointer is access Integer; Przykład: typ wskaźnikowy ogólny type RO_Pointer is access constant Integer; type RW_Pointer is access all Integer; Przykład: typ wskaźnikowy na podprogram type F_Pointer is access function(a: Float) return Float; type P_Pointer is access procedure(a: in out Float);

Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4

Tworzenie obiektów dynamicznych Pamięć alokowana dynamicznie przydzielana jest na potrzeby obiektów określonego typu. Alokator obiektu dynamicznego składa się z instrukcji new wraz z typem obiektu i ewentualnym inicjalizatorem, np.: new Integer (0). Alokator zwraca wskaźnik na dynamicznie utworzony obiekt. Wskaźnik ten może być podstawiony pod zmienna wskaźnikowa dowolnego rodzaju, zgodna co do typu podstawowego (wskazywanego) z typem alokowanego obiektu.

Przykłady tworzenia obiektów dynamicznych Przykład tworzenia rekordu type Rec is record i: Integer; f: Float; end record; type Rec_Ptr is access Rec; rp1: Rec_Ptr := new Rec (i => 1, f => 3.14); rp2: Rec_Ptr := new Rec (1, 3.14);

Zwalnianie pamięci przydzielonej dynamicznie Automatyczne zwalnianie pamięci przydzielonej do obiektu utworzonego dynamicznie po zlikwidowaniu wszystkich wskaźników do tego obiektu (ang. garbage collection). Jawne zwalnianie pamięci poprzez wywołanie specjalnie w tym celu utworzonej procedury. Procedura tworzona jest poprzez konkretyzację wzorca (tzw. procedury rodzajowej, ang. generic) Unchecked_Dealocation, dostarczanego jako część środowiska języka Ada. Przykład wywołania procedury zwalniania Dealloc_Rec( rp2 );

Procedura zwalniania Specyfikacja rodzajowej procedury zwalniania generic type Object (<>) is limited private; type Name is access Object; procedure Unchecked_Deallocation (X : in out Name); Przykład konkretyzacji procedury zwalniania with Unchecked_Deallocation; procedure Dealloc_Rec is new Unchecked_Deallocation(Rec, Rec_Ptr);

Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4

Uzyskanie wskaźnika Wartość wskaźnika ogólnego uzyskuje się za pomoca atrybutu access obiektu wskazywanego. Przykład gp: RW_Pointer := j access; rp: RO_Pointer := c access; Uwaga W celu umożliwienia uzyskania wskaźnika na stała lub zmienna należy ja zadeklarować jako aliased. Przykład j : aliased Integer; c : aliased constant Integer := 87;

Wskaźnik na stała Wskaźnik na stała musi być typu wskaźnikowego z modyfikatorem constant. Przykład type Const_Pointer is access constant Integer; Uwaga Jeśli wskaźnik z modyfikatorem constant wskazuje na zmienna, może on być używany tylko do odczytu wartości tej zmiennej, nie może natomiast być użyty w celu modyfikacji jej wartości.

Wskaźnik na podprogram Wskaźnik na podprogram uzyskuje się również za pomoca atrybutu access. Przykład function Func(a: Float) return Float is begin... end; fp: F_Pointer := Func access;

Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4

Dostęp do wartości obiektu typu prostego Dostęp do wartości zmiennej lub stałej typu prostego za pośrednictwem wskaźnika umożliwia pseudoskładowa all. Przykład declare gp: RW_Pointer :=...; rp: RO_Pointer :=...; i: Integer; begin gp.all := 2; i := rp.all; end;

Dostęp do składowych rekordu (1) Dostęp do wartości pól rekordu za pośrednictwem wskaźnika wyglada składniowo się tak samo, jak za pośrednictwem identyfikatora zmiennej (nie jest wymagane użycie all). Przykład declare type Rec is record s: Integer; end record; type Rec_Pointer is access Rec; gp: Rec_Pointer := new Rec; begin gp.s := 2; end;

Dostęp do składowych rekordu (2) Uwaga Odniesienie do rekordu jako całości wymaga użycia pseudoskładowej all. Przykład declare gp1, gp2: Rec_Pointer; begin gp1 := gp2; -- podstawienie wskaznikow gp1.all := gp2.all; -- podstawienie wart. end;

Wywoływanie podprogramów przez wskaźniki Jeśli do podprogramu przekazywane sa jakieś parametry aktualne, składnia jego wywołania przez wskaźnik jest taka sama, jak za pośrednictwem nazwy (nie jest wymagane użycie pseudoskładowej all). Jeśli natomiast podprogram jest bezparametrowy, wymagane jest użycie pseudoskładowej all. Uwaga Jeśli do wywoływanego podprogramu z parametrami formalnymi nie sa przekazywane żadne parametry aktualne (gdyż np. wejściowe parametry formalne maja wartości domyślne) składnia jego wywołania przez wskaźnik wymaga użycia pseudoskładowej all.

Przykład wywoływania podprogramu przez wskaźnik Przykład declare type P_Pointer is access procedure(a: Float); procedure Proc(a: Float := 0) is begin... end; pp: P_Pointer := Proc access; begin pp(3.14); pp.all; -- brak parametrow aktualnych -- konieczne jest all end;

Część II Wyjatki

Wprowadzenie Wyjatek jest obiektem typu exception. Jedynym atrybutem wyjatku w czystym języku jest jego nazwa. Wyjatki zgłaszane sa instrukcja raise w programie lub przez środowisko wykonawcze w przypadku napotkania pewnych błędów. Po zgłoszeniu wyjatków sterowanie przekazywane jest do strefy obsługi wyjatków. Strefa obsługi wyjatków może pojawić się w każdym bloku i jest jego ostatnia częścia.

Deklaracja wyjatków Wyjatek, jak każdy inny obiekt, deklarowany jest w części deklaracyjnej bloku. Przykład x1, x2: exception; Oprócz wyjatków deklarowanych przez programistę w języku Ada sa 4 wyjatki predefiniowane: Constaint_Error, Program_Error, Storage_Error, Tasking_Error.

Zgłaszanie wyjatków Zgłoszenie wyjatków następuje w wyniku wykonania instrukcji raise. Przykład raise x2; Zgłoszenie wyjatku może nastapić zarówno w wyniku wykonywania ciagu instrukcji, jak również w wyniku opracowania części deklaracyjnej. Instrukcja raise bez operandu oznacza ponowne zgłoszenie obsługiwanego wyjatku (w bloku zewnętrznym ) i może się pojawić tylko w strefie obsługi wyjatków.

Obsługa wyjatków Strefa obsługi wyjatków znajduje się w ostatniej części bloku i zaczyn się od słowa exception. Przykład begin... raise x2;... exception when x1 => raise; when x: x2 => Put_line(Exception_Information(x)); end