Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C



Documenti analoghi
Lab 02 Tipi semplici in C

Lab 02 Tipi semplici in C

Lab 02 Tipi semplici in C

Lab 02 Tipi semplici in C

Lab 02 Tipi semplici in C

Lab 02 Tipi semplici in C

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2

Variabili e tipi di dato

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2

Tipi di dato-prima parte

Linguaggio C. Fondamenti. Struttura di un programma.

Tipi interi lo standard (1)

Fondamenti di Informatica L-A. Esercitazione 2

Informatica Generale 02 - Rappresentazione numeri razionali

Introduzione alla programmazione in C

Le variabili. Olga Scotti

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Informatica. Rappresentazione dei numeri Numerazione binaria

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Codifica binaria dei numeri relativi

Informazione analogica e digitale

Precisazione sui tipi in ANSi C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Parte 1. Vettori di bit - AA. 2012/13 1.1

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Lab 04 Istruzioni, cicli e array"

Alcune regole di base per scrivere un programma in linguaggio C

Concetto di Funzione e Procedura METODI in Java

Rappresentazione dell informazione Codifica Binaria

ESERCIZI di FONDAMENTI DI INFORMATICA RAPPRESENTAZIONE DEI NUMERI

La selezione binaria

Sistema operativo: Gestione della memoria

Fondamenti di Informatica

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.

4 3 4 = 4 x x x 10 0 aaa

Elementi di informatica

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione in virgola mobile

Introduzione al linguaggio C Gli array

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

Funzioni in C. Violetta Lonati

Obiettivi dell Analisi Numerica. Avviso. Risoluzione numerica di un modello. Analisi Numerica e Calcolo Scientifico

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

puntatori Lab. Calc. AA 2007/08 1

Codifica: dal diagramma a blocchi al linguaggio C++

Alessandro Pellegrini

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

Codifica binaria dei numeri

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

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

Puntatori Passaggio di parametri per indirizzo

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

Elementi di Informatica e Programmazione

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

Linguaggi di programmazione

Esercitazione Informatica I AA Nicola Paoletti

Complemento al corso di Fondamenti di Informatica I corsi di laurea in ingegneria, settore dell informazione Università la Sapienza Consorzio Nettuno

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi

Rappresentazione delle informazioni

2. Codifica dell informazione

Sistemi di Numerazione Binaria NB.1

Logica e codifica binaria dell informazione

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2015

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Codifica binaria e algebra di Boole

Un ripasso di aritmetica: Rappresentazione binaria - operazioni. riporti

PROVA INTRACORSO TRACCIA A Pagina 1 di 6

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 9 Settembre 2015

Socket TCP. prima parte

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

Breve riepilogo della puntata precedente:

Informatica. Rappresentazione binaria Per esempio diventa /10/2007. Introduzione ai sistemi informatici 1

Fondamenti di Informatica T. Linguaggio C: i puntatori

Codifica dei numeri negativi

Introduzione al linguaggio C Primi programmi

Laboratorio di Informatica I

la scienza della rappresentazione e della elaborazione dell informazione

Allocazione dinamica della memoria - riepilogo

(71,1), (35,1), (17,1), (8,1), (4,0), (2,0), (1,0), (0,1) 0, = 1, 431 0, = 0, 862 0, = 1, 792 0, = 1, 448 0, = 0, 896

Sistemi di Numerazione

Alfabeto ed elementi lessicali del linguaggio C

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Richiesta pagina PHP (es: index.php)

Esercitazione 3. Corso di Fondamenti di Informatica

3. La sintassi di Java

4. Un ambiente di sviluppo per Java

Rappresentazione binaria

Sintassi: Per la dichiarazione di variabili dei tipi fondamentali:

Informatica B a.a 2005/06 (Meccanici 4 squadra) PhD. Ing. Michele Folgheraiter

Corso di Fondamenti di Informatica

Transcript:

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C

Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati dal linguaggio C Comprenderne alcuni limiti nella rappresentazione dell informazione Dimensione in byte dei tipi semplici e limiti di rappresentazione Problemi di overflow, underflow, troncamento e division by zero Espressioni su interi, razionali, e casting esplicito

Quanti bit sono usati per un tipo? In C il numero di bit utilizzati per ogni tipo dipende dal compilatore Uniche regole: short int: almeno 16 bit (2 byte) int: a discrezione del compilatore, ma vale sempre: sizeof(int) >= sizeof (short int) long int: almeno 32 bit (4 byte), e vale sempre sizeof(long int) >= sizeof(int)

Quanti bit sono usati per un tipo? float: nessun limite minimo, ma tipicamente almeno 32 bit (4 byte) double: nessun limite minimo, ma tipicamente almeno 64 bit (8 byte) long double:???

Quanti bit sono usati per un tipo? Come posso conoscere le dimensioni di un tipo? 1. Gli header limits.h e float.h specificano le costanti tipiche di un compilatore (vedremo nelle prossime lezioni cosa sono gli header files) 2. Posso usare l operatore sizeof sizeof è un operatore speciale del linguaggio C, che applicato ad un tipo restituisce il numero di bytes usati per memorizzare quel tipo

