Programowanie w środowisku DELPHI

1 Programowanie w środowisku DELPHIWstęp do środowiska De...
Author: Sobiesława Kremer
0 downloads 6 Views

1 Programowanie w środowisku DELPHIWstęp do środowiska Delphi Proste typy danych Funkcje i procedury- pojęcie podprogramu

2 Wstęp do środowiska DelphiElementy środowiska Delphi Pliki projektu Główne bloki projektu Etapy tworzenia aplikacji Podstawowe komponenty komunikacji :człowiek-program-człowiek Proste aplikacje

3 Elementy środowiska DelphiWidok środowiska Podstawowe narzędzia to: formatka- to graficzny obraz widoku okna tworzonej aplikacji, na który można osadzać przy pomocy myszki dowolne komponenty pobrane z palety edytor kodu- to edytor tekstu, w którym pisze się ciało programu stosując identyczne operacje edycyjne jak w popularnych edytorach tekstowych komponenty- to obiekty, które przyśpieszają tworzenie aplikacji, można podzielić ja na wizualne i niewizualne, ich liczba może być rozbudowywana, programista sam może je tworzyć inspektor obiektów-to narzędzie służące do wizualnego ustawiania podstawowych właściwości aktywnego komponentu jak i do oprogramowania zdarzeń związanych z tym komponentem

4 Pliki projektu

5 Główne bloki projektu W projekcie aplikacji znajdują się plik zawierające kod w języku Object Pascal: pliki modułów(*.pas), które zaczynają się od słowa kluczowego unit ; plików tych może być więcej niż jeden plik projektu (*.dpr), który zawiera główny blok zaczynający się od słowa kluczowego program ; istnieje tylko jeden taki plik w obrębie danego projektu

6 Etapy tworzenia aplikacjiWybrać z menu File\New\Application lub wykorzystać już istniejąca, która standardowo tworzona jest przy uruchomieniu środowiska Umieścić komponenty na formatce zgodnie z zapotrzebowaniem Oprogramować zdarzenia i właściwości związane z tymi komponentami Oprogramować własne procedury i funkcje związane z tworzonym projektem UWAGA nie ma reguły kiedy i w którym momencie tworzonego projektu należy go zapisać, ale należy pamiętać o możliwości stracenia całej swojej pracy jeżeli nie będzie ona co jakiś czas zapisywana. Kompilacja odbywa się za pomocą polecenia z menu Run\Run lub klawisza F9; sama kompilacja bez uruchomienia pliku *.exe to CTRL+F9; sprawdzenie czy moduły są prawidłowo zbudowane to menu Project\Syntax Check Na pracowni przed kompilacją zapisz swój projekt w utworzonym przez siebie folderze

7 Podstawowe komponenty komunikacji: człowiek-program-człowiekTLabel- odpowiada Pascalowej instrukcji WRITE- wyświetla tekst TEdit- odpowiada Pascalowej instrukcji Read, służy do wprowadzania danych TButton- to komponent standardowego klawisza

8 Widok środowiska

9 Inspektor obiektów

10 Plik modułu

11 Budowa pliku programu

12 Proste aplikacje Zad 1: Standardowe zamknięcie programuZad 2: Zamknięcie programu z TButton Zad 3: Zamknięcie programu z klawisza ESC lub dowolnie innego Zad 4: Zamknięcie programu z komunikatem ostrzegawczym Zad 5: Suma dwóch liczb zapisanych w komponentach TEdit

13 Zad 1: Standardowe zamknięcie programuWybierz z menu File\New\Application Zapisz projekt Skompiluj i uruchom projekt (klawisz F9)- wynikiem będzie czyste okno aplikacji a w folderze gdzie zapisałeś projekt pojawi się plik z rozszerzeniem EXE, jest to Twój program Zamknij swój program kombinacją klawiszy ALT+F4

14 Zad 2: Zamknięcie programu z TbuttonWybierz z menu File\New\Application Zapisz projekt Dodaj do formatki komponent Tbutton W Inspektorze obiektów zmień właściwość CAPTION (zakładka Properties) komponentu TButton na : ZAMKNIJ W inspektorze obiektów przejdź do zakładki EVENTS. Odszukaj zdarzenia OnClick i dwa razy szybko kliknij na białym polu obok nazwy tego zdarzenia W edytorze kodu w pisz komendę close; procedure TForm1.Button1Click(Sender: TObject); begin close; end; Skompiluj projekt i kliknij myszką w obszarze klawisza

