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