Delphi Laboratorium 3



Podobne dokumenty
Język PL/SQL. Rozdział 3. Obsługa błędów wykonania Wyjątki predefiniowane i użytkownika, zgłaszanie i obsługa wyjątków.

PODSTAWY PROGRAMOWANIA

Oracle PL/SQL. Paweł Rajba.

Wprowadzenie do języka Pascal

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Semantyka i Weryfikacja Programów - Laboratorium 3

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Programowanie Wizualno Obiektowe - zajęcia 5 (PWO_BCPP_5_1) 1 Tworzenie plików pomocy Programowanie Wizualno Obiektowe Zajęcia 5, część 1

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

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

Wyjątki (exceptions)

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

1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...

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

Pascal. program helloconsole; {słowo kluczowe program wraz z nagłówkiem programu (taki sam jak nazwa projektu)}

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

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 1. Programowanie komputerowe

PARADYGMATY PROGRAMOWANIA Wykład 4

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

Ada-95. Dariusz Wawrzyniak

Programowanie w Turbo Pascal

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ć

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

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

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

Efekty uboczne błędów

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych

Programowanie RAD Delphi

Algorytmika i Programowanie VBA 1 - podstawy

Programowanie Obiektowe Ćwiczenie 4

Języki i metody programowania Java INF302W Wykład 3 (część 1)

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

Nazwa implementacji: Kółko i krzyżyk w Lazarusie. Autor: Piotr Fiorek Andrzej Stefaniuk

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

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

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

PODSTAWY PROGRAMOWANIA

Informatyka 1. Przetwarzanie tekstów

DECLARE VARIABLE zmienna1 typ danych; BEGIN

Programowanie obiektowe

Podstawy programowania

Struktury, unie, formatowanie, wskaźniki

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Podstawy Programowania C++

Wstęp do programowania

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

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Zmienne, stałe i operatory

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

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

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

INFORMATYKA. Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki. dr inż. Michał Łanczont

Wstęp do programowania

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

ZMIENNE. Podstawy PHP

Podstawy Programowania 2

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy WSKAŹNIKI KLASOWE

Wprowadzenie do programowania w VBA

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Algorytmy i struktury danych

Algorytm. a programowanie -

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

Pakiety podprogramów Dynamiczny SQL

Właściwości i metody obiektu Comment Właściwości

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

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

I - Microsoft Visual Studio C++

Obsługa błędów za pomocą wyjątków. Paweł Motofa (140746)

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

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

ForPascal Interpreter języka Pascal

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

Język programowania PASCAL

Programowanie obiektowe zastosowanie języka Java SE

TEMAT : KLASY DZIEDZICZENIE

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Wykład PASCAL - Pliki tekstowe

Zasady Programowania Strukturalnego

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

Delphi podstawy programowania. Dialogi

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

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

OPERACJE NA PLIKACH. Podstawowe pojęcia:

Materiały do laboratorium MS ACCESS BASIC

Wykład 8: Obsługa Wyjątków

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

Ćwiczenie VB3.4 Struktura Try...Catch, obiekt Err, metoda Err.Raise (Strukturalna obsługa wyjątków)

Język ludzki kod maszynowy

Laboratorium 3: Preprocesor i funkcje ze zmienną liczbą argumentów. mgr inż. Arkadiusz Chrobot

Wstęp do programowania. Różne różności

BAZY DANYCH W APLIKACJACH SIECIOWYCH

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

Zadanie nr 3: Sprawdzanie testu z arytmetyki

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

Język PL/SQL Pakiety podprogramów

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Visual Basic Debugging and Error Handling

Transkrypt:

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ść, lecz nie zwraca wyniku. Parametr jest wartością przekazywaną do funkcji albo procedury, który modyfikuje lub określa zakres jej działania. Każda funkcja w Delphi ma predefiniowaną zmienną lokalną o nazwie Result. Używana jest ona do przechowywania wyniku zwracanego przez funkcję. Wystarczy więc przypisać zmiennej Result wartość, którą funkcja ma zwrócić jako wynik. Deklaracja funkcji i procedury ma następującą postać: procedure nazwa (lista parametrów); deklaracje zmiennych lokalnych (nie są widoczne poza ciałem procedury) blok instrukcji; function nazwa (lista parametrów):typ zwracanej wartości; deklaracje zmiennych lokalnych (nie są widoczne poza ciałem funkcji) blok instrukcji; procedure Up20 (I: Integer); if I > 20 then writeln('wiecej niż 20'); function MyFunc: Integer; I: Integer; I := 22;

MyFunc := Inc(I); //do zmiennej wynikowej przypisane 23 Result := Result * 2; // do zmiennej wynikowej przypisane 46 MyFunc := Result + 1; //funkcja zwroci 47 Wywołanie powyższej funkcji i procedury np.: I = MyFunc; Up20(I); Parame do funkcji/procedur mogą być przekazywane przez: Wartość Powoduje to automatyczne utworzenie lokalnej kopii tak przekazywanego parametru i wykonywanie na nim wszystkich operacji w treści procedury/funkcji. Oryginalny parametr nie zostaje naruszony, jego wartość nie ulega zmianie. procedure MyFunc(S: String); Referencję (inaczej nazywane przez adres lub przez zmienną) Powoduje, że w treści procedury/funkcji pod nazwą parametru kryje się rzeczywisty parametr aktualny i wszystkie operacje wykonywane są bezpośrednio na nim. Jest to sposób na przekazanie przez procedurę wartości zwrotnej do programu wywołującego po zakończeniu procedury/funkcji wartość parametru odzwierciedla wszystkie wykonywane na nim operacje. Deklaracja parametru przekazywanego przez referencję polega na poprzedzeniu jego nazwy słowem kluczowym. procedure MyFunc( I: Integer); I := Inc(I); M: Integer; M := 12; MyFunc(M); Writeln(M); //M ma teraz wartość 13 Stałą Łączy zalety dwóch powyższych sposobów. Z jednej strony parametr podlega tym samym regułom co parametr przekazywany przez wartość, z drugiej jednak strony na stosie

odkładany jest adres parametru (nie jego kopia) przy czym kompilator nie dopuści aby parametr ten znalazł się po lewej stronie przypisania. Deklaracja parametru przekazywanego przez stałą polega na poprzedzeniu jego nazwy słowem kluczowym const. Przekazanie parametru przez stałą jest wskazane w przypadku, gdy parametr jest tylko parametrem wejściowym i nie zamierzamy wykorzystywać jego kopii lokalnej jako obszaru roboczego. procedure MyFunc(const I: Integer); N: Integer; N := 1; I := Inc(N); //ta instrukcja spowoduje blad kompilacji N := I + 1; //poprawne M: Integer; M := 12; MyFunc(M); Writeln(M); //M ma nadal wartość 12 2. Zabezpieczanie programów przed błędami Warunkiem i (lub) stanem wyjątkowym nazywamy wystąpienie błędu lub innego zdarzenia, które przerywa normalne wykonywanie programu. W języku Delphi warunki i stany wyjątkowe są reprezentowane przez typy klasowe (wszystkie są potomkami typu Exception). Obsługę błędów, które normalnie powodują przerwanie wykonywania programu (np. brak pamięci, naruszenie jej ochrony, dzielenie przez zero etc.) zapewnia moduł System.SysUtils. a. Procedura Val (bez generowania wyjątków) procedure Val (S: string; liczba; kod: Integer); Procedura powoduje przekształcenie łańcucha S (pierwszy parametr) na liczbę i zapamiętuje wynik pod zmienną liczba podaną jako drugi argument. Łańcuch musi być poprawną liczbą całkowitą lub rzeczywistą. Jeśli łańcuch nie jest poprawną liczbą

to pod zmienną kod znajdzie się pozycja pierwszego błędnego znaku. Jeśli wszystko przekształcenie przebiegnie pomyślnie to pod zmienną kod zostanie podstawione 0. s1 : string; i, kod : Integer; s1 := 1234 ; Val(s1, i, kod); //kod=0, zamiana przebiegła pomyślnie s1 := 234m6 ; Val(s1, i, kod); //kod=4, błąd b. Instrukcja wywoływania stanów wyjątkowych raise Służy do wywoływania warunków lub stanów wyjątkowych predefiniowanych lub zdefiniowanych przez programistę. Instrukcja może mieć takie postacie: //pozwala na generowanie wyjątków poza blokiem..except raise stan-wyjatkowy //może zostać użyta tylko w bloku except instrukcji except //powoduje wyświetlenie domyślnego komunikatu o błędzie raise Stan wyjątkowy to wyrażenie typu klasowego (obiekt). Przykład (liczba jest zmienną typu Integer): if (liczba < -10) or (lizcba > 10) then raise EIntOverflow.Create('Wartość poza zakresem'); Jeśli wartość zmiennej liczba będzie poza zakresem to zostanie wyświetlone okienko z napisem. c. Instrukcja obsługi warunków except Podstawowa instrukcja obsługi warunków i stanów wyjątkowych. Składnia: w połączeniu z except <instrukcje programu> except on <typ wyjątku> do <obsługa wyjątku>

Słowo kluczowe wyznacza początek bloku obsługi wyjątków except. W jego ramach wykonywane są <instrukcje programu>. Jeżeli wykonywanie którejś instrukcji spowoduje wystąpienie wyjątku wykonywana jest sekcja rozpoczynająca się od słowa except, natomiast w przypadku bezbłędnego wykonania <instrukcji programu> sekcja except pozostaje niewykorzystana. Dyrektywy on w sekcji except służą do zróżnicowanej obsługi poszczególnych typów wyjątków; jeżeli nie zostanie użyta żadna dyrektywa on, wszystkie wyjątki obsługiwane będą w taki sam sposób. Przykład programu konsolowego: Program Obsluga; {$APPTYPE CONSOLE} R1, R2 : Double; While True do Write('Podaj liczbę rzeczywistą:'); Readln(R1); Write('Podaj inną liczbę rzeczywistą:'); Readln(R2); Writeln('Spróbuję podzielić wprowadzone liczby'); Writeln('Iloraz wynosi ', (R1/R2)); except on EZeroDivide do Writeln('Próba dzielenia przez zero!'); on EInOutError do Writeln('Nieprawidłowa postać liczby!'); Inny przykład (fragment aplikacji - procedura): procedure TForm1.Button1Click(Sender: TObject); liczba, liczba1, wynik: Integer; liczba := StrToInt(Edit1.Text); liczba1 := StrToInt(Edit2.Text); wynik := liczba div liczba1;

except on EDivByZero do MessageDlg('Can not divide by zero!', mterror, [mbok], 0) ; on EInOutError do MessageDlg('Błędna postać liczby!', mterror, [mbok], 0) ; end. d. Instrukcja obsługi warunków finally W odróżnieniu od bloku except w instrukcji except kod znajdujący się po słowie finally będzie wykonywany zawsze, niezależnie od tego czy wystąpi wyjątek. Instrukcji tej używa się np. w przypadku gdy konieczne jest zwolnienie pamięci czy zamknięcie pliku, a nie jesteśmy pewni, czy podczas operacji nie wystąpi żaden błąd. <instrukcje programu> finally <instrukcje programu> Reset (plik); //otwarcie pliku //przetwarzanie pliku finally CloseFile(plik); //zamknięcie pliku except on EInOutError do //obsługa błędów przetwarzania pliku (błędów we-wy)