Literatura. Techniki programowania II s.1-1

Podobne dokumenty
Wprowadzenie do języka Pascal

Delphi podstawy programowania. Środowisko Delphi

PROGRAM: WYSZUKANIE LICZBY MAKSYMALNEJ

Instrukcja warunkowa i wyboru

Wprowadzenie do systemu Delphi

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

Delphi. Lazarus. Kompilatory Delphi. Linki do stron o Delphi

Podstawy Programowania 2

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Dodanie nowej formy do projektu polega na:

Podstawy programowania obiektowego

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Kalkulator. Programowanie komputerów. Kalkulator możliwe udoskonalenia. Kalkulator. Kalkulator. Kalkulator możliwe udoskonalenia

Programowanie w języku Python. Grażyna Koba

Delphi Laboratorium 3

Programowanie RAD Delphi

Programowanie obiektowe

PROGRAMOWANIE W SYSTEMIE WINDOWS

Budowa aplikacji z graficznym interfejsem użytkownika - GUI (Graphic User Interface)

Instrukcja użytkownika

Spis treści TRYB GRAFICZNY SYSTEMU WINDOWS - PODSTAWY OBSŁUGI WYBRANEGO ŚRODOWISKA PROGRAMISTYCZNEGO, TWORZENIE INTERFEJSU UŻYTKOWNIKA.

Język programowania PASCAL

Tworzenie okna dialogowego w edytorze raportu SigmaNEST. część 1

Po uruchomieniu Lazarusa należy wybrać z paska górnego opcję Projekt i następnie Nowy Projekt. Pokaże się okno:

Gdy z poziomu programu Delphi otworzysz folder pierwszy program, zauważysz tylko dwa pliki [rys.1]:

Kierunek: ETI Przedmiot: Programowanie w środowisku RAD - Delphi Rok III Semestr 5. Ćwiczenie 5 Aplikacja wielo-okienkowa

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

Spis treści TRYB GRAFICZNY SYSTEMU WINDOWS - PODSTAWY OBSŁUGI WYBRANEGO ŚRODOWISKA PROGRAMISTYCZNEGO. Informatyka 2

Programowanie w środowisku graficznym GUI

Wykład 7: Lazarus GUI

Ćwiczenie 6 Proste aplikacje - podstawowe komponenty.

Niniejszy ebook jest własnością prywatną.

1 Podstawy c++ w pigułce.

Temat: Organizacja skoroszytów i arkuszy

P R OGRA M OW A N I E KOMPUTERÓW Ćwiczenia laboratoryjne

Język programowania. Andrzej Bobyk

Programowanie obiektowe zastosowanie języka Java SE

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Tworzenie własnych komponentów

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

C++ Builder. Programowanie komputerów. C++ Builder: OOP. C++ Builder: EDP. C++ Builder: EDP. C++ Builder: EDP

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

Kolumna Zeszyt Komórka Wiersz Tabela arkusza Zakładki arkuszy

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

Programowanie obiektowe

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

Podstawy programowania. Ćwiczenie. Pojęcia bazowe. Języki programowania. Środowisko programowania Visual Studio

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

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

Dodawanie grafiki i obiektów

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

Delphi 7 + Indy 10 Przykłady prostych aplikacji sieciowych

Cel: Przypisujemy przyciskom określone funkcje panel górny (Panel1)

Rys.2.1. Drzewo modelu DOM [1]

Tworzenie bazy danych na przykładzie Access

CZĘŚĆ A PIERWSZE KROKI Z KOMPUTEREM

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

Powtórka algorytmów. Wprowadzenie do języka Java.

BAZY DANYCH Panel sterujący

Algorytmika i Programowanie VBA 1 - podstawy

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

UNIWERSYTET RZESZOWSKI KATEDRA INFORMATYKI

Visual Studio instalacja

Programowanie Obiektowe GUI

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

Co to jest arkusz kalkulacyjny?

Podręcznik użytkownika programu. Ceremonia 3.1

Programowanie modułowe

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

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

Lazarus dla początkujących, część II

Zadanie 1. Stosowanie stylów

Pascal - wprowadzenie

Język ludzki kod maszynowy

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI

Podstawy Programowania Obiektowego

Edytor tekstu MS Office Word

5.4. Tworzymy formularze

Rys.1. Technika zestawiania części za pomocą polecenia WSTAWIAJĄCE (insert)

Wstęp do programowania. Wykład 1

Projekt Hurtownia, realizacja rejestracji dostaw produktów

KROK 17 i 18. Cel: Tworzymy oddzielne okno - O autorze. 1. Otwórz swój program. 2. Skompiluj i sprawdź, czy działa prawidłowo.

Borland to firma, która stworzyła kilka środowisk programistycznych: Turbo Pascal Borland Pascal Objekt Pascal Borland Delphi C++ Builder C++

16) Wprowadzenie do raportowania Rave

Ćwiczenia nr 2. Edycja tekstu (Microsoft Word)

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

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

Wykład 4 Delegat (delegate), właściwości indeksowane, zdarzenie (event) Zofia Kruczkiewicz

