Kurs-jezyka-Turbo-Pascal.doc

(273 KB) Pobierz
Kurs języka Turbo Pascal

Kurs języka Turbo Pascal

Wersja 1.00 (10.03.2004)

Prawa autorskie

Ponieważ uważam za bezsens płacenie za książkę typu "Pascal dla opornych" gdzie najbardziej opornym jest autor, przeszukałem net, odgrzebałem dyskietki ze studiów i zabrałem się do pracy. Opracowując ten kurs, korzystałem z innych kursów (które pewnie korzystały z innych kursów, ponieważ wiele rzeczy się w nich powtarza, a nikt o tym nie wspomina - przedstawiając każdy kurs jako swoje dzieło), z książek, materiałów z okresu studiów, zatem wykorzystuj ten kurs jak Ci się podoba. Jeśli uda Ci się na tym zarobić - chwała Ci, że Ci się to udało - kup mi Ferrari - będziemy kwita.

Kurs ten opracowałem w celach edukacyjnych i nie odnoszę żadnych korzyści materialnych.Nie biorę odpowiedzialności za wszelkie szkody powstałe w wyniku stosowania tego kursu. Wszystko robisz na własną odpowiedzialność, jak napiszesz programik który sformatuje (albo co gorsza zamaże) Ci dysk - TWOJA sprawa.

Wszelkie informacje i uwagi dotyczące kursu (zwłaszcza dotyczące błędów, literówek czy błędów ortograficznych) są dla mnie bezcenne i proszę przesyłać e-mailem jeśli łaska.

Przygodę z programowaniem rozpoczynałem od języka BASIC na maszynie Commodore 64, potem czas przyszedł na Fortran, Pascal-Delphi, C/C++, a obecnie przesiadłem się na GNU/GPL Linux i poznaje Perla i Javę. W sumie nie ma znaczenie jaki znasz język (no, może BASIC był wyjątkowy) - kwestia budowania algorytmów jest najważniejsza, implementacja to tylko zapis pomysłu.

Kurs wykorzystuje style kaskadowe(CSS), a menu ładuje skrypt (JavaScript). Dobra rozdzielczość to 1024x768.

Turbo Pascal w czasach wizualizacji dokonań swojej pracy, gdy skupiamy się nad efektownością a nie nad efektywnością swojej pracy jest postrzegany jako anachronizm. Niestety w obecnych czasach jest nim w istocie, ponieważ już dawno przestano używać DOS'a jako poważnego systemu operacyjnego. Używając okienkowego systemu zapominamy, że pośredniczy on tylko pomiędzy nami a komputerem, tłumaczy wszystkie nasze kliknięca na kod maszynowy - który jest prawdziwym językiem komputera.

Pisanie programu to sztuka porozumienia się z kimś w obcym dla nas języku, który często składa się jedynie z kilkudziesięciu słów (no może więcej :-) ). Musimy wytłumaczyć temu komuś (czyli naszemu biednemu komputerowi) jak wykonać daną czynność, o której on nie ma pojęcia. Do tego służy algorytm - czyli przepis postępowania. Wyobraźmy sobie, że musimy nauczyć komputer parzyć herbatę. Jak wyglądałby taki algorytm? Otóż: 1. Nalej wody do czajnika, 2. Postaw czajnik na gazie, 3. Podpal gaz, 4. Zaczekaj aż zagwiżdże. Proste, nie? Tylko skąd komputer ma wiedzieć co to jest czajnik? Nie mówiąc o slangowym "postaw na gazie". Ponieśliśmy pełną porażkę, ucząc komputer gotować wodę.

Jak komputer wykonuje wszystkie te operacje o które go grzecznie prosimy? Otóż system operacyjny i wszystkie programy których używamy są napisane w sposób który komputer zrozumie. Do tego służą języki programowania, a jednym z nich jest PASCAL. Pascal był kiedyś nazywany językiem wyższego rzędu. Dlatego, że w porównaniu do kodu maszynowego był zrozumiały dla czytelnika. Jego nowsza odmiana nosi nazwę Delphi i jest już zaawansowanym narzędziem programistycznym, lecz nie należy zapominać, że powstała właśnie z Pascal'a.

