Cours d - PowerPoint PPT Presentation

About This Presentation
Title:

Cours d

Description:

Langages informatiques Un langage informatique est un outil permettant de donner des ordres (instructions) ... En effet, une telle action : ... – PowerPoint PPT presentation

Number of Views:103
Avg rating:3.0/5.0
Slides: 190
Provided by: BENM90
Category:

less

Transcript and Presenter's Notes

Title: Cours d


1
Cours dalgorithmique
1ère année SMI 2006/2007, Semestre 2 Ce que
lon conçoit bien sénonce clairement et les mots
pour le dire arrivent aisément N.
Boileau
2
Objectif et plan du cours
  • Objectif
  • Apprendre les concepts de base de l'algorithmique
    et de la programmation
  • Etre capable de mettre en oeuvre ces concepts
    pour analyser des problèmes simples et écrire les
    programmes correspondants
  • Plan
  • Généralités (matériel dun ordinateur, systèmes
    dexploitation, langages de programmation, )
  • Algorithmique (affectation, instructions
    conditionnelles, instructions itératives,
    fonctions, procédures, )
  • MAPLE (un outil de programmation)

3
Système Informatique?
  • Techniques du traitement automatique de
    linformation au moyen des ordinateurs
  • Système informatique ordinateur périphériques
  • Éléments dun système informatique

4
Matériel Principaux éléments dun PC
  • Unité centrale (le boîtier) Processeur ou CPU
    (Central Processing Unit)
  • Mémoire centrale
  • Unité de calcul
  • Unité de commande
  • Périphériques
  • Moniteur (l'écran), clavier, souris
  • Modem, imprimante, scanner,

5
Quest-ce quun programme dordinateur?
  • Allumez un ordinateur, vous nen tirerez rien!!
  • Pour le faire marcher il faut lui fournir un
    programme
  • Ordinateur matériel programme(s)
  • Un programme est une suite dinstructions
    dordinateur
  • Une instruction est un ordre compris par
    lordinateur et qui lui fait exécuté une action,
    c-a-d une modification de son environnement

6
Les catégories dordres
  • les ordinateurs, quels quils soient, ne sont
    fondamentalement capables de comprendre que
    quatre catégories d'ordres (en programmation, on
    n'emploiera pas le terme d'ordre, mais plutôt
    celui d'instructions). Ces quatre familles
    d'instructions sont 
  • laffectation de variables
  • la lecture / écriture
  • les tests
  • les boucles

7
Actions dun ordinateur Exemple
  • Attendre quun nombre soit tapé au clavier
  • Sortir à lécran le nombre entré
  • Attendre quun nombre soit tapé au clavier
  • Sortir à lécran le nombre entré
  • Additionner les deux nombres entrés
  • Sortir à lécran le résultat de laddition
  • Ces lignes forment un programme dordinateur

8
Quest ce quun système dexploitation?
  • Ensemble de programmes qui gèrent le matériel et
    contrôlent les applications
  • Gestion des périphériques (affichage à l'écran,
    lecture du clavier, pilotage dune imprimante, )
  • Gestion des utilisateurs et de leurs données
    (comptes, partage des ressources, gestion des
    fichiers et répertoires, )
  • Interface avec lutilisateur (textuelle ou
    graphique) Interprétation des commandes
  • Contrôle des programmes (découpage en taches,
    partage du temps processeur, )

9
Langages informatiques
  • Un langage informatique est un outil permettant
    de donner des ordres (instructions) à la machine
  • A chaque instruction correspond une action du
    processeur
  • Intérêt écrire des programmes (suite
    consécutive dinstructions) déstinés à effectuer
    une tache donnée
  • Exemple un programme de gestion de comptes
    bancaires
  • Contrainte être compréhensible par la machine

10
Langage machine
  • Langage binaire linformation est exprimée et
    manipulée sous forme dune suite de bits
  • Un bit (binary digit) 0 ou 1 (2 états
    électriques)
  • Une combinaison de 8 bits 1 Octet ?
    possibilités qui permettent de coder tous les
    caractères alphabétiques, numériques, et symboles
    tels que ?,,,
  • Le code ASCII (American Standard Code for
    Information Interchange) donne les
    correspondances entre les caractères
    alphanumériques et leurs représentation binaire,
    Ex. A 01000001, ?00111111
  • Les opérations logiques et arithmétiques de base
    (addition, multiplication, ) sont effectuées en
    binaire

11
L'assembleur
  • Problème le langage machine est difficile à
    comprendre par l'humain
  • Idée trouver un langage compréhensible par
    l'homme qui sera ensuite converti en langage
    machine
  • Assembleur (1er langage) exprimer les
    instructions élémentaires de façon symbolique
  • déjà plus accessible que le langage machine
  • - dépend du type de la machine (nest pas
    portable)
  • - pas assez efficace pour développer des
    applications complexes
  • Apparition des langages évolués

12
Langages haut niveau
  • Intérêts multiples pour le haut niveau
  • proche du langage humain anglais
    (compréhensible)
  • permet une plus grande portabilité (indépendant
    du matériel)
  • Manipulation de données et dexpressions
    complexes (réels, objets, ab/c, )
  • Nécessité dun traducteur (compilateur/interpréteu
    r),
  • exécution plus ou moins lente selon le
    traducteur

13
Compilateur/interpréteur
  • Compilateur traduire le programme entier une
    fois pour toutes
  • plus rapide à lexécution
  • sécurité du code source
  • - il faut recompiler à chaque modification
  • Interpréteur traduire au fur et à mesure les
    instructions du programme à chaque exécution
  • exécution instantanée appréciable pour les
    débutants
  • - exécution lente par rapport à la compilation

14
Langages de programmation
  • Deux types de langages
  • Langages procéduraux sont à base de procédures.
    Une procédure est une portion de programme écrit
    en langage de haut niveau qui accomplit une tâche
    spécifique nécessaire au programme.
  • Langages orientés objets sont des langages non
    procéduraux dans lesquels les éléments du
    programme sont considérés comme des objets qui
    peuvent s'échanger des messages.
  • Choix dun langage?

15
Principaux Langages de programmation
Pascal Blaise PASCAL, mathématicien et inventeur de la première machine à calculer 1971 Langage compilé et structuré, dérivé d'ALGOL. c'est un langage de développement standard pour les micro-ordinateurs.
C C'est une version améliorée du langage de programmation B du Bell Laboratory, créé en 1972 Langage de programmation structuré et compilé, très largement employé car ses programmes peuvent facilement se transférer d'un type d'ordinateur à un autre.
Maple Nasa 1980 de SUN couvrir tous les domaines Dapplication formel
Java Microsystems 1990 Ce langage connaît un succès qu'aucun autre langage n'avait encore connu.
16
Etapes de réalisation dun programme
La réalisation de programmes passe par lécriture
dalgorithmes Doù
lintérêt de lAlgorithmique
17
Pourquoi apprendre lalgorithmique pour apprendre
à programmer ?
  • Un algorithme est une description complète et
    détaillée des actions à effectuer et de leur
    séquencement pour arriver à un résultat donné
  • Intérêt séparation analyse/codage (pas de
    préoccupation de syntaxe) lalgorithmique exprime
    les instructions résolvant un problème donné
    indépendamment des particularités de tel ou tel
    langage.
  • Qualités exact (fournit le résultat souhaité),
    efficace (temps dexécution, mémoire occupée),
    clair (compréhensible), général (traite le plus
    grand nombre de cas possibles),
  • Pour prendre une image, si un programme était une
    dissertation, lalgorithmique serait le plan, une
    fois mis de côté la rédaction et lorthographe.
    Mieux faire dabord le plan et rédiger ensuite
    que linverse

18
Représentation dun algorithme
  • Historiquement, deux façons pour représenter un
    algorithme
  • LOrganigramme représentation graphique avec des
    symboles (carrés, losanges, etc.)
  • offre une vue densemble de lalgorithme
  • représentation quasiment abandonnée aujourdhui
  • Le pseudo-code représentation textuelle avec une
    série de conventions ressemblant à un langage de
    programmation (sans les problèmes de syntaxe)
  • plus pratique pour écrire un algorithme
  • représentation largement utilisée

19
Exemple de pseudo code
  • problème du tri
  • Entrée une séquence de n nombres (a1,
    ,an)
  • Sortie une permutation (a1 an) de la
    séquence dentrée a1lta2lt.ltan
  • Exemple (314159264158) ?
    (263141415859)

20
Algorithmique
  • Notions et instructions de base

21
Les catégories dordres
  • les ordinateurs, quels quils soient, ne sont
    fondamentalement capables de comprendre que
    quatre catégories d'ordres (en programmation, on
    n'emploiera pas le terme d'ordre, mais plutôt
    celui d'instructions). Ces quatre familles
    d'instructions sont 
  • Les variables et leurs affectation
  • la lecture / écriture
  • les tests
  • les boucles

22
Notions Fondamentales (1/2)
  • Karim possède 3 seaux un seau en plastique
    dune contenance de 10 litres, un seau en bois
    dune contenance de 7 litres et un seau en fer
    dune contenance de 9 litres.
  • 10h00 karim vide ses 3 seaux
  • 10h05 karim va rendre visite a Nabil, celui-ci
    met 6 litres dans le seau en bois de Karim
  • 10h10 karim transverse le contenu de son seau
    en bois dans le seau en fer
  • 10h15 karim revient vers nabil remplir à ras
    bord son seau en plastique
  • 10h20 karim déverse la moitié de son seau en
    plastique à légout
  • 10h25 karim transvase le contenu de son seau en
    plastique dans celui en bois
  • 10h30 karim transvase 2 litres de son seau en
    bois dans celui en fer
  • 10h35 karim informe Asmae du nombre de litres
    contenu dans ses seaux en plastique, en bois, en
    fer.
  • Quelles sont les quantités des trois seaux que
    Asmae a reçues?

23
Notions Fondamentales (2/2)
  • Notion dalgorithme si les huis phrases sont
    bien exécutée par Karim, alors lhistoire est un
    algorithme
  • Notion dinstruction chacune de huis phrases
    est une instruction (un ordre)
  • Notion de valeur 0, 3, 5, 6, 8, 10
  • Notion de mémoire elle est matérialisée par les
    seaux qui  mémorisent  les quantités de liquide
  • Notion de variable une variable est un
    emplacement mémoire, ici on a trois variables (le
    seau en plastique, le seau en bois et le seau en
    fer)
  • Notion denvironnement cest lensemble des
    objet, informations, personnes qui on une
    existence hors de lhistoire mais qui
    interviennent dans son déroulement.
  • Notion des valeurs dentrée et de sortie cest
    les valeurs que le processeur reçoit de
    lenvironnement et celles quil donne à
    lenvironnement durant lexucution. Valeurs en
    entrée 6, 10 Valeurs en sortie 0, 3,
    8

24
Notion de variable
  • Dans les langages de programmation une variable
    sert à stocker la valeur dune donnée
  • Une variable désigne en fait un emplacement
    mémoire dont
  • le contenu peut changer au cours dun programme
    (doù le nom variable)
  • Règle Les variables doivent être déclarées
    avant dêtre utilisées, elle doivent être
    caractérisées par
  • un nom (Identificateur)
  • un type (entier, réel, caractère, chaîne de
    caractères, )

25
Choix des identificateurs (1)
  • Le choix des noms de variables est soumis à
    quelques règles qui varient selon le langage,
    mais en général
  • Un nom doit commencer par une lettre alphabétique
    exemple valide
    A1 exemple invalide 1A
  • doit être constitué uniquement de lettres, de
    chiffres et du soulignement _ (Eviter les
    caractères de ponctuation et les espaces)
    valides SMI2007, SMI_2007 invalides SMI
    2007, SMI-2007, SMI2007
  • doit être différent des mots réservés du langage
    (par exemple en Java int, float, else, switch,
    case, default, for, main, return, )
  • La longueur du nom doit être inférieure à la
    taille maximale spécifiée par le langage utilisé

26
Choix des identificateurs (2)
  • Conseil pour la lisibilité du code choisir des
    noms significatifs qui décrivent les données
    manipulées
  • exemples TotalVentes2006, Prix_TTC, Prix_HT
  • Remarque en pseudo-code algorithmique, on va
    respecter les règles citées, même si on
    est libre dans la syntaxe

27
Types des variables
  • Le type dune variable détermine lensemble des
    valeurs quelle peut prendre, les types offerts
    par la plus part des langages sont
  • Type numérique (entier ou réel)
  • Byte (codé sur 1octet) de 0 à 255
  • Entier court (codé sur 2 octets) -32 768 à 32
    767
  • Entier long (codé sur 4 ou 8 octets)
  • Réel simple précision (codé sur 4 octets)
  • Réel double précision (codé sur 8 octets)
  • Type logique ou booléen deux valeurs VRAI ou
    FAUX
  • Type caractère lettres majuscules, minuscules,
    chiffres, symboles,
  • exemples A, a, 1, ?,
  • Type chaîne de caractère toute suite de
    caractères, exemples " Nom,
    Prénom", "code postale 1000",

28
Déclaration des variables
  • Rappel toute variable utilisée dans un programme
    doit avoir fait lobjet dune déclaration
    préalable
  • En pseudo-code, on va adopter la forme suivante
    pour la déclaration de variables
  • Variables liste d'identificateurs type
  • Exemple
  • Variables i, j,k entier
  • x, y réel
  • OK booléen
  • ch1, ch2 chaîne de caractères
  • Remarque pour le type numérique on va se limiter
    aux entiers et réels sans considérer les sous
    types

29
Linstruction daffectation
  • laffectation consiste à attribuer une valeur à
    une variable (ça consiste en fait à
    remplir où à modifier le contenu d'une zone
    mémoire)
  • En pseudo-code, l'affectation se note avec le
    signe ?
  • Var? e attribue la valeur de e à la variable
    Var
  • e peut être une valeur, une autre variable ou une
    expression
  • Var et e doivent être de même type ou de types
    compatibles
  • laffectation ne modifie que ce qui est à gauche
    de la flèche
  • Ex valides i ?1 j ?i k
    ?ij
  • x ?10.3 OK ?FAUX ch1
    ?"SMI"
  • ch2 ?ch1 x ?4 x ?j
  • (voir la déclaration des variables dans
    le transparent précédent)
  • non valides i ?10.3 OK ?"SMI" j ?x

30
Quelques remarques
  • Beaucoup de langages de programmation (C/C,
    Java, ) utilisent le signe égal pour
    laffectation ?. Attention aux confusions
  • l'affectation n'est pas commutative AB est
    différente de BA
  • l'affectation est différente d'une équation
    mathématique
  • AA1 a un sens en langages de programmation
  • A12 n'est pas possible en langages de
    programmation et n'est pas équivalente à A1
  • Certains langages donnent des valeurs par défaut
    aux variables déclarées. Pour éviter tout
    problème il est préférable d'initialiser les
    variables déclarées

31
Exercices simples sur l'affectation (1)
  • Donnez les valeurs des variables A, B et C après
    exécution des instructions suivantes ?
  • Variables A, B, C EntierDébutA ? 3B ? 7A ?
    B
  • B ? A5
  • C ? A BC ? B AFin

32
Exercices simples sur l'affectation (2)
  • Donnez les valeurs des variables A et B après
    exécution des instructions suivantes ?
  • Variables A, B EntierDébutA ? 1B ? 2A ?
    BB ? AFinLes deux dernières instructions
    permettent-elles déchanger les valeurs de A et
    B ?

33
Exercices simples sur l'affectation (3)
  • Ecrire un algorithme permettant déchanger les
    valeurs de deux variables A et B

34
Expressions et opérateurs
  • Une expression peut être une valeur, une variable
    ou une opération constituée de variables reliées
    par des opérateurs exemples 1, b, a2, a
    3b-c,
  • L'évaluation de l'expression fournit une valeur
    unique qui est le résultat de l'opération
  • Les opérateurs dépendent du type de l'opération,
    ils peuvent être
  • des opérateurs arithmétiques , -, , /,
    (modulo), (puissance)
  • des opérateurs logiques NON, OU, ET
  • des opérateurs relationnels , , lt, gt, lt,
    gt
  • des opérateurs sur les chaînes (concaténation)
  • Une expression est évaluée de gauche à droite
    mais en tenant compte de priorités

35
Priorité des opérateurs
  • Pour les opérateurs arithmétiques donnés
    ci-dessus, l'ordre de priorité est le suivant (du
    plus prioritaire au moins prioritaire)
  • (élévation à la puissance)
  • , / (multiplication, division)
  • (modulo)
  • , - (addition, soustraction)
  • exemple 2 3 7 vaut 23
  • En cas de besoin (ou de doute), on utilise les
    parenthèses pour indiquer les opérations à
    effectuer en priorité exemple (2 3) 7
    vaut 35

36
Les instructions d'entrées-sorties lecture et
écriture (1)
  • Les instructions de lecture et d'écriture
    permettent à la machine de communiquer avec
    l'utilisateur
  • La lecture permet d'entrer des donnés à partir du
    clavier
  • En pseudo-code, on note lire (var)
  • la machine met la valeur entrée au
    clavier dans la zone mémoire nommée
    var
  • Remarque Le programme s'arrête lorsqu'il
    rencontre une instruction Lire et ne se poursuit
    qu'après la frappe dune valeur au clavier et de
    la touche Entrée

37
Les instructions d'entrées-sorties lecture et
écriture (2)
  • L'écriture permet d'afficher des résultats à
    l'écran (ou de les écrire dans un fichier)
  • En pseudo-code, on note écrire (var)
  • la machine affiche le contenu de la zone
    mémoire var
  • Conseil Avant de lire une variable, il est
    fortement conseillé décrire des messages à
    lécran, afin de prévenir lutilisateur de ce
    quil doit frapper 

38
Exemple (lecture et écriture)
  • Ecrire un algorithme qui demande un nombre entier
    à l'utilisateur, puis qui calcule et affiche le
    double de ce nombre
  • Algorithme Calcul_double
  • variables A, B entier
  • Début
  • écrire("entrer la valeur de A ")
  • lire(A)
  • B ? 2A
  • écrire("le double de ", A, "est ", B)
  • Fin

39
Exercice (lecture et écriture)
  • Ecrire un algorithme qui vous demande de saisir
    votre nom puis votre prénom et qui affiche
    ensuite votre nom complet
  • Algorithme AffichageNomComplet
  • variables Nom, Prenom, Nom_Complet chaîne de
    caractères
  • Début
  • écrire("entrez votre nom")
  • lire(Nom)
  • écrire("entrez votre prénom")
  • lire(Prenom)
  • Nom_Complet ? Nom Prenom
  • écrire("Votre nom complet est ", Nom_Complet)
  • Fin

40
Exercice (respect des règles)
  • Chacun de ces quatre algorithmes contient une
    erreur. Laquelle?

Algorithme1 Variables Quantité entier Prix_unit réel Début Lire (Quantité, Prix_unit) Prix_total Quantité Prix_unit Écrire (Prix_total) Fin Algorithme2 Variables X, Y, Z réel Début Lire (X, Y, Z) Z X-Y Écrire (Z) Fin
Algorithme3 Variables A1, A2 entier A3 réel Début Lire (A1, A2) A2 A1 A3 Écrire (A2) Fin Algorithme4 Variables X réel Début Lire (X) X X-1 X Pi X Écrire (X) Fin
41
Méthode de construction dun algorithme simple
(1/4)
  • Exemple
  • Écrire un algorithme qui consiste a calculer
    lair S dun cercle selon la formule S Pi R2
  • Rappel Pi 3.14159 et R le rayon du cercle

42
Méthode de construction dun algorithme simple
(2/4)
  • Méthodologie a suivre
  • constantes Pi 3.14159
  • Variables Rayon, Surface
  • Types Rayon, Surface réel
  • Expressions et affectation Surface Pi
    (Rayon)2
  • Structures conditionnelles et les boucles
    ------
  • Opérations dentrée-sortie Lire (Rayon),
  • Écrire (Surface)

