Che succede?

nessun articolo, nessun esercizio svolto, nessun problema?

State studiando altre materie o tutto va così bene con sistemi informativi che non avete alcun bisogno di chiarimenti?

Non avete neanche voglia di confrontare la vostra soluzione con quella di altri?

Sia chiaro a tutti che tutto ciò che viene scritto in questo blog non verrà in alcun modo usato per la valutazione nè influirà in alcun modo su di essa. Siete assolutamente liberi di scrivere, esporre i vostri dubbi, problemi e porre domande (che non sono mai stupide).

11 Commenti a “Che succede?”

  1. jessica scrive:

    salve prof. volevo dei chiarimenti sull’esercizio:
    import java.util.Scanner;
    public class Confronto
    {
    public static void main(String args[])
    {
    Scanner input=new Scanner(System.in);
    String continua= “s”;
    while(continua==”s”||continua==”S”)
    {
    int a;
    int b;

    System.out.print(”inserisci un numero: “);
    a=input.nextInt();

    System.out.print(”inserisci un numero: “);
    b=input.nextInt();

    if(a==b)
    {
    System.out.println(a+”=”+b);
    }
    else
    System.out.println(” i due numeri sono diversi!”);
    System.out.print(”vuoi continuare? ” );
    continua=input.nextLine();
    }
    }
    }
    il mio problema è che non funziona l’opzione “vuoi continuare?”
    in attesa di una sua celere risposta le invio i miei più cordiali saluti.
    jessica d’ippolito catalano

  2. jessica scrive:

    volevo capire anche il testo dell’esercizio 4.21:
    creare un programma che determina il vincitore di un concorso aziendale, deve determinare il maggior numero di unità vendute da ciascun rappresentante. il rappresentante che ha venduto più unità vince. il programma richiede in input una serie di 10 valori e ne determina il maggiore. io ho svolto l’esercizio fino a questo punto:
    import java.util.Scanner;
    public class Vincitore
    {
    private int largest=200;
    private int numero;
    private String nome;
    public String calcola()
    {
    Scanner input=new Scanner(System.in);
    int i;

    for (i=1;i<=10;i++)
    {
    System.out.print(”rappresentante di “);
    String nome=input.nextLine();
    System.out.print(”unità vendute: “);
    int numero=input.nextInt();
    System.out.println(”");
    }
    dopo di che non riesco a continuare.
    jessica d’ippolito catalano

  3. cossentino scrive:

    Riguardo al quesito del 17 aprile 2009 alle 16:46
    Basta modificare la condizione del while nella seguente:

    while(continua.equalsIgnoreCase(”s”))

    e poi usare input.next() al posto di input.nextLine().

    Questi cambiamenti fanno funzionare perfettamente il programma ma non costituirebbero un errore grave in sede di esame.
    Ben più importante è invece la mancanza di qualunque strutturazione. Non c’è neanche un metodo.
    Più volte ho ribadito che il main deve servire SOLO ad instanziare gli oggetti necessari ad avviare il comportamento del sistema.
    Idealmente un buon main contiene la dichiarazione di un oggetto, la sua instanziazione e l’invocazione del suo metodo che da inizio al programma.

    Nell’esempio proposto da lei trovo addirittura la dichiarazione di variabili intere nel ciclo while. Questo è un grave errore. Ad ogni esecuzione del ciclo vengono dichiarate nuovamente. Non ha senso, è concettualmente errato.
    Le variabili vanno dichiarate all’interno della classe se sono attributi della classe stessa altrimenti nella parte dichiarativa dei metodi che le usano. Mai in un ciclo.

  4. cossentino scrive:

    Riguardo all’esercizio proposto il 17 aprile 2009 alle 16:53:
    le consiglio di dichiarare un array di dieci elementi e usarlo per memorizzare il numero di unità vendute da ciascun venditore (il nome potrebbe essere vendite).
    Probabilmente potrebbe dichiarare tale array a livello di classe.
    Poi potrebbe dichiarare un metodo che legge i valori di unità vendute di ogni venditore e lo memorizza nell’array vendite. Per far ciò potrebbe usare un ciclo for da 0 a nove. In ogni iterazione del ciclo chiederà il numero di unità vendute dal venditore in questione (i-esimo) e memorizzerà tale numero (intero) nella corrispondente posizione dell’array (vendite[i]).

    Poi potrebbe dichiarare un metodo che cerca nell’array vendite l’indice corrispondente al venditore che ha venduto di più.
    Inizializzi la variabile max_vendite=0. Tale variabile conterrà il numero di unità vendute dal miglior venditore.
    Inizializzi la variabile num_venditore=0. Tale variabile conterrà il numero che identifica il venditore (0-9 perchè i venditori sono 10).
    Nuovamente potrebbe usare un ciclo for. Tale ciclo legge il valore di vendite[i] e lo memorizza in max_vendite se è maggiore del valore attuale di max_vendite. In tal caso memorizza anche il numero del venditore (cioè il valore dell’iteratore i) nella variabile num_venditore.
    Alla fine del ciclo for (fuori da esso) lei avrà quindi una variabile max_vendite che contiene il num massimo di unità vendute e una variabile num_venditore che contiene il numero (da 0 a 9) che identifica il venditore corrispondente.
    Basterà quindi stampare i risultati a video.

    Dal main potrà invocare prima il metodo che legge le quantità di unità vendute e poi il secondo che calcola il miglior venditore

  5. jessica scrive:

    salve a tutti vorrei proporre un esercizio al quale non riesco a trovare
    una buona soluzione.

    Scrivere un’applicazione che proponga il gioco di indovinare un numero:

    il programma sceglie un numero da 1 a 1000 poi visualizza “indovina un

    numero da 1 a 1000″. se in numero inserito da tastiera èsi deve

    visualizzare riprova con uno più basso; se invece l’uguaglianza è

    soddisfatta visualizzare “complimenti vuoi continuare?”.

    il mio problema è che nn riesco a capire quale istruzione usare affinchè il

    programma mi dia un intero casuale compreso tra uno e 1000.

  6. jessica scrive:

    scusate ma il commento che ho inserito precedentemente non è corretto.

    ripeto:
    Scrivere un’applicazione che proponga il gioco di indovinare un numero

    da uno a mille:

    il programma sceglie un numero da indovinare nell’intervallo specificato

    poi stampa a video “indovina il numero da 1 a 1000″

    il giocatore deve inserire un numero e premere invio.

    se il numero inserito dal giocatore è uguale a quello scelto dal

    programma allora si stampa a video complimenti vuoi continuare?

    altrimenti se il numero è>rispetto a quello scelto si stampa

    inserisci un numero più piccolo ; in caso contrario si deve stampare

    inserisci un numero più grande;

    io nn riesco a capire quale istruzione usare affinchè il programma

    scelga l’intero in modo casuale da confrontare

    con il numero dato in input dal giocatore.

  7. cossentino scrive:

    Il comando che genera un numero random è: Math.random()
    Per generare un intero da 1 a 10 può fare così:

    Double parziale = new Double(10*Math.random());
    int casuale = parziale.intValue();

    Il numero casuale è un intero random.

    Abbiamo già visto questo comando (ed esattamente le righe di codice che le riporto) nell’esercizio in cui si dovevano proporre domande sulle tabelline all’utente.
    L’esercizio è stato svolto in aula il 7-aprile (vedasi sito del corso) e il codice relativo si trova qui.

  8. Alberto11 scrive:

    Gentile professore , parlo a nome mio e di buona parte dei miei colleghi che hanno sostenuto l’esame di giovedì 25 Giugno , a malincuore le rispondiamo che l’esercizio n°2 su Java questa volta era più difficile del solito , non per l’utilizzo dei metodi ma per la complessità nel suo insieme , ragion per cui non siamo in grado di darle una soluzione precisa coma da lei richiesto all’esercizio d’esame , d’altron come noterà gran parte di noi non l’ha nemmeno svolto o non pensa possa in ogni caso aver fatto bene. Saluti, attendiamo un suo saggio consiglio oltre quello di studiare intensamente , ovviamente.

  9. cossentino scrive:

    l’esercizio non era affatto difficile. Vi siete probabilmente fasciati la testa prima di affrontarlo con calma.
    L’esercizio si basava su due esempi fatti a lezione. Il primo prevedeva il calcolo della somma dei numeri pari e dispari di un array, eccone il codice (gruppo di slide 12-array):

    public class Somma_alternata
    {
    private int[] vettoreInteri={1,12,4,6,7,8,10,17};

    public void somma()
    {
    int somma=0;
    for (int i=0; i {
    if ((i%2)==0)
    somma = somma+vettoreInteri[i];
    else
    somma = somma-vettoreInteri[i];
    //La somma è il risultato dell'operazione
    //1-12+4-6+7-8+10-17=-21
    }
    System.out.println("La somma cercata è: "+somma);
    }
    }

    Nel compito si doveva fare la somma dei positivi e negativi e man mano contarli. Poi bastava dividere la somma per il numero di interi (positivi o negativi) e l'esercizio era fatto.

    Ovviamente l'input dei numeri interi si poteva fare come studiato a lezione (gruppo di slide 13-numeri_e_caratteri).
    Infine il ciclo che chiede se stampare i risultati, i numeri o uscire potrebbe essere realizzato con una sentinella in un ciclo while o do/while (gruppo di slide 14_istruzioni di controllo 2).

    Passiamo ora ad una possibile soluzione. Un'idea di algoritmo (da mettere nel main) potrebbe essere:

    int scelta=1
    leggi_numeri; \\metodo che legge i numeri da tastiera e li mette in un array
    While (scelta !=0)
    Read(scelta); \\legge la scelta dell’utente 1(stampa risultati), 2(stampa numeri), 0 (esci)
    Se scelta = 1 allora
    calcola_media; //metodo che calcola i risultati e li stampa
    Se scelta = 2 allora
    stampa_numeri; //metodo che stampa i numeri dell’array
    Fine While;

    Il metodo leggi_numeri potrebbe essere (pseudo codice):

    // per prima cosa leggo i 10 numeri da tastiera e li memorizzo in un array
    Per i da 0 a 9
    Read (unintero) //leggo da tastiera un intero
    numeri [i]=unintero;
    Fine ciclo Per

    Il metodo calcola_media potrebbe essere (pseudo codice):

    //in questo ciclo calcolo il numero di positivi/negativi e le loro somme
    Per i da 0 a 9
    Se numeri[i]>0 allora //se il numero contenuto nella posizione i-esima è positivo
    incrementa num_pos; //la variabile num_pos contiene il totale di numeri positivi
    somma_pos=somma_pos+numer[i]; //aggiungo il numero alla somma dei positivi
    Fine Se

    Se numeri[i]<0 Allora //se il numero contenuto nella posizione i-esima è positivo
    incrementa num_neg; //la variabile num_neg contiene il totale di numeri negativi
    somma_neg=somma_neg+numer[i]; //aggiungo il numero alla somma dei negativi
    Fine Se
    Fine ciclo For

    media_pos= somma_pos/num_pos; //calcolo la media dei numeri positivi
    media_neg=somma_neg/num_neg; //calcolo la media dei numeri negativi

    //in questo ciclo stampo i risultati
    Stampa (“i numeri maggiori di zero introdotti sono”+num_pos);
    Stampa (“i numeri minori di zero introdotti sono”+num_neg);
    Stampa(“la media degli interi positivi è: “+media_pos);
    Stampa(“la media degli interi negativi è: “+media_neg);

    Il metodo stampa_numeri potrebbe essere:
    Per i da 0 a 9
    Stampa (numeri[i]
    Fine ciclo Per

    Infine il codice java corrispondente è:

    import java.util.Scanner;

    public class Calcola_media_interi
    {
    private int [] numeri=new int [10];
    private int num_pos=0, num_neg=0, somma_pos=0, somma_neg=0;
    private double media_pos, media_neg;

    public void leggi_numeri()
    {
    Scanner in = new Scanner(System.in);
    for (int i=0; i< =9; i++)
    {
    System.out.print("Introduci un numero intero: ");
    numeri[i] = in.nextInt();
    }
    }

    public void calcola_media()
    {
    for (int i=0; i<=9; i++)
    {
    if (numeri[i]>0)
    {
    num_pos++;
    somma_pos=somma_pos+numeri[i];
    }
    else
    if (numeri[i]<0)
    {
    num_neg++;
    somma_neg=somma_neg+numeri[i];
    }
    }
    media_pos=(double) somma_pos/(double) num_pos;
    media_neg=(double) somma_neg/(double) num_neg;

    System.out.println(”i numeri maggiori di zero introdotti sono “+num_pos);
    System.out.println(”i numeri minori di zero introdotti sono “+num_neg);
    System.out.println(”la media degli interi positivi è “+media_pos);
    System.out.println(”la media degli interi negativi è “+media_neg);
    }
    public void stampa_numeri ()
    {
    for (int i=0; i<=9; i++)
    {
    System.out.println(numeri[i]);
    }
    }

    public static void main (String args[])
    {
    int scelta=1;
    Calcola_media_interi miocalcolo = new Calcola_media_interi();
    miocalcolo.leggi_numeri();
    while (scelta != 0)
    {
    System.out.print(”Introduci 1 per risultati, 2 per elencare i numeri, 0 per uscire: “);
    Scanner in = new Scanner(System.in);
    scelta = in.nextInt();
    if (scelta ==1)
    miocalcolo.calcola_media();
    if (scelta == 2)
    miocalcolo.stampa_numeri();
    }
    }
    }

  10. Alberto11 scrive:

    La ringraziamo egregiamente professore ma deve considerare che in due ore giocano diversi fattori ed il fatto dell’attribuzione dei punti abbastanza sbilanciata sul java ci ha un po demoralizzati..provvederemo a studiare con attenzione e calma.

  11. cossentino scrive:

    Java ha preso circa il 50% del corso per questo i punti assegnati all’esercizio su java sono così tanti.
    Capisco che la parte di programmazione sia piuttosto difficile ma vi assicuro che c’è una strada sicura: esercitarsi. Fate esercizi, prendeteli dal libro, inventateli, chiedetemeli e poi pubblicate le vostre soluzioni per avere un feedback da me.
    buono studio

Lascia un Commento

Devi aver fatto il login per inviare un commento