Riprendiamo l esercizio calcolatrice

Documenti analoghi
Esercizi su. Istruzioni di scelta multipla. Overflow

Struttura dei programmi C

Costanti e Variabili

Rapida Nota sulla Rappresentazione dei Caratteri

Rappresentazione di numeri interi

Lezione 3. I numeri relativi

Rappresentazione dell informazione

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

Rappresentazione di numeri relativi (interi con segno) Rappresentazione di numeri interi relativi (con N bit) Segno e Valore Assoluto

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Mini-dispensa sui puntatori in C

Esercitazioni su rappresentazione dei numeri e aritmetica. Interi unsigned in base 2

Classificazione Tipi semplici predefiniti Definizione di nuovi tipi Tipi strutturati

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

TECNOLOGIA DIGITALE. CPU, memoria centrale e dispositivi sono realizzati con tecnologia elettronica digitale

Esame di INFORMATICA (*) Operazioni Aritmetiche: Somma. Lezione 3. Operazioni Aritmetiche: Somma. Operazioni Aritmetiche: Somma

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Conversione binario-decimale. Interi unsigned in base 2. Esercitazioni su rappresentazione. dei numeri e aritmetica

1.2f: Operazioni Binarie

Rappresentazione dei numeri interi in un calcolatore

Compendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)

Interi unsigned in base 2. Esercitazioni su rappresentazione dei numeri e aritmetica. Conversione binario-decimale

Algoritmi Istruzioni che operano su dati. Per scrivere un programma è necessario. che l esecutore automatico sia in grado di.

Esercizi Programmazione I

Rappresentazione binaria delle variabili (int e char)

Somma di numeri binari

Lezione 4. Sommario. L artimetica binaria: I numeri relativi e frazionari. I numeri relativi I numeri frazionari

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Programmazione I Paolo Valente /2017. Lezione 6. Notazione posizionale

La rappresentazione dei dati

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

MATLAB Elementi di grafica Costrutti di programmazione

Interi positivi e negativi

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

Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

Rappresentazione numeri relativi e reali

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Numeri interi positivi

I.4 Rappresentazione dell informazione

Conversioni fra Tipi di Dati. Luca Abeni

Verso i puntatori: Cosa è una variabile?

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano

Programmazione in Java (I modulo)

ESERCITAZIONE. Uso dell accessorio calcolatrice per

I vettori in C. Vettori. Definizione di vettori in C. int dato[10] ; int. Numero di elementi. Tipo di dato base. Nome del vettore.

Il linguaggio C. Notate che...

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Laboratorio di Informatica

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA

Soluzioni Esercizi su rappresentazione binaria dell informazione

Laboratorio di informatica Ingegneria meccanica

Calcolo numerico e programmazione Rappresentazione dei numeri

Modulo: Elementi di Informatica

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

OPERAZIONI ARITMETICHE

CORSO DI INFORMATICA GENERALE. Università degli Studi di Bergamo

Modulo: Informatica 13/12/2010 SISTEMI INFORMATICI SISTEMI INFORMATICI SISTEMI INFORMATICI

INTRODUZIONE ALLA PROGRAMMAZIONE

Sistema Numerico Decimale

Lab 02 Tipi semplici in C

Lezione 2. Introduzione al linguaggio C/C++ Tipi di dato e numeri interi Variabili e costanti con nome Struttura di un programma

Conversione di base. Conversione decimale binario. Si calcolano i resti delle divisioni per due

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

CONVERSIONE BINARIO DECIMALE NB: Convertire in decimale il numero binario N = N =

Formule e funzioni. Manuale d uso

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Corso di Fondamenti di Programmazione canale E-O. Tipi di dato. Un esempio

Lezione 10. L arte della programmazione

Sistemi di Elaborazione delle Informazioni

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IV Indice

Codifica dei Numeri. Informatica ICA (LC) 12 Novembre 2015 Giacomo Boracchi

Architettura degli Elaboratori

Unità aritmetica e logica

Rappresentazione dei dati

Aritmetica dei Calcolatori 3

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

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

Rappresentazione dei numeri in un calcolatore

Sistemi di Numerazione Binaria

Laboratorio di Architettura degli Elaboratori LabArch 2007 Terzo Quadimestre, a.a Docente: H. Muccini

Puntatori. Fondamenti di Programmazione

Corso di Architettura degli Elaboratori

La codifica. dell informazione

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Suggerimenti, note utili ed errori comuni. Fondamenti di informatica T

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Errori di misura Teoria

La codifica binaria. Informatica B. Daniele Loiacono

Algoritmi e basi del C Struttura di un programma

LINGUAGGI DI PROGRAMMAZIONE!

Stringhe in C. Alessandra Giordani Lunedì 23 aprile 2012

Stringhe e allocazione dinamica della memoria

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

Caratteristiche di un linguaggio ad alto livello

Transcript:

Riprendiamo l esercizio calcolatrice Scrivere un programma calcolatrice che legga da tastiera due variabili intere a e b, poi Stampi un menu con un valore numerico associato a quattro operazioni possibili: 1. Addizione 2. Sottrazione 3. Moltiplicazione 4. Divisione legga in ingresso la variabile intera controllo che rappresenta la scelta di operazione Utilizzi un costrutto switch per effettuare l operazione scelta usando a e b come operandi Stampi il risultato dell operazione su schermo Se l operazione è una divisione bisognerà stampare parte intera e resto

Riprendiamo l esercizio calcolatrice Eseguire il programma calcolatrice ed effettuare una somma usando come primo operando il valore 2147483647 Cosa succede? Es. 2147483647 + 78 = -2147483571

Overflow quando il valore di una espressione è troppo grande (in modulo) per essere contenuto nel tipo di dato del risultato (o nell'oggetto a cui si vuole assegnare tale valore) si ha un overflow In tal caso, il risultato o il nuovo valore dell'oggetto sarà in generale logicamente non correlato con l'operazione effettuata E potrà variare da sistema a sistema

Overflow Tipicamente un dato memorizzato su n byte, ossia 8*n bit, può contenere valori interi nell'intervallo [-2 (8*n 1), 2 (8*n 1) -1] Quindi, per esempio il tipo int (4 byte) può rappresentare i numeri nell intervallo [-2 31, 2 31 1] = [-2147483648, 2147483647] per gli interi con segno 1 bit è usato per il segno e 31 bit per rappresentare il numero

Overflow È però possibile specificare in C/C++ che si intende usare interi senza segno In questo caso, tutti e 32 i bit a disposizione si usano per rappresentare il numero unsigned int a; il tipo unsigned int (4 byte) può rappresentare i numeri nell intervallo [0, 2 32 1] = [0, 4294967295]

Overflow NOTA: sia col tipo int che col tipo unsigned int i numeri rappresentabili con 32 bit sono sempre 2 32 = 4294967296 [-2147483648,, 0,, 2147483647] +1 OVERFLOW! [0,,., 4294967295] +1 OVERFLOW!

Overflow Lo standard prevede la disponibilità di costanti o funzioni per conoscere i limiti per ogni tipo di dato La funzione sizeof () restituisce la dimensione di un'espressione o di un tipo sizeof (espressione) Numero di byte (char) necessari per memorizzare i possibili valori dell'espressione sizeof (nome_tipo) Numero di byte (char) necessari per memorizzare un oggetto del tipo passato come parametro

Overflow Il massimo numero di valori (numeri) rappresentabili con un certo tipo di dato si può dunque calcolare in un programma in questo modo // calcolo del numero di bytes int bytes = sizeof (<tipo-di-dato>); // calcolo del numero di bit // ciascun byte contiene 8 bit int bits = bytes * 8; // calcolo del numero di numeri // rappresentabili con questo tipo di dato int values = exp2 (bits); La funzione exp2 calcola 2. Per usarla serve aggiungere #include <math.h> al programma

Overflow Quindi, il massimo numero rappresentabile con un unsigned int sarà calcolabile come int max = values - 1; Mentre il minimo e massimo numero rappresentabile con un int sarà calcolabile come int min = -(values / 2); int max = (values / 2) - 1;

Esercizio Modificare il programma calcolatrice perché verifichi che non ci sia overflow sulle operazioni di somma SUGGERIMENTI: memorizzare in una costante MAXINT l'intero più grande rappresentabile (come descritto nella slide precedente) Riflettere sulle seguenti domande: 1. è vero che la somma di due numeri positivi A e B di tipo int non supera MAXINT se e solo se B <= (MAXINT A)? 2. è vero che MAXINT A non genera mai overflow se A è un numero positivo di tipo int?

Riprendiamo l esercizio calcolatrice Eseguire il programma calcolatrice ed effettuare una divisione usando come secondo operando il valore 0 Cosa succede? Es. 300 / 0

Terminazione forzata Abbiamo provato a far eseguire al processore una operazione illegale: una divisione per zero In questi casi il processore genera una eccezione hardware Nella fase di avvio iniziale, il sistema operativo associa ad ogni possibile eccezione hardware del codice di gestione dell'eccezione stessa Tra le altre cose, il codice eseguito a seguito della nostra eccezione di divisione per zero, termina forzatamente il processo che ha generato l'eccezione

Terminazione forzata La terminazione forzata è una delle modalità (tra le più evidenti) di fallimento di un programma Un'altra è la restituzione di risultati errati Alcune cause comuni di fallimenti sono: Le variabili non sono inizializzate I valori passati alle funzioni o immessi dall'esterno non sono quelli attesi e non si effettuano controlli C'è stato un overflow

Esercizio Modificare il programma calcolatrice perché verifichi che non ci sia divisione per zero