Edytor tekstu Microsoft Office 2007 przewodnik dla gimnazjalisty Autor: Dariusz Kwieciński nauczyciel ZPO w Sieciechowie

Informatyka Arkusz kalkulacyjny Excel 2010 dla WINDOWS cz. 1

- Narzędzie Windows Forms. - Przykładowe aplikacje. Wyższa Metody Szkoła programowania Techniczno Ekonomiczna 1 w Świdnicy

1. Przypisy, indeks i spisy.

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

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

Arkusz kalkulacyjny. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Układy VLSI Bramki 1.0

Część 3 - Konfiguracja

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

Arkusz strona zawierająca informacje. Dokumenty Excela są jakby skoroszytami podzielonymi na pojedyncze arkusze.

I. Program II. Opis głównych funkcji programu... 19

Transkrypt:

Literatura A. Daniluk ABC Delphi 7, Helion, 2003, W. Kwasowiec Wprowadzenie do Object Pascal i Delphi, Mikom 2001, A. Synarska Delphi od podstaw, Edition 2001, N. Wirth Algorytmy + struktury danych = programy, WNT 2002, M. Iglewski PASCAL język wzorcowy, Pascal 360, WNT 1984. X. Pacheco, S. Teixeira Delphi 6. Vademecum Profesjonalisty, tom I i II, Helion 2002, T. Pamuła Aplikacje w Delphi. Przykłady, Helion 2003, T. M. Sadowski Praktyczny kurs Delphi, Helion 2003. Techniki programowania II s.1-1

Podstawy programowania w Delphi programowanie obiektowe i sterowane zdarzeniami obiekt, klasa, komponent zmienne, instrukcja przypisania, operacje arytmetyczne wprowadzanie i wyprowadzanie danych liczbowych Techniki programowania II s.1-2

Pojęcia podstawowe Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania; zbiór poleceń określających sposób przetwarzania zbioru danych ze wskazaniem kolejności w jakiej mogą być wykonane. Język programowania sformalizowany język opisu algorytmów przeznaczonych do wykonywania przez komputer. Język niskiego poziomu język programowania zawierający polecenia odzwierciedlające listę wewnętrzną rozkazów komputera. Język wysokiego poziomu niezwiązany z określonym typem komputera, wykonanie programu wymaga wcześniejszego przetłumaczenia przy pomocy odpowiedniego translatora. Programowanie konstruowanie programów i przygotowanie ich do eksploatacji; kodowanie algorytmów w danym języku programowania. Program algorytm zapisany w określonym języku programowania wraz ze strukturami danych na których operuje. Program jest przepisem wyrażonym w odpowiedniej notacji według którego komputer lub inne urządzenie interpretujące wykonuje czynności przewidziane w algorytmie. Techniki programowania II s.1-3

Krótka historia programowania Mechaniczne urządzenia liczące wykonanie z góry określonych operacji, brak możliwości programowania (jeden projekt maszyny programowalnej). Języki niskiego poziomu, przetwarzanie potokowe program napisany w języku zależnym od procesora, kod programu podzielony na bloki wykonywane sekwencyjnie, kolejny blok otrzymuje dane od bloku poprzedniego i dostarcza do bloku następnego. Języki wysokiego poziomu, przetwarzanie potokowe program napisany w języku niezależnym od procesora, kod programu podzielony na bloki wykonywane sekwencyjnie. Programowanie strukturalne kod programu podzielony na niezależne podprogramy, każdy z określonym wejściem i wyjściem (argumenty i wyniki), algorytm realizowany przez program składa się z wywołania podprogramów, wyraźny podział na dane i algorytmy ich przetwarzania. Programowanie obiektowe kod programu podzielony na niezależne obiekty łączące w sobie dane oraz algorytmy ich przetwarzania, każdy obiekt realizuje operacje na związanym z nim zbiorze danych, obiekty nie ingerują w obszar danych innych obiektów, obiekty komunikują się pomiędzy sobą w celu realizacji funkcji programu. Techniki programowania II s.1-4

Delphi Delphi zintegrowane środowisko programistyczne typu RAD, przeznaczone do tworzenia aplikacji dla Microsoft Windows (programów sterowanych zdarzeniami), wykorzystujące język Object Pascal (obiektowy język programowania). Zintegrowane środowisko programistyczne - Aplikacja lub zespół aplikacji służących do tworzenia, testowania i konserwacji oprogramowania. RAD - Rapid Application Development, błyskawiczne tworzenie aplikacji; technologia polegająca na udostępnieniu programiście zestawu gotowych składników (komponentów) ułatwiających tworzenie szkieletu aplikacji. Wersje pakietu: Personal (dawniej desktop lub standard) najmniejsza funkcjonalność, brak zaawansowanych komponentów, od wersji 5.0 brak obsługi baz danych Professional obsługa baz danych, elementy aplikacji internetowych RAD Studio, Enterprise, Architect (dawniej client-server) kompletny pakiet, obsługa baz danych typu client-server, rozproszone bazy danych, dostęp do najnowszych technologii, wsparcie etapu modelowania i projektowania. Techniki programowania II s.1-5

pasek narzędziowy Delphi główne okno Delphi Środowisko Borland Delphi palety komponentów struktura projektu (obiekty wchodzące w skład aplikacji) okno edycji kodu aplikacji inspektor obiektów Formularz (okno) projektowanej aplikacji Techniki programowania II s.1-6

Lazarus Lazarus to wzorowane na Delphi, zintegrowane środowisko programistyczne oparte na kompilatorze Free Pascal, wyposażone w bibliotekę komponentów LCL. Program jest udostępniany na licencji GNU GPL, biblioteki na zmodyfikowanej licencji LGPL. Podstawowe cechy: zgodność ze środowiskiem Delphi, zgodność programów tworzonych w Delphi i Lazarusie na poziomie kodu źródłowego (w większości przypadków), odpowiedniki standardowych komponentów Delphi w bibliotece LCL, import projektów utworzonych w Delphi (w większości przypadków), polska wersja językowa, wieloplatformowość możliwość kompilowania projektu na każdej platformie obsługiwanej przez Free Pascal (win32/64, Unix, MacOS X, Windows CE). Strona projektu Lazarus: http://www.lazarus.freepascal.org/ Techniki programowania II s.1-7

pasek narzędziowy główne okno programu Środowisko Lazarus palety komponentów struktura projektu (obiekty wchodzące w skład aplikacji) okno edycji kodu aplikacji inspektor obiektów formularz (okno) projektowanej aplikacji Techniki programowania II s.1-8

Programowanie obiektowe, programowanie zdarzeniowe Programowanie obiektowe (OOP, object-oriented programming) programowanie, zazwyczaj w obiektowym języku programowania, które polega na wyodrębnieniu obiektów, ich klas oraz metod. Każdy obiekt traktowany jest jako samodzielny, zamknięty fragment kodu, a funkcjonowanie programu opiera się na komunikacji i współpracy pomiędzy obiektami. Programowanie sterowane zdarzeniami (event-driven programming) technika programowania polegająca na wyróżnieniu tzw. zdarzeń zachodzących w środowisku programu (np. naciśnięcie klawisza, kliknięcie myszką, itp.) i przyporządkowaniu tym zdarzeniom określonych sekwencji instrukcji. Dana sekwencja jest uruchamiana przez środowisko w którym funkcjonuje program (zazwyczaj system operacyjny) w momencie wystąpienia odpowiadającego jej zdarzenia. Powyższe pojęcia nie są ze sobą związane (programowanie zdarzeniowe nie wymaga programowania obiektowego i odwrotnie). OOP określa pewną cechę narzędzia, którym posługuje się programista tworzący aplikację, programowanie zdarzeniowe to cecha środowiska, w którym funkcjonuje aplikacja i które musi wspierać narzędzie do jej tworzenia. Techniki programowania II s.1-9

Programowanie obiektowe, programowanie zdarzeniowe Okno programu własności metody Baza danych własności metody Przycisk OK własności metody Przycisk Anuluj własności metody Pole tekstowe własności metody procedura1 instrukcja instrukcja instrukcja zdarzenie klawiatura Aplikacja procedura2 instrukcja instrukcja instrukcja zdarzenie ruch myszy Środowisko procedura3 instrukcja instrukcja instrukcja zdarzenie przycisk Rys. 10.1. Program obiektowy Zbiór powiązanych obiektów opisujących rzeczywiste elementy lub procesy. Każdy obiekt stanowi zamkniętą całość i ma ściśle przypisane kompetencje. Działanie programu opiera się na współpracy pomiędzy obiektami. Rys. 10.2. Program sterowany zdarzeniami Uruchomiona aplikacja określa typy zdarzeń, na które będzie reagować i procedury związane z określonymi zdarzeniami. Nie podejmuje żadnych działań dopóki nie będzie otrzyma informacji o zdarzeniu wygenerowanej przez środowisko. Techniki programowania II s.1-10

Obiekt i jego składowe Obiekt abstrakcyjny byt reprezentujący lub opisujący pewną rzecz lub pojęcie obserwowane w modelowanym systemie. Obiekt jest odróżnialny od innych obiektów, ma nazwę i dobrze określone granice. W programowaniu obiekt można interpretować jako pewną strukturę danych. Przykłady obiektów: człowiek Jan Kowalski, miasto Zielona Góra, dokument zakupu, okno aplikacji (formularz), przycisk w oknie dialogowym, tabela bazy danych, itp. Składowe obiektu Atrybut, pole nazwana wartość lub własność przypisana do obiektu. Przykłady: Faktura: numer, data wystawienia, sprzedawca, nabywca, lista produktów; Formularz: położenie, rozmiar, tytuł, kolor. Metoda, funkcja składowa operacja przypisana do obiektu, metoda działa w środowisku obiektu wykorzystując jego wewnętrzne informacje (przede wszystkim wartości atrybutów) oraz ewentualne parametry przekazywane z zewnątrz. Przykłady: Faktura: oblicz VAT, suma netto, suma brutto; Formularz: zmień rozmiar, pokaż, zamknij, reakcja na zdarzenie Techniki programowania II s.1-11