Delphi jest obiektowym językiem programowania zorientowanym na zdarzenia. Oznacza to, że programując w Delphi, musimy poznać jakie obiekty mamy do dyspozycji, oraz jak możemy je wykorzystać. PASCAL może wykorzystywać obiekty, ale w sensie algorytmizacji kodu jest znakomitym narzędziem do nauki. Przenoszenie procedur (programów) do Delphi jest kwestią kopiuj/wklej, oraz dostosowania specyficznych niuansów składniowych.

Mam jednak nadzieję, że Pascal nie upadnie, ponieważ jest znakomitym narzędziem do nauki algorytmiki swojej pracy, ponadto - ja akurat rozpocząłem od Pascala - znajomość jednego języka programowania gwarantuje nam (po zaznajomieniu się ze składnią innego języka) programowanie w dowolnym języku jak C, Perl czy Java. Kwestią jest przestawienie się na inne słownictwo, a podstawy, mechanizmy języka w większości pozostają te same.

Po napisaniu kodu języka wyższego rzędu, należy przetłumaczyć go na język zrozumiały dla komputera - do tego służą kompilatory języka na kod maszynowy (asemblery). Po skompilowaniu kodu dostajemy gotowy do używania program. Istnieję także dezasemblery, czyli programy które potrafią zaanalizować kod programu i przetworzyć go na dany język programowania.


Przy opisywaniu języka Pascal posługiwałem się trzema kursami znalezionymi w sieci (niestety znalazłem je jeszcze za studenckich czasów, zatem nie mogę powiedzieć kto jest autorem - nie zachowało mi się to), podręcznikiem, tzw."biblią" "Turbo Pascal 7.0" oraz własnymi doświadczeniami wyniesionymi z okresu studiów - wykładami i własnymi programami - w szczególności moja praca magisterska była napisana w Delphi (nt. Iteracyje metody rozwiązywania wielomianów - czy coś w tym stylu). Gdy teraz czytam swój własny kod sprzed kilku lat, nie ukrywam, że teraz napisałbym go w nieco bardziej elegancki sposób, ale pomińmy to. Zdaje sobie sprawę, że poruszyłem jedynie wierzchołek góry lodowej, ale przynajmniej go trochę uszczknąłem ;-).

 

 

 

 

 

Algorytmy i schematy blokowe

Program to dla komputera zestaw instrukcji co zrobić w danym wypadku. Przypomina to spis krok po kroku, co w danej sytuacji robić. Ten spis nazywamy algorytmem postępowania. Musi być on ułożony w sposób przewidujący wszystkie możliwe sytuacje (by program wykonujący algorytm nie zabrnął w ślepą uliczkę i się nie zawiesił) oraz w sensowny sposób prowadzący od danych wprowadzanych do danych wyjściowych.

Po zapisaniu algorytmu w języku programowania jest on tłumaczony przez kompilator na kod maszynowy, który jest już konkretnymi poleceniami dla procesora.

Schematy blokowe są najlepszą metodą nauki algorytmiki, ponieważ pozwalają na prześledzenie kolejnych posunięć programu podczas wykonywania naszych poleceń. Warto sobie ułożyć taki schemat, wiedząc jednak najpierw jakie sposoby możemy wykorzystać.

Język programowania oferuje nam kilka rodzajów poleceń, za pomocą których możemy dokonywać operacji logicznych. Są to instrukcje warunkowe w których możemy wykorzystywać bramki logiczne OR (lub), AND (i,oraz) i wynikającą z nich XOR (albo). Rolą instrukcji warunkowej jest rozstrzygnąć prawdziwość jakiegoś warunku i wykonanie odpowiednich instrukcji w zależności czy dany warunek jest prawdziwy czy też nie. Logika dwuwartościowa jest podstawą algorytmiki dowolnego problemu.

