Podstawy Informatyki Wykład XI Object Pascal Podstawy programowania w Object Pascalu

background image

1

Wykład XI

Podstawy programowania w

Object Pascalu

Podstawy informatyki
Semestr I Transport
Semestr II Elektrotechnika

background image

2

Poznamy reguły dotyczące

Object Pascala

Nadeszła teraz odpowiednia chwila by przedstawić syntaktyki i

semantyki wybranego języka – Object Pascala.
Mają one bezpośrednie zastosowanie w środowiskach

programistycznych produkowanych przez firmę Borland:

Delphi (dla platformy Windows i AIX)
Kylix (dla platformy Linux)
– producent zapowiadana wydania dla innych systemów

operacyjnych.

Istnieją alternatywne wersje środowisk programistycznych, które

wykorzystują Pascala jako język programowania. Choć między

poszczególnymi implementacjami mogą istnieć niewielki

różnice, to jednak większość omawianych reguł dotyczy również

tych środowisk. Należą do nich m.in. Free Pascal Compiler,

Virtual Pascal, czy różne wersje Turbo Pascala .

background image

3

Jak zdobyć potrzebne

narzędzia?

Komputery w laboratoriach, w których będą odbywały się

ćwiczenia będą wyposażone w środowisko Borland Delphi

Studio 7 Professional pracujące w środowisku Windows.
Dla własnych ćwiczeń można wykorzystać bezpłatną (nieco

uboższą) edycję tego środowiska – Borland Delphi 7

Personal. Można ją znaleźć na witrynie producenta –

www.

borland.com

,

www.borland.pl

, a także na płytach dołączanych

do wielu pism komputerowych.
Legalne korzystanie z wersji bezpłatnej wymaga rejestracji

używanej kopii u producenta programu. Po dopełnieniu

niezbędnych formalności otrzymamy numer niezbędny do

instalacji środowiska.
Osoby pracujące na platformie Linux mogą pobrać

odpowiednią wersję środowiska Kylix.

background image

4

Symbole podstawowe

Litery (A..Z,a..z,_)
Cyfry (0..9)
Znaki specjalne (+ - * / = ^ < > ( )
[ ] { }

. , : ; ‘ # $ @)

znaki sterujące (#0..#31 w kodach ANSI,
UNICODE)

Małe i duże litery nie są rozróżniane

background image

5

Słowa kluczowe i

dyrektywy standardowe

Słowa kluczowe mają w Object Pascalu określone

znaczenie i są zastrzeżone.Oznacza to, że nie mogą być one

definiowane przez programistę.
Dyrektywy standardowe również mają swoje znaczenie w

języku Object Pascal, ale można je przedefiniowywać (nie

jest to zalecane).
Wewnątrz

definicji

typu

obiektowego

dyrektywy

standardowe private, protected, public, published i

automated są uznawane za słowa kluczowe.
W edytorze kodu słowa kluczowe i dyrektywy standardowe

są zazwyczaj wyróżniane (najczęściej pogrubioną czcionką).
Zestawienie słów kluczowych i dyrektyw standardowych

zawierają następne slajdy.

background image

6

Zestawienie

najważniejszych słów

kluczowych Object Pascala

and

exports

library

shl

array

file

mod

shr

as

finalization

nil

string

asm

finally

not

then

begin

for

object

thredvar

case

function

of

to

class

goto

on

try

const

if

or

type

constructor

implementation

packed

unit

destructor

in

procedure

until

div

inherite

program

uses

do

initialization

property

var

downto

inline

raise

while

else

interface

record

with

end

is

repeat

xor

except

label

set

background image

7

Dyrektywy standardowe

abstract

dynamic

override

resident

assembler external

private

stored

at

forward

protected

virtual

automated index

public

write

cdecl

message

published

default

name

read

dispid

nodefault

register

background image

8

Identyfikatory – nazwy

Identyfikatory służą do oznaczania: stałych, typów,

zmiennych (w tym obiektów), etykiet, procedur, funkcji,

modułów, programów, parametrów formalnych, pól

rekordów oraz pól i metod w obiektach (wszystkie te

elementy oraz ich przeznaczenie będą omawiane w

trakcie wykładów).
Nazwy powinny być unikalne (nie mogą się powtarzać) w

obrębie

zasięgu

definicji

(programu

bądź

jego

wydzielonej części np. biblioteki, funkcji, procedury).
Wielkość liter w nazwach nie ma znaczenia, tzn.

przykładowe

identyfikatory:

zmienna,

Zmienna,

ZMIENNA, ZmIeNnA niezależnie od zastosowanej

pisowni oznaczają ten sam element.

background image

9

Reguły jakie muszą

spełniać identyfikatory

Object Pascala

Długość do 128 znaków, jednak znaczenie mają
tylko pierwsze 63 znaki.
Składają się z tylko z liter i cyfr (może zawierać
podkreślnik -„_”).
Nie mogą zaczynać się od cyfry.
Nie mogą zawierać odstępów (spacji, „ ”).
Nie mogą zawierać liter charakterystycznych dla
alfabetu polskiego: ą, ć, ę, ł, ń, ó, ś, ź, ż.
Nazwa nie może zawierać znaków specjalnych: !,
@, # ,$, %, ,^, &, *, <, >, ?, ...

background image

10

Przykładowe

identyfikatory

Nazwy nieprawidłowe: Nazwy prawidłowe:

Program

nr

1

Program

_

nr

_

1

001

R

ó

wnanie

kwadratowe

Rownanie

_

kwadratowe

_001

silnia_

#

1 silnia_1

Label 1

Label1

edit Tekst editTekst

Ca

ł

ka_Metod

ą

_Simpsona Calka_Metoda_Simpsona

background image

11

Liczby

Całkowite - ciąg cyfr dziesiętnych lub szesnastkowych

poprzedzonych ewentualnie znakiem „+” lub „–” (liczba bez

znaku jest uznawana za dodatnią, liczby szesnastkowe należy

poprzedzić znakiem $).
Przykłady: 1234, +1234, -1234, 012, $ABC, -$ABC
Rzeczywiste – składają się z mantysy, litery E (lub e) oraz

cechy. Mantysa jest liczbą dziesiętną, która składa się z części

całkowitej , kropki oraz części ułamkowej. Cecha jest liczbą

całkowitą. Mantysa i cecha mogą zawierać wyłącznie cyfry

dziesiętne. Kropka i część ułamkowa są w mantysie

opcjonalne. Liczbę można również określić tylko za pomocą

mantysy.
Przykłady:

-12.34, 0.34, 1., 1.2e-3, 1e7, 0.3e-5,

-5.43E+02, 98E12, 0, 0.0, 0E0, +0.0E-0, 0.E+00

background image

12

Łańcuchy

Łańcuch jest sekwencją znaków (wg kodu ANSI lub UNICODE)

zawartą w apostrofach. ’Object Pascal’

’Bardzo dobry

łańcuch’
Łańcuch złożony tylko z dwu apostrofów będziemy nazywać

łańcuchem pustym ’’.
Apostrof wewnątrz łańcucha przedstawiamy za pomocą dwu

apostrofów ’Kepler’’s law’ ’’’’
Pojedyncze znaki również umieszczamy w apostrofach ’a’ lub

’A’. lub możemy się posłużyć ich numerem z kodu ANSI (w

postaci

dziesiętnej

lub

szesnastkowej)

poprzedzonych

symbolem #.

#65 (’A’)

#13 (Enter, CR/LF)

#27 (Esc)

#127 lub #$7F (znak Del)

Oba

sposoby

reprezentacji

łańcuchów

można

łączyć.

’Linia 1’#13’Linia 2’

background image

13

Literały logiczne

Reprezentują wartości jakie mogą
przyjmować

zmienne,

literały,

parametry, funkcje i pola (rekordów i
obiektów) typu logicznego.

false (fałsz, 0)
true (prawda, 1)

background image

14

Komentarze

Komentarze są to linijki programu, które są ignorowane

przez kompilator.
Mają najczęściej postać krótkiej notatki opisującej na przykład

zastosowane konstrukcje lub deklaracje, sposób działania

jakiegoś fragmentu programu lub inne informacje ważne z

punktu widzenia programisty.
Są one pomocne, gdy program jest pisany w kilku etapach, jak

również w procesie późniejszego utrzymania programu, czy

wprowadzania ewentualnych poprawek.
W Object Pascalu istnieją trzy sposoby tworzenia komentarzy:

{Znaki znajdujące się pomiędzy nawiasami stanowią

komentarz. }

(* Inna forma tworzenia komentarza. *)
//ten komentarz musi zmieścić się w jednej linii

background image

15

Główne bloki programu

W projekcie aplikacji znajdują się następujące pliki
zawierające kod programu:
Pliki modułów, zawierają formularze aplikacji (każdy
formularz składa się z dwu plików: pierwszy ma
rozszerzenie .pas i zawiera kodu modułu, drugi .dfm
zawiera definicję formularza) lub wykorzystywane przez
nią biblioteki (tylko jeden plik o rozszerzeniu .pas ,
zawiera kod modułu)
Plik projektu, który zawiera główny blok programu
integrujący aplikację. Od bloku projektu rozpoczyna się
wykonanie programu. Kod projektu jest przechowywany
w pliku o rozszerzeniu .dpr.

background image

16

Struktura projektu

(programu)

Program napisany w języku Object Pascal jest zbudowany następująco:

Nagłówek programu - składa się ze słowa kluczowego PROGRAM,

po którym występuje nazwa programu (identyfikator)
Deklaracja modułów - za pomocą deklaracji modułów określa się

moduły standardowe oraz moduły użytkownika (niestandardowe),

które będą wykorzystywane przez program.
Blok - blok programu w języku Object Pascal stanowi:

Część opisowa - zawiera deklaracje etykiet, stałych, typów,

zmiennych oraz definicje procedur i funkcji. Kolejność tych

elementów jest dowolna, dopuszczalne jest również przeplatanie

się poszczególnych elementów.

Część wykonawcza - stanowi ją ograniczonych słowami

kluczowymi begin i end ciąg instrukcji oddzielonych średnikami.

Instrukcje w bloku programu są wykonywane sekwencyjnie.

Znak kropki „.

background image

17

Struktura projektu -

przykład

program Nazwa_Projektu;

{deklaracje modułów}
{część opisowa}

begin

{blok programu}

end.

background image

18

Projekty (aplikacje)

konsolowe

To takie aplikacje, które do pracy wykorzystują tryb

tekstowy. Zazwyczaj pracują w oknie konsoli.
Zazwyczaj nie zawierają formularzy, a interfejs użytkownika

oraz zestaw dostępnych funkcji jest uproszczony.
Przykład

program Nazwa_Projektu;

{$APPTYPE CONSOLE}
{deklaracje modułów}
{część opisowa}

begin

{blok programu}

end.

background image

19

Struktura modułu

Nagłówek modułu – składa się ze słowa kluczowego unit i nazwy

modułu. Identyfikator modułu powinien mieć nazwę zgodną z nazwą

pliku, w którym go zapisano (np. jeśli moduł nazywa się formularz to

powinien być zapisany w pliku formularz.pas). Nazwa modułu jest

używana do deklaracji użycia modułu.
Część opisowa - zawiera deklaracje tych etykiet, stałych, typów,

zmiennych oraz definicji nagłówków procedur i funkcji, które będą

dostępne w innych częściach programu. Kolejność tych deklaracji jest

dowolna, dopuszczalne jest również przeplatanie się poszczególnych

elementów. Na początku tej części możemy zadeklarować również chęć

wykorzystania innych modułów (uses)
Część implementacyjna – definiujemy w niej funkcje i procedury, które

zostały zapowiedziane w części opisowej. Deklarujemy tu również

etykiety, stałe, typy, zmienne oraz procedury i funkcje, które będą

dostępne tylko w tej części modułu. Tu również możemy zażyczyć sobie

wykorzystania innych modułów jeśli chcemy go używać tylko w części

implementacyjnej.

background image

20

Struktura modułu

(cd.)

Część inicjująca – zawiera instrukcje, które będą
wykonywane w celu zainicjowania modułu. Moduły są
inicjowane w takiej kolejności, w jakiej są zadeklarowane w
pliku projektu. Ta część modułu jest opcjonalna i nie musi
wystąpić.
Część kończąca – zawiera instrukcje, które będą
wykonane przed końcem działania aplikacji w celu
zwolnienia zasobów. Części kończące poszczególnych
modułów są wykonywane w odwrotnej kolejności niż części
inicjujące. Część kończąca jest opcjonalna, ale może
wystąpić tylko wtedy jeśli moduł zawiera część inicjującą.
Słowo kluczowe end i .

background image

21

Struktura modułu –

przykład

unit nazwa_modułu;
interface

{część opisowa}

implementation

{część implementacyjna}

initialization

{część inicjująca}

finalization

{część kończąca}

end.

background image

22

Deklaracje modułów w

projekcie

Zaczyna się od słowa kluczowego uses i zawiera listę

modułów zakończoną średnikiem.
Lista składa się z oddzielonych przecinkami nazw modułów.
Dla każdego modułu po słowie in może być podana nazwa

pliku, w którym umieszczono moduł. Tylko te moduły należą

do

projektu,

pozostałe

przez

projekt

jedynie

wykorzystywane.
Przykład
uses Forms,

//lub QForms dla Linuxa

Modul1 in ’Plik1.pas’,
Modul2 in ’Plik2.pas’,
Modul3;

background image

23

Deklaracje modułów w

innych modułach

Identycznie jak w projektach zaczyna się od
słowa kluczowego uses i zawiera listę
modułów zakończoną średnikiem.
Lista składa się z oddzielonych przecinkami
nazw modułów.
Składnia

uses lista–identyfikatorów–modułów

Przykład

uses Windows, Dialogs, SysUtil, NumLib;

background image

24

Deklaracje etykiet

Etykieta może być identyfikatorem, bądź ciągiem

składającym się z 1-4 cyfr. Są wykorzystywane przez

instrukcję skoku (goto). Za ich pomocą oznaczamy

miejsca skoków. Każda wykorzystywana etykieta winna

być wcześniej zadeklarowana. Więcej informacji o skokach

pojawi się na wykładzie: Instrukcje sterujące w Object

Pascalu.
Składnia

label lista-etykiet;

Przykład

label etykieta;
Label alfa, Beta, beta1, 10, 9999;

background image

25

Zmienne

W Pascalu deklaracje zmiennych zlokalizowane są w
części opisowej programu, funkcji bądź procedury.
Zmienne reprezentują pamięć programu.
Wszystkie wykorzystywane przez program zmienne
muszą zostać wprost zadeklarowane.
Zazwyczaj nadawanie wartości zmiennym odbywa
się w innym miejscu niż ich deklarowanie
(mianowicie w treści programu). Niemniej dla
zmiennych globalnych dopuszczalna jest możliwość
inicjowania zmiennych w ich deklaracji.

background image

26

Deklaracje zmiennych

Rozpoczyna ją słowo kluczowe var, po który następuje

sekwencja deklaracji o postaci nazwa zmiennej (lub oddzielone

przecinkami nazwy)+dwukropek+typ zmiennej (zmiennych).
Składnia: var sekwencja-deklaracji
gdzie każda deklaracja w sekwencji ma postać
lista-identyfikatorów: oznaczenie-typu
Przykłady
var i, j, k, l: Integer;
a,b : Single;
log: Boolean;
tab: array[1..50] of Double;
Var p,q: JakisTyp;
st: InnyTyp;

background image

27

Inicjowanie wartości

zmiennych

Jest dopuszczalne jedynie dla zmiennych globalnych w Delphi

w wersji 2 lub nowszej.
Dodatkowo deklarację zmiennej należy uzupełnić znakiem

„=” i wartością.
Przykład
var i: Integer = 10;
P: Pointer = nil;
S: String = ’Napis domyślny’;
d: Double = 3.1415926;
Kompilator sam inicjuje zmienne, których wprost nie

zainicjowaliśmy nadając liczbą wartość 0, wskaźnikom

wartość nil, łańcuchy inicjalizowane są łańcuchem pustym.

background image

28

Stałe (ang. constans)

Są synonimami konkretnych wartości występujących w

programie. Wprowadzone zostały w celu rozróżnienia

identycznych

wartości

mających

jednakże

różne

przeznaczenie.
Jeżeli dla przykładu w dużym programie 7 oznacza liczbę

dni w tygodniu i liczbę stanowisk w zakładzie to po

powiększeniu liczby stanowisk do 10 trzeba bardzo

starannie wybierać w programie te siódemki, których

wartość ma być zmodyfikowana. Problem jeszcze bardziej

się komplikuje jeśli chodzi o wartości pochodne (czy

wartość 28 oznacza 4 tygodnie, czy też liczbę taboretów

przy stanowiskach – po 4 na stanowisko). Używając

stałych programiści są wolni od tego typu obaw.

background image

29

Korzyści ze stosowania

stałych

Możliwość zmiany wartości w wielu
miejscach.
Możliwość rozróżnienia takich samych
wartości

(patrz

przykład

w

poprzednim slajdzie).
Poprawa czytelności programu.

background image

30

Definicje literałów

(stałych)

Deklaracja stałych poprzedzona jest słowem kluczowym const

i składa się z jednego bądź więcej przypisań wartości nazwą

synonimicznym. Możliwe jest nadawanie wartości stałym z

wykorzystanie wyrażeń stałych (patrz dalej w tym wykładzie).
Składnia
const lista definicji stałych;
gdzie każda z definicji składa się z przypisania
identyfikator=wyrażenie_stałe
Przykłady
const

tekst=’Object Pascal’; x:=Round(3.14159);

e=2.718281825;
prawda=TRUE;
LiczbaTaboretow=IloscTaboretowNaStan*IloscStanowisk;

background image

31

Określanie typu stałej

Deklarowana nazwa synonimiczna jest takiego samego typu

jak przypisywana do nich wartość przy czym kompilator

stara się dobrać taki typ by ich reprezentacja zajmowała jak

najmniej miejsca w pamięci.
Programista może zmienić tę konwencję deklarując wprost

typ stałej, np.
const
LiczbaDziesietna: Double=3.14;
i: Integer=10;
KomunikatBledu: string=’Uwaga, niebezpieczeństwo’;
W obrębie deryktywy {$J} (sytuacja domyślna) tego typu

deklaracja odpowiada deklaracji zmiennej inicjowanej. poza

nią odpowiada zwykłej stałej.

background image

32

Definicje własnych typów

Wyjaśnienie pojęcia typu można znaleźć w wykładzie: Proste typy danych.
Deklaracja składa się ze słowa kluczowego type oraz sekwencji definicji

typów gdzie każda definicja składa się z nazwy typu, znaku „=” i opisu

typu.
Składnia
type sekwencja-definicji-typów
gdzie każda definicja ma postać
identyfikator-typu=opis-typu;
Przykłady

type

numer=Integer;

dzien=(poniedzialek, wtorek, sroda, czwartek, piatek, sobota,

niedziela);

tablica=array[1..100] of Single;

type

Tekst=Char;

LiczbaRzeczywista=Extended;

background image

33

Definicje i deklaracje

funkcji i procedur

Reprezentują podprogramy. Poświęcimy im cały wykład pt.

Funkcje i procedury stąd na razie sygnalizujemy jedynie ich

istnienie wśród deklaracji, a szczegóły dotyczące ich konstrukcji i

przeznaczenia pojawię się na ww. wykładzie.
Procedura Nazwa1(lista-parametrów)
begin
{treść procedury)
end;

function Nazwa2(lista-parametrów):Typ-Wyniku
begin
{treść procedury}
end;

background image

34

Szkielet programu

program nazwa_programu; {nagłówek programu}

uses {deklaracja modułów}
{początek części opisowej}
label {deklaracje etykiet}

const

{deklaracje stałych}

type {definicje typów}
var

{definicje typów}

procedure {definicje podprogramów}
function

{koniec części opisowej}

begin

{część wykonawcza programu}

end.

background image

35

Typowy plik projektu w

Object Pascalu

program Editor;
uses
Forms,
REAbout in 'REAbout.pas' {AboutBox},
REMain in 'REMain.pas' {MainForm};
{$R *.res}
begin
Application.Title := 'Text Editor';
Application.CreateForm(TMainForm, MainForm);
Application.Run;
end.

background image

36

Operator przypisania

Służy do przypisania zmiennej wartości. Jest to

chyba jeden z najważniejszych operatorów języka.
Przykład
Numer:=5;
Liczba:=5+b;
X:=X+1;
Pierwsza z przykładowych instrukcji nadaje

zmiennej Numer wartość 5, druga w zmiennej

liczba umieszcza sumę wartości 5 i zmiennej

(stałej?) b. Ostatnie przypisanie zwiększa o 1

wartość zmiennej X.

background image

37

Operator zakresu

Jest wykorzystywany do definiowania zakresów
wartości dla typów porządkowych.
..
Przykład
1..7
’a’..’z’
107..231
Poniedziałek..Piatek

background image

38

Operatory porównania

Służą

do

stwierdzenia

równości

bądź

nierówności

dwóch

wartości

albo

ich

porównania pod względem relacji mniejszości.
Są to operatory:

równości =,

nierówności <>, mniejszości <,

większości >, niewiększości <=,

niemniejszości

>=.

Ich wynikiem jest zawsze wartość typu
logicznego.

background image

39

Operatory logiczne

Operatory logiczne
realizują operacje
wynikające z algebry
Boole’a.
Ich typowym
zastosowaniem jest
testowanie kilku
powiązanych ze sobą
warunków np. wymaganie
jednoczesnej prawdziwości
dwu warunków zapiszemy
następująco:
warunek1 and warunek2

not (negacja)
not FALSE

=>

TRUE

not TRUE

=>

FALSE

and (koniungcja, iloczyn logiczny)
FALSE

and

FALSE

=>

FALSE

TRUE

and

FALSE

=>

FALSE

FALSE

and

TRUE

=>

FALSE

TRUE

and

TRUE

=>

TRUE

or (alternatywa, suma logiczna)
FALSE

or

FALSE

=>

FALSE

TRUE

or

FALSE

=>

TRUE

FALSE

or

TRUE

=>

TRUE

TRUE

or

TRUE

=>

TRUE

xor (dysjunkcja)
FALSE

xor

FALSE

=>

FALSE

TRUE

xor

FALSE

=>

TRUE

FALSE

xor

TRUE

=>

TRUE

TRUE

xor

TRUE

=>

FALSE

background image

40

Operatory bitowe

Operatory bitowe (not, and, or, xor, shl, shr)

mogą wykonywać działania na dwójkowych

reprezentacjach wartości. Pierwsze 4 realizują

operacje logiczne na bitach, dwa ostatnie

operacje przesuwania bitów w lewo (shl) lub w

prawo (shr).
Przykład

9 and 3=1

9 or 3 =11 9 shl 3=72

00001001

00001001 00001001

and

00000011 or 00000011 shl

00000011

00000001

00001011 01001000

background image

41

Operatory arytmetyczne

Dodawania

+

Odejmowania

-

Mnożenia

*

Dzielenia

div

(całkowite) /

(rzeczywiste)
Reszty z dzielenia mod

background image

42

Priorytety operatorów

jednoargumentowe (najwyższy priorytet)
+ - @ not
multiplikatywne
* / div mod and shl shr
addytywne
+ - or xor
relacyjne (Najniższy priorytet)
= <> < > <= >= in

background image

43

Nawiasy

Okrągłe (

)

przeznaczone do zmiany kolejności wykonywania
działań.

Podczas

zapisu

obliczeń

arytmetyczno logicznych używamy wyłącznie
nawiasów okrągłych!
Nawiasy kwadratowe

[ ] lub (. .)

używane

w

definicjach

tablic

i

typów

łańcuchowych
Nawiasy klamrowe

{ } lub (* *)

wykorzystywane do umieszczania komentarzy

background image

44

Przykłady podstawowych

działań arytmetycznych

-a+b
-(a+b) lub –a-b
a+b/c
(a+b)/c
(a-b)/(c+a/(c+b/(a-b)))
a div b
a div b mod c

background image

45

Wyrażenia stałe

Abs(x)

moduł argumentu

Pred(n) wartość

poprzedzająca x

Chr(n)

znak o numerze n

Ptr(a)

wskaźnik a

Hi(n)

Starszy bajt liczby n Round(

x)

Zaokrąglenia
argumentu

Length(
s)

długość

łańcucha

tekstowego

SizeOf(
x)

Rozmiar w pamięci

Lo(n)

młodszy bajt liczby
n

Succ(n) wartość następująca

po x

Odd(n)

testowanie
nieparzystości
liczby

Swap(n
)

Zamiana młodszego
i starszego bajtu
liczby

Ord(c )

Numer porządkowy

w zbiorze

Trunc(x

)

Obcięcie

części

ułamkowej

background image

46

Podstawowe funkcje

matematyczne

W poniższych opisach a oznacza wyrażenie bądź zmienną

Abs(a)

wartość bezwzględna

ArcTan(a)

arcus tangens

Cos(a)

cosinus

Exp(a)

e do potęgi

Frac(a)

część ułamkowa argumentu

Int(a)

część całkowita argumentu

Ln(a)

logarytm naturalny

Pi -3.1415926....
Sin(a)

sinus

Sqr(a)

kwadrat argumentu

Sqrt(a)

Pierwiastek kwadratowy z argumentu

background image

47

Przykłady zapisu działań

matematycznych

Sin(3*x+2)-4*Exp(Abs(3*x*x+1))
(Ln(Pi)+Sqr(x
)+Sqrt(x))/(Sqr(x)+1)
ArcTan(23
)
3*(a+b
)-3+Sqrt(a+b)
Frac (1.23
)

{0.23}

Abs(x+1)/(Abs(Sin(a))+2)

background image

48

Inne przydatne funkcje

Randomize

- inicjowanie generatora liczb losowych

Random(n)

- losowanie liczby całkowitej z zakresu od 0

do n-1
Random - losowanie liczby rzeczywistej z zakresu od 0 do 1

UpCase(c)

- zamiana znaku na dużą literę

Inc(x)

- zwiększenie x do wartości następnej

Inc(x, n) - zwiększenie x do n-tej wartości następnej
Dec(x)

- zmniejszenie x do wartości poprzedniej

Dec(x, n)

- zmniejszenie x do n-tej wartości

poprzedniej

background image

49

Standardowe okna

dialogowe

procedure ShowMessage(const Msg: string);

{Wyświetla okienko z napisem Msg i przyciskiem OK.}

Przykład: ShowMessage(‘Przykład użycia ShowMessage’);

function

MessageDlg(const

Msg:

string;

AType:

TMsgDlgType;

AButtons: TMsgDlgButtons; HelpCtx: Longint):

Word;

{Wyświetla okienko dialogowe z napisem Msg, w okienku typu Atype (mtWarning

– ostrzeżenie, mtError – błąd, mtInformation – informacja mtConfirmation –

potwierdzenie, mtCustom- użytkownika), zawierającym przyciski AButtons (mbYes,

mbNo, mbOK, mbCancel, mbHelp, mbAbort, mbRetry, mbIgnore, mbAll), HelpCtx

– indeks w pliku pomocy} funkcja zwraca rezultat zależny od wybranego przez

użytkownika przycisku (mrNone, mrAbort, mrYes, mrOk, mrRetry, mrNo, mrCancel,

mrIgnore, mrAll)}

