Programowanie w środowisku DELPHI • Wstęp do środowiska Delphi • Proste typy danych • Funkcje i procedury- pojęcie podprogramu Wstęp do środowiska Delphi • Elementy.

Download Report

Transcript Programowanie w środowisku DELPHI • Wstęp do środowiska Delphi • Proste typy danych • Funkcje i procedury- pojęcie podprogramu Wstęp do środowiska Delphi • Elementy.

Programowanie w środowisku DELPHI
• Wstęp do środowiska Delphi
• Proste typy danych
• Funkcje i procedury- pojęcie podprogramu
Wstęp do środowiska Delphi
• Elementy środowiska Delphi
• Pliki projektu
• Główne bloki projektu
• Etapy tworzenia aplikacji
• Podstawowe komponenty komunikacji :człowiek-programczłowiek
• Proste aplikacje
Elementy środowiska Delphi
Widok ś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
Pliki projektu
Rozszerzenie
pliku
*.dpr
Przeznaczenie pliku
*.pas
Plik z modułem, zawiera kod
źródłowy formularza
*.dfm
Plik zawierający informacje o
własnościach formularza i
komponentów
Plik wynikowy programu
*.exe
Główny plik projektu, tworzony
automatycznie
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
Etapy tworzenia aplikacji
•Wybrać 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
Podstawowe komponenty komunikacji:
człowiek-program-człowiek
TLabel- odpowiada Pascalowej instrukcji
WRITE- wyświetla tekst
TEdit- odpowiada Pascalowej instrukcji Read,
służy do wprowadzania danych
TButton- to komponent standardowego
klawisza
Widok środowiska
Inspektor obiektów
Plik
modułu
Budowa pliku programu
Proste aplikacje
• Zad 1: Standardowe zamknięcie programu
• Zad 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
Zad 1: Standardowe zamknięcie programu
•Wybierz 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
Zad 2: Zamknięcie programu z Tbutton
•Wybierz 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
Zad 3: Zamknięcie programu z klawisza ESC lub dowolnie
Idea zadania to
innego
wykorzystanie
•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);
begin
if key=27 then close;
end;
•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;
tablicy kodów
ASCII klawiszy do
zamknięcia
aplikacji przy
pomocy wybranego
klawisza oraz
wykorzystaniu
zdarzenia
wciśnięcia
klawisza
wykrywanego
przez formatkę
aplikacji.
Zamknięcie programu z komunikatem
ostrzegawczym
•Powtó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);
Suma dwóch liczb zapisanych w komponentach Tedit
•Powtó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);
begin
Label1.Caption:=IntToStr(StrToInt(Edit1.Text)+StrToInt(Edit2.Text));
end;
•Podstawowe informacje
•
•
•
•
Deklaracja danych
Proste typy danych
Funkcje konwersji
Konwersja- proste zadanie
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
const
zmienna
var
g=9.81;
a:real;
s=‘szkola’;
t:word;
Przykład lokalizacji zapisu zmiennych
unit 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
var
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;
var
a,
t :real;
i:word;
begin
end;
end.
Proste typy danych (wybrane)
Typ
Shortint
Smallint
Integer
Cardinal
Int64
Byte
Word
Longword
Typ
Real
Real48
Single
Double
Extended
Comp
Rozmiar
Format
–128..127
8-bit
–32768..32767
16-bit
–2147483648..214748364732-bit
0..4294967295
32-bit
–2^63..2^63–1
64-bit
0..255
8-bit
0..65535
16-bit
0..4294967295
32-bit
Rozmiar
5.0 x 10^–324 .. 1.7 x 10^308
2.9 x 10^–39 .. 1.7 x 10^38
1.5 x 10^–45 .. 3.4 x 10^38
5.0 x 10^–324 .. 1.7 x 10^308
3.6 x 10^–4951 .. 1.1 x 10^4932
–2^63+1 .. 2^63 –1
–922337203685477.5808..
Currency 922337203685477.5807
Format
8 bitów
6 bitów
4 bitów
8 bitów
10 bitów
8 bitów
8 bitów
Pozostałe
typ znakowy
Char
typ łancuchowy String
typ logiczny
Boolean
Funkcje konwersji
Konwersja 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ą
Konwersja- proste zadanie
Utwó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
begin
Messagebox(handle,'Podaj liczbę z zakresu 0-255','Komunikat',mb_IconError);
exit;
end;
Label1.Caption:=Char(i);
end;
Funkcje i procedury- pojęcie podprogramu
Podprogram 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
Postać procedury i funkcji
A) Bez parametrów
A)Bez parametrów
PROCEDURE nazwa ;
VAR
część deklaracyjna
BEGIN
instrukcje procedury
END;
FUNCTION nazwa:typ funkcji;
VAR
część deklaracyjna
BEGIN
instrukcje funkcji
END
B) Z parametrami
B) Z parametrami
PROCEDURE nazwa
(parametr1:typ; parametr2 : typ;...);
VAR
część deklaracyjna
BEGIN
instrukcje procedury
END;
FUNCTION
nazwa(parametr1:typ;parametr2:typ;...):typ
funkcji;
VAR
część deklaracyjna
BEGIN
instrukcje funkcji
END
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 nazwa(x,y:integer);
procedure nazwa1(var x:integer);
begin
end;
Var
begin
end;
•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ą
end;
Uwaga : w części implementacyjnej należy opisać cała tych procedur
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}
function Dodaj(a,b:real):real;
begin
result:=a+b;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
str(Dodaj(StrToFloat(Edit1.Text),StrToFloat(Edit2.Text)):0:3,wynik);
LAbel3.Caption:=wynik;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key='.' then key:=',';
end;