Jak rozpocząć pisanie programu komputerowego? Proste, należy uzbroić się w kartkę papieru, ołówek i gumkę. NIE ŻARTUJĘ! Jeśli ktoś rozpoczyna pisanie kodu od pisania kodu - to czeka go długa droga poprawiania kodu do optymalnego wyniku, czyli gdy względnie działa, i nie wiadomo dlaczego (a jest tak bardzo często!) - ale nas nie interesuje japońska metoda "jako-tako"

Prześledźmy algorytm na podstawie rozwiązania równania kwadratowego. Jest to najpowszechniejszy przykład celowego działania, uzależnionego w trakcie obliczeń od wyniku delty. Algorytm postępowania można zapisać w punktach:

POLECENIE: rozwiąż równanie kwadratowe ax2+bx+c=0

1. Wczytaj współczynniki a, b, c do programu
2. Oblicz deltę = b2 - 4ac
3. Jeśli delta > 0 to oblicz x1 x2
4. Jeśli delta = 0 oblicz x1/2
5. Jeśli delta < 0 to wyświetl komunikat "brak rozwiązań"
6. Podaj odpowiedź - wynik obliczeń.

co schematem blokowym możemy zapisać w sposób:

i od takiego rozrysowania sobie struktury programu powinniśmy rozpocząć naszą pracę. W trakcie kolejnych podpunktów, pokażę, jak taki program napisać...

Po ułożeniu algorytmu, jak i po napisaniu programu testujemy go, czy przewidzieliśmy wszystkie sytuacje, czy program będzie działał niezawodnie, czy (to chyba najważniejsze) liczy to co mu kazaliśmy. Nieocenioną tutaj metodą, jest "metoda kumpla" ponieważ nam brakuje często obiektywnego spojrzenia na nasze dzieło, a kolega potrafi zawiesić nasze super "idiotoodporne" algorytmy średnio w 15 sekund.

Testując sami nasz program, testujemy go na danych typowych (czy działa), na danych brzegowych (czyli szczagólnych sytuacjach), oraz na danych spoza zakresu działania (czyli na przykład wprowadzając przypadkowe czy błędne dane) by sprawdzić, czy program się gdzieś nie wysypie.

Pamiętajmy, że nasz program po napisaniu jest co najwyżej tak doskonały jak my sami (często nawet nie) zatem zawsze znajdzie się ktoś kto go rozłoży na łopatki, a zdarzy się że i zmiesza z błotem.

 

 

 

 

 

 

 

 

Środowisko programistyczne

Środowiskiem programistycznym Turbo Pascala jest edytor tekstu zintegrowany z kompilatorem języka, który zamienia plik źródłowy języka pascal formatu nazwa_pliku.pas na plik nazwa_pliku.exe jako pliku wykonywalnego. To przyjazne środowisko, które pozwala na edycję pliku źródłowego, jego kompilowanie oraz debugging czyli wyszukiwanie błędów.

Po zainstalowaniu pakietu oprogramowania Turbo Pascal uruchom plik turbo.exe w podkatalogu C:\BP\BIN\ lub C:\TP\BIN\. Jeśli Turbo Pascala będziesz używać na komputerze z procesorem Pentium Pro 200 MHz lub szybszym, należy zainstalować patch'a, czyli łatkę, bo inaczej wyskakiwać nam będzie cały czas błąd kompilacji!). Zatem przechodzimy do katalogu c:\tp\bin i wydajemy polecenie turbo.exe po czym ujrzymy:

gdzie komendy możemy wydawać za pomocą myszy lub skrótów klawiaturówych. Do menu możemy wchodzić także naciskając F10.

W poszczególnych menu możemy (opisuje tylko najprzydatniejsze polecenia):

Menu FILE:

·         NEW - tworzy nowy plik noname.pas

·         OPEN - otwiera dokument z dysku

·         SAVE - zapisuje plik *.pas

·         CHANGE DIR - zmienia katalog domyślny

·         OS SHELL - pozwala na czasowe opuszczenie środowiska i przejście do DOS, powrót do środowiska Pascal'a następuje po wpisaniu EXIT

