15 ottobre 2015 - Server users.dimi.uniud.it

Laboratorio di Programmazione
Lezione 2
Cristian Del Fabbro
Prossima lezione
GIOVEDÌ 29 OTTOBRE 14:00
Input da tastiera
package input;
import java.io.*;
public class Input {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Inserisci a: ");
String linea1 = in.readLine();
System.out.print("Inserisci b: ");
String linea2 = in.readLine();
int a = Integer.parseInt(linea1);
int b = Integer.parseInt(linea2);
System.out.println( a * b );
}
}
Salto condizionale (if)
L'istruzione if ha la sintassi:
if ( condizione ) {
// istruzioni da eseguire se la condizione è vera
} else {
// istruzioni da eseguire se la condizione è false
}
n.b. la parte “else { … }” è opzionale
Esempio
if ( k <= max ) {
System.out.println(k + “ è minore o uguale a “ + max);
} else {
System.out.println(k + “ è maggiore di “ + max);
}
Esercizi
Scrivere un programma che dati in input due numeri
interi determina quale dei due ha il valore più alto.
Scrivere un programma che preso in input un numero, ne
calcola il resto della divisione con 4:
- se il resto è 0 scrive “il resto è zero”;
- se il resto è 1 scrive “il resto è uno”;
- se il resto è 2 scrive “il resto è due”;
- se il resto è 3 scrive “il resto è tre”.
Switch
switch (a) {
case 1:
// fai qualcosa
break;
case 2:
// fai qualcosa
break;
case default:
// fai qualcosa
break;
}
Esercizio
Scrivere un programma (usando switch) che preso in
input un numero, ne calcola il resto della divisione con 4:
- se il resto è 0 scrive “il resto è zero”;
- se il resto è 1 scrive “il resto è uno”;
int i = 0;
while (i < 10) {
System.out.println(i);
i = i + 1;
}
- se il resto è 2 scrive “il resto è due”;
- se il resto è 3 scrive “il resto è tre”.
while
while (condizione) {
// istruzioni da eseguire
}
Finché la condizione è vera, verranno eseguite le
istruzioni
Esempio di while
int i = 0;
while (i < 10) {
System.out.println(i);
i = i + 1;
}
Esercizio
Scrivere un programma che visualizzi i numeri da 10 a
100.
Scrivere un programma che visualizzi i numeri pari da 10
a 100 (senza usare l'if ...)
Scrivere un programma che calcola la somma dei primi
100 numeri primi utilizzando il while.
Scrivere un programma che preso in input 10 numeri
scrive se ogni numero è pari o dispari.
for
for (inizializzazione; controllo; incremento) {
// fai qualcosa
}
Esempio
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
Esercizi
Convertire i programmi scritti con il while utilizzando il for.
Scrivere un programma che visualizzi i numeri multipli di 5
da 75 a 15 (in ordine decrescente).
Dati 10 numeri da tastiera, restituisce il valore più grande
e il più piccolo.
Scrivere un programma che dato un numero, determina se
è primo o no (un numero si dice primo se è divisibile solo
per 1 e per se stesso)
for annidati
for (int i = 1; i <= 4 ; i++) {
for (int j = 1; j <= 6; j++) {
System.out.print("*");
}
System.out.println();
}
Cosa produce questo pezzo di codice?
Esercizi
Scrivere un programma che stampa, per tutti i numeri da
1 a 100, se il numero è primo oppure no.
Scrivere un programma che stampa, per tutti i numeri da
1 a 100, il fattoriale del numero.
Funzioni
Una funzione (o metodo o procedura o sottoprogramma o
...) è un pezzo di codice che dati alcuni parametri fà
“qualcosa” e poi restituisce un risultato.
Ci sono due momenti importanti:
- la dichiarazione/implementazione della funzione
- l'utilizzo della funzione (di solito più volte)
Regola personale: se un pezzo di codice lo devo scrivere
due volte (a meno dei nomi delle variabili), quel pezzo di
codice diventa una funzione!
Dichiarazione della funzione
Durante la dichiarazione si stabiliscono:
- il numero, l'ordine e il tipo dei parametri
- il tipo del valore restituito (se presente)
- il corpo della funzione
- varie ed eventuali (… ?!?)
Esempio di funzione
public static int max(int a, int b) {
if (a < b) {
return b;
} else {
return a;
}
}
Qual è il nome della funzione? Quanti, quali e di che tipo
sono i parametri? Cosa restituisce la funzione?
Void
Una funzione deve SEMPRE restituire un valore?
Se è stato dichiarato un tipo la risposta è SI.
Se non si vuole restituire un valore esiste il tipo primitivo
“void” (questo particolare tipo di funzioni vengono dette
“procedure”).
public static void print_max(int a, int b) {
System.out.println("Il massimo è : " + max(a, b));
}
Altri esercizi
Scrivere una funzione che dato n, determinare il più
grande numero x tale che x * x <= n.
Scrivere un programma che dato n, determina la parte
intera della radice cubica di n (suggerimento: ripensa
all'esercizio precedente…)
Dati due numeri n e m (minori di 10), scrivere una
funzione che ritorna una sequenza palindroma che va da
dal più piccolo al più grande e poi ritorna al più piccolo
(es. per n=2, m=6 output: 234565432; per n=7, m=5 output:
56765).
Altri esercizi
Scrivere una funzione che dati due numeri, ne calcola il
massimo comune divisore.
Scrivere una funzione che dato un numero restituisce
true se è primo, false altrimenti (quindi il tipo resituito è
un “bool”).
Scrivere una procedura che dato in input un numero n,
stampa (usando “*”) a schermo tutti i quadrati di area
minore o uguale a n.
Altri esercizi
Scrivere una procedura che dato in input un numero n,
stampa (usando “*”) a schermo tutti i quadrati di area minore
o uguale a n il cui lato è un numero primo.
Scrivere una procedura che dato in input un numero n,
stampa (usando “*”) a schermo tutti i quadrati di area minore
o uguale a n il cui lato è un numero primo oppure è divisibile
per 5.
Scrivere una procedura che dato in input un numero n,
stampa (usando “*”) a schermo tutti i quadrati di area minore
o uguale a n il cui lato è un numero primo oppure è divisibile
per 5 ma non per 3.
Prossima lezione
GIOVEDÌ 29 OTTOBRE 14:00