Corso sul linguaggio Java

Documenti analoghi
Corso sul linguaggio Java

Corso di Informatica

Corso sul linguaggio Java

A1- Array MODULO Java3

Corso sul linguaggio Java

Array. Definizione e utilizzo di vettori

Corso sul linguaggio Java

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Unità A1 Funzioni MODULO Java 2

Le basi del linguaggio Java

Corso sul linguaggio Java

A. Ferrari. informatica. Java basi del linguaggio. Alberto Ferrari Informatica

Corso di Informatica

Lezione 6 programmazione in Java

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

Corso sul linguaggio Java

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica T-1

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Corso sul linguaggio Java

E17 Esercizi sugli Array in Java

I tipi strutturati e i record in C++

E9 Esercizi sul Capitolo 9 Array

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Corso di Informatica

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Array. Anno Accademico 2010/2011 Francesco Tortorella

METODI in Java. Prof.Angela Bonifati. Metodi e Sottoprogrammi

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Cicli annidati ed Array multidimensionali

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Problemi, algoritmi e oggetti

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

L Array e un oggetto. L array puo contenere elementi che sono: tipi primitivi, o oggetti (in realta riferimenti ad oggetti!!!).

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Corso sul linguaggio Java

I Metodi. Fondamenti di Informatica A-K

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

(A) CONOSCENZA TERMINOLOGICA (B) CONOSCENZA E COMPETENZA (C) ESERCIZI DI COMPRENSIONE

Unità B3 Strutture di controllo

Corso di Informatica

Laboratorio di programmazione

Linguaggio C: Array Valeria Cardellini

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Fondamenti di Informatica 12. Linguaggio C -4

Informatica (A-K) 14. Linguaggio C -4

Introduzione al linguaggio C Puntatori

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

La formalizzazione dell informazione: Dati e Diagrammi di Flusso

Nel seguito, istruzione1 e istruzione2 possono essere un blocco di codice { }, cioè più istruzioni

FONDAMENTI DI INFORMATICA C Linguaggio Java: Eccezioni

Fondamenti di Informatica T1 Introduzione al linguaggio Java Input/Output-Variabili-Tipi

Java Gli array. Array

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Il linguaggio C funzioni e puntatori

Array Bidimensionali in Java. Esempi di Elaborazioni su Matrici

Oggi. La programmazione strutturata - III. Sequenza e selezione. Dove siamo. Iterazione: while e do/while. Raffinamenti successivi.

Array Bidimensionali in Java. Esempi di Elaborazioni su Matrici

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

Fondamenti di Informatica T-1

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

Esercitazione Fondamenti di informatica 2

GESTIONE DEGLI ERRORI

Allocazione dinamica della memoria

Corso sul linguaggio C

Elementi di Informatica

FONDAMENTI DI INFORMATICA T-A. Java parte 3 Ing. Giorgio Villani

Gli array. slides credit M. Poneti

Fondamenti di Informatica T-1

Laboratorio di Matematica e Informatica 1

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Programmazione I - corso B a.a prof. Viviana Bono

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Esercitazione di Reti degli elaboratori

! Riassunto. ! for. ! Cicli annidati. ! Esempi, esercizi, errori tipici. ! Programmazione strutturata. ! break e continue I1; I2; I3;

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori

Oggi. La programmazione strutturata - II. Riassunto (1/2) Riassunto (2/2) Sequenza e selezione. if e while. Stefano Mizzaro 1

C: panoramica. Violetta Lonati

Array. In Java un array è un oggetto senza metodi, con attributo pubblico length che memorizza la dimensione dell array

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Stringhe ed Array. Fondamenti di Informatica A-K

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Corso di Informatica

L input da tastiera in Java. Dott. Ing. M. Banci, PhD

Esercitazione Fondamenti di Informatica 2

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.

COGNOME NOME MATRICOLA DATA

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

Corso di Laurea Ingegneria Informatica. Dispensa E11. Esercizi su array e. Gennaio 2012

Eccezioni. Comportamento di default (esempio) Propagazione delle eccezioni

Transcript:

Corso sul linguaggio Java Modulo JAVA A - Array // Prerequisiti Variabili semplici Operazioni su variabili Strutture di controllo //

Introduzione In molte situazioni reali può capitare di elaborare elenchi di dati di vario tipo presenti i memoria. Quali strumenti offre Java per trattare queste situazioni? Come si usano questi strumenti? In questa Unità vediamo uno di questi strumenti, detto array, che è un primo esempio di variabile strutturata; impariamo come si dichiara un array e come si utilizza in vari problemi. // Informazioni generali Attraverso l array è possibile rappresentare molte situazioni reali. L array è una variabile strutturata perché è fatta in modo da contenere nello stesso tempo una molteplicità di valori, a differenza delle variabili semplici (int, float, char, boolean) che ne possono contenere uno alla volta. L array, come tutte le variabili, può essere dichiarato, inizializzato ed utilizzato. //

Struttura di un array Un array, in quanto variabile strutturata, contiene nel suo interno variabili di tipo più semplice dette componenti. L accesso a ciascuna componente avviene mediante una variabile intera associata all array detta indice. Il nome della variabile array è un nome collettivo di tutta la struttura ed è assegnato dal programmatore indici nome collettivo componenti // Vettore Un vettore è un array monodimensionale, ossia tale che per individuare una componente è sufficiente un solo indice. Nell esempio a fianco, abbiamo rappresentato un vettore di componenti intere in cui: V indica il nome collettivo della variabile i è l indice delle componenti Nel linguaggio Java su un array si possono svolgere le seguenti operazioni: dichiarazione allocazione caricamento i V //

Dichiarazione vettore La dichiarazione di un vettore consiste nello specificare il nome collettivo il tipo delle componenti Essa assume la forma: tipo ident[ ]; dove: tipo è il tipo delle componenti (int, float, ecc); ident è il nome collettivo [ ] indicano che NON è una variabile semplice Esempi: int V[ ]; //dichiara un vettore di interi float num[ ]; //dichiara un vettore di float La dichiarazione di un vettore NON specifica il numero di componenti // Allocazione vettore Per specificare il numero di componenti occorre allocare il vettore dopo averlo dichiarato: Esempi: int v[ ]; v=new int[]; float f[ ]; f=new float[]; //dichiara il vettore v //alloca vettore di componenti (v. figura) //dichiara un vettore di float //alloca un vettore di componenti reali Notare che le componenti di un array hanno indici che iniziano da ; quindi nel secondo esempio, le componenti vanno da a, nel quarto esempio vanno da a. i v //

Caricamento vettore il caricamento di un vettore consiste nello specificare i valori da immettere nelle componenti del vettore, dopo averlo dichiarato ed allocato Esempi: int v[ ]; v=new int[]; // dichiara il vettore v // alloca vettore di componenti for (int i=; i < ; i++) // carica il vettore con valori da a.. v[i] = i; Per caricare i valori nel vettore si usa un ciclo for nel programma i v // Dichiarazione ed allocazione Un vettore può essere dichiarato e allocato in una sola istruzione con la sintassi: tipo ident[ ] = new tipo [lunghezza]; dove tipo è il tipo delle componenti; ident è il nome collettivo lunghezza indica il numero di componenti Esempi int v[ ]= new int []; //dichiara e alloca il vettore In generale, la lunghezza di un vettore non può essere modificata durante l esecuzione dell applicazione. i v //

