![]() |
Turbo Pascal.
|
![]() |
Pierwszy program
Najwyższa pora na napisanie jakiegoś programu. By nie był on całkowicie niepraktyczny, spróbujmy za pomocą komputera obliczyć pole koła o promieniu 5 centymetrów. Jak wiadomo, pole koła wyraża się wzorem
gdzie r oznacza promień, zaś
jest znaną od dość dawna stałą wynoszącą około 3.14. Sam program powinien jedynie wypisywać obliczoną wartość na ekranie, czyli działać z grubsza tak:
początek
wypisz pi razy r do kwadratu
koniec
OK. Pomijając niejasne na razie kwestie mnożenia, podnoszenia liczby do kwadratu i wartości
, możesz włączyć komputer i uruchomić Turbo Pascala, pisząc
turbo
Po pojawieniu się na ekranie okienka edytora (jeśli takowe się nie pojawi, z menu File wybierz polecenie New, czyli Nowy), spróbuj przetłumaczyć nasz schemacik na język angielski i wprowadzić go do komputera. Powinno to wyglądać mniej więcej tak:
begin
write(Pi*5*5);
end.
Zauważ, że powyższy program jest prawie dosłownym tłumaczeniem tego, co napisaliśmy poprzednio. Ta właśnie "dosłowność" stanowi jedną z najpoważniejszych zalet Turbo Pascala: tworzenie prostych programów można w dużej części sprowadzić do tłumaczenia odpowiedniego algorytmu na język angielski (warto jeszcze znać podstawy angielskiego, ale naprawdę wystarczą podstawy).
Sam program chyba nie może być prostszy. Składa się on z jednej jedynej instrukcji wypisującej wartość wyrażenia "pi razy r do kwadratu", przy czym podnoszenie liczby do kwadratu zostało zastąpione wymnożeniem jej przez siebie. Samo mnożenie symbolizowane jest operatorem * (gwiazdka), zaś stała
to po prostu Pi. O wyrażeniach, operatorach i stałych powiemy nieco więcej już wkrótce, na razie zaś wyjaśnijmy rolę pozostałych składników programu.
Każdy program w Pascalu rozpoczyna się słowem kluczowym begin (początek) i kończy słowem kluczowym end. (koniec - z kropką). Słowa kluczowe stanowią podstawowy "alfabet" języka, służący do tworzenia bardziej złożonych struktur. Turbo Pascal automatycznie wyróżnia słowa kluczowe w treści programu przez wyświetlanie ich w innym kolorze, natomiast w książce będziemy zaznaczali je czcionką pogrubioną.
Pomiędzy słowami kluczowymi oznaczającymi początek i koniec programu znajduje się jego zasadnicza treść, czyli tak zwana część operacyjna. Składają się na nią instrukcje opisujące kolejne czynności wykonywane przez komputer. W naszym przypadku program zawiera tylko jedną instrukcję, a mianowicie wywołanie tzw. procedury bibliotecznej write (wypisz) wypisującej na ekranie uprzednio obliczoną wartość wyrażenia. Jak się wkrótce przekonasz, instrukcje mogą rówież zawierać zapis działań arytmetycznych, wywołania funkcji systemowych i wiele innych operacji. Każda instrukcja, z wyjątkiem instrukcji znajdującej się bezpośrednio przed słowem end, musi być zakończona średnikiem (;), który w Pascalu jest tzw. separatorem instrukcji.
Aby procedura write wiedziała, co właściwie ma wypisać, musisz przekazać jej odpowiednie informacje w postaci tzw. argumentów. W naszym przypadku argumentem procedury writeln jest wyrażenie Pi*5*5, które z kolei składa się z identyfikatorów, stałych i operatorów (o tym za chwilę). Jeśli procedura wymaga kilku argumentów, należy rozdzielić je przecinkami, zaś cała lista argumentów musi być zawsze ujęta w nawiasy okrągłe. Tak więc składnia (czyli symboliczny opis sposobu wykorzystania) naszej procedury write jest następująca:
write[(argument, argument...)]
W powyższym zapisie nawiasy kwadratowe oznaczają elementy nieobowiązkowe (możliwe jest użycie procedury write bez argumentów), zaś wielokropek sygnalizuje możliwość użycia dalszych argumentów w bliżej nieokreślonej liczbie. Poprawne będą więc następujące wywołania procedury write:
write(5); wypisze liczbę 5 write(1, 2, 3, 4); wypisze liczby 1, 2, 3 i 4 (jako "1234") write; nic nie wypisze Pozostało nam jeszcze wytłumaczyć pojęcia stałej, operatora i identyfikatora. Stała to po prostu... stała, czyli pewna stała wartość zapisana jawnie (na przykład liczba 5 czy nazwa 'Warszawa'). O tak zwanych stałych symbolicznych powiemy nieco później. Operatorem nazywamy symbol reprezentujący pewne działanie, np. dodawanie (+) czy porównanie (=). Operatory, będące słowami zastrzeżonymi, stanowią jeden z podstawowych elementów wyrażeń, o których powiemy więcej w następnym rozdziale. Wreszcie identyfikator jest po prostu nazwą obiektu (np. stałej
) lub operacji (na przykład wypisywania wartości - write). Może on zawierać litery (duże litery nie są odróżniane od małych, zatem Write i write to ten sam identyfikator), cyfry i znaki podkreślenia, lecz nie może zaczynać się od cyfry. Musisz również pamiętać, że tworzenie identyfikatorów brzmiących tak samo, jak słowa kluczowe i operatory (będące słowami zastrzeżonymi) jest niedozwolone, tak więc nie możesz utworzyć obiektu o nazwie End czy =.
Tyle teorii. Żeby przekonać się, że program naprawdę działa, spróbuj go skompilować (naciskając klawisz F9 - Make). O ile nic nie popsułeś przy przepisywaniu, wynikiem kompilacji powinno być przedstawione niżej okienko.
Rysunek 5. Okienko wyświetlane po prawidłowej kompilacji programu
Nazwa pliku, rozmiar wolnej pamięci i inne szczegóły mogą być u Ciebie nieco inne - najważniejszy jest komunikat Compile successful: Press any key wyświetlany u dołu okienka.
Jeśli udało Ci się popełnić jakiś błąd, kompilator zasygnalizuje to odpowiednim komunikatem, wskazując jednocześnie kursorem podejrzane miejsce w programie.
Rysunek 6. Kompilator sygnalizuje błąd kompilacji
Powyżej zilustrowano reakcję kompilatora na brak kropki po kończącyum program słowie end. Jak widać, kursor znalazł się w wierszu zawierającym błąd, zaś wyświetlony na ekranie komunikat oznacza, że treść programu nie została prawidłowo zakończona. Dodatkowe wyjaśnienia dotyczące błędu możesz uzyskać naciskając klawisz F1 (Help).
Jeśli w programie znajduje się kilka błędów, kompilator wykryje tylko pierwszy z nich (po jego poprawieniu - następny i tak dalej). W charakterze ćwiczenia możesz wprowadzić kilka błędów do programu (np. przestawić litery w słowie write) i przekonać się, jak reaguje na nie kompilator.
Musisz zdawać sobie sprawę, że bezbłędna kompilacja nie zawsze gwarantuje poprawne wykonanie programu. Błędy, o których powiedziano przed chwilą, nazywane są błędami kompilacji (ang. compile-time error) i wynikają głównie z pomyłek podczas wpisywania programu (np. błędnie wpisanych słów kluczowych). Drugą, znacznie mniej przyjemną kategorię tworzą błędy wykonania (ang. runtime error), wynikające z niewłaściwej konstrukcji programu lub użycia nieprawidłowych danych. Błędy te nie są wykrywane przez kompilator i ujawniają się dopiero w trakcie pracy programu, prowadząc najczęściej do jej przerwania. Typowym przykładem jest próba dzielenia liczby przez zero lub odczytania danych z nieistniejącego pliku (kompilator nie może wiedzieć, czy plik o danej nazwie będzie istniał w chwili wykonania programu). Na szczęście programy, którymi będziemy się zajmować w najbliższym czasie, są na tyle proste, że trudno w nich o błędy wykonania. Tyle na temat błędów, których oczywiście życzę Ci jak najmniej. Jeśli już skompilowałeś program, możesz go wykonać, naciskając klawisze Ctrl-F9.
Już? I jaki jest wynik? Hm... a właściwie gdzie on jest?
Nie ma się czego obawiać. Obliczone w programie pole koła zostało wypisane na ekranie, lecz jest przesłonięte przez okienko edytora. Aby się o tym przekonać, naciśnij klawisze Alt-F5: powinieneś zobaczyć znajdujący się "pod spodem" ekran DOS-owy, zawierający (oprócz innych rzeczy) liczbę
7.8539816340E+01
czyli z grubsza 78.5 (centymetrów kwadratowych). Aby wrócić do okienka edytora, wystarczy nacisnąć Enter.
Uff. Na pierwszy raz to chyba wystarczy. Aby nie utracić swojego pierwszego programu, musisz go jeszce zapamiętać, czyli zapisać na dysku. W tym celu wybierz polecenie Save (Zapamiętaj) z menu File lub po prostu naciśnij klawisz F2. Jeśli wcześniej nie nadałeś programowi nazwy (nazwa wyświetlana jest na górnej krawędzi ramki okienka edytora; jeśli znajduje się tam napis NONAME00.PAS, program nie został jeszcze nazwany), na ekranie pojawi się pole dialogowe Save File As.
Aby zapisać program pod przykładową nazwą PROGRAM1.PAS, wystarczy wpisać ją w pole Save file as i nacisnąć Enter. Ponieważ rozszerzenie .PAS jest dla programów pascalowych przyjmowane domyślnie, nie musisz go podawać.
Zauważ, że po wykonaniu tej operacji nazwa programu wyświetlana w ramce okienka edytora zmieniła się z noname00.pas na program1.pas. Jeśli teraz ponownie naciśniesz F2, program zostanie zachowany pod tą samą nazwą bez wyświetlania pola dialogowego.
Rysunek 7. Pole dialogowe Save File As
Tworzenie nowego programu poleceniem File-New i późniejsza zmiana nazwy poleceniem File-Save/Save as nie są zbyt wygodne. Oto dwie metody utworzenia programu nie wymagające późniejszej zmiany nazwy.
Zamiast polecenia New możesz wykorzystać polecenie Open (Otwórz) z menu File. Pozwala ono na odczytanie z dysku zapisanego wcześniej tekstu programu, wyświetlając pole dialogowe Open a File pokazane poniżej.
Rysunek 8. Pole dialogowe Open a File
Nazwę żądanego programu możesz wpisać w pole Name lub wybrać z listy Files, zawierającej zawartość katalogu roboczego; następnie należy nacisnąć Enter. Jeśli plik o podanej nazwie nie istnieje, Turbo Pascal utworzy nowe, odpowiednio zatytułowane okienko edytora, którego zawartość będzie można w dowolnym momencie zapisać bez konieczności podawania nazwy.
Druga metoda polega na odpowiednim wywołaniu Turbo Pascala z poziomu DOS-u. Aby otworzyć istniejący plik z programem lub utworzyć nowy plik, wystarczy napisać
turbo nazwa
Po uruchomieniu system automatycznie odczyta plik o zadanej nazwie (i rozszerzeniu .PAS; podobnie jak poprzednio, rozszerzenia nie trzeba podawać) lub, jeśli taki plik nie istnieje, otworzy puste okienko edytora o odpowiednim tytule.
W ten sposób poznałeś absolutne podstawy posługiwania się środowiskiem Turbo Pascala i uruchomiłeś swój pierwszy program. A oto kilka ćwiczeń, które pomogą Ci nabrać wprawy i zdobyć dodatkowe wiadomości:
- wykorzystaj system pomocy do wyświetlenia informacji o poszczególnych elementach programu (słowach kluczowych, identyfikatorach, operatorach);
- spróbuj wprowadzić do programu kilka błędów. Jaka jest reakcja kompilatora?
- popraw program tak, by dało się za jego pomocą obliczyć pole koła o promieniu 2 cm, 10 cm itd. Spróbuj napisać program obliczający pole trójkąta o znanej długości podstawy i wysokości;
- zastanów się, co należałoby zmienić w przedstawionym programie, by uczynić go lepszym (bardziej czytelnym, uniwersalnym, praktycznym, łatwiejszym w obsłudze).
Zapamiętaj
- Program pascalowy składa się z ciągu rozdzielonych średnikami instrukcji położonych pomiędzy słowami kluczowymi begin i end.
- Instrukcje stanowią symboliczny zapis operacji, które ma wykonać komputer.
- Instrukcje mogą zawierać wyrażenia oraz wywołania funkcji i procedur.
- Wyrażenia składają się ze stałych, operatorów i identyfikatorów.
- Identyfikatory są nazwami obiektów składających się na program. Mogą one zawierać litery, cyfry i znaki podkreślenia, nie mogą jednak zaczynać się od cyfr.
- Aby skompilować program, musisz użyć polecenia Make (F9). Ewentualne błędy kompilacji są odpowiednio sygnalizowane.
- Chcąc uruchomić program, musisz wydać polecenie Run (Ctrl-F9). Do obejrzenia wyników działania programu może okazać się niezbędne polecenie User Screen (Alt-F5).
- Aby zapisać program, użyj polecenia Save (F2). Do odczytania zapisanego programu z dysku służy polecenie Open (F3).
Poprzedni | Spis treści | Następny | Wersja spakowana |