Corso di Linguaggi di Programmazione

Похожие документы
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

Programmazione Funzionale

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Lezione 3 programmazione in Java

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

L intero è o il valore zero o una stringa di cifre che inizia con una cifra diversa sa zero.

Definizione di metodi in Java

Programmazione in Java (I modulo)

Laboratorio di programmazione

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Quando usiamo Python in modo interattivo in genere e' lo shell utilizzato che gestisce l'indentazione e la deindentazione.

La sintassi del C APPENDICE H

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Le direttive del Preprocessore

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

Laboratorio di Informatica

Calcolare il massimo di una lista

Introduzione al Python

Istruzioni iterative (o cicliche)

Programmazione modulare

Fondamenti di Programmazione

PYTHON CHEAT SHEET. Rapido documentazione di consultazione per istruzioni, funzioni e tipi in Python. #stampa le variabili x e y

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute.

Linguistica Computazionale

Il linguaggio C. Notate che...

Esempio di Prova Scritta

Programmazione in Python. Moreno Marzolla

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Algebra di Boole Algebra di Boole

Verificare se una grammatica e LL(1) e costruirne la tabella di parsing. Verificare se una grammatica e LR(0) e costruirne la tabele ACTION e GOTO

Linguaggio C: introduzione

Mini-Corso di Informatica

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

Fondamenti di Informatica T-1 Modulo 2

Compito di Programmazione, 22 marzo 2007 INFORMATICI E MULTIMEDIALI

Espressione di chiamata di funzione

Basi di Dati: Corso di laboratorio

Le Funzioni e la Ricorsione

Informatica e Bioinformatica: AND, OR, NOT

Unità Didattica 3 Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.

Fondamenti di Programmazione

Fondamenti di Informatica T-1

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

Creare una funzione float square(float x). La funzione deve restituire il quadrato del parametro x.

Le basi del linguaggio Java

Esercitazione 3. Espressioni booleane I comandi if-else e while

Matlab 5. Funzioni. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1

Lezione 6 Le pile. Informatica. 28 Aprile 2016

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Linguaggio C: le funzioni

5 - Istruzioni condizionali

Esercizio 1 Liste: calcolo perimetro di un poligono

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Algoritmi e basi del C Struttura di un programma

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Linguaggio C: le funzioni. Introduzione e sintassi

Algebra Relazionale. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Programmazione Orientata agli Oggetti in Linguaggio Java

Laboratorio di Programmazione 1 [Java]

Corso di Esercitazioni di Programmazione

Fondamenti di Informatica T1 Mappe

Транскрипт:

Corso di Linguaggi di Programmazione Lezione 5 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 12 Marzo 2013

Le funzioni sono oggetti di prima classe in Scheme In Scheme le funzioni sono trattate allo stesso modo degli altri oggetti (numeri, liste, stringhe, simboli, ecc.): le funzioni possono prendere funzioni come argomento la forma speciale lambda permette di costruire funzioni le funzioni possono restituire funzioni

Funzione come argomento Uno dei parametri nella definizione della funzione rappresenta una funzione, e come tale viene utilizzato all interno del corpo - (define (function-application nome-fun x y) (nome-fun x y) ) L associazione tra il parametro e la funzione avviene in chiamata di funzione - (function-application + 3 4) associa + a nome-fun - (function-application list 3 4) associa list a nome-fun Esempio1: realizzare un programma Scheme che riceve una funzione ed una lista; se la lista è vuota restituisce () altrimenti applica la funzione alla lista. Esempio2: realizzare un programma Scheme che controlla alcune proprietà di coppie di elementi in una lista (alla lavagna).

Funzione predefinita map La funzione map viene utilizzata per applicare una funzione ad ogni elemento in una lista. Restituisce una lista i cui elementi sono il risultato che si ottiene applicando il suo primo argomento (la funzione) a ciascun elemento del secondo argomento (la lista). Esempi: - (map odd? (2 3 4 5 6)) restituisce (#f #t #f #t #f) - (map + (1 2 3) (10 20 30)) restituisce (11 22 33) Non è specificato in quale ordine vengono considerati gli elementi della lista.

Funzione predefinita apply La funzione predefinita apply restituisce il risultato che si ottiene applicando il suo primo argomento al secondo argomento Esempi: - (apply + (7 5)) 12 - (apply max (3 7 2 9)) 9 Limitazione: non funziona se al posto di una funzione viene passato come argomento una forma normale (e.g., and o or)

Funzioni che restituiscono funzioni - lambda (1) Dal λ-calcolo, dove una funzione f (x) = x + 2 viene espressa come λx.x + 2, e f (3) come (λx.x + 2)3 definizione: (lambda (lista-argomenti) corpo) - Es.: (lambda (x) (+ 2 x)) chiamata: ((lambda (lista-argomenti) corpo) args-formali) - Es.: ((lambda (x) (+ 2 x)) 3) restituisce 5 definizione funzione con nome: (define nome-funzione (lambda (lista-argomenti) corpo)) - Es.: (define somma2 (lambda (x) (+ 2 x)))

Funzioni che definiscono funzioni - lambda (2) Utilizzo della lambda-expression per definire funzioni (anche senza nome): come argomento a funzione - (map (lambda (num) (>= num 10)) (15 17) ) per creare funzioni che sono la combinazione di and oppure or di altre funzioni - (lambda (element) (and (number? element)(positive? element)) ) Esempio: (1) realizzare un programma Scheme che, presi due caratteri, restituisce la funzione sostituzione del primo carattere con il secondo (2) realizzare un programma Scheme che, presi due caratteri ed una lista, sostituisce ogni occorrenza del primo carattere nella lista con un occorrenza del secondo (alla lavagna).

Elementi di Python Tipi di dato: int: 3 float: 2.5 str: abc, abc list: [0, 1, 2], [0, 1, the ] tuple: (0, 1, 2), (0, 1, the ) dict: { a : 1, mamma : anna, 2: b }

Elementi di Python Python usa gli spazi per identificare blocchi di codice si indica l inizio di un blocco con : (vedi codice) costrutto if simile al C costrutto switch... case sostituito con if... elif due costrutti di iterazione: while e for (codice di esempio)

Elementi di Python Alcune operazioni su liste lst.append(x): include l elemento x in coda a lst lst.extend(l): include la lista L in coda a lst list.remove(x): rimuove la prima occorrenza di x in lst list.count(x): restituisce il numero di occorrenze di x in lst

Definizione di funzioni Elementi di Python Definizione di funzioni parola chiave def def <nome funzione>(<argomenti>): statement return al termine della funzione (codice di esempio)

Elementi di Python Funzioni come oggetti di primo livello Le funzioni sono oggetti di primo livello: possono essere passate come argomenti ad altre funzioni possono essere costruite e restituite da altre funzioni Funzioni che costruiscono funzioni parola chiave lambda f = lambda <argomenti>: <corpo della funzione da costruire> a questo punto f contiene una funzione (codice di esempio)

Elementi di Python Le funzioni Python possono restituire un numero arbitrario di valori def computexy()... return x,y >> a,b = computexy()