0% ont trouvé ce document utile (0 vote)
59 vues39 pages

Algorithmes et Structures de Boucle en Programmation

Transféré par

Bertin Modossio
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
59 vues39 pages

Algorithmes et Structures de Boucle en Programmation

Transféré par

Bertin Modossio
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

variantes

Compteur <- 0;

boucle
afficher "Bonjour";
Compteur <- Compteur + 1;
si (Compteur vaut 100) sortie ;
fboucle

Compteur <- 0;

boucle
si (Compteur vaut 100) sortie ;
afficher "Bonjour";
Compteur <- Compteur + 1;
fboucle

1
variantes

tant_que (Compteur ne_vaut_pas 100)


faire
afficher "Bonjour";
Compteur <- Compteur + 1;
ffaire

jusqua (Compteur vaut 100)


faire
afficher "Bonjour";
Compteur <- Compteur + 1;
ffaire

repeter
afficher "Bonjour";
Compteur <- Compteur + 1;
jusqua (Compteur vaut 100)
2
Premier algorithme formalisé
Boucle à compteur
afficher 100 fois "Bonjour"
pour les valeurs successives d’un compteur variant de 1 à 100

faire

afficher "Bonjour" ;

faire
avantages
formaliser l'écriture
pas de déclaration
pour (i variant de 1 a 100)
faire pas d'initialisation

pas d'incrémentation
afficher "Bonjour" ;
pas de test d'arrêt
ffaire
visibles ! 3
Autre type de boucle

dite « boucle ForEach »

pour (chaque element dans collection)


faire

Traitement de l’element;

ffaire
la "collection" peut être une liste, un tableau, ...
Exemple

pour (chaque fichier dans repertoire_courant)


faire

Imprimer le fichier;

ffaire 4
types simples

identificateur
booleen
valeurs
vrai faux

opérations (opérateurs booléens) produisent un booleen


ET OU NON OUX

declarer ToBe : booleen;


declarer NotToBe : booleen;
declarer Question : booleen;
...
ToBe <- faux;
NotToBe <- NON ToBe; // vrai
Question <- ToBe OU NotToBe; // toujours vrai!
5
types simples

identificateur
booleen
valeurs
vrai faux

opérations (opérateurs booléens) produisent un booleen


