Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - devilicecream

Pages: 1 [2] 3
16
Java / Re:Semplice Applet, copiata identica da due manuali, non funziona
« on: February 03, 2017, 06:21:13 AM »
Mai lavorato con applet java su browser purtroppo (o per fortuna!). Considera che è una tecnologia che sta sparendo, non la trovi più praticamente da nessuna parte.
Il mio consiglio è, almeno che non ti venga richiesto esplicitamente o per ragioni didattiche, passa a una soluzione Java server-side/Javascript client side!

17
Progetti Comuni / Re:Sviluppo dei Tools per la distro
« on: January 29, 2017, 10:20:22 PM »
Sembra interessante! Solito consiglio: metti il codice su github e posta il link qui, così che possiamo partecipare tutti insieme allo sviluppo di questo tool :)

18
Java / Re:Creare una sorta di "goto" uscendo da un if-else
« on: January 24, 2017, 03:51:49 AM »
Purtroppo non tutti gli autori dei libri sono bravissimi a trasmettere le informazioni, specie quando si tratta di argomenti tecnici, che non sono proprio semplici ne da acquisire, ne da trattare.
Finchè non inventeranno la trasmissione di informazioni brain to brain, dobbiamo purtroppo arrangiarci con le risorse che abbiamo: libri, corsi online, corsi fisici e l'aiuto delle persone su internet.
Anche io, quando ero alle prime armi, avevo difficoltà a disegnarmi in mente gli algoritmi dei programmi che sviluppavo. È una cosa che viene con il tempo e con l'esperienza, ma solo se ci si impegna a migliorarsi con le risorse a disposizione. Non certo se si abbandona perchè un libro è troppo complicato da leggere.
Non esiste una regola generale che dice che in Java gli errori vanno gestiti tramite eccezioni e non a priori. Anzi, un approccio del genere è spesso deleterio nei confronti delle performance dei programmi. La questione varia caso per caso, e soprattutto bisogna sapere come utilizzare i try...catch all'interno del flusso dei programmi (quindi all'interno di eventuali cicli o ricorsioni).
Secondo me hai bisogno di rivedere un po' di teoria, se non riesci a controllare il flusso del programma senza il goto. La maggior parte dei linguaggi moderni non ha il costrutto goto proprio per evitare di incorrere in bad practices e per indurre gli sviluppatori a scrivere dei programmi ben strutturati.
Continua a provare e a studiare, vedrai che ce la farai!

19
Java / Re:Creare una sorta di "goto" uscendo da un if-else
« on: January 19, 2017, 12:15:31 AM »
Esatto, come ti scrivevo prima il problema è che stai utilizzando la .nextInt() nella maniera sbagliata, e quindi il programma non gestisce il caso in cui immetti un punto. Leggi la documentazione ufficiale della classe Scanner e cerca su stackoverflow (in inglese) come acquisire i caratteri numerici, ignorando gli input inattesi. Vedrai che riuscirai a risolvere il problema!

20
Java / Re:Creare una sorta di "goto" uscendo da un if-else
« on: January 18, 2017, 02:52:41 AM »
Credo che dovresti anche leggere la documentazione del modulo Scanner che contiene la funzione .nextInt() che stai usando per parsare l'input da tastiera.
Probabilmente il problema si verifica perchè la funzione .nextInt() genera un errore che non stai gestendo quando le passi un carattere non numerico.

