Stringhe di testo e numeri
Prima di procedere con altre funzioni č necessario chiarire come bisogna comunicare ad autolisp
una stringa di testo , o un numero.
Nelle lezioni scorse abbiamo usato nei nostri esempi sia le stringhe che i numeri.
Per chi gią conosce altri linguaggi di programmazione saprą che č molto importante comunicare all'interprete
del programma che scriviamo se gli stiamo fornendo una stringa, un numero o un numero sotto forma di stringa.
Per meglio capirci facciamo alcuni esempi:
Se scrivo "Buongiorno" ovviamente sto scrivendo una stringa
ma se scrivo "1234" come la interpreterą autolisp ?
In entrambi i casi sto comunicando all'interprete della lisp una stringa
infatti quando voglio comunicare una stringa la racchiudo fra le virgolette
quindi "1234" č la rappresentazione in formato stringa del numero 1234
se volessi passare al programma un numero che sia intero o reale dovrei scrivere semplicemente 1234
Esempio1:
(defun c:strenum()
(setq numero 1456)
(setq stringa "5678")
(princ numero)
(alert stringa)
(princ)
)
a prima vista eseguendo il codice che abbiamo appena scritto non ci sono differenze
ma se provassimo a far eseguire un'operazione matematica ad uno dei numeri
che abbiamo impostato sopra cosa succederebbe?
Esempio2:
(defun c:strenum()
(setq numero 1456)
(setq stringa "5678")
(setq risultato (/ numero 2))
(princ risultato)
(princ)
)
in questo caso l'operazione č corretta
ma se al posto di
(setq risultato (/ numero 2))
provassimo a scrivere
(setq risultato (/ stringa 2))
bhe provate se non vi fidate ma riceverete un errore
E' come se avessimo chiesto di dividere matematicamente per 2 un testo
aspettandoci di avere come risultato un numero.
salviamo il file lez5-1.lsp (esempio n°1)
eseguiamo autocad e scriviamo nella linea di comando
(load "lez5-1")
facciamo Invio
quindi scriveremo
strenum
salviamo il file lez5-2.lsp (esempio n°2)
eseguiamo autocad e scriviamo nella linea di comando
(load "lez5-2")
facciamo Invio
quindi scriveremo
strenum
Scarica l'esempio Scarica l'esempio
R. Pucci