OCAML un breve ripasso
|
|
|
- Ortensia Di Marco
- 7 anni fa
- Visualizzazioni
Transcript
1 OCAML un breve ripasso
2 Value-oriented programming value-oriented programming : una espressione Ocaml denota un valore. L esecuzione di un programma OCaml puo essere vista come una sequenza di passi di calcolo (semplificazioni di espressioni) che alla fine produce un valore. 2
3 Valutazione di espressioni 3 3 (valori di base) *(4+5) 18 La notazione <exp> <val> indica che la espressione <exp> quando eseguita calcola il valore <val>. 3
4 E le funzioni? Per determinare il valore calcolato dall applicazione di una funzione a certi argomenti, si deve prima calcolare il valore degli argomenti, poi si deve sostituire il valore degli argomenti nei pararametri presenti nel corpo della funzione e poi valutare il corpo cosi ottenuto. let succ (n: int) : int = n + 1 in succ 5 6 succ (2 + 3) succ(5) (n + 1){5 -> n) (5 + 1) 6 Sostituzione del valore dell argomento nel corpo della funzione = passaggio dei parametri (per valore) 4
5 Il let? let x = in let y = x + x in x*y ==> dato che ==> 3 let x =3 in let y = x + x in x*y ==> dato che x + x ==> = 6 let x = 3 in let y = 6 in x * y ==> dato che x * y ==> 3 * 6 ==> Binding: associazione di un nome con un valore Ambiente: un insieme di binding Programmazione I: interprete denotazionale 5
6 Binding e funzioni let f (x:int) : int = let y = x * 10 in y * y;; f 5;; - : int = 2500 Binding nell ambiente tra il nome della funzione f e la sua definizione 6
7 In sintesi Una dichirazione inserisce un legame nell ambiente tra il nome dichiarato e l espressione Una dichiarazione puo essere una dichiarazione di variabile e una dichiarazione di funzione let x = 100 (* ambiente contiene il legame tra x e 100 *) let f (k:int) : int = k * 5 + x (* estendo l ambiente con il legame tra f e l espressione che ne costituisce il corpo *) let x = 1 let y = f 42 7
8 Programmare con i tipi di dato I linguaggi di programmazione forniscono diversi costrutti primitivi per creare e manipolare dati strutturati. Cosa avete visto nel passato: Programmazione I: o Tipi di dato primitivi (int, string, bool, ) o Lists ( int lit, string list, string list list, ) o Tuples (int * int, int*string, ) Algoritmica o tecniche algoritmiche (di base) per la risoluzione di problemi su vettori, liste, alberi e grafi, in modo efficiente in tempo e/o spazio 8
9 Definire tipi di dato in OCaml Ocaml permette al programmatore di definire nuovi tipi di dato type giorno = Lunedi Martedi Mercoledi Giovedi Venerdi Sabato Domenica Costruttori Dichiarazione di tipo Nome del tipo Costruttori definiscono i valori del tipo di dato Sabato ha tipo giorno [Venerdi; Sabato; Domenica] ha tipo giorno 9list
10 Pattern Matching Il pattern matching fornisce un modo efficiente per accedere ai valori di un tipo di dato let string_of_g (g: giorno) : string = begin match g with Lunedi -> Lunedi Martedi -> Martedi : : Domenica -> Domenica end Il patterm matching segue la struttura sintattica dei valori del tipo di dato : i costruttori 10
11 Astrazioni sui dati Avremmo potuto rappresentare il tipo di dato giorno tramite dei semplici valori interi o Lunedi = 1, Martedi=2,, Domenica = 8 Ma o Il tipo di dato primitivo int fornisce un insieme di operazioni differenti da quelle significative sul tipo di dato giorno, Mercoledi Domenica non avrebbe alcun senso. o Esistono un numero maggiore di valori interi che di valori del tipo giorno Morale: I linguaggi di programmazione moderni (Java, C#, C++, Ocaml, ) forniscono strumenti per definire tipi di dato 11
12 OCaml Type I costruttori possono trasportare valori # type foo = Nothing Int of int Pair of int * int String of string;; type foo = Nothing Int of int Pair of int * int String of string Valori del tipo foo Nothing Int 3 Pair (4, 5) String "hello"... 12
13 Pattern Matching let get_count (f: foo) : int = begin match f with Noting -> 0 Int(n) -> n Pair(n,m) -> n + m String(s) -> 0 end 13
14 Tipi di Dato Ricorsivi # type tree = Leaf of int Node of tree * int * tree ;; type tree = Leaf of int Node of tree * int * tree let t1 = Leaf 3 let t2 = Node(Leaf 3, 2, Leaf 4) let t3 = Node (Leaf 3, 2, Node (Leaf 5, 4, Leaf 6)) 14
15 Tipi di Dato Ricorsivi # type tree = Leaf of int Node of tree * int * tree;; type tree = Leaf of int Node of tree * int * tree Quanti di voi hanno programmato con strutture dati del tipo tree? 15
16 Game Tree 16
17 Expression Trees 17
18 (Natural Language) Parse Tree 18
19 Domain Names (DNS) 19
20 Alberi Binari Li avete visti a algoritmica!!!! Radice Sotto albero sinistro Sotto albero destro vuoto foglie 20
21 Alberi Binari in OCaml Type tree = Empty Node of tree * int * tree 3 let t : tree = Node( Node(Empty, 1, Empty), 3 Node(Empty, 2, Node(Empy, 4, Empty)))
22 Compilare programmi OCaml program.ml (sorgente) ocamlc program.cmo (bytecode) a.out (bytecode eseguibile) 22
23 Eseguire bytecode OCaml a.out (bytecode eseguibile) ocamlrun result 23
24 Esempi Compilazione e esecuzione dei files trees.ml treeexamples.ml 24
25 Ricerca in un albero let rec contains (t: tree) (n:int) : bool = begin match t with Empty -> false Node(lt, x, rt) -> x = n (contains lt n) (contains rt n) end La funzione contains effettua una ricerca del valore n nell albero t. Caso peggiore: deve visitare tutto l albero 25
26 Alberi binari di ricerca Idea: ordinare i dati su cui viene fatta la ricerca Un albero binario di ricerca (BST) è un albero binario che deve soddisfare alcune proprietà invarianti addizionali INVARIANTE DI RAPPRESENTAZIONE Node(lt, x, rt) e un BST se lt e rt sono BST Tutti I nodi di lt contengono valori < x Tutti I nodi di rt contengono valori > x Empty (L albero vuoto) e un BST 26
27 Esempio L invariante di rappresentazione dei BST è soddisfatto. Come di dimostra? Ricordate le tecniche che avete imparato a LPP!!! 27
28 Ricerca su un BST (* Ipotesi t e un BST *) let rec lookup (t:tree) (n:int) : bool = begin match t with Empty -> false Node(lt,x,rt) -> if x = n then true else if n < x then (lookup lt n) else (lookup rt n) end Osservazione 1: L invariante di rappresentazione guida la ricerca Osservazione2: La ricerca potrebbe restituire valori non corretti se applicata a un albero che non soddisfa l invariante di rappresentazione 28
29 lookup(t, 3) 29
30 Come costruiamo un BST Opzione 1: o Costruiamo un albero e poi controlliamo (check) che vale l invariante di rappresentazione Opzione 2: o Definire le funzioni che costruiscono BST a partire da BST (esempio la funzione che inserisce un elemento in un BST e restituisce un BST) o Definire una funzione che costruisce il BST vuoto. o Tutte queste funzioni soddisfano l invariante di rappresentazione, pertanto per costruzione otteniamo un BST. o Non si deve effettuare nessun controllo a posteriori!! o Questo passo mette in evidenza il ruolo della teoria in informatica (tipi algebrici) ne parleremo nel seguito del corso. 30
31 insert(t, 4) 31
32 32
33 insert (* Insert n nel BST t *) let rec insert (t:tree) (n:int) : tree = begin match t with Empty -> Node(Empty,n,Empty) Node(lt,x,rt) -> if x = n then t else if n < x then Node(insert lt n, x, rt) else Node(lt, x, insert rt n)! end Per quale motivo l albero costruito dalla funzione insert e un BST? 33
34 Delete(t,5) Operazione di rimozione è più complicata: si deve promuovere la foglia 3 a radice dell albero!!! 34
35 Funzione ausiliaria let rec tree_max (t:tree) : int = begin match t with Node(_,x,Empty) -> x Node(_,_,rt) -> tree_max rt _ -> failwith tree_max called on Empty end L invariante di rappresentazione garantisce che il valore max si trova nella parte più a destra dell albero 35
36 delete let rec delete (t:tree) (n:int) : tree = begin match t with Empty -> Empty Node(lt,x,rt) -> if x = n then begin match (lt,rt) with (Empty, Empty) -> Empty (Node _, Empty) -> lt (Empty, Node _) -> rt _-> let m = tree_max lt in Node(delete lt m, m, rt) end else if n < x then Node(delete lt n, x, rt) else Node(lt, x, delete rt n) end 36
37 Generici 37
38 Funzioni generiche Analizziamo la funzione length applicata a int list e string list. let rec length (l: int list) : int = begin match l with [] -> 0 _::tl -> 1 + length tl end let rec length (l: string list) : int = begin match l with [] -> 0 _::tl -> 1 + length tl end Le funzioni sono identiche eccettuato per l annotazione di tipo 38
39 Generici in OCaml let rec length (l : 'a list) : int = begin match l with [] -> 0 _ :: tl -> 1 + (length tl) end La notazione a list viene usata per indicare una lista generica length [1;2;3] applica la funzione a int list length [ a ; b ; c ] applica la funzione a string list 39
40 Append generico let rec append (l1:'a list) (l2:'a list) : 'a list = begin match l1 with [] -> l2 h::tl -> h::(append tl l2) end Pattern matching permette di operare su tipi generici h ha tipo a tl ha tipo a list 40
41 Generic zip let rec zip (l1:'a list) (l2:'b list):('a*'b) list = begin match (l1,l2) with (h1::t1, h2::t2) -> (h1,h2)::(zip t1 t2) _ -> [] end La funzione opera su tipi generici multipli ( a list e b list, ( a * b) list) zip [1;2;3] [ a ; b ; c ] = [(1, a );(2, b ); (3, c )] : (int * string) list 41
42 Generic trees type 'a tree = Empty Node of 'a tree * 'a * 'a tree Notare l utilizzo del parametro di tipo 'a 42
43 Generic BST let rec insert (t:'a tree) (n: 'a) : 'a tree = begin match t with Empty -> Node(Empty,n,Empty) Node(lt,x,rt) -> if x = n then t else if n < x then Node(insert lt n, x, rt) else Node(lt, x, insert rt n) end Gli operatori di relazione = e < operano su ogni tipo di dato 43
44 Abstract Collections 44
45 Abstract collections Le collections sono tipi di dati contenitori, tipicamente omogenei Ogni collezione contiene elementi di un tipo base Esempi: liste, alberi, insiemi, pile, code, bag (multinsiemi), Le operazioni sulle collezioni sono definite indipendentemente dal tipo base, sfruttando meccanismi come genericità e polimorfismo (astrazione dai dati) Le abstract collections sono realizzazioni di collections come tipi di dati astratti Si definisce un'interfaccia che determina le operazioni messe a disposizione e le loro proprietà Si realizza un'implementazione che fornisce le operazioni dell'interfaccia Ci possono essere più realizzazioni, con diverse caratteristiche di efficienza Il tipo di dati è astratto se la rappresentazione dei dati non è accessibile all'utente 45
46 Esempio di collection: Insiemi (sets) Un insieme è una collezione di dati omogenei (gli elementi) in cui l'ordine non è rilevante la numerosità non è rilevante (ogni elemento o appartiene o non appartiene a un insieme) fornisce operazioni come unione, intersezione, appartenenza di un elemento, differenza, etc., con il significato noto A differenza delle liste, gli insiemi non sono un tipo primitivo in OCaml Strutture dati come Set sono usate frequentemente in molte applicazioni. o Interrogazioni SQL (insieme degli studenti iscritti a Informatica) o insieme dei risultati di una ricerca sul web con Google, o l insieme dei dati di un esperimento al CERN, 46
47 Abstract Sets, informalmente Come tipo di dati astratto deve definire l'interfaccia di uso (le operazioni) e le proprietà di queste operazioni Abstract Set: esempio di interfaccia o Crea l insieme vuoto o Aggiungi un elemento a un insieme dato o Rimuovi un elemento da un insieme dato o Controlla se un elemento appartiene a un insieme dato Abstract Set: esempio di proprietà o Nessun elemento appartiene all'insieme vuoto o Se inseriamo un elemento a un insieme, questo vi appartiene o Se da un insieme rimuoviamo un elemento, questo non vi appartiene più o Aggiungere una seconda volta un elemento non modifica la struttura dell insieme o 47
48 Abstract Sets: possibile implementazione Si può usare un Albero Binario di Ricerca (BST) per implementare il tipo di dati astratto Set: o Insieme vuoto => Empty o Operazioni insert e delete per aggiungere e eliminare elementi (BST non contengono duplicati) o Appartenenza di un elemento a un insieme => lookup o Elencare gli elementi che appartengono all insieme => visita dell'albero Attenzione: Funziona perché su tutti i tipi di dato non modificabili ML è definito un ordinamento totale 48
49 Progettare e programmare Problema: In qualità di docente del corso di laurea, Mister X ha il compito di leggere il syllabus degli insegnamenti e di determinare quali tra le parole del syllabus appartengono al vocabolario delle parole chiave del dizionario ICT del Possiamo aiutarlo a farlo in modo automatico? 49
50 Astrazioni e programmazione Quali sono i concetti maggiormente significativi, le astrazioni, per definire una soluzione di questo problema? L insieme delle parole che appaiono in un syllabus L insieme delle parole del vocabolario ICT 2014 L insieme delle parole del syllabus che compaiono nel vocabolaro ICT 50
51 Procediamo alla soluzione Supponiamo di avere il tipo generico degli insiemi: 'a set o Dettagli nel seguito Definiamo l interfaccia del nostro problema: let countword (textsyllabus : string list) (vocabict : string set) : int = failwith Parliamone!! Implementazione: esercizio per casa 51
52 Definire i casi di test let vocabict : string set = list_to_set [ Java"; Cloud"; Social-Networks"; BigData"; Web-Services"; e-commerce"; Macchine-Virtuali"] let PR2Syllabus = [Il corso di programmazione si propone di illustrare le caratteristiche principali dei linguaggi di programmazione e le loro strutture di implementazione in termini di macchine-virtuali. Il corso si propone presentare e discutere le tecniche per la programmazzione a oggetti esemplificate e sperimentate utilizzando il linguaggio Java] (*visto come lista di stringhe*) let test () : bool = countword PR2Syllabus vocabict = 2 ;; run_test "countword" test! 52
53 Abstract Data Types come Moduli in OCaml 53
54 Interfaccia Set come segnatura module type Set = sig type 'a set val empty : 'a set val add :'a -> 'a set -> 'a set val remove : 'a -> 'a set -> 'a set val list_to_set : 'a list -> 'a set val member : 'a -> 'a set -> bool val elements : 'a set -> 'a list end Si usa un module type (in un file.mli) per dichiarare un TdA sig... end racchiudono una segnatura, che definisce il TdA e le operazioni val: nome dei valori (dati e operazioni) che devono essere definiti e dei loro tipi 54
55 Realizzazione di un TdA come modulo Nome del Modulo Segnatura che deve essere implementata module Myset : Set = struct type 'a set = 'a list Tipo di dati concreto let empty : 'a set = [] let add (x:'a)(s:'a set): 'a set = (* implementations of all the operations *) : end 55
56 dot notation Per usare un identificatore ide definito nel modulo Mod si può usare la dot notation Mod.ide let s1 = Myset.add 3 Myset.empty let s2 = Myset.add 4 Myset.empty let s3 = Myset.add 4 s1 let test () : bool = (Myset.member 3 s1) = true ;; run_test "Myset.member 3 s1" test let test () : bool = (Myset.member 4 s3) = true ;; run_test "Myset.member 4 s3" test! 56
57 Open module Alternativa: Aprire lo scope del modulo (open) per portare I nomi nell ambiente del programma in esecuzione ;; open Myset let s1 = add 3 empty let s2 = add 4 empty let s3 = add 4 s1 let test () : bool = (member 3 s1) = true ;; run_test "Myset.member 3 s1" test let test () : bool = (member 4 s3) = true ;; run_test "Myset.member 4 s3" test 57
58 Implementare astrazioni Abbiamo molte possibilità per scegliere la struttura di implementazione degli insiemi o list, tree, array, etc. Come scegliamo la struttura di implementazione? Ricordiamo che un insieme è una struttura soggetta a alcuni invarianti di rappresentazione. Esempi: o Un insieme è implementato con una lista senza elementi ripetuti o Un insieme è implementato con un albero senza elementi ripetuti o Un insieme è implemnetato con un array di bit 0 = non appartiene, 1 = appartiene Il punto importante è rispettare l invariante di rappresentazione 58
59 Tipi di dati astratti Un tipo di dati astratto (ADT, Abstract Data Type) è un tipo di dati le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica del tipo e non dalla sua implementazione. Idea: Hide the concrete representation of a type behind an abstract interface to preserve invariants (Barbara Liskov) 59
60 ADT La nozione di interfaccia (interface) restringe le modalità di interazione del tipo di dati con le altre parti che compongono il programma. Vantaggi: o Safety: gli utenti del tipo di dati non possono rompere l invariante di rappresentazione o Modularità: E possibile modificare l implementazione del tipo di dati senza dover modificare l implementazione dei programmi che lo utilizzano. 60
61 ADT: Implementazione module MySet : Set = struct type 'a tree = Empty Node of 'a tree * 'a * 'a tree type 'a set = 'a tree let empty : 'a set = Empty... end Un tipo concreto per il tipo set 1. L implementazione del ADT Set deve includere l implementazione delle operazioni descritte nell interfaccia. Può contenere anche altre operazioni (ausiliarie) che non possono essere usate dall'esterno del modulo. 2. I tipi dell implementazione devono essere consistenti con quelli definiti nell interfaccia. 61
62 Implementazione di Set basata su list module MySet2 : Set = struct type 'a set = 'a list let empty : 'a set = []... end Una definizione differente per il tipo set 62
63 Attenzione! open MySet let s1 : int set = Empty Non supera la fase di controllo dei tipi Infatti il costuttore Empty non e visibile esternamente al modulo 63
64 Sperimentazione Completare l'implementazione dell'adt Set usando come rappresentazione concreta una lista senza ripetizioni una lista generica un albero binario un albero binario di ricerca Definire e eseguire opportuni test cases 64
AA OCaml: un veloce ripasso
AA 2015-2016 17. OCaml: un veloce ripasso 1 Lo s,le funzionale In Java (ma anche in C) l effe@o osservabile di un programma è la modifica dello stato temp = pair.x; pair.x = pair.y; pair.y = temp; In Ocaml
Espressioni aritmetiche
Espressioni aritmetiche Consideriamo espressioni costruite a partire da variabili e costanti intere mediante applicazione delle operazioni di somma, sottrazione, prodotto e divisione (intera). Ad esempio:
Linguaggi di Programmazione
Linguaggi di Programmazione Corso di Laurea in Informatica Astrarre sui dati Valeria Carofiglio (Questo materiale è una rivisitazione del materiale prodotto da Nicola Fanizzi) Obiettivi tipi di dato astratti
Corso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 15 Alberto Ceselli [email protected] Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 05 Maggio 2009 Programming in the
I Tipi di Dato Astratto
I Tipi di Dato Astratto Sommario Cosa sono le Strutture Dati Astratte? Le strutture dati Le operazioni Come scegliere fra varie implementazioni? Quale è la questione? Come organizzare (strutturare) i dati
Strutture dati e loro organizzazione. Gabriella Trucco
Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi
Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd
Fondamenti d Informatica: linguaggi formali Barbara Re, Phd Agenda } Introdurremo } La nozione di linguaggio } Strumenti per definire un linguaggio } Espressioni Regolari 2 Linguaggio } Da un punto di
Astrazione Dati. Nicola Fanizzi. Linguaggi di Programmazione [010194] 10 mag, Dipartimento di Informatica Università degli Studi di Bari
Astrazione Dati Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 10 mag, 2016 Sommario 1 Astrazione dati Incapsulamento Esempio / ADT pila
Alberi binari e alberi binari di ricerca
Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
Introduzione alla programmazione
Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste
RICERCA BINARIA...1 ALBERO BINARIO DI RICERCA (ABR)...3 RICORSIONE...4 ESEMPI DI RICORSIONE IN VISUAL BASIC...5 ESEMPI DI RICORSIONE IN C / C++...
Tre piccioni con una fava: Ricerca Binaria, Albero Binario di Ricerca e Ricorsione prof. Claudio Maccherani - 2006 / 2007 foto Claudio Maccherani RICERCA BINARIA...1 ALBERO BINARIO DI RICERCA (ABR)...3
Università Ca Foscari Dipartimento di informatica. Programmazione part-time. Esame Ocaml
Soluzione Università Ca Foscari Dipartimento di informatica Programmazione part-time Esame Ocaml Nome: Matricola: Samuel Rota Bulò, a.a. 2009/2010 Programmazione part-time a.a. 2009/2010 Esame Ocaml Nome:
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
Fasi di un Compilatore
Dipartimento di Matematica e Informatica Università di Camerino Un implementazione compilativa di un linguaggio di programmazione viene realizzata tramite un programma che prende il nome di compilatore
Algoritmi e Strutture Dati
Introduzione al corso di Algoritmi e Strutture Dati Luigi Pontieri Il nome del corso: Algoritmi e Strutture Dati Algoritmo: metodo per la risoluzione di problemi di elaborazione di informazioni, espresso
ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016
ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016 Classe: 4^A inf Prof.ssa Lami Carla Prof. Simone Calugi Programma di INFORMATICA GENERALE, APPLICAZIONI
Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Interfacce. Esempio: interfaccia I con una sola funzione g() public interface I {
Interfacce Una interfaccia è un astrazione per un insieme di funzioni pubbliche delle quali si definisce solo la segnatura, e non le istruzioni. Un interfaccia viene poi implementata da una o più classi
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
Linguaggi, Traduttori e le Basi della Programmazione
Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
Linguaggi e Ambienti di Programmazione
Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi
Client - Interfaccia - Implementazione
Client - Interfaccia - Implementazione Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati
Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione
Informatica 3 LEZIONE 1: Introduzione Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di Informatica 3 Lezione 1- Modulo 1 Introduzione al corso Introduzione Corso di Informatica 3
Implementazione dell albero binario in linguaggio C++
Implementazione dell albero binario in linguaggio C++ Costruire il programma per gestire le operazioni su un albero binario. Ogni nodo dell albero contiene un codice e una descrizione; il programma deve
LINGUAGGI DI ALTO LIVELLO
LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada
Alberi ed Alberi Binari
Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,
Algoritmi e Strutture Dati
Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Il concetto di dato Il concetto di tipo di dato Insertion Sort for j 2 to lenght[a]
Implementazione ADT: Alberi
Implementazione ADT: Alberi Livelli di astrazione 2001/2002 1 Esercitazione 5 (E6): alberi (tree) albero struttura dati fondamentale, soprattutto per le operazioni di ricerca tipi di albero con radice
Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :
PROGRAMMAZIONE (Corsi B e C) Pre-appello di Gennaio 2004 (A.A. 2003/2004) PROGRAMMAZIONE (B e C) S. Straordinaria - Appello di Gennaio (A.A. 2002/2003) 22 Gennaio 2004 ore 11 Aula II di Facoltà (Durata:
JAVA GENERICS. Angelo Di Iorio Università di Bologna
JAVA GENERICS Angelo Di Iorio Università di Bologna Tipi parametrici In diversi casi è utile definire classi che operano su tipi di dato diverso e implementano un comportamento comune e indipendente dal
