Pascal {Opracowała Małgorzata Roguska} Tematy lekcji: c) Ogólne omówienie Pascala, d) rodowisko Borland Pascala 7.0 (BP 7.0), e) Struktura programu w Pascalu, a. identyfikatory b. słowa kluczowe c. literały d. program główny e. zmienne f) Instrukcje wejcia/ wyjcia, a. write i writeln b. read i readln g) Instrukcje: a. instrukcja złoona b. instrukcja warunkowa c. instrukcja przypisania 1. Ogólne omówienie Pascala. Jzyk programowania Pascal stworzył profesor Niklaus Wirth. Pierwszy opis jzyka opublikowano w roku 1971. Pascal jest bardzo starannie zaprojektowanym jzykiem, o przejrzystej składni i jasnej semantyce. Standard jzyka ma jedynie 11 instrukcji (wliczajc w to instrukcj pust). Inn zalet Pascala jest wygodny i elastyczny zestaw typów danych. Pascal jest z załoenia jzykiem kompilowanym, to znaczy, e programy napisane w tym jzyku naley najpierw skompilowa, a dopiero potem mona je uruchamia. Takie rozwizanie ma dwie wane zalety. Po pierwsze, w czasie kompilacji mona wykry duo błdów, które w jzyku interpretowanym mogłyby pozosta ukryte. Po drugie, skompilowane programy wykonuj si znacznie szybciej ni programy interpretowane. Proces kompilacji jest wykonywany przez kompilator (a wic automatycznie). Pascal mimo tego, e stworzono go jako jzyk dla celów akademickich, szybko zdobył sobie bardzo du popularno i jest obecnie jednym z powszechnie stosowanych jzyków. Powstało bardzo duo implementacji Pascala dla praktycznie wszystkich komputerów i systemów operacyjnych. My bdziemy uywa zintegrowanego rodowiska firmy Borland (wersja 7.0). Pascal jest jzykiem starym - wier wieku w informatyce to niemale wieczno. Jednak okazało si, e zwycisko przeszedł prób czasu. Współczesne realizacje tego jzyka róni si od standardu w zasadzie tylko rozszerzeniami. Najwaniejsze z tych rozszerze to: - moduły, - pliki o dostpie bezporednim, - napisy, - elementy programowania obiektowego, 1
- elementy programowania wizualnego. Poniewa bdziemy uywa Pascala firmy Borland (wersja 7.0), to od tego miejsca wszystkie uwagi dotyczce Pascala bd si odnosi do tej włanie realizacji (o ile nie zostanie specjalnie zaznaczone, e jest inaczej). Borland Pascal 7.0 to nie tylko kompilator jzyka Pascal. Jest tu dodatkowo midzy innymi edytor, debugger i system podpowiedzi. Co wicej s tu a trzy kompilatory Pascala: - dwa dla systemu DOS (z punktu widzenia tego wykładu jednakowe): turbo.exe i bp.exe (o wikszych moliwociach). - dla systemu Windows: bpw.exe. My bdziemy uywa wersji DOSowej. Uruchomienie Pascala polega po prostu na wywołaniu odpowiedniego pliku (np. turbo.exe). Cały czas pracujc w rodowisku BP jestemy w edytorze. Wykonywanie programów nie wymaga wychodzenia z edytora. Oto najkrótszy poprawny program w Pascalu: end. Mona go skompilowa i uruchomi. Niestety ten program nic nie robi. Oto najkrótszy program w Pascalu, który co robi: writeln('cze!'); end. Zanim zajmiemy si dokładniej Pascalem, omówimy edytor. 2. rodowisko BP 7.0 Edycja tekstu programów. Tekst programu edytujemy w oknie. Mona otwiera naraz wiele okien. Kade okno (precyzyjniej: pierwsze 9 okien) ma numer. Przechodzenie midzy oknami: klawisz F6 (nastpne okno) lub klawisze Alt i jednocyfrowy numer okna. Kade okno ma: - ikon słuc do zamykania (na górze po lewej), - nazw edytowanego pliku, - numer okna (pierwsze 9 okien), - ikon powikszania/pomniejszania, - suwaki: pionowy i poziomy, - numer biecego wiersza i kolumny, - znacznik informujcy o tym, czy bieca wersja tekstu programu jest zapisana na dysku. 2
Takie operacje jak zmiana rozmiaru, przesuwanie i zamykanie okien oraz przewijanie w nich tekstu mona wykonywa przy pomocy myszy (czyli tak jak w Windows). Najwaniejsze komendy edytora: - strza³ki kursorów, PgUp, PgDown, Home, End, Delete, Bkspace, Insert, - Ctrl/ PgUp (Ctrl/ PgDn): pocztek (koniec) tekstu programu, - Ctrl/Y: usuwa cały wiersz, - Ctrl/T: usuwa od kursora do koca słowa (jeli nie w słowie, to do pocztku słowa), - F2: zapisanie edytowanego tekstu na plik, - F3: wczytanie z pliku, - Operacje blokowe: Ctrl/KB: zaznaczenie pocztku bloku, Ctrl/KK: zaznaczenie koca bloku, Ctlr/KC: skopiowanie zaznaczonego bloku w miejsce kursora, Ctrl/KV: przeniesienie zaznaczonego bloku w miejsce kursora, Ctrl/KH: ukrycie/pokazanie podwietlenia zaznaczonego bloku, Ctrl/KY: usunicie całego bloku, Ctlr/KI: przesunicie całego bloku o jedn kolumn w prawo, Ctlr/KU: przesunicie całego bloku o jedn kolumn w lewo, Kopiowanie i przenoszenie bloków mona te wykonywa inaczej: Shift/strzałki kursorów, PgUp, PgDn: zaznaczanie, Wcinity lewy przycisk myszy/ruch mysz: zaznaczanie, Shift/Delete : wytnij, Ctrl/Insert : kopiuj, Shift/Insert : wklej. Lub jeszcze inaczej (p. menu Edit). - F1: wywołanie systemu podpowiedzi, - Ctrl/F1: wywołanie opisu identyfikatora wskazanego kursorem, - Alt/F1: przypomnienie ostatnio ogldanego ekranu podpowiedzi. - F9: kompilowanie programu, - Ctrl/F9: uruchomienie programu (i skompilowanie, jeli to konieczne), - Alt/F5: ogldanie ekranu z wynikami pracy naszego programu, - F10 (lub mysz): przejcie do menu, - Alt/X: zakoczenie pracy w rodowisku. 3. Struktura programu w Pascalu Kady program w Pascalu składa si z: 1) Nagłówka (nieobowizkowego), 2) Deklaracji (stałych, zmiennych, typów, procedur i funkcji), 3) Programu głównego. a) Identyfikatory: Do nazywania rónych obiektów w programie Pascalowym uywamy identyfikatorów. Kady identyfikator to cig liter, cyfr i znaków podkrelenia, zaczynajcy si od litery lub znaku podkrelenia. 3
Np. Licznik i J_23 s identyfikatorami, ale 1xyz nie jest, za xy z to dwa identyfikatory (xy i z). Identyfikator moe by dowolnie długi, ale znaczenie maj tylko pierwsze 63 znaki. Uwaga: Pascal nie rozrónia w identyfikatorach wielkich i małych liter. b) Słowa kluczowe: Niektóre identyfikatory w jzyku Pascal s zastrzeone. Nazywamy je słowami kluczowymi. Takich identyfikatorów nie mona samemu definiowa. Przykładem słowa kluczowego jest identyfikator, który widzielimy w naszym pierwszym programie. c) Literały: W programie Pascalowym moemy uywa liczb. Np. -12, 345, 0 s przykładami liczb całkowitych, za 12.34, -12e67 s liczbami rzeczywistymi (Pascal wyrónia wród liczb rzeczywistych liczby całkowite, bdziemy jeszcze o tym mówi). Moemy take uywa napisów (tekstów), otaczajc je apostrofami, np. 'to jest jeden długi napis'. (Inne rodzaje literałów poznamy póniej). d)program główny: Program główny składa si z cigu instrukcji otoczonych z przodu słowem kluczowym, za z tyłu słowem kluczowym end i znakiem kropki. Poszczególne instrukcje s oddzielone od siebie znakiem ;. Wykonanie całego programu polega na wykonaniu jedna po drugiej wszystkich instrukcji programu głównego (zgodnie z ich semantyk). e) Zmienne: Istot programów napisanych w jzykach takich jak Pascal jest zmienianie wartoci zmiennych. Zmienna jest par: identyfikator i warto. Przez identyfikator moemy si odwoływa do wartoci zmiennej. Jak sama nazwa wskazuje, zmienne mog zmienia swoj warto podczas wykonywania programu. Bardzo wane jest zapamitanie, e kada zmienna zawsze podczas wykonywania programu ma jak warto. W szczególnoci na samym pocztku wykonywania programu zmienne maj jakie wartoci, których my nie znamy. Takie zmienne nazywamy nie zainicjalizowanymi. Fizycznie zmienne s pamitane w pamici operacyjnej komputera, a kada zmiana ich wartoci polega na zmianie zawartoci odpowiednich komórek pamici operacyjnej. W Pascalu z kad zmienn zwizany jest jej typ. Typ zmiennej okrela jakie operacje mona na niej wykonywa. Zmienna nie moe zmieni swojego typu podczas wykonywania programu. Typ zmiennej definiujemy przy jej deklarowaniu. W Pascalu kada zmienna musi by zadeklarowana. Deklaracja zmiennej musi tekstowo poprzedza wszystkie uycia tej zmiennej. Deklaracje zmiennych poprzedzamy słowem kluczowym var, potem wypisujemy zmienne i, po dwukropku, ich typy. Kad deklaracj koczymy rednikiem. Na przykład: var i: integer; j: integer; r: real; 4
s: string; Typ integer to typ liczb całkowitych, real to typ liczb rzeczywistych, string to typ tekstu. (Wicej o tych i innych typach póniej.) Pierwsze dwie deklaracje mona zapisa krócej: var i, j: integer; r: real; s: string; 4. Instrukcje wejcia/wyjcia: c) Write i writeln Kady sensowny program musi w jaki sposób wypisywa swoje wyniki, zwykle te musi wczytywa dane z wejcia. Wypisywanie wyników realizuje w Pascalu operacja Write. Jej działanie polega na wypisywaniu na ekran wartoci jej argumentów. Oto kilka przykładów: Write( 12 ); wypisze: 12 Write( 'ala' ); wypisze: ala Write( i ); wypisze (o ile i jest zmienn typu integer o wartoci 13): 13 Write( 3*i + 2); wypisze (przy załoeniu jak wyej): 41 Write( 'i = ',i); wypisze (przy załoeniu jak wyej.): i = 13 Jeli chcemy, aby wyniki znalazły si w rónych wierszach, moemy uy operacji writeln. Powoduje ona przejcie do nowego wiersza wydruku. Ponadto mona stosowa nastpujcy skrót, zamiast: Write( <argumenty> ); Writeln; mona pisa: Writeln( <argumenty> ); gdzie <argumenty> to lista wypisywanych wyrae. Writeln; Writeln('Czeœæ!); Writeln('Czy wiesz, e 2 * 2 = ', 2*2, '?'); end. Moemy poda szeroko pola na którym ma by wypisana liczba. Załómy, e zmienna całkowita i ma warto 13. Wówczas: Writeln('*', i, '*'); wypisze: *13* Writeln('*', i:5, '*'); wypisze: * 13* Dla liczb rzeczywistych mona ponadto poda liczb miejsc po przecinku. Załómy, e zmienna rzeczywista r ma warto 12.345. Wówczas: Writeln('*', r, '*'); wypisze: * 1.2345000000E+01* 5
Writeln('*', r:8, '*'); wypisze: * 1.2E+01* Writeln('*', r:5:2, '*'); wypisze: *12.35* b) Read i readln Do czytania słuy operacja Read. Jej działanie polega na wczytaniu z klawiatury wartoci i przypisaniu ich zmiennym wymienionym jako argumenty. (Przypomnijmy, e argumentami Write mog by dowolne wyraenia, a nie tylko zmienne, tak jak przy Read.) Oto kilka przykładów: Read(j); Wczyta z wejcia warto całkowit i przypisze j na zmienn j (o ile j jest zadeklarowane jako zmienna typu integer). Read(r,j); Wczyta najpierw warto rzeczywist, potem warto całkowit i przypisze te wartoci zmiennym r oraz j (przy załoeniu, e r jest zmienn typu real, za j typu integer). Czasami chcemy czyta nastpne dane z nowego (a nie biecego) wiersza. Do przejcia do nastpnego wiersza słuy operacja Readln. Znów mona uywa skrótu i zamiast: Read(<argumenty>); Readln; pisa: Readln(<argumenty>); gdzie <argumenty> to lista zmiennych. var i1, i2: integer; Imie: string; Writeln('Pocztek programu'); Write('Podaj swoje imi: '); Readln(Imie); Writeln('Cze ', Imie); Write('Podaj pierwsz liczb : '); Readln(i1); Write('Podaj drug liczb : '); Readln(i2); Writeln('Suma liczb ', i1, ' i ', i2, ' wynosi: ', i1+i2, '.'); end. 5. Instrukcje: a) Instrukcja złoona: Składa si ze słowa kluczowego, cigu instrukcji rozdzielonych rednikami i słowa kluczowego end (zatem program główny jest instrukcj złoon, po której nastpuje kropka). Write('Podaj liczb:'); Readln(i); end Wykonanie tej instrukcji polega na kolejnym wykonywaniu poszczególnych instrukcji (zgodnie z ich semantyk). 6
b) Instrukcja warunkowa: Składa si ze słowa kluczowego if, warunku (czyli wyraenia, które daje warto prawda lub fałsz), słowa kluczowego then i pojedynczej instrukcji: if <warunek> then <instrukcja> Wykonanie tej instrukcji polega na wyliczeniu warunku i, jeli jest prawdziwy, wykonaniu instrukcji, w przeciwnym wypadku nic si nie dzieje. Write('Podaj dzielnik: '); Readln(i); if i = 0 then Writeln('Dzielnik nie moe by zerem!'); Ta instrukcja moe te mie drug posta, w której okrelamy, co ma si dzia, gdy warunek bdzie fałszywy. Oto schemat tej drugiej postaci: if <warunek> then <instrukcja> else <instrukcja> Write('Podaj liczb dodatni: '); Readln(i); if i > 0 then Writeln('Podałe poprawn liczb: ', i) else Writeln('Podałe błdn liczb (', i, '<= 0)'); c) Instrukcja przypisania: Zmiennym mona nadawa wartoci nie tylko przy pomocy operacji Read. Zamiast wczytywa now warto zmiennej z wejcia, mona j poda bezporednio w programie. Instrukcja przypisania składa si z identyfikatora zmiennej, znaku przypisania (:=) oraz wyraenia, którego warto ma by przypisana na zmienn. Oto schemat tej instrukcji: <zmienna> := <wyraenie> Wykonanie polega na wyliczeniu wartoci wyraenia z prawej strony i przypisaniu jej na zmienn podan po lewej stronie. Oto przykłady: i := 7; Na zmienn i przypisujemy warto 7 7
j := i*5 + 2; Na zmienn j przypisujemy warto wyraenia i*5 + 2, czyli (jeli i ma warto 7) 37. Uwaga: Typ wyraenia po prawej stronie musi by zgodny z typem zmiennej wystpujcej po lewej stronie. 8
Zadania przykładowe do omówionych tematów lekcji z Paccala: Zad 1. Napisz program wypisujcy: Cze to ja Pascal. Zad 2. Napisz program pytajcy uytkownika o imi i wypisujcy tekst: <wczytane imi>, czy lubisz Pascala? Zad 3. Napisz program wczytujcy po kolei: imi, nazwisko i dat urodzenia (za kadym razem program ma prosi o podanie danych), a nastpnie wypisujcy wszystkie wczytane dane. Zad 4. Napisz program rozwizujcy równanie liniowe. Dialog z uytkownikiem winien wyglda nastpujco: Program rozwizujcy równania liniowe a*x + b = 0. Podaj współczynnik a: 2 Podaj współczynnik b: 4 Rozwizaniem jest x = -2.0 Program powinien sygnalizowa błd, gdy a ma warto 0. Zad 5. Napisz program rozwizujcy równania kwadratowe. Program powinien: - przedstawi si, - zapyta uytkownika po kolei o wszystkie współczynniki, - rozwiza równanie i poinformowa: - czy w ogóle s rozwizania, - czy nie podano równania liniowego, - czy znaleziono jeden czy dwa pierwiastki, - poda wyniki (jeli udało si je policzy). 9