pas cwiczenia podstawowe cz2

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 1

__________________________________________

Ćwiczenie 1

1.

Napisz program wydruku napisów PASCAL:

a.

poziomo

b.

pionowo.

2.

Napisz program wyświetlający Twoją wizytówkę.

Do narysowania ramki wykorzystaj kody ASCII:

Procedury standardowe Write, Writeln

Do wyprowadzania wyników na standardowe urządzenia wyjścia służą procedury
standardowe Write, Writeln, których wywołania mają odpowiednio postać:

Write (lista_argumentów_wyjściowych)
Writeln (lista_argumentów_wyjściowych)

Różnica między tymi procedurami polega na tym, że procedura Writeln, po wykonaniu tych
samych czynności co Write, powoduje dodatkowo przejście do następnego wiersza.
Poszczególne elementy listy argumentów wyjściowych oddzielane są przecinkami. Każdy z
tych elementów powinien mieć jedną z następujących postaci:
wyrażenie
wyrażenie : długość
wyrażenie : długość : miejsca dziesiętne

Kody ASCII

Znaki z rozszerzonej klawiatury uzyskujemy wpisując kod znaku z klawiatury numerycznej
przy wciśniętym ALT.

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 2

__________________________________________

Ćwiczenie 2

1.

Napisz program wyświetlający na ekranie planszę znakową przedstawiającą konkretny
program oraz jego autora i instytucję.

2.

Napisz program wyświetlający na ekranie planszę zakończenia programu, np. napis na
wyczyszczonym ekranie:
(C) IMIĘ NAZWISKO 2002

Procedury Read, Readln

Do wprowadzania danych ze standardowego urządzenia wejścia systemu
mikrokomputerowego służą standardowe procedury Read i Readln, których wywołania mają
postać:
Read (lista_zmiennych)
Readln (lista_zmiennych)
Poszczególne elementy z listy oddziela się przecinkami. Elementy listy zmiennych mogą być
dowolnymi zmiennymi typu całkowitego, rzeczywistego, znakowego lub łańcuchowego.

Ćwiczenie 3

Napisać program, który wczytuje dane o osobie:
nazwisko, imię, płeć, data urodzenia (dzień, miesiąc, rok), adres (kod, miasto, ulica, numer
domu, mieszkanie) a następnie drukuje wczytane dane (na wyczyszczonym ekranie) w
postaci:

Imię Nazwisko
ul. ulica numer / mieszkanie
kod miasto

ur. dzień/miesiąc/rok

Deklaracja zmiennych

Deklaracja zmiennych ma postać:
lista_zmiennych : opis_typu;

Instrukcja przypisania

Instrukcja przypisania ma postać:
zmienna := wyrażenie

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 3

__________________________________________

Ćwiczenie 4

1.

Napisz program, który wydrukuje tekst: S = 1 + 2 + 3 + 4 + 5 oraz (w następnym
wierszu) wartość sumy S.

2.

Napisz program, który wydrukuje tekst: S = a + b oraz (w następnym wierszu) wartość
sumy S, gdzie zmienne a, b: Integer; S: Real. Przypisz zmiennym a, b wartości 5 i 7.

3.

Napisz program, który przypisuje zmiennym I1, I2 typu Integer wartości 7 i 128, a
następnie zamienia miejscami zawartość I1 z zawartością I2 i drukuje je.

Operatory arytmetyczne



+ dodawanie



- odejmowanie



* mnożenie



/ dzielenie

Funkcje arytmetyczne



sinx - Sin (x),



kwadrat x - Sqr (x),



pierwiastek kwadratowy z x - Sqrt (x),



liczba

- Pi,



e

x

- Exp (x),



log

e

x - Ln (x)

Ćwiczenie 5

Napisać program obliczania i wyświetlania na ekranie monitora wartości następujących
wyrażeń:

a.


= 3.74135066182217E-0006

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 4

__________________________________________

b.


= 7.70309024759882E+0000
UWAGA. Argument funkcji sin musi być podany w radianach:

Wartość

daje funkcja bezargumentowa Pi.

c.


= 1.29735380625554E+0000

d.


= -2,88991457859972E-0001
UWAGA

Ćwiczenie 6

Napisać program obliczania pola S oraz obwodu L:

a.

trójkąta równobocznego o danym boku a

b.

trójkąta o danych bokach a, b, c

c.

trójkąta prostokątnego o danych przyprostokątnych a, b

d.

trójkąta prostokątnego, gdy dane są: przyprostokątna a oraz kąt do niej przyległy b

e.

prostokąta o bokach a, b

f.

kwadratu o danym boku a

g.

koła o danym promieniu r

h.

sześciokąta foremnego o danym boku a

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 5

__________________________________________


Dla każdej figury zaprojektuj osobny ekran, np.
I ekran
OBLICZANIE POLA S ORAZ OBWODU L FIGUR PŁASKICH

OPRACOWAŁ JAN KOWALSKI
SEMESTR Iac
<ENTER>

II ekran
OBLICZANIE POLA S ORAZ OBWODU L TRÓJKĄTA RÓWNOBOCZNEGO O BOKU
A
a =
Pole S =
Obwód L =
<ENTER>

Instrukcja warunkowa IF ... THEN ... ELSE

Instrukcje warunkowe uzależniają wykonanie innych instrukcji od spełnienia określonego
warunku.

Ogólna postać instrukcji "jeżeli" jest następująca:

IF wyrażenie THEN instrukcja

albo

IF wyrażenie THEN instrukcja1 ELSE instrukcja2

przy czym wartością wyrażenia powinna być wartość logiczna TRUE lub FALSE. Instrukcja
występująca po słowie THEN lub ELSE może być dowolną instrukcją prostą lub
strukturalną. Jeżeli wartością wyspecyfikowanego wyrażenia jest TRUE, to zostanie
wykonana instrukcja po słowie THEN. W przeciwnym przypadku będzie wykonana następna
instrukcja po instrukcji "jeżeli" (gdy brak ELSE) lub instrukcja2 podana po słowie ELSE.

Ćwiczenie 7

Obliczyć i wyświetlić na ekranie monitora wartość funkcji f(x) dla danej liczby rzeczywistej x
(czytanej z klawiatury):

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 6

__________________________________________


Algorytm:

1.

wczytaj x

2.

jeżeli |x|>=1 , to oblicz f(x) według pierwszego wzoru, w przeciwnym razie oblicz f(x)
według drugiego wzoru

