Ho scritto questa guida per introddure i principianti a questo linguaggio di programmazione, il C.
Il C è un linguaggio di medio livello, al contrario di altri come il pascal o il visual basic che sono di alto livello.
Ah, prima un inroduzione alla compilazione, quest'arte misteriosa:
-per Linux: da shell scrivete gcc -o destinazione sorgente.c
in questo modo il file sorgente.c verrà compilato nel file destinazione.elf
-per windows: istallate un compilatore come dev e da li potete usare l'editor del proramma e premete quel tastino con su scritto Compile... non molto difficile... questo compilerà il file in uno .exe
Comiciamo subito vedendo come si crea un commento... cosi poi saprete che cosa sono quei simboletti strani che vedete vicino alle righe degli script...
1. I Commenti
- Codice:
-
/*i commenti possono essere cosi*/
//oppure cosi, sempre su una riga
/*oppure cosi,
su piu righe*/
fin qui è abbastanza facile, questi sono i metodi piu comuni per inserire dei commenti...
E il primo argomento l'abbiamo affrontato, almeno che qualcuno non abbia qualche problema con queste cose, se è cosi.. credo che dovra prima cercarsi una guida su come distinguere un lettore cd da un porta bicchieri...
2. Cominciamo con main ()
Tutte le istruzioni e i comandi dovranno essere eseguiti all'interno di una funzione, main, che sarebbe la funzione fondamentale, vediamo subito come fare:
- Codice:
-
#include <stdio.h>
int main (){
/*comandi da eseguire*/
}
vediamo che nella prima riga di codice c'è un'inclusione, ovvero si include la libreria standard, nella quale viene dichiarata la funzione main, printf e cose varie, ma voi non dovete preoccuparvi di questo... basta che avete la libreria stdio.h al posto giusto e andate tranquilli... ah, se volete crearvi una vostra libreria e poi includerla, dovrete mettere #include "/etc/mylib.h", in questo caso ho incluso una libreria che si trova nella directory del root, sotto etc e che si chiama mylib.h.. avete visto che se dovete dovete includere una libreria che si trova in un posto diverso da quello prestabilito dovete mettere tutto tra "" invece che tra <>...ok?
andiamo avanti con l'analisi dello script.. viene finalmente introdotta la funzione main, preceduta da int, ovvero il tipo di valore di ritorno (ovvero un numero intero) e seguita dai parametri richiesti, inseriti tra parentesi (in questo caso non ce ne sono quindi lascio vuoto.Dopodiche si comincia con la parentesi graffa, che indica che dopo di quella tutto cio che ci sarà fino alla } sara parte della funzione main.
E con main abbiamo finito... procediamo con lo stampaggio su schermo...
3. printf
Per stampare un messaggio sullo schermo useremo la funzione printf ("testo da scrivere"); mettendo al posto di testo da scrivere, naturalmente, il testo. E ora, con grande orgoglio, creo finalmente lo scirpt che scrive le due parole piu conosciute dagli hacker.. Hello World!...
- Codice:
-
#include <stdio.h>
main (){ /*notate che non ho messo int.. tanto va bene lo stesso...*/
printf ("Hello World!\n");
}
tutto chiaro?
notate che ho inserito \n alla fine della scritta... serve per mandare a capo (newline) il testo... ci sono anceh altri caratteri stampabili solo preceduti dalla slash, come le doppie virogolette, che vanno scritte \", oppure la slesh stessa, che va scritta \\, o TAB, che va scritto \t e altre ancora.
non c'è niente altro di nuovo.. notate solo che dopo ogni istruzione bisogna mettere ; per indicare che abbiamo finito con quella riga...
4. Le variabili
Le variabili in C (e derivati) si dividono in diverse categorie, come int, float, char, etc. Queste tre sono le piu usate ma ne esistono anche altri tipi...
per dichiarare una variabile bisogna prima specificare di che tipo vogliamo che sia, poi il nome della variabile e l'eventuale valore, e infine ;
- Codice:
-
#include <stdio.h>
main (){
int a = 3; //assegno ad a il valore di 3
printf ("%d\n", a); come ", che va scritto \", oppure \\
a = a + 1;
printf ("%d\n", a);
}
vediamo che dichiariamo la variabile a, un numero intero (int = intero, float = numero "con la virgola", char = caratteri ASCII) e gli si assegna (con =) il valore di 3. Viene poi printato il suo valore in questo modo:
printf ("%d", a); che dobbiamo interpretare come:
%d: indica che il numero va inteso come un numero con base 10 (se mettevo, per esempio, %x mi ritornava il valore 10 in esadecimale). (va inteso un po'come un segnaposto, che poi andrà a riprendere la variabile a)
,: indica che abbiamo finito con il testo
a: indica il nome della variabile che dobbiamo stampare
poi viene eseguita un'operazione matematica, ovvero a assume il suo stesso valore (a = a +) piu 1.
Volendo usare un'altro metodo potevo mettere a++, ovvero somma ad a 1, invece a-- sottrae ad a 1.
Dopo il calcolo matematico si printa di nuovo a, quidni l'output del programma sarebbe:
3
4
Tutto chiaro?
5. scanf
La funzione scanf serve per prelevare dei dati inseriti dall'utente tramite la tastiera, raccoglie, cioe, gli input...
vediamo come lavora:
- Codice:
-
#include <stdio.h>
main (){
int a, b;
printf ("Inserire un valore per a: ");
scanf ("%d", &a);
printf ("Inserire un valore per b: ");
scanf ("%d", &b);
printf ("%d + %d = %d", a, b, a + b);
}
beh, avete visto che scanf lavora abbastanza semplicemente... si usa sempre %d per dichiarare il tipo di dati che si inseriscono (se si vuole prelevare un numero con la virgola dovrete intanto sdichiarare una variablie float e al posto di %d metterete %f .
Poi, una volta chiuse le virgolette, metterete una virgola per distanziarvi, poi metterete una & seguita dal nome della variabile in cui volete inserire l'input che si raccoglie.
In questo script si raccolgono come dati i valori di a e di b, che poi si sommano (notate che si possono inserire dei calcoli anche all'interno di printf (dopo l'inserimento di a e b) e che si possono inserire piu variabili, distanziandole da una virgola.
naturalmente dovrete usare un ; alla fine di ogni riga, a meno che non usiate un if/while/case, etc, in quei casi (quando la riga finisce con { o } o */ o > non si deve mettere...
6. if
L'if serve per verificare se una eguaglianza è vera o no (detto un po'da cani, ma...), per semplificarvi il concetto vi porto il solito esempio... facciamo finta (anzi, è vero) che if voglia dire se:
se (confronto) { operazioni da eseguire in caso in cui il confronto è vero}
mi spiego?
il confronto dovrà essere messo tra () mentre le operazioni da svolgere tra {}... ok?
- Codice:
-
#include <stdio.h>
main (){
int a;
printf ("Inserire il valore di a: ");
scanf ("%d", &a);
if (a >= 4){
printf ("a è maggiore o uguale a 4\n");
}
else
{
printf ("a è minore di 4\n");
}
}
rende l'idea?
vediamo un op'meglio quali sono gli operatori che permettono il confronto:
== : è uguale a
!= : è diverso da
< : è minore di
> : è maggiore di
<= : è minore o uguale a
>= : è maggiore o uguale a
non me ne vengono altri in mente, ma questi dovrebbero già bastare..
Mentre ci sono riporto anche le operazioni matematiche eseguibili:
+ : somma
- : sottrazione
* : prodotto
/ : divisione
% : modulo (resto di una divisione)
tutto chiaro?
7. while
Il while serve per introdurre un ciclo, o loop, dal cui si puo uscire solo in certe situazioni, oppure mai..
dipende ad che condizioni ci sono.. ma vediamo subito..
while (condizione per cui si deve eseguire il ciclo){operazioni da fare}
- Codice:
-
#include <stdio.h>
main (){
int a = 0;
while (a <= 100){
printf ("%d\n", a);
a++
}
printf ("Fine del loop");
}
avete capito che questo programma stampa i seguenti caratteri
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
... e cosi fino al 100...poi
Fine del loop
Vedete che dopo ogni loop il valore di a incrementa di uno, e poi viene stampato...
volendo si potrebbe anche creare un ciclo infinito... basta mettere un while (1 == 1){comandi da eseguire all'infinito}
per interrompere un loop bisogna inserire un break;, ad esempio in questo modo:
- Codice:
-
#include <stdio.h>
main (){
int a;
while (1 == 1){
printf ("Inserire un valore per a: ");
scanf ("%d", &a);
if (a == 0){
break;
}
}
printf ("Hai inserito 0, sei uscito. ");
}
8. for
Il for è una cosa simile al while, di cui si puo anche fare a meno (come faccio io) se sapete usare bene il while, o viceversa...
vediamo la sintassi del for:
for (inizio; fine; incremento){ istruzioni}
inizio: l'inizio di una variabile prima del conteggio, potrebbe essere a = 0 se usate la variabile a
fine: indica per quanto eseguire le istruzioni, per esempio fino ad a <= 50 (esegue le istruzioni finche a è minore o uguale a 50)
incremento: è il valore che si deve sommare al valore iniziale per indicare un nuovo ciclo, si puo andare di 10 in 10( a = a + 10) di 20 in 20 (a = a + 20) o anche di 1 in 1 (a++).. naturalmente si puo anche decrementare, ad esempio iniziamo da a = 100;a <= 0;a-- queso indica che la variabile a vale 100 e che eseguie il ciclo finche a è maggiore o uguale a 0, l'incremento (anzi, decremento) è di -1.
vediamo un po' di pratica:
- Codice:
-
#include <stdio.h>
main (){
int a;
for (a = 0;a <= 100; a++){
printf ("I'm in a loop\n");
}
printf ("I go out from the loop");//non so se è giusto l'inglese
}
e fin qui mi sembra tutto chiaro...
Array
Che cos'è un'array?
Beh, non sono la persona migliore per spiegarlo.. non me la cavo bene con i termini tecnici (come avrete capito) ma vi posso dire che è una specie di variabile in cui si possono inserire piu valori...
non molto chiaro.. vi faccio un'esempio:
int a [9];
int è il tipo di contenuto che contiene questo array; a è il nome dell'array, e tra parentesi c'è scritto il numero di componenti che deve contenere l'array. Per richiamare il valore di un componente di un'array dovete mettere il suo nome e tra parentesi quadre il numero del componente che doverte richiamare...
es:
- Codice:
-
int a [2];
a [1] = 11;
printf ("%d", a [1]);
scriverà 11.
ricordate che, ad esempio, se dichiarate un'array con [2] dovrete richiamare solo [0] e [1],
infatti si parte da 0 e si va avanti.
Vediamo un'esempio:
- Codice:
-
#include <stdio.h>
main (){
int a [3];
a [0] = 1;
a [1] = 2;
a [2] = 3;
printf ("%d\n%d\n%d\n", a [1], a [2], a [3]);
}
naturalmente se avete domande chiedete pure qua...