Post

Visualizzazione dei post con l'etichetta Programmazione

Breve nota di utilizzo sui componenti: Timer e Backgroud worker. E sulla nozione di "extension method"

TIMER CLASS: implementa un timer con il quale viene generato un evento a intervalli definiti dall’utente. Questo timer è ottimizzato per l’uso in applicazioni Windows Forms e deve essere usato in una finestra.  Si tratta di una classe molto importante in quanto permette di scegliere l’algoritmo migliore (tra più algoritmi riferiti ad una stessa operazione) affinchè possa eseguire l’operazione nel minor tempo possibile. BACKGROUND WORKER : consente di eseguire un’operazione su un thread separato dedicato. Le operazioni che richiedono molto tempo, come i download e le transazioni di database, possono comportare la mancata risposta dell’interfaccia utente come se fosse in esecuzione. Dunque, quando si desidera un’interfaccia utente reattiva e si devono affrontare lunghi ritardi associati a tali operazioni, questa classe fornisce una soluzione pratica. È possibile creare il BackgroundWorker a livello di codice oppure è possibile trascinarlo sul form dalla sched...

Spiegare a parole proprie la nozione di ricorsione confrontandola con quella di iterazione

Per ripetere una serie di istruzioni che però operano su valori diversi, si può scegliere la strada iterativa o la strada ricorsiva. Ricorsione :  crea un loop r ichiamando se stessa più volte , per uscire dal loop tra le istruzioni ci dovrà essere un base case che detta le condizioni in base alle quali non viene più chiamata la funzione ma si esce. Iterazione :   prevede all’interno della funzione l’uso di una singola struttura di  loop  contenente le istruzioni considerate. L’esempio più semplice ed utilizzato per evidenziare le differenze tra questi due concetti è dato dalla funzione per il calcolo del fattoriale.  metodo iterativo Function fattorialeIterativo(N As Integer )         Dim prodotto As Integer = 1         For i = 2 To N                 prodotto = prodotto * i      ...

Uso della memoria da parte di un programma, nozione di stack e Heap

Quando un programma viene avviato gli viene messa a disposizione della memoria e questa memoria ha diversi utilizzi: CODE: è un area destinata all' istruzioni eseguibili del programma  VARIABILI GLOBALI: è un area destinata a contenere variabili globali che servono all'esecuzione di tutto il programma ovvero variabili non definite all'interno delle funzioni ma al di fuori HEAP: area destinata alla collocazione di oggetti non hanno una dimensione predefinita ma sono destinati a crescere dinamicamente. In questa area ci andranno tutti i reference type. STACK:  per allocazione di oggetti che hanno definizione predefinita e per tutte le informazioni relative alle chiamate. In questa area sono destinati i value type. Lo stack è suddiviso in stack frames , ciascuna di queste aree di memoria è destinata ad ogni singola funzione. Negli stack frames ci sono varie informazioni e le più importanti sono: Variabili locali (value type) definite all’interno della funzione; Parametri della...

Trasformazione di coordinate: dal "mondo reale" al "mondo virtuale"

Immagine
 Per riportare graficamente delle rappresentazioni statistiche, Il primo ostacolo che si deve superare per sfruttare a pieno le potenzialità della libreria GDI+  però è riuscire a trasformare le coordinate del “mondo reale”, quindi le coordinate del piano cartesiano, in coordinate del “mondo virtuale”, quindi i pixel. In particolare, si vuole riprodurre la finestra reale all’interno del rettangolo virtuale e si identificano, quindi, le caratteristiche della finestra reale (come  minY ,  maxY ,  minX ,  maxX ) e quelle del rettangolo (ovvero  x ,  y ,  w ,  h ). Nel caso dell’asse delle ascisse, quindi delle coordinate x, il ragionamento è semplice: posto  w  la larghezza del rettangolo virtuale e  Left  lo scostamento del rettangolo dal lato sinistro, si ottiene la seguente trasformazione: Invece per le coordinate y si devono fare delle considerazioni: a differenza del “mondo reale”, nel “mondo virtuale...