6.1 L uso di istruzioni di input da console con la classe Tastiera
|
|
- Amanda Messina
- 7 anni fa
- Visualizzazioni
Transcript
1 appunti java Capitolo 6 pag Acquisizione dati da tastiera e sottoprogrammi Si sarà notato che gli esempi proposti non acquisiscono mai dati da tastiera, ma solo per assegnamento o generazione random di numeri. Tutto questo è imputabile al fatto che, per eseguire una acquisizione dati da tastiera, si rende necessario introdurre le classi di Input e Output di Java. In secondo luogo Java è un linguaggio utile per realizzare interfacce di input di carattere grafico ovvero è più semplice acquisire dati in un campo all interno di una finestra video (vedi ambiente windows) che non direttamente da console o ambiente DOS come usualmente opera il Pascal. Per avere a disposizione la possibilità di acquisire dati da tastiera in modo interattivo faremo uso in seguito di una Classe Tastiera che contiene tre metodi con i quali è possibile acquisire da tastiera un dato di tipo String oppure un dato di tipo int o double. 6.1 L uso di istruzioni di input da console con la classe Tastiera I metodi della classe tastiera sono i seguenti: public static String readstring(); public static int readint(); public static double readdouble(); esempio 1 : Si codifichi il seguente problema semplice costruire un programma che acquisisca da tastiera una stringa e la stampi sul video. Richieste: a) realizzare il main() program. Codifica public class cap06_es_01 { public static void main(string arg[]) { System.out.print("immetti una parola:"); String s=tastiera.readstring(); System.out.println(s); Commenti alla codifica La prima stesura del codice mostra il main che non contiene elementi nuovi, se si esclude l invocazione di s=tastiera.readstring(). La chiamata di questo metodo della classe Tastiera è equivalente all istruzione Readln(s) del Pascal con la sola differenza che non è una procedure (è un metodo statico che ha sempre la forma di una function Pascal). Si ricorda che per un corretto funzionamento la classe Tastiera (il file Tastiera.class) deve trovarsi nella stessa cartella del main(). Realizziamo ora il seguente programma : esempio 2 : Si codifichi il seguente problema semplice costruire un programma che acquisisca la dimensione N dall utente, generi un array di N interi e assegni ad ogni componente i valori 100, N-1 e lo stampi. Richieste: a) realizzare il main() program.
2 appunti java Capitolo 6 pag. 2 public class cap06_es_02 { public static void main(string arg[]) { System.out.print("Numero elementi per il vettore:"); int n=tastiera.readint(); int V[]=new int[n]; for (int i=0; i<n; i++) V[i]=100+i; //Fine generazione vettore for (int i=0; i<n; i++) System.out.println("V["+i+"]="+V[i]); // Fine stampa Commenti alla codifica int n=tastiera.readint(); significa che la readint() non riceve dati di input, (non ha parametri tra le parentesi), ma restituisce un intero (int) in output. Servirà per acquisire un numero che corrisponde alla dimensione del vettore da generare nel main(). Si può notare che l istruzione int V[]=new int[n]; consente di dimensionare in corsa il vettore. A differenza del linguaggio Pascal, i vettori di Java hanno un comportamento dinamico. I due cicli for che seguono servono rispettivamente per generare il vettore e per stamparlo. 6.2 Sottoprogrammi e Parametri in Pascal e in Java Si è visto che per codificare un sottoproblema in Pascal si utilizza lo strumento della Procedure e della Function. Tale strumento è utile per stabilire quali dati di input riceve e quali dati in output deve restituire il sottoproblema individuato. In Java è definito il concetto equivalente di Metodo e lo si è usato con analoghe modalità. Per Metodo si intende una funzione (una scatola nera) che riceve dati di input, dal programma invocante, esegue certe operazioni su un oggetto predefinito e restituisce al termine, eventuali dati di output al programma che lo ha invocato. L'interfaccia o intestazione di un metodo Java trova quindi una corrispondenza nelle intestazioni di procedure o function del Pascal. Di seguito si cercheranno di individuare criteri per stabilire l'esatta corrispondenza tra questi strumenti di codifica nei due linguaggi e di conseguenza permettere di trasformare procedure del Pascal in Metodi di Java. Nei paragrafi precedenti si è fatto uso di metodi Java statici (static) e di metodi dinamici il cui diverso funzionamento è stato schematizzato con un diverso utilizzo della memoria del computer per l'allocazione dei valori assegnati. Si tratta ora di capire come questi due tipi di strumento possano essere usati correttamente per risolvere sottoproblemi. In sintesi si potrebbe dire che un metodo statico corrisponde al concetto di Function (o procedure) del Pascal, in quanto può essere interpretato come uno spezzone di codice che riceve dati di input e restituisce risultati in output. La collocazione dei tre precedenti metodi statici nella classe Tastiera ha un
3 appunti java Capitolo 6 pag. 3 significato simile a quello delle UNIT del Pascal. In questo caso la classe Tastiera non ha alcun Costruttore. Un metodo dinamico è invece sempre associato ad una Classe che genera Oggetti, tali oggetti possono essere manipolati solo con l'invocazione di questi metodi dinamici, in particolare una classe di questo tipo è sempre dotata di un metodo particolare detto costruttore. Vediamo queste differenze attraverso esempi. Il sottoproblema, ormai risolto n volte, che calcola il Massimo Comun Divisore tra due numeri Naturali potrebbe essere schematizzato con le seguenti intestazioni: Intestazione sottoproblema Pascal Function MCD (a, b :integer):integer; Esempio di invocazione Var c:integer; c:=mcd(12, 18); Java public static int MCD( int a, int b); int c=mcd(12, 18) (a.1) Java public (*)Naturale MCD(Naturale b); (*)Se esistesse la Classe Naturale in Java Naturale a, b, c; a = new Naturale(12); b = new Naturale(18); c = a.mcd(b); (b.1) Nei tre casi precedenti si può interpretare l'interfaccia di MCD() come una "scatola nera" che riceve due numeri interi (a,b) e restituisce un risultato intero (c). a, b c MCD La terza riga della tabella individua un terzo caso puramente teorico, in quanto la classe Naturale non esiste in Java, ma serve per mostrare che l'invocazione di un metodo dinamico in Java ha una forma diversa e deve sempre essere chiamato anteponendo all'identificatore del metodo l'oggetto a cui è associato: in questo caso è un Naturale. <oggetto>. metodo( <parametri> ); Se ci si sofferma sul significato dei parametri di invocazione di un metodo si nota che l'intestazione può avere due forme: (a) Metodo statico intestazione: public static <tipo in out> nome_metodo ( <tipo e par. input> ); (a.1) invocazione di metodo statico non associato ad una classe: ris = nome_metodo(<tipo e par. Input>); [il metodo statico deve essere codificato nello stesso file del main() ] (a.2) invocazione metodo statico associato ad una classe: ris = <nome Classe>.nome_metodo(<tipo e par. Input>); [il metodo statico è codificato nel file della Classe: <nome Classe>] (b) Metodo dinamico intestazione: public < tipo par. out > nome_metodo ( <tipo e par. input> );
4 appunti java Capitolo 6 pag. 4 (b.1) invocazione metodo dinamico ris = <Ident. Oggetto>.nome_metodo(<tipo e par. input>); [il metodo dinamico è codificato nel file della Classe che ha un costruttore per l Oggetto] Quali sono nei due casi (a) e (b) i parametri di input e quelli di output? Nel metodo statico non associato ad una classe (a.1) l'invocazione è analoga a quella di una Function del Pascal. I parametri di input sono tutti e solo quelli che compaiono entro le parentesi tonde (<tipo e par. input>), quelli restituiti devono sempre comparire raggruppati in una unica variabile (eventualmente strutturata) il cui tipo viene dichiarato davanti all'identificatore del metodo <tipo par. out>. Nel metodo statico associato ad una classe (a.2) ) l'invocazione richiede che si anteponga all'identificatore del metodo la corrispondente class di Java <nome Classe>. I parametri di input di output sono esattamente gli stessi caso (a.1). I metodi usati negli esempi precedenti: String s=tastiera.readstring(); Int n=tastiera.readint(); erano del tipo (a.2), ossia si trattava di due metodi statici codificati nel file della classe Tastiera. Nel metodo dinamico, sempre associato a una classe (b.1) l'invocazione richiede che si anteponga all'identificatore del metodo un oggetto <oggetto> allocato in precedenza con new. I parametri di input sono tutti quelli che compaiono entro le parentesi tonde, a cui si deve aggiungere l'oggetto con cui è invocato. Quelli di output sono quindi identici a quelli del precedente caso (a.1). I metodi di String e StringBuffer del capitolo precedente: String A=new String( pippo ); String S = A.substring(int, int); riceve in input A che contiene la parola pippo e i due parametri di tipo int, restituisce in output la sottostringa S. Risolviamo ora un sottoproblema per mostrare le analogie e le differenze tra Pascal e Java, proponendo le diverse modalità java oltre alla modalità pascal. esempio 3. Si desidera realizzare un sottoprogramma che determini la prima e l'ultima occorrenza di un carattere in una stringa assegnata Richieste: a) risolverlo codificando procedura e main di invocazione in un unico file Pascal prova.pas. b) risolverlo codificando metodo statico e main di invocazione in un unico file Java di nome pro_3_6_uno.java. c) risolverlo codificando il metodo statico in una classe contenitore chiamata OpString, il main di invocazione è contenuto nel file pro_3_6_due.java. d) risolverlo codificandolo come metodo dinamico in una classe chiamata Stringa estensione della classe String di Java, il main di invocazione è contenuto nel file pro_3_6_tre.java.
5 appunti java Capitolo 6 pag. 5 Soluzione a) : Codifica Pascal Program prova; Var p,u : integer; procedure pri_ult(s : string; ch : char; Var p,u : integer); Begin (* codice omesso *) end; Begin (* main program *) pri_ult('banana', 'a', p,u); writeln(p," ", u); readln; end. Soluzione b) : file java cap06_es_03uno.java Per risolvere questo problema in java è indispensabile una classe Coppia ausiliaria che verrà codificata nel file Coppia.java. Tale classe si rende necessaria in quanto qualsiasi metodo statico e dinamico di Java restituisce un solo Oggetto e quindi senza un Oggetto Coppia non sarebbe possibile restituire due numeri interi. Primo file Coppia.java (necessario in tutte le soluzioni java) public class Coppia { private int p, int u; // l oggetto Coppia ha come attributi 2 interi public Coppia(int a, int b) { p=a; u=b; //Costruttore di una coppia; public void stampa(){ // Metodo che consente la stampa di una Coppia System.out.println(p+" "+u); Secondo file cap06_es_03uno.java Il codice della classe di cap06_es_03uno.java deve contenere sia il main() che il metodo statico pri_ult() come segue: public class cap06_es_03uno { public static Coppia pri_ult((string s, char ch) { // codice public static void main(string arg[]){ coppia c; c = pri_ult("banana", 'a' ); (modalità di invocazione a.1) c.stampa(); (modalità di invocazione b.1) Soluzione c) : file java cap06_es_03due.java Per risolvere questo problema in java si deve costruire una ulteriore classe contenitore di nome OpString.java che conterrà il solo metodo statico pri_ult(). Rimane indispensabile la classe Coppia ausiliaria già codificata nel file Coppia.java. Codifica cap06_es_03due.java Il metodo statico pri_ult() è contenuto nella sottostante classe contenitore: public class OpString { public static Coppia pri_ult((string s, char ch) { // codice
6 appunti java Capitolo 6 pag. 6 Il codice di cap06_es_03due.java deve contenere SOLO il main() public class cap06_es_03due { public static void main(string arg[]){ coppia c; c = OpString.pri_ult("banana", 'a' ); (modalità di invocazione a.2) c.stampa(); (modalità di invocazione b.1) Soluzione d) : file java cap06_es_03tre.java Per risolvere questo problema in java si deve costruire una ulteriore classe Stringa.java sottoclasse di String che conterrà il solo pri_ult() che non è più statico. Rimane indispensabile la classe Coppia ausiliaria già codificata nel file Coppia.java. Codifica cap06_es_03tre Il metodo pri_ult() non è più statico ma è contenuto nella sottostante classe Stringa sottoclasse di String: public class Stringa extends String { public Stringa(String s) { super String(s); // Costruttore di un oggetto Stringa. E una String Java public Coppia pri_ult( char ch) { // codice // metodo dinamico applicabile a un oggetto Stringa // l invocazione Stringa S= pippo ; Coppia c=s.pri_ult( p ); // è il modo in cui si passano i due parametri Stringa e char Il codice di cap06_es_03tre.java deve contenere SOLO il main() public class cap06_es_03tre { public static void main(string arg[]){ coppia c; Stringa S=new Stringa( banana ); c = S.pri_ult('a'); (modalità di invocazione b.1) c.stampa(); (modalità di invocazione b.1) Si nota che un metodo statico o dinamico restituisce sempre un solo tipo di dato e si rende di conseguenza sempre necessario definire il tipo di dato da restituire se questo è strutturato. Nel caso particolare, siccome devono essere restituiti due interi, si dovrà dichiarare una classe Coppia che diviene il contenitore unico dei due valori restituiti in output dal metodo. Anche in questo caso i tre sottoproblemi Java possono essere interpretati dalla seguente "scatola nera" s, ch c Pri_ult c non è più un tipo semplice ma è costituito dalla coppia (c.p,c.u). Un ulteriore sottoproblema che elimini un carattere di posizione assegnata in una sequenza di caratteri ha le seguenti intestazioni: Intestazione sottoproblema Pascal Function deletecharat(s:string;ind:integer):string; Esempio di invocazione Var sr:string; sr :=deletecharat( fico,3) ;
7 appunti java Capitolo 6 pag. 7 Pascal Procedure deletecharat (Var s:string; ind:integer); Var s:string; s:= fico ; deletecharat(s,3); Java public static StringBuffer deletecharat (StringBuffer StringBuffer sr,s ; s, int ind) s=new StringBuffer( fico ) ; sr=deletecharat(s,3); (a.1) Java public StringBuffer deletecharat (int ind) (*) (*)metodo presente in StringBuffer StringBuffer sr,s ; s=new StringBuffer( fico ) ; sr=s.deletecharat(ind); 6.E - Esercizi [di conversione di intestazioni da Pascal a Java static e loro prova] 6.1. Si è realizzato un programma Pascal che genera un array di interi compresi tra 100 e 100 in modo random, di dimensione N con 1<=N<=Dim (Dim=20) e ricerca un intero X nell array assegnato dall utente, infine stampa il messaggio X esiste/non esiste nell array. La struttura del main() Pascal e le procedure realizzate sono le seguenti: program es_pascal_6_1; Type Vett=array[1..20] of Integer; Var N,X:Integer; A:Vett; Procedure genera(var V:Vett; Dim, vmin, vmax :integer ); (*genera il vettore di interi*) Function ricerca(v:vett, Dim:Integer; X:Integer):boolean; (*Ricerca X nel vettore e restituisce true o false*) Procedure stampa(v:vett, Dim:Integer); (*stampa il vettore di interi per verificare*) Begin (* main *) Write( inserisci il numero di elementi da generare N= ); readln(n); Write( inserisci l elemento da cercare nell array X= ); readln(x); genera(a,n,-100,100); stampa(a,n); if (ricerca(a,n, X)) Writeln(X, Esiste. ) else Writeln(X, NON Esiste. ); readln; end. Richiesta: realizzare gli equivalenti metodi statici java e il main() equivalente adeguando i parametri, il tutto in una unica Classe Java. FARE uso della classe Tastiera Si è realizzato un programma Pascal che genera due array di interi compresi tra 100 e 100 in modo random, la dimensione degli array è N1 ed N2 con 1<=N1 ed N2<=Dim (Dim=20), crea l array unione dei due array generati e li stampa tutti. La struttura del main() Pascal e le procedure realizzate sono le seguenti: program es_pascal_6_2; Type Vett=array[1..40] of Integer; Var N1,N2:Integer; A,B:Vett; Procedure genera(var V:Vett; Dim, vmin, vmax :integer ); (*genera un vettore di interi*) Procedure fondi(v1, V2:Vett, Dim1, Dim2:Integer; Var V:Vett; Var DimV:Integer); (*fonde i due vettori V1 e V2 in V*) Procedure stampa(v:vett, Dim:Integer); (*stampa il vettore di interi*)
8 appunti java Capitolo 6 pag. 8 Begin (* main *) Write( inserisci il numero di elementi del primo array N1= ); readln(n1); Write( inserisci il numero di elementi del secondo array N2= ); readln(n2); genera(a,n1,b,n2,-100,100); stampa(a,n1); stampa(b,n2); fondi(a,n1, B, N2, C, N); stampa(c,n); readln; end. Richiesta: realizzare gli equivalenti metodi statici java e il main() equivalente adeguando i parametri il tutto in una unica Classe Java. FARE uso della classe Tastiera. [Di conversione di codici di procedure Pascal in metodi statici Java raggruppati in una classe Contenitore esterna. (Equivalente a una Unit del Pascal) e loro prova.] 6.3. Si desidera tradurre la seguente Unit realizzata in Pascal usando il tipo String di java. Unit Stringa; Type Stringa=String; interface function inverti(stringa S):Stringa; (* inverte la stringa *) function conta(stringa S; ch:char) : Integer; (* conta quanti ch ci sono in S*) implementation function inverti(string S):String; function conta(stringa S; ch:char) : Integer; Begin end. (* fine Unit*) Program es_pascal_6_3; Uses Stringa; Var S:Stringa; ch:char; Begin S:= pippo ; ch= p ; Writeln(inverti(S)); Writeln(conta(S,ch)); Readln; End. Richiesta: realizzare gli equivalenti metodi statici java inserendoli in una classe Java esterna chiamata Stringa e realizzare un main() equivalente inserendolo in un diverso file. Adeguare i parametri dei metodi.
6. Acquisizione dati da tastiera
6. Acquisizione dati da tastiera pag.39 Si sarà notato che gli esempi proposti non acquisiscono mai dati da tastiera ma solo per assegnamento o generazione random di numeri. Tutto questo è imputabile al
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
Corso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
Introduzione all uso degli oggetti in Java (parte II) Walter Didimo
Introduzione all uso degli oggetti in Java (parte II) Walter Didimo Esercizio all uso di oggetti Nel corso viene fornita una classe i cui oggetti permettono di leggere dati immessi dalla tastiera la classe
3. La sintassi di Java
pag.9 3. La sintassi di Java 3.1 I tipi di dati statici In Java, come in Pascal, esistono tipi di dati statici predefiniti e sono i seguenti: byte 8 bit da -128 a 127 short 16 bit coincide con l integer
UD 3.2b: Programmazione in Pascal (1)
UD 3.2b: Programmazione in Pascal (1) Il Linguaggio di Programmazione Pascal Esistono molti linguaggi di programmazione. Per motivi didattici utilizzeremo una versione ridotta di un linguaggio di programmazione
Programmazione in Java (I modulo)
Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto
Metodi statici. Dichiarazione e chiamata di metodi statici
Metodi statici Dichiarazione e chiamata di metodi statici Cos è un metodo Un metodo è un blocco di istruzioni che fornisce una funzionalità e viene identificato con un nome Può avere dei parametri ed un
Le basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso
Concetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth.
PASCAL standard Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. Nb: primi linguaggi furono: Fortran, Algol, Ada, Cobol (cfr testo)
Lezione 6 programmazione in Java
Lezione 6 programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Le costanti I vettori Cos è un vettore Come si usa I vari tipi di vettori Esempi
Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei
Input Il tipo char Alcune modalità di acquisizione di input 1 Lettura di dati in input Vediamo due modi per acquisire dei dati di input dall utente: 1. Tramite una finestra grafica di dialogo 2. Tramite
Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario La classe String Lettura da input di dati numerici (tipo int) Stampa di dati numerici Uno sguardo al codice Esercizi 21/03/2011 2
IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale
Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input
Uguaglianza e copia di oggetti
Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La
Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010
Esercizio 1. Si deve modellare con una classe Java il contenuto di un portamonete, con delle opportune semplificazioni. Le monete da considerare sono di soli 4 tagli: 10, 20, 50 e 100 centesimi (cioè 1
Definizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,
Esonero del corso di Programmazione a Oggetti
Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio
Laboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza
Laboratorio di Programmazione Laurea in Informatica A.A. 2000/2001 Docente: A. Lanza I file esterni Assign flessibile I file di tipo text I/O bufferizzato La procedura page Creazione, Stampa, Travaso,
appunti didattici sulla programmazione con Java
appunti didattici sulla programmazione con Java Questi appunti sono stati scritti per gli studenti di informatica del Liceo Copernico di Bologna per introdurre alla programmazione con il linguaggio Java.
GESTIONE DEGLI ERRORI
GESTIONE DEGLI ERRORI Spesso vi sono istruzioni critiche, che in certi casi possono produrre errori L approccio classico consiste nell inserire controlli (if else..) per cercare di intercettare a priori
public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
La classe java.lang.object
La classe java.lang.object In Java: Gerarchia di ereditarietà semplice Ogni classe ha una sola super-classe Se non viene definita esplicitamente una super-classe, il compilatore usa la classe predefinita
Introduzione Programmazione Java
Introduzione Programmazione Java Paolo Tomeo paolo.tomeo@poliba.it Regole basilari Java è case sensitive quindi prestare attenzione alle maiuscole Il commento si inserisce con // all'inizio della linea
Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore
Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza
Programmazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
Esonero del corso di Programmazione a Oggetti
Esonero del corso di Programmazione a Oggetti Roma, 1 dicembre 2005 Considerate le seguenti definizioni di classi e interfacce in Java: interface Fumetto{ void esclama(); void utile(); class Personaggio
Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso
Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura
Lezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi
INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione
Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal
Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e
4. I moduli in Access 2000/2003
LIBRERIA WEB 4. I moduli in Access 2000/2003 Il modulo è uno degli oggetti del database di Access e rappresenta un insieme di dichiarazioni e routine scritte con il linguaggio Visual Basic, memorizzate
Uso di metodi statici. Walter Didimo
Uso di metodi statici Walter Didimo Metodi di istanza Fino ad ora abbiamo imparato a creare oggetti e ad invocare metodi su tali oggetti i metodi venivano eseguiti dagli oggetti un metodo invocato su un
Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array
Classi e array Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Si vuole definire una classe Polinomio per la rappresentazione di polinomi a
Java Le stringhe. Stringhe
Java Le stringhe 1 Le stringhe in Java In Java le stringhe non sono semplicemente array di caratteri terminati con zero come avviene in C In Java le stringhe sono oggetti appartenenti alla classe String
Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)
Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Selezione di prove di esame al calcolatore Esercizio 1 (esame del 13/01/2006) La classe Matrice definisce oggetti che rappresentano matrici
Esempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList 1 ArrayList! Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione
PREPARAZIONE PER SECONDA PROVA IN ITINERE Esercizio 1 SULLA MODELLAZIONE DEI DATI
PREPARAZIONE PER SECONDA PROVA IN ITINERE Esercizio 1 SULLA MODELLAZIONE DEI DATI Si definisca il tipo opportuno di dato per memorizzare una tabella che contenga, per ciascuna delle principali valute (dollaro
RETI DI CALCOLATORI Linguaggio Java: Eccezioni
Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria Reggio Emilia CORSO DI RETI DI CALCOLATORI Linguaggio Java: Eccezioni Prof. Franco Zambonelli Lucidi realizzati in collaborazione
Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo
Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E03 Esempi di algoritmi e programmi A. Miola Novembre 2011 1 Contenuti q Progettazione di algoritmi q Problemi di ingresso - uscita
18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS. Dall'Algoritmo al Programma
Istituto Tecnico Statale Commerciale Dante Alighieri Cerignola (FG) Dispense di Informatica Anno Scolastico 2008/2009 Classe 3APS Dall'Algoritmo al Programma Pr.: 002 Ver.:1.0 Autore: prof. Michele Salvemini
Funzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
Introduzione al MATLAB c Parte 3 Script e function
Introduzione al MATLAB c Parte 3 Script e function Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 M-file di tipo Script e Function Script Function 2 Gestione dell
Variabili e Istruzioni
Exit Menù Variabili e Istruzioni 1 Le Variabili Una VARIABILE è un oggetto identificato da un NOME e da uno STATO, detto CONTENUTO o VALORE. Possiamo immaginarla come una scatola contenuto Pippo 11 nome
ESERCIZIO 1 (STRINGHE)
ESERCIZIO 1 (STRINGHE) Fornire N stringhe di caratteri in input al programma. Per ogni stringa: si stampi a video la stringa si sostituiscano tutte le occorrenze di un carattere ( old_char ) con un altro
18 - Classi parzialmente definite: Classi Astratte e Interfacce
18 - Classi parzialmente definite: Classi Astratte e Interfacce Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:
Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli
MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)
MATLAB c M-file. Lucia Gastaldi Dipartimento di Matematica http://dm.ing.unibs.it/gastaldi/ Lezione 4 (15 ottobre 2003) Esercizio Problema 3: la successione di funzioni f n (x) = (x 2 x) n per 0 x 1 è
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli email:emanuela.merelli@unicam.it Argomenti della lezione Elementi di un linguaggio
Programmazione Orientata agli Oggetti in Linguaggio Java
Programmazione Orientata agli Oggetti in Linguaggio Java Classi e Oggetti: Metafora Parte a versione 2.2 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)
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
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 String Una stringa Java rappresenta uno specifico valore e come
Esercizi Programmazione I
Esercizi Programmazione I 9 Novembre 201 Esercizio 1 Valutare e dare il tipo delle seguenti espressioni condizionali. 1 char a= a, b= b ; // a ha v a l o r e decimale 97 2 i n t i= 1, j= 2 ; 3 double x=
Programmazione con il linguaggio LibreOffice Basic
Programmazione con il linguaggio LibreOffice Basic L ambiente di programmazione Il software LibreOffice possiede un ambiente di programmazione in linguaggio Basic, che consente di creare procedure software
Funzioni di libreria. Richiedono tutte. #include <math.h> fabs(x) sqrt(x) pow(x,a) exp(x) log(x)
Funzioni di libreria Richiedono tutte #include x x a x fabs(x) sqrt(x) pow(x,a) x e ln(x) exp(x) log(x) log 10 ( x ) log10(x) sen(x) cos(x) tg(x) arcsen(x) arccos(x) arctg(x) senh(x) cosh(x) tgh(x)
Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013
Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Metodi statici Parametri attuali e formali Passaggio dei parametri Effetti collaterali Metodi statici per Array Esercizi 16/01/2013
Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4
Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Domanda n. 1 Argomento: Rappresentazione dell'informazione Domanda: Il numero binario
Capitolo 19. Ricorsione
Capitolo 19 La ricorsione Una funzione matematica è definita ricorsivamente quando nella sua definizione compare un riferimento a sé stessa Esempio: Funzione fattoriale su interi non negativi: f(n) = n!
Esempio su strutture dati dinamiche: ArrayList
Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito
Strutture di controllo iterative
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero
Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
Eccezioni Precisazioni e approfondimenti
Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di
6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
Programmazione web lato client con JavaScript. Marco Camurri 1
Programmazione web lato client con JavaScript Marco Camurri 1 JavaScript E' un LINGUAGGIO DI PROGRAMMAZIONE che consente di inserire codice in una pagina web Sintassi simile a Java (e al C), ma NON E'
Linguaggio C. Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore.
Linguaggio C Generalità sulle Funzioni. Variabili locali e globali. Passaggio di parametri per valore. 1 Funzioni Generalizzazione del concetto di funzione algebrica: legge che associa a valori delle variabili
Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso
Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore
Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli.
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 16 Tipi riferimento e stringhe Carla Limongelli Maggio 2010 Definizione di metodi 1 Contenuti Tipi riferimento Stringhe e oggetti String
Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi
Obiettivi Unità F1 Primi programmi Conoscere il significato di dichiarazione e definizione di variabili Conoscere i tipi di dato numerici Essere in grado di realizzare semplici algoritmi in pseudolinguaggio
Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione
Corso: Fondamenti di Informatica (Gruppo 2) a.a. 2017-18 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab05 Domanda n. 1 Argomento: Iterazioni, array
Cognome e Nome : Corso e Anno di Immatricolazione: Modalità di Laboratorio (Progetto/Prova) :
PROGRAMMAZIONE (Corsi B e C) Pre-appello di Gennaio 2004 (A.A. 2003/2004) PROGRAMMAZIONE (B e C) S. Straordinaria - Appello di Gennaio (A.A. 2002/2003) 22 Gennaio 2004 ore 11 Aula II di Facoltà (Durata:
Futures Esempi di codice
:Future[T] :T Futures val x = future { someexpensivecomputation() val y = future { someotherexpensivecomputation() val z = for (a
Perché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
Questi lucidi provengono dal capitolo 2 di:
Questi lucidi provengono dal capitolo 2 di: Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Oggetti e classi Gli oggetti sono entità di un programma che si possono manipolare
Il linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
Le basi del linguaggio Java
Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del
A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
Fondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da
14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
Concetti base programmazione. Antonio Gallo
Concetti base programmazione Antonio Gallo info@laboratoriolibero.com Programma Insieme di istruzioni: Strtturato Ad oggetti Strutturato Ha una struttura più lineare Basato sui concetti di sequenza, selezione,
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa E01 Esempi di programmi A. Miola Ottobre 2011 1 Contenuti Vediamo in questa lezione alcuni primi semplici esempi di applicazioni
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.
Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la
Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni
Uso di classi e oggetti Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni Tipi di dati Tipi primitivi: interi Java fornisce otto tipi primitivi indipendenti dall implementazione
Introduzione a Java. Riferimenti
Introduzione a Java Si ringraziano Massimiliano Curcio e Matteo Giacalone 1: Introduction 1 Riferimenti! Java tutorial: http://java.sun.com/docs/books/tutorial/! Il Java tutorial è parte di una più ampia
COMPITO DI LABORATORIO DI PROGRAMMAZIONE Dicembre 2001
COMPITO DI LABORATORIO DI PROGRAMMAZIONE 2001-2002 10 Dicembre 2001 NOME COGNOME MATRICOLA Scrivere in stampatello Nome, Cognome e Matricola su ogni foglio consegnato. ESERCIZIO 1. Si consideri il seguente
Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica
Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo
Esercitazione n 2. Obiettivi
Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
se invoco un metodo di Object che è ridefinito in Point, viene invocato il metodo definito in Point
Gli HashSet Tipo predefinito che rappresenta insiemi di Object Cosa succede se... Posso mettere un riferimento a un Point in una variabile Object Object o=new Point(12,3); è quasi tutto come se l oggetto
Esercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione