Você está na página 1de 40

Langage C

Réalisé par : Pr. EN-NAIMANI Zakariae

École nationale des sciences appliquées d'Al Hoceima

23 octobre 2018

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Introduction et Motivation

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Pourquoi un cours de programmation ?
Parce que dans beaucoup de domaines la programmation est devenue
indispensable, par exemple pour :

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Pourquoi un cours de programmation ?
Résolution numérique des équations diérentielles,
Analyse des données d'une expérience,
Production de simulations pour faire des tests...

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


La programmation

Programmation
Une branche de l'informatique qui permet la création de programmes.
L'ordinateur est intégralement contrôlé par des programmes tels que :
Système d'exploitation (Windows, GNU/Linux, Mac OS X, ...) est un
programme ;
Navigateur web (Internet Explorer, Mozilla Firefox, Opera, ...) est aussi un
programme ;
Et cela va de même pour un logiciel de discussion instantanée, des jeux
vidéos, etc...

Les programmes ne sont par ailleurs pas seulement contenus uniquement


dans les ordinateurs, et de très nombreux appareils contiennent des
programmes, citant par exemple le lecteur MP3, la console de jeux, etc.

Programme
Créer un programme, c'est tout simplement assembler une suite d'instructions
de base qui permettront de faire ce que l'on veut.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Langages informatiques

Langages de diérents niveaux


Un ordinateur contient un circuit électronique spécialement conçu pour
eectuer ces instructions : il s'agit du processeur.

Chaque processeur possède un langage propre, directement exécutable : le


langage machine. Il est formé de 0 et de 1 et n'est pas portable, mais c'est
le seul que l'ordinateur comprend ;
Ce langage est dicile à comprendre pour un être humain
Le langage d'assemblage est un codage alphanumérique du langage
machine. Il est plus lisible que le langage machine, mais n'est pas portable.
On le traduit en langage machine par un assembleur ;
Les langages de haut niveau :
proche du langage humain "anglais" (compréhensible) ;
permet une plus grande portabilité (indépendant du matériel) ;
Manipulation de données et d'expressions complexes (réels, objets, a*b/c, ?)

Les langages de haut niveau sont traduits en langage machine par un


compilateur ou un interpréteur.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Exemple :
Pour illustrer, ce code écrit en C (que nous apprendrons à connaître) est quand
même largement plus facile à comprendre qu'une suite de 0 et de 1.
Il ne reste plus qu'à utiliser un interprète qui va traduire ce texte (un
programme écrit dans notre langage de programmation) vers la langue de
l'ordinateur (des suites de 0 et de 1) : le compilateur.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Compilateur / interpréteur

