LISP.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

LINGUAGGIO DI PROGRAMMAZIONE C
I numeri naturali ….. Definizione e caratteristiche
INFORMATICA Strutture condizionali
Informatica 22/03/2012.
Linguaggi di programmazione
Generazione di Codice Intermedio
Algoritmi e Programmazione
Introduzione al linguaggio C
1 Linguaggi di Programmazione Corso di Laurea in Informatica Introduzione ai linguaggi funzionali.
Corso di Laurea in Informatica Gabriella Pasi e Carla Simone
1 Variabili Globali Le variabili globali sono variabili che possono venire usate da tutte le funzioni intendiamo definire e dal programma principale stesso.
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
Anno accademico Array e puntatori in C.
TERNE PITAGORICHE Obiettivi dell’esercitazione
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Il ragionamento classico
Fogli elettronici Microsoft Excel.
FUNZIONI DI BIBLIOTECA
Algebra di Boole ed elementi di logica
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
mosaic manipola oggetti primitivi (ruota e unisci) regole:
Il Linguaggio C.
Le funzioni.
Java base I: Sintassi e tipi di dati
AN FI Un denominatoe comune Lo stile funzionale Concetti fondamentali.
Programmazione in Java Claudia Raibulet
4 Tipi di dati & variabili
Javascript 6 Funzioni. Una funzione sarà eseguita in risposta ad un evento o ad una chiamata diretta. Le funzioni possono essere inserite comodamente.
Biologia Computazionale - Algoritmi
1.Scrivere una funzione per cercare un numero x in una lista circolare di interi. La funzione deve restituire NULL se il numero non esiste. 2.Scrivere.
CODIFICA Da flow-chart a C++.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
Esecuzione dei programmi Prolog Liste ed operatori aritmetici
VARIABILI E COSTANTI LOGICHE
I POLINOMI E LE LORO OPERAZIONI
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
Tail recursion: esempio
Attività progettuale in Linguaggi e Modelli Computazionali M
Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Anno accademico Le istruzioni di controllo in C.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 2 La ricorsione Corso di Informatica 2 a.a. 2003/04 Lezione 2.
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
Programmazione imperativa
Esercitazioni su liste
Microsoft ExcelMicrosoft Excel Lezione 5 INSERISCI FORMULE New M. Nanni – E. Del Fante – M. Savioli.
Tecnologie informatiche.
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Introduzione a Javascript
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Transcript della presentazione:

LISP

Lisp Ispirato da funzioni ricorsive e lambda calcolo Inventato da John McCarthy Progenitore dei linguaggi di programmazione funzionale

LISP: LISt Processor LISP è stato disegnato originariamente per l’Intelligenza Artificiale Ha vari dialetti: Common Lisp, FranzLisp, AutoLisp, etc. E’ basato su un approccio ricorsivo ed incrementale Prevalentemente utilizzato mediante interpreti

LISP: Stile interattivo Utente: definisce funzioni o richiede un calcolo Interprete: accetta la definizione o esegue il calcolo

Tipi di dato in Lisp S - espressioni Liste Atomi Lista non vuota Lista vuota Simboli Numeri Floating point Integer

Esempi Lista vuota: ‘()’ anche chiamata ‘NIL’ Atomo: ‘ALPHA’ Lista (piatta): ‘( A B D )’ Lista: ‘( A B ( D E ) A)’ Intero: 3 Floating point: 3.14

Liste Liste: Una lista può contenere come elementi atomi o altre liste. Gli elementi sono racchiusi tra parentesi. Una lista può essere vuota.

Operazioni su liste CAR : restituisce il primo elemento di una lista CDR : restituisce la lista senza il primo elemento. (CDR ‘(5 2 9)) (2 9) Possiamo mescolare CAR e CDR in ogni combinazione.

Esempi: (CAR (CDR L)) = (CADR L) Es. : (CAR (CDR ‘(1 2 3 4))) 2 (CDR (CAR L)) = (CDAR L) Es. : (CDR (CAR ‘((1 2) (2 3) (3 4) (4 5)))) (2) CAR restituisce un ELEMENTO (atomo o lista) CDR restituisce una LISTA (CAR NIL) = (CDR NIL) = NIL Che cos’e’ l’apice che precede le liste di numeri?

QUOTE (‘) Notazione prefissa: il primo elemento di una lista e’ la funzione, gli altri elementi sono gli operandi. Come distinguo (+ 1 1) (= somma dei numeri 1 e 1) dalla lista costituita dai simboli “+”, “1” e “1”? Soluzione: operatore QUOTE (abbreviato con l’apice): (QUOTE (1 2 3)) = ‘(1 2 3) La lista (1 2 3) non viene “valutata” (= non si cerca una funzione 1 da applicare a 2 e 3)