Przykłady obiektów Obiekt rzeczywisty Miejsce: Delfy Data: 10.06.2016 Sprzedawca: Pytia Sp. z.o.o Delficka 5, 99-001 Delfy Nabywca: Apollo S.A. Orfeusza 3, 00-999 Olimp Lp. Nazwa Faktura nr 100/2016 Ilość Netto VAT brutto 1. Woda z Kassotis 5l 200 23% 246 2. Trójnóg 1szt 500 23% 615 Razem: 861 Faktura Obiekt w programie Nr: 100/2016 Sprzed: Pytia Sp.zo.o, Delficka 5 Nab: Apollo S.A. Orfeusza 3 Produkty: Woda, 5l, 200, 23% Trójnóg, 1szt, 500, 23% Wystawił: Dionizos Odebrał: Apollin Licz brutto Suma netto Suma brutto atrybuty metody Wystawił Dionizos Odebrał Apollin Techniki programowania II s.1-12

Przykłady obiektów Formularz Przycisk polecania Nagłówek: Przycisk Kolor: szary Rozmiar: 16,60 Położenie: 120,60 Aktywny: tak Wciśnij Zwolnij Nagłówek: Form1 Kolor: szary Rozmiar: 150,250 Pokaż formularz Zamknij formularz Zmień rozmiar Pole edycyjne Kolor: biały Rozmiar: 16,100 Położenie: 10,160 Zawartość: Jakiś tekst Kopiuj do schowka Wytnij do schowka Wklej ze schowka 5x 2 +7x-4=0 Równanie kwadratowe a: 5 b: 7 c: -4 Licz deltę Rozwiąż Techniki programowania II s.1-13

Klasy obiektów Klasa wzorzec określający strukturę pewnej grupy obiektów o takiej samej budowie, czyli posiadających atrybuty o takich samych nazwach, metody o takim samym działaniu, itp.; formalnie: byt semantyczny rozumiany jako miejsce przechowywania takich cech grupy podobnych obiektów, które są dla nich wspólne. Formularz Formularz główny Nagłówek Kolor Rozmiar Pokaż formularz Zamknij formularz Zmień rozmiar Nagłówek: Word Kolor: biały Rozmiar: 800,600 Ustawienia wydruku Nagłówek: Ustawienia Kolor: szary Rozmiar: 250,150 Opcje Nagłówek: Opcje Kolor: szary Rozmiar: 200,100 Równanie kwadratowe a b c Licz deltę Rozwiąż Równanie1 a: 5 b: 7 c: -4 Równanie2 a: 5 b: 7 c: -4 Techniki programowania II s.1-14

Komponenty Komponenty to szczególny przypadek obiektów, zaprojektowanych jako gotowe do użycia elementy aplikacji, które można w pewnym zakresie dostosować do własnych potrzeb w czasie projektowania programu. Każdy komponent ma zestaw własności oraz zdarzeń, które decydują o jego wyglądzie i zachowaniu: Własności są szczególnym przypadkiem atrybutów obiektu, które mogą być modyfikowane podczas projektowania interfejsu aplikacji. Pozwalają określić wygląd komponentu, a w pewnych wypadkach dają dostęp do informacji przechowywanej przez komponent. Zdarzenia określają sposób reakcji komponentu na działania podejmowane przez użytkownika. Podstawowym zastosowaniem komponentów jest budowa interfejsu użytkownika. Komponenty z palety Standard Techniki programowania II s.1-15

Przykładowe własności Name nazwa, kluczowa własność wszystkich komponentów, unikalny identyfikator jednoznacznie określający komponent; używane we wszystkich odwołaniach do komponentu; domyślnie: nazwa komponentu zakończona liczbą. Caption wyświetlany tekst, występuje we wszystkich komponentach, które są opisane przy pomocy tekstu (przyciski, etykiety, pola wyboru, itp.); znak "&" umieszczony w tekście tworzy klawisz szybkiego wyboru (hot key). Color kolor tła, własność komponentów widocznych w czasie działania aplikacji. Font czcionka, własność komponentów widocznych w czasie działania aplikacji; rodzaj czcionki (nazwa, rozmiar, styl, itp.) używanej do wyświetlania tekstu wewnątrz komponentu. Left, Top, Height, Width położenie i wymiary komponentu, własność wszystkich komponentów widocznych w czasie działania aplikacji; położenie lewego górnego narożnika (Left, Top) oraz wysokość i szerokość (Height, Width) w pikselach. Enabled dostępność, własność wszystkich komponentów aktywnych; umożliwia zablokowanie komponentu. Visible widoczność, własność wszystkich komponentów widocznych w czasie działania aplikacji; umożliwia ukrycie komponentu. Techniki programowania II s.1-16

