A.S.
2015/2016
CLASSE 2
SEZ P
PROGRAMMA EFFETTIVAMENTE SVOLTO
DOCENTE
Prof. Massimo Leone
DISCIPLINA
Informatica
UDA1: Dal problema al programma. Le strutture di controllo
•
•
•
•
•
Definizione di algoritmo
Le operazioni sui dati e l'istruzione di assegnazione
Le strutture di controllo: la sequenza, la selezione e l'iterazione
Teorema di Bohm-Jacopini
Rappresentazione degli algoritmi tramite diagrammi di flusso o pseudocodifica
UDA2: Introduzione all'ambiente di programmazione C++
•
•
•
•
•
•
•
•
•
I linguaggi di programmazione, compilatori ed interpreti
Primi programmi in linguaggio C++. Dichiarazione di variabili
Tipi fondamentali: int, short int, char, float, double
Il casting implicito ed esplicito. Notazione prefissa e postfissa
Installare e configurare l'ambiente di sviluppo Dev C++
Input e output dei dati
Generazione di numeri casuali
Istruzioni in sequenza
Il commento al codice
UDA3: Programmazione C++
•
•
Istruzione condizionale: codificare la selezione semplice e doppia
Utilizzare le variabili di tipo bool
•
Operatori logici e bitwise; tipi di dato interi con e senza segno
Combinare più selezioni con condizioni logiche composte
•
•
•
•
•
•
•
Istruzioni di selezione annidate
Istruzione switch case
Algoritmi iterativi
Il ciclo while
Il ciclo post condizionato: do...while
Individuare errori nel codice: la trace table
Il ciclo for
•
UDA4: Le funzioni
•
•
•
•
•
•
•
Scomposizione top-down di un programma
I sottoprogrammi: funzioni e procedure
Variabili locali e globali
Prototipo, chiamata e dichiarazione di una funzione
Parametri formali e parametri attuali
Passaggio di parametri per valore
Passaggio di parametri per riferimento
UDA5: I vettori e le matrici
•
•
•
•
•
•
•
Gli array a una dimensione: i vettori
Dichiarazione e popolamento di un vettore
Ricerca lineare di un elemento all'interno di un vettore
Ordinamento di un vettore: algoritmo selection sort
Stringhe in C++: principali librerie e funzioni utilizzate
Gli array a due dimensioni: le matrici.
Dichiarazione, popolamento e gestione delle matrici con l'utilizzo del ciclo for annidato
LAVORO ESTIVO
Per quanto riguarda il materiale teorico si fa riferimento a quello fornito dal docente durante l'anno
scolastico e caricato sul registro elettronico nella sezione Didattica.
Per chi volesse o avesse bisogno di approfondire i concetti è stata caricata sul registro, sezione
Didattica, una dispensa con gli stessi contenuti delle slide citate precedentemente ma più dettagliati.
Il nome del file (in formato pdf) è “Dispensa C++”.
Esercizi di programmazione
1. Scrivere un programma in C++ che calcoli e visualizzi il numero di KWh da addebitare e
l'ammontare della bolletta della luce di un utente ricevendo in input: il nome dell'utente, il
numero di KWh della lettura precedente, il numero di KWh della lettura attuale.
L'ammontare della bolletta è dato da una quota fissa (Canone), che deve essere fornita in
input, e dall'importo relativo al consumo, considerando costante (ad esempio di euro 0,07) il
costo per Kwh.
2. La tassa per la raccolta dei rifiuti urbani in comune viene calcolata rispetto alle dimensioni
dell'appartamento espresse in metri quadri, in ragione di X euro per ogni mq. All'importo
così determinato viene poi aggiunta una cifra fissa di Y euro; sul totale, inoltre, viene
calcolata un'addizionale pari al P%. I valori dei parametri X, Y e P sono forniti all'inizio
digitandoli da tastiera. Si vuole ottenere la stampa dell'importo totale per un appartamento
dopo aver introdotto da tastiera la superficie in mq.
3. Dati il codice e il prezzo di un prodotto, calcolare il prezzo da pagare sapendo che se il
prezzo è superiore a una determinata cifra (costante) si applica il 6% di sconto, e se il
pagamento è fatto in contanti si applica un ulteriore sconto del 2%.
4. Una nuova compagnia telefonica ha promosso l'offerta "oltre80": alla cifra fissa di 0,10 euro
(costo della risposta) occorre aggiungere la cifra di 0,15 euro per ogni secondo del tempo
della telefonata; però oltre gli 80 secondi la tariffa per ogni secondo è di 0,09. Fornito da
tastiera il numero dei secondi della telefonata, visualizzare il costo totale della chiamata.
5. Scrivi un programma che, data in input una sequenza di numeri chiusa dallo zero, determini
tutti i numeri che risultano maggiori della somma di tutti i precedenti.
6. Scrivi un programma all'interno del quale viene effettuata una chiamata ad un
sottoprogramma che riceve un numero intero e visualizzi in output tanti asterischi quanti
sono indicati dal parametro trasmesso. Il numero intero non può essere maggiore di 10.
7. Scrivi un programma all'interno del quale viene effettuata una chiamata ad un
sottoprogramma che riceve un numero intero minore o uguale a dodici e visualizzi il
corrispondente in lettere.
8. Scrivi un programma all'interno del quale viene effettuata una chiamata ad un
sottoprogramma che riceve un numero reale e visualizzi separatamente la parte intera e
quella decimale.
9. Scrivi un sottoprogramma che richiesti in input il nome e l'età di tre persone visualizzi i dati
in ordine alfabetico e in ordine di età. Inserisci la chiamata al sottoprogramma all'interno di
un programma chiamante (main) realizzato opportunamente.
10. Scrivi un sottoprogramma che riceve in input il nome e l'età di una serie di n persone
(n<=10). Visualizzare su richiesta dell'utente la media dell'età, la persona più giovane, la
persona più grande. Inserisci la chiamata al sottoprogramma all'interno di un programma
chiamante (main) realizzato opportunamente.
11. Scrivere un programma che, letti due vettori di n numeri interi (n<=50), crei
successivamente i vettori somma e differenza dei due vettori precedentemente letti.
12. Un'azienda ha 10 dipendenti. Essi possono fare, al massimo 30 giorni di ferie e avere, al
massimo, 40 giorni di malattia (dopodiché non saranno più pagati). I totali dei giorni di
ferie (di tutti i dipendenti) sono registrati in un vettore, i totali dei giorni di malattia (di tutti i
dipendenti) sono registrati in un secondo vettore e i nominativi dei dipendenti in un terzo
vettore. Dati in input:
• il nominativo di un dipendente
• il numero di giorni di permesso che desidera avere
• il tipo di permesso (ferie o malattia)pi
bisogna fornire in output l'esito della concessione di tale permesso (positivo nel caso in cui il
dipendente non ha superato il tetto massimo previsto, negativo nel caso contrario). Se il
permesso viene accordato, aggiorna il totale che lo interessa. L'algoritmo, inoltre, dovrà
fornire in output la trattenuta relativa al permesso concesso tenendo conto che per ogni
giorno di ferie vengono trattenuti 5 euro, mentre per ogni giorno di malattia vengono
trattenuti 3 euro.
13. Scrivere un programma che verifichi se un vettore di caratteri è palindromo (cioè se risulta
uguale partendo da sinistra o da destra).
14. In un vettore viene memorizzato un testo di caratteri. Ogni frase è chiusa da un punto e le
singole parole sono divise da spazi. Occorre contare il numero di frasi presenti nel testo e,
per ognuna, fornire anche il numero di parole di cui è composta.
15. I dati di N prodotti (descrizione, prezzo e quantità, scorta minima) vengono memorizzati in
quattro vettori paralleli. Stampa tutti quelli che hanno prezzo superiore a un valore X
richiesto in input e, successivamente, tutti quelli che risultano sotto scorta, ossia tutti quelli
la cui quantità presente in magazzino è inferiore alla scorta minima.
16. Sono dati in input il codice, la descrizione e la quantità in magazzino. A ogni ordine occorre
detrarre la quantità richiesta del prodotto indicato in base al codice; se la quantità in
magazzino non è sufficiente, l'ordine non può essere soddisfatto; a una specifica richiesta
termina il programma producendo la quantità rimasta in magazzino per i vari tipi di merce e
un messaggio per la produzione con il totale degli ordini non soddisfatti per ogni tipo di
prodotto.
17. Si svolge una gara di ciclismo con N concorrenti. Ogni concorrente è identificato dal
numero di maglia (da 1 a N). Costruisci un vettore con i tempi di arrivo. Inizialmente i tempi
sono 0 per tutti. All'arrivo del ciclista, invece, si registra il suo tempo. Finita la gara si vuole
conoscere:
• il tempo impiegato dai ciclisti di cui sono forniti i numeri
• lo scarto di ogni tempo dalla media dei tempi
• il numero di maglia e il nome del concorrente primo arrivato e quello dell'ultimo.
18. L'utente inserisce una matrice NxM composta da numeri interi. Il programma scambia le
righe pari con quelle dispari. Le dimensioni della matrice vengono scelte dall'utente.
19. Dati due array bidimensionali (matrici) di interi, trova gli elementi con lo stesso valore e
indicane la posizione.
20. Scrivere un programma C++ che consideri una matrice rettangolare intera con N righe e M
colonne, con N e M minori di 50, e che svolga le seguenti operazioni:
• determini se gli elementi nulli della matrice sono in percentuale maggiore dell’80% del
totale degli elementi;
• se nel passo precedente la risposta è stata affermativa, visualizzi i soli elementi non nulli
della matrice stessa.
21. Scrivere un programma in C++ che:
• legge una matrice nxm di numeri interi, con n ed m letti da tastiera;
• costruisca un vettore v di dimensione n i cui elementi sono ottenuti calcolando il
massimo di ogni riga della matrice.
• Visualizzi il vettore v ottenuto.
22. Costruire una matrice le cui colonne rappresentino le colonne di una schedina. Leggere la
colonna vincente del totocalcio in un vettore. Controllare il numero di risultati esatti per
ogni colonna della schedina e stampare, eventualmente, la colonna vincente.