Compilation
La compilation est la traduction d'un programme écrit dans un langage de
programmation (compréhensible par les humains) en langage machine
(exécutable par l'ordinateur).
Comprend au moins quatre phases (trois phases d'analyse : lexicale,
syntaxique et sémantique - et une de production de code objet).
Générer le langage machine il faut encore une phase particulière : l'édition
de liens.
Cette technique est contraignante mais ore une grande vitesse
d'exécution.

Interprétation
Dans la technique de l'interprétation chaque ligne du source analysé est
traduite au fur et à mesure en instructions directement exécutées. Aucun
programme objet n'est généré. C'est très souple mais l'interpréteur doit être
utilisé à chaque exécution.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Étapes de réalisation d'un programme

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Mais c'est quoi un Algorithme ?

Le terme algorithme vient du nom du mathématicien arabe Al-Khawarizmi (820


après J.C.).
Dénitions

Une description des diérentes étapes permettant de résoudre un problème


quelconque.

Une suite d'instructions, qui une fois exécutée correctement, conduit à un


résultat donné.

L'algorithmique exprime les instructions résolvant un problème donné


indépendamment des particularités de tel ou tel langage.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Exemple d'un algorithme

Résolution d'une équation du 2nd degré


ax 2 + bx + c = 0

Étapes de résolution
1 Connaître les valeurs de a, b et c.

2 Calculer le discriminant ∆ = b 2 − 4ac .

3 Si ∆  0 alors on a deux solutions

4 Si ∆ = 0 alors on a une solution x = −b


2a
√ √
5 Sinon pas de solution x1 = −b+ ∆
2a et x2 = −b− ∆
2a

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Exemple d'un algorithme

Résolution d'une équation du 2nd degré


ax 2 + bx + c = 0

Étapes de résolution
1 Connaître les valeurs de a, b et c.

2 Calculer le discriminant ∆ = b 2 − 4ac .

3 Si ∆  0 alors on a deux solutions

4 Si ∆ = 0 alors on a une solution x = −b


2a
√ √
5 Sinon pas de solution x1 = −b+ ∆
2a et x2 = −b− ∆
2a

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Structure d'un algorithme

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Réalisé par : Pr. EN-NAIMANI Zakariae Langage C
Pourquoi le langage C ?

Parce que c'est un langage puissant, rapide et beaucoup utilisé :

Rapide car :
Langage compilé i.e. compilé entièrement en une seule fois avant
l'exécution ;
Non pas interprété i.e. compilé ligne par ligne pendant l'exécution, comme
le Python par exemple.

Beaucoup utilisé, non seulement dans la recherche scientique, mais aussi


dans d'autres domaines. Par exemple :
Le système d'exploitation Windows et le compilateur du langage Python ont
été programmés en C ;

Puissant car on peut faire tout et contrôler tout.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Objectifs et Organisation du cours

Objectifs
Concevoir, écrire et exécuter des programmes simples en langage C ;
Savoir lire, manipuler, stocker et acher des données et résultats ;
Savoir utiliser des structures de contrôle (conditions, boucles...) ;
Savoir dénir et utiliser des fonctions.

Outil nécessaire
Poste informatique sous Windows 7 et plus ;
Installez Dev-C++.

Organisation du cours
15 x 2h Cours ;
20 x 2h TD et TP ;

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Histoire du Langage C

Le langage C a été conçu en 1972 dans "Bell Laboratories" par Dennis


Ritchie avec l'objectif d'écrire un système d'exploitation (UNIX).

En 1978, une première dénition rigoureuse du langage C (standard KR-C)


a été réalisée par Kernighan et Ritchie en publiant le livre "The C
Programming Language".

Le succès du C et l'apparition de compilateurs avec des extensions


particulières ont conduit à sa normalisation.

En 1983, l'organisme ANSI (American National Standards Institute)


chargeait une commission de mettre au point une dénition explicite et
portable pour le langage C. Le résultat est le standard ANSI-C.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Caractéristiques du C

Universel : n'est pas orienté vers un domaine d'application particulier


(applications scientiques, de gestion, ).

Près de la machine : ore des opérateurs qui sont proches de ceux du


langage machine (manipulations de bits, d'adresses,) ecace.

Modulaire : peut être découpé en modules qui peuvent être compilés


séparément.

Portable : en respectant le standard ANSI-C, il est possible d'utiliser le


même programme sur plusieurs systèmes (hardware, système d'exploitation
).

Remarque : Une programmation ecace et compréhensible en C n'est pas


facilement accessible à des débutants

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Programme source, objet et exécutable

Un programme écrit en langage C forme un texte qu'on nomme


programme ou code source, qui peut être formé de plusieurs chiers
sources.

Chaque chier source est traduit par le compilateur pour obtenir un chier
ou module objet (formé d'instructions machine).

Ce chier objet n'est pas exécutable tel quel car il lui manque les
instructions exécutables des fonctions standards appelées dans le chier
source (printf, scanf, ...) et éventuellement d'autres chiers objets.

L'éditeur de liens réunit les diérents modules objets et les fonctions de la


bibliothèque standard an de former un programme exécutable.

Remarque : la compilation est précédée par une phase de prétraitement


(inclusion de chiers en-tête) réalisé par le préprocesseur

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Compilateurs C

Pour pouvoir écrire des programmes en C, vous avez besoin d'un


compilateur C sur votre machine.
Il existe plusieurs compilateurs respectant le standard ANSI-C. Une bonne
liste est disponible sur :
c.developpez.com/compilateurs/.

Nous allons utiliser l'environnement de développement Dev-C++ avec le


système d'exploitation Windows.

Vous pouvez télécharger Dev-C++ librement.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


DevC++

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Structure d'un programme C

Structure d'un programme C :


Un programme simple se compose de plusieurs parties :
Des directives de précompilation ;
inclusion des chiers d'en-tête (chiers avec extension .h) ;
dénitions des constantes avec dene.
Une ou plusieurs fonctions dont l'une s'appelle obligatoirement main(),
celle-ci constitue le programme principal et comporte 2 parties :
la déclaration de toutes les variables et fonctions utilisées ;
des insctructions.
Les commentaires : texte ignoré par le compilateur, destiné à améliorer la
compréhension du code

Exemple
include <stdio.h>
int main() {
printf("Bonjour tout le monde") ;
return 0 ;}

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Remarques sur ce premier programme

include<stdio.h> informe le compilateur d'inclure le chier stdio.h qui


contient les fonctions d'entrées-sorties dont la fonction printf.

La fonction main est la fonction principale des programmes en C : Elle se


trouve obligatoirement dans tous les programmes. L'exécution d'un
programme entraîne automatiquement l'appel de la fonction main.

L'appel de printf avec l'argument "Bonjour tout le monde" permet


d'acher : Bonjour tout le monde.

En C, toute instruction simple est terminée obligatoirement par un


point-virgule (" ;")

Un commentaire en C est compris entre // et la n de la ligne ou bien


entre /* et */.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Chapitre 1 : types, opérateurs et expressions

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Variables

Dénition
Les variables sont des entités qui contiennent des informations. Dans les
langages de programmation elles servent à stocker les valeurs des données
utilisées pendant l'exécution d'un programme. Elles sont caractérisées par :

Un identiant (nom) ;

Une valeur (qui peut changer dans le temps) ;

Un type (entier, réel, ...).

Remarques

Les variables doivent être déclarées avant d'être utilisées ;

L'identiant d'une variable commence généralement par une minuscule.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Identicateurs
Le choix des noms de variables est soumis à quelques règles :
Un nom doit commencer par une lettre alphabétique
noms valides : Aa1, aA1 ;
noms invalides : 1Aa, 1aA.
Il doit être constitué uniquement de lettres, de chires et du
soulignement_ (Éviter les caractères de ponctuation et les espaces)
noms valides : AP2, AP_2 ;
noms invalides : AP 2, AP ;2 , AP-2 .
Il doit être diérent des mots réservés du langage : auto break case char
const continue default do double else enum extern oat for goto if int long
register return short signed sizeof static struct switch typedef union
unsigned void volatile while
La longueur du nom doit être inférieure à la taille maximale spéciée par le
langage utilisé.
Remarques :
Il faut choisir des noms signicatifs qui décrivent les données manipulées
pour la lisibilité du code. Exemples : TotalVentes2004, Prix_TTC..
C distingue les majuscules et les minuscules (sensible à la casse).
NOMBRE et nombre sont des identicateurs diérents.
Réalisé par : Pr. EN-NAIMANI Zakariae Langage C
Types de base

Le type d'une variable détermine l'ensemble des valeurs qu'elle peut


prendre et le nombre d'octets à lui réserver en mémoire.
En langage C, il n'y a que deux types de base les entiers et les réels avec
diérentes variantes pour chaque type.

Déclaration
< type-variable > < nom-variable > ;
< type-variable > < nom-var1 >,...,< nom-varN > ;

Remarques :
Le type de base est un type pour lequel une variable peut prendre une
seule valeur à un instant donné contrairement aux types agrégés.
Le type caractère apparaît en C comme cas particulier du type entier (un
caractère est un nombre entier, il s'identie à son code ASCII).
En C il n'existe pas de type spécial pour chaînes de caractères. Les moyens
de traiter les chaînes de caractères seront présentés aux chapitres suivants.
Le type booléen n'existe pas. Un booléen est représenté par un entier (un
entier non nul équivaut à vrai et la valeur zéro équivaut à faux).
Réalisé par : Pr. EN-NAIMANI Zakariae Langage C
Types de base : Entiers

Taille et amplitude
Le type int en C peut être qualié par un modicateur. Avec Dev-C++ sous
Windows :
char (1 octets) : [-128...127]
unsigned char (1 octets) : [0...255]
short (2 octets) : [-32768...32767]
unsigned short (2 octets) : [0...65535]
int (4 octets) : [-2147483648...2147483647]
unsigned int (4 octets) : [0...4294967295]
long (4 octets) : [-2147483648...2147483647]
unsigned long (4 octets) : [0...4294927295]

Exemples :
int a ;
unsigned long b ;
unsigned short x,y ;
Réalisé par : Pr. EN-NAIMANI Zakariae Langage C
Types de base : Réels

Il existe 3 variantes de réels :


Taille et amplitude
Le type oat en C peut être qualié par un modicateur. Avec Dev-C++ sous
Windows :
oat (4 octets) : [−3.4 ∗ 1038 ...3.4 ∗ 1038 ]
double (8 octets) : [−1.7 ∗ 10308 ...1.7 ∗ 10308 ]
long double (10 octets) : [−3.4 ∗ 104932 ...3.4 ∗ 104932 ]

Exemples :
oat a ;
double x,y ;

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Écriture formatée

printf
La bibliotèque : include <stdio.h>
printf ("message") ;
printf ("<format>",<Expr1>,<Expr2>, ...) ;

Exemples :
printf("Entrez la valeur de x") ;
printf("La valeur de x= %d",x) ;
printf("La valeur de x= %d et y=%f",x,y) ;

Exemple
include <stdio.h>
int main()
int x ;
oat y ;

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Écriture formatée

Exemples :
printf("Entrez la valeur de x") ;
printf("La valeur de x= %d",x) ;
printf("La valeur de x= %d et y=%f",x,y) ;

Exemple
include <stdio.h>
int main() {
int x ;
oat y ;
x=10 ;
y=2.5 ;
printf("La valeur de x= %d et y=%f",x,y) ;
return 0 ;}

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Écriture formatée

Entiers
Réels et Caractères
Nom Format
Nom Format
short %hd
oat %f
int %d
double %lf
long %ld
oat %e
unsigned short %hu
char %c
unsigned int %u
char %d
unsigned long %lu

Exemples :
int a ; char c ; short b ;
printf("La valeur de a= %d et b=%hd et c=%c",a,b,c) ;

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Lire les entrées clavier

printf
La bibliotèque : include <stdio.h>
scanf ("<format>",<Expr1>) ;
scanf ("<format>",<Expr1>,<Expr2>, ...) ;

Exemples :
int x ; double y ;
scanf ("%d",x) ;
scanf ("%lf",x) ;

Exemple
include <stdio.h>
int main() {
int x ; oat y ;
printf("Saisir les valeurs de x et y") ;
scanf ("%d %f",x,y) ; printf("%d %f",x,y) ; return 0 ;}

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Opérateurs arithmétiques

Symbole Description Exemple


+ addiction x+y
- soustraction x-y
* multiplication x*y
/ division x/y
% modulo x%2

Priorités
Lorsque l'on associe plusieurs opérateurs, il faut que le programmeur sache
dans quel ordre les traiter.
On modie les règles de priorité en incorporant des parenthèses dans les
expressions.

Exemples :
x+y*z+t ;
(x+y)*(z+t) ;

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Opérateur d'aectation

Symbole Description Exemple


= aectation x=1
+= addiction et aectation x+=1
-= soustraction et aectation x-=1

Note :
L'aectation étant un opérateur, une expression telle que :
x =y =z =1

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Opérateurs arithmétiques

Symbole Description Exemple


- opposé -x
++ pré-incrémentation ++x
++ post-incrémentation x++
-- pré-décrémentation - -x
-- post-décrémentation x- -

Exemples :
include <stdio.h>
int main() {
int x, y ;
x=1 ;
y=++x+5 ;
printf("x=%d y=%d",x,y) ;
x=1 ;
y=x++ +5 ;
printf("x=%d y=%d",x,y) ;
return 0 ;}
Réalisé par : Pr. EN-NAIMANI Zakariae Langage C
Opérateurs relationnels

Symbole Description Exemple


== équivalent x==0
≺ plus petit strictement que x ≺0
 plus grand strictement que x 0
≺= plus petit ou égal x ≺= 2
= plus grand ou égal x = 2
!= diérent x != 2

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Exercices :

Exo 1 :
Écrire un programme qui calcule et ache la distance Dist de type double entre
deux points A et B du plan dont les coordonnées respectivement (XA , YA ) et
(XB , YB ). Ces dernières sont entrées au clavier comme des entiers.

Exo 2 :
Écrire un programme qui lit un caractère au clavier et ache le caractère ainsi
que son code numérique :
En employant getchar et printf.
En utilisant getch et printf.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Exercices :

Exo 1 :
Écrire un programme qui calcule et ache la distance Dist de type double entre
deux points A et B du plan dont les coordonnées respectivement (XA , YA ) et
(XB , YB ). Ces dernières sont entrées au clavier comme des entiers.

Exo 2 :
Écrire un programme qui lit un caractère au clavier et ache le caractère ainsi
que son code numérique :
En employant getchar et printf.
En utilisant getch et printf.

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C


Questions ?

Réalisé par : Pr. EN-NAIMANI Zakariae Langage C

Você também pode gostar