Kurs Pascal - II. Pobieranie, formatowanie i wyświetlanie danych

D.F.

Były Moderator
Dołączył
Listopad 4, 2009
Posty
493
I. Wstęp

Witaj. W tej części kursu zajmiemy się czymś praktycznym, czyli pobieraniem danych od użytkownika oraz ich wyświetlaniem. Poznasz podstawowe procedury służące do wyświetlania i pobierania danych.


II. Pobieranie i wyświetlanie danych

Teraz podam kilka procedur, a następnie przedstawię kod kilku programów korzystających z tych procedur. Niektóre z nich będą pochodziły z biblioteki CRT, zatem jeśli chcemy ich użyć, należy dodać jej nazwę po słowie uses i zakończyć średnikiem. Przy procedurach pochodzących z biblioteki CRT zaznaczyłem to w nawiasie, natomiast reszta procedur pochodzi z domyślnie dołączonego modułu System.

Write - wyświetla podane wartości w oknie konsoli. Wartości możemy oddzielić przecinkiem.

Przykładowe wywołania:
Write('Witaj!'); //wypisuje na ekran tekst Witaj!
Write('Wynik: ',suma); //wypisuje na ekranie tekst Wynik:, a obok wartość zmiennej suma
Write(liczba); //wyświetla wartość zmiennej liczba
Write(liczba:10:2); //wyświetla wartość zmiennej liczba
//zaokrągloną do 10 miejsc przed kropką i dwóch po kropce
//(zakładając, że zmienna zawiera liczbę zmiennoprzecinkową)

W ostatnim przykładowym wywołaniu widzimy wyświetlanie liczb z podaną precyzją. Robimy to poprzez podanie wartości i po pierwszym dwukropku piszemy do ilu cyfr ma wyświetlić przed kropką (jeżeli cyfr jest mniej, wypełni te miejsca spacjami), a po drugim dwukropku piszemy ile miejsc po kropce ma zostać wyświetlonych.

WriteLn - podobnie do Write, wyświetla wartości podane za parametry, różni się tym, że przechodzi do następnej linii.

Przykładowe wywołania:
WriteLn('Witaj!'); //wypisuje na ekran tekst Witaj! i przechodzi do kolejnej linii
WriteLn; //przechodzi tylko do następnej linii

Read - zatrzymuje program i oczekuje na wprowadzenie danych przez użytkownika, które zapisuje do podanej za parametr zmiennej.

Przykładowe wywołania:
Read(znak); //czeka na wprowadzenie danych i zapisuje je do zmiennej o nazwie znak, nie przechodzi do następnej linii
Read(znak2); //czeka na wprowadzenie danych i zapisuje je do zmiennej o nazwie znak2, nie przechodzi do następnej linii
Read; //zatrzymuje działanie programu do czasu wciśnięcia klawisza, nie zapisuje nigdzie wprowadzonych wartości

ReadLn - podobnie do procedury Read, zatrzymuje program i czeka na wprowadzenie danych, po wprowadzeniu ich przechodzi do kolejnej linii

Przykładowe wywołania:
ReadLn(tekst); //czeka na wprowadzenie danych i zapisuje je do zmiennej tekst, po wprowadzeniu danych przechodzi do kolejnej linii
ReadLn(); //przenosi kursor do nowej linii i czeka tylko na naciśnięcie klawisza

ClrScr (z biblioteki CRT) - czyści okno konsoli i ustawia kursor w pozycji 0,0

Wywołanie:
ClrScr(); //lub bez nawiasów: ClrScr;

GotoXY (z biblioteki CRT) - ustawia kursor na podane poprzez parametry współrzędne. Wymiary okna konsoli to 80 kolumn na 25 wierszy.

Przykładowe wywołania:
GotoXY(10,7); //przenosi kursor do 10 kolumny i 7 wiersza
GotoXY(80,25); //przenosi kursor do 80 kolumny i 25 wiersza


Podam również kilka procedur nie związanych z wyświetlaniem danych, ale również użytecznych:

Delay (z biblioteki CRT) - zatrzymuje działanie programu na czas podany za parametr w milisekundach (1 sekunda = 1000 milisekund).

Przykładowe wywołanie:
Delay(2000); //zatrzyma program na dwie sekundy

Sound (z biblioteki CRT) - włącza sygnał dźwiękowy o podanej za parametr częstotliwości (parametr to liczba typu word).

Przykładowe wywołanie:
Sound(2000); //włączy się sygnał dźwiękowy o częstotliwości 2000

NoSound (z biblioteki CRT) - włącza sygnał dźwiękowy o podanej za parametr częstotliwości (parametr to liczba typu word).

Przykładowe wywołanie:
NoSound(); //wyłączy sygnał dźwiękowy

Halt - zamyka program i powraca do systemu

Wywołanie:
Halt(); //lub bez nawiasów: Halt;


III. Przykładowe programy

Teraz napiszmy prosty program, który zapyta użytkownika o jego imię, a następnie pozdrowi go słowami Witaj <imię>! Najpierw przedstawię kod programu, który zaraz opiszę.

Kod:
 program Hello;

 uses CRT;

 var
   szName : String;
 begin
   ClrScr();
   WriteLn('Podaj swoje imię:');
   ReadLn(szName);
   WriteLn('Witaj ',szName,'!');
   ReadLn();
 end.

W programie powyżej widzimy zadeklarowaną zmienną o nazwie szName, zmienna jest typu napisowego (String). Niżej widzimy wywołanie procedury ClrScr(), która czyści ekran konsoli. Nawias przy jej wywołaniu jest pusty, gdyż nie przyjmuje ona żadnych parametrów. Niżej została użyta procedura WriteLn(), której w nawiasie podaliśmy za parametr tekst 'Podaj swoje imię:'. Dalej jest procedura ReadLn(), której w nawiasie podaliśmy zmienną do której ma zostać zapisany pobrany od użytkownika tekst. Dalej jest ponowne wywołanie procedury WriteLn(), jednak tym razem podaliśmy jej jako parametry trzy napisy, oddzielone przecinkiem, które zostaną wyświetlone jeden obok drugiego. Dalej jest wywołanie procedury ReadLn(), jednak bez parametrów. Została ona użyta tutaj do zatrzymania programu do czasu wciśnięcia klawisza, aby móc zobaczyć rezultat.



Poprzedni program operował na napisach, dlatego ten będzie operował na liczbach. Prezentuje on sposób wyświetlania liczb zmiennoprzecinkowych (ułamków) z podaną dokładnością.

Kod:
 program Liczby1;

 uses CRT;

 const
   PiValue = 3.14159265358979320;
 begin
   ClrScr();
   WriteLn('Liczba Pi z dokladnoscia do dwoch miejsc po kropce: ',PiValue:1:2);
   ReadLn();
 end.

W powyższym programie widzimy zadeklarowaną stałą zawierającą wartość liczby Pi z dokładnością do 17 miejsc po kropce. W głównym kodzie programu możemy zobaczyć procedurę czyszczącą ekran, a dalej procedurą wyświetlającą wartość stałej o nazwie PiValue z dokładnością do jednego miejsca przed kropką i dwóch miejsc po kropce. Przy okazji dodam, że istnieje funkcja o nazwie Pi(); zwracająca przybliżoną wartość liczby Pi.



Kolejny program działający na liczbach. Ten prezentuje kilka prostych działań arytmetycznych wraz z wyświetleniem rezultatu.

Kod:
 program Liczby2;

 uses CRT;

 var
   A,B : Integer;
 begin
   ClrScr();
   WriteLn('Podaj pierwsza liczbe: ');
   Read(A);
   WriteLn('Podaj druga liczbe: ');
   Read(B);
   WriteLn('Suma liczb ',A,' i ',B,' wynosi ',A+B);
   WriteLn('Różnica liczb ',A,' i ',B,' wynosi ',A-B);
   WriteLn('Iloczyn liczb ',A,' i ',B,' wynosi ',A*B);
   WriteLn('Iloraz liczb ',A,' i ',B,' wynosi ',A/B);
   WriteLn('Przyblizony iloraz liczb ',A,' i ',B,' wynosi ',A/B:10:5);
   WriteLn('Reszta z dzielenia liczby ',A,' przez ',B,' wynosi ',A mod B);
   ReadLn();
 end.

Powyższy kod po kolei: czyści ekran, wyświetla komunikat proszący o podanie pierwszej liczby, pobiera i zapisuje tą liczbę w zmiennej A, wyświetla komunikat proszący o podanie drugiej liczby, zapisuje tą wartość w zmiennej B, a następnie wyświetla wyniki kilku działań arytmetycznych wykonanych na podanych liczbach. Widzimy tam dodawanie, odejmowanie, mnożenie, dzielenie, zaokrąglony wynik z dzielenia (jeżeli liczby nie są podzielne) oraz resztę z dzielenia (obliczamy ją korzystając z operatora mod).


IV. Zakończenie

To już wszystko w tej części kursu programowania w Pascalu. Dziękuję.
 
Do góry Bottom