Lezione 17
Introduzione alla programmazione MIDI
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
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
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
Script per la compilazione e il lancio in NotePad++
• 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)"
Percorso variabile
• Lo script viene richiamato di default dalla pressione del
tasto F6
–
In alternativa si richiamano i software da riga di comando
Programmazione MIDI (Prof. Luca A. Ludovico)
17. Introduzione alla programmazione MIDI
Introduzione al linguaggio di programmazione
JAVA
Programmazione MIDI (Prof. Luca A. Ludovico)
17. Introduzione alla programmazione MIDI
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
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
Programmazione MIDI (Prof. Luca A. Ludovico)
17. Introduzione alla programmazione MIDI
bytecode
virtual machine
esecuzione
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
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
Esempi
Codice sorgente
Compilazione
Interpretazione
e compilazione
JIT
Esecuzione
Programmazione MIDI (Prof. Luca A. Ludovico)
17. Introduzione alla programmazione MIDI
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
Primi esempi di programmi
JAVA
Programmazione MIDI (Prof. Luca A. Ludovico)
17. Introduzione alla programmazione MIDI
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
Hello World
Sorgente di un programma minimale che stampa il testo
"Hello world" sulla console.
opzionale
Stesso nome del file .java? Non
necessariamente, però il file
.class compilato prenderà
questo nome
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
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
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
Scarica

Presentazione del corso