Przykład: MessageDlg(‘Czy chcesz skończyć program?’,

mtQuestion,

[mbYes,mbNo],0);

background image

50

Standardowe okna

dialogowe cd.

function InputQuery(const ACaption, APrompt:
string; var Value: string): Boolean;

{Wyświetla okno z pytaniem do użytkownika}
Znaczenie parametrów
ACaption – tytuł okna,
APrompt – pytanie do użytkownika
Value – tekst zawierający odpowiedź użytkownika
Przykład
InputQuery(‘Pytanie’, ‘Podaj liczbę:’, S);

background image

51

Generowanie dźwięków

function MessageBeep(Dzwiek: Word): Boolean
{Generowanie jednego z dźwięków systemowych}
Dźwięk -numer dźwięku systemowego ($FFFF–dźwięk z głośniczka)

Przykład: MessageBeep($FFFF);

function Beep (Freq: Word, Duration: Word) : Boolean
{Generowanie dźwięku o określonej częstotliwości (Freq)i czasie trwania
(milisekundy) (Duration)}

Przykład: Beep(2000,5000);

function PlaySound(pszSound: PChar; hmod: HMODULE; fdwSound: Word);

{Odegranie pliku dźwiękowego – pszSound-nazwa dźwięku (w pliku lub zasobach,

HMod 0 lub nr zasobu, fwdSound -parametry dźwięku}

Przykłady:

PlaySound(PChar(‘Wave1.Wav’),0,SND_FILENAME+SND_ASYNC);
PlaySound(PChar(‘Wave2.Wav’),0,SND_FILENAME+SND_ASYNC+SND_L

OOP);

background image

52

Funkcje konwersji danych

IntToStr(n

)

Zamiana

liczby

całkowitej

na

odpowiadający jej tekst

StrToInt(s)

Zamiana tekstu na

odpowiadającą

mu

liczbę całkowitą

FloatToStr
(x
)

Zamiana

liczby

rzeczywistej

na

odpowiadający jej tekst

StrToFloat
(s
)

Zamiana tekstu na

odpowiadającą

mu

liczbę rzeczywistą

DateToStr
(d
)

Zamiana

daty

na

odpowiadający jej tekst

StrToDate
(s
)

Zamiana tekstu na

odpowiadającą

mu

datę

TimeToStr
(t
)

Zamiana czasu na odp.

mu tekst

StrToTime
(s
)

Zamiana tekstu na

odpowiadający

mu

czas

CurrToStr(
c
)

Zamiana liczby typu
currency (waluta) na

odpowiadający jej tekst

StrToCurr
(s
)

Zamiana tekstu na
wartość

typu

Currency

HexToInt(
h
)

Zamiana

liczby

całkowitej na liczbę

szesnastkową

IntToHex(n)

Zamiana

liczby

szesnastkowej

na

całkowitą

background image

53

Konwersja danych

FloatToStrF, Str, Val

function

FloatToStrF(Value:

Extended;

Format:

TFloatFormat; Precision, Digits: Integer): string;

Zamiana liczby rzeczywistej na tekst wraz z jej sformatowaniem
Format -

ffGeneral (0.0001), ffExponent (-d.ddd...E+dddd), ffFixed

(-ddd.ddd...),

ffNumber(-d,ddd,ddd.ddd...),

ffCurrency

Precision - dokładność konwersji (mniej niż 7 dla Single, 15 dla

Double, 18 dla

Extended)

Digits – zależy od formatu liczby (najczęściej ilość miejsc po

przecinku)

procedure Str(X [: Width [: Decimals ]]; var S);

{Zamiana zmiennej liczbowej X na odpowiadający jej tekst; width

szerokość liczby,Decimals- ilość miejsc po przecinku}

procedure

Val(S;

var

V;

var

Code:

Integer);

{zamiana tekstu S na liczbę; zmienna Code informuje czy operacja

się udała (wartość 0 jeśli tak, nr błędu jeśli nie) liczba zwracana jest

w zmiennej podstawionej w miejsce parametru V}

background image

54

Wypisywanie tekstów i

zmiennych oraz pobieranie

wartości w trybie tekstowym

Write('Jakiś Tekst '); - wyświetla tekst na ekranie (kursor zostaje za

ostatnim
znakiem wyświetlanego tekstu)

Writeln('Jakiś Tekst ');

- wyświetla tekst na ekranie (kursor zostaje

przeniesiony
na początek następnej linii)

Przykłady:

Writeln(wynik); Writeln(' Jakiś Tekst ', wynik);

Writeln(wynik:2:3);
Writeln(i
,' -- ' , Chr(i));

Read(lista-zmiennych);

- wczytanie listy zmiennych

Readln(lista-zmiennych);

- wczytanie listy zmiennych i przeniesienie do

następnej linii

Przykłady:

read(a, b, c);

readln(a);


Document Outline


Wyszukiwarka

Podobne podstrony:
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
Podstawy Informatyki Wykład XVI Object Pascal Obiekty
Sem II Transport, Podstawy Informatyki Wykład XII Object Pascal Instrukcje sterujące
Podstawy Informatyki Wykład XIII Object Pascal Funkcje i procedury
Podstawy Informatyki Wykład XVII Object Pascal Komponenty
Podstawy Informatyki Wykład XV Object Pascal Grafika
Podstawy Informatyki Wykład XII Object Pascal Instrukcje sterujące
Sem II Transport, Podstawy Informatyki Wykład XVIII Object Pascal Grafika
Podstawy Informatyki Wykład XIV Object Pascal Tablice, rekordy i zbiory
Sem II Transport, Podstawy Informatyki Wykład XXI Object Pascal Komponenty
Podstawy Informatyki Wykład X Object Pascal Jezyki programowania, Proste typy danych
Sem II Transport, Podstawy Informatyki Wykład XIV i XV Object Pascal Funkcje i procedury
Sem II Transport, Podstawy Informatyki Wykład XIX i XX Object Pascal Obiekty
Sem II Transport, Podstawy Informatyki Wykład XVI i XVII Object Pascal Tablice, rekordy i zbiory
pp program wykladu zaoczne 03, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy pr
wyklady z c, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania
wykladypp 2003 abhp, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowani
Podstawy Informatyki Wykład XIX Bazy danych
Podstawy Informatyki Wykład V Struktury systemów komputerowych

więcej podobnych podstron