3.

wydrukuj f(x)

Ćwiczenie 8

Napisz program, który dla zadanych wartości a, b, c rzeczywistych, oblicza pierwiastki
rzeczywiste równania kwadratowego
ax

2

+ bx + c=0, a <> 0

i drukuje ich wartości z odpowiednimi objaśnieniami.

WE: a, b, c - rzeczywiste
WY:
a = 0 - informacja, że nie jest to równanie kwadratowe
a <> 0 - rozwiązania równania.
Dane do testowania

a.

a=0 b=1 c=2
To nie jest równanie kwadratowe.

b.

a=2 b=4 c=2
Rozwiązanie: x0 = -1.

c.

a=1 b=-5 c=6
Rozwiązanie: x1 = 2, x2 = 3.

d.

a=1 b=1 c=1
Brak rozwiązań rzeczywistych.


ALGORYTM
Wczytaj a, b, c.
Jeżeli a = 0, to wydrukuj komunikat, że nie jest to równanie kwadratowe,
w przeciwnym razie:
{
Oblicz D
Jeżeli D < 0, to wydrukuj komunikat o braku rozwiązań rzeczywistych
w przeciwnym razie
jeżeli D = 0 to oblicz i wydrukuj x0
w przeciwnym razie oblicz i wydrukuj x1, x2.
}






background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 7

__________________________________________

Ćwiczenie 9

Dla wczytanych z klawiatury:
a

1

- pierwszy wyraz ciągu

r - różnica ciągu
n - numer wyrazu ciągu do obliczenia
obliczyć n-ty wyraz ciągu arytmetycznego oraz n-tą sumę częściową:
a

n

= a

1

+ (n-1) r

sn = (a

1

+ a

n

) n / 2


Wydrukuj otrzymane wartości poprzedzone odpowiednimi komunikatami. Program bada
poprawność n (n > 0). Dla n < 1 - wydruk komunikatu o błędzie.

ALGORYTM:

1.

wczytaj a

1

, r, n

2.

jeżeli n<1 to wydrukuj komunikat o błędzie, w przeciwnym razie oblicz i wydrukuj a

n

i s

n

.

Instrukcja wyboru CASE

Instrukcja CASE jest instrukcją wyboru (selekcji) sterującą wyborem jednej z instrukcji do
wykonania. Składnia instrukcji CASE jest następująca:

CASE selektor OF
sekwencja_instrukcji_wyboru
END

lub

CASE selektor OF
sekwencja_instrukcji_wyboru
ELSE instrukcja
END

Wartość selektora musi być typu porządkowego. Sekwencja instrukcji wyboru składa się z
instrukcji, przy czym każda instrukcja poprzedzona jest jedną lub kilkoma stałymi (zwanymi
stałymi wyboru), które od instrukcji oddzielone są dwukropkiem.
Stałe wyboru oddzielane są przecinkami i mogą mieć postać:

stała

albo

stała..stała

Każda z instrukcji sekwencji instrukcji wyboru oraz instrukcja po słowie ELSE mogą być
dowolnymi instrukcjami prostymi lub strukturalnymi.

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 8

__________________________________________

Ćwiczenie 10

Napisać program, który dla podanych wielkości: rok i miesiąc podaje liczbę dni miesiąca.
Uwzględnić lata przestępne. Rok i miesiąc wczytać z kontrolą poprawności (rok > 1, 0 <
miesiąc < 13).
WE:
rok = 2005
miesiąc = 10
WY:
2005 PAŹDZIERNIK: 31 DNI.

Ćwiczenie 11

Napisać program obliczający sumę liczb naturalnych od 1 do n, sumę ich kwadratów oraz
sumę ich sześcianów. Program ma umożliwiać wybór jednego z trzech wariantów obliczeń.
Wykorzystać w programie następujące wzory:

Ćwiczenie 11

Napisać program przeliczający podaną wartość w jednej z trzech walut (dolary amerykańskie,
euro i złote) na jedną z dwóch pozostałych.

Instrukcja iteracyjna FOR

Instrukcja "dla" - wykorzystywana zwykle w celu wykonania pewnej grupy instrukcji w
przypadku, gdy liczba powtórzeń jest znana w danym miejscu programu. Instrukcja "dla"
może mieć jedną z dwóch postaci:

FOR zs := wp TO wk DO Instrukcja
FOR zs := wp DOWNTO wk DO Instrukcja

Zmienna zs (nazywana zmienną sterującą), musi być identyfikatorem zmiennej typu
porządkowego i powinna być lokalna w bloku zawierającym daną instrukcję "dla", tzn. w
czasie wykonywania Instrukcji wartość zmiennej sterującej nie może być zmieniana. Wartość
wp (wartość początkowa) i wk (wartość końcowa) musi być zgodna w sensie przypisania z

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 9

__________________________________________

typem zmiennej sterującej. Instrukcja po słowie DO może być instrukcją prostą lub
strukturalną. Instrukcja podana po DO nie zostanie wykonana ani razu, gdy
- wartość wp jest większa od wartości wk (w TO)
- wartość wp jest mniejsza od wartości wk (w DownTo).
W przypadku próby zmiany wartości zmiennej sterującej w instrukcji wchodzącej w skład
instrukcji "dla" wystąpi błąd.
Realizacja pętli FOR:



background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 10

__________________________________________

Ćwiczenie 12

1.

Wyprowadź znaki ze zbioru znaków o numerach z zakresu 32-255 (zastosuj pętlę ze
zmienną sterującą i: Integer i funkcję Chr(i)).

2.

Wprowadź n liczb rzeczywistych, oblicz dla każdej z nich kwadrat i sześcian oraz
wyprowadź numer liczby, liczbę oraz jej kwadrat i sześcian. Program powinien
zapraszać użytkownika do podania kolejnej liczby i wyprowadzać dane oraz wyniki
związane z jedną liczbą w jednym wierszu.

Ćwiczenie 13

Napisz program wydruku tabliczki mnożenia.

Instrukcja iteracyjna REPEAT

Instrukcja "powtarzaj" - służy do opisywania iteracji ze sprawdzeniem warunku na końcu i
ma postać:

REPEAT
I1;
I2;
{...}
In
UNTIL warunek

Warunek jest wyrażeniem logicznym a każda instrukcja może być dowolną instrukcją prostą
lub strukturalną. Nie jest konieczne stosowanie instrukcji złożonej, zakres instrukcji
"powtarzaj" jest ograniczony słowami kluczowymi "REPEAT" i "UNTIL". Ostatnia
instrukcja przed UNTIL nie musi być zakończona średnikiem.

Realizacja pętli REPEAT:

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 11

__________________________________________


Ćwiczenie 14

Wprowadź ciąg znaków zakończony '*'. Policz i wyprowadź ilość znaków w ciągu. Policz i
wyprowadź ilość cyfr, ilość dużych liter, ilość małych liter i ilość innych znaków.

Ćwiczenie 15

Na wejściu dany jest ciąg współrzędnych punktów na płaszczyźnie (x,y). Napisz program
sprawdzania, które z tych punktów leżą wewnątrz kwadratu o wierzchołkach w punktach (-1,-
1), (1,-1), (1,1), (-1,1). Zakończ sprawdzanie, gdy znajdziesz 10 takich punktów.

Instrukcja iteracyjna WHILE

Instrukcja "dopóki" służy do opisywania iteracji ze sprawdzeniem warunku (wyrażenie
logiczne) na początku. Składnia:

WHILE warunek DO Instrukcja

Warunek jest wyrażeniem logicznym a każda instrukcja może być dowolną instrukcją rostą
lub strukturalną.

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 12

__________________________________________

UWAGA. Jeżeli przed wykonaniem pętli WHILE wartością wyrażenia jest False - pętla nie
wykona się ani razu. Jeżeli przed wykonaniem pętli WHILE wartością wyrażenia jest True i
wewnątrz pętli nie zmienimy wartości tego wyrażenia, to otrzymana instrukcja nie zostanie
nigdy zakończona.

Realizacja pętli WHILE:

Algorytm zamiany liczby dziesiętnej na binarną

PRZYKŁAD

13 = 8 + 4 + 1 = 1*2

3

+ 1*2

2

+ 0*2

1

+ 1*2

0

= (1101)

2

ALGORYTM

13 MOD 2 = 1 13 DIV 2 = 6

6 MOD 2 = 0 6 DIV 2 = 3

3 MOD 2 = 1 3 DIV 2 = 1

1 MOD 2 = 1 1 DIV 2 = 0 KONIEC

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 13

__________________________________________

Ćwiczenie 16

Napisać program zamiany wczytanej liczby całkowitej zapisanej w systemie dziesiętnym na
liczbę zapisaną w systemie binarnym.

Ćwiczenie 17

Napisz program drukowania tabelki wartościowań funkcji y(x) = ax

3

+ bx

2

+ cx + d dla

dowolnych wartości parametrów a, b, c, d oraz argumentu x zmieniającego się od 0 do 10 ze
stałym krokiem równym 0.1.
Co 20 wartości x - zatrzymanie ekranu, po ENTER - wyczyszczenie i wydruk następnych
wartości.

Definicja procedury

PROCEDURE NazwaProcedury (ListaParametrówFormalnych);
BEGIN
ciąg instrukcji
END; {NazwaProcedury}

Równanie prostej

Równanie prostej przechodzącej przez dwa punkty A i B płaszczyzny:



y- y

A

= (y

B

- y

A

)/(x

B

- x

A

) (x - x

A

), gdy x

B

≠ x

A

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 14

__________________________________________



x = a, gdy x

B

= x

A

= a

Zadanie 1

Napisz program znajdowania równań dwu prostych (na płaszczyźnie XY), z których jedna
przechodzi przez dwa punkty P

1

i P

2

, zaś druga przechodzi przez dany punkt P

3

i przez punkt

P

4

, będący środkiem odcinka P

1

P

2

.


Definicja funkcji rzeczywistej

FUNCTION NazwaFunkcji (ListaParametrówFormalnych) : Real;
BEGIN
ciąg instrukcji
{w treści funkcji musi wystąpić instrukacja podstawienia pod nazwę funkcji:
NazwaFunkcji := wyrażenie; }
END; {NazwaFunkcji}

Algorytm wyznaczania potęgi liczby

Potęgę liczby a

b

możemy wyznaczyć ze wzoru:


a

b

= e

b ln a

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 15

__________________________________________

Zadanie 2

Napisz funkcję obliczającą a

b

. Napisz program wyznaczania potęg dla dowolnej ilości par

liczb rzeczywistych a i b. Program powinien pytać użytkownika, czy chce obliczać potęgę
kolejnej liczby.

Definicja funkcji logicznych

FUNCTION NazwaFunkcji (ListaParametrówFormalnych) : Boolean;
BEGIN
ciąg instrukcji
{w treści funkcji musi wystąpić instrukacja podstawienia pod nazwę funkcji:
NazwaFunkcji := wyrażenie; }
END; {NazwaFunkcji}

Zadanie 3

Napisz podprogram funkcji logicznej badającej przynależność punktu do koła. Napisz
program, który wczytuje parametry koła: współrzędne środka i promień (z badaniem
poprawności) oraz ciąg współrzędnych punktów a drukuje informację, czy punkt należy do
koła czy nie, i liczbę punktów należących do koła. Do wczytania współrzędnych punktów
użyj dodatkowej procedury.

Definicja funkcji znakowej

FUNCTION NazwaFunkcji (ListaParametrówFormalnych) : Char;
BEGIN
ciąg instrukcji
{w treści funkcji musi wystąpić instrukacja podstawienia pod nazwę funkcji:
NazwaFunkcji := wyrażenie; }
END; {NazwaFunkcji}

Algorytm zamiany dużej litery na małą

Zauważmy, że w tabeli kodów ASCII odległość między dużą literą a odpowiadającą jej małą
literą jest stała i wynosi

odleglosc = ord('a') - ord('A')

Znalezienie dla danej dużej litery odpowiadającej jej małej litery możemy uzyskać według
wzoru:

mala_litera := chr(ord(duża_litera) + odleglosc)

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 16

__________________________________________

Zadanie 4

Napisać funkcję DownCase, która zamienia dużą literę na małą.
Nagłówek:

FUNCTION DownCase (Zn: Char): Char;

Funkcja zwraca zamienioną literę. Jeżeli Zn nie jest dużą literą, to zwracany jest bez zmian.
Napisać program, który



wczytuje ciąg znaków zakończony Enterem,



oddrukowuje ten ciąg z zamienionymi małymi literami na duże,



oddrukowuje ten ciąg z zamienionymi dużymi literami na małe,



