Anteprima
Vedrai una selezione di 9 pagine su 37
Fondamenti di Informatica Pag. 1 Fondamenti di Informatica Pag. 2
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 6
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 11
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 16
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 21
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 26
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 31
Anteprima di 9 pagg. su 37.
Scarica il documento per vederlo tutto.
Fondamenti di Informatica Pag. 36
1 su 37
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

N.B:

sono sufficientemente prossimi. Per è diverso usare l’operatore == in quanto If (middleInitial==null)

poter verificare ciò si controlla se la loro esso va a confrontare direttamente l’oggetto {…}

differenza in modulo è minore o uguale fisico e quindi la sua posizione in memoria

di un valore fissato (1E-14). (non i contenuti al suo interno).

ε

x − y ≤ ε

| | • equalsIgnoreCase: confronta il contenuto

delle stringhe ignorando la presenza di

Scrittura: maiuscolo e minuscole.

final double EPSILON= 1E-14; • compareTo: confronta le stringhe e le ordina

If (Math.abs(x-y)<= EPSILON) s e c o n d o i l c r i t e r i o d i o rd i n a m e n t o

{ ….. } lessicografico (in ordine di importanza vi

sono spazi, numeri, lettere maiuscole, lettere

min ).

Scrittura:

If (String1.compareTo(String2)>0)

Stringa 1 viene dopo la 2

If (String1.compareTo(String2)<0)

Stringa 1 viene prima della 2

If (String1.compareTo(String2)==0)

Stringhe uguali

Alternative multiple TaxReturn.java

Per prendere decisioni articolate si

if.

possono combinare più enunciati public class TaxReturn

{

Scrittura: public static final int SINGLE = 1;

If (condizione1) public static final int MARRIED = 2;

{ if (condizione2) private static final double RATE1 = 0.10;

{argomento1a;} private static final double RATE2 = 0.25;

else

{argomento1b; } private static final double RATE1_SINGLE_LIMIT = 32000;

} private static final double RATE1_MARRIED_LIMIT = 64000;

else

{argoment2;} private double income;

private int status;

public TaxReturn(double anIncome, int aStatus)

{ income = anIncome;

status = aStatus; }

public double getTax()

{ double tax1 = 0;

double tax2 = 0;

if (status == SINGLE)

{ if (income <= RATE1_SINGLE_LIMIT)

{ tax1 = RATE1 * income; }

else

{ tax1 = RATE1 * RATE1_SINGLE_LIMIT;

tax2 = RATE2 * (income - RATE1_SINGLE_LIMIT);}

}

else

{ if (income <= RATE1_MARRIED_LIMIT)

{ tax1 = RATE1 * income;}

else

{ tax1 = RATE1 * RATE1_MARRIED_LIMIT;

tax2 = RATE2 * (income - RATE1_MARRIED_LIMIT);}

}

return tax1 + tax2;

}

}

Variabili booleane e Def. Operatori

Il tipo booleano ha due valori: true Con le variabili di tipo booleano ci troviamo

operatori e false. davanti a un particolare metodo chiamato Java ha tre operatori booleani:

METODO PREDICATO, cioè metodi il cui tipo AND (&&), restituisce il valore true

restituito è boolean. quando entrambe le condizioni

sono vere;

Es: public boolean isOverdrawn() OR (||), restituisce true se almeno

{ return balance<0; } una delle condizioni è vera;

NOT (!=), usato per invertire una

balance<0 è una condizione che può • condizione(calcola il valore true se

restituire solo true o false la condizione è falsa e viceversa).

Iterazioni (Capitolo 6 )

Ciclo WHILE Un ciclo è una parte di programma che viene ripetuto più volte finché una certa condizione è vera.

Il ciclo while in particolare ripete un certo blocco di codice finché la condizione è vera.

Scrittura: while (condizione)

{enunciati;}

N.B: se la condizione è falsa non vengono eseguite le istruzioni del ciclo ma si esce e si va all’istruzione

successiva.

Es: Calcolare in quanti anni il saldo di 10000 euro raddoppia con interessi annui del 5%

while (balance< 2*initialBalance)

Il <= non va bene poiché se ottenessi esattamente balance= 2*initialBalance eseguirei una volta in più il ciclo.

{ years ++;

double interest= balance *rate/100;

Interest è una variabile locale che scompare una volta concluso il ciclo. Se volessi usarla per tutto il programma dovrei

dichiararla fuori dal ciclo.

balance= balance +interest;

}

Ciclo DO WHILE Al contrari del ciclo while qui il corpo si presenta prima della condizione infatti esso viene seguito almeno una volta

finche la condizione è vera.

Scrittura: do

{enunciati;}

while (condizione) ;

Ciclo FOR Questo ciclo si usa quando una variabile varia da un valore iniziale a un valore finale con un incremento o

decremento costante.

// I cicli while e for sono cicli a

v e r i fi c a a n t i c i p a t a p e r c h é l a Scrittura: for (inizializzazione; condizione; aggiornamento)

condizione è verificata prima di {enunciati;}

entrare nel corpo del ciclo. Es: for(int i=inizio; i<= fine; i++)

{ …}

variabile

La i è visibile solo dentro il ciclo for e vine inizializzata solo una volta all’inizio di tale ciclo;

• condizione

La va controllata tutte le volte prima di eseguire il corpo del ciclo;

• L’incremento costante è un’istruzione di assegnamento che va eseguita alla fine del ciclo.

Es: Stampare il saldo dopo un certo numeri di anni.

for(int i=1; i<= numberOfYears; i++)

Il corpo del ciclo verra eseguito anche quando i= numberOfYears

