Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période.
Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.

~ Rechercher ~

  

~ Annuaire VB ~
 Rechercher un site :
  

~ Partenaires ~

~ Bases de la programmation ~
. Retour au sommaire

. Procédures et fonctions
    . Notions de base
    . Paramètre
    . Procédure
    . Fonction
    . Exercices
    . Corrigés

~ Notions de base ~

Lorsque l'on progresse dans la conception d'algorithmes, ces derniers peuvent prendre une taille et une compléxité croissante. On peut alors être tenté de vouloir les découper en "sous-algorithme". C'est la qu'interviennent les procédures et les fonctions.
On va disposer d'un algorithme principal qui va utiliser des sous-actions (qui elles-mêmes peuvent en appeler d'autres, et ainsi de suite...). Une action est caractérisée (comme tout algorithme) par : des données, un traitement, un résultat.

~ Paramètre ~

Un paramètre est un élément qui fourni à une action une information dont elle a besoin pour son traitement et qui détermine le résultat retourné. Une action peut n'avoir aucun paramètre tout comme elle peut en nécéssiter plusieurs.

Les paramètres fonctionnent dans trois sens:
~ Entrée:
Ce sont les données envoyées par l'action d'appel à l'action appelée.
~ Sortie:
Ce sont les données retournées à l'action appelante par l'action appelée lorsqu'elle se termine.
~ Entrée/Sortie:
Ce sont des données envoyées par l'action d'appel qui peuvent être modifiées et retournées par la fonction appelée lorsqu'elle se termine.

~ Procédure ~

Une procédure est simplement la mise en application les notions vues dans les deux parties précédentes. Elle est définie par son en-tête et par son corps. L'en-tête va contenir le nom de la procédure et ses paramètres :

PROCECURE Perimetre (ENTREE Largeur, Longueur ; SORTIE Resultat)
Le corps de la procédure regroupe tous les éléments utiles pour son fonctionnement :
DEBUT
    Resultat = Largeur x Longueur
FIN
Les paramètres 'Largeur' et 'Longueur' sont des données qui ne seront pas modifiées par la procédure, ils sont donc signalés en 'ENTREE'. Le paramètre 'Resultat' quant à lui contiendra le résultat du calcul il est donc indiqué en 'SORTIE'.
A l'intérieur d'un algorithme plus important, l'appel sera vu de la manière suivante :
...
LIRE Largeur
LIRE Longueur
Perimetre(Largeur, Longueur, Resultat)
ECRIRE Resultat
...
Attention, le nombre de paramètres d'une procédure doit être absolument respecté lors de l'appel. Les paramètres en ENTREE peuvent être indifférement des valeurs ou des variables, alors que les paramètres de SORTIE doivent obligatoirement être des variables.

~ Fonction ~

Une fonction à la particularité de directement retourner une valeur et ne peut donc s'utiliser qu'à l'intérieur d'une expression (affectation de variable, test conditionnel, ...).

FONCTION Maximum (ENTREE nombre_1, nombre_2)
Comme pour une procédure le corps de la fonction contient les éléments utiles pour son fonctionnement :
DEBUT
    SI (nombre_1 > nombre_2)
        ALORS
            Maximum = nombre_1
        SINON
            Maximum = nombre_2
    FINSI
FIN
Les paramètres 'nombre_1' et 'nombre_2' ne seront pas modifiées par la fonction, ils sont donc mis en 'ENTREE'. La valeur de retour de la fonction est affectée en utilisant son nom (Maximum = ...).
Exemple d'utilisation :
...
LIRE nombre_1
LIRE nombre_2
ECRIRE Maximum(nombre_1, nombre_2)
...
Lorsqu'on travaille avec des fonctions, on peut faire de la récursivité. Ainsi, une fonction, peut s'appeler elle-même pour obtenir le résultat final. L'exemple classique est celui du calcul de factoriel:
FONCTION Facto(ENTREE nombre)
DEBUT
    SI (nombre = 0)
        ALORS
            Facto = 1
        SINON
            Facto = nombre x Facto(nombre - 1)
    FINSI
FIN

~ Exercices ~

Avec les éléments vus dans cette première partie, voici quelques exercices à réaliser. Le but est, bien entendu, de mettre en pratique l'utilisation des procédures et des fonctions :

1) "Calculer sous forme de procédure le factoriel d'un nombre"

2) "Calculer le miroir d'une nombre donné (par ex. 456 -> 654, 3210 -> 123)
Le nombre de départ sera le paramètre d'une procédure.

3) "Calculer le plus grand commund diviseur de deux nombres"
Pour cet exercice on mettra en place une fonction Pgcd récursive.

~ Corrigés ~

Il n'y a pas de correction unique, celles qui sont proposées ici représentent juste une manière de faire.

1) "Calculer sous forme de procédure le factoriel d'un nombre"

Il s'agit ici d'un simple exercice de transformation de la fonction indiquée plus haut sur la page en une procédure.
PROCEDURE Factoriel(ENTREE nombre)
DEBUT
    REPETER
        LIRE nombre
    JUSQU'A (nombre >= 0)
    Fact = 1
    POUR i DE 2 A n FAIRE
        Fact = Fact x i
    FIN POUR
    ECRIRE Fact
FIN
2) "Calculer le miroir d'une nombre donné (par ex. 456 -> 654, 3210 -> 123)
L'opérateur MOD retourne le reste d'une division entière.

PROCEDURE Miroir(ENTREE nombre)
DEBUT
    TANT QUE (nombre <> 0)
        POUR i DE 0 A 9 FAIRE
            SI (((nombre - i) MOD 10) = 0)
                ALORS
                    ECRIRE i
                SINON
                    nombre = ((nombre - i) \ 10)
        FIN POUR
    FIN TANT QUE
FIN

3) "Calculer le plus grand commund diviseur de deux nombres"
On découpe cette fois-ci au maximum et on utilise trois fonctions pour obtenir le résultat, la fonction principale étant 'Pgcd', qui fait appel aux deux premières.

FONCTION Min(ENTREE nombre_1, nombre_2)
DEBUT
    SI (nombre_1 < nombre_2)
        ALORS
            Min = nombre_1
        SINON
            Min = nombre_2
    FINSI
FIN

FONCTION MaxMoinsMin(ENTREE nombre_1, nombre_2)
DEBUT
    SI ( nombre_1 < nombre_2)
        ALORS
            MaxMoinsMin = nombre_2 - nombre_1
        SINON
            MaxMoinsMin = nombre_1 - nombre_2
    FINSI
FIN

FONCTION Pgcd(ENTREE nombre_1, nombre_2)
DEBUT
    SI (nombre_1 = nombre_2)
        ALORS
            Pgcd = nombre_1
        SINON
            Pgcd = Pgcd(Min(nombre_1, nombre_2),
                        MaxMoinsMin(nombre_1, nombre_2)
    FINSI
FIN
~ En stock ~
. 20 livres sur Visual Basic
. 1474 icônes

~ Affichage ~

~ Recommander ~





Géré par LBB.ORG
Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr