Praktyczny kurs Turbo Pascala Wydanie IV


IDZ DO
IDZ DO
PRZYKŁADOWY ROZDZIAŁ
PRZYKŁADOWY ROZDZIAŁ
Praktyczny kurs Turbo
SPIS TRE CI
SPIS TRE CI
Pascala. Wydanie IV
KATALOG KSIĄŻEK
KATALOG KSIĄŻEK
Autor: Tomasz M. Sadowski
KATALOG ONLINE
KATALOG ONLINE
ISBN: 83-7361-214-9
Format: B5, stron: 288
ZAMÓW DRUKOWANY KATALOG
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
TWÓJ KOSZYK
Turbo Pascal nie jest wprawdzie powszechnie używany przy pisaniu profesjonalnych
DODAJ DO KOSZYKA
DODAJ DO KOSZYKA
aplikacji, stanowi jednak wspaniałą propozycję dla początkujących programistów.
Dzięki Pascalowi możesz zacząć szybko pisać własne programy, ucząc się jednocze nie
poprawnego programowania strukturalnego i obiektowego.
CENNIK I INFORMACJE
CENNIK I INFORMACJE
 Praktyczny kurs Turbo Pascala to książka przeznaczona dla wszystkich tych,
którzy chcieliby wykorzystać praktyczne aspekty programowania w Turbo Pascalu.
ZAMÓW INFORMACJE
ZAMÓW INFORMACJE
O NOWO CIACH
O NOWO CIACH
Prezentowane w niej zagadnienia pozwolą Ci na stopniowe zapoznanie się z zasadami
programowania oraz elementami języka na drodze do wiadczeń i rozwiązywania
ZAMÓW CENNIK problemów napotykanych w trakcie tworzenia aplikacji. Książka napisana jest żywym
ZAMÓW CENNIK
i przystępnym językiem, a stopień  wtajemniczenia komputerowego potrzebny do
zrozumienia omówionych zagadnień jest minimalny.
CZYTELNIA
CZYTELNIA
Dzięki książce:
" Poznasz rodowisko TurboPascala
FRAGMENTY KSIĄŻEK ONLINE
FRAGMENTY KSIĄŻEK ONLINE
" Napiszesz swój pierwszy program w tym języku
" Poznasz instrukcje TurboPascala
" Nauczysz się definiować zmienne i typy
" Dowiesz się, jak uruchamiać programy i usuwać błędy
" Stworzysz własne funkcje i procedury
" Poznasz programowanie obiektowe
" Poznasz podstawy algorytmiki i optymalizacji programów
" Zapoznasz się z funkcjami biblioteki standardowej
To już czwarte, uzupełnione i rozszerzone wydanie bestsellera wydawnictwa Helion.
Dzięki poprzednim edycjom tej książki tysiące osób rozpoczęło swoją przygodę
z programowaniem. Teraz i Ty możesz do nich dołączyć.
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treści
Do Czytelnika ....................................................................................5
Rozdział 1. Zaczynamy ........................................................................................7
Rozdział 2. Pierwszy program ............................................................................17
Rozdział 3. Kalkulator .......................................................................................23
Rozdział 4. Jak programista z komputerem.........................................................29
Rozdział 5. Instrukcja warunkowa (i nie tylko) ...................................................37
Rozdział 6. Zapętlamy.......................................................................................43
Rozdział 7. Pojawia się więcej danych& ............................................................49
Rozdział 8. Czarna skrzynka, czyli procedury i funkcje ........................................59
Rozdział 9. Konwersacja z procedurami..............................................................67
Rozdział 10. Definiujemy nowe typy .....................................................................77
Rozdział 11. Stałe ...............................................................................................83
Rozdział 12. Porządki w danych...........................................................................89
Rozdział 13. Co zrobić, żeby nie stracić wyników pracy& .....................................97
Rozdział 14. Pliki tekstowe ...............................................................................105
Rozdział 15. Co to takiego string?.....................................................................111
Rozdział 16. Wskazniki......................................................................................119
Rozdział 17. Moduły standardowe......................................................................129
Rozdział 18. Coś dla relaksu  środki uruchomieniowe......................................137
Rozdział 19. Budujemy bazę danych...................................................................143
Rozdział 20. Rekord + wskaznik = lista..............................................................149
Rozdział 21. Grafika ..........................................................................................157
4 Praktyczny kurs Turbo Pascala
Rozdział 22. Grafika w zastosowaniach ...............................................................163
Rozdział 23. Własne moduły ..............................................................................167
Rozdział 24. Obiekty w pigułce (dozwolone od wersji 5.5) ..................................175
Rozdział 25. Dziedziczenie, polimorfizm i metody wirtualne....................................185
Rozdział 26. Nie tylko edytor: zaawansowane możliwości IDE.............................195
Rozdział 27. Błędy  rzecz ludzka.....................................................................201
Rozdział 28. Jak pisać dobre programy ..............................................................211
Dodatek A Pytania i odpowiedzi ......................................................................225
Dodatek B Instalacja i konfiguracja Turbo Pascala ..........................................231
Dodatek C Odpowiedzi do zadań......................................................................237
Dodatek D Zawartość płyty CD .......................................................................255
Dodatek E Kilka przydatnych pojęć komputerowych.........................................257
Dodatek F Słowniczek angielsko-polski ...........................................................267
Literatura ......................................................................................271
Skorowidz......................................................................................273
Rozdział 4.
Jak programista
z komputerem
Jak wprowadzić dane dla programu
Zmienne, ich deklarowanie i inicjalizowanie
Typy proste
Operatory logiczne
Przyjrzyjmy sią ponownie naszemu programikowi-kalkulatorowi. Jego zasadnicza wada
polega na tym, że aby uzyskać jakikolwiek wynik, należy za każdym razem wpisywać
liczby do nawiasów procedury i kompilować program. Istnieje oczywiście
sposób, by tego nie robić. Jak w każdym przyzwoitym jązyku programowania, w Pascalu
istnieje pojącie zmiennej, która jest identyfikowanym przez nazwą pojemnikiem na
wartość wykorzystywaną w trakcie działania programu. Pewną wadą zmiennych jest
konieczność ich deklarowania, tj. informowania kompilatora, że dana zmienna jest okre-
ślonego typu. W Pascalu deklaracja zmiennych ma postać:

Nazwy na oddziela sią przecinkami, zaś grupa deklaracji musi rozpoczynać sią
słowem kluczowym (ang. variables  zmienne). Nietrudno sią domyślić, że de-
klaracje zmiennych powinny poprzedzać ich użycie, a zatem należy je umieszczać po
nagłówku programu, a przed otwierającym słowem . Składnia jązyka zabrania
deklarowania zmiennych w treści programu, tak wiąc próba umieszczenia takiej dekla-
racji pomiądzy słowami i zakończy sią błądem kompilacji.
Załóżmy, że nasz kalkulatorek ma sią zajmować mnożeniem dwóch dowolnych liczb
rzeczywistych. Przyjmie on teraz postać:

MNOZ1.PAS



30 Praktyczny kurs Turbo Pascala





Po słowie pojawiła sią kolejna nowość: wywołanie standardowej procedury wejścia
. Procedura ta jest  odwrotnością poznanej poprzednio , służy zaś do
wprowadzenia wartości zmiennych i z klawiatury.
Po uruchomieniu programu możemy wpisać z klawiatury dwie kolejne liczby, naci-
skając po każdej klawisz Enter. Program obliczy i wyświetli ich iloczyn; zauważmy,
że wynik jest wyświetlany właśnie we wspomnianej przed chwilą postaci naukowej,
tj. liczbaEwykładnik. Jest ona bardziej pojemna, tj. łatwiej reprezentuje sią w niej bar-
dzo małe i bardzo duże liczby  ale mniej czytelna. Na szcząście już wkrótce pozna-
my metodą pozwalającą na wyprowadzanie liczb w bardziej zrozumiałej postaci.
Podobnie jak w przypadku , istnieje też odmiana procedury  ,
która przy kolejnych wywołaniach nie oczekuje znaku nowego wiersza. Jest ona sto-
sowana dość rzadko i wymaga pewnej wprawy, nie bądziemy sią wiąc na razie nią zaj-
mować. Ogólna postać wywołania procedury wygląda tak:

