27.10.2013 Views

Algorithmique SMP - SMC 2 04/2011 Définition Définition Notation

Algorithmique SMP - SMC 2 04/2011 Définition Définition Notation

Algorithmique SMP - SMC 2 04/2011 Définition Définition Notation

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Algorithmique</strong><br />

<strong>SMP</strong> - <strong>SMC</strong> 2<br />

<strong>04</strong>/<strong>2011</strong><br />

<strong>Définition</strong> finition<br />

M HIMMI (FSR)<br />

Un algorithme doit contenir uniquement des<br />

instructions compréhensibles compr hensibles par celui qui devra<br />

l'exécuter l'ex cuter !<br />

La maîtrise ma trise de l'algorithmique requiert deux<br />

qualités: qualit s:<br />

Avoir une certaine intuition.<br />

Etre méthodique m thodique et rigoureux.<br />

FSR - M. HIMMI <strong>2011</strong> 3<br />

<strong>Définition</strong> finition<br />

Algorithme est un terme d'origine arabe, comme<br />

algèbre, alg bre, amiral, alcool, haras, chiffre, …<br />

Un algorithme, c'est une suite finie d'instructions,<br />

qui une fois exécut ex cutée e correctement, conduit à un<br />

résultat sultat donné donn<br />

Si l'algorithme est juste, le résultat r sultat est le<br />

résultat sultat voulu sinon le résultat r sultat est, disons,<br />

aléatoire al atoire …<br />

Un algorithme est une méthode m thode de résolution r solution<br />

d'un problème probl me qui utilise un nombre fini d'étapes d' tapes<br />

FSR - M. HIMMI <strong>2011</strong> 2<br />

<strong>Notation</strong><br />

Plusieurs types de notations ont représent repr senté des<br />

algorithmes:<br />

La représentation repr sentation graphique, avec des carrés, carr s,<br />

des losanges, etc. qu'on appelait des<br />

organigrammes: Quasiment abandonnée<br />

abandonn<br />

Utilisation d'un "pseudo-code". "pseudo code". Il ressemble à un<br />

langage de programmation sans les problèmes probl mes<br />

de syntaxe.<br />

Ce pseudo-code pseudo code est susceptible de varier<br />

légèrement rement d'un auteur à un autre, tout en<br />

gardant la même philosophie...<br />

FSR - M. HIMMI <strong>2011</strong> 4<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 1


Instruction<br />

Les ordinateurs ne sont capables de<br />

comprendre que quatre familles<br />

d'instructions:<br />

Problème<br />

Documentation<br />

Ok<br />

Programmation…<br />

l'affectation<br />

la lecture / écriture criture<br />

les tests<br />

les boucles<br />

FSR - M. HIMMI <strong>2011</strong> 5<br />

Cycle de production<br />

Ok<br />

Étudier le<br />

problème<br />

Tests<br />

Exemples<br />

Méthode de<br />

résolution<br />

Formulation<br />

Algorithme<br />

FSR - M. HIMMI <strong>2011</strong> 7<br />

Instruction<br />

Un algorithme se ramène ram ne toujours à la<br />

combinaison de ces quatre petites briques de<br />

base<br />

L'ordre dans lequel les instructions sont écrites crites<br />

joue un rôle essentiel dans le résultat r sultat final …<br />

La taille d'un algorithme ne conditionne pas sa<br />

complexité complexit : de longs peuvent être assez simples<br />

et de petits très tr s compliqués.<br />

compliqu s.<br />

FSR - M. HIMMI <strong>2011</strong> 6<br />

Variables<br />

Dès s qu’on qu on a besoin de stocker une information<br />

au cours d'un programme, on utilise une variable<br />

Une variable est un emplacement de mémoire m moire<br />

repéré rep par une adresse binaire. binaire<br />

Pour accéder acc der au contenu de la variable, il suffit<br />

de la désigner d signer par son adresse<br />

Il est beaucoup plus facile d'employer les<br />

étiquettes tiquettes de son choix, que de devoir manier<br />

des adresses binaires!<br />

FSR - M. HIMMI <strong>2011</strong> 8<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 2


Variables<br />

Avant d'utiliser des variables, il faut les déclarer clarer: :<br />

Réserver server une zone mémoire m moire et lui donner une<br />

étiquette. tiquette.<br />

Le Le nom de la variable ou l'étiquette l' tiquette obéit ob it à<br />

des règles: r gles:<br />

Pas Pas de signes de ponctuation ni d’espaces d espaces<br />

Un Un nom de variable commence par une<br />

lettre<br />

Préciser Pr ciser ce qu'on va mettre dedans<br />

(car de cela dépendent d pendent la taille de l'emplacement<br />

mémoire moire et le type de codage utilisé) utilis<br />

FSR - M. HIMMI <strong>2011</strong> 9<br />

Variables<br />

Type alphanumérique alphanum rique (ou chaîne cha ne de caractères)<br />

caract res)<br />

Pour stocker des caractères: caract res: (entre guillemets "<br />

")<br />

–Lettres Lettres<br />

–signes signes de ponctuation<br />

–Espaces Espaces<br />

–Chiffres Chiffres<br />

Type booléen bool en<br />

Pour stocker les valeurs logiques (VRAI et<br />

FAUX)<br />

FSR - M. HIMMI <strong>2011</strong> 11<br />

Variables<br />

Types numériques num riques classiques<br />

le type de variable choisi pour un nombre<br />

détermine: termine:<br />

les valeurs maximales et minimales des<br />

nombres pouvant être stockés stock s dans la<br />

variable<br />

la précision pr cision de ces nombres (dans le cas de<br />

nombres décimaux) d cimaux)<br />

FSR - M. HIMMI <strong>2011</strong> 10<br />

En pseudo code une déclaration d claration s'écrit: s' crit:<br />

Variable g en Numérique Num rique<br />

ou<br />

Variables PrixHT, PrixHT,<br />

TauxTVA, TauxTVA,<br />

PrixTTC en Numérique Num rique<br />

Type Numérique<br />

Byte (octet)<br />

Entier simple<br />

Entier long<br />

Réel simple<br />

Réel double<br />

Variables<br />

-32 768 à 32 767<br />

-2 147 483 648 à 2 147 483 647<br />

3,4x10 -38 à 3,40x10 38<br />

1,7x10 -308 à 1,7x10 308<br />

FSR - M. HIMMI <strong>2011</strong> 12<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 3<br />

0 à 255<br />

Plage


Variables<br />

Une variable possède poss de à un moment<br />

donné donn une valeur et une seule. A la<br />

rigueur, elle peut ne pas avoir de<br />

valeur du tout …<br />

Cette valeur ne "varie " varie" " que lorsqu'elle<br />

est l'objet d'une instruction<br />

d'affectation<br />

d'affectation.<br />

FSR - M. HIMMI <strong>2011</strong> 13<br />

L’affectation affectation<br />

On peut attribuer à une variable la valeur<br />

d'une autre variable<br />

Tutu ← Toto<br />

la valeur de Tutu est maintenant celle de<br />

Toto<br />

FSR - M. HIMMI <strong>2011</strong> 15<br />

La seule chose qu'on puisse faire avec une<br />

variable: lui attribuer une valeur… valeur<br />

L'instruction d'affectation se note: ←<br />

Ainsi : Toto ← 24<br />

L’affectation affectation<br />

Attribue la valeur 24 à la variable Toto. Toto<br />

Si type de Toto n'est pas numérique num rique cette<br />

instruction provoquera une erreur.<br />

FSR - M. HIMMI <strong>2011</strong> 14<br />

L’affectation affectation<br />

Dans une instruction d'affectation, on trouve :<br />

à gauche de la flèche, fl che, un nom de<br />

variable<br />

à droite de la flèche, fl che, une expression.<br />

Expression: Expression: ensemble de valeurs reliées reli es<br />

par des opérateurs op rateurs et équivalent quivalent à une<br />

seule valeur<br />

FSR - M. HIMMI <strong>2011</strong> 16<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 4


L’op opérateur rateur<br />