oddrukowuje ten ciąg z usuniętymi spacjami.

Do wczytania ciągu i zmian zastosować oddzielne procedury. Ponadto zdefiniować procedurę
kończącą program (wyczyszczenie ekranu, podpis programisty).

UWAGA

Dostęp do kolejnych znaków napisu s typu String uzyskujemy w następujący sposób:
s[i], gdzie i = 1, 2, ... length(s)

PRZYKŁAD

Instrukcja:

FOR i := 1 TO length(s) DO Write(s[i],' ')

służy do wydruku napisu s "rozstrzelonymi" literami.

Definicja funkcji całkowitoliczbowej

FUNCTION NazwaFunkcji (ListaParametrówFormalnych) : Numeryczny;
BEGIN
ciąg instrukcji
{w treści funkcji musi wystąpić instrukacja podstawienia pod nazwę funkcji:
NazwaFunkcji := wyrażenie; }
END; {NazwaFunkcji}

gdzie Numeryczny jest dowolnym typem całkowitoliczbowym

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 17

__________________________________________

Algorytm wyznaczania liczb doskonałych

Liczbą doskonałą jest każda liczba, której suma dzielników równa się jej samej:

6 = 1 + 2 + 3 (liczba doskonała)
8 <> 1 + 2 + 4 (liczba nie jest doskonała)
28 = 1 + 2 + 4 + 7 + 14 (liczba doskonała)

Zauważny, że największy dzielnik liczby jest mniejszy bądź równy połowie tej liczby.

Aby sprawdzić, czy liczba jest doskonała, należy wyznaczyć i zsumować wszystkie jej
dzielniki:

s := 0;
FOR i := 1 TO n DIV 2 DO
IF n MOD i = 0 THEN s := s + i;
IF n = s
THEN Writeln('Liczba jest doskonała')
ELSE Writeln('Liczba nie jest doskonała')

Zadanie 5

Napisz funkcję obliczającą sumę wszystkich podzielników dowolnej liczby naturalnej. Napisz
program wyznaczania liczb doskonałych z zakresu 1..10000

Definicja funkcji całkowitoliczbowej

FUNCTION NazwaFunkcji (ListaParametrówFormalnych) : Numeryczny;
BEGIN
ciąg instrukcji
{w treści funkcji musi wystąpić instrukacja podstawienia pod nazwę funkcji:
NazwaFunkcji := wyrażenie; }
END; {NazwaFunkcji}

gdzie Numeryczny jest dowolnym typem całkowitoliczbowym

Ćwiczenie 6

1.

Napisz funkcję wyznaczania n-tego wyrazu ciągu Fibonacciego.
Ciąg Fibbonacciego określamy w następujący sposób:
f

0

= 0,

f

1

= 1,

f

n

= f

n-1

+ f

n-2

, dla n > 1

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 18

__________________________________________

Napisz program wyznaczający wszystkie liczby Fibonacciego z przedziału 1..n, gdzie
n - liczba dodatnia (wczytana z kontrola poprawności).

2.

Napisz funkcję wyznaczającą minimum z n wczytanych liczb.
Napisz funkcję wyznaczającą maksimum z n wczytanych liczb.
Napisz program, który w zależności od wyboru użytkownika wyznacza minimum albo
maksimum z n wczytanych liczb, gdzie n - liczba dodatnia (wczytana z kontrolą
poprawności).

Definicja funkcji całkowitoliczbowej

FUNCTION NazwaFunkcji (ListaParametrówFormalnych) : Numeryczny;
BEGIN
ciąg instrukcji
{w treści funkcji musi wystąpić instrukacja podstawienia pod nazwę funkcji:
NazwaFunkcji := wyrażenie; }
END; {NazwaFunkcji}

gdzie Numeryczny jest dowolnym typem całkowitoliczbowym

Algorytm Euklidesa

Algorytm wyznaczania największego wspólnego podzielnika liczb opiera się on na fakcie, że
jeśli od większej liczby odejmiemy mniejszą, to ta mniejsza liczba i otrzymana różnica będą
miały taki sam największy wspólny dzielnik jak pierwotne liczby. Gdy przy kolejnym
odejmowaniu otrzymamy parę takich samych liczb, to znaleźliśmy NWD.

Poniżej przedstawiam dwa algorytmy: pierwszy - oparty na odejmowaniu liczb, drugi -
wykorzystujący dzielenie.

Algorytm wykorzystujący odejmowanie liczb

1.

dane są dwie liczby a i b

2.

dopóki liczby a i b nie są sobie równe, powtarzaj krok trzeci w przeciwnym wypadku
przejdź do kroku czwartego

3.

od większej liczby odejmij mniejszą i tę większą zastąp otrzymaną różnicą

4.

wyprowadź wynik NWD (NWD = a)


Algorytm Euklidesa wykorzystujący dzielenie

1.

dane są dwie liczby naturalne dodatnie a i b

2.

oblicz c jako resztę z dzielenia a przez b

3.

zastąp a przez b, zaś b przez c

4.

jeżeli b = 0, to szukane NWD = a, w przeciwnym wypadku przejdź do kroku drugiego

5.

wyprowadź wynik NWD

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 19

__________________________________________

Zadanie 7

Napisz funkcję obliczającą największy wspólny podzielnik liczb według pierwszego
algorytmu a drugą - według drugiego.
Napisz program wyznaczania największego wspólnego podzielnika dla dowolnej ilości par
liczb naturalnych a i b. Program powinien pytać użytkownika, czy chce obliczać największy
wspólny podzielnik kolejnych liczb.

Funkcje rekurencyjne

W części operacyjnej funkcji rekurencyjnej następuje wywołanie tej samej funkcji. Jest to
analogia do znanego w matematyce rekurencyjnego definiowania pewnych wzorów.

Algorytm wyznaczania największego wspólnego
podzielnika liczb

Rekurencyjna wersja algorytmu wyznaczania największego wspólnego podzielnika liczb
oparta jest na następującej definicji rekurencyjnej

Algorytm wyznaczania liczb Fibonacciego

Rekurencyjna wersja algorytmu wyznaczania liczb Fibonacciego oparta jest na następującej
definicji rekurencyjnej

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 20

__________________________________________

Zadanie 8

1.

Napisz funkcję obliczającą największy wspólny podzielnik liczb. Napisz program
wyznaczania największego wspólnego podzielnika dla dowolnej ilości par liczb
naturalnych a i b. Program powinien pytać użytkownika, czy chce obliczać największy
wspólny podzielnik kolejnych liczb.

2.

Napisz funkcję wyznaczania n-tego wyrazu ciągu Fibonacciego. Napisz program
wyznaczający wszystkie liczby Fibonacciego z przedziału 1..n, gdzie n - liczba
dodatnia (wczytana z kontrolą poprawności).

Ekran w trybie znakowym


Znak w lewym górnym rogu ekranu ma współrzędne (1, 1).
Znak w prawym dolnym rogu ekranu ma współrzędne (x

max

, y

max

).

Wartości (x

max

, y

max

) zależą od trybu ekranu. W trybie 80-kolumnowym te współrzędne mają

wartość (80, 25)

Procedury



GoToXY (x, y)
- ustawia kursor w bieżącym oknie w punkcie o współrzędnych (x, y)



Delay (czas)
- zatrzymuje wykonanie programu na określoną liczbę milisekund

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 21

__________________________________________

Zadanie 9

Napisz program symulujący w trybie znakowym ruch piłeczki odbijącej się pionowo od
podłogi. Piłeczka w kolejnym odbiciu osiąga wysokość niższą o 1/4 od poprzedniej
wysokosci. Początkowa wysokość jest równa wysokości ekranu.

Zadanie 10

Napisz program drukowania choinki złożonej z trapezów o wspólnej osi. Każdy trapez jest
zdefiniowany przez swoją wysokość i długość krótszej (górnej) podstawy. Wszystkie trapezy
są symetryczne i mają w podstawach nieparzystą liczbę gwiazdek.
Trapez (4, 3):
***
*****
*******
*********
Choinka jest opisana kompletem danych zawierającym liczbę trapezów i dane o kolejnych
trapezach. Zdefiniuj podprogram drukowania trapezu we wskazanym miejscu. Zakładamy, ze
w wierszu mieści się 80 znaków i że jest 25 wierszy.

Procedura



GoToXY (x, y)
- ustawia kursor w bieżącym oknie w punkcie o współrzędnych (x, y)



Window (x1, y1, x2, y2)
- definiuje okno znakowe, x1, y1, x2, y2: Byte
(x1, y1) - lewy górny narożnik,
(x2, y2) - prawy dolny narożnik),

Zadanie 11

Napisz procedurę rysowania okienka znakowego w współrzędnych wskazanych parametrami,
otoczonego pojedynczą ramką, na górnej krawędzi której umieszczony zostanie napis,
przekazywany jako kolejny parametr procedury. Kursor należy ustawić w pierwszym wierszu
i pierwszej kolumnie utworzonego okienka. Procedura powinna reagować na błędne dane
wejściowe (np. przybierać minimalne wymiary lub nic nie wykonywać). Napisz program
testujący działanie napisanej procedury.

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 22

__________________________________________

Moduł Crt

Moduł Crt zawiera funkcje i procedury umożliwiające posługiwanie się kodami znaków z
rozszerzonej klawiatury, kolorami, oknami i dźwiękami, sterowanie trybami ekranu.

Deklaracja modułu Crt

USES Crt;

Stałe kolorów w module Crt

Stałe te można znaleźć w Helpie < Shift F1 > i np. Black

Kolory tła i znaków:

Kolory tła i znaków 0..7

Stała

wartość

Blue

1

Green

2

Cyan

3

Red

4

Magenta

5

Brown

6

LightGray

7

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 23

__________________________________________

Kolory znaków 8..15

Stała

wartość

DarkGray

8

LightBlue

9

LightGreen

10

LightCyan

11

LightRed

12

LightMagenta

13

Yellow

14

White

15

Procedury modułu Crt



TextColor (kolor) - ustala kolor znaków pojawiających się na ekranie, kolor jest stałą
koloru (typu Byte); migotający kolor uzyskujemy przez dodanie do koloru stałej Blink
(np. Red+Blink)



TextBackground (kolor) - ustala kolor tła znaków pojawiających się na ekranie, kolor
jest stałą koloru (typu Byte) z zakresu [0..7]



Window (x1,y1,x2,y2) - definiuje okno na ekranie; (x1,y1) - współrzędne lewego
górnego rogu okna; (x2,y2) - współrzędne prawego dolnego rogu okna; x1 <= x2, y1
<= y2; Standardowe okno w trybie 80 kolumnowym jest (1,1,80,25)



ClrScr - wymazanie zawartości bieżącego okna



Delay (milisekundy) - zatrzymuje wykonanie programu na określoną liczbę
milisekund



Sound (częstotliwość) - włącza wewnętrzny głośnik i generuje dźwięk o podanej
częstotliwości



NoSound - wyłącza wewnętrzny głośnik

Generowanie d

ź

wi

ę

ków w Turbo Pascalu

PRZYKŁAD

Wywołanie kolejno procedur: Sound, Delay, NoSound powoduje wygenerowanie dźwięku o
podanej częstotliwości i długości.

PROCEDURE Dzwiek (nuta, czas : Integer);
BEGIN
Sound (nuta);
Delay (czas);
NoSound
END; {Dzwiek}

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 24

__________________________________________

Zadanie 12

Napisz program wydruku nazw i wartości stałych kolorów znaków i tła w module Crt.

Zadanie 13

Zaimplementuj podprogram czytania napisów niepustych (bez możliwości przechodzenia
Enterem do następnej linii ekranu). Napisz program wykorzystujący zdefiniowany
podprogram do wczytania danych o osobie: imię, nazwisko, klasa.

Tablice jednowymiarowe

Tablica (zmienna typu tablicowego) jest ciągiem ustalonej długości elementów tego samego
typu a dostęp do poszczególnych jej elementów następuje za pomocą tak zwanego indeksu,
który w ogólności może być wyrażeniem. Wartości składowe mogą być zarówno typów
prostych, łańcuchowych jak i typów strukturalnych. Dostęp do poszczególnych elementów
tablicy uzyskuje się za pomocą indeksowania. Dopuszczalny zakres indeksów jest podany w
definicji typu tablicowego.

Definicja typu tablicowego

TYPE
identyfikator_typu = ARRAY [typy_indeksowe] OF typ_składowy;

gdzie
typy_indeksowe - opisy typu porządkowego (z wyjątkiem typu LongInt i okrojeń tego typu),

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 25

__________________________________________

