Questi esercizi coprono una vasta gamma di concetti fondamentali in Java, dalla manipolazione di array e stringhe alla risoluzione di problemi complessi come l’ottimizzazione. Sono ideali per insegnare agli studenti come affrontare problemi reali utilizzando funzioni, migliorando la loro comprensione della programmazione strutturata e della logica algoritmica.
- Funzione per calcolare il valore assoluto di un numero intero
Scrivi una funzione che prende un intero e restituisce il suo valore assoluto.
Esempio: Input: -5 → Output: 5.
Obiettivo didattico: Insegnare il concetto di valore assoluto e l’uso di condizioni per gestire numeri negativi. - Confronto tra moduli di due numeri interi
Scrivi un programma che confronta i valori assoluti di due numeri interi.
Esempio: Input: 7, -10 → Output: -10.
Obiettivo didattico: Rafforzare il concetto di valore assoluto e introdurre il confronto tra valori. - Calcolo della differenza tra il massimo e il minimo
Scrivi una funzione che calcola la differenza tra il massimo e il minimo di tre numeri interi.
Esempio: Input: 5, 2, 8 → Output: 6.
Obiettivo didattico: Insegnare l’uso di condizioni per trovare massimi e minimi. - Funzione per convertire il tempo in secondi
Scrivi una funzione che converte ore, minuti e secondi in secondi totali.
Esempio: Input: 1, 30, 45 → Output: 5445.
Obiettivo didattico: Introdurre operazioni aritmetiche e conversioni di unità. - Trova il valore ripetuto tra tre numeri naturali
Scrivi una funzione che restituisce il valore ripetuto tra tre numeri o -1 se non ci sono ripetizioni.
Esempio: Input: 5, 3, 5 → Output: 5.
Obiettivo didattico: Insegnare l’uso di condizioni per identificare duplicati. - Conversione di un carattere al codice ASCII
Scrivi una funzione che restituisce il codice ASCII di un carattere.
Esempio: Input: ‘A’ → Output: 65.
Obiettivo didattico: Introdurre il concetto di codifica ASCII e la manipolazione di caratteri. - Funzione per cercare una lettera all’interno di una stringa
Scrivi una funzione che verifica se un carattere è presente in una stringa.
Esempio: Input: “banana”, ‘a’ → Output: true.
Obiettivo didattico: Insegnare l’uso di cicli e condizioni per la ricerca in stringhe. - Il codice ribelle
Scrivi una funzione che rimuove lettere consecutive ripetute in una stringa.
Esempio: Input: “abbacddc” → Output: “ac”.
Obiettivo didattico: Introdurre la manipolazione di stringhe e l’uso di cicli. - Funzione conta occorrenze di una lettera in una stringa
Scrivi una funzione che conta quante volte un carattere appare in una stringa.
Esempio: Input: “banana”, ‘a’ → Output: 3.
Obiettivo didattico: Rafforzare l’uso di cicli e condizioni per contare occorrenze. - Funzione somma elementi di un array
Scrivi una funzione che calcola la somma degli elementi di un array.
Esempio: Input: {1, 2, 3} → Output: 6.
Obiettivo didattico: Insegnare l’uso di array e cicli per operazioni matematiche. - Funzione per ordinare 3 variabili
Scrivi una funzione che ordina tre variabili in ordine crescente.
Esempio: Input: 5, 2, 7 → Output: 2, 5, 7.
Obiettivo didattico: Introdurre algoritmi di ordinamento semplici. - Ricerca di un elemento in una lista e identificazione dell’indice
Scrivi una funzione che cerca un elemento in un array e restituisce il suo indice.
Esempio: Input: [1, 2, 3, 4, 5], 3 → Output: 2.
Obiettivo didattico: Insegnare la ricerca lineare in array. - Calcolo dei divisori di un numero intero
Scrivi una funzione che conta i divisori positivi di un numero.
Esempio: Input: 12 → Output: 6.
Obiettivo didattico: Introdurre il concetto di divisori e l’uso di cicli. - Trova la parola più lunga in una lista di parole
Scrivi una funzione che restituisce la parola più lunga in un array di stringhe.
Esempio: Input: {“cane”, “elefante”, “giraffa”} → Output: “elefante”.
Obiettivo didattico: Insegnare la manipolazione di array di stringhe. - Funzione per calcolare il minimo in un array di interi
Scrivi una funzione che trova il valore minimo in un array.
Esempio: Input: {10, 3, 4, 7, -1} → Output: -1.
Obiettivo didattico: Rafforzare l’uso di cicli e condizioni per trovare valori estremi. - Funzione per sommare numeri inferiori a N
Scrivi una funzione che calcola la somma di tutti i numeri minori o uguali a N.
Esempio: Input: 5 → Output: 15.
Obiettivo didattico: Introdurre cicli e somme cumulative. - Scambio fruttato
Scrivi una funzione che simula il trasferimento di frutta tra due contenitori.
Esempio: Input: Contenitore A: (8, 10), Contenitore B: (2, 6) → Output: 4, 6.
Obiettivo didattico: Insegnare l’uso di condizioni per gestire limiti di capacità. - Funzione per calcolare il prodotto tra due numeri
Scrivi una funzione che calcola il prodotto di due numeri senza usare *.
Esempio: Input: 3, 4 → Output: 12.
Obiettivo didattico: Introdurre algoritmi alternativi per operazioni matematiche. - Equilibrio delle finanze di Robin Hood
Scrivi una funzione che bilancia la quantità di denaro tra due persone.
Esempio: Input: 100, 50 → Output: 75, 75.
Obiettivo didattico: Insegnare l’uso di condizioni per bilanciare valori. - Funzione per calcolare il fattoriale di un numero
Scrivi una funzione che calcola il fattoriale di un numero.
Esempio: Input: 5 → Output: 120.
Obiettivo didattico: Introdurre il concetto di ricorsione o cicli per calcoli matematici. - Funzione per calcolare il MCD
Scrivi una funzione che calcola il massimo comune divisore di due numeri.
Esempio: Input: 12, 18 → Output: 6.
Obiettivo didattico: Insegnare l’algoritmo di Euclide per il MCD. - Funzione i-esimo valore della sequenza di Fibonacci
Scrivi una funzione che calcola l’i-esimo valore della sequenza di Fibonacci.
Esempio: Input: 5 → Output: 5.
Obiettivo didattico: Introdurre la sequenza di Fibonacci e la ricorsione. - Funzione per controllare se un array è in ordine crescente
Scrivi una funzione che verifica se un array è ordinato in modo crescente.
Esempio: Input: [1, 2, 3, 4, 5] → Output: true.
Obiettivo didattico: Insegnare l’uso di cicli per verificare l’ordine. - Funzione che trasforma eleva ad una potenza ogni elemento dell’array
Scrivi una funzione che eleva a potenza i numeri pari in un array.
Esempio: Input: {4, 3, 5, 2, 7}, 2 → Output: {16, 3, 5, 4, 7}.
Obiettivo didattico: Insegnare la manipolazione di array e l’uso di condizioni. - Algoritmo di ordinamento per un array
Scrivi una funzione per ordinare un array in ordine crescente.
Esempio: Input: {5, 3, 4, 1, 2} → Output: {1, 2, 3, 4, 5}.
Obiettivo didattico: Introdurre algoritmi di ordinamento come il bubble sort. - Chiave dell’armonia
Scrivi una funzione che verifica se un numero è “armonioso”.
Esempio: Input: 123 → Output: true.
Obiettivo didattico: Insegnare l’uso di condizioni per verificare proprietà matematiche. - Funzione per calcolare la potenza
Scrivi una funzione che calcola la potenza di un numero.
Esempio: Input: 2, 3 → Output: 8.
Obiettivo didattico: Introdurre l’uso di cicli per calcoli matematici. - Funzione per trovare il più alto della classe
Scrivi una funzione che trova lo studente più alto in un array di altezze.
Esempio: Input: {“Diego”, “Maria”}, {173, 160} → Output: “Diego”.
Obiettivo didattico: Insegnare l’uso di array paralleli e condizioni. - Funzione per controllare se ci sono almeno 4 vocali diverse nella parola
Scrivi una funzione che verifica se una parola contiene almeno 4 vocali diverse.
Esempio: Input: “educazione” → Output: true.
Obiettivo didattico: Insegnare la manipolazione di stringhe e l’uso di condizioni. - Funzione per trovare l’indice del valore massimo in un array
Scrivi una funzione che trova l’indice del valore massimo in un array.
Esempio: Input: {10, 16, 3, 4} → Output: 1.
Obiettivo didattico: Rafforzare l’uso di cicli per trovare valori estremi. - Funzione per spostare verso sinistra gli elementi di un array
Scrivi una funzione che sposta gli elementi di un array a sinistra.
Esempio: Input: {4, 5, 10, 2, 7} → Output: {5, 10, 2, 7, 0}.
Obiettivo didattico: Insegnare la manipolazione di array e l’uso di cicli. - Funzione per stampare una sequenza di potenze
Scrivi una funzione che stampa le prime N potenze di un numero.
Esempio: Input: 2, 4 → Output: 2, 4, 8, 16.
Obiettivo didattico: Introdurre cicli per calcoli matematici. - Funzione per convertire un numero decimale in binario
Scrivi una funzione che converte un numero decimale in binario.
Esempio: Input: 10 → Output: “1010”.
Obiettivo didattico: Insegnare la conversione tra basi numeriche. - Funzione che trasforma gli elementi di un array
Scrivi una funzione che trasforma un array secondo regole specifiche.
Esempio: Input: {3, 7, 4, 6, 5} → Output: 24.
Obiettivo didattico: Insegnare la manipolazione di array e l’uso di condizioni. - Funzione “Anagramma”
Scrivi una funzione che verifica se due parole sono anagrammi.
Esempio: Input: “listen”, “silent” → Output: true.
Obiettivo didattico: Insegnare la manipolazione di stringhe e l’uso di array. - Verifica di un numero perfetto
Scrivi una funzione che verifica se un numero è perfetto.
Esempio: Input: 28 → Output: true.
Obiettivo didattico: Introdurre il concetto di numeri perfetti e l’uso di cicli. - Funzione per calcolare il resto intero di una divisione senza l’operatore modulo
Scrivi una funzione che calcola il resto della divisione senza usare %.
Esempio: Input: 14, 6 → Output: 2.
Obiettivo didattico: Insegnare algoritmi alternativi per operazioni matematiche. - Calcolo della cifra più significativa di un numero intero
Scrivi una funzione che trova la cifra più significativa di un numero.
Esempio: Input: 4567 → Output: 4.
Obiettivo didattico: Insegnare la manipolazione di numeri e l’uso di cicli. - Funzione per controllare se tutti i valori di un array sono compresi in un intervallo
Scrivi una funzione che verifica se tutti gli elementi di un array sono in un intervallo.
Esempio: Input: {7, 6, 10}, 4, 10 → Output: true.
Obiettivo didattico: Insegnare l’uso di cicli e condizioni per verificare proprietà. - Funzione per controllare se un numero è primo
Scrivi una funzione che verifica se un numero è primo.
Esempio: Input: 7 → Output: true.
Obiettivo didattico: Introdurre il concetto di numeri primi e l’uso di cicli. - Funzione di elevamento reciproco tra due numeri interi
Scrivi una funzione che calcola due potenze reciproche.
Esempio: Input: 2, 3 → Output: 8, 9.
Obiettivo didattico: Insegnare l’uso di cicli per calcoli matematici. - Funzione per cercare due duplicati in un array
Scrivi una funzione che verifica se ci sono almeno due duplicati in un array.
Esempio: Input: {1, 2, 3, 2, 6} → Output: true.
Obiettivo didattico: Insegnare l’uso di cicli per identificare duplicati. - Funzione trasformazione speculare dell’array
Scrivi una funzione che trasforma un array in modo speculare.
Esempio: Input: {1, 2, 3, 4} → Output: {5, 5, 5, 5}.
Obiettivo didattico: Insegnare la manipolazione di array e l’uso di cicli. - Funzione per trovare la sequenza più lunga di lettere consecutive uguali
Scrivi una funzione che, data una stringa di lettere, calcoli la lunghezza della sequenza più lunga di lettere uguali consecutive.
Esempio:
Input: “CCGGGAATCCCCTT” → Output: 4 (la lettera ‘C’ si ripete per 4 volte consecutive).
Obiettivi didattici: L’esercizio insegna agli studenti a iterare su stringhe, contare sequenze consecutive e gestire condizioni complesse. È un ottimo modo per rafforzare la comprensione delle strutture di controllo e delle operazioni su stringhe. - Funzione per calcolare il numero di cifre
Scrivi una funzione chiamata contaCifre che prenda in input un numero intero positivo e restituisca il numero di cifre presenti in esso.
Esempio: Input: 153 → Output: 3.
Obiettivi didattici: Questo esercizio introduce la manipolazione di numeri interi e l’uso di operazioni matematiche per estrarre cifre. Inoltre, può essere un’occasione per discutere l’efficienza di diversi approcci, come l’uso del logaritmo per determinare il numero di cifre. - Funzione per verificare coppie di lettere consecutive
Scrivi una funzione chiamata controllaDoppie che riceva in input una stringa e verifichi se contiene almeno due coppie di lettere uguali consecutive. La funzione deve restituire true se la condizione è soddisfatta, altrimenti false.
Esempio: Input: “accappatoio” → Output: true (contiene “cc” e “pp”).
Obiettivi didattici: L’esercizio aiuta gli studenti a iterare su stringhe e verificare condizioni specifiche. Inoltre, introduce il concetto di flag per tracciare lo stato durante l’iterazione, un’abilità utile in molti contesti di programmazione. - Funzione per rimozione di duplicati in un array di interi
Scrivi una funzione che, preso un array di numeri interi come input, elimini tutti i duplicati, mantenendo solo la prima occorrenza di ciascun valore. Gli elementi duplicati successivi devono essere sostituiti con il valore -1.
Esempio: Input: {1, 2, 3, 2, 4, 3, 5} → Output: {1, 2, 3, -1, 4, -1, 5}.
Obiettivi didattici: Questo esercizio insegna la gestione di array e duplicati, l’uso di strutture dati ausiliarie come HashSet e la modifica in-place di un array. È un’ottima introduzione alla manipolazione avanzata di array. - Funzione per controllare se due array contengono gli stessi interi
Scrivi una funzione che, dati due array di valori interi della stessa dimensione, determini se contengono gli stessi valori, con ogni valore ripetuto lo stesso numero di volte, anche se in ordine diverso.
Esempio: Input: A = {1, 4, 5, 0, -2}, B = {4, 1, -2, 5, 0} → Output: ‘si’.
Obiettivi didattici: L’esercizio introduce il confronto di array e l’uso di mappe per conteggiare le occorrenze. Inoltre, aiuta gli studenti a gestire casi limite, come la presenza di duplicati. - Cifre danzerine
Scrivi una funzione che controlli se un numero è “danzerino”, ovvero se le sue cifre alternano valori crescenti e decrescenti (o viceversa).
Esempio: Input: 1324 → Output: true (1 → 3 cresce, 3 → 2 decresce, 2 → 4 cresce).
Obiettivi didattici: Questo esercizio aiuta gli studenti a manipolare cifre numeriche e verificare pattern alternati. È un’ottima occasione per discutere l’uso di condizioni complesse e la gestione di sequenze. - Numero mistico
Scrivi una funzione che, data una sequenza di numeri, identifichi il “numero mistico”, ovvero quello che appare più spesso, ma in caso di pareggio, quello più vicino alla media.
Esempio: Input: [3, 7, 3, 9, 6, 7] → Output: 7.
Obiettivi didattici: L’esercizio introduce il calcolo di media e moda, oltre alla gestione di casi di pareggio. È un’ottima occasione per discutere l’uso di strutture dati per conteggi e la risoluzione di problemi complessi. - Funzione per la compressione di stringhe
Scrivi una funzione compressione_stringa che comprima una stringa utilizzando l’algoritmo di run-length encoding.
Esempio: Input: “AAAABBBCCDAA” → Output: “4A3B2C1D2A”.
Obiettivi didattici: Questo esercizio insegna la compressione di dati, l’iterazione su stringhe e la costruzione di stringhe risultato. È un’ottima introduzione agli algoritmi di compressione. - Funzione per il calcolo della potenza con gestione di esponente negativo
Scrivi una funzione che calcoli la potenza di un numero, gestendo anche esponenti negativi.
Esempio: Input: 2, -3 → Output: 0.125 (2^(-3) = 1/8).
Obiettivi didattici: L’esercizio introduce la gestione di esponenti negativi e l’uso di operazioni matematiche avanzate. È un’ottima occasione per discutere la gestione di casi opzionali e la precisione nei calcoli. - Funzione per controllare se una stringa è palindroma
Scrivi una funzione che determini se una parola è palindroma.
Esempio: Input: “radar” → Output: true.
Obiettivi didattici: Questo esercizio aiuta gli studenti a verificare la simmetria in stringhe e a usare indici per confrontare caratteri. È un’ottima introduzione alla manipolazione di stringhe e alla gestione di casi semplici e complessi. - Funzione per riempire uno zaino con più oggetti possibili
Scrivi una funzione che, dato il peso massimo di uno zaino e una lista di pesi degli oggetti, determini il massimo numero di oggetti che è possibile inserire senza superare il peso massimo.
Esempio: Input: 10, [4, 8, 3, 5] → Output: 2 (oggetti con pesi 4 e 3).
Obiettivi didattici: L’esercizio introduce la risoluzione di problemi di ottimizzazione e l’uso di algoritmi greedy. È un’ottima occasione per discutere la gestione di vincoli e la scelta di strategie algoritmiche.




