I.T.I.S. Minerario “G. Asproni”
Corso INFORMATICA
Classe III
PROGRAMMA
di
INFORMATICA GENERALE
A.S. 2015/16
LOGICA, MACCHINE, PROBLEMI
- Algebra degli insiemi e delle proposizioni
- Elementi di calcolo insiemistico
- Rappresentazione di insiemi;
- Operazioni su insiemi
- Insiemi finiti
- Elementi di algebra booleana
- Valori di verità e proposizioni;
- Connettivi logici
- Dal problema al programma
- Automi, calcolatori ed elaboratori
- La macchina di Von Neumann
- Problemi, algoritmi, programmi, esecutori
- Memoria
- Stato
- Input/output
- Azione/reazione
- Comunicazione e linguaggio
- Codici, dati informazioni
- Linguaggi naturali e artificiali
- Linguaggi di programmazione: classificazione
- Paradigmi di programmazione
- Cenni sulla storia dell’elaborazione automatica
METODOLOGIE di PROGRAMMAZIONE
- La descrizione degli algoritmi
- Azioni elementari ed azioni complesse
- Condizioni semplici e composte
- Azioni condizionate e non
- Sequenze di azioni
- Azioni e condizioni ripetute
- Formalismi per la descrizione di algoritmi
- Diagrammi a blocchi
- Diagrammi a blocchi strutturati (DABS)
- Elementi e regole costruttive
- Macroazioni
- Algoritmi notevoli (su sequenze, array (di tipo primitivo e/o TDU) oppure stringhe)
- Validazione di dati
- Minimo/massimo di una sequenza
- Massimo comun divisore
- Minimo comune multiplo
- Potenza intera
- Ricerca
- Sequenziale ( con e senza sentinella)
- Binaria
- Ordinamento
- Selezione diretta (su numeri e stringhe)
- Operazioni su matrici (1, 2 o più dimensioni)
- Sottomatrici, diagonali (matrici quadrate), vettori
- Prodotto scalare
- Operazioni tra matrici: Addizione,sottrazione, moltiplicazione
- Operazioni su Sequenze: Lunghezza, confronto, inversione, traslazione, copia
- Conversioni: decimale-binario, binario-decimale, stringa-numero, numero- stringa
- Operazioni su date
- Operazioni su tempi
- Visualizzazione (output a video di sottosequenze)
- Valorizzazione (interattiva o da struttura di dati)
- Dati e Operazioni sui dati
- Dati e informazioni
- Valori, domini, tipi di dato
- Dati di input e di output
- Dati elementari o strutturati
- Formato dei dati: numerico, alfabetico, alfanumerico
- Numeri e loro rappresentazione simbolica
- Numeri di macchina e rappresentazione interna
- Limiti del calcolo
- Stringhe
- Definizione di stringa
- Costanti (stringa vuota) e literal
- Operazioni sulle stringhe (lunghezza, concatenazione, confronto, copia, sottostringa)
- Costanti e variabili
- Operatori ed operandi
- Tipi di dato primitivi
- Valori costanti e variabili semplici
- I tipi numerici (interi con/senza segno, reali singola/doppia precisione)
- Formati e rappresentazione
- Il tipo carattere
- Il codice ASCII
- Il tipo logico
- Le costanti logiche
- Operazioni AND, OR NOT e tabelle di verità
- Espressioni su tipi di dato elementari
- Definizione di espressione
- Semplici e composte
- Espressioni booleane
- Forme canoniche
- Negazione di forme canoniche
- Puntatori
- Strutture di dati
- L’assegnamento
- Istruzioni e costrutti
- Lettura/scrittura
- Selezione (una via, due vie, plurima)
- Iterazione
- Determinata e indeterminata
- Precondizionata e postcondizionata
- Sottoprogrammi
- Linguaggi e programmi
- Struttura di un programma
- Da DABS a programma
- Da programma a DABS
- Il codice sorgente
- Il macroespansore, il linker, il traduttore, il caricatore
- La traduzione del codice: compilazione/interpretazione
- Codice oggetto e codice eseguibile
- Identificazione e scelta dei dati di prova
(Campione dei dati di input)
- Esecuzione e testing
- Documentazione
- Risoluzione per passi di un problema
- Astrazione, generalizzazione, classificazione
- Analisi, progetto, codifica, prove di esecuzione, documentazione
- Comprensione del problema
- Dati di prova (costanti, variabili, pseudocasuali)
- Analisi Top-Down
- Raffinamenti successivi
- Descrizione dei dati e delle operazioni sui dati
- Descrizione di una strategia risolutiva a grana grossa
- Formulazione di un algoritmo
- Con DABS
- In metalinguaggio
- Validazione del modello
- Campione di dati di input
- Ricerca degli errori
- Tavola di traccia
- Raffinamenti successivi
- Sviluppo Top-Down
- Gli algoritmi come operazioni sui dati
- Operazioni semplici e complesse
- Operazioni e scatole nere
- Composizione di operazioni
- Strutture di Dati
- Cosa sono, a cosa servono
- Array omogenei
- Caratterizzazione generale
- Schema sintattico generale (con tipo indefinito);
- Capacità (parametrica), contenuto effettivo e sua lunghezza
- L’operazione di accesso (o selezione)
- Array omogenei a più dimensioni
- Vettorizzazione di matrici
- Funzione di accesso per matrici (a 2 dimensioni) vettorizzate
- Array eterogenei
- Caratterizzazione generale
- Schema sintattico generale (con tipo indefinito);
- Accesso ai dati membro
- Nidificazione degli array eterogenei
- Nidificazione di Strutture di dati
- Array omogenei a nodi eterogenei
- Array eterogenei contenenti array omogenei
- Modellizzazione delle operazioni: i Sottoprogrammi
- Operazioni d’utente: i sottoprogrammi
- Sottoprogrammi aperti e chiusi
- Sottoprogrammi Aperti (Macrodefinizioni)
- Definizione e uso
- Trattamento di sorgenti con sottoprogrammi aperti
- Macro senza parametri
- Macro con parametri
- Sottoprogrammi aperti o chiusi? Raffronto costi/benefici
- Sottoprogrammi Chiusi
- Sottoprogrammi funzionali (espressione) e procedurali (comando)
- Architettura di un programma
- Dichiarazione, definizione ed attivazione di sottoprogrammi
- Sottoprogrammi e comunicazione
- Interfacce di comunicazione
- Parametri formali e parametri attuali
- Sottoprogrammi e trasmissione di parametri
- Ambiente locale, non locale, globale
- Trasmissione per valore
- Strutture dati trasmesse per indirizzo
- Regole di Attivazione
- Regola Generale di attivazione (sottoprogrammi con parametri)
- Regola Speciale di attivazione (sottoprogrammi di tipo espressione)
- Regola di equivalenza tra sottoprogrammi tipati e non
- Risorse globali e locali
- Funzioni pure e funzioni ibride
- Input/output: sottoprogrammi dedicati
- Organizzazione di programmi interattivi mediante strutture a menù
- Modellizzazione dei dati
- Tipi di dato d’utente
- Array eterogenei
- Operazioni su attributi e record
- Tipi enumerativi
- Strumenti per la rappresentazione concettuale: schemi ad albero
- Metodologie di progetto
- Analisi Top-Down
- Sintesi Bottom-Up
- Complessità sui dati
- Componibilità dei tipi
- Annidamento delle strutture
- Array paralleli vs. array omogenei a componenti eterogenee
STRUMENTI e TECNICHE di PROGRAMMAZIONE
- Accesso indiretto alle variabili: i puntatori
- Rappresentazione dei dati nella memoria di lavoro
- Modelli grafici
- Array omogenei e puntatori
- Aritmetica dei puntatori
- Assiomi su puntatori e vettori (Assioma Zero e Assioma Uno)
- Effetti laterali su parametri vettoriali
- Funzioni tipate e non tipate
- Attivazione di sottoprogrammi e restituzione del controllo
- Euristica della programmazione
- Riduzione di complessità: semplificazione delle azioni
- Sviluppo per casi di una strategia risolutiva
- Soluzioni analoghe e casi noti
- Soluzioni particolari e generalizzazioni
- Testing con tavola di traccia (trace table)
- Programmazione ricorsiva
- Caratteristiche dell’approccio ricorsivo alla risoluzione dei problemi
- Ricorsione su processi e ricorsione su oggetti
- Descrizione di un processo ricorsivo
- Raffronto tra approccio iterativo ed approccio ricorsivo
- La struttura algoritmica di un codice ricorsivo
- Casi terminali e casi di ricorrenza;
- La chiamata ricorsiva
- Il ruolo dei parametri nella risoluzione ricorsiva di un problema
- Problemi notevoli
- Il calcolo del fattoriale
- I numeri di Fibonacci
- La Torre di Hanoi
- Il Massimo Comun Divisore
- Visualizzazione di un array
-
Tipi di Dato NON Primitivi
- Scelta del modello dei dati
- La componente Dati
- La componente Operazioni
- Esempi notevoli
- Il tipo Frazione (Dati + Operazioni)
- Il tipo Data (Dati + Operazioni)
- Il tipo Studente (Dati + Operazioni)
- Il tipo Calendario (Dati + Operazioni)
- Strutture dati Dinamiche
- La memoria centrale come risorsa pregiata
- Le Strutture dati statiche e l'uso della memoria di lavoro
- Caratteristiche delle strutture dati dinamiche
- La memoria dinamica e la sua gestione
- Il linguaggio C
- Struttura dei programmi
- Dati
- Dichiarazioni e tipi di dato
- Tipi di dato primitivi: char, int, unsigned, long, float, double
- Interazione con l’utente: printf( ) e scanf( )
- Costanti simboliche e variabili
- Espressioni condizionali semplici e/o composte
- Le due regole di cortocircuito
- Dati strutturati: il costruttore di tipo (array di) [ ]
- Array omogenei ad una dimensione
- Dichiarazione
- Accesso a componenti
- Operazioni ammesse e non
- Array a più dimensioni
- Array eterogenei: il costruttore struct { }
- Dichiarazione
- Accesso a componenti: operatore punto .
- Operazioni ammesse e non
- Tipi d’Utente
- Il tipo struct < tag> { }
- La dichiarativa typedef
- Annidamento di strutture
- Composizione di array e strutture
- Tipi definiti per enumerazione: enum <tag> { }
- Operatori
- Aritmetici: di base, modulo (%)
- Relazionali (==, !=, <, >, <=, >=)
- Logici (!, &&, ||)
- Selezione (a tre vie)
- Orientati ai puntatori ( &, *, →)
- Calcolo dimensionale (sizeof)
- Coercizione ( ( ) )
- Assegnamento ( pre e postincremento unitario (++,--), altri (+=,..., /=)
- Proprietà
- Impiego
- Costrutti (Istruzioni strutturate)
- Selezione semplice
- Una via: if
- Due vie: if-else
- Selezione plurima: switch
- Iterazione
- Determinata: for
- Pre condizionata: while
- Post condizionata: do-while
- Funzioni di: <ctype.h>, <string.h>, <stdlib.h>, <math.h>, <stdio.h>
- Funzioni di generazione pseudocasuale: rand( ), srand( )
- Dichiarazione, definizione e uso di Funzioni Tipate e Funzioni Non Tipate
- Definizione ed attivazione
- Interfaccia di comunicazione: prototipi di funzione e parametri
- Corpo
- Sottoprogrammi ricorsivi
- Fattoriale, Fibonacci, Potenza intera, mcm e MCD
- Ricerca sequenziale e ricerca binaria
- Pseudoistruzioni (macroespansore): #define e #include
- Gestione della memoria dinamica
- L’interazione applicazione/Heap-Manager
- Operazioni di allocazione dinamica: malloc( ), calloc( ), realloc( )
- Operazioni di deallocazione: free( )
- I/O
- Generalità sull’input/output
- I/O standard in C
- Funzioni per I/O testuale
- Lettura: getc( ), fgets( )
- Scrittura: putc( ), puts( ),
- Funzioni per I/O formattato
- Lettura: scanf( )
- Scrittura: printf( )
LABORATORIO
- Ambienti di sviluppo per C/C++
- Editing, compilazione, debugging, esecuzione, documentazione di programmi;
- Risoluzione di problemi con poche variabili semplici e costrutti di selezione a una, due
o più vie con condizioni semplici e/o composte;
- Pari/dispari, minimo/massimo, scambio di valori, validazione di valori formattati
(date, numeri di telefono, targhe, codici, …) di lunghezza costante;
- Funzioni di utilità sui caratteri, sulle stringhe, sulla produzione di valori
pseudorandom, sulla memoria dinamica;
- Operazioni ed applicazioni sulle stringhe;
- Risoluzione di problemi con poche variabili semplici e costrutti iterativi;
- Operazioni di moltiplicazione, divisione, potenza intera, M.C.D., m.c.m. risolte con
iterazioni;
- Cicli di validazione dell’input;
- Generazione di sequenze di valori pseudocasuali in range di valori predefiniti
- Risoluzione di problemi su sequenze con variabili strutturate e costrutti iterativi
- Minimo/massimo, conteggi, copie, occorrenze, presentazione dei risultati (…);
- Operazioni su array omogenei;
- Operazioni su matrici
- Inizializzazione, Addizione/Sottrazione, Vettori riga (o colonna), Ricerca, Predicati
(matrice nulla, diagonale, identità, sottomatrici,…)
- Risoluzione di sistemi lineari in due incognite secondo la Regola di Cramer;
- Operazioni su array eterogenei e su array di array eterogenei
- Lettura, inizializzazione statica, aggiornamento, stampa (…);
- Definizione di menù
- Organizzazione di menù gerarchici a uno o più livelli;
- Funzioni
- Attivazione di funzioni mediante menù
- Funzioni con parametri semplici
- Funzioni con parametri vettoriali (array omogenei)
- Funzioni logiche: i predicati;
I.I.S. “G. Asproni- E.Fermi”
Corso INFORMATICA
Classe III
PROGRAMMA
di
INFORMATICA GENERALE
A.S. 2015/16
Gli Allievi
Il Docente di Teoria
Il Docente di Laboratorio
e Laboratorio
_____________
_____________
_____________
_____________
Iglesias, 8 Giugno 2016
Pierpaolo Damele
Arnaldo Scarpa
__________________
__________________