-
Title:
04-05 Soluzione ad Aggiungi all'Indice
-
Description:
-
Ci sono diversi modi con i quali possiamo definire "addtoindex"
-
eccone uno che funziona.
-
Andremo a creare una procedura, che chiameremo "addtoindex"--
-
che riceve 3 parametri-- l'indice, la parola chiave, e l'URL--
-
Quello che dobbiamo fare è aggiungere ad "index" è per prima cosa vedere se la parola chiave è già inserita
-
Per fare questo dobbiamo cercare su tutte le voci di "index"
-
Normalmente si fa ciò usando un ciclo "for".
-
Definiremo la procedura "addtoindex"--
-
riceve tre parametri, "index", "keyword", "url"--
-
per aiutarci a tenere traccia di quello che stiamo facendo,
-
disegnerò un promemoria di quello che è la struttura dati di "index"
-
Ricordate che si tratta di una lista di voci
-
e ciascuna voce è essa stessa una lista
-
la cui prima parte è una parola chiave e la seconda parte è una lista di URL
-
Ecco la nostra struttura dati
-
che ci aiuterà a capire cosa fare per definire "addtoindex"
-
La prima cosa che dobbiamo fare
-
è verificare se la parola chiave esiste già nell'indice
-
Se la possiamo trovare, bene, allora vogliamo modificare quella voce, piuttosto che crearne una nuova.
-
Il modo naturale per farlo è usare un ciclo "for"
-
Itereremo attraverso gli elementi di "index"
-
Chiameremo ciascuno elemento "entry" per usarlo nel blocco
-
Questo è quello che sarà "entry"
-
La prima volta che attraversiamo il ciclo, il valore di "entry" sarà un riferimento alla lista qui--
-
che è il primo elemento della lista in "index"
-
Ora dobbiamo trovare la parola chiave
-
La parola chiave è proprio qui--è l'elemento a posizione zero di "entry"
-
Verificheremo se il valore a posizione zero su "entry"
-
è identico a quello della parola chiave ricevuta
-
useremo l'operatore di comparazione == per verifcare ciò--
-
Se è uguale, allora abbiamo una corrispondenza--
-
il che vuole dire che vogliamo aggiungere l'URL alla lista di URL associati con quella voce
-
Per ottenere quella lista di URL
-
vogliamo trovare "entry[1]"--che è il valore a posizione 1 di "entry"
-
e vogliamo accodare quel nuovo URL
-
Qui abbiamo trovato una voce che corrisponde alla parola chiave che stavamo cercando--
-
il che significa che la parola chiave è già nell'indice
-
abbiamo aggiunto il nuovo URL agli URL associati a quella parola chiave
-
abbiamo finito, non abbiamo altro da fare.
-
Quello di cui vogliamo essere sicuri, è che non continuiamo e non facciamo altro.
-
Un approccio sarebbe usare "break"--che terminerebbe il ciclo--
-
quello che invece vogliamo fare è terminare l'intera procedura.
-
Se interrompiamo con "break", avremmo ancora il problema di come affrontare il caso
-
nel quale la parola chiave non è stata trovata.
-
Quindi semplicemente useremo "return"--
-
abbiamo finito con "addtoindex", abbiamo aggiunto l'URL al posto giusto.
-
Ora dobbiamo pensare a cosa fare nel caso dove
-
la parola chiave non esiste già nell'indice
-
Se questo è il caso, allora ci troveremo alla fine del ciclo senza avere mai trovato quella voce
-
Se arriviamo alla fine del ciclo
-
significa che non abbiamo trovato alcuna voce nell'indice che corrisponde alla parola chiave
-
quello che vogliamo fare è aggiungere una nuova voce--
-
e detta nuova voce avrà, come suo valore,
-
una lista che contiene 2 elementi, la parola chiave--
-
e come secondo elemento
-
avrà una lista che contiene l'URL che abbiamo trovato che ha quella parola chiave
-
Fino ad ora ne abbiamo uno--l'URL ricevuto come parametro di "addtoindex"
-
Come facciamo?
-
Per aggiungere un nuovo elemento ad "addtoindex" utilizziamo "append"
-
Ci serve qualcosa da passare ad "append"-- vale a dire la struttura che vogliamo aggiungere
-
Tutto questo è quello che vogliamo aggiungere--
-
quindi, ecco una lista che contiene il valore di "keyword" come primo elemento
-
e come secondo, è una lista che contiene un singolo URL
-
Ecco quello che vogliamo aggiungere
-
Nel caso in cui non abbiamo trovato la parola chiave nell'indice