Guida C: Capitolo 5

6 03 2010

In questo capitolo,mostrerò un utilizzo del ciclo while.

­#include <stdio.h>
int main()
{
int a;
int i;
i=0;
while (i<8)
{printf (“inserisci numero\n”);
scanf (“%d”, &a);
printf (“%d”, a);
i++;
}
}




Guida C: Capitolo 4

19 02 2010

While

Nota iniziale: i punti e virgola non sono optional.
Nota2: scusate se ci ho messo così tanto.

Una corposa parte della programmazione si basa sui cicli e la loro gestione. Detto molto semplicemente un ciclo è una ripetizione di un’operazione per un determinato numero di volte.

Esempio pratico:

main()
{
int a, i;

printf (“quante volte vuoi ripetere la frase?\n”);
scanf (“%d”, &a);
i=0;
while (i<=a)

{
printf (“ripetizione numero &d”, i);
i++;

}
}

In questo codice la variabile intera i ha il ruolo di “contatore”, incrementato di 1 dall’istruzione i++.
Per illustrare meglio questa istruzione faccio una serie di esempi (indicherò quali sono gli esercizi presi dai libri).

Riempimento di un vettore

int vettore[MAX];
int i=0;

while(i<MAX)
{

vettore[i]=i*3; /*metto nella posizione i-esima del vettore il valore di i moltiplicato per 3*/
i++;

}

A seguire, nei prossimi post, ci saranno esempi di vario genere.





Guida C: Capitolo 3

8 02 2010

IF,ELSE

Nota: i punti e virgola non sono optional.

Un programma deve spesso assumere un comportamento a seconda dei dati immessi dall’utente. Mettiamoci di fronte al caso seguente: l’utente deve inserire la propria età. Se è maggiorenne potrà bere il vino, altrimenti dovrà bere l’acqua.

#include <stdio.h>
#define MAGGIORETA 18

void main()

{

int a;

printf (“inserisci la tua eta’ \n”);

scanf (“%d”, &a);

if (a>=MAGGIORETA)

{
printf (“puoi bere il vino\n”);

}

else {

printf (“bevi l’acqua\n”);

}

}

La struttura dell’if è molto semplice. Fra le parentesi tonde si inseriscono le condizioni (una o più di una). Se queste condizioni sono verificate il programma esegue il codice inserito fra le parentesi graffe, altrimenti salta all’else.

Facciamo un altro esempio: l’utente deve inserire la propria età. Se è maggiorenne e ha meno di 95 anni può rinnovare il permesso di rubare ai ricchi per dare ai poveri, altrimenti non può.

#include <stdio.h>

#define MAGGIORETA 18

int main()

{

int a;

printf (“inserisci la tua eta’ \n”);

scanf (“%d”, &a);

if (a>=MAGGIORETA)

{

if (a<95)

{

printf(“puoi rinnovare il permesso di rubare ai ricchi per dare ai poveri\n”);

}else {

printf (“sei troppo vecchio\n”);}

}

else {

printf(“sei troppo giovane”);

}

}

Come vedete ho utilizzato due if annidati.
Poiché una forma del genere può risultare pesante, soprattutto con più di due condizioni, il C viene in aiuto nel seguente modo:
if (a>=MAGGIORETA && a<95)
Cioè inserendo le due condizioni in un unico if.
&& va inserito quando si vuole che le condizioni si verifichino entrambe, mentre nel caso si vogliano inserire due condizioni, delle quali è sufficiente che se ne verifichi una, bisogna utilizzare || (che vorrebbe dire ‘o’).

Quindi facendo un esempio: mio papà sara contento se passerò fisica o analisi 2. L’esame passato ha valore 1.
La condizione sarà:

if (fisica==1 || analisi2==1)
{
printf (“mio papà è contento”);
}

Ovviamente sarebbe meglio passarli entrambi, ma non è materia di questa guida.
VIN (very important nota): se vogliamo mettere una condizione di uguaglianza dobbiamo usare ‘==’. Utilizzare un solo = provocherà un assegnamento, e quindi un grosso errore.
if (a=2) diventerebbe una condizione che si verifica in ogni caso, a prescindere dai valori precedenti di a.

Faccio notare che il precedente codice poteva essere scritto:

if (fisica!=0 || analisi2!=0)
{
printf (“mio papà è contento”);
}

!= vuol dire diverso.





Guida C: Capitolo 2

7 02 2010

Tipi di dato, scanf(), vettori(array)

Nota Iniziale:
-Buona abitudine:familiarizzare con la ricca collezione di funzioni incluse nella libreria standard del C;
-Evitate di inventare nuovamente la ruota. Utilizzate le funzioni incluse nella libreria standard del C, qualora possibile, invece di scrivere delle nuove funzioni. Ciò ridurrà il tempo di sviluppo del programma.
-Utilizzare le funzioni della libreria standard del C aiuterà a rendere più portabili i programmi.

By Deitel&deitel C:Corso completo di programmazione. (Apogeo)

Poiché personalmente ritengo obbligatoria la portabilità del programma (a meno che in una sorta di perversione autoerotica il programmatore voglia utilizzare i propri programmi solo per sè) ritengo obbligatorio l’utilizzo della stdio.h e delle altre librerie.

Nota2: i punti e virgola non sono optional.

Tipi di dato

Ho concluso la precedente puntata parlando del tipo di dato char, dopo aver parlato delle variabili intere.
Prima di proseguire illustrando la funzione scanf() (per proseguire poi con i vettori e le strutture di controllo) credo sia meglio fare chiarezza sui tipi di dato principali e le loro dichiarazioni.

int variabile; dichiarazione di variabile intera (2 o 4 byte, dipende se il processore è a 16 o 32 bit).
specifica di conversione %d.
c carattere; dichiarazione di variabile di tipo carattere
specifica di conversione %c.
float virgolamobile; dichiarazione di una variabile decimale in virgola mobile in singola precisione (4 byte)
specifica di conversione %f
double vardouble dichiarazione di una variabile decimale in virgola mobile in doppia precisione (8 byte)
specifica di conversione %f
int vettore[10];
char vettore[10];
ecc…
Dichiarazione di due vettori di 10 elementi tutti dello stesso tipo.

Scanf()

Generalmente un programma deve poter interagire con un utente o con il programmatore stesso. La forma di interazione principale, dopo la compilazione del programma, è rappresentata dalla funzione scanf(), contenuta nella libreria standard.

#include <stdio.h>

char a;

int intero;

float meta;

void main()

{

printf (“ciao \n inserisci un carattere\n”);

scanf (“%c”, &a);

printf (“inserisci un numero intero dispari\n”);

scanf (“%d”, &intero);

printf(“hai inserito %c e %d\n”, a, intero);

meta=(float)intero/2;

printf (“la metà dell’intero e’ %.2f\n”, meta);
}

Degne di nota sono le ultime due righe. Poiché un numero dispari diviso per 2 avrà sicuramente una parte decimale, ho scritto (float) prima dell’operazione, in modo che temporaneamente la variabile intero sia trattata come una in virgola mobile.

Nel printf ho scritto %.2f , in modo che la variabile abbia due cifre decimali.

Volendo avrei potuto dichiarare al posto di int intero, una variabile float, in modo da non inserire l’accorgimento di cui sopra.
Ovviamente avrei potuto utilizzare il tipo
double al posto di float, ma in questo caso è superfluo.

Vettori

Nel caso fosse necessario l’utilizzo di più variabili dello stesso tipo (una stringa di caratteri, un insieme di risultati ecc…) sarà molto utile l’utilizzo dei vettori.
Dal punto di vista grafico si può visualizzare un vettore nel seguente modo:

0 1 2 3 4 5 6 7 8


Il vettore rappresentato dovrà essere dichiarato nel seguente modo:
int vettore[9];
Cioè come un vettore di nove elementi, in quanto l’indice degli elementi parte da zero.
Nota bene: l’indice dei vettori parte da 0.

#include <stdio.h>

void main()

