1 of 40

�� LANGAGE DE � PROGRAMMATION: C

F. Karami

2 of 40

Introduction

  • Objectifs du cours

  • Historique

  • Intérêt du langage C

  • Etapes de réalisation du programme

  • Votre premier programme C

*

Programmer en langage C

2

3 of 40

Introduction : objectifs

Concevoir, écrire et exécuter des programmes en langage C

  • Savoir lire, stocker et afficher des données et résultats

  • Savoir utiliser des structures de contrôle (conditions, tests, boucles,…)

  • Savoir définir et utliser des fonctions

Initiation sur des notions non habituels: pointeurs, allocation dynamique, …

*

3

Programmer en langage C

Introduction

4 of 40

Introduction : historique

  • Langage de programmation développé en 1970 par

Dennie Ritchie aux Laboratoires Bell.

Il est l’aboutissement de deux langages :

☞ BPCL développé en 1967 par Martin Richards.

☞ B développé en 1970 par Ken Thompson.

Il fut limité à l’usage interne de Bell jusqu’en 1978

date à laquelle Brian Kernighan et Dennie Ritchie

publièrent les spécifications définitives du langage :

« The C programming Language ».

*

4

Programmer en langage C

Introduction

5 of 40

Introduction : historique

Au milieu des années 1980 la popularité du langage

était établie.

De nombreux compilateurs ont été écrits, mais

comportant quelques incompatibilités portant atteinte

à l’objectif de portabilité.

Il s’est ensuivi un travail de normalisation effectué

par le comité de normalisation X3J11 de l’ANSI qui a

abouti en 1988 avec la parution par la suite du manuel :

« The C programming Language – 2 ème édition ».

*

5

Programmer en langage C

Introduction

6 of 40

Introduction : intérêt du langage C

☞ Langage polyvalent permettant le développement

de systèmes d’exploitation, de programmes applicatifs

scientifiques et de gestion.

☞ Langage structuré.

☞ Langage évolué qui permet néanmoins d’effectuer

des opérations de bas niveau (« assembleur d’Unix »).

☞ Portabilité (en respectant la norme !) due à l’emploi

de bibliothèques dans lesquelles sont reléguées les

fonctionnalités liées à la machine.

☞ Grande efficacité et puissance.

*

6

Programmer en langage C

Introduction

7 of 40

Introduction : Etapes de la réalisation

1) Création d’un code source en utilisant un éditeur

    • Le code source est une série de commandes qui indiquent à l’ordinateur les tâches que vous voulez lui faire exécuter, il est créé à l’aide d’un éditeur.

    • La plupart des systèmes d’exploitation contiennent un éditeur. Sous Unix vous pouvez utiliser, ed, ex, edit emacs ou vi. Microsoft Windows vous offre le bloc-notes.

*

7

Programmer en langage C

Introduction

8 of 40

Introduction : Etapes de la réalisation

2) Compilation du code source

    • Votre ordinateur ne peut pas comprendre le code source. Il ne peut comprendre que des instructions binaires dans ce que l’on appelle du langage machine.
    • Votre programme C doit être transformé en langage machine pour pouvoir être exécuté sur votre ordinateur. Cette opération est réalisée par un compilateur qui transforme votre fichier code source en un fichier contenant le code objet(les mêmes instructions en langage machine).
    • Chaque compilateur possède sa propre commande pour créer le code objet.
      • Windows: C Microsoft, Turbo C, Turbo C++, Borland C, Borland C++.
      • Unix : utiliser la commande c.
      • Linux et Unix: la commande gcc.

*

8

Programmer en langage C

Introduction

9 of 40

Introduction : Etapes de la réalisation

3) Création du fichier exécutable

    • Une partie du langage C est constituée d’une bibliothèque de fonctions contenant du code objet destiné à des fonctions prédéfinies.
    • Ces fonctions sont fournies avec votre compilateur. Si votre programme les utilise, le fichier objet obtenu après compilation doit être complété par le code objet issu de la bibliothèque de fonctions.
    • Cette dernière étape, appelée liaison, fournit le programme exécutable (exécutable signifie que ce programme peut être exécuté sur votre ordinateur)

*

9

Programmer en langage C

Introduction

10 of 40

Introduction : Etapes de la réalisation

*

10

Programmer en langage C

Edition

Programme source (.c)

#include…

#include <math.h>

…..

main()

{

…..

}

Compilation

Edition de lien

Programme objet (.obj)

Programme executable (.exe)

Fichier en-tête (.h)

………………..

math .h

/*déclaration*/

Bibliothèques précompilées (.lib)

…………………..

math.lib

Introduction

11 of 40

Introduction : votre premier programme

*

11

Programmer en langage C

#include<stdio.h> main()

{

printf(‘’Bonjour’’);

}

Affichage

Bonjour

Introduction

12 of 40