Inizializzazione da programma Un vettore può essere inizializzato da programma mediante la sintassi seguente: tipo ident[ ] = {listavalori ; dove tipo è il tipo delle componenti; ident è il nome collettivo listavalori indica l elenco dei valori da immettere Esempio int V[ ]= {,,,,,,,,, ; i v // Lettura e stampa di vettori ATTIVITA : scrivere un programma che, dopo aver acquisito il numero n di elementi da registrare in un vettore, ne esegue la lettura da input e successivamente li stampa a video. Scrivere l algoritmo relativo. Ovviamente è necessario un ciclo for per il caricamento, ed un altro ciclo for per la stampa. Inizio Costante Intero MAXN; Intero v[maxn], // dichiara il vettore con dimensione opportuna i; // indice per la scansione del vettore Leggi (n); LeggiV (v, n); // funzione di lettura del vettore v[] StampaV (v, n); // funzione di stampa del vettore v[] Fine //

Lettura e stampa di vettori import java.io.*; import javax.swing.*; class VettoriEFunzioni { public static void main(string args[ ]) { int[] v = new int []; int n; try ATTIVITA : scrivere la codifica in Java dell algoritmo realizzato. {n = Integer.parseInt (JOptionPane.showInputDialog("Immetti n")); LeggiV (v, n); StampaV (v, n); /* fine try */ catch (Exception E) { System.out.println ("Attenzione: catturata eccezione "); /* fine catch */ /* fine main */ // Lettura e stampa di vettori ATTIVITA : scrivere la codifica in Java dell algoritmo realizzato. static void LeggiV (int v[], int n) throws Exception { int i; for (i = ;i < n;i++) v[i]=integer.parseint (JOptionPane.showInputDialog("Valore: ")); static void StampaV (int v[], int n) { int i; for (i = ;i < n;i++) JOptionPane.showMessageDialog (null,"v[" + v[i] + "] = " + v[i]); /* fine classe */ //

Vettori come parametri I vettori possono essere passati come parametri alle funzioni, rendendo quindi il codice più leggibile e più compatto. Quando si passa ad una funzione un vettore come parametro: nell istanza della funzione: il parametro attuale è il solo nome del vettore, senza le parentesi nel prototipo: il parametro formale è il tipo del vettore, il nome e le parentesi vuote. viene considerato automaticamente il passaggio per indirizzo (by reference) e pertanto occorre ricordare che la funzione opera sui valori originali del vettore // Proprietà length Negli array è possibile utilizzare la proprietà length che contiene il numero di elementi. Per utilizzare questa proprietà su un vettore di nome ident si usa la sintassi ident.length Per leggere e stampare un vettore vett[] si può scrivere quindi: for (int i = ; i < vett.length; i++) { System.out.print ("Valore: "); v[i] = Integer.parseInt (Tastiera.readLine ()); for (int i = ; i < v.length; i++) System.out.println ("v["+i+"]="+v[i]); //

Stringhe e vettori di caratteri Tra le stringhe e i vettori di caratteri esistono delle differenze: la stringa ha il carattere terminatore ( \ ) al contrario del vettore di caratteri. Il carattere \ consente di stabilire la lunghezza effettivamente occupata dai caratteri nel vettore; un altra differenza tra stringhe ed vettori di caratteri è che la stringa può essere trattata mediante istruzioni semplici. Ad es: String str; str=joptionpane.showinputdialog ("Immetti stringa: ")); System.out.println( La stringa e + str); // Dichiarazione di matrici Si può considerare anche un array pluridimensionale detto matrice, che può essere a due o più dimensioni. Una matrice a dimensioni si dichiara con: tipo ident [righe][colonne]; dove : tipo è il tipo delle componenti; ident è il nome della matrice righe indica il numero delle righe colonne indica il numero delle colonne Trattandosi di una matrice, le componenti sono individuate da due indici. //

Allocazione di matrici Esempi: int voti[ ] [ ]; //dichiara la matrice voti voti = new int[][]; //alloca la matrice voti con // righe e colonne int voti[ ] [ ] = new int[][]; // dichiara e alloca la matrice voti[ ][ ] L inizializzazione da programma di una matrice si effettua con una sintassi simile quella degli array monodimensionali Esempio int v[][]={{,,{,, {,; // Utilizzo di matrici Vediamo un esempio di utilizzo di matrici. ATTIVITA : scrivere un applicazione che legga da input gli elementi di una matrice m[][] di interi e successivamente calcoli e stampi la loro media aritmetica. Utilizzare le funzioni. Si dichiara e si alloca una matrice m[][] di interi e si istanzia la funzione lettura (m, r, c) che, attraverso un doppio ciclo for legge da input, uno ad uno, i valori da caricare in essa. Successivamente, alla variabile media si assegna il risultato della funzione somma (m, r, c) diviso e si stampa media. somma (m, r, c) calcola la somma degli elementi di m[][] sommando in un accumulatore somma (azzerato) i valori di m[][] mediante un doppio ciclo for. //

Utilizzo di matrici import java.io.*; class MediaConFunzioni { static InputStreamReader In = new InputStreamReader (System.in); static BufferedReader Tastiera = new BufferedReader (In); public static void main(string args[ ]) throws Exception { final int nr = ; final int nc = ; int m[][]=new int [nr][nc]; float media; LeggiM (m); media=somma(m)/; System.out.println("Media = "+ media); // Utilizzo di matrici static void LeggiM (int mat[][]) throws Exception { for (int i=; i<mat.length; i++) for (int j=; j<mat[i].length; j++) { System.out.print("Valore: "); mat[i][j] = Integer.parseInt (Tastiera.readLine()); static float somma (int mat[][]) { int s=; for (int i=; i<mat.length; i++) for (int j=; j<mat[i].length; j++) s+=mat[i][j]; return s; /* fine classe */ Anche per le matrici, quando sono utilizzate come parametri di funzioni, vale il passaggio per indirizzo. //

Un gioco con i dadi Applichiamo i concetti visti finora ad un gioco con i dadi, che si svolge come segue. Il giocatore lancia dadi e se ottiene: o al primo lancio, il giocatore vince, o il giocatore perde,,,, o questo sarà il suo punteggio P. In tal caso, lancia nuovamente i dadi fino a quando o esca di nuovo il punteggio P (nel qual caso il giocatore vince) oppure esca il valore (nel qual caso il giocatore perde). ATTIVITA : scrivere l algoritmo che realizza il gioco. // Un gioco con i dadi Algoritmo Dadi Inizio Inizializza il seme con l orologio P = lancio(); // punteggio del primo lancio Nel caso che (P) sia {,: vittoria;,,:sconfitta; Ripeti P = lancio(); Fintantochè P è diverso da P e P!= ; Se (P = =P) allora vittoria altrimenti sconfitta; Fine //

Argomenti Struttura di un array Vettore Dichiarazione vettore Allocazione vettore Caricamento vettore Dichiarazione ed allocazione Inizializzazione da programma Lettura e stampa di vettori Vettori come parametri Proprietà length Stringhe e vettori di caratteri Dichiarazione di matrici Allocazione di matrici Utilizzo di matrici Un gioco con i dadi // Altre fonti di informazione M. Bigatti, Il linguaggio Java - ed. HOEPLI P.Gallo, F. Salerno, JAVA la programmazione ad oggetti ed. Minerva Italica L. Cabibbo - Fondamenti di informatica-oggetti e Java - ed. McGraw Hill A.Lorenzi, A.Rizzi Il linguaggio Java ed. ATLAS //