UNIVERSIDADE LUSÓFONA DE HUMANIDADES E TECNOLOGIAS Sedia: Linguagens de Programação I Anno Scolastico: 2015/2016 Eesercizi 1ª Classe Nella risoluzione di esercizi dovrebbe essere usato il linguaggio di programmazione C Oltre alla corretta attuazione dei requisiti, tiene conto dei seguenti aspetti: Il codice dovrebbe essere ben frastagliata. Il codice dovrebbe compilare senza errori o avvisi. Prendere nota dei nomi dati alle variabili che sono indicatori di ciò che rappresentano. Evitare di utilizzare le costanti magiche. Evitare la duplicazione di codice. Considerare l'utilizzo di funzioni per migliorare la leggibilità, evitare duplicazioni e creare soluzioni più generici. 1. Indicare quali tipi di dati minimamente adeguate per rappresentare i seguenti valori: 101 0x3 20.5F 10U 071 -0.04L -5000L 10.3 -2.2e1L 423UL -2.2e1 ‘\b’ ‘s’ ‘\040’ 2. Indicare i tipi di dati che devono essere utilizzati per rappresentare le variabili con valori nei seguenti intervalli: Numeri interi compresi tra 0 e 10000 Numeri interi compresi tra -10000 e 10000 Caratteri ASCII Valori logici (vero e falso) Numeri reali positivi Definire i tipi di dati (typedef) e / o costanti più adatto a rappresentare questi tipi di dati. LPI LPI – 1ª Classe Pag. 2 di 3 3. Indicare quali delle seguenti affermazioni sono corrette. Deve giustificare quelle che considerare errati. int x, X; int a, b; char c, double d; char char; char int; 4. Indicare quale delle seguenti assegnazioni sono corrette, sapendo che tutte le variabili sono interi. Deve giustificare quelle che considerare errati. y=max(3,4); v-t=4; d=i+6; x=4+7; h+3; r-2=6; 5. Considerare un programma (eseguito in un ambiente a 32 bit) con le seguenti variabili e rispettive inizializzazioni: unsigned char c = 254; unsigned short int i = 65534; unsigned int j = 4294967294; float f = 3.4028E38; Utilizzando il debugger (senza l'utilizzo di printf ()) verifica: Qual è il valore effettivo di f Qual è il valore delle variabili, quando aggiunge 2 a ciascun. 6. Utilizzare il operatore sizeof () per indicare il numero di byte che una variabile di ciascuno dei seguenti tipi occupa in memoria. char unsigned char short int unsigned short int unsigned int int long int float double LPI Pag. 2 di 3 LPI – 1ª Classe Pag. 3 di 3 7. Qual è il risultato del seguente programma utilizzando le varie versioni della funzione stampa()? Giustificano si sono trovati qualche problemi nel codice. #include <stdio.h> void stampa() {….} int main(void) { stampa(); return 0; } void stampa() { void stampa() { int x, y=5; int y=5; if (y==5){ if (y==5){ printf(“%d”,x); x=5; printf(“%d”,x); } } } } void imprime() { int x=10, y=5; if (y==5){ int x=5; printf(“%d”,x); } } LPI Pag. 3 di 3