end

Transkrypt

end
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 I s.1-1
Podstawy programowania w Delphi
pojęcia podstawowe
programowanie obiektowe i sterowane zdarzeniami
najważniejsze cechy środowiska Delphi
komponenty: własności i zdarzenia

Techniki programowania I 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 I s.1-3
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 I s.1-4
Programowanie obiektowe, programowanie zdarzeniowe
Okno programu
własności
metody
własności
metody
Przycisk Anuluj
Baza danych
własności
metody
Aplikacja
Przycisk OK
własności
metody
procedura1
instrukcja
instrukcja
……
instrukcja
Pole tekstowe
zdarzenie
własności
metody
klawiatura
procedura2
instrukcja
instrukcja
……
instrukcja
zdarzenie
ruch myszy
procedura3
instrukcja
instrukcja
……
instrukcja
zdarzenie
przycisk
Środowisko
Rys. 5.1. Program obiektowy
Rys. 5.2. Program sterowany zdarzeniami
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.
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 I s.1-5
Zintegrowane środowisko programistyczne, RAD
Zintegrowane środowisko programistyczne - Aplikacja lub zespół aplikacji
służących do tworzenia, testowania i konserwacji oprogramowania
Funkcje zintegrowanego środowiska programistycznego:
• Edycja kodu źródłowego
• Kompilacja kodu źródłowego (zamiana programu na kod binarny)
• Tworzenie zasobów programu (formularze, okna dialogowe, menu, raporty, itp.)
• Budowa własnych komponentów
• …………
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 i przyspieszających tworzenie szkieletu
aplikacji. Wygląd aplikacji (interfejs użytkownika) projektuje się ustawiając
komponenty w obszarze okna projektowanego programu (np. przy użyciu myszy), a
stworzenie typowych funkcji wymaga napisania zaledwie kilku wierszy kodu.

Techniki programowania I s.1-6
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).
Historia:
• Borland Delphi 1.0 (1995) – wersja 16-bitowa, Windows 3.1
• Borland Delphi 2.0 (1996) – wersja 32-bitowa, Windows 95, Windows NT
• CodeGear Delphi 2007 – pierwszy produkt firmy-córki CodeGear
• CodeGear Delphi 2009 – pierwszy produkt po zmianie właściciela (Embarcadero)
• Wersja aktualna (luty. 2013) – CodeGear Delphi XE3
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 I s.1-7
Środowisko Borland Delphi
pasek narzędziowy
Delphi
struktura projektu
(obiekty wchodzące
w skład aplikacji)
główne okno Delphi
palety
komponentów
okno edycji
kodu aplikacji
inspektor obiektów
Formularz (okno)
projektowanej aplikacji

Techniki programowania I s.1-8
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 I s.1-9
Środowisko Lazarus
pasek
narzędziowy
struktura projektu
(obiekty wchodzące
w skład aplikacji)
główne okno programu
palety
komponentów
okno edycji
kodu aplikacji
inspektor obiektów
formularz (okno)
projektowanej aplikacji

Techniki programowania I s.1-10
Środowisko Borland Delphi – palety komponentów
Komponenty to elementy, z których budowany jest interfejs aplikacji. Są dostarczone w postaci gotowej do użycia, wymagają jedynie ustawienia własności i zaprogramowania reakcji na zdarzenia odpowiadające konkretnym funkcjom aplikacji.
Komponenty to szczególny przypadek obiektów.
Standard: podstawowe składniki aplikacji (menu, przyciski pola wyboru, itp..)
Additional: rozwinięcie i uzupełnienie komponentów standardowych
Win32: składniki aplikacji wprowadzone w 32-bitowych wersjach Windows
System: multimedia, OLE i DDE

Dialogs: standardowe okna dialogowe
Techniki programowania I s.1-11
Środowisko Borland Delphi – inspektor obiektów
Inspektor obiektów pozwala na ustalanie cech składników aplikacji (zakładka właściwości –
properties) oraz zarządzanie metodami, które stanowią odpowiedź na wybrane zdarzenia
(zakładka zdarzenia – events).
Właściwości – cechy określające wygląd komponentu (kolor, rodzaj czcionki, etykieta, itp.)
Zdarzenia – komunikaty generowane przez system operacyjny informujące o działaniach
podejmowanych przez system, użytkownika, inne aplikacje (np. kliknięcie myszą, naciśnięcie
klawisza, zamknięcie okna, uruchomienie programu, itp.)

Techniki programowania I s.1-12
Środowisko Borland Delphi – rodzaje własności
Wartość wprowadzana z klawiatury
Wartość wybierana z listy
Wartość złożona określana przy
pomocy okna dialogowego
Wartość złożona – kilka składników
dostępnych po kliknięciu na (+)

Techniki programowania I s.1-13
Własności wspólne dla wielu komponentów
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, wartości wybierane z listy; kolor komponentu.
Font – czcionka, własność wszystkich 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 I s.1-14
Przykładowa aplikacja
Program wyświetla okno komunikatu zawierające ciąg znaków wprowadzony przez
użytkownika w polu tekstowym umieszczonym na głównym formularzu aplikacji
Etykieta "Label1"
Formularz "Form1"
Pole tekstowe
"Edit1"
Przycisk "Button1"
Okno komunikatu
"ShowMessage"
Procedura obsługi zdarzenia OnClick, przycisku Button1
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Edit1.Text);
end;
ShowMessage(…) – standardowa funkcja wyświetlająca okno z komunikatem
Edit1.Text – odwołanie do ciągu znaków wprowadzonego w polu tekstowym
Pełny kod programu dostępny na stronie przedmiotu

