Corso C su Raspberry PI partendo da zero: vettori e matrici

Continuiamo ad approfondire molti aspetti fondamentali della programmazione. Con le spiegazioni di questa puntata sarete in grado di realizzare del software sempre più sofisticato, compatto ed efficiente. Anche in questo caso, i concetti studiati sono presenti anche in altri linguaggi di programmazione, con le opportune differenze. Ricordiamo sempre che quanto studiato, prepara la strada alla programmazione definitiva di sistemi che interagiscono con le porte di I/O, per poter comandare dispositivi elettrici ed elettronici.

Introduzione

Nella scorsa puntata si è visto come realizzare alcuni programmi dotati di "vita propria", capaci di prendere decisioni ed effettuare compiti ripetitivi. Questa volta tratteremo un argomento estremamente importante, che non può essere tralasciato. Studieremo, infatti, i vettori e le matrici. Si tratta di potentissimi mezzi che consentono di ottimizzare al massimo i programmi e gestire, con una logica chiara ed efficiente, gli algoritmi. Anche in questo caso, gli esempi saranno di difficoltà sempre crescente, e verteranno spesso sull'elettronica. Come al solito, saranno proposti inizialmente degli esempi semplici ma concettualmente errati, senza utilizzare le argomentazioni trattate, proprio per far capire il vantaggio che esse forniscono nel loro utilizzo. Un po' come dire: "Prima togli il chiodo dal legno con le mani, poi ti insegno ad usare la pinza, vedrai come cambia la musica...".

Un esempio... quasi elettronico

Il seguente esempio mostra un po' l'embrione di ciò che creeremo in futuro. Si debba creare un gioco di luci nel quale delle ipotetiche lampade (che al momento non esistono ma sono solo virtuali) si accendono, seguendo una sequenza ben precisa ma complessa.

Il circuito virtuale è composto da otto lampadine (guarda caso...) e ogni combinazione luminosa corrisponde ad un codice ben preciso. Il numero delle lampade non è casuale: otto elementi, che possono assumere due distinti stati (On e Off), formano un byte e può gestire ben 256 stati diversi di commutazione.

Si assume anche che il prototipo preveda i seguenti giochi di luce, mostrati nella tabella di figura 1.

Figura 1: Tabella gioco di luci

Figura 1: Tabella gioco di luci

 

Come si vede in figura 1, il gioco di luci prevede ben 16 combinazioni diverse di illuminazione, opportunamente codificate secondo una semplice numerazione binaria. Sarà il microprocessore ad inviare al circuito la sequenza di codici e, di conseguenza, illuminare le corrette lampade. Nell'esempio non ci occuperemo, ovviamente, della circuiteria elettronica ma è sufficiente stampare, a video, la sequenza, in un ciclo senza fine, che è: 1, 2, 4, 8, 16, 32, 64, 128, 255, 0, 24, 36, 66, 129, 66, 0.

Listato non ottimizzato

Un primo approccio "stupido" porterebbe [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2666 parole ed è riservato agli abbonati PLATINUM. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici PREMIUM e PLATINUM e potrai fare il download (PDF) di tutti gli EOS-Book, Firmware e degli speciali MONOTEMATICI. ABBONATI ORA con PAYPAL è semplice e sicuro.

Abbonati alle riviste di elettronica

7 Commenti

  1. Maurizio Di Paolo Emilio Maurizio 5 aprile 2016
  2. Andrea Tazio Giusti 5 aprile 2016
    • Maurizio Di Paolo Emilio Maurizio 5 aprile 2016
  3. erikartaz 7 aprile 2016
  4. picluigi 17 aprile 2016

Scrivi un commento