




































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Una panoramica sui metodi e le classi in java, con un focus particolare sulla manipolazione delle stringhe. Vengono illustrati concetti fondamentali come la definizione di metodi, la firma di un metodo, le variabili oggetto e la concatenazione di stringhe. Inoltre, vengono presentati esempi pratici sull'utilizzo della classe string, inclusi metodi come length(), touppercase(), tolowercase() e substring(). Anche l'uso della classe scanner per l'acquisizione di input da tastiera e la creazione di password, fornendo una guida completa per i principianti della programmazione java. Infine, vengono trattati i costruttori e i metodi della classe bankaccount, offrendo un esempio concreto di implementazione di una classe con variabili di esemplare e metodi per la gestione del saldo.
Tipologia: Appunti
1 / 44
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!





































Alla fine dellʼ 800 , David Hilbert propone 23 problemi matematici fondamentali e vuole trovare una procedura universale per la quale sia possibile stabilire la verità o la falsità di un enunciato.
1936 Alan Turing e Alonzo Church dimostrano che non esiste questa procedura. Si introduce per la prima volta il concetto di algoritmo , una sequenza di operazioni “elementariˮ che compongono una procedura di calcolo. Viene costruita la macchina di Turing , una macchina universale in grado di calcolare ogni funzione calcolabile. 1962 Dreyfus introduce il termine informatique, per definire il trattamento automatico dellʼinformazione.
Computer : dal latino computare (calcolare), è un dispositivo fisico che implementa la macchina di Turing. Memorizza dati, interagisce con dispositivi ed esegue programmi. Ex: elettrodomestici, pagamento elettronico…
Programma : sequenza di istruzioni che il computer esegue e di decisioni che il computer prende per svolgere una certa attività.
Programmazione : lʼattività di progettare e realizzare un programma
ALGORITMO ⇒ la descrizione di un metodo di soluzione di un problema che:
1 sia eseguibile
2 sia priva di ambiguità
3 si concluda con un numero finito di passi.
rispetto ad un altro, deve avere un risultato univoco per tutti
Modello di von Neumann:
Svantaggi:
lentezza capacità limitata sovraccarico del processore
CPU : unità centrale di elaborazione (central processing unit) ed è il cuore del computer, costituito da uno o più chip. Ha un funzionamento ciclico e questo periodo viene scandito dal clock, si misura in cicli al secondo (Hz). Ex: 3GHz 3 miliardi di cicli al secondo.
MEMORIA DEL COMPUTER ci sono memoria primaria e secondaria. Servono ad immagazzinare dati e programmi nel computer. Eʼ suddivisa in celle, ognuna delle quali ha un indirizzo.
ANALISI PRIMO PROGRAMMA:
Un programma, detto compilatore , legge il programma in linguaggio ad alto livello e genera il corrispondente programma macchina di una certa CPU
si dice codice sorgente il codice scritto in linguaggio ad alto livello (scrittura del programma) si dice codice eseguibile il codice scritto nel linguaggio macchina
public class HelloTester { public static void main(String[] args) { // visualizza un messaggio sullo schermo System.out.println("Hello, World!"); } }
public class HelloTester
meccanismo principale per lʼorganizzazione dei programmi.
Le classi sono fabbriche di oggetti, specificano i metodi che si possono
invocare per gli oggetti. Inoltre sono anche un “contenitoreˮ di: metodi statici (ad ex. main ) e oggetti statici ( System contiene lʼoggetto out ).
public static void main String [] args)
Un metodo serve a definire una sequenza di istruzioni che descrive come svolgere un certo compito e deve essere inserito in una classe.
Unʼapplicazione Java deve avere un metodo main.
metodo main è associato solamente alla sola classe stessa non ad altre.
System.out.println ("Hello,World!");
come println ma NON va a capo al termine della stampa.
Come ogni metodo, anchʼessi devono essere inseriti in classi: out è inserito in System che contiene oggetti e metodi della libreria standard.
Quando si usa un oggetto bisogna specificare cosa si vuole fare con esso, in questo caso usare un metodo dellʼoggetto out (println). La coppia di parentesi racchiude i parametri , informazioni necessarie per lʼesecuzione del metodo.
( string ).
Nel programma sono presenti dei commenti , ignorati dal compilatore, ma che aiutano a capire i passaggi fatti.
Errori di sintassi : il compilatore riesce ad individuare e segnalare lʼerrore perché identifica il nome di un oggetto ( symbol ) che non è stato definito ( aut ). Errori logici : sono molto più complicati di quelli di sintassi, il programma viene compilato correttamente ma non fa quello che dovrebbe fare.
public class Coins1 public static void main String[] args){ int lit 15000 ; //lire italiane double euro 2.35; //euro
//calcola il valore totale
double euro 2.35; double dollars 3.05; //calcola il valore totale //sommando successivamente i contributi double totalEuro = lit /1936.27; totalEuro = totalEuro + euro; totalEuro = totalEuro + dollars * 0.72; System.out.print("Valore totale in euro "); System.out.println(totalEuro); } }
uguale a sé stesso più qualcosʼaltro. Significa “calcola il valore dellʼespressione alla destra di = e scrivi il risultato nella posizione di memoria assegnata alla variabile indicata a sinistra del segno =ˮ.
Sintassi: nomeVariabile = espressione ;
Serve ad assegnare il nuovo valore espressione alla variabile nomeVariabile.
public class Coins1 public static void main String[] args){ int lit 15000 ; double euro 2.35; // calcola il valore totale double totalEuro = euro + lit / 1936.27; //stampa il valore totale System.out.print ("Valore totale in euro "); System.out.println (totalEuro);
I numeri interi (positivi e negativi) si rappresentano con int.
I numeri in virgola mobile (positivi e negativi) si rappresentano con double.
memoria e sono più veloci da elaborare.
Un oggetto è unʼentità che può essere manipolata in un programma mediante lʼinvocazione di metodi.
String greeting = “Hello,World!ˮ;
greeting è un oggetto che appartiene alla classe String e si può usare mediante i suoi metodi Ex. length, toUpperCase,…)
Per definire una variabile oggetto si indica il nome della classe, seguito dal nome della variabile stessa: NomeClasse nomeOggetto;
Per creare un nuovo oggetto di una classe si usa lʼoperatore new seguito dal nome della classe e da una coppia di parentesi tonde:
new NomeClasse (parametri);
public class test{ public static void main String []args){ Rectangle box = new Rectangle 5 , 10 , 20 , 20 ; Rectangle box2 new Rectangle ((int)box.getX ,(int)box.getY , (int)box.getWidth() ,(int)box.getHeight()); box2.translate 15 , 25 ; System.out.println (box.getX; System.out.println (box2.getX; } }
base java.lang , e senza questa istruzione il compilatore non saprebbe cosa sia Rectangle.
Tutte le classi della libreria standard sono raccolte in pacchetti Ex. la classe Rectangle appartiene al pacchetto java.awt ).
Per usare una classe di una libreria bisogna importarla nel programma usando:
import nomePacchetto.NomeClasse;
viene importato nel programma automaticamente.
import java.awt.Rectangle; public class MoveTester{ public static void main String []args){ Rectangle box = new Rectangle 5 , 10 , 20 , 30 ; // sposta il rettangolo box.translate 15 , 25 ; //visualizza informazioni sul rettangolo traslato System.out.println("Dopo essersi mosso, l'angolo sinistro superiore è: "); System.out.println(box.getX; System.out.println(box.getY; } }
In Java ci sono 8 tipi di dati fondamentali, 6 sono numerici: 4 per numeri interi e 2 in virgola mobile.
System.out.println(5.0 / 0; // Risultato: Infinity System.out.println(-5.0 / 0; // Risultato: Infinity
👉 Se dividi un numero (positivo o negativo) per 0, ottieni infinito ( Infinity o - Infinity ).
System.out.println(0.0 / 0.0; // Risultato: NaN
👉 Se dividi 0 per 0 , il risultato è NaN ( Not a Number ), cioè un valore che indica che il risultato non ha significato matematico.
I computer rappresentano i numeri in virgola mobile in base binaria e a volte si ottengono dei risultati diversi rispetto al nostro sistema in base decimale.
double f 4 .35F; System.out.println( 100 * f);
Il numero 4.35 non ha una rappresentazione esatta nel sistema binario, come 1/3 non ha una rappresentazione esatta in quella decimale.
I numeri in virgola mobile hanno mancanza di precisione perché possono rappresentare “soltantoˮ 15 cifre significative, ciò significa che le operazioni possono dare risultati inattesi.
In unʼassegnazione, il tipo di dati dellʼespressione e della variabile devono essere compatibili.
Se non sono compatibili provocano una possibile perdita
di informazioni (della parte frazionaria).
Ci sono dei casi in cui si vuole ottenere questʼultima conversione con la perdita della parte frazionaria, lo si fa mediante cast (forzatura).
il cast è (int)
Come abbiamo visto però le parti frazionarie si perdono sempre nella conversione, per questo motivo la soluzione migliore è prendere il metodo round dalla classe Math che funziona sia per numeri positivi che negativi.
long o double si utilizzano 2 classi del pacchetto java.math: BigInteger e BigDecimal…ma sono lenti e scomodi
import java.math.BigInteger; public class BigNumbers{ public static void main(String[] args){ BigInteger a = new BigInteger("123456789"); BigInteger b = new BigInteger("987654321"); BigInteger c = a.multiply(b); System.out.println(c); } } // risultato 121932631112635269
Sintassi: final nomeTipo NOME_COSTANTE espressione ;
centEuro = centEuro % CENT_PER_EURO; System.out.print(intEuro); System.out.print(" euro e "); System.out.print(centEuro); System.out.println(" centesimi"); } }
modo sicuro un double in un valore intero , evitando errori di arrotondamento causati dalla rappresentazione binaria dei numeri decimali.
La classe Math della libreria standard mette a disposizione metodi statici, richiedendo parametri double e dando risultati double :
Math.pow (x, n) ⇒ xⁿ Math.sqrt(x) ⇒ restituisce la radice quadrata di x Math.log(x) ⇒ restituisce il logaritmo naturale di x Math.sin(x) ⇒ restituisce il seno di x espresso in radianti
Sono presenti anche delle costanti:
Math.E 2.7182818284590452354 (esponenziale) Math.PI 3.14159265358979323846 (pigreco)
uguale a dire totalEuro += dollars0.72. Oppure x=x2 uguale a x*2.
Consiste nellʼaumentare il valore di tale variabile di uno:
int counter 0 ; counter = counter 1 ;
Lʼoperatore per questo tipo di operazione è: counter++ ;
Per il decremento: counter- -;
Sintassi: NomeClasse.nomeMetodo (parametri)
Serve ad invocare il metodo statico nomeMetodo definito nella classe NomeClasse, fornendo eventuali parametri richiesti. Un metodo statico elabora e modifica solo i propri parametri espliciti.
double rate = 2.95; int intRate = (int)Math.round(rate); System.out.println (intRate);
//RISULTATO 3 ARROTONDA IL NUMERO ALLʼINTERO PIUʼ VICINO
round() e println() sono entrambi metodi, eppure:
println() agisce su un oggetto (out) round() non agiscce su un oggetto Math è una classe)
Math.round() è un metodo statico
di oggetti (out) e metodi iniziano con la minuscola. La differenza tra oggetti e metodi è che i metodi sono sempre seguiti dalle parentesi.