Cours algorithmique et
structure de donnes
Dr. Sofiane ouni
http://insatien.com
2 INSAT 2010/2011 2
Plan
1. Introduction linformatique
2. Notions lmentaires des algorithmes :
dclarations, entres/sorties, calcul,
affectations
3. Les structures conditionnelles
4. Les structures itratives
5. Les tableaux
6. Les enregistrements
7. Les procdures et fonctions
8. Les fichiers
3 INSAT 2010/2011 3
Chapitre 1 :
Introduction linformatique
http://fr.wikipedia.org/wiki/Langages_de_programmation
http://www.buvetteetudiants.com/cours/administrator/html-css/langages-informatiques.php
http://www.maestro.ca/francais/ressources/livres-blancs/petite-histoire-des-langages-de-programmation
4 INSAT 2010/2011 4
1. Reprsentations des donnes
Les informations traites par un ordinateur peuvent tre de
diffrents types (texte, nombres, etc.) mais elles sont
toujours reprsentes et manipules par l'ordinateur sous
forme binaire. Toute information sera traite comme une
suite de 0 et de 1. L'unite d'information est le chiffre binaire
(0 ou 1), que l'on appelle bit (pour binary digit, chiffre
binaire).
Le codage d'une information consiste a tablir une
correspondance entre la reprsentation externe
(habituelle) de l'information (le caractre A ou le nombre
36 par exemple), et sa reprsentation interne dans la
machine, qui est une suite de bits.
5 INSAT 2010/2011 5
Changements de bases
6 INSAT 2010/2011 6
Reprsentation des entiers
7 INSAT 2010/2011 7
8 INSAT 2010/2011 8
Reprsentation des nombres
factionnaires
9 INSAT 2010/2011 9
Conversion de et vers la base 10
10 INSAT 2010/2011 10
11 INSAT 2010/2011 11
12 INSAT 2010/2011 12
Conversion bases 2, 8 et 16
13 INSAT 2010/2011 13
Reprsentation des caractres
14 INSAT 2010/2011 14
Code ASCII
15 INSAT 2010/2011 15
Codage des instructions
Exemples dinstruction
16 INSAT 2010/2011 16
17 INSAT 2010/2011 17
2. Architecture dun ordinateur
18 INSAT 2010/2011 18
Architecture dun ordinateur
19 INSAT 2010/2011 19
Mmoire centrale ou principale
20 INSAT 2010/2011 20
Processeur
C'est le moteur de l'ordinateur. Il excute les
instructions contenues dans les programmes. Il le fait
de faon plus ou moins rapide en fonction de la
frquence interne du processeur. Par exemple un
processeur 3 Ghz effectue 3 milliards d'oprations
la seconde.
21 INSAT 2010/2011 21
L'instruction par seconde (la plupart du temps million d'instructions par seconde, MIPS)
est une unit de mesure utilise en informatique.
22 INSAT 2010/2011 22
Excution dinstructions
L'unit de commande et de contrle effectue les oprations suivantes :
extraction de l'instruction excuter, analyse de cette instruction et liaison
avec l'U.A.L. (Unit Arithmtique et Logique) , recherche des donnes
traiter dans la mmoire centrale, dclenchement du traitement dans l'U.A.L.,
rangement des rsultats dans la mmoire centrale ou en mmoire auxiliaire
23 INSAT 2010/2011 23
Ouni sofiane
Carte mre
24 INSAT 2010/2011 24
http://zabile.free.fr/Montage_PC.htm
http://www.world-informatique.com/hardware/cmere/index.html
25 INSAT 2010/2011 25
3. Architecture de systme
informatique
26 INSAT 2010/2011 26
Langage machine : Le langage machine appel aussi
langage binaire, c'est avec ce langage que fonctionnent
les ordinateurs. Il consiste utiliser deux tats
(reprsents par les chiffres 0 et 1) pour coder les
informations (texte, images etc.).
Dans le langage machine, le programmeur doit entrer
chaque commande et toutes les donnes sous forme
binaire c'est dire sous forme de suite d'octets.
Le programme crit en langage volu (C, Pascal) sera
traduit en langage machine par un programme
particulier appel compilateur.
27 INSAT 2010/2011 27
Exemple de code machine :
Ajouter AX 3
Code en langage assembleur :
instructions en langage machines sont remplaces par des symboles: Mov,
Cest langage difficile, dpendant et ncessitant la connaissance
dtaille de larchitecture matriel de lordinateur (=> vers langages volus)
Langage Machine 0010 101 11
Langage assembleur ADD Ax 3
28 INSAT 2010/2011 28
29 INSAT 2010/2011 29
30 INSAT 2010/2011 30
4. langages informatiques:
Types
Langage machine
Langage assembleur (assembly language)
Langage volu
Les langages de scripts (langages interprts)
Les langages compils
Langage de balisage (langage de marquage)
Langage de requte
31 INSAT 2010/2011 31
Le langage volu est un langage qui accomplit beaucoup
pour un minimum de code et d'effort de programmation,
titre d'exemple : Pascal, Java, C, C++, C#, Visual Basic (ou
VB), Delphi, Python, Perl, PHP, JavaScript, VBscript, ASP
etc.
Bref la syntaxe des langages volus est trs simplifie, on
y trouve par exemple des mots en anglais (if, do while,
switch, integer, string) donc il est plus accessible et
comprhensible aux gens que l'assembleur lui mme plus
accessible que le langage machine.
Ces langages sont traduits en langage machine avant leur
excution par un programme compilateur, ces programmes
fonctionnent ensuite comme s'ils taient directement crits
en langage machine.
32 INSAT 2010/2011 32
Langages volus de
programmation
http://www.info.univ-angers.fr/~gh/hilapr/progs.htm
33 INSAT 2010/2011 33
Langage de balisage (langage de marquage)
Ces langages reposent sur ce qu'on appelle des balises ou
tags, ces derniers sont des tiquettes avec lesquelles on
peut tiqueter des donnes (mots, texte etc.) pour
produire un effet chez eux tant en sens (leurs donner du
sens : ceci est un paragraphe, ceci est un titre, citation
etc.) qu'en rendu visuel (italique, gras, couleur du texte
etc.), on peut tiqueter des donnes en les encadrant
par ces balises, parmi ce type de langages il y a le
HTML (HyperText Markup Language), le XML, le
SGML, XHTML (Extensible HyperText Markup
Language).
Par exemple :
Pour mettre en italique : <i> texte en italique </i> ;
34 INSAT 2010/2011 34
Langages de requtes
Ces langages qualifient le plus souvent les
langages propres aux bases de donnes, ils sont
reprsents notamment par le SQL (structured
query language) en franais langage structur de
requtes, il permet tout simplement de grer une
base de donnes par exemple l'interroger, y insrer
des donnes ou en supprimer d'autres, lui
demander de faire ressortir des donnes selon des
critres que je lui fixe.
35 INSAT 2010/2011 35
paradigme (ou style ou type) des
langages de programmations
Langages impratifs et procduraux :
comme C,
Langages objets : comme C++, Java,
Langages dclaratifs : comme Prolog,..
Langages logiques : comme Prolog,
Langages fonctionnels : comme Lisp,
36 INSAT 2010/2011 36
Langages impratifs et procduraux
langages impratifs : une instruction du langage
correspond un ensemble d'instructions du
langage
Un programme est form par plusieurs
procdure. Une procdure, appele galement
fonction, est une suite d'instructions devant tre
effectue dans un ordre prcis.
Main ( )
{
int a, b;
a=b*b;
printf( %d ,a);
}
Int carre ( int b)
{
return (b*b);
}
Main ()
{ int a;
a= carre (b);
Printf( %d ,a); }
En C
37 INSAT 2010/2011 37
Langages dclaratifs
Un langage dclaratif ne dcrit pas
comment est ralise une opration,
comme dans un langage impratif, mais
dcrit le problme lui-mme, sans
s'intresser au contexte.
Figurent parmi les langages dclaratifs
Oz, Prolog ou encore Clips.
38 INSAT 2010/2011 38
Langages logiques
Un programme logique est compos de faits et de
rgles qui sont traits par un moteur d'infrence.
Prolog fut le premier langage de ce type tre
fonctionnel sur un ordinateur.
39 INSAT 2010/2011 39
Langages fonctionnels
Dans ce paradigme, l'opration de base n'est pas
l'affectation, contrairement aux langages impratifs,
mais l'valuation de fonctions.
Par exemple avec Lisp:
(first '(7 3 10))
cela donne 7
(* (+ 2 2) 4)
cela donne 16
40 INSAT 2010/2011 40
Langages objets
Les langages objets offrent un abstraction la machine :
l'objet est une structure smantique indpendante qui
rassemble des donnes et des traitements.
En se basant sur une mthode de conception objet et
sur un langage de modlisation objet, on peut facilement
implanter un concept au moyen d'un langage de
programmation objets.
Class Television {
int poids;
int longueur_diagonale;
boolean allume;
String Chaine_memorisees;
void eteindre ();
void allumer();
void memoriser_chaines (String chaine);
};
En C++
41 INSAT 2010/2011 41
5. Introduction lalgorithmique
L'algorithmique est lensemble des rgles et des
techniques qui sont impliques dans la dfinition et la
conception d'algorithmes, c'est dire de processus
systmatiques de rsolution, par le calcul, d'un problme
permettant de dcrire les tapes vers le rsultat.
En d'autres termes, un algorithme est une suite finie et non-
ambigu doprations permettant de donner la rponse un
problme.
Un algorithme est une solution informatique indpendant du
langage de programmation
Un algorithme est une tape qui prcde limplmentation
dun programme permettant de faire un raisonnement sur la
suite dinstructions ncessaires
Le style de structure dalgorithme trait dans ce cours
sinspire des langages de programmation impratifs et
procduraux
42 INSAT 2010/2011 42
43 INSAT 2010/2011 43
44 INSAT 2010/2011 44
Chapitre 2:
Notions lmentaires des algorithmes :
dclarations, entres/sorties,
calcul, affectations
Rfrences :
support du cours de Gilles Protoy et Daniel Millot, Tlcom SudParis - 1re anne
-Support du cours MPI de faten chaieb 2009
-Support du cours de 1re anne SMP/SMC, 2007/2008, Mouad BEN MAMOUN, Moulay Driss RAHMANI, Universit Mohammed V
45 INSAT 2010/2011 45
46 INSAT 2010/2011 46
47 INSAT 2010/2011 47
48 INSAT 2010/2011 48
49 INSAT 2010/2011 49
50 INSAT 2010/2011 50
51 2007/2008 Module I2, 1re anne SMP/SMC 51
Choix des identificateurs (1)
Le choix des noms de variables est soumis quelques rgles qui
varient selon le langage, mais en gnral:
Un nom doit commencer par une lettre alphabtique
exemple valide: A1 exemple invalide: 1A
doit tre constitu uniquement de lettres, de chiffres et du
soulignement _ (Eviter les caractres de ponctuation et les espaces)
valides: SMIP2007, SMP_2007 invalides: SMP 2005,SMI-2007,SMP;2007
doit tre diffrent des mots rservs du langage (par exemple en
Java: int, float, else, switch, case, default, for, main, return, )
La longueur du nom doit tre infrieure la taille maximale spcifie
par le langage utilis
52 2007/2008 Module I2, 1re anne SMP/SMC 52
Choix des identificateurs (2)
Conseil: pour la lisibilit du code choisir des noms significatifs
qui dcrivent les donnes manipules
exemples: TotalVentes2004, Prix_TTC, Prix_HT
Remarque: en pseudo-code algorithmique, on va respecter
les rgles cites, mme si on est libre dans la
syntaxe
53 2007/2008 Module I2, 1re anne SMP/SMC 53
Types des variables
Le type dune variable dtermine lensemble des valeurs quelle peut
prendre, les types offerts par la plus part des langages sont:
Type numrique (entier ou rel)
Byte (cod sur 1octet): de 0 255
Entier court (cod sur 2 octets) : -32 768 32 767
Entier long (cod sur 4 ou 8 octets)
Rel simple prcision (cod sur 4 octets)
Rel double prcision (cod sur 8 octets)
Type logique ou boolen: deux valeurs VRAI ou FAUX
Type caractre: lettres majuscules, minuscules, chiffres, symboles,
exemples: A, a, 1, ?,
Type chane de caractre: toute suite de caractres,
exemples: " Nom, Prnom", "code postale: 1000",
54 2007/2008 Module I2, 1re anne SMP/SMC 54
Dclaration des variables
Rappel: toute variable utilise dans un programme doit avoir
fait lobjet dune dclaration pralable
En pseudo-code, on va adopter la forme suivante pour la
dclaration de variables
Variables liste d'identificateurs : type
Exemple:
Variables i, j,k : entier
x, y : rel
OK: boolen
ch1, ch2 : chane de caractres
Remarque: pour le type numrique on va se limiter aux entiers
et rels sans considrer les sous types
55 2007/2008 Module I2, 1re anne SMP/SMC 55
Linstruction daffectation
laffectation consiste attribuer une valeur une variable
(a consiste en fait remplir o modifier le contenu d'une zone mmoire)
En pseudo-code, l'affectation se note avec le signe
Var e: attribue la valeur de e la variable Var
- e peut tre une valeur, une autre variable ou une expression
- Var et e doivent tre de mme type ou de types compatibles
- laffectation ne modifie que ce qui est gauche de la flche
Ex valides: i 1 j i k i+j
x 10.3 OK FAUX ch1 "SMI"
ch2 ch1 x 4 x j
(voir la dclaration des variables dans le transparent prcdent)
non valides: i 10.3 OK "SMI" j x
56 2007/2008 Module I2, 1re anne SMP/SMC 56
Quelques remarques
Beaucoup de langages de programmation (C/C++, Java, ) utilisent
le signe gal = pour laffectation . Attention aux confusions:
l'affectation n'est pas commutative : A=B est diffrente de B=A
l'affectation est diffrente d'une quation mathmatique :
A=A+1 a un sens en langages de programmation
A+1=2 n'est pas possible en langages de programmation et n'est
pas quivalente A=1
Certains langages donnent des valeurs par dfaut aux variables
dclares. Pour viter tout problme il est prfrable d'initialiser les
variables dclares
57 2007/2008 Module I2, 1re anne SMP/SMC 57
Exercices simples sur l'affectation (1)
Donnez les valeurs des variables A, B et C aprs excution
des instructions suivantes ?
Variables A, B, C: Entier
Dbut
A 3
B 7
A B
B A+5
C A + B
C B A
Fin
58 2007/2008 Module I2, 1re anne SMP/SMC 58
Exercices simples sur l'affectation (2)
Donnez les valeurs des variables A et B aprs excution des
instructions suivantes ?
Variables A, B : Entier
Dbut
A 1
B 2
A B
B A
Fin
Les deux dernires instructions permettent-elles dchanger les
valeurs de A et B ?
59 2007/2008 Module I2, 1re anne SMP/SMC 59
Exercices simples sur l'affectation (3)
Ecrire un algorithme permettant dchanger les
valeurs de deux variables A et B
60 2007/2008 Module I2, 1re anne SMP/SMC 60
Expressions et oprateurs
Une expression peut tre une valeur, une variable ou une
opration constitue de variables relies par des oprateurs
exemples: 1, b, a*2, a+ 3*b-c,
L'valuation de l'expression fournit une valeur unique qui est le
rsultat de l'opration
Les oprateurs dpendent du type de l'opration, ils peuvent tre :
des oprateurs arithmtiques: +, -, *, /, % (modulo), ^ (puissance)
des oprateurs logiques: NON, OU, ET
des oprateurs relationnels: =, , <, >, <=, >=
des oprateurs sur les chanes: & (concatnation)
Une expression est value de gauche droite mais en tenant
compte de priorits