


























































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Algoritmi e Strutture Dati lezione introduttiva per ingegneria informatica
Tipologia: Dispense
1 / 66
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!



























































1
http://mlpi.ing.unipi.it/alfeo
2 “Ma io so già programmare!” Fondamenti I Sia dato un array contenente delle frasi. Scrivere un programma che prenda in input una stringa e restituisca tutte le frasi che la contengono. Fondamenti II Realizzare un motore di ricerca che abbia complessità O(log n) sulle operazioni di lettura. Algoritmi e Strutture Dati
4 Sommario
E. Dijkstra
7 Tecniche Testo Visuale “Debugger” (es GDB ) Compilatore Analisi Memoria ( Valgrind )
8 Debug Visuale 1 7 3 5 2 10
10 Debug Visuale // stampa con buco void stampaArray( int arr[] , int len , int buco) // PER OGNI ELEMENTO // SE SONO IN POSIZIONE buco, SALTO // ALTRIMENTI STAMPO ELEMENTO // stampa "segno" in "posizione" void stampaSegno( int posizione , int segno ) // SALTO TUTTI GLI ELEMENTI FINO A posizione // STAMPO IL SEGNO
11 Debug Visuale // stampa con buco void stampaArray( int arr[] , int len , int buco) { for ( int i=0 ; i < len ; ++i ) { if (i==buco) cout << "\t"; else cout << arr[i] << "\t" ; } cout << endl; } // stampa "segno" in "posizione" void stampaSegno( int posizione , int segno ) { for ( int i = 0 ; i < posizione ; ++i ) cout << "\t"; cout << segno << "\n"; }
13 Tipo Accessi vs
14 Lettura Input SORGENTE (^) DATI DESTINAZIONE DATI DATI DATI std::cin std::cout std::ifstream std::ofstream
16 Lettura Input leggiInput( ) // 1) LEGGO PRIMO VALORE (numero elementi) // 2) ALLOCAZIONE MEMORIA // 3) LETTURA CARATTERE PER CARATTERE
17 Lettura Input int * leggiInput( ) { cin >> len; int * arr = new int[len]; for ( int i = 0 ; i < len ; ++i ) cin >> arr[i]; return arr; }
19 liste head tail value next value next value next Solo inserimento in coda
20 Lettura su Lista Obj * leggiInput() { // LEGGO LUNGHEZZA // VARIABILI DI APPOGGIO // PER TUTTA LA LUNGHEZZA { // LEGGO VALORE // CREO E INIZIALIZZO OGGETTO // AGGIORNO TESTA } // RITORNO TESTA }