L3 MIASHS-IDS
Fadila Bentayeb
Organisation du cours
Volume horaire : 21CM
Partie magistrale
Partie Travaux Dirigés
Evaluation
Partiel sur table
Tableau
Fichier
Encyclopedia universalis
Exemples
Résoudre une équation du second degré
Trouver un chemin dans un labyrinthe
Gérer un portefeuille de titres
Structures de contrôle
Saisie et affichage de données
Affectation
Conditionnelle
Boucle
Sous-programmes
Type
Exemple
a : string Type
Exercice
Donner les valeurs et les types des variables suivantes :
• x1 := 5
• x2 := 2.5
• y := vrai
• z := non(y)
• w := x1 < x2
Sélection double
Si Condition Alors Actions 1 Sinon Actions 2 Fin Si
Sélections imbriquées
Si condition 1
Sélection multiple
Selon Nom_Variable
Valeurs 1 : Actions 1
… : ….
Valeurs N : Actions N
Autre : Actions Autres
Faire Fin Selon
La boucle REPETER
Répéter Actions Jusqu’à Condition
Variable locale
Elle est utilisable uniquement dans le traitement dans lequel cette
variable a été déclarée
Les variables déclarées dans un sous-programme sont locales à ce sous-
programme
Par valeur
Par nom
Notation
Les paramètres formels passés par adresse sont précédés par le mot clé :
var
Algorithme test
Etat de la mémoire
Var
x, y, total : entier
« déclaration de la procédure somme »
resultat @(total)
Procédure somme (a, b, var resultat : entier)
Début b 5
resultat := a+b
a 2 Appel de
Fin somme
Notation
Les paramètres formels passés par valeur ne sont précédés par aucun mot
clé particulier
Algorithme test
Etat de la mémoire
Var
x, y, total : entier
« déclaration de la procédure somme »
resultat 2+5 = 7
Procédure somme (a, b, resultat : entier)
Début b 5
resultat := a+b
a 2 Appel de
Fin somme
Type Tableau
Type Enregistrement
Type Fichier
Algorithme enu_inter
Type
Jour = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)
Emploi_du_temps = tableau [1..52, lundi..dimanche] de string
Var
An_01_02 : Emploi_du_temps
Semaine : Entier
J : Jour
Début
Pour semaine:=1 à 4 Faire *emploi du temps du mois de janvier*
Pour j:= lundi à dimanche Faire
Ecrire (An_01_02[semaine, j])
Fin Pour
Fin Pour
Fin
Fadila Bentayeb L3 MIASHS-IDS Algorithmique
Tableau
Déclaration
Type T : identificateur
15.2 1 : indice
Nom_Type = tableau [Min .. Max] de Type de base
65.8 2
Exemple 256.8 3
T : Tab 2154.6 7
Début
845.7 8
Pour i := 1 à 10 Faire
789.1 9
Saisir(T[i])
Fin Pour 1025.5 10
Fin
Exemple
Etudiant = Enregistrement
Numéro, titre auteur, éditeur : String
date_de_parution : [1900..2070]
Fin
Contrairement aux tableaux les enregistrements peuvent regrouper des données de types
différents
Modes d’Accès
Séquentiel
Direct
Accès
Séquentiel
Déclaration
Type
Livre = Fichier Texte
Accès
Séquentiel
Direct
Déclaration
Type EOF (End Of File)
Nom_Fichier = Fichier de Nom_type_enregistrement
nom : String
Lecture d’un enregistrement p à partir d’un fichier f : Lire(f, p)
prénom : string
âge : [0..130] Ecriture d’un enregistrement p dans un fichier f : Ecrire(f, p)
fin
Promotion = Fichier de Etudiant Mises à jour d’un fichier (Ajout, Suppression, Modification)
Var
f : Promotion Fermeture du fichier : Fermer(f)
p : Etudiant
La fonction EOF(f) teste si le pointeur du fichier f pointe vers la fin
… du fichier
Variables dynamiques
Type P = ^ Nom_du_pointeur
Algorithme Exo1
Var i : entier
pi : ^entier
Début
i : = 10
pi := @i /* initialisation du pointeur pi */
pi ^ := 2 /* initialisation de la valeur pointée par pi */
j := pi^ + 1 /* une utilisation de la valeur pointée par pi */
Fin
Liste chaînée
Lorsque la structure contient des données et un pointeur vers la
structure suivante
Arbre binaire
Lorsque la structure contient des données, un pointeur vers une
première structure suivante, et un pointeur vers une seconde
structure
@10 Etudiant
Type Var
Pointeur = ^maillon P, R: Pointeur
Début
maillon = Enregistrement
element : string P^.element := ‘120, Dupont ’
suivant : Pointeur P^.suivant := R
Fin
Fin
P R
Création Nouveau(mus)
mus^.Info := …
mus^.Suiv := …
p_mus
Nouveau(mus)
mus^.Info : = ‘Mozart’
Mozart Nil
mus^.Suiv := p_mus
p_mus := mus
p_mus
Nouveau(mus)
mus^.Info : = ‘Bethoven’
Bethoven Mozart Nil
mus^.Suiv := p_mus
p_mus := mus
Algorithme pile
Var
p_mus, mus : Personne;
M : Chaîne[20]
Début
p_mus := NIL;
Répéter
Nouveau(mus)
Saisir(M)
mus^.Info := M
mus^.Suiv := p_mus
p_mus := mus
Jusqu'à M = "STOP"
Fin
Var
p_mus, mus : Personne
M : Chaîne[20]
Début
Nouveau(mus)
Saisir(M)
mus^.Info := M
mus^.Suiv := p_mus
p_mus := mus
Fin
Nous allons voir que ces définitions récursives s'implémentent très simplement
en informatique en utilisant des procédures ou/et des fonctions récursives
Début
Si n = 0 ou n = 1
Alors r := 1
Sinon r := Fib (n-1) + Fib (n-2) * appel récursif de la fonction
Finsi
Fib := r
Fin Fonction
Si n <= 1
Alors r := 1
Sinon r := n * Fact(n-1) * appel récursif
Fin si
Fact := r
Fin
Fin Fonction