Introduction : Etapes de la réalisation

Sous lunix: commandes à retenir

  • cc -c essai.c

Produit le fichier objet qui aurra pour nom a.out

  • Make essai ou bien
  • cc -o essai essai.c

Produit le fichier executable

  • cc –o prog essai.o

Produit le fichier executable prog à partir d’un fichier essai.o

*

12

Programmer en langage C

Introduction

13 of 40

Eléments de base du langage C

  • Exemple de programme en langage C

  • Structure d’un programme en Langage C

  • Les mots-clés

  • Les types de base

  • Déclarations des variables simples

*

Programmer en langage C

13

14 of 40

Exemple de programme en langage C

#include <stdio.h>//standard input/output

#include <math.h>

#define NFOIS 5

main (){

int i;

float x, racx;

printf("Bonjour\n");

printf("je vais vous calculer %d racines carrées\n",NFOIS);

for(i=0;i<NFOIS;i++){ printf("donnez un nombre:");

scanf("%f",&x);

if(x<0.0)

printf("le nombre %f ne possède pas de racine carrée\n",x);

else { � racx=sqrt(x);

printf("le nombre %f a pour racine carrée :%f\n",x,racx);

}

}

printf("travail terminé Au revoir");

system(" pause" );

}

*

14

Programmer en langage C

Eléments de base du langage C

Programme principal

Bloc

15 of 40

Exemple de programme en langage C

#include<conio.h>

#include<stdio.h>

main(){int i,a;

printf("Veuiller introduire un nombre:");

scanf("%d",&a);

for(i=a+1;i<=a+10;i++) {

printf("%d\t",i);

}

system(" pause" );

}

*

Programmer en langage C

15

Eléments de base du langage C

16 of 40

Structure d’un programme en Langage C

  • Les directives à destination du préprocesseur

#include <math.h>

#include <stdio.h>

#define NFOIS 5

    • Il s’agit de directive qui seront prises en compte avant la traduction (compilation) du programme. Ces directives doivent être écrites une par ligne, et il est préférable de les placer au début. Les deux premières directives demandent d’introduire(avant compilation) des instructions(en langage C) situées dans les fichier stdio.h et math.h. On les appelles fichiers en-têtes.
    • La troisième directive définie une constante. Elle demande de remplacer systématiquement, dans toute la suite du programme, le symbole NFOIS par 5

*

Programmer en langage C

16

Eléments de base du langage C

Programme exécuté automatiquement avant la compilation, il transforme le fichier source à partir d’un certain nombre de directive

17 of 40

Structure d’un programme en Langage C

  • La fonction main()
    • est un bloc obligatoire d’un programme C. Sa forme la plus simple consiste à saisir son nom, main, suivi de parenthèse () vide et d’une paire d’accolades {}. L’exécution du programme débute à la première instruction de main() et se termine avec la dernière instruction de cette fonction.
  • La définition des variables
    • Une variable est un nom donné à une zone mémoire pour stocker les données en cours d’exécution. En C une variable doit être définie avant son utilisation. Sa définition indique son nom au compilateur et le type de données que l’on pourra y stocker.
    • Sa déclarations est de la forme

type nom_variable [=<valeur>];

    • Elle peut être déclarée à l’extérieur ou à l’intérieur de la fonction main

*

Programmer en langage C

17

Eléments de base du langage C

18 of 40

Structure d’un programme en Langage C

  • Notion d’identificateur
    • Un identificateur, comme son nom l’indique, permet de donner un nom à une entité du programme (qu’il s’agisse d’une variable ou d’une fonction). Ils sont sujets aux règles suivantes :
      1. Ils sont formés d’une suite de lettres (’a’ à ’z’ et ’A’ à ’Z’), de chiffres (0 à 9) et du signe ’_’. En particulier, les lettres accentuées sont interdites ;
      2. le premier caractère de cette suite ne peut pas être un chiffre ;
      3. les identificateurs sont case-sensitive.
    • Ainsi, les noms var1, S_i, et InitDB sont des identificateurs valides, tandis que i:j ou 1i ne le sont pas.

*

Programmer en langage C

18

Eléments de base du langage C

19 of 40

Structure d’un programme en Langage C

  • Pour écrire des informations: la fonction printf
    • L’instruction printf("Bonjour\n"); appelle une fonction prédifinie(printf) qui reçoit un argument "Bonjour\n"

délimiter par des guillemets pour dire que c’est une chaîne de caractères. La notation \n est conventionnelle : elle représente un caractère de fin de ligne, lorsqu’il est envoyé à l’écran, elle provoque le passage à la ligne suivante.

    • L’instruction

printf("je vais vous calculer %d racines carrées\n",NFOIS);

Ressemble à la précédente avec la différence qu’il reçoit un argument que l’on nomme un format, c’est comme un guide qui précise comment afficher les informations, dans notre cas le code format %d précise qu’il s’agit d’un entier.

*

Programmer en langage C

19

Eléments de base du langage C

20 of 40

Structure d’un programme en Langage C

  • Pour faire une répétition: l’instruction for
    • En langage C, il existe plusieurs façon de réaliser une répétition, comme par exemple : for(i=0;i<NFOIS;i++), son rôle est de répéter le bloc délimiter par les accolades, en respectant les consignes suivantes :
      • Avant de commencer cette répétition réaliser : i=0
      • Avant chaque nouvelle exécution du bloc, examiner la condition: i<NFOIS, si elle est satisfaite, exécuter le bloc indiqué à sa fin réaliser i++ qui n’est que i=i+1
  • Pour lire les informations: la fonction scanf
    • scanf("%f",&x): cette instruction n’est qu’appel de la fonction prédéfinie scanf dont le rôle est de lire une information au clavier
      • %f: le format de la variable
      • &x: son adresse

*

Programmer en langage C

20

Eléments de base du langage C

21 of 40

Structure d’un programme en Langage C

  • Pour faire le choix: l’instruction if
    • Les lignes

if(x<0.0)

printf("le nombre %f ne possède pas de racine carrée\n",x);

else {

racx=sqrt(x);

printf("le nombre %f a pour racine carrée :%f\n",x,racx);

}

Constituent une instruction de choix basée sur la condition x<0.0, si cette condition est vrai, on exécute l’instruction 1, si elle est fausse on exécute l’instruction 2.

*

Programmer en langage C

21

Eléments de base du langage C

1

2

22 of 40

Structure d’un programme en Langage C

  • Les commentaires
    • /* un commentaire d’une ligne*/
    • int a, b, c; /* commentaire sur une partie d’une ligne*/
    • /* un commentaire

Qui s’étend sur plusieurs ligne*/

    • //cette ligne est en commentaire
  • Conseils:
    • Ajouter de nombreux commentaires dans le code source de votre programme, surtout s’il contient des instructions ou fonctions qui pourraient être difficile à comprendre. Vous gagner un temps précieux quand vous aurez à le modifier.

*

Programmer en langage C

22

Eléments de base du langage C

23 of 40

Les mots-clés

  • Un certains nombres de mots sont réservés pour le langage C, a évité comme identificateurs, la liste exhaustive est la suivante:

*

Programmer en langage C

23

Eléments de base du langage C

24 of 40

Les types de base : Les caractères

  • On utilise le mot-clé char pour désigner une variable de type char. Il s’agit en fait d’un entier codé sur 8 bits interprété comme un caractère utilisé sur la machine (il s’agit en général du code ASCII de ce caractère).
  • Exemple :
    • char c1 = ’a’; // Déclaration d’une variable c1 de type char

// a laquelle on affecte la valeur ’a’

// A noter l’utilisation du simple quotte

*

Programmer en langage C

24

Eléments de base du langage C

25 of 40

Les types de base : Les caractères

  • Le tableau suivant donne la liste des principaux codes ASCII en décimal

*

Programmer en langage C

25

Eléments de base du langage C

26 of 40

Les types de base : Les caractères

  • Caractères particuliers
    • Il existe un certain nombre de caractères particuliers dont les principaux sont résumés dans le tableau suivant :

  • Chaînes de caractères
    • Les chaînes de caractères sont vues comme un pointeur sur des caractères et sont donc de type char *.
    • Exemple:
      • char * chaine = "Hello World !";// une chaine de caractère

// noter l’utilisation du double

// quotte

*

Programmer en langage C

26

Eléments de base du langage C

27 of 40

Les types de base : Entiers

  • Le type int peut être précisé par des attributs :

    • De longeur :
      • short pour des entiers courts(généralement de 8 ou 16 bits)
      • long pour des entiers longs(généralement de 32 ou 64bits)
      • La longeur par défaut est généralement de 16 ou 32bits
    • De domaine
      • signed pour les entiers relatifs
      • unsigned pour les entiers naturels positifs ou nuls

*

Programmer en langage C

27

Eléments de base du langage C

28 of 40

Les types de base : Entiers

  • On utilise le mot-clé int.
  • Exemple :
    • /* déclaration la plus courante d’une variable de type int */
      • int a = 14; // la variable a est initialisée à la valeur 14
    • /* Utilisation des précisions (cas le plus général)*/
      • short int b; // b est codé sur 16 bits
      • int c; // c est codé sur 16 ou 32 bits
      • long int d; // d est codé sur 32 bits
    • // la possibilité de l’écriture suivante dépend du compilateur
      • long long int e; // e est codé sur 64 bits.
    • /* Précision du signe */
      • unsigned long int n; //n est un entier non signé sur 32 bits

*

Programmer en langage C

28

Eléments de base du langage C

29 of 40