15 Zad 3: Zamknięcie programu z klawisza ESC lub dowolnie innegoIdea zadania to wykorzystanie tablicy kodów ASCII klawiszy do zamknięcia aplikacji przy pomocy wybranego klawisza oraz wykorzystaniu zdarzenia wciśnięcia klawisza wykrywanego przez formatkę aplikacji. Powtórz czynności z zadania 1 Możesz wykorzystać zdarzenie KeyPress lub KeyDown procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if key=#27 then close; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); if key=27 then close; Jeżeli na formatce istnieje np komponent TButton to należy jego zdarzenie KeyPress lub KeyDown podpiąć do zdarzeń formatki używając inspektora obiektów w przypadku innych komponentów można wykorzystać „ogniskowanie”aktywności po ich wykorzystani używając właściwości SetFocus wskazanego komponentu tu Button1.SetFocus;

16 Zamknięcie programu z komunikatem ostrzegawczymPowtórz czynności z zadania 2 Uzupełnij procedurę klikniecia klawisza na procedure TForm1.Button1Click(Sender: TObject); begin if MessageBox(handle,'Czy na pewno chcesz zamknąć','Komunikat',mb_OkCancel+mb_IconQuestion)=idOk then close else exit; end; Jeżeli w Twoim programie chcesz się odwoływać do powyższego zdarzenia to wystarczy że wywołasz procedurę tego zdarzenia przykładowo: if key=#27 then Button1Click(Sender);

17 Suma dwóch liczb zapisanych w komponentach TeditPowtórz czynności z zadania 2 lub 3 dodaj 2 komponenty TEdit, 1 Tlabel i 1 Tbutton W inspektorze obiektów ustaw TEdit.Text na 0; Tlabel.Caption na puste, TButton na + Zdarzenie OnKeyPress Edit1 i Edit2 procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if (key=#8)or(key='-') then exit; if key=#27 then Button1Click(Sender);//skok do proc. wyjscia if (key<'0')or(key>'9')then key:=#0; end; Procedurę kliknięcia w klawiszu Button2 oprogramuj jak poniżej procedure TForm1.Button2Click(Sender: TObject); Label1.Caption:=IntToStr(StrToInt(Edit1.Text)+StrToInt(Edit2.Text));

18 Podstawowe informacjeDeklaracja danych Proste typy danych Funkcje konwersji Konwersja- proste zadanie

19 Deklaracja danych Nie zależnie od rodzaju danych obowiązują ścisłe reguły ich deklaracji. W zależności od miejsca deklaracji zmienna może mieć zasięg globalny, lokalny lub istnieć tylko w wybranej procedurze bądź funkcji. Sposób deklaracji Przykład Rodzaj zmiennej stała zmienna const g=9.81; s=‘szkola’; var a:real; t:word;

20 Przykład lokalizacji zapisu zmiennychunit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const s:string=‘Szkoła’; //zasięg globalny var Form1: TForm1;//zasięg globalny implementation i:integer;//zasięg tylko w obrebie unitu, czyli lokalny {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); const //zasięg tylko wewnatrz procedury g=9.81; a, t :real; i:word; begin end.

21 Proste typy danych (wybrane)

22 Wybrane funkcje konwersjiKonwersja to proces zamiany jednego typu danych w drugi. Najczęściej wykonywana jest przy zwracaniu wyników ( liczby zamieniane są na tekst) Wybrane funkcje konwersji Val(tekst:string,var zmienna,kod błędu:integer);-zamiana tekstu na liczbę Str(liczba,tekst:string); można tez podac dokładność po przecinku Str(t:8{długość w znakach }:3{liczba znaków po przecinku},s); FloatToStr- z liczby rzeczywistej na tekst; StrToFloat- z tekstu na liczbę rzeczywistą IntToStr- z liczby całkowitej na tekst; StrToFloat- z tekstu na liczbę całkowitą

23 Konwersja- proste zadanieUtwórz aplikacje, która zamieni wczytany nr z klawiatury na znak z tablicy kodów ASCII (zakres liczbowy od 0 do 255) Przykładowa funkcja wykonująca zadaną konwersję: procedure TForm1.Button1Click(Sender: TObject); var i:byte; kodBledu:integer; begin Val(Edit1.Text,i,kodBledu); if kodBledu<>0 then Messagebox(handle,'Podaj liczbę z zakresu 0-255','Komunikat',mb_IconError); exit; end; Label1.Caption:=Char(i);

24 Funkcje i procedury- pojęcie podprogramuPodprogram jest to ciąg instrukcji mogący zawierać własne deklaracje zmiennych określony jednym identyfikatorem (nazwą). W programie głównym jedna instrukcja pozwala wykonać podprogram. Podprogram może być wywoływany kilka razy w programie głównym. Ważną właściwością podprogramu są parametry - czyli pewne wartości (lub zmienne) dla których zostaje wykonany ciąg instrukcji w podprogramie. W Pascalu istnieją dwa typy podprogramów: funkcje i procedury. Funkcje różnią się od procedur tym, że można je traktować jako wartość określonego typu (inaczej określa się to że funkcje zwracają wartość) - oznacza to że mogą występować w wyrażeniach. Przykładem funkcji są funkcje SIN, COS, ORD itp. Procedury traktowane są jako nowa instrukcja języka - nie mogą być używane w wyrażeniach. Funkcje i procedury mogą mieć lub nie mieć parametrów. Ewentualne parametry przekazuje się w wywołaniu podprogramu w nawiasach okrągłych (np. x:= SIN(2*y)). Uwaga: Funkcja zwraca wynik przez nazwę lub przez słowo kluczowe result:= Patrz zadanie ZADANIE

25 Postać procedury i funkcjiA)Bez parametrów FUNCTION nazwa:typ funkcji; VAR część deklaracyjna BEGIN instrukcje funkcji END B) Z parametrami FUNCTION nazwa(parametr1:typ;parametr2:typ;...):typ funkcji; VAR część deklaracyjna BEGIN instrukcje funkcji END A) Bez parametrów PROCEDURE nazwa ; VAR część deklaracyjna BEGIN instrukcje procedury END; B) Z parametrami PROCEDURE nazwa (parametr1:typ; parametr2 : typ;...); VAR część deklaracyjna BEGIN instrukcje procedury END;