·         QUIT - wyjście z środowiska Turbo Pascala

Menu EDIT:

·         CUT (del) - wycina zaznaczony tekst

·         COPY (ctrl+ins) - kopiuje tekst do schowka (clipboard)

·         PASTE (shift+ins) - wstawia tekst ze schowka

·         SHOW CLIPBOARD - pokazuje schowek

Zaznaczać tekst do operacji blokowych możemy za pomocą myszy, lub też za pomocą kursorów - przytrzymując klawisz SHIFT

Menu RUN:

·         RUN (ctrl+F9) - uruchamia program (uprzednio go kompilując)

·         TRACE INTO (F7) - wykonuje krok po kroku

·         USER SCREEN (alt+F5) - pokazuje ekran z wynikami działania programu

Menu COMPILE:

·         COMPILE (ctrl+F9) - kompiluje program

·         MAKE (F9) - kompiluje program wykonujęc plik *.exe

·         BUILD - kompiluje program do pliku *.exe wraz z bibliotekami

 

Kompilacja programów

Po napisaniu programu należy go skompilować, tzn. zamienić w postać plik.exe za pomocą polecenia MAKE lub BUILD. W przypadku błędów, kompilacja nie powiedzie się, a my zostaniemy powiadomieni komunikatem, jaki błąd wystąpił.

Błędy możemy podzielić na dwie grupy:
składniowe błędy łatwo wychwycić, ponieważ zwykle jest to brak średnika, literówka czy niedomknięty nawias lub źle zastosowana pętla czy instrukcja, ale znacznie poważniejsze są błędy logiczne popełnine przy pisaniu kody, wynikające z niedoskonałości algorytmu. Takie błędy mogą przejść kompilację, a następnie zawieszać program i powodować generowanie przez program absurdalnych wyników.

Jeśli będziesz chciał obserwować poszczególne etapy działania programu, możesz użyć klawisza F8. Wówczas aktualnie wykonywana instrukcja będzie podświetlana w edytorze na zielono, a przejście do wykonania kolejnej instrukcji będzie się odbywać przez kolejne wciskanie F8. Taki sposób uruchamiania programu nazywa się uruchamianiem krokowym (debuging). Obserwować można także wartości zmiennych podczas działania programu - czyli warto zapoznać się z menu DEBUG.

 

 

 

 

 

 

 

 

 

 

 

Struktura programu

Pisząc program, dzielimy poszczególne części kodu, i zapisujemy je w postaci procedur i funkcji. Są to jakby gotowe podprogramy do wielokrotnego wywołania, tak by kod zyskał na czytelności. Na początku nie będziemy używać procedur i funkcji, lecz napiszemy program bezpośrednio jako program główny, ale w trakcie jak będziemy rozwijać naszą wiedzę programistyczną, skupimy się na projektowaniu procedur i funkcji oraz ich późniejszym wykorzystaniu.

Piszą program nie wolno zapomnieć o stosowaniu wcięć (tabulcji) układanego kodu, co pozwala nam później dokonywanie poprawek w przejrzystym i eleganckim kodzie. Jeśli program będziemy pisać byle jak, nie używając komentarzy, to zaglądając do niego po roku czy nawet kilku latach nie będziemy nawet rozumieli - o co nam wtedy chodziło?

Program składa się z danych (zapisanych pod postacią stałych (const) i zmiennych (variables)), instrukcji (czyli krok po kroku zapisanych poleceń naszego ułożonego wcześniej algorytmu), komentarzy podawanych w nawiasach { } (by zrozumieć o co nam chodziło w danej linijce kodu) oraz sposoby podawania wyników obliczeń (wyświetlenie go na ekranie, czy zapisanie go do pliku).