Esercizio 1 #include <stdio.h> int main(void) { int dim1, dim2, dim3; int dim4, dim5, dim6; dim1 = sizeof(short int); dim2 = sizeof(int); dim3 = sizeof(long int); dim4 = sizeof(float); dim5 = sizeof(double); dim6 = sizeof(long double); return (0); } 1. Copiare, compilare ed eseguire il seguente programma 2. Utilizzando il debug e le finestre di watch / locals, rispondere alle seguenti domande: a) Quanto vale dim2 prima e dopol esecuzione dell assegnamento? b) Quanti bit sono utilizzati per rappresentare un intero? c) Quanti bit sono utilizzati per rappresentare un float?

Quanti numeri interi posso rappresentare con una variabile di tipo X? Supponiamo che uno short int sia codificato con 16 bit (2 byte) 16 bit 2 16 ho a disposizione 65536 simboli, ma dobbiamo decidere anche se l intero è signed o unsigned 1. Caso short int (signed short int): -32768 32767 2. Caso unsigned short int: 0 65535

Esercizio 2 #include <stdio.h> int main(void) { short int i; short int k; k = 10000; i = 30000 + k; return (0); } 1. Copiare, compilare ed eseguire il seguente programma 2. Utilizzando il debug e le finestre di watch / locals, rispondere alle seguenti domande: a) Quanto valgono i e k prima degli assegnamenti? b) Secondo voi, quanto dovrebbe valere i dopo l assegnamento? c) Quanto vale effettivamente i dopo l assegnamento? Perchè? 3. Modificate il programma, specificando i e k come variabili unsigned cosa cambia? Il comportamento del programma ora è corretto? Perchè?

E sempre possibile rappresentare un qualunque numero reale? Anche la rappresentazione dei numeri reali soffre di alcuni limiti: 1. Indipendentemente da quanti bit uso per rappresentare un numero reale, tali bit devono essere sempre in numero finito se il numero di bit è finito, da qualche parte dovrò approssimare qualcosina 2. La trasformazione della rappresentazione di un numero reale da una base ad un altra non è sempre indolore può succedere che, dato un numero reale con un numero di cifre decimali finito in base 10 durante la trasformazione di base possa diventare un numero con con la parte dopo la virgola addirittura PERIODICA! Quindi, ulteriore approssimazione

Esercizio 3 #include <stdio.h> int main(void) { float k; k = 5.6F; k = k - 5.59F; return (0); } 1. Copiare, compilare ed eseguire il seguente programma 2. Utilizzando il debug e le finestre di watch / locals, rispondere alle seguenti domande: a) Quanto vale k prima del primo assegnamento? b) Quanto vale k dopo il primo assegnamento? Quant e l errore di approssimazione? c) Quanto dovrebbe valere, e quanto vale effettivamente k dopo il secondo assegnamento? Perchè? 3. Modificate il programma, specificando k come variabile double cosa cambia? Quanto vale l errore di approssimazione?

Esercizio 4 Si utilizzi il seguente schema di programma C: #include<stdio.h> main() {// dichiarazioni [<qual>] [<quant>] <tipo> <var>, <var>,... ; //... // istruzioni //... } Si definiscano le seguenti variabili: una variabile A per valori interi con la minima occupazione di memoria possibile, che dovrà avere nel proprio dominio i valori da -50000 a 30000; una variabile B per valori interi con la minima occupazione di memoria possibile, che dovrà avere nel proprio dominio i valori da 0 a 215 (ma non valori negativi); una variabile C di tipo carattere; una variabile D di tipo double

Espressioni eterogenee Cosa succede se in una espressione uso tipi diversi? laddove possibile, una espressione eterogenea viene risolta applicando la promotion dei tipi, e considerando l overloading degli operatori Cosa succede se assegno ad un tipo inferiore un valore rappresentato tramite un tipo superiore? Come si effettua la conversione esplicita da un tipo ad un altro?

Esercizio 5 #include <stdio.h> int main(void) { int i, k; float j; i = 20; k = i % 3; i = i / 3; 1. Copiare, compilare ed eseguire il seguente programma 2. Utilizzando il debug e le finestre di watch / locals, rispondere alle seguenti domande: a) Quanto valgono i e k dopo il primo blocco di assegnamenti? b) Quanto valgono k e j dopo il secondo blocco di assegnamenti? c) Se k e j al termine del programma hanno valori diversi, perchè? } k = i / 4.0F; j = i / 4.0F; return (0); 3. In fase di compilazione il programma potrebbe aver generato dei warnings a) Leggete i warning e spiegate il loro significato b) Correggete il codice al fine di far scomparire i warning (compilate sempre con rebuild all )

Esercizio 6 Si assegnino valori iniziali alle variabili nel modo seguente: A <- 0 B <- 10 4 C <- 77 D <- 10.0 (in linguaggio C, per esprimere il valore 104, si può usare la notazione 1E4) Si eseguano le seguenti operazioni: Si divida B per C (risultato in B) Si sottragga D a C (risultato in C) Si assegni a C la metà del valore di B Si sommi D ad A (risultato in A) Si controlli l esecuzione del programma con in debugger, per seguire l evoluzione del valore delle variabili. Che valori visualizza il debugger al termine dell esecuzione?