{double interest= balance*rate/100;

balance= balance+ interest;

}

Algoritmi comuni

Somma Scanner in = new Scanner(system.in);

double total = 0; //totale corrente

//hasNextDouble while ( in.hasNextDouble() )

metodo predicato della classe {

Scanner che resta vero finché il double input = in.nextDouble(); //la variable input conterrà il valore double che verrà inserito dall’utente tramite tastiera

numero inserito è double total = total + input; //Assegno alla variabile total la somma tra il valore corrente di total e l'input corrente

}

Media double total = 0; // totale corrente

int count = 0; //variabile contatore che tiene conto del numero dei valori inseriti

while (in.hasNextDouble() )

{ double input = in.nextDouble();

total = total + input; count++; }

double average = 0; //variabile double per memorizzare la media

if (count > 0)

{ average = total / count; }

}

Contare quanti input soddisfano una int shortWords = 0; //variabile contatore

condizione (Matches) while ( in.hasNext() ) //metodo predicato che continua fino a quando trova un carattere

{ String input = in.next();

//codice che trova parole con al if (input.length() <= 3)

massimo tre lettere { shortWords++; } //incremento di shortWords

}

primo Matches

Trovare il e restituirlo boolean found = false; //variabile Booleana che quando diventa vera mi fa uscire dal ciclo

String str = “Hello”;

//codice che restituisce la prima int position = 0;

lettera minuscola che trova nella while ( !found && position < str.length() )

stringa analizzata { char ch = str.charAt(position);

if ( Character.isLowerCase(ch) ) //metodo predicato che dice se il carattere è minuscolo

{ found = true; } // così posso uscire dal ciclo appena trovo il match

else { position++; }

}

Massimo double largest = in.nextDouble(); //massimo corrente che inizialmente è il primo valore dato in input

while ( in.hasNextDouble() )

{ double input = in.nextDouble();

if (input > largest) // input diventa il nuovo massimo corrente

{largest = input; }

}

Minimo double smallest = in.nextDouble(); //minimo corrente che inizialmente è il primo valore dato in input

while ( in.hasNextDouble() )

{ double input = in.nextDouble();

if (input < smallest) // input diventa il nuovo minimo corrente

{smallest = input; }

}

numeri adiacenti

Testare se due sono int input = in.nextInt();

uguali while ( in.hasNextInt() )

{ int previous = input; //definisco una variabile previous che memorizza input appena letto

input = in.nextInt(); //la variabile input contiene il nuovo input

if (previous == input)

{ System.out.println("Duplicate input"); }

}

fino quando non

Eseguire programma boolean valid = false;

viene trovato un match while ( !valid )

{ System.out.print ("Please enter a positive value < 100:");

//inserire valore minore di 100 double input = in.nextDouble();

if ( input > 0 && input < 100 )

{ valid = true; }

else

{ System.out.println("Invalid input."); }

}

Ciclo e mezzo boolean done = false;

while ( !done )

{ String input = in.next();

if (input.equals("Q")) //Q è un valore sentinella che quando viene inserito fa terminare il programma

{ done = true; }

else

{... // Process data.}

}

Cicli innestati Triangle.java

Quando il corpo di un ciclo contiene un altro ciclo i

due cicli si dicono innestati. This class describes triangle objects that can be displayed

as shapes like this:

Es: []

for(int i = 1; i<=3; i++ ) [][]

{ for (int j = 1; j<=4; j++ ) [][][]

{ print “*”}

System.out.println(); public class Triangle

} { private int width; //numero di righe

Se la condizione del for esterno è vera allora eseguo public Triangle(int aWidth)

il suo corpo in cui è presente un altro ciclo for interno { width = aWidth; }

che deve essere eseguito. Dopo si va a capo e si

torna al for esterno ripetendo il tutto finché la //Metodo toString che restituisce ogg ti tipo stringa(il triangolo)

condizione è vera. public String toString()

{ String r = "";

for (int i = 1; i <= width; i++) // Ciclo sulle righe

{ for (int j = 1; j <= i; j++) // Ciclo su cosa stampare

in ogni riga

{ r = r + “[]"; }

r = r + "\n";

}

return r;

}

}

Numeri Random Die.java

Si può introdurre casualità in un programma

invocando un generatore di numeri casuali. Si può import java.util.Random;

definire un oggetto di classe Random sul quale si public class Die

possono invocare due metodi: { private Random generator;

nextInt(a); private int sides;

• nextDouble();

• public Die(int s)

Es: { sides = s;

Random generator = new Random(); generator = new Random(); }

int n = generator.nextInt(a); // 0 <= n < a public int cast()

double x = generator.nextDouble(); // 0 <= x < 1 { int n = generator.nextInt(sides); // 0 <= n < sides

return 1 + n; }

}

Array e Vettori (Capitolo 7)

Def: Gli array, in Java, sono il meccanismo fondamentale per realizzare raccolte di più valori.

una sequenza di valori del medesimo tipo,

Un array contiene, quindi, cioè omogenei.

Dichiarazione e utilizzo di Array

- Il numero di elementi costituisce la lunghezza dell’array;

—> new double[10]

- Il tipo di una “variabile array” è uguale al tipo degli elementi che saranno memorizzati nell’array,

seguito da una coppia di parentesi quadre, [ ]. Il tipo è double [ ], perché gli elementi sono di tipo

double. —>double[ ] values; // dichiarazione

- Quando si dichiara una variabile di tipo array, questa non è ancora inizializzata: bisogna

Dettagli
Publisher
A.A. 2018-2019
37 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Ludonora di informazioni apprese con la frequenza delle lezioni di Fondamenti di informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Padova o del prof Pini Maria Silvia.