Modulo 5 – La programmazione
Unità 3 – Primi programmi
Prof. Antonio Scanu
1 La programmazione
Per risolvere un problema abbiamo Imparato a Individuare la strategia risolutiva e a descriverla in una sequenza di passi elementari. costruendo un algoritmo. L'algoritmo, però,
non è direttamente eseguibile dall'esecutore. Per renderlo eseguibile è necessario rappresentarlo in un sistema formale che consenta di comunicarlo al computer. Questo significa
trasformare l'algoritmo concettuale in un insieme di Istruzioni ben definite, che vanno
scritte in modo chiaro e non ambiguo. Nel caso dei computer. il sistema formale che consente di codificare cioè di tradurre nel linguaggio adottato l'algoritmo risolutivo. L'attività
di codifica viene anche indicata con il termine implementazione molto usato in informatica con il preciso significato di concretizzazione di un'astrazione.
2 La documentazione del lavoro
Per uno studio corretto della programmazione è importantissimo abituarsi a documentare
ogni fase del lavoro con grafici. tabelle e commenti. Mentre si programma. si ha spesso la
necessità di tornare indietro per rivedere alcuni punti. per correggere errori o per sviluppa re meglio un problema già risolto. Anche a distanza di tempo. un lavoro ben documentato
sarà sicuramente più semplice da rileggere e da correggere. Realizzare una buona documentazione quindi, è una regola fondamentale per uno sviluppo completo ed esauriente
della soluzione di un problema. Per questo motivo suggeriamo alcuni accorgimenti.
Realizzare la documentazione contemporaneamente alla progettazione e mai successivamente.
Riferire tutti i chiarimenti indicati nella documentazione ai punti fondamentali del
problema, indicando dettagliatamente che cosa fare e, subordinatamente, come
farlo.
Attribuire alle variabili nomi significativi, che favoriscano la comprensione dello
scopo per cui le variabili vengono utilizzate.
Commentare in modo semplice le Istruzioni. evitando annotazioni superflue. Durante la lettura di un algoritmo. i commenti alle Istruzioni rappresentano la prima e
più Immediata documentazione disponibile. Essi aiutano a comprendere e a giustificare la presenza di alcune istruzioni e a favorire la verifica della correttezza formale dell'algoritmo. Non tutte le Istruzioni hanno bisogno di essere commentate: in
generale saranno trascurate tutte le Istruzioni il cui contenuto è facilmente deducibile dal contesto.
Aggiornare la documentazione immediatamente allorquando dovessero essere necessarie modifiche all'algoritmo o al programma.
Per ottenere un lavoro ben documentato, quindi. è consigliabile procedere affrontando i
seguenti passaggi.
Lettura del testo del problema. È Indispensabile leggere attentamente e interpretare correttamente la traccia del problema per poter passare alle fasi successive.
Analisi del problema. È una delle fasi più delicate. Consiste nell'esporre l'interpretazione che segue la lettura del testo del problema e nel mettere in evidenza tutti
gli aspetti fondamentali. Durante questa fase occorre individuare con grande attenzione di quali dati di input input è necessario servirsi e quali dati di output oc corre produrre;
2
Analisi dei dati. Consiste
nell'analizzare i dati individuati durante l'analisi del
problema e nel descriverli
dettagliatamente. Utilizzeremo la tabella delle variabili con il nome. la funzione (I = Input. O= output. L
=lavoro). ti tipo e la descrizione (il significato e l'utilizzo) di ogni variabile coinvolta
nell'elaborazione. Le variabili che hanno funzione di Input e di output costituiranno
l'area di interesse del problema, ossia le specifiche funzionali.
Formalizzazione dell'algoritmo. È la fase di dettaglio. Consiste nello sviluppo dell'algoritmo con il diagramma a blocchi.
Test (o trace) consiste nella rappresentazione dell'esecuzione dell'algoritmo. ossia nel compimento del test
per verificare se i passi dettagliati risolvono il problema dato. Per far ciò
ci serviremo di un'altra tabella. la tavola di traccia. Inserendo dati opportunamente scelti, seguiremo. Passo dopo passo i valori assunti dalle variabili e controlleremo l'esattezza delle Istruzioni e il raggiungimento dell'obiettivo.
Codifica. L'algoritmo cosi testato potrà. a questo punto. essere codificato nel linguaggio di programmazione scelto. Tuttavia. se durante questa fase dovessero risultare necessarie delle modifiche queste andranno riportate prima nelle altre fasi
precedentemente descritte e poi nel programma.
3 Il costrutto sequenza
La sequenza è il più semplice fra I tre costrutti fondamentali. Si utilizza quando le azioni
devono essere eseguite ordinatamente una dopo l'altra senza alcuna possibilità di scelta.
Le Istruzioni vengono scritte una dopo l'altra separandole In modo opportuno (per esempio con un punto e virgola ";". o semplicemente scrivendo un'istruzione per riga); esse verranno poi eseguire una dopo l'altra nell'ordine con cui sono scritte. In generale tale strut tura si rappresenta, col diagramma a blocchi nel seguente modo:
3
dove B1, B2 e BN possono essere blocchi semplici o blocchi composti. Un blocco semplice è, per esempio, un'istruzione di assegnazione. un'Istruzione di I/O o uno degli altri costrutti fondamentali. Il blocco composto, Invece, è un insieme di più blocchi semplici. In
base a quest'ultimo concetto. anche un Intero algoritmo strutturato è una struttura sequenziale.
4 Un primo esempio: scambio di due valori
Analisi del problema
A prima vista la soluzione immediata sembrerebbe:
prendi il contenuto di B e mettilo in A;
prendi il contenuto di A e mettilo in B.
Naturalmente questa soluzione è errata. in quanto l'esecuzione della prima azione comporta la perdita Immediata del contenuto della variabile A. Per risolvere questo problema
dobbiamo servirci di una terza variabile e in cui "salvare temporaneamente" il contenuto
di A. È un po' come se volessimo scambiare il contenuto di due bottiglie contenenti una
del vino e l'altra del latte: non possiamo versare il vino contenuto nella bottiglia all'interno
dell'altra! Così facendo. Otterremmo soltanto un "cocktail poco gradevole". ma non risolveremmo il problema: per farlo. è necessario utilizzare una terza bottiglia. In dettaglio. quindi. le azioni da compiere sono le seguenti:
prendi il contenuto di A e mettilo in C;
prendi il contenuto di B e mettilo in A;
prendi il contenuto di C e mettilo In B.
Vediamole graficamente ricorrendo all'analogia con le
scatole. Supponendo che il valore delle variabili è :
A=2 , B=6 e C=0 inizialmente
avremo:
Prendi il contenuto di A e mettilo
in C
Prendi il contenuto di B e mettilo in
A
4
5 Il testing
Una volta completata la scrittura dell'algoritmo, come si può essere certi che i risultati in
output siano giusti? La risposta immediata è "basta effettuare le prove". Ma come? E soprattutto, quante prove bisogna effettuare per essere sicuri di aver codificato corretta mente l'algoritmo?
Teoricamente bisognerebbe provare il programma avendo in ingresso tutti i dati possibili e
in tutte le possibili combinazioni: naturalmente, ciò è impossibile!
Dal punto di vista operativo dovremmo quindi trovare tutti gli errori, eliminarli, e solo allora
potremmo dire che non ci sono errori!
Naturalmente non possiamo dimostrare la correttezza del codice sulla base di questa affermazione, ma possiamo prenderne spunto per affinare una tecnica che ci aiuti ad affermare che il nostro software, se non ne è proprio privo, contiene pochi e improbabili errori,
5
cioè quelli che non siamo riusciti a trovare; si procede cioè a una vera "caccia agli errori",
che prende il nome di testing.
Con testing intendiamo tutte le operazioni che vengono eseguite al termine della stesura
del codice al fine dì:
verificare l'adeguatezza del programma alle specifiche richieste;
effettuare prove estreme di funzionamento per poterne verificare l'affidabilità anche in casi particolari, escludendo la presenza dì errori.
L'affermazione "più prove vengono effettuate senza che si verifichino errori e più è possibile affermare che il programma è corretto" apparentemente è ragionevole, ma spesso è
inesatta! Un programma non si testa effettuando tante prove, ma effettuando un numero
adeguato di prove "ben selezionate" su un sottoinsieme di dati di ingresso significativi,
che prende il nome di test data set.
Per esempio, se il nostro algoritmo deve effettuare la media fra tre numeri, è inutile provare tutte le combinazioni possibili dei tre numeri, ma basta verificarlo in un caso intermedio
e nei casi estremi di funzionamento, che per questo problema potrebbero essere:
tutti i numeri uguali a 0;
somma dei tre numeri uguale a 0;
somma dei tre numeri minore di 0;
tre numeri a caso, con uno maggiore di 0;
tre numeri uguali.
Alcune regole pratiche
I criteri per la verifica e la validazione di un programma devono essere stabiliti prima della fase di progettazione e codifica: essi devono essere specificati durante la
fase di analisi, insieme alla definizione delle specifiche del problema.
I dati in ingresso prescelti per i test devono essere divisi in categorie omogenee,
cioè con le stesse caratteristiche: prima tutti i numeri interi positivi, poi quelli negativi, poi i reali positivi e via di seguito, fino alla classe costituita dal solo numero 0.
Per ogni categoria di dati di ingresso deve essere effettuato almeno un test.
È necessario conoscere a priori il risultato corretto di ogni test, cioè il valore atteso
in caso di correttezza dell'algoritmo.
Occorre prestare particolare attenzione alle cosiddette "condizioni limite" e alle
condizioni particolari cui devono sottostare, per esempio, le espressioni algebriche
(testare cioè i casi in cui si possa verificare la divisione per 0, radicando < 0 ecc.).
Verificare il comportamento del programma anche nel caso di dati in ingresso non
validi ma che comunque possono essere inseriti dall'utente: in tali casi occorre prevedere un messaggio che indichi all'utente tale errore, in modo che non lo ripeta.
Verificare il programma "strada facendo", cioè pezzo per pezzo (modulo per modulo), e solo in seguito testare il programma completo.
I test dovrebbero essere effettuati da una persona diversa dal programmatore che
ha realizzato la codifica.
Inoltre è necessario:
individuare l'istruzione (o il blocco di istruzioni) da cui l'errore viene generato;
verificare se tale errore sia "singolo";
individuare la possibile rettifica, in modo da non provocare nuovi errori;
6
definire il nuovo data test in caso di interventi radicali.
Trace table
Spesso è opportuno verificare il corretto funzionamento del programma prima di mandarlo in esecuzione: tale verifica avviene testando il codice scritto in metalinguaggio mediante una simulazione dell'esecuzione del programma.
Tale simulazione viene effettuata eseguendo una alla volta le istruzioni "sulla carta" e riportando in una tabella le variazioni che ogni istruzione provoca sui dati. La tabella prende il nome di trace table (tabella di traccia), in quanto consente al programmatore di "seguire" le tracce di come e quando viene modificata una variabile.
La maggior parte degli errori è dovuta alla disattenzione e alla mancata rilettura del codice, e spesso l'individuazione e correzione dell'errore comporta più tempo che la scrittura
del codice stesso: l'utilizzo di uno strumento come la trace table consente al programmatore di individuare non solo la presenza dell’ errore, ma anche la causa, e indica come po terlo eliminare.
Esempio
Vediamo un esempio realizzando la trace table di un semplice gioco: ti indovino il numero
pensato.
È semplice verificare che non esistono. trucchi: dopo dei calcoli il risultato è sempre ugua le a 4, indipendentemente dal valore che l'utente ha pensato. Verifichiamolo mediante la
trace table.
Trascuriamo l’analisi e la tabella delle variabili e delle costanti. Il diagramma a blocchi che
rappresenta la soluzione del problema è il seguente.
Costruiamo dunque la trace table: per prima cosa si disegna una tabella, in cui la prima
colonna viene chiamata "istruzioni"; poi si aggiungono tante colonne quante sono le variabili da controllare e una colonna per l’output come nell'esempio seguente:
7
Istruzione
numero
totale
nummodif
output
Il numero delle righe dipende invece dal numero delle istruzioni. Si procede inserendo una
istruzione in ogni riga e andando a calcolare quali modifiche vengono effettuate sulle variabili. La prima istruzione è la lettura del numero pensato dall'utente (che ipotizziamo essere il numero 21): tale valore verrà collocato nella corrispondente colonna mentre le al tre colonne non saranno modificate, in quanto i valori delle variabili corrispondenti non
sono stati alterati.
Istruzione
Leggi numero
numero
totale
nummodif
output
21
Procediamo con la seconda, la terza e la quarta istruzione, che vanno a modificare il contenuto dell'ultima colonna:
Istruzione
numero
totale
nummodif
Leggi numero
21
totale  numero *2
21
42
totale  totale +12
21
54
totale totale /2
21
27
nummodif  numero +2
21
27
23
totale  totale
-nummodif
21
4
23
Scrivi totale
21
4
23
output
4
6 Il linguaggio C/C++
6.1 Struttura Base
La struttura base di un programma scritto in C/C++ è il seguente:
#include<iostream>
using namespace std;
int main() {
return 0;}
Esso rappresenta un programma che di fatto non esegue nessuna istruzione. L’istruzione
#include <iostream> permette di inserire la libreria iostream dove al suo interno vi sono le
principali istruzioni che useremo. In alcuni casi possiamo aggiungere altre librerie come
math.h o string.h che permettono di usare istruzioni matematiche e per la gestione delle
stringhe. Il nostro programma diventa:
8
#include<iostream>
#include<math.h>
#include<string.h>
using namespace std;
int main() {
return 0;}
Le librerie e l’istruzione “int main { “traduce l’istruzione di “inizio” del digramma a blocchi.
La parentesi graffa finale traduce l’istruzione “fine”.
I commenti possono essere scritti affianco all’istruzione se preceduti da // ad esempio:
#include<iostream>
using namespace std;
int main() {
return 0; // l’istruzione che va sempre inserita
}
Oppure utilizzando /* …… */ ad esempio:
#include<iostream>
using namespace std;
int main() {
return 0; /* istruzione che va sempre inserita */
}
6.2 Le variabili e costanti
La tabella delle costanti viene implementata in C/C++ in due modi:
#define nomecostante valore
const int nomecostante=valore;
Nel primo caso, metodo derivato dal C, l’istruzione va scritta subito dopo le istruzioni di
“#define”. Nel secondo caso all’interno del main() ed è obbligatorio indicare il tipo di dato
e la scrivere il “;” finale. Esempio per definire la variabile pigreco userò le istruzioni seguenti
#include<iostream>
using namespace std;
#define pigreco 3.14
int main() {
return 0;
}
oppure
#include<iostream>
using namespace std;
int main() {
const float pigreco=3.14;
return 0;}
9
La tabella delle variabili viene implementata per singola variabile come segue:
tipo nomevariabile;
dove il tipo rappresenta il tipo di dato.
Se vi sono più variabili dello stesso tipo allora possono essere scritte di seguito ad esem pio:
int base,altezza;
le variabili sono separate da una virgola e “;” è obbligatorio.
Se alla variabile vogliamo dare un valore iniziale possiamo farlo durante la definizione della variabile stessa. Se ad esempio vogliamo azzerare un contatore scriveremo:
int cont=0;
6.3 I tipi di dato
I tipi di dato elementari sono i seguenti:
I tipi primitivi possono essere estesi utilizzando appositi qualificatori quali short, long, signed e unsigned. I primi tre fanno riferimento al numero dl byte occupati mentre gli altri
modificano il modo di valutare il contenuto di alcune variabili. Nella seguente tabella riassumiamo i tipi primitivi con le combinazioni ammissibili.
I domini sono riportati nella tabella seguente:
10
Non potremo memorizzare una parola.
6.4 L’istruzione di assegnazione
L’istruzione di assegnazione si implementa semplicemente con “=”. Ad esempio:
C=A;
A=B;
Il “;” è obbligatorio.
L’assegnazione di valori a una variabile segue specifiche regole in funzione del tipo di
dato associato alla variabile in questione. In tal senso occorre tener presente che:
le variabili Intere (int) si assegnano utilizzando un numero senza parte decimale;
le variabili reali (float, double) si assegnano utilizzando per la virgola la notazione
Inglese, cioè quella in cui si usa un punto (e non una virgola) per dividere la parte
intera da quelle frazionaria;
le variabili carattere (char) si assegnano racchiudendo il carattere tra due apici;
le variabili stringa (una stringa è una concatenazione di caratteri) si assegnano racchiudendo la stringa tra virgolette.
Riportiamo un esempio riassuntivo di ognuna delle precedenti assegnazioni:
lnt b = 20;
char carattere = 'b', lettera = 'm';
float tappo = I0.2;
6.5 Gli operatori
11
Nelle istruzioni di assegnazione possono comparire gli operatori aritmetici per eseguire
dei calcoli. I cinque operatori aritmetici previsti dal linguaggio sono:
Una caratteristica tipica del C++ è la possibilità di utilizzare gli operatori aritmetici nella
forma ridotta. Per esempio, l'operatore ++ serve per incrementare il valore di una variabile; l'istruzione: I = I + l; può essere scritta nella forma equivalente: I++;
Si possono usare in modo analogo anche gli altri operatori aritmetici, come riportato nella
seguente tabella:
6.6 Istruzioni di output
L’istruzione di output è : cout<<. e si implementa dal diagramma a blocchi come i seguenti esempi:
cout<<”inserisci il primo numero”;
permette di visualizzare sul video la scritta “inserisci il primo numero” senza ulteriori spazzi o andata a capo. Per andare a capo si utilizza endl. Esempio : cout<<”inserisci il primo
numero”<<endl;
cout<<A;
12
visualizza il contenuto della variabile A;
Le diverse istruzioni di output si possono concatenare anche di seguito. L’istruzione :
cout<<”il risultato è: ”<<A<<endl;
permette di visualizzare di seguito la frase , il contenuto della variabile e l’andata a capo.
Nell'istruzione cout è possibile visualizzare messaggi racchiusi tra doppi apici " " oppure
valori di variabili:
cout<<"il dipendente\t"<<nome<<" ha "<<età<<"anni e guadagna" <<stipendio<<"euro"<<endl;
nel caso in cui la variabile NOME ha valore
viene visualizzato il seguente messaggio:
PAOLO, ETÀ
ha valore
23
e STIPENDIO ha valore
2000,
il dipendente
PAOLO ha 23 anni e guadagna 2000 euro
e poi va a capo.
All'interno delle stringhe di output possono essere inseriti caratteri speciali per il controllo
dell'output preceduti dal simbolo \ (\ t nell'esempio precedente). Nella tabella seguente
sono riportati i caratteri speciali più utilizzati ammessi nelle stringhe di output, con il loro
significato.
6.7 Istruzione di input
L’istruzione di input e cin>> e si implementa nel modo seguente:
cin>>A;
Non può essere mischiata con l’istruzione cout.
13
7 Esempi
Primo esempio: Stampa a video il saluto Buongiorno
#include<iostream>
using namespace std;
int main(){
cout<<"Buongiorno"<<endl;
return 0;}
Secondo esempio:I/0 di variabili alfanumeriche
Testo: Stampa un messaggio di saluto per una persona il cui nome è fornito in input.
Analisi: Per risolvere questo problema devi richiedere in input il nome di una persona e restituirlo in output insieme a un messaggio predefinito. L’obiettivo avere il nome della persona stampato. Criterio di verifica: se scrivo Giovanni devo visualizzare “Ciao al signor Giovanni”.
Tabella delle Variabili
Nome variabile Tipo di dato
nome
Utilizzo
Descrizione e vincoli
stringa di caratteri input/output nome della persona da salutare
#include<iostream>
using namespace std;
int main(){
char nome;
cout<<"ins iniz. nome ";
cin>>nome;
cout<<"ciao al signor "<<nome<<endl;
return 0;
}
Tabella di traccia
Istruzione
nome
output
Leggi (nome)
Giorgio
Scrivi (ciao al signor)
Giorgio
Ciao al signor Giorgio
Scrivi (nome)
Giorgio
Giorgio
14
Terzo esempio: - I/0 di variabili numeriche
Testo: Stampa il numero fornito in input.
Analisi: Per risolvere questo problema devi richiedere in input un numero che sceglierò essere intero e restituirlo in output insieme a un messaggio predefinito. L’obiettivo avere il
nome della persona stampato. Criterio di verifica: se scrivo 125 devo visualizzare “il numero fornito in input è 125”.
Tabella delle Variabili
Nome variabile Tipo di dato Utilizzo
num
Intero
Descrizione e vincoli
input/output Numero inserito
#include<iostream>
using namespace std;
int main(){
int num;
cout<<"dammi il numero "<<endl;
cin>>num;
cout<<"il numero fornito in input e'
"<<num<<endl;
return 0;
}
Istruzione
num
Output
Leggi (num)
125
Scrivi (il numeorfornito da input è )
125
Il numero fornito da input è
Scrivi (num)
125
125
Quarto esercizio : uso variabili numeriche
Testo. Dati due numeri, calcola il prodotto.
Analisi. Obiettivo è avere il prodotto dei numeri. Per potere effettuare il prodotto di due numeri dovrai per prima cosa riceverli in input, memorizzarli in variabili opportune e, dopo
avere effettuato la moltiplicazione, fornire il risultato in output. Criterio di verifica: Se digito 3 e 5 deve comparire “prodotto risultante = 15”.
15
#include<iostream>
using namespace std;
int main(){
int x,y,z;
cout<<"inserire il primo fattore ";
cin>>x;
cout<<"inserire il seccondo fattore ";
cin>>y;
z=x*y;
cout<<"il prodotto risultante e'= "<<z<<endl;
return 0;
}
Istruzione
x
y
Z
Scrivi (inserire il primo fattore)
Output
Inserire il primo fattore
Leggi (x)
5
Scrivi (inserire il secondo fattore)
5
Leggi (y)
5
3
Z=x*y
5
3
15
Scrivi (prodotto risultante è)
5
3
15
Prodotto risultante è
Scrivi (z)
5
2
15
15
Inserire il secondo fattore
Quinto esercizio :uso di variabili numeriche con operazioni complesse
Testo. Date la base e l'altezza di un rettangolo, calcola l'area e il perimetro.
Obbiettivo è visualizzare l’area e il perimetro Per effettuare questa operazione, dopo avere preso in input la base e l'altezza del rettangolo numeri reali, dovrò moltiplicare tra di
loro tali dati per ottenere l'area. Per il perimetro basterà moltiplicare per 2 la somma
16
base+ altezza. Criterio di verifica: Se la base è 5 e altezza è 4 visualizzerò “l’area = 20” e
altezza =18.
#include<iostream>
using namespace std;
int main(){
float a,b,area,perim;
cout<<"inserire l'altezza";
cin>>a;
cout<<"inserire base";
cin>>b;
area=a*b;
perim=(a+b)*2;
cout<<"area= "<<area<<endl;
cout<<"perimetro= "<<perim<<endl;
return 0;
}
17
Istruzione
a
b
area
perim
Scrivi (inserire l’altezza)
output
Inserire l’altezza
Leggi (a)
5
Scrivi (inserire la base)
5
Leggi (b)
5
4
Area = a*b
5
4
20
Perim= 2*(a+b)
5
4
20
Inserire la base
18
Scrivi (area = )
Area =
Scrivi (area)
20
Scrivi (perimetro = )
Perimetro =
8 ESERCITAZIONE N.1 (I/O)
1) Scrivere un programma che visualizza il proprio nome.
2) Scrivere un programma che visualizza la frase “tre casettine dai tetti aguzzi”.
3) Scrive un programma che visualizza la frase “tre casettine dai tetti aguzzi” utilizzando
un istruzione di output a parola;
4) Scrive un programma che visualizza la frase “tre casettine dai tetti aguzzi” utilizzando
una sola istruzione di output e mandando a capo le parole ogni volta.
5) Scrivere un programma che assegna ad una variabile reale un valore (poi ad un intero,
poi ad un carattere) e lo visualizza.
6) Scrivere un programma che, acquisito un numero intero (poi un numero reale, poi un
carattere), lo visualizza.
7) Definire una costante e visualizzarla.
8) Definire una costante intera, acquisire un numero intero in input e visualizzare la loro
somma.
9) Leggere un numero intero di 4 cifre e scriverlo 3 volte sfalsando la scrittura.
10) Scrivere un programma che legge tre numeri interi e ne visualizza la somma, il prodotto e la media.
11)Scrivere un programma che legge il raggio di un cerchio e calcola e visualizza diametro,
circonferenza e area.
18
9 ESERCITAZIONE N.2 (costrutto sequenza)
1) Scrivere un programma che visualizza il doppio di un numero inserito da tastiera.
2) Dati in input i prezzi di tre oggetti, calcolare il costo totale e applicare su quest’ultimo lo
sconto del 17%. Comunicare in output il prezzo scontato.
3) Scrivere un programma che calcola l’ipotenusa conoscendo il valore dei cateti di un
triangolo rettangolo.
4) Scrivere un programma che legge tre numeri interi e ne visualizza la somma, il prodotto
e la media.
5) Scrivere un programma che calcoli l’età di una persona conoscendo l’anno di nascita.
6) Scrivere un programma che calcola la circonferenza e l’area di un cerchio. I dati iniziali
sono definiti come costanti.
7) Scrivere un programma che calcola la circonferenza e l’area di un cerchio. I dati iniziali
sono definiti come variabili ma non acquisite in input.
8) Di una città viene fornita la popolazione rilevata in due anni successivi. Calcolare e visualizzare in output l’incremento o il decremento della popolazione.
9) Acquisiti in input il valore di un deposito bancario e il tasso di interesse annuale calcolare e visualizzare gli interessi maturati nel corso di un anno.
10) Acquisito in input lo stipendio mensile lordo di una persona. Scrivere un programma
che permetta di calcolare la retribuzione annua netta considerando 12 mensilità e una ritenuta mensile del 27%.
11) La tassa sulla casa è composta da una parte fissa di € 20, più € 0.15 per ogni mq,
più 2€ per ogni posto auto. Dopo aver inserito in input i metri quadri della casa e il nume ro dei posti auto, calcolare e visualizzare il totale da pagare.
12) Il costo della bolletta del telefonino è di € 0.16 per ogni scatto e € 0.14 per ogni Sms
inviato, a cui si aggiunge un canone fisso di €20. Dopo aver acquisito il numero di scatti
ed il numero di Sms inviati in un bimestre, determinare e visualizzare l’importo addebitato
in bolletta.
13) Sono dati in ingresso i risultati di un referendum: numero degli elettori attivi, numero
dei votanti, il numero dei si e dei no. Scrivere un programma che permetta di calcolare la
percentuale dei votanti sull’elettorato attivo e la percentuale dei si e dei no sul totale dei
votanti.
14) La tassa per la raccolta dei rifiuti in un comune si calcola in base alle dimensioni dell’appartamento in mq. ed è paria 8€/mq. All’importo così ottenuto viene aggiunta una cifra fissa di 20€; su tale importo, inoltre, viene calcolata un’addizionale del 2%. Dopo aver
introdotto in input la superficie in mq dell’appartamento, calcolare e visualizzare l’importo
totale che l’utente deve pagare .
15) Un operaio guadagna 30€ l’ora. Crea un programma che calcoli il guadagno mensile
conoscendo il numero di ore di lavoro effettuate al giorno (tutti i giorni l’operaio fa lo stesso numero di ore) ed il numero di giorni lavorativi effettivi.
16) Realizzare un programma che determini il numero di scatti effettuati da un utente te lefonico nell’ultimo bimestre e l’ammontare la sua bolletta conoscendo il numero di scatti
conteggiati nella bolletta precedente e il numero degli scatti totali. In più si conosce il canone e il costo del singolo scatto (che rimangono costanti).42
19
Scarica

M5-U3-Primi programmi