You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
●<br />
●<br />
TYPY PROSTE<br />
typy rzeczywiste<br />
(Real, Single, Double, Extended, Comp)<br />
typy porządkowe:<br />
● typy całkowite<br />
(Integer, ShortInt, Byte, Word, LongInt)<br />
● typ logiczny (Boolean)<br />
● typ znakowy (Char)<br />
● typ wyliczeniowy<br />
● typ okrojony
ZAKRESY TYPÓW<br />
ShortInt -128 127 1 bajt<br />
Byte 0 255 1 bajt<br />
Integer -32768 32767 2 bajty<br />
Word 0 65535 2 bajty<br />
LongInt -2147483648 2147483647 4 bajty<br />
Real 2.9e-39 1.7e38 6 bajtów<br />
Single 1.5e-45 3.4e38 4 bajty<br />
Double 5.0e-324 1.7e308 8 bajtów<br />
Extended 3.4e-4932 1.1e4932 10 bajtów<br />
Comp -9.2e18 9.2e18 8 bajtów
DEFINICJE TYPÓW<br />
type<br />
nazwa_typu_1 = opis_typu_1;<br />
nazwa_typu_2 = opis_typu_2;<br />
...<br />
nazwa_typu_n = opis_typu_n;<br />
W Pascalu możemy definiować własne typy.<br />
Definicje typów umieszczamy pomiędzy<br />
deklaracjami modułów i częścią wykonawczą<br />
programu (część wykonawcza programu zaczyna<br />
się od słowa begin i kończy słowem end)
DEFINICJE TYPÓW c.d.<br />
Przykład:<br />
program moje_nazwy_typów;<br />
uses crt;<br />
type<br />
tab10x10int = array [1..10, 1..10] of integer;<br />
l_calkowite = integer;<br />
l_rzeczywiste = real;<br />
var<br />
tab : tab10x10int;<br />
tab2 : array [1..5] of l_calkowite;<br />
liczba : l_rzeczywiste;<br />
liczba2 : real;<br />
begin
TYP WYLICZENIOWY<br />
type identyfikator_typu = (lista_identyfikatorów);<br />
Zbiór wartości typu wyliczeniowego tworzą<br />
identyfikatory wymienione na liście<br />
identyfikatorów (oddzielone przecinkami)<br />
Przykłady:<br />
type miesiace = (styczen, luty, marzec, kwiecien, maj,<br />
czerwiec, lipiec, sierpien, wrzesien,<br />
pazdziernik, listopad, grudzien);<br />
tydzien = (poniedzialek, wtorek, sroda, czwartek,<br />
piatek, sobota, niedziela);
TYP OKROJONY<br />
type identyfikator_typu = stala1 .. stala2;<br />
Typ okrojony służy do ograniczania zakresu<br />
wartości dowolnego typu porządkowego do<br />
wartości zawartych w przedziale<br />
. Typ porządkowy, którego<br />
zakres ograniczamy nazywamy typem bazowym.<br />
Obie stałe muszą być tego typu.<br />
Przykłady:<br />
type dni_robocze = poniedzialek .. piatek;<br />
litery = 'a' .. 'z';<br />
od_0_do_100 = 0 .. 100;
program typy;<br />
type<br />
kolory = (k_bialy, k_czarny, k_czerwony,<br />
k_zielony, k_niebieski, k_zolty,<br />
k_rozowy, k_pomaranczowy);<br />
kolory_rgb = k_czerwony .. k_niebieski;<br />
var<br />
wybrany : integer;<br />
kolor1 : kolory;<br />
kolor2 : kolory_rgb;<br />
begin<br />
write ('Wybierz pierwszy kolor: ');<br />
readln (wybrany);<br />
case wybrany of
1 : kolor1 := k_bialy;<br />
2 : kolor1 := k_czarny;<br />
3 : kolor1 := k_czerwony;<br />
4 : kolor1 := k_zielony;<br />
5 : kolor1 := k_niebieski;<br />
6 : kolor1 := k_zolty;<br />
7 : kolor1 := k_rozowy;<br />
8 : kolor1 := k_pomaranczowy;<br />
else : kolor1 := k_bialy;<br />
end;<br />
if kolor1 = k_niebieski then<br />
writeln ('Wybrałeś niebieski kolor');<br />
readln;<br />
end.
TYP ŁAŃCUCHOWY<br />
type identyfikator_typu = string [rozmiar];<br />
type identyfikator_typu = string;<br />
Zbiorem wartości typu string są napisy długości<br />
nie większej niż podany rozmiar. Jeśli nie został<br />
podany rozmiar, to domyślnie wynosi on 255- to<br />
największa liczba znaków, jaką może zawierać<br />
napis. Zmienna typu string zajmuje w pamięci<br />
tyle bajtów, ile wynosi podany rozmiar plus jeden<br />
dodatkowy bajt, w którym pamiętana jest<br />
faktyczna długość przechowywanego napisu.
program napisy;<br />
type krotki_napis = string [20];<br />
dlugi_napis = string [40];<br />
var<br />
imie : krotki_napis;<br />
nazwisko : dlugi_napis;<br />
adres : string [100];<br />
begin<br />
write ('Podaj swoje imię: '); readln (imie);<br />
write ('Podaj swoje nazwisko: '); readln (nazwisko);<br />
writeln ('Nazywasz się: ', imie, ' ', nazwisko);<br />
writeln ('Dlugość Twojego imienia: ', length (imie));<br />
writeln ('Dlugość nazwiska: ', length (nazwisko));<br />
end.
OPERACJE NA NAPISACH<br />
● a + b konkatenacja a i b (łączenie napisów)<br />
● a = b, a b a równe b, a różne od b<br />
● a < b, a b, a >= b a większe b, a większe równe b<br />
Wynik porównania dwóch napisów jest<br />
wynikiem porównania dwóch pierwszych<br />
różniących się znaków w tych napisach. Jeśli<br />
wszystkie kolejne znaki są równe, ale napis a jest<br />
krótszy od napisu b, to mniejszy jest napis a.
OPERACJE NA NAPISACH c.d.<br />
Przykłady<br />
wyr := 'abc' 'ABC'; {True}<br />
wyr := 'M'+'ar'+'ek' = 'Marek'; {True}<br />
wyr := 'abc' < 'abcd'; {True}<br />
wyr := 'abce' > 'abcd'; {True}<br />
wyr := 'Ela' < 'Ola'; {True}<br />
wyr := 'sosna' > 'solna'; {True}
TYP ZBIOROWY<br />
type nazwa_typu = set of typ_porzadkowy;<br />
Zbiorem wartości typu zbiorowego są wszystkie<br />
podzbiory typu_porzadkowego w tym zbiór pusty<br />
Typ_porzadkowy, który jest typem bazowym typu<br />
zbiorowego może zawierać nie więcej niż 256<br />
elementów, których liczby porządkowe muszą<br />
zawierać się w przedziale <br />
Wartości typu zbiorowego zapisujemy, wypisując<br />
w nawiasach kwadratowych elementy zbioru<br />
oddzielone przecinkami.
OPERACJE NA ZBIORACH<br />
● a + b suma zbiorów a i b<br />
● a – b różnica zbiorów a i b<br />
● a * b iloczyn zbiorów a i b<br />
● a = b równość zbiorów a i b<br />
● a b różność zbiorów a i b<br />
● a = b zawieranie zbioru b w zbiorze a<br />
● el in a przynależność el do zbioru a
program zbiory;<br />
type<br />
dni_t = (pn, wt, sr, czw, pt, sob, nd);<br />
zb_dni_t = set of dni_t;<br />
var<br />
dni, dni_wsz : zb_dni_t;<br />
m_wolne, n_wolne, wolne, spokoj : zb_dni_t;<br />
dzien : dni_t;<br />
moje_dni_prac, jej_dni_prac : set of pn .. sob;<br />
begin<br />
dni := [pn, sr, pt]; dzien := nd;<br />
moje_dni_prac := [pn..czw]; jej_dni_prac := [wt..pt];<br />
dni_wsz := [pn, wt, sr, czw, pt, sob, nd];<br />
m_wolne := dni_wsz – moje_dni_prac;
n_wolne :=dni_wsz–(moje_dni_prac+jej_dni_prac);<br />
wolne := dni_wsz-(moje_dni_prac*jej_dni_prac);<br />
spokoj := (dni_wsz-moje_dni_prac)*jej_dni_prac;<br />
if pn in wolne then<br />
writeln ('W poniedziałek masz wolne.');<br />
if spokoj = [] then<br />
writeln ('To dobrze czy zle???');<br />
if moje_dni_prac
program kalendarz;<br />
var rok : integer;<br />
begin<br />
readln (rok);<br />
if rok > 1582 then<br />
if (rok mod 4 = 0) and (rok mod 100 0)<br />
or (rok mod 400 = 0) then<br />
writeln (rok, ' jest rokiem przestępnym')<br />
else<br />
writeln (rok, ' jest rokiem zwyklym')<br />
else<br />
writeln ('Obowiązywał kalendarz juliański');<br />
readln;<br />
end.
Inny sposób na sprawdzanie “przestępności” roku:<br />
if rok > 1582 then<br />
if rok mod 400 = 0 then<br />
writeln (rok, ' jest rokiem przestępnym')<br />
else<br />
if rok mod 100 = 0 then<br />
writeln (rok, ' jest rokiem zwykłym')<br />
else<br />
if rok mod 4 = 0 then<br />
writeln (rok, ' jest rokiem przestępnym')<br />
else<br />
writeln (rok, ' jest rokiem zwykłym')<br />
else<br />
writeln ('Obowiązywał kalendarz juliański');