Struktura programu:

 

  program nazwa_programu;             {nasza nazwa programu}

    uses nazwa_modułu, nazwa_modułu;  {moduły to biblioteka gotowych

                                                 procedur,np.:crt,graph}

 

    type nazwa_typu = definicja_typu; {możemy tworzyć własne typy zmiennych} 

    const nazwa_stałej:typ_stałej=wartość_stałej;

 

    var nazwa_zmiennej:typ zmiennej;  {deklaracje zmiennych globalnych}

 

    procedure nazwa_procedury(parametry);

    function  nazwa_funkcji(parametry) : typ_zwracanego_wyniku;

 

  begin {początek programu głównego gdzie znajdują się instrukcje}

 

                                                          [--- kod programu - instrukcje ---]

 

  end.  {koniec programu głównego z obowiązkową kropką! }

naturalnie pisząc program wykorzystujemy jedynie te elementu które są nam potrzebne. Niezbędna jest deklaracja

program nazwa; begin end.

i to już w zupełności wystarczy. Zauważyć należy, że linie kodu kończymy średnikiem (;), za wyjątkiem begin i ostatniego end który jest z kropką - oznaczającą koniec kodu. Ale nie polecam pisania kodu w sposób pseudooszczędny, czyli w jednej linii, ponieważ jest wtedy nieczytelny, a wcięcia (tabulacje) są nieocenione.

Pierwszy program

I nadszedł czas na napisanie pierwszego, w pełni funkcjonalnego programu, który będzie wyświetlał napis "To mój pierwszy program"

 

program wizytowka;

   begin

        writeln ('To moj pierwszy program '); 

   end.

procedura wbudowana w pascal'a (nie trzeba deklarować dla niej modułu który ją zawiera) czyli writeln i jej wersja nie przechodząca po wyświetleniu tekstu do następnej linijki write jest procedurą wyświetlającą podany tekst (ujęty w apostrofach) na ekranie. Po uruchomieniu (ctrl+F9) ekran nam mignie i... nic się nie stanie, ponieważ program wykonał się tak szybko, że nic nie zauważyliśmy. Możemy podejrzeć wyniki jego działania (alt+F5) na wirtualnym ekranie, lub do naszego programu dodać linię readln która będzie oczekiwać na podanie danych (i naciśnięcie klawisza enter) a nam pozwoli podglądać działanie programu.

 

program wizytowka;

   begin

        writeln ('To moj pierwszy program '); 

                            readln;

   end.

gdzie porocedura readln też jest standardowym elementem pascala, służącą do pobierania danych i przechowywanie ich w postaci zmiennej. W naszym przypadku nie podaliśmy jej żadnych argumentów - po prostu postawiliśmy po niej średnik - co spowoduje zatrzymanie programu do naciśnięcia klawisza ENTER.

Warto także pamiętać, że procedura write wyświetli nam tekst i kursor ustawi po tekście, a procedura writeln wyświetli tekst i ustawi kursor na początku następnej linii. Podobne zasady odnoszą się do read i readln.

 

Zmienne proste

Warto przed sobą przyznać, że napisanie programu, który wyświetli napis nie jest jeszcze pisaniem użytecznych programów. Nie wnosi on nic nowego, nie wykonuje żadnych operacji czy obliczeń. Ale aby program mógł wykonywać obliczenia, należy dostarczyć mu danych, które on musi gdzieś przechowywać, a następnie musi w jakiś sposób (wyświetlając na ekranie, czy zapisując do pliku) podawać nam wyniki naszej pracy. Mechanizmem obsługi danych są zmienne, czyli rezerwacje miejsca w pamięci komputera, do których możemy zapisywać informacje.

Stwórzmy program, który poprosi o podanie dwóch liczb, doda te liczby, oraz wyświetli ich sumę na ekranie:

 

   program dodawanie ;

 

              var liczba1 , liczba2 , suma : integer ;

 

    begin

             write ( ' Podaj pierwszą liczbę : ' ) ;

             readln ( liczba1 ) ;

             write ( ' Podaj drugą liczbę : ' ) ;

             readln ( liczba2 ) ;

 

        suma : = liczba1 + liczba2 ;

 

         writeln ('Suma liczby ',liczba1, ' i liczby ',liczba2,' wynosi: ',suma);...

Zgłoś jeśli naruszono regulamin