Techniki programowania I s.1-15
Komponent Label
Zastosowanie
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
– pojedyncze kliknięcie na etykiecie;
OnDblClick
– 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 I s.1-16
Komponent Edit
Zastosowanie
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 I s.1-17
Komponent Button
Zastosowanie
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 I s.1-18
Komponent Form (formularz)
Zastosowanie
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 I s.1-19
Struktura procedury zdarzenia
Procedura obsługi zdarzenia jest generowana automatycznie po dwukrotnym
kliknięciu na nazwie zdarzenia w Inspektorze Obiektów (zakładka "Events"). Delphi
tworzy nagłówek umieszczony w kodzie klasy formularza, oraz definicję procedury
umieszczoną w części implementacyjnej modułu (wykład 1., strona 15.). Definicję
procedury należy uzupełnić kodem, wykonywanym podczas wystąpienia zdarzenia.
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.
Nazwa procedury zdarzenia 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 I s.1-20
Odwołania do własności w kodzie programu
Odwołanie do zwykłej własności
nazwa_komponentu.nazwa_własności
gdzie: nazwa_komponentu to wartość własności Name, nazwa_własności to
nazwa jednej z własności dostępnych dla tego komponentu.
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.Name – odwołanie do nazwy czcionki etykiety Label1,
Label1.Font.Size – odwołanie do rozmiaru czcionki etykiety Label1.

Techniki programowania I s.1-21
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 I s.1-22
Kod projektu (plik "dpr")
program Project1;
początek programu (nagłówek)
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
dołączone moduły standardowe
oraz moduły formularzy
begin
Application.Initialize;
inicjalizacja aplikacji
Application.CreateForm(TForm1, Form1);
utworzenie formularza
Application.Run;
uruchomienie aplikacji
end.

część operacyjna
programu
{$R *.res}
Techniki programowania I s.1-23
Kod modułu formularza (plik "pas")
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Edit1.Text);
end;
end.

początek modułu (nagłówek)
dołączone moduły standardowe
komponenty
formularza
deklaracje procedur
obsługi zdarzeń
kod dodawany
przez programistę
definicja klasy formularza
unit Unit1;
interface
uses Windows, Messages, SysUtils …;
type
TForm1 = class(TForm)
Label1 : TLabel;
Edit1 : TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
deklaracja zmiennej
reprezentującej formularz
definicja (właściwy kod)
procedur obsługi zdarzeń
koniec modułu
Techniki programowania I s.1-24
Typy własności
Każda własność ma określony typ, który określa zbiór wartości jakie może dana
własność przyjmować. Każda próba nadania wartości niezgodnej z typem
własności zakończy się błędem podczas kompilacji.
Podstawowe typy własności:
integer – typ całkowity o zakresie (-2147483648..2147483647)
real
– typ rzeczywisty o zakresie (2.9e-39..1.7e38, 11-12 cyfr znaczących)
boolean – typ logiczny (dwie wartości: true – prawda i false – fałsz)
char
string
– typ znakowy (pojedynczy znak)
– typ łańcuchowy (ciąg znaków o długości maksymalnej 255 znaków)
Przykłady
127
– typ całkowity
127.5
– typ rzeczywisty
1.723e+01 – typ rzeczywisty (17.23)
true – typ logiczny
'a'
– typ znakowy
'xyz' – typ łańcuchowy
Poza typami wymienionymi powyżej istnieją przypadki szczególne, gdy własności
przyjmują wartości ze specjalnie zdefiniowanych zbiorów (np. własności formularza
BorderIcons i BorderStyle na s.19).

Techniki programowania I s.1-25
Instrukcja przypisania, zmiana własności
Instrukcja przypisania
nazwa_elementu := wyrażenie;
Instrukcja przypisania nadaje pewnemu elementowy (np. własności) określoną
wartość, typ przypisywanej wartości musi być zgodny z typem elementu.
Przykłady instrukcji zmieniających własności komponentu o nazwie Label1:
Przykład 1 – wyświetlany tekst
Własność typu string, można do niej przypisać dowolny łańcuch znakowy.
Label1.Caption := 'Wynik obliczeń: ';
Przykład 2 – kolor czcionki
Własność typu całkowitego, można przypisać liczbę lub jedną z predefiniowanych
stałych reprezentujących kolor.
Label1.Font.Color := 0;
Label1.Font.Color := clBlack;

Techniki programowania I s.1-26
Przykład 2. – zmiana własności w kodzie programu
Program modyfikuje wygląd i opis etykiety:
• Zielony, Niebieski – zmiana koloru,
• Czcionka – zmiana czcionki na "Courier New"
• Zmień tekst – zmiana opisu
• Powiększ – zmiana rozmiaru do 14pt
procedure TForm1.Button1Click(Sender:TObject);
begin
Label1.Font.Color := clGreen
end;
procedure TForm1.Button3Click(Sender:TObject);
begin
Label1.Font.Name := 'Courier New';
end;
procedure TForm1.Button4Click(Sender:TObject);
begin
Label1.Caption := Edit1.Text
end;
Składniki własności Font
• Color – kolor czcionki
• Name – nazwa czcionki
• Size – rozmiar czcionki
Pełny kod programu dostępny na stronie przedmiotu jako "Przykład02"

Techniki programowania I s.1-27

Podobne dokumenty