Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pour
Un
Lordinateur
Dfinition etobjectif
et objectif d
dun
unalgorithme
algorithme
Dfinition etobjectif
et objectif d
dun
unalgorithme
algorithme
Un algorithme,
algorithme cest une suite dinstructions,
dinstructions qui une fois
excute correctement, conduit un rsultat donn
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++
LeLanguageC
g g
LeLanguageC
g g
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
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
/ 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
*/
.;;
: 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
C d
Code
objet
Code
executable
28
27
TypesdevariablesmanipulesenC
yp
p
Commentcrerunprogramme excutable ?
Typeslmentaires
T
l
t i
Typesvolus
T
l
Typesdrivs
Types drivs
29
30
Types lmentaires
Tableaux
bl
Fonctions
Pointeurs
Structures
Unions
32
LESOPERATEURSETLESEXPRESSIONS
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))
SIGNIFICATION
oppos
Identit
Infrieur
Infrieur ou gal
Infrieurougal
>
Suprieur
>=
Suprieurougal
33
34
exemples
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 :
Cette possibilit
b l concerne tous les
l
oprateurs
b
binaires
arithmtiques et de manipulation de bits. nomms oprateurs
daffectation largie :
+
+=
*
*=
/
/=
%
%=
I ^=
I=
^ &=
& <<=
<<
38
>>
>>=
39
Pourquoilesordinateurssontils binaires ?
40
basedcimale.
Lorsqueoncrit8439, ?
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
42
basebinaire
basebinaire
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.
Enutilisant4octets,
En
utilisant 4 octets
onpasse256x256x256==232 =16777216possibilits.
=128+64+16+2+1=211
45
46
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
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 */
#define Pi 3.14
Constante symbolique
main()
Fonction main
dbut
Types
yp de donnes: int,, float,, char
Initialisations;
Instructions;
}
57
58
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++
}
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