Section outline

  • 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

    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"