Articoli marcati con tag ‘cnr’
Non aggiornerò questo blog fino al 20…sì, certo…
Ecco la versione riveduta e corretta di quel piccolo programma precedente di cui avevo parlato:
#include
#include
#define LUNGA 50
//niente punto virgola nel define
int main() // main() ritorna un int
{
//int num;
char title[LUNGA]=”"; //inizio fase di apertura file
//sto dicendo che il titolo è lungo 50 caratteri
FILE *file;
// meglio mettere tutte le dichiarazioni all’inizio
int i, numero=0, somma=0;
char titolo[LUNGA];
//è un array e [] ed è una sequenza di 50 caratteri
FILE *file1;
//sto dichiarando la variabile file su cui vado a scrivere
printf(”Titolo del file di lettura: \n”);
//stampa su video il titolo del file
scanf(”%s”, title);
//scanf legge il nome
//cout<
//sono due operazioni diverse il titolo e l'apertura del file
if((file=fopen(title, "r"))==NULL)
{printf("Il file non esiste!\n"); exit(0);}
//leggo 10 numeri da un file che deve contenerli
// printf("sono arrivato qua");
printf("sono arrivato qua\n");
// ritorno a capo effettua anche un flush del buffer
// for(i=0;i+1;i<10) {
for(i=0; i<10; i++) { // cosi' e' piu' corretto !!!
// fscanf(file, "&d", numero);
fscanf(file, "%d", &numero); // cosi' e' piu' corretto
somma = somma + numero; // anche: somma += numero
}
printf("sono arrivato qua2\n"); // ritorno a capo...
printf("Titolo del file di scrittura: \n");
scanf("%s", titolo);
if((file1=fopen(titolo,"w"))==NULL) {printf("Non posso aprire il file!\n");
exit(0);}
fprintf(file1, "somma dei 10 numeri: %d\n", somma);
//scrivi nel file1 la somma
return 0; // valore di ritorno di main() (esito regolare)
}
Adesso alcuni piccoli esercizi per il 13/14: calcolare la media tra due numeri o il prodotto di 5 di loro, leggere i 10 numeri, calcolarne il doppio e salvarli tutti e 10 raddoppiati su un unico file.
al lavoro!
Mancano 7 giorni alla data fatidica del concorso e posto questo messaggio per avvisarvi tutti quanti che il prossimo aggiornamento avverrà circa il 20 Settembre. In questo lasso di tempo dovrebbe succedere quanto segue:
-studio disperato pre-concorso con conseguente ansia da esame
-festeggiamento del compleanno del mio amico Marco (l’11)
-Concorso (13/14)
-Il 14 mi recherò a Moneglia e lì rimarrò fino al 19 (Domenica). In questo piccolo lasso di tempo cercherò di stuccare tutto il possibile facendo eventualmente anche ricorso al cemento per chiudere delle buche nel manto stradale e cercherò di fare un bagno a Punta Rospo con tanto di documentario fotografico (dal 15 al 17). Infine il 18 Matrimonio di mia sorella.
Dal 20 la stagione per i bagni sarà dichiarata conclusa (e arrivederci all’anno prossimo cari miei bagni Letizia) e riprenderà l’ultimo anno di scuola serale di disegno (perchè poi chiuderanno per sempre i corsi serali di disegno, ….).
Se tutto va bene dovrei riuscire a riprendere in mano i fumetti la cui produzione è ferma da gran tempo. Ma state tranquilli che non li abbandonerò mai i miei fumetti.
Alla prossima!
ps: posto alcune mie foto di una gita che ho fatto a Milano/Como il 4/5 di Settembre. Le altre foto sono su Picasa. Ciao!
Ciao!
Oggi posto il codice riveduto e corretto dell’esercizio che una mia collega mi ha spedito (quello dell’altra volta).
Rivedendolo assieme ho potuto quindi assistere alla rilettura del codice e alla sua correzione.
Posto questo codice testato su una macchina Windows. Per prima cosa create un file .txt (non word perchè contiene caratteri che incasinano la lettura) in cui dovete scrivere 1 2 3 4 5 6 7 8 9 10.
Aprite un editor e scrivete:
#include
//importa libreria
#define LUNGA 50
//niente punto e virgola nel define
main() {
char title[LUNGA]=”";
/*inizio fase di apertura file, char sta per carattere in inglese. Sto dicendo che il titolo è lungo 50 caratteri. Nota: il =”" è stato ,messo dopo aver visto che c’erano dei problemi ad aprire il file nel primo modo*/
FILE *file1;
//inizializzazare un file nel quale leggerò i numeri
printf(”Titolo del file di lettura: \n”);
//stampa su video il titolo del file
scanf(”%s”, title);
/*scanf legge il nome e %s significa stringa, Sono due operazioni diverse il titolo e l’apertura del file*/
if((file=fopen(title,”r”))==NULL)
//fopen ha delle proprietà. “r” sta per read
{printf(”Il file non esiste!\n”); exit(0);}
/*exit 0 significa che se il file non esiste il computer esce anzichè continuare un processo che darebbe errore lo stesso*/
//adesso leggo 10 numeri da un file che deve contenerli
int i,numero=0, somma=0;
for(i=0;i<10;i=i+1)
//sto dicendo che il valore di i va da 0 a 9
{fscanf(file, "%d", &numero);
/*fscanf legge da un file già aperto mentre scanf legge da video*/
printf("%d\n", numero);
//scrivo il numero che leggo
somma = somma + numero;
printf("sono arrivato qua") //controll lettura
char titolo[lunga];
//è un array ed è una sequenza di 50 caratteri
FILE *file1;
//sto dichiarando la variabile file su cui vado a scrivere
printf(”Titolo del file di scrittura: \n”);
scanf(”%s”, titolo);
if((file1=fopen(titolo,”w”))==NULL) {printf(”Non posso aprire il file!\n”);
exit(0);}
fprintf(file1, “somma dei numeri: %d\n”, somma);
//scrivi nel file1 la somma
}
Mamma mia! Allora a questo punto ho lanciato l’eseguibile e gli ho detto di importare il file prova.txt che ho fatto in precedenza ma purtroppo mi legge tutto 0 e di conseguenza quando scrivo il nome del file (esempio mucca.txt) mi si visualizza la somma è uguale a 0.
Dove sbaglio?
Ciao!
Altra lezione di programmazione in C in vista del concorso. Metto on-line i miei appunti di C che sto imparando in modo che possano essere utili anche ad altre persone.
APPUNTI:
Per stampare il contenuto di una variabile bisogna utilizzare la funzione printf() stando però attenti a cosa si vuole stampare:
%c – char, %d – int(numero intero), %f- float, %s- string.
Attenzione! Quando usate i float (ambiente Windows) ricordatevi di mettere nel prompt dei comandi il punto al posto della virgola
#include
main()
{
float a,b;
printf(”inserisci due numeri con la virgola\n”);
scanf(”%f”, &a);
scanf(”%f”, &b);
printf(”la somma dei due e’ : %f\n”, (a+b));
printf(”la moltiplicazione dei due e’: %f\n”, (a*b));
getch();
}
Per quanto riguarda #define NOME, define è una costante il cui numero è immutabile!
(esercizio che mi è stato passato da una collega e che è da verificare!!!)
#include
#define LENGHT 50; // l’ho messo io di mia iniziativa!!
main(){
int num;
char title[LENGHT]; // inizio fase di apertura di un file
printf(”Titolo del file di lettura: \n”);
scanf(”%s”, title);
if((file=fopen(title, “r”))==NULL)
{printf(”Il file non esiste! \n”);
exit(0);} //fine fase apertura di un file
//adesso va qui la sequenza di operazioni che sono richieste. Per esempio qua sotto legge due elementi dal file e ne faccio una somma
………
La prossima volta lo pubblico dopo averlo testato. Questa è solo una piccola dimostrazione. In ogni caso per apertura e chiusura dei file ripassare fscaf, scanf, printf e fprintf.
//inoltre per la gestione delle parole dare un’occhiata al tipo di stringa.
Alla prossima!
Ciao!
Allora, come va? Stanno per riprendere le lezioni in C! E prima del 13, cercherò a tutti i costi di realizzare un programma in C che importi un file, lo legga, lo modifichi ed infine lo salvi. Grazie al cielo sto ricevendo un’aiuto da varie persone che mi stanno aiutando. In ogni caso se quetso blog non sarà aggiornato per un pò di tempo saprete il perchè. Oggi è il 2 di Settembre ed è il compleanno del mio amico che vive su a Milano e che compie 29 anni (come me).
alla prossima!
No. Non ho dimenticato i fumetti, questa è solo una pausa temporanea per via del concorso. Riguardo ad essi ho alcuni progetti. Per prima cosa pensavo di passare a Seven in quanto su XP certi programmi che girano bene su 7, quando li lancio mi fanno spegnere lo schermo per un secondo (Macchine Virtuali/Sketchup ecc…) e di conseguenza penso che se vorrò usare nuovi software dovrò passare a Seven. Ho già scaricato e testato un programmino che ha detto che sul mio computer è possibile installarci il nuovo Sistema Operativo. Anche se l’operazione di aggiornamento la farò dopo il 13/14 perchè non voglio avere altri problemi a cui pensare.
Inizia la corsa finale per il concorso (13/14 Settembre) e anche per altre situazioni.
Oggi stavo studiando i DNS senza problemi quando qualcuno mi ha chiesto a che punto di studio del C fossi arrivato e quando gli ho risposto alle funzioni tipo If, Else, else-if, ecc… questa persona mi ha fatto notare che molto probabilmente occorrerà saper scrivere Array, o riuscire a far eseguire dal programma certe funzioni (leggi un numero, fai quello e fai quell’altro, ecc…). Panico.
Come torno a casa mi rimetto a studiare alla grande sperando che non mi capitino delle prove difficilissime. Penso che chiunque all’avvicinarsi di una certa scadenza venga colto dall’ansia. Il 13 e il 14 settembre non sono certo lontani…..
Inizia (da domani) la “corsa finale” anche per mia sorella che il 18 si sposa e diventa la prima a lasciare casa nostra per andare a vivere con suo marito (!!).
Infine inizia la “corsa finale” anche per qualcos’altro. Nella terrazza di Moneglia (località estiva) ci sono tante piccole piante che stanno crescendo dalle fessure e l’intervento subito dopo l’esame (scendo giù il 14 pomeriggio/sera e ci resto fino al 19 Domenica) avrà lo scopo di eliminarne quante più possibile. E per sempre.
Già che ci sono cercherò di fare un blitz a Punta Rospo (appena fuori Moneglia verso Deiva Marina) cercando di fare delle foto sott’acqua sperando che il tempo mi sia d’aiuto.
Infine il 4/5 Settembre sarò su a Milano a far visita ad un mio amico mentre l’11 festeggieremo insieme gli anni (del mio amico che ormai abita su a Milano) e il 12 farò una piccola visitina a Moneglia.
Penso che in questi 18 giorni, la produzione di fumetti possa anche retrocedere di qualche passo (o meglio, la produzione sarà praticamente sospesa in quanto dovrò concentrarmi al massimo su questa chance).
Vi chiedo solo di pregare un pò per me. Perchè dopo 10 anni di stage/tirocini e altro riuscirei finalmente a trovare un lavoro.
Grazie
Orario di chiusura per Gcc
Finalmente sono riuscito a stendere una guida degna di tal nome per aiutare la persona a compiere i suoi primi passi sotto C sia in ambiente Linux che in ambiente Windows.
Ho anche capito perchè gcc costringe la persona a fare tutti quei passaggi sul terminale e non è automatico come altri programmi. La risposta è che GCC è fatto così (non ha pulsanti) e sopratutto i processi vengono eseguiti dalla linea di comando e non da un’interfaccia grafica.
I passaggi (controllo sintassi/ compilazione e deboug) in Dev-C++ sono tutti nascosti mentre in Gcc si vedono.
Ora la guida è pronta e verrà postata sul sito appena sarà possibile.
Alla prossima!
Posto questo articolo un pò imbarazzato perchè ho risolto il problema del gcc e delle strane ed astruse procedure. Mi sono accorto che ero io che sbagliavo a non prestrare attenzione a ciò che mi dicevano. Ora che ho corretto questo piccolo difetto l’eseguibile a ripreso a funzionare. Oggi o domani dovrei essere in grado di postare un piccolo tutorial in grado di spiegare come funziona bene la cosa.
Continuano i miei studi per arrivare al concorso preparato. Ieri (e oggi) sto studiando i DNS, cosa sono, come funzionano e che funzione ricoprono. Grazie all’aiuto di una persona a me vicina ci sto finalmente capendo di più….ora so cos’è una risoluzione inversa e via dicendo.
Ho visto anche BIND, il dns per Linux e di come svolge il suo lavoro.
Infine sto studiando le cose che forse è più probabile che mi chiedano (Tcp/IP, dns, programmazione in C o in Unix) sperando poi di giungere all’esame preparato. Ovviamente la materia su cui mi sto preparando è vastissima ma almeno cercherò di avere delle nozioni base ben salde.
Alla prossima
Ciao a tutti!
Oggi, navigando in rete così senza una meta precisa sono capitato in una pagina che spiegava come usare il GCC. Incredibile!!!! e pensare poi che un collega me lo avrebbe spiegato in quattro e quattr’otto ma io non me ne sono accorto.
Sono sempre più convinto che la nostra rovina sarà la distrazione o il fatto di non riuscire a vedere le cose così come sono (è vero che abbiamo dei limiti) o ci dimentichiamo “} ecc… facendo così prendere un colpo al computer.
In ogni caso, sulla pagina dei tutorial del mio sito fra poco arriverà come scrivere uno script in Unix (livello difficoltà: quasi zero) partendo dalle basi. E poi invece un’altro su GCC!!
E’ vero, Linux ha tanti pregi: ci sono distribuzioni gratuite, il codice sorgente è libero e una marea di volontari contribuisce al suo sviluppo.
Ma GCC ha un piccolo problema: devi (dal terminale) fare 3-4 passaggi (+ aprire GEDIT per scrivere il programma) per avere poi il programma in C che funziona. In Dev-C++ di passaggi sono:
-apertura del programma e scrittura codice
-eventuale controllo sintassi
-compilazione ed esecuzione
In GCC fai:
-apertura gedit (gedit luca.c)
-scrittura e salvataggio file (sulla mia macchina virtuale le graffe non funzionano e quindi ho fatto copia-incolla, ho una tastiera italiana senza graffe)
-aperta gcc e salvataggio del file in a.out
-gcc -o luca luca.c => luca
(Il comando -c fa solo la compilazione, per cui dovresti fare)
-gcc -c luca.c => luca.o
-gcc -o luca luca.o => luca
Deboug
-gcc -g -o luca luca.c
ed infine lanciare l’eseguibile:
./luca
Capite perchè penso che Dev-C++ sia più pratico? Non voglio passare per un sostenitore del software chiuso (Microsoft & soci) ma penso che si debba pensare a rendere i programmi più semplici ed immediati senza fare mille passaggi
(Nota: parlo da principiante nel mondo del C e non da esperto)
Aggiornamento:
Mi è arrivata un consiglio via mail. Schiacciate Alt-Gr e 7 e dovrebbe comparirvi una graffa {
Alla prossima!!
Aggiornamento
Scusate, nell’articolo precedente ho detto una mezza stupidaggine. Sarebbe bastato leggere l’articolo bene per capire che non dice cose stupide o confusionarie ma ahimè vado di fretta talvolta (e sono anche un pò distratto) per cui ritraggo ciò che avevo detto prima.
Altri errori che mi sono accorto di aver fatto: quando create un documento con gedit, non è necessario scrivere strane parole ma bensì è molto più semplice e quindi fate Salva ed Esci.
Poi ho fatto l’opzione chmod a+x (nome file) ed è tutto funzionato come doveva andare.
Stavolta però ho cambiato una cosa:
per rendere più interessante lo script ho aggiunto il carattere | (che trovate sopra l’1)
lo script è questo:
#! /bin/sh
ls
echo ciao
echo ciao da $1|mkdir fronzolli
In pratica ogni qualvolta che si lancia lo script, si crea una cartella ma bisogna stare attenti che il computer non può scrivere due cartelle identiche nella stessa zona!!!