OnClick pojedyncze kliknięcie lewym przyciskiem myszy. OnDblClick podwójne kliknięcie lewym przyciskiem myszy. Przykładowe zdarzenia OnMouseMove przesunięcie kursora myszy nad obszarem komponentu. OnMouseDown, OnMouseUp odpowiednio przyciśnięcie i zwolnienie lewego przycisku myszy gdy kursor znajdował się nad obszarem komponentu. OnKeyDown, OnKeyUp odpowiednio przyciśnięcie i zwolnienie klawisza na klawiaturze, gdy komponent był aktywny. OnEnter, OnExit wejście, wyjście; występują odpowiednio po wybraniu komponentu (aktywacja) i wyjściu z niego (przejście do innego elementu formularza); dostępne tylko dla komponentów, które mogą być aktywne. OnKeyPress naciśnięcie klawisza na klawiaturze podczas edycji danych w polu tekstowym przed wyświetleniem wartości na ekranie. OnChange zmiana wartości wprowadzonej w polu tekstowym. OnResize zmiana rozmiarów formularza. Techniki programowania II s.1-17

Przykład 1.1. rozwiązanie równania liniowego Program rozwiązuje równanie liniowe ax+b=0 na podstawie wartości współczynników a i b (liczby rzeczywiste) wprowadzanych w polach edycyjnych (Edit1, Edit2). Obliczenia będą uruchomione po naciśnięciu przycisku "Oblicz" (Button1), rozwiązanie wyświetlane jest przy pomocy etykiety (Label5). Interface Algorytm Form Caption: Przykład, BorderStyle: bsdialog Label1 Caption: Program rozwiązuje równanie Label2 Caption: Współczynniki równania Label3 Caption: &a, Label4 Caption: &b Label5 Caption: Rozwiązanie Button1 Caption: &Oblicz Po naciśnięciu przycisku "Oblicz" program pobiera dane wprowadzone przez użytkownika w polach edycyjnych "a" i "b" (współczynniki równania) i wyznacza nieznaną wartość x=-b/a. Wynik wyświetlany jest w oknie programu przy pomocy etykiety (Label6). Techniki programowania II s.1-18

Zastosowanie Komponent Label Wyświetla statyczny tekst, zazwyczaj opisuje inne elementy formularza, może być wykorzystany do wyświetlenia wyniku Wybrane własności (properties) Wszystkie omówione na s.1-14; Caption tekst wyświetlany przez etykietę, łańcuch znakowy; FocusControl wskazuje komponent opisywany przez etykietę; wybór etykiety spowoduje uaktywnienie wskazanego komponentu. Wybrane zdarzenia (events) OnClick OnDblClick pojedyncze kliknięcie na etykiecie; podwójne kliknięcie na etykiecie; OnMouseMove przesunięcie kursora nad etykietą; OnMouseDown, OnMouseUp przyciśnięcie i zwolnienie przycisku myszy gdy kursor znajdował się nad etykietą. Techniki programowania II s.1-19

Zastosowanie Komponent Edit Podstawowy komponent umożliwiający wprowadzanie danych w czasie działania aplikacji. Wybrane własności (properties) Wszystkie omówione na s.1-14 z wyjątkiem Caption; MaxLength maksymalna długość tekstu (zero oznacza brak ograniczeń); ReadOnly tylko do odczytu, ustawienie własności blokuje edycję danych; Text wartość wprowadzona w polu edycyjnym. Wybrane zdarzenia (events) OnChange zmiana wartości wprowadzonej w polu edycyjnym; OnEnter, OnExit wejście, wyjście; występują odpowiednio po wybraniu elementu (aktywacja) i wyjściu z elementu (przejście do innego elementu formularza); OnKeyPress naciśnięcie klawisza na klawiaturze podczas edycji danych w polu (występuje przed wyświetleniem wartości na ekranie); Wszystkie zdarzenia omówione przy komponencie Label. Techniki programowania II s.1-20

Zastosowanie Komponent Button Steruje pracą aplikacji, podstawowy komponent umożliwiający uruchomienie wybranej funkcji w czasie działania programu Wybrane własności (properties) Wszystkie omówione na s.1-14; Caption tekst opisujący przycisk, łańcuch znakowy; Cancel anuluj, po ustawieniu naciśnięcie klawisza Escape uruchamia funkcję przycisku nawet jeżeli nie jest w danej chwili wybrany; Default przycisk domyślny, po ustawieniu naciśnięcie klawisza Enter uruchamia funkcję przycisku nawet jeżeli nie jest w danej chwili wybrany. Wybrane zdarzenia (events) OnClick kliknięcie; zdarzenie występuje przy każdym wciśnięciu przycisku (przy pomocy myszy i klawiatury); Pozostałe zdarzenia omówione przy komponencie Label. Techniki programowania II s.1-21

Zastosowanie Komponent Form (formularz) Okno aplikacji, okna pomocnicze, podstawowy pojemnik na wszystkie komponenty Wybrane własności (properties) Wszystkie omówione na s.1-14; BorderIcons przyciski widoczne w pasku tytułowym, własność złożona; bisystemmenu menu systemowe, biminimize minimalizacja, bimaximize maksymalizacja, bihelp - pomoc BorderStyle styl obramowania, wartość wybierana z listy; bsdialog okno dialogowe, stały rozmiar bez min. i max., bsnone brak obramowania i tytułu, bssingle stały rozmiar z min. i max., bssizable zmienna rozmiary Wybrane zdarzenia (events) OnCreate, OnClose utworzenie i zamknięcie formularza; OnResize zmiana rozmiarów formularza; Wszystkie zdarzenia omówione przy komponencie Label. Techniki programowania II s.1-22

