Appunti di Programmazione 2.
Programmazione imperativa in C++.
Array: inizializzazione di un array, array di caratteri e stringhe di testo, array multidimensionali, passaggio di array come parametri.
Puntatori e riferimenti: riferimenti, puntatori, puntatori null, puntatore a puntatore, puntatori e array, array di puntatori, puntatori a stringhe, aritmetica dei puntatori, puntatori costanti e puntatori a costanti, puntatori come argomenti di funzioni, puntatori a funzioni, puntatori a strutture.
Allocazione dinamica della memoria: gestione dinamica della memoria, l’operatore new, l’operatore delete, gestione dell’overflow di memoria, tipi di memoria in C++. Conversione di dati e operatori di conversione forzata di tipi.
Programmazione Avanzata ad Oggetti
Classi e oggetti: funzioni membro, metodi set, get, costruttori e distruttori, overloading e overriding di funzioni membro.
Classi derivate: ereditarietà e polimorfismo: classi derivate, tipi di ereditarietà, ereditarietà multipla e composizione, binding dinamico, funzioni virtuali, polimorfismo.
Sovraccaricamento degli operatori: sovraccaricamento degli operatori unari e binari, sovraccaricamento degli operatori +, -, di assegnamento, inserimento ed estrazione.
Template: programmazione generica, template in C++, template di funzioni e classi.
Complessità e Ordinamento.
Cenni sulla complessità: notazioni asintotiche. Complessità di un problema computazionale, limite asintotici, alcuni semplici casi di esempio sul calcolo del limite asintotico.
Algoritmi di ordinamento (ripasso): Algoritmi BubbleSort, SelectionSort, InsertionSort.
Algoritmi di ordinamento che sfruttano il concetto di ricorsione:
Merge Sort
Quick Sort
Strutture Dati Elementari e Implementazione in C++
Implementazione di strutture dati dinamiche sfruttando la OOP in C++
Liste: Implementazione di un insieme mediante liste, liste ordinate e liste non ordinate; operazioni con le liste: inserimento, cancellazione e ricerca.
Pile e code: Implementazione di pile e code mediante OOP.
Alberi: Gli alberi, struttura di un albero binario, alberi binari di ricerca ed operazioni base: inserimento, ricerca e cancellazione, visite preorder, postorder e inorder.
Grafi: Definizione di grafo, grafi orientati e non orientati, inserimento di nodi e archi, rappresentazione con matrici di adiacenza e con liste di adiacenza. Visita in ampiezza e visita in profondità.
...continua