Come migliorare i propri programmi?

P
Powner (5600 points)
24 68 85
asked Oct 12, 2017 in Programmare in Python by Powner (5,600 points)
edited Oct 12, 2017 by Powner

Ieri in laboratorio ho realizzato l'esercitazione sull'estrazione mese da formato data. Controllando successivamente le soluzioni, però, ho notato numerose differenze con le soluzioni postate su twiki, (di cui alcune neanche mi sono chiare).

Poiché il mio programma con gli esempi dà gli stessi output, come posso capire se la mia soluzione (ovviamente molto più basic e corta) rispetti comunque la consegna? Soprattutto in relazione alla correzione automatica degli homework, mi chiedo se ci sia un modo per "autovalutarsi" prima della consegna in modo da modificare il codice finché si è in tempo.

245 views

3 Answers

Neo (6720 points)
6 27 37
answered Oct 12, 2017 by Neo (6,720 points)
Sicuramente uno dei metodi e cercare di confrontarsi con qualcuno che ha risolto il problema mediante un algoritmo diverso dal tuo! Così facendo puoi innanzitutto vedere un approccio diverso all'esercizio che ti potrà essere sicuramente utile per un futuro compito e puoi anche analizzare la struttura del programma! Un esempio è stato anche fornito dal professore per quanto riguarda l' intricatezza dell'algoritmo (Meno if sono presenti più il programma sarà meno intricato e quindi di più veloce esecuzione!) Se invece vuoi analizzare la velocità d'esecuzione del tuo programma devi usare delle funzioni della libreria time come già si è discusso in precedenza in relazione alla velocità del ciclo for e while ecc... Ma se non vado errato domani, con la consegna del primo homework, il professore ci fornirà l'eseguibile per testare il nostro programma e "verificarne la velocità di esecuzione" (Questo tempo varia da computer in computer quindi è "inutile" confrontarlo con risultati eseguti su macchine diverse). Per quanto riguarda la sintassi non penso ci siano differenze, mi spiego meglio, se l'istruzione da eseguire viene scritta per intero utilizzando ad esempio un ciclo for invece che tutta assieme con la creazione della variabile, codice pythonesco per citare il professore presente mercoledì in laboratorio, ciò non cambierà la velocità di esecuzione in quanto se ci pensi è solo una forma contratta per scrivere istruzioni di codice che verranno eseguite in egual modo dal computer. Buona serata! Spero di averti aiutato :D
francesco.dev (33560 points)
14 51 129
answered Oct 12, 2017 by francesco.dev (33,560 points)
edited Oct 12, 2017 by francesco.dev

Ciao Powner!

Prima di tutto per verificare la correttezza del tuo codice fai dei test inserendo come elementi della lista gli elementi presenti negli esempi che il professore ha scritto in merito a quel programma (ti consiglio di fare ciò con tutti i programmi che hai creato).
Poi un altro passo è quello di cercare di capire se esistono funzioni che potresti usare al posto di pezzi di codice!
Esempio1: creare una funzione che calcola la radice quadrata. Tu sai benissimo che esiste la funzione sqrt(numero) che già fa questo, allora ti basterà richiamarla cosicché non dovrai scrivere del codice superfluo!
Esempio2: vedere se nella stringa ci sono lettere uguali a "c" e sostituirle con la "d": Ti basterà richiamare la funzione replace(vecchio_car, nuovo_car) per sostituire i caratteri che soddisfano la condizione, cosicché non dovrai creare alcun codice relativo alla ricerca della lettera ed alla sua sostituzione.

Ricapitolando!

Per svolgere gli homework dobbiamo essere anche abili nell'uso delle funzioni built-in di Python, dobbiamo essere abili nel trovare e creare algoritmi efficienti e più veloci (esempio: per ciclare gli elementi di una lista ti conviene usare il for invece del while perché, anche se per pochi secondi. è più veloce!). Infine per svolgere al meglio gli homework dobbiamo suddividere il problema in sotto-problemi, creando le funzioni che ci serviranno, perché mettere tutto insieme non è mai la scelta migliore!


Sperando di essere stato utile,
Ti auguro una buona serata

- Francesco Pio Scognamiglio

LeonardoEmili (35740 points)
11 65 155
answered Oct 12, 2017 by LeonardoEmili (35,740 points)

Buonasera Powner,

la tecnica è ovviamente quella di fare tanto ma davvero tanto esercizio. Non scoraggiarti se vedi soluzioni e approcci diversi da quello che tu hai deciso di intraprendere, il bello della programmazione sta proprio nella libertà di come fare eseguire determinate operazioni all'elaboratore! Ora ovviamente ci saranno sempre soluzioni migliori e più eleganti per scrivere quel programma ma il consiglio migliore che mi sento ti darti è quello di leggere tanto ma davvero tanto codice con esempi, non solo testuali, se ti capita guarda anche qualche videocorso dove spiegano le built-in functions di Python e le loro implementazioni per diversi scopi.

Una cosa sicuramente molto importante da fare è quella di non limitarti a programmare al pc, ma scrivi codice anche su quaderni fogli e in ogni maniera che ti capita. Se ti può aiutare utilizza i grafici per fare ragionamenti e non limitare la tua fantasia alla mera "struttura di Python", voglio dire ragiona con la tua testa e poi cerca di adattare il tuo pensiero e convertirlo in programma. Vedrai che così facendo non ti limiterai ad utilizzare i soliti blocchi di codice ma proverai e scoprirai nuovo codice!

Ultimo consiglio! Ricordati ovviamente che si tratta di un homework, quindi non ti stare a preoccupare di troppi aspetti e concentrati esclusivamente su quelli richiesti dall'homework stesso, punta a renderlo leggibile con commenti, veloce e ovviamente testalo più volte per verificare l'eventuale presenza di bug!

Ti auguro una buona serata!
 

Leonardo Emili