Altre operazioni su liste: CONS CONS: Accetta un elemento e una lista e restituisce la lista con l’elemento inserito al primo posto (CONS ‘A ‘(B C)) (A B C) (CONS ‘A (CDR ‘(B C))) (A C)

Funzioni aritmetiche (+ 3.14 2.5) 5.64 (+ 2 (+ 3 6)) 11 (* 6 4) 24 (/ 25 5) 5

Float e Integer (/ 27 9) Divisione tra interi con risultato intero 3 (/ 14.0 4.0) Divisione tra reali 3.5 (/ (FLOAT 14) (FLOAT 4)) Equivalente al precedente

Altre funzioni matematiche (MAX 7 6 8) 8 (MIN 7 6 8) 6 (ABS -8) (EXPT 2 3) (SQRT 25) 5 (ROUND 1.25) 1 (ROUND 1.75) 2 X intero: X=(ROUND (FLOAT X))

Altre funzioni matematiche (TRUNCATE 14 4) Divisione tra interi 3 (REM 14 4) REMainder: resto 2 X,Y interi; Y diverso da 0: (+ (* (TRUNCATE X Y) Y) (REM X Y)=X

Funzioni predefinite su liste: LIST LIST prende n operandi e restituisce la lista i cui elementi sono gli n operandi (LIST ‘A) (A) (LIST ‘A ‘B) (A B) (LIST ‘A (CDR ‘(A B C))) (A (B C))

Funzioni predefinite su liste: APPEND APPEND prende n liste e restituisce la lista composta dagli elementi delle n liste (APPEND ‘(1 2) ‘(3 4)) (1 2 3 4) (APPEND ‘(1 2) ‘(CDR (1 2))) (1 2 CDR (1 2))

Predicati True/False In Lisp la lista vuota (NIL) è False; tutto il resto è True. Per indicare esplicitamente il valore True si usa T.

Esempi di predicati ATOM verifica se l’operando è un atomo LISTP verifica se l’operando è una lista NULL verifica se l’operando è una lista vuota EQ verifica se gli operandi (S-espressioni) sono uguali Oltre a questi ci sono, tra gli altri, gli operatori relazionali: =, >,< che operano su numeri

Numero di operandi N: +,*,-,\,MAX, MIN, APPEND, LIST, AND 2: TRUNCATE, REM, EXPT, EQ, =, >,< 1: ABS, SQRT, FLOAT, NOT, NULL, ATOM, LISTP

Definizione di funzioni: DEFUN Sintassi: (DEFUN <nome_funzione> (<operando1> <operando2>…<operandoN>) (<corpo_della_funzione>) )

Esempio di definizione di funzione (DEFUN Secondo (L) (CADR L)) Esempio: (Secondo ‘( A C D)) C

Espressioni condizionali: COND Sintassi (COND (<espressione1> <azione1>) (<espressione2> <azione2>) … (<espressioneN> <azioneN>)) Semantica Se <espressione1>=T allora <azione1> altrimenti se <espressione2>=T allora <azione2> … altrimenti se <espressioneN>=T allora <azioneN>

Esempio: funzione PARI PARI(X)= T se X è pari NIL altrimenti (DEFUN PARI (X) (COND ((= (REM X 2) 0) T) (T NIL)))

Ricursione APPARTIENE(A,L)= T se A appartiene alla lista L NIL altrimenti (DEFUN APPARTIENE (A L) (COND ((NULL L) NIL) ((EQ A (CAR L)) T) (T (APPARTIENE A (CDR L)) ))) (APPARTIENE 'A '(A B C)) T

Altri esempi (DEFUN UNIONE (L1 L2) (COND ((NULL L1) L2) ((APPARTIENE (CAR L1) L2) (UNIONE (CDR L1) L2)) (T (UNIONE (CDR L1) (CONS (CAR L1) L2))))) (UNIONE '(A B C) '(C D E)) (B A C D E)

Cenni sull’interprete Valutazione di S-espressioni: Atomi: la valutazione di numeri (simboli) restituisce il numero (simbolo) stesso. Liste: vengono valutati tutti gli elementi di primo livello (a meno di QUOTE) Il primo elemento è sempre un nome di funzione; viene valutato il corpo della funzione corrispondente. Tutti gli altri elementi vengono valutati e i risultati corrispondenti vengono usati come argomenti della funzione