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 __________________ __________________