ITC e PACLE “Elsa Morante”
PROGRAMMA DI INFORMATICA
CLASSE 3°B
A.S. 2008/2009
DOCENTE CXXXXXXX GXXXXXXXX
OBIETTIVI
Architettura di un computer e basi dell’informatica
- Conoscere la struttura generale di un sistema d'elaborazione
- Sapere come sono rappresentate le informazioni all’interno del computer (numeri, testi, immagini)
- Conoscere i principi di base della logica formale e i primi elementi dell'algebra booleana
L’ambiente di lavoro con il computer
- Conoscere e saper operare con il sistema d'elaborazione presente nel laboratorio (sistema operativo Windows)
Reti e Internet
- Conoscere i principi di funzionamento delle reti e saper utilizzare i principali servizi di Internet
Introduzione alla programmazione
- Conoscere le tecniche per effettuare l’analisi di semplici problemi, lo sviluppo degli algoritmi e e per descrivere le condotte risolutive
- Conoscere i fondamenti di ogni linguaggio di programmazione
- Conoscere i principi della programmazione strutturata e della metodologia top-down
- Conoscere le principali tappe dell’evoluzione dei linguaggi di programmazione
Programmazione Java
- Conoscere gli elementi di base del linguaggio Java
- saper approntare l’ambiente di sviluppo di Java
- saper realizzare una semplice applicazione Java: editare un file sorgente, compilazione ed esecuzione
- saper codificare un algoritmo utilizzando le principali strutture di controllo
- conoscere i paradigmi della programmazione ad oggetti: incapsulamento, ereditarietà, polimorfismo
- saper implementare semplici classi e sottoclassi Java rispettando i paradigmi della programmazione ad oggetti
Trasversali
- padroneggiare le conoscenze informatiche di base e raggiungere autonomia operativa imparando ad utilizzare correttamente i più diffusi pacchetti software per ufficio, in particolar modo Word, Power Point, Excel
- ottenere una certificazione informatica di base tipo ECDL
- Saper comunicare in differenti contesti utilizzando gli strumenti messi a disposizione dalla rete
- Saper utilizzare strumenti collaborativi on line
STRUMENTI
- Libro di testo: Gallo, Salerno – Java. La programmazione ad oggetti – Minerva Italica
- Fotocopie: appunti di lezioni relative all’architettura di un sistema di elaborazione e alle basi dell’informatica, alla rappresentazione dei dati, all’introduzione alla programmazione; esercizi svolti. Gli appunti sono stati messi a disposizione degli allievi anche sul gruppo classe on line
- Laboratorio: esercizi guidati
CONTENUTI
- Informatica e calcolatori
- concetto di informazione
- cenni storici sull’elaboratore
- aree di applicazione dell’informatica
- introduzione ad un modello generale di sistema di elaborazione:
- analisi del processo di elaborazione
- le componenti HW di un PC
- introduzione ed estrazione delle informazioni
- unità di input e di output
- memorizzazione delle informazioni e generalità sulla memoria
- memoria RAM
- funzioni di calcolo e di governo (istruzioni, Control Unit, ALU)
- memorie di massa
- SW di un sistema di elaborazione - SW applicativo - SW di base - i sistemi operativi
- i linguaggi di programmazione
- la multimedialità
- l’informatica nella società
- sicurezza dei dati e dei sistemi – i virus
- cenni sulle reti
- strumenti di comunicazione e collaborazione in rete
- La rappresentazione dell’informazione
- la rappresentazione dei numeri
- il sistema binario, ottale e esadecimale
- regole di conversione tra i diversi sistemi
- bit e byte
- rappresentazione dei numeri interi e reali
- il codice ASCI e la codifica delle informazioni non numeriche
- rappresentazione delle immagini
- cenni sugli algoritmi di compressione
- Proposizioni e connettivi logici
- Negazione NOT
- Congiunzione AND
- Disgiunzione OR
- Proposizioni complesse
- Tavole di verità
- Problemi, algoritmi, programmi
- approccio ai problemi e metodologie risolutive
- generalizzazione e definizione di un problema
- scomposizione di un problema in sottoproblemi
- dati di input e di output
- concetto di algoritmo
- cenni sui linguaggi di programmazione ed evoluzione dei linguaggi
- Linguaggi di basso livello
- Linguaggi di alto livello
- Linguaggi orientati agli oggetti
- formalizzazione di algoritmi ( linguaggio di progetto e diagramma a blocchi)
- variabili e costanti
- i tipi di dato
- le istruzioni fondamentali di un linguaggio: assegnazione e ingresso/uscita
- operatori aritmetici e di confronto
- strutture di controllo (sequenziali, condizionali e iterative)
- uso di connettivi logici
- scambio di variabili
- strutture di selezione a una via, a due vie, di selezione multipla
- concetto di iterazione - contatori e accumulatori
- test del programma (diagramma di tracing)
- Le basi della programmazione in Java
- caratteristiche principali di Java
- indipendenza dalla piattaforma
- bytecode
- macchina virtuale Java
- complilazione, interpretazione ed esecuzione di un’applicazione Java
- ambiente di sviluppo di Java e JDK
- struttura di base di una applicazione Java
- il metodo main()
- alfabeto e regole lessicali del linguaggio
- blocchi, commenti, istruzioni output (System.out.println())
- le espressioni - operandi – variabili - operatori
- istruzione di assegnazione
- dichiarazione e tipo delle variabili locali
- operatori di assegnamento, aritmetici, relazionali, logici
- conversione di tipo implicita ed esplicita (casting)
- realizzare una semplice applicazione: editing di un file sorgente, compilazione ed esecuzione
- strutture di controllo in Java
- struttura di selezione ( if )
- strutture di ripetizione: con contatore (for), precondizionate (while), postcondizionate (do..while).
- utilizzo di Java come linguaggio procedurale per la soluzione di semplici problemi
- principali librerie di Java e package Java
- API Java
- classe Math (utilizzo di Math.random(), Math.pow(), Math.sqrt() )
- realizzazione di semplici applicazioni che prevedono l’elaborazione di sequenze di valori:
- sequenze di lunghezza predefinita
- sequenza che terminano al verificarsi di una condizione
- calcolo di sommatorie, prodotti e medie di una serie di numeri
- calcolo di sommatorie, prodotti e medie di numeri generati random
- determinazione valori sopra e sotto un valore soglia
- determinazione valori che soddisfano una condizione
- elenco divisori di un numero
- verifica divisibilità tra numeri, numero primo,..
- determinazione massimi e minimi di sequenze
- Introduzione alla programmazione ad oggetti Java
- concetti base della programmazione ad oggetti: classi, attributi e metodi
- definizione di classi, attributi e metodi in Java
- implementare classi Java con attributi e metodi
- metodi costruttori
- creazione di oggetti o istanze con new
- interazione tra oggetti
- invocazione di un metodo
- passaggio di parametri ai metodi
- parametri formali e attuali, coerenza delle liste di parametri
- passaggio di parametri ai metodi
- accesso agli attributi
- oggetto corrente this
- principali paradigmi della programmazione ad oggetti
- incapsulamento
- ereditarietà
- polimorfismo
- incapsulamento in Java
- realizzazione di semplici classi che prevedono l’applicazione del paradigma dell’ incapsulamento:
- classe Punto, Cubo, Parallelepipedo, Retta, Parabola, ContoCorrente, Articolo, TriangoloNelPiano,
- variabili e metodi di classe e variabili e metodi di istanza
- ereditarietà e polimorfismo in Java
- realizzazione di una gerarchia di classi
- classi Persona, Docente, Studente
- classi Animale, Cane, Gatto, Topo
- metodi e attributi ereditati, estesi e ridefiniti: overriding e overloading
- chiamata del metodo originale (super)
- classi astratte e metodi astratti
- classe Object
- casting tra classi
- Attività di laboratorio
Nelle ore di laboratorio gli studenti hanno avuto la possibilità di applicare quanto appreso in classe nelle ore di teoria e di sviluppare le loro capacità operative, creative e progettuali. Nel corso del terzo anno hanno imparato ad operare con il sistema operativo presente nel laboratorio (Windows XP), utilizzato alcuni dei più diffusi prodotti per l’automazione d’ufficio (Word, Excel), appreso i principi della programmazione strutturata e le tecniche della programmazione orientata agli oggetti e hanno sviluppato semplici applicazioni in Java.
- il sistema operativo DOS
- il sistema operativo Windows
- Microsoft Office (Word, Excel, Power Point)
- comunicare e collaborare su Internet
- programmazione Java utilizzando JCreator come IDE
- tool didattici per comprendere i concetti di base della programmazione e della programmazione Java
- Jeliot 3 (permette, attraverso una animazione, la visualizzazione step by step del processo di interpretazione ed esecuzione di un programma Java; aiuta gli studenti a comprendere i concetti base della programmazione, in particolar modo i concetti di variabili, assegnamento, incremento, strutture di controllo (selezione e cicli)
- Bluej (favorisce l’apprendimento della programmazione ad oggetti e dei concetti di classe, metodo e attributo; mostra graficamente la struttura in classi di una applicazione (sotto forma di diagramma UML) e consente la creazione e il test degli oggetti in modo interattivo
Indicazioni ed attività per recuperare il debito
Dovrai organizzarti per recuperare autonomamente durante l'estate le parti del programma indicate.
LIBRO DI TESTO
Piero Gallo, Fabio salerno – Java. La programmazione ad oggetti.
In particolar modo dovrai studiare da pag 10 a pag 99.
Il libro di testo è corredato da esempi e da esercizi svolti che dovrai esaminare e capire bene. Inoltre durante l’anno sono state consegnate innumerevoli fotocopie con esercizi da svolgere in Java; alcuni di questi esercizi erano svolti, altri sono stati svolti insieme e dovresti avere gli stampati con i programmi corretti. Se hai smarrito le fotocopie e gli esercizi dovrai preoccuparti di recuperarle.
E’ consigliabile, se non l’hai già fatto, procurarsi JDK e JCreator ed esercitarti direttamente al computer.
Dovranno inoltre essere eseguiti i seguenti esercizi, molti dei quali già svolti in classe durante l’anno. Ad essi fai riferimento per le soluzioni.
Recupero Java – Programmazione strutturata
Esercizio 1
Determina il maggiore tra due numeri a e b
Esercizio 2
Determina se due numeri a e b sono divisibili tra loro
Esercizio 3
Calcola il prodotto tra due numeri a e b effettuando somme successive
Esercizio 4
Calcola una potenza qualsiasi di base a e esponente b
Esercizio 5
Inseriti a e n, calcola e visualizza le potenze di a dalla prima alla n-esima
Esercizio 6
Inserito N, calcolare 1+1/2+1/3+….+1/N
Esercizio 7
Un investimento mi consente di ricavare da un capitale gli interessi dell’X% annui. Specificato il valore C del capitale iniziale e la percentuale X degli interessi, calcolare e mostrare il capitale maturato dopo un anno, dopo due anni, …., dopo N anni
Esercizio 8
Inseriti due numeri interi A e N, calcolare la somma
1+a+a^2+a^3+a^4+a^5+…+a^N
Esercizio 9
Inseriti due numeri A e LIM, determinare per quale valore di N la sommatoria
1+a+a^2+a^3+a^4+a^5+…+a^N diventa maggiore di LIM
Esercizio10
Dopo aver assegnato un valore ad n, mostrare il quadrato, il cubo e la radice di tutti i numeri compresi tra
1 e n
Esercizio 11
Dopo aver assegnato un valore ad n e ad x, generare n numeri casuali interi compresi tra 0 e 100, contare il numero e la percentuale dei numeri maggiori o uguali a x e dei numeri minori di x
Esercizio 12
Eseguire la somma dei quadrati di una sequenza di numeri interi compresi tra 0 e 10 generati casualmente. Terminare appena la somma supera un valore LIM specificato inizialmente. Mostrare il valore della somma e dire quanti numeri sono stati sommati.
Esercizio 13
Assegnato un valore ad n, calcolare la sommatoria delle radici dei numeri interi compresi tra 1 e n
Esercizio 14
Dopo aver assegnato un valore ad n, generare n numeri casuali reali compresi tra 0 e 100, calcolarne la media e determinare il maggiore e il minore.
Esercizio 15
Dopo aver assegnato ad x un valore intero qualsiasi compreso tra 1 e 10, eseguire il prodotto dei quadrati di una sequenza di numeri interi generati casualmente e compresi tra 1 e 10 . La sequenza termina appena è generato il numero x. Visualizzare il prodotto finale e dire dopo quanti tentativi è stato generato x.
Esercizio 16
Utilizzando il metodo Math.random, generare n voti casuali e determinare:
- il numero delle sufficienze e delle insufficienze
- la % delle suff e delle insuff.
- la media dei voti
Esercizio 17
Inserito n, calcolare la seguente sommatoria:
20+21+22+23+……..+2n
Esercizio 18
Inseriti a e b , calcolare la seguente sommatoria:
a0+a1+a2+a3+……..+an
Esercizio 19
Inserito a e n, calcolare la seguente sommatoria:
1/a0+1/a1+1/a2+1/a3+……..+1/an
Esercizio 20
Inserito n, visualizzare tutti i suoi divisori
Compiti Programmazione Orientata agli Oggetti
Studiare gli appunti “I paradigmi della programmazione orientata agli oggetti”
Esercizio 21
Applicando il paradigma dell’incapsulamento creare la classe Punto avente due attributi:
private double x;
private double y;
e i seguenti metodi, dei quali dovrai fornire l’implementazione:
public Punto()
public Punto (double x0, double y0)
public double getX()
public double getY()
public void setX(double x0)
public void setY(double y0)
public double distanzaOrigine()
public double distanzaDa (Punto p)
Scrivere la main class TestPunto che consente di:
- creare le istanza di due punti (3,5) e (6,8)
- visualizzare le coordinate dei punti
- calcolare la distanza dall’origine dei due punti
- calcolare la distanza dei due punti tra di loro
Salva sia la classe Punto.java che la classe TestPunto.java nella cartella ProgettoPunto
Esercizio 22
Applicando il paradigma dell’incapsulamento creare la classe Cubo avente un solo attributo:
private double lato;
e i seguenti metodi, dei quali dovrai fornire l’implementazione:
public Cubo()
public Cubo(double l)
public double getLato()
public void setLato(double l)
public double volume()
public double superficie()
public double peso(double pesoSpecifico)
Scrivere la main class TestCubo che consente di:
- creare le istanze di due cubi aventi lato=6 e lato=8
- calcolarne il volume e la superficie
- calcolare il peso del cubo di lato 6 e di peso specifico 1.5
- calcolare il peso del cubo di lato 8 e di peso specifico 2.5
Salva sia la classe Cubo.java che la classe TestCubo.java nella cartella ProgettoCubo
Esercizio 23
Sull'esempio della classe Cubo implementare la classe Parallelepipedo
- attributi: lato1, lato2, altezza
- metodi costruttore con e senza parametri
- metodi set e get
- metodo Volume per il calcolo del volume, Superficie per il calcolo della superficie, Peso per il calcolo del peso dato il peso specifico del materiale
Sull'esempio di TestCubo implementareTestParallelepipedo ed eseguire il test di tutti i metodi
Esercizio 24
Implementare classe Retta
- attributi: m (coeff. angolare) e q (termine noto)
- metodi: costruttore con parametri; setM, setQ, getM, getQ
- metodo equazione (restituisce una stringa che rappresenta l'equazione in forma esplicita "y=mx+q"
- metodo appartiene (riceve un punto, restituisce un boolean che assumerà come valore:
- true se il punto appartiene, ovvero se le sue coordinate x0 e y0 soddisfano l'equazione della retta
- false altrimenti
- metodo ParallelaA (riceve una retta, restituisce un boolean che assumerà come valore
- true se la retta passata come parametro è parallela (stesso coeff. ang)
- false altrimenti
- metodo intersezione (riceve una retta e restituisce un Punto, ovvero il punto d'intersezione)
Implementare TestRetta ed eseguire il test di tutti i metodi
Esercizio 25
Classe Parabola
Attributi privati: i coefficienti della parabola(a,b,c)
Metodi pubblici:
- Costruttore : Parabola(double a, double b, double c)
- double getA(),double getB(),double getC()
- void setA(double a), void setB(double b), void setC(double c)
- double delta() restituisce il discriminante
- String equazionePar() restituisce la stringa corrispondente all’eq. della parabola
- String equazioneAsse() restituisce la stringa corrispondente all’eq. dell’asse di simmetria
- int numSol() restituisce il numero di soluzioni (0,1 o 2)
- void soluzioni () visualizza le soluzioni allo schermo
- Punto vertice() restituisce il punto corrispondente al vertice
- Punto fuoco() restituisce il punto corrispondente al fuoco
Esercizio 26
Classe Articolo e TestArticolo
Per la gestione di un magazzino, implementare la classe java Articolo e la relativa classe TestArticoli contenente il metodo main.
Classe Articolo
Attributi privati:
- codice articolo (intero)
- descrizione (String)
- costo unitario (double)
- giacenza (int)
- scorta minima (int)
Metodi pubblici:
- costruttore: crea un nuovo articolo avendo come parametri il codice articolo, la descrizione e il costo unitario; la giacenza va inizializzato con 0 e la scorta minima con 5;
- metodi get e set per la gestione degli attributi privati
- boolean sottoScorta() segnala se la giacenza è inferiore alla scorta minima ( restituendo true oppure false)
- boolean esaurito() segnala se la giacenza è uguale a 0 ( restituendo true oppure false)
- void carico (int quantità) aggiorna la giacenza aggiungendo la quantità specificata e quindi visualizza il messaggio “carico eseguito sull’articolo xxx – quantità in giacenza: yyy”
- void prelievo (int quantità)
- se la giacenza è maggiore o uguale alla quantità da prelevare aggiorna la giacenza detraendo la quantità specificata e visualizza il messaggio: “prelievo eseguito sull’articolo xxx – quantità rimanente: yyy”;
- se la giacenza è inferiore alla quantità da prelevare visualizza il messaggio “prelievo non eseguito sull’articolo xxx - giacenza insufficiente ”
- se la giacenza diventa inferiore alla scorta minima va visualizzato il messaggio “ATTENZIONE: articolo xxx sottoscorta” (utilizzare il metodo sottoScorta());
- se la giacenza diventa 0 va visualizzato il messaggio “ATTENZIONE: articolo xxx esaurito” (utilizzare il metodo esaurito());
- void statoArticolo() visualizza i dati dell’articolo (codice articolo, descrizione, costo unitario, giacenza, scorta minima); se l’articolo è stotto scorta visualizza un messaggio di “articolo sottoscorta” (utilizzare il metodo sottoScorta());
- double prezzoTotale (int quantità, double sconto) calcola il costo totale della quantità indicata applicando lo sconto indicato
Classe TestArticolo
Contiene il metodo main e consente di verificare le funzionalità della classe Articolo:
- creare 3 istanze di articolo (penne, astucci, zaini)
- effettuare alcune operazioni di carico e scarico merce
- visualizzare lo stato dei 3 articoli
- calcolare il prezzo totale da pagare per l’acquisto di 10 penne con sconto 0
- calcolare il prezzo totale da pagare per l’acquisto di 3 astucci con sconto del 15%
- calcolare il prezzo totale da pagare per l’acquisto di 2 zaini con sconto del 30%
Esercizio 27
Creare le seguenti classi:
Quadrato
Attributi: lato
Metodi: costruttore, set e get per l’accesso agli attributi privati
area
perimetro
diagonale
Rettangolo
Attributi base, altezza
Metodi: costruttore, set e get per l’accesso agli attributi privati
area
perimetro
diagonale
Cerchio
Attributi raggio
Metodi: costruttore, set e get per l’accesso agli attributi privati
area
circonferenza
TestPoligoni contenente il metodo main per testare le altre classi:
- crea un quadrato di lato 5 e uno di lato 10;
- calcola e visualizza l’area e il perimetro dei due quadrati
- crea un rettangolo di base 5 e altezza 10
- visualizza area e perimetro del rettangolo
- crea due cerchi, uno di raggio 4 e uno di raggio 12
- visualizza area e circonferenza dei due cerchi
Esercizio 28
Per la gestione di un conto corrente, implementare la classe java CC e la relativa classe TestCC contenente il metodo main.
Classe CC
Attributi privati:
- numero conto (intero)
- nome cliente (String)
- interessi annuali applicati (double)
- saldo (double)
Metodi pubblici:
- costruttore: crea un nuovo CC avendo come parametri il numero del conto, il nome del cliente e l’interesse applicato; il saldo va inizializzato con 0
- metodi get e set per la gestione degli attributi privati
- void statoConto() visualizza i dati del conto (numero conto, nome cliente, saldo, interessi applicati)
- void versamento (double importo) aggiorna il saldo aggiungendo l’importo spec.
- void prelievo (double importo) aggiorna il saldo detraendo l’importo specificato; va verificato che sia possibile prelevare la somma indicata; in caso contrario visualizza il messaggio “disponibilità insufficiente”
- double calcolaInteressi (int mesi) calcola gli interessi maturati sul saldo dopo il numero di mesi specificato
Classe TestCC
Consente di verificare le funzionalità della classe:
- creare 3 CC cc1, cc2 e cc3;
- effettuare alcune operazioni di prelievo e di versamento sui 3 conti
- visualizzare lo stato dei 3 conti
- calcolare e visualizzare gli interessi maturati su c1 dopo 3 mesi, su c2 dopo 6 mesi e su c3 dopo 9 mesi;
- visualizzare il conto con saldo maggiore
Esercizio 29
Definire la Classe Triangolo avente come attributi i 3 punti corrispondenti ai vertici
Attributi privati
Punto vertice1
Punto vertice2
Punto vertice3
Metodi pubblici
Triangolo (Punto v1, Punto v2, Punto v3)
double Perimetro()
boolean isEquilatero()
boolean isIsoscele()
Definire la classe TestTriangolo contenente il metodo main
- Creare 3 punti p1, p2, p3 di coordinate a piacere
- creare un triangolo avente i tre punti come vertici
- calcolare e visualizzare il perimetro del triangolo
- verificare se il triangolo è equilatero o isoscele e visualizzare un opportuno messaggio
Suggerimenti: sfruttare la classe Punto già creata in una precedente esercitazione; utilizzare in modo particolare il metodo distanzaDa per il calcolo del perimetro. Se procedi correttamente è molto più facile di quanto possa sembrare.
Esercizio 30
Definire la classe TriangoloEquilatero avente come attributo privato il lato e come metodi pubblici:
- il costruttore TriangoloEquilatero(double l),
- getLato()
- double perimetro()
- double area()
Definire la classe TriangoloIsoscele avente come attributi privati la base e il lato e come metodi pubblici:
- il costruttore TriangoloIsoscele(double l, double b),
- getLato() e getBase()
- double perimetro()
- double area()
Definite inoltre la classe TestTriangoliVari per creare un triangolo equilatero e un triangolo isoscele; calcolare e visualizzare il perimetro e l’area dei due triangoli
Gerarchie di classi
Esercizio 31
Creare una gerarchia di classi contenente Persona (attributi: nome, età, sesso), Docente (attributi estesi: materia d’insegnamento) e Studente (attributi estesi: classe e corso). Implementare tutti i metodi per la gestione delle classi (costruttori, get e set, mostraDati)
Esercizio 32
Creare una gerarchia di classi contenente Animale (attributi: nome, età), Cane (attributi estesi: razza) e Gatto (attributi estesi razza). Implementare tutti i metodi per la gestione delle classi (costruttori, get e set, mostraDati). Implementare inoltre per Cane il metodo insegue(Gatto) e insegue (Cane) e per Gatto il metodo vicinoA(Cane) e vicinoA(Gatto)
Avviso: Dal momento che non sarà effettuato il corso di recupero di informatica, dal momento che sono impegnata con gli esami di maturità fino a metà luglio, puoi contattarmi per chiarimenti alla casella di posta che conosci prima del 15 luglio e dopo il 20 agosto.
Limbiate, 12 giugno 2009
La docente Prof.ssa GXXXXXX CXXXXXX
1