26 Uwagi Parametry przekazywane do funkcji lub procedury mogą być przekazywane na kilka sposobów: procedure nazwa(x,y:integer); procedure nazwa(const x,y:integer); to samo dotyczy funkcji procedure nazwa(var x,y:integer); Procedury jak i funkcje mogę mieć własne podprocedury lub podfunkcje procedure nazwa1(var x:integer); begin end; Var

27 Zasięg procedury lub funkcji O zasięgu działania procedury lub funkcji decyduje miejsce jej deklaracji Zasięg globalny ..... procedure a1; //deklaracja nagłówka procedury implementation {$R *.DFM} procedure a1; // implementacja procedury, zasięg lokalny uzyska się w tedy jeżeli nie zastosuje się deklaracji nagłówka begin end; Zasięg wewnątrz klasy i poza klasą tMapa=class (TOmegaSurface) private procedure Rysuj;// wewnątrz klasy public procedure Ruch(const AVX,AVY:single);//Dostępna poza klasą Uwaga : w części implementacyjnej należy opisać cała tych procedur

28 Zadanie Utwórz aplikację, która przy pomocy 4 funkcji wykonujących podstawowe działania matematyczne (+, -, *, /) na dwóch zmiennych pokaże wynik tych działań (z dokładnością do 3 miejsca po przecinku) po wciśnięciu odpowiedniego klawisza działań. Funkcje działań zadeklaruj jako funkcje globalne z parametrem, na przykład : function Dodaj(a,b:real):real; var wynik:string; Form1: TForm1; function Dodaj(a,b:real):real; implementation {$R *.DFM} begin result:=a+b; end; procedure TForm1.Button1Click(Sender: TObject); str(Dodaj(StrToFloat(Edit1.Text),StrToFloat(Edit2.Text)):0:3,wynik); LAbel3.Caption:=wynik; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); if key='.' then key:=',';