5. KOMUNIKACJA PROGRAMU Z UŻYTKOWNIKIEM
5.1. Odczyt wartości, które użytkownik wprowadza z klawiatury
Do odczytu przez program wartości wprowadzonej z klawiatury i zapamiętania jej w odpowiedniej zmiennej służy instrukcja wywołania procedury o nazwie Readln (od ang. read line− czytaj wiersz).
Readln(X);
W tej instrukcji Readln jest nazwą wywoływanej procedury odczytu, natomiast napisany w nawiasie argument procedury X jest nazwą zmiennej, w której ma być przechowana odczytana z klawiatury wartość.
Zmienna X może być typu liczbowego, znakowego lub łańcuchowego.
Współpraca użytkownika z programem przy wykonywaniu instrukcji Readln przebiega, jak następuje:
Instrukcja zatrzymuje program, który czeka na reakcję użytkownika.
Użytkownik naciska kolejno klawisze, wpisując wartość, jaką chce nadać zmiennej X. Wpisywane znaki są widoczne na ekranie, co umożliwia kontrolę i poprawienie zapisu w przypadku pomyłki.
Gdy zapis wprowadzanej wartości jest kompletny, użytkownik naciska klawisz <Enter>.
Wprowadzona wartość zostaje przypisana zmiennej X. Dawna wartość X zostaje wymazana.
Program przechodzi do wykonania kolejnej instrukcji programu głównego.
Uwaga: Procedura Readln może mieć wiele argumentów, oddzielonych przecinkami, np:
Readln(X,Y,Z);
Wszystkie argumenty muszą być nazwami zmiennych.
Wprowadzane z klawiatury argumenty oddzielamy od siebie, naciskając klawisz spacji, tabulacji, lub <Enter>.
Po wprowadzeniu wszystkich argumentów naciskamy klawisz <Enter>.
Zalecenia praktyczne:
Unikamy używania instrukcji Read zamiast Readln.
Zastępujemy wieloargumentowe instrukcje Readln sekwencją kilku wywołań jednoargumentowych.
Unikamy łączenia w jednej instrukcji argumentów różnych typów. w szczególności liczbowych ze znakowymi lub łańcuchowymi.
5.2. Wyprowadzanie danych na ekran za pomocą instrukcji Write, Writeln
Dla wyprowadzenia danych na ekran stosujemy instrukcję wywołania procedury Write (ang. write - pisz) lub Writeln( ang. write line - pisz wiersz).
Write(A1,A2, ... An);
Writeln(A1,A2, ... An);
Argumenty A1..An służą do określenia danych, które są kolejno wyprowadzane na ekran. Liczba argumentów oddzielanych przecinkami jest dowolna.
Typy argumentów mogą być różne - liczbowe, znakowy, logiczny, łańcuchowy, przy czym:
argument Ai może być:
stałą jawną tj. konkretną liczbą, wartością logiczną (True, False), znakiem, napisem,
nazwą stałej, wcześniej zdefiniowanej w programie,
nazwą zmiennej,
wyrażeniem,
wywołaniem funkcji.
Stałe jawne są wyprowadzane na ekran bez zmian.
W przypadku stałych definiowanych lub zmiennych, instrukcja wypisze definiowaną wartość stałej lub pobraną z pamięci aktualną wartość zmiennej.
Gdy argumentem jest wyrażenie, instrukcja Write lub Writeln obliczy jego wartość i na ekran zostanie wyprowadzony końcowy wynik.
Jeśli argument jest funkcją, to zostanie ona wywołana, a na ekranie ukaże się zwracana przez nią wartość.
Przykład
Write
('3 razy 3 to ',3*3,', a 11 razy 11 to ',Sqr(11),'.');
Na ekranie (rozpoczynając od aktualnego położenia kursora), zostanie wydrukowany napis:
3 razy 3 to 9, a 11 razy 11 to 121.
5.3.Wyprowadzanie wartości zmiennych rzeczywistych. Parametry „długość” oraz „liczba pozycji”
Przykłady:
Wyprowadzanie liczby w notacji wykładniczej
Writeln('Sqrt(2)+1=',Sqrt(2)+1);
Na ekranie pojawi się tekst: Sqrt(2)+1=2.4142135624E+00
|
Użycie parametru „długość”dla liczb całkowitych
Writeln(5:2,Sqr(5):10); Writeln(10:2,Sqr(10):10); Writeln(20:2,Sqr(20):10); Writeln(30:2,Sqr(30):10); Writeln(40:2,Sqr(40):10);
{Na ekranie pojawi się tekst: 5 25 10 100 20 400 30 900 40 1600 _ }
|
Wykorzystanie parametrów „długość” i „ liczba pozycji” dla liczb rzeczywistych
Writeln(Sqrt(3)); Writeln(Sqrt(3):12:1); Writeln(Sqrt(3):12:2); Writeln(Sqrt(3):12:3); Writeln(Sqrt(3):12:4); Writeln(Sqrt(3):12:5); Writeln(Sqrt(3):12:6);
Na ekranie pojawi się tekst: 1.7320508076E+00 1.7 1.73 1.732 1.7321 1.73205 1.732051 _
|
5.4. Pierwszy program: dialog z użytkownikiem z obliczeniem jego wieku
program Witaj;
uses Crt; {deklaracja modułu zaw. clrscr}
var R:Integer; {deklaracja zmiennej}
{program główny - sekcja instrukcji}
begin
Clrscr; {czyszczenie ekranu}
Write('Witaj! Podaj rok urodzenia: ');
Readln(R);
Write
('W tym roku masz ',2011-R,'. urodziny.');
Readln; {zatrzymanie programu}
end.
20