REPREZENTACJA DANYCH W PASCALU
TYP DANEJ:
Typ danej jest to opis sposobu kodowania informacji, który w jednoznaczny sposób określa:
zbiór (przedział) wartości,
zbiór możliwych operacji.
format zapisu w pamięci (wielkość pamięci, struktura,
sposób reprezentacji),
Typ porządkowy:
Zbiór elementów ze zdefiniowaną relacją porządku.
Funkcje standardowe: Ord( N ) − numer porządkowy,
Pred( N ) − poprzednik (element poprzedzający),
Succ( N ) − następnik (element następny ),
Typy porządkowe całkowite:
Nazwa Zakres Format
Shortint -128 . . 127 1 bajt
Integer -32768 . . 32767 2 bajty
Longint -2 147 483 648 . . 2 147 483 647 4 bajty
Byte 0 . . 255 1 bajt
Word 0 . . 65535 2 bajty
Operatory: + , , * , / , div , mod , = , < , > , <= , >= , <> , :=
div ← operator dzielenia całkowito-liczbowego, np: 5 div 2 = 2
mod ← operator reszty z dzielenia (modulo), np: 5 mod 2 = 1
Typ porządkowy logiczny:
Nazwa Zakres Format
Boolean False, True 1 bajt
Operatory: and , or , not , xor, = , < , > , <= , >= , <> , :=
Typ porządkowy ZNAKOWY:
Nazwa Zakres Format
Char # 0 . . #255 1 bajt
Operatory: = , < , > , <= , >= , <> , := , +
Funkcje standardowe: Chr( numer_znaku ) , UpCase( znak )
Typ wyliczeniowy: Typy porządkowe definiowane
type
Dni = (Pon, Wt, Sr, Czw, Pt, Sob, Niedz);
Meble=(stół, krzesło, szafa, tapczan);
Operatory: < , > , <= , >= , = , <> , :=
Typ okrojony:
type
Oceny = 1 . . 5 ;
Litery = `A' . . `Z' ;
Numery_dni = 1 . . 31 ;
Dni_robocze = Pon .. Pt ;
Typy prOSTE RZECZYWISTE:
Nazwa Zakres Format
Real - 2.9*10-39 ÷ 1.7*1038 6 bajtów
Single 1.5*10-45 ÷ 3.4*1038 4 bajty
Double 5.0*10-324 ÷ 1.7*10308 8 bajtów
Extended 3.4*10-4392 ÷ 1.1*104932 10 bajtów
Comp ( 263 + 1) . . ( 263 1) 8 bajtów
Operatory: + , , * , / , = , < , > , <= , >= , <> , :=
Przy doborze typu danej należy uwzględniać: → rodzaj informacji (np. znakowe liczbowe); → zakres wartości (np. tylko liczby dodatnie); |
Przykład:
nazwisko → string[40] { ciąg znaków nie dłuższy niż 40 znaków }
wiek człowieka → byte { liczby całkowite dodatnie mniejsze niż 255)
waga człowieka → word { liczby całkowite dodatnie większe niż 255)
inflacja→ real { liczby rzeczywiste, mała dokładność}
parametry astronomiczne → double { liczby rzeczywiste, duża dokładność}WYRAŻENIA (MATEMATYCZNE):
jeden poziom,
nie opuszczamy znaku mnożenia,
nie ma nawiasów kwadratowych i klamrowych,
liczby niecałkowite z kropką
STANDARDOWE FUNKCJE ARYTMETYCZNE
Nazwa |
Wynik |
Typ argumentu |
Typ wyniku |
Abs |
wart. bezwzględna |
rzeczywisty, |
rzeczywisty, |
ArcTan |
arcus tangens |
rzeczywisty, |
rzeczywisty |
Cos |
cosinus |
rzeczywisty, |
rzeczywisty |
Exp |
e do potęgi |
rzeczywisty, |
rzeczywisty |
Frac |
część ułamkowa |
rzeczywisty, |
rzeczywisty |
Int |
część całkowita |
rzeczywisty, |
rzeczywisty |
Ln |
logarytm naturalny |
rzeczywisty, |
rzeczywisty |
Pi |
3.1415926536 |
nie ma |
rzeczywisty |
Round |
zaokrąglenie do |
rzeczywisty |
Longint |
Sin |
sinus |
rzeczywisty, |
rzeczywisty |
Sqr |
kwadrat |
rzeczywisty, |
rzeczywisty, |
Sqrt |
pierwiastek |
rzeczywisty, |
rzeczywisty |
Trunc |
część całkowita |
rzeczywisty |
longint |
Przykłady:
PRACA W TRYBIE ZNAKOWYM
Wyprowadzanie danych na ekran:
Do wyprowadzania na ekran literałów typu char, string, boolean lub dowolnego typu liczbowego stosuje się procedury:
Write(w1, w2, ... , wn);
Writeln(w1, w2, ... , wn);
Każdy z parametrów w1, w2, ... , wn może być stałą, zmienną lub wyrażeniem jednego z podanych wyżej typów.
Procedura Write pozostawia kursor na końcu drukowanej linii, natomiast procedura Writeln zawsze przenosi kursor na początek nowej linii.
Przy wyprowadzaniu wartości wyrażeń typu char, string, boolean oraz literałów całkowitych można dodatkowo po dwukropku definiować parametr pole, który określa minimalną liczbę pozycji znakowych zarezerwowanych na wartość wyrażenia.
Write(wyrażenie:pole);
Writeln(wyrażenie:pole);
Jeśli wartość wyrażenia zajmuje mniej znaków, niż określa parametr pole, to .jest ona uzupełniana z przodu spacjami .
Przy wyprowadzaniu wartości wyrażeń typu rzeczywistego można dodatkowo po dwukropku definiować parametr pole oraz po drugim dwukropku parametr miejsca_dziesiętne,
Write(wyrażenie:pole:miejsca_dziesiętne);
Writeln(wyrażenie:pole:miejsca_dziesiętne);
Parametr miejsca_dziesiętne określa liczbę wyprowadzanych cyfr po kropce dziesiętnej. Parametr pole określa liczbę pozycji znakowych zarezerwowanych na całą wartość wyrażenia (łącznie ze znakiem, kropką dziesiętną i cyframi po kropce dziesiętnej) W razie potrzeby wartość jest uzupełniana z przodu spacjami.
Przykład:
Writeln(Pi:7:2);
drukuje na ekranie ciąg znaków „3.14” (trzy spacje, cyfra, kropka dziesiętna oraz dwie cyfry).
Wprowadzanie danych z klawiatury:
Do wyprowadzania danych z klawiatury służą procedury:
Read(zm1, zm2, ..., zmn);
Readln(zm1, zm2, ..., zmn);
gdzie zm1, zm2, ..., zmn są zmiennymi jednego z następujących typów:
char, string, shortint, byte, integer, word, longint, real, single, double, extended, comp.
Po wywołaniu tych procedur program zatrzymuje się, oczekując na wprowadzenie z klawiatury literałów odpowiadających typom parametrów przekazanych w wywołaniu. Pisane na klawiaturze znaki są wyprowadzane na ekran w miejscu gdzie aktualnie znajduje się kursor. Wprowadzanie danych kończy się po naciśnięciu klawisza <Enter>. Procedura Readln po odczytaniu danych przesuwa kursor na początek następnego wiersza.
UWAGA 1:
Przy wprowadzaniu wielu zmiennych w jednej instrukcji Read może prowadzić do wystąpienia nieprawidłowych przypisań, gdyż znak końca linii generowany po naciśnięciu klawisza <Enter> nie jest usuwany z bufora klawiatury. Dlatego najlepiej stosować następujące zasady:
zamiast procedury Read stosować procedurę Readln,
do wprowadzania każdej zmiennej stosować odrębne wywołanie procedury Readln.
UWAGA 2:
Przy wprowadzaniu z klawiatury wartości zmiennej typu liczbowego pisany na klawiaturze ciąg znaków MUSI być poprawną liczbą. W przeciwnym wypadku wystąpi błąd wykonania programu (run time error) i może wystąpić przerwanie działania programu.
Przykład:
Var
Nazwa : String;
Cena : Real;
begin
Write(' Podaj nazwę towaru: ');
Readln(Nazwa);
Write(' Podaj cenę towaru: ');
Readln(Cena);
end.
Najważniejsze procedury i funkcje modułu Crt.
UWAGA:
Program, w którym wykorzystywane są procedury, funkcje lub stałe zdefiniowane w module Crt MUSI zawierać deklarację: Uses Crt;
czyszczenie ekranu:
Clrscr; → procedura czyści ekran i wypełnia go kolorem tła
pozycja kursora:
Gotoxy(X, Y); → procedura ustawia kursor w wierszu Y i kolumnie X
WhereX → funkcja odczytuje numer kolumny, w której znajduje się kursor
WhereY → funkcja odczytuje numer wiersza, w którym znajduje się kursor
zmiana kolorów:
TextColor(kolor) → procedura ustala kolor tekstu
TextBackground(kolor) → procedura ustala kolor tła
Można stosować następujące, predefiniowane stałe określające kolory:
Black, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray, LightBlue, LightGreen, LightCyan, LightRed, LightMagenta, Yellow, White
czytanie klawiatury
ReadKey → funkcja odczytuje z bufora klawiatury jeden znak.
Keypressed → funkcja zwraca wartość True, gdy w buforze klawiatury znajduje się znak (został naciśnięty jakiś klawisz)
generowanie dźwięku
Sound(czestotliwosc); → procedura generuje dźwięk o podanej częstotliwości
NoSound; → procedura kończy generowanie dźwięku,
Delay(milisekundy) → procedura odczekuje podany w milisekundach czas.
Przykład:
Program ProceduryCrt;
Uses Crt;
begin
TextColor(Yellow);
TextBackground(Blue);
ClrScr;
Write('To jest żółty tekst na niebieskim tle');
Sound(1000);
Delay(100);
NoSound;
Delay(1000);
GotoXY(20, 10);
TextColor(White);
Writeln(' A to jest biały tekst ...');
ReadKey;
end.