gdzie to dowolnej długości ciąg zmiennych rozdzielonych prze-
cinkami. Jak widać, umożliwia wprowadzenie za pomocą jednego wywołania
kilku wartości, które w takim przypadku należy podczas wpisywania rozdzielić co naj-
mniej jednym tzw. białym znakiem (ang. whitespace), tj. znakiem spacji, tabulacji lub
nowego wiersza. Lista argumentów procedury może też być pusta, tak wiąc
poprawna jest poniższa instrukcja:

Nie robi ona nic poza oczekiwaniem na wprowadzenie znaku nowego wiersza (czyli
naciśniącie klawisza Enter). Aby przekonać sią o jej użyteczności, dopisz ją na końcu
programu Mnozenie1.
Pora teraz zająć sią bliżej deklaracjami zmiennych. Każda zmienna w Pascalu posiada
swoją nazwę i typ. Nazwa zmiennej służy do identyfikowania jej w programie i zależy
tylko od programisty (podlega ona tym samym ograniczeniom, co każdy identyfikator
 może zawierać litery, cyfry i podkreślenia, ale nie może zaczynać sią od cyfry).
Jak już powiedziano, duże litery nie są odróżniane od małych, ale zróżnicowanie liter
pomaga przy czytaniu nazw ( czyta sią łatwiej niż ).
Użycie dużych liter i znaków podkreślenia poprawia czytelność identyfikatorów.
Typ zmiennej określa z kolei jej postać zewnątrzną, czyli zakres wartości i zestaw
operacji, które można na niej wykonać, a także reprezentację wewnętrzną, czyli sposób
jej przechowywania i traktowania przez inne obiekty programu. Swego rodzaju  ato-
mami wśród typów są tzw. typy proste, tj. takie, których struktura nie składa sią z in-
nych typów. Do najcząściej stosowanych typów prostych Turbo Pascala należą:
Rozdział 4. f& Jak programista z komputerem 31
liczba całkowita ze znakiem
liczba rzeczywista
pojedynczy znak kodu ASCII
wartość logiczna: prawda lub fałsz
Pierwsze dwa z wymienionej listy typów z grubsza odpowiadają znanym w matema-
tyce liczbom całkowitym i rzeczywistym (stanowią ich ograniczone podzbiory). Typ
służy do deklarowania zmiennych logicznych (boolowskich), przyjmujących
jedynie dwie wartości: (prawda) i (fałsz). Jest on szeroko stosowany w ste-
rowaniu wykonaniem programu (w instrukcjach warunkowych i pątlach). Warto za-
uważyć, że wszelkie operacje porównania (czyli wyrażenia logiczne), np.

dają w wyniku wartość boolowską (są prawdziwe lub fałszywe). Do obsługi bardziej
skomplikowanych wyrażeń logicznych służą w Turbo Pascalu nastąpujące operatory
logiczne (wymienione w kolejności malejącego priorytetu):
zaprzeczenie, negacja logiczna
(daje , gdy argument ma wartość )
iloczyn logiczny, koniunkcja
(daje , gdy wszystkie argumenty mają wartość )

suma logiczna, alternatywa
(daje , gdy co najmniej jeden argument ma wartość )

suma modulo 2, alternatywa wyłączająca (daje , gdy nieparzysta liczba
argumentów ma wartość )
Przykładami złożonych wyrażeń logicznych są np.:


Zwróćmy uwagą, że porównania są ująte w nawiasy. Wynika to stąd, że operatory
, , i mają wyższy priorytet od operatorów relacji, my zaś chcemy, by po-
równania zostały wykonane w pierwszej kolejności. Pominiącie nawiasów może wiąc
przysporzyć pewnych kłopotów (zobacz też zadanie 3. na końcu rozdziału).
Warto tu zauważyć, że operatory , , i mają dwoisty charakter: oprócz
działania logicznego, mogą one również operować na bitach liczb całkowitych (są
wówczas tzw. operatorami bitowymi). Operator bitowy interpretuje swoje argumenty
nie jako  prawdziwe liczby, lecz jako ciągi bitów (zer i jedynek), dokonując stosow-
nych operacji na odpowiadających sobie pozycjach (parach bitów). Jednoargumentowy
operator neguje bity swojego argumentu. Pozostałe operatory są dwuargumentowe:
operator ustawia dany bit na jeden tylko wówczas, gdy odpowiednie bity obu ar-
gumentów są równe jeden, zaś  gdy co najmniej jeden z bitów jest równy jeden.
Wreszcie operator ustawia bit na jeden, jeśli odpowiednie bity argumentów mają
przeciwne wartości (0 i 1 lub 1 i 0).
32 Praktyczny kurs Turbo Pascala
Aby zrozumieć działanie operatorów bitowych, przeanalizuj poniższy przykład. Argu-
mentami w przykładowych operacjach bitowych będą ośmiobitowe liczby bez znaku:
15 (00001111) i 85 (01010101).


(240) (5) (95) (90)
Omówione w tym rozdziale typy nie są oczywiście wszystkimi dostąpnymi (zobacz
Aneks), jednakże stanowią grupą o podstawowym znaczeniu.
Tak wiąc zawarta w programie Mnozenie1 deklaracja


poleca kompilatorowi zarezerwowanie miejsca na dwie zmienne typu rzeczywistego,
które w programie bądą widoczne pod nazwami i . Na tym jednak nie
koniec problemu: samo zadeklarowanie zmiennej nie nadaje jej żadnej wartości, a jedy-
nie przydziela miejsce w pamiąci (zwykle wypełnione dość przypadkową zawartością).
Pomijając bezużyteczność zmiennej nie przechowującej żadnej konkretnej wartości,
próba odwołania sią do niej zwykle nie wychodzi nikomu na dobre. Aby wiąc zmienna
nadawała sią do użytku, musi zostać:
zadeklarowana, co poinformuje kompilator, jak ma sią z nią obchodzić
(jaka jest jej reprezentacja wewnątrzna),
zainicjalizowana, czyli wypełniona sensowną zawartością.
Pominięcie inicjalizacji zmiennej nie jest wykrywane przez kompilator (program
jest formalnie poprawny), potrafi jednak spowodować złośliwe i trudne do wykrycia
błędy wykonania!
Zauważmy, że zmiana w powyższej deklaracji typu na nie bądzie błą-
dem, ale ograniczy swobodą działania kalkulatora do liczb całkowitych (czyli np. ze
wzglądu na ograniczenie zakresu nie bądzie już możliwe pomnożenie 123456 przez
654321). Liczby całkowite mają natomiast tą przewagą nad rzeczywistymi, że są re-
prezentowane z absolutną dokładnością. Ponadto, w ich zbiorze ma sens liczba kolej-
na po danej i poprzednia przed daną, a co za tym idzie, można stosować je w charak-
terze liczników i indeksów.
Aby zaś było wiadomo, czego właściwie życzy sobie program po uruchomieniu (za-
uważmy, że ostatnia wersja kalkulatorka wprawdzie już coś potrafi, ale nie jest zbyt
rozmowna), uzupełnijmy go o jeszcze dwie instrukcje:

MNOZ2.PAS



Rozdział 4. f& Jak programista z komputerem 33








