Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Introduzione al linguaggio C++
INFORMATICA Tipi strutturati
LINGUAGGIO DI PROGRAMMAZIONE C
Stringhe Operare con le stringhe con laiuto degli array.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Dati strutturati A. Ferrari.
Costruttori e Distruttori
Array (vettori) In linguaggio C / C++.
Universita di Camerino
Università di camerino
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Laboratorio Matematica e Informatica
Fondamenti di Informatica
Anno accademico Array e puntatori in C.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Caratteri e stringhe di caratteri
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Stringhe e Puntatori Marco D. Santambrogio – Ver. aggiornata al 18 Marzo 2013.
Process synchronization
Allocazione dinamica della memoria
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Array Struttura numerate di dati. Memorizzare molti dati In informatica cè spesso bisogno di memorizzare ed elaborare un insieme costituito da molti dati.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Approfondimento delle classi
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Dichiarazioni e tipi predefiniti nel linguaggio C
Il Linguaggio C.
Le funzioni.
Espressioni condizionali
Java base III: Array e Stringhe
Java base I: Sintassi e tipi di dati
Programmazione in Java
Programmazione in Java Claudia Raibulet
Javascript: fondamenti, concetti, modello a oggetti
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Master in BIOINFORMATICA Corso propedeutico di Informatica
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
I nomi in Java F. Bombi 18 novembre novembre 2003.
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
CORSO DI PROGRAMMAZIONE II Lezione 22
Il linguaggio Fortran 90: 3. Procedure e Funzioni
JavaScript Generalità Cos'è JavaScript?
Lezione 3 Struttura lessicale del linguaggio
Programmazione ad oggetti
1 novembre I nomi in Java F. Bombi 1 novembre 2002.
Introduzione a Javascript
Vettori (a una dimensione)
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
© Piero Demichelis Tipi strutturati I tipi considerati finora hanno la caratteristica comune di non essere strutturati: ogni elemento è una singola entità.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e “stringhe” Marco D. Santambrogio – Ver. aggiornata al 8 Aprile 2015.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Stringhe Una stringa è un vettore di char con un carattere costante \0 che indica la fine della stringa il terminatore rende differenti gli array di char.
La classe String Una stringa è una sequenza di caratteri
Transcript della presentazione:

Fopndamenti di programmazione

2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe String ha metodi che consentono di operare su stringhe Costanti di tipo String : uno o più caratteri racchiusi tra doppi apici Esempi: char charVariable = `a`; // apici singoli String stringVariable = a ; // doppi apici String sentence = Hello, world ;

3 Variabili di tipo String Dichiarare una variabile di tipo String : –String greeting; Assegnare un valore alla variabile: –greeting = Hello! ; Utilizzare la variabile come parametro di tipo String nella chiamata di un metodo: –System.out.println(greeting); stampa sullo schermo la stringa Hello!

4 Costruttori String(stringa) : –greeting = new String("Hello!"); Alloca memoria per ogni stringa anche se il parametro è lo stesso –diverso da non usare il costruttore String s = "Hello!"; String t = "Hello!"; String u = new String("Hello!"); String v = new String("Hello!"); System.out.println(s==t); // stampa true System.out.println(u==v); // stampa false

5 Metodi length() : ritorna la lunghezza della stringa –greeting.length() ritorna 6 toLowerCase() : ritorna la stringa con tutti caratteri minuscoli –greeting.toLowerCase() ritorna hello! toUpperCase() : ritorna la stringa con tutti caratteri maiuscoli –greeting.toUpperCase() ritorna HELLO!

6 Metodo charAt(int p) : ritorna il carattere nella posizione specificata »greeting.charAt(0) ritorna il carattere H mentre greeting.charAt(2) ritorna il carattere l Metodo substring(int s, int e) : ritorna la sotto-stringa dalla posizione s alla posizione e (esclusa) »greeting.substring(4,6) ritorna la stringa o! Indice di un carattere È un intero che, a partire da 0 per il primo carattere, specifica la posizione del carattere allinterno della stringa

7 Concatenazione di stringhe Operatore + : String name = I am Elisa ; System.out.println(greeting+ +name); sullo schermo appare: Hello! I am Elisa ricordarsi di includere gli spazi per una corretta viualizzaziome

8 Sequenze escape Come stampare caratteri speciali? –Esempio: The word is hard System.out.println( The word is hard ); –Errore di compilazione: vede la stringa The word is ed è confuso da quello che segue Usare il carattere backslash (ovvero, \ ) per indicare il significato speciale dei doppi apici interni –System.out.println( The word is \ hard\ ); –la sequenza \ è detta essere una sequenza escape