{
int vettore[9];
/* come per le variabili, posso decidere di inizializzare un vettore contestualmente alla dichiarazione, o riservarmi di farlo in seguito.

}

#include <stdio.h>

void main()

{
int vettore[9]={1,2,3,4,5,6,7,8,9};

printf (“primo elemento %d \n”, vettore[0]); /*che stampa 1 */
}

#include <stdio.h>

void main()

{
int vettore[9]={a,b,c,d,e,f,g,h,i};

printf (“primo elemento %c \n”, vettore[6]); /*che stampa f */
}

Nota: se devo inserire da terminale un elemento del vettore dovrò usare scanf(), con il seguente accorgimento:
scanf(“%d”, vettore[3]); /*non si deve inserire &, il perché lo spiegherò prima o poi ahahahahah (sadico. Non è vero, lo spiegherò quando parlerò dei puntatori */





Guida C : Capitolo 1

5 02 2010

Struttura del programma,variabili,printf

Struttura del programma C

Il codice C per funzionare ed essere ordinato, deve avere una struttura ben precisa, che illustro di seguito.
Il programmatore non dovrà mai dimenticare di inserire (in questo ordine, in grassetto le parti obbligatorie):
-l’inclusione delle librerie;
-eventuali definizioni delle costanti;

-eventuali variabili globali;
-eventuali prototipi di funzioni;
-funzione main;
-
eventuali variabili locali alla funzione main e alle altre funzioni;
-codice delle funzioni;

Le librerie sono quelle parti del programma che permettono l’utilizzo dei principali comandi e costrutti predefiniti del linguaggio. In particolare andrà sempre inclusa la funzione stdio.h (standard input output).

Le variabili in C vanno sempre dichiarate prima del loro uso. Quest’operazione serve per allocare uno spazio di memoria per una determinato utilizzo e per un determinato tipo di file (scrivendo il codice si capirà meglio).

Le variabili globali sono quelle comuni a tutte le funzioni del programma. Facendo un esempio, se dichiaro globalmente la variabile “var1”, in ogni funzione io potrò utilizzare var1 e modificarla.

Le variabili locali sono invece specifiche di ogni funzione. Facendo un esempio, se dichiaro “var2” nella funzione “f”, quando lavorerò nella funzione “g” non avrò a disposizione “var2”.

Prototipi di funzione e codici delle funzioni avranno un capitolo tutto per loro .

La funzione main è la principale del programma, dalla quale possono eventualmente essere richiamate altre funzioni. Se non in ambito di programmazione parallela (della quale parlerò alla fine della guida), il programma viene eseguito in maniera sequenziale dall’inizio alla fine del main.

Primi esempi di codice

Nota: cercherò di commentare sempre il codice. I commenti sono inseriti fra i due simboli /* */. Quindi /* questo è un commento che non viene considerato in fase di compilazione */. I commenti che inserirò sono molto importanti,

Nota2: i punti e virgola non sono optional.

#include <stdio.h>

/* inclusione della libreria standard.*/
#include <time.h>

/* inclusione di un’altra libreria, in questo caso quella contenenti le funzioni riguardanti il tempo*/

#define COSTANTE 10

/* definizione di una costante. Da ora in avanti scrivendo COSTANTE in qualsiasi zona del codice, verrà sostituito automaticamente un 10 */

int var1; /* dichiarazione di var1, di tipo intero, mi riservo di assegnare successivamente un valore */
int var2=2; /*dichiarazione di var2, di tipo intero. Le assegno subito il valore 2 /*
var1=4; /* a titolo di esempio assegno qui il valore 4 a var1, avrei potuto farlo in qualsiasi zona del codice */

void main() /*inizia la funzione main */
{
int varlocale; /* dichiaro una variabile locale */

printf (“hello world \n”); /*stampo a video la scritta hello world \n manda a capo*/

}

La funzione printf è contenuta nella libreria stdio.h. La sintassi è molto semplice. Oltre alle parole possiamo stampare il contenuto di una variabile (non rifaccio le dichiarazioni).

void main()

{

printf(“ho %d anni \n”, var1); /* stamperà che ho 4 anni */

}

Ma io non ho quattro anni, quindi devo fare delle operazioni per far stampare l’età giusta.

void main()