Spróbuj wykonać ten program dla różnych wartości liczb (czy da sią pomnożyć np.
przez ?). Spróbuj również zmienić wykonywaną operacją na dzielenie i po-
dzielić coś przez zero& Jak uniknąć tego typu wpadek? Cierpliwości!
Podsumowanie
W Pascalu możemy posługiwać sią zmienną jako pojemnikiem na dane.
Każda zmienna musi być określonego typu.
Typy zmiennych określa sią w ich deklaracjach, po słowie kluczowym .
Deklaracja zmiennej nie powoduje nadania jej sensownej wartości
(nie jest połączona z inicjalizacją).
Do wprowadzania wartości zmiennych z zewnątrz do programu służą
procedury i .
Procedury te mogą (i powinny) być uzupełniane objaśniającymi procedurami
i .
Do przechowywania liczb w programie służą zmienne typu
(liczby całkowite) i (liczby rzeczywiste).
Wartości logiczne przechowuje sią w zmiennych typu .
Do operowania na wartościach logicznych służą operatory logiczne:
, , i .
Operatory te służą również do manipulacji na bitach liczb całkowitych.
Zadania
1. Napisz program obliczający długość przeciwprostokątnej w trójkącie
prostokątnym z twierdzenia Pitagorasa. Pierwiastek z liczby oblicza funkcja
(jak liczbą podnieść do kwadratu  pomyśl!).
2. Zmodyfikuj program Mnozenie1 tak, by wprowadzanie wartości czynników
odbywało sią za pomocą jednego wywołania procedury . Co sią stanie,
jeśli w miejsce zastosujesz procedurą ?
34 Praktyczny kurs Turbo Pascala
3. Jaki bądzie wynik (i dlaczego) obliczenia nastąpujących wyrażeń:
a) b) c) d)
e) f) g) h)
Aneks (dla amatorów typów)
Pozostałe typy całkowitoliczbowe&
& i rzeczywiste
Zastosowanie koprocesora arytmetycznego
Przedstawione przed chwilą cztery typy stanowią jedynie niewielką cząść wachlarza
dostąpnego w Turbo Pascalu. I tak w zakresie typów całkowitoliczbowych (pokrew-
nych ) mamy do wyboru nastąpujące typy proste:
Nazwa Zakres Rozmiar Liczba całkowita&
 32768..32767 2 bajty ze znakiem
 128..127 1 bajt krótka ze znakiem
 2147483648..2147483647 4 bajty długa ze znakiem
0..255 1 bajt krótka bez znaku (bajt)
0..65535 2 bajty bez znaku (słowo)
Każdy z nich może być stosowany do określonych celów, np. typ nadaje sią do
reprezentacji zawartości pamiąci (w bajtach), a  do prowadzenia statystyk
astronomicznych. Rozważny dobór typów pozwala na zaoszcządzenie pamiąci prze-
znaczonej na dane bez utraty jakości obliczeń (chociaż objawia sią to dopiero przy
stosowaniu wiąkszych struktur danych).
Wszystkie typy całkowitoliczbowe, typ (przyjmujący de facto wartości od 0 do
255, tyle że reprezentowane w postaci znakowej) i , a także nie omawia-
ne tutaj typy wyliczeniowe, stanowią grupę tzw. typów porządkowych (ang. ordinal
types). Nazwa ta bierze się stąd, iż w reprezentowanych przez nie zbiorach warto-
ści zachowana jest tzw. relacja porządku, określająca kolejność poszczególnych
elementów w zbiorze wartości.
Jeśli idzie o liczby typu rzeczywistego, to wszystkie typy proste poza są związane
z zastosowaniem tzw. koprocesora arytmetycznego (układu współpracującego z mi-
kroprocesorem, wyspecjalizowanego w wykonywaniu obliczeń na liczbach rzeczy-
wistych, a przez to znacznie je przyspieszającym). Typy te przestawiają sią nastą-
pująco:
Rozdział 4. f& Jak programista z komputerem 35
Nazwa Zakres Rozmiar Dokładność (cyfr)
6 bajtów 11  12
2,9 " 10 39  1,7 " 1038
4 bajty 7  8
1,5 " 10 45  4,0 " 1038
8 bajtów 15  16
5,0 " 10 324  1,7 " 10308

