Sei sulla pagina 1di 4

FONDAMENTI DI PROGRAMMAZIONE

ESERCITAZIONE 1

Sommario: In questa sessione di esercitazione, svolgeremo alcuni esercizi relativi alla prima parte
del corso, introduzione ai calcolatori e alla programmazione.

LINGUAGGI DI PROGRAMMAZIONE, PROGRAMMA,TRADUTTORI, ESECUTORI,


GRAMMATICHE
Domanda. Quali sono le componenti harware principali di un calcolatore ?
Domada. Descrivere i due tipi di memoria (principale e ausiliaria) e la loro organizzazione,
specificando tre caratteristiche per memoria.
Domanda.Elencare tre operazioni della CPU. Cosa sono i registri?
Domanda. Descrivere la struttura di un compilarore specificando le diverse fasi della compilazione,
specificando per ciascuna fase cosa ha in ingresso e cosa produce in uscita.
Domanda. Specificare l'ordine corretto delle seguenti operazioni: esecuzione, traduzione, link,
caricamento.
Domanda. Confrontare compilatore ed interprete.
Domanda. Cos' è un errore di sintassi? Viene individuato nel sorgente o nell'oggetto del
programma?
Domanda. Il listato del compilatore mostra errori di sintassi o errori run-time?
Domanda. In quali tipi di memoria vengono memorizzati il sorgente di un programma e l'eseguibile
di un programma?
Domanda. Quali sono i vantaggi dei linguaggi di programmazione ad alto livello rispetto al
linguaggio macchina?
Domanda. Descrivere la gerarchia dei tipi di linguaggi di programmazione fornendo un esempio
per ciascun tipo.
Domanda. I linguaggi general purpose sono tutti equivalenti? Quale linguaggio di programmazione
scegliereste per realizzare un programma in ambito scientifico? Rispondere alle due domande: come
si accordano le risposte?
Domanda. Formulare il problema della fermata e dire perchè è significativo sia da un punto di vista
teorico sia da un punto di vista applicativo.
Domanda. Qual'è la differenza tra errore di arrotondamento (o di rappresentazione) ed errore di
cancellazione? Cosa si intende per underflow e per overflow aritmetico?
Domanda. Cosa è il debug?

ESPRESSIONI E OPERATORI ARITMETICI


Domanda. Per le seguenti espressioni, indicare quali sono valide e valutarle, mostrando l'albero di
valutazione. Dire per quelle non valide perchè.
#define PI 3.14159
#define MAX_I 1000
...
double x,y=-1.0;
int a=3,b=4,i;

i=a%b;
i=(989-MAX_I)/a;
x=PI*y;
i=a/-b;
x=a%(a/b);
i=b/0;
i=a%(990-MAX_I);
i=(MAX_I-990)/a;
i=(MAX_I-990)%a;
i=a%(MAX_I-990);
x=(double) a/b;
MAX_I*a/b*a;
MAX_I*a/b+b/a;
b*MAX_i/++a+b/a;
PI-(a+b/2)+a*y;
Domanda. Il tipo del valore ritornato da un'espressione aritmetica dipende da
1. il tipo della prima variabile nell'espressione
2. il tipo della variabile a cui il valore dell'espressione viene assegnato
3. la combinazione dei tipi utilizzati nell'espressione

Domanda. Una conversione di tipo è


1. un cambio del tipo di una variabile
2. un cambio del tipo di un valore
3. un cambio del valore di una variabile
4. una dichiarazione di una variabile

VARIABILI, RAPPRESENTAZIONE IN MEMORIA, SEQUENZA


Domanda.Ogni qualvolta un valore viene messo in una locazione di memoria, questo valore
sostituisce il valore precedentemente contenuto nella locazione ed il valore precedente viene
distrutto.
1.Falso
2.Vero
Domanda.Correggere gli errori di sintassi e riscrivere il codice seguendo le convenzioni stilistiche
di leggibilità. Cosa fa il programma? Cosa viene visualizzato?
#include<stdio.h>
main
(){int X, /*primo dato*/ x, /*secondo dato in input*/
sum; /**/
scanf("%i%i";X,x); X+x=sum;
printf("%d+%d=%d\n"; X;x; sum);}
Domanda. Descrivere la memoria prima e dopo l'esecuzione del programma precedente (corretto).

ASSEGNAMENTO LOGICO
Domanda. Assegnare il valore 0 alla variabile divisore se digit non è un divisore di num,
diverso da zero altrimenti.
Domanda. Assegnare il valore 0 alla variabile lowercase se ch non è una lettera minuscola,
diverso da zero altrimenti.

SELEZIONE
Domanda. Scrivere il diagramma di flusso e il codice in C che realizza la seguente lista di scelte:
Velocità del vento (km/h) Categoria
Sotto 40 Vento non forte
40-61 Vento forte
62-87 Burrasca
Sopra 88 Uragano

Domanda. Calcolare la traccia di esecuzione del programma precedente per una velocità del vento
di 65 km/h.
Domanda. Cosa si intende per programmazione strutturata?
Domanda. Elencare tre tipi di strutture di controllo, spiegando brevemente il significato.
Domanda. Spiegare la differenza tra le istruzioni A e B:
A:
if(x>=0)
x=x+1;
else if (x>=1)
x=x+2;

B:
if(x>=0)
x=x+1;
if (x>=1)
x=x+2;
Domanda. Scrivere il diagramma di flusso relativo al problema seguente:
Date in ingresso le coordinate x, y di un punto nel piano cartesiano, visualizzare un messaggio che
indica a quale quadrante appartiene il punto.

RIPETIZIONE
Domanda. Come è chiamata la variabile di controllo di un'istruzione for?
Domanda. Quali delle seguenti istruzioni di ripetizione eseguono sempre almeno una volta il loro
corpo?
1. do-while
2. while
3. for
Domanda. Quando si preferisce l'uso del ciclo for per realizzare la ripetizione di un blocco di
codice?
1. quando si conosce il numero di volte che deve essere ripetuto il ciclo
2. quando il blocco di istruzioni deve essere eseguito almeno una volta
3. quando la condizione di ripetizione è vera
Domanda. Quando si preferisce l'uso del ciclo do-while per realizzare la ripetizione di un blocco di
codice?
1. quando si conosce il numero di volte che deve essere ripetuto il ciclo
2. quando il blocco di istruzioni deve essere eseguito almeno una volta
3. quando la condizione di ripetizione è vera
Domanda. In un ciclodi conteggio il numero di ripetizioni del ciclo potrebbe non essere noto
primadell'esecuzione del ciclo stesso.
Vero
Falso
Domanda. Quante righe di asterischi vengono visualizzate dall'esecuzione del seguente frammento
di codice? Qual è l'ultimo valore visualizzato?
for(i=0; i<10; ++i){
for(j=0; j<5; ++j)
printf("%d",i*j);
printf("********\n");
}
Domanda. Cosa visualizza il seguente frammentodi codice? Valutare per i seguenti valori in
ingresso: 345,6.
printf("\nInserisci un intero positivo:");
scanf("%d", &num);
do{
printf("%d", num%10);
num/=10;
}while(num>0);
printf("\n");
Domanda. Riscrivere il seguente frammento di codice utilizzando un ciclo for:
i=0;
while(i<n){
scanf("%d",&x);
if(x==i)
++count;
i++;
}
Domanda. Scrivere un ciclo do-while che continui a chiedere all'utente un valore finchè il dato
acquisito non è compreso tra 0 e 15 estremi inclusi.
Domanda. Scrivere un programma che calcoli e visualizzi la somma di una serie di rilevamenti di
temperature in gradi Celsius inseriti da tastiera e terminati dal valore sentinella -275.
Domanda. Scrivere un programma che trovi il minimo, il massimo, la media di una serie di n
numeri. Il programma chiede il valore n e poi di acquisire i numeri.