9 Commenti Scrivere commenti comprensibili ed utili Non commentare ciò che è ovvio Assumere che il lettore ha una conoscenza ragionevole Tipi di commenti: –// per commenti di una singola linea –/* … */ per commenti di più linee –/** … */ per commenti che producano documentazione HTML (appendice 10)

10 Array Nome unico per collezione di valori tutti dello stesso tipo di dati Più di un tipo primitivo, meno di un oggetto –metodi invocati con una notazione speciale –comportamento simile ad oggetti se usati come argomenti o come tipi di ritorno –niente ereditarietà –simili ad una classe Java non completamente implementata Adatti per cicli (in particolare, cicli for )

11 Creazione ed accesso Sintassi generale per la dichiarazione: Tipo_Base[] Nome_Array = new Tipo_Base[Lunghezza]; Esempi: array di 80 caratteri: char[] symbol = new char[80]; array di 100 reali: double[] reading = new double[100]; array di 100 stringhe: String[] message = new String[100];

12 Uso delle parantesi quadre Per creare un nome di tipo –esempio: int[] intArrayName; crea un nome di tipo "array di int " tipo int diverso da tipo array di int tipo del nome intArrayName, non tipo dei dati inclusi nellarray (che comunque sono di tipo int ) Per creare un nuovo array –esempio: numArray = new int[100]; Per accedere ad uno specifico elemento dellarray –esempio: System.out.println(numArray[3]);

13 Terminologia temperature[n + 2] Nome temperature[n + 2] Indice - deve essere un int, - oppure un espressione che ritorna un int temperature[n + 2] Variabili indicizzata o elemento temperature[n + 2] = 32; Valore della variabile indicizzata o elemento

14 Lunghezza di un array Specificata dal numero dentro le parentesi quadre al momento della dichiarazione –determina la quantità di memoria allocata per gli elementi dellarray memoria allocata anche se agli elementi non è stato assegnato alcun valore –determina il massimo numero di elementi che larray può contenere Ottenuta mediante la sintassi.length String[] message = new String[20]; System.out.println(message.length); Determinata al momento della dichiarazione –non può essere modificata a meno di ridichiarare larray

15 Inizializzazione di array Gli elementi di un array possono essere inizializzati nellistruzione di dichiarazione mediante una lista di valori (separati da virgole) allinterno di parentesi graffe –elementi non inizializzati ricevono un valore di default (ad esempio, per array di char ) –lunghezza di array determinata automaticamente se i valori sono inizializzati esplicitamente nella dichiarazione Esempio: double[] readings = {5.1, 3.02, 9.65}; System.out.println(readings.length); -stampa 3, ovvero la lunghezza dellarray readings

16 Dominio di indicizzazione Indicizzazione di array usa numerazione a partire da 0 –primo elemento: indice 0 –secondo elemento: indice 1 –n-esimo elemento: indice n-1 –ultimo elemento: indice length-1 Esempio: int[] scores = {97, 86, 92, 71};

17 Errore di indice fuori del dominio Usare un indice più grande di length-1 causa un errore in fase di esecuzione (non di compilazione) –viene rigettata un'eccezione di tipo ArrayOutOfBoundsException Altri linguaggi di programmazione (come C e C++) non causano neanche un errore in fase di esecuzione –una delle caratteristiche più "pericolose" di questi linguaggi è proprio il fatto che consentono di usare indici fuori del dominio

18 Inizializzazione con ciclo Elaborazione di array facile da fare in un ciclo Ciclo for spesso usato per inizializzare un array Esempio: int[] a = new int[10]; for(int i = 0; i < a.length; i++) a[i] = 0;

19 Array, classi e metodi Dato array di oggetti, i metodi della classe corrispondente possono essere usati sui singoli elementi dichiara array di Rational ogni elemento è una istanza di Rational usa il metodo add della classe Rational

20 Array, elementi ed argomenti Array ed elementi possono essere usati come argomenti di un metodo e come tipi di ritorno –sia un elemento che un nome di array possono essere un argomento di un metodo –i metodi possono ritornare un valore di un array oppure un nome di array (incluse le parentesi quadre)

21 Esempio nome di array come tipo di ritorno un elemento di a è un argomento del metodo add il nome v è un argomento del metodo computeSum

22 Nomi di array come argomenti Quando si usa un intero array come argomento di un metodo: –si indica solo il nome dell'array senza le parentesi quadre –il metodo ha accesso all'array originale e può modificare i valori dei suoi elementi –la lunghezza dell'array passato come argomento può essere diversa ad ogni invocazione quando si definisce il metodo non si sa la lunghezza dell'array che verrà passato –utilizzare length all'interno del metodo per evitare una eccezione di tipo ArrayIndexOutOfBoundsException