Przykład 1.1. obiektowy i zdarzeniowy model programu Form1 Caption: Przykład BorderStyle: bsdialog Aplikacja Label5 Caption: Rozwiązanie Edit1 Text: wart. wsp. a Edit2 Text: wart. wsp. b 5 zmień nagłówek Button1 Caption: Oblicz daj 4 wartość OnClick KeyPress KeyPress Środowisko Click 1 2 3 Techniki programowania II s.1-23

Podstawowe zasady programowania w języku Pascal Wielkość liter nie jest rozróżniana. Zasada ta dotyczy zarówno nazw instrukcji, elementów predefiniowanych w języku jak i elementów definiowanych w programie (zmienne, typy, podprogramy, itp.), Każda instrukcja programu powinna być zakończona średnikiem, Średnik może być pominięty przez słowem end, Znaki "białe", czyli przejścia do nowej linii, tabulacje, wielokrotne spacje pomiędzy poszczególnymi słowami nie są istotne i będą pomijane, Kolejne instrukcje mogą być zapisane w jednym wierszu, jednak każda musi być zakończona średnikiem, Słowa kluczowe języka (nazwy instrukcji, elementy nagłówków, itp.) są zastrzeżone i nie mogą być wykorzystane jako nazwy elementów definiowanych w programie, Tekst umieszczony w klamrach ({ }) lub poprzedzony podwójnym ukośnikiem (//) jest komentarzem języka Pascal. Techniki programowania II s.1-24

Procedura obsługi zdarzenia Szkielet procedury obsługi zdarzenia jest generowany automatycznie po dwukrotnym kliknięciu na nazwie zdarzenia w Inspektorze Obiektów (zakładka "Events"). Procedura jest związana z komponentem dla którego została utworzona, jednak Delphi tworzy jej kod w klasie formularza, do którego komponent należy. Formalnie każda procedura obsługi zdarzenia jest metodą formularza. Schemat definicji procedury: procedure klasa_formularza.nazwa_procedury(argumenty); begin miejsce na kod procedury end; procedure jest słowem kluczowym języka, które oznacza początek nagłówka. argumenty pozwalają przekazywać dodatkowe informacje do procedury. begin i end (ze średnikiem) to słowa kluczowe, które określają odpowiednio początek i koniec kodu procedury. Nazwa procedury zdarzenia jest tworzona automatycznie i składa się z nazwy komponentu, do którego zdarzenie jest przypisane i właściwej nazwy zdarzenia, np.: Button1Click (zdarzenie OnClick przypisane do komponentu Button1). Techniki programowania II s.1-25

Deklaracja zmiennych Zmienna element języka programowania używany do przechowywania przetwarzanych danych. Język Pascal wymaga deklaracji (określenia typu) zmiennej przed jej pierwszym użyciem. Schemat deklaracji zmiennej var nazwa_zmiennej1: typ1; nazwa_zmiennej2: typ2; nazwa_zmiennej3, nazwa_zmiennej4: typ3; nazwa_zmiennej unikalny ciąg znaków, który jest prawidłowym identyfikatorem. typ dowolny typ standardowy lub zdefiniowany przez użytkownika (w.01 s.25). Deklarację zmiennych w procedurze obsługi zdarzenia należy umieścić pomiędzy nagłówkiem i słowem begin. Identyfikator ciąg znaków składający się z liter alfabetu angielskiego, cyfr, znaku podkreślenia, nie zaczyna się od cyfry, nie jest słowem kluczowym języka. Przykłady identyfikatorów: a, abc, x75, kod_produktu, _xyz. Nieprawidłowe identyfikatory: 27x, kod produktu, imię, end, x$y Techniki programowania II s.1-26

Typy standardowe Typy całkowite Typy rzeczywiste integer (-2147483648..2147483647) real (2.9e-39..1.7e38, 11-12 cyfr) shortint (-128..127) single (1.5e-45..3.4e38, 7-8 cyfr) smallint (-32768..32767) double (5.0e-324..1.7e308, 15-16 cyfr) byte (0..255) extended (1.9e-4951..1.1e4932, 19-20 cyfr) word (0..65535) longword (0..4294967295) boolean typ logiczny (dwie wartości: true prawda i false fałsz) char typ znakowy (pojedynczy znak) string typ łańcuchowy (ciąg znaków o długości maksymalnej 255 znaków) Typ porządkowy typ danych w którym każdy element ma ustalony następnik i poprzednik. W języku Pascal: wszystkie typy całkowite, boolean, char. Przykłady 127 typ całkowitego true typ logiczny 127.5 typ rzeczywisty 'a' typ znakowy 1.723e+01 typ rzeczywisty (17.23) 'xyz' typ łańcuchowy Techniki programowania II s.1-27

Instrukcja przypisania Instrukcja przypisania, operatory arytmetyczne Tak jak w przypadku własności komponentów instrukcja przypisania może być używana do nadawania wartości zmiennym, zgodnie ze schematem: nazwa_zmiennej := wyrażenie; Uwaga: typy zmiennej i wyrażenia muszą być zgodne. Operatory arytmetyczne + dodawanie div dzielenie całkowite - odejmowanie mod dzielenie modulo * mnożenie ( ) grupowanie działań / dzielenie Przykład var x,y,z: integer; a: char; b: string; x := 10; y := 7+x*4; a := 'x'; b := 'abcd'; Operacje arytmetyczne wykonywane są od lewej do prawej z zachowaniem priorytetów (po pierwsze mnożenie i dzielenie, później dodawane i odejmowanie). Nie można pomijać symboli działań, nawiasy okrągłe zmieniają kolejność operacji. Uwaga: 5 x 5/3* y x 3 y ( x 5)/(3* y) x 5 3y Techniki programowania II s.1-28

Odwołania do atrybutów obiektu Odwołanie do atrybutu obiektu nazwa_obiektu.nazwa_atrybutu Każdy komponent jest obiektem, własność szczególnym przypadkiem atrybutu, stąd odwołanie do własności obiektu: nazwa_komponentu.nazwa_własności gdzie: nazwa_komponentu to wartość własności Name. Przykład Label1.Caption odwołanie do wartości wyświetlanej przez etykietę Label1 Edit1.Text odwołanie do wartości wprowadzonej w polu tekstowym Edit1 Odwołanie do własności złożonej nazwa_komponentu.nazwa_własności.nazwa_składnika gdzie: nazwa_składnika to nazwa elementu składowego danej własności. Przykład Label1.Font.Size odwołanie do rozmiaru czcionki etykiety Label1. Techniki programowania II s.1-29

Odwołania do własności w kodzie programu Tak jak zmienne każda własność ma zdefiniowany typ, który określa zbiór wartości jakie dana własność może przyjmować. Poza typami standardowymi (s.27) istnieją przypadki szczególne, gdy własności przyjmują wartości ze specjalnie zdefiniowanych zbiorów (np. BorderIcons i BorderStyle na s.22). Wartość własności dowolnego komponentu można zmienić w kodzie programu przypisując do niej dowolne wyrażenie o zgodnym typie: nazwa_komponentu.nazwa_własności := wyrażenie; Przykład Form1.Caption := 'Przykład'; // zmiana nagłówka formularza Edit1.Width := 150; // zmiana szerokości Edit1 Aktualną wartość własności komponentu można pobrać przypisując ją do zmiennej o zgodnym typie: nazwa_zminnej := nazwa_komponentu.nazwa_własności; Przykład var s: String; x: Integer; s := Edit2.Text; // odczyt danych wprowadzonych do Edit2 x := Label1.Left; // odczyt poziomej współrzędnej Label1 Techniki programowania II s.1-30

Odczyt danych wprowadzanych przez użytkownika Podstawowym elementem używanym do wprowadzania danych jest komponent Edit. Wartość wprowadzona przez użytkownika jest dostępna we własności Text. Uwaga: własność Text jest typu string, stąd każda wartość (również numeryczna) wprowadzona w polu edycyjnym będzie traktowana jako ciąg znaków. Przykład var s:string; x:integer; s:=edit1.text; prawidłowe przypisanie, typy własności i zmiennej zgodne x:=edit.text; błąd kompilacji, niezgodne typy własności i zmiennej W celu odczytania wartości numerycznej z pola edycyjnego należy dokonać konwersji (zamiany) z typu łańcuchowego na liczbowy, korzystając z funkcji: function StrToInt(s: string) : integer; function StrToFloat(s: string): real; Przykład var x:integer; x:=strtoint(edit1.text); Instrukcja będzie wykonana bez błędów, jeżeli w polu edycyjnym znajduje się wartość (łańcuch znaków), która jest prawidłową liczbą całkowitą. Techniki programowania II s.1-31

Wyświetlanie wyników Wynik działania programu można wyświetlić używając komponentu Label (własność Caption) lub Edit (własność Text + ReadOnly). W przypadku danych numerycznych pojawia się problem zgodności typów (Caption i Text są typu string). Wyświetlenie wartości numerycznej wymaga konwersji typu liczbowego do łańcuchowego za pomocą funkcji: function IntToStr(x:integer): string; function FloatToStr(x:real) : string; function FormatFloat(format:string; wartość:real): string; Przykład var x:integer; y:real; // y=23.78 Label1.Caption := IntToStr(x); Edit1.Text := FloatToStr(y); Edit1.Text := FormatFloat('0.000',y); zawartość Edit1: 23,780 Edit1.Text := FormatFloat('0.###',y); zawartość Edit1: 23,78 Edit1.Text := FormatFloat('0.0',y); zawartość Edit1: 23,8 Edit1.Text := FormatFloat('0.00e+00',y); zawartość Edit1: 2,38e+01 Techniki programowania II s.1-32

Przykład 1.1. kod procedury zdarzenia procedure TForm1.Button1Click(Sender: TObject); var a, b, x: real; begin a := StrToFloat(Edit1.Text); b := StrToFloat(Edit2.Text); x := -b/a; Label5.Caption := 'Rozwiązanie x=' + FormatFloat('0.00',x); end; Uwaga1: operator "+" użyty w ostatniej instrukcji nie jest arytmetycznym dodawaniem. W tym zastosowaniu jest to operator konkatenacji łączący łańcuchy znakowe (do napisu 'Rozwiązanie x=' dołącza znakową reprezentację wyniku). Uwaga2: program działa prawidłowo jeżeli dane w polach Edit1 i Edit2 są poprawne (liczby rzeczywiste) w przeciwnym wypadku jedna z funkcji StrToFloat zgłosi błąd konwersji. Pełny kod programu dostępny na stronie przedmiotu jako "Przykład01_1" Techniki programowania II s.1-33

Obsługa wyjątków Wykonanie pewnych instrukcji może zakończyć się błędem. Taka sytuacja jest sygnalizowana przez wygenerowanie specjalnego komunikatu nazywanego wyjątkiem (ang. except). Wystąpienie wyjątku przerywa wykonanie bieżącego bloku programu i przenosi sterowanie do bloku obsługi wyjątków. Delphi reaguje na każdy wyjątek wyświetlając standardowe okno komunikatu z informacją o zaistniałym błędzie (język angielski). Przechwytywanie i samodzielną obsługę wyjątków umożliwia konstrukcja: try blok instrukcji except kod obsługi wyjątku end; Jeżeli dowolna instrukcja umieszczona pomiędzy try i exept zgłosi wyjątek, działanie całego bloku zostanie przerwane i będzie wykonany kod umieszczony pomiędzy except i end. Instrukcje umieszczone za słowem end będą wykonane zawsze niezależnie od tego czy wcześniej wystąpił wyjątek. Techniki programowania II s.1-34

Przykład 1.2. równanie liniowe, modyfikacja Program z przykładu 1.1. zgłosi standardowy błąd konwersji, jeżeli użytkownik wprowadzi wartość, która nie jest liczbą (funkcja StrToFloat w takim przypadku podnosi wyjątek). Poniższa modyfikacja wprowadza własną obsługę błędów i wyświetla komunikat dopasowany do funkcji programu: procedure TForm1.Button1Click(Sender: TObject); var a, b, x: real; begin try a := StrToFloat(Edit1.Text); b := StrToFloat(Edit2.Text); x := -b/a; Label5.Caption := 'Rozwiązanie: x=' + FormatFloat('0.0000',x); except end; ShowMessage('Współczynniki równania muszą być liczbami'); end; Pełny kod programu dostępny na stronie przedmiotu jako "Przykład01_2" Techniki programowania II s.1-35

część operacyjna programu Kod projektu (plik "dpr") program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}; początek programu (nagłówek) dołączone moduły standardowe oraz moduły formularzy {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. inicjalizacja aplikacji utworzenie formularza uruchomienie aplikacji Techniki programowania II s.1-36

definicja klasy formularza Kod modułu formularza (plik "pas") unit Unit1; interface uses Windows, Messages, SysUtils ; type TForm1 = class(tform) Label1: TLabel; Label2: TLabel; Label3: TLabel; Button1: TButton; Edit1: TEdit;... procedure Button1Click(Sender: TObject); private public end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin... end; end. początek modułu (nagłówek) dołączone moduły standardowe komponenty formularza deklaracje procedur obsługi zdarzeń kod dodawany przez programistę deklaracja zmiennej reprezentującej formularz definicja (właściwy kod) procedur obsługi zdarzeń koniec modułu Techniki programowania II s.1-37

Organizacja projektu w Delphi Każda aplikacja utworzona w Borland Delphi składa się z wielu elementów: formularzy, kodów, modułów, zasobów, dodatkowych bibliotek, itp. Przyjęto zasadę, że każdy z elementów składowych programu przechowywany jest w osobnym pliku. W większości wypadków pliki te tworzone są automatycznie. Pliki źródłowe projektu aplikacji:.dpr główny plik projektu, zawiera informacje o wszystkich składnikach projektu.res pliki zasobów programu (np. ikony), z każdym projektem związany jest jeden, automatycznie tworzony plik.res o nazwie takiej samej jak projekt.pas kody źródłowe modułów.dfm definicje formularzy, każdy związany jest z plikiem.pas o tej samej nazwie.cfg ustawienia opcji kompilatora.dfo konfiguracja środowiska Delphi (układ okien, ustawienia opcji, itp.) Pliki tworzone w czasie kompilacji i pracy z projektem:.~dpr,.~dfm,.~pas kopie zapasowe (poprzednie wersje) plików.dcu skompilowane moduły programu (formularze i pozostałe pliki.pas).exe wykonywalny plik wynikowy Techniki programowania II s.1-38