21
Raspberry Pi / Re:[TOOL] Crea la tua distro per il Raspberry Pi
« on: January 18, 2017, 02:44:10 AM »
Dove nel repository (o nella cartella principale dell'archivio) c'è il file completo della licenza, il sunto all'inizio di ogni file è un plus in generale, non strettamente necessario che io sappia.
Come ti scrivevo, se usi github il passaggio di inserire il file di licenza completo non è necessario che lo faccia tu, ma lo fa github in automatico alla creazione di un nuovo repo, in base alla scelta della licenza che fai al momento della creazione.

22
Java / Re:Creare una sorta di "goto" uscendo da un if-else
« on: January 16, 2017, 10:02:36 PM »
Un'altra cosa, stai utilizzando un debugger per fare inspection a runtime delle variabili nello stack? Se usi Eclipse basta lanciare il programma con "Debug" invece che "Run" e dovrebbe attaccarti automaticamente il processo al debugger.
Poi basta usare dei breakpoint dove avvengono le cose "strane" per vedere in quel momento quali sono i valori contenuti nelle variabili.
Se avessi usato il debugger sicuramente ti saresti accorto che anche se dai a r il valore 5.1, nella variabile verrà inserito il valore 5, perchè essendo un intero non supporta i valori decimali.

23
Java / Re:Creare una sorta di "goto" uscendo da un if-else
« on: January 16, 2017, 09:50:58 PM »
Non so bene come java gestisca la input.nextInt(), ma sicuramente se il valore di ritorno lo metti in un int non è possibile che ci sia un valore floating point li dentro!
Se vuoi che sia possibile avere r, i e g come floating point devi utilizzare delle variabili float, e una funzione diversa da input.nextInt() per prenderli dallo standard input.
Per quanto riguarda la verifica che fai, anche avendo i valori come floating point stai facendo una cosa assurda ed inefficiente: indipendentemente dal cast da int a stringa, che come efficienza varia da linguaggio a linguaggio, quando vai a cercare il punto nella stringa stai sicuramente eseguendo un algoritmo O(n), dove n è la lunghezza della stringa.
Questo è incredibilmente più inefficiente di fare un semplice modulo 1 (var % 1) per ottenere la parte decimale e poi semplicemente verificare che questa sia uguale a 0.


Io credo che più che focalizzarti su un corso per un linguaggio specifico, dovresti guardare prima gli algoritmi di base, magari con esempi in linguaggio C. Saranno argomenti molto teorici all'inizio, ma ti assicuro che una volta imparati bene ti serviranno per qualunque linguaggio e applicazione andrai a sviluppare in futuro.

24
Raspberry Pi / Re:[TOOL] Crea la tua distro per il Raspberry Pi
« on: January 16, 2017, 11:18:29 AM »
La forza di github (o bitbucket o qualunque soluzione simile) è proprio questa! Anche se gli script non sono completi e funzionanti nel 100% dei casi, pubblicandoli aprite anche ad eventuali contributi da parte degli altri, ed evitate di fare il lavoro due volte!
Immaginate se dario avesse pubblicato il suo script, invece che scriverne uno suo da capo, davenull avrebbe potuto forkare quello di dario e farci le modifiche che gli sembravano necessarie, e magari poi mandare una pull request a dario perchè mergiasse le sue modifiche nel repo principale.
Invece di scrivere il mio, io avrei potuto prendere il risultato del vostro lavoro, aggiungerci delle mie modifiche e contribuire anch'io!
Vi suggerisco di pubblicare tutto quello che fate su github, anche se potenzialmente incompleto.
Per quanto riguarda le licenze, al momento della creazione di un nuovo repo pubblico github vi da la possibilità di scegliere la licenza che preferite, senza che dobbiate nemmeno andare a cercarvi il testo ed aggiungerlo al repo lo aggiunge lui in automagico!

25
Java / Re:Creare una sorta di "goto" uscendo da un if-else
« on: January 16, 2017, 11:10:28 AM »
D'accordissimo con davenull e dario sul fatto di fare programmi modulari e object-oriented, quindi divisi in classi.
Se il problema però è solo di non chiedere da capo i primi due dati, basta letteralmente spostare la riga del while 4 righe più sotto, dopo aver salvato il valore di i ma prima di chiedere g.
Come utilizzare i cicli al posto dei goto per evitare algoritmi non strutturati è una delle basi della programmazione moderna!
Hai mai letto documentazione o un libro sugli algoritmi di base e le loro implementazioni?

26
Raspberry Pi / Re:[TOOL] Crea la tua distro per il Raspberry Pi
« on: January 15, 2017, 02:49:49 AM »
Pubblicalo anche su github!

27
Java / Re:Creare una sorta di "goto" uscendo da un if-else
« on: January 15, 2017, 02:33:10 AM »
Secondo il mitico Dijkstra, il goto è un comando che non bisognerebbe mai utilizzare, perchè porta a diversi punti di uscita negli algoritmi e genera facilmente "spaghetti code".
Gli amici Bohm e Jacopini hanno inoltre dimostrato un teorema secondo cui qualunque programma scritto utilizzando il goto è riscrivibile senza di esso.
Nel tuo caso è abbastanza semplice:

Code: You are not allowed to view links. Register or Login
int isGValid = 0;
while (!isGValid) {
    System.out.print("Immetti r: ");
    int r = input.nextInt();
    System.out.print("Immetti i: ");
    int i = input.nextInt();
    System.out.print("Immetti g: ");
    int g = input.nextInt();
    if (g > 0) {
        isGValid = 1;
        // Tutto il resto del codice
    } else {
        System.out.print("Valore di g non valido!");
    }
}


28
Python / Re:metodo __cmp__
« on: January 15, 2017, 02:14:45 AM »
Yep, hai ragione! Per qualche motivo pensavo che non stessi recuperando i valori numerici dal dizionario ma comparando direttamente le due stringhe!

29
Raspberry Pi / Re:[TOOL] Crea la tua distro per il Raspberry Pi
« on: January 07, 2017, 04:51:57 PM »
Molto utile! Ricordo di aver riscontrato anch'io il problema della /etc/udev/rules.d/... quando sperimentavo le prime volte con la creazione di immagini per il raspi.
Poi scrissi un piccolo bash script che faceva la cancellazione e un paio di altre ottimizzazioni pre-dd in automagico (non so che fine abbia fatto  ::) ).
Ho visto che hai incluso un tuo tool nella distro UrbanLabs. È open source? Dove lo trovo?

30
Python / Re:metodo __cmp__
« on: January 07, 2017, 04:36:37 PM »
You are not allowed to view links. Register or Login
Grazie ma la gestione delle stringhe in python mi era già chiara. Sapevo per esempio che A < B < C. Quello che io intendevo era perché l'espressione con il > ritorna 1 e quella con il < invece -1. E dato che esegue 1<2 ritorna vero
Il tuo codice non esegue 1<2, visto che compara i valori dell'attributo "valore" dei due oggetti, ovvero "Asso" e "Due".
Quello che succede nel tuo codice è che lui esegue "Asso" < "Due" e, per quello che ti ho spiegato prima, il risultato è True, perchè "Asso" è lessicograficamente inferiore a "Due". Quel codice non ha alcuna idea che "Asso" corrisponde ad 1 e "Due" a 2.
Come scritto nello scorso commento, se vuoi che vengano comparati i valori numerici, ti conviene dare alla classe Carta due attributi: uno numerico per il valore e una stringa per il nome della carta. Quindi nel metodo __cmp__ compari i valori numerici.


Se poi la domanda invece è come funziona il metodo __cmp__, quella è un'altra convenzione di python. Quando vengono utilizzati gli operatori di comparazione, infatti, l'interprete chiama la funzione __cmp__ per determinare se il primo argomento è maggiore del secondo (la funzione deve ritornare 1), se sono uguali (la funzione deve tornare 0), o se il secondo è maggiore del primo (la funzione deve ritornare -1). Sovrascrivendo la funzione in una classe si può implementare un metodo di comparazione di due oggetti di quella classe (o derivate) a piacere dello sviluppatore.

Pages: 1 [2] 3