Académique Documents
Professionnel Documents
Culture Documents
HINT
Plan du cours
1.Introduction
2.Instructions de base
3.Logique propositionnelle
HINT
Pourquoi un algorithme?
Objectif : Obtenir de la machine qu’elle effectue
un travail à notre place
HINT
Thèmes abordés en « Algo »
Apprentissage d’un langage
Notions de base
Algorithmes de bases pour problèmes élémentaires
Structure de données
Des plus simples aux plus complexes
Cafetière Expresso
Instructions
Farine, œufs, Gâteau au chocolat
chocolat, etc …
Recette
HINT
De façon générale
Séquence d’instructions qui décrit comment
résoudre un problème particulier.
HINT
Importance de l ’algorithme
Machine
Données Obtention
structurées des résultats
TRAITEMENT
HINT
Importance de l’algorithme (2)
Un algo, traduit dans un langage compréhensible par un ordinateur
(ou langage de programmation), donne un programme, qui peut
ensuite être exécuté, pour effectuer le traitement souhaité
HINT
Premier algorithme
Algorithme ElèveAuCarré
{Cet algorithme calcule le carré du nombre que lui fournit l'utilisateur}
{préparation du traitement}
ecrire("Quel nombre voulez-vous élever au carré?")
lire(unNombre)
{présentation du résultat}
ecrire("Le carré de ", unNombre)
ecrire("c'est ", sonCarré)
fin
HINT
Parties d’un Algo
Titre de l’algo
• Précédé par le mot clé : Algorithme
Corps de l’algo
• Commençant par un mot-clé : début
• Finissant par un mot-clé: fin
HINT
Trois étapes de conception
Préparation du traitement
• Données nécessaires à la réalisation du problème
Traitement
• Résolution pas àpas, après décomposition en sous-
problèmes si nécessaire
HINT
Déclaration d’une variable
Variable <liste des identificateurs> : type
Fonction
• Instruction permettant de réserver de l’espace
mémoire pour stocker des données (dépend du type
de ces données)
Exemple
Variable val, unNombre : entier
nom, prenom : chaine de caractères
HINT
Lire une donnée
lire (<liste des noms de variables>)
Fonction
• Instruction permettant de placer en memoire les
informations fournir par l’utilisateur
Exemple
Lire (val)
Lire (prenom, nom)
Lire (unNombre)
HINT
Afficher une donnée, un résultat
ecrire (<liste des noms de variables, de
constantes ou d’expressions>)
Fonction
• Instruction permettant de visualiser les information
placées en mémoire.
Exemple
ecrire (unNombre, “est differrent de 0”)
ecrire (“la somme de ”, unNombre,” et “, val, “vaut:”,
unNombre + val)
HINT
Déclaration d’une constante
constante (<identificateur>:type)
<expression>
Fonction
• Instruction permettant de réserver de l’espace
mémoire pour stocker des données dont la valeur est
fixée pour tout l’algorithme.
Exemple
Constante (MAX: entier) 255
(DOUBLEMAX: entier) MAX*2
HINT
Lire et ecrire : exemple
Algorithme ParExemple
{Saisit un prix HT et affiche le prix TTC correspondant}
constantes(TVA : réel) ←20.6
(Titre : chaîne) ←"Résultat"
Variables prixHT, prixTTC: réels {déclarations}
début{préparation du traitement}
ecrire("Donnez-moi le prix hors taxe :")
lire(prixHT)
ecrire(Titre){présentation du résultat}
ecrire(prixHT, «eurosH.T. devient ", prixTTC,
«eurosT.T.C.")
Fin
Affichage:??? HINT
Affecter valeur à une variable
<identificateur> ←<expression> ou <constante>
ou <identificateur>
Fonction
Instruction permettant d’attribuer à la variable identifiée par l'élément placé
à gauche du symbole ←la valeur de l'élément placé à droite de ce
symbole.
Exemple
nom ←"Venus "
val ←50
val ←val ×2
Val= ??
HINT
Affectation: exemple
Constante (SEUIL : réel) ←13.25
Variable valA, valB: réel
compteur : entier
mot , tom : chaînes valA = ??
valA ← 0.56
valB = ??
valB ← valA
Compteur =??
valA ← valA*(10.5 + SEUIL)
Compteur ← 1
Mot = ??
Mot ← " bonjour " Tom = ??
Tom ← " Au revoir! «
Compteur ← compteur + 10
HINT
Simulation d’un algorithme
Algorithme CaFaitQuoi?
{Cet algorithme ……………………………………}
Variables valA, valB: réels {déclarations}
début{préparation du traitement}
ecrire("Donnez-moi deux valeurs :")
lire(valA, valB)
ecrire("Vous m’avez donné",valA, "et", valB)
valA ← valB
valB ← valA
HINT
Insctruction conditionnelle
si <expression logique>
alors instructions
[sinon instructions]
fsi
Fonction
Si l’expression logique (la condition) prend la valeur
vrai, le premier bloc d’instructions est exécuté; si elle
prend la valeur faux, le second bloc est exécuté (s’il
est présent, sinon, rien).
HINT
Instruction conditionnelle (2)
Algorithme SimpleOuDouble
{Cet algorithme saisit un entier et affiche son double si il
dépasse un certain seuil}
constantes(SEUIL : entier) ←10
Variables val: entier {déclarations}
début{préparation du traitement}
ecrire("Donnez-moi un entier :")
lire(val)
Si note > 12
alors ecrire ("Reçu avec Mention")
sinon si note > 10
alors ecrire ("Passable")
sinon ecrire ("Insuffisant")
fsi
fsi
HINT
Selection sur le choix multiple
selon <identificateur>
(liste de) valeur(s) : instructions
HINT
Instruction selon : exemple
selon abréviation
"M" :afficher( " Monsieur " )
"Mme" :afficher( " Madame " )
"Mlle" : afficher( " Mademoiselle " )
autres :afficher( " Monsieur, Madame " )
Fselon
HINT
La boucle Pour
pour <var> ←valInit à valfin [par <pas>] faire
traitement {suite d’instructions}
fpour
Fonction
Repéter une suite d’instruction un certains nombres de
fois: |(valFin –valInit):pas| + 1
HINT
La boucle Pour: exemple
Algorithme FaitTotal
{somme les nbVal données tapés par l’utilisateur}
Variables nbVal, cpt : entiers
valeur, total: réels {déclarations}
début{préparation du traitement}
ecrire("Combien de valeurs voulez-vous saisir")
lire(nbval)
Total ← 0
Pour cpt ← 1 à nbVal faire
ecrire ("Donnez une valeur")
lire (valeur)
total ← total + valeur
fPour
ecrire("le total des", nbVal, "vaut" , total)
Fin
HINT
Semantique de la boucle Pour
Implicitement, l’instruction :
• Initialise la variable de boucle
• Incrémente cette variable à chaque pas
• Vérifie que cette variable ne dépasse pas la borne
Attention
• Le traitement de la boucle ne doit pas modifier la
variable de boucle
HINT
Quand le nombre d’itération n’est pas
connu
On voudrait sommer plusieurs valeurs que
l’utilisateur lit mais on ne connait pas le nombre
exact.
HINT
La boucle Tant que
amorçage {initialisation de la (des) variable(s) de condition}
tant que <expression logique (vraie)> faire
traitement {suite d’instructions}
relance {ré-affectation de la (des) variable(s) de condition}
ftq
Fonction
Repéter une suite d’instruction tant qu’une condition est
remplie
Remarque : si la condition est fause dès le départ, le
traitement n’est jamais exécuté
HINT
La boucle Tant que: exemple
Algorithme FaitTotalAvecTantQue
{somme les nbVal données tapés par l’utilisateur, arrêt à -1}
Constante (STOP : entier) ← -1
Variables valeur, total: réels {déclarations}
début{préparation du traitement}
Total ← 0
ecrire("Donnez une valeur.",STOP, "pour finir ")
lire(valeur)
Tant que valeur ≠ STOP faire
total ← total + valeur
ecrire ("Donnez une valeur.",STOP, "pour finir ")
lire (valeur)
fTq
ecrire(" la somme des valeurs saisis :", total)
Fin
HINT
Semantique de la boucle Pour
Amorçage : initialisation
de la variable de
condition
Condition
d’exécution du
lire(valeur) traitement
Tant que valeur ≠ STOP faire
total ← total + valeur
ecrire ("Donnez une valeur.",STOP, "pour finir ")
lire (valeur)
fTq
afficher("La somme des valeurs saisies est",traitement
totalValeurs)
à
exécuter si la
relance: condition est
ré-affectation vérifiée
affichage:
des
résultats
de la variable
de condition HINT
Comparaison entre Pour et Tant que
Pour cpt ← 1 à nbVal faire
ecrire ("Donnez une valeur")
lire (valeur)
total ← total + valeur
fPour
… équivaut à
Cpt ← 0
Tant que cpt < nbVal faire
ecrire ("Donnez une valeur")
lire (valeur)
total ← total + valeur
cpt ← cpt + 1 {compte le nombre de valeurs traitées}
fTq
HINT
Comparaison entre Pour et Tantque (2)
Implicitement, l’instruction :
• Initialise un compteur
• Incrémente le compteur à chaque pas
• Vérifie que cette variable ne dépasse pas la borne
supérieure
HINT
La boucle « répéter…tant que »
repeter
ré-affectation de la (des) variable(s) de condition
traitement {suite d’instructions}
Tant que <expression logique (vraie)>
Fonction
Exécuter une suite d’instruction au moins une fois et la
repéter tant qu’une condition est remplie
début{préparation du traitement}
Repeter
ecrire ("Donnez une valeur positive non nulle")
lire (valeur)
Tant que valeur < 0
HINT
Comparaison Tant que et Repeter
Repeter
ecrire ("Donnez une valeur positive paire")
lire (valeur)
Tant que (valeur <0 ou (valeur%2) ≠ 0)
… équivaut à
ecrire ("Donnez une valeur positive paire")
lire (valeur)
Tant que (valeur <0 ou (valeur%2) ≠ 0) faire
ecrire ("Donnez une valeur positive paire")
lire (valeur)
fTq
HINT
Comparaison Tantque et repeter (2)
N
NO
Nombre BOUCLE REPETER
d’itération
s connu ?
OUI
BOUCLE POUR
HINT
Le problème d’une boucle: il faut en sortir
lire(val)
saisir des données et somme ←val
s'arrêter dès que leur tant que somme ≤ 500 faire
somme dépasse 500 lire(val)
somme ← somme + val
ftq HINT
Quand utilisez la boucle Tantque?
Structure itérative “universelle”
• N’importe quelle structure itérative peut se traduire
par la boucle Tant que
HINT
De l’importance du test de sortie de boucle
(… et donc de la logique)