Un opérateur op rateur est un signe qui relie deux valeurs<br />

pour produire un résultat. r sultat.<br />

Les opérateurs op rateurs dépendent d pendent du type des<br />

valeurs qui sont en jeu.<br />

FSR - M. HIMMI <strong>2011</strong> 17<br />

Exercice 1<br />

Quelles seront les valeurs des variables A et B<br />

après exécution des instructions suivantes ?<br />

Variables A, B en Entier<br />

Début<br />

A ← 1<br />

B ← A + 3<br />

A ← 3<br />

Fin<br />

FSR - M. HIMMI <strong>2011</strong> 19<br />

Opérateurs Op rateurs numériques:<br />

num riques:<br />

+ : addition - : soustraction<br />

* : multiplication / : division<br />

* et / ont priorité priorit sur + et – (idem qu'en maths)<br />

Pour modifier cette priorité: priorit : utiliser des<br />

parenthèses<br />

parenth ses<br />

Opérateur Op rateur alphanumérique alphanum rique de concaténation:<br />

concat nation: &<br />

rateurs logiques: ET, OU, NON et XOR<br />

Opérateurs Op logiques:<br />

Opérateurs Op rateurs<br />

FSR - M. HIMMI <strong>2011</strong> 18<br />

Exercice 2<br />

Quelles seront les valeurs des variables A, B et<br />

C après exécution des instructions suivantes ?<br />

Variables A, B, C en Entier<br />

Début<br />

A ← 5<br />

B ← 3<br />

C ← A + B<br />

A ← 2<br />

C ← B – A<br />

Fin<br />

FSR - M. HIMMI <strong>2011</strong> 20<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 5


Exercice 3<br />

Quelles seront les valeurs des variables A et B<br />

après exécution des instructions suivantes ?<br />

Variables A, B en Entier<br />

Début<br />

A ← 5<br />

B ← A + 4<br />

A ← A + 1<br />

B ← A – 4<br />

Fin<br />

FSR - M. HIMMI <strong>2011</strong> 21<br />

Exercice 5<br />

Quelles seront les valeurs des variables A et B<br />

après exécution des instructions suivantes ?<br />

Variables A, B en Entier<br />

Début<br />

A ← 5<br />

B ← 2<br />

A ← B<br />

B ← A<br />

Fin<br />

Les deux dernières instructions permettent-elles<br />

d’échanger les deux valeurs de B et A ?<br />

Si l’on inverse les deux dernières instructions,<br />

cela change-t-il quelque chose ?<br />

FSR - M. HIMMI <strong>2011</strong> 23<br />

Exercice 4<br />

Quelles seront les valeurs des variables A, B et<br />

C après exécution des instructions suivantes ?<br />

Variables A, B, C en Entier<br />

Début<br />

A ← 3<br />

B ← 10<br />

C ← A + B<br />

B ← A + B<br />

A ← C<br />

Fin<br />

FSR - M. HIMMI <strong>2011</strong> 22<br />

Exercice 6<br />

Ecrire un algorithme permettant<br />

d’échanger les valeurs de deux<br />

variables A et B, et ce quel que soit<br />

leur contenu préalable.<br />

FSR - M. HIMMI <strong>2011</strong> 24<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 6


Exercice 7<br />

On dispose de 3 variables A, B et C.<br />

Ecrivez un algorithme transférant à B la<br />

valeur de A, à C la valeur de B et à A<br />

la valeur de C ( quels que soient les<br />

contenus préalables de ces variables ).<br />

FSR - M. HIMMI <strong>2011</strong> 25<br />

Exercice 9<br />

Que produit l’algorithme suivant ?<br />

Variables A, B en Caractères<br />

Début<br />

A ← "423"<br />

B ← "12"<br />

C ← A & B<br />

Fin<br />

FSR - M. HIMMI <strong>2011</strong> 27<br />

Exercice 8<br />

Que produit l’algorithme suivant ?<br />

Variables A, B, C en Caractères<br />

Début<br />

A ← "423"<br />

B ← "12"<br />

C ← A + B<br />

Fin<br />

FSR - M. HIMMI <strong>2011</strong> 26<br />

Lecture et Ecriture<br />

Pour permettre à la machine de dialoguer<br />

avec l'utilisateur:<br />

Lecture: rentrer des valeurs au clavier<br />

Écriture: criture: affichage à l'écran l' cran<br />

FSR - M. HIMMI <strong>2011</strong> 28<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 7


Lecture et Ecriture<br />

Instruction de lecture:<br />

Lire Titi<br />

l'exécution l'ex cution s'interrompt attendant la frappe<br />

d'une valeur au clavier, dés d s que la touche<br />

Entrée Entr e est frappée,l'ex<br />

frapp e,l'exécution cution reprend.<br />

Instruction d’é d’écriture:<br />

criture:<br />

Ecrire Toto<br />

FSR - M. HIMMI <strong>2011</strong> 29<br />

Exercice 10<br />

Que produit l’algorithme suivant ?<br />

Variables val, double numériques<br />

Début<br />

Val ← 231<br />

Double ← Val * 2<br />

Ecrire Val<br />

Ecrire Double<br />

Fin<br />

FSR - M. HIMMI <strong>2011</strong> 31<br />

Lecture et Ecriture<br />

Avant de Lire une variable, il est très tr s<br />

fortement conseillé conseill d'écrire d' crire des libellés libell s à<br />

l'écran, l' cran, afin de prévenir pr venir l'utilisateur de ce<br />

qu'il doit frapper !<br />

FSR - M. HIMMI <strong>2011</strong> 30<br />

Exercice 11<br />

Ecrire un algorithme qui demande un<br />

nombre à l’utilisateur, puis calcule et<br />

affiche le carré de ce nombre.<br />

FSR - M. HIMMI <strong>2011</strong> 32<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 8


Exercice 12<br />

Ecrire un algorithme qui lit le prix HT<br />

d’un article, le nombre d’articles et le<br />

taux de TVA, et qui fournit le prix total<br />

TTC correspondant. Faire en sorte<br />

que des libellés apparaissent<br />

clairement.<br />

FSR - M. HIMMI <strong>2011</strong> 33<br />

Tests / branchements conditionnels<br />

Booléen Bool en est une expression dont la valeur<br />

est:<br />

VRAI ou FAUX.<br />

Cela peut être:<br />

une variable de type booléen bool en<br />

une condition<br />

FSR - M. HIMMI <strong>2011</strong> 35<br />

Tests / branchements conditionnels<br />

En fonction d’une d une condition on agit<br />

différemment<br />

diff remment …<br />

Il y a 2 formes possibles pour un test: test<br />

Si booléen bool en<br />

Alors<br />

Instructions<br />

Finsi<br />

Si booléen bool en Alors<br />

Instructions 1<br />

Sinon<br />

Instructions 2<br />

Finsi<br />

FSR - M. HIMMI <strong>2011</strong> 34<br />

Tests<br />

Une condition est une expression<br />

composée compos e de trois éléments: ments:<br />

une valeur<br />

un opérateur op rateur de comparaison<br />

une autre valeur<br />

FSR - M. HIMMI <strong>2011</strong> 36<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 9


Tests<br />

Les opérateurs op rateurs de comparaison sont:<br />

égal gal à… =<br />

différent diff rent de… de<br />

<br />

strictement plus petit que… que <<br />

strictement plus grand que…> que<br />

plus petit ou égal gal à… =<br />

FSR - M. HIMMI <strong>2011</strong> 37<br />

Tests<br />

ET ou OU ? (transf transf. . de Morgan)<br />

les parenthèses parenth ses jouent un rôle<br />

fondamental<br />

différentes diff rentes possibilités, possibilit s, le choix est une<br />

affaire de style<br />

FSR - M. HIMMI <strong>2011</strong> 39<br />

Tests<br />

Conditions composées: compos es: (expression)<br />

Quatre opérateurs op rateurs logiques: ET, OU, NON,<br />

et XOR<br />

FSR - M. HIMMI <strong>2011</strong> 38<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 10<br />

ET<br />

Vrai<br />

Faux<br />

XOR<br />

Vrai<br />

Faux<br />

Vrai<br />

Vrai<br />

Faux<br />

Vrai<br />

Vrai<br />

Faux<br />

Faux<br />

Faux<br />

Faux<br />

Faux<br />

Faux<br />

Vrai<br />

Tests<br />

Tests imbriqués imbriqu<br />

Si booléen1 bool en1 Alors<br />

instructions<br />

Si booléen2 bool en2<br />

Alors<br />

instructions<br />

Sinon<br />

instructions<br />

Finsi<br />

Finsi<br />

OU<br />

Vrai<br />

Faux<br />

NON<br />

Vrai<br />

Faux<br />

Vrai<br />

Vrai<br />

Vrai<br />

Faux<br />

Vrai<br />

Faux<br />

Faux<br />

Vrai<br />

Les tests<br />

imbriqués imbriqu s sont<br />

des outils de<br />

simplification et<br />

d'optimisation<br />

des algorithmes<br />

FSR - M. HIMMI <strong>2011</strong> 40


Tests<br />

SinonSi<br />

Si booléen1 bool en1 Alors<br />

instructions<br />

SinonSi booléen2 bool en2 alors<br />

instructions<br />

sinon<br />

instructions<br />

Finsi<br />

Sinon et Si<br />

peuvent être<br />

fusionnés fusionn s en<br />

un SinonSi. SinonSi<br />

C'est C'est un seul<br />

bloc de test,<br />

terminé termin par<br />

un seul FinSi<br />

FSR - M. HIMMI <strong>2011</strong> 41<br />

Exercice 14<br />

Ecrire un algorithme qui demande un<br />

nombre à l’utilisateur, et l’informe<br />

ensuite si ce nombre est positif,<br />

négatif ou nul.<br />

FSR - M. HIMMI <strong>2011</strong> 43<br />

Exercice 13<br />

Ecrire un algorithme qui demande<br />

trois nombres à l’utilisateur et<br />

l’informe ensuite s’ils sont rangés ou<br />

non dans l’ordre croissant.<br />

FSR - M. HIMMI <strong>2011</strong> 42<br />

Exercice 15<br />

Ecrire un algorithme qui demande<br />

deux nombres à l’utilisateur et<br />

l’informe ensuite si le produit est<br />

négatif, positif ou nul. On ne doit pas<br />

calculer le produit !<br />

FSR - M. HIMMI <strong>2011</strong> 44<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 11


Exercice 16<br />

Ecrire un algorithme qui demande<br />

l’âge d’un enfant à l’utilisateur.<br />

Ensuite, il l’informe de sa catégorie:<br />

"Poussin" de 6 à 7 ans<br />

"Pupille" de 8 à 9 ans<br />

"Minime" de 10 à 11 ans<br />

"Cadet" après 12 ans<br />

Peut-on concevoir plusieurs algorithmes<br />

équivalents menant à ce résultat ?<br />

FSR - M. HIMMI <strong>2011</strong> 45<br />

Exercice 18<br />

Un magasin de photocopie facture<br />

0,50Dh les dix premières pages,<br />

0,40Dh les vingt suivantes et 0,20Dh<br />

au-delà.<br />

Ecrivez un algorithme qui demande à<br />

l’utilisateur le nombre de photocopies<br />

effectuées et qui affiche le montant à<br />

payer.<br />

FSR - M. HIMMI <strong>2011</strong> 47<br />

Exercice 17<br />

Ecrire un algorithme qui lira au clavier<br />

l’heure et les minutes, et affichera l’heure<br />

qu’il sera une minute plus tard.<br />

Si l'utilisateur tape 21 puis 32, l'algorithme<br />

doit répondre :<br />

"Dans une minute, il sera 21 heure(s) 33".<br />

On suppose que l'utilisateur entre une heure<br />

valide.<br />

FSR - M. HIMMI <strong>2011</strong> 46<br />

<strong>Algorithmique</strong> <strong>SMP</strong>-<strong>SMC</strong> S2 2010-<strong>2011</strong> 12

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!