Case Study - Un (linguaggio) costrutto tipato: Accedere indirizzi fuori dai bounds di un array Char A[n1..n2]; Int i; … i = e … … A[i] … Sono due interi.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Puntatori e gestione dinamica della RAM
1 Automazione dellalgoritmo ricorsivo di permutazione eseguita da Mariano Melchiorri.
INFORMATICA Strutture condizionali
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Linguaggio C++ Selezione.
Selezione A. Ferrari.
Selezione - approfondimento
PHP.
Linguaggi di programmazione
MATLAB.
Type Checking (1° parte)
Algoritmi e Programmazione
Generalità Linguaggio e Macchina Astratta
I Dati . i tipi di dati possono essere classificati in:
Fondamenti di Informatica Prof. Cantone
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Funzioni definite dall’utente
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Laboratorio di Linguaggi lezione VIII Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea.
Laboratorio di Linguaggi lezione V Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione IV Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso di Laurea in.
Laboratorio di Linguaggi lezione VII: puntatori 3/3 Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
Corso di Informatica Applicata Lezione 6
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Argomenti Direttive di Preprocessore: Compilazione Condizionale
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Esempi di riuso del codice nei linguaggi di alto livello Lab Programmazione - turno /2006.
Esercizi FUNZIONI Passaggio di parametri per valore, variabili e tipi locali e globali, prototipo.
I File.
Le funzioni.
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Si vuole che lesecutore coniughi non solo il presente indicativo ma anche limperfetto e il passato remoto Acquisisci tempo presente imperfetto passato.
void binario(int n); …………………
Lordinamento di tre numeri interi. acquisisci a,b,c (a > b) AND (a > c)(b > a) AND (b > c) (c > a) AND (c > b) Scrivi c,b,aScrivi b,c,aScrivi c,a,bScrivi.
Laboratorio di Linguaggi lezione VII: variabili Globali e Locali Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e Naturali.
Passaggio di parametri per indirizzo
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Ricerca sequenziale in un array di interi
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Anno accademico Le istruzioni di controllo in C.
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
Introduzione a Javascript
Flusso Statico e Dinamico 20/03/2006. Codice da Interpretare int valore; valore = funz(); if( valore > 0 ) { [codice1] } else { [codice2] } return valore;
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
1 Eccezioni in Java. 2 Ricordiamo che 4 una procedura può terminare –normalmente, ritornando un risultato –in modo eccezionale ci possono essere diverse.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 8 Oggetti statici e dinamici. Classi annidate. Costruttori/distruttori.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Scrivere e compilare programmi
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente –la loro esistenza deve essere prevista e.
Informatica 6 Tipi di dato. Nelle celle di memoria di un calcolatore ci sono solo “0” e “1”, fisicamente realizzati tramite due diversi livelli di tensione.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Informatica 4 La ricorsione. Definizione di ricorsione Ricorsione è la proprietà di quei programmi che, all’interno delle istruzioni che li compongono,
7/16/20151 Haskell: Tipi basici e Definizioni n Tipi Atomici (scalari) n Valori e Identificatori n Overloading n Definizioni e Layout n Definizioni ricorsive:
Laboratorio di Linguaggi... altre D O M A N D E ! Marco Tarini Università dell’Insubria Facoltà di Scienze Matematiche, Fisiche e Naturali di Varese Corso.
Stringhe In linguaggio C. Stringhe  Un insieme di caratteri in sequenza forma una stringa.  Alcuni linguaggi definiscono per le stringhe uno specifico.
EVENTI Gli eventi sono delle azioni che possono essere identificate da javascript. 1 - onMouseOver, che viene messo in atto quando l'utente fa scorrere.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Eccezioni in Java. Le eccezioni in Java Exception handling: insieme di costrutti e regole sintattiche e semantiche presenti nel linguaggio allo scopo.
Transcript della presentazione:

Case Study - Un (linguaggio) costrutto tipato: Accedere indirizzi fuori dai bounds di un array Char A[n1..n2]; Int i; … i = e … … A[i] … Sono due interi Come evitare che i esca dai bounds n1 e n2 L’utente deve scrivere … if is(n1,n2,i) then A[i] else error … //auxiliaries is(n1,n2)=\x->(x≥n1 & x≤n2) T = n1..n2; Char A [T]; T i; … i = T e … … A[i] … Tipo intervallo //auxiliaries Ord T => Assign T where =\(var,val)-> if (val≥n1 & val≤n2) then setq(var,val) else error Il programma è ben scritto L’utente deve completare la definizione di T Il compilatore fa il resto Cosa avviene: Senza tipiCosa avviene: con tipi UNTRAPPED ERRORS TRAPPED ERRORS

Case Study - statico vs. dinamico Trasferire controllo ad una parola non istruzione Apply f g = f g dato Come controllare il corretto Uso delle due occorrenze f? Il compilatore aggiunge “tipi” per l’esecutore (ma non è in grado di verificarli) = Il compilatore trova una soluzione quindi: codice e dati correttamente “combinati” Cosa avviene: dinamicoCosa avviene: statico TRAPPED ERRORS codice L’esecutore deve controllare la “veridicità” dei tipi “c” e “d” e può caricare la memoria di conseguenza Apply f g = f g apply: t1->t2->t3 f: t1 & f: t4->t5 g: t2 & g: t4 L’esecutore deve solo eseguire Nessuna necessità di un DOPPIO LOADING di f TRAPPED ERRORS UNTTRAPPED ERRORS: quando il compilatore non sa aggiungere tipi