codici linguaggio C

piccolo elenco di codici scritti in linguaggio C a disposizione di chi ama giocare

per testarli basta copiarli in un file con estensione.c e salvarli nella vostra directory di lavoro  prima di compilarli; io utilizzo il compilatore C di linux Knoppix e il comando e’: gcc programman.c – o programman; dove n indica il numero del codice che state compilando e programman il nome del file eseguibile.

programma1

#include <stdio.h>
int main (void)
{
printf (“antani per due\n”);
printf (“anche antani adora le ciambelle\n”);
return 0;
}

commenti al programma1

questo e’ incommentabile


programma2

questo programma genera numeri interi pseudocasuali con ripetizioni, all’interno del codice e’ possibile scegliere il range dove questi numeri vengono “pescati”. in questo codice che sembra apparentemente funzionare c’e’ un errore grossolano (vediamo se lo trovate!)


programma3

questo programma (funziona ed e scritto correttamente) rappresenta le estrazioni di una serie di numeri da un ipotetico contenitore e siccome una volta che il numero e’ stato estratto non viene rimesso nell’urna l’elenco dei numeri estratti non presenta ripetizioni.


programma4

il programma stampa a video la funzione y=2x+1


programma5

il programma stampa a video la retta inoltre crea due file, uno contenente le coordinate x e i valori che la retta assume in corrispondenza, l’altro contenente i comandi da passare a gnuplot per la stampa a video


programma6

questo e’ analogo al programma5 con la differenza che introduco i puntatori e la funzione di allocazione dinamica della memoria (nei due codici non ho inserito i file.h, chi testera’ il codice puo’ crearli al momento)


programma7

questo programma stampa sempre a video una retta in cui posso scegliere il dominio (inserendolo come dimensione di un vettore), posso scegliere i parametri a (coefficiente angolare) e b (intercetta)


programma8

programma che alloca dinamicamente una matrice e la stampa a video


programma9

programma che calcola il fattoriale, le disposizioni semplici e le combinazioni (spiegazione all’interno del codice)


programma10

programma che ordina con l’algoritmo quicksort un vettore i cui elementi vengono inseriti da tastiera


programma11

il programma riguarda il percettrone di Rosenblatt in cui sono definite due funzioni, una che riguarda l’attivazione del percettrone (sommatoria dei pesi sinaptici per il valore degli ingressi piu’ il bias) e l’altra riguarda il trasferimento sinaptico a gradino. il percettrone e’ in grado di classificare lo spazio degli ingressi di funzioni logiche OR oppure AND


programma12

questo programma riguarda ancora il percettrone di Rosenblatt con le medesime funzioni presenti nel programma11 ma in questo caso e’ stata inserita una funzione con lo scopo di addestrare la rete neurale


programma13

questo programma riguarda una rete neurale composta da tre layers (MLP) ossia una rete neurale con uno strato nascosto; in questo caso lo spazio degli ingressi puo’ essere ulteriormente suddiviso con la conseguenza di riuscire a classificare ad esempio la funzione XOR (che non si potrebbe fare col percettrone di Rosenblatt)


programma14

questo programma riguarda una rete neuronale multilayers (MLP) in cui e’ inserita una funzione di addestramento stocastica a discesa di gradiente e retropropagazione dell’errore; la rete come nel caso del programma13 e’ formata da tre layers di cui uno nascosto; tuttavia la struttura del codice consente sia di cambiare il numero dei percettroni per layer e sia il numero stesso dei layers (con opportune modifiche alle funzioni coinvolte); tutte le reti neuronali che sono presenti dal programma11 al programma14 sono di tipo feedforward (l’impulso migra dagli ingressi alle uscite e gli errori vengono propagati dalle uscite agli ingressi); nella sezione documenti riporto un file in cui viene illustrata la matematica dietro l’algoritmo di addestramento backpropagation utilizzato nel codice


programma15

come nel programma14 la rete non e’ mutata ma in questo caso la funzione testata e’ un seno traslato, come nel caso precedente e’ possibile modificare l’architettura della rete nonche’ lo spazio degli ingressi per testare diverse funzioni note


 

Leave a comment