Les types de base : Entiers

  • Le tableau suivant regroupe les types entiers standards avec quelques informations supplémentaires :

*

Programmer en langage C

29

Eléments de base du langage C

30 of 40

Les types de base : Entiers

  • Constante entière: donnée inchangée qui ne peut varier pendant l’exécution d’un programme
    • Déclaration : #define Max 100
  • Elle se présente sous forme décimale, octale ou hexadécimal
    • décimale (écriture en base 10) : c’est l’écriture usuelle. Ex : 372 ;
    • octale (base 8) : on commence par un 0 suivi de chiffres octaux. Ex : 0477 ;
    • héxadécimale (base 16) : on commence par 0x (ou 0X) suivis de chiffres héxadécimaux (0-9, a-f). Ex : 0x5a2b, 0X5a2b, 0x5A2b.

*

Programmer en langage C

30

Eléments de base du langage C

31 of 40

Les types de base : Les flottants

  • On distingue trois types de flottants : float, double et long double.
    • Exemple : double Pi = 3,14159;
  • Le tableau suivant donne des informations pour chaque type flottant.

*

Programmer en langage C

31

Eléments de base du langage C

32 of 40

Les types de base : Les flottants

  • Une constante réelle représente un nombre à virgule flottante(de type float ou double) sous forme décimale ou exponentielle.
  • Exemple :

*

Programmer en langage C

32

Eléments de base du langage C

33 of 40

Les types de base : Le type void

  • Toute variable C est typée, de même que toute valeur de retour d’une fonction.

  • Mais il peut arriver qu’aucune valeur ne soit disponible pour exprimer l’idée de ”aucune valeur”, pour cela on utilise le mot-clé void.

  • Ce type est utilisé pour la déclaration de fonctions qui n’ont pas de valeur de retour.

*

Programmer en langage C

33

Eléments de base du langage C

34 of 40

Déclarations des variables simples

  • Les variables et les constantes sont les données principales manipulées par un programme.
  • Les déclarations introduisent les variables, fixent leur type et parfois aussi leur valeur de départ(initialisation);

Syntaxe de déclaration:

    • int x,y;
    • short compteur;
    • float prix,salaire;
    • double m;
    • char s;

*

Programmer en langage C

34

Eléments de base du langage C

35 of 40

Déclarations des variables simples

  • Initialisation des variables
    • En C, il est possible d’initialiser les variables à la déclaration
    • Exemples:
      • int max=123;
      • char tab=‘c’;
    • En utilisant l’attribut const, la valeur d’une variable ne change pas au cours du programme: c’est une constante.
    • Exemple:
      • const int max=765;
      • const char ch1=‘a’;

*

Programmer en langage C

35

Eléments de base du langage C

36 of 40

Le mot-clé typedef

  • Le mot-clé typdef permet de créer un synonyme pour un type de donnée existant. Par exemple l’instruction :
    • typedef int entier;

Crée le synonyme entier pour int.

Vous pouvez ainsi utiliser entier pour définir des variables de type int, comme dans l’exemple suivant:

    • entier compte; //equivalent int compte;

*

Programmer en langage C

36

Eléments de base du langage C

37 of 40

Exercices

  • Quel type de variable convient le mieux pour stocker les valeurs suivantes?
    • L’âge d’une personne
    • Le poids
    • Le rayon d’un cercle
    • Salaire annuel
    • Le prix d’un article
    • La note la plus haute d’un test
    • La température
    • Le gain d’une personne
    • La distance d’une étoile en kilomètre

*

Programmer en langage C

37

38 of 40

Sol

  • Quel type de variable convient le mieux pour stocker les valeurs suivantes:
    • L’âge d’une personne
    • Le poids
    • Le rayon d’un cercle
    • Salaire annuel
    • Le prix d’un article
    • La note la plus haute d’un test
    • La température
    • Le gain d’une personne
    • La distance d’une étoile en kilomètre

*

Programmer en langage C

38

  • unsigned int age;
  • unsigned int poids;
  • float rayon=3;
  • long salaire_annuel;
  • float cout=29,95;
  • const int note_max=100;

#define note_max 100;

  • float temperature;
  • long gain=30000;
  • double distance;

39 of 40

Exercices

  • Quels sont les noms de variables correctes :
    1. 123variable
    2. X
    3. Score_totale
    4. Poids_en_#s
    5. One_0
    6. Grand-cout
    7. RAYON
    8. rayon
    9. Cela_est_une_variable_pour_stocker_la_largeur

*

Programmer en langage C

39

40 of 40

Exercices

  • Quels sont les noms de variables correctes :
    1. 123variable
    2. X
    3. Score_totale
    4. Poids_en_#s
    5. One_0
    6. Grand-cout
    7. RAYON
    8. rayon
    9. Cela_est_une_variable_pour_stocker_la_largeur

*

Programmer en langage C

40