Dato un oggetto rettangolare largo w e alto h ci viene chiesto di renderlo più piccolo del 20%! Prima di tutto diminuiamo del 20% la sua larghezza:
1
| object.width = object.width – ( (object.width*20) / 100) |
da cui
1
| object.width = object.width – ( object.width * 0.2 ) |
da cui
1
| object.width = object.width * ( 1-0.2 ) |
Per l’altezza vale esattamente lo stesso.
Quando c’è di mezzo un terzo oggetto, cioè non ci è stata data la percentuale da togliere al nostro oggetto ma da un terzo, abbiamo:
1 2 3
| rate = object.width / object.height
object.width = terzo.width*(1-0.2)
object.height = object.width/rate |
Continua...
Quanto matematica utilizza uno sviluppatore? E quanta matematica bisogna conoscere per saper e poter sviluppare bene?
Se si ha la passione per la programmazione molto probabilmente si riescono a superare tutti gli ostacoli dovuti a qualche mancanza matematica. Ciononostante se oltre alla passione si possiede una decorosa conoscenza matematica, nonché della logica, la nostra “vita” da sviluppatore ne guadagnerà sicuramente. Risulta comunque evidente che non tutti i programmatori hanno necessità di scontrarsi con problemi “matematici”. Molto, anzi tutto, dipende dal tipo di programma che si sta sviluppando. Una rubrica telefonica ha sicuramente molta meno matematica di un giochino come PacMan! Anche se non è sempre detto. In definitiva tutto dipende dalla “parte” di codice che stiamo sviluppando.
Centrare un elemento
Chi ad esempio sviluppa user interface (UI), ha certamente dovuto affrontare almeno una volta situazioni che richiedevano moltiplicazioni e divisioni aggrovigliate assieme. Una volta mi è capitato di imbattermi in un codice che doveva centrare orizzontalmente una window rispetto allo schermo. La funzione (non riporto il codice originale in C per semplificare la lettura a tutti) era scritta in questo modo:
1
| window.x = ( screen.width / 2 ) – ( window.width / 2 ) |
Probabilmente il programmatore quando l’ha scritta ha – correttamente – ragionato in questo modo:
- Trovo il centro dello schermo
( screen.width / 2 )
- Posiziono la finestra nel mezzo dello schermo
( window.x = screen.width )
- Dato che in questo modo sarebbe centrato solo l’angolo superiore sinistro della finestra, sottraggo anche la metà della larghezza della finestra
( window.width / 2) per “centrare” il tutto
window.x = ( screen.width / 2 ) – ( window.width / 2 )
Fino qui la logica e la passione hanno sicuramente aiutato il nostro sviluppatore. Tuttavia un ulteriore miglioramento poteva esser fatto giusto per evitare le due divisioni, ovvero:
1
| window.x = ( screen.width – window.x ) / 2 |
La conoscenza delle frazioni, e quindi un po’ di matematica elementare, avrebbero risparmiato alla CPU un divisione di troppo: una delle operazioni più pesanti tra l’altro!
Se poi vogliamo essere “maniaci” o perfezionisti, potremmo, in base al linguaggio di programmazione che usiamo, migliorare ulteriormente l’operazione scrivendo:
1
| window.x = ( screen.width – window.x ) >> 1 |
Dove è >> indica l’operazione logica di “spostamento” a destra di un bit – notoriamente operazione molto rapida. Spostare a destra di un bit un valore equivale a dividerlo per 2!
Continua...
Prima di tutto, come accennato nel Post Crittografia il sistema RSA è una cifratura a chiave pubblica e sfrutta le proprietà dei numeri primi. Inoltre l’aritmetica adottata (nei calcoli) non è quella ordinaria, bensì la cosidetta artirmetica finita o modulare. Iniziamo proprio da quest’ultima per procedere passo dopo passo nella realizzazione di una cifratura RSA.
Continua...
Ultimi Commenti
Marco: Ti ringrazio moltissimo, mi hai illuminato
ho risolto impostando [cc_objc] //OptionViewController.m -...
Giovambattista Fazioli: @Marco: Ti consiglio un approccio credo più corretto. Se hai eseguito il subclass del tab...
Marco: Scusa lo spam.. ho notato che c’è un errore.. ecco la correzione [cc_objc] /** PrimaClasse.h **/ #import...
Marco: dimenticato.. in [cci]OptionViewController[/cci ] il [cci]@syntetize[/cci] del delegato l’ho messo
luigi: molto chiaro e semplice devo ammettere che anche scrivendo da un pà difficilmente uso delegati creati da...