Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

17
Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Transcript of Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Page 1: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Introduzione alla programmazione MIDI

Lezione 17

Programmazione MIDI (Prof. Luca A. Ludovico)

Page 2: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Obiettivi

• Illustrare la progettazione e l’implementazione di semplici software per la gestione del MIDI

• Consolidare l’apprendimento dei concetti relativi al MIDI tramite applicazioni pratiche

• Favorire lo sviluppo di capacità di risoluzione algoritmica dei problemi collegati al formato MIDI

• Approccio pratico con esercitazioni guidate, ripasso della sintassi e livelli di difficoltà incrementali

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 3: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Pre-requisiti

• Conoscenza degli operatori aritmetici, logici e di confronto

• Conoscenza dei costrutti standard (istruzioni condizionali, iterative, ecc.)

• Dimestichezza con il paradigma di programmazione a oggetti

• Capacità di risoluzione algoritmica dei problemi

• Contenuti della prima parte del corso

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 4: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Software richiesto

• Il software richiesto è disponibile sotto varie piattaforme, è gratuito e preinstallato nei laboratori

1. Ambiente di esecuzione Java (JRE, Java Runtime Environment)

2. Ambiente di sviluppo Java (JDK, Java Development Kit)

3. Editor di codice con supporto a Java:• Notepad++ [usato nel corso]• Eclipse• Crimson Editor• …

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 5: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

• Installando il plug-in NPPExec, è possibile velocizzare la procedura di compilazione e lancio del bytecode tramite il seguente script:

cd "$(CURRENT_DIRECTORY)"

C:\Program Files\Java\jdk1.7.0_07\bin\javac.exe "$(FILE_NAME)"

C:\Program Files\Java\jdk1.7.0_07\bin \java.exe "$(NAME_PART)"

• Lo script viene richiamato di default dalla pressione del tasto F6– In alternativa si richiamano i software da riga di comando

Script per la compilazione e il lancio in NotePad++

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 6: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

JAVAIntroduzione al linguaggio di programmazione

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 7: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Perché Java?

• E’ un linguaggio di programmazione moderno e ampiamente utilizzato

• E’ portabile e indipendente dalla piattaforma«write once, run everywhere»

• E’ interamente ad oggetti (OOP, Object-Oriented Programming)–La sintassi di base (strutture di controllo, operatori, …) è pressoché identica a quella del C++

• Contiene il package javax.sound.midi

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 8: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Bytecode e indipendenza dalla piattaforma

• Il bytecode è un linguaggio intermedio tra il linguaggio macchina e il linguaggio di programmazione, che riduce la dipendenza dall'hardware e facilita la creazione degli interpreti del linguaggio stesso

• In Java il bytecode viene prodotto dalla compilazione di codici sorgenti (o file sorgenti) scritti in linguaggio Java

• Principio di funzionamento:Codice sorgente compilazione bytecode virtual machine esecuzione

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 9: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Bytecode e indipendenza dalla piattaforma

• Un programma in bytecode è eseguito mediante un secondo programma che ne interpreta le istruzioni. Questo interprete è spesso indicato con l’espressione macchina virtuale.

• Questa astrazione consente di scrivere programmi portabili: progettati e implementati in modo tale da poter essere eseguiti su diversi tipi di sistemi operativi e di architetture hardware.

• E’ possibile produrre bytecode Java partendo da altri linguaggi come Scala, Clojure o Groovy.

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 10: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Vantaggi sui linguaggi interpretati

• L’indipendenza dalla piattaforma caratterizza anche i linguaggi interpretati

• Però un interprete di bytecode risulta molto più veloce di un interprete di un linguaggio di programmazione ad alto livello:– è un linguaggio con poche e semplici istruzioni– è più vicino al modo di funzionamento dell'hardware

(processore e memoria) del computer

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 11: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Esempi

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Codice sorgente

Compilazione

Interpretazionee compilazione

JIT

Esecuzione

Page 12: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Java Virtual Machine

• La macchina virtuale Java, detta anche Java Virtual Machine o JVM, è il componente della piattaforma Java che esegue i programmi tradotti in bytecode dopo una prima compilazione. Attualmente incorpora un compilatore JIT che produce codice macchina

• Esistono implementazioni software per tutti i sistemi operativi moderni e implementazioni speciali per particolari ambienti hardware/software come telefoni cellulari ed elettrodomestici

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 13: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

JAVAPrimi esempi di programmi

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 14: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Un primo programma in Java

• Un programma minimale in Java deve obbligatoriamente contenere:– la definizione di classe tramite la parola chiave class

seguita da nomeClasse – il metodo main o metodo principale, che costituisce l’entry

point del programma

• Nel metodo main vengono definite variabili globali, istanziati oggetti e richiamati metodi statici su variabili e/o metodi dinamici sugli oggetti– Per la spiegazione degli oggetti e dei metodi dinamici si

rimanda alla lezione 19 sulla programmazione a oggetti

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 15: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Hello World

Sorgente di un programma minimale che stampa il testo "Hello world" sulla console. opzionale

public class HelloWorld

{

public static void main(String[] args)

{

System.out.println("Hello World");

}

}

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Stesso nome del file .java? Non necessariamente, però il file .class compilato prenderà questo nome

Page 16: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Gli argomenti di main

• Molti elementi sintattici introdotti nell’esempio precedente non sono comprensibili allo stato attuale della trattazione

• Ad esempio, la funzione main prende in ingresso un numero variabile di argomenti, che è possibile passare al lancio del programma come stringhe di testo separate da spazi (gli spazi delimitano gli argomenti)

• Tecnicamente, String[] args indica un array di elementi di classe String chiamato args e dimensionato quando viene lanciato il programma

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI

Page 17: Introduzione alla programmazione MIDI Lezione 17 Programmazione MIDI (Prof. Luca A. Ludovico)

Gli argomenti di main

public class HelloWorldArg

{

public static void main(String[] args){

if (args.length == 0)

System.out.println("Pochi arg");

else if (args.length > 1)

System.out.println("Troppi arg");

else

System.out.println(args[0]);

}

}

Programmazione MIDI (Prof. Luca A. Ludovico)17. Introduzione alla programmazione MIDI