-
Notifications
You must be signed in to change notification settings - Fork 0
Uitvoer en invoer
Bart Jacobs edited this page Feb 15, 2018
·
7 revisions
Opdracht:
- Tik
print_endline "Hallo!"
in. - OCaml antwoordt met
Hallo!
en dan met- : unit = ()
. De functieprint_endline
geeft als resultaat de speciale waarde()
van het typeunit
. Dit is geen nuttige waarde; je kan er niets mee doen. Het nut van de functieprint_endline
ligt dan ook niet in haar resultaatwaarde, maar in haar neveneffect: als neveneffect drukt deze functie de gegeven tekst af op het scherm. - Tik
print_string "Hallo, "; print_endline "wereld!"
in. - OCaml antwoordt met
Hallo, wereld!
en dan met- : unit = ()
. De uitdrukkingU1; U2
evalueert eerstU1
, louter om haar neveneffect, en evalueert danU2
. De resultaatwaarde vanU2
geldt als resultaatwaarde vanU1; U2
.
Oefening:
- Definieer een functie
hallo
die een gegeven aantal kerenHallo!
afdrukt.
Opdracht:
- Tik
string_of_int 3
in. - OCaml antwoordt met
- : string = "3"
. Deze functie zet een getal om in een stuk tekst, dat je daarna kan afdrukken, of met een ander stuk tekst kan samenvoegen (met^
).
Oefening:
- Definieer een functie
tel_af
die, gegeven een getal N, de getallen van N tot 0 afdrukt op het scherm.
Opdracht:
- Tik
read_line ()
in. - OCaml vraagt dan een stuk tekst aan de gebruiker en geeft dat stuk tekst dan terug als resultaat van de functie-oproep.
Opdracht:
- Tik
int_of_string "77"
in. - OCaml antwoordt met
- : int = 77
. Deze functie zet een stuk tekst dat een geheel getal voorstelt om in dat getal.
Oefening:
- Definieer een functie
gesprek
die, gegeven de waarde()
, eerst afdruktWat is uw naam?
, dan een stuk tekst vraagt aan de gebruiker, en dan afdruktHallo, X!
waarbij X het stuk tekst is dat de gebruiker ingaf.
Merk op: in de Ocsigen-omgeving werkt de combinatie van print_endline
en read_line
niet goed. In deze omgeving gebruik je beter de volgende functie:
let alert text =
let alert_function = Js.Unsafe.eval_string "window.alert" in
ignore (Js.Unsafe.fun_call alert_function [| Js.Unsafe.inject (Js.string text) |])
Bovendien is in de Ocsigen-omgeving de volgende functie prompt
iets handiger dan read_line
:
let prompt vraag =
let prompt_function = Js.Unsafe.eval_string "window.prompt" in
let resultaat = Js.Unsafe.fun_call prompt_function [| Js.Unsafe.inject (Js.string vraag) |] in
Js.to_string resultaat
Opdracht:
- Tik
Random.int 10
in. - OCaml antwoordt met een willekeurig niet-negatief getal kleiner dan 10.
- Tik
(Random.int 10, Random.int 10)
in. - OCaml antwoordt met twee onafhankelijk gekozen willekeurige getallen.
- Tik
let x = Random.int 10 in (x, x)
in. - OCaml antwoordt met een paar met twee keer hetzelfde willekeurig gekozen getal.
Oefening:
- Definieer een functie
raad_gegeven_getal
die, gegeven een getal, de gebruiker vraagt om dit te raden. De functie laat de gebruiker dan weten of het door de gebruiker ingegeven getal te klein, te groot, of juist is. Als het niet juist is, vraagt het de gebruiker een nieuwe poging te doen, todat de gebruiker het getal raadt.
Oefening:
- Definieer een functie
getal_raden
die een willekeurig getal kleiner dan 100 kiest, en dan de gebruiker vraagt om dit te raden, met behulp van de functieraad_gegeven_getal
.