{

varlocale=(var1*5)+1; /* semplici operazioni matematiche */

printf(“ho %d anni \n”, varlocale); /* stamperà che ho 21 anni */

}

%d indica all’istruzione che si stamperà un intero, in questo caso la variabile locale.
Se io scrivessi
printf(“stampa %d poi stampa %d”, varlocale, var1); verranno stampate nell’ordine prima varlocale e poi var1.

Per concludere questa parte iniziale vi dico che:

char carattere; /* dichiarazione di una variabile di tipo carattere (occhio: non stringa)*/
printf (“stampa carattere %c”, carattere); /* stampa il singolo carattere contenuto nella variabile carattere */

Iniziate a prendere confidenza con queste poche istruzioni, provate a fare qualche operazione matematica. Però attenzione che dovrete lavorare nell’ambito degli interi.





Guida C: Intro

4 02 2010

Guida C: Intro

Si sente ultimamente sulla bocca di molte persone il dogma secondo cui il C sarebbe un linguaggio superato e vecchio. Secondo queste persone (che a detta di un mio conoscente dovrebbero dedicarsi alla pesca con reti a strascico) è molto più produttivo dedicarsi a linguaggi più “moderni” come Java. Ovviamente questa idea è da rigettare con forza. Lo studio del C rimane uno dei pilastri della formazione e del bagaglio culturale di un qualsiasi programmatore degno di questo nome. Soprattutto nell’ambito della programmazione di sistema, ma non solo, il C continua ad essere la pietra angolare. Sicuramente una persona può iniziare a studiare l’informatica dal Java, ma la non conoscenza del C sarà sempre una lacuna. Qualcuno si starà chiedendo il perchè di questa mia insistenza. La risposta è molto semplice: il C fornisce un approccio alla materia diverso dagli altri linguaggi di alto livello. Alcuni lo definisco il linguaggio di più basso livello fra quelli di alto livello. Infatti un utilizzo avanzato permette di gestire le periferiche, la memoria e molti componenti hardware. Insomma, ciò che vorrei far capire con queste poche righe introduttive, è che con questo linguaggio potrete partire da “Hello world” e arrivare a scrivere un Kernel (dopo anni e anni di studio). Inoltre avrete la base per studiare gli altri linguaggi più trendy, senza bisogno di bloccarvi di fronte a qualcosa di nuovo e sconosciuto. Capisco che partire da C può scoraggiare molti dall’intraprendere uno studio serio della programmazione. Però sappiate che l’impegno e lo studio sono indispensabili per l’apprendimento di ogni linguaggio. Sudare qualche camicia in più all’inizio servirà per sudarne meno in futuro.

/*Ringraziamo francesco per la guida*/





Il Ruby – 1 – Introduzione

18 12 2009

Image Ruby

Il ruby, è un famoso linguaggio di programmazione ad oggetti, molto divertente e semplice da imparare, e soprattutto OpenSource.

Certo, ovviamente essendo un linguaggio completo, non viene considerato uno strumento didattico, ma invece una Potente codifica per i propi programmi, anche professonali.  Questo non significa che sia difficile da utilizzare,  tutt’ altro, è veloce a capirsi, per programmatori che hanno già avuto l’ approccio con altri linguaggi come C++, e per chi inizia da 0.

Difatti, molte centinaia di migliaia di persone (io direi almeno 1 MB :) ) programma con questo linguaggio con molte soddisfazioni, tanto che  L’ Intel, la Sun Microsystem, l’ Apple e (aimè :P ) anche la Microsoft, lo utilzza.

Bisogna dire da subito, che il Ruby, anche anche “On Rails” (Ruby On Rails), il ciò significa che viene utilizzato anche per applicazioni web molto complesse, da cui si possono vedere le potenzialità di questo Linguaggio.

In Esso, ogni cosa è un oggetto di una classe (esempio i numeri: il 4 è così un’ oggetto, o istanza, della classe FixNum), e ogni cosa può far parte di vari classi.

Ora Vi lascio, con questa piccola definizione e con l’ esempio, alla prossima ;)








Iscriviti

Get every new post delivered to your Inbox.