Les éléments de base du langage C

Les identificateurs

Les identificateurs permettent de désigner les objets manipulés dans un programme, Exemple: les variables, les constantes, les fonctions.
Comme dans la plus part des langages, les identificateurs sont formés d'une suite de caractères alphanumérique. Le premier caractère étant toujours une lettre.
En C: le caractère _ est considéré comme une lettre, il peut donc apparaitre au début d'un identificateur.
Les majuscules et les minuscules sont autorisées mais ne sont pas équivalentes.


Les mots clés

Ce sont des mots prédéfinis, c'est-à-dire qu'ils sont réservés par le langage. Ces mots ne peuvent pas être utilisés comme identificateur.
Voici la liste de quelques mots clés: break, case, char, const, default, do, double, else, enum, extern, float, for, goto, if, int, long, return, short, signed, size of, static, struct, switch, union, unisigned, void, wihle.


Les types de base

Un type représente un ensemble de valeur, on distingue:

  • Les types scalaires ou types simples contiennent une seule valeur.
  • Les types structurés ou types composés qui contiennent plusieurs valeurs de même type ou non.

Les types de base du langage C sont repartis en 3 grandes catégories en fonction de la nature des informations à représenter. C'est ainsi qu'on distingue:

  • Les nombres entiers: int
  • Les nombres réels ou flottants: float ou double
  • Les caractères: char

Le type entier

Le mot utilisé est int, le type entier représente les nombres entiers relatifs.
En C, on distingue 3 types d'entier:

  • short int ou short : 16 bits
  • int : 16 bits
  • longint : 32 bits

Chacun des 3 typs peut être accompagné du mot unsigne.

Le type réel

Le mot utilisé est fload.
En C, comme dans la plus part des langages, les nombres réels peuvent se représenter de deux façons différentes.
Exemple de nombre avec la forme décimale: 14.52; -0.45; 12.; .28

On distingue 3 types de réel:

  • float : 32 bits
  • double : 64 bits
  • longdouble : 80 bits

Le type caractère

Le mot utilisé est char. Il est codé sur 8 bits. Les constantes de type caractère se placent entre les côtes. Exemple 'a'; 'A'; ... ; ‘y’.

On distingue des caractères spéciaux non imprimables qui utilisent l'anti slache (\).
On peut citer:

  • \t pour aller à la ligne
  • \t pour la tabulation horizontale
  • \v pour la tabulation verticale
  • \b pour un décalage en arrière.
  • \a renvoie un petit bip sonore

Décalage, initialisation et constante

  1. Le format général de la déclaration d'une variable en C est:
    type élément nom élément;
    Exemple:
    int a;
    float x;
  2. La directive #define permet de donner une valeur à un objet.
    Exemple:
    #define N 100
    #define true 1
    #define false 0


    Le langage C permet également de déclarer les constantes de la manière suivante.
    Exemple:
    const int n=25;
  3. En C, il est possible d'initialiser une variable lors de sa déclaration.
    Exemple: int i=1;

 


Les opérateurs

 

Les opérateurs arithmétiques

 

Ces opérateurs concernent les types int, longint, float, double, longdouble.

 

Les opérateurs binaires

 

Ils portent sur deux opérantes, on a:

  • L'addition (+)
  • La soustraction (-)
  • La multiplication (*)
  • La division (/)
  • Le modulo (%)

Opérateurs unaires

 

Ces opérateurs portent sur une opérante: + et -
Exemple: i++

 

Les opérateurs relationnels

 

En C, le résultat d'une comparaison est un type entier et non un type booléen comme dans les autres langages. Ainsi le résultat d'une comparaison vaut 0 s'il est faux et 1 s'il est vraie.
Les opérateurs relationnels sont:

  • inférieur (<)
  • Supérieurs (>)
  • Inférieur ou égale (<=)
  • Supérieur ou égale (>=)
  • Egale à (==)
  • Différent de (!=)

Les opérateurs relationnels sots moins prioritaires que les opérateurs arithmétiques.
Exemple:
x = 3;
y = 1;
(x>y) == (2<x)

 

Les opérateurs logiques

 

On peut citer:

  • Le et ; and : &&
  • Le ou ; or : ||
  • Le non ; not : !

Exemple: if(!) est équivalent de if(n==0)

 

L'opérateur d'affectation

 

Le mot utilisé est =
L'opérateur d'affectation en C possède une associativité de la droite vers la gauche. On parle dans ce cas d'une affectation multiple.

Exemple:

y = x = 1;

Attention:

float i;
int j;
i = j = 2,6;

Cette associativité de l'association peut entrainer une conversion forcée par l'affectation.

Exemple:

Soit les instructions suivantes:
short x;
double y, z;
y = x = 2,5 /*affectation multiple*/
z = x+y; /*quelle est la réponse?*/


z = 2 + 2.
z= 4.

 

L'opération de condition

 

Exemple:
if (condition)
z = val vrai;
else
z = val faux


équivaut à z = condition?val vrai:val faux

Exemple pratique:

if(a<2)
x = a+1;
else
x = a;


équivaut à x=(a<2)? a+1:a;

 

La lecture et l'écriture

 

La lecture

 

La lecture permet d'introduire une valeur dans un objet. En C le mot utilisé est scanf. La syntaxe du mot scanf est:
scanf(format, liste des variables);
format est une constante qui est sous la forme "%code" , où code peut être:

  • c : char
  • d : int
  • f ou e : float>
  • s : chaîne caractères
  • lf ou le : double
  • ld : long int
  • rd : short int
  • u : unsigned int

La liste des adresse est toujours précédée par &

Exemple:

scanf("%d", &a);
scanf("%f", &x);
scanf("%c %f", &x, &y);


La macro joue le même rôle que scanf lors de la lecture d'un caractère.

Exemple:

c=getchar( ); scanf("%c", &c);

Cependant l'exécution de getchar est plus rapide que scanf car elle ne fait pas appel au mécanisme d'analyse de format. Dans ce cas l'utilisateur de la primitive include<stdio.h> est impératif.

 

L'écriture

 

L'écriture permet d'afficher les éléments traités par l'ordinateur Le mot utilisé est printf

Syntaxe:

printf (format, [liste des variables]);
format = "%code"

Exemple:

printf("%d", n);

La macro putchar( ) équivaut à printf

Exemple:

putchar(c); printf("%c", x)

L'exécution de l'instruction putchar() est plus rapide que printf.

Exemple:

Ecrire un programme en C qui permet de lire deux nombre réels calculé et affiche la somme et la moyenne de ces nombres.

#include<stdio.h>
#include<conio.h>
main()
{
float x, y, s, m;
clrscr();
printf("Entrer le premier nombre:");
scanf("%f", &x);
printf("\n Entrer le second nombre:");
scanf("%f", &y);
s = x+y;
m = s/2;
printf("\n La somme de %3.2f et %3.2f est: %3.2f", x, y, s);
printf("\n La moyenne est: %3.2f", n);
getch();
return 0;
}

Résultat affiché à l'écran:

Entrer le premier nombre: 3
Entrer le second nombre: 3
La somme de 3.00 et 3.00 est: 6.00
La moyenne est: 3.00s