Laboratorio di Linguaggi di Programmazione 2007/2008 Marco Antoniotti Giuseppe Vizzari
A.A. 2007/2008Linguaggi di Programmazione1 Logistica corso Cinque ore settimanali –Una lezione da due ore, venerdì aula U1-9 ore 11:30-13:30 –Una esercitazione da tre ore, martedì LAB731 ore 14:30-17:30 Sito di supporto al corso unico di Linguaggi di Programmazione 1 (Linguaggi e computabilità, Paradigmi di programmazione, Laboratorio di linguaggi di programmazione) –Verrà segnalato al più presto tramite avviso sul sito del DISCo –Conterrà slides del corso, collegamenti a materiale rilevante/utile, forum di discussione
A.A. 2007/2008Linguaggi di Programmazione2 LISP, ambiente di lavoro Lispworks, Personal Edition (versione gratuita, con alcune limitazioni)
A.A. 2007/2008Linguaggi di Programmazione3 Laboratorio di LISP Usiamo lambiente Lispworks Come si apre Come si interagisce con il sistema Definizioni ed esecuzioni Errori e debugger Editor (EMACS)
A.A. 2007/2008Linguaggi di Programmazione4 Esercizi iniziali Valutate le seguenti espressioni al prompt del Common Lisp (sqrt 4) (sqrt 42) (sqrt -1) (sqrt #C(0 1))
A.A. 2007/2008Linguaggi di Programmazione5 Esercizi iniziali Provate a vedere se il Common Lisp ha funzioni per trovare –Il minimo tra due nuumeri –Il coseno di un angolo –Per calcolare il quadrato di un numero –Per calcolare il cubo di un numero
A.A. 2007/2008Linguaggi di Programmazione6 Esercizi di Conversione Scrivete delle funzioni per fare conversioni da un unità di misura ad un altra –Da Celsius a Farenheit, celsius->farenheit –Da Farenheit a Celsius, farenheit->celsius –Da Euro a Dollaro, euro->dollar –Da Dollaro a Euro, dollar->euro Come trattiamo il cambio giornaliero?
A.A. 2007/2008Linguaggi di Programmazione7 celsius->farenheit CelsiusFarenheit
A.A. 2007/2008Linguaggi di Programmazione8 celsius->farenheit (defun celsius->farenheit (c) (+ 32 (* 1.8 c))) prompt> (celsius->farenheit 24) 75.2
A.A. 2007/2008Linguaggi di Programmazione9 Altri esercizi Definire la funzione triangle che calcola larea di un triangolo secondo la regola
A.A. 2007/2008Linguaggi di Programmazione10 Altri esercizi Definire il programma convert3 che prende tre interi in ordine crescente di significato e che produce il numero corrispondente Esempio (convert ) 321 (convert ) 42
A.A. 2007/2008Linguaggi di Programmazione11 Esercizio svolto (defun convert3 (dc dd du) (+ (* 100 dc) (10 * dd) du))
A.A. 2007/2008Linguaggi di Programmazione12 Esercizi vari Il supermercato sotto casa ha bisogno di un programma che computi il valore di un mucchio di monete. Definite la funzione sum-coins. La funzione consuma 8 argomenti, il numero di centesimi, il numero di monete da 2 centesimi, il numero di monete da 5 centesimi, il numero di monete da 10, 20, 50 centesimi, il numero di monete da 1 e da 2 euro.
A.A. 2007/2008Linguaggi di Programmazione13 Esercizi vari Un vecchio cinema ha una funzione molto semplice per calcolare i suoi profitti. Ogni cliente paga 7 Euro a biglietto. Ogni proiezione costa 40 Euro più 0.5 Euro per spettatore. Definite la funzione total-profit. Questa funzione usa il numero di spettatori per proiezione e produce il profitto totale della proiezione.
A.A. 2007/2008Linguaggi di Programmazione14 Errori Come abbiamo visto il sistema Common Lisp genera diversi errori Provate ad inserire nel sistema le seguenti espressioni e leggete attentamente qual è il messaggio di errore –(/ 1 0) –(+ (10) 10) –(sin 20 10) –(someof 1 2 (+ 40 2)) –(+ 1 2))
A.A. 2007/2008Linguaggi di Programmazione15