View Full Version : [Python] Inizio dei miei studi
Th3 Kn0wl3dg3
09-10-2007, 17:07
Apro questo post visto che nell'altro si era persa la visione del topic. Ho iniziato a leggere (nel tempo che ho a disposizione) l'introduzione e la prefazione del libro Pensare da informatico e devo dire che mi sembra molto ben fatto. Adesso inizio con il primo capitolo, ovvero con lo studio del linguaggio vero e proprio. vi terrò aggiornati e se ci saranno cose che non capisco chiederò a voi.
ciao
Th3 Kn0wl3dg3
09-10-2007, 17:28
piccolo OT: dove posso scaricare tutto l'occorrente per programmare in python?
cdimauro
09-10-2007, 19:18
http://www.python.org/download/
Se hai Windows scarica questo: http://www.python.org/ftp/python/2.5.1/python-2.5.1.msi e segui le istruzioni (leggi: basta fare Avanti, Avanti, Fine :D ).
Al solito, se hai difficoltà chiedi pure.
Th3 Kn0wl3dg3
09-10-2007, 20:14
ho sia windows che debian, ma quest'ultima sto imparando ad usarla ora (credi che sia troppo tardi a quasi 20 anni?) il link che mi hai dato basta per poter iniziare a programmare? dovrei fare il mio primo programma...ho proprio voglia di imparare, peccato che ho conosciuto solo ora questo mondo e che prima non avevo queste possibilità di informazione. credi che sai troppo tardi a 20 anni iniziare a programmare per divengtare un programmatore professionista e fare grandi cose nel mondo dell'informatica come hanno fatto molte persone nel campo psp, web, sicurezza, algoritmi ecc ecc? e magari in futuro lavora per qualche grande colosso del software?
edit: ho letto i primi capitoli della guida e indovinate un pò? tempo fa l'avevo già stampata perchè avevo iniziato a studiare python e avevo anche chiesto in un post consigli con quale linguaggio iniziare. poi per problemi personali ho dovuto lasciare tutto, ma ricordo che dopo i primissimi capitoli molte cose non mi erano chiare. ora che è tutto tornato alla normalità ho aperto l'altro post per chiedere nuovamente consigli con quale linguaggio iniziare dato che era passato un pò di tempo e magari c'erano delle evoluzioni e mi ritrovo di nuovo con python e questa guida. che python sia un ottimo linguaggio è facile da imparare soprattutto per chi non ha mai programmato come me siamo d'accordo, ma questo guida mi crea un pò di confuzione. un'altro link con un manuale buono, se non ottimo, chi lo conosce?
cdimauro
09-10-2007, 20:36
ho sia windows che debian, ma quest'ultima sto imparando ad usarla ora (credi che sia troppo tardi a quasi 20 anni?) il link che mi hai dato basta per poter iniziare a programmare? dovrei fare il mio primo programma...
Sì, ti basta.
Dopo l'installazione ricordati di aggiungere il percorso della cartella di Python alla variabile d'ambiente PATH (es: se sta in "C:\Python25", metti un ";C:\Python25" alla fine della variabile PATH; ovviamente senza virgolette, a meno che non ci siano degli spazi).
In questo modo l'interprete sarà raggiungibile sempre, scrivendo semplicemente "python" (senza virgolette).
ho proprio voglia di imparare, peccato che ho conosciuto solo ora questo mondo e che prima non avevo queste possibilità di informazione. credi che sai troppo tardi a 20 anni iniziare a programmare per divengtare un programmatore professionista e fare grandi cose nel mondo dell'informatica come hanno fatto molte persone nel campo psp, web, sicurezza, algoritmi ecc ecc? e magari in futuro lavora per qualche grande colosso del software?
Io non porrei limiti alla provvidenza: intanto inizia, e poi se hai le capacità puoi fare strada anche a vent'anni.
edit: ho letto i primi capitoli della guida e indovinate un pò? tempo fa l'avevo già stampata perchè avevo iniziato a studiare python e avevo anche chiesto in un post consigli con quale linguaggio iniziare. poi per problemi personali ho dovuto lasciare tutto, ma ricordo che dopo i primissimi capitoli molte cose non mi erano chiare. ora che è tutto tornato alla normalità ho aperto l'altro post per chiedere nuovamente consigli con quale linguaggio iniziare dato che era passato un pò di tempo e magari c'erano delle evoluzioni e mi ritrovo di nuovo con python e questa guida. che python sia un ottimo linguaggio è facile da imparare soprattutto per chi non ha mai programmato come me siamo d'accordo, ma questo guida mi crea un pò di confuzione. un'altro link con un manuale buono, se non ottimo, chi lo conosce?
Prova "Dive into Python", oppure segui i tutorial che sono presenti qui http://www.python.it/doc/newbie.html ;)
Th3 Kn0wl3dg3
09-10-2007, 20:40
il link che mi hai dato l'ho già guardato ma non so con cosa iniziare. dive into python è buono? mi sembra che fa riferimenti anche ad altri linguaggi e che sia per esperti non per principianti
cdimauro
09-10-2007, 20:57
Far riferimenti ad altre lingue: oltre che in inglese c'è pure in italiano, ad esempio.
Io l'ho trovato semplice, ma quello di cui mi hai spedito il link in PVT lo è ancora di più, IMHO. :)
Th3 Kn0wl3dg3
09-10-2007, 21:32
no, c'era proprio messo che parlava anche di xml, html ecc
il link che ti ho mandato in pvt sembra davvero semplice. inizio a studiare con questo e poi vedo
ho installato il python, ma dove è la variabile d'ambiente path?
cdimauro
09-10-2007, 22:16
Ah, quindi erano i formati in cui era disponibile, non le lingue. :D
Per la variabili d'ambiente clicca col tasto destro del mouse su "Risorse del computer", scegli "Proprietà", poi cerca il tab "Avanzate", clicca su "Variabili d'ambiente", poi seleziona "PATH" e clica su "Modifica...", infine aggiungi ";C:\Python25" alla fine di "Valore variabile" e poi premi ok a tutto.
^TiGeRShArK^
09-10-2007, 22:51
Ah, quindi erano i formati in cui era disponibile, non le lingue. :D
Per la variabili d'ambiente clicca col tasto destro del mouse su "Risorse del computer", scegli "Proprietà", poi cerca il tab "Avanzate", clicca su "Variabili d'ambiente", poi seleziona "PATH" e clica su "Modifica...", infine aggiungi ";C:\Python25" alla fine di "Valore variabile" e poi premi ok a tutto.
:mbe:
ma sai che a leggere la procedura per settare le variabili d'ambiente rimpiango il caro vecchio DOS in cui con edit autoexec.bat risolvevi tutto in men che non si dica? :cry:
certe volte mi chiedo se l'uso delle interfacce grafiche e del mouse sia sempre un vantaggio :fagiano:
cdimauro
09-10-2007, 23:11
Beh, devi anche mettere che per modificare l'autoexec.bat dovevi sapere dove andare a metter le mani. :D
Poi oggi come oggi le variabili d'ambiente chi le va a toccare? Son pochi i programmi che ne hanno bisogno. Per fortuna. :p
^TiGeRShArK^
09-10-2007, 23:37
Beh, devi anche mettere che per modificare l'autoexec.bat dovevi sapere dove andare a metter le mani. :D
Poi oggi come oggi le variabili d'ambiente chi le va a toccare? Son pochi i programmi che ne hanno bisogno. Per fortuna. :p
bhè.. oddio..
di programmi che usi quando programmi (ke cacofonia :D) ce ne sono un bel pò :fagiano:
solo i primi che mi vengono in mente sono:
ANT_HOME, MAVEN_HOME, JAVA_HOME, CATALINA_HOME...
e sicuramente ne ho incontrati almeno altri 4 o 5 :D
Th3 Kn0wl3dg3
10-10-2007, 06:12
interessante questa variabili. non ne sapevo proprio niente, nemmeno l'ho mai letto su tutte le riviste di informatica che compro ogni mese! ho imparato una cosa nuova! non si finisce mai di imparare è proprio vero. pensavo di essermelo girato tutto windows!!!:p
cdimauro
10-10-2007, 07:43
bhè.. oddio..
di programmi che usi quando programmi (ke cacofonia :D) ce ne sono un bel pò :fagiano:
solo i primi che mi vengono in mente sono:
ANT_HOME, MAVEN_HOME, JAVA_HOME, CATALINA_HOME...
e sicuramente ne ho incontrati almeno altri 4 o 5 :D
Che culo: non ne uso nemmeno uno. :asd:
Fortunatamente con Delphi non devo impostare niente: pensa a tutto l'installer.
Solo con Python, se voglio eseguirlo da command line, mi è necessario aggiungere il percorso della sua cartella in PATH, altrimenti con l'IDE che uso (SPE) non è necessario impostare niente (il percorso di Python lo recupera dal registry, che è stato impostato quando ho installato il pacchetto del linguaggio). :)
cdimauro
10-10-2007, 07:44
interessante questa variabili. non ne sapevo proprio niente, nemmeno l'ho mai letto su tutte le riviste di informatica che compro ogni mese! ho imparato una cosa nuova! non si finisce mai di imparare è proprio vero. pensavo di essermelo girato tutto windows!!!:p
E ancora non hai messo mano alle API di sistema... ;)
Th3 Kn0wl3dg3
10-10-2007, 09:59
belle le API!! il link del programma da scaricare che mi hai dato è un IDE?non è SPE vero? ma tu quanti linguaggi conosci?
cdimauro
10-10-2007, 10:28
No, il link è quello del linguaggio vero e proprio, che tra l'altro integra anche un IDE (si chiama IDLE) che potresti anche usare.
SPE è un IDE moooolto più avanzato, ma anche più semplice per chi deve sviluppare applicazioni regolarmente.
Di linguaggi ne ho studiati/imparati/usati a decine: ne ho perso il conto ormai. :D
Th3 Kn0wl3dg3
10-10-2007, 13:34
quindi al momento l'SPE non fa al caso mio immagino...
come ti ricordi tutti questi linguaggi?mamma mia...
cdimauro
10-10-2007, 13:53
quindi al momento l'SPE non fa al caso mio immagino...
No: è meglio che smanetti con l'interprete interattivo. ;)
come ti ricordi tutti questi linguaggi?mamma mia...
Infatti non me li ricordo tutti. :p
Però, se dovesse servire, potrei rispolverarli velocemente (anche se spero di non aver più a che fare con la maggior parte di essi :D ).
Th3 Kn0wl3dg3
10-10-2007, 14:24
scusa la mia ignoranza ma l'SPE non è interattivo e a cosa serve precisamente?
comunque posto l'immagine di una strana finestra che mi è apparsa quando stavo salvando un programma con dei commenti dentro
http://img441.imageshack.us/img441/1690/immaginehu8.th.jpg (http://img441.imageshack.us/my.php?image=immaginehu8.jpg)
cdimauro
10-10-2007, 14:32
scusa la mia ignoranza ma l'SPE non è interattivo e a cosa serve precisamente?
E' anche interattivo, ma dovresti studiarti come funziona e al momento credo che le tue priorità siano altre.
Serve a gestire file e progetti realizzati con Delphi, a controllare la sintassi, tirare fuori diagrammi UML o documentazione, effettuare il debugging passo passo del codice, e altro.
Lascialo perdere per ora, fidati.
comunque posto l'immagine di una strana finestra che mi è apparsa quando stavo salvando un programma con dei commenti dentro
http://img441.imageshack.us/img441/1690/immaginehu8.th.jpg (http://img441.imageshack.us/my.php?image=immaginehu8.jpg)
Questo si verifica perché hai inserito dei caratteri speciali (lettere accentate per esempio). I sorgenti di Python utilizzano soltanto il set ASCII normalmente, ma se vuoi includere anche altri simboli devi specificare la codifica nella prima riga del programma, come ti è stato suggerito.
Quindi piazza questo:
# -*- coding: latin1 -*-
come prima riga, se stai usando Windows dovrebbe bastare. Con Linux et similia, invece, puoi mettere questo:
# -*- coding: utf-8 -*-
perché generalmente usano la codifica unicode.
Th3 Kn0wl3dg3
10-10-2007, 14:39
capito.vi posto il mio esercizietto, è una cretinata però sono le prime righe di codice che scrivo!!
#Questo è il mio primo esercizietto!
print "10+10=", 10+10, "-->questa è un'addizione"
print "10*10=", 10*10, "-->questa è una moltiplicazione"
print "10/10=", 10/10, "-->questa è una divisione semplice"
print "11/10=", 11/10, "Resto", 11%10, "-->questa è una divisione con resto"
print "10-10=", 10-10, "-->questa è una sottrazione"
print "10*10=", 10*10, "-->questa è un'elevamento a potenza"
print "Ciao forum di Hardware Upgrade!!"
^TiGeRShArK^
10-10-2007, 16:17
puoi sostituire le varie " è " con " e' " se non vuoi cambiare il coding :p
cdimauro
10-10-2007, 16:25
Concordo.
Th3 Kn0wl3dg3
10-10-2007, 17:59
ok. che ne dite dell'esercizietto? le mie prime righe di codice!!
cdimauro
10-10-2007, 20:23
Funziona? Allora va bene. :p
Th3 Kn0wl3dg3
10-10-2007, 21:37
si funziona!
cdimauro
10-10-2007, 21:43
Passa al capitolo successivo allora: con l'input da tastiera ti si aprirà un mondo nuovo. :p
Th3 Kn0wl3dg3
11-10-2007, 20:36
già fatto. l'ho studiato, sto facendo gli esercizi di esempio e poi provo a svolgere quelli di fine capitolo. vi tengo informati
cdimauro
11-10-2007, 20:46
Benissimo. Onestamente spero non avrai bisogno del nostro aiuto, per ovvi motivi. :p
Th3 Kn0wl3dg3
11-10-2007, 20:48
questi ovvi motivi sarebbero che devo imparare solo, superare i problemi che mi si presentano davanti da solo ecc ecc??! cmq volevo farti una domanda: ho finito di scrivere adesso un'altro programmino. per aprirlo devo avere python installato e lo devo aprire con l'idle. ma per compilarlo e per aprirlo come un programma normale, tipo in una finestra dos senza avere necessariamente python installato come dovrei fare?
cdimauro
11-10-2007, 20:52
Esistono degli appositi tool (py2exe è fra i più famosi), ma NON è il momento di pensarci, te l'assicuro.
P.S. Sì, è perché vuol dire che stai imparando da solo. :)
Th3 Kn0wl3dg3
11-10-2007, 21:18
eh si,è bello imparare da soli con le proprie forze! ho trovato un errore nella parte delle operazioni con le stringhe, quando provo i codici di esempio scritti nella guida l'idle non mi restituisce niente a schermo,hanno dimenticato di scrivere il print prima perchè mettendo il print funziona perfettamente!!
cdimauro
11-10-2007, 21:25
No, con l'interprete da linea di comando o con IDLE, se scrivi un'espressione il print è "automatico".
Quindi se tu scrivi questo:
1 + 1
e premi invio, l'interprete risponderà visualizzando 2.
Th3 Kn0wl3dg3
11-10-2007, 21:33
guarda io ho provato e riprovato a scrivere anche semplicemente questo:
"i"*5
e l'idle non mi restituisce niente a schermo, se invece scrivo:
"i"*5
mi restituisce:
iiiii
edit:allora come hai detto tu, provando nell'idle direttamente allora ok, funziona tranquillamente, se però io lo scrivo il codice in una nuova finestra, lo salvo e lo eseguo l'idle non mi ritorna niente. io intendevo questo, non che lo scrivevo nell'idle direttamente
Th3 Kn0wl3dg3
11-10-2007, 21:39
comunque quando puoi/potete controllate questo esercizio. è il 3.3.l'ho eseguito ed è tutto ok, però non so se si faceva cosi, alle volte i testi degli esercizi non sono molto chiari!!
#esercizio 3.3
nome=raw_input("Nome:")
cognome=raw_input("cognome:")
anni=input("Anni:")
data=input("Data di nascita:")
print nome+cognome
print
print anni*data
cdimauro
11-10-2007, 21:39
guarda io ho provato e riprovato a scrivere anche semplicemente questo:
"i"*5
e l'idle non mi restituisce niente a schermo, se invece scrivo:
"i"*5
mi restituisce:
iiiii
edit:allora come hai detto tu, provando nell'idle direttamente allora ok, funziona tranquillamente, se però io lo scrivo il codice in una nuova finestra, lo salvo e lo eseguo l'idle non mi ritorna niente. io intendevo questo, non che lo scrivevo nell'idle direttamente
Chiaro, perché il funzionamento è diverso: nel secondo caso non viene usato l'interprete interattivo, ma il sorgente viene eseguito direttamente, per cui se non è scritto correttamente non può funzionare.
cdimauro
11-10-2007, 21:41
comunque quando puoi/potete controllate questo esercizio. è il 3.3.l'ho eseguito ed è tutto ok, però non so se si faceva cosi, alle volte i testi degli esercizi non sono molto chiari!!
#esercizio 3.3
nome=raw_input("Nome:")
cognome=raw_input("cognome:")
anni=input("Anni:")
data=input("Data di nascita:")
print nome+cognome
print
print anni*data
L'ultima non mi sembra corretta. Comunque riporta il link al tutorial, e il testo di quest'esercizio.
Th3 Kn0wl3dg3
11-10-2007, 21:48
Chiaro, perché il funzionamento è diverso: nel secondo caso non viene usato l'interprete interattivo, ma il sorgente viene eseguito direttamente, per cui se non è scritto correttamente non può funzionare.
appunto, era questo quello ke volevo dire!
L'ultima non mi sembra corretta. Comunque riporta il link al tutorial, e il testo di quest'esercizio.
link: http://www.python.it/doc/Easytut/easytut-it.txt.gz
testo esercizio: 3.3 Esercizi
Scrivete un programma che prenda due variabili stringa e due numeriche
intere dall'utente, le concateni (unisca le due stringhe senza spazi)
e le visualizzi sullo schermo, infine moltiplichi i due numeri interi
su una nuova linea.
cdimauro
11-10-2007, 21:51
Il programma è formalmente corretto, ma al posto di "Data di nascita" avrei scritto qualche altra cosa: moltiplicare anni per data di nascita non mi quadrava, ed è per questo che ti dicevo che non era corretto. :p
Th3 Kn0wl3dg3
11-10-2007, 21:55
che significa è formalmente corretto?! cmq ho messo dei nomi a caso per le variabili, i primi che mi sono venuti in mente!!:D
cdimauro
11-10-2007, 22:00
Significa che il programma esegue le operazioni correttamente, ma leggendo i nomi che hai dato la prima cosa che si pensa è che ci sia un errore nel programma.
Th3 Kn0wl3dg3
12-10-2007, 12:20
ho capito, vabbè come ti ho detto ho messo due nomi a caso, i primi che mi sono venuti in mente!!
^TiGeRShArK^
12-10-2007, 13:41
ho capito, vabbè come ti ho detto ho messo due nomi a caso, i primi che mi sono venuti in mente!!
I nomi per le variabili devono essere sempre scelti con cura ed esseere significativi ;)
Aiutano sempre ad aumentare la leggibilità del codice se fatti bene e a diminuirla in caso contrario :p
Th3 Kn0wl3dg3
12-10-2007, 18:46
questo lo so, ma siccome era un esercizietto li ho messi a caso!!
^TiGeRShArK^
12-10-2007, 20:16
questo lo so, ma siccome era un esercizietto li ho messi a caso!!
Si ma vedi che non ti stiamo facendo un processo :D
Era solo un consiglio spassionato :p
Th3 Kn0wl3dg3
12-10-2007, 20:57
e chi ha detto che mi state facendo un processo?! ho solo spiegato il perchè del mio "gesto"!
Th3 Kn0wl3dg3
15-10-2007, 17:58
In questi ultimi giorno ho dovuto sistemare alcuni computer, il mio portatile e ho dovuto lottare un pò con debian quindi sono andato avanti oggi. ho iniziato a studiare i cicli while e ora inizio a fare g li esercizi di esempio.
girando in rete ho visto questo sito con questo programma http://www.valentinomarangi.com/142/msn-repair-20-ripara-tutti-gli-errori-di-windows-live-messenger-con-un-click/
è stato scritto da un ragazzo di 17 anni. parlando con lui ho scoperto che il programma è stato scritto in delphi, che conosce anche vb e php e che programma da 3/4 anni, praticamente da quando ne aveva 13. io ne ho 20 e non sono ancora a niente e oltretutto se dovessi fare io per esempio un programma simile non saprei proprio da dove partire..ste cose mi fanno una rabbia....
In questi ultimi giorno ho dovuto sistemare alcuni computer, il mio portatile e ho dovuto lottare un pò con debian quindi sono andato avanti oggi. ho iniziato a studiare i cicli while e ora inizio a fare g li esercizi di esempio.
girando in rete ho visto questo sito con questo programma http://www.valentinomarangi.com/142/msn-repair-20-ripara-tutti-gli-errori-di-windows-live-messenger-con-un-click/
è stato scritto da un ragazzo di 17 anni. parlando con lui ho scoperto che il programma è stato scritto in delphi, che conosce anche vb e php e che programma da 3/4 anni, praticamente da quando ne aveva 13. io ne ho 20 e non sono ancora a niente e oltretutto se dovessi fare io per esempio un programma simile non saprei proprio da dove partire..ste cose mi fanno una rabbia....
OT: Non devi avere rabbia ne tantomeno invidia... ma se ti piace programmare e sei appassionato devi chiedere, chiedere, chiedere e sperimentare... e vedrai che ti toglierai molte soddisfazioni.
ciao
Th3 Kn0wl3dg3
15-10-2007, 18:31
grazie mille. volevo chiedere appunto una cosa:
while 1 == 1:
print "Help, I'm stuck in a loop."
il simbolo == significa conicide, corrisponde? perchè nella guida che sto studiando non c'è spiegato. ho provato a mettere l'uguale invece dei == ma il programma mi dà errore e non funziona
Th3 Kn0wl3dg3
15-10-2007, 18:52
c'è una cosa del programma che calcola la sequenza di fibonacci che non capisco:
# questo programma calcola la sequenza di fibonacci
a=0
b=1
count=0
max_count=20
while count < max_count:
count=count+1
#occorre tenere traccia finchè ci sono cambiamenti
old_a=a
old_b=b
a=old_b
b=old_a+old_b
#attenzione che la virgola alla fine di un'istruzione print
#non prosegue la stampa sulla stessa linea
print old_a,
print
quello che non capisco è questo:
#occorre tenere traccia finchè ci sono cambiamenti
old_a=a
old_b=b
a=old_b
b=old_a+old_b
ma traccia di che cosa? e cosa è old?
e riguardo la virgola alla fine dell'istruzione print forse hanno sbagliato a scrivere perchè senza virgola visualizza la stampa in colonna, uno sotto l'altro, inceve con la virgola finale visualizza la stampa sulla stessa linea
edit:allora ho fatto la prova a togliere tutti gli old e ho visto che visualizza solamente l'ultimo risultato, cioè 4181. quindi deduco che quegli old siano una specie di "blocco". ma old è un nome scelto dal programmatore o è un comando interno di python? e infine a cosa servono le due variabili a e b? vengono bloccate a vicenda?
c'è una cosa del programma che calcola la sequenza di fibonacci che non capisco:
# questo programma calcola la sequenza di fibonacci
a=0
b=1
count=0
max_count=20
while count < max_count:
count=count+1
#occorre tenere traccia finchè ci sono cambiamenti
old_a=a
old_b=b
a=old_b
b=old_a+old_b
#attenzione che la virgola alla fine di un'istruzione print
#non prosegue la stampa sulla stessa linea
print old_a,
print
quello che non capisco è questo:
#occorre tenere traccia finchè ci sono cambiamenti
old_a=a
old_b=b
a=old_b
b=old_a+old_b
ma traccia di che cosa? e cosa è old?
e riguardo la virgola alla fine dell'istruzione print forse hanno sbagliato a scrivere perchè senza virgola visualizza la stampa in colonna, uno sotto l'altro, inceve con la virgola finale visualizza la stampa sulla stessa linea
edit:allora ho fatto la prova a togliere tutti gli old e ho visto che visualizza solamente l'ultimo risultato, cioè 4181. quindi deduco che quegli old siano una specie di "blocco". ma old è un nome scelto dal programmatore o è un comando interno di python? e infine a cosa servono le due variabili a e b? vengono bloccate a vicenda?
sai cosa è la sequenza di fibonacci??
se la sai...ok!
ma se non la sai vai su google e scoprila!... se no non puoi giustamente capire il significato dell'algoritmo.
cmq...
old_a corrisponde a: ultimo valore di a
old_b corrisponde a: ultimo valore di b
in programmazione è buon uso chiamare le varibili con un nome ben edintificato per capire a cosa corrispondono.
In ultimo non sono comandi del tool di programmazione e/o di linguaggio.
cerca su google per "notazione ungherese"...
es.: rata=105 significa che il programmatore da un significato alla variabile rata.
mesi=12
mutuo = rata*mesi
significa che il mutuo corrisponde a rata*mesi
ecc ecc.
la notazione ungherese è fatta di 3 fonemi con cui il programmatore inizializza le variabili ecc ecc. per capire di cosa sta programmando/trasformando nell'algoritmo scelto. In definitiva dare il nome alle variabili per capire appunto a cosa corrispondono dette variabili.
Lit_debito=100
Lit_credito=150
Lit_tot=Lit_credito-Lit_debito
ecc ecc
^TiGeRShArK^
15-10-2007, 19:38
c'è una cosa del programma che calcola la sequenza di fibonacci che non capisco:
# questo programma calcola la sequenza di fibonacci
a=0
b=1
count=0
max_count=20
while count < max_count:
count=count+1
#occorre tenere traccia finchè ci sono cambiamenti
old_a=a
old_b=b
a=old_b
b=old_a+old_b
#attenzione che la virgola alla fine di un'istruzione print
#non prosegue la stampa sulla stessa linea
print old_a,
print
quello che non capisco è questo:
#occorre tenere traccia finchè ci sono cambiamenti
old_a=a
old_b=b
a=old_b
b=old_a+old_b
ma traccia di che cosa? e cosa è old?
e riguardo la virgola alla fine dell'istruzione print forse hanno sbagliato a scrivere perchè senza virgola visualizza la stampa in colonna, uno sotto l'altro, inceve con la virgola finale visualizza la stampa sulla stessa linea
edit:allora ho fatto la prova a togliere tutti gli old e ho visto che visualizza solamente l'ultimo risultato, cioè 4181. quindi deduco che quegli old siano una specie di "blocco". ma old è un nome scelto dal programmatore o è un comando interno di python? e infine a cosa servono le due variabili a e b? vengono bloccate a vicenda?
mi pare un pò incasinato quel codice.. :mbe:
La successione di fibonacci è fatta in questo modo:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ....
in cui ogni termine, a parte i primi due, è la somma dei due che lo precedono.
Quindi, dovendo scrivere un codice python iterativo (Per non confonderti troppo un codice iterativo è quando esegui in un ciclo lo stesso codice più volte, mentre un codice ricorsivo è quando un pezzo di codice esegue se stesso + volte... comunque non ci fare troppo caso che + in là li studierai meglio :p) io lo scriverei su per giù così:
a=0 #a e b sono i primi due termini della successione, inizializzati a zero e ad 1
b=1 #in accordo con la definizione della sequenza di fibonacci
count=0 #variabile di controllo del ciclo
max_count=20 #variabile che indica quando il ciclo deve terminare
while count < max_count: #trad. letteralmente: finchè la variabile count è minore della variabile max_count esegui quello che c'è dopo i ":"
count=count+1 #incrementa la variabile count durante ogni ciclo in modo da capire quando fermarsi
c = a + b #la variabile c è la somma dei due termini precedenti della successione
print c, #stampa la variabile c lasciando uno spazio sulla stessa riga
a = b #va avanti di uno nella successione, quindi a sarà uguale a b
b = c #e b sarà uguale a c
Se hai ancora dubbi chiedi pure :p
grazie mille. volevo chiedere appunto una cosa:
while 1 == 1:
print "Help, I'm stuck in a loop."
il simbolo == significa conicide, corrisponde? perchè nella guida che sto studiando non c'è spiegato. ho provato a mettere l'uguale invece dei == ma il programma mi dà errore e non funziona
= significa assegna
a=2
mentre == fa parte della condizione (algebra di boole) ovvero
if a==1 then
se scrivi
if a=1 then
avrai errore in quanto nell'istruzione if non puoi fare un assegnamento ma devi comparare un eguaglianza o una diseguaglianza <> oppure una condizione if <= (minore o uguale) oppure >= (ovvero maggiore o uguale)
forza e vai avanti... capitolo per capitolo... se no invece che in 1 anno ci metti 4 anni. Segui i capitoli di upgrade o una guida.
Il vb (te lo avevo consigliato). Cerca guida per vb.
Poi passi a qualunque altro linguaggio... e te lo mangi come hai capito come funziona.
+ di tutto ti mangierai l'assembly,come avrai capito come funziona il tutto. Che è il linguaggio meno astratto di tutti ma + difficile da algoritmizzare.
ciao
ciao
Th3 Kn0wl3dg3
15-10-2007, 21:13
scusate, ma avete usato dei termini un pò complessi per un principiante come me. non devo lasciare nessuna lacuna altrimenti non imparerò mai come si deve a programmare. se non chiedo troppo potreste spiegarmi più semplicemente il codice che ho postato? e anche quello che ha postato tiger shark se possibile.
cmq quell'old allora sarebbe un nome della variabile scelto dal programmatore, all'inizio non lo avevo capito perchè non capivo cosa potesse significare old (poi riflettendo la guida è in inglese quindi sarà l'iniziale di qualche parola o una cosa simile) perchè a me non rispecchiava a cosa corrispondeva quel nome assegnato alla variabile
scusa okey, ma quali capitoli di upgrade dovrei leggere riguardo python?
^TiGeRShArK^
15-10-2007, 21:30
scusate, ma avete usato dei termini un pò complessi per un principiante come me. non devo lasciare nessuna lacuna altrimenti non imparerò mai come si deve a programmare. se non chiedo troppo potreste spiegarmi più semplicemente il codice che ho postato? e anche quello che ha postato tiger shark se possibile.
cmq quell'old allora sarebbe un nome della variabile scelto dal programmatore, all'inizio non lo avevo capito perchè non capivo cosa potesse significare old (poi riflettendo la guida è in inglese quindi sarà l'iniziale di qualche parola o una cosa simile) perchè a me non rispecchiava a cosa corrispondeva quel nome assegnato alla variabile
scusa okey, ma quali capitoli di upgrade dovrei leggere riguardo python?
chiedi nello specifico cosa non hai capito..
la spiegazione generale è nei commenti del codice che ho postato..
se non ti quadra qualcosa dimmi cosa ti sfugge che te la spiego :D
...scusa okey, ma quali capitoli di upgrade dovrei leggere riguardo python?...
Guide su upgrade riguardo alle istruzioni... intendevo.
Sulle guide di upgrade o in qualunque altra parte vuoi nel web trovi argomenti sulle istruzioni.
per es.:
in vb
for i=0 to 10
in c
for(i=0; i<11; i++)
in vb
if a=2 then
in c
if(a==2)
...fai
in asm
cmp a,2 ;a=2
...fai
ecc ecc altre istruzioni ognuna con il suo modo di linguaggio/interpretazione ma simili. Cosa che quando uno fà uno pseudo code tutti noi cmq capiamo come approcciare per l'algoritmo da fare.
ciao
Th3 Kn0wl3dg3
15-10-2007, 22:24
non riesco a mettere bene a fuoco la variabile di controllo del ciclo (count) che significa? e poi la prte di codice dopo while:
c = a + b
a = b
b = c
cioè mi spiego, capisco a cosa significano ma non riesco bene a metterle a fuoco, non mi torna qualche cosa. c'è qualche cosa che non afferro, forse perchè non conosco la sequenza di fibonacci...
Th3 Kn0wl3dg3
15-10-2007, 22:48
cmq cercando in rete ho trovato che == è un operatore booleano di confronto.
^TiGeRShArK^
16-10-2007, 08:42
non riesco a mettere bene a fuoco la variabile di controllo del ciclo (count) che significa? e poi la prte di codice dopo while:
c = a + b
a = b
b = c
cioè mi spiego, capisco a cosa significano ma non riesco bene a metterle a fuoco, non mi torna qualche cosa. c'è qualche cosa che non afferro, forse perchè non conosco la sequenza di fibonacci...
allora andiamo con ordine.
come ti avevo spiegato il while significa testualmente:
finchè la condizione è vera allora esegui quello che c'è dopo i due punti.
nel codice postato la condizione è che count debba essere minore di max_count.
Se count diventa maggiore o uguale a max_count allora il ciclo termina.
Quindi, in questo caso, si sta utilizzando il ciclo per ripetere un blocco di codice un numero di volte pari a max_count.
Infatti, poichè ad ogni iterazione del ciclo incrementi di 1 il valore di count, dopo 20 volte (nel nostro caso) il valore di count sarà uguale a quello di max_count e quindi il ciclo terminerà.
per il significato di:
c = a + b
a = b
b = c
invece devi capire appieno come funziona la sequenza di fibonacci.
Come abbiamo detto il numero i-esimo della sequenza (con i > 1) non è altro che la somma dei numeri i-2 e i-1.
In pratica, dato che i primi due numeri della sequenza sono 0 ed 1, il terzo numero della sequenza sarà 1 (0 + 1).
Il quarto sarà 2 (1 + 1)
il quinto sarà 3 (1 + 2)
il sesto sarà 5 (2 + 3)
il settimo sarà 8 (3 + 5)
...e così via.
Quindi come vedi per ottenere il numero che ti serve devi semplicemente sommare i due precedenti.
Cosa accade quindi in quel pezzo di codice?
c = a + b semplicemente trova il numero corrente nella sequenza facendo la somma dei due numeri precedenti.
Poichè il numero successivo sarà la somma dei due precedenti allora dobbiamo "spostarci" nella sequenza di uno, abbandonando il numero + vecchio e memorizzando il numero appena trovato.
Ed è esattamente quello che facciamo con questa parte di codice:
a = b
b = c
a era il numero + "vecchio" della sequenza, quindi lo scartiamo e memorizziamo al suo interno il numero + recente (che è b nel nostro caso).
b era il numero + recente e quindi al suo posto memorizziamo c, che è il numero appena trovato.
Ripetendo a piacere questo procedimento possiamo ottenere tutti i numeri dela sequenza di fibonacci che ci pare :p
Th3 Kn0wl3dg3
16-10-2007, 13:47
ora è tutto chiaro! non capivo proprio questo concetto dato che non conosco la sequenza di fibonacci, era proprio questo quello che non mi tornava! grazie..ora oltretutto conosco anche la sequenza di fibonacci!
^TiGeRShArK^
16-10-2007, 15:49
ora è tutto chiaro! non capivo proprio questo concetto dato che non conosco la sequenza di fibonacci, era proprio questo quello che non mi tornava! grazie..ora oltretutto conosco anche la sequenza di fibonacci!
Prima di cercare di capire il codice devi essere sicuro di aver capito completamente l'algoritmo che il codice stesso implementa, altrimenti ti sfuggirà sempre qualcosa :D
Th3 Kn0wl3dg3
16-10-2007, 20:30
errori da principiante...credete che non fa per me la programmazione?
^TiGeRShArK^
16-10-2007, 21:16
errori da principiante...credete che non fa per me la programmazione?
basta che ti impegni e non ti demoralizzi e soprattutto cerchi di capire prima del codice gli algoritmi che devono far funzionare il tutto :D
e tieni conto che io quando ho iniziato sapevo molto meno di te..
e ai tempi ancora il world wide web non era stato creato :asd:
Ora ci sono MOLTE + possibilità di apprendere la programmazione..
io ho dovuto fare tutto solo basandomi sulle mie forze e andando avanti per tentativi :p
Th3 Kn0wl3dg3
16-10-2007, 22:08
mamma mia, sarà stato difficile.. non ti capitava mai di demorallizzarti, di voler lasciare tutto?
variabilepippo
16-10-2007, 22:25
mamma mia, sarà stato difficile.. non ti capitava mai di demorallizzarti, di voler lasciare tutto?
Di solito la spinta a proseguire viene data dalla voglia di risolvere problemi, di superare i propri limiti e di imparare sempre qualcosa di nuovo, magari divertendosi anche un po'... Se hai questo tipo di motivazione allora non preoccuparti delle difficoltà iniziali, le abbiamo avute tutti! ;)
Th3 Kn0wl3dg3
16-10-2007, 22:30
se non avessi avuto questo tipo di motivazioni non avrei fatto questa scelta! io è da quando ho scoperto la programmazione (quando ero più piccolo non c'era la diffusione di notizie come ora) che me ne sono innamorato, ma forse per paura, o perchè credevo di non farcela ad arrivare ai livelli di molte altre persone anche anni più piccole di me o per altro non avevo mai iniziato. ora però ho capito che non è importante l'età perchè anche una persona grande può imparare e diventare un programmatore più bravo di quelli che programmano da molto più tempo di lui. è solo questione di avere le motivazioni che hai detto tu... o sbaglio?
se non avessi avuto questo tipo di motivazioni non avrei fatto questa scelta! io è da quando ho scoperto la programmazione (quando ero più piccolo non c'era la diffusione di notizie come ora) che me ne sono innamorato, ma forse per paura, o perchè credevo di non farcela ad arrivare ai livelli di molte altre persone anche anni più piccole di me o per altro non avevo mai iniziato. ora però ho capito che non è importante l'età perchè anche una persona grande può imparare e diventare un programmatore più bravo di quelli che programmano da molto più tempo di lui. è solo questione di avere le motivazioni che hai detto tu... o sbaglio?
Risolvere problemi... ricordalo!
La passione è quella che spinge al nostro hobby preferito.
Io ho iniziato nel 1990... 30 anni... hehehe!! Cough...! Cough...!
Ho guadagnato tanto... perchè non c'erano a quei tempi tante persone come adesso!... mi sono divertito e continuo a farlo per hobby... ma le idee sono tante e non è mai detto... che non succeda qualcosa di nuovo.
Ora basta con i romanticismi e digita, digita, digita che i polpastrelli ti devono diventare duri come quelli di un chitarrista!
E per l'età che hai penso che sarà probabilmente il tuo lavoro futuro (se hai passione)... te lo auguro di cuore!
Io faccio tutt'altro oggi ma eccomi sempre quì insieme a voi... l'età non conta nulla in programmazione.
Th3 Kn0wl3dg3
17-10-2007, 14:13
mamma mia se c'ho passione...questo mondo per me è tutto credetemi. grazie per le belle parole, grazie davvero
Th3 Kn0wl3dg3
22-10-2007, 17:59
rieccomi qua, dopo giorni tra studio e sistemazione del pc ho continuato a studiare python, sempre da questa guida: http://www.python.it/doc/Easytut/easytut-it/index.html
sono arrivato al capitolo 5 e ci sono due cose che non capisco in due esempi del libro. il primo esempio è questo:
# Chiedi un numero.
# Stampa se è pari o dispari.
number = input("Tell me a number: ")
if number % 2 == 0:
print number,"is even."
elif number % 2 == 1:
print number,"is odd."
else:
print number,"is very strange."
io vorrei che dopo che inserisco un numero il programma invece di finire continui. come dovrei impostare while per fare in modo che continui e chiedermi sempre un numero? ho provato un pò a smanettare, ma niente. mi ripete il ciclo all'infinito dopo il primo numero. forse dovrei aggiungere una variabile?
ecco il secondo esempio (in grassetto quello che non capisco molto bene):
# Continua a chiedere numeri finché non viene immesso 0.
# Stampa la media dei valori.
count = 0
sum = 0.0
number = 1 # imposta un valore, altrimenti il ciclo
# while terminerebbe immediatamente.
print "Enter 0 to exit the loop"
while number != 0:
number = input("Enter a number:")
count = count + 1
sum = sum + number
count = count - 1 # Togli un'unità all'ultimo numero.
print "The average was:",sum/count
perchè questo count+1 e count-1?ho provato a togliere count+1 e -1 ma non cambia niente, o almeno modificando count=count+1 sembra che vengano più numeri negativi, ma modificando count=count-1 non cambia niente(almeno io ho fatto più di una prova e mi sembra che non cambi niente)
rieccomi qua, dopo giorni tra studio e sistemazione del pc ho continuato a studiare python, sempre da questa guida: http://www.python.it/doc/Easytut/easytut-it/index.html
sono arrivato al capitolo 5 e ci sono due cose che non capisco in due esempi del libro. il primo esempio è questo:
# Chiedi un numero.
# Stampa se è pari o dispari.
number = input("Tell me a number: ")
if number % 2 == 0:
print number,"is even."
elif number % 2 == 1:
print number,"is odd."
else:
print number,"is very strange."
io vorrei che dopo che inserisco un numero il programma invece di finire continui. come dovrei impostare while per fare in modo che continui e chiedermi sempre un numero? ho provato un pò a smanettare, ma niente. mi ripete il ciclo all'infinito dopo il primo numero. forse dovrei aggiungere una variabile?
ecco il secondo esempio (in grassetto quello che non capisco molto bene):
# Continua a chiedere numeri finché non viene immesso 0.
# Stampa la media dei valori.
count = 0
sum = 0.0
number = 1 # imposta un valore, altrimenti il ciclo
# while terminerebbe immediatamente.
print "Enter 0 to exit the loop"
while number != 0:
number = input("Enter a number:")
count = count + 1
sum = sum + number
count = count - 1 # Togli un'unità all'ultimo numero.
print "The average was:",sum/count
perchè questo count+1 e count-1?ho provato a togliere count+1 e -1 ma non cambia niente, o almeno modificando count=count+1 sembra che vengano più numeri negativi, ma modificando count=count-1 non cambia niente(almeno io ho fatto più di una prova e mi sembra che non cambi niente)
il primo esempio (considera che non conosco python la sua sintassi):
Il programma riconosce se il numero inserito è pari o disparo se inserisci una stringa ti dice numero strano nella condizione (infatti una stringa non è un numero ma un carattere).
Il secondo:
l'hai detto tu stesso
while number != 0: commento se numero diverso da 0 continua il ciclo
number = input("Enter a number:")
se metti un numero che sia > o < 0 cicla all'infinito.
Dal ciclo infinito del while esci se digiti 0
< minore di
> maggiore di
!= da
== uguale a
<= minore o uguale
>= maggiore o uguale a
ciao
Edit: al posto di != metti i segni e il numro come ti ho descritto è vedi cosa succede
es.:
while number >= 16:
se digiti numeri fino a 15 ciclerai sempre se digiti 16 o un numero maggiore uscirai dal ciclo
Th3 Kn0wl3dg3
22-10-2007, 18:50
ehm, hai frainteso il primo esempio con il secondo. il secondo non capisco quel count+1 e count-1 e nel primo invece vorrei sapere coem fare per non fare finire il programma, ma per fare in modo che chied sempre numeri e dice se sono pari o dispari e magari per uscire dal programma si deve digitare la parola "esci"
ehm, hai frainteso il primo esempio con il secondo. il secondo non capisco quel count+1 e count-1 e nel primo invece vorrei sapere coem fare per non fare finire il programma, ma per fare in modo che chied sempre numeri e dice se sono pari o dispari e magari per uscire dal programma si deve digitare la parola "esci"
ha... scusa non avevo capito.
Per il primo esempio metti un while così che continui.
E poi si fai che metti un breack (tipo c) per uscire
chi sa di phyton ti risponderà correttamente
ciao
Th3 Kn0wl3dg3
22-10-2007, 20:14
scusa okay, ma non ho capito molto bene. aspetterò qualcuno che sa di python, grazie lo stesso comunque
marko.fatto
22-10-2007, 20:31
Per il primo fai un ciclo che continui finchè non viene inserito ad esempio esci
# Chiedi un numero.
# Stampa se è pari o dispari.
number="ciao"
while number != "esci"
number = input("Tell me a number: ")
if number % 2 == 0:
print number,"is even."
elif number % 2 == 1:
print number,"is odd."
else:
print number,"is very strange."
EDIT: nel secondo il +1 serve per aumentare la quantità di numeri inseriti... il -1 serve per diminuire dalla quantità di numeri inseriti l'ultimo che serve per terminare cioè lo zero...
Th3 Kn0wl3dg3
23-10-2007, 06:11
vero!!come ho fatto a non pensarci prima?!?!come?!non avevo pensato che mi bastava dare un valore alla variabile e mettere il while!forse non ero molto lucido visto che avevo studiato per scuola e poi il resto del pomeriggio al computer a studiare python.ero un pò stanco..
ancora però non capisco il count+1 e -1. cioè io ho provato a toglierli e non succede niente, il programma funziona bene lo stesso...
^TiGeRShArK^
23-10-2007, 09:01
ancora però non capisco il count+1 e -1. cioè io ho provato a toglierli e non succede niente, il programma funziona bene lo stesso...
:mbe:
ma hai capito cosa dovrebbe fare quel programma? :fagiano:
calcola la media aritmetica della sequenza dei numeri da te inserita.
Come si calcola la media aritmetica?
si fa la somma dei numeri inseriti e si divide per il numero totale di elementi della sequenza di cui sopra.
in pratica, espresso in formulazione un pò + matematica:
media = sommatoria per i che va da 1 ad n di Xi / n
che tradotto in termini + comprensibili significa:
media = (a + b + c + d + ... n)/numero di elementi
Quindi per ottenere la media tra 2, 4 e 6 devi fare:
media = (2 + 4 + 6)/3 #poichè 3 è il numero di elementi della sequenza inserita.
quindi:
media = 12 / 3 = 4
Ora che hai capito come si usa la funzione matematica che devi implementare ti tocca sviluppare un algoritmo opportuno.
Un algoritmo (detto così alla buona) non è altro che la suddivisione di un problema in una sequenza di sottoproblemi o passi elementari.
Cosa dovresti fare per risolvere il tuo problema?
semplicemente ricevere in input una sequenza indefinita di numeri (dato che a priori non sai quanti sono), sommarli tutti, dividere la somma per il loro numero totale e infine stamparli sullo schermo.
ho evidenziato ovviamente i passi chiave che poi saranno quelli che, come hai potuto vedere, sono tutti presenti all'interno del programma che hai postato.
Quindi, proviamo ragionando a scrivere i passi necessari a risolvere il problema.
inizializziamo la variabile numeri_inseriti a zero
inizializziamo la variabile somma a zero
chiediamo all'utente di inserire il numero memorizzandolo nella variabile n
se n è diversa da zero vai avanti altrimenti compi le operazioni finali ed esci
incrementiamo di 1 il valore di numeri_inseriti
sommiamo al valore di somma il valore corrente di n
chiediamo all'utente di inserire il numero memorizzandolo nella variabile n
se n è diversa da zero vai avanti altrimenti compi le operazioni finali ed esci
incrementiamo di 1 il valore di numeri_inseriti
sommiamo al valore di somma il valore corrente di n
chiediamo all'utente di inserire il numero memorizzandolo nella variabile n
se n è diversa da zero vai avanti altrimenti compi le operazioni finali ed esci
incrementiamo di 1 il valore di numeri_inseriti
sommiamo al valore di somma il valore corrente di n
.........................
operazioni finali:
dividi il valore di somma per il numero di elementi inseriti dall'utente
stampa il risultato
Come vedi in questa versione non ho utilizzato alcun ciclo però si presuppone la presenza di una quantità infinita di codice sempre ripetuto per richiedere all'utente il nuovo numero.
Un ciclo ti semplifica il problema.
Non è altro che una scrittura + compatta dello stesso codice e ti permette di dire quante volte vuoi che sia eseguita l'operazione al'interno del ciclo.
Tendenzialmente potresti eseguirla anche un numero indefinito di volte fino al verificarsi di una condizione.
Perchè ho evidenziato la parola fino?
while in inglese significa mentre, fino a che.
Quindi proviamo un attimo a scrivere l'algoritmo di cui sopra utilizzando python:
#iniziallizziamo le variabili
numeri_inseriti = 0
somma = 0.0
number = 1 #numero che l'utente inserirà inizializzato ad un valore diverso da 0 in modo da no far terminare immediatamente il ciclo.
#spieghiamo all'utente come funziona il programma, quindi lo avvertiamo di inserire 0 per terminare la sequenza di numeri e per ottenere il risultato e uscire
print "Enter 0 to exit the loop"
while number != 0: #fino a che il numero inserito è diverso da 0 esegui:
number = input("Enter a number:") #chiede all'utente un numero e lo inserisce nella variabile number
numeri_inseriti = numeri_inseriti + 1
somma = somma + number
numeri_inseriti = numeri_inseriti - 1 #poichè l'ultimo numero inserito è stato zero (altrimenti non saremmo in questo punto del codice) occorre decrementare il numero di elementi della sequenza di uno dato che nel nostro calcolo non andremo a considerare l'ultimo numero inserito.
print "The average was:",somma / numeri_inseriti #stampa a schermo il risultato.
Th3 Kn0wl3dg3
23-10-2007, 13:06
tutto quello che hai detto lo sapevo già e lo avevo capito. sapevo come si faceva la media aritmetica, sapevo cosa faceva il programma, ma non capivo bene quel count (anche perchè era in inglese e non sapevo il significato) ora con il tuo esempio è tutto chiaro. grazie, sei stato molto genitle e sopratutto molto esauriente. ma all'inizio tutti avete avuto queste difficoltà? oppure sono io l'ignorante?
^TiGeRShArK^
23-10-2007, 13:10
tutto quello che hai detto lo sapevo già e lo avevo capito. sapevo come si faceva la media aritmetica, sapevo cosa faceva il programma, ma non capivo bene quel count (anche perchè era in inglese e non sapevo il significato) ora con il tuo esempio è tutto chiaro. grazie, sei stato molto genitle e sopratutto molto esauriente. ma all'inizio tutti avete avuto queste difficoltà? oppure sono io l'ignorante?
pensavo che non avessi capito cosa facesse il programma perchè avevi scritto che togliendo il count ti funzionava lo stesso :fagiano:
(infatti una stringa non è un numero ma un carattere). e questa invece è una perla :asd:
Th3 Kn0wl3dg3
23-10-2007, 14:44
ma sono solo io che ho queste difficoltà o ci siete passati tutti?
^TiGeRShArK^
23-10-2007, 16:05
ma sono solo io che ho queste difficoltà o ci siete passati tutti?
mmmm..
sinceramente non è che mi ricordi poi tanto bene :fagiano:
saranno passati 17 anni da quando ho iniziato a muovere i primi passi con la programmazione :stordita:
comunque un pò di difficoltà mi pare piuttosto vagamente di avere avute...
anzi..
ora che mi ricordo certe volte quando avevo un problema se ci pensavo non risolvevo una mazza..
poi durante il sonno due o tre giorni dopo il mio cervello lavorava e mi svegliavo con la soluzione :D
ai tempi ancora internet non esisteva e quindi non è che fosse proprio facile chiedere aiuto a qualcuno .... quindi i problemi me li dovevo risolvere da me :p
Cerca anche tu di scervellarti su un problema e solo quando proprio non riesci a venirne a capo chiedi aiuto, altrimenti non imparerai mai fino in fondo ;)
Ziosilvio
23-10-2007, 16:10
non ti capitava mai di demorallizzarti, di voler lasciare tutto?
Un sacco di volte.
E ci siamo passati tutti.
La differenza, è che noi siamo riusciti ogni volta a vincere lo scoraggiamento e a superare i problemi.
Di fatto, è l'unica parte che richiede veramente un grosso sforzo; il resto, è questione di pratica (tanta) e pazienza.
e questa invece è una perla :asd:
errore...;)
perla è un dato inconfutabile
o numeri o stringhe di caratteri.
Ti spiego meglio:
Un computer, in sè per sè è molto stupido, è solo incredibilmente diligente. Si è soliti dire che solo chi è molto stupido è molto diligente. Infatti questa macchina non sa contare fino a tre e nemmeno fino a 2. Ma conosce soltanto lo 0 e l'1. Lo stato di ciò è che i circuiti elettrici di cui un computer è composto possono accettare solo due stati, cioè tensione presente o tensione assente, corrente che passa o che non passa.
poi
i valori di variabili di tipo char sono interpretati come numeri interi.
char jenny [20];
può memorizzare una stringa di al più 20 caratteri.
L'array jenny si può usare per memorizzare sia la stringa di 5 caratteri "Hello" sia la stringa di 15 caratteri "Merry Christmas".
p.s. la prossima volta apri un 3d nuovo per il tuo tipo di quesito.
Th3 Kn0wl3dg3
23-10-2007, 20:05
:confused: :confused: :confused: :confused: :confused:
cmq grazie del consiglio tigershark
errore...;)
Ti spiego meglio:
io nacqui il 13 Luglio 1985 a Roma da genitori romani; all'età di 6 anni iniziai a frequentare la scuola elementare presso le Suore del Cardinal Guarino, dalla quale uscii all'età di 10 anni per poi [...]
errore...;)
...dalla quale uscii all'età di 10 anni per...
solo 4 anni?... per buona condotta ti hanno rilasciato.
Python è un bel linguaggio
solo 4 anni?... per buona condotta ti hanno rilasciato. ah è vero, dimenticavo che poiché una stringa è un carattere (e non un numero) di conseguenza 10 - 5 fa 4 :asd:
ah è vero, dimenticavo che poiché una stringa è un carattere (e non un numero) di conseguenza 10 - 5 fa 4 :asd:
ullallà, ho appena trovato un bug nel programma Calcolatrice di Windows :D
Th3 Kn0wl3dg3
24-10-2007, 06:07
:confused: :confused: :confused: :confused: :confused: :confused:
:confused: :confused: :confused: :confused: :confused: :confused:
tranquillo Th3 Kn0wl3dg3... post per esorcizzare la strizza.
La roma ha vinto 2-1 con lo sporting e oggi alle 11 aprirà da paura...
stamani gran gain... yyeeehhhaaaa!!!!;) ;)
^TiGeRShArK^
24-10-2007, 08:30
:confused: :confused: :confused: :confused: :confused: :confused:
tranquillo hanno fumato pesante mi sa :asd:
e passatela se è robbba 'bbona ahò :O
:asd:
tranquillo hanno fumato pesante mi sa :asd:
e passatela se è robbba 'bbona ahò :O
:asd:
;) ;) ;)
tranquillo hanno fumato pesante mi sa :asd: io lo stavo solo assecondando per paura che diventasse violento http://forums.nsn3.net/style_emoticons/default/53.gif
Th3 Kn0wl3dg3
24-10-2007, 12:45
cambiate spacciatore...:ciapet:
Th3 Kn0wl3dg3
25-10-2007, 20:57
mi sono "fermato", se cosi si può dire, un pò dal studiare python. perchè? semplice perchè ho installato ubuntu e debian e devo riuscire a configurare il modem sia del fisso che del portatile per poi continuare a studiare e a scrivere codice su linux. però, in classe, leggendo la guida che sto studiando, mi è venuto un piccolo "complesso". stavo leggendo il capitolo 5.3, quello dove ci sono gli esercizi da svolgere, e ho iniziato a riflettere. sento una brutta sensazione addosso, mi chiedo se riuscirò mai a programmare dato che non so nemmeno svolgere questi esercizietti di fine capitolo. forse non sono portato per la programmazione.. forse non ho la testa e il cervello per imparare a programmare, per fare il programmatore. forse non c'è l'ho nel sangue o altro. nel mondo ci sono migliaia e migliaia di programmatori professionisti, che vengono pagati per fare quello che amano, ma anche programmatori che non lo possono fare per lavoro ma che ogni secondo libero delle loro giornate lo dedicano alla programmazione perchè la amano, scrivendo programmi per sè, per mettere alla prova la loro bravura, per superare se stessi e anche per aiutare la comunità scrivendo programmi liberi, contribuendo allo sviluppo e alla crescita di linux e del software open source... e io? io riuscirò mai a fare quello ke desidero?
^TiGeRShArK^
25-10-2007, 21:42
mi sono "fermato", se cosi si può dire, un pò dal studiare python. perchè? semplice perchè ho installato ubuntu e debian e devo riuscire a configurare il modem sia del fisso che del portatile per poi continuare a studiare e a scrivere codice su linux. però, in classe, leggendo la guida che sto studiando, mi è venuto un piccolo "complesso". stavo leggendo il capitolo 5.3, quello dove ci sono gli esercizi da svolgere, e ho iniziato a riflettere. sento una brutta sensazione addosso, mi chiedo se riuscirò mai a programmare dato che non so nemmeno svolgere questi esercizietti di fine capitolo. forse non sono portato per la programmazione.. forse non ho la testa e il cervello per imparare a programmare, per fare il programmatore. forse non c'è l'ho nel sangue o altro. nel mondo ci sono migliaia e migliaia di programmatori professionisti, che vengono pagati per fare quello che amano, ma anche programmatori che non lo possono fare per lavoro ma che ogni secondo libero delle loro giornate lo dedicano alla programmazione perchè la amano, scrivendo programmi per sè, per mettere alla prova la loro bravura, per superare se stessi e anche per aiutare la comunità scrivendo programmi liberi, contribuendo allo sviluppo e alla crescita di linux e del software open source... e io? io riuscirò mai a fare quello ke desidero?
se ti fai queste mille seghe mentali e ti arrendi alla prima difficoltà sicuramente no :O
Un programmatore è nato per risolvere problemi... non per crearsi problemi che non esistono e che possono essere risolti con un pò di forza di volontà e un pizzico di esercizio ;)
Th3 Kn0wl3dg3
26-10-2007, 06:10
hai ragione, forse il mio problema è ke devo imparare come ragione un programmatore.. già mi sembra difficilissimo fare questi esercizietti poi a pensare a tutti quei programmatori che fanno dei pogrammi potenti e complessi e che danno degli enormi contributi alla comunità (qualsiasi comunità) e che sono rispettati da tutti mi sento una formica in confronto. ad esempio che ragionamento dovrei fare per svolgere questo esercizio?
Scrivete un programma che chieda all'utente di indovinare una password, ma che dia al giocatore solamente 3 possibilità, fallite le quali il programma terminerà, stampando ``È troppo complicato per voi''.
o questo?
Scrivete un programma che chieda due numeri. Se la somma dei due numeri supera 100, stampate ``Numero troppo grande''.
oppure quest'altro?
Scrivete un programma che chieda all'utente il nome. Se viene inserito il vostro nome, il programma dovrà rispondere con un ``Questo è un bel nome'', se il nome inserito è "John Cleese" o "Michel Palin" il programma dovrà rispondere con una battuta ;) mentre in tutti gli altri casi l'output del programma sarà un semplice ``Tu hai un bel nome!''.
mad_hhatter
26-10-2007, 08:36
hai ragione, forse il mio problema è ke devo imparare come ragione un programmatore.. già mi sembra difficilissimo fare questi esercizietti poi a pensare a tutti quei programmatori che fanno dei pogrammi potenti e complessi e che danno degli enormi contributi alla comunità (qualsiasi comunità) e che sono rispettati da tutti mi sento una formica in confronto. ad esempio che ragionamento dovrei fare per svolgere questo esercizio?
Scrivete un programma che chieda all'utente di indovinare una password, ma che dia al giocatore solamente 3 possibilità, fallite le quali il programma terminerà, stampando ``È troppo complicato per voi''.
o questo?
Scrivete un programma che chieda due numeri. Se la somma dei due numeri supera 100, stampate ``Numero troppo grande''.
oppure quest'altro?
Scrivete un programma che chieda all'utente il nome. Se viene inserito il vostro nome, il programma dovrà rispondere con un ``Questo è un bel nome'', se il nome inserito è "John Cleese" o "Michel Palin" il programma dovrà rispondere con una battuta ;) mentre in tutti gli altri casi l'output del programma sarà un semplice ``Tu hai un bel nome!''.
no, devi smettere di chiederti come ragionerebbe un programmatpre al tuo posto e smettere di pensare per un attimo al codice... e soprattutto smetti di aver paura di non essere capace!
pensa di dover spiegare a un'altra persona cosa deve fare, passo passo... e soprattutto: pensa in modo semplice... il codice viene DOPO, non prima della soluzione
^TiGeRShArK^
26-10-2007, 08:36
hai ragione, forse il mio problema è ke devo imparare come ragione un programmatore.. già mi sembra difficilissimo fare questi esercizietti poi a pensare a tutti quei programmatori che fanno dei pogrammi potenti e complessi e che danno degli enormi contributi alla comunità (qualsiasi comunità) e che sono rispettati da tutti mi sento una formica in confronto. ad esempio che ragionamento dovrei fare per svolgere questo esercizio?
Scrivete un programma che chieda all'utente di indovinare una password, ma che dia al giocatore solamente 3 possibilità, fallite le quali il programma terminerà, stampando ``È troppo complicato per voi''.
o questo?
Scrivete un programma che chieda due numeri. Se la somma dei due numeri supera 100, stampate ``Numero troppo grande''.
oppure quest'altro?
Scrivete un programma che chieda all'utente il nome. Se viene inserito il vostro nome, il programma dovrà rispondere con un ``Questo è un bel nome'', se il nome inserito è "John Cleese" o "Michel Palin" il programma dovrà rispondere con una battuta ;) mentre in tutti gli altri casi l'output del programma sarà un semplice ``Tu hai un bel nome!''.
pensaci un pò e vedrai che con i costrutti che hai studiato finora riesci a trovare la soluzione :p
se ogni volta che devi risolvere un problema vieni a chiedere sul forum non imparerai mai a risolverli ;)
se posso mi azzardo a consigliarti l'uso dei diagrammi di flusso. mi sembra di notare che ti mancano ancora dei concetti basilari, perciò forse è il caso di partire da più in basso. prova a leggere questa che è proprio una guida alla programmazione di base che più base non si può http://programmazione.html.it/guide/leggi/36/guida-programmazione-di-base/
non so se ci sono guide migliori, comunque ci ho dato un'occhiata e non sembra fatta male. il consiglio è di non passare al capitolo successivo finchè non hai capito alla perfezione quello corrente (san Google è con te ;) )
EDIT: quando la guida fa riferimento a C/C++ e non capisci come questo si applica a python chiedi che ti sarà chiarito
mad_hhatter
26-10-2007, 11:10
se posso mi azzardo a consigliarti l'uso dei diagrammi di flusso. mi sembra di notare che ti mancano ancora dei concetti basilari, perciò forse è il caso di partire da più in basso. prova a leggere questa che è proprio una guida alla programmazione di base che più base non si può http://programmazione.html.it/guide/leggi/36/guida-programmazione-di-base/
non so se ci sono guide migliori, comunque ci ho dato un'occhiata e non sembra fatta male. il consiglio è di non passare al capitolo successivo finchè non hai capito alla perfezione quello corrente (san Google è con te ;) )
EDIT: quando la guida fa riferimento a C/C++ e non capisci come questo si applica a python chiedi che ti sarà chiarito
cavolo, i diagrammi di flusso!!! bravissimo, bel consiglio... me li ero completamente dimenticati, ma per chi inizia sono fantastici
PS: come volevasi dimostrare (ricordo l'altro thread) buttarsi subito su un linguaggio aiuta solo a fare più confusione: prima bisogna acquisire l'approccio mentale alla programmazione...
^TiGeRShArK^
26-10-2007, 13:06
cavolo, i diagrammi di flusso!!! bravissimo, bel consiglio... me li ero completamente dimenticati, ma per chi inizia sono fantastici
PS: come volevasi dimostrare (ricordo l'altro thread) buttarsi subito su un linguaggio aiuta solo a fare più confusione: prima bisogna acquisire l'approccio mentale alla programmazione...
:mbe:
io ho iniziato direttamente col BASIC... :fagiano:
...ma in effetti mi sa che non faccio testo dato che all'univ ero anche l'unico che svolgeva i compiti d'esame direttamente in Ladder anzichè scriverli prima in SFC e poi tradurli :asd:
Th3 Kn0wl3dg3
26-10-2007, 13:56
ma come fai tigershark?
marko.fatto
26-10-2007, 14:03
cavolo, i diagrammi di flusso!!! bravissimo, bel consiglio... me li ero completamente dimenticati, ma per chi inizia sono fantastici
Io ho iniziato col C...
ho una repulsione innata verso diagrammi di flusso pseudocidice ecc...:fagiano:
ma come fai tigershark? a fare che...? :wtf:
^TiGeRShArK^
26-10-2007, 14:04
ma come fai tigershark?
Mi sono montato un interfaccia RS232/c direttamente nel cervello poi upgradata in una IEEE 1394 :O
:asd:
basta che ti metti a cercare di CAPIRE le cose ;)
^TiGeRShArK^
26-10-2007, 14:04
a fare che...? :wtf:
eh.. sapessi :cool:
:asd:
mad_hhatter
26-10-2007, 14:23
Io ho iniziato col C...
ho una repulsione innata verso diagrammi di flusso pseudocidice ecc...:fagiano:
motivo?
marko.fatto
26-10-2007, 14:28
motivo?
Non lo so:stordita:
Tipo in 5 minuti faccio i soliti esercizi del cavolo che ci danno da fare per scuola direttamente in codice... quando dopo provo a fare l'esercizio con i diagrammi di flusso passo mezz'ora per concludere con un gran casino:muro:
mad_hhatter
26-10-2007, 14:53
Non lo so:stordita:
Tipo in 5 minuti faccio i soliti esercizi del cavolo che ci danno da fare per scuola direttamente in codice... quando dopo provo a fare l'esercizio con i diagrammi di flusso passo mezz'ora per concludere con un gran casino:muro:
lo pseudo codice è codice semplificato, quindi se ci metti 5 minuti a scrivere codice corretto, non penso ci possa mettere di più a scrivere pseudo codice...
se riesci a rappresentarti mentalmente la sequenza di istruzioni singole da scrivere a maggior ragione dovresti avere in testa i macroblocchi principali (alias diagramma di flusso)...
se poi il problema è il formalismo grafico è un altro discorso :)
marko.fatto
26-10-2007, 15:01
lo pseudo codice è codice semplificato, quindi se ci metti 5 minuti a scrivere codice corretto, non penso ci possa mettere di più a scrivere pseudo codice...
se riesci a rappresentarti mentalmente la sequenza di istruzioni singole da scrivere a maggior ragione dovresti avere in testa i macroblocchi principali (alias diagramma di flusso)...
se poi il problema è il formalismo grafico è un altro discorso :)
Col pseudo codice finisco per scrivere sempre codice...
Con i diagrammi di flusso è sempre una ragnatela di frecce linee ecc.. come negli schemi elettrici , se me li immagino e basta risolvo il problema , se provo a rappresentarli mi pianto...
mindwings
26-10-2007, 17:01
Col pseudo codice finisco per scrivere sempre codice...
Con i diagrammi di flusso è sempre una ragnatela di frecce linee ecc.. come negli schemi elettrici , se me li immagino e basta risolvo il problema , se provo a rappresentarli mi pianto...
Se odi i diagrammi di flusso puoi sempre usare questi diagrammi
http://en.wikipedia.org/wiki/Nassi-Shneiderman_diagram
in rete puoi trovare varie dispense :)
Th3 Kn0wl3dg3
26-10-2007, 17:18
il problema è proprio questo, CAPIRE le cose. forse mi arrendo subito senza nemmeno ragionare.. ma voi che difficoltà avete dovuto superare quando avete iniziato a programmare? adesso lo fate per lavoro anche o solo per hobby?
io i diagrammi di flusso li ho sempre ignorati perchè facevo prima a scrivere il codice, ma so che sono utili per chi non aveva un 286 sul ripiano del seggiolone :asd: scherzo ovviamente :p
non ti chiedere che difficoltà hanno avuto gli altri.. pensa a quelle che hai te e superale
marko.fatto
26-10-2007, 17:48
io i diagrammi di flusso li ho sempre ignorati perchè facevo prima a scrivere il codice, ma so che sono utili per chi non aveva un 286 sul ripiano del seggiolone :asd: scherzo ovviamente :p
non ti chiedere che difficoltà hanno avuto gli altri.. pensa a quelle che hai te e superale
qualcuno che mi capisce:cincin:
mad_hhatter
26-10-2007, 18:04
il problema è proprio questo, CAPIRE le cose. forse mi arrendo subito senza nemmeno ragionare.. ma voi che difficoltà avete dovuto superare quando avete iniziato a programmare? adesso lo fate per lavoro anche o solo per hobby?
lavoro, ma sono laureato da meno di un anno in ing info e quindi ho ancora TANTO da imparare! però adoro la sensazione di partire da un problema che non so da parte prendere e sentire che piano piano tutti i tasselli vanno al loro posto per scoprire alla fine che E' SEMPRE PIU' SEMPLICE DI QUANTO SEMBRASSE.
quindi, fatti un favore, smetti di preoccuparti di avere o meno le doti per risolvere i problemi, smetti di pensare al codice e smetti di pensare che il problema sia al di là delle tue capacità. ragiona in maniera semlpice, prendi il problema e, all'inizio, ignora i dettagli: soffermati sul quadro generale, le sottigliezze le risolvi dopo aver capito a grandi linee cose devi fare. pensa di dover risolvere il problema TU, A MANO. il computer viene dopo.
davvero, dai tuoi post emerge un atteggiamento che avevo anch'io e che è sbagliatissimo: il senso di inferiorità non aiuta MAI. è difficile? c'è gente che lo saprebbe risolvere in 2 minuti? ok, va bene... quando anche tu l'avrai risolto (e lo risolverai, tranquillo) farai tesoro di una nuova esperienza e la prossima volta ci metterai anche tu 2 minuti. non farti fretta: l'esperienza si acquisisce col tempo e con la fatica... e per andare a fondo nelle cose ci vuole anche più tempo.
certo, c'è sempre qualcuno più bravo o una soluzione più elegante: questa consapevolezza non deve frenarti, anzi, deve spronarti a dare sempre il meglio e a cercare di migliorarti continuamente.
andiamo, hai appena cominciato, non essere troppo duro con te stesso: smettila di aver paura e affronta un esercizio alla volta con calma e tenacia. credimi, alla fine riderai di te stesso per quanto è semplice :)
mad_hhatter
26-10-2007, 18:08
qualcuno che mi capisce:cincin:
ma guarda che anch'io li ignoro :)
ma per un principiante a volte sono davvero ciò che ci vuole
^TiGeRShArK^
26-10-2007, 20:25
il problema è proprio questo, CAPIRE le cose. forse mi arrendo subito senza nemmeno ragionare.. ma voi che difficoltà avete dovuto superare quando avete iniziato a programmare? adesso lo fate per lavoro anche o solo per hobby?
è proprio questo il problema ;)
Hai un problema da risolvere?
bene.
alzati le maniche e datti da fare fino a che non hai trovato una soluzione.
La programmazione è basata SOLO sulla risoluzione dei problemi.
Se ogni volta che hai un problema che ti sembra insormontabile ti scoraggi e vieni a lamentarti qui sul forum fidati che non ne usicrai mai :p
Torna a risolvere problemi e a cercare di capire COME risolverli che nessuno ti può spiegare come si fa, ma devi essere tu a capirlo :D
è un pò come quando vai per strada in una città che non conosci e usi un navigatore satellitare.
Arrivi sempre ovunque tu voglia con la'usilio del navigatore (che in quest'esempio corrisponde al forum), ma se per caso ti trovi senza navigatore non sai dove sbattere la testa (quindi non sai come risolvere il problema).
Se invece viaggi senza navigatore, inizialmente ti perderai continuamente, ma dopo un pò (un bel pò :p) di volte che ti sei perso inizi a capire come funzionano le cose e come fare ad orientarti (come fare a risolvere i problemi).
Quindi ascolta il consiglio di un cojons...
SPEGNI il forum e usalo solo per postare i problemi che hai risolto.
Non per farti dare una mano per quelli che non riesci a risolvere ;)
x Th3 Kn0wl3dg3
io inizia con il basic con un compilatore basic che stava su un solo dischetto all'epoca e lavoravo con l'amiga 500...
feci un programma per totocalcio, internet non c'èra ancora, con routine ritagliate da pagine di giornale, ancora mi ricordo, era una rubrica della schedina "byte e risposta"... ebbene la routine che mi mancava era la riduzione per il 12 al totocalcio.
Partii per le ferie e non avendo il pc e il programma sotto mano il pomeriggio prendevo carta e penna e a mano mi scrivevo lo sviluppo di 4 doppie al totocalcio integrali poi partendo dalla prima colonna andavo ad eliminare le colonne che corrispondevano al 12 fino a raggiungere la riduzione colonnare per il dodici.
Trovai il modo su carta è poi quando tornai dalle ferie a casa sviluppai quello che avevo fatto su carta... non puoi capire che "siddisfazione" aver trovato l'algoritmo per ridurre le colonne al totocalcio e cmq valeva anche per tutti gli altri giochi a pronosatico!!
pensa che per ridurre 6 doppie integrali il mio "amiga", in basic, impegava 6 minuti... ma che soddisfazione!!!!
Th3 Kn0wl3dg3
27-10-2007, 13:07
lavoro, ma sono laureato da meno di un anno in ing info e quindi ho ancora TANTO da imparare! però adoro la sensazione di partire da un problema che non so da parte prendere e sentire che piano piano tutti i tasselli vanno al loro posto per scoprire alla fine che E' SEMPRE PIU' SEMPLICE DI QUANTO SEMBRASSE.
quindi, fatti un favore, smetti di preoccuparti di avere o meno le doti per risolvere i problemi, smetti di pensare al codice e smetti di pensare che il problema sia al di là delle tue capacità. ragiona in maniera semlpice, prendi il problema e, all'inizio, ignora i dettagli: soffermati sul quadro generale, le sottigliezze le risolvi dopo aver capito a grandi linee cose devi fare. pensa di dover risolvere il problema TU, A MANO. il computer viene dopo.
davvero, dai tuoi post emerge un atteggiamento che avevo anch'io e che è sbagliatissimo: il senso di inferiorità non aiuta MAI. è difficile? c'è gente che lo saprebbe risolvere in 2 minuti? ok, va bene... quando anche tu l'avrai risolto (e lo risolverai, tranquillo) farai tesoro di una nuova esperienza e la prossima volta ci metterai anche tu 2 minuti. non farti fretta: l'esperienza si acquisisce col tempo e con la fatica... e per andare a fondo nelle cose ci vuole anche più tempo.
certo, c'è sempre qualcuno più bravo o una soluzione più elegante: questa consapevolezza non deve frenarti, anzi, deve spronarti a dare sempre il meglio e a cercare di migliorarti continuamente.
andiamo, hai appena cominciato, non essere troppo duro con te stesso: smettila di aver paura e affronta un esercizio alla volta con calma e tenacia. credimi, alla fine riderai di te stesso per quanto è semplice :)
è proprio questo il problema
Hai un problema da risolvere?
bene.
alzati le maniche e datti da fare fino a che non hai trovato una soluzione.
La programmazione è basata SOLO sulla risoluzione dei problemi.
Se ogni volta che hai un problema che ti sembra insormontabile ti scoraggi e vieni a lamentarti qui sul forum fidati che non ne usicrai mai
Torna a risolvere problemi e a cercare di capire COME risolverli che nessuno ti può spiegare come si fa, ma devi essere tu a capirlo
è un pò come quando vai per strada in una città che non conosci e usi un navigatore satellitare.
Arrivi sempre ovunque tu voglia con la'usilio del navigatore (che in quest'esempio corrisponde al forum), ma se per caso ti trovi senza navigatore non sai dove sbattere la testa (quindi non sai come risolvere il problema).
Se invece viaggi senza navigatore, inizialmente ti perderai continuamente, ma dopo un pò (un bel pò ) di volte che ti sei perso inizi a capire come funzionano le cose e come fare ad orientarti (come fare a risolvere i problemi).
Quindi ascolta il consiglio di un cojons...
SPEGNI il forum e usalo solo per postare i problemi che hai risolto.
Non per farti dare una mano per quelli che non riesci a risolvere
grazite, ci proverò. è che a parole sembra facile ma a fatti..
io inizia con il basic con un compilatore basic che stava su un solo dischetto all'epoca e lavoravo con l'amiga 500...
feci un programma per totocalcio, internet non c'èra ancora, con routine ritagliate da pagine di giornale, ancora mi ricordo, era una rubrica della schedina "byte e risposta"... ebbene la routine che mi mancava era la riduzione per il 12 al totocalcio.
Partii per le ferie e non avendo il pc e il programma sotto mano il pomeriggio prendevo carta e penna e a mano mi scrivevo lo sviluppo di 4 doppie al totocalcio integrali poi partendo dalla prima colonna andavo ad eliminare le colonne che corrispondevano al 12 fino a raggiungere la riduzione colonnare per il dodici.
Trovai il modo su carta è poi quando tornai dalle ferie a casa sviluppai quello che avevo fatto su carta... non puoi capire che "siddisfazione" aver trovato l'algoritmo per ridurre le colonne al totocalcio e cmq valeva anche per tutti gli altri giochi a pronosatico!!
pensa che per ridurre 6 doppie integrali il mio "amiga", in basic, impegava 6 minuti... ma che soddisfazione!!!!
non ho capito molto bene alcuni termini, ma complimenti lo stesso! so che porta grandi soddisfazioni perchè io anche semplicemente a svolgere da solo gli esercizietti dei capitoli precedenti ero molto felice e soddisfatto. quindi pensa quando si risolvono problemi più difficili e si riescono a scrivere programmi che usiamo nella vita informatica di tutti i giorni...
Th3 Kn0wl3dg3
29-10-2007, 18:15
CE L'HO FATTA!!!!ho risolto il primo esercizio 5.3, quello della pass!!!! ecco il codice, ditemi cosa ne pensate:
password="ciao"
tentativi=3
while password != "indovina":
password = raw_input("Inserisci una password:")
tentativi = tentativi-1
if tentativi == 0:
print "Troppo difficile per voi!"
l'ho scritto questa mattina a scuola sul quaderno di mate dato che mi stavo annoiando a morte ad ascoltare la lezione!!!
CE L'HO FATTA!!!!ho risolto il primo esercizio 5.3, quello della pass!!!! ecco il codice, ditemi cosa ne pensate:
password="ciao"
tentativi=3
while password != "indovina":
password = raw_input("Inserisci una password:")
tentativi = tentativi-1
if tentativi == 0:
print "Troppo difficile per voi!"
l'ho scritto questa mattina a scuola sul quaderno di mate dato che mi stavo annoiando a morte ad ascoltare la lezione!!!
non male! ma c'è solo un problemino.. il ciclo while non si interrompe una volta che hai esaurito i 3 tentativi :stordita:
forza ci sei vicino :D
Th3 Kn0wl3dg3
29-10-2007, 19:12
infatti stavo per dire proprio questo! ho provato ad aggiungere una piccola "chicca" al codice, ecco:
password="ciao"
tentativi=3
while password != "indovina":
password = raw_input("Inserisci una password:")
tentativi = tentativi-1
if tentativi == 0:
print "Troppo difficile per voi!"
print "Bravo, hai indovinato la pass!"
il problema è sempre quello che avevo prima e che hai detto anche tu, cioè che il ciclo while non si interrompe una volta che ho esaurito i tre tentativi...
infatti stavo per dire proprio questo! ho provato ad aggiungere una piccola "chicca" al codice, ecco:
password="ciao"
tentativi=3
while password != "indovina":
password = raw_input("Inserisci una password:")
tentativi = tentativi-1
if tentativi == 0:
print "Troppo difficile per voi!"
print "Bravo, hai indovinato la pass!"
il problema è sempre quello che avevo prima e che hai detto anche tu, cioè che il ciclo while non si interrompe una volta che ho esaurito i tre tentativi...
Beh, se vuoi che il ciclo while si interrompa ANCHE quando esaurisci i tentativi non hai che da "dirglielo" ! Ovviamente devi cambiare anche la print, perche' se esci dal ciclo perche' hai finito i tentativi e' un conto, se esci perché' hai indovinato la password e' un altro.
l'ho scritto questa mattina a scuola sul quaderno di mate dato che mi stavo annoiando a morte ad ascoltare la lezione!!!
:nonsifa:
La matematica è importante per un programmatore (o programmatrice ? :confused:). La prossima volta aspetta l'ora di italiano, o di inglese :D.
marko.fatto
29-10-2007, 20:03
:nonsifa:
La matematica è importante per un programmatore (o programmatrice ? :confused:). La prossima volta aspetta l'ora di italiano, o di inglese :D.
Ma quelle vanno bene per riposare le meningi:ronf:
Tornando IT forse ti conviene provare a schematizzare gli es con i diagrammi a blocchi e poi trasformarli in linguaggio...
EDIT:100mex:yeah:
Th3 Kn0wl3dg3
29-10-2007, 21:02
:nonsifa:
La matematica è importante per un programmatore (o programmatrice ? :confused:). La prossima volta aspetta l'ora di italiano, o di inglese :D.
sono maschio!cmq stava interrogando e poi ha fatto ripasso per gli assenti!
Tornando IT forse ti conviene provare a schematizzare gli es con i diagrammi a blocchi e poi trasformarli in linguaggio...
ho letto qualcosa sui diagrammi di flusso, ma sinceramente mi viene più semplice schematizzare i passaggi nella mia mente
Beh, se vuoi che il ciclo while si interrompa ANCHE quando esaurisci i tentativi non hai che da "dirglielo" ! Ovviamente devi cambiare anche la print, perche' se esci dal ciclo perche' hai finito i tentativi e' un conto, se esci perché' hai indovinato la password e' un altro.
infatti ho pensato subito questo io, ma sulle basi di quello che ho studiato fino ad ora, in nessun esercizio che ho svolto c'era qualcosa di simile. tutti i cicli while che ho scritto terminavano semplicemente, questo invece no.. ho l'idea in mente ma non mi esce, non riesco a scriverla.. continuo a rifletterci
marko.fatto
29-10-2007, 21:10
ho letto qualcosa sui diagrammi di flusso, ma sinceramente mi viene più semplice schematizzare i passaggi nella mia mente
La tua mente salta dei passaggi:Prrr: (scherzo eh:stordita:)
Comunque immaginati tutti possibili casi che possono avvenire... ad esempio finire il numero di tentativi e indovinare la password sono due condizioni che devono terminare il ciclo quindi devi controllarle...
Th3 Kn0wl3dg3
29-10-2007, 21:25
in questo caso le due condizioni sono o che finiscono i tentativi o che indovino la pass. con while dovrei controllarla, ma ne controllo solo una, cioè quella fuori dal while quindi solo quando indovino la pass e in questo caso il programma finisce altrimenti dopo i tre tentativi mi da il messaggio "troppo difficile per voi" e mi continui a chiedere di inserire una pass all'infinito... devo capire come controllarla..
Th3 Kn0wl3dg3
29-10-2007, 21:33
è una cosa scema lo so, ma ho provato a fare cosi:
password="ciao"
tentativi=3
while password != "indovina":
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
elif password == "indovina":
print "Bravo, hai indovinato la pass!"
nella programmazione è importante sbagliare e provare no?
non è importante! è importantissimo ;)
il punto chiave è che il while DEVE terminare dopo i 3 tentativi.. focalizzati su quello più che sulla corrispondenza della password
Th3 Kn0wl3dg3
29-10-2007, 22:05
provo e riprovo ma niente... niente... le ho provate tutte...:muro: :muro: :muro:
ho anche sonno e sono stanco.. sarà per questo, forse non sono molto lucido. so solo che sono l'unico al mondo che ha problemi su queste cose cosi semplici. nessuno quando ha iniziato si è fermato tutto questo tempo su un esercizio cosi semplice e per giunta avendo dei suggerimenti da altre persone
AnonimoVeneziano
29-10-2007, 22:09
provo e riprovo ma niente... niente... le ho provate tutte...:muro: :muro: :muro:
ho anche sonno e sono stanco.. sarà per questo, forse non sono molto lucido. so solo che sono l'unico al mondo che ha problemi su queste cose cosi semplici. nessuno quando ha iniziato si è fermato tutto questo tempo su un esercizio cosi semplice e per giunta avendo dei suggerimenti da altre persone
Chissà , magari aggiungendo una condizione di controllo al "while" su tentativi ... ;)
PS= comunque se non hai mai programmato in vita tua non ti fare problemi. Ci vuole un po' per entrare in mentalità "algoritmica" .
mavvà è normale avere queste difficoltà all'inizio.. una delle prime abilità che un programmatore deve acquisire è quella di scomporre i problemi.
inizia in questo modo.. fai un programma che ti chiede 3 volte di inserire una password e poi termina senza fare nessun controllo sulla password che viene inserita. una volta che hai fatto questo cerca di trovare un modo per gestire il caso in cui viene inserita la password corretta (cioè devi stampare qualcosa a schermo e uscire dal ciclo non necessariamente in questo ordine)
ps. di modi per risolvere questo problema ce ne sono diversi, quindi potresti provare anche altre strade
Th3 Kn0wl3dg3
30-10-2007, 05:56
mavvà è normale avere queste difficoltà all'inizio.. una delle prime abilità che un programmatore deve acquisire è quella di scomporre i problemi.
inizia in questo modo.. fai un programma che ti chiede 3 volte di inserire una password e poi termina senza fare nessun controllo sulla password che viene inserita. una volta che hai fatto questo cerca di trovare un modo per gestire il caso in cui viene inserita la password corretta (cioè devi stampare qualcosa a schermo e uscire dal ciclo non necessariamente in questo ordine)
ps. di modi per risolvere questo problema ce ne sono diversi, quindi potresti provare anche altre strade
infatti io sto pensando a tanti modi, ho modificato un sacco di volte il codice.. sembra che ci vado vicino ma ancora niente.. e poi scusa, secondo te ha senso scrivere un programma che chiede di inserire 3 password senza nessun controllo per poi modificarlo? da scomporre non è molto difficile questo esercizio... mi manca solo di risolvere questo problemino....
Chissà , magari aggiungendo una condizione di controllo al "while" su tentativi ...
la condizione di controllo sarebbe il codice scritto dopo while giusto?
Th3 Kn0wl3dg3
30-10-2007, 05:59
non ci crederete mai.....ma.........................................CE L'HO FATTAAAAAAAA!!!!!ecco qua:
password="ciao"
tentativi=3
while tentativi > 0:
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
elif password == "indovina":
print "Bravo, hai indovinato la pass!"
mi sono illuminato dopo il suggerimento di k0nt3!!!!
non ci crederete mai.....ma.........................................CE L'HO FATTAAAAAAAA!!!!!ecco qua:
password="ciao"
tentativi=3
while tentativi > 0:
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
elif password == "indovina":
print "Bravo, hai indovinato la pass!"
mi sono illuminato dopo il suggerimento di k0nt3!!!!
eccellente! ;)
manca solo un piccolo dettaglio ora per poterti promuovere a pieni voti... devi far terminare il ciclo dopo che uno ha indovinato la password. conosco almeno due soluzioni.. pensaci un pochino, poi se avrai bisogno di aiuto noi siamo qua :cool:
Th3 Kn0wl3dg3
30-10-2007, 13:10
fare terminare il ciclo dopo che uno ha indovinato la pass.....:what: :what: ..... vediamo....
Th3 Kn0wl3dg3
30-10-2007, 13:56
ci sto pensando ma non mi viene niente in mente. cioè, ho risolto un problema e ora ne ho creato un'altro.. praticamente non riesco a fare chiudere il ciclo nel caso in cui si avveri una o un'altra condizione, ma solo se se ne avvera una
mad_hhatter
30-10-2007, 14:06
ci sto pensando ma non mi viene niente in mente. cioè, ho risolto un problema e ora ne ho creato un'altro.. praticamente non riesco a fare chiudere il ciclo nel caso in cui si avveri una o un'altra condizione, ma solo se se ne avvera una
intanto esponi a parole quale vorresti che fosse la condizione di terminazione... e poi pensa alla logica delle proposizioni ;)
Th3 Kn0wl3dg3
30-10-2007, 14:11
infatti io ho fatto questo lavoro oltre che a riflettere sul consiglio di k0nt3,la condizione di terminazione dovrebbe essere:
"FINO A QUANDO i tentativi sono maggiori di 0, SE il numero dei tentativi è uguale a 0 allora stampa la scritta 'hai finito tutte e tre le possibilità", ALTRIMENTI SE la password corrisponde (o è uguale) a indovina stampa la scritta 'bravo, hai indovinato la pass'". io ho scritto questo in forma di codice, ma quando indovino la pass il ciclo non finisce e non capisco dove sbaglio.... :muro: :muro:
mad_hhatter
30-10-2007, 14:17
infatti io ho fatto questo lavoro oltre che a riflettere sul consiglio di k0nt3,la condizione di terminazione dovrebbe essere:
"FINO A QUANDO i tentativi sono maggiori di 0, SE il numero dei tentativi è uguale a 0 allora stampa la scritta 'hai finito tutte e tre le possibilità", ALTRIMENTI SE la password corrisponde (o è uguale) a indovina stampa la scritta 'bravo, hai indovinato la pass'". io ho scritto questo in forma di codice, ma quando indovino la pass il ciclo non finisce e non capisco dove sbaglio.... :muro: :muro:
non mischiare condizioni di terminazione con cosa deve fare il software. scindi le due cose: quando deve terminare il ciclo? al momento non importa cosa fa durante o dopo il ciclo
mad_hhatter
30-10-2007, 14:20
comunque l'ultima tua versione, nel caso io introduca la pass giusta al terzo tentativo mi dice che sbaglio perchè testi il numero di tentativi prima di testare la pass...
Th3 Kn0wl3dg3
30-10-2007, 14:28
cavolo è vero...un altro problema da risolvere. non me n'ero proprio accorto.
il ciclo deve terminare o quando i tentativi corrispondono a 0 o quando si indovina la password
mad_hhatter
30-10-2007, 14:35
cavolo è vero...un altro problema da risolvere. non me n'ero proprio accorto.
il ciclo deve terminare o quando i tentativi corrispondono a 0 o quando si indovina la password
oh là, perfetto! visto quanto più semplice è rispetto alla prima versione "a parole" che avevi postato?
ora enuncia a parole il lavoro che fa un ciclo while che termina in tali condizioni: come fai a testare tali condizioni?
Th3 Kn0wl3dg3
30-10-2007, 14:50
se password corrisponde a indovina allora stampa la scritta e termina il ciclo, altrimenti se i tentativi corrispondono a 0 stampa la scritta e termina il ciclo
mad_hhatter
30-10-2007, 14:54
se password corrisponde a indovina allora stampa la scritta e termina il ciclo, altrimenti se i tentativi corrispondono a 0 stampa la scritta e termina il ciclo
fantastico... ora devi pensare a come trasportare le informazioni da un'iterazione alla successiva: se al passo i-esimo rilevi che la pass è corretta, devi fare una di queste due cose:
o forzi l'uscita dal ciclo, oppure fai in modo che alla prossima iterazione il while si accorga che la pass è stata indovinata...
idem per il numero di tentativi
continua a esprimerti a parole finchè non sistemi tutti i dettagli. poi passiamo al codice e vedrai che sarà un mero esercizio di traduzione
Th3 Kn0wl3dg3
30-10-2007, 14:55
comunque l'ultima tua versione, nel caso io introduca la pass giusta al terzo tentativo mi dice che sbaglio perchè testi il numero di tentativi prima di testare la pass...
questo problema l'ho risolto:
password="ciao"
tentativi=3
while tentativi > 0:
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if password == "indovina":
print "Bravo, hai indovinato la pass!"
elif tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
Th3 Kn0wl3dg3
30-10-2007, 14:58
fantastico... ora devi pensare a come trasportare le informazioni da un'iterazione alla successiva: se al passo i-esimo rilevi che la pass è corretta, devi fare una di queste due cose:
o forzi l'uscita dal ciclo, oppure fai in modo che alla prossima iterazione il while si accorga che la pass è stata indovinata...
idem per il numero di tentativi
continua a esprimerti a parole finchè non sistemi tutti i dettagli. poi passiamo al codice e vedrai che sarà un mero esercizio di traduzione
io mi esprimo sempre a parole prima di scrivere il codice, la cosa che non capisco è che prima il ciclo continuava anche se finivo i tentativi adesso invece continua se indovino, cioè cambio la condizione del while e succede questo. è come se dovessi mettere due condizioni al while....
esatto! la condizione del while deve essere (tentativi > 0 E NON INDOVINATO)
prova a tradurlo in codice
marko.fatto
30-10-2007, 15:01
è come se dovessi mettere due condizioni al while....
:cincin:
Comunque c'è anche un'altro modo...
Th3 Kn0wl3dg3
30-10-2007, 15:08
esatto! la condizione del while deve essere (tentativi > 0 E NON INDOVINATO)
prova a tradurlo in codice
il punto è proprio questo! io ancora non sono arrivato agli operatori logici! però ora che ci penso..io l'esercizio originale l'ho risolto (diceva soltanto di chiedere la pass dava tre tentativi falliti i quali doveva stampare la scritta) sono io che ho voluto ampliare l'esercizio per prova o diciamo... sfida perchè no! anche se non l'ho fatto credo che allora lì dovrebbe andarci un AND....
Comunque c'è anche un'altro modo...
il punto è proprio questo... quale modo? sto riflettendo anche sulle parole di had_matter ma come faccio a forzare l'uscita del ciclo o a fargli capire che la pass è stata indovinata o i tentativi sono finiti?
EDIT: PROBLEMA RISOLTO AL 100% QUESTA VOLTA!!!!! e voilà:
password="ciao"
tentativi=3
while tentativi > 0 and password != "indovina":
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if password == "indovina":
print "Bravo, hai indovinato la pass!"
elif tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
quando mi ero accorto del problema avevo pensato immediatamente che al while servivano due condizioni, però siccome ancora non avevo fatto and or e gli altri ho pensato di risolverlo in un altro modo, ma poi mi sono ricordato che l'esercizio originale lo avevo già fatto e questo era una mia variante... fatto sta che ora sono proprio curioso di sapere quale è l'altro modo... però non me lo dite!!!!
mad_hhatter
30-10-2007, 15:12
il punto è proprio questo! io ancora non sono arrivato agli operatori logici! però ora che ci penso..io l'esercizio originale l'ho risolto (diceva soltanto di chiedere la pass dava tre tentativi falliti i quali doveva stampare la scritta) sono io che ho voluto ampliare l'esercizio per prova o diciamo... sfida perchè no! anche se non l'ho fatto credo che allora lì dovrebbe andarci un AND....
il punto è proprio questo... quale modo? sto riflettendo anche sulle parole di had_matter ma come faccio a forzare l'uscita del ciclo o a fargli capire che la pass è stata indovinata o i tentativi sono finiti?
sai già passare info tra iterazioni: guarda cosa fai con la variabile tentativi
per ora scordati di forzare l'uscita se non lo sai ancora fare
@Th3 Kn0wl3dg3
ok.. se maometto non va alla montagna allora la montagna va da maometto ;)
tradotto: se non puoi cambiare la condizione allora fai in modo che dopo aver stampato "indovinato!" la condizione diventi falsa.. non so se mi spiego :fagiano: è solo un trucchetto, ma si inizia così
EDIT: vedo che hai già risolto nell'altro modo :)
mad_hhatter
30-10-2007, 15:28
EDIT: PROBLEMA RISOLTO AL 100% QUESTA VOLTA!!!!! e voilà:
password="ciao"
tentativi=3
while tentativi > 0 and password != "indovina":
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if password == "indovina":
print "Bravo, hai indovinato la pass!"
elif tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
quando mi ero accorto del problema avevo pensato immediatamente che al while servivano due condizioni, però siccome ancora non avevo fatto and or e gli altri ho pensato di risolverlo in un altro modo, ma poi mi sono ricordato che l'esercizio originale lo avevo già fatto e questo era una mia variante... fatto sta che ora sono proprio curioso di sapere quale è l'altro modo... però non me lo dite!!!!
visto che sei perfettamente in grado di risolvere i problemi? ti basta iniziare a comprendere l'approccio mentale. bravo!
se posso fare il rompiballe, a livello di leggibilità del codice, inizializzare passord a "ciao" risulta fuorviante: stai assegnando un valore ben preciso e non generico e uno che legge il codice la prima volta non capisce il perchè di questa scelta... sarebbe bene che l'inizializzazione fosse la più generica possibile in modo da documentare il fatto che è una inizializzazione. ad esempio sarebbe più chiaro se avessi inizializzato password a "" (stringa vuota) o, se lecito, a null (se non sai di cosa parlo, ignora tutto :) )
Th3 Kn0wl3dg3
30-10-2007, 15:30
sai già passare info tra iterazioni: guarda cosa fai con la variabile tentativi
per ora scordati di forzare l'uscita se non lo sai ancora fare
io sono arrivato al capitolo 5 della solita guida che ho postato più volte nei topic precedenti, quindi se gli date un'occhiata vedrete dove sono arrivato e quali conoscenze ho acquisito.
con la variabile tentativi praticamente per prima cosa diminuisco il numero dei tentativi ad ogni ciclo e seconda cosa le dico che se è uguale a 0 deve stampare quella scritta
ok.. se maometto non va alla montagna allora la montagna va da maometto
tradotto: se non puoi cambiare la condizione allora fai in modo che dopo aver stampato "indovinato!" la condizione diventi falsa.. non so se mi spiego è solo un trucchetto, ma si inizia così
cosi?
password="ciao"
tentativi=3
while tentativi > 0:
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if password == "indovina":
print "Bravo, hai indovinato la pass!"
tentativi = tentativi < 0
elif tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
Th3 Kn0wl3dg3
30-10-2007, 15:35
visto che sei perfettamente in grado di risolvere i problemi? ti basta iniziare a comprendere l'approccio mentale. bravo!
se posso fare il rompiballe, a livello di leggibilità del codice, inizializzare passord a "ciao" risulta fuorviante: stai assegnando un valore ben preciso e non generico e uno che legge il codice la prima volta non capisce il perchè di questa scelta... sarebbe bene che l'inizializzazione fosse la più generica possibile in modo da documentare il fatto che è una inizializzazione. ad esempio sarebbe più chiaro se avessi inizializzato password a "" (stringa vuota) o, se lecito, a null (se non sai di cosa parlo, ignora tutto :) )
so di cosa parli, almeno credo, praticamente avrei dovuto impostare la variabile password in modo che si capisca per chi legge che è un'inizializzazione con "" o con a null (che non so se è qualche parola chiave...). cmq ho messo ciao solo perchè era un esercizio personale e non doveva vederlo nessuno che legge codice per la prima votla!
giusto per la cronaca io avrei fatto uso di una variabile ausiliaria al solo scopo di rendere migliore la leggibilità e diminuire la ridondanza (nota che tu fai più di un controllo sulla correttezza della password).
diciamo che questa è una tecnica che torna spesso utile per semplificare le condizioni nei while.. ricordatene ;)
tentativi = 3
finito = False
while !finito:
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if password == "indovina":
print "Bravo, hai indovinato la pass!"
finito = True
elif tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
finito = True
Th3 Kn0wl3dg3
30-10-2007, 15:38
giusto per la cronaca io avrei fatto uso di una variabile ausiliaria al solo scopo di rendere migliore la leggibilità e diminuire la ridondanza (nota che tu fai più di un controllo sulla correttezza della password).
diciamo che questa è una tecnica che torna spesso utile per semplificare le condizioni nei while.. ricordatene ;)
tentativi = 3
finito = False
while !finito:
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if password == "indovina":
print "Bravo, hai indovinato la pass!"
finito = True
elif tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
finito = True
perchè hai messo questa condizione al while? cmq a me sembra di fare solo un controllo sulla correttezza della pass, e il tuo codice rispetto a quello mio ha 'finito' al posto di 'password', io credo che sia più semplice aggiungere la condizione falsa dopo aver indovinato la pass come ho fatto io
cosi?
password="ciao"
tentativi=3
while tentativi > 0:
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if password == "indovina":
print "Bravo, hai indovinato la pass!"
tentativi = 0
elif tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
l'ho corretto ;)
tentativi = 0 non tentativi = tentativi < 0
perchè hai messo questa condizione al while? cmq a me sembra di fare solo un controllo sulla correttezza della pass, e il tuo codice rispetto a quello mio ha 'finito' al posto di 'password', io credo che sia più semplice aggiungere la condizione falsa dopo aver indovinato la pass come ho fatto io
giusto per farti vedere quanto è vario il mondo, poi ognuno fa a modo suo :p
la condizione che ho messo sta a indicare che finchè la variabile finito vale False il while continua a ciclare, quando diventa True per qualche motivo esce dal ciclo.
in questo modo a me risulta più facile da leggere anche per via del nome che ho dato alla variabile "finito".
cioè finchè non hai finito continua il ciclo :fagiano:
mad_hhatter
30-10-2007, 15:44
so di cosa parli, almeno credo, praticamente avrei dovuto impostare la variabile password in modo che si capisca per chi legge che è un'inizializzazione con "" o con a null (che non so se è qualche parola chiave...). cmq ho messo ciao solo perchè era un esercizio personale e non doveva vederlo nessuno che legge codice per la prima votla!
null significa semplicemente "niente" nel senso più generico del termine (trascuriamo i dettagli tecnici).
lo so che è solo un esercizio personale... ma ricordati che se tra un anno prendi in mano quel codice e cerchi di capire cosa fa, sono sicuro che ti chiederai perplesso la ragione per cui password sia inizializzata proprio a "ciao"... e perderai del tempo per renderti conto che non c'è nessun motivo per tale inizializzazione specifica.
ma come ho detto, è un appunto da rompiballe e un piccolo consiglio per il futuro quando scriverai codice più complesso
mi viene il dubbio.. forse in python non si può dire:
while !finito
comunque sia è equivalente a:
while finito == False
Th3 Kn0wl3dg3
30-10-2007, 15:56
l'ho corretto ;)
tentativi = 0 non tentativi = tentativi < 0
si hai ragione, dovevo scrivere cosi ma non so a cosa pensavo mentre ho scritto il codice! k0nt3 il tuo codice l'ho capito, non capisco solo il ! davanti a finito cosa significa, forse proprio perchè in python non c'è. dovresti scrivere while finito == false come hai già detto
null significa semplicemente "niente" nel senso più generico del termine (trascuriamo i dettagli tecnici).
lo so che è solo un esercizio personale... ma ricordati che se tra un anno prendi in mano quel codice e cerchi di capire cosa fa, sono sicuro che ti chiederai perplesso la ragione per cui password sia inizializzata proprio a "ciao"... e perderai del tempo per renderti conto che non c'è nessun motivo per tale inizializzazione specifica.
ma come ho detto, è un appunto da rompiballe e un piccolo consiglio per il futuro quando scriverai codice più complesso
se vuoi puoi spiegare i dettagli tecnici, mi piace imparare! non è un appunto da rompiballe, hai fatto bene a dirmelo, farò tesoro di ogni consiglio che mi date. ho già corretto il codice.
mad_hhatter
30-10-2007, 16:16
si hai ragione, dovevo scrivere cosi ma non so a cosa pensavo mentre ho scritto il codice! k0nt3 il tuo codice l'ho capito, non capisco solo il ! davanti a finito cosa significa, forse proprio perchè in python non c'è. dovresti scrivere while finito == false come hai già detto
se vuoi puoi spiegare i dettagli tecnici, mi piace imparare! non è un appunto da rompiballe, hai fatto bene a dirmelo, farò tesoro di ogni consiglio che mi date. ho già corretto il codice.
! significa NOT (come != significa letteralmente NOT UGUALE)
null è una reference a "niente"... in soldoni, quando crei un oggetto il sistema ti ritorna l'indirizzo a cui si trova quell'oggetto (o qualche altro identificativo di tale area di memoria) e questa è l'informazione portata dalla variabile il cui nome "identifica" l'oggetto.
quando scrivi pippo = "stringa" il sistema:
- crea una stringa in una zona di memoria
- assegna alla variabile pippo un valore che identifica tale zona di memoria (pippo è detta variabile di tipo "riferimento" perchè il suo valore non è significativo di per sè ma in quanto si riferisce a qualcosa, ad un oggetto in memoria)
a livello di codice scritto da te tutto questo viene nascosto: tu identifichi pippo con l'oggetto. questo tecnicamente non è corretto, ma sta qui la potenza e la bellezza dei linguaggi ad alto livello: avvicinarsi al modo di ragionare e di astrarre propri di un uomo lasciando al sistema l'onere di gestire i dettagli relativi alla macchina. il programmatore non deve preoccuparsi di dettagli che niente hanno a che fare con il problema da risolvere.
bene, sperando di non averti incasinato, arriviamo al null... il null è semplicemente un riferimento a un oggetto che non esiste (tecnicamente potrebbe essere l'identificativo di una zona di memoria non utilizzabile)
Th3 Kn0wl3dg3
30-10-2007, 16:27
! significa NOT (come != significa letteralmente NOT UGUALE)
null è una reference a "niente"... in soldoni, quando crei un oggetto il sistema ti ritorna l'indirizzo a cui si trova quell'oggetto (o qualche altro identificativo di tale area di memoria) e questa è l'informazione portata dalla variabile il cui nome "identifica" l'oggetto.
quando scrivi pippo = "stringa" il sistema:
- crea una stringa in una zona di memoria
- assegna alla variabile pippo un valore che identifica tale zona di memoria (pippo è detta variabile di tipo "riferimento" perchè il suo valore non è significativo di per sè ma in quanto si riferisce a qualcosa, ad un oggetto in memoria)
a livello di codice scritto da te tutto questo viene nascosto: tu identifichi pippo con l'oggetto. questo tecnicamente non è corretto, ma sta qui la potenza e la bellezza dei linguaggi ad alto livello: avvicinarsi al modo di ragionare e di astrarre propri di un uomo lasciando al sistema l'onere di gestire i dettagli relativi alla macchina. il programmatore non deve preoccuparsi di dettagli che niente hanno a che fare con il problema da risolvere.
bene, sperando di non averti incasinato, arriviamo al null... il null è semplicemente un riferimento a un oggetto che non esiste (tecnicamente potrebbe essere l'identificativo di una zona di memoria non utilizzabile)
ehm...sarò scemo ma non ho capito un bel niente! e quel ! (NOT) davanti a finito cosa starebbe a significare?!
Th3 Kn0wl3dg3
30-10-2007, 16:28
comunque vi posto l'ultima "versione" del programma, ho aggiunto solo un'altra piccola cosa:
password=""
tentativi=3
while tentativi > 0:
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if tentativi == 1:
print "Ultima possibilità!"
if password == "indovina":
print "Bravo, hai indovinato la pass!"
tentativi = 0
elif tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
mad_hhatter
30-10-2007, 16:34
ehm...sarò scemo ma non ho capito un bel niente! e quel ! (NOT) davanti a finito cosa starebbe a significare?!
immaginavo :) a parte che ho scritto frettolosamente, ti avevo avvertito che era un argomento tecnico :)
while (c)
statement
esegue statement se c ha valore logico TRUE
dire while(!finito) significa prendere il valore logico di finito, farne la negazione e vedere se tale negazione ha valore logico TRUE. se finito è false, la sua negazione è true e si esegue una nuova iterazione, in caso contrario il ciclo termina. è un modo elegante per esprimere in codice quello che a parole esprimeresti con "finchè non hai finito"... noti la somiglianza?
comunque vi posto l'ultima "versione" del programma, ho aggiunto solo un'altra piccola cosa:
password=""
tentativi=3
while tentativi > 0:
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if tentativi == 1:
print "Ultima possibilità!"
if password == "indovina":
print "Bravo, hai indovinato la pass!"
tentativi = 0
elif tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
password puoi anche non dichiararla del tutto fuori dal while, l'importante è che sia dichiarata dentro il while
cioè:
tentativi=3
while tentativi > 0:
password = raw_input("Inserisci una password:")
tentativi = tentativi - 1
if tentativi == 1:
print "Ultima possibilità!"
if password == "indovina":
print "Bravo, hai indovinato la pass!"
tentativi = 0
elif tentativi == 0:
print "Hai finito tutte e tre le possibilità!"
vedo che inizi ad avere confidenza ;)
ps. not è il termine inglese per dire non
Th3 Kn0wl3dg3
30-10-2007, 17:34
dire while(!finito) significa prendere il valore logico di finito, farne la negazione e vedere se tale negazione ha valore logico TRUE. se finito è false, la sua negazione è true e si esegue una nuova iterazione, in caso contrario il ciclo termina. è un modo elegante per esprimere in codice quello che a parole esprimeresti con "finchè non hai finito"... noti la somiglianza?
si, noto la somiglianza!
password puoi anche non dichiararla del tutto fuori dal while, l'importante è che sia dichiarata dentro il while
questo non lo sapevo, pensavo che dovevo dichiararla anche prima. ho imparato una cosa nuova! cmq so che not è il termine inglese per dire non, ma davanti a finito significherebbe "while non finito" (letteralmente)... non ci vedo il senso. mi sembra molto più chiaro cosi: while finito == false
un pochettino di confidenza la sto prendendo... ma due giorni per un'esercizietto del genere però sono un pò troppi....:stordita:
Th3 Kn0wl3dg3
30-10-2007, 17:49
comunque nel frattempo invece di stare con le mani in mano ho svolto il secondo esercizietto del capitolo 5.3 (Scrivete un programma che chieda due numeri. Se la somma dei due numeri supera 100, stampate ``Numero troppo grande'')
ecco il codice:
numero_1 = 0
numero_2 = 0
print "Inserisci due numeri"
numero_1 = input ("Inserisci il primo numero:")
numero_2 = input ("Inserisci il secondo numero:")
if numero_1 + numero_2 > 100:
print "Numero troppo grande"
elif numero_1 + numero_2 < 100:
print "La somma dei due numeri è", numero_1 + numero_2
mad_hhatter
30-10-2007, 17:52
"while non finito" (letteralmente)... non ci vedo il senso. mi sembra molto più chiaro cosi: while finito == false
il senso era appunto "finchè non hai finito"... poi quanto a chiarezza sta a te: ognuno si crea il proprio stile di programmazione ed entro certi limiti non esiste uno stile migliore o peggiore
un pochettino di confidenza la sto prendendo... ma due giorni per un'esercizietto del genere però sono un pò troppi....:stordita:
Roma non è stata costruita in un giorno... man mano che acquisisci esperienza, confidenza e metodo andrai sempre più veloce, tranquillo
@Th3 Kn0wl3dg3
c'è un bug :fagiano:
prova a mettere i valori 40 e 60 ad esempio :p
mad_hhatter
30-10-2007, 17:54
comunque nel frattempo invece di stare con le mani in mano ho svolto il secondo esercizietto del capitolo 5.3 (Scrivete un programma che chieda due numeri. Se la somma dei due numeri supera 100, stampate ``Numero troppo grande'')
ecco il codice:
numero_1 = 0
numero_2 = 0
print "Inserisci due numeri"
numero_1 = input ("Inserisci il primo numero:")
numero_2 = input ("Inserisci il secondo numero:")
if numero_1 + numero_2 > 100:
print "Numero troppo grande"
elif numero_1 + numero_2 < 100:
print "La somma dei due numeri è", numero_1 + numero_2
bene, ma l'elif è richiesto dal problema?
Th3 Kn0wl3dg3
30-10-2007, 18:12
bug corretto, avevo dimenticato di mettere l'uguale dopo il <!!!ho anche tolto numero_1 e numero_2 dato che erano superflui!
print "Inserisci due numeri"
numero_1 = input ("Inserisci il primo numero:")
numero_2 = input ("Inserisci il secondo numero:")
if numero_1 + numero_2 > 100:
print "Numero troppo grande"
elif numero_1 + numero_2 <= 100:
print "La somma dei due numeri è", numero_1 + numero_2
no, l'elif non era richiesto ma a me piace aggiungere cose agli esercizi che faccio cosi mi metto alla prova! ora provo a svolgere l'ultimo
bug corretto, avevo dimenticato di mettere l'uguale dopo il <!!!ho anche tolto numero_1 e numero_2 dato che erano superflui!
print "Inserisci due numeri"
numero_1 = input ("Inserisci il primo numero:")
numero_2 = input ("Inserisci il secondo numero:")
if numero_1 + numero_2 > 100:
print "Numero troppo grande"
elif numero_1 + numero_2 <= 100:
print "La somma dei due numeri è", numero_1 + numero_2
no, l'elif non era richiesto ma a me piace aggiungere cose agli esercizi che faccio cosi mi metto alla prova! ora provo a svolgere l'ultimo
in questo caso "elif numero_1 + numero_2 <= 100" lo puoi sostituire con "else" banalmente :cool:
Th3 Kn0wl3dg3
30-10-2007, 18:26
ops... è vero!! che scemo! mi piace complicarmi la vita! all'inizio infatti lo avevo fatto con else!
Th3 Kn0wl3dg3
30-10-2007, 18:41
ecco l'ultimo esercizio del capitolo 5.3, ho cambiato qualche cosa nel testo e ho messo nomi a piacere (Scrivete un programma che chieda all'utente il nome. Se viene inserito il vostro nome, il programma dovrà rispondere con un ``Questo è un bel nome'', se il nome inserito è "John Cleese" o "Michel Palin" il programma dovrà rispondere con una battuta ;) mentre in tutti gli altri casi l'output del programma sarà un semplice ``Tu hai un bel nome!'')
nome_1 = "kn0wl3dg3"
nome_2 = "francesco" or "kevin"
nome = raw_input("Inserisci un nome:")
if nome == nome_1:
print "Questo è un bel nome!"
elif nome == nome_2:
print "Non so fare le battute!"
else:
print "Tu hai un bel nome!"
non riesco solo a capire perchè anche se in nome_2 metto or quando scrivo francesco esegue elif invece se scrivo kevin esegue else
una variabile può contenere un solo valore :read:
Th3 Kn0wl3dg3
30-10-2007, 18:54
allora, ho provato a risolverlo sia cosi:
nome_1 = "kn0wl3dg3"
nome_2 = "francesco"
nome_3 = "kevin"
nome = raw_input("Inserisci un nome:")
if nome == nome_1:
print "Questo è un bel nome!"
elif nome == nome_2 or nome_3:
print "Non so fare le battute!"
else:
print "Tu hai un bel nome!"
e quando inserisco un nome qualsiasi esegue elif e poi ho provato a risolverlo anche cosi:
nome_1 = "kn0wl3dg3"
nome_2 = "francesco"
nome_3 = "kevin"
nome = raw_input("Inserisci un nome:")
if nome == nome_1:
print "Questo è un bel nome!"
if nome == nome_3:
print "Non so fare le battute!"
elif nome == nome_2:
print "Non so fare le battute!"
else:
print "Tu hai un bel nome!"
ma quando inserisco il mio nome mi visualizza sia "questo è un bel nome" sia l'else
rispettivamente:
nome_1 = "kn0wl3dg3"
nome_2 = "francesco"
nome_3 = "kevin"
nome = raw_input("Inserisci un nome:")
if nome == nome_1:
print "Questo è un bel nome!"
elif nome == nome_2 or nome == nome_3:
print "Non so fare le battute!"
else:
print "Tu hai un bel nome!"
e
nome_1 = "kn0wl3dg3"
nome_2 = "francesco"
nome_3 = "kevin"
nome = raw_input("Inserisci un nome:")
if nome == nome_1:
print "Questo è un bel nome!"
elif nome == nome_3:
print "Non so fare le battute!"
elif nome == nome_2:
print "Non so fare le battute!"
else:
print "Tu hai un bel nome!"
Th3 Kn0wl3dg3
30-10-2007, 20:31
accidenti che errori grossolani...:muro: :muro: :muro:
accidenti che errori grossolani...:muro: :muro: :muro:
ma no è solo inesperienza.. ci vuole tempo per assimilare il tutto
Th3 Kn0wl3dg3
31-10-2007, 05:58
spero ke sia davvero questo. come me la sto cavando?
spero ke sia davvero questo. come me la sto cavando?
bene, si vede che stai imparando. però se hai tempo daccela un'occhiata al link che avevo postato un paio di pagine fa.. se avessi usato i diagrammi di flussi non avresti commesso quegli errori negli ultimi due listati che hai postato. un pò di cultura generale non fa mai male
ps. questo http://www.hwupgrade.it/forum/showpost.php?p=19324948&postcount=101
Th3 Kn0wl3dg3
31-10-2007, 12:50
ah si, l'ho già stampata la guida di quel link e la sto leggendo, ma non è che sia molto chiara
ah si, l'ho già stampata la guida di quel link e la sto leggendo, ma non è che sia molto chiara
chiedi pure se hai difficoltà a capire
Th3 Kn0wl3dg3
31-10-2007, 15:32
fa degli esempi un pò strani. non ci sarebbe un'altra guida più facile e intituitiva che magari vada subito al sodo?
Th3 Kn0wl3dg3
31-10-2007, 18:44
ho finito di leggere il capitolo 6riguardante il debugging e adesso passo a studiare il capitolo 7, come definire le funzioni. adesso c'è proprio da divertirsi...
Th3 Kn0wl3dg3
31-10-2007, 19:47
allora... ho studiato e applicato le cose scritte nel capitolo 7.1 però ci sono alcune cose che non capisco (e che segnerò in rosso):
def hello():
print "Hello"
def area(width,height):
return width*height
def print_welcome(name):
print "Welcome",name
hello()
hello()
print_welcome("Fred")
w = 4
h = 5
print "width =",w,"height =",h,"area =",area(w,h)
Con questo output:
Hello
Hello
Welcome Fred
width = 4 height = 5 area = 20
Questo esempio mostra solamente un po' più in profondità in quanti differenti modi si possono utilizzare le funzioni. Osservate attentamente, potete anche non dare argomenti ad una funzione, così come potete dargliene più d'uno. Notate anche che return è opzionale.
1)perchè in def area c'è messo "return width*height" invece di "print width*height"?
2)la funzione "area" perchè è stata chiamata in questo modo? e perchè le due variabili w e h sono state inserite cosi? non avrebbe dovuto essere una cosa del tipo "area (45,20)?
3)in che senso return è opzionale? se è opzionale a che serve allora? non si può usare print al suo posto?
AnonimoVeneziano
31-10-2007, 20:24
allora... ho studiato e applicato le cose scritte nel capitolo 7.1 però ci sono alcune cose che non capisco (e che segnerò in rosso):
def hello():
print "Hello"
def area(width,height):
return width*height
def print_welcome(name):
print "Welcome",name
hello()
hello()
print_welcome("Fred")
w = 4
h = 5
print "width =",w,"height =",h,"area =",area(w,h)
Con questo output:
Hello
Hello
Welcome Fred
width = 4 height = 5 area = 20
Questo esempio mostra solamente un po' più in profondità in quanti differenti modi si possono utilizzare le funzioni. Osservate attentamente, potete anche non dare argomenti ad una funzione, così come potete dargliene più d'uno. Notate anche che return è opzionale.
1)perchè in def area c'è messo "return width*height" invece di "print width*height"?
2)la funzione "area" perchè è stata chiamata in questo modo? e perchè le due variabili w e h sono state inserite cosi? non avrebbe dovuto essere una cosa del tipo "area (45,20)?
3)in che senso return è opzionale? se è opzionale a che serve allora? non si può usare print al suo posto?
Ti consiglio di ripassarti bene la parte relativa alle funzioni, perchè dalle tre domande che hai fatto si deduce che non ci hai capito molto. Prova a rileggere lentamente cercando di comprendere ogni parte.
Una funzione è un modo per "concentrare" del codice che fa una determinata operazione (nell'esempio che hai postato l'operazione è l'area di un rettangolo, ma può essere un operazione di qualsiasi tipo) .
Se questa operazione viene eseguita in più parti del nostro codice sorgente può essere utile mettere questo codice in una funzione in modo che, ogni volta che andiamo a farla al'interno del nostro programma, invece di riscrivere tutto il pezzo di sorgente che la fa basta chiamare la funzione riducendo quindi la quantità di codice scritto e rendendolo più facile da mantenere (ad esempio se un giorno noi volessimo cambiare in qualche modo il codice che la esegue , perchè è buggato o per altri motivi, se non l'avessimo "centralizzato" in una funzione saremmo dovuti andare in ogni singolo pezzo del programma dove quel codice viene usato a modificarlo. Con una funzione invece basta modificare il codice della stessa e automaticamente la variazione si propaga in tutti i punti dove viene chiamata).
Una funzione in genere ritorna un valore. Nel caso di quella che hai postato è il valore del calcolo dell'area. Il valore si ritorna con la parola chiave "return".
L'esempio tipico di una funzione :
def func(x,y):
// Esegui operazioni qui sui parametri x e y e memorizza i risultati
// nella variabile locale "result"
return result;
In questa funzione vengono passati i parametri x e y . Su questi parametri verranno eseguite delle elaborazioni e il risultato verrà memorizzato in "result". Alla fine di tutto la funzione ritorna il valore di "result" .
Quando una funzione viene usata in una espressione il suo valore è il valore stesso della variabile di ritorno.
Nel caso di "area()" (che ritorna il prodotto tra "width" che è la larghezza del rettangolo e "height" che è l'altezza ) il valore è proprio l'area del rettangolo con altezza "height" e larghezza "width".
Partendo da questa breve spiegazione le risposte quindi sono :
1) "return width*height" significa : "fai ritornare alla funzione il valore ottenuto dalla moltiplicazione tra width e height" (ossia l'area del rettangolo) . Mettere print avrebbe scritto a schermo il valore, ma non era questo l'intento del programma. Il programma voleva fare in modo di usare il valore ritornato dalla funzione all'interno della "print" nel testo principale. Togliendo il return credo che il programma non avrebbe funzionato del tutto. (probabilmente un errore a runtime, perchè la print nella parte principale non si vede arrivare nessun valore da area() e a quel punto o da errore o lo ignora. Non so quale dei due).
2) la vera domanda è : perchè 45 e 20? la larghezza del rettangolo è memorizzata in "w" , l'altezza in "h". Lanciare area(w,h) fa in modo che la funzione sia lanciata coi parametri impostati precedentemente (l'equivalente di area(4,5)) .
3) Penso che intendesse che return è opzionale in caso la funzione considerata non debba ritornare nessun valore. Ci sono funzioni che semplicemente cambiano variabili nell'ambiente globale o eseguono altre operazioni che non necessitano di ritornare un valore. Non è il caso dell'esempio in questione dove area() DEVE ritornare un valore perchè sennò non avrebbe senso il suo utilizzo nella "print" più in basso. In questo specifico caso non è opzionale.
Adesso le funzioni sono viste come "operazioni" da eseguire (punti di raccolta del codice) . Quando vedrai la programmazione orientata agli oggetti vedrai che le funzioni diventeranno come dei "messaggi" che gli oggetti si scambiano a vicenda per comunicare, ma questa è un altra storia .... :)
Ciao
Th3 Kn0wl3dg3
01-11-2007, 08:20
Ti consiglio di ripassarti bene la parte relativa alle funzioni, perchè dalle tre domande che hai fatto si deduce che non ci hai capito molto. Prova a rileggere lentamente cercando di comprendere ogni parte.
Una funzione è un modo per "concentrare" del codice che fa una determinata operazione (nell'esempio che hai postato l'operazione è l'area di un rettangolo, ma può essere un operazione di qualsiasi tipo) .
Se questa operazione viene eseguita in più parti del nostro codice sorgente può essere utile mettere questo codice in una funzione in modo che, ogni volta che andiamo a farla al'interno del nostro programma, invece di riscrivere tutto il pezzo di sorgente che la fa basta chiamare la funzione riducendo quindi la quantità di codice scritto e rendendolo più facile da mantenere (ad esempio se un giorno noi volessimo cambiare in qualche modo il codice che la esegue , perchè è buggato o per altri motivi, se non l'avessimo "centralizzato" in una funzione saremmo dovuti andare in ogni singolo pezzo del programma dove quel codice viene usato a modificarlo. Con una funzione invece basta modificare il codice della stessa e automaticamente la variazione si propaga in tutti i punti dove viene chiamata).
Una funzione in genere ritorna un valore. Nel caso di quella che hai postato è il valore del calcolo dell'area. Il valore si ritorna con la parola chiave "return".
L'esempio tipico di una funzione :
def func(x,y):
// Esegui operazioni qui sui parametri x e y e memorizza i risultati
// nella variabile locale "result"
return result;
In questa funzione vengono passati i parametri x e y . Su questi parametri verranno eseguite delle elaborazioni e il risultato verrà memorizzato in "result". Alla fine di tutto la funzione ritorna il valore di "result" .
Quando una funzione viene usata in una espressione il suo valore è il valore stesso della variabile di ritorno.
Nel caso di "area()" (che ritorna il prodotto tra "width" che è la larghezza del rettangolo e "height" che è l'altezza ) il valore è proprio l'area del rettangolo con altezza "height" e larghezza "width".
Partendo da questa breve spiegazione le risposte quindi sono :
1) "return width*height" significa : "fai ritornare alla funzione il valore ottenuto dalla moltiplicazione tra width e height" (ossia l'area del rettangolo) . Mettere print avrebbe scritto a schermo il valore, ma non era questo l'intento del programma. Il programma voleva fare in modo di usare il valore ritornato dalla funzione all'interno della "print" nel testo principale. Togliendo il return credo che il programma non avrebbe funzionato del tutto. (probabilmente un errore a runtime, perchè la print nella parte principale non si vede arrivare nessun valore da area() e a quel punto o da errore o lo ignora. Non so quale dei due).
2) la vera domanda è : perchè 45 e 20? la larghezza del rettangolo è memorizzata in "w" , l'altezza in "h". Lanciare area(w,h) fa in modo che la funzione sia lanciata coi parametri impostati precedentemente (l'equivalente di area(4,5)) .
3) Penso che intendesse che return è opzionale in caso la funzione considerata non debba ritornare nessun valore. Ci sono funzioni che semplicemente cambiano variabili nell'ambiente globale o eseguono altre operazioni che non necessitano di ritornare un valore. Non è il caso dell'esempio in questione dove area() DEVE ritornare un valore perchè sennò non avrebbe senso il suo utilizzo nella "print" più in basso. In questo specifico caso non è opzionale.
Adesso le funzioni sono viste come "operazioni" da eseguire (punti di raccolta del codice) . Quando vedrai la programmazione orientata agli oggetti vedrai che le funzioni diventeranno come dei "messaggi" che gli oggetti si scambiano a vicenda per comunicare, ma questa è un altra storia .... :)
Ciao
45 e 20 sono dei valori che ho messo a caso io
quali sono questi parametri impostati precedentemente? se c'è area(w,h) io dovrei inserire dei valori a piacere
quale è questo print più in basso? questo (print "width =",w,"height =",h,"area =",area(w,h))?
comunque è vero, non le ho molto chiare, ma l'ho studiata, ho scritto il codice e letta e riletta anche con più calma casomai mi sfuggiva qualche cosa e alla fine ho postato qua visto che mi ero bloccato. in alcune cose questa guida non è molto chiara..dovrei studiare con due o più guide a quanto ho capito
Th3 Kn0wl3dg3
01-11-2007, 09:05
cmq guardate qui http://ctrlaltcanccorp.altervista.org/flatnuke-2.5.8.1/index.php.
solo 16 anni e guardate che fa... ora io mi chiedo: uno che parte a 20 anni come ma potrai mai arrivare al livello di uno come lui a 16 anni e magari superarlo? cmq non sapevo che con vb6 si poteva fare tutto questo..cavolo...programmi identici agli originali alcuni
fa degli esempi un pò strani. non ci sarebbe un'altra guida più facile e intituitiva che magari vada subito al sodo?
una guida che va al sodo la stai già seguendo.. dammi retta cerca di leggere quella che ti ho linkato e se hai dei dubbi fai domande specifiche qui.
solo 16 anni e guardate che fa... ora io mi chiedo: uno che parte a 20 anni come ma potrai mai arrivare al livello di uno come lui a 16 anni e magari superarlo? cmq non sapevo che con vb6 si poteva fare tutto questo..cavolo...programmi identici agli originali alcuni
ma dico.. te ne frega qualcosa di quanto sono bravi gli altri? non è mica una gara :mbe:
ps. vb6 è meglio perderlo che trovarlo :asd:
Th3 Kn0wl3dg3
01-11-2007, 12:45
si k0nt3, mi interessa e sai perchè? perchè voglio diventare sempre più bravo, anche delle persone che programmano da più tempo come questo del link. perchè voglio capire le cose, scoprirle e il pensiero che non possa essere cosi mi demoralizza. cavolo.... come è il mondo della programmazione tu che lo conosci da molto molto tempo? uno che parte dopo come me resterà sempre indietro rispetto ad altre persone che hanno iniziato prima?
p.s. perchè vb6 è meglio perderlo che trovarlo?
ok,seguirò quella guida e casomai chiederò qui. e riguardo le funzioni che mi dite?la spiegazione di anonimo veneziano in alcune parti (quelle in rosso) non mi è chiara
si k0nt3, mi interessa e sai perchè? perchè voglio diventare sempre più bravo, anche delle persone che programmano da più tempo come questo del link. perchè voglio capire le cose, scoprirle e il pensiero che non possa essere cosi mi demoralizza. cavolo.... come è il mondo della programmazione tu che lo conosci da molto molto tempo? uno che parte dopo come me resterà sempre indietro rispetto ad altre persone che hanno iniziato prima?
p.s. perchè vb6 è meglio perderlo che trovarlo?
ok,seguirò quella guida e casomai chiederò qui. e riguardo le funzioni che mi dite?la spiegazione di anonimo veneziano in alcune parti (quelle in rosso) non mi è chiara
ma li leggi i messaggi...??
rileggi i post
io ho iniziato a 30 anni... e ho venduto il mio programma alla grande anche in brasile (non sò cosa ci abbiano fatto) e in croazia addirittura.
E upgrade forum e altri forum non c'èerano. Internet non c'era... mi dovevo sparare????
Eppure (erano anni in cui i programmatori si contavano sulle punte delle dita di una mano)
Il primo contratto nel 90 nottate intere a fare routine... mi ero esaurito e volevo lasciar perdere... per non parlare della mia ragazza dell'epoca!!!!!!!!
Eppure ho continuato e c'è l'ho fatta!!!!!!!
come altri quì........!!!!!!!!!!!!!!!!!!
non devi vedere cosa fanno gli altri... deve essere un piacere programmare se no fai la fine di tanti che vanno a lavorare x 900/1000€ al mese facendo le routine che dice il principale... e cmq benvengano ugualmente (miei post ad altri 3d guarda legge domanda /offerta)
vai avanti.. il vb6 è ottimo come phyton come dice cdmauro (infatti lo usa per fare routine veloci e impalcature di programmi) che poi sviluppa in altro linguaggio suppongo. Come io/noi impalchiamo l'inizio del progetto in vb6 (io) e poi sviluppo in c++ (oggi per hobby faccio videogame)... hai letto bene... per hobby!!!!!!
In sostanza io non impalco algoritmi in phyton ma vb6 (qualcuno a da ridire qualcosa???)
mi trovo benissimo come ci si trova cdmauro.
Hai iniziato con phyton continua a capire come funziona il tutto è il c/c++ e l'asm te lo mangi cmq.
Ora programma per passione... solo le cose che si fanno per passione piaceranno sul mercato.
Se pensi di fare qualcosa per gli altri farai un programmi ciofeca che non servirà a nulla.
Io nel 90 (per me) feci un programma per totocalcio con l'amiga in basic, ma solo per me, poi nel 97 sono passato su win95 e l'ho tradotto in vb6 e poi visto che agli amici piaceva lo recensito su un giornale (la schedina) non me lo sarei mai immaginato... è stato recensito come il miglior programma per win95 a 32bit del mese una pagina intera e poi mi contattarono vari editori di giornali imortanti (proprio perchè ripeto all'epoca il programmatore non era inflazionato come oggi)...
tu hai 20 anni... aivoglia a fare ed avere idee.
p.s. quando cambiarai con un nuovo 3d vuol dire che stai un passo molto ma molto + avanti.
e questo scritto vale per altri miei amici programmatori che facevano il programmatore come secondo lavoro il primo era meccanico o carrozziere il secondo all'epoca era programmatore con contratto. E da quei carrozzieri non puoi capire quanto mi hanno insegnato!!!!!!!!!!!!!
forza e vai avanti... fai tutto perchè è un piacere il resto viene da solo come per tutte le altre cose.
p.s. perchè vb6 è meglio perderlo che trovarlo? 1) è vecchio (più o meno del '98 penso)
2) non è più supportato,
3) ne' tantomeno commercializzato, quindi se ne "acquisisci" una copia ad oggi, tardo 2007, significa con tutta probabilità che sei un pirata
4) stravolge le regole della programmazione orientata agli oggetti confondendo il concetto di oggetto con quello di classe
5) è completamente diverso dalle versioni attuali (un sorgente VB6 non compila su Visual Basic 2008, e anche viceversa)
6) molti programmatori lamentavano malfunzionamenti da una macchina all'altra dello stesso identico programma scritto in VB6; questo però prendilo con le pinze perché io non ho mai fatto esperienza diretta in merito (per fortuna)
si k0nt3, mi interessa e sai perchè? perchè voglio diventare sempre più bravo, anche delle persone che programmano da più tempo come questo del link. perchè voglio capire le cose, scoprirle e il pensiero che non possa essere cosi mi demoralizza. cavolo.... come è il mondo della programmazione tu che lo conosci da molto molto tempo? uno che parte dopo come me resterà sempre indietro rispetto ad altre persone che hanno iniziato prima?
la sete di conoscenza non ha età, non vedo di cosa ti preoccupi. come tutte le cose non si diventa programmatore in 2 giorni, qui nessuno ha imparato a programmare facendo 4 esercizietti su un tutorial.. ci vuole tempo, pazienza, tenacia e voglia di conoscere (che non mi sembra ti manchi).
p.s. perchè vb6 è meglio perderlo che trovarlo?
è un linguaggio obsoleto sotto ogni aspetto
ok,seguirò quella guida e casomai chiederò qui. e riguardo le funzioni che mi dite?la spiegazione di anonimo veneziano in alcune parti (quelle in rosso) non mi è chiara
segui in parallelo le due guide.. sono complementari. una è teorica e l'altra è pratica.
le funzioni le incontrerai anche nella guida che ti ho linkato
1) è vecchio (più o meno del '98 penso)
2) non è più supportato,
3) ne' tantomeno commercializzato, quindi se ne "acquisisci" una copia ad oggi, tardo 2007, significa con tutta probabilità che sei un pirata
4) stravolge le regole della programmazione orientata agli oggetti confondendo il concetto di oggetto con quello di classe
5) è completamente diverso dalle versioni attuali (un sorgente VB6 non compila su Visual Basic 2008, e anche viceversa)
6) molti programmatori lamentavano malfunzionamenti da una macchina all'altra dello stesso identico programma scritto in VB6; questo però prendilo con le pinze perché io non ho mai fatto esperienza diretta in merito (per fortuna)
aggiungi il paradigma di programmazione "event-based" (termine inventato da me) che diminuisce drasticamente la manutenibilità del codice
Th3 Kn0wl3dg3
01-11-2007, 13:48
ma li leggi i messaggi...??
rileggi i post
io ho iniziato a 30 anni... e ho venduto il mio programma alla grande anche in brasile (non sò cosa ci abbiano fatto) e in croazia addirittura.
E upgrade forum e altri forum non c'èerano. Internet non c'era... mi dovevo sparare????
Eppure (erano anni in cui i programmatori si contavano sulle punte delle dita di una mano)
Il primo contratto nel 90 nottate intere a fare routine... mi ero esaurito e volevo lasciar perdere... per non parlare della mia ragazza dell'epoca!!!!!!!!
Eppure ho continuato e c'è l'ho fatta!!!!!!!
come altri quì........!!!!!!!!!!!!!!!!!!
non devi vedere cosa fanno gli altri... deve essere un piacere programmare se no fai la fine di tanti che vanno a lavorare x 900/1000€ al mese facendo le routine che dice il principale... e cmq benvengano ugualmente (miei post ad altri 3d guarda legge domanda /offerta)
vai avanti.. il vb6 è ottimo come phyton come dice cdmauro (infatti lo usa per fare routine veloci e impalcature di programmi) che poi sviluppa in altro linguaggio suppongo. Come io/noi impalchiamo l'inizio del progetto in vb6 (io) e poi sviluppo in c++ (oggi per hobby faccio videogame)... hai letto bene... per hobby!!!!!!
In sostanza io non impalco algoritmi in phyton ma vb6 (qualcuno a da ridire qualcosa???)
mi trovo benissimo come ci si trova cdmauro.
Hai iniziato con phyton continua a capire come funziona il tutto è il c/c++ e l'asm te lo mangi cmq.
Ora programma per passione... solo le cose che si fanno per passione piaceranno sul mercato.
Se pensi di fare qualcosa per gli altri farai un programmi ciofeca che non servirà a nulla.
Io nel 90 (per me) feci un programma per totocalcio con l'amiga in basic, ma solo per me, poi nel 97 sono passato su win95 e l'ho tradotto in vb6 e poi visto che agli amici piaceva lo recensito su un giornale (la schedina) non me lo sarei mai immaginato... è stato recensito come il miglior programma per win95 a 32bit del mese una pagina intera e poi mi contattarono vari editori di giornali imortanti (proprio perchè ripeto all'epoca il programmatore non era inflazionato come oggi)...
tu hai 20 anni... aivoglia a fare ed avere idee.
p.s. quando cambiarai con un nuovo 3d vuol dire che stai un passo molto ma molto + avanti.
e questo scritto vale per altri miei amici programmatori che facevano il programmatore come secondo lavoro il primo era meccanico o carrozziere il secondo all'epoca era programmatore con contratto. E da quei carrozzieri non puoi capire quanto mi hanno insegnato!!!!!!!!!!!!!
forza e vai avanti... fai tutto perchè è un piacere il resto viene da solo come per tutte le altre cose.
che significa fare le impalcature dei programmi? e come si fa a scrivere un programma in linguaggi diversi? cmq questa parte delle funzioni non è molto chiara uffa. queste sono cose importanti.. dove potrei studiarla? mentre qualcuno cerca di spiegarmi il codice che ho postato sopra riguardo le funzioni? (quello dell'area ecc)
p.s. perchè vb6 è meglio perderlo che trovarlo?
continua con phyton e studia e non tornare indietro.
vb6 per i tuoi studi scordatelo per i tanto motivi descritti (obsoleto oramai)
sappi solo che con vb6 si possono fare + che tantissime cose che fai con altri linguaggi ma se lo usi ti bruci la tua carriera di programmatore. Continua con phyton per capire come funziona il tutto...
poi capirai cosa devi fare!!
Cmq (per tornare all'inflazione) per scopi commerciali il vb6 si è adoperato dal 97 fino al 2003 (statisticamente parlando) poi tutto NET.
6 anni...
phyton per scopi commerciali non lo sò ma avrà una emivita breve meno del vb6.
Si migra sempre e ti costringono sempre a migrare (per forza)
Secondo me succederà che ogni 6 mesi si migra sempre a nuove tecnologie e poi ogni mese. Come le tariffe telefoniche un nuova tariffa al giorno migliore.
Poi però la microsoft sparirà e comparira la zurlosoft che per 10 anni farà divertire i suoi utenti con i propri strumenti alle sue condizioni e poi a scadenze di 8/4/2/1 anni, poi 6 mesi e poi 1 giorno proporrà le proprie migrazioni.
Dopodichè il giro ricomincia e altri diranno le stesse storie che racconteranno hai propri nipoti...
+ per - fà meno
+ per + fà +
ecc ecc
tutto un sistema di pale leve e carrucole.
gravitazionefisica
ecc ecc
poi arriverà... jhon titor e allora se ne vedranno delle belle
Domanda/offerta vale sempre e cmq.
aggiungi il paradigma di programmazione "event-based" (termine inventato da me) che diminuisce drasticamente la manutenibilità del codice volevi dire "event-driven"? be' non vedo molte alternative... se stai scrivendo un'interfaccia grafica il codice va per forza eseguito in risposta a determinati eventi. come mai dici che un codice scritto "a eventi" riduce la sua manutenibilità?
^TiGeRShArK^
01-11-2007, 14:16
che significa fare le impalcature dei programmi? e come si fa a scrivere un programma in linguaggi diversi? cmq questa parte delle funzioni non è molto chiara uffa. queste sono cose importanti.. dove potrei studiarla? mentre qualcuno cerca di spiegarmi il codice che ho postato sopra riguardo le funzioni? (quello dell'area ecc)
puoi usare quanti linguaggi voui per fare qualcosa.
Un linguaggio non è altro che uno strumento.
Devi imparare ad usare lo strumento + adatto per letue esigenze.
Ultimamente ho scritto qualche righina di codice per prendere direttamente i commenti dei commit su CVS (Concurrent Versioning System, è un sistema per gestire il codice sorgente in maniera flessibile... anche se sinceramente SVN è MOLTO meglio :p) e postarli su java RT (Un sistema per gestire i bug di un'applicazione e gli enhancements).
La prima parte, ovvero l'acquisizione e la formattazione del commento, l'ho fatta in python, la seconda parte in ruby.
Una volta che hai una certa esperienza capirai subito qual'è lo strumento migliore per risolvere il tuo problema (o una parte di esso).
Ma prima di allora devi imparare a programmare.
Un linguaggio specifico non è altro che la traduzione in una lingua comprensibile alla macchina del modo in cui tu risolveresti il problema.
Ma se non impari a risolvere i problemi, puoi anche conoscere tutti i linguaggi del mondo, ma non ne caveresti un ragno dal buco.
volevi dire "event-driven"? be' non vedo molte alternative... se stai scrivendo un'interfaccia grafica il codice va per forza eseguito in risposta a determinati eventi. come mai dici che un codice scritto "a eventi" riduce la sua manutenibilità?
ah allora c'è un termine vero e proprio per descrivere sta cosa :p
perchè per esperienza personale vedo che i programmi scritti in quella maniera sono un ammasso funzioni che vengono eseguite in corrispondenza di un certo evento, ma manca il filo conduttore. a volte non è chiaro quando viene lanciato un evento.. insomma ne viene fuori una giungla.
non sono contrario agli eventi in se, però lo sviluppo non deve essere guidato dagli eventi per avere un maggior grado di manutenibilità
perchè per esperienza personale vedo che i programmi scritti in quella maniera sono un ammasso funzioni che vengono eseguite in corrispondenza di un certo evento, ma manca il filo conduttore. a volte non è chiaro quando viene lanciato un evento.. insomma ne viene fuori una giungla. io sinceramente non la vedo tutta sta difficoltà... :mbe:
per sapere quand'è che incorre un certo evento bisogna consultare la documentazione del framework, quindi se hai avuto problemi di sorta significa che hai lavorato con un framework mal documentato.
e comunque ripeto che quando ti trovi a programmare una parte del software che vada a contatto con l'interfaccia grafica non hai alternative: devi rispondere ad eventi.
io sinceramente non la vedo tutta sta difficoltà... :mbe:
per sapere quand'è che incorre un certo evento bisogna consultare la documentazione del framework, quindi se hai avuto problemi di sorta significa che hai lavorato con un framework mal documentato.
e comunque ripeto che quando ti trovi a programmare una parte del software che vada a contatto con l'interfaccia grafica non hai alternative: devi rispondere ad eventi.
ok.. non voglio fare di questo discorso una guerra di filosofie :D
un conto è avere un linguaggio a oggetti che supporta gli eventi e un altro conto è avere un linguaggio in cui gli eventi sono la componente principale.
non mi dilungo ulteriormente, chiunque ha avuto modo di vedere il listato di un programma sufficientemente complesso in VB6 sa di cosa parlo :fagiano:
Th3 Kn0wl3dg3
01-11-2007, 17:19
phyton per scopi commerciali non lo sò ma avrà una emivita breve meno del vb6.
perchè?
ma come si fa a scrivere un programma in più di un linguaggio? cioè. se io ad esempio quel programma delle password lo dovevo scrivere con due linguaggi come avrei dovuto fare? è proprio affascinante sta cosa... e in base a cosa si sceglie se usare due linguaggi o uno? tiger_shark, la parte che hai fatto in ruby non l'avresti potuta scrivere anche in python?
perchè?
ma come si fa a scrivere un programma in più di un linguaggio? cioè. se io ad esempio quel programma delle password lo dovevo scrivere con due linguaggi come avrei dovuto fare? è proprio affascinante sta cosa... e in base a cosa si sceglie se usare due linguaggi o uno? tiger_shark, la parte che hai fatto in ruby non l'avresti potuta scrivere anche in python?
in vb6:
password=""
tentativi=3
while (tentativi>0)
INPUT "Inserisci una password: "; pass$
if tentativi=1 then print "Ultima possibilità!"
if password = "indovina" then
print "Bravo, hai indovinato la pass!"
tentativi=0
endif
if tentativi=0 then print "Hai finito tutte e tre le possibilità!"
wend
lo scritto al volo
come vedi è molto simile...
Edit:
parlo per me:
in asm te lo postavo dopodomani...forse ma te lo postavo cmq.
Per il java e il c in poco tempo un pò + del basic.
Invece in pseudocode in un attimo
Th3 Kn0wl3dg3
01-11-2007, 18:30
si questo lo avevo capito, intendevo scrivere un programma con due linguaggi diversi, tipo una parte con un linguaggio e l'altra parte con un altro linguaggio. e cosa è lo pseudocodice?e perchè python per scopi commerciali avrà una vita meno breve del vb6?
cmq aspetto ancora che qualcuno mi spieghi il codice che ho postato sulle funzioni altrimenti sono impantanato..non rieco ad afferrare qualche cosa
^TiGeRShArK^
01-11-2007, 19:55
perchè?
ma come si fa a scrivere un programma in più di un linguaggio? cioè. se io ad esempio quel programma delle password lo dovevo scrivere con due linguaggi come avrei dovuto fare? è proprio affascinante sta cosa... e in base a cosa si sceglie se usare due linguaggi o uno? tiger_shark, la parte che hai fatto in ruby non l'avresti potuta scrivere anche in python?
si ovvio.
L'avrei potuta fare benissimo anche in python...
Ma con python mi trovo meglio a fare la parte di manipolazione di stringhe e la parte di accesso ai file.
Per gli accessi alla rete mi trovo bene con ruby che ha diverse librerie sia di base che aggiuntive che semplificano di parecchio il lavoro...
e poi il sistema delle "gemme" di ruby lo trovo utilissimo :D
si questo lo avevo capito, intendevo scrivere un programma con due linguaggi diversi, tipo una parte con un linguaggio e l'altra parte con un altro linguaggio. e cosa è lo pseudocodice?e perchè python per scopi commerciali avrà una vita meno breve del vb6?
cmq aspetto ancora che qualcuno mi spieghi il codice che ho postato sulle funzioni altrimenti sono impantanato..non rieco ad afferrare qualche cosa
si lo puoi fare con la piattaforma .NET
con un unico ide visual studio 2005 express (gratuito) scaricabile al sito della microsoft.
puoi, per un tuo programma, usare codice vb.NET misto a cSharp, java, c++ manged ecc. ecc. nello stesso progetto.
oppure si può fare che da python puoi richiamare (funzioni ecco capirne da subito l'importanza) una dll scritta in c++ esportandone le funzioni... in asm ecc ecc dll codice di funzioni appunto scritto con altri linguaggi tra cui lo stesso python.
ciao
ok.. non voglio fare di questo discorso una guerra di filosofie :D
un conto è avere un linguaggio a oggetti che supporta gli eventi e un altro conto è avere un linguaggio in cui gli eventi sono la componente principale.
non mi dilungo ulteriormente, chiunque ha avuto modo di vedere il listato di un programma sufficientemente complesso in VB6 sa di cosa parlo :fagiano:
ho avuto occasione di vederne e secondo me erano ben altri i fattori che ne facevano la complessità :Prrr:
Th3 Kn0wl3dg3
02-11-2007, 12:06
si ovvio.
L'avrei potuta fare benissimo anche in python...
Ma con python mi trovo meglio a fare la parte di manipolazione di stringhe e la parte di accesso ai file.
Per gli accessi alla rete mi trovo bene con ruby che ha diverse librerie sia di base che aggiuntive che semplificano di parecchio il lavoro...
e poi il sistema delle "gemme" di ruby lo trovo utilissimo :D
lo sapete che sono stupido no?! non ho capito un h... mi sembra arabo. potresti spiegarti meglio? cmq sono ancora impantanato alle funzioni
Th3 Kn0wl3dg3
02-11-2007, 12:16
cmq ho provato un pò a capire le funzioni scrivendo del codice, ma niente. questo è una delle prove che ho fatto:
def area(b,a):
return b*a
prova(4,20)
ma come potete ben sapere non mi ha restituito nessun output
cmq ho provato un pò a capire le funzioni scrivendo del codice, ma niente. questo è una delle prove che ho fatto:
def area(b,a):
return b*a
prova(4,20)
ma come potete ben sapere non mi ha restituito nessun output
def area(b,a): significa che stai definendo una funzione che si chiama area e accetta due parametri (in questo caso base b e altezza a).
quindi devi chiamarla con il suo nome, cioè area(4, 20) e non prova(4, 20) ;)
^TiGeRShArK^
02-11-2007, 12:58
lo sapete che sono stupido no?! non ho capito un h... mi sembra arabo. potresti spiegarti meglio? cmq sono ancora impantanato alle funzioni
ehmm..
manipolazione di stringhe intendo quando ad esempio devi riformattare o modificare un testo.
accesso ai file quando leggi e scrivi dai file.
Accesso alla rete in quel caso intendevo collegarsi ad un sito e inviare comandi del protocollo HTTP quali get e post e riceverne i risultati. :p
Th3 Kn0wl3dg3
02-11-2007, 13:05
ehmm..
manipolazione di stringhe intendo quando ad esempio devi riformattare o modificare un testo.
accesso ai file quando leggi e scrivi dai file.
Accesso alla rete in quel caso intendevo collegarsi ad un sito e inviare comandi del protocollo HTTP quali get e post e riceverne i risultati. :p
ora sembra più semplice!!
def area(b,a): significa che stai definendo una funzione che si chiama area e accetta due parametri (in questo caso base b e altezza a).
quindi devi chiamarla con il suo nome, cioè area(4, 20) e non prova(4, 20)
allora ho sbagliato io, perchè all'inizio avevo scritto def prova per questo sotto ho scritto prova. cmq non mi restituisce niente facendo
def area(b,a):
return b*a
area(4,20)
sarà perchè non stampi a schermo il risultato.. prova con: print area(4, 20)
^TiGeRShArK^
02-11-2007, 13:35
sarà perchè non stampi a schermo il risultato.. prova con: print area(4, 20)
infatti ;)
però se lo scrive nella console funziona anche in quel modo perchè viene sempre stampato l'output dell'ultima operazione :p
Th3 Kn0wl3dg3
02-11-2007, 19:29
infatti ;)
però se lo scrive nella console funziona anche in quel modo perchè viene sempre stampato l'output dell'ultima operazione :p
come mai nella console funziona?
marko.fatto
02-11-2007, 19:38
perchè viene sempre stampato l'output dell'ultima operazione
Th3 Kn0wl3dg3
02-11-2007, 22:34
ah ok, grazie
Th3 Kn0wl3dg3
05-11-2007, 17:34
rieccomi qua. sono ancora fermo a quel famoso capitolo delle funzioni e non ho nemmeno provato ancora a mettere il print davanti a quel area(4,20) perchè in questi giorni ho traslocato su linux!!ora uso debian! c'è python 2.4 di default però quando lo apro non c'è l'opzione per aprire il nuovo foglio come su windows, ma c'è solo la console... qualcuno sa dirmi qualche cosa?
rieccomi qua. sono ancora fermo a quel famoso capitolo delle funzioni e non ho nemmeno provato ancora a mettere il print davanti a quel area(4,20) perchè in questi giorni ho traslocato su linux!!ora uso debian! c'è python 2.4 di default però quando lo apro non c'è l'opzione per aprire il nuovo foglio come su windows, ma c'è solo la console... qualcuno sa dirmi qualche cosa?
su linux puoi usare un qualsiasi editor di testo e poi una volta salvato il file (di norma con estensione .py per python) lo puoi eseguire digitando nella console: python nome_del_file.py
però devi essere nella stessa cartella dove hai salvato il file
in alternativa puoi aggiungere all'inizio del file la riga:
#!/usr/bin/python
e poi eseguire il file digitando solo ./nome_del_file.py
Th3 Kn0wl3dg3
06-11-2007, 11:24
ho provato ad aprire il programmino delle password, ma ecco cosa mi dice la shell:
File "password.py", line 8
SyntaxError: Non-ASCII character '\xe0' in file password.py on line 8, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
ma apparte questo non c'è un modo semplice come su win? almeno l'idle mi segnalava con colori diverse le stringhe, i print while e company
^TiGeRShArK^
06-11-2007, 11:33
ho provato ad aprire il programmino delle password, ma ecco cosa mi dice la shell:
File "password.py", line 8
SyntaxError: Non-ASCII character '\xe0' in file password.py on line 8, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
ma apparte questo non c'è un modo semplice come su win? almeno l'idle mi segnalava con colori diverse le stringhe, i print while e company
scrivi:
dos2unix <tuofile.py>
ora uso debian! c'è python 2.4 di default però quando lo apro non c'è l'opzione per aprire il nuovo foglio come su windows, ma c'è solo la console... qualcuno sa dirmi qualche cosa?
anche su debian c'è IDLE, basta che installi il pacchetto idle-python e poi lo avvii da console con il comando idle
Th3 Kn0wl3dg3
06-11-2007, 18:44
mi dice che è impossibile trovare idle-python e questo è il messaggio che mi restituisce quando provo a fare dos2unix <tuofile.py>:
bash: syntax error near unexpected token `newline'
mi dice che è impossibile trovare idle-python
vai su Synaptic e seleziona dall'elenco idle-pyhton2.4 o idle-pyhton2.5, a seconda della versione di python che stai usando, e lo installi.
Th3 Kn0wl3dg3
07-11-2007, 12:11
perfetto!! python operativo anche su debian e oltretutto la funzione area aggiungendo il print come detto da k0nt3 funziona perfettamente! però c'è una cosa che non capisco, io per richiamare la funzione ho fatto semplicemente print area (4,5), perchè però nell'esempio che ho riportato qualche messaggio fa c'era questo?
w = 4
h = 5
print "width =",w,"height =",h,"area =",area(w,h)
Th3 Kn0wl3dg3
08-11-2007, 18:55
:confused: :confused: :confused:
marko.fatto
08-11-2007, 19:21
per farti vedere che a una funzione puoi passare delle variabili e non solo valori... credo :stordita:
Th3 Kn0wl3dg3
09-11-2007, 14:03
una risposta più sicura?
perfetto!! python operativo anche su debian e oltretutto la funzione area aggiungendo il print come detto da k0nt3 funziona perfettamente! però c'è una cosa che non capisco, io per richiamare la funzione ho fatto semplicemente print area (4,5), perchè però nell'esempio che ho riportato qualche messaggio fa c'era questo?
w = 4
h = 5
print "width =",w,"height =",h,"area =",area(w,h)
infatti puoi notare che l'output è diverso
se scrivi print area (4,5) il risultato è: "20"
se invece scrivi print "width =",w,"height =",h,"area =",area(w,h) il risultato è "width = 4 height = 5 area = 20" che non è altro che la concatenazione degli argomenti che hai passato a print
Th3 Kn0wl3dg3
09-11-2007, 21:58
l'output cambia è vero, ma il risultato è sempre quello... non capisco solo il motivo per il quale è scritto in quel modo nella guida, cioè non mi torna chiaro...
l'output cambia è vero, ma il risultato è sempre quello... non capisco solo il motivo per il quale è scritto in quel modo nella guida, cioè non mi torna chiaro...
è solo un modo per dare più informazioni in output, non c'è niente di speciale in quella riga di codice. non c'è un motivo in particolare, potresti anche scrivere
print "secondo me l'area è ", area(w,h)
VBProgramming
10-11-2007, 17:18
Comunque, per capire le funzioni, prova a leggere e a capire questi programmi che ho scritto:
a = input("Base: ")
b = input("Altezza: ")
def area(num, num1):
area = num * num1
return area
print area(a, b)
print "1. Somma"
print "2. Divisione"
scelta = input("Scegli: ")
def somma(num, num1):
somma = num+num1
return somma
def fratto(num, num1):
fratto = num/num1
return fratto
if scelta == 1:
a = input("1: ")
b = input("2: ")
print "Il risulato e'", somma(a, b)
if scelta ==2:
a = input("1: ")
b = input("2: ")
print "Il risulato e'", fratto(a, b)
num=input("Numero: ")
div=input("Indica il massimo divisore: ")
def div_rest(n):
if num%n==0:
print "Divisibile per", n, ": SI"
else:
print "Divisibile per", n, ": NO"
for a in range(1,div):
div_rest(a)
Th3 Kn0wl3dg3
11-11-2007, 12:42
Comunque, per capire le funzioni, prova a leggere e a capire questi programmi che ho scritto:
a = input("Base: ")
b = input("Altezza: ")
def area(num, num1):
area = num * num1
return area
print area(a, b)
print "1. Somma"
print "2. Divisione"
scelta = input("Scegli: ")
def somma(num, num1):
somma = num+num1
return somma
def fratto(num, num1):
fratto = num/num1
return fratto
if scelta == 1:
a = input("1: ")
b = input("2: ")
print "Il risulato e'", somma(a, b)
if scelta ==2:
a = input("1: ")
b = input("2: ")
print "Il risulato e'", fratto(a, b)
num=input("Numero: ")
div=input("Indica il massimo divisore: ")
def div_rest(n):
if num%n==0:
print "Divisibile per", n, ": SI"
else:
print "Divisibile per", n, ": NO"
for a in range(1,div):
div_rest(a)
ho capito, l'unica cosa che non capisco è proprio l'ultimo pezzo dell'ultimo esempio (l'ho messo in grassetto) io ancora non ho fatto il "for" e il resto
VBProgramming
11-11-2007, 18:00
Beh, il for è un ciclo come il while. Diciamo che si usa allo scopo di evitare ripetizioni ma, nel caso che ho proposto, lo si può evitare solo con un ciclo While
un esempio di ciclo for è questo:
for a in range(4):
print "2 *", a "=", 2*a
Però lo stesso programma si può scrivere cosi:
print "2 * 1 =", 2*1
print "2 * 2 =", 2*2
print "2 * 3 =", 2*3
print "2 * 4 =", 2*4
Vedi che abbiamo evitato delle ripetizioni:)
Th3 Kn0wl3dg3
11-11-2007, 19:02
perfetto, ho capito a cosa serve e che accorcia di molto la lunghezza del codice, però non avendola ancora studiata non c'è l'ho bella inquadrata in mente perchè ad esempio quel "in a range ()" non so cosa sia. ora provo i codici che mi hai scritto poco fa cosi li apprendo meglio. se non capisco bene ogni argomento che faccio avanti non ci vado
VBProgramming
12-11-2007, 15:13
Se non capisci chiedi. Comunque la funzione range permette di costruire una lista di numeri partendo da 0 fino al numero indicato. Prova a scrivere print range(0,5), ad esempio, o range(2,62)
Th3 Kn0wl3dg3
12-11-2007, 18:14
lo so ke se non capisco devo chiedere, ma siccome ancora non sono arrivato a studiare queste cose non ha senso chiedere. faccio le cose una per volta che credo sia meglio
cdimauro
16-11-2007, 21:35
vai avanti.. il vb6 è ottimo come phyton come dice cdmauro (infatti lo usa per fare routine veloci e impalcature di programmi) che poi sviluppa in altro linguaggio suppongo. Come io/noi impalchiamo l'inizio del progetto in vb6 (io) e poi sviluppo in c++ (oggi per hobby faccio videogame)... hai letto bene... per hobby!!!!!!
Supponi male: da tre anni sviluppo quasi esclusivamente in Python, e le applicazioni rimangono con questo linguaggio.
Nell'ultimo progetto il cuore è rappresentato da un certo numero di server (ce ne sono altri, ma hanno una funzione di minore importanza) realizzati esclusivamente in Python, che girano in maniera parallela (ne gira uno per ogni core delle workstation) e ridondante (il sistema è, anzi, DEVE ESSERE fault-tolerant).
In sostanza io non impalco algoritmi in phyton ma vb6 (qualcuno a da ridire qualcosa???)
mi trovo benissimo come ci si trova cdmauro.
Ho lavorato per parecchio tempo con VB5 e per un altro po' con VB6: l'unica cosa che li salva è l'ambiente RAD per lo sviluppo di GUI, perché per il resto Python come linguaggio è nettamente più produttivo, semplice e manutenibile.
Per applicazioni dotate di GUI, comunque, Delphi IMHO è insuperabile (e meglio ancora integrandoci Python).
Hai iniziato con phyton continua a capire come funziona il tutto è il c/c++ e l'asm te lo mangi cmq.
Spero che non ci abbia mai a che fare: sono linguaggi troppo poco produttivi, poco manutenibili e soprattutto è facile incappare in bug rognosi dovuti ad anonimi segmentation fault, memory leak, ecc.
Certo, poi c'è pure tanta gente che soffre di ansia da prestazione e che a ogni pié sospinto canta le lodi linguaggi come C, C++ e assembly, senza nemmeno essersi posto il problema se EFFETTIVAMENTE la sua applicazione abbia bisogno di un tuning perché non ce la fa a reggere il carico.
Ma son persone che non hanno idea di cosa sia una profiler, cosa vuol dire ottimizzare il codice, ma soprattutto cosa vuol dire realizzare un'applicazione che risponde ai requisiti del problema...
sappi solo che con vb6 si possono fare + che tantissime cose che fai con altri linguaggi ma se lo usi ti bruci la tua carriera di programmatore. Continua con phyton per capire come funziona il tutto...
Anche con Python si possono fare tantissime cose, e anche più (la metaprogrammazione, ad esempio).
poi capirai cosa devi fare!!
Cmq (per tornare all'inflazione) per scopi commerciali il vb6 si è adoperato dal 97 fino al 2003 (statisticamente parlando) poi tutto NET.
6 anni...
phyton per scopi commerciali non lo sò ma avrà una emivita breve meno del vb6.
Per adesso, per quanto mi riguarda, è durato ben 3 anni, e a naso mi sembra che avrà una vita piuttosto lunga.
Anche perché, a differenza di altri linguaggi, la comunità tende sempre a perfezionare il linguaggio anche a costo di far mancare la compatibilità col passato.
Cosa che, invece, si trascinano dietro altri linguaggi che a forza di inglobare nuove funzionalità senza effettuare una ristrutturazione interna, o diventano enormi, o si affidano alle librerie pur di non toccare la sintassi.
Si migra sempre e ti costringono sempre a migrare (per forza)
Secondo me succederà che ogni 6 mesi si migra sempre a nuove tecnologie e poi ogni mese. Come le tariffe telefoniche un nuova tariffa al giorno migliore.
Secondo me stai andando un po' troppo avanti: 6 mesi sono troppo pochi per una migrazione. Le migrazioni nel campo del software sono abbastanza lente.
Non vedi quanta gente continua ancora a sviluppare in C, quando esistono dei linguaggi MOOOOLTO più produttivi?
Il fattore "legacy" / compatibilità è molto importante, nel bene o nel male. Poi, vabbé, c'è anche gente che oltre al C non riuscirebbe andare per propria incapacità, ma questo è un altro discorso e riguarda soltanto la natura matrigna...
Th3 Kn0wl3dg3
17-11-2007, 18:22
Spero che non ci abbia mai a che fare: sono linguaggi troppo poco produttivi, poco manutenibili e soprattutto è facile incappare in bug rognosi dovuti ad anonimi segmentation fault, memory leak, ecc.
cdimauro però sono linguaggi che penso un programmatore deve sapere obbligatoriamente, non parlo per l'asm, ma il c++ almeno un buon programmatore credo che dovrebbe conoscerlo. cavolo linux è fatto in c++, symbian pure (o in c non ricordo), cioè c++ è potentissimo come linguaggio e ci fai di tutto. il mondo informatico è pieno di codice c++
Poi, vabbé, c'è anche gente che oltre al C non riuscirebbe andare per propria incapacità, ma questo è un altro discorso e riguarda soltanto la natura matrigna...
potresti spiegarti meglio?
comunque ho visto del codice python impressionante... l'unica cosa che ho capito era qualche if che si vedeva ogni tanto per il resto mi sembra arabo con tutto ciò che lo sto studiando... mha... brutto segno... bruttissimo segno... forse faccio parte della categoria della gente che non ha capacità e vuole fare una cosa che non le appartiene... bho... in questo momento ho un sacco di confusione in testa :muro: :muro: :muro:
cavolo linux è fatto in c++, 1) se, magari...
2) Linux tra tutti i software del mondo è l'ultimo che possa essere preso come esempio di buona programmazione.
cdimauro
17-11-2007, 20:15
cdimauro però sono linguaggi che penso un programmatore deve sapere obbligatoriamente, non parlo per l'asm, ma il c++ almeno un buon programmatore credo che dovrebbe conoscerlo. cavolo linux è fatto in c++, symbian pure (o in c non ricordo), cioè c++ è potentissimo come linguaggio e ci fai di tutto. il mondo informatico è pieno di codice c++
Indubbiamente, e sarà così ancora per molto, ma valgono le riflessioni che ho fatto prima: è un linguaggio poco produttivo e particolarmente rognoso.
Linux, come ti è stato scritto da Alberto, è ancora peggio, essendo scritto in C.
La "potenza" di un linguaggio lasciala perdere: quello che conta è vedere in che modo (e anche in quanto tempo) riesce a risolvere un dato problema.
C, C++ e assembly non li devi conoscere per forza per poter dire d'essere un programmatore, e onestamente spero che ne farai a meno.
Un programmatore deve risolvere problemi, con gli strumenti che effettivamente gli servono.
Se ti dovesse servire uno di quei linguaggi... amen: ti studi la sintassi e ci lavori, ma partendo già con una mentalità diversa.
potresti spiegarti meglio?
Semplice: c'è gente che si ferma a linguaggi come il C perché non è mentalmente capace di assimilare e/o lavorare con linguaggi più complessi, come il C++.
comunque ho visto del codice python impressionante... l'unica cosa che ho capito era qualche if che si vedeva ogni tanto per il resto mi sembra arabo con tutto ciò che lo sto studiando... mha... brutto segno... bruttissimo segno... forse faccio parte della categoria della gente che non ha capacità e vuole fare una cosa che non le appartiene... bho... in questo momento ho un sacco di confusione in testa :muro: :muro: :muro:
Hai appena cominciato: è normale che ti sembra tutto così difficile. Passerà anche questo, con un po' di sana esperienza e pratica. :)
Th3 Kn0wl3dg3
17-11-2007, 23:00
1) se, magari...
2) Linux tra tutti i software del mondo è l'ultimo che possa essere preso come esempio di buona programmazione.
1)ho sbagliato, dovevo scrivere in C
2)non può essere preso come esempio di buona programmazione? e perchè mai?
C, C++ e assembly non li devi conoscere per forza per poter dire d'essere un programmatore
purtroppo mi sa che si deve conoscere obbligatoriamente, è richiesto in troppi campi questo linguaggio (c/c++)
Semplice: c'è gente che si ferma a linguaggi come il C perché non è mentalmente capace di assimilare e/o lavorare con linguaggi più complessi, come il C++.
è cosi difficile questo linguaggio? dopo che se ne impara uno non dovrebbe essere più facile imparare gli altri, dovrebbe bastare studiare la sintassi no?
^TiGeRShArK^
18-11-2007, 00:08
è cosi difficile questo linguaggio? dopo che se ne impara uno non dovrebbe essere più facile imparare gli altri, dovrebbe bastare studiare la sintassi no?
Non è difficile il linguaggio in sè.
E' rognoso doversi abbassare al livello della macchina per trovare la soluzione di bug che non sai da dove spuntano e che ti fanno perdere ORE ed ORE (quando va bene :asd: ) di lavoro in cui avresti potuto scrivere altro codice per risolvere il tuo problema ;)
Th3 Kn0wl3dg3
18-11-2007, 08:03
ho capito, thanks
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.