LOGO/Input ed Output
Logo fornisce alcune semplici primitive per l'input e l'output.
Output
[modifica | modifica sorgente]Per l'output le principali primitive sono: print, type, show.
print visualizza sullo schermo l'oggetto passato come argomento e pone a capo il cursore.
type fa lo stesso ma mantiene il cursore sulla stessa linea.
show si comporta come print ma se l'oggetto passato come argomento è una lista visualizza anche le parentesi quadre all'inizio e alla fine.
? print "pippo pippo ? print [ciao gente] ciao gente ? show [ciao gente] [ciao gente] ? print "pippo print "pluto pippo pluto ? type "pippo print "pluto pippopluto
Ognuna di queste primitive può ricevere più argomenti, ma in questo caso tutto il comando deve essere racchiuso tra parentesi tonde.
? (print "pippo "pluto) pippo pluto ? (show "pippo [pluto paperino]) pippo [pluto paperino] ? (print "pippo [pluto paperino]) pippo pluto paperino
Input
[modifica | modifica sorgente]Le principali primitive per l'input dei dati sono: readchar, readword, readlist.
readchar è una funzione che attende un carattere e lo dà come risultato.
readword è una funzione che dà come risultato una stringa.
readlist è una funzione che dà come risultato una lista che contiene gli oggetti letti.
? print readchar 7 ? print readword casa casa ? show readlist et telefono casa [et telefono casa] ? show readword et telefono casa et telefono casa ? print bf readword et telefono casa t telefono casa ? print bf readlist et telefono casa telefono casa
Esempi
[modifica | modifica sorgente]In generale, quando un programma deve richiedere un dato, deve anche mostrare un messaggio che guidi l'utente. Possiamo scrivere delle funzioni che prima di leggere un dato scrivano un messaggio:
to inchar :messaggio type :messaggio type "\ output readchar end
to inword :messaggio type :messaggio type "\ output readword end
to inlist :messaggio type :messaggio type "\ output readlist end
Queste funzioni si possono usare in questo modo:
show inchar [premi un tasto:] show inword [scrivi una parola:] show inlist [scrivi una frase:]
Quando si scrive un programma per risolvere qualche semplice problema conviene avere una funzione che contiene la logica della soluzione, che implementa la formula risolutiva, e una procedura che gestisce l'interfaccia con l'utente.
Ad esempio per trovare l'area di un triangolo conoscendo i lati possiamo usare la formula di Erone (I-II secolo d.C.). Conviene quindi costruire una funzione che riceva come argomenti i lati e restituisca come risultato l'area:
to erone :a :b :c if (or :a>:b+:c :b>:a+:c :c>:a+:b) [op [Non è un triangolo]] make "p (:a+:b+:c)/2 output sqrt (:p*(:p-:a)*(:p-:b)*(:p-:c)) end
Qualche test della funzione assicura che non ci siano errori grossolani:
? print erone 3 4 5 6 ? print erone 3 4 7 0 ? print erone 3 4 8 Non è un triangolo
Ora che abbiamo un nocciolo collaudato, è possibile costruire l'interfaccia:
to area_erone print [Calcolo l'area di un triangolo conoscendo i lati] print [Formula di Erone] print " make "lato1 inword [primo lato:] make "lato2 inword [secondo lato:] make "lato3 inword [terzo lato:] (print [l'area è] erone :lato1 :lato2 :lato3) end
e, infine, provarla:
?area_erone Calcolo l'area di un triangolo conoscendo i lati Formula di Erone
primo lato: 325 secondo lato: 547 terzo lato: 546 l'area è 84789.1026960423