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
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