23 Esempio Rational computeSum(Rational[] a) { if (a.length==0) return null; Rational tot = a[0]; for (int i=1; i<a.length; i++) tot = tot.add(a[i]); return tot; } l'argomento del metodo è il nome di un array di razionali usa length per evitare eccezioni dovute ad indice fuori del dominio usa length per controllare il ciclo

24 Array ed operatore = int[] a = new int[3]; int[] b = new int[3]; for(int i; i < a.length; i++) a[i] = i; b = a; System.out.println(a[2] + " " + b[2]); a[2] = 10; System.out.println(a[2] + " " + b[2]); Non crea una copia dell'array a ma trasforma b in un altro nome per l'array a Output: 2 10 Un valore cambiato in a è lo stesso valore ottenuto con b

25 Array ed operatore == int i; int[] a = new int[3]; int[] b = new int[3]; for(i=0;i<a.length;i++) a[i] = 0; for(i=0;i<b.length;i++) b[i] = 0; if(b == a) System.out.println("a equals b"); else System.out.println("a does not equal b"); a e b sono entrambi array di 3 elementi di tipo int a tutti gli elementi di a e b viene assegnato il valore 0 verifica se gli indirizzi di a e b sono uguali, non se i valori degli array sono uguali L'output di questo codice sar à a does not equal b perch é gli indirizzi dei due array non sono uguali

26 Uguaglianza tra array Per verificare se due array sono uguali bisogna definire un metodo equals che ritorna il valore true se e solo se gli array hanno la stessa lunghezza e tutti gli elementi corrispondenti sono uguali

27 Metodi che ritornano un array Un altro esempio di passaggio per riferimento In pratica, non viene restituito l'array, ma il suo indirizzo Il nome della variabile a cui l'array viene assegnato è semplicemente un altro nome per l'array ritornato dal metodo

28 Buone regole di programmazione Usare nomi singolari piuttosto che plurali migliora la leggibilità –sebbene un array contenga molti elementi, l'uso più frequente del suo nome sarà per indicizzare un singolo elemento Non affidarsi ai valori iniziali di default per gli elementi di un array –inizializzare esplicitamente gli elementi nella dichiarazione oppure in un ciclo

29 Ricerca in un array Esistono molte tecniche per cercare un particolare valore all'interno di un array Ricerca sequenziale: –partire dall'inizio dell'array e procedere in sequenza finché il valore viene trovato oppure la fine dell'array viene raggiunta oppure, partire dalla fine dell'array e procedere a ritroso finché il valore viene trovato oppure l'inizio dell'array viene raggiunto –non è il modo più efficiente, ma funziona ed è facile da programmare

30 Esempio public boolean inArray(int[] a, int x) { boolean found = false; int i = 0; while ((! found) && (i<a.length)) { if (x==a[i]) found = true; else i++; } return found; }

31 Ordinare un array Ordinare un elenco di elementi è un compito molto frequente –ordinare numeri in modo crescente –ordinare numeri in modo decrescente –ordinare stringhe in modo alfabetico Vi sono molti modi per ordinare un elenco Selection sort –uno dei più facili –non il più efficiente, ma facile da capire e da programmare

32 Algoritmo Selection Sort Per ordinare un array di interi in modo crescente: –cerca nell'array il numero più piccolo e scambialo con il primo elemento dell'array la parte ordinata dell'array è ora il primo elemento, mentre quella non ancora ordinata sono i rimanenti elementi –cerca nella parte non ordinata il numero più piccolo e scambialo con il secondo elemento dell'array –ripeti la ricerca e lo scambio fino a quando tutti gli elementi sono al posto giusto ogni iterazione aumenta di 1 la lunghezza della parte ordinata e diminuisce di 1 quella della parte non ordinata

33 Il codice public void selectionSort(int[] a) { int i, j, indexOfNextSmallest, min, temp; for (i = 0; i < a.length - 1; i++) { min = a[i]; indexOfNextSmallest = i; for (j = i+1; j < a.length; j++) if (a[j] < min) { min = a[j]; indexOfNextSmallest = j; } temp = a[i]; a[i] = a[indexOfNextSmallest]; a[indexOfNextSmallest] = temp; }

34 Esempio

35 Il metodo main Il parametro formale di un metodo main è sempre un array di oggetti di tipo String. La macchina virtuale java invoca il metodo main nellapplicazione che viene passata allinterprete Il parametro di tipo array di stringhe, che solitamente viene chiamato args, rappresenta linsieme di argomenti passati tramite la linea di comando allinterprete Java quando viene invocato.

36 Qualsiasi informazione passata dalla linea di comando viene memorizzata nellarray args per poter essere successivamente usata dal programma. Il parametro del metodo main è sempre un array di oggetti di tipo String, per cui se si ha bisogno di passare dalla riga di comando informazioni in altro formato, ad esempio numerico, il programma dovrà convertirle in formato stringa.