ET OU NON OUX
opérations (d'identité) produisent un booleen

vaut ne_vaut_pas

si (ToBe vaut NotToBe)


afficher "n'importe quoi !";
fsi
6
types simples

identificateur
entier entier_naturel entier_positif
valeurs

sous-ensemble des entiers mathématiques


opérations (opérateurs arithmétiques) produisent un entier

+ - * /

division euclidienne (troncature)


modulo

reste de la division euclidienne

A = B * Q + R = B * (A / B) + A modulo B

afficher 25 modulo 7; // affiche 4 7


types simples

identificateur
entier entier_naturel entier_positif
valeurs

sous-ensemble des entiers mathématiques


opérations (opérateurs arithmétiques) produisent un entier

+ - * / modulo

opérations (de comparaison) produisent un booleen

< <= > >=  relation d'ordre

opérations (d'identité) produisent un booleen

vaut ne_vaut_pas
8
types simples

identificateur littéral :
reel 3.5 -21.2e12
valeurs

sous-ensemble des réels mathématiques

opérations (opérateurs arithmétiques) produisent un reel

+ - * / modulo
division réelle
opérations (de comparaison) produisent un booleen
< <= > >=  relation d'ordre

opérations (d'identité) produisent un booleen

vaut ne_vaut_pas 9
types simples

identificateur littéral : symbole entre quotes


caractere 'a' '9'
valeurs

lettres majuscules et minuscules


chiffres décimaux (digits)
ponctuation, caractères divers
caractères accentués (dépendent de la langue)

10
types simples

identificateur littéral : symbole entre quotes


caractere 'a' '9'
valeurs

opérations (de comparaison) produisent un booleen

< <= > >=  relation d'ordre


chiffres < ... < majuscules < ...
< minuscules < ... < caractères accentués

opérations (d'identité) produisent un booleen

vaut ne_vaut_pas

11
types simples

identificateur
caractere
valeurs

fonctions applicables produisent un caractere

declarer Caract : caractere;


Caract <- n_importe_quel_caractere;
...
afficher lower (Caract); // Caract en minuscule
afficher upper (Caract); // Caract en majuscule
afficher succ (Caract); // suivant de Caract
afficher pred (Caract); // précédent de Caract
12
types plus complexes

identificateur
tableau de

permet de regrouper plusieurs valeurs sous un même identificateur


désignées par leur rang
exemple

declarer TabReel : tableau de 20 reel;


TabReel désigne l'ensemble des 20 valeurs

espace mémoire réservé mais pas initialisé

13
types plus complexes

identificateur
tableau de

permet de regrouper plusieurs valeurs sous un même identificateur


désignées par leur rang
fonction applicable

afficher taille (TabReel); // affiche 20

TabReeli désigne la ième valeur de l'ensemble

TabReeli <- 3.1416;


le premier élément

i  [ 0, taille (TabReel) [

exclue intervalle semi-ouvert


14
exemple : initialiser le tableau à 0

declarer i : entier_naturel;
i <- 0;
jusqua (i vaut taille (TabReel))
faire
TabReeli <- 0.0;
i <- i + 1;
ffaire
ou

pour (i variant de 0 a taille (TabReel) - 1)


faire

TabReeli <- 0.0;


ffaire

15
declarer TabInt : tableau de entier;

pas d'espace mémoire réservé par exemple taille non encore connue

Comment faire ?

Deux autres opérations applicables

allonger TabInt de 5; // sous-entendu entier

ou

redimensionner TabInt a 5; // => on peut raccourcir un tableau

Dans les deux cas, nouveaux éléments non initialisés

16
cas particulier tableau de caractères

identificateur string littéral : suite de caractères entre guillemets

declarer Chaine : string;

Chaine <- "AEIOUY\""; AEIOUY"


chaîne vide
opérations et fonctions applicables 7 caractères

taille (Chaine)

< <= > >=  relation d'ordre (lexicographique)

vaut ne_vaut_pas
17 caractères
concaténation
+
Chaine <- Chaine + "0123456789";
17
Premier algorithme formalisé
Boucle à compteur
Boucle sur collection
Types prédéfinis simples

Types prédéfinis complexes


Procédure : exemple

18
afficher 100 fois "Bonjour"

rappel de l'algorithme

algorithme afficher_100_Bonjour
debut

pour (i variant de 1 a 100)


faire et si on veut
l'afficher 50 fois ?
afficher "Bonjour" ;
tout réécrire ?
ffaire

fin => sous-programme

19
procedure afficher_N_Fois_Bonjour

( N : in entier_naturel )
identificateur du paramètre son type
debut paramètre "donnée"
pour (i variant de 1 a 100
N )
faire

afficher "Bonjour" ;

ffaire
fin

c'est une procédure (ne renvoie rien)

20
sous-programme qu'est-ce que c'est ?

c'est un algorithme qui

 a toujours un identificateur (nommé)

 a des specs (spécifications = conditions d'utilisation)

 a éventuellement des paramètres

entre autres ses "ingrédients" :


les données sur lesquelles il travaille

la liste des paramètres est un "guichet" de communication


entre le monde extérieur et l'intérieur du sous-programme

 "produit" éventuellement un résultat

21
sous-programme à quoi ça sert ?

 à "mettre en facteur" du code


séquence d'instructions souvent utilisée

écrite une seule fois

mise sous forme d'un sous-programme

toutes les occurrences de la séquence sont remplacées par


l'appel du sous-programme

22
sous-programme à quoi ça sert ?

 à "mettre en facteur" du code


exemple : saisir un texte dans une zone de saisie , c'est gérer

- le déplacement du curseur dans la zone


(passage au caractère précédent ou suivant,
au début ou à la fin de la zone)
- l'affichage ou la suppression des caractères

- l'insertion ou le remplacement

- l'effacement du caractère précédent

23
sous-programme à quoi ça sert ?

 à "mettre en facteur" du code


exemple : saisir un texte dans une zone de saisie

intervient très souvent :

les différents éditeurs de texte


les cellules d'Excel
nombreuses boîtes de dialogues
de fichiers : open, save, save as ...
de légendes : graphiques Excel,

nombreuses zones de texte : explorer


nommer un nouveau dossier
renommer un dossier
24
sous-programme à quoi ça sert ?

 à "mettre en facteur" du code


avantages

réduire la taille du code efficience


= économie des moyens
ici ressources matérielles : mémoire/disque

être réutilisé dans du code à venir réutilisabilité

mise au point une seule fois


maintenabilité
maintenance
(modifs, améliorations, corrections)

éviter le "Copier/Coller" source d'erreurs

améliorer la lisibilité 25
sous-programme à quoi ça sert ?

 à "mettre en facteur" du code


 à écrire des algorithmes "de haut niveau"
remplacer une suite d'actions élémentaires
par une action "de haut niveau"
exemple :

afficher l'écran d'accueil


établir une connexion
saisir login/password
charger les images
interroger une base de données
...
...

26
Premier algorithme formalisé
Boucle à compteur
Boucle sur collection
Types prédéfinis simples

Types prédéfinis complexes


Procédure : exemple
Sous-programme
Procédure

27
sous-programme comment on s'en sert ?

procedure afficher_N_Fois_Bonjour
(N : in entier_naturel);

paramètre formel
C'est une déclaration (ou interface, ou profil)
précise son mode d'emploi compatibles

utilisation

declarer NbFois : entier_positif;

NbFois <- 12; indispensable car nécessaire au sous-progr.

afficher_N_Fois_Bonjour (NbFois);

28
paramètre effectif
les paramètres servent à communiquer avec l'extérieur

 "données" nécessaires au fonctionnement du sous-programme

afficher_N_Fois_Bonjour (N : in entier_naturel)

29
les paramètres servent à communiquer avec l'extérieur

 "données" nécessaires au fonctionnement du sous-programme


 "résultats" produits par le sous-programme

exemple : un sous-programme qui


reçoit une chaîne de caractères,
crée une nouvelle string dans laquelle il supprime tous les espaces,
fournit le nombre de suppressions effectuées

procedure SupprSpaces
(StrInitiale : in string,
StrFinale : out string,
NbSuppr : out entier_naturel);

30
procedure SupprSpaces
(StrInitiale : in string,

on ne sait pas quelle sera la taille de la


chaîne à transformer
=> sera de la taille du paramètre
effectif
StrFinale : out string,

on ne sait pas quelle sera la taille de la


chaîne transformée
=> supposée chaîne vide (taille nulle)

NbSuppr : out entier_naturel);


Il faudra donc impérativement que la procédure donne une taille
non nulle à StrFinale

 soit par allonger StrFinale de xxx


 soit par redimensionner StrFinale à xxx 31
les paramètres servent à communiquer avec l'extérieur

 "données" nécessaires au fonctionnement du sous-programme


 "résultats" produits par le sous-programme

procedure SupprSpaces
(StrInitiale : in string,
StrFinale : out string,
NbSuppr : out entier_naturel);

declarer LigneLue : string; // par défaut chaîne vide


declarer NewLigne : string; // par défaut chaîne vide
declarer NbSuppr : entier_naturel; // non initialisé
saisir LigneLue; // indispensable
donne la véritable taille à LigneLue
NbSuppr <- 0; // totalement inutile
SupprSpaces (LigneLue, NewLigne, NbSuppr);

NewLigne et NbSuppr utilisables en sortie du sous-progr. 32


les paramètres servent à communiquer avec l'extérieur

 "données" nécessaires au fonctionnement du sous-programme


 "résultats" produits par le sous-programme

 "données-résultats" les deux

exemple : un sous-programme qui


reçoit une chaîne de caractères,
dans laquelle il transforme toutes les minuscules en majuscules,
fournit le nombre de transformations effectuées

procedure MinToMaj
(Str : in_out string,
NbTransf : out entier_naturel);

33
Premier algorithme formalisé
Boucle à compteur
Boucle sur collection
Types prédéfinis simples

Types prédéfinis complexes


Procédure : exemple
Sous-programme
Procédure
Paramètres
Fonction - Prédicat
34
fonction c'est une procédure qui n'a qu'un seul paramètre out
et aucun paramètre in_out
elle renvoie alors le paramètre out
exemple : un sous-programme qui

reçoit un nombre réel,


calcule sa racine carrée

en procédure :
procedure SqrRoot (ValInit : in reel,
Result : out reel);
en fonction :
fonction SqrRoot (ValInit : in reel)
renvoie reel;
Exemple d'utilisation

declarer Rac_12 : reel;


Rac_12 <- SqrRoot (12.0); 35
prédicat c'est une fonction qui renvoie un booleen

Choisir un identificateur qui commence par Is


exemple : un sous-programme qui
renvoie vrai si un entier est un multiple d'un autre entier,
tous deux passés en paramètre

profil (= déclaration)
fonction IsMultiple (Entier1 : in entier,
Entier2 : in entier)
renvoie booleen;

36
prédicat c'est une fonction qui renvoie un booleen

Choisir un identificateur qui commence par Is


exemple : un sous-programme qui
renvoie vrai si un entier est un multiple d'un autre entier,
tous deux passés en paramètre
corps (= définition)
fonction IsMultiple (Entier1 : in entier,
Entier2 : in entier)
renvoie booleen
debut
si (Entier1 modulo Entier2 vaut 0)
renvoie vrai;
sinon
renvoie faux;
fsi
fin 37
prédicat c'est une fonction qui renvoie un booleen

Choisir un identificateur qui commence par Is


exemple : un sous-programme qui
renvoie vrai si un entier est un multiple d'un autre entier,
tous deux passés en paramètre

utilisation (= appel)

si (IsMultiple (Nombre, 10))


...

Parfois un identificateur qui commence par Has est plus parlant

si (HasValue (Objet))
...
38
A travailler : cours d'algorithmique/programmation

Variables - Types
Instructions de base
Schémas itératifs
Boucles "finies"
Boucles avec compteur de boucle
Boucles de parcours de collection
Sous-programmes

39

Vous aimerez peut-être aussi