You are on page 1of 12

laprogrammation

Pour

rsoudre un problme donn par linformatique


lutilisateur de lordinateur doit mettre au point un
programme et le faire excuter par la machine.
machine

Un

programme est une succession logique et ordonne


d instructions.
dinstructions

Lordinateur

se chargera de traiter les instructions des


programmes et restituer les rsultats demands en
fonction des donnes qui lui sont fournies.

Dfinition etobjectif
et objectif d
dun
unalgorithme
algorithme

Dfinition etobjectif
et objectif d
dun
unalgorithme
algorithme

Un algorithme est la description de la solution d


dun
un
problme sous la forme dune suite finie doprations
effectuer
ff
sur les
l donnes
d
du
d problme.
bl

Un algorithme,
algorithme cest une suite dinstructions,
dinstructions qui une fois
excute correctement, conduit un rsultat donn

un algorithme doit contenir uniquement les


instructions comprhensibles par celui qui devra
lexcuter.

l algorithmique exprime les instructions rsolvant un problme


lalgorithmique
donn indpendamment des particularits de tel ou tel
langage

Son fonctionnement ncessite un certain nombre


dobjets, cette ensemble sappelle : environnement de
lalgorithme.
lalgorithme
3

St t
Structuredunalgorithme
d
l ith

tapes
d
duprocessus
d
deprogrammation
i

Algorithme Nom_Algorithme
{
Analyse, proposition
de solutions,
decompositions
}

Var
X,Y,:entier
X
Y : entier
rel
Caractre
Dbut

Algorithme

Programme

instructions
instructions
.................
instructions
Fin

Problme

{
Traduction de
l l
lalgorithme
h
en un
language de
programmation
i
}

Rsultats

LeLanguageC
g g
Le langage
g g C a t conu
1972 p
par Denis Ritchie avec un
objectif prcis: Ecrire un systme dexploitation (UNIX).
A cet effet,
effet :
) il sest inspir du langage B (cr par K Thompson)

L g g C C
LangageC,C++

)) il llaa amlior pour tre au niveau de langages volus,


volus
en lenrichissant de structures et de types,
Il lui a conserver ses aptitudes de programmation de bas
niveau
7

LeLanguageC
g g

LeLanguageC
g g

En 1978, Kernigham et Ritchie, couramment appels


K&R, ont fait apparatre un ouvrage .

Langage polyvalent permettant le dveloppement de


systmes
t
d' l it ti
d'exploitation,
d
de
programmes applicatifs
li tif
scientifiques et de gestion.
Langage structur..

TheCprogramming langage
q constitue un standard fixant les dfinitions et Les
qui
caractristiques du langage.
Actuellement, il existe une norme p
pour le langage
g g C ((la
norme ANSI). Les diteurs de compilateurs, tout
en
respectant cette norme,
norme apportent quelques
extensions pour lenrichir.
9

LLangage volu
l quii permet d'effectuer
d' ff
d oprations
des
i
d
de
bas niveau (<< assembleur d'Unix >>).
Portabilit lies l'emploi de bibliothques dans lesquelles
sont relgues les fonctionnalits de la machine.
machine Un
programme dvelopp en C sur une machine donne peut
t port
tre
t sur d'autres
d' t machines
hi
sans le
l modifier.
difi
Grande efficacit et puissance.
p
Langage permissif

10

LeLanguageC
g g
Modulaire: peut tre dcoup en modules qui

peuventt tre
t compils
il sparement

t
Universel: n
n'est
est pas orient vers un domaine
d'application particulier
Typ: tout objet C doit tre dclar avant dtre
utilis
Portable: sur n'importe quel systme en
possession d'un compilateur C
11

12

Langageetbibliothquestandard
g g
q

Langageetbibliothquestandard
g g
q

Le langage C a t conu pour l'criture de systmes, en


particulier le systme Unix.
Unix Pour cette raison,
raison ses
concepteurs ont fait une sparation nette entre ce qui est
purement algorithmique (dclarations, instructions, etc.)
et tout ce qui est interaction avec le systme (entres
sorties, allocation de mmoire, etc.) qui est ralis par
appell de
d fonctions
f ti
se trouvant
t
t dans
d
une bibliothque
bibli th
dite bibliothque
q standard.

Entressorties<stdio.h>
Entres sorties <stdio h>
Oprationssurlesfichiers
Oprations sur les fichiers
Accsauxfichiers
Entressortiesformates
Entressortiescaractres
E
i

Entres
Entressorties
sortiesbinaires
binaires
Positiondansunfichier
Gestiondeserreurs.

13

Langageetbibliothquestandard
g g
q

14

Langageetbibliothquestandard
g g
q
Utilitairesdivers:<stdlib.h>
Conversiondenombres
Gnrationdenombrespseudoalatoires
gestiondelammoire
ti d l
i
Communicationavecl
Communication avec l'environnement
environnement
Rechercheettri
Arithmtiquesurlesentiers
Gestiondescaractresmultioctets
d

Manipulationdecaractres:<ctype.h>
Mathmatiques:<math.h>
M th ti
th h
Fonctionstrigonomtriquesethyperboliques
Fonctions trigonomtriques et hyperboliques
Fonctionsexponentiellesetlogarithmiques
Fonctionsdiverses

15

Lesunitslexicales dulangageC

Langageetbibliothquestandard
g g
q

16

Manipulationdechanes:<string.h>
Manipulationdeladateetdel'heure:<time.h>
Branchements non locaux : <setjmp h>
Branchementsnonlocaux:<setjmp.h>
Manipulationdessignaux:<signal.h>
p
g
g
Nombrevariabledeparamtres:<stdarg.h>
Environnementlocal:<locale.h>

Lelangagecomprends6typesd'unitslexicales:
lesmotscls,
lesidentificateurs,
l id tifi t
Lesconstantes,
Les constantes,
leschanes,
lesoprateurs
lessignesdeponctuation
l
d
17

18

Motscls
Auto

break
case
char const continue
default
do
double
else enum
extern
float
for
goto
if
int
longg
register
g
return
short
signed
sizeof
static struct switch
typedef
yp
union
unsigned
g
void volatile
while

Remarque
Si le compilateur produit un message d'erreur
syntaxique incomprhensible il est recommand d
d'avoir
avoir
le reflexe de consulter la liste des mots cls pour
vrifier que ll'on
on a pas pris comme identificateur un
motcl.
19

LesIdentificateurs

20

LesIdentificateurs

Le but
b d'un
d' identificateur
d
f
est de
d donner
d
un nom
une entit du programme (variable,
(variable
procdure, etc.)
Les identificateurs sont forms d'une suite de
l tt
lettres,
d chiffres
de
hiff
ett du
d signe
i
soulign,
li suite
it
dont le premier caractre ne peut pas tre un
chiffre.

Les lettres
l
f
formant
l identificateurs
les
d
f
peuvent
tre majuscules ou minuscules,
minuscules mais doivent
faire partie de l'alphabet anglais :
les lettres accentues sont interdites.
Les noms var1, PremierIndex, i_tab, _deb sont
des identificateurs valides,
valides mais 1i et i:j ne le sont
pas.

21

Lescommentaires

22

Lescommentaires

Les commentaires dbutent par


/*etseterminentpar*/.
Exemple :
/* Ceci est un commentaire */
/*Ceciestuncommentaire*/

/ premiercommentaire
/*
premier commentaire
instruction
...
instruction
/*secondcommentaire*/
Instruction

23

toutunensembled'instructionsseraignorparlecompilateur
sansgnrerlemoindremessaged'erreur
24

Les constantes,

La compilation
Lacompilation

Voici
Voiciun
un exempledecommentairesqui,situau
exemple de commentaires qui situ au
sein duneinstruction dedclaration:
int nb_ points
/*nombredevaleurscalculer*/
float dbut,
/*abscissededbut */
fin
fin,
/* abscisse de fin
/*abscissedefin
*/
.;;

La compilation se droule en 4 phases :


1 Le
1.
L traitement
t it
t par le
l prprocesseur

: Le
L fichier
fi hi source
est analys
y
par le p
p
prprocesseur
p
qui effectue des
q
transformations purement textuelles.
2. La compilation
l
: Le rsultat
l
d ltape
de
l
cidessus
d
est
traduit
adu een asse
assembleur.
b eu
3. Lassemblage : Cette opration transforme le rsultat
de ltape prcdente en fichier binaire.
4 LLdition
4.
dition de lien : On obtient le fichier excutable

25

26

Commentcrerunprogramme excutable ?
CompilateurC
p
prog principal c
prog_principal.c

sous prog1 c
sous_prog1.c

1) Compilation

Code
assembleur

prog principal o
prog_principal.o

(fichiers objets)
sous prog1 o
sous_prog1.o

Assembleur

Linker

(fichiers
sous_prog2.c
sous
prog2sources)
c

sous prog2 o
sous_prog2.o

2) Edition des liens


prog executable
prog_executable

C d
Code
objet

Code
executable

28

27

TypesdevariablesmanipulesenC
yp
p

Commentcrerunprogramme excutable ?

Toutes les variables doivent tre explicitement


types . Les Principaux types sont :

Typeslmentaires
T
l
t i
Typesvolus
T
l
Typesdrivs
Types drivs

29

30

Types lmentaires

Types volus et drivs

Tableaux
bl
Fonctions
Pointeurs
Structures
Unions

Typeentier :long,int ,short


Typecaractre:char
Typesrel:longdouble,doubleetfloat
Typeboolen:
Type boolen :
Rien :void
Rien
: void
31

32

LESOPERATEURSETLESEXPRESSIONS

Les oprateurs arithmtiques


Lesoprateursarithmtiques

Lesoprateursarithmtiques
Les
oprateurs arithmtiques
Laconversionimplicitedetypedanslesexpressions.
Lesoprateursrelationnels
Les oprateurs logiques
Lesoprateurslogiques
Loprateurdaffectationsimple
Lesoprateursdincrmentationsetde
dcrmentation
Lesoprateursdemanipulationsdebits
Lesoprateursdaffectationlargie
LLoprateurconditionnel
oprateur conditionnel
Lesconversionsexplicites

TYPE

OPERATEUR

ROLE

Binaire

somme
diffrence

*
/
%

produits
quotient
ti t
restededivision
((modulo))

Les oprateurs relationnels


Lesoprateursrelationnels
OPERATEUR
Unaire
<
<=

SIGNIFICATION
oppos
Identit
Infrieur
Infrieur ou gal
Infrieurougal

>

Suprieur

>=

Suprieurougal

33

34

exemples

Les oprateurs logiques


Lesoprateurslogiques
OPERATEUR

SIGNIFICATION

&&

et

II

ou(inclusif)
(
)

ngation

35

if(a=b):erreurfrquente,
if
(a = b) : erreur frquente
if(a==b):agalb
(
)
g
if(a!=b):adiffrentdeb
if(a>b):asuprieurb
if ((a > b)&&(a>0)) : a suprieur ou gal b et apositif
if((a>=b)&&(a>0)):asuprieurougalbet
a positif
if ((a<=b)||(a>0))
if((a
b)||(a 0)):ainfrieurougalbou
: a infrieur ou gal b ou apositif
a positif
...

36

silavaleurde i est5,lexpression :

Lesoprateursdincrmentationsetde
d
dcrmentation
i
DansdesprogrammescritsdansunlangageautrequeC,on
rencontre souvent des expressions (ou des instructions) telles que
rencontresouventdesexpressions(oudesinstructions)tellesque
:
i=i+1
i=i1

quiincrmenteouquidcrmentede1lavaleur
dune
d
unevariable
variable
En C ces actions p
peuvent tre ralises p
par des oprateurs
p
unaires
portant sur cette lvalue. Ainsi, lexpression :

n =++i5
affecterailavaleurde6etnlavaleurde1.
Parcontre,
Par contre
n = i++ 5
affecterailavaleurde6etnlavaleurde0(caricila
valeurdelexpressioni++est5).
Onditque
On dit que ++est
++ est :
unoprateurdeprincrmentation:++i
p
p
unoprateurdepostincrmentation:i++

++ioui++
i
i
37

Pourquoilesordinateurssontils binaires ?

Lesoprateursdaffectationlargie
C dispose d
doprateurs
oprateurs
pourrez remplacer :
i=i+k
par:
ou encore :
a=a*b
*b
par :
ou mme
n = n <<3 par :

encore plus puissants.


puissants Ainsi,
Ainsi vous
i+= k
a *=
* b
n <<= 3

Cette possibilit
b l concerne tous les
l
oprateurs

b
binaires
arithmtiques et de manipulation de bits. nomms oprateurs
daffectation largie :
+
+=

*
*=

/
/=

%
%=

I ^=
I=
^ &=
& <<=
<<

38

questce quune information binaire ?


C t une information
Cest
i f
ti quii ne peutt avoir
i que deux
d
tats : par exemple,
ouvert ferm,
libre occup,
blanc noir,
noir
vrai faux,,
etc.

>>
>>=
39

Pourquoilesordinateurssontils binaires ?

40

basedcimale.
Lorsqueoncrit8439, ?

Les dispositifs physiques permettant de stocker ce genre


dinformation
d
information, :
charg non charg, (mmoire vive RAM )
haut bas, (disquette, disque durs, )
trou
trou non trou.
trou (CD
(CDROM)
ROM)
..
ce sont ceux dont se sert un ordinateur pour stocker les
informations.

41

Dcomposonslalecturechiffreparchiffre,degauche
Dcomposons
la lecture chiffre par chiffre de gauche

droite:

8439,cest8000+400+30+9.
8000,:8x1000,8estlequatrimechiffreenpartantde
8000
8 x 1000 8 est le quatrime chiffre en partant de
ladroite
400,:4x100,4estletroisimechiffre
30 : 3 x 10 3 est le deuxime chiffre
30,:3x10,3estledeuximechiffre
9,:9x1,9estlepremierchiffre

8439=8x103 +4x102 +3x101 +9x100

42

basebinaire

basebinaire

le plus simple est dutiliser : les fameux 0 et 1.


le choix du 0 et du 1 est une pure convention,

Octet(Byte)
Octet
( yte)

Remarque:Uneinformationbinaire(0ou1)s
Remarque
: Une information binaire (0 ou 1) sappelle
appelleun
un
bit(bit).
Un groupe de huit bits sappelle
Ungroupedehuitbitss
appelleunoctet(byte).
un octet (byte)

2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 =2
2x2x2x2x2x2x2x2
28 =256possibilits
256 possibilits

de1256,oude0255,oude127+128.
,
,

Silenombre>256?
on va donc tre contraint de mobiliser plus dun octet.
43

44

basebinaire
Prenonsunoctetauhasard

11010011
EEneffet,
ff t
avecdeuxoctets,ona256x256==216 =65536possibilits.

1x27 +1x26 +0x2


0 5 +1x24 +0x2
0 3 +0x2
0 2 +1x21 +1x20
=1x128+1x64+1x16+1x2+1x1

Enutilisant4octets,
En
utilisant 4 octets
onpasse256x256x256==232 =16777216possibilits.

=128+64+16+2+1=211

45

46

Dclaration des variables


Dclarationdesvariables
Inversement,Prenons,parexemple,186.
Dans186,ontrouve1x128,soit1x27.onretranche128de186
et on obtiens 58
etonobtiens58.
Dans 58,ontrouve0x64,soit0x26.onneretrancherien.
58,
1x32, 1x25 :
5832=26.
2616=10.
26,
1x16, 1x24 :
10,
1x8, 1x23 :
108=2.
2,

0 x 4,
0x4,
0x2
0 x 22.onneretrancherien.
. on ne retranche rien.
2,
2,
1x2, 1x21
: 2 2=0.
0

0 x 1 soit 0 x 20.onneretrancherien.
0x1,soit0x2
on ne retranche rien
0,
47
186estreprsentpar :10111010

La premire chose faire avant de pouvoir utiliser une


variable est de crer la bote et de lui coller une
tiquette. Cest ce quon appelle la dclaration des
variables.
rserver un emplacement mmoire ; on doit prciser
ce que lon voudra mettre dedans,

48

Typesvariables

Organisationdelammoire
Lammoire(RAM)estunimmensetableaudecases
contenant chacune 1 octet (ou byte) = 8 bits
contenantchacune1octet(oubyte)=8bits

Unevariableeststockesuruneouplusieurscasesenfonction
desontypeetdelamachine.Engnral:
Entiers
Entiers
courts (shortint):2octets
(short int): 2 octets
Entiers(int)etrelsensimpleprcision(float): 4octets
Relsendoubleprcision(double):8octets
R l
d bl
i i (d bl ) 8 t t

Intervalledevaleurspossiblesplusoumoinsgrand
49

50

Typesvariables

Notiondadresse
Ladresse
L adressed
dune
unevariablecorrespondaunumrodelapremire
variable correspond au numro de la premire
casestockantcettevariable
Ex:entierl
Ex:
entier ladresse
adresse103estenfaitstockdanslescases103,104,105et
103 est en fait stock dans les cases 103 104 105 et
106
0

0x103

0x104

0x105

0x106

0x107

Lenombredadressesdisponiblesdpenddelataillede
la mmoire mesure en Go
lammoiremesureenGo
109 octets milliardsdecases
51

52

FonctionsenC

TypedeFonctionsprdefinies enC
Extraitdestdio.h

Plusieursfonctionsprdfinies:
l
f
df
printf(),sin(),sqrt(),
printf() sin() sqrt()

Leprototypedecesfonctionssontdans
fichiersdentte(headerfile)
printf()dansstdio.h
i f() d
di h
sin()dansmath.h
sin() dans math h
53

//*************************************************************
***/
//*FORMATTEDINPUT/OUTPUTFUNCTIONS
FORMATTED INPUT/OUTPUT FUNCTIONS
*//
/*************************************************************
***//
extern int fprintf(FILE*_fp,const char*_format,...);
(
_p
char*_fmt,...);
_
)
extern int fscanf(FILE*_fp,const
extern int printf(const char*_format,...);
extern int scanf(const char*_fmt,...);
extern int sprintf(char*_string,const char*_format,...);
extern int sscanf(const char*_str,const char*_fmt,...);
extern int vfprintf(FILE*_fp,const char*_format,char*_ap);
extern int vprintf(const char*_format,char*_ap);
extern int vsprintf(char*_string,const char*_format,char*_ap);
54

Lesentressorties:printf,scanf

printf,scanf (suite)

Leprototypedecesfonctionsestdans<stdio.h>
printf permetd afficherdutextel cran

scanf
f permetd
t d entrerdutexteauclavier
t d t t
l i
fprintf etfscanf
et fscanf permettentdelireetd
permettent de lire et d crire
crire
dansdesfichiers

Ces
Cesfonctionsutilisentdesformatsqui
fonctions utilisent des formats qui
permettentdelire/criredesvariablesde
diffrentstypes:
%e,%f:rels
%le,%lf :relsdetypedouble
%d : entiers
%d:entiers
%ld :entierslongint
%s:chanedecaractres
%c : un caractre
%c:uncaractre

55

56

printf,scanf :exemples
#include<stdio.h>
i i;i
int
printf(" i = %d \n
printf(
\n",i);
,i);

Structure g
gnrale dun p
programme
g
:
/* commentaires */
#include <stdio.h>
stdio.h

/ Imprime i = valeur de i
/*
et va la ligne */

fscanf(infile,
(
, "%d ",&i);
, ); /* lit dans le fichier infile
la valeur de i, on passe
fscanf l adresse
adresse de i
c est dire &i */

Appel des fonctions de base du c


stdio.h : fichier header

#define Pi 3.14

Constante symbolique

main()

Fonction main

dbut

Dclaration des variables;

Types
yp de donnes: int,, float,, char

Initialisations;
Instructions;
}
57

ffor ( ; ;)) { . ;}}


while (condition) { ;}
if (condition) { ;}
fin

58

LES INSTRUCTIONS DE CONTROLE

ExempledeProgrammeenC
Dbutduprogramme
#include <stdio.h>

Inclusiondelabibliothque
q
contenantlafonctionprintf

void main()

Pointd'entrduprogramme

{
printf(Expression\n");
}

premire
instruction

Linstruction: if

switch
it h

dowhile

while

for
Lesinstructionsdebranchementinconditionnel :break,
continueetgoto.

Fin du programme
Finduprogramme

59

60

Exemple1

Exemple2
instructionconditionnellesimplesialorssinon
instruction conditionnelle simple si alors sinon

instructionconditionnellesimplesialors
instruction conditionnelle simple si alors

if(expression)
{
instructions1;
}sinon
{
instrutions2;
}

if(expression)
{
instructions;

exemple
int ii =5;
5;
int n;
if (i<=20)
if(i<=20)
{
n =0;
n=0;
}

exemple
l

61

int i=5;int n;
if (i< 20)
if(i<=20)
n=0;
else
n=5;

62

Exemple 3

Labouclefor

if(++i <limite)
printf(ok);
printf(ok)
estquivalent:
i=i+1
if(i< limite)
printf(ok);
i f( k)
for (expr1;expr2;expr3)
{
{
instructions(1)
...
}
instructions (2)
instructions(2)

int i,MAX=14;
/*compteur*/
for (i 0 i < MAX i++)
for(i=0;i<MAX;i++)
{
printf("Valeurdei:%i\n",i);
}

63

64

InstructionWhile
st uct o
e

InstructiondoWhile
st uct o do
e
do
Instruction 1

Instruction 2

i t ti 1
instruction1;
instruction2;;

Instruction n

#define MAX14
int i=0;
while (i<MAX)
{
printf("Valeurdei:%i\n",i);
i++;
i++
}

Condition est vraie

non
65

..;
oui

instructionn;
} while (sortie !=s);
}while(sortie!=
s );

InstructiondoWhile
st uct o do
e
#include <stdio.h>
#d fi MAX14
#define
MAX 14
int main()
()
{
int i=MAX;
i MAX
do{
printf("Valeurdei:%i\n",i);
i++;
}
while (i<MAX);
return 0;
return0;
}

C o s a bo e bouc e
Choisirlabonneboucle

67

C o s a bo e bouc e
Choisirlabonneboucle
En ralit une seule boucle suffirait suivant la
nature du pb rsoudre.
Questionsseposer
Le nombre de tours de boucle est il connu ?
OUI utiliser la boucle for
NON
Peutoncommencerl'actionavantdetesterune
situation?
OUI utiliser la boucle dowhile
NON utiliser la boucle while
69

68

You might also like