View Full Version : Programmare in C
||ElChE||88
01-03-2009, 21:57
Comunque con il C non ti fai male, impari a Programmare, con la P maiuscola.
Saper gestire puntatori, alloc memoria, ecc... è fondamentale per un buon programmatore!
Ancora?
woomacoder
01-03-2009, 22:00
Ancora?
Ancora cosa? :)
Comunque con il C non ti fai male, impari a Programmare, con la P maiuscola.
Saper gestire puntatori, alloc memoria, ecc... è fondamentale per un buon programmatore!
Proporrei un paragone :sofico:
http://www.lario3.it/images/Fumetti/Vari_per_blog/Latino.jpg
~FullSyst3m~
01-03-2009, 22:26
Più che altro per iniziare a farsi male. :sofico:
Già. Comunque ho implementato il costant folding nell'AST. Giusto per dare un'idea, con la versione 2.6.1 di Python ho questo:
>>> from dis import dis
>>> def f():
... return 1 + 2 * 3 ** 4
...
>>> dis(f)
2 0 LOAD_CONST 1 (1)
3 LOAD_CONST 2 (2)
6 LOAD_CONST 3 (3)
9 LOAD_CONST 4 (4)
12 BINARY_POWER
13 BINARY_MULTIPLY
14 BINARY_ADD
15 RETURN_VALUE
>>> f()
163
>>> c = f.func_code
>>> c.co_consts
(None, 1, 2, 3, 4)
>>>
Questo perché al momento ho disattivato il peephole optimizer. Attivandolo otterei qualcosa tipo questo:
>>> from dis import dis
>>> def f():
... return 1 + 2 * 3 ** 4
...
>>> dis(f)
2 0 LOAD_CONST 1 (1)
3 LOAD_CONST 2 (2)
6 LOAD_CONST 5 (81)
9 BINARY_MULTIPLY
12 BINARY_ADD
13 RETURN_VALUE
>>> f()
163
>>> c = f.func_code
>>> c.co_consts
(None, 1, 2, 3, 4, 81)
>>>
In pratica è riuscito soltanto a precalcolare 3 ** 4 = 81, senza andare poi avanti a calcolare le altre costanti. Inoltre da notare che all'elenco delle costanti utilizzate ne ha aggiunta un'altra (81), allungando ancora la lista e la relativa occupazione di memoria (6 costanti in tutto tenute in memoria).
Con la mia attuale implementazione, invece, ottengo questo:
>>> from dis import dis
>>> def f():
... return 1 + 2 * 3 ** 4
...
>>> dis(f)
2 0 LOAD_CONST 1 (163)
2 RETURN_VALUE
>>> f()
163
>>> c = f.func_code
>>> c.co_consts
(None, 163)
>>>
Come vedi riesce a effettuare tutti i calcoli, restituendo immediamente il valore. Quindi abbiamo sia poche istruzioni eseguite (soltanto due; per cui il codice è più veloce), sia un minor consumo di memoria (soltanto 2 costanti vengono mantenute in memoria).
Quando avrò messo mano alla mia versione del peephole optimizer (spero la prossima settimana), il codice diventerà questo invece:
>>> dis(f)
2 0 RETURN_CONST 1 (163)
Quindi una sola istruzione.
Ma sto pensando anche a qualche sistema per togliere di mezzo l'onnipresente costante None che viene riportata in tutte le funzioni. :D
Sinceramente non c'ho capito molto. Il codice ad esempio non riesco a "tradurlo".
Immagino comunque che c'è un lavoro non da poco dietro, per giunta in C.
P.S: come si disattiva il peephole optimizer?
Proporrei un paragone
:rotfl:
2) Invece che codice assembly, si potrebbe produrre codice per una macchina virtuale(ma, in questo caso, bisogna implementare anche la VM in grado di eseguire il bytecode prodotto dal compilatore).
Cosa ne pensate? Qualcuno ha qualche altra idea da proporre?
Un'alternativa potrebbe essere quella di usare LLVM. A naso non e' banale, ma c'e' un sacco di documentazione e tutorial a riguardo, visto che e' nata proprio per questo scopo.
cdimauro
02-03-2009, 07:30
Sinceramente non c'ho capito molto. Il codice ad esempio non riesco a "tradurlo".
Praticamente tutte le espressioni scritte in Python vengono "tradotte" in istruzioni più elementari che fanno il lavoro vero e proprio.
Immagino comunque che c'è un lavoro non da poco dietro, per giunta in C.
Sì, e sono argomenti abbastanza avanzati. Comunque lascia perdere per adesso: magari in futuro avrai modo di smanettarci anche tu.
P.S: come si disattiva il peephole optimizer?
Mettendo questa riga:
goto exitUnchanged; /* Disable peephole optimizations right now. *
all'inizio della funzione che lo implementa, e ricompilando. :fagiano:
woomacoder
02-03-2009, 07:52
Proporrei un paragone :sofico:
http://www.lario3.it/images/Fumetti/Vari_per_blog/Latino.jpg
Simpatico :D :D
~FullSyst3m~
02-03-2009, 08:37
Praticamente tutte le espressioni scritte in Python vengono "tradotte" in istruzioni più elementari che fanno il lavoro vero e proprio.
Capito.
Sì, e sono argomenti abbastanza avanzati. Comunque lascia perdere per adesso: magari in futuro avrai modo di smanettarci anche tu.
Ma ad esempio per fare qualcosa del genere che conoscenze si devono avere, apparte il C?
Mettendo questa riga:
goto exitUnchanged; /* Disable peephole optimizations right now. *
all'inizio della funzione che lo implementa, e ricompilando. :fagiano:
Quale è la funzione che lo implementa?
cdimauro
02-03-2009, 08:51
Ma ad esempio per fare qualcosa del genere che conoscenze si devono avere, apparte il C?
Compilatori, interpreti e macchine virtuali.
Il C ti serve se e solo se il progetto usa questo linguaggio, ma non è sempre detto (ad esempio PyPy è scritto in Python, FreePascal è scritto in FreePascal stesso, ecc.).
Quale è la funzione che lo implementa?
PyCode_Optimize che si trova in peephole.c
~FullSyst3m~
02-03-2009, 08:55
Compilatori, interpreti e macchine virtuali.
Il C ti serve se e solo se il progetto usa questo linguaggio, ma non è sempre detto (ad esempio PyPy è scritto in Python, FreePascal è scritto in FreePascal stesso, ecc.).
Si, ovviamente.
PyCode_Optimize che si trova in peephole.c
Grazie.
banryu79
02-03-2009, 08:59
Ok, ma una volta creato un nuovo progetto con il nome ClasseRichiesta, non compila...
public class ClasseRichiesta
{
public static void main (String args [])
{
NumeroIntero uno = new NumeroIntero();
NumeroIntero due = new NumeroIntero();
uno.numeroIntero = 1;
due.numeroIntero = 2;
uno.stampaNumero();
due.stampaNumero();
}
}
Come mai?
E poi, ma perché per stampare chiama StampaNumero(); e non StampaNumeroIntero();?
Non dovrebbe andare a richiamare in nome completo?
Ciao nuvolare,
stai seguendo il manuale e facendo gli esercizi? Che cosa usi come editor per il codice? EJE (l'editor accluso al testo di De Sio)?
banryu79
02-03-2009, 09:20
...
Lo sto studiando da qualche giorno perché voglio fornire gli esempi di codice del mio sito con questo linguaggio oltre che in C(così forse qualcuno, qui(ohé banryu, tutto a posto? :D), la smetterà di definirmi :old: :mad:)
Il tempo non torna più... :old: :asd:
Vincenzo1968
02-03-2009, 14:08
Il tempo non torna più... :old: :asd:
:huh: :huh: :huh: :huh: :huh:
Un'alternativa potrebbe essere quella di usare LLVM. A naso non e' banale, ma c'e' un sacco di documentazione e tutorial a riguardo, visto che e' nata proprio per questo scopo.
Ottimo. Non sapevo di LLVM. Grazie per la segnalazione :)
Questo è il link per saperne di più:
http://llvm.org/
...
E' qualcosa che va ben al di là di un contest. Praticamente è un progetto tipo Diamonds. Inoltre richiede parecchie conoscenze.
Non so quanti utenti potrebbero aggregarsi.
...
Infatti a parte Marco e Full(che mi ha mandato un pvt), non s'è aggregato nessuno.
Direi di rimandare la cosa per il momento. Si potrebbe fare una semplice guida invece che un progetto(ne avevo parlato qualche giorno fa con Cionci, in pvt). Io nel frattempo mi studio per benino Java in modo da fornire gli esempi con questo linguaggio oltre che in C.
...
P.S. Come avrai intuito io ho già le mani in pasta su un altro compilatore. :D
...
Si, e sono sicuro che i tuoi interventi verranno accettati al pyCon. Da quello che leggo sembra che tu stia facendo un ottimo lavoro. Complimenti e in bocca al lupo ;)
Vincenzo1968
02-03-2009, 14:37
...
Comunque con il C non ti fai male, impari a Programmare, con la P maiuscola.
Saper gestire puntatori, alloc memoria, ecc... è fondamentale per un buon programmatore!
...
Forse al giorno d'oggi non è così fondamentale. Ma a parer mio, non fa male.
Secondo me è preferibile un approccio bottom-up: parti dal basso, dalle cose più difficili(C/C++ e gestione della memoria) e, più tardi, quando passerai a un linguaggio di più alto livello(Java, Python, C#), la strada sarà in discesa.
;)
nuvolare
03-03-2009, 09:22
Scusatemi, ma il manuale di Java che sto seguendo mi fa riferimento a prompt. Sul Mac c'è qualcosa di simile? oppure tutte le applicazioni in cui si riferisce al prompt io lo devo fare con NeatBeans?
Scusatemi, ma il manuale di Java che sto seguendo mi fa riferimento a prompt. Sul Mac c'è qualcosa di simile? oppure tutte le applicazioni in cui si riferisce al prompt io lo devo fare con NeatBeans?
Usare il prompt è sicuramente un ottimo modo per capire come si compila un sorgente Java. Per le prime volte ti consiglio di seguire le istruzioni. Poi dopo gli esempi li puoi fare su netbeans.
Su Mac esiste sicuramente un prompt, ma non mi chiedere come si apre :D Dovresti cercare terminale o shell.
nuvolare
03-03-2009, 09:38
Perfetto allora è Terminale, ma devo capire come mandarlo in esecuzione.
Grazie
@banryu79
Si sto seguendo il Libro di De Sio, ma io utilizzo il Mac quindi non posso utilizzare EJE e quindi utilizzo NetBeans
Se vuoi seguire passo passo gli esempi puoi usare qualsiasi editor di testo per scrivere il sorgente Java.
In ogni caso quell'editor funziona anche su Mac...proprio perché è scritto in Java :D
http://www.claudiodesio.com/eje_it.htm
Segui le istruzioni per linux.
In alternativa dai direttamente il comando scritto sotto ;)
nuvolare
03-03-2009, 09:58
Ok, allora ci provo, ma spiegami il significato :D
3) Cambiare i permessi del file eje.sh con il comando chmod. Da riga di comando digitare:
chmod a+x eje.sh
4) Lanciare il file eje.sh nella directory EJE.
Grazie
Intanto ti funziona ? Prima di spiegarti il significato dicci se va :D
woomacoder
03-03-2009, 10:05
Perfetto allora è Terminale, ma devo capire come mandarlo in esecuzione.
Grazie
@banryu79
Si sto seguendo il Libro di De Sio, ma io utilizzo il Mac quindi non posso utilizzare EJE e quindi utilizzo NetBeans
Io uso Eclipse che ha una shell sua, integrata.
Comunque penso che per compilare su mac dai javac nomefile.estensionejava
e per eseguirlo ./file
Magari mi sbaglio (io e java siamo come uno XOR :D )
nuvolare
03-03-2009, 10:05
Intanto ti funziona ? Prima di spiegarti il significato dicci se va :D
Ho scaricato il File che è eje.tar, poi l'ho scompattato perché era zippato, ed è uscita fuori una cartella EJE e se entro dentro ci sono tante altre cartelle, file, txt, ed il file leggimi, ma niente per farlo partire.
Quindi pensavo che bisognasse fare questo lavoro descritto, per creare un tasto, tipo SetUp
~FullSyst3m~
03-03-2009, 10:13
Ho scaricato il File che è eje.tar, poi l'ho scompattato perché era zippato, ed è uscita fuori una cartella EJE e se entro dentro ci sono tante altre cartelle, file, txt, ed il file leggimi, ma niente per farlo partire.
Quindi pensavo che bisognasse fare questo lavoro descritto, per creare un tasto, tipo SetUp
Ci dovrebbe essere il file eje.sh
Controlla meglio.
Comunque sto studiando anche io sul libro di De Sio, ma sono indeciso su quale IDE usare. Se NetBeans o Eclipse. Voi che consigliate?
nuvolare
03-03-2009, 10:16
Ci dovrebbe essere il file eje.sh
Controlla meglio.
Si il file eje.sh c'è, ma non so che ci devo fare!!!
Sul file leggimi mi dice :
3) Cambiare i permessi del file eje.sh con il comando chmod. Da riga di comando digitare:
chmod a+x eje.sh
4) Lanciare il file eje.sh nella directory EJE.
Ma non so che vuol dire:D
Comunque sto studiando anche io sul libro di De Sio, ma sono indeciso su quale IDE usare. Se NetBeans o Eclipse. Voi che consigliate?
Come editor secondo me è meglio Eclipse. Come designer di interfacce Netbeans però è nettamente superiore.
~FullSyst3m~
03-03-2009, 10:19
Si il file eje.sh c'è, ma non so che ci devo fare!!!
Sul file leggimi mi dice :
3) Cambiare i permessi del file eje.sh con il comando chmod. Da riga di comando digitare:
chmod a+x eje.sh
4) Lanciare il file eje.sh nella directory EJE.
Ma non so che vuol dire:D
In pratica devi cambiare i permessi per renderlo eseguibile. Quindi basta che apri la shell (o terminale, non so come si chiami su Mac), ti posizioni nella cartella dove è il file eje.sh e dai il comando:
chmod a+x eje.sh
dopodichè, sempre restando nella stesas directory, dai il comando:
./eje.sh
e sei operativo ;)
~FullSyst3m~
03-03-2009, 10:20
Come editor secondo me è meglio Eclipse. Come designer di interfacce Netbeans però è nettamente superiore.
Quindi con NetBeans avrei anche un ambiente RAD?
Sto guardando sul sito di Eclipse, ma ci sono varie versioni.
Ad esempio c'è una versione for Java EE Developers e una for Java Developers.
Ma c'è anche la classic. Differenze?
P.S: ho installato NetBeans... è "immenso" come programma.
Si il file eje.sh c'è, ma non so che ci devo fare!!!
Sul file leggimi mi dice :
3) Cambiare i permessi del file eje.sh con il comando chmod. Da riga di comando digitare:
chmod a+x eje.sh
4) Lanciare il file eje.sh nella directory EJE.
Ma non so che vuol dire:D
Apri il terminale...sai usare il comando cd ? Con cd ti devi spostare dove si trova eje.sh e poi scrivi il comando:
chmod a+x eje.sh
Quindi con NetBeans avrei anche un ambiente RAD?
Sto guardando sul sito di Eclipse, ma ci sono varie versioni.
Ad esempio c'è una versione for Java EE Developers e una for Java Developers.
Ma c'è anche la classic. Differenze?
P.S: ho installato NetBeans... è "immenso" come programma.
Se Netbeans è immenso...Eclipse lo è ancora di più. Scarica quella Java normale. Tanto poi puoi aggiungere i vari moduli manualmente.
Certo, hai un ambiente RAD. Anche Eclipse ha un deisgner di interfacce, ma imho inferiore a quello di Netbeans.
nuvolare
03-03-2009, 10:25
Ok, praticamente mi devo creare un tasto eseguibile/SetUp.
Prendo gli appunti del C che li avevo fatto qualcosa con il Terminale, poi vi faccio sapere, mi metto all'opera!!!
Grazie :D
nuvolare
03-03-2009, 10:32
Funziona!!!! :D
Mi si è aperto il Terminale di EJE e si chiama -EJE 2.7-
Ma ogni volta per aprirlo devo fare tutto questo giro oppure c'è un procedimento più corto?
Perché mi si è aperto, ma non mi ha creato nessun tasto SetUp oppure eseguibile come pensavo....
~FullSyst3m~
03-03-2009, 10:35
Se Netbeans è immenso...Eclipse lo è ancora di più. Scarica quella Java normale. Tanto poi puoi aggiungere i vari moduli manualmente.
Certo, hai un ambiente RAD. Anche Eclipse ha un deisgner di interfacce, ma imho inferiore a quello di Netbeans.
Addirittura. Sapevo che avrei trovato differenze tra Python in Java, ma pensavo solo nel linguaggio.
Ma l'EE cosa sarebbe?
Comunque c'è da studiarli un minimo questi IDE. Hanno tantissime funzionalità.
Mi si è aperto il Terminale di EJE e si chiama -EJE 2.7-
Ma ogni volta per aprirlo devo fare tutto questo giro oppure c'è un procedimento più corto?
Perché mi si è aperto, ma non mi ha creato nessun tasto SetUp oppure eseguibile come pensavo....
Hai provato a fare un collegamento a eje.sh?
Dopo che ha dato il permesso di esecuzione potrebbe funzionare anche semplicemente clickandoci sopra.
DanieleC88
03-03-2009, 10:36
Ma l'EE cosa sarebbe?
Enterprise Edition.
nuvolare
03-03-2009, 10:41
Dopo che ha dato il permesso di esecuzione potrebbe funzionare anche semplicemente clickandoci sopra.
Io ho fatto tutto da terminale, ed il file eje.sh e rimasto un normalissimo file Smultron (dove provo il codice)
Vi incollo quello che ho fatto sul terminale
MacbookPro:~ nuolare$ cd EJE
MacbookPro:~/EJE nuvolare$ ls
LEGGIMI.htm com eje.bat.lnk eje_win9x.bat
README.htm eje.bat eje.sh resources
MacbookPro:~/EJE nuvolare$ gcc eje.sh
/usr/bin/ld: eje.sh bad magic number (not a Mach-O file)
collect2: ld returned 1 exit status
MacbookPro:~/EJE nuvolare$ chmod a+x eje.sh
MacbookPro:~/EJE nuvolare$ ./eje.sh
~FullSyst3m~
03-03-2009, 10:43
Dopo che ha dato il permesso di esecuzione potrebbe funzionare anche semplicemente clickandoci sopra.
Si infatti.
Enterprise Edition.
Credevo che era un'altra piattaforma Java. Ne ha talmente tante.
Comunque per adesso uso Eje, mi sembra ben fatto. Poi scaricherò Eclipse normale.
MacbookPro:~/EJE nuvolare$ gcc eje.sh
Perchè hai usato il compilatore?
nuvolare
03-03-2009, 10:49
Perchè hai usato il compilatore?
Ma lui così non mi doveva creare un file eseguibile a.out?
~FullSyst3m~
03-03-2009, 11:03
Ma lui così non mi doveva creare un file eseguibile a.out?
Scusa, ma dopo aver dato i permessi, se clicchi due volte sul file eje.sh non ti si avvia l'editor?
Ma lui così non mi doveva creare un file eseguibile a.out?
Gcc non c'entra assolutamente niente con Java !!!
Gli unici due passi da fare erano gli ultimi due.
Ora che hai dato i permesse di esecuzione lo dovresti poter lanciare da terminale con:
EJE/eje.sh
~FullSyst3m~
03-03-2009, 11:26
Gcc non c'entra assolutamente niente con Java !!!
Gli unici due passi da fare erano gli ultimi due.
Ora che hai dato i permesse di esecuzione lo dovresti poter lanciare da terminale con:
EJE/eje.sh
O se si trova già nella directory dove è il file sh semplicemente digitando:
eje.sh o ./eje.sh
nuvolare
03-03-2009, 13:30
Gcc non c'entra assolutamente niente con Java !!!
Gli unici due passi da fare erano gli ultimi due.
Ora che hai dato i permesse di esecuzione lo dovresti poter lanciare da terminale con:
EJE/eje.sh
Allora se eseguo il EJE/eje.sh mi dice :
MacbookPro:~ nuvolare$ EJE/eje.sh
Exception in thread "main" java.lang.NoClassDefFoundError: com/cdsc/eje/gui/EJE
Se eseguo invece eje.sh o ./eje.sh come dice FullSyst3m mi dice :
MacbookPro:~ nuvolare$ eje.sh o ./eje.sh
-bash: eje.sh: command not found
Il file eje.sh all'interno della cartella EJE è un file di tipo Smultron, simile a Txt e tale è rimasto.
Per far avviare EJE devo fare tutta la procedura, come la prima volta, non si è creato nessun file eseguibile
Se gcc non centra con Java cosa devo utilizzare al posto di questo comando?
Non devi usare niente al posto di gcc, Java non crea eseguibili. Non ti so aiutare con Mac OS :stordita:
Guarda che per
eje.sh o ./eje.sh
intendeva
eje.sh oppure ./eje.sh
Utilizza la seconda perché la prima non dovrebbe funzionare.
Comunque devi chiedere come si fa a lanciare un comando con una icona su Mac OS X. Devi impostare la directory di EJE come directory di lavoro per farlo funzionare.
^TiGeRShArK^
03-03-2009, 13:35
Allora se eseguo il EJE/eje.sh mi dice :
MacbookPro:~ nuvolare$ EJE/eje.sh
Exception in thread "main" java.lang.NoClassDefFoundError: com/cdsc/eje/gui/EJE
Se eseguo invece eje.sh o ./eje.sh come dice FullSyst3m mi dice :
MacbookPro:~ nuvolare$ eje.sh o ./eje.sh
-bash: eje.sh: command not found
Il file eje.sh all'interno della cartella EJE è un file di tipo Smultron, simile a Txt e tale è rimasto.
Per far avviare EJE devo fare tutta la procedura, come la prima volta, non si è creato nessun file eseguibile
Se gcc non centra con Java cosa devo utilizzare al posto di questo comando?
basta che dal finder vai nella cartella di eje e clicchi due volte su eje.sh (che è uno script bash tra l'altro, non uno smultron che non so nemmeno cosa sia.)
Puoi anche creare un collegamento sulla dock volendo....
^TiGeRShArK^
03-03-2009, 13:36
Non devi usare niente al posto di gcc, Java non crea eseguibili. Non ti so aiutare con Mac OS :stordita:
Guarda che per
eje.sh o ./eje.sh
intendeva
eje.sh oppure ./eje.sh
Utilizza la seconda perché la prima non dovrebbe funzionare.
Comunque devi chiedere come si fa a lanciare un comando con una icona su Mac OS X. Devi impostare la directory di EJE come directory di lavoro per farlo funzionare.
di solito prendono come directory di lavoro la directory corrente quando si lanciano dal finder....
nuvolare
03-03-2009, 13:47
Non devi usare niente al posto di gcc, Java non crea eseguibili. Non ti so aiutare con Mac OS :stordita:
Guarda che per
eje.sh o ./eje.sh
intendeva
eje.sh oppure ./eje.sh
Utilizza la seconda perché la prima non dovrebbe funzionare.
Comunque devi chiedere come si fa a lanciare un comando con una icona su Mac OS X. Devi impostare la directory di EJE come directory di lavoro per farlo funzionare.
Ok, si in effetti l'ho fatto senza gcc e si è aperto EJE, ma sempre facendo tutta la procedura
cd EJE
ls
chmod a+x eje.sh
./eje.sh
e poi si apre.
basta che dal finder vai nella cartella di eje e clicchi due volte su eje.sh (che è uno script bash tra l'altro, non uno smultron che non so nemmeno cosa sia.)
Puoi anche creare un collegamento sulla dock volendo....
Se io clicco 2 volete su eje.sh, mi si apre un file tipo Txt di Smultron , che è appunto un programma che serve a scrivere il codice, ed il contenuto del file eje.sh è:
# !/bin/sh
# -----------------------------------------------------------------------------
# Start Script for the Everyone's Java Editor (EJE) 1.0
# -----------------------------------------------------------------------------
java -classpath . com.cdsc.eje.gui.EJE
Ok, si in effetti l'ho fatto senza gcc e si è aperto EJE, ma sempre facendo tutta la procedura
cd EJE
ls
chmod a+x eje.sh
./eje.sh
e poi si apre.
Noooooo :muro: Devi fare solo:
cd EJE
./eje.sh
^TiGeRShArK^
03-03-2009, 13:49
Ok, si in effetti l'ho fatto senza gcc e si è aperto EJE, ma sempre facendo tutta la procedura
cd EJE
ls
chmod a+x eje.sh
./eje.sh
e poi si apre.
Se io clicco 2 volete su eje.sh, mi si apre un file tipo Txt di Smultron , che è appunto un programma che serve a scrivere il codice, ed il contenuto del file eje.sh è:
# !/bin/sh
# -----------------------------------------------------------------------------
# Start Script for the Everyone's Java Editor (EJE) 1.0
# -----------------------------------------------------------------------------
java -classpath . com.cdsc.eje.gui.EJE
devi togliere l'associazione del file sh a smultron.
non avevo capito che fosse un programma. :mbe:
non mi chiedere come fare che ora sono in windows 7 e non mi ricordo..
se lo disinstalli l'associazione dovrebbe tornare normale...
...certo che è da criminali registrare l'associazione con i file sh.. :mbe:
^TiGeRShArK^
03-03-2009, 13:50
Noooooo :muro: Devi fare solo:
cd EJE
./eje.sh
basta che butta nel cesso quello smultron e può fare il normale doppio click.
nuvolare
03-03-2009, 13:57
Noooooo :muro: Devi fare solo:
cd EJE
./eje.sh
Si! fatto funziona solo con questi 2!!! :D
...certo che è da criminali registrare l'associazione con i file sh..
Non so, me lo avevano fatto scaricare quando ho iniziato a studiare il C, praticamente scrivevo il codice li e lui riconosce le graffe ti dice se ti sei dimenticato di chiudere il blocco, riconosce le //, simile a l Txt ma per il Codice. Che l'ho usato pochissimo.
Ok, allora lo butto e vedo cosa esce fuori.
Sempre 1000 grazie ragazzi :ave:
~FullSyst3m~
03-03-2009, 14:04
devi togliere l'associazione del file sh a smultron.
non avevo capito che fosse un programma. :mbe:
non mi chiedere come fare che ora sono in windows 7 e non mi ricordo..
se lo disinstalli l'associazione dovrebbe tornare normale...
...certo che è da criminali registrare l'associazione con i file sh.. :mbe:
Ma infatti. Io non conosco MAC, ma si potrebbe togliere l'associazione di un file ad un determinato programma.
basta che butta nel cesso quello smultron e può fare il normale doppio click.
Che magari fa prima :asd:
nuvolare
03-03-2009, 14:10
Sembra assurdo, ma vero!!!!
Ho buttato Smultron ho fatto doppio click sul file eje.sh e mi si è aperto NetBeans!!!
Comunque, continuo a studiare quando devo aprire EJE lo apro da terminale e va bene lo stesso...
Si! fatto funziona solo con questi 2!!! :D
Se modifichi così eje.sh:
# !/bin/sh
# -----------------------------------------------------------------------------
# Start Script for the Everyone's Java Editor (EJE) 1.0
# -----------------------------------------------------------------------------
CLASSPATH=`dirname $0`
java -classpath $CLASSPATH com.cdsc.eje.gui.EJE
ti parte anche con il solo:
EJE/eje.sh
^TiGeRShArK^
03-03-2009, 14:14
Ma infatti. Io non conosco MAC, ma si potrebbe togliere l'associazione di un file ad un determinato programma.
Che magari fa prima :asd:
lo so che si può togliere ma non mi ricordo come e non mi andava di riavviare.
E comunque un programma che ruba l'associazione ai .sh imho non merita di essere installato :p
^TiGeRShArK^
03-03-2009, 14:19
Se modifichi così eje.sh:
# !/bin/sh
# -----------------------------------------------------------------------------
# Start Script for the Everyone's Java Editor (EJE) 1.0
# -----------------------------------------------------------------------------
CLASSPATH=`dirname $0`
java -classpath $CLASSPATH com.cdsc.eje.gui.EJE
ti parte anche con il solo:
EJE/eje.sh
non glielo fare maniare + che ora gli parte solo col doppio click :Prrr:
~FullSyst3m~
03-03-2009, 14:21
non glielo fare maniare + che ora gli parte solo col doppio click :Prrr:
Si, ma gli parte NetBeans. Deve togliere anche quello ora? :asd:
^TiGeRShArK^
03-03-2009, 14:24
Si, ma gli parte NetBeans. Deve togliere anche quello ora? :asd:
ah non avevo capito che gli partiva netbeans.. :mbe:
certo che mi sa che il suo sistema è *lievemente* infognato... :mbe:
io ho installato xcode 3.1, eclipse ganimede, netbeans e l'associazione dei file .sh è corretta... :mbe:
nuvolare
03-03-2009, 14:29
ah non avevo capito che gli partiva netbeans.. :mbe:
certo che mi sa che il suo sistema è *lievemente* infognato... :mbe:
io ho installato xcode 3.1, eclipse ganimede, netbeans e l'associazione dei file .sh è corretta... :mbe:
Ma perché infognato, il problema al massimo sono nei programmi no nel mio sistema, no?
Comunque lo apro da Terminale
^TiGeRShArK^
03-03-2009, 14:31
Ma perché infognato, il problema al massimo sono nei programmi no nel mio sistema, no?
Comunque lo apro da Terminale
l'associazione dei file lavora a livello di sistema...
nuvolare
03-03-2009, 14:36
l'associazione dei file lavora a livello di sistema...
Ok, per ora studio, poi un giorno vi chiederò come sfognare il sistema, allora...!!! :D
~FullSyst3m~
03-03-2009, 15:23
ah non avevo capito che gli partiva netbeans.. :mbe:
certo che mi sa che il suo sistema è *lievemente* infognato... :mbe:
io ho installato xcode 3.1, eclipse ganimede, netbeans e l'associazione dei file .sh è corretta... :mbe:
Lo credo anche io.
nuvolare
03-03-2009, 16:51
Sto provando a fare gli esercizi, e non riesco a compilare questo codice.
Probabilmente perché non so usare NetBeans e EJE.
Dopo che lo scrivo non devo fare Compila?
public class Esercizio3A {
public static void main (String args[]) {
int a = 5, b = 3;
double r1 = (double)a/b;
System.out.println("r1 = " + r1);
char c = 'a';
short s = 5000;
int r2 = c*s;
System.out.println("r2 = " + r2);
int i = 6;
float f = 3.14F;
float r3 = i + f;
System.out.println("r3 = " + r3);
double r4 = r1 – r2 – r3;
System.out.println("r4 = " + r4);
}
}
Quale è la differenza tra usare EJE e NetBeans?
~FullSyst3m~
03-03-2009, 16:55
Sto provando a fare gli esercizi, e non riesco a compilare questo codice.
Probabilmente perché non so usare NetBeans e EJE.
Dopo che lo scrivo non devo fare Compila?
public class Esercizio3A {
public static void main (String args[]) {
int a = 5, b = 3;
double r1 = (double)a/b;
System.out.println("r1 = " + r1);
char c = 'a';
short s = 5000;
int r2 = c*s;
System.out.println("r2 = " + r2);
int i = 6;
float f = 3.14F;
float r3 = i + f;
System.out.println("r3 = " + r3);
double r4 = r1 – r2 – r3;
System.out.println("r4 = " + r4);
}
}
Quale è la differenza tra usare EJE e NetBeans?
Credo che EJE è solo un editor, NetBeans è anche un compilatore e molto altro.
Ma non sono sicuro, non li ho ancora usati.
Dopo che lo scrivo non devo fare Compila?
Il menu build esiste proprio per quello.
nuvolare
03-03-2009, 17:07
Il menu build esiste proprio per quello.
Infatti, e perché mi da questo errore allora?
run:
Exception in thread "main" java.lang.NoClassDefFoundError: esercizio3a/Main
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)
Infatti, e perché mi da questo errore allora?
run:
Exception in thread "main" java.lang.NoClassDefFoundError: esercizio3a/Main
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)
Quando lanci EJE ti chiede di inserire il percorso del JDK, gli hai dato il percorso giusto ?
A me compila senza problemi.
nuvolare
03-03-2009, 17:32
A me EJE non chiede nulla quando lo lancio.
Io seguo da Terminale e poi EJE mi da una finestra vuota dove inserire il codice, inserisco il codice e premo il tasto con la freccia giù, che corrisponde al tasto F7, lui mi dice :
javac: invalid source release:
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are used
................................
-target <release> Generate class files for specific VM version
-version Version information
-help Print a synopsis of standard options
-X Print a synopsis of nonstandard options
-J<flag> Pass <flag> directly to the runtime system
Process Terminated ... there were problems.
Ho accorciato la listo con i puntini
~FullSyst3m~
03-03-2009, 17:53
A me EJE non chiede nulla quando lo lancio.
Io seguo da Terminale e poi EJE mi da una finestra vuota dove inserire il codice, inserisco il codice e premo il tasto con la freccia giù, che corrisponde al tasto F7, lui mi dice :
javac: invalid source release:
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
-nowarn Generate no warnings
-verbose Output messages about what the compiler is doing
-deprecation Output source locations where deprecated APIs are used
................................
-target <release> Generate class files for specific VM version
-version Version information
-help Print a synopsis of standard options
-X Print a synopsis of nonstandard options
-J<flag> Pass <flag> directly to the runtime system
Process Terminated ... there were problems.
Ho accorciato la listo con i puntini
Per me è come dice cionci, devi dargli il percorso del JDK.
Vai nelle opzioni, e nella scheda Java c'è una voce JDK Path. Clicchi su Change Path e selezioni la cartella dove è installato il JDK.
Non dovrebbe essere quello. javac glielo trova.
Semmai questo errore:
javac: invalid source release:
Anche se è diverso da quello che aveva riportato qualche post precedente.
nuvolare
03-03-2009, 18:01
Non dovrebbe essere quello. javac glielo trova.
Semmai questo errore:
javac: invalid source release:
Anche se è diverso da quello che aveva riportato qualche post precedente.
Si perché quello lo facevo con Play, questo invece con la Build (la freccia Giù)
Ho provato ad eseguire lo stesso codice con NetBeas
package esercizio3a;
public class Esercizio3A //esclamativo rosso
{
public static void main (String args[])
{
int a = 5, b = 3;
double r1 = (double)a/b;
System.out.println("r1 = " + r1);
char c = 'a';
short s = 5000;
int r2 = c*s;
System.out.println("r2 = " + r2);
int i = 6;
float f = 3.14F;
float r3 = i + f;
System.out.println("r3 = " + r3);
double r4 = r1 – r2 – r3; //esclamativo rosso
System.out.println("r4 = " + r4);
}
}
E mi dice :
[COLOR="Red"]run:
r1 = 1.6666666666666667
r2 = 485000
r3 = 9.14
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - not a statement
at esercizio3a.Esercizio3A.main(Main.java:18)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
Con 2 punti Esclamativi Rossi come riportato su.
Mi sembra la giornata dei No oggi...
~FullSyst3m~
03-03-2009, 18:09
Non dovrebbe essere quello. javac glielo trova.
Semmai questo errore:
javac: invalid source release:
Anche se è diverso da quello che aveva riportato qualche post precedente.
Si, ma con due modalità di esecuzione gli dà due errori. Quindi devono avere un qualcosa in comune.
E mi dice :
[COLOR="Red"]run:
r1 = 1.6666666666666667
r2 = 485000
r3 = 9.14
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - not a statement
at esercizio3a.Esercizio3A.main(Main.java:18)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
Con 2 punti Esclamativi Rossi come riportato su.
Mi sembra la giornata dei No oggi...
Rischirivi la riga 18, ci hai messo dei caratteri ASCII non validi.
nuvolare
03-03-2009, 18:24
Rischirivi la riga 18, ci hai messo dei caratteri ASCII non validi.
L'ho incollato pari pari come è sul libro, ho controllato anche le virgolette, ed adesso mi dice:
run:
Exception in thread "main" java.lang.NoClassDefFoundError: esercizio3a/Main
Java Result: 1
BUILD SUCCESSFUL (total time: 3 seconds)
Ma non è lo stesso di prima?
Ho provato a fare il banalissimo codice di HelloWord, manco quello funziona... :cry:
^TiGeRShArK^
03-03-2009, 19:13
hai creato la directory esercizio3a e hai messo il file chiamato Esercizio3A.java li' dentro?
L'ho incollato pari pari come è sul libro, ho controllato anche le virgolette, ed adesso mi dice:
Ti dico che devi riscrivere la riga 18. Ci sono dei caratteri ascii sbagliati, proprio perché hai fatto il copia ed incolla. L'errore che ti dava prima era relativo a quello. Poi se vuoi continuare senza starmi ad ascoltare fai pure :boh:
nuvolare
03-03-2009, 19:24
hai creato la directory esercizio3a e hai messo il file chiamato Esercizio3A.java li' dentro?
Io ho fatto : "Nuovo Proggetto" mi è spuntata una finestra con 2 caselle, una è quella delle categorie ed ho scelto Java, l'altra è quella è quella dei progetti ed ho scelta Java Application.
Poi Next mi dice di inserire il nome del progetto ed ho scritto Esercizio3A, come il nome della Classe, e poi Finish.
Quando lo compilo
public class Esercizio3A { //esclamativo rosso
public static void main (String args[]) {
int a = 5, b = 3;
double r1 = (double)a/b;
System.out.println("r1 = " + r1);
char c = 'a';
short s = 5000;
int r2 = c*s;
System.out.println("r2 = " + r2);
int i = 6;
float f = 3.14F;
float r3 = i + f;
System.out.println("r3 = " + r3);
double r4 = r1 – r2 – r3; //esclamativo rosso
System.out.println("r4 = " + r4);
}
}
mi dice :
run:
r1 = 1.6666666666666667
r2 = 485000
r3 = 9.14
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - not a statement
at esercizio3a.Esercizio3A.main(Main.java:25)
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)
nuvolare
03-03-2009, 19:27
Ti dico che devi riscrivere la riga 18. Ci sono dei caratteri ascii sbagliati, proprio perché hai fatto il copia ed incolla. L'errore che ti dava prima era relativo a quello. Poi se vuoi continuare senza starmi ad ascoltare fai pure :boh:
Ma non capisco quali sono i caratteri che non capisce nella riga 18, io li ho riscritti tutti, e vanno via quelli della riga 18, ma quelli della public cass Esercizio3A rimangono
Devi riscrivere questa riga:
double r4 = r1 – r2 – r3; //esclamativo rosso
Dove ti segna rosso significa che ci sono errori.
banryu79
04-03-2009, 08:59
Devi riscrivere questa riga:
double r4 = r1 – r2 – r3; //esclamativo rosso
Dove ti segna rosso significa che ci sono errori.
Ho importato il suo codice in NetBeans con copia-incolla e gli errori (i punti esclamativi sono errori, percui finchè non li risolvi non ti lascia compilare) sono in queste due linee:
- System.out.println("r1 = " + r1);
...
- double r4 = r1 – r2 – r3;
Ho visto che l'errore segnalato da NetBeans è questo:
"Illegal character: \8211. Not a statement"
Non so quale sia il carattere illegale, ma mi è bastato commentare ogni linea segnalata dall'IDE e riscriverla sotto a manina.
Poi compila e gira perfettamente.
Un consiglio nuvolare:
Se devi studiare un linguaggio di programmazione non avere fretta: studia con calma e gli spezzoni di codice di esempio/esercizi che ci sono sul manuale io ti consiglio di:
1) affrontarli tutti;
2) assolutamente non copia-incollarli: riscrivere tutto a mano. Questo è specialmente importante per te che sei agli inizi, imho.
Ciao :)
nuvolare
04-03-2009, 09:27
Si si, infatti ho riscritto tutto il codice da capo, e mi sono premurato di scrivere i codici tutti a mano senza fare più il copia ed incolla, perché mi fa impazzare...
Stavo pensando addirittura di studiare senza compilare, forse è meglio prima capire effettivamente la sintassi prima di scrivere.
Ho qualche problema nel resettare il C, malgrado io lo abbia utilizzato per poco tempo mi viene sempre in mente quel %d e scanf, che se non sbaglio in java si usa il + ed il printnl, giusto?
banryu79
04-03-2009, 10:36
forse è meglio prima capire effettivamente la sintassi prima di scrivere.
Togli pure il "forse".
Capire (meglio: imparare) la sintassi del linguaggio di programmazione che stai studiando è solo il primo passo.
Ti consigliavo di scrivere tutto il codice che vedi a manina principalmente perchè ritengo che questa attività ti sia di maggiore aiuto per memorizzare la sintassi, e scrivendo e quindi leggendo a pezzi e con più calma il sorgente a comprendere meglio quello che fa il codice stesso.
Non avere fretta: ti sei imbarcato in un'impresa impegnativa e lunga, non te lo abbiamo mai nascosto.
Il modo migliore per ottenere buoni risultati è procedere con diligenza e molta molta pazienza.
nuvolare
04-03-2009, 11:24
Non avere fretta: ti sei imbarcato in un'impresa impegnativa e lunga, non te lo abbiamo mai nascosto.
Il modo migliore per ottenere buoni risultati è procedere con diligenza e molta molta pazienza.
Si infatti, ma molte volte mi faccio prendere dalla curiosità e quindi scrivo il codice per vedere l'out put.
Niente, devo pazientare...!!!
~FullSyst3m~
04-03-2009, 11:42
Io quoto in parte banryu, e cioè: ci vuole impegno e costanza per imparare a programmare, imparare un linguaggio è competamente un'altra cosa che programmare. Un linguaggio lo può imparare chiunque, ma a programmare no.
Poi, nel libro ti dice di non copiare e incollare il codice, e oltretutto, come ha anche detto giustamente banryu, il codice lo devi scrivere tu, in modo da prendere familiarità con la sintassi e memorizzare le varie funzioni, istruzioni ecc.
Infine, il codice puoi scriverlo, ma almeno all'inizio attieniti a quello che dice il libro, ricopia tutti gli esempi che ci sono e svolgi tutti gli esercizi. Un ottimo esercizio è anche quello di modificare gli esempi del libro cambiando qualcosa, ovviamente usando le conoscenze che hai raggiunto fino a quel momento.
P.S: io ho lo sto leggendo poco alla volta il libro perchè la matematica mi porta via tanto tempo, ma mi sembra ben fatto davvero.
nuvolare
08-03-2009, 19:33
Ciao a tutti, ho un problema son SET e GET.
Il libro, Object Oriented java 5, mi fa esempi ed alla fine ci sono gli esercizi che mi fanno vedere 2 situazioni differenti.
public class Pilota {
public String nome;
public Pilota(String nome) {
setNome(nome);
}
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
}
Oppure
public class Pilota {
public String nome;
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
}
Come vedete la differenza tra questi codici è che in uno c'è setNome(nome), praticamente non sono riuscito a capire quando si usa questo e quando no.
wingman87
08-03-2009, 20:02
Ciao, qui la differenza non sta nel set e get, la differenza è che nel primo hai dichiarato un costruttore, nel secondo no (e quindi sarà presente quello di default)
nuvolare
08-03-2009, 20:36
Ciao, qui la differenza non sta nel set e get, la differenza è che nel primo hai dichiarato un costruttore, nel secondo no (e quindi sarà presente quello di default)
Ok, allora mi rivedo i costruttori...
Grazie
~FullSyst3m~
08-03-2009, 22:28
Ciao, qui la differenza non sta nel set e get, la differenza è che nel primo hai dichiarato un costruttore, nel secondo no (e quindi sarà presente quello di default)
Infatti. Il set e il get è uguale.
nuvolare
10-03-2009, 15:55
Mamma mia...
non è che il Java sia molto più facile del C, anzi...
Forse sarà un'impressione, ma mi sembra che con il C stavo un pò in piedi, ma qua non ho ancora capito come scrivere un pezzetto di codice...
La cosa, e che se lo vedo lo so commentare, ma non so assolutamente come scrivere...
In C qualche esempio l'avevo fatto, pensate che sia meglio scrivere e fare dei test oppure continuare a studiare e basta?
Ho iniziato adesso il 6° capitolo del De Sio
^TiGeRShArK^
10-03-2009, 16:28
Mamma mia...
non è che il Java sia molto più facile del C, anzi...
Forse sarà un'impressione, ma mi sembra che con il C stavo un pò in piedi, ma qua non ho ancora capito come scrivere un pezzetto di codice...
La cosa, e che se lo vedo lo so commentare, ma non so assolutamente come scrivere...
In C qualche esempio l'avevo fatto, pensate che sia meglio scrivere e fare dei test oppure continuare a studiare e basta?
Ho iniziato adesso il 6° capitolo del De Sio
scrivere sicuramente.
comunque se trovavi + facile il C è il segno che la sua mentalità bacata ti aveva già iniziato a contagiare, mentre con java sei + spinto ad utilizzare la programmazione ad oggetti.
nuvolare
10-03-2009, 16:46
scrivere sicuramente.
comunque se trovavi + facile il C è il segno che la sua mentalità bacata ti aveva già iniziato a contagiare, mentre con java sei + spinto ad utilizzare la programmazione ad oggetti.
:D Si certamente...
Devo dire, che in C avevo iniziato a capire il metodo di scrittura qua, perché avevo fatto un bel pò di esercizi per capire al sintassi, qua invece non ho ancora fatto nulla, solo studiato il libro.
In seguito magari farò la prova a fermarmi e provare qualche esercizio, giusto per mettere in pratica ciò che ho studiato.
Dovrò anche capire bene come utilizzare EJE, che ancora mi da un sacco di errori, anche se eseguo il codice HelloWord.
~FullSyst3m~
10-03-2009, 19:08
:D Si certamente...
Devo dire, che in C avevo iniziato a capire il metodo di scrittura qua, perché avevo fatto un bel pò di esercizi per capire al sintassi, qua invece non ho ancora fatto nulla, solo studiato il libro.
In seguito magari farò la prova a fermarmi e provare qualche esercizio, giusto per mettere in pratica ciò che ho studiato.
Dovrò anche capire bene come utilizzare EJE, che ancora mi da un sacco di errori, anche se eseguo il codice HelloWord.
DEVI scrivere codice mentre studi, sia per pratica che per memorizzare meglio quello che fai altrimenti in poco tempo dimentichi la maggior parte delle cose.
P.S: a me EJE non dà nessun problema.
nuvolare
10-03-2009, 22:04
DEVI scrivere codice mentre studi, sia per pratica che per memorizzare meglio quello che fai altrimenti in poco tempo dimentichi la maggior parte delle cose.
P.S: a me EJE non dà nessun problema.
Si, solo che mi lasciavo troppo distrarre degli esperimenti che poi venivano fuori, invece così ho studiato 6 capitoli, adesso li ripasso mettendo in pratica ciò che ho studiato nei 6 capitoli per fissarli meglio, e poi vado avanti.
A me EJE non funziona, ma tu utilizzi il Mac 10.4.11?
~FullSyst3m~
10-03-2009, 22:24
Si, solo che mi lasciavo troppo distrarre degli esperimenti che poi venivano fuori, invece così ho studiato 6 capitoli, adesso li ripasso mettendo in pratica ciò che ho studiato nei 6 capitoli per fissarli meglio, e poi vado avanti.
A me EJE non funziona, ma tu utilizzi il Mac 10.4.11?
Hai studiato 6 capitoli, però non hai fatto pratica e devi ripassarli ora.
No, io non ho MAC, ho linux.
nuvolare
10-03-2009, 22:30
Hai studiato 6 capitoli, però non hai fatto pratica e devi ripassarli ora.
No, io non ho MAC, ho linux.
Si, ho ho compilato e seguito gli esercizi del libro sui fogli, ma non ho mai compilato sul PC.
Vorrei rifare tutto da capo, seguendo gli esercizi che ho fatto sui fogli e quelli sul libro, per fissare meglio le idee.
Quando facevo con C sperimentavo nel momento in cui leggevo, e mi dilungavo molto in esperimenti.
~FullSyst3m~
11-03-2009, 01:31
Si, ho ho compilato e seguito gli esercizi del libro sui fogli, ma non ho mai compilato sul PC.
Vorrei rifare tutto da capo, seguendo gli esercizi che ho fatto sui fogli e quelli sul libro, per fissare meglio le idee.
Quando facevo con C sperimentavo nel momento in cui leggevo, e mi dilungavo molto in esperimenti.
E' giusto fare cosi. Perchè con C si e con Java no?
nuvolare
11-03-2009, 10:23
Un esempio come questo può essere compilato?
public class Principale
{
public static void main(String args[])
{
Punto punto1; //Dichiarazione dell'oggetto Punto
punto1 = new Punto(); //Creo la classe Punto()
punto1.x = 2; //l'oggetto punto1 prende valore
punto1.y = 6;
Punto punto2 = new Punto();
punto2.x = 0;
punto2.y = 1;
System.out.println(punto1.x);
System.out.println(punto1.y);
System.out.println(punto2.x);
System.out.println(punto2.y);
}
}
Gli errori che mi vengo fuori, compilando da Terminale sono:
MacbookPro:~/Java nuvolaree$ javac Principale.java
Principale.java:5: cannot find symbol
symbol : class Punto
location: class Principale
Punto punto1;
^
Principale.java:6: cannot find symbol
symbol : class Punto
location: class Principale
punto1 = new Punto();
^
Principale.java:9: cannot find symbol
symbol : class Punto
location: class Principale
Punto punto2 = new Punto();
^
Principale.java:9: cannot find symbol
symbol : class Punto
location: class Principale
Punto punto2 = new Punto();
^
4 errors
No, non può essere compilato...e la classe Punto dov'è ?
nuvolare
11-03-2009, 11:00
Infatti...
siccome ho copiato il codice dal libro mi sembrava che mi stesse facendo vedere qualcosa di diverso, invece sicuramente sarà una parte di codice non completo.
Io infatti l'ho compilato, ma poi non mi tornavano i conti...
Allora ho voluto chiedere conferma.
Grazie Cionci
~FullSyst3m~
11-03-2009, 11:23
Infatti...
siccome ho copiato il codice dal libro mi sembrava che mi stesse facendo vedere qualcosa di diverso, invece sicuramente sarà una parte di codice non completo.
Io infatti l'ho compilato, ma poi non mi tornavano i conti...
Allora ho voluto chiedere conferma.
Grazie Cionci
Sto valutando l'idea, sotto consiglio anche di PGI, di usare un altro libro. Ancora non mi sono addentrato nello studio di Java per mancanza di tempo, ma se sto libro è cosi preferisco risparmiare tempo e studiarne uno buono direttamente.
nuvolare
11-03-2009, 11:26
Eventualmente fammi sapere se quello che prendi è meglio di questo, grazie
siccome ho copiato il codice dal libro mi sembrava che mi stesse facendo vedere qualcosa di diverso, invece sicuramente sarà una parte di codice non completo.
Sicuramente la classe Punto sarà stata definita in qualche pagina precedente.
~FullSyst3m~
11-03-2009, 11:48
Sicuramente la classe Punto sarà stata definita in qualche pagina precedente.
Si, ma non si può strutturare un libro cosi però eh.
Eventualmente fammi sapere se quello che prendi è meglio di questo, grazie
Si certo. Il libro è questo se vuoi dargli un'occhiata http://java.sun.com/docs/books/javaprog/
Si, ma non si può strutturare un libro cosi però eh.
Non ho letto quel libro, ma ad un certo punto è il lettore che deve capire da dove viene una parte del sorgente. Il libro non può stare a ripetere il codice già scritto in qualche esempio precedente, altrimenti invece di 500 pagine diventa 1500.
Vincenzo1968
11-03-2009, 13:44
Non ho letto quel libro, ma ad un certo punto è il lettore che deve capire da dove viene una parte del sorgente. Il libro non può stare a ripetere il codice già scritto in qualche esempio precedente, altrimenti invece di 500 pagine diventa 1500.
Ho scaricato il libro. La classe Punto è definita nel quinto capitolo(pag. 168)
;)
Ho scaricato il libro. La classe Punto è definita nel quinto capitolo(pag. 168)
E quell'esempio a quale pagina si trova ?
nuvolare
11-03-2009, 13:59
E quell'esempio a quale pagina si trova ?
Quell'esempio si trova a pag 56, quindi io lettore non esperto, devo dare per buono molte cose in questo libro, e poi alla fine dopo che leggi 6 - 7 capitoli capisci il motivo dell'implementazione fatta nel 1° capitolo (sempre se te la ricordi).
Ecco perché dopo essere arrivato al 6° capitolo ho iniziato da capo.
Forse riesco a fissare meglio ciò che nella lettura mi è sfuggito...
Vincenzo1968
11-03-2009, 14:31
Quell'esempio si trova a pag 56, quindi io lettore non esperto, devo dare per buono molte cose in questo libro, e poi alla fine dopo che leggi 6 - 7 capitoli capisci il motivo dell'implementazione fatta nel 1° capitolo (sempre se te la ricordi).
Ecco perché dopo essere arrivato al 6° capitolo ho iniziato da capo.
Forse riesco a fissare meglio ciò che nella lettura mi è sfuggito...
Chiedo venia,
avevo letto velocemente e mi era sfuggito che una prima definizione della classe Punto si trova a pag. 54:
public class Punto
{
public int x;
public int y;
}
La classe Punto a cui fa riferimento l'esempio di pagina 56 è quella a pagina 54.
Il punto di forza di "Object Oriented && Java 5" è che fa rivalutare opere quali "Pensare da Informatico": dopo la lettura del primo candiderei l'autore del secondo al premio Turing.
[ps. stavo scrivendo quando è stato inserito il messaggio precedente]
Il punto di forza di "Object Oriented && Java 5" è che fa rivalutare opere quali "Pensare da Informatico": dopo la lettura del primo candiderei l'autore del secondo al premio Turing.
Ho dato un occhiata molto veloce ai primi tre capitoli ed in effetti sembra un libro piuttosto orrendo. Come si fa a partire da una introduzione pressappochista alle classi in cui usa solo attributi public per poi passare a cicli e controllo di flusso?
Secondo me nuvolare e gli altri che stanno leggendo questo libro fanno prima a cercare un altro libro perché questo secondo me gli darà solo problemi.
Se hai coraggio trascinati fino al capitolo 11: là riceverai l'atteso colpo di grazia. Che sia un segno di pietà dopo una sofferenza di 300 pagine?
Vincenzo1968
11-03-2009, 16:44
Io mi sto trovando bene con i tutorials della Sun:
http://java.sun.com/docs/books/tutorial/reallybigindex.html
mi sembrano davvero ben fatti.
^TiGeRShArK^
11-03-2009, 17:03
Se hai coraggio trascinati fino al capitolo 11: là riceverai l'atteso colpo di grazia. Che sia un segno di pietà dopo una sofferenza di 300 pagine?
cosa succede di bello al capitolo 11? http://i228.photobucket.com/albums/ee12/sholesshs/Smileys/popcorn.gif
^TiGeRShArK^
11-03-2009, 17:04
Io mi sto trovando bene con i tutorials della Sun:
http://java.sun.com/docs/books/tutorial/reallybigindex.html
mi sembrano davvero ben fatti.
si, la documentazione ufficiale della sun di solito è fatta MOOOLTO bene.
niente a che vedere con quella di altri linguaggi...
per certi versi la preferisco anche a msdn :p
Di bello... niente :cry:
Al capitolo 11 arrivano i Thread. Il problema è che arrivano senza il memory model del linguaggio.
Come se alla mangiatoia fossero arrivati i due magi. E il terzo - chiese Gesù. Be' è scappato con l'oro. Ma guarda che bella mirra che t'ho portato.
^TiGeRShArK^
11-03-2009, 17:14
Di bello... niente :cry:
Al capitolo 11 arrivano i Thread. Il problema è che arrivano senza il memory model del linguaggio.
Come se alla mangiatoia fossero arrivati i due magi. E il terzo - chiese Gesù. Be' è scappato con l'oro. Ma guarda che bella mirra che t'ho portato.
:asd:
in effetti parlare di threading senza introdurre il memory model è follia pura... :mbe:
come cazz si fanno a dare gli strumenti per gestire le race-conditions senza quello? :mbe:
nuvolare
11-03-2009, 17:20
Non ditemelo!!!
Per il C studiavo da 70 libri 150 appunti e 800 manuali, le cose che ho scaricato io nemmeno chi si laurea ha tanti libri e manuali, sono arrivato a quasi 3 Gb di roba, non ditemi che devo cambiare libro anche per il java...
Io ho iniziato con questo perché pensavo fosse il migliore in circolazione, ma a quanto pare...
Ma non c'è un libro che è ben fatto e che tutti dicono sia buono?
Non è quello che gli altri dicono a contare: è quello che dice il libro. Di liberamente disponibili in rete non ne conosco. Puoi prendere la terza edizione di "The Java Programming Language". Non è l'ultima ma va bene. Puoi prenderla usata su amazon: i prezzi partono da 0.01$. Anche contando la spedizione, è un affare.
nuvolare
11-03-2009, 18:08
Ma i tutorial della Sun, non è possibile scaricarli in un normalissimo file PDF?
Ho travato, sto scaricando i tutorial della Sun spero che la mia ripartenza non sia una delle tante che ho fatto con il C :D
Ma in questo file che ho scaricato ci sono un sacco di cartelle, ma non il file PDF, o qualcosa del genere per leggere.
Qualcuno per caso ha fatto un unico file PDF?
nuvolare
11-03-2009, 18:52
Perché sul tutoria fa la differenza fra sistema operativo Windows ed Unix?
Per Unix intende un sistema operativo, che non conosco, oppure è inteso un sistema operativo diverso da Windows?
~FullSyst3m~
11-03-2009, 19:24
Perché sul tutoria fa la differenza fra sistema operativo Windows ed Unix?
Per Unix intende un sistema operativo, che non conosco, oppure è inteso un sistema operativo diverso da Windows?
Per Unix intende i sistemi operativi *nix. Come ad esempio MAC OS X e linux (Debian, Ubuntu, OpenSuse ecc).
nuvolare
11-03-2009, 23:27
Scusate, ma ormai voglio capire, perché mi è rimasto in mente.
E' giusto compilato in questo modo?
public class Punto
{
public int x;
public int y;
}
public class Principale
{
public static void main (String args[])
{
Punto punto1; //Dichiarazione dell'oggetto Punto
punto1 = new Punto(); //Creo la classe Punto()
punto1.x = 2; //l'oggetto punto1 prende valore
punto1.y = 6;
Punto punto2 = new Punto();
punto2.x = 0;
punto2.y = 1;
System.out.println(punto1.x);
System.out.println(punto1.y);
System.out.println(punto2.x);
System.out.println(punto2.y);
}
}
^TiGeRShArK^
11-03-2009, 23:50
Scusate, ma ormai voglio capire, perché mi è rimasto in mente.
E' giusto compilato in questo modo?
public class Punto
{
public int x;
public int y;
}
public class Principale
{
public static void main (String args[])
{
Punto punto1; //Dichiarazione dell'oggetto Punto
punto1 = new Punto(); //Creo la classe Punto()
punto1.x = 2; //l'oggetto punto1 prende valore
punto1.y = 6;
Punto punto2 = new Punto();
punto2.x = 0;
punto2.y = 1;
System.out.println(punto1.x);
System.out.println(punto1.y);
System.out.println(punto2.x);
System.out.println(punto2.y);
}
}
no, la class punto va nel file Punto.java se la dichiari pubblica.....
nuvolare
11-03-2009, 23:58
Quindi devo dichiarare 2 file 1 di nome Punto e l'altro con il nome Principale e poi creare i file .class
public class Punto
{
public int x;
public int y;
}
e l'altro con in codice
public class Principale
{
public static void main (String args[])
{
Punto punto1; //Dichiarazione dell'oggetto Punto
punto1 = new Punto(); //Creo la classe Punto()
punto1.x = 2; //l'oggetto punto1 prende valore
punto1.y = 6;
Punto punto2 = new Punto();
punto2.x = 0;
punto2.y = 1;
System.out.println(punto1.x);
System.out.println(punto1.y);
System.out.println(punto2.x);
System.out.println(punto2.y);
}
}
Giusto?
^TiGeRShArK^
11-03-2009, 23:59
Quindi devo dichiarare 2 file 1 di nome Punto e l'altro con il nome Principale e poi creare i file .class
public class Punto
{
public int x;
public int y;
}
e l'altro con in codice
public class Principale
{
public static void main (String args[])
{
Punto punto1; //Dichiarazione dell'oggetto Punto
punto1 = new Punto(); //Creo la classe Punto()
punto1.x = 2; //l'oggetto punto1 prende valore
punto1.y = 6;
Punto punto2 = new Punto();
punto2.x = 0;
punto2.y = 1;
System.out.println(punto1.x);
System.out.println(punto1.y);
System.out.println(punto2.x);
System.out.println(punto2.y);
}
}
Giusto?
yes, tutti e due nello stesso package ovviamente :p
nuvolare
12-03-2009, 00:05
Perfetto, siccome questo l'ho già fatto tra i miei precedenti esperimenti, ti incollo cosa mi dice
MacbookPro:~/Java nuvolare$ java Punto.java
Exception in thread "main" java.lang.NoClassDefFoundError: Punto/java
Tra l'altro questo è l'errore che mi dice quanto effettuo la classe .class del metodo Principale
MacbookPro:~/Java salvatore$ javac Principale.java
Principale.java:5: illegal start of expression
public class Punto
^
Principale.java:5: ';' expected
public class Punto
^
Principale.java:8: <identifier> expected
punto1 = new Punto(); //Creo la classe Punto()
^
Principale.java:9: <identifier> expected
punto1.x = 2; //l'oggetto punto1 prende valore
^
Principale.java:10: <identifier> expected
punto1.y = 6;
^
Principale.java:12: <identifier> expected
punto2.x = 0;
^
Principale.java:13: <identifier> expected
punto2.y = 1;
^
Principale.java:14: <identifier> expected
System.out.println(punto1.x);
^
Principale.java:15: <identifier> expected
System.out.println(punto1.y);
^
Principale.java:16: <identifier> expected
System.out.println(punto2.x);
^
Principale.java:17: <identifier> expected
System.out.println(punto2.y);
^
11 errors
Nello stesso package, intendi nella stessa cartella giusto?
^TiGeRShArK^
12-03-2009, 07:39
Perfetto, siccome questo l'ho già fatto tra i miei precedenti esperimenti, ti incollo cosa mi dice
MacbookPro:~/Java nuvolare$ java Punto.java
Exception in thread "main" java.lang.NoClassDefFoundError: Punto/java
Tra l'altro questo è l'errore che mi dice quanto effettuo la classe .class del metodo Principale
MacbookPro:~/Java salvatore$ javac Principale.java
Principale.java:5: illegal start of expression
public class Punto
^
Principale.java:5: ';' expected
public class Punto
^
Principale.java:8: <identifier> expected
punto1 = new Punto(); //Creo la classe Punto()
^
Principale.java:9: <identifier> expected
punto1.x = 2; //l'oggetto punto1 prende valore
^
Principale.java:10: <identifier> expected
punto1.y = 6;
^
Principale.java:12: <identifier> expected
punto2.x = 0;
^
Principale.java:13: <identifier> expected
punto2.y = 1;
^
Principale.java:14: <identifier> expected
System.out.println(punto1.x);
^
Principale.java:15: <identifier> expected
System.out.println(punto1.y);
^
Principale.java:16: <identifier> expected
System.out.println(punto2.x);
^
Principale.java:17: <identifier> expected
System.out.println(punto2.y);
^
11 errors
Nello stesso package, intendi nella stessa cartella giusto?
ehmmm...
si compila con il comando javac, non java :stordita:
con il comando Java esegui i file compilati...
EDIT: e tra l'altro mi sa che nel file Principale.java hai ancora definita la classe Punto... o sbaglio?
nuvolare
12-03-2009, 10:43
Faccio java Principale.javac per compilare la clase Principale ed avere il file .class è ricevo questo errore.
MacbookPro:~ nuvolare$ javac Principale.java
error: cannot read: Principale.java
1 error
Faccio java Principale per eseguire il codice Principale, ed ho quest'altro errore
MacbookPro:~ nuvolare$ java principale
Exception in thread "main" java.lang.NoClassDefFoundError: principale
I 2 codice in file diversi sono questi all'interno della stessa cartella sono questi:
public class Principale
{
public static void main(String args[])
{
Punto punto1; //Dichiarazione dell'oggetto Punto
punto1 = new Punto(); //Creo la classe Punto()
punto1.x = 2; //l'oggetto punto1 prende valore
punto1.y = 6;
Punto punto2 = new Punto();
punto2.x = 0;
punto2.y = 1;
System.out.println(punto1.x);
System.out.println(punto1.y);
System.out.println(punto2.x);
System.out.println(punto2.y);
}
}
public class Punto
{
public int x;
public int y;
}
~FullSyst3m~
12-03-2009, 11:03
Faccio java Principale.javac per compilare la clase Principale ed avere il file .class è ricevo questo errore.
MacbookPro:~ nuvolare$ javac Principale.java
error: cannot read: Principale.java
1 error
Faccio java Principale per eseguire il codice Principale, ed ho quest'altro errore
MacbookPro:~ nuvolare$ java principale
Exception in thread "main" java.lang.NoClassDefFoundError: principale
I 2 codice in file diversi sono questi all'interno della stessa cartella sono questi:
public class Principale
{
public static void main(String args[])
{
Punto punto1; //Dichiarazione dell'oggetto Punto
punto1 = new Punto(); //Creo la classe Punto()
punto1.x = 2; //l'oggetto punto1 prende valore
punto1.y = 6;
Punto punto2 = new Punto();
punto2.x = 0;
punto2.y = 1;
System.out.println(punto1.x);
System.out.println(punto1.y);
System.out.println(punto2.x);
System.out.println(punto2.y);
}
}
public class Punto
{
public int x;
public int y;
}
Il tuo problema è che sbagli la compilazione.
Allora per prima cosa controlla di avere le variabili di ambiente settate correttamente, anche se credo che sul MAC dovrebbe fare tutto solo.
Poi dalla shell portati nella cartella dove hai i due file .java, dopodichè basta semplicemente che digiti
javac NomeFile.java
e poi per eseguirlo
java NomeFile
nuvolare
12-03-2009, 17:44
Chi ha seguito o sta seguendo i tutorial della Sun mi sa dire cosa ha scelto una volta arrivato a questo punto? è indifferente oppure c'è una certa logica e quindi è preferibile scegliere una più tosto che un'altra?
- Learning the Java Language: This trail is a gentle introduction to object-oriented concepts and how the Java language implements them.
- Essential Java Classes: By taking this trail, you can find out about strings, exceptions, threads, and other Java features that are used in all kinds of Java programs.
^TiGeRShArK^
12-03-2009, 20:01
Chi ha seguito o sta seguendo i tutorial della Sun mi sa dire cosa ha scelto una volta arrivato a questo punto? è indifferente oppure c'è una certa logica e quindi è preferibile scegliere una più tosto che un'altra?
- Learning the Java Language: This trail is a gentle introduction to object-oriented concepts and how the Java language implements them.
- Essential Java Classes: By taking this trail, you can find out about strings, exceptions, threads, and other Java features that are used in all kinds of Java programs.
dal titolo e dalla descrizione direi ASSOLUTAMENTE meglio il primo....
nuvolare
13-03-2009, 18:28
Visto che si parlava di tutorial e libri, che ne pensate del libro "Thinking in Java, ho trovato la 4th edition"?
O sempre meglio "The Java Programming Language"?
~FullSyst3m~
13-03-2009, 18:34
Visto che si parlava di tutorial e libri, che ne pensate del libro "Thinking in Java, ho trovato la 4th edition"?
O sempre meglio "The Java Programming Language"?
Da quello che ho capito parlando con PGI credo che il The Java Programming Language sia migliore.
nuvolare
14-03-2009, 17:54
Ciao, se ho un codice di questo tipo :
public class Auto
{
public int numeroRuote = 4;
public int cilindrata;
public int prezzoBase()
{
return (1000 + 3000);
}
}
e volessi prendere il valore del metodo prezzoBase() come devo fare?
Mbe chiamandolo :asd:
Auto myAuto = new Auto;
int valore = myAuto.prezzoBase();
nuvolare
14-03-2009, 18:29
Qua ci sono i due file
public class Auto
{
public int numeroRuote = 4;
public int cilindrata;
public int prezzoBase()
{
return (1000 + 3000);
}
}
public class Principale2
{
public static void main(String args[])
{
Auto fiat500;
fiat500 = new Auto();
fiat500.cilindrata = 500;
fiat500.prezzoBase();
Auto ferrariTestarossa = new Auto();
ferrariTestarossa.cilindrata = 3000;
ferrariTestarossa.prezzoBase();
}
System.out.println("La macchana ha volore "+fiat500.prezzobase());
}
Che errori ci sono?
^TiGeRShArK^
14-03-2009, 19:13
Qua ci sono i due file
public class Auto
{
public int numeroRuote = 4;
public int cilindrata;
public int prezzoBase()
{
return (1000 + 3000);
}
}
public class Principale2
{
public static void main(String args[])
{
Auto fiat500;
fiat500 = new Auto();
fiat500.cilindrata = 500;
fiat500.prezzoBase();
Auto ferrariTestarossa = new Auto();
ferrariTestarossa.cilindrata = 3000;
ferrariTestarossa.prezzoBase();
}
System.out.println("La macchana ha volore "+fiat500.prezzobase());
}
Che errori ci sono?
hai messo il println fuori dal main e hai scritto prezzobase tutto in piccolo.. :fagiano:
nuvolare
14-03-2009, 19:23
Ma Terminale mi risponde:
MacbookPro:~ nuvolare$ java Principale2
Exception in thread "main" java.lang.NoClassDefFoundError: Principale2
MacbookPro:~ nuvolare$ java Auto
Exception in thread "main" java.lang.NoClassDefFoundError: Auto
Ho provato per sicurezza a mandare in esecuzione ambedue i file
^TiGeRShArK^
14-03-2009, 19:31
Ma Terminale mi risponde:
MacbookPro:~ nuvolare$ java Principale2
Exception in thread "main" java.lang.NoClassDefFoundError: Principale2
MacbookPro:~ nuvolare$ java Auto
Exception in thread "main" java.lang.NoClassDefFoundError: Auto
Ho provato per sicurezza a mandare in esecuzione ambedue i file
ma li hai compilati con javac prima?
nuvolare
14-03-2009, 19:48
Scusami, ma ogni volta che faccio una modifica lo devo ricompilare e creare un file .class o non c'è bisogno? perché quello c'è l'ho, ma prima delle modifiche...
Ho chiuso e riavviato Terminale e facendo java Principale2 mi dice:
MacbookPro:~/Java nuvolare$
Cioè riparte da capo?
~FullSyst3m~
14-03-2009, 22:58
Scusami, ma ogni volta che faccio una modifica lo devo ricompilare e creare un file .class o non c'è bisogno? perché quello c'è l'ho, ma prima delle modifiche...
Ho chiuso e riavviato Terminale e facendo java Principale2 mi dice:
MacbookPro:~/Java nuvolare$
Cioè riparte da capo?
Ogni volta che modifichi il codice certo che devi ricompilare, altrimenti avrai sempre lo stesso .class senza le modifiche o le correzione che aggiungi successivamente.
nuvolare
25-03-2009, 18:46
Sul Terminale del mio mac scrivendo python mi dice Pyhton 2.5.
A questo punto se volessi scaricare wxPython quale dovrei scaricare, visto che sul sito ci sono sia il 2.5 e sia il 2.6?
Grazie
^TiGeRShArK^
25-03-2009, 18:51
..il 2.5 se hai quello installato..:fagiano:
nuvolare
25-03-2009, 19:50
ok, scaricato ed installato, ma per avviarlo?
Non c'è all'interno di applicazioni e nemmeno all'interno della cartella Developer, come si fa?
~FullSyst3m~
25-03-2009, 21:29
ok, scaricato ed installato, ma per avviarlo?
Non c'è all'interno di applicazioni e nemmeno all'interno della cartella Developer, come si fa?
Sono delle librerie, è normale che non li trovi lì.
import wx
cosi le importi in Python e le puoi usare.
nuvolare
25-03-2009, 21:45
aaahh!!!! :D
Scusami io pensavo fosse un programma, tipo InterfaceBuilder in cui puoi proprio disegnare delle Finestre.
Quindi se sono delle librerie le finestre le devo chiamare e scrivere per crearle, giusto?
~FullSyst3m~
25-03-2009, 22:17
aaahh!!!! :D
Scusami io pensavo fosse un programma, tipo InterfaceBuilder in cui puoi proprio disegnare delle Finestre.
Quindi se sono delle librerie le finestre le devo chiamare e scrivere per crearle, giusto?
Le devi scrivere a manina. Ad esempio per creare una finestra:
import wx
app = wx.PySimpleApp()
frame = wx.Frame(None, title = "Hello, world!")
frame.Show(True)
app.MainLoop()
nuvolare
29-03-2009, 17:37
Sto facendo gli oggetti (cap.12) perché ricevo questo errore?
>>> class Punto:
... P1 = Punto()
... P1.x = 3.0
... P1.y = 4.0
... print '(' + str(P1.x) +', '+ str(p1.y) + ')'
File "<stdin>", line 5
print '(' + str(P1.x) +', '+ str(p1.y) + ')'
^
SyntaxError: invalid syntax
>>> DistanzaAlQuadrato = P1.x * P1.x + P1.y * p1.y
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'P1' is not defined
>>>
Così a naso sembra un errore di indentazione. posta il codice sorgente completo.
nuvolare
29-03-2009, 17:49
Mah! io l'ho preso dal libro e dall'unione dei vari passaggi dovrebbe essere scritto in questo modo
class Punto:
P1 = Punto()
P1.x = 3.0
P1.y = 4.0
print'(' + str(P1.x) +', '+ str(p1.y) + ')':
DistanzaAlQuadrato = P1.x * P1.x + P1.y * p1.y
Ho provato a scrivere diversamente credendo fosse un errore di identazione, ma non è cambiato nulla.
cdimauro
29-03-2009, 18:21
Quando scrivi P1 = Punto() dentro la definizione della classe Punto, questa classe non è ancora definita, per cui ricevi giustamente un messaggio d'errore.
~FullSyst3m~
29-03-2009, 18:24
Come ha detto cdimauro la classe la devi istanziare all'esterno, se la istanzi all'interno della classe stessa l'interprete segnala un errore perchè non la trova.
nuvolare
29-03-2009, 18:35
Ma istanziare la classe fuori intendete metterci delle parentesi?
Io ho unito quello che riportava il libro
Grazie
~FullSyst3m~
29-03-2009, 18:56
Ma istanziare la classe fuori intendete metterci delle parentesi?
Io ho unito quello che riportava il libro
Grazie
Io ho studiato sul Pensare e mi sembra abbastanza chiaro quel capitolo.
Se io ho una classe:
class Punto:
pass
per istanziarla si usa questa sintassi:
punto = Punto()
ma non dentro la classe, ma fuori, altrimenti l'interprete ti solleverà errore.
nuvolare
31-03-2009, 19:13
Apro un post direttamente per python, visto che in questo sono partito con il C e via via dopo vari passaggi arrivato a python.
Grazie a tutti quelli che hanno risposto.
cdimauro
31-03-2009, 19:31
Meglio. Vieni pure, mio giovane jedi. :D
~FullSyst3m~
31-03-2009, 19:58
Meglio. Vieni pure, mio giovane jedi. :D
:rotfl:
nuvolare
31-03-2009, 20:16
Meglio. Vieni pure, mio giovane jedi. :D
Ho aperto un altro post, proprio per essere il vostro jedi :D
http://www.hwupgrade.it/forum/showthread.php?p=26915293#post26915293
cdimauro
31-03-2009, 20:51
E noi abbiamo già risposto. :cool: :p
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.