Zespół Szkół Zawodowych i Ogólnokształcących
w Sułkowicach
Policealne Studium Zawodowe
Technik-informatyk
Praca Dyplomowa
Budowa i opis menu edytora Turbo Pascal 7.0
Prowadzący: Wykonali:
mgr inż. Marek Pudełko Agnieszka Polak
Maria Polak
Sułkowice 2006
Spis treści
1 Cel i zakres pracy.
Cel i zakres pracy.
Celem poniższej pracy jest przybliżenie podstawowych zagadnień związanych ze środowiskiem programistycznym Turbo Pascal Jak również szczegółowe omówienie poszczególnych opcji menu edytora Turbo Pascal 7.0, najpopularniejszej obecnie implementacji tego środowiska.
Omówimy podstawy pracy ze środowiskiem Turbo Pascal , najpowszechniejsze zastosowania oraz posługiwanie się edytorem. główny nacisk w pracy jest położony na przetłumaczenie oraz wyjaśnienie poszczególnych opcji menu edytora.
Niniejsza praca ma także ułatwić stosowanie pakietu Turbo Pascal 7.0 do celów dydaktycznych.
Środowiska programistyczne Turbo Pascal i Borland C++ mimo swojego wieku nadal są powszechnie wykorzystywane podczas nauki podstaw programowania. Oczywiście do nauki można również wykorzystać dostępne obecnie doskonałe środowiska wizualne, lecz podstawy języka łatwiej jest opanować, posługując się prostszym narzędziem. Turbo Pascal i Borland C++ są proste w obsłudze, doskonale udokumentowane i wspaniale nadają się do pierwszego kontaktu z programowaniem. Jest to naprawdę ciekawy i warto poświęcić mu chwilkę czasu.
Historia języka Pascal i narzędzi Pascala.
Pascal - dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego poziomu, ogólnego zastosowania, oparty na języku Algol. Został opracowany przez Niklausa Wirtha w 1971 roku. Pascal jest zdecydowanie najlepszym językiem programowania na początek.
Pierwszy opis języka Wirth zawarł w The programming language Pascal, Acta Informatica 1/1971, a kolejny, poprawiony w The programming language Pascal (Revised Report), Bericht der Fachrgruppe Computer - Wissenschaften 5/1972. Pierwszym podręcznikiem języka Pascal była pozycja Jensen, Wirth, Pascal, User Manual and Report 1974.
Pierwotnie służył celom edukacyjnym do nauki programowania strukturalnego. Popularność Pascala w Polsce była większa niż w innych krajach ze względu na dostępność kompilatorów w pirackich wersjach (zanim pojawiło się prawo ochrony własności intelektualnej), prostotę języka oraz jego popularyzację przez wyższe uczelnie. Szczyt popularności tego języka przypadł na lata 80-te i początek 90 XX wieku. Wraz ze zniesieniem ograniczeń COCOM, upowszechnieniem się sieci oraz systemu Unix (następnie Linuksa) stopniowo został wyparty przez C i C++.
Istnieją wolne kompilatory Pascala, na przykład Free Pascal, a także wolne środowisko IDE jak Lazarus.
Istnieje kilka kompilatorów Pascala, które nieco różnią się także sposobem obsługi języka:
Turbo Pascal - kompilator dla systemów MS-DOS stworzony przez firmę Borland. Ostatnia wersja 7.0 została wydana w 1992 roku. Powszechnie używany w szkołach. Turbo Pascal to jedna z popularniejszych implementacji kompilatorów języka Pascal, zintegrowane środowisko programistyczne, produkt firmy Borland International dla procesorów Z-80 (system CP/M) oraz rodziny Intel 80x86 i nowszych.
Borland Pascal - rozszerzenie Turbo Pascala o nowości związane z wdrożeniem pierwszych systemów Windows.
Free Pascal Compiler - darmowy, 32-bitowy kompilator Pascala wzorowany na Turbo Pascalu (posiada identyczny interfejs). Potrafi tłumaczyć zarówno programy dla TP, jak i te nowocześniejsze dla systemów Windows, dlatego można go używać zamiennie z TP.
Delphi - kolejne dzieło firmy Borland, tym razem w całości nastawione na tworzenie okienkowych aplikacji dla Windows. Zerwało z przeszłością DOS'ową.
Kylix - wersja Delphi dla systemów Linux.
Zarówno Free Pascal Compiler, jak i Turbo/Borland Pascal posiadają interfejs tekstowy, tj. otwierają się w okienku MS-DOS (nawet pomimo tego, że pierwszy z nich jest aplikacją 32 bitową).
Historia Turbo Pascala:
wersja 1.0 środowiska Turbo Pascal została wprowadzona na rynek w 1983 roku.
wersja 4.0 ukazała się w XI 1987 r. i wprowadziła pojęcie modułu i kompilacji warunkowej.
w roku 1988 pojawiła się wersja 5.0 (wśród nowości znalazły się typy proceduralne i funkcyjne - jako zapowiedź skierowania produktu w stronę obiektowości oraz możliwość debugowania kodu źródłowego).
wersja 5.5 wprowadziła nowy, rewolucyjny w odniesieniu do języka Pascal typ danych: typ obiektowy.
ostatnia wersja oznaczona została numerem 7.0, a jej następcą stał się w 1995 r. Borland Delphi 1.0 wraz z językiem Object Pascal.
Do najważniejszych zalet systemu Turbo Pascal należą: mały rozmiar kompilatora, bardzo szybka kompilacja programów, złączenie kompilatora języka z interakcyjnym edytorem ekranowym, sygnalizowanie błędów na poziomie programu źródłowego, obszerna biblioteka podprogramów oraz rozszerzenia w stosunku do języka standardowego ułatwiające programowanie systemowe.
Nazwa Turbo Pascal dotyczy interakcyjnego systemu programowania, składającego się z kompilatora języka Turbo Pascal oraz złączonego z nim edytora ekranowego. Edytor systemu Turbo Pascal jest wzorowany na znanym kiedy edytorze WordStar, a interakcyjnoć systemu przejawia się w głównej mierze wygodą edycji oraz sygnalizowaniem błędów wykrytych w programach bezpośrednio w obrębie tekstu źródłowego.
Naturalnie i wymagające minimalnej liczby manipulacji przechodzenie między edycją, kompilacją i wykonaniem programu zapewnia, że uruchamianie programów w systemie Turbo Pascal odbywa się prawie wyłącznie na poziomie źródłowym. Znaczna szybkość kompilowania programów powoduje natomiast, że przejście od programu źródłowego do programu wykonywalnego jest niemal natychmiastowe. Wydatnie skraca to cykl modyfikowania programu i przyspiesza uzyskanie jego wersji końcowej.
Kompilator Free Pascal jest rozpowszechniany zgodnie z licencją GPL. Biblioteki wykonawcze oraz dodatkowe pakiety rozpowszechniane razem z kompilatorem objęte są jednak zmodyfikowaną licencją LGPL. Modyfikacja owa polega na tym, że autorzy jasno wyrazili zgodę na dołączanie (linkowanie) tych bibliotek do własnych programów bez względu na licencję tworzonego programu i sposób łączenia (statyczne lub dynamiczne).
Początkowo projekt nosił nazwę FPK Pascal. FPK stanowiło skrót od niemieckojęzycznej nazwy Free Pascal Kompiler, a także oznaczało inicjały twórcy projektu (Florian P. Klaempfl). Podczas wydania wersji 1.0 skrót jak i nazwę zmieniono na odpowiednio FPC i Free Pascal Compiler.
Obecna wersja stabilna to 2.0, mocno przebudowana w stosunku do poprzedniej serii 1.0.x.
Wizualną częścią bibliotek dla FPC, zgodną z VCL znanego z Delphi, a także stworzeniem narzędzia typu RAD, zajmuje się osobny projekt - Lazarus.
FPC posiada własne IDE stworzone w trybie tekstowym, jednak nie jest już ono wspierane, mimo że zawiera wiele błędów.
FPC rozpoznaje i kompiluje kod Pascala zapisany w poniższych dialektach tego języka:
FPC - domyślny tryb pracy kompilatora; dialekt charakteryzujący się m.in. możliwością przeciążania funkcji i operatorów oraz zagnieżdżania komentarzy
obiektowy FPC - dialekt podobny do FPC, z tym, że dopuszcza użycie rozszerzeń Object Pascala
Delphi - tryb zgodności z Delphi w wersji 4
GPC - zgodność z kompilatorem GPC z pakietu GCC
Mac (wciąż w fazie tworzenia) - zgodność z dialektem Pascala firmy Apple
TP - zgodność z dialektem użytym w kompilatorze Turbo Pascal 7
Free Pascal powstał w czasie, kiedy stało się jasne, że firma Borland nie wyda kolejnej - ósmej wersji dosowego kompilatora Turbo Pascal. Zamiast niego powstał kompilator Delphi dostępny tylko dla użytkowników Windows. Student Florian Klaempfl zaczął pisać swój własny 16-bitowy kompilator dla DOSa. Po dwóch latach przepisał go na architekturę 32-bitową przy użyciu rozszerzenia go32v1.
Kompilator został opublikowany w internecie, co spowodowało przyłączenie się do projektu innych programistów. Na pięć lat przed powstaniem Kyliksa Michael van Canneyt stworzył port FPC dla Linuksa. W międzyczasie powstał port dla OS/2, a pierwotna wersja dla DOSa została znacznie ulepszona. Programiści zdecydowali się wydać wersję 0.99.5, która doczekała się także portu dla procesorów 680x0.
W kolejnej wersji 0.99.8 został dodany port dla platformy Win32 i rozpoczęły się prace nad dodaniem kompatybilności z Delphi. 12 lipca 2000 ukazała się pierwsza stabilna wersja 1.0. Kolejne wydania z serii 1.0.x zawierały głównie poprawki błędów oraz wciąż rozwijany port dla procesorów 680x0. Kłopoty w implementacji tego portu skłoniły zespół programistów FPC do rozpoczęcia prac nad nową serią 1.1.x (przekształconą później w 1.9.x). Miała ona zawierać przepisany od nowa generator kodu ułatwiający eksportowanie kompilatora do zupełnie nowych architektur.
Na początku 2003 roku powstał port dla PowerPC, a niedługo potem dla AMD64. Rozpoczęto też prace nad portami ARM i Sparc. Wersja FPC dla AMD64 uczyniła go kompilatorem zarówno 32- jak i 64-bitowym.
15 maja 2005 miała miejsce długo wyczekiwana premiera wersji 2.0. Przyniosła ona zmianę struktury kompilatora na bardziej modularną, by ułatwić jego przenoszenie na nowe platformy. Poprawiono obsługę wątków i optymalizację kodu. Kompilator przeniesiono na systemy MacOS 9 i X, MorphOS oraz Novell Netware.
Obecne wydanie stabilne 2.0.2 jest dostępne dla procesorów:
I386 i zgodnych
PowerPC
ARM
SPARC
AMD64
i systemów operacyjnych:
DOS
FreeBSD
Linux
Mac OS X i Darwin
Mac OS
MorphOS
Novell Netware
OS/2
Win32
MorphOS.
Podstawowe informacje na temat składni języka Pascal.
Dla niektórych programistów niektóre cechy Pascala wykluczają jego zastosowanie w poważnych projektach i są powodem krytyki tego języka. Według nich powinien zostać jedynie narzędziem do nauki programowania. Natomiast nie potwierdzają tego tysiące aplikacji (również komercyjnych) stworzonych w Pascalu w latach 80-tych i 90-tych. Wraz z upowszechnieniem się języka C i C++ coraz większa ilość programistów zrezygnowała z Pascala.
Zalety Pascala - czytelność kodu, rygorystyczna kontrola typów danych, wraz z pojawieniem się C stały się dla programistów wadami.
Pascal bardzo rygorystycznie podchodzi do kontroli typów, tj. sprawdza czy do zmiennej typu A nie próbuje się przypisać wartości typu B. Jest to dobra cecha języka dydaktycznego, ale w przypadku doświadczonego programisty może być uciążliwa. Np. sztuczki, typu rzutowanie zmiennej typu całkowitego na typ Bool jest częstą praktyką - w Pascalu kompilator się na to nie zgodzi.
Popularność Pascala wzrosła z pojawiem się Delphi - środowiska programistycznego, opartego na obiektowym Pascalu (Object Pascal), pozwalającego na błyskawiczne tworzenie atrakcyjnych wizualnie aplikacji pod Windows. Wraz z pajawiem się biblioteki windows dla C++, oraz narzędzi do automatycznego tworzenia GUI, Pascal znów stracił na znaczeniu.
Na składnię języka Pascal składają się:
Symbole podstawowe,
Jednostki leksykalne.
Każdy program źródłowy składa się z ciągu jednostek leksykalnych oddzielonych (tam gdzie to jest konieczne) odstępami (spacje, tabulacje, znaki zmiany wiersza i komentarze). Jednostki leksykalne zbudowane są z symboli podstawowych do których zalicza się:
Litery alfabetu łacińskiego:
A B C D E F G H I J K L M N O P Q R S T U V W Y Z
a b c d e f g h i j k l m n o p q r s t u v w y z
Cyfry: 1 2 3 4 5 6 7 8 9 0
Znaki specjalne: + - * / = ^ < > ( ) [ ] { } . , : ; ' # $ @ _
Symbole złożone: <> <= := >= .. (* *)
Znaki ASCII o kodach od 128 do 255 np. polskie litery, znaki semigraficzne, itp...
Tak jak w języku naturalnym wyróżnia się rzeczowniki, czasowniki itp. tak w języku Pascal wyróżnia się następujące jednostki leksykalne:
Słowo kluczowe,
Identyfikator,
Literały,
Separator.
Do jednostek leksykalnych nie zaliczają się umieszczane w tekście programu odstępy i komentarze
Słowa kluczowe są to spójne ciągi liter tworzące zarezerwowane słowa angielskie o ustalonym znaczeniu. Poniżej ich pełna lista. Słowa wyróżnione kurysywą są nowymi słowami wprowadzonymi do języka Pascal przez firmę Borland: and, array, asm, begin, case, const, constructor, destructor, div, do, downto, else, end, file, for, function, goto, if, implementation, in, inherited, inline, interface, label, mod, nil, not, object, of, or, packed, procedure, program, record, repeat, set, shl, shr, string, then, to, type, unit, until, uses, var, while, with, xor.
Słowa te będą w tekstach programów w edytorze wyróżnione. Słowa kluczowe mają ściśle określone znaczenie i są stosowane do budowania różnych elementów programu takich jak: istrukcje, deklaracje, nagłówki itp. Niektóre słowa kluczowe np. program są używane tylko w jednym kontekście, inne jak np. end czy var w wielu różnych kontekstach. Litery duże i małe w słowach kluczowych są nie rozróżniane czyli end, END i End są tym samym słowem kluczowym. Słów kluczowych oraz ich znaczenia trzeba się po prostu nauczyć na pamieć. Nie wolno ich używać do innych celów niż te do jakich zostały przeznaczone. W szczególności nie mogą pełnić roli identyfikatorów.
Identyfikator lub inaczej nazwa jest słowem wymyślonym przez programistę. Nazwy nadaje się obiektom takim jak stałe, zmienne, funkcje, procedury i typy. Identyfikator może składać się tylko i wyłącznie z
Liter alfabetu łacińskiego (bez polskich liter),
Cyfr dziesietnych,
Znaku podkreślenia _.
Nazwa nie może zaczynać się od cyfry zatem (np. 3D jest złym identyfikatorem ale już _3D dobrym). Litery duże i małe w nazwach są nie rozróżniane czyli rmax i Rmax są tą samą nazwą. Jak widać nazwa nie może zawierać spacji. Jeśli w nazwie chcemy użyć kilku słów np. "mój pierwszy program" to naczęściej praktykowane są dwa rozwiązania. Pierwsze możemy w miejsce spacji użyć znaku _ czyli tak moj_pierwszy_program. Drugie to usuwamy spację a dla poprawienia czytelności stosujemy duże litery czyli tak MojPierwszyProgram. Niezależnie od tego polskie znaki diakrytyczne w nazwach trzeba zastapić ich łacińskimi odpowiednikami bez "ogonków". Czyli ó na o, ą na a, ę na e ... itp. Należy pamiętać, że każdy identyfikator, przed użyciem w jakiejkolwiek roli, musi być uprzednio zadeklarowany.
Odstępami są spacje, znaki nowego wiersza (wprowadzane klawiszem ENTER) oraz znaki tabulacji (wrowadzane klawiszem TAB). Kilka odstępów jest traktowanych jak jeden. Zatem tam gdzie można wprowadzić jedną spację równie dobrze może się ich znaleźć klika. Wykorzystuje się ten fakt do poprawienia czytelności programu poprzez robienie wcięć, wprowadzanie pustych wierszy itp. Odstęp pełni rolę najprostszego separatora. Nie wolno nimi jednak przerywać spójności słów kluczowych, identyfikatorów, literałów liczbowych i symboli wieloznakowych. Należy nimi oddzielać między sobą słowa kluczowe i identyfikatory. Oto przykłady błędnego i prawidłowego użycia odstępów.
Źle |
Dobrze |
B e g i n |
Begin |
: = |
:= |
down to |
downto |
32 345 681 |
32345681 |
XandY |
X and Y |
notP |
not P |
A andnot P |
A and not P |
Odstępy zawsze możesz wstawiać między dowolnymi jednostkami leksykalnymi. Należy pamiętać, że odstępy umieszczone wewnątrz literału łańcuchowego liczą się jak zwykłe znaki.
Podstawowym separatorem w języku Pascal jest średnik ";". Umieszcza się go na końcu wszystkich istrukcji oraz deklaracji. Średnik odziela "grube" elementy programu. Innym separatorem jest przecinek ",", który jest używany do oddzielania elementów list.
Tekst zawarty między nawiasami klamrowymi { i } lub między (* oraz *) jest komentarzem i służy programiście do zamieszczania uwag w tekście programu. Jego głównym zadaniem jest zwiększenie czytelności programu. Kompilator pomija komentarze, stąd fragmenty programu objęte parami { } lub (* *) są przez to wyłączone z programu. Można zatem wykorzystać komentarz do chwilowego blokowania fragmentów kodu np. na etapie testowania programu. Komentarz traktowany jest jak odstęp. Można go umieszczać wszędzie tam, gdzie można wstawić odstęp. Komentarzy tego samego typu nie wolno zagnieżdżać. Wolno to natomiast robić z komentarzami różnych typów. Tak więc komentarze w stylu {...{...}...} lub (*...(*...*)...*) są błędne. Poprawnie powinno to wglądać tak: { ... (* ... *) ...} lub (*...{...}...*). Dobrą praktyką programisty jest szerokie stosowanie komentarzy. Początkujący programiści nie robią tego z "braku czasu", albo sądzą, że tak dobrze znają swój program, iż takie postępowanie nie jest konieczne. Jest to złe podejście. Zwykle program, który znało się doskonale na pamięć, po kilku tygodniach przerwy jest równie tajemniczy jak dla kogoś, kto widzi go pierwszy raz. Komentarze należy stosować sensownie. Nie powinno komentować się oczywistych rzeczy jak np. w tym fragmencie:
i := i + 1; {zwiększamy licznik o 1}
Warto tu skorzystać z cechy Pascala jaką jest "samokomentowanie" się programu. Wystarczy sensownie dobrać nazwy zmiennych czy procedur, aby poprawić czytelność programu i zredukować do właściwego poziomu liczbę komentarzy. W Turbo Pascalu komentarze służą dodatkowo do sterowania przebiegiem kompilacji. Komentarz zaczynający się od znaku dolara $ (np. {$I+} ) nie jest już ignorowany przez kompilator i nazywa się dyrektywą kompilatora. Służy on np. do włączania/wyłączania opcji sterujących przebiegiem kompilacji.
Literały są napisami reprezentującymi konkretne wartości. Wyróżniamy następujące literały:
liczbowe
całkowite,
rzeczywiste,
łańcuchowe.
Literał łańcuchowy reprezentuje konkretny tekst (napis). Literał taki składa się z dwóch apostrofów ' ' między, którymi umieszcza się ciąg znaków reprezentujących dany tekst. Tutaj każdy znak brany jest dosłownie. Oznacza to, że między apostrofami można bez obawy o błąd umieszczać co się nam podoba. Tu tracą swoje magiczne znaczenia słowa kluczowe, identyfikatory, komentarze itp., które traktowane są wtedy jak zwykłe ciągi znaków. Pewnym wyjątkiem jest znak końca linii (wprowadzany klawiszem ENTER), który nie może być elementem literału. Innymi słowy cały napis musi mieścić się w jednym wierszu. Osobnym zagadnieniem jest znak apostrofu '. Jeśli chcemy go umieścić w napisie jako jeden ze znaków to trzeba powtórzyć go dwukrotnie. Oto przykłady:
' Witaj...'
''
''''
'Niech żyje Rock''n''Roll'
Pierwszy przykład jest łańcuchem składającym się z trzech spacji, słowa Witaj (pisanego tak jak widać) oraz trzech kropek. Drugi reprezentuje literał pusty. Trzeci reprezentuje pojedynczy apostrof. Czwarty przykład reprezentuje napis Niech żyje Rock'n'Roll. Gdybyśmy nie użyli podwójnego apostrofu to kompilator potraktował by tylko część 'Niech żyje Rock' jako literał a reszta była by już błędem. Uwaga: tutaj duże i małe litery są rozróżnialne. Jest jeszcze inny sposób zapisu tych literałów. Otóż każdy znak posiada swój kod. Tak np. kodem litery "A" jest liczba 65 a kodem litery "a" jest liczba 97. Podobnie kodem cyfry "0" jest liczba 48. Ta jakie kody przypisano znakom zależy od standardu. W komputerach klasy PC stosuje się standard ASCII (American Standard Code for Information Interchange). Znając kody znaków można teraz, przy ich pomocy, stworzyć łańcuch znakowy. Przyjmie on wówczas postać ciągu liczb całkowitych (kodów) poprzedzonych znakiem "#". Zatem
'Pascal' jest równoważne #80#97#115#99#97#108
Korzystając z tego zapisu można wstawiać do literałów znaki, których nie da się wprowadzić z klawiatury. Na przykład znak generowany przez klawisz Esc ma kod 27, Enter - 13, Tab - 9, Back Space - 8. Kody ASCII znajdzie się niemal w dowolym podręczniku programowania.
Literał całkowity reprezentuje wartości liczbowe ze zbioru liczb całkowitych i zapisuje się go dokładnie tak samo jak w matematyce. Składa się on ze znaku + lub -, po którym występuje spójny ciąg cyfr dziesiętnych. W przypadku liczb dodatnich znak + można opuścić. W jego interpretacji obowiązują takie same zasady jak w matematyce. Mam tu na myśli ignorowanie zer nie znaczących. Czyli 0234 jest tym samym co 234.
Literały całkowitoliczbowe możemy też zapisywać w systemie szesnastkowym (heksadecymalnym) stosując jako cyfry następujące znaki: 0 1 2 3 4 5 6 7 8 9 a b c d e f (wielkość liter a .. f nie odgrywa roli). Aby zapisać literał w tym systemie musimy liczbę poprzedzić znakiem dolara "$". Na przykład $A10F, $123 ...
Literał rzeczywisty reprezentuje wartości rzeczywiste. Tak naprawdę to reprezentuje jedynie wybrane liczby wymierne, bo jak wiadomo liczb niewymiernych jak np. p nie da się wyrazić przy pomocy skończonej liczby cyfr. Literał ten różni się od literału całkowitego tym, że posiada dodatkowo część ułamkową. Fakt ten jest wyrażony poprzez umieszczenie kropki po części całkowitej liczby. Po kropce może wystąpić ciąg cyfr reprezenujacy część ułamkową, ale jeśli wynosi ona 0 to cyfrę tę można pominąć nie pisząc nic. Podobnie jeśli część całkowita wynosi zero to przed kropką można jej nie pisać. Ale uwaga, jeśli jest to liczba 0 to przynajmniej jedno zero musi pozostać. Innymi słowy literały te zapisuje się tak jak liczby rzeczywiste w matematyce kładąc w miejscu przecinka kropkę. Oto przykłady oddzielone przecinkami:
134.679, 0.2345, -456.6, -0.00345,
-10.0, 100.0, 1.,
-23., .123, -.456,
0.0, .0, 0.
Ostatni wiersz to różne sposoby zapisania zera (rzeczywistego). Należy zauważyć, że w dwóch przedostatnich wierszach zapisano liczby z pominięciem nieznaczących zer. Należy zapamiętać też, że 10 i 10.0 oraz 10. to nie to samo. Pierwsze jest literałem całkowitym a drugie i trzecie rzeczywistym o czym świadczy kropka dziesiętna. Inny sposób zapisu literału rzeczywistego to zastosowanie notacji naukowej i zapisanie liczby jako pary mantysa - cecha oddzielonej literą E lub e (żadnych spacji miedzy nimi). Mantysa jest liczbą całkowitą lub rzeczywistą (w formacie jak opisanym wyżej). Cecha występująca po literze E jest zawsze liczbą całkowitą. Popatrz na przykłady
1.234E4 oznacza 1,234·104 czyli 12340 (mantysa = 1,234 a cecha = 4)
123.4E-5 oznacza 1,234·10-5 czyli 0,001234 (mantysa = 123,4 a cecha = -5)
12E11 oznacza 12·1011 czyli 1200000000000 (mantysa = 12 a cecha = 11)
0.1E4 = 1E3 = 1E+3 = 1.0E3 = 1.0000E3 = 1000.0 i oznacza w każdym przypadku to samo czyli 1000 (tysiąc).
Jak widać użycie części Enn oznacza przesunięcie w mantysie kropki dziesiętnej o nn miejsc w lewo, gdy nn jest ujemne a w prawo gdy dodatnie.
Instalacja i konfiguracja pakietu Turbo Pascal 7.0.
Aby zainstalować pakiet Turbo Pascal należy go najpierw kupić, gdyż jest to rozwiązanie komercyjne firmy Borland. Alternatywą może tu być FPC który jest podobny do Turbo Pascala 7.0 jedynie funkcjonalność w stosunku do niego jest ulepszona - kompiluje więcej, szybciej, pozwala na tworzenie bardziej rozbudowanych i stabilnych projektów. Z kolei Borland Turbo Pascal 7.0 można kupić obecnie jedynie w wersji 11 stanowiskowej dla celów edukacyjnych.
Instalacja zazwyczaj odbywała się z dyskietki instalacyjnej. Należało włożyć nośnik do stacji i po zmianie bieżącego dysku na daną stację wpisać w wierszu poleceń install.
Uruchomiony w ten sposób program instalacyjny dostarczał dalszych wskazówek odnośnie instalacji.
Po instalacji należy wprowadzić do zmiennej PATH ścieżkę w której zainstalowany jest Turbo Pascal. W tym celu do znajdującego się w pliku C:\AUTOEXEC.BAT polecenia PATH należy dopisać na końcu średnik, a po nim nazwę katalogu zawierającego Turbo Pascala, np. PATH=c:\dos;c:\windows;c:\tp. W systemach operacyjnych Windows XP i wyższych plik AUTOEXEC.BAT nie jest uruchamiany i zazwyczaj należy turbo pascala uruchamiać z danego katalogu.
Uruchomienie edytora Turbo Pascal 7.0 polega na wpisaniu w wierszu poleceń komendy turbo dla ustawionej zmiennej PATH lub przejścia do podkatalogu bin w katalogu instalacyjnym Turbo Pascala za pomocą polecenia cd i wówczas dopiero wydaniu polecenia turbo.
Jeśli uda się bezkolizyjnie wywołać Turbo Pascala, na ekranie monitora powinien pokazać się ekran jak poniżej:
Środkową część ekranu zajmuje obszerne okno, w którym znajduje się migający kursor. Okno to, zwane okienkiem edytora służy do wpisywania i poprawiania programów. Na samej górze ekranu znajduje się menu główne, zawierające grupy poleceń służących do zarządzania programem. Wreszcie najniższy wiersz ekranu - tak zwany wiersz statusowy - zawiera informacje na temat najczęściej wykorzystywanych kombinacji klawiszy lub aktualnego stanu programu. Wszystkie elementy dostępne poprzez okno edytora, menu główne oraz kombinacje klawiszy tworzą razem zintegrowane środowisko robocze Turbo Pascala, określane również angielskim skrótem IDE (Integrated Development Environment).
Menu główne.
Menu główne edytora Turbo Pascal 7.0 znajduje się w górnym pasku edytora jak na rysunku poniżej
Menu główne Turbo Pascala 7.0 zawiera dziesięć pozycji:
File (Plik) - zawiera polecenia umożliwiające odczytywanie, zapisywanie i drukowanie tekstów programów, a także zakończenie pracy;
Edit (Edycja) - zawiera polecenia pozwalające na modyfikację tekstu programu i przenoszenie fragmentów tekstu pomiędzy programami;
Search (Wyszukiwanie) - zawiera polecenia służące do wyszukiwania i zamiany fragmentów tekstu programu oraz lokalizacji błędów;
Run (Uruchomienie) - zawiera polecenia sterujące wykonaniem gotowego programu;
Compile (Kompilacja) - zawiera polecenia umożliwiające kompilację, czyli przetłumaczenie tekstu źródłowego programu na postać wynikową - wykonywalną przez komputer;
Debug (Usuwanie błędów) - zawiera polecenia ułatwiające usuwanie błędów z programów i wspomagające ich uruchamianie;
Tools (Narzędzia) - zawiera polecenia umożliwiające wywołanie pomocniczych programów zewnętrznych;
Options (Opcje) - zawiera polecenia pozwalające na konfigurowanie elementów IDE (kompilatora, edytora, programu uruchomieniowego), czyli dostosowanie ich do wymogów i potrzeb użytkownika;
Window (Okno) - zawiera polecenia sterujące układem okienek na ekranie;
Help (Pomoc) - zawiera polecenia umożliwiające dostęp do obszernego systemu pomocy (suflera) Turbo Pascala.
Jak dostać się do poleceń zawartych w menu? Metod jest kilka. Można np. nacisnąć klawisz F10, a następnie wybrać żądaną pozycję (opcję) menu głównego używając klawiszy kursora (strzałek) w lewo oraz w prawo i "rozwinąć" ją naciskając Enter. Znacznie prościej jest jednak wykorzystać kombinację klawisza Alt z wyróżnioną w nazwie opcji literą (na przykład dla menu File będzie musisz jednocześnie nacisnąć klawisze Alt i F). Trzecią możliwością jest użycie myszki - w tym celu trzeba kliknąć jej lewym przyciskiem po wskazaniu wybranej pozycji menu głównego.
Niezależnie od tego, której metody się użyje, wybranie dowolnej pozycji z menu głównego spowoduje pojawienie się kolejnego menu (tzw. menu rozwijanego lub z angielska pull-down menu), zawierającego bardziej szczegółowy wykaz poleceń związanych z danym tematem. Aby wybrać żądane polecenie, trzeba tym razem użyć klawiszy strzałka w górę lub strzałka w dół (i oczywiście Enter), nacisnąć klawisz odpowiadający wyróżnionej literze (uwaga: tym razem bez klawisza Alt!), ewentualnie kliknąć w odpowiednim miejscu myszką. Zauważ przy tej okazji, że niektórym poleceniom towarzyszą nazwy klawiszy funkcyjnych, specjalnych lub ich kombinacji, wyświetlone w menu z prawej strony. Są to tak zwane klawisze skrótu (ang. shortcut keys), umożliwiające wywołanie danego polecenia bez rozwijania menu. Użycie klawiszy skrótu znacznie upraszcza korzystanie z IDE, toteż warto zapamiętać kilka z nich (np. F2 - zapisanie programu na dysku, Ctrl-F9 - uruchomienie programu itd.).
Przykładowo aby zakończyć pracę w edytorze, wystarczy nacisnąć klawisz skrótu Alt-X (można zrobić to samo za pomocą menu, chociaż jest to nieco bardziej czasochłonne).
Należy również zauważyć, że rozwinięcie menu wiąże się ze zmianą zawartości wiersza statusowego, w którym będzie się obecnie znajdował krótki opis wybranego polecenia lub opcji.
Plik.
Pierwszą pozycją w menu głównym edytora jest menu Plik (ang. File).
Zawiera ono następujące pozycje:
New (Nowy);
Open... (Otwórz...);
Save (Zapisz);
Save as... (Zapisz jako...);
Save all (Zapisz wszystko);
Change dir... (Zmień katalog...);
Print (Drukuj);
Printer setup... (Konfiguracja drukarki...);
DOS shell (Wiersz poleceń DOS);
Exit (Wyjście).
Pozostałe pozycje po Exit służą do wyboru poprzednio otwartych plików źródłowych. Ich kliknięcie powoduje otwarcie danego pliku o ile jeszcze nie został usunięty, w tym przypadku edytor zwraca błąd.
Podmenu Nowy otwiera dodatkowe okno edycyjne w którym użytkownik może tworzyć program. Standardowo okna nazywają się tak jak pliki które w nich są edytowane. Ponieważ nowo otwarty plik jeszcze nie ma nazwy okno nazywa się noname00.pas (bez nazwy czyli ang. noname ), chyba, że taki plik już istnieje, wówczas plik przyjmuje nazwę noname01.pas, itd... Okno takie wygląda jak poniżej:
Podmenu Otwórz otwiera dodatkowe okno dialogowe wyglądające jak poniżej:
W polu name wpisujemy nazwę pliku do otwarcia lub filtr szukanego pliku. Filtrem może zawierać dowolne znaki możliwe do wystąpienia w nazwie pliku, znak * oznacza dowolny ciąg znaków. Przykładowo aby wyszukać wszystkie pliki źródłowe Pascala zaczynające się od ciągu Tab należy zastosować filtr Tab*.pas. Standardowym filtrem są wszystkie pliki źródłowe pascala (*.pas).
U dołu znajdują się dwie kolumny przeglądarki tekstowej. Kolumna prawa służy do wyboru bieżącego katalogu poszukiwań, zaś lewa do wyboru danego pliku. Kliknięcie na opcję ..\ powoduje wyjście katalog wyżej w drzewie poszukiwań.
Przycisk Otwórz (ang. Open) służy do otwarcia wybranego pliku bądź przejścia do wybranego katalogu, przycisk Zamień (ang. Replace) służy do zamiany zawartości aktualnie otwartego pliku na obecnie wybrany plik. Opcja Anuluj (ang. Cancel) służy do anulowania operacji otwarcia pliku i powrót do edycji, zaś po kliknięciu na przycisk Pomoc (ang. Help) wyświetlona zostanie pomoc na temat bieżącego polecenia, w tym przypadku otwartego okna dialogowego Open.
Kolejną pozycją jest opcja Zapisz zapisująca aktualnie otwarty i plik którego okno było ostatnio aktywne pod nazwą pod którą jest zapisany na dysku. Jesli jest to nowy plik, jeszcze nie zapisywany pojawia się okno dialogowe jak przy opcji Zapisz jako. jeśli plik był modyfikowany od czasu ostatniego zapisu, na dole ekranu przed numerem wiersza i kolumny na ramce pojawia się znak *.
Wybranie pozycji menu Zapisz jako powoduje otwarcie następującego okna dialogowego:
Analogicznie jak przy pozycji Otwórz u góry okna jest miejsce na wpisanie nazwy pliku do zapisu. U dołu znajduje się miejsce na wyświetlenie zawartości wybranego katalogu, ewentualnie wybranie z listy jakiegoś pliku do zastąpienia. Przycisk OK potwierdza zapis, przy zamianie istniejącego pliku pojawi się dodatkowe okno potwierdzające taką zamianę.
Pozycja Zmień katalog powoduje zmianę bieżącego katalogu roboczego (katalogu w którym są wykonywane polecenia, w którym są uruchamiane programy i w którym standardowo działa edytor plików) na katalog przez wybrany przez użytkownika.
Jak widać na rysunku poniżej w górnym wierszu wpisujemy poprawną ścieżkę do danego katalogu. Wpisanie niepoprawnej ścieżki zaowocuje wyświetleniem stosownego komunikatu o błędzie (ang. Invalid drive letter or directory - Niepoprawna litera dysku lub katalog). U dołu okna znajduje się drzewo katalogów (struktura w postaci drzewa z wymienionymi katalogami). Możemy rozwijać odpowiednie gałęzie jak również wybierać poszczególną gałąź jako katalog bieżący. Odpowiedni katalog jest opisany innym kolorem czcionki, w przykładzie jasnym. Przycisk Chdir (zmień katalog) zmienia aktualnie zaznaczony katalog na bieżący. Polecenie OK zatwierdza wybór i powoduje zamknięcie okna, zaś polecenie Revert przywraca poprzedni stan przed wcisnięciem przycisku Chdir. Przycisk Help wyświetla pomoc na temat drzewa katalogów.
Polecenie Drukuj powoduje wydrukowanie pliku w bieżącym aktywnym oknie na drukarce. Aby jednak było to możliwe drukarka musi zostać uprzednio odpowiednio skonfigurowana. Do tego celu należy używać opcji Ustawienia drukarki. Okno opcji ustawień wygląda następująco:
W pierwszym oknie wejściowym należy podać ścieżkę z plikiem filtrów dla drukarki. W drugim oknie należy podać parametry wiersza poleceń dla drukarki, parametry domyślne są jak te na rysunku. Zaznaczenie opcji Send Highlighting escape codes powoduje wysyłanie przez edytor odpowiednich funkcji sterujących do drukarki w celu drukowania pogrubionej czcionki, pochylonej lub podkreślonej w odpowiednich fragmentach programu.
Wybranie opcji Wiersz poleceń powoduje otwarcie interpretera poleceń DOS (command.com) wewnątrz edytora Turbo Pascal 7.0, w katalogu domyślnym.
Polecenie Wyjście powoduje zakończenie pracy edytora. W przypadku nie zapisania uprzednio zmian w otwartych plikach edytor spyta o chęć ich zapisania, dla opcji twierdzącej zmiany zostaną zapisane.
Edycja.
Menu Edycja to druga z kolei pozycja w menu głównym, wygląda po rozwinięciu następująco:
Zawiera ono następujące pozycje:
Undo (Cofnij);
Redo (Ponów);
Cut (Wytnij);
Copy (Kopiuj);
Paste (Wklej);
Clear (Wyczyść);
Show clipboard (Pokaż schowek).
Polecenia robią dokładnie to co sugerują ich nazwy. Cofnij cofa poprzednio wykonaną akcję, np. usunięcie ciągu znaków, Ponów ponawia akcję cofniętą przez Cofnij, Wytnij wycina zaznaczony tekst i wstawia do schowka, Kopiuj kopiuje zaznaczony tekst do schowka, Wklej wstawia zaznaczony tekst w schowku od miejsca w którym aktualnie znajduje się kursor.
Polecenie pokaż schowek pokazuje zawartość schowka. Wygląda to podobnie jak na rysunku poniżej
Otwiera się okno o nazwie Schowek (ang. clipboard), zawierające wszystkie skopiowane do schowka fragmenty tekstu. Fragment bieżący, który ma być wstawiony do pliku w czasie wykonywania operacji Wklej jest wyróżniony.
Szukaj.
Kolejną pozycją w menu głównym jest Szukaj, które po rozwinięciu wygląda następująco
Zawiera ono następujące pozycje:
Find... (Znajdź...);
Replace... (Zamień...);
Search again (Szukaj ponownie);
Go to line number... (Idź do numeru linii...);
Show last compiler error (Pokaż ostatni błąd kompilatora);
Find error... (Znajdź błąd...);
Find procedure... (Znajdź procedurę...).
Głównym powodem używania menu Szukaj jest konieczność szukania określonych fragmentów bądź zdarzeń stąd nazwa.
Pozycja Znajdź umożliwia szukanie ciągów znaków w bieżącym tekście. Po wybraniu jej z menu pojawia się na ekranie następujące okno
Okienko Tekst to find oznacza fragment tekstu którego szukamy, należy go wpisać. Opcje które dodatkowo możemy zaznaczyć to Case sensitive (rozróżnienie małych i dużych liter), Whole words only (edytor będzie szukał tylko całych słów) i Regular expression (edytor użyje wzorca jako wyrażenia regularnego - patrz Indeks ważniejszych pojęć).
Opcja Scope (Zakres) oznacza zakres szukania - globalnie lub w zaznaczonym fragmencie. Opcja Direction (Kierunek) wyznacza kierunek wyszukiwania - w przód lub wstecz, opcja Origin (początek) wskazuje punkt startowy szukania - od miejsca w którym znajduje się kursor lub od w całym zakresie.
Opcja Zamień jest bardzo podobna do opcji Znajdź
W porównaniu z nią dodatkowo posiada ona okno New tekst w który należy wpisać tekst na który zostanie zamieniony łańcuch znaków którego szukamy. Dodatkowa opcja Prompt on replace powoduje zapytanie przed zamianą znalezionego ciągu z prośbą o potwierdzenie. Dodatkowy przycisk Change all powoduje zastąpienie wszystkich wystąpień bez pytania o potwierdzenie.
Opcja Idź do numeru linii powoduje wyświetlenie okna jak poniżej
Okno to posiada jedno możliwe do edycji pole w który należy wpisać numer linii, której szukamy. Jeśli nie wpiszemy poprawnego numeru edytor zwróci nam komunikat o błędnym numerze linii (poza zakresem) i wskaże poprawny zakres.
Opcja Pokaż ostatni błąd kompilatora pokazuje jaki był ostatni błąd w czasie kompilacji wraz z zaznaczoną odpowiednio linią gdzie błąd wystąpił.
Opcja Znajdź błąd umożliwia szukanie błędów które wystąpiły w czasie wykonania programu. Jesli takie błędy się pojawiły wyświetlona zostaje informacja o lokalizacji w pamięci tego błędu w postaci segment:offset. Informację tą można wpisać w oknie dialogowym które się pojawi po wciśnięciu opcji Znajdź błąd w menu Szukaj w celu debugowania.
Opcja Znajdź procedurę umożliwia szukanie procedur o określonych nazwach w wielu plikach źródłowych.
Uruchom.
Menu Uruchom po rozwinięciu w menu głównym wygląda następująco:
Składa się ono z następujących pozycji:
Run (Uruchom);
Step over (Następny krok);
Trace into (Śledź wewnątr);
Go to cursor (Idź do kursora);
Program reset (Zresetuj program);
Parameters (Parametry).
Polecenie Uruchom uruchamia program, który się wykonuje do końca (jesli nie ustawiono dodatkowych opcji w menu Debugguj) lub przerywa po wystąpieniu błędu uruchomienia. Na początku jest przeprowadzana kompilacja programu, jeśli zakończy się ona błędem program nie jest wykonywany, podobnie w trzech następnych opcjach menu Uruchom.
Opcja Następny krok powoduje wykonanie następnego polecenia wewnątrz programu, jesli tym poleceniem jest wywołanie procedury lub funkcji jest ono traktowane jako pojedyńcze polecenie. Opcja Śledź wewnątrz w przeciwieństwie do poprzedniej każdą instrukcję wewnątrz procedury traktuje jako następne polecenie.
Idź do kursora powoduje wykonywanie kodu programu do miejsca w którym znajduje się kursor, w przypadku gdy nie zostanie napotkany kursor program wykonuje się do końca.
Zresetuj program powoduje zresetowanie programu gdy uruchomione jest śledzenie i program nie wykonał się do końca.
Polecenie Parametry daje możliwość sprecyzowania parametrów wiersza poleceń z jakimi zostanie uruchomiony program. Należy je wpisać w okno i potwierdzić przyciskiem OK.
Kompiluj.
Menu Kompiluj po rozwinięciu:
Pozycje w menu Kompiluj:
Compile (Kompiluj);
Make (Utwórz);
Build (Zbuduj);
Destination (Przeznaczenie);
Primary File (Podstawowy plik);
Clear primary file (Wyczyść podstawowy plik);
Information (Informacje).
Pozycja Kompiluj służy do kompilacji (patrz Indeks ważniejszych pojęć) bieżącego pliku źródłowego lub, jeśli została użyta opcja Podstawowy plik to ten plik. Wynikiem działania jest kompilacja danego pliku i wszystkich plików z których kompilowany plik korzysta pod warunkiem, że plik ten został zmieniony. Końcowym efektem jest informacja o poprawnej kompilacji jak poniżej
lub komunikat o błędzie wraz z listą błędów kompilacji.
Opcja Utwórz podobnie jak Kompiluj kompiluje program tworząc dodatkowo plik wykonywalny *.exe. Znak * jest zastępowany nazwą pliku źródłowego bez rozszerzenia. Plik kompilowany jest wybierany tak jak w przypadku poprzedniej opcji.
Opcja Zbuduj jest w działaniu niemal identyczna jak opcja Utwórz, jedyna różnica polega na kompilacji wszystkich użytych plików źróodłowych co sprawia, że projekt jest wówczas najbardziej aktualny.
Przeznaczenie określa gdzie Turbo Pascal ma przechowywać wyniki kompilacji: w pamięci (ang. memory) lub na dysku (ang. disk). Zmianę dokonuje się przez jednokrotne kliknięcie na opcję.
Opcja Podstawowy plik pomaga ustalić który plik jest plikiem podstawowym i który plik odwołuje się do pozostałych plików źródłowych. Pożyteczna przy kompilacji projektów składających się z dużej ilości plików. Kompilator uznaje plik wybrany w tej opcji za pierwszy do kompilacji.
Po wybraniu tej opcji pojawia się edytor jak do wyboru otwarcia pliku pozwalający na wybór pliku podstawowego.
Opcja Wyczyść podstawowy plik pozostawia podstawowy plik niesprecyzowany i kompilator wybiera do kompilacji plik w aktualnie aktywnym oknie.
Opcja Informacje pokazuje użyteczne informacje m.in. o zajętości pamięci, jak i o rozmiarze programu i danych w programie. Opcja nic nie znienia w ustawieniach.
Debuguj.
Turbo Pascal 7.0 posiada zaawansowane opcje debugowania (patrz Indeks ważniejszych pojęć). Aby je wykorzystać najlepiej użyć menu Debuguj
Pozycje w menu:
Breakpoints (Punkty zatrzymania);
Call stack (Stos wywołań);
Register (Rejestry);
Watch (Obserwuj);
Output (Wyjście);
User Screen (Ekran użytkownika);
Evaluate/Modify (Sprawdź/Modyfikuj);
Add watch (Dodaj obserwatora);
Add breakpoint (Dodaj punkt zatrzymania).
Punkt zatrzymania jest miejscem w którym program się zatrzymuje w czasie wykonania. Dzięki zatrzymaniu możemy szukać błędów w programie, sprawdzać wartości rejestrów, itp... Opcja Punkty zatrzymania pozwala na wyświetlenie ich, edycję, usunięcie, wyszukanie jak i przeglądanie. Okno dialogowe wygląda jak poniżej
Na rysunku również widać okno edycji punktów zatrzymania. Najważniejsze parametry punktów zatrzymania to numer linii w której ten punkt występuje, jak i nazwa pliku. Warunek (ang. condition) jest opcjonalny.
Stos wywołań (zobacz Indeks ważniejszych pojęć) pokazuje stos procedur, które są w danym momencie wywołane.
Rejestr pokazuje wartości w rejestrach procesora (przyjmując, że procesorem jest Intel 80386, patrz Indeks ważniejszych pojęć).
W powyższym przykładzie rejestry procesora są pokazane, okno ma nazwę CPU. W przykładzie rejestry są wyzerowane. Opcja przydatna przy wstawkach assemblerowych.
Opcja Obserwuj pozwala na zaobserwowanie wartości w poszczególnych zmiennych systemowych, np. jesli chcemy obserować zawartość zmiennej “a” powinniśmy ją dodać do obserwowanych zmiennych.
Opcja Wyjście pokazuje komunikaty jakie program wypisał na standardowe wyjście czyli ekran, np. funkcją writeln().
Ekran użytkownika to ekran który użytkownik zobaczyłby uruchamiająć dany program z wiersza poleceń.
Dzięki opcji Sprawdź/Modyfikuj mamy możliwość zmiany wartości zmiennej (należy wpisać nową wartość, ang. new value następnie kliknąć Modyfikuj, ang. modify), jak również sprawdzić wartość wyrażenia (ang. expression) w polu rezultat (ang. result) po uprzednim kliknięciu na przycisk Evaluate.
Dodaj obserwatora daje możliwość obserwowania wartości zmiennych programowych w oknie Watches. Dodanie polega na wpisaniu nazwy zmiennej programowej lub wyrażenia do pola Expression. W czasie wykonywania programu (najlepiej krok po kroku odpowiednie wartości są wyświetlane).
Dodaj punkt zatrzymania powoduje wyświetlenie następującego okna
Objaśnienie pól znajduje się przy omawianiu edycji punktów zatrzymania.
Narzędzia.
Menu narzędzia jest jednym z najmniejszych
Komunikaty (ang. messages) pokazuje okno zawierające komunikaty systemowe, np. te o błędach. Opcja Idź do następnego przechodzi do linii z następnym komunikatem, analogicznie Idź do poprzedniego - z poprzednim.
Grep jest narzędziem do wyszukiwania wyrażeń regularnych, jego omówienie znajduje się w Indeksie ważniejszych pojęć.
Opcje.
Menu Opcje pozwala na modyfikację wyglądu i zachowania edytora, po rozwinięciu wygląda jak poniżej
Poszczególne opcje:
Compiler (Kompilator);
Memory sizes (Rozmiary pamięci);
Linker;
Debugger (Debuger);
Directories (Foldery);
Tools (Narzędzia);
Podmenu Environment (Środowisko)
Preferences (Preferencje);
Editor (Edytor);
Mouse (Mysz);
Startup (Uruchamianie);
Colors (Kolory);
Open (Otwórz);
Save (Zapisz);
Save as (Zapisz jako).
Opcja Kompilator służy do ustawiania opcji kompilatora.
Przy generacji kodu można zaznaczyć opcję Wymuszenie dalekich wywołań (ang. Force far calls), Pozwolenie na przepełnienie (ang. Overlays allowed), Wpisywania danych jako słowo (ang. Word allign data) i Instrukcji procesora Intel 80286. Dla błędów uruchamiania można ustawiać Sprawdzanie zasięgu, stosu, operacji wejścia/wyjścia i przepełnienia. Istnieje także możliwość ustawiania opcji dla składni i debugowania. Ważna jest także możliwość używania zarówno koprocesora arytmetycznego sprzętowego jak i emulacji.
Opcja Rozmiary pamięci pozwala na ustawienie rozmiaru stosu jak i pamięci fizycznej użytej na dane. Kolejne dwie opcje pozwalają na ustawienie parametrów programu linkującego jak i debugera.
Jak widać można używać zarówno zintegrowanego debugera jak i osobnej aplikacji.
Bardzo ważne jest ustawienie odpowiednich katalogów dla poprawnej pracy edytora. Są to katalogi m.in. z plikami nagłówkowymi, jak i zawierające ścieżki w których edytor będzie zapisywał lub szukał plików źródłowych.
Opcja Narzędzia służy do dodawania, edycji i usuwania programów z menu Narzędzia.
Preferencje w podmenu środowisko ustawiają takie rzeczy jak:
ilość linii tekstu edytora
automatyczna zmiana katalogu bieżącego przy otwarciu pliku
auto zapis - środowiska, wyglądu, plików edytora
miejsca zapisu plików konfiguracyjnych - katalog bieżący lub katalog z plikami konfiguracyjnymi.
Opcje edytora (występuje także w menu lokalnym)
Pozwalają na ustawienie (w kolejności jak na rysunku):
tworzenie kopii zapasowych
trybu wstawiania
używania znaków tabulacji (zamiast 8 spacji, wydatnie zmniejsza rozmiar pliku)
optymalne wstawianie
kasowanie pustych linii klawiszem Backspace
możliwość edycji zachowania klawisza tabulacji
grupowanie operacji cofania
trwałe zaznaczanie bloków tekstu
podświetlanie składni
blokowe wklejanie
szukanie tekstu pod kursorem.
Istnieje również możliwość definiowania zachowania myszy
Zdefiniować można reakcję na przyciśnięcie prawego klawisza, prędkość poruszania myszy, można odwrócić przyciski.
W edytorze Turbo Pascal 7.0 można także zdefiniować kolory praktycznie wszystkiego - od wyglądu kompilatora po najmniej istotny komunikat.
Można także zdefiniować zachowanie edytora przy starcie.
Edytor Turbo Pascal 7.0 daje możliwość zapisania opcji w pliku konfiguracyjnym, za pomocą opcji Zapisz lub Zapisz jako... Pojawiają sie przy tym okienka znane nam z menu Plik. Opcje te można potem wczytać opcją Otwórz analogicznie jak w menu Plik.
Okno.
Opcje okna służą przede wszystkim do zmiany sposoby wyświetlania okien, jak też ich ułożenia.
Ułożenie może być:
kafelkowe (ang. tile), okna jedno obok drugiego,
kaskadowe (ang. cascade), okna zachodzą na siebie.
Opcja Zamknij wszystkie (ang. close all) zamyka wszystkie otwarte okna, uwzględniając potrzebę zapisu zaś opcja Odśwież wyświetlane (ang. refresh display) czyni też to co ma w nazwie.
Opcja Rozmiar/Przenieś (ang. size/move) pozwala na przenoszenie aktywnego okna strzałkami kursora, z naciśniętym dodatkowo klawiszem Shift na zmianę rozmiaru okna. Klawisz Enter akceptuje zmiany, klawisz Escape cofa zmiany.
Opcja Powiększenie (ang. zoom) pozwala na rozszerzenie okna na cały ekran i przywrócenie do poprzedniego stanu. Następny (ang. next) i Poprzedni (ang. prev) pozwalają na szybkie przemieszczanie wśród wielu otwartych okien. Zamknij zamyka aktywne okno.
Opcja Lista (ang. list) pokazuję listę otwartych okien i pozwala na wybranie jednego. Szczególnie pożyteczna przy dużej liczbę otwartych okien. Pozwala również zamknąć niepotrzebne.
Pomoc.
Pomoc w edytorze Turbo Pascal 7.0 jest niezwykle rozbudowana i bardzo dobrze opracowana. Menu pomocy wygląda następująco
Poszczególne pozycje:
Contents (Treść) - zawiera informacje o używaniu edytora Turbo Pascal 7.0 w tym
Jak używać Pomocy?
Menu i skróty
Polecenia edytora, itp...
Index (Indeks) - zawiera alfabetyczny spis poleceń języka Turbo Pascal
Topic search (Szukanie tematu) - jak wyżej,
Previous topic (Poprzedni temat),
Using Help (Używanie pomocy),
Files (Pliki) - możliwość instalacji w edytorze dodatkowych plików z pomocą, należy wskazać ścieżkę do dodatkowego pliku, można usuwać także stare pliki z pomocą.
Compiler directives (Dyrektywy kompilatora) - lista dyrektyw kompilatora Turbo Pascal 7.0
Reserved words (Zarezerwowane słowa) - jak w opisie, np. nazwy rejestrów procesora
Standard units (Standardowe jednostki) - opis modułów bibliotecznych wbudowanych w Turbo Pascala 7.0, np. moduł crt
Turbo Pascal Language (Język Turbo Pascal) - szczegółowy opis języka
Error messages (Komunikaty błędów) - opis komunikatów błędów i ich znaczenie.
About... (O...) - informacje o wersji Turbo Pascala
Menu lokalne.
Menu lokalnym w Turbo Pascalu jest menu pojawiające się po kliknięciu prawym klawiszem myszy lub użyciu odpowiedniego klawisza skrótu w czasie pracy z plikiem źródłowym.
Pierwsze cztery opcje znane są z menu Edycja i nie będą opisywane ponownie.
Opcja Otwórz plik w miejscu kursora (ang. Open file at cursor) otwiera plik o takiej nazwie jak wyraz pod kursorem z rozszerzeniem .pas, jeśli taki plik nie istnieje zwracany jest stosowny komunikat o błędzie.
Podobnie opcja Szukaj tematu (ang. Topic search) otwiera w pomocy temat o nazwie jak wyraz pod kursorem.
Kolejne cztery pozycje znane są z menu Debuguj i Uruchom i nie będą omawiane ponownie.
Ostatnia pozycja wyświetla omawianą wcześniej funkcję Opcje edytora.
Indeks ważniejszych pojęć.
Wyrażenia regularne (ang. regular expressions, w skrócie regex) to wzorce, które opisują łańcuchy symboli. Teoria wyrażeń regularnych jest związana z teorią tworzenia tzw. języków naturalnych. Wyrażenia regularne mogą określać zbiór pasujących łańcuchów, mogą również wyszczególniać istotne części łańcucha.
Dwie najpopularniejsze składnie wyrażeń regularnych to składnia uniksowa i składnia perlowa. Składnia perlowa jest znacznie bardziej rozbudowana. Jest ona używana nie tylko w języku Perl, ale także w innych językach programowania: (Ruby), bibliotece PCRE do C i w narzędziu powłoki o nazwie pcregrep (znanego też jako pgrep).
Podstawowe elementy wyrażeń regularnych:
Każdy znak oprócz znaków specjalnych określa sam siebie, np. "a" określa łańcuch złożony ze znaku "a"
Kolejne symbole oznaczają, że w łańcuchu muszą wystąpić dokładnie te symbole w dokładnie takiej samej kolejności, np. "ab" oznacza że łańcuch musi składać się z litery "a" poprzedzającej literę "b"
Kropka (.) oznacza dowolny znak z wyjątkiem znaku nowego wiersza (zależnie od ustawień i rodzaju wyrażeń)
Znaki specjalne poprzedzone odwrotnym ukośnikiem (\) powodują, że poprzedzanym znakom nie są nadawane żadne dodatkowe znaczenia - oznaczają same siebie, np "\." oznacza znak kropki (nie dowolny znak)
Zestaw znaków między nawiasami kwadratowymi oznacza dowolny znak objęty nawiasami kwadratowymi, np "[abc]" oznacza a, b lub c. Można używać także przedziałów: "[a-c]". Między nawiasami kwadratowymi:
Daszek (^) na początku zestawu oznacza wszystkie znaki oprócz tych z zestawu.
Aby uniknąć niejasności znaki "-" (myślnik) i "]" (zamknięcie nawiasu kwadratowego) zapisywane są na skraju zestawu lub w niektórych systemach po znaku odwrotnego ukośnika, daszek zaś wszędzie z wyjątkiem początku łańcucha. Zasady te mogą być różne w zależności od konkretnej implementacji.
Większość znaków specjalnych w tym miejscu traci swoje znaczenie
Nawiasy okrągłe ( ( i ) ) grupują symbole.
Gwiazdka ( * ) po symbolu, (nawiasie, pojedynczym znaku) nazywana jest dopełnieniem Kleene'a i oznacza zero lub więcej wystąpień poprzedzającego wyrażenia
Znak zapytania po symbolu oznacza najwyżej jedno (być może zero) wystąpienie poprzedzającego wyrażenia
Plus (+) po symbolu oznacza co najmniej jedno wystąpienie poprzedzającego go wyrażenia
Daszek (^) oznacza początek wiersza, dolar ($) oznacza koniec wiersza.
Pionowa kreska (ang. pipeline) (|) to operator OR np. jeśli napiszemy "a|b|c" oznacza to, że w danym wyrażeniu może wystąpić "a" lub "b" lub "c".
Kompilacja - proces tłumaczenia kodu źródłowego na język maszynowy, dokonywany przez kompilator.
Każdy program komputerowy musi w momencie wykonania składać się z instrukcji zrozumiałych dla procesora. Niewielu jest jednak ludzi potrafiących zapisać w kodzie maszynowym choćby najprostsze instrukcje, nie mówiąc o całych programach. Dlatego właśnie wymyślono języki programowania, które pozwalają tworzyć aplikacje w sposób wiele bardziej zrozumiały dla człowieka. Niestety, to, co dla człowieka jest oczywiste, dla procesora jest tylko "bełkotem".
Kompilacja jest swego rodzaju tłumaczeniem pomiędzy językami zrozumiałymi dla człowieka i maszyny. Polega na zamianie ciągu liter, którego używa człowiek do reprezentacji jakiejś operacji na odpowiadający mu ciąg instrukcji w postaci zer i jedynek. W zależności od złożoności języka, proces ten jest mniej lub bardziej skomplikowany. Dla języków niskiego poziomu (np. asemblera) kompilacja wygląda tak, jak tłumaczenie dosłowne - ze słownikiem. Przy czym dany "wyraz" ma tylko jeden odpowiednik w kodzie maszynowym. Języki wyższego poziomu wymagają czegoś, co można przyrównać do tłumaczenia kontekstowego, gdzie w zależności od poprzednich i następnych poleceń, aktualnie analizowane przyjmuje inną reprezentację w kodzie maszynowym.
grep - jeden z podstawowych programów wchodzących w skład systemu UNIX (używany również w systemie DOS). Służy do znajdowania w strumieniu wejścia (plik, lub po prostu wpisywany tekst) określonych wyrażeń. Został napisany przez Kena Thompsona.
"grep" jest angielskim akronimem od słów global regular expression print, czyli drukowanie globalnych wyrażeń regularnych.
Przykłady zastosowań:
wypisanie na standardowym wyjściu linijek zawierających określony tekst: grep "szukany_tekst" plik
wypisanie na standardowym wyjściu linijek, nie zawierających danego ciągu znaków: grep -v "szukany_tekst" plik.
Debuger (ang. debugger - odpluskwiacz, polskie tłumaczenie używane także w slangu polskich programistów) - program komputerowy służący do analizy kodu źródłowego lub kodu maszynowego w celu znalezienia w nim błędów programistycznych (bugów). Proces naprawy kodu za pomocą debugera określa się mianem debugowania, lub bardziej po polsku - uruchamiania. Debuger opiera się na aplikacji parsującej.
Podstawowym zadaniem debugera jest symulowanie i sprawowanie kontroli nad wykonaniem kodu, co umożliwia zlokalizowanie instrukcji odpowiedzialnych za wadliwe działanie programu. Oczywiście, współczesne debugery mają rozbudowane opcje, które pozwalają na efektywne śledzenie wartości poszczególnych zmiennych, wykonywanie instrukcji krok po kroku czy wstrzymywanie działania programu w określonych miejscach.
Debuger jest standardowym wyposażeniem każdego środowiska programistycznego. Niektóre z tych środowisk pozwalają ustawić w kodzie źródłowym punkty wstrzymania, dzięki czemu programista może m.in. śledzić wartości wskazanych zmiennych.
Debuger może również funkcjonować jako niezależny program.
Debugery, oprócz ich podstawowego przeznaczenia, są często wykorzystywane także do łamania zabezpieczeń oprogramowania (crackingu).
Debugery posiadają niestety wady - symulacja działania kodu nie jest idealnym odtworzeniem wykonania tego kodu w warunkach normalnych. Wobec tego debugery mogą nie wykrywać bugów niezależnych bezpośrednio od treści badanego programu.
Stos - liniowa struktura danych, znaczeniowo odpowiadająca nazwie: dane dokładane są na wierzch stosu, również z wierzchołka są ściągane (stosuje się też określenie LIFO (ang. Last In First Out), oddające tę samą zasadę). Można zilustrować tę strukturę jako stos ustawionych jedna na drugiej książek - nowy egzemplarz kładzie się na wierzchu i z wierzchu się go ściąga. Elementy poniżej wierzchołka można wyłącznie obejrzeć, aby je ściągnąć - trzeba najpierw po kolei ściągnąć to, co jest nad nimi.
Przeciwieństwem stosu LIFO jest kolejka (informatyka), bufor typu FIFO (ang. First In, First Out) - pierwszy na wejściu, pierwszy na wyjściu, w którym jako pierwszy obsługiwany jest element który pojawił się na początku operacji (jak w kolejce do kasy).
Rejestr procesora to umieszczone wewnątrz procesora komórki pamięci o niewielkich rozmiarach (najczęściej 4/8/16/32/64/128 bitów) służące do przechowywania tymczasowych wyników obliczeń (rejestry danych) oraz adresów lokacji w pamięci operacyjnej (rejestry adresowe). Proste mikroprocesory mają tylko jeden rejestr danych zwany akumulatorem.
Mikroprocesory oparte na architekturze intela mają następujące rejestry 32-bitowe:
Rejestry danych
EAX - rejestr akumulacji
EBX - rejestr bazowy
ECX - rejestr licznika
EDX - rejestr danych
Rejestry adresowe
ESI - źródło
EDI - przeznaczenie
EBP - wskaźnik bazowy
ESP - wskaźnik na wierzchołek stosu
EIP - wskaźnik na aktualnie wykonywaną instrukcję
Rejestr flagowy:
EFLAGS
Oprócz rejestrów danych i rejestrów adresowych występuje też pewna liczba rejestrów o specjalnym przeznaczeniu:
PC - licznik rozkazów
IR - rejestr instrukcji.
Podsumowanie.
Dla niektórych programistów niektóre cechy Pascala wykluczają jego zastosowanie w poważnych projektach i są powodem krytyki tego języka. Według nich powinien zostać jedynie narzędziem do nauki programowania. Natomiast nie potwierdzają tego tysiące aplikacji (również komercyjnych) stworzonych w Pascalu w latach 80-tych i 90-tych. Wraz z upowszechnieniem się języka C i C++ coraz większa ilość programistów zrezygnowała z Pascala.
Zalety Pascala - czytelność kodu, rygorystyczna kontrola typów danych, wraz z pojawieniem się C stały się dla programistów wadami. Wypromowanym przez C standardem stała się zwięzłość kodu.
Pascal bardzo rygorystycznie podchodzi do kontroli typów, tj. sprawdza czy do zmiennej typu A nie próbuje się przypisać wartości typu B. Jest to dobra cecha języka dydaktycznego, ale w przypadku doświadczonego programisty może być uciążliwa. Np. sztuczki, typu rzutowanie zmiennej typu całkowitego na typ Bool jest częstą praktyką - w Pascalu kompilator się na to nie zgodzi.
Popularność Pascala wzrosła z pojawiem się Delphi - środowiska programistycznego, opartego na obiektowym Pascalu (Object Pascal), pozwalającego na błyskawiczne tworzenie atrakcyjnych wizualnie aplikacji pod Windows. Wraz z pajawiem się biblioteki windows dla C++, oraz narzędzi do automatycznego tworzenia GUI, Pascal znów stracił na znaczeniu.
Mimo wszystko do nauki programowania Pascal jest nadal najlepszym językiem, a Turbo Pascal 7.0 najpopularniejszym środowiskiem.
Literatura
A. Marciniak: Turbo Pascal 7.0, NAKOM, Poznań, 1995
Tomasz M. Sadowski: Praktyczny kurs Turbo Pascala, Helion, Gliwice 1991, 1993.
J. Zahorski: Turbo Pascal 7.0, Helion, Gliwice 1995.
Kazimierz Jakubczyk: Turbo Pascal i Borland C++. Przykłady. Wydanie II. Helion, Gliwice 2004
3