Presentazione del corso
Schema della sezione
-
Attenzione
Come avrete probabilmente saputo, dall'a.a. 2023/2024 il linguaggio usato per il corso di Programmazione e Algoritmi 1 è cambiato in Python, e non più Java. Per tutto l'a.a. 2023/24, gli studenti degli anni accademici 2022/23 e precedenti potranno scegliere se svolgere l'esame usando Java o Python come linguaggio. Tutte le comunicazioni ulteriori avverranno sul sito dell'a.a. 2023/24.Obiettivo
Obiettivo del corso è insegnare i fondamenti della programmazione strutturata utilizzando Java come linguaggio di programmazione. Non è invece un obiettivo del corso insegnare la programmazione ad oggetti, che sarà uno dei punti centrali del corso di Programmazione e Algoritmi 2.
Programma del corso
- Introduzione alla programmazione
- Hardware e Software
- Linguaggi di programmazione, interpreti e compilatori
- Il bytecode Java e la Java Virtual Machine
- Programmazione strutturata ed orientata agli oggetti
- Testing e debugging
- Riutilizzo del software
- Primi passi con Java.
- Un semplice programma Java
- L'ambiente di sviluppo Visual Studio Code
- Variabili e tipi di dato numerici
- Espressioni aritmetiche
- Assegnamento
- Rappresentazione binaria di dati numerici
- Casting e promozione di valori numerici
- Input e output
- Il tipo stringa
- Costanti
- Stile di programmazione
- Istruzioni ed operatori condizionali.
- L'istruzione if-then-else
- L'operatore ternario
- Il tipo booleano
- Cenni di logica delle proposizioni
- Espressioni booleane
- Uguaglianza in Java
- L'istruzione e l'operatore switch
- Iterazione definita.
- Iterazione definita in Java: istruzione for
- Esempi di programmi che usano l'iterazione definita
- Istruzioni break e continue
- Uso del debugger in Visual Studio Code
- Iterazione indefinita
- Istruzioni while e do-while
- Esempi di programmi che usano l'iterazione indefinita
- Scrivere cicli senza bug
- L'istruzione for rivista
- Sottoprogrammi e metodi statici
- Sottoprogrammi e metodi statici
- Passaggio di parametri
- Metodi che restituiscono un risultato
- Vettori
- I vettori
- Ricerca lineare e ricerca binaria
- Ordinamento di un vettore: selection sort
- Vettori multidimensionali
- Cenni di complessità computazionale asintotica
- Ricorsione.
- Programmi ricorsivi
- La pila dei record di attivazione
- Ricerca binaria ricorsiva e merge sort
- Oggetti e classi
- Le classi come meccanismo di aggregazione di dati (record)
- Array di oggetti
Ricevimento studenti
Il corso è tenuto dal prof. Gianluca Amato. Si rimanda alla pagina del profilo per informazioni su come contattare il docente e sugli orari e modalità di ricevimento.
Materiale didattico
- Il libro di testo: Walter Savitch. Programmazione di base e avanzata con Java (seconda edizione). Pearson
Il testo principale del corso. Lezioni ed esercitazioni saranno basate su di esso. Sarà utilizzato anche nel corso di Programmazione e Algoritmi 2. Altamente consigliato. -
Irv Englander. The Architecture of Computer Hardware, Systems Software, and Networking: An Information Technology Approach (6th edition). Wiley
Testo di riferimento per la parte di programma relativa alla rappresentazione binaria dei dati. - Slide sul capitolo 3: sistemi di numerazione
- Slide sul capitolo 4: rappresentazione di informazione non numerica
- Slide sul capitolo 5: rappresentazione di informazione numerica
- A. Bertossi, A. Montressor. Algoritmi e strutture dati (terza edizione). Città Studi
Testo di riferimento per la parte di complessità computazionale. Sarà utilizzato anche nel corso di Programmazione e Algoritmi 2. - La libreria delle classi di Java 11
- Un piccolo documento sulla Creazione di array in Java.
Modalità didattica
Il corso si terrà in presenza. Alcuni studenti con particolari requisiti potranno accedere alle lezioni in streaming e registrate, secondo le regole previste dalla "Modalità di erogazione della didattica A.A. 2022/23"