przy czym poszczególne opisy oddziela się przecinkami.
typ_składowy - dowolny typ.

Przykład

Tablica jednowymiarowa do przechowywania maksymalnie 42 napisów:

TYPE
Napisy = ARRAY [1..42] OF String[20];
VAR
imiona, nazwiska: Napisy;


Odwołanie do i-tego imienia w tablicy imiona i i-tego nazwiska w tablicy nazwiska
uzyskujemy w następujący sposób:

imiona[i] := 'Janek';
nazwiska[i] := 'Kowalski';


Tablica dwuwymiarowa do przechowywania maksymalnie 84 napisów:

TYPE
indeks = (imie,nazwisko);
Napisy = ARRAY [1..42, imie..nazwisko] OF String[20];
VAR
dane: Napisy;


Odwołanie do i-tego imienia i nazwiska w tablicy dane uzyskujemy w nastepujący sposób:

dane [i, imie] := 'Janek';
dane [i, nazwisko] := 'Kowalski';

Ćwiczenie 14

Napisz program, który czyta imiona i nazwiska osób z Twojego semestru, umieszcza je w
tablicy (tablicach) a następnie drukuje imię i nazwisko osoby o podanej liczbie porządkowej.

Definicja typu tablicowego

TYPE
identyfikator_typu = ARRAY [typy_indeksowe] OF typ_składowy;

gdzie

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 26

__________________________________________

typy_indeksowe - opisy typu porządkowego (z wyjątkiem typu LongInt i okrojeń tego typu),
przy czym poszczególne opisy oddziela się przecinkami.
typ_składowy - dowolny typ.

Ćwiczenie 15

1.

Napisz program, który czyta nazwiska osób z Twojego semestru, umieszcza je w
tablicy a następnie drukuje informację czy osoba o podanym nazwisku jest zapisana w
tablicy i pod którą wartością indeksu.

2.

Napisz program, który czyta nazwiska osób z Twojego semestru, umieszcza je w
tablicy a następnie drukuje informację, jakie nazwisko jest najwcześniejsze wg kodów
ASCII a które najpóźniejsze i pod jakimi wartościami indeksów występują.

Tablice jednowymiarowe

Tablica (zmienna typu tablicowego) jest ciągiem ustalonej długości elementów tego samego
typu a dostęp do poszczególnych jej elementów następuje za pomocą tak zwanego indeksu,
który w ogólności może być wyrażeniem. Wartości składowe mogą być zarówno typów
prostych, łańcuchowych jak i typów strukturalnych. Dostęp do poszczególnych elementów
tablicy uzyskuje się za pomocą indeksowania. Dopuszczalny zakres indeksów jest podany w
definicji typu tablicowego.

Definicja typu tablicowego

TYPE
identyfikator_typu = ARRAY [typy_indeksowe] OF typ_składowy;

gdzie
typy_indeksowe - opisy typu porządkowego (z wyjątkiem typu LongInt i okrojeń tego typu),
przy czym poszczególne opisy oddziela się przecinkami.
typ_składowy - dowolny typ.

Przykład 1

Tablica dwuwymiarowa do przechowywania miesięcznych opadów z 30 lat:

CONST
maxRok = 30;
TYPE
miesiace = 1..12;
zakresLat = 1..maxRok;
opady = Real;
opadyMiesieczne = ARRAY [miesiace] OF opady;
tabliceOpadow = ARRAY [zakresLat] OF opadyMiesieczne;
VAR
tablicaOpadow: tabliceOpadow;

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 27

__________________________________________


Odwołanie do j-tego miesiąca w i-tym roku:

tabliceOpadow [i, j] := 121;

Przykład 2

Tablica dwuwymiarowa do przechowywania trzech kolumn liczb:

TYPE
indeks = (uspr, nieuspr, spoz);
Tablica = ARRAY [1..42, uspr..spoz] OF Byte;
VAR
dane: Tablica;


Odwołanie do liczby, określającej ilość godzin usprawiedliwionych, nieusprawiedliwionych i
spóźnień i-tej osoby w tablicy dane uzyskujemy w następujący sposób:

dane [i, uspr] := 121;
dane [i, nieuspr] := 7;
dane [i, spoz] := 2;

Ćwiczenie 16

1.

Instytut Meteorologii Turbolandii przez 20 lat rejestrował miesięczne opady deszczu.
Teraz meteorolodzy chcą obliczyć:

o

ś

rednią opadów w każdym miesiącu,

o

odchylenie standardowe w każdym miesiącu.

2.

Napisz program, który czyta ilości opuszczonych godzin usprawiedliwionych i
nieusprawiedliwionych oraz spóźnień dla wczytanej ilości osób z Twojego semestru i
umieszcza je w tablicy. Po wczytaniu danych program drukuje zebrane informacje w
postaci:

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 28

__________________________________________

lp. usprawiedliwione nieusprawiedliwione spóźnienia

1.

1

4

7

2.

67

2

1

3.

3

123

2

3.

itd.

Dane drukować dziesiątkami. Po oddrukowaniu kolejnej dziesiątki, zatrzymać
program, wyczyścić ekran i wydrukować następną dziesiątkę. Wyznaczyć średnią
ilość opuszczonych godzin w semestrze w poszczególnych kategoriach. Wydrukować
listę numerów osób, których ilość godzin nieusprawiedliwionych jest większa od
wczytanej liczby godzin (ilość >0).

Ćwiczenie 17

1.

Napisz program, który czyta nazwiska osób z Twojego semestru, umieszcza je w
tablicy a następnie drukuje informację czy osoba o podanym nazwisku jest zapisana w
tablicy i pod którą wartością indeksu.

2.

Napisz program, który czyta nazwiska osób z Twojego semestru, umieszcza je w
tablicy a następnie drukuje informację, jakie nazwisko jest najwcześniejsze wg kodów
ASCII a które najpóźniejsze i pod jakimi wartościami indeksów występują.

Typy rekordowe

Definicja typu rekordowego

TYPE
nazwa_typu = RECORD
pierwsza_lista_pól : typ_pól;
druga_lista_pól : typ_pól;
...
n_ta_lista_pól : typ_pól;
END;

Zmienne rekordowe

Służą do przechowywania zmiennych strukturalnych niejednorodnych - typu rekordowego.
Odwołanie do pól zmiennych typu rekordowego następuje za pomocą desygnatora pola:
zmienna_rekordowa.nazwa_pola albo przy pomocy instrukcji wiążącej. Rekordów nie można
używać w instrukcjach wejścia-wyjścia.

