Vous êtes sur la page 1sur 57

Département

Mathématiques et
Informatique

Algorithmique et
programmation langage C
ASMAE OUHMIDA
UNIVERSITÉ HASSAN II
ECOLE NORMALE SUPÉRIEURE
D’ENSEIGNEMENT TECHNIQUE
PLAN

 Introduction
 Qu’est ce qu’un algorithme ?
 Notion d’algorithmes
 Etapes d’un algorithme
 Déclaration de données
 Opérations de base
Introduction

► Pour pouvoir effectuer un traitement donné, la machine doit disposer du


programme exécutable correspondant. Ce programme doit se trouver en
mémoire et doit alors être codé en binaire (langage machine).
► Un langage de programmation permet au programmeur d'écrire son
programme suivant une grammaire qui peut être, soit celle du langage machine
même, soit une grammaire facilement interprétable par la machine ou pouvant
être traduite en langage machine au moyen d'un outil logiciel dit compilateur du
langage.
Lalgorithme qui a besoin de programme

Introduction

Il existe, en fait, trois catégories de langages :


Le langage binaire : un langage machine exprimé par des chiffres (0 ou 1). Il produit
des programmes automatiquement consommables (compréhensibles) par la machine
mais qui sont illisibles et non portables.
Les langages de bas niveau (comme l'assembleur) : ils produisent des programmes
facilement interprétables par la machine mais d'utilisation lourde pour les
programmeurs., cest un programme facilele
Les langages évolués : ils sont souples et produisent des programmes clairs et lisibles
mais ils doivent encore être compilés (traduits en langage machine par un compilateur
du langage) pour générer des programmes exécutables. Nous en citons: Fortran, Basic,
Pascal, C, C++, Visual Basic, Visual C++, Java...
QU'EST CE QU'UN ALGORITHME ?

 Algorithme : mot dérivé du nom du mathématicien al_Khwarizmi qui a vécu


au 9ème siécle, était membre d’un académie des sciences à Bagdad .
 Un algorithme prend des données en entrée, exprime un traitement
particulier et fournit des données en sortie.
 Programme : série d’instructions pouvant s’exécuter en séquence, ou en
parallèle (parallélisme matériel) qui réalise (implémente) un algorithme
QU'EST CE QU'UN ALGORITHME ?

 Le terme algorithme est employé en informatique pour décrire une


méthode de résolution de problème programmable sur machine.
 Un algorithme est une suite finie et ordonnée d'opérations
(actions) élémentaires finies (en temps et moyens). Elle est régie
par un ensemble de règles ou d'instructions de contrôle
(séquencement, sélection et itération) permettant d'aboutir à un
résultat déterminé d'un problème donné.
POURQUOI l’ALGO ?

 Pour obtenir de la «machine» qu’elle effectue un travail à notre place.


 Problème: expliquer à la «machine» comment elle doit s'y prendre.
 Besoins :
- savoir expliciter son rai
sonnement.
- savoir formaliser son raisonnement.
- concevoir (et écrire) des algorithmes:
 séquence d’instructions qui décrit comment résoudre un problème
particulier
Exemple

 Pour planter et arroser un ensemble d'arbres, on peut procéder de la


manière suivante: planter l'ensemble d'arbres et les arroser tous à la fin.
Algorithme de plantation et d'arrosage de plusieurs arbres
1- Creuser un trou.
2- Placer un arbre dans le trou.
3- Reboucher le trou.
4- S'il existe encore des arbres exécuter les actions 1, 2, 3 et 4.
Sinon exécuter les actions suivantes.
5- Arroser les arbres.
Exemple

 L'algorithme correspondant indique un ensemble d'opérations (1, 2, 3 et


4) à répéter un certain nombre de fois (règle d'itération) et l'opération ou
les opérations (5 ou 1, 2, 3 et 4) à exécuter selon qu'il reste ou non des
arbres à planter (règle de sélection).
Remarque
Pour résoudre le problème précédent, on peut procéder autrement :
planter et arroser arbre par arbre. On conclut alors qu'à un problème donné
pourraient correspondre plusieurs algorithmes.
LES PROBLÈMES FONDAMENTAUX
EN ALGORITHMIQUE

 Complexité
• En combien de temps un algorithme va -t-il atteindre le résultat escompté?
• De quel espace a-t-il besoin?
 Calculabilité
• Existe-t-il des tâches pour lesquelles il n'existe aucun algorithme ?
• Etant donnée une tâche, peut-on dire s'il existe un algorithme qui la résolve ?
 Correction
• Peut-on être sûr qu'un algorithme réponde au problème pour lequel il a été
conçu ?
EXEMPLE DE LANGAGE ALGORITHMIQUE
ETAPES D’UN ALGORITHME

 Préparation du traitement
• données nécessaires à la résolution du problème
 Traitement
• résolution pas à pas,
• après décomposition en sous-problèmes si nécessaire
 Edition des résultats
• impression à l’écran,
• dans un fichier, etc.
LANGAGE ALGORITHMIQUE

Algorithme NomAlgorithme Algorithme Bonjour


{ ceci est un commentaire} {il dit juste bonjour mais … en anglais !
Début Début
... Actions afficher('Hello world !!!')
Fin ALaLigne
Fin
 Il faut avoir une écriture rigoureuse
 Il faut avoir une écriture soignée : respecter l’indentation
 Il est nécessaire de commenter les algorithmes
 Il existe plusieurs solutions algorithmiques à un problème posé
Il faut rechercher l’efficacité de ce que l’on écrit
DÉCLARATION DES DONNÉES

 Variable <nom de donnée>: type


 Instruction permettant de réserver de l’espace mémoire pour
stocker des données
 Dépendant du type des données : entiers, réels, caractères, etc.)
Exemples :
Variables val, unNombre : entiers
nom, prénom : chaînes de caractères
DÉCLARATION DES DONNÉES

 Constante <nom de donnée>: type  valeur ou expression


 Instruction permettant de réserver de l’espace mémoire pour
stocker une constante dont la valeur ne varie pas.
Exemples :
Constante MAX : entier  10
DEUXFOISMAX : entier  MAX x 2
PHASE D’ANALYSE

 Consiste à extraire de l’énoncé du problème des éléments de


modélisation
 Technique : Distinguer en soulignant de différentes couleurs
quelles sont
- Quel est le but du programme (traitement à réaliser)
- Données en entrée du problème
- Où vont se situer les résultats en sortie
EXEMPLE D’ÉNONCÉ D’UN PROBLÈME

Exemple
On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la
TVA ainsi que le prix TTC
Le montant TTC dépend :
- Du prix HT
- Du taux de TVA de 20,6
EXEMPLE D’ÉNONCÉ D’UN PROBLÈME

On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la


TVA ainsi que le prix TTC
Le montant TTC dépend de :
- Du prix HT
- Du taux de TVA de 20,6

« Traitement à réaliser »
EXEMPLE D’ÉNONCÉ D’UN PROBLÈME

On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la


TVA ainsi que le prix TTC
Le montant TTC dépend de :
- Du prix HT
- Du taux de TVA de 20,6

« Données en entrée »
Exemple d’énoncé d’un problème

On souhaite calculer et afficher , à partir d’un prix hors taxe saisi, la


TVA ainsi que le prix TTC
Le montant TTC dépend de :
- Du prix HT
- Du taux de TVA de 20,6

« Données en sortie »
ALGORITHME TVA
Algorithme CalculTVA

{Saisit un prix HT et affiche le prix TTC correspondant}


Constantes (TVA : réel)  20.6
(Titre : chaîne)  "Résultat"
Variables prixHT : réel
Variable prixTTC, montantTVA : réels {déclarations}

Début {préparation du traitement}


afficher("Donnez-moi le prix hors taxe :")
saisir(prixHT)

prixTTC  prixHT* (1+TVA/100) {calcul du prix TTC}


montantTVA  prixTTC- prixHT

afficher(Titre) {présentation du résultat}


afficher(prixHT, «euros H.T. + TVA ",TVA, « devient » ,prixTTC, «eurosT.T.C.")
Fin
Opérations de base

 L’affectation
 La lecture
 L’écriture
 Instructions de contrôle
L’affectation

Variable  expression

 L'affectation, notée par le symbole  , est l'opération qui évalue


une expression (constante ou une expression arithmétique ou
logique) et attribue la valeur obtenue à une variable.
L’affectation

 Exemple d’affectation on affecte une zone mémoire a un variable


donner
a  10 a reçoit la constante 10
a (a*b)+c a reçoit le résultat de (a*b)+c
d  'm' d reçoit la lettre m
La lecture

Lire variable

 saisir
 Cette opération permet d'attribuer à une variable une valeur
introduite au moyen d'un organe d'entrée (généralement le clavier).
La lecture

Exemple de lecture affichage


Lire a On demande à l'utilisateur d'introduire une valeur pour a
Lire (a,b,c) On demande à l'utilisateur d'introduire 3 valeurs pour a, b et
c respectivement
Remarque
 L'organe d'entrée est assimilé à un ruban composé d'une suite de cases
chacune peut contenir un caractère ou un chiffre.
 C'est la valeur qui se trouve à la tête du ruban qui sera attribuée à la
variable à lire. Une fois, la lecture est terminée, elle est supprimée du ruban.
L’écriture

Ecrire expression

 Elle communique une valeur donnée ou un résultat d'une expression à


l'organe de sortie
 Exemple d’écriture :
Ecrire 'bonjour' Affiche le message bonjour (constante)
Ecrire 12 Affiche la valeur 12
Ecrire a,b,c Affiche les valeurs de a, b et c
Ecrire a+b Affiche la valeur de a+b
Instructions de contrôle

 Instructions sélectives
a) Instruction Si
Si condition alors
instruction(s) 1
Sinon
instruction(s) 2
FinSi
Instructions de contrôle

 Elle indique le traitement à faire selon qu’une condition


(expression logique) donnée est satisfaite ou non.
 Il est possible d’omettre début et fin si le bloc d’instructions à
exécuter est constitué d’une seule instruction.
Instructions sélectives

Remarques
1- Une instruction de contrôle peut se réduire à :
Si condition alors
instruction(s)
FinSi
Instructions sélectives

2- On peut avoir plusieurs si imbriqués comme:


Si condition1 alors
Si condition2 alors
Si condition3 alors
<instruction(s) 1>
Sinon
<instruction(s) 2>
FinSi
Sinon
<instruction(s) 3>
FinSi
Sinon
<instruction(s) 4>
FinSi
Instructions sélectives

Exemple
Calculer la taxe sur le chiffre d'affaire (CA) sachant qu'elle est de :
10% si le CA<5000DH
20% si le CA >=5000DH
lire CA
Si CA<5000 alors
TaxeCA*10%
Sinon
TaxeCA*20%
FinSi
Ecrire Taxe
Instructions sélectives

 Exercice
Vérifier si un agent a droit de bénéficier du crédit de logement ou non
selon ses années d’ancienneté et sa note d’appréciation.
lire (ancienneté, note)
Si ancienneté < 5 alors
Si ancienneté=4 et note≥16 alors
écrire ('L’agent a droit de bénéficier du crédit')
Sinon
Si ancienneté=3 et note≥18 alors
écrire ('L’agent a droit de bénéficier du crédit')
Sinon
écrire ('L’agent n’a pas droit de bénéficier du crédit')
FinSi
FinSi
Sinon
Si note≥13 alors
écrire ('L’agent a droit de bénéficier du crédit')
Sinon
écrire ('L’agent n’a pas droit de bénéficier du crédit')
FinSi
FinSi
Instructions sélectives

b) Instruction Selon
Elle indique le traitement à faire selon la valeur d'une variable.
Selon variable
valeur1 : instruction(s) 1
valeur2 : instruction(s) 2
...
valeurn : instruction(s) n
Sinon instruction(s) m
FinSelon
Instructions sélectives

 Exemple
Vérifier et Afficher si un caractère saisi est une voyelle ou consonne.
lire c
Selon c
'a' : écrire ('le caractère est une voyelle')
'e' : écrire ('le caractère est une voyelle')
'i' : écrire ('le caractère est une voyelle')
'o' : écrire ('le caractère est une voyelle')
'u' : écrire ('le caractère est une voyelle')
'y' : écrire ('le caractère est une voyelle')
sinon écrire ('le caractère est une consonne')
FinSelon
Instructions de contrôle

 Instructions itératives
a) Instruction Pour
Pour compteur  valeur1 à valeurn faire
Instruction(s)
FinPour
 Elle permet de répéter un traitement un nombre de fois précis et
connu en utilisant un compteur (variable à incrémenter d'une itération
à l'autre).
Instructions de contrôle

 Exemple
Afficher la somme des entiers compris entre 0 et une valeur n saisie au clavier
(n≥0).
lire n
s0
Pour i1 à n faire
ss+i
FinPour
écrire s
Instructions de contrôle

b) Instruction Tantque
Tantque condition faire
instruction(s)
FinTantque
Elle permet de répéter un traitement tant qu'une condition est
satisfaite.
Instructions de contrôle

 Calculer la somme s des entiers compris entre 0 et un nombre n


saisi au clavier (on suppose que n≥0).
lire n
s0
Tantque n > 0 faire
ss+n
nn-1
FinTantque
écrire s
Instructions de contrôle

