C (cours 1)

 

Bon je vais essayer de vous faire pleins de cours de C. donc c le début d’une grande série !

Les cours seront bien sur dans un ordre précis afin que vous avanciez au fur et a mesure.

Pour ce premier cours je vais vous parler de la structure d’un programme et de la syntaxe du langage. Ce cours s’adresse aux personnes ne connaissant rien au C et désireux d’apprendre !

Aller on y go :

 

STRUCTURE D’UN PROGRAMME

 

La structure d’un programme C peut se décomposer de la façon suivante :

< directives de compilation >

< définitions de types >

< prototypes et fonctions >

< déclaration de variable et de constante >

< fonctions>

 

Un prog C consiste donc en une série de fonctions. Parmi celles-ci, l’une doit s’appeler main() : elle représente le corps principal du prog.

 

1 . directives de compilation :

 

Ces directives permettent de demander à l’ordinateur d’effectuer certaines opérations avant la compilation du programme.

Les directives les + importantes sont :

 

#INCLUDE <fichier>

où fichier est le nom d’un fichier qui contient des informations utiles pour le programme. Ces infos seront insérées à partir de la ligne contenant la directive INCLUDE. Exemple : #INCLUDE <stdio. h> (le fichier STDIO.H est un fichier contenant des infos relatives aux instructions  d’entrées/sorties. J’y reviendrai plus tard.

 

#DEFINE  symbole    suite de caractères

cette directive remplace dans le prog, toutes les occurrences du symbole par la suite de caractères. Cette suite peut représenter un nombre, un texte etc.  Elle permet la définition de nouveaux opérateurs, la déclaration de constantes, etc.

Exemple : #DEFINE max 9

                               #DEFINE écrire putchar()

Dans le 1er cas, chaque fois que l’on rencontrera le symbole max, il sera remplacé dans le texte par 9. dans le 2ème cas, le mot écrire sera remplacé par putchar().

 

Remarques :  

 

Il existe d’autres directives telles que :                    #IF

                                                                            #ELSE

                                                                            #ENDIF

Ces directives permettent de ne compiler certaines lignes du prog que si une condition est réalisée.il ne faut cependant pas confondre ces directives avec l’instruction IF que j’évoquerai + tard. Dans le cas des directives, cela se passe à la compilation, tandis que dans le cas de l’instruction IF, cela se passe à l’exécution du prog.

 

2. Définition de type :

 

chaque donnée utilisée par un prog C doit posséder un type. Ce type détermine l’ensemble des valeurs possibles que peut prendre la donnée pendant l’exécution du programme. C’est ainsi qu’une donnée pourra contenir des valeurs de type entier, réel, caractères, etc.  Le langage C offre la possibilité d’utiliser des types prédéfinis ou de composer ses propres types. Plusieurs autres cours seront consacrés aux différents types possibles.

Retenez simplement pour l’instant qu’une déclaration de type doit être de la forme :

TYPEDEF  description du type   identificateur du type

 

Exemple :                typedef struct {char nom[30] ;

                               char prenom[20] ;

                               int age ;} personne ;

on a ainsi définit un type composé personne qui contient un nom, un prénom et un age.

 

3. Déclaration de variable :

 

les données qu’utilise un programme peuvent varier au cours de son exécution. On les appelle alors des variables. Les valeurs de ces variables peuvent être modifiées u moyen d’une série d’opérations. Toute variable utilisée par le programme doit posséder le type de valeur qu’elle va contenir. Toute déclaration de variable doit être de la forme :

type_de_la_variable   nom_de_la_variable

 

Exemple :                INT i, j

                               CHAR c

Où i et j sont des variables qui pourront contenir des valeurs numériques entières.

Où c est une variable qui pourra contenir des valeurs caractères.

 

Remarque :

On peut, lors de la déclaration d’une variable, lui assigner une valeur initiale. La déclaration doit alors être de la forme : type nom = valeur initiale

 

Exemple :                INT i=1 ;

                               CHAR c= ‘a’ ;

 

4. Déclarations de constantes :

 

Lorsque l’on désire avoir une donnée dont la valeur ne pourra être modifiée pendant l’exécution du prog, on utilise alors une constante. La déclaration d’une constante peut ^tre de 2 formes différentes :

CONST type nom = valeur    ou encore    #DEFINE nom valeur

La 2ème forme est une illustration de l’utilisation des directives de compilation. En effet, toutes les occurrences de nom sont remplacées directement par la valeur dans le programme.

 

Exemple :               #DEFINE max 32767

                               CONST int maximum = 32767

                               CONST float pi=3.14

 

5. Prototypes de fonctions :

 

dans un prog, on peut avoir besoin d’exécuter le même ensemble d’instructions plusieurs fois, mais avec des données différentes. On regroupe alors cet ensemble d’instructions en une fonction. L’étude du concept de fonction ou de sous-prog sera l’objet d’un cours ultérieur.

Relatons toutefois, dès maintenant, que la déclaration d’un prototype de fonction se fait de la façon suivante : type de fonction   nom de fonction(liste de paramètres) ;

Comme on peut le constater, le prototype d’une fonction est une ligne décrivant, au reste du prog, ses caractéristiques principales.

 

6. Fonctions :

 

on trouve dans cette partie les définitions de fonctions, c.a.d  la description des variables utilisées par ces fonctions et l’ensemble des opérations qu’elles vont effectuer sur ces variables. Cette définition devra être sous forme :

type de fonction  nom de fonction(liste de paramètres)

{

déclaration de variables locales à la fonction ;

instructions ;

}

 

 

 

SYNTAXE DU LANGAGE

 

La syntaxe constitue en fait l’orthographe du langage. Il faut s’y conformer pour que le compilateur puisse transformer le programme C en langage machine. Toute erreur de syntaxe provoquera une erreur de compilation.

 

1. Les identificateurs :

Ils représentent les noms que l’on donne aux constantes, au type de données, aux variables, aux fonctions etc.  Ils doivent obéir aux règles de compositions suibantes :

 

2. Mots-clés :

 

ils sont prédéfinis dans la syntaxe du langage. Ils représentent les instructions, les descriptions de types prédéfinis. Il n’est pas permis d’utiliser un mot-clé comme identificateur. Les mots mots-clés son repris dans un tableau annexe (sur votre compilateur).

 

Exemples : INT, IF, ELSE, WHILE…

 

3. Les expressions :

 

Une expression est une combinaison d’opérandes et d’opérateur. Une opérande peut être :

-         une variable

-         une constante

-         une autre expression

 

Toute expression fournit toujours une valeur résultat. Cette valeur peut être de différents types :

-         numérique

-         caractère

-         etc.

 

4. Les opérateurs :

 

Le but principal d’un programme est d’effectuer un certain nombre d’opérations sur un ensemble de données. Les opérateurs indiquent quel type d’opération on désire effectuer.

Examinons les différents opérateurs :

 

L’assignation :

C’est l’opération la plus fondamentale de tout langage de programmation. Cette opération est matérialisée par le signe =. La valeur qui se trouve à la droite de ce signe est mise dans une variable située à sa gauche. Elle constitue également la valeur résultat de l’expression. On a donc :  variable = expression

 

Exemple :                A=2 ;

                               B=A+3 ;

 

Les opérateur arithmétiques :

Ces opérations s’appliquent à des valeurs numériques (entières ou réelles). On y trouve des opération classique telles que :

L’addition (+), la soustraction (-), la division (/), la multiplication (*), le reste de division entière (%).

Toutes ces opérations peuvent être combinées avec des parenthèses. On dispose également d’opérations moins classiques telles que :

L’incrémentation (++), la décrémentation (--)

 

Exemple :                a+b*(c-1)

                               a=-1

                               x=y++                    (assigne la valeur de y à x et ajoute 1 à y)

                               x=++y                    (ajoute 1 à y et assigne la nouvelle valeur obtenue à x)

 

les opérateurs relationnels :

 

Ils permettent de comparer certaines valeurs. Leur résultat peu être soit  vrai, doit faux.

La valeur faux est représenter par la valeur numérique 0 et la valeur vrai est représenter par le valeur numérique 1. la liste des opérateurs relationnels est la suivante :

>, > =, <, < =, = =, ! =.

Je pense que vous connaissez toutes ces signification a par peut être  = = qui veut dire égale et ! = qui veut dire non égale.

Exemple :                I=1

                               J=100

                               K=1000

Les expressions suivantes donneront un résultat vrai :

(I<=J)

(K>J)

(K!=J)

 

les opérateurs logiques :

 

Ces opérateurs effectuent les opérations classique sur des valeurs logiques. Leur résultat donne également les valeurs vraies ou fausses. Ils sont au nombre de 3 :

-         et logique : && qui donne un résultat vrai si les 2 expressions sont vraies.

-         ou logique : || qui donne un résultat vrai si une des 2 expressions est vrai.

-         Négation logique : ! qui inverse la valeur logique de l’expression à laquelle elle est appliquée.

Ces opérateurs permettent notamment de combiner des opérateurs relationnels.

 

L’opérateur « adresse de » :

 

Il faut savoir que la mémoire d’un ordinateur est composée d’une suite de valeur binaire 0 ou 1 appelées bits.

-         un ensemble de 8 bits est appelé octet ou byte

-         un ensemble de 16 bits est appelé mot.

-         Un ensemble de 32 bits est appelé long mot.

Chaque ensemble a une position bien définie dans la mémoire. Cette position est appelée adresse.

Lorsqu’on utilise l’opérateur « adresse de », on demande l’adresse qu’occupe l’opérande. Le format de cette opération est le suivant :  &nom_de _variable

 

Les opérateurs niveau-bit :

 

Ces opérateurs permettent de modifier directement les bits d’une zone mémoire. Ils sont au nombre de 6 :

-         décalage vers la droite : >>

-         décalage vers la gauche : <<

-         et : &

-         ou inclusif : ½

-         ou exclusif : ^

-         négation : ~

exemple :

int I, J, K ;

I=J >> 4

 

I reçoit la valeur obtenue après décalage de tous les bites de J de 4 positions vers la droite.

 

Bon voilà pour le cours n°1 de C. j’espère que ça vous aura donner envie d’en savoir plus.

Avant de clôturer cet article je vais vous donner un exemple de programme très basique en C :

 

#INCLUDE <stdio.h>

MAIN()

{

INT i,j,somme;

PRINTF(“entez deux nombres:”);

SCANF(« %d,%d »,&i,&j) ;

somme=i+j;

PRINTF(“la somme de ces deux nombres vaut : %d”, somme);

}

 

ayez cette fois c’est fini.

 

By The JokeR