Skip to content

Uitvoer en invoer

Bart Jacobs edited this page Feb 15, 2018 · 7 revisions

Uitvoer en invoer

Opdracht:

  • Tik print_endline "Hallo!" in.
  • OCaml antwoordt met Hallo! en dan met - : unit = (). De functie print_endline geeft als resultaat de speciale waarde () van het type unit. Dit is geen nuttige waarde; je kan er niets mee doen. Het nut van de functie print_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 uitdrukking U1; U2 evalueert eerst U1, louter om haar neveneffect, en evalueert dan U2. De resultaatwaarde van U2 geldt als resultaatwaarde van U1; U2.

Oefening:

  • Definieer een functie hallo die een gegeven aantal keren Hallo! 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 afdrukt Wat is uw naam?, dan een stuk tekst vraagt aan de gebruiker, en dan afdrukt Hallo, 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 functie raad_gegeven_getal.
Clone this wiki locally