Sviluppo software in gruppi di lavoro complessi 1
|
|
- Giustina Fede
- 4 anni fa
- Visualizzazioni
Transcript
1 Sviluppo software in gruppi di lavoro complessi 1 Mattia lab Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it Anno accademico 2016/17, I semestre 1 cba 2016 M.. Creative Commons Attribuzione Condividi allo stesso modo 4.0 Internazionale. 1
2 142 Lezione XIX: lab
3 143 Procedurale vs. Dichiarativo Spesso si scrivono le stesse cose due volte: do balance := balance - x Implementazione e specifica How & What ensure balance = old balance - x Il client è responsabile delle precondizioni, il fornitore di postcondizioni e invarianti. lab
4 144 Il principio di sostituzione di Liskov stabilisce che, perché un oggetto di una classe derivata soddisfi la relazione is-a, ogni suo metodo: deve essere accessibile a pre-condizioni uguali o piú deboli del metodo della superclasse; deve garantire post-condizioni uguali o piú forti del metodo della superclasse; lab Altrimenti il figlio non può essere sostituito al padre senza alterare il sistema.
5 Principio di sostituibilità Le due condizioni sono quindi: PRE parent = PRE derived (1) POST derived = POST parent (2) lab (1) in un programma corretto non può succedere che PRE parent valga e PRE derived no; l oggetto evoluto deve funzionare in ogni stato in cui funzionava l originale: non può avere obbligazioni piú stringenti, semmai piú lasche. (2) in un programma corretto non può succedere che valga POST derived ma non POST parent ; un stato corretto dell oggetto evoluto deve essere corretto anche quando ci si atte i benefici dell originale. 145
6 146 Principio di sostituibilità (cont.) Un modo per garantire che le condizioni (1) e (2) siano automaticamente vere consiste nell assumere implicitamente che, se la classe evoluta specifica esplicitamente una precondizione P e una postcondizione Q, le reali pre- e post-condizioni siano: lab PRE derived = PRE parent P (3) POST derived = POST parent Q (4) In : require else e ensure then PRE parent = PRE derived POST derived = POST parent
7 147 Contratti astratti ext (x: G) -- Add `x' at of list. require space_available: not full deferred ensure one_more: count = old count + 1 full: BOOLEAN -- Is representation full? -- (Default: no) do Result := False Stronger precondition... ma weaker (uguali in realtà) in astratto full: BOOLEAN -- Is representation full? -- (Answer: if and only if -- number of items is equal -- to capacity) do Result := (count = capacity) lab
8 148 Problema: i parametri... Animale mangia Cibo Mucca (is a Animale) mangia Erba (is a Cibo) Ma questa covarianza è contraria al principio di Liskov perché restringe le precondizioni. La controvarianza (Mucca mangia Cosa, Sather) e l invarianza (Mucca mangia Cibo, Java) vanno bene. invece è covariante... (il che, impedo un controllo di conformità statico, introduce parecchie complicazioni CATcall, run time type identification... ). lab
9 149 Trattamento delle situazioni anomale Nel modello di hanno un ruolo importante le eccezioni, che vengono trattate in un modo differente da quello dei piú diffusi linguaggi di programmazione (Ada-like). lab Exception An exception is a run-time event that may cause a routine call to fail (contract violation). A failure of a routine causes an exception in its caller.
10 150 Anti-pattern sqrt (n: REAL): REAL do if x < 0.0 then raise Negative else normal_square_root_computation exception when Negative => print("negative argument%n") return when others =>.. lab In questo caso il meccanismo delle eccezioni è usato come strumento di controllo del flusso!
11 151 Il trattamento delle eccezioni in Due modalità: 1 Failure (organized panic): clean up the environment, terminate the call and report failure to the caller. 2 Retry: attempt to change the conditions that led to the exception and to execute the routine again from the start. lab Per trattare il secondo caso, introduce il costrutto rescue/retry. Se il corpo del rescue non fa retry, si ha un failure.
12 152 Esempio quasi_inverse (x: REAL): REAL -- 1/x if possible, otherwise 0 local division_tried: BOOLEAN do if not division_tried then Result := 1/x else Result := 0 rescue division_tried := True Retry := True lab
13 153 Correttezza Per ogni feature (pubblica) f : {PRE f INV } body f {POST f INV } {True} rescue f {INV } {True} retry f {INV PRE f } L assenza di rescue dovrebbe corrispondere perciò a una procedura che ripristina l invariante! lab
14 Hello world! note description: "Esempio base per iniziare" author: "Mattia " class HELLO create make lab feature -- sezione: puo` contenere molte feature make local s: STRING do s := "Hello" print (s + " World%N") io.put_string ("Hello World"); io.put_new_line 154
15 155 Caratteristiche di Le variabili (entities) possono essere reference (default) o expanded Void, True, False, Result, Current, Precursor, ANY, NONE assegnamento :=, clone x := y.twin (o x := y.deep_twin) reference x = y, expanded x ~ y, equal(x, y) funziona anche se x è Void gli attributi sono feature in sola lettura lab
16 Strutture di controllo if.. then.. elseif.. then.. else.. inspect exp when v1 then inst when v2 then inst2.. else inst0 from my_list.start until my_list.off loop print (my_list.item) my_list.forth -- command across my_list as ic loop print (ic.item) -- query across my_list as ic all ic.item > 3 -- query across my_list as ic some 156 lab
17 157 Particolarità multipla rename, export, undefine, redefine (Precursor), select (utile solo nel caso di diamond inheritance) ereditarità non conforme inherit {NONE}: senza polimorfismo, riuso puro: analogo al copia e incolla... lab
Svigruppo. Monga. Il modello di. Asserzioni. What & How Contratti ed ereditarietà Eccezioni Qualche dettaglio in più sul linguaggio. Svigruppo.
Sviluppo software in gruppi di lavoro complessi 1 Mattia Lezione VIII: Design by Contract Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it Anno accademico 2018/19, I semestre
Svigruppo. Monga. Il modello di. Asserzioni. What & How Contratti ed ereditarietà Eccezioni. Svigruppo. Monga. Il modello di.
Sviluppo software in gruppi di lavoro complessi 1 Mattia Lezione VI: Design by Contract Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it Anno accademico 2017/18, I semestre
Prova di esame del 19 giugno 2017
Prova di esame del 19 giugno 2017 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere un qualunque numero naturale di affermazioni vere. Vengono assegnati 0.5 punti
Compito di Fondamenti della Programmazione: Metodi Evoluti - A.A Prova di esame del 24 settembre 2015
Compito di Fondamenti della Programmazione: Metodi Evoluti - A.A. 2014-15 Prova di esame del 24 settembre 2015 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere
Compito di Fondamenti della Programmazione: Metodi Evoluti - A.A Prova di esame del 19 luglio 2014
Compito di Fondamenti della Programmazione: Metodi Evoluti - A.A. 2013-14 Prova di esame del 19 luglio 2014 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere un
Compito di Fondamenti della Programmazione: Metodi Evoluti - A.A Prova di esame del 18 giugno 2013
Compito di Fondamenti della Programmazione: Metodi Evoluti - A.A. 2012-13 Prova di esame del 18 giugno 2013 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere un
Prova di esame del 1 luglio 2019
Prova di esame del 1 luglio 2019 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere un qualunque numero naturale di affermazioni vere. Vengono assegnati 0.5 punti
Prova di esame del 22 luglio 2016
Esercizio 1) [10 punti] Prova di esame del 22 luglio 2016 Marcare le affermazioni che si ritengono vere. Ogni manda può avere un qualunque numero naturale di affermazioni vere. Vengono assegnati 0.5 punti
Concetti Base Encapsulation ed Ereditarietà Programmare con l Ereditarietà. Java: Ereditarietà. Damiano Macedonio
Dipartimento di Informatica, Università degli Studi di Verona Corso di Programmazione per Bioformatica Introduzione Ereditarietà in Sintesi È uno dei concetti chiave della programmazione orientata agli
Prova di esame del 16 giugno 2016
Esercizio 1) [10 punti] Prova di esame del 16 giugno 2016 Marcare le affermazioni che si ritengono vere. Ogni manda può avere un qualunque numero naturale di affermazioni vere. Vengono assegnati 0.5 punti
SOLUZIONE: come antenato comune. Fondamenti della Programmazione: Metodi Evoluti - A.A Prova d esame del 24 febbraio 2014
Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere un qualunque numero naturale di affermazioni vere. Vengono assegnati 0.5 punti sia per ogni affermazione vera
Prova di esame del 21 giugno 2018
Prova di esame del 21 giugno 2018 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere un qualunque numero naturale di affermazioni vere. Vengono assegnati 0.5 punti
Prova di esame del 19 luglio 2019
Prova di esame del 19 luglio 2019 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni manda può avere un qualunque numero naturale di affermazioni vere. Vengono assegnati 0.5 punti
Sistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
Sistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
FUNZIONI PARAMETRI DEFINIZIONI DI PROCEDURE PROCEDURE
FUNZIONI PARAMETRI function nome [ (parametri) ] return tipo; Definizione: function nome [ (parametri) ] return tipo is dichiarazioni; comandi; gestori; Il corpo contiene uno o più comandi return expr
FUNZIONI. Dichiarazione: Definizione:
FUNZIONI Dichiarazione: function nome [ (parametri) ] return tipo; Definizione: function nome [ (parametri) ] return tipo is dichiarazioni; begin comandi; exception gestori; end [nome]; Il corpo contiene
Semantiche dei linguaggi di programmazione
Semantiche dei linguaggi di programmazione By Giulia Costantini (819048) e Giuseppe Maggiore (819050) Contents La semantica del linguaggio... 1 Tipi di semantica... 1 Esempio di semantica operazionale...
Compito di Fondamenti della Programmazione: Metodi Evoluti - A.A Prova di esame del 24 settembre 2013
Compito di Prova di esame del 24 settembre 2013 Esercizio 1) [10 punti] Marcare le affermazioni che si ritengono vere. Ogni domanda può avere un qualunque numero naturale di affermazioni vere. Vengono
Python. Loriano Storchi.
Python Loriano Storchi loriano@storchi.org http:://www.storchi.org/ I linguaggi di programmazione Abbiamo visto che i linguaggi di programmaione sono: Dichiarativi Logici Funzionali Imperativi Procedurali
Laboratorio di PL/SQL
Laboratorio di PL/SQL Prof. Alessandra Lumini Alma Mater Studiorum - Università di Bologna Per la sintassi PL/SQL: ORACLE 11g Rel. 2 PL/SQL Language Reference 1 Schema DB 2 1 Procedure: definizione e call
Istruzioni condizionali di diramazione in Fortran 90
Istruzioni condizionali di diramazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Istruzioni di diramazione DIS - Dipartimento
Logica per la Programmazione
Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,
INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione
INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco: connettivi
Logica per la Programmazione
Logica per la Programmazione Lezione 11 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Concetto di Tripla di Hoare Soddisfatta pag. 1 Introduzione Dall inizio del corso ad ora abbiamo introdotto,
Sistemi Operativi. Bruschi Martignoni Monga. Le astrazioni del s.o. MINIX syscall. Shell Esercizi Shell programming Esercizi.
1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it Lezione V: 1 a.a. 2008/09 1 c 2009 M.. Creative Commons Attribuzione-Condividi allo stesso modo
Basi di Dati: Corso di laboratorio
Basi di Dati: Corso di laboratorio Lezione 9 Raffaella Gentilini 1 / 41 Sommario 1 DBMS Attivi e Triggers 2 2 / 41 DBMS Attivi DBMS Attivi I DBMS tradizionale sono passivi: Eseguono delle operazioni solo
PROGRAMMAZIONE Nomi, binding, regole di visibilità (scope)
PROGRAMMAZIONE 2 19. Nomi, binding, regole di visibilità (scope) PR2 2017-2018 1 Nomi Un nome in un linguaggio di programmazione è esattamente quello che immaginate o la maggior parte dei nomi sono definiti
Problema: stampa degli interi compresi tra n e m
Costrutti imperativi Problema: stampa degli interi compresi tra n e m http://caml.inria.fr/pub/docs/manual-ocaml/libref/pervasives.html Output functions on standard output val print_string: string -> unit
Uso di Asserzioni alla Hoare nei Linguaggi O.O. Java Modeling Language
Uso di Asserzioni alla Hoare nei Linguaggi O.O. Java Modeling Language Gennaio 2002 NB: tutti gli esempi in JML NON sono stati testati quindi non garantisco sulla sintassi! Scopo: descrivere in modo astratto
Ingredienti sintattici di Java
Ingredienti sintattici di Java Eugenio G. Omodeo Dip. Matematica e Geoscienze DMI Trieste, 23/09/2015 Eugenio G. Omodeo Ingredienti sintattici di Java 1/7 Specificare ( Dizionario online tratto da: Grande
Conoscere l uso delle collezioni in Java. Conoscere il concetto di Generics (programmazione
1 Conoscere l uso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali classi di Collection usare in casi specifici Conoscere
Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: Semantica spesso data in modo informale
LOGICA DI HOARE INTRODUZIONE Linguaggi di programmazione: sintassi e semantica Sintassi fornita con strumenti formali: es. grammatica in BNF Semantica spesso data in modo informale di stile operazionale
Sistemi Operativi 1. Mattia Monga. a.a. 2015/16. Dip. di Informatica Università degli Studi di Milano, Italia
1 Mattia Monga Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2015/16 1 cba 2008 16 M. Monga. Creative Commons Attribuzione Condividi allo stesso modo 4.0 Internazionale.
Sistemi Operativi. Bruschi Monga Re. Shell Esercizi Shell programming Esercizi I/O. Sistemi Operativi. Bruschi Monga Re
1 Mattia Monga Lezione XI: Processi, shell, file Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 201/16 1 cba 2008 16 M. Monga. Creative Commons Attribuzione Condividi
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 Elementi del linguaggio e primi programmi
PROGRAMMAZIONE II Seconda Valutazione Intermedia 29 Maggio Si consideri la specifica parziale di una gerarchia di classi:
Es1. PROGRAMMAZIONE II Seconda Valutazione Intermedia 29 Maggio 2013 Si consideri la specifica parziale di una gerarchia di classi: class Set { private int size \\numero degli elementi : public void add(object
Sistemi Operativi 1. Mattia Monga. a.a. 2010/11. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia
1 Mattia Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2010/11 1 c 2011 M.. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
Haskell is pure! - si può vivere senza side effects?
11 Monadi Haskell is pure! - si può vivere senza side effects? I/O (da file, da stream, a video, timers, ) pseudo-random number generator non determinismo non local control (eccezioni, call-cc, eccezioni
SOMMARIO Tipo di dato astratto (ADT) : Interfacce: interface. TIPI DI DATI ASTRATTI. Polimorfismo: Tipo class. Tipo interface. Tipi run-time: is e as.
SOMMARIO Tipo di dato astratto (ADT) : Interfacce: interface. Polimorfismo: Tipo class. Tipo interface. Tipi run-time: is e as. Confronto tra oggetti: Equals(). IComparable. IComparer. TIPI DI DATI ASTRATTI
Programmazione a Oggetti. Astrazione sui Dati e Iteratori
Programmazione a Oggetti Astrazione sui Dati e Iteratori Sommario Astrazione sui dati Specifica di classi Invariante di rappresentazione Funzione di astrazione Iteratori inner classes astrazione sul controllo
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals()
Programmazione in Java (I modulo) Lezione 21: Classi derivate e l'operatore instanceof Riscrivere il metodo tostring() Riscrivere il metodo equals() Ereditarietà (Inheritance) RIASSUMIAMO DALLA SCORSA
Controllo del flusso. Laboratorio di Sistemi Operativi primavera if/else. if/else
Laboratorio di Sistemi Operativi primavera 2009 Controllo del flusso Il controllo del flusso dà al programmatore la possibilità di scegliere che solo una parte del codice venga eseguita o che un altra
Logica per la Programmazione
Logica per la Programmazione Lezione 12 Linguaggio di Programmazione Imperativo: Sintassi e Semantica Tripla di Hoare soddisfatta A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a.
Programmazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
Stringhe. Prof. Lorenzo Porcelli
Stringhe Prof. Lorenzo Porcelli definizione Una stringa è un vettore di caratteri terminato dal carattere nullo \0. Il carattere nullo finale permette di determinare la lunghezza della stringa. char vet[32];
Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Enumerativi Finora abbiamo creato enumerativi
Approfondimenti sul ciclo while
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione In questa lezione... Mostriamo semplici esempi di uso dei cicli Ciascuno di
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
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
Logica per la Programmazione
Logica per la Programmazione Lezione 14 Sistema di Dimostrazioni per le Triple di Hoare Comando Iterativo A. Corradini e F.Levi Dip.to Informatica Logica per la Programmazione a.a. 2017/18 pag. 260 Semantica
Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript
Programmazione lato client Netscape: Microsoft: JScript ECMAScript (ECMA-262) (European Computer Manufactures Association) 1 Linguaggio di script interpretato con alcune caratteristiche Object Oriented
Fondamenti di Informatica
Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile
Modello sequenziale. Modello sequenziale: i Process 13/11/2014. ENTITY ffsr IS Port ( s,r: IN std_logic; q, qn: OUT std_logic); END ffsr;
Modello sequenziale: i Process Modello sequenziale ENTITY ffsr IS Port ( s,r: IN std_logic; q, qn: OUT std_logic); END ffsr; ARCHITECTURE seq OF ffsr IS ( r PROCESS(s, IF s = 1 AND r = 0 THEN q
College Algebra. Logarithms: Denitions and Domains. Dr. Nguyen November 9, Department of Mathematics UK
College Algebra Logarithms: Denitions and Domains Dr. Nguyen nicholas.nguyen@uky.edu Department of Mathematics UK November 9, 2018 Agenda Logarithms and exponents Domains of logarithm functions Operations
Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica
Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo
Pattern matching e tipi di dato strutturati
Capitolo 3 Pattern matching e tipi di dato strutturati Per il momento abbiamo considerato un linguaggio funzionale (denominato SimpleCaml ) i cui unici tipi di dato sono interi, float, booleani e funzioni.
Strutture di controllo e cicli
AA 2012-2013 IF logico L IF logico rappresenta il tipo piú semplice di istruzione condizionale IF logico L IF logico rappresenta il tipo piú semplice di istruzione condizionale Sintassi IF ( e s p r e
JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript
Programmazione lato client Netscape: Microsoft: JScript ECMAScript (ECMA-262) (European Computer Manufactures Association) Linguaggio di script interpretato con alcune caratteristiche Object Oriented HTTP
Corso di Programmazione
III Accertamento del 7 Luglio 2006 / A Risolvi i seguenti esercizi giustificando sinteticamente le risposte. Trasforma il seguente metodo statico in un programma corrispondente, formalizzato sempre nel
IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma
Tela (Teaching Language)
Tela (Teaching Language) Paradigma imperativo Dichiarazioni di variabili, costanti, moduli Programma strutturato in moduli innestati Scope statico Passaggio dei parametri per valore Corpo del modulo =
Design by contract. Angelo Gargantini
Design by contract Angelo Gargantini Design by contract Segue questa idea, soprattutto valida per l OO: L interfaccia di un modulo definisce un contratto Cosa è un contratto? Un accordo tra cliente e contrattore
Sistemi Operativi 1. Mattia Monga. a.a. 2018/19. Dip. di Informatica Università degli Studi di Milano, Italia
1 Mattia Monga Dip. di Informatica Università degli Studi di Milano, Italia mattia.monga@unimi.it a.a. 2018/19 1 cba 2008 18 M. Monga. Creative Commons Attribuzione Condividi allo stesso modo 4.0 Internazionale.
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
IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
Progettazione By Contract
Progettazione By Contract Documentazione di progetto Contratti per i metodi Correttezza dell implementazione invarianti per le classi Verifica asserzioni Eccezioni Progettazione By Contract Contratti per
Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output
Un algoritmo realizza una relazione funzionale tra i valori di input e quelli di output F = { (s, s ) } per ogni s esiste una e una sola coppia (s, s ). Esempio: un algoritmo che calcola il quadrato di
Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!
Espressioni Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Valutazione automatica di expr aritmetiche = obiettivo primario dei primi LP
PL/SQL e PLpgSQL. Audiolezione 28b. Necessità. Soluzioni. Embedded SQL. Alfio Ferrara - Stefano Montanelli. Estensioni procedurali di SQL
Audiolezione 28b Corso di Basi di Dati e Laboratorio PL/SQL e PLpgSQL Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 1 Estensioni procedurali di SQL Necessità Disporre di
Sistemi Operativi 1. Lezione XIX: System call in MINIX. Mattia Monga. 22 aprile 2008
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 22 aprile 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
Java thread, concorrenza
Java thread, concorrenza laboratorio 1 A.Memo febbraio 2004 il thread principale in Java ogni programma in esecuzione è un thread il metodo main() è associato al main thread per poter accedere alle proprietà
Corso di Linguaggi di Programmazione
Corso di Linguaggi di Programmazione Lezione 19 Alberto Ceselli alberto.ceselli@unimi.it Dipartimento di Informatica Università degli Studi di Milano 14 Maggio 2013 Idea Programma = Algoritmi + Strutture
Introduzione al VHDL Lezione 3
Introduzione al VHDL Lezione 3 Cristina Silvano Università degli Studi di Milano Dipartimento di Scienze dell Informazione Via Comelico 39/41, I-20135 Milano (Italy) Tel.: +39-2-5835-6306 e-mail: silvano@elet.polimi.it
INTRODUZIONE ALLA LOGICA DI HOARE. Corso di Logica per la Programmazione A.A. 2013/14
INTRODUZIONE ALLA LOGICA DI HOARE Corso di Logica per la Programmazione A.A. 2013/14 INTRODUZIONE Dall inizio del corso ad ora abbiamo introdotto, un po alla volta, un linguaggio logico sempre più ricco:
Ereditarietà e Polimorfismo
Ereditarietà e Polimorfismo Riusare il software A volte si incontrano classi con funzionalità simili In quanto sottendono concetti semanticamente vicini È possibile creare classi disgiunte replicando le
Esercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 10 novembre 2010 1 La bandiera nazionale (problema 4.7 del libro di testo). Il problema della bandiera
Scelte. Costrutto condizionale. Il costrutto if. Il costrutto if. Rappresentazione con diagramma a blocchi. Il costrutto if
Scelte Costrutto condizionale Scelte, blocchi Fino ad ora il corpo dei metodi che abbiamo scritto aveva solo un modo di essere eseguito: in sequenza dalla prima istruzione all ultima In applicazioni non
Programmazione Definizione di nuovi tipi
Programmazione Definizione di nuovi tipi Samuel Rota Bulò DAIS Università Ca Foscari di Venezia. Outline Abbiamo incontrato i tipi primitivi. unit, bool, int, float, char, string Abbiamo visto come costruire
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++ Strutture di Dati Parte 4 Conclusioni G. Mecca M. Samela Università della Basilicata Strutture di Dati: Conclusioni >> Sommario Sommario Ricapitolazione Alcune
Come trattare il risultato di un comando SQL (relazioni) che
USO DI SQL DA PROGRAMMI: PROBLEMI Come collegarsi alla BD Come trattare gli operatori SQL Come trattare il risultato di un comando SQL (relazioni) che Come scambiare informazioni sull esito delle operazioni.
PROGRAMMING BY CONTRACT
PROGRAMMING BY CONTRACT Cosa vogliamo ottenere Implementare il sistema giusto validation Implementare il sistema correttamentre verification PR2 affronta il secondo aspetto: come creare del software che
FORTRAN: LE STRUTTURE DI CONTROLLO
UNINA2 INGEGNERIA MECCANICA/AEROSPAZIALE ELEMENTI DI PROGRAMMAZIONE FORTRAN: LE STRUTTURE DI CONTROLLO Prof. Andrea Prevete - a.a. 2015/16 IF-THEN La più semplice struttura di controllo è lo statement
Logica per la Programmazione
Logica per la Programmazione Lezione 13 Comando Iterativo Sequenze (array) ed Aggiornamento Selettivo pag. 1 Regole di Inferenza per Triple di Hoare: Comando Iterativo Semantica informale del Comando Iterativo
DROOLS Expert Lab. Davide Sottara dsotty AT gmail.com. May 28, 2010
DROOLS Expert Lab Davide Sottara dsotty AT gmail.com May 28, 2010 Outline 1 2 Pattern semplici Join Quantificatori Chaining Feature avanzate : From Feature avanzata : Accumulate Outline 1 2 Pattern semplici
Esercitazioni di Elementi di Informatica
Esercitazioni di Elementi di Informatica Docente: Prof. Angelo Chianese angelo.chianese@unina.it Tutor: Ing. Antonio Picariello antonio.picariello@unina.it Interpreti e Compilatori Interprete Es. Qbasic
PROGRAMMING BY CONTRACT
PROGRAMMING BY CONTRACT Cosa vogliamo ottenere Implementare il sistema giusto validation Implementare il sistema correttamentre verification PR2 affronta il secondo aspetto: come creare del software che
La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo
Università di Roma La Sapienza, Facoltà di Ingegneria Corso di PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Prof. Giuseppe De Giacomo & Monica Scannapieco Anno Accademico 2003/04 LA FASE DI PROGETTO E
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere
Asserzioni in Java fondamenti
Asserzioni in Java fondamenti Cosa è un asserzione? Una assertion è una espressione booleana che deve essere true se e solo se il codice sta funzionando correttamente. Se l asserzione risulta falsa, viene
9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array 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 di Laurea
Nomi, binding e regole di scope
Nomi, binding e regole di scope 1 Nomi Un nome in un linguaggio di programmazione è esattamente quello che immaginate o la maggior parte dei nomi sono definiti dal programma (gli identificatori) o ma anche
Informatica (A-K) 5. Algoritmi e pseudocodifica
Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie