LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA"
Via Angelo Maj, 1 - 24121 BERGAMO
Tel: 035 237502 Fax: 035 236331 Sito: www.liceolussana.com Codice fiscale: 80026450165
PROGRAMMA EFFETTIVAMENTE SVOLTO
Disciplina: INFORMATICA
Docente: SALVATORE D’URSO
L. S. Scienze Applicate - Classe: SECONDA - Sezione: O
Anno Scolastico 2014/2015
LIBRO DI TESTO: INFORMATICA MULTIMEDIALE – METODI E FONDAMENTI
AUTORI: MARISA ADDOMINE – DANIELE PONS
CASA EDITRICE: ZANICHELLI
SUPPORTO DIGITALE: CORSO SUL LINGUAGGIO C++
AUTORE: GIOVANNI CALABRESE
1. U.D.A. 1: DAL PROBLEMA AL PROGRAMMA











Definizione di un programma e di un algoritmo;
Definizione di Variabile;
Rappresentazione degli algoritmi tramite diagrammi di flusso. Le convenzioni grafiche. I blocchi di
inizio/fine, di lettura/scrittura, di azione, di test, salto;
Tipi di diagrammi di flusso: sequenziale, condizionale, iterativo con il controllo in testa
(precondizionale) ed iterativo con il controllo in coda (postcondizionale);
Le operazioni base per la realizzazione di un algoritmo: trasferimento di informazioni, esecuzione di
calcoli, assunzione di decisioni, esecuzione di iterazioni, variabili contatore;
Le istruzioni operative: input, output, assegnazione;
La selezione semplice, nidificata, a cascata;
Gli operatori logici AND, OR, NOT e l’operatore MOD nei diagrammi di flusso;
Elementi di logica booleana: i connettivi logici NOT, OR, NOR, AND, NAND, XOR, XNOR;
Cenni sui linguaggi: Linguaggio macchina, Assembler, Linguaggi ad alto livello;
Rappresentazione degli algoritmi in pseudocodifica in C++.
2. U.D.A. 2: INTRODUZIONE ALL'AMBIENTE DI PROGRAMMAZIONE DEL C++







Introduzione alla programmazione strutturata;
Installare e configurare l'ambiente di sviluppo Dev C++;
Editare, testare e collaudare un programma in C++;
Utilizzo delle variabili intere e reali;
Input e output dei dati;
Istruzioni in sequenza;
Il commento al codice.
1
LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA"
Via Angelo Maj, 1 - 24121 BERGAMO
Tel: 035 237502 Fax: 035 236331 Sito: www.liceolussana.com Codice fiscale: 80026450165
3. U.D.A. 3: PROGRAMMAZIONE IN C++










La selezione semplice e doppia (if, if…else);
La selezione multipla (if…else annidati, switch…case);
Le variabili: intere, reali (float, double), bool, char e string;
L’assegnazione;
Gli operatori logici condizionali;
Istruzioni annidate;
Combinare più selezioni con condizioni logiche composte;
Il ciclo while;
Il ciclo do ... while;
Il ciclo for.
4. U.D.A. 4: LE FUNZIONI








La selezione Suddivisione di un algoritmo complesso in sotto problemi;
Definizione e chiamata di una funzione;
Vantaggi nell’uso delle funzioni;
Prototipi delle funzioni;
Valori di ritorno di una funzione;
Uso di variabili globali nei programmi con le funzioni;
Passaggio dei parametri per valore e per riferimento;
La trace table per individuare errori nel codice.
5. U.D.A. 5: I VETTORI









Il concetto di vettore;
Definizione dei vettori in C++;
I vettori ad una dimensione;
Algoritmi fondamentali per i vettori:
 Inserimento;
 Visualizzazione;
 Ordinamento per selezione;
Ricerca sequenziale e binaria (dicotomica) di un elemento all’interno di un vettore;
Problemi di ricerca di massimo e minimo;
Cancellazione e sostituzione di un elemento;
I vettori paralleli;
Cenni sui vettori come parametri nelle funzioni.
Bergamo, lì____________________
Gli studenti
Il Docente
_________________________
_________________________
_________________________
2
LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA"
Via Angelo Maj, 1 - 24121 BERGAMO
Tel: 035 237502 Fax: 035 236331 Sito: www.liceolussana.com Codice fiscale: 80026450165
LAVORO ESTIVO CLASSE 2O




IL LAVORO ESTIVO DEVE ESSERE FATTO DA TUTTA LA CLASSE.
PER COLORO CHE HANNO AVUTO LA SOSPENSIONE DEL GIUDIZIO IN
INFORMATICA, IL LAVORO DOVRÀ ESSERE CONSEGNATO IL GIORNO
DELL'ESAME SCRITTO. PER TUTTI GLI ALTRI, IL LAVORO DOVRÀ ESSERE
CONSEGNATO IL PRIMO GIORNO DI SCUOLA.
LA PUNTALITÀ NELLA CONSEGNA, L'ORDINE, LA QUALITÀ E LA QUANTITÀ
DEL LAVORO SVOLTO RIENTRERANNO TRA GLI ELEMENTI CHE SARANNO
PRESI IN CONSIDERAZIONE PER LA VALUTAZIONE FINALE.
PER OGNI ESERCIZIO, RIPORTARE IL NUMERO E IL TESTO ALL’INIZIO
DELL’EDITOR DI TESTO USATO (DEVC++) E IL COMMENTO DEL CODICE.
Studiare e ripassare i capitoli riguardanti la parte teorica del programma svolto dal libro
digitale fornito dall’insegnante. Consultare gli appunti dati a lezione. Fare gli esercizi
e i problemi di fine capitolo dal libro di testo per le parti trattate, aiutandosi con gli
esercizi svolti in classe dal docente.
Svolgere i seguenti esercizi:
1. Scrivere un programma che chiede all'utente un numero intero, poi ne chiede un
secondo, verifica se il secondo sia un divisore del primo e in caso affermativo
restituisce il quoziente, in caso negativo scrive che non è un divisore. COMMENTARE
OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI MESSAGGI INPUTOUTPUT.
2. Scrivere un programma che richiede in input un numero intero compreso fra 1 e 5, se
l'input è errato, avvisa l'utente dello sbaglio e richiede nuovamente l'inserimento, se
l'input è nei limiti, allora stampa il numero inserito. COMMENTARE
OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI MESSAGGI INPUTOUTPUT.
3. Scrivere un programma che usi un vettore di 10 elementi, lo si riempia di interi positivi
random compresi fra 1 e 100 (si usi la funzione rand() che si trova in cstdlib), lo stampi
a video (a scelta se orizzontalmente o verticalmente), quindi ne calcoli la media
aritmetica (che dovrà essere rappresentata anche con i suoi decimali) e la scriva.
COMMENTARE OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI
MESSAGGI INPUT-OUTPUT.
4. Il comune di Bergamo vuole dare un sussidio economico alle famiglie più disagiate.
Ogni famiglia che sottopone domanda di sussidio ottiene un numero di pratica (N) ed
inoltre deve fornire due dati: reddito annuo (R) e patrimonio (P) (depositi bancari,
valore auto, ecc.). Il Comune, per ogni famiglia, stabilisce un punteggio secondo la
3
LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA"
Via Angelo Maj, 1 - 24121 BERGAMO
Tel: 035 237502 Fax: 035 236331 Sito: www.liceolussana.com Codice fiscale: 80026450165
seguente regola: Punteggio=R/10000+P/10000, che corrisponde a 2 per chi ha un
reddito di 10000€ l’anno e patrimonio pari a 10000€, se i due indicatori aumentano, il
punteggio aumenta e viceversa. Si individuino le 10 famiglie più indigenti, fornendo
in uscita sia il punteggio che il numero di pratica. (Si definisca una costante pari a 100
per il numero di famiglie che fanno domanda, si salvino reddito R, patrimonio P,
numero N e Punteggio in opportuni vettori e si ricordi di ordinare il vettore N in
funzione dei valori del vettore Punteggio). COMMENTARE OPPORTUNAMENTE
IN CODICE E DARE OPPORTUNI MESSAGGI INPUT-OUTPUT.
5. Il liceo Lussana registra in un vettore i numeri di matricola dei suoi studenti (1500
studenti) ed in uno parallelo il numero di cellulare. Si vuole realizzare per la segreteria
un software per ricercare rapidamente, con una ricerca dicotomica, il numero di
cellulare a partire dal numero di matricola. Programmare la parte relativa al
riempimento dei vettori con la funzione random. Si ricordi di ricercare la matricola, da
chiedere all'utente, e fornire a monitor sia la matricola che il corrispondente numero di
cellulare. COMMENTARE OPPORTUNAMENTE IN CODICE E DARE
OPPORTUNI MESSAGGI INPUT-OUTPUT.
6. Scrivere una funzione che dati tre interi a, b, c restituisce il massimo ed il minimo.
COMMENTARE OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI
MESSAGGI INPUT-OUTPUT.
7. Scrivere due funzioni trovaMax che trovino il massimo e la posizione in cui il massimo
si trova di un array di double. COMMENTARE OPPORTUNAMENTE IN CODICE
E DARE OPPORTUNI MESSAGGI INPUT-OUTPUT.
8. Scrivi una funzione in C++ che data una richiesta di conversione di temperatura da
Kelvin o in Celsius o viceversa (usando una funzione SCEGLI), restituisca in uscita il
valore in gradi Celsius o Kelvin rispettivamente (TC=TK-273 e TK=TC-273).
Richiamare le funzioni nel main. COMMENTARE OPPORTUNAMENTE IN
CODICE E DARE OPPORTUNI MESSAGGI INPUT-OUTPUT.
9. Scrivi una funzione in C++, che dato in input un numero intero n lo trasformarmi in
binario, richiama la funzione nel main. COMMENTARE OPPORTUNAMENTE IN
CODICE E DARE OPPORTUNI MESSAGGI INPUT-OUTPUT.
10.Dato un valore di raggio e di altezza di un cono, scrivere le seguenti funzioni in C++:
o Funzione per il calcolo della circonferenza.
o Funzione per il calcolo dell’area del cerchio.
o Funzione per il calcolo della superficie laterale del cono.
o Funzione per il calcolo della superficie totale del cono.
o Funzione per il calcolo del volume cono.
o Funzione per il calcolo del peso specifico in g/cm3 (Ps=P/V) il peso deve essere
fornito in grammi (g) nel main.
4
LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA"
Via Angelo Maj, 1 - 24121 BERGAMO
Tel: 035 237502 Fax: 035 236331 Sito: www.liceolussana.com Codice fiscale: 80026450165
Richiamare le funzioni nel main. COMMENTARE OPPORTUNAMENTE IN
CODICE E DARE OPPORTUNI MESSAGGI INPUT-OUTPUT.
11.Scrivi un programma in C++ per il calcolo delle soluzioni di un’equazione di secondo
grado, usare le seguenti funzioni da richiamare opportunamente nel main:
o Funzione inserimento coefficienti (puoi farlo con passaggio per riferimento
oppure dichiarando le variabili globali prima del main).
o Funzione calcolo determinante.
o Funzione calcolo e visualizzazione delle soluzioni, contemplare i casi equazione
impossibile ed indeterminata.
o Funzione calcolo dell’equazione di primo grado, solo se il coefficiente del
termine quadratico è nullo (a=0), contemplare i casi equazione impossibile ed
indeterminata.
Richiamare le funzioni nel main. COMMENTARE OPPORTUNAMENTE IN
CODICE E DARE OPPORTUNI MESSAGGI INPUT-OUTPUT.
12.Scrivi una funzione in C++ che, dato in input x, calcoli la somma della seguente
successione:
come si vede alcuni i termini vengono sommati o sottratti alternativamente. Il risultato,
se si continua all’infinito, è la funzione trigonometrica sen(x). Considerato che non si
può continuare all’infinito, fermarsi quando il valore assoluto dell’ultimo termine
sommato è minore dell’errore E dato in input (si può dimostrare che la somma di tutti
i restanti termini è sempre minore del valore assoluto dell’ultimo termine sommato).
COMMENTARE OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI
MESSAGGI INPUT-OUTPUT.
13.Scrivi un programma in C++ che risolva un sistema di due equazioni in due incognite,
usando il metodo di Cramer. Contemplando il caso di sistema impossibile (Δ=0) ed
indeterminato.
𝑎′𝑥 + 𝑏′𝑦 = 𝑐′
{
𝑎′′𝑥 + 𝑏′′𝑦 = 𝑐′′
Usare le seguenti funzioni da richiamare opportunamente nel main:
o Funzione inserimento coefficienti (puoi farlo con passaggio per riferimento
oppure dichiarando le variabili globali prima del main).
o Funzione che calcoli in delta (Δ).
o Funzione che calcoli la soluzione.
o Funzione stampa per stampare a video la soluzione.
COMMENTARE OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI
MESSAGGI INPUT-OUTPUT.
5
LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA"
Via Angelo Maj, 1 - 24121 BERGAMO
Tel: 035 237502 Fax: 035 236331 Sito: www.liceolussana.com Codice fiscale: 80026450165
14.Scrivi un programma in C++ che, dati in input tre numeri qualsiasi, calcoli la somma
dei tre numeri, il maggiore, il minore e se tali numeri possono essere i lati di un
triangolo. Usare le seguenti funzioni da richiamare opportunamente nel main:
o Funzione inserimento dei numeri (puoi farlo con passaggio per riferimento
oppure dichiarando le variabili globali prima del main).
o Funzione somma, che restituisca al main la somma dei tre numeri.
o Funzione maggiore, che restituisca al main il maggiore dei tre numeri.
o Funzione minore, che restituisca al main il minore dei tre numeri.
o Funzione triangolo, che restituisca al main una variabile di tipo bool con vero se
i tre numeri rappresentano un triangolo e falso in caso contrario. (stampare a
video un opportuno messaggio di segnalazione).
COMMENTARE OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI
MESSAGGI INPUT-OUTPUT.
15.Scrivi una funzione in C++ che, dato in input un intero N, stampi a video i primi N
caratteri del codice ASCII. Usare la seguente funzione da richiamare opportunamente
nel main. COMMENTARE OPPORTUNAMENTE IN CODICE E DARE
OPPORTUNI MESSAGGI INPUT-OUTPUT.
16.Scrivi una funzione in C++ che, letti da tastiera una serie di caratteri minuscoli chiusi
dal carattere zero, stampi a video i caratteri in maiuscolo. Usare la seguente funzione
da richiamare opportunamente nel main. COMMENTARE OPPORTUNAMENTE IN
CODICE E DARE OPPORTUNI MESSAGGI INPUT-OUTPUT.
17.Riempire due vettori di lunghezza differente con numeri qualsiasi attraverso la
funzione randomica e determinare il minimo, il massimo e la media complessiva dei
due vettori, usando tre diverse funzioni da richiamare nel main. COMMENTARE
OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI MESSAGGI INPUTOUTPUT.
18.Calcolare lo scarto quadratico medio di un vettore numerico. Se x(i), con i da 1 a n,
sono gli elementi del vettore e se M è la media aritmetica degli stessi, per definizione
lo scarto quadratico medio, normalmente indicato con σ, si ottiene con la seguente
formula:
19.Moltiplicare 2 vettori di interi caricati da numeri random (il risultato è la somma dei
prodotti di tutti gli elementi con lo stesso indice nei due vettori). COMMENTARE
OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI MESSAGGI INPUTOUTPUT.
6
LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA"
Via Angelo Maj, 1 - 24121 BERGAMO
Tel: 035 237502 Fax: 035 236331 Sito: www.liceolussana.com Codice fiscale: 80026450165
20.Dato un vettore numerico (max 4 cifre ogni numero) contare quanti elementi sono
compresi tra 0 e 99, quanti fra 100 e 199, quanti fra 200 e 299 ecc. fino a contare quanti
sono compresi fra 9900 e 9999. COMMENTARE OPPORTUNAMENTE IN CODICE
E DARE OPPORTUNI MESSAGGI INPUT-OUTPUT.
21.Far visualizzare le prime n righe del triangolo di Tartaglia:
11
121
1331
14641
.......
La prima riga è costituita da due uno, il primo e ultimo numero di ogni riga è sempre
1, ogni altro numero è uguale alla somma di due numeri della riga precedente: quello
che si trova proprio sopra il numero da determinare e quello immediatamente a
sinistra. COMMENTARE OPPORTUNAMENTE IN CODICE E DARE
OPPORTUNI MESSAGGI INPUT-OUTPUT.
22.Fare un programma che, assegnata una frase, isoli e metta in un vettore tutte le parole
in essa contenute. COMMENTARE OPPORTUNAMENTE IN CODICE E DARE
OPPORTUNI MESSAGGI INPUT-OUTPUT.
23.Fare un programma per caricare un testo in un vettore di stringhe. COMMENTARE
OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI MESSAGGI INPUTOUTPUT.
24.Dato un vettore ordinare gli elementi di posto dispari in ordine crescente e quelli di
posto pari in ordine decrescente. COMMENTARE OPPORTUNAMENTE IN
CODICE E DARE OPPORTUNI MESSAGGI INPUT-OUTPUT.
25.Dati due vettori numerici ordinati, riunirli in un terzo sempre ordinato (fusione).
COMMENTARE OPPORTUNAMENTE IN CODICE E DARE OPPORTUNI
MESSAGGI INPUT-OUTPUT.
7