PRZYKŁAD

TYPE
TData = RECORD

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 29

__________________________________________

dzien : 1..31;
miesiac : 1..12;
rok : 1900..3000
END;
VAR
data: TData;
BEGIN
WITH data DO
BEGIN
dzien := 24;
miesiac := 12;
rok := 2001
END
END.

Tablice rekordów

Aby przechować kilka (np. 10) dat można zdefiniować tablicę rekordów:

TYPE
Tablica = ARRAY [1..10] OF TData;

Zadanie 18

1.

Napisz program, w którym do zmiennej typu rekordowego wpiszesz dane osobowe,
zamieszczane w dowodzie osobistym. Do wczytywania danych zdefiniuj procedurę.

2.

Rozbuduj program z poprzedniego zadania o procedurę wydruku danych osobowych
zapisanych w rekordzie.

3.

Zdefiniuj tablicę potrzebną do przechowywania danych o słuchaczach z Twojego
semestru. Napisz program, który wpisuje do tablicy dane wszystkich osób a następnie
drukuje dane wybranej osoby.

Rekordowa reprezentacja ułamków zwykłych

Do reprezentacji ułamków zwykłych używamy rekordów:

TYPE
Naturalna = 1..MaxInt;
Wymierna = RECORD
licznik : Integer;
mianownik : Naturalna
END;

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 30

__________________________________________

Zadanie 19

Napisz program wykonujący cztery działania na wczytanych ułamkach zwykłych: dodawanie,
odejmowanie, mnożenie, dzielenie. Do wczytania i wydruku ułamków oraz działań zdefiniuj
osobne procedury.

Typy plikowe

W Pascalu wyróżniamy trzy typy plików:



zdefiniowane



tekstowe



niezdefiniowane

Definicja typu plikowego:

a.

zdefiniowanego

TYPE

identyfikator_typu = FILE OF opis_typu_elementów_pliku;

PRZYKŁADY

TYPE

TLiczby = FILE OF Integer;

TYPE

TWiersz = ARRAY [1..80] OF Char;
TPlikWierszy = FILE OF TWiersz;

TYPE

TKsiazka = RECORD

nazwisko : String [20];
imię : String [12];
tytul : String [50];
nr_ksiazki: 1..1000;
wydawca : String[30];
wydanie : 1..100

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 31

__________________________________________

END;

TKatalog = FILE OF TKsiazka;

b.

tekstowego

Plik tekstowy jest określany za pomocą predefiniowanego identyfikatora Text.

PRZYKŁAD

VAR

plik: Text;

c.

niezdefiniowanego

TYPE

identyfikator_typu = FILE;

Typy plikowe

W Pascalu wyróżniamy trzy typy plików:



zdefiniowane



tekstowe



niezdefiniowane

Definicja typu plikowego:

a.

zdefiniowanego

TYPE

identyfikator_typu = FILE OF opis_typu_elementów_pliku;

PRZYKŁADY

TYPE

TLiczby = FILE OF Integer;

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 32

__________________________________________

TYPE

TWiersz = ARRAY [1..80] OF Char;
TPlikWierszy = FILE OF TWiersz;

TYPE

TKsiazka = RECORD

nazwisko : String [20];
imię : String [12];
tytul : String [50];
nr_ksiazki: 1..1000;
wydawca : String[30];
wydanie : 1..100

END;

TKatalog = FILE OF TKsiazka;

b.

tekstowego

Plik tekstowy jest określany za pomocą predefiniowanego identyfikatora Text.

PRZYKŁAD

VAR

plik: Text;

c.

niezdefiniowanego

TYPE

identyfikator_typu = FILE;

Zmienne plikowe

Wszystkie zmienne typu plikowego, z wyjątkiem Output i Input muszą być zadeklarowane w
sekcji deklaracji programu, który z nich korzysta.

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 33

__________________________________________

PRZYKŁAD

VAR
l: TLiczby;
tekst: TPlikWierszy;
moje_ksiazki: TKatalog;
plik: Text;
dane: File;

Schemat przetwarzania plików

1.

opis zminnej plikowej (w części opisowej)

2.

skojarzenie pliku z fizycznym zbiorem danych

3.

otwarcie pliku

4.

wykonanie operacji na pliku

5.

zamknięcie pliku

Procedury obsługi plików

1. Kojarzenie zmiennej plikowej

Do skojarzenia zmiennej plikowej z fizycznym zbiorem danych służy procedura
standardowa Assign, której wywołanie ma postać:

Assign (identyfikator_pliku, wyrażenie łańcuchowe)

gdzie identyfikator_pliku - dowolna zmienna plikowa; wyrażenie łańcuchowe -
fizyczny zbiór danych.
Plik o podanym identyfikatorze nie może być otwarty.

PRZYKŁAD

Assign (moje_ksiazki, 'a:\pliki\kat.dan');
Assign (plik1, 'LPT1'); {skojarzenie pliku logicznego plik1 z drukarką }
Assign (plik2, ''); {skojarzenie pliku logicznego plik2 ze standardowym WE/WY, w
zależności od tego, czy plik będzie otwarty do odczytu czy do zapisu (równoważne z
Assign (plik2, 'CON'))}

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 34

__________________________________________

2. Otwieranie pliku

W zależności od kierunku przesyłania elementów do lub z pliku stosowane są trzy
standardowe procedury jego otwarcia.

Jeżeli tworzymy nowy fizyczny (zewnętrzny) zbiór danych, to należy zastosować
procedurę

Rewrite (zmienna_plikowa)

lub

Rewrite (zmienna_plikowa, rozmiar_zapisu)

- dla pliku niezdefinowanego.

Wywołanie procedury Rewrite powoduje utworzenie nowego fizycznego zbioru
danych o nazwie skojarzonej z podaną zmienną plikową. Jeżeli zewnętrzny zbiór
danych o takiej nazwie istnieje, to zostanie on usunięty i w jego miejsce będzie
utworzony nowy zbiór.

PRZYKŁAD

Assign (moje_ksiazki, 'a:\ksiazki.txt'); {skojarzeniu zbioru ksiazki.txt ze zmienną
plikową moje_ksiazki}
Rewrite (moje_ksiazki); {otwarcie pliku}


Do otwarcia pliku skojarzonego ze zbiorem już istniejącym służą procedury Reset i
Append.