10 bajtów 19  20
3,4 " 10 4932  1,1 " 104932
8 bajtów 19  20
9,2 " 10 18  9,2 " 1018
Ostatni typ, mimo że jest tylko bardzo długą (64 bity) liczbą całkowitą, znalazł sią
w tym gronie, ponieważ jest typem specyficznym dla koprocesora arytmetycznego.
Wykorzystując odpowiedni typ do reprezentacji liczb rzeczywistych, można sobie
pozwolić np. na zwiąkszenie dokładności obliczeń poprzez zastosowanie typu
w miejsce (przy okazji wzrasta zużycie pamiąci) lub na upakowanie wiąkszej ilo-
ści danych w pamiąci poprzez zastosowanie krótszego typu (przy okazji spada
dokładność obliczeń).
W pierwszych modelach komputerów PC koprocesor był oddzielnym układem mon-
towanym na płycie głównej. Począwszy od procesora 80486, koprocesor arytme-
tyczny jest zintegrowany z procesorem w obrębie pojedynczego układu. W dominu-
jących obecnie na rynku komputerach opartych na procesorach z rodziny Pentium
oraz AMD K7 koprocesor jest zawsze dostępny. Użytkownicy leciwych już kompu-
terów z procesorami 80486SX i 80386 (układy 80286 można obecnie znalezć
głównie w muzeach) mogą wykorzystać tzw. emulację, polegającą na zastąpieniu
sprzętowej realizacji operacji arytmetycznych przez wywołania procedur oblicze-
niowych z odpowiedniej biblioteki. Złożoność takich operacji powoduje wydłużenie
czasu obliczeń; dołączenie biblioteki zwiększa również o kilkanaście kilobajtów ob-
jętość samego kodu wynikowego.
Aby umożliwić programowi korzystanie z koprocesora, należy poinformować kompilator
o jego obecności poprzez włączenie opcji Options-Compiler-Numeric Processing 8087/
80287 lub umieszczenie w programie tzw. dyrektywy kompilatora . W razie ko-
nieczności włączenia emulacji należy użyć polecenia Options-Compiler-Emulation On
(Turbo Pascal 5.0 i 5.5) lub Options-Compiler-Numeric Processing Emulation (Turbo
Pascal 6.0 i 7.0), ewentualnie dyrektywy 1.
Niestety, na tym nie koniec problemów. Włączenie koprocesora bez zmiany typu
na , lub niewiele daje. Dzieje sią tak dlatego, że przed wyko-
naniem obliczenia liczba typu musi zostać przekształcona na wewnątrzną repre-
zentacją  koprocesorową (dokładniej  na wartość typu ), co pochłania
cząść zaoszcządzonego czasu. Ponadto, konwersja wcale nie powoduje wzrostu do-
kładności obliczeń (a wrącz może spowodować jej spadek), gdyż uzupełnienie liczby
do odbywa sią przez dodanie przypadkowych cyfr na jej najmniej zna-
czących pozycjach.
1
Zwolennikom radykalnych rozwiązań warto polecić modernizacją sprzątu.
36 Praktyczny kurs Turbo Pascala
Aby skutecznie wykorzystać koprocesor arytmetyczny, należy zamiast typu
stosować w programach typy , lub . Jeśli możemy z dużą
pewnością założyć, że nasz kod będzie uruchamiany na nowszym komputerze,
najlepiej od razu deklarować zmienne rzeczywiste jako lub . Alterna-
tywne rozwiązanie  przedefiniowanie typu  pokażemy w rozdziale 10. Aby
nie komplikować programów przykładowych, w dalszej części książki pozostaniemy
przy typie , jednak teksty zródłowe zamieszczone na płycie CD będą zawierały
odpowiednie instrukcje, zastępujące go typami lub (zależnie od wy-
magań danego programu).
Warto na koniec zwrócić uwagą na naukowy format zapisu liczby typu lub
(tj. liczbą cyfr po kropce i w wykładniku). Porównanie go z zapisem liczby
typu daje namacalny dowód różnicy w dokładności reprezentacji (co np. przy od-
wracaniu macierzy jest sprawą niebagatelną!).


Wyszukiwarka

Podobne podstrony:
Kurs Turbo Pascala
Kurs Turbo Pascal 7 0
Turbo Pascal cwiczenia praktyczne Wydanie II
Turbo Pascal cwiczenia praktyczne
Internet cwiczenia praktyczne Wydanie IV cwint4
Praktyczny kurs Java Wydanie II pkjav2
RS 232C praktyczne programowanie Od Pascala i C do Delphi i Buildera Wydanie III
Kurs języka Turbo Pascal(1)
Krzan Katarzyna Praktyczny kurs pisarstwa
Suworin Aleksiej Praktyczny kurs leczenia głodem
Praktyczny kurs pisarstwa
Turbo Pascal tipps
autoreferat z Turbo Pascala
9 TurboPascal Obsługa plików w turbo pascalu
Turbo Pascal Zadania z programowania z przykladowymi rozwiazaniami tpzada

więcej podobnych podstron