Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Come descrivere il codice dell'Home Work??

A
AmritV (830 points)
8 8 11
in Info sul corso e sugli esami by (830 points)

Salve

Penso che sia capitato quasi a tutti nel porsi la seguente domanda: 

-è la descrizione del mio algoritmo troppo confusa? Oppure troppo chiara?

-Vorrei una volta e per tutte trovare una soluzione a questo rompicapo, nelle regole del corso c'è scritto che: Per incoraggiare lo scambio di idee (SENZA SCAMBIARE CODICE) e favorire la comprensione degli esercizi, vi facciamo suggerire l'un l'altro come migliorare la soluzione presentata.

Quindi la regola maggiormente da rispettare è scritta nelle parentesi tonde: " (SENZA SCAMBIARE CODICE)"...bene: infatti personalmente per descrivere il codice dei miei homework utilizzo un algoritmo scritto in uno pseudo-codice di mia fattura.

Vorrei fare un esempio, faciamo conto che dobbiamo descrivere l'algoritmo di una funzione che calcola la somma di due numeri soltanto se sono maggiori di 0,altrimenti ritornare None.

Inizio: Dati due numeri A e B calcolarne la somma e restituire il risultato C:

        Se A è minore di zero o B è minore di zero

                 ritorno il valore None

        altrimenti

                  calcolo la somma tra A e B e salvo il risultato in una variabile C

        ritorno C

Fine

Questo è il mio modo di descrivere gli HomeWork, pensate che può andare bene oppure la descrizione è troppo chiara? Aiutatemi

 :)

637 views
closed

6 Answers

Best answer
LUPOSaymon (2730 points)
2 3 27
by (2.7k points)
selected by

Quello che hai scritto te è un algoritmo fin troppo dettagliato (si avvicina molto ad uno pseudo-codice, visto che indichi anche l'indentazione, le operazioni di controllo e i return);

L'algoritmo è semplicemente una descrizione scritta della tua risoluzione del problema, non una traduzione del codice.

Per esempio, riscriverei quello che hai scritto nella seguente maniera:

"Se A o B è minore di zero, il valore sarà None, altrimenti calcolo semplicemente la somma tra le due variabile e metto il risultato in una variabile"

Naturalmente, dipende tutto dal tuo algoritmo, non metterti a descrivere cose fin troppo evidenti insomma ;)

Personalmente, motivo (bastano anche poche parole) la scelta di alcune operazioni complesse o "strane a prima vista" nel mio algoritmo

andrea.sterbini (207920 points)
750 1267 2373
by (208k points)
È un po' troppo dettagliata. Se ne era già parlato al PA precedente.
E
Edward (25950 points)
3 4 172
by (26.0k points)
Devi descrivere l'algoritmo, non devi tradurre da python a pseudocodice
T
Trasciatti (1400 points)
13 20 34
by (1.4k points)
edited by
Penso che un buon modo sia usare poche righe ma che spieghino il concetto: il mio programma prende due numeri, controlla che siano maggiori di zero ed in quel caso effettua la somma
Un esempio un po' più concreto, l'algoritmo per vedere il minimo cammino tra due nodi in un grafo pesato: Dijkstra:
L'algoritmo parte da un nodo, vede i suoi nodi vicini che non ha mai salvato, tra di essi salva il vicino (e l'arco)  il cui arco che lo collega al nodo di partenza è di peso minore tra tutti gli archi. Ripeti, ma anziché vedere il solo nodo salvato, vedi i vicini di tutti i nodi che ho salvato. Fine
Posso specificare quali sono i vicini perché potrebbe non essere chiaro, ma non c'è bisogno di andare più in dettaglio di così, lo pseudocodice sarebbe venuto certamente più lungo di scarse 6 righe (sono da mobile). Dettagli che ometto: i nodi man mano li salvo in un set, il grafo è un dizionario con nodi:(nodo1, nodo 2, costo),  ritorno una lista con gli archi e i costi, all'inizio controllo che il grafo non abbia pesi negativi ecc...
plm (18850 points)
13 15 118
by (18.9k points)

Così sarebbe una trasformazione da linee di codice in parole, quello che devi fare è descrivere in maniera generale il tuo codice, ovvero in questo caso fare una cosa del tipo: "la funzione calcola la somma di due numeri soltanto se sono maggiori di 0,altrimenti ritorna None."

Antares (7770 points)
5 6 41
by (7.8k points)

Credo sia troppo dettagliato scritto in questo modo, hai persino messo l'indentazione in stile Python, chiunque potrebbe facilmente tradurre il tuo pseudo codice in Python e prendere il tuo stesso voto senza fatica. L'importante è, a mio parere, far capire all'altra persona la logica generale seguita per la costruzione dell'algoritmo senza entrare troppo nei dettagli e tralasciando meccanismi ovvi come "ho creato la variabile C per mettere il risultato". Lo riscriverei in maniera simile a LUPOSaymon.

A
AmritV (830 points)
8 8 11
by (830 points)
Il problema è che una volta iniziato il PA, noi dobbiamo dare un voto all'EFFICIENZA e alla CORRETEZZA dell'algoritmo(oltre che alla chiarerezza). Se non abbiamo informazioni dettagliate, come possiamo dare un giudizio equo?

In un certo senso potrei confrontare il PA ad una sorta di Far West, dove ognuno utilizza le sue regole e le sue leggi per descrivere il proprio codice.

 Vorrei cercare di trovare una standardizzazione ed un metodo quasi univoco per la descrizione dell'algoritmo.

Questa sarebbe la tesi che supporta la mia scelta di utilizzare lo pseudo-codice. Ovviamente ci saranno anche una dozzina di  antitesi da analizzare: come il fatto che il codice può essere facilmente copiato.

"Ma molto probabilmente sono io che mi sto creando molta confusione al riguardo del PA".