Reset (zmienna_plikowa)

lub

Reset (zmienna_plikowa, rozmiar_zapisu)

- powoduje ustawienie wskaźnika pliku przed jego pierwszym elementem.

Append (zmienna_plikowa)

- stosujemy tylko dla plików tekstowych (Text), po otwarciu pliku ustawienie
wskaźnika pliku na jego końcu.

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 35

__________________________________________

PRZYKŁADY

Assign (plik, 'c:\zbiory\ksiazki.txt'); {gdzie plik: TKartoteka}
Reset (plik);

Assign (plik, 'c:\zbiory\teksty.txt'); {gdzie plik: TKartoteka}
Append (plik);

3. Zamykanie plików

Po wykonaniu wszystkich operacji na pliku, należy go zamknąć. Do zamykania pliku
służy procedura

Close (zmienna_plikowa)

Po zamknięciu pliku można zmienną plikową skojarzyć z innym fizycznym zbiorem
danych.

4. Wprowadzanie elementów do pliku

a.

pliki tekstowe

Write (zmienna_plikowa, lista_argumentów_wy)

lub

Writeln (zmienna_plikowa, lista_argumentów_wy)

gdzie zmienna_plikowa jest identyfikatorem pliku tekstowego, a
lista_argumentów_wy jak dla Output. Powyższe wywołania stosuje się
najczęściej przy wyprowadzaniu wyników programu na drukarkę lub do pliku
dyskowego, w celu późniejszego ich odczytu.

b.

pliki zdefiniowane

Write (zmienna_plikowa, lista_argumentów_wy)

gdzie zmienna_plikowa - plik logiczny skojarzony z zewnętrznym zbiorem
danych (otwarty) lista_zmiennych_wy - zmienne tego samego typu, jak typ
elementów pliku, oddzielone przecinkami.

c.

pliki niezdefiniowane

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 36

__________________________________________

BlockWrite (zmienna_plikowa, bufor, licznik);

lub

BlockWrite (zmienna_plikowa, bufor, licznik, wynik);

gdzie bufor - dowolna zmienna; licznik - wyrażenie typu Word, określające
ilość wyprowadzanych zapisów; wynik - zmienna typu Word, określająca ilość
faktycznie wyprowadzonych na dysk zapisów.
Podczas otwarcia pliku (Rewrite) należy podawać rozmiar zapisu (np. 1);
domyślna wartość 128.

5. Wyprowadzanie elementów z pliku

a.

pliki tekstowe

Read (zmienna_plikowa, lista_argumentów_we)

lub

Readln (zmienna_plikowa, lista_argumentów_we)

gdzie zmienna_plikowa jest identyfikatorem pliku tekstowego, a
lista_argumentów_we jak dla Input.

b.

pliki zdefiniowane

Read (zmienna_plikowa, lista_argumentów_we)

gdzie zmienna_plikowa - plik logiczny skojarzony z zewnętrznym zbiorem
danych (otwarty) lista_zmiennych_we - zmienne tego samego typu, jak typ
elementów pliku, oddzielone przecinkami.

c.

pliki niezdefiniowane

BlockRead (zmienna_plikowa, bufor, licznik);

lub

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 37

__________________________________________

BlockRead (zmienna_plikowa, bufor, licznik, wynik);

gdzie bufor - dowolna zmienna; licznik - wyrażenie typu Word, okreclające
ilość wprowadzanych zapisów; wynik - zmienna typu Word, określająca ilość
faktycznie wprowadzonych zapisów.
Podczas otwarcia pliku (Reset) należy podawać rozmiar zapisu (np. 1);
domyślna wartość 128.

Zadanie 20

1.

Napisz program zapisywania w pliku danych o Twoich znajomych (imię, nazwisko,
dzień imienin i urodzin).

2.

Rozbuduj poprzedni program o procedury odczytu z pliku i wydruku danych (na
ekran, na drukarce lub do pliku tekstowego).

3.

Rozbuduj poprzedni program o procedurę zapisu danych o Twoich znajomych w pliku
elementowym o podanej nazwie. W przypadku, gdy plik o podanej nazwie istnieje,
użytkownik powinien mieć wybór:

a.

podania nowej nazwy pliku,

b.

skasowania zawartości pliku i zapisu w nim nowych informacji,

c.

dopisania danych na końcu istniejącego pliku.

4.

Popraw procedurę zapisu danych z pliku elementowego do pliku tekstowego, tak aby
użytkownik mógł podać nazwę pliku tekstowego, w którym chce przechowywać
informacje.
W przypadku, gdy plik o podanej nazwie istnieje, użytkownik powinien mieć
możliwość podania nowej nazwy pliku lub dodania danych na końcu pliku już
istniejącego.

Deklaracja zmiennej zbiorowej:

VAR

identyfikator_zmiennej: identyfikator_typu_zbiorowego;

PRZYKŁAD

VAR
z1: SET OF Char;
z2: SET OF 'A'..'Z';

Zadanie 21

Napisz program odgadywania wpisanego słowa.

background image

Pascal – ćwiczenia podstawowe – CZĘŚĆ2 - strona 38

__________________________________________


Wyszukiwarka

Podobne podstrony:
MOTYWACJA - notatka, studia, semestr 1, ćwiczenia, Podstawy zarządzania
ĆWICZENIA Z PODSTAWOWYCH POJĘĆ ZWIĄZANYCH Z KULTURĄ JĘZYKA
badania marketingowe- testy i teoria, badania marketingowe ćwiczenia, Podstawowe obszary badań marke
Ćwiczenie nr 1 cz2
podstawy finansów ćwiczenia, PODSTAWY FINANSÓW
Wykłady i ćwiczenia, Podstawowe prawa rachunku zdań, średniowieczne, ciąg dalszy
Ćwiczenie 1 (WEiP-2009), WPROWADZENIE DO EKONOMETRII I PROGNOZOWANIA (2009).
Program cwiczen z podstaw konst Nieznany
CWICZENIA Z PODSTAW RECEPTURY KOSMETYCZNEJ
Wstep do prawoznawstwa-ćwiczenia, PODSTAWY PRAWOZNAWSTWA
01 cwiczenie podstawyid 2794 ppt
Ćwiczenia Podstawy Fiz Fazy Skondensowanej
gri2 lab cwiczenia z podstaw pr Nieznany
Cwiczenia 1 podstawy edycji id Nieznany

więcej podobnych podstron