Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Guida ai Metodi e Classi in Java: Stringhe e Input da Tastiera, Appunti di Fondamenti di informatica

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

2021/2022

In vendita dal 20/05/2025

gamba_cioffd
gamba_cioffd 🇮🇹

6 documenti

1 / 44

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
LEZIONE 0
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.
💡
Un computer non può decidere quale paesaggio è più rilassante
rispetto ad un altro, deve avere un risultato univoco per tutti
LEZIONE 0
1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c

Anteprima parziale del testo

Scarica Guida ai Metodi e Classi in Java: Stringhe e Input da Tastiera e più Appunti in PDF di Fondamenti di informatica solo su Docsity!

LEZIONE 0

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.

💡 Un computer non può decidere quale paesaggio è più rilassante

rispetto ad un altro, deve avere un risultato univoco per tutti

Funzionalità: è indispensabile per risolvere un problema,

infatti prima di scrivere un programma è necessario

descrivere un algoritmo.

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.

💡 Istruzioni macchina : istruzioni elementari eseguite da un calcolatore

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!"); } }

Classi

public class HelloTester

💡 Le classi rappresentano il

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 ).

Metodi

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.

💡 Static^ significa che il

metodo main è associato solamente alla sola classe stessa non ad altre.

System.out.println ("Hello,World!");

💡 Il metodo print funziona

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.

💡 Una sequenza di caratteri racchiusa tra virgolette si chiama^ stringa

( string ).

Commenti

Nel programma sono presenti dei commenti , ignorati dal compilatore, ma che aiutano a capire i passaggi fatti.

LEZIONE 1

ERRORI DI PROGRAMMAZIONE

 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.

ESEMPIO PROGRAMMA (VARIABILI)

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); } }

💡 Lʼenunciato^ totalEuro^ =^ totalEuro + euro^ non significa che^ 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 =ˮ.

Assegnazione

Sintassi: nomeVariabile = espressione ;

Serve ad assegnare il nuovo valore espressione alla variabile nomeVariabile.

💡 Lʼoperatore di uguaglianza quindi non è più “=ˮ^ ma “==ˮ.

ESEMPIO PROGRAMMA (TIPI NUMERICI)

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.

💡 I numeri interi (int) sono^ più efficienti^ perché occupano meno

memoria e sono più veloci da elaborare.

Oggetti

Il linguaggio Java gestisce dati complessi sotto forma di

oggetti. Vengono descritti attraverso le classi ed i loro

metodi.

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,…)

Variabili oggetto

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; } }

💡 Usi import java.awt.Rectangle; perché Rectangle non fa parte del pacchetto

base java.lang , e senza questa istruzione il compilatore non saprebbe cosa sia Rectangle.

LEZIONE 2

Pacchetti di classi

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;

💡 Le classi^ System^ e^ String^ appartengono al pacchetto^ java.lang^ che

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; } }

Numeri interi

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.

Arrotondamento

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.

Conversione

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.

PER IMPORTARE LA CLASSE MATH : import java.lang.Math

💡 Per elaborare numeri interi o a virgola mobile al di fuori del campo di

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

Costante

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"); } }

💡 Math fa parte del pacchetto java.lang ; Math.round() serve a convertire in

modo sicuro un double in un valore intero , evitando errori di arrotondamento causati dalla rappresentazione binaria dei numeri decimali.

Classe Math

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)

💡 Esiste una scorciatoia per cui^ totalEuro = totalEuro + dollars*0.72^ è

uguale a dire totalEuro += dollars0.72. Oppure x=x2 uguale a x*2.

Incremento di una variabile

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- -;

Invocare metodi statici

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

DIFFERENZA TRA CLASSI, OGGETTI E METODI

⚠ i nomi di^ classi^ iniziano con la lettera maiuscola^ Math,System), i nomi

di oggetti (out) e metodi iniziano con la minuscola. La differenza tra oggetti e metodi è che i metodi sono sempre seguiti dalle parentesi.