Įvestis / Išvestis Spausdinti
( 2 Votes )
Parašė Aurimas Šimkus   

Kaip ir imperatyviosiose programavimo kalbose, Prolog kalboje taip pat naudojama standartinė įvestis iš klaviatūros ir išvestis į konsolę. Žinoma, taip pat galima įvestis/išvestis iš/į failą, tačiau apie tai galite pasiskaityti atitinkamame straipsnyje. Reikia pažymėti, kad standartinė įvestis/išvestis su klaviatūra ir terminalu (konsole) taip pat vyksta imituojant virtualų failą user.

 

Išvestis 

Standartinei išvesčiai naudojami šie predikatai:

  • write(A) - atspausdina atomą arba termą A tokį, koks jis patogus perskaityti žmogui. Jei jame yra tarpų, neužmirškite apostrofų!
  • print(A) - praktiškai analogiškas write(A).
  • display(A) - atspausdina atomą arba termą A tokį, koks jis yra Prolog sistemoje.
  • put(S) - atspausdina vieną ASCI simbolį S. Įvedamas S gali būti tiek pats simbolis, tiek jo dešimtainis kodas.
  • nl - atspausdina tuščią eilutę arba perkelia po to spausdinamą tekstą į naują eilutę.
  • tab(N) - atspausdina N tarpelių prieš spausdinamą tekstą.
  • format(A, L) - atspausdina atomą A, kuriame nurodyti sąrašo L elementai.

Daugiausiai vertas dėmesio format. Jo naudojimas panašus į C kalboje naudojamą printf(). Atome tarp apostrofų yra nurodomas tekstas, kurio viduje nurodomi sąrašo L elementai. Sąrašo elementai yra įterpiami iš eilės ten, kur nurodoma tokia struktūra: ~w (simbolių eilutei, atomui, skaičiui), ~d (sveikajam skaičiui), ~f (realiajam skaičiui) (dažniausiai naudojami). ~d ir ~f gali turėti skaičių po kablelio indeksą (~d atveju - nulių skaičių): ~5d arba ~10f atitinkamai rodys 5 ir 10 skaitmenų po kablelio. Taip pat naudojami ~n (nauja eilutė) ir ~+ (atitraukimas, tab. Galima nurodyti ir atitraukimo dydį, pvz., ~15+).

Pavyzdžiai:

?- write(labas).
 labas
 true.
?- write(2+3).
 2+3
 true.
?- display(2+3).
 +(2,3)
 true.

?- write('tai Prolog kalba!').
 tai Prolog kalba!
 true.
?- T=15, write(T).
 15
 T = 15.
?- write(coderland), nl, tab(5), write('visos teises saugomos').
 coderland
      visos teises saugomos
 true.
 
?- format('Siandien ~1f ~w laipsniu silumos.', [14.5, 'celcijaus']).
 Siandien 14.5 celcijaus laipsniu silumos.
 true.
?- format('Data:~n~5+ ~d ~w ~d', [2012,gruodzio,21]).
 Data:
      2012 gruodzio 21
 true.

 

Įvestis

Standartinei išvesčiai naudojami šie predikatai:

  • read(A) - kur A yra kintamasis, kuriam iš klaviatūros gali būti priskirtas atomas.
  • get0(S) - kur S - dešimtainis ASCI numeris arba kintamasis, kuriam gali būti priskirtas ASCI simbolis.
  • get(S) - tas pats, kas ir get0, bet ignoruoja tarpo ir naujos eilutės simbolius.
  • get_char(S) - iš esmės tas pats get, bet patogesnis nuskaitant failus.

Įsidėmėkite! read įvestis turi būti baigiama tašku ir <enter>, get ir get0 - užtenka <enter>.

Pavyzdžiai:

?- read(A).
 |: 'einu i paskaitas'.
 A = 'einu i paskaitas'.
?- read(T).
 |: labas.
 T =  labas.
get(E).
 |: a
 E = 97.
get(97).
 |:  a
 true.
get(97).
 |: a
 false.
get0(T).
 |:  \n      /*naujos eilutės simbolis*/
 T = 92.