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