Uzupełnienie teorii
oprac. Robert Tomaszewski
Przykład definicji i korzystania z typu o dużym stopniu
złożoności:
type
TDziecko = record
imie, nazwisko: String[20];
wiek: 1..18;
end;
TListaDzieci = array[1..10] of TDzieci;
TDorosly = record
imie, nazwisko: String[20];
wiek: 1..18;
dzieci: TListaDzieci; {tablica rekordów z danymi dzieci}
end;
var
dzieciak: TDziecko;
rodzic: array[1..20] of TDorosly; {tablicę dorosłych można zdefiniować jako
odrębny typ w sekcji TYPE}
begin
...
dzieciak[i].imie:='Adam'; {przypisanie i-temu dziecku imienia}
rodzic[j].dzieci[i].imie:='Adam'; {podobne do powyższego, ale to dziecko
występuje w strukturze dorosłego}
rodzic[j].dzieci[i].wiek:=2;
rodzic[k].nazwisko:='Kowalski';
...
end.
Funkcje i procedury przetwarzające teksty
Pos - funkcja szukająca wystąpienia jednego ciągu znaków w innym,
zwraca liczbę (indeks wystąpienia) lub zero jeśli brak wystąpienia
x:='wyraz1 wyraz2';
y:='wyr';
z:=Pos(' ',x); -> szukaj spacji, Pos zwróci 7
z:=Pos(y,x); -> zwróci 1, drugie wystąpienie ciągu 'wyr' nie jest
wykrywane !!!
z:=Pos('Wyr',x); -> zwróci 0, bo rozróżniana jest wielkość
liter !!!
Copy - funkcja wykopiowująca z ciągu znaków inny ciąg, zwraca
wykopiowany podciąg (String)
x:='wyraz1 wyraz2';
y:=Copy(x,1,3); -> zwróci 'wyr', bo kopiowanie zaczyna się od
znaku 1 i kopiujemy 3 znaki
l1:=length(x);
y:=Copy(x,1,l1); -> zwróci cały ciąg x ('wyraz1 wyraz2')
y:=Copy(x,5,200); -> zwróci ciąg 'z1 wyraz2', podanie liczby 200
nie jest błędem, po prostu będą zwrócone znaki do końca tekstu
zródłowego
Delete - procedura kasująca podciąg znaków w ciągu znaków
x:='wyraz1 wyraz2';
Delete(x,20,1); -> nic nie skasujemy bo 20 przekroczyło rozmiar
ciągu x
Delete(x,1,7); -> x będzie teraz zawierał ciąg 'wyraz2'
Insert - procedura wstawiająca podciąg do ciągu znaków
x:='wyraz2';
Insert('wyraz1 ',x,1); -> teraz x przechowuje 'wyraz1 wyraz2'
Insert('srodek ',x,8); -> a teraz 'wyraz1 srodek wyraz2'
>>>> Zadanie 1
Napisz funkcję/procedurę, która w podanym jako parametr wyrazie
zamienia wszystkie litery "a" na "A" oraz "A" na "a", a także
podaje liczbę dokonanych zamian. Ponadto, jeżeli liczba znaków
wyrazu jest nieparzysta to środkowa litera również musi być
zamieniona na dużą. Napisz prosty program korzystający z tego
podprogramu i wyświetlający rezultat jego działania.
Przykład działania: abcdCBA -> AbcDCba, liczba zamian: 3, liczba
znaków jest nieparzysta więc środkowe "d"->"D".
>>>> Zadanie 2
Napisz funkcję/procedurę, w tablicy wyrazów (array[...] of String)
szuka ciągów zaczynających się cyfrą, a następnie kopiuje do
drugiej tablicy wyrazów podciąg zaczynający się na pozycji podanej
cyfrą do końca ciągu oryginalnego. Jeżeli cyfra przekracza długość
ciągu to tablicy wynikowej kopiowany jest napis brak.
Przykłady:
"aaas323" -> nic nie kopiuj
"2se34" -> "se34"
"8sd" -> "brak"
"0sdf" -> "brak"
"w3s" -> nic nie kopiuj
"5asdc4tg" -> "c4tg"
Napisz prosty program korzystający z tego podprogramu i
wyświetlający rezultat jego działania. Wskazówka: do zamiany
pierwszego znaku z ciągu na liczbę (String -> Word) posłuż się
procedurą Val(a,b,c), gdzie 'a' to zamieniany ciąg znaków, 'b' -
zmienna typu całkowitego lub rzeczywistego przechowująca liczbę po
zamianie, 'c' - kod błędu, jeśli c<>0 to zamiana nie powiodła się.
Szczegóły dotyczące procedury Val sprawdz w pomocy Turbo Pascala.
>>>> Zadanie 3
Napisz program, który w tablicy rekordów przechowuje dane kilku
osób (użytkownik decyduje ile danych chce wpisać), a następnie
podmienia wpis dotyczący wieku każdej osoby powiększając go o 1.
Typ TOsoba jest rekordem zawierającym przykładowo informacje o
imieniu, nazwisku i wieku osoby. Jeżeli po zwiększeniu wiek osoby
>=50 to jej dane muszą być dodatkowo przepisane do drugiej tablicy
rekordów z danymi osób. Wyświetl zawartość drugiej tablicy (z
osobami o wieku >=50).
Wyszukiwarka
Podobne podstrony:
SPD1 z7z7 2neur 1neur Masm z7 dirbadanie zaleznosci z7count z7count z7SPD1 z7Z7GI MTR Z7(2010)z7z7więcej podobnych podstron