43
Méthode de construction dun algorithme simple
(3/4)
Algorithme
Calcul_Aire Constantes Pi 3,14159 Variables Rayon, Surface réels Début lire (Rayon) Surface Pi (Rayon)2 écrire (Surface) Fin
44
Méthode de construction dun algorithme simple
(3/4)
Programme Pascal Programme C
Program Calcul_Aire CONST Pi 3.14159 VAR Rayon, Surface REAL BEGIN READLN (Rayon) Surface Pi SQR (Rayon) WRITELN (Surface) END. include ltstdio.hgt include ltmath.hgt Main ( ) Float Pi 3.14159 Float rayon, surface Scanf ( /f , rayon) surface pipow (rayon,2) Printif ( /f\n surface, ) Return 0
45
Algorithmique
  • Les structures Conditionnelles et les boucles

46
Besoin a des concepts de ruptures de séquence
  • Rare les algorithme qui peuvent se décrire
    uniquement par un enchaînement séquentiel
    dopération élémentaire
  • On a besoin a des concept de rupture de séquence
    comme les test et les boucles
  • Ex
  • un algorithme qui résout une équation de deuxième
    degré
  • un algorithme qui calcule une série numérique

Algorithme
Calcul_Aire Constantes Pi 3,14159 Variables Rayon, Surface réels Début lire (Rayon) Surface Pi (Rayon)2 écrire (Surface) Fin
47
Les structures conditionnelles et les boucles
  • Les tests simples permet de réaliser un choix
    parmi deux possibilités (Ex Booléenne vrais ou
    faux)
  • Les instructions conditionnelles cest un
    concept de tests multiples, permet de comparer un
    objet à une série de valeurs, et exécuter si la
    condition est vérifier (Ex recherche des
    nombres premier dans une ensemble)
  • Les itérations consiste a exécuté un bloc
    dinstructions un certain nombre de fois (Ex
    calcul dune suite numérique)
  • Les boucles conditionnelles consiste a exécuté
    un bloc dinstructions un certain nombre de fois
    si la condition est vérifier (Ex On veut
    afficher le 100 premiers nombres . Tant que i
    est plus petit que 100, afficher la valeur de i).

48
Tests instructions conditionnelles (1)
  • Les instructions conditionnelles servent à
    n'exécuter une instruction ou une séquence
    d'instructions que si une condition est vérifiée
  • On utilisera la forme suivante Si condition
    alors
  • instruction ou suite
    d'instructions1
  • Sinon
  • instruction ou suite
    d'instructions2
  • Finsi
  • la condition ne peut être que vraie ou fausse
  • si la condition est vraie, se sont les
    instructions1 qui seront exécutées
  • si la condition est fausse, se sont les
    instructions2 qui seront exécutées
  • la condition peut être une condition simple ou
    une condition composée de plusieurs conditions

49
Tests instructions conditionnelles (2)
  • La partie Sinon n'est pas obligatoire, quand elle
    n'existe pas et que la condition est fausse,
    aucun traitement n'est réalisé
  • On utilisera dans ce cas la forme simplifiée
    suivante
  • Si condition alors
  • instruction ou suite d'instructions1
  • Finsi

50
Exemple (SiAlorsSinon)
  • Algorithme AffichageValeurAbsolue (version1)
  • Variable x réel
  • Début Ecrire " Entrez un réel  "
  • Lire (x)
  • Si x lt 0 alors    Ecrire ("la valeur absolue
    de ", x, "est",-x)
  • Sinon    Ecrire ("la valeur absolue de ",
    x, "est",x)
  • FinsiFin

51
Exemple (SiAlors)
  • Algorithme AffichageValeurAbsolue (version2)
  • Variable x,y réel
  • Début Ecrire " Entrez un réel  "
  • Lire (x)
  • y? x
  • Si x lt 0 alors    y ? -x
  • Finsi Ecrire ("la valeur absolue de ", x,
    "est",y)
  • Fin

52
Exercice (tests)
  • Ecrire un algorithme qui demande un nombre entier
    à l'utilisateur, puis qui teste et affiche s'il
    est divisible par 3
  • Algorithme Divsible_par3
  • Variable n entier
  • Début Ecrire " Entrez un entier  "
  • Lire (n)
  • Si (n30) alors    Ecrire (n," est
    divisible par 3")
  • Sinon    Ecrire (n," n'est pas divisible
    par 3")
  • FinsiFin

53
Conditions composées
  • Une condition composée est une condition formée
    de plusieurs conditions simples reliées par des
    opérateurs logiques
  • ET, OU, OU exclusif (XOR) et NON
  • Exemples
  • x compris entre 2 et 6 (x gt 2) ET (x lt 6)
  • n divisible par 3 ou par 2 (n30) OU (n20)
  • deux valeurs et deux seulement sont identiques
    parmi a, b et c
  • (ab) XOR (ac) XOR (bc)
  • L'évaluation d'une condition composée se fait
    selon des règles présentées généralement dans ce
    qu'on appelle tables de vérité

54
Tables de vérité
C1 C2 C1 OU C2
VRAI VRAI VRAI
VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX
C1 C2 C1 ET C2
VRAI VRAI VRAI
VRAI FAUX FAUX
FAUX VRAI FAUX
FAUX FAUX FAUX
C1 C2 C1 XOR C2
VRAI VRAI FAUX
VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX
C1 NON C1
VRAI FAUX
FAUX VRAI
55
Tests imbriqués
  • Les tests peuvent avoir un degré quelconque
    d'imbrications
  • Si condition1 alors
  • Si condition2 alors
  • instructionsA
  • Sinon
  • instructionsB
  • Finsi
  • Sinon
  • Si condition3 alors
  • instructionsC
  • Finsi
  • Finsi

56
Tests imbriqués exemple (version 1)
  • Variable n entierDébut Ecrire ("entrez un
    nombre  ") Lire (n) Si n lt 0 alors   
    Ecrire ("Ce nombre est négatif")
  • Sinon
  • Si n 0 alors    Ecrire ("Ce nombre est
    nul")
  • Sinon     Ecrire ("Ce nombre est positif")
  • Finsi Finsi
  • Fin

57
Tests imbriqués exemple (version 2)
  • Variable n entier Début Ecrire ("entrez un
    nombre  ") Lire (n)
  • Si n lt 0 alors Ecrire ("Ce nombre est
    négatif") Finsi
  • Si n 0 alors Ecrire ("Ce nombre est nul")
  • Finsi     Si n gt 0 alors Ecrire ("Ce nombre
    est positif")
  • Finsi
  • Fin
  • Remarque dans la version 2 on fait trois tests
    systématiquement alors que dans la version 1, si
    le nombre est négatif on ne fait qu'un seul test
  • Conseil utiliser les tests imbriqués pour
    limiter le nombre de tests et placer d'abord les
    conditions les plus probables (minimiser la
    complexité)

58
Tests imbriqués exercice
  • Le prix de photocopies dans une reprographie
    varie selon le nombre demandé 0,5 DH la copie
    pour un nombre de copies inférieur à 10, 0,4DH
    pour un nombre compris entre 10 et 20 et 0,3DH
    au-delà.
  • Ecrivez un algorithme qui demande à
    lutilisateur le nombre de photocopies
    effectuées, qui calcule et affiche le prix à payer

59
Tests imbriqués corrigé de l'exercice
  • Variables copies entier prix
    réelDébut Ecrire ("Nombre de photocopies ")
  • Lire (copies) Si copies lt 10 Alors     
    prix ? copies0.5
  • Sinon Si copies lt 20     prix ?
    copies0.4 Sinon     prix ?
    copies0.3 Finsi
  • Finsi Ecrire (Le prix à payer est , prix)
  • Fin

60
Tests imbriqués Exercice 2
  • Écrire lalgorithme du traitement qui calcule le
    discriminant DELTA dtrinome du second degré AX2
    BX C et qui, en fonction de son signe,
    calcule la ou les racines réelles du trinome ou
    afiche, si besoin est quil nya pas de racine
    réelle.
  • Les trois coefficients A, B et C seront
    saisis au clavier avant traitement.

61
Tests imbriqués corrigé de l'exercice 2
  • Variables
  • A, B, C, Delta, X1, X2
    réelsDébut Lire (A, B, C)
  • Delta ? B2 4 AC
  • Si (Delta lt 0) Alors      Ecrire ( le
    trinome na pas de racine réelle )
  • Sinon
  • Si (Delta gt 0 Alors
  • X1 ? (-B racine(delta)) / 2A
  • X2 ? (-B - racine(delta)) / 2A
  • Ecrire ( le trinome possède deux racines
    réelles  , X1, X2)
  •      Sinon
  • X1 ? (-B ) / 2A
  • Ecrire ( le trinome possède une racine
    réelle  , X1)
  •      Finsi Finsi
  • Fin

62
Algorithmique
  • Les boucles

63
Les types de boucle
  • On distingue 2 types de boucles
  • Les boucles à compteur ou définie
  • On sait à lavance combien de fois la boucle
    devra tourner et une variable (le compteur )
    compte les répétitions
  • Choisir 10 nombres au hasard. On fera dix fois
    lopération choisir un nombre au hasard.
  • Ex la boucle Pour
  • Les boucles à événement ou indéfinie
  • On ne sait pas à lavance le nombre de fois que
    la boucle sera exécutée.
  • Ça peut dépendre du nombre de données à traiter.
  • Ça peut dépendre du nombre dessais que lusager
    a effectués.
  • Ex la boucle Tanque et la boucle jusqua

64
Les boucles Tant que
  • TantQue (condition)
  • instructions
  • FinTantQue

65
Boucle Tant que exemple simple
  • Un algorithme qui détermine le premier nombre
    entier N tel que la somme de 1 à N dépasse
    strictement 100
  • Variables som, i entierDebut
  • i ? 0
  • som? 0
  • TantQue (som lt100)
  •      i ? i1
  • som ? somi
  • FinTantQue Ecrire (" La valeur cherchée est N
    ", i)
  • Fin

66
Boucle Tant que exemple
Algorithme Plus-Grand-Element Retourne la plus
grande valeur dune liste Entrée n entiers
S1,, Sn Sortie grand contenant le plus
grand élément Algo plus-grand (S,n) grand
S1 i2 Tant que i n Faire Début Si
Si gt grand alors // une plus grande valeur a été
trouvée grand Si i i1
Fin ecrire (grand) Fin plus-grand
Trace de lalgorithme n4 S1 -2 S26
S35 S46
grand -2
i 2
grand 6
i 3
i 4
i 5
67
Algorithme dEuclide
  • Trouver le plus grand diviseur commun (pgcd) de
    deux entiers
  • Définition q est un diviseur commun de m et n
    si q divise à la fois m et n (le reste de la
    division entière est 0)
  • Le pgdc de m et n est le plus grand entier q
    divisant à la fois m et n.
  • Exemple pgcd(4, 6) 2 pgcd(3,8) 1
  • pgcd(9, 12) 3
  • Utile pour la simplification de fractions
  • 9/12 3.3/4.3 3/4

68
Trouver le PGCD de a et b
  • Exemple pgcd(30, 105)
  • 1ère méthode Trouver tous les diviseurs de a et
    b, et trouver le diviseur commun le plus grand
  • Diviseurs de 30 1, 2, 3, 5, 6, 10, 15, 30
  • Diviseurs de 105 1, 3, 5, 7, 15, 21, 35, 105
  • pgcd(30, 105) 15
  • 2ème méthode la méthode dEuclide
  • 105 30.3 15. Donc pgcd(105, 30) pgcd(30,15)
  • 30 15.2 0. Donc pgcd(30, 15) pgcd(15,0)
  • pgcd(15,0)15
  • pgcd(105,30)pgcd(30,15)pgcd(15,0)15

69
Méthode dEuclide Algorithme
  • Soient r0, r1 deux entiers strictement
    positifs, tels que r0r1.qr2 avec 0r2ltr1
  • Si r2 0, pgcd (r0, r1) r1
  • Sinon, rediviser ri par ri1 tant que ri1 est
    différent de 0
  • Si rn est le premier reste nul, alors
  • pgcd(r0,r1) pgcd(r1,r2) pgcd(rn-1,rn)
    pgcd(rn-1,0) rn-1

70
Algorithme dEuclide
Entrée a, b deux entiers positifs Sortie
pgcd(a,b) Procédure pgcd(a,b) Tant que b ltgt 0
Faire Début diviser a par b a
b.qr, 0 r lt b ab br
Fin Retourner (a) Fin pgcd
Trace de lalgorithme pour a504 et b396
a
504
396
1
108
b
396
108
a
72
3
b
a
108
72
1
36
72
36
a
b
2
0
b
71
Les boucles Pour
  • Pour compteur allant de initiale
    à finale par pas valeur du pas
  • instructions
  • FinPour

72
Les boucles Pour
  • Remarques
  • Compteur est une variable de type entier (ou
    caractère). Elle doit être déclarée
  • Pas est un entier qui peut être positif ou
    négatif. Pas peut ne pas être mentionné, car par
    défaut sa valeur est égal à 1. Dans ce cas, le
    nombre d'itérations est égal à finale - initiale
    1
  • Initiale et finale peuvent être des valeurs, des
    variables définies avant le début de la boucle ou
    des expressions de même type que compteur

73
Déroulement des boucles Pour
  • La valeur initiale est affectée à la variable
    compteur
  • On compare la valeur du compteur et la valeur de
    finale
  • Si la valeur du compteur est gt à la valeur finale
    dans le cas d'un pas positif (ou si compteur est
    lt à finale pour un pas négatif), on sort de la
    boucle et on continue avec l'instruction qui suit
    FinPour
  • Si compteur est lt à finale dans le cas d'un pas
    positif (ou si compteur est gt à finale pour un
    pas négatif), instructions seront exécutées
  • Ensuite, la valeur de compteur est incrémentée de
    la valeur du pas si pas est positif (ou
    décrémenté si pas est négatif)
  • On recommence l'étape 2 La comparaison entre
    compteur et finale est de nouveau effectuée, et
    ainsi de suite

74
Boucle Pour exemple
Algorithme Plus-Grand-Element Réécriture de
lalgorithme précédent mais avec une boucle
Pour Entrée n entiers S1,, Sn
Sortie grand contenant le plus grand
élément Algo plus-grand (S,n) grand S1
Pour i 1 à n Faire Si Si gt grand
alors // une plus grande valeur a été trouvée
grand Si ecrire (grand) Fin
plus-grand
75
Boucle Pour remarque
  • Il faut éviter de modifier la valeur du compteur
    (et de finale) à l'intérieur de la boucle. En
    effet, une telle action
  • perturbe le nombre d'itérations prévu par la
    boucle Pour
  • rend difficile la lecture de l'algorithme
  • présente le risque d'aboutir à une boucle infinie
  • Exepmle Pour i allant de 1 à 5
  • i ? i -1 écrire(" i ", i) 
  • Finpour

76
Lien entre Pour et TantQue
  • La boucle Pour est un cas particulier de Tant Que
    (cas où le nombre d'itérations est connu et fixé)
    . Tout ce qu'on peut écrire avec Pour peut être
    remplacé avec TantQue (la réciproque est fausse)
  • Pour compteur allant de initiale à finale par
    pas valeur du pas
  • instructions
  • FinPour
  • peut être remplacé par compteur ? initiale
  • (cas d'un pas positif) TantQue compteur lt
    finale
  • instructions
  • compteur ? compteurpas
  • FinTantQue

77
Lien entre Pour et TantQue exemple
Calcul de x à la puissance n avec la boucle
Pour et la boucle TantQue x un réel non nul
n entier positif ou nul
78
Solution avec la boucle Pour
  • Variables x, puiss réel
  • n, i entier
  • Debut Ecrire (" Entrez respectivement les
    valeurs de x et n ")
  • Lire (x, n)
  • puiss ? 1
  • Pour i allant de 1 à n
  •     puiss? puissx FinPour
  • Ecrire (x, " à la puissance ", n, " est égal
    à ", puiss)
  • Fin

79
Solution avec la boucle Tant Que
  • Variables x, puiss réel
  • n, i entier
  • Debut Ecrire (" Entrez respectivement les
    valeurs de x et n ")
  • Lire (x, n)
  • puiss ? 1, i ? 1
  • TantQue (iltn)
  •     puiss? puissx i ? i1
  • FinTantQue
  • Ecrire (x, " à la puissance ", n, " est égal
    à ", puiss)
  • Fin

80
Algorithme de la fonction factorielle Exemple
  • Écrire deux algorithmes qui calculent pour un
    entier positif donné n la valeur n!, un de ces
    algorithmes doit utilisé la boucle Pour et
    lautre la boucle Tanque
  • Entrée n de type naturel
  • Sortie factoriel (n) 123..(n-1)n

81
Algorithme de la fonction factorielle
Algorithme / tantque
Calcul factorielle 1 Variables i, f, n Naturel Début i ? 1 f ? 1 tant que (i lt n) i ? i1 f ? f i Fin de tant que écrire (f) Fin
Algorithme / Pour
Calcul factorielle 2 Variables i, f, n Naturel Début f ? 1 pour i variant de 2 à n f ? f i Fin pour écrire (f) Fin
82
Algorithme de la recherche des nombres premiers
Exemple
  • Problème Écrire lalgorithme estPremier, qui a
    partir dun entier strictement positif donné,
    retourne le résultat booléen VRAI ou FAUX selon
    le nombre est premier ou non.
  • Procédure pour déterminer si un entier m est un
    nombre premier. Il suffit de tester si m est
    divisible par un entier entre 2 et m/2
  • Ex 1, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31,
    37, 41, 43, 47. (listes des nombres premier lt50)

83
La boucle tantque en langage de programmation
Langage Pascal
While condition Do Begin Bloc dinstructions End
test
corps_boucle
Langage C et Java
while (condition) Bloc dinstructions
84
La boucle Pour en langage de programmation
Langage Pascal
For variable valeur initiale To valeur finale Do Begin Bloc dinstructions End
Langage C et Java
for (ivaleur initiale ilt valeur finale i) Bloc dinstructions
85
Détecter lerreur dans les deux essaie tant que
et pour
Algorithme
Essai de tant que Variables n entier Début n ? 15 tant que (nltgt0) écrire (n) n ? n - 2 Fin de tant que Fin
Algorithme
Essai pour Variables K, N entier Début n ? 200 pour K variant de 1 à n écrire (K) K ? n 100 Fin pour Fin
86
Boucles imbriquées
  • Les instructions d'une boucle peuvent être des
    instructions itératives. Dans ce cas, on aboutit
    à des boucles imbriquées
  • Exemple Exécution
  • Pour i allant de 1 à 5 OX
  •     Pour j allant de 1 à i OOX
  • écrire("O") OOOX
  • FinPour OOOOX
  • écrire("X") OOOOOX
  • FinPour

87
La boucle FaireTant Que
  • Faire
  • Instruction(s)
  • Tant que (condition)
  • do
  • Instruction
  • while (condition)
  • do
  • f n
  • n--
  • while (ngt1)

La boucle sexécute tant que la condition est
vraie. La boucle cesse lorque la condition est
fausse. À utiliser si lon veut que la boucle
soit exécutée au moins une fois
88
Les boucles Répéter jusquà
  • Répéter
  • instructions
  • Jusqu'à condition
  • Condition est évaluée après chaque itération
  • les instructions entre Répéter et jusquà sont
    exécutées au moins une fois et leur exécution est
    répétée jusquà ce que condition soit vrai (tant
    qu'elle est fausse)

89
Boucle Répéter jusquà exemple
  • Un algorithme qui détermine le premier nombre
    entier N tel que la somme de 1 à N dépasse
    strictement 100 (version avec répéter jusqu'à)
  • Variables som, i entierDebut som ? 0
  • i ? 0 Répéter
  •      i ? i1
  • som ? somi
  • Jusqu'à ( som gt 100)
  • Ecrire (" La valeur cherchée est N ", i)
  • Fin

90
Choix d'un type de boucle
  • Si on peut déterminer le nombre d'itérations
    avant l'exécution de la boucle, il est plus
    naturel d'utiliser la boucle Pour
  • S'il n'est pas possible de connaître le nombre
    d'itérations avant l'exécution de la boucle, on
    fera appel à l'une des boucles TantQue ou répéter
    jusqu'à
  • Pour le choix entre TantQue et jusqu'à
  • Si on doit tester la condition de contrôle avant
    de commencer les instructions de la boucle, on
    utilisera TantQue
  • Si la valeur de la condition de contrôle dépend
    d'une première exécution des instructions de la
    boucle, on utilisera répéter jusqu'à ou faire
    tanque

91
Algorithme de la racine carrée Exercice
  • Problème Écrire lalgorithme qui calcul la
    racine carrée dun nombre sans avoir recours a la
    fonction mathématique Racine Carrée prédéfinie.
  • Procédure si n est le nombre dont on souhaite
    extraire la racine carrée. On construit une suite
    de nombres Xi dont le premier vaut 1 et dont le
    terme générale a pour expression
  • Xi (n/xi-1 xi-1) / 2
  • Rq Cette suite converge systématiquement vers
    racarrée (n)

92
Algorithme de la racine carrée
Algorithme Racine Carrée (RC)
Variables n, x réels i, max entier Début Lire (n) Lire (max) x ? 1 pour i variant de 1 à max écrire (n) x ? ((n/x) x) / 2 Fin de pour Fin
93
MAPLE
  • Présentation générale et syntaxe des instructions
    de base

94
Maple
  • Maple est un logiciel de calcul formel et
    numérique
  • Calcul formel calcul sur des expressions
    littérales sans évaluation numérique (Maple peut
    calculer des dérivées, des intégrales, des
    développements limités, )
  • gt int(1-xx3,x)
  • gt taylor(sin(x),x0,6)
  • Calcul numérique calcul sur des valeurs (avec
    une grande précision)
  • gt 30! 265252859812191058636308480000000
  • gt evalf(sqrt(2),50) 1.414213562373095048801
    688 7242096980785696718753769

95
Maple quelques fonctions
  • abs (n) renvoie la valeur absolue de son
    argument n
  • ex gtabs(-4)
  • 4
  • Ifactor(n) donne la décomposition de n en
    facteur premiers
  • Ex gtifactor(1998)
  • (2)(3)3(37)
  • Irem(a,b) renvoie le reste de la division
    entiere de a par b
  • Ex gtIrem(5,2)
  • 1
  • Sum(f(k),ka..b) calcul la sommes de f(k) de a
    jusquà b
  • Product(f(k),ka..b) calcul le produit de f(k)
    de a jusquau b

96
Maple les packages
  • Maple dispose d'un certain nombre de packages
    (librairies). Chacun de ces packages est
    spécialisé dans un traitement particulier. Comme
    exemples de ces packages, on a
  • linalg pour l'algèbre linéaire
  • plots pour le tracé des courbes
  • geometry pour la géométrie
  • student ce package est conçu pour assister
    l'enseignement des mathématiques de base
    (intéressant pour les étudiants)
  • Pour utiliser certaines commandes et fonctions de
    Maple, il faut d'abord charger le package qui les
    contient avec la commande with
  • with (NomLibrairie) charge le package
    NomLibrairie
  • with (NomLib, NomCmd) charge la commande NomCmd
    du package NomLib

97
Maple Généralités
  • Chaque instruction Maple doit se terminer par
    ou
  • Si l'instruction se termine par Maple l'exécute
    et affiche le résultat
  • Si l'instruction se termine par Maple l'exécute
    sans afficher le résultat
  • Pour introduire un texte en tant que commentaire,
    il suffit de précéder la ligne par ( le texte
    est alors ignoré par Maple)
  • Maple fait la distinction entre les lettres
    majuscules et minuscules (SMI, Smi, smI et smi
    sont différents pour Maple)

98
Maple nom et type des variables
  • Le nom d'une variable peut être une combinaison
    de lettres et de chiffres, mais qui commence par
    une lettre, qui ne contient pas d'espaces et qui
    est différente des mots réservés (commandes
    Maple)
  • Le type d'une variable est attribué
    automatiquement par Maple selon le contexte
    (exemple si A prend la valeur 2, A sera de type
    integer, si A prend la valeur , A sera de type
    float)
  • Les principaux types prédéfinis en Maple sont
    integer (entier), float (réel), fraction
    (rationnel), complex (complexe), string (chaîne
    de caractères), boolean (booléen), array
    (tableau), matrix (matrice)
  • Maple offre quelques commandes relatifs aux types
    ex whattype(var) donne le type de la
    variable var

99
Maple l'affectation
  • Le symbole d'affectation ? se note en Maple avec
  • exemple i 1 j i1
  • Attention en Maple ab n'est pas une
    instruction d'affectation, mais une expression de
    type logique (boolean) qui est vrai si les deux
    valeurs a et b sont égales et fausse sinon
  • Maple n'évalue l'expression logique ab que si on
    le demande explicitement. Pour cela, on utilisera
    la commande evalb
  • exemple a 1 b 2
  • gt ab 12
  • gt evalb (ab) false

100
Maple instructions d'entrées-sorties
  • print(var) permet d'afficher la valeur de la
    variable var (c'est l'équivalent de écrire en
    pseudo code). Si var n'a pas de valeur, Maple
    affiche le nom de la variable
  • print(chaine) permet d'afficher la chaîne de
    caractères qui est entre
  • gt a1 b2 print(a vaut,a, et b vaut,b)
  • a vaut ,1 et b vaut, 2
  • readstat permet de saisir des données à partir du
    clavier (c'est l'équivalent de lire en pseudo
    code)
  • Syntaxe varreadstat(texte) Maple affiche
    le texte entre et attend qu'on entre une
    valeur au clavier qui doit être suivie de ou
  • gt nreadstat(entrez la valeur de n )
  • Remarque il existe d'autres commandes pour les
    entrées-sorties en Maple

101
Maple syntaxe des tests
  • Écriture en pseudo code Traduction en Maple
  • Si condition alors if
    condition then instructions
    instructions
  • Finsi fi
  • Si condition alors if
    condition then
  • instructions 1 instructions1
  • Sinon else
  • instructions2 instructions2
  • Finsi fi

102
Maple syntaxe des boucles
  • Écriture en pseudo code Traduction en Maple
  • TantQue condition while condition
    do instructions instructions
  • FinTantQue od
  • Pour i allant de v1 à v2 par pas p for i from
    v1 to v2 by p do
  • instructions instructions
  • FinPour od

103
Algorithmique
  • Fonctions et procédures

104
Fonctions et procédures
  • Lorsquune séquence dinstructions se répète
    plusieurs fois, il est intéressant de faire un
    sous-programme correspondant à ce bloc
    dinstructions et de lutiliser autant de fois
    que nécessaire
  • Cette séquence dinstructions sera définie dans
    un sous-programme qui peut prendre la forme dune
    procédure ou dune fonction
  • De plus, un programme est presque toujours
    décomposable en modules qui peuvent alors être
    définis de manière indépendante.
  • Cela permet de modifier éventuellement un
    module sans pour autant changer le corps du
    programme et de rendre le programme plus
    compréhensible (lisibilité)
  • Un programme est alors un ensemble de procédures
    / fonctions

105
Notion de bloc dans un programme
106
Fonctions
107
Forme dune Fonction
  • Une fonction s'écrit en dehors du programme
    principal sous la forme
  • Fonction identificateur (paramètres et leurs
    types) type_fonction
  • Instructions constituant le corps de la
    fonction
  • retourne
  • FinFonction
  • type de fonction le type du résultat renvoyé
    par la fonction
  • Identificateur le nom que lon a donné à la
    fonction
  • liste de paramètres la liste des paramètres
    formels donnés en entrée avec leurs types
  • corps de la fonction un bloc dinstructions,
    pouvant comprendre la déclaration des variables
    locales a la fonctions
  • Remarque le corps de la fonction doit comporter
    une instruction de la forme return(expression)
    où expression est du type du résultat de la
    fonction

108
Exemple de programme / fonction
109
Exemple de fonction / fonction
110
Fonctions exemples
  • La fonction SommeCarre suivante calcule la somme
    des carrées de deux réels x et y
  • Fonction SommeCarre (x réel, y réel )
    réel
  • variable z réel
  • z ?x2y2
  • retourne (z)
  • FinFonction
  • La fonction Pair suivante détermine si un nombre
    est pair
  • Fonction Pair (n entier ) booléen
  • retourne (n20)
  • FinFonction

Paramètres formels
111
Utilisation des fonctions
  • L'utilisation d'une fonction se fera par simple
    écriture de son nom dans le programme principale.
    Le résultat étant une valeur, devra être affecté
    ou être utilisé dans une expression, une
    écriture, ...
  • Exepmle Algorithme exepmleAppelFonction
  • variables z réel, b booléen
  • Début
  • b ?Pair(3)
  • z ?5SommeCarre(7,2)1
  • écrire("SommeCarre(3,5) ",
    SommeCarre(3,5))
  • Fin
  • Lors de l'appel Pair(3) le paramètre formel n
    est remplacé par le paramètre effectif 3

112
Subdivision dun problème en un ensemble de
fonctions
  • Problème Trouver le plus petit nombre premier
    strictement supérieur à un entier positif donné n
  • Utiliser lalgorithme quon a déjà fait
    estPremier (le plus petit nombre premier p
    supérieur à un entier n) en tant que fonction.
  • Fait appel a cette fonction a lintérieur de
    lalgorithme premier-plus-grand

113
La fonction de recherche des nombres premiers
Fonction estPremier
Fonction est-premier (m entier) booléen Pour i 2 à ENT(m/2) Faire Si m mod i 0 alors // i divise m Retourne (Faux) Retourne (Vrai) FinFonction est-premier
114
Entrée Un entier positif m Sortie Vrai si m est
premier, Faux si non. Fonction est-premier (m)
Pour i 2 à ENT(m/2) Faire Si m mod i 0
alors // i divise m Retourne (Faux)
Retourne (Vrai) Fin est-premier
Entrée Un entier positif n Sortie Le plus petit
nb premier m gt n Algorithme premier-plus-grand
(n) m n1 Tant que est-premier(m) est
Faux Faire m m1 Retourne(m)
Fin est-premier
Trace de premier-plus-grand pour n8
Trace de est-premier pour m9
Trace de est-premier pour m10
Trace de est-premier pour m11
i2
9 mod 2 1
10 mod 2 0
11 mod 2 1
m 9
9 mod 3 0
i3
i5
11 mod 5 1
m 10
m 11
115
Procèdures
  • Dans certains cas, on peut avoir besoin de
    répéter une tache dans plusieurs endroits du
    programme, mais que dans cette tache on ne
    calcule pas de résultats ou qu'on calcule
    plusieurs résultats à la fois
  • Dans ces cas on ne peut pas utiliser une
    fonction, on utilise une procédure
  • Une procédure est un sous-programme semblable à
    une fonction mais qui ne retourne rien
  • Une procédure s'écrit en dehors du programme
    principal sous la forme
  • Procédure nom_procédure (paramètres et leurs
    types)
  • Instructions constituant le corps de la
    procédure
  • FinProcédure
  • Remarque une procédure peut ne pas avoir de
    paramètres

116
Appel d'une procédure
  • L'appel d'une procédure, se fait dans le
    programme principale ou dans une autre procédure
    par une instruction indiquant le nom de la
    procédure
  • Procédure exemple_proc ()
  • FinProcédure
  • Algorithme exepmleAppelProcédure
  • Début
  • exemple_proc ()
  • Fin
  • Remarque contrairement à l'appel d'une
    fonction, on ne peut pas affecter la procédure
    appelée ou l'utiliser dans une expression.
    L'appel d'une procédure est une instruction
    autonome

117
Paramètres d'une procédure
  • Les paramètres servent à échanger des données
    entre le programme principale (ou la procédure
    appelante) et la procédure appelée
  • Comme avec les fonctions
  • Les paramètres placés dans la déclaration d'une
    procédure sont appelés paramètres formels. Ces
    paramètres peuvent prendre toutes les valeurs
    possibles mais ils sont abstraits (n'existent pas
    réellement)
  • Les paramètres placés dans l'appel d'une
    procédure sont appelés paramètres effectifs. ils
    contiennent les valeurs pour effectuer le
    traitement
  • Le nombre de paramètres effectifs doit être égal
    au nombre de paramètres formels. L'ordre et le
    type des paramètres doivent correspondre

118
Transmission des paramètres
  • Il existe deux modes de transmission de
    paramètres dans les langages de programmation
  • La transmission par valeur les valeurs des
    paramètres effectifs sont affectées aux
    paramètres formels correspondants au moment de
    l'appel de la procédure. Dans ce mode le
    paramètre effectif ne subit aucune modification
  • La transmission par adresse (ou par référence)
    les adresses des paramètres effectifs sont
    transmises à la procédure appelante. Dans ce
    mode, le paramètre effectif subit les mêmes
    modifications que le paramètre formel lors de
    l'exécution de la procédure
  • Remarque le paramètre effectif doit être une
    variable (et non une valeur) lorsqu'il s'agit
    d'une transmission par adresse
  • En pseudo-code, on va préciser explicitement le
    mode de transmission dans la déclaration de la
    procédure

119
Transmission des paramètres exemples
  • Procédure incrementer1 (x entier par valeur, y
    entier par adresse)
  • x ? x1
  • y ? y1
  • FinProcédure
  • Algorithme Test_incrementer1
  • variables n, m entier
  • Début
  • n ? 3
  • m ? 3
  • incrementer1(n, m) résultat
  • écrire (" n ", n, " et m ", m) n3 et m4
  • Fin
  • Remarque l'instruction x ? x1 n'a pas de
Write a Comment
User Comments (0)
About PowerShow.com