Remarque :

 Dans le cas d'utilisation de l'instruction tant que, si la condition est


fausse au départ, le bloc d'instructions ne sera pas du tout
exécuté (Dans l'exemple ci-dessus, c'est le cas où n0 au départ).
Comparaison de « POUR » et « TANT QUE »

pour cpt  1à nbVal faire


afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs  totalValeurs + valeur {cumul}
• Est équivalent à
cpt  0
tant que cpt <nbVal faire
afficher("Donnez une valeur :")
saisir(valeur)
totalValeurs  totalValeurs + valeur {cumul}
cpt  cpt + 1 {compte le nombre de valeurs traitées}
Comparaison de « POUR » et « TANT QUE »

 Implicitement, l’instruction pour :


- initialise un compteur
- incrémente le compteur à chaque pas
- vérifie que le compteur ne dépasse pas la borne supérieure
 Explicitement, l’instruction tant que doit
- initialiser un compteur {amorçage}
- incrémenter le compteur à chaque pas {relance}
- vérifier que le compteur ne dépasse pas la borne supérieure {test de
boucle}
Quand choisir « POUR » ou « TANT QUE » ?

 Nombre d’itération connu à l’avance : POUR


- Parcours de tableaux
- Test sur un nombre donné de valeurs
 Boucle s’arrête sur événement particulier : TANT QUE
- Itération avec arrêt décidé par saisie utilisateur
Instructions de contrôle

b) Instruction Faire Tantque


Faire
instruction(s)
Tant que condition
 Elle permet de répéter un traitement tant qu'une condition est
satisfaite.
Exemple:

Calculer la somme s des entiers compris entre 0 et un nombre n saisi au


clavier.

lire n
s0
i 0
Faire
Début
ss+i
ii+1
Fin
Tant que i≤n
écrire s
Instructions de contrôle

Remarque :

 Dans le cas d'utilisation de l'instruction Faire Tant que, le bloc


d'instructions est exécuté au moins une fois quelle que soit la
condition.
 Reprenons l’exemple précédent sous une autre forme (On initialise
cette fois-ci i à 1) :
Instructions de contrôle

lire n
Dans ce cas, si on suppose que n est égal à 0,
s0
i 1 le programme affichera 1 comme somme. Ce

Faire qui est incorrect. Par ailleurs, l’addition de i à


Début la somme ne doit être effectuée que si i est
ss+i inférieur ou égal à n, condition qui n’est
ii+1 vérifiée avec l’usage de l’instruction « Faire
Fin Tant que » que plus tard. Alors qu’on
Tant que i≤n
commence la boucle avec i égal à 1 qui est
Ecrire s
strictement supérieur à n, 0 dans cet exemple.
Instructions de contrôle

d) Instruction Répéter jusqu’à

Répéter
Instructions
Jusqu’à Condition
Instructions de contrôle

 Exemple :
Dans un cinéma, on désire calculer la moyenne d’âges de personnes
s’intéressant à voir un film particulier.
Pour finir, l’utilisateur doit répondre par ‘N’ à la question posée par
l’algorithme: ‘Encore une personne(O/N)?’
Et on doit afficher la moyenne d’âges des personnes à l’écran.
Réponse:

Algorithme Moyenne_ages;
Var
Age,S_age, NP : entiers
M_age : réel
rep : caractère
Début
S_age0
NP0
Répéter
Lire(age)
NPNP+1;
S_ageS_age+age;
Ecrire(‘Encore une autre personne(O/N)’)
Lire(rep)
Jusqu’à rep = ‘N’
M_ageS_age/NP
Ecrire(M_age)
Fin
Le type booléan
Il correspond à l’ensemble de deux état logiques (VRAI (1),FAUX(0) ) auxquels
on peut appliquer les operateurs (ET,OU,NON)

A NON (A) A B A OU b A ET b

0 1 0 0 0 0

1 0 0 1 1 0
1 0 1 0
1 1 1 1

Déclaration algorithmique : a, b : booléen


Le type numérique:
Il correspond à l’ensemble Opérateur Représentation Exemple
arithmétique algorithmique
de définition : Z pour les
entiers (positif et négatif) Addition + R=a+b
et R pour les réels. Soustraction - R=a-b
Les opérations les plus Multiplication * R=a*b
fréquente sur ces valeurs Puissance ^ 7 ^ 2 = 49
sont: Division / R=a/b (b≠0)
Division entière div 7 div 2 = 3
Modulo mod 7 mod 2 = 1
Déclaration (le reste de la (7 div 2 = 3 et
algorithmique : division entière) reste 1)
n1, n2 : entier
x1, x2 :réel
Le type caractère
Il correspond à l’ensemble des chaines de caractère constitue de caractères de
différent types:
• des chiffres de ”0” à ”9”,
• des lettres (minuscules et majuscules) ,
• des caractères spéciaux
(”*”, ”/”, ”{”, ”$”, ”#”, ”%” …).
Un caractère sera toujours noté entre
des guillemets. Le caractère espace (blanc)
sera noté ” ”.

La table ASCII code tous les 256


Caractères usuels
Déclaration algorithmique : c1, c2 : caractère
Opérateurs relationnels
On peut appliquer entre deux objets de même type une opération de relation
dont le résultat est un booléen

Priorité Opération Symbole


1 > Strictement supérieure à
2 >= Strictement ou égale à
3 < Strictement inférieure à
4 <= Inférieur ou égale à
5 = Egale à
6 # ou <> Différent de
Exercices

 Ecrire un algorithme qui demande un nombre de départ, et qui ensuite affiche les dix nombres suivants. Par exemple, si l'utilisateur entre le
nombre 17, le programme affichera les nombres de 18 à 27
 Variables N, i en Entier
Debut
Ecrire "Entrez un nombre : "
Lire N
Stop ← N+10
Ecrire "Les 10 nombres suivants sont : "
TantQue N < Stop
   N ← N+1
   Ecrire N
FinTantQue
Fin
 Ecrire un algorithme qui demande un nombre de départ, et qui calcule sa factorielle. NB : la factorielle de 8, notée 8 !, vaut 1 x 2 x 3 x 4 x 5 x 6 x
7x8
 Variables N, i, F en Entier
Debut
Ecrire "Entrez un nombre : "
Lire N
F←1
Pour i ← 2 à N
 F←F*i
i Suivant
Ecrire "La factorielle est : ", F
Fin