Artur Bugajski
10 Programów opisanych w PASCAL-u
Program 1.
PROGRAM Payroll(INPUT,OUTPUT);
{ Deklaracja zmiennych }
VAR
Godziny, Stawka, Pensja :REAL;
{ Blok programu }
BEGIN
WRITE('Podaj liczbe przepracowanych godzin: ');
READLN(Godziny);
WRITE('Podaj stawke: ');
READLN(Stawka);
Pensja := Godziny * Stawka;
WRITELN;
WRITELN('Pensja = $', Pensja:0:2);
READLN;
END.
Program wylicza pensje. Na początku zostaniemy poproszeni o podanie liczby przepracowanych godzin. Potem program poprosi o podanie stawki. Następnie nastąpi pomnożenie „Godziny * Stawka”. Na koniec zostanie wyświetlona wynik mnożenia czyli nasza pensja.
Polecenie WRITE rozkazuje ono napisanie jakiegoś tekstu.
Aby zobaczyć, co też komputer napisał musimy wpisać polecenie READLN.
Program 2.
PROGRAM Compare1(INPUT,OUTPUT);
VAR
A, B :INTEGER;
Result :BOOLEAN;
BEGIN
WRITE('Podaj dwie liczby calkowite: ');
READLN(A, B);
Result := (A = B);
{ lub
Result := A = B;
nawiasy mozna pominac. }
WRITELN('Oto wynik porownania ', Result);
READLN
END.
Ten program ma za zadanie porównać dwie liczby całkowite. Wynik zapisać jako „typ logiczny Boolean” czyli (true) lub (false). Na początku program poprosi o podanie dwóch liczb całkowitych. Następnie porówna te dwie liczby. Wynik zostanie podany jako (true) dla tych samych liczb. Natomiast (false) dla liczb przeciwnych.
Program 3.
PROGRAM FlagLoop(OUTPUT);
VAR
Row, Column : INTEGER;
BEGIN
FOR Row := 1 TO 5 DO
BEGIN
FOR Column := 1 to 10 DO
WRITE('* ');
WRITELN
END;
WRITELN;
WRITELN('Nacisnij ENTER...');
READLN
END.
Program rysuje prostokąt z gwiazdek 10 poziomo 5 pionowo. W programie jest uzyta pętla FOR.
Program 4.
PROGRAM Subrange2(INPUT,OUTPUT);
VAR
UpperCase :'A'..'Z';
LowerCase :'a'..'z';
Digit :'0'..'9';
BEGIN
WRITE('Podaj mala litere: ');
READLN(LowerCase);
WRITE('Podaj wielka litere: ');
READLN(UpperCase);
WRITE('Podaj cyfre: ');
READLN(Digit);
WRITELN('-----------------------------------------------');
WRITELN('Twoje dane to:');
WRITELN('Mala litera : ', LowerCase);
WRITELN('Wielka litera : ', UpperCase);
WRITELN('Cyfra : ', Digit);
WRITELN('Nacisnij ENTER...');
READLN
END.
W tym programie zostaniemy poproszeni o podanie na początku małej litery potem wielkiej litery oraz podania cyfry. Program po podaniu liter i cyfr wypisze je pod spodem.
Program 5.
PROGRAM DaysOfMonth2(INPUT,OUTPUT);
LABEL
Start;
VAR
Days, Month, Year :INTEGER;
BEGIN
Start:
WRITE('Prosze podac numer miesiaca: ');
READLN(Month);
CASE Month OF
1,3,5,7,8,10,12 : Days := 31;
4,6,9,11 : Days := 30;
2 : BEGIN
WRITE('Podaj rok: ');
READLN(Year);
IF YEAR MOD 4 = 0 THEN
Days :=29
ELSE
Days :=28
END;
ELSE
EXIT { wszystkie inne przypadki }
END;
WRITELN('W tym miesiacu jest ',Days,' dni.');
GOTO Start
END.
Program ma za zadanie podać ile jest w danym miesiącu dni. Jeżeli zostanie program poproszony o podanie ile jest dni w lutym spyta się
dodatkowo o rok. W programie jest użyta instrukcja warunkowa if która sprawdza czy podany przez urzytkownika rok dzieli się przez 4.Jeżeli reszta jest równa zero to program podaje że luty ma 29 dni. Natomiast jeżeli reszta jest różna od zera to program wypisze że luty ma 28 dni.
W programie jest użyta instrukcje CASE.
Schemat:
CASE wyrażenie OF
wartość1 : Intrsukcja1;
wartość2 : Instrukcja2;
...
ELSE Instrukcja3
End;
Działanie tej instrukcji jest następujące: zostanie obliczone [wyrażenie] i jeśli jest ono równe [wartość1] zostanie wykonana [Instrukcja1], Jeśli wartość wyrażenia jest równe [wartość2], zostanie wykonana [instrukcja2] itd. Jeśli wynikiem wyrażenia nie jest żaden z podanych poniżej wartości zostanie wykonana instrukcja znajdująca się po opcjonalnym parametrze ELSE.
Program 6.
PROGRAM StringLen(INPUT,OUTPUT);
VAR
Nazwisko :STRING[20];
BEGIN
WRITELN('Dlugosc lancucha wynosi teraz ',LENGTH(Nazwisko),
' znakow');
WRITE('Podaj nazwisko, ktore ma do 20 znakow: ');
READLN(Nazwisko);
WRITELN('Dlugosc lancucha wynosi teraz ',LENGTH(Nazwisko),
' znakow')
END.
Program wyświetla ile znaków zostało napisanych. Długość jest określona do 20 znaków.
Zmienna typu STRING może przechowywać do 255 znaków. STRING[20] jest to ograniczenie do 20 znaków.
Program 7.
PROGRAM AlphaCounter(INPUT,OUTPUT);
VAR
Ch :CHAR;
Counter :INTEGER;
BEGIN
Counter := 0;
WHILE NOT EOLN DO
BEGIN
READ(Ch);
IF (Ch >= 'a') AND (Ch <= 'z')
OR (Ch >= 'A') AND (Ch <= 'Z') THEN
Counter := Counter + 1
END;
WRITELN('Liczba wypisanych liter = ', Counter);
READLN;
WRITELN('Nacisnij ENTER...');
READLN
END.
Kolejny program liczy ile liter zostało wpisanych przez użytkownika.
Jest tu zastosowana pętla “WHILE DO”. Pętla "WHILE..DO", najpierw sprawdza warunek, a potem dopiero, (jeżeli jest on spełniony) się wykonuje. Po słowie "DO", musimy zastosować "BEGIN". Użyta jest też funkcja Eoln która zwraca prawdę, jeżeli dojdziemy do końca wczytywanej linii.
Wprogramie jest uzyta instrukcja IF oraz operatory “AND”(i) oraz “OR”(lub).
Program 8.
PROGRAM Arithmetic(OUTPUT);
{ Deklaracje zmiennych }
VAR
a, b :INTEGER;
{ Blok programu }
BEGIN
a := 25;
b := 2;
WRITELN('a=',a);
WRITELN('b=',b);
WRITELN('a+b=',a+b);
WRITELN('a-b=',a-b);
WRITELN('a*b=',a*b);
WRITELN('a/b=',a/b);
WRITELN('a div b=',a DIV b); { Tylko argumenty calkowite }
WRITELN('a mod b=',a MOD b) { Tylko argumenty calkowite }
END.
Program wykonuje operacje matematyczne na dwóch zmiennych 25 i 2. DIV jest to dzielenie całkowite, MOD dzielenie z resztą.
Program 9.
PROGRAM Display1(INPUT,OUTPUT);
CONST
LF = CHR(10);
CR = CHR(13);
VAR
X, Y, Z :INTEGER;
BEGIN
WRITE('Podaj trzy liczby: ');
READLN(X, Y, Z);
WRITELN('X=', X, CR, LF, 'Y=', Y, CR, LF, 'Z=', Z)
END.
Program wypisze trzy liczby. “LF = CHR(10)” i “CR = CHR(13)” są to znaki końca wiersza.
LF i CR były stosowane na maszynach do pisania oznaczały LF - Line Feed (przeniesienie karetki o linie), CR - Carriage Return (przeniesienie karetki w lewo). W chwili, gdy powstały komputery a wraz z nimi podstawowa tablica ASCII, znaki te zostały w niej ujęte i otrzymały swoją reprezentację. Dziesiętnie znaki te maja kody ASCII 10 (LF) i 13 (CR).
Program 10.
PROGRAM OrdinalNumber(INPUT,OUTPUT);
VAR
SingleChar :CHAR;
BEGIN
WRITE('Prosze podac znak: ');
READLN(SingleChar);
WRITELN('Kod podanego znaku to ', ORD(SingleChar));
READLN { Program czeka na nacisniecie Enter }
END.
Ten program zamienia znaki z klawiatury na kod ASCII.
Funkcja ORD działa odwrotnie do funkcji CHAR (zmienia znak na liczby).