Università degli studi di Roma “Tor Vergata” Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture di dati. Fornire le competenze per lo sviluppo di semplici applicazioni in linguaggio Java. Programma d’esame Parte I: 1. Introduzione al corso. Modalità d’esame, libri di testo, formalità. Introduzione alla struttura di un pc. Storia degli elaboratori. 2. Architettura dei sistemi di elaborazione, architettura a livelli e astrazioni funzionali, struttura della CPU, ciclo fetch-decode-execute,filosofie CISC e RISC, parallelismo, pipelining, architetture superscalari, unità funzionali multiple, Cenni sui sistemi di numerazione, correzione degli errori, memoria cache. Schema funzionale: memoria centrale, unità aritmetico logica, unità di controllo, unità di ingresso e di uscita. 3. Introduzione alla programmazione compilatori e interpreti La macchina virtuale Java. Introduzione ai linguaggi, definizione di sintassi e semantica (metodo operazionale e denotazionale) 4. Java il primo programma e i tool di sviluppo 5. Tipi di dato e operatori: commenti sul codice, costanti, variabili, array, tipi primitivi, logica dell’istruzione di assegnazione, operatori logici, casting e coercion 6. Istruzioni di controllo : Istruzioni di selezione: if, switch; 7. Esempi di programmazione in java Parte II 8. Istruzioni di iterazione: while, do-while, for; Istruzioni di salto:break, continue, return 9. Introduzione alla programmazione agli oggetti :Classi, oggetti metodi e attributi. Esempi di programmazione a oggetti. 10. Algoritmi di ordinamento (SelectionSort, InsertionSort, Bubblesort, Mergesort, Quicksort con relativa implementazione in java per SelectionSort InsertionSort e BubbleSort). 11. Accesso ai file 12. Esempi di programmazione in java Università degli studi di Roma “Tor Vergata” Ingegneria Medica Informatica I Programma del Corso In riferimento al libro adottato Concetti di Informatica e Fondamenti di Java Cay. S Horstmann: Capitolo 1 - Introduzione Che cos'e' la programmazione? L'anatomia di un computer Tradurre in codice macchina programmi leggibili dalle persone Il linguaggio di programmazione Java Prendere confidenza con il computer Compilare un semplice programma Errori Il processo di compilazione Capitolo 2 - Utilizzare Oggetti Tipi e variabili L’operatore di Assegnazione Oggetti classi e metodi Parametri e valori restituiti dei metodi Tipi numerici Costruire Oggetti Metodi d’accesso e metodi modificatori Riferimenti a oggetti Capitolo 3 – Realizzare Classi Scatole nere Progettare l’interfaccia pubblica di una classe Realizzare costruttori e metodi Parametri impliciti ed espliciti dei metodi Capitolo 4 - Tipi di dati fondamentali Tipi di numeri Assegnazioni Costanti Conversione dei tipi di dati Invocare metodi statici Stringhe Leggere dati in ingresso Caratteri Capitolo 5 - Decisioni L'enunciato if Confrontare valori Operatori relazionali Confrontare numeri in virgola mobile Confrontare stringhe Alternative multiple Sequenze di confronto Diramazioni annidate Utilizzare le espressioni booleane Il tipo boolean I metodi predicativi Università degli studi di Roma “Tor Vergata” Ingegneria Medica Informatica I Programma del Corso Gli operatori booleani Utilizzare variabili booleane Capitolo 7 - Iterazioni Cicli while Cicli for Cicli annidati Argomenti avanzati Capitolo 8 - Vettori e array Array Vettori Trovare un valore Contare Trovare il massimo o il minimo Memorizzare numeri in vettori Dichiarare array e accedervi Array a due dimensioni Capitolo 9 – Progettazione di Classi Metodi di accesso Metodi modificatori Metodi statici Ambito di visibilità Capitolo 15 – File e Flussi Leggere e scrivere file di testo Formato binario e formato testo Accesso casuale Flussi di oggetti Capitolo 17 – Ordinamento e Ricerca Ordinamento per selezione Ordinamento per Fusione In riferimento al libro: “Fondamenti di informatica oggetti e Java” L. Cabibbo McGraw- Hill 1 ARCHITETTURA DEI CALCOLATORI 1.1 Calcolatori e applicazioni; Alcuni esempi d'applicazioni; Applicazioni e interfaccie; 1.2Architettura dei calcolatori Hardware e software Macchina di von neumann 1.3 Tecnologie dei calcolatori codifica dei dati microprocessore Memoria centrale Memoria secondaria 1.5 Calcolatori e programmazione Università degli studi di Roma “Tor Vergata” Ingegneria Medica Informatica I Programma del Corso 2.OGGETTI SOFTWARE 2.1Programmi e programmazione ; 2.2 Introduzione agli oggetti software; 2.3 Esempi d'oggetti software; L'oggetto software System.out 3.OGGETTI E JAVA 3.1 Introduzione alla programmazione in Java Il linguaggio di programmmazione Java Classi Java Programmi di java API di java (cenni) Programmazione in java 3.2 Introduzione a Java Scrittore sullo schermo Calcolo di una radice quadrata 4.STRUMENTI PER LA PROGRAMMAZIONE 4.1 Strumenti per la programmazione Editing e editor Compilazione e compilatori Esecuzione Compilatori ed interpreti Compilazione ed esecuzione di programma Java Java 2 Software Development Kit 4.2 Che cosa fare in pratica 4.3 Errori di programmazione 4.4 Ambienti integrati di sviluppo 5.PROBLEMI ,ALGORITMI E OGGETTI 5.1 Problemi e Algoritmi Comprensione del problema Identificazione di un algoritmo per il problema 6.LE BASI DEL LINGUAGGIO JAVA 6.1 Sintassi e semantica 6.2 Introduzione alla sintassi di Java 6.3 Introduzione alla semantica di Java Semantica delle espressioni Semantica delle istruzioni 6.4 Sintassi , semantica ed errori 6.5 Introduzione alle istruzioni di Java 7.LEGGIBILITA' (solo da leggere) 7.1 Stile e convenzioni di codifica 7.2 Commenti 7.3 Scelta dei nomi 7.4 Indentazione 8 Uso di Oggetti 8.1 Tipi ed espressioni Università degli studi di Roma “Tor Vergata” Ingegneria Medica Informatica I Programma del Corso 8.2 Uso di oggetti 8.2.1 Operazioni e messaggi 8.2.2 Operazioni e metodi 8.2.3 Invocazione di metodi 8.2.4 Accesso a propriet_a di oggetti 8.3 Descrizione di oggetti e classi 8.3.1 Descrizione di metodi 8.3.2 Descrizione di metodi che restituiscono un valore 8.3.3 Descrizione di variabili 8.3.4 Selezione di metodi 8.4 Creazione di oggetti e costruttori 9 VARIABILI E ASSEGNAZIONE 9.1 Variabili e assegnazione 9.1.2 Dichiarazione di variabili 9.1.3 Assegnazione e accesso 9.1.4 Costanti 10 ERRORI DI PROGRAMMAZIONE (CENNI) 10.1 Classificazione degli errori 10.2 Errori sintattici 10.3 Errori di semantica statica 10.4 Errori di semantica dinamica 10.5 Errori logici 10.6 Discussione 11 TIPI ED ESPRESSIONI 11.1 Tipi 11.2 Espressioni 11.3 Tipi primitivi per numeri interi 11.3.1 Introduzione al tipo primitivo int 11.3.2 Valutazione delle espressioni 11.3.3 Rappresentazione dei numeri interi 11.3.4 Altri tipi primitivi numerici interi 11.4 Tipi primitivi per numeri reali 11.5 Conversione tra tipi 11.5.1 Conversione implicita 11.5.2 Conversione esplicita 11.7.2 Il tipo primitivo boolean 12TIPI RIFERIMENTO E STRINGHE 12.1 TIPI DI RIFERIMENTO 12.2 STRINGHE E OGGETTI STRING 12.3 USO DI VARIABILI RIFERIMENTO 12.4 USO D'OGGETTI STRING 12.5 STRINGHE E TIPI PRIMITIVI 12.6 CONVERSIONE DA I TIPI PRIMITIVI A STRINGHE 12.7 CONVERSIONE TRA STRINGHE E TIPI PRIMITIVI 12.8 IL METODO CHARAT 12.9 CONCATENAZIONE DI STRINGHE 12.10 CONFRONTO TRA STRINGHE Università degli studi di Roma “Tor Vergata” Ingegneria Medica Informatica I Programma del Corso 13 ISTRUZIONI CONDIZIONALI E BLOCCO 13.1 INTRODUZIONE ALLE ISTRUZIONI DI CONTROLLO 13.2 ISTRUZIONE CONDIZIONALE IF-ELSE 13.3 BLOCCO (ISTRUZIONE COMPOSTA) 13.4 ISTRUZIONE CONDIZIONALE IF 13.5 ISTRUZIONI CONDIZIONALI ANNIDATE 13.6 CASCATA DI ISTRUZIONI IF-ELSE 13.7 IL PROBLEMA DELL'ELSE MANCANTE 13 ISTRUZIONI CONDIZIONALI E BLOCCO 13.1 INTRODUZIONE ALLE ISTRUZIONI DI CONTROLLO 13.2 ISTRUZIONE CONDIZIONALE IF-ELSE 13.3 BLOCCO(ISTRUZIONE COMPOSTA) 13.4 ISTRUZIONE CONDIZIONALE IF 13.5 ISTRUZIONI CONDIZIONALI ANNIDATE 13.6 CASCATA D'ISTRUZIONI IF-ELSE 14 ISTRUZIONI RIPETITIVE 14.1 ISTRUZIONI RIPETITIVE 14.2 ISTRUZIONE RIPETITIVA WHILE 14.3 ISTRUZIONE RIPETITIVA FOR 14.3.1 ISTRUZIONE FOR CON VARIABILE CONTATORE 14.4 ISTRUZIONE RIPETITIVA DO-WHILE 14.5 CONFRONTO TRA ISTRUZIONI RIPETITIVE 14.7 ISTRUZIONI RIPETITIVE E CICLI 14.9 ISTRUZIONI RIPETITIVE ANNIDATE 15 DEFINIZIONE DI METODI 15.1 INTRODUZIONE ALLA DEFINIZIONE DI METODI 15.1.1 DEFINIZIONE DI UN SEMPLICE METODO 15.1.2 USO DI CLASSI E METODI 15.2 METODI E VARIABILI LOCALI 15.3 METODI CON PARAMETRI 15.4 METODI CHE RESTITUISCONO UN VALORE 15.5 SOVRACCARICO DI NOMI 15.6 AUTO-REFERENZIAZIONE 15.7 CLASSI E APPLICAZIONI 15.8 VISIBILITA’ DELLE VARIABILI 15.9 PROGRAMMAZIONE STRUTTURATA (E NON) 15.11.1 IL MODIFICATORE PRIVATE 15.12 LEGAME DEI PARAMETRI 15.12.1 LEGAME DEI PARAMETRI PER VALORE 15.12.2 LEGAME DEI PARAMETRI PER RIFERIMENTO 18 DEFINIZIONE DI CLASSI 18.1 CLASSI PER ISTANZIARE OGGETTI 18.3 VARIABILI D'ISTANZA 18.3.1 ACCESSO A VARIABILI D'ISTANZA 18.4 METODI D'ISTANZA 18.5 COSTRUTTORI 18.6.1 AUTO-REFERENZIAZIONE Università degli studi di Roma “Tor Vergata” Ingegneria Medica Informatica I Programma del Corso 18.6.4 18.6.5 18.6.6 18.6.7 SOVRACCARICO DEL COSTRUTTORE 371 METODI DI CLASSE 372 VARIABILI DI CLASSE 372 CLASSI E OGGETTI 373 19 ARRAY 19.1 IL PROBLEMA DEGLI STUDENTI DA PROMUOVERE 19.2 ARRAY 19.3 ARRAY IN JAVA 19.4 USO DI ARRAY 19.4.1 DICHIARAZIONE DI VARIABILI ARRAY E TIPI ARRAY 19.4.2 CREAZIONE DI ARRAY 389 19.4.3 ACCESSO A UN ARRAY 389 19.4.4 IL PROBLEMA DEGLI STUDENTI DA PROMUOVERE 390 19.4.5 LUNGHEZZA DI UN ARRAY 390 19.5.2 VISUALIZZAZIONE DEGLI ELEMENTI DI UN ARRAY 19.5.3 CALCOLO DEL MASSIMO ELEMENTO DI UN ARRAY DI INTERI 19.7 PARAMETRO DEL METODO MAIN 404 20 ARRAY DI ARRAY 417 20.1 ARRAY BIDIMENSIONALI 417 20.1.1 CREAZIONE E USO DI ARRAY BIDIMENSIONALI 418 20.2 ARRAY DI ARRAY 420 24 ORDINAMENTO 24.1 ORDINAMENTO 24.3 ORDINAMENTO 24.4 ORDINAMENTO 24.5 ORDINAMENTO 24.6 ORDINAMENTO 24.7 ORDINAMENTO DI UN ARRAY PER SELEZIONE A BOLLE PER INSERZIONE PER FUSIONE(SOLO ALGORITMO) VELOCE (SOLO ALGORITMO)