procedure aire_perimetre_carre(E cote:reel, S aire : reel, S perimetre : reel) { aire <-- cote * cote perimetre <-- 4*cote } Algorithme Utilisation { variable c, a, p : réel Afficher("Veuillez saisir le coté ?") Saisir(c) aire_perimetre_carre(c,a,p) Afficher("L'aire du carré est ", a, " et son périmètre est ", p,".\n") } procedure EstImpaire(E n:entier, S impaire:booleen) { Si (n mod 2 = 1) alors { impaire <-- VRAI } sinon { impaire <-- FAUX } // autre solution // impaire <-- (n mod 2 = 1) } Algorithme Utilisation { variable N : entier b : booleen Afficher("Veuillez saisir un nombre entier ?") Saisir(N) EstImpaire(N,b) Si (b = VRAI) alors { Afficher("Le nombre ", N, " est impaire.\n") } sinon { Afficher("Le nombre ", N, " est paire.\n") } } procedure Ajout10(E/S n:entier) { n <-- n + 10 } Algorithme Utilisation { variable N : entier Afficher("Veuillez saisir un nombre entier ?") Saisir(N) Afficher("Le nombre vaut ", N, " avant l'appel à la procédure.\n") Ajout10(N) Afficher("Le nombre vaut ", N, " après l'appel à la procédure.\n") } procedure permutation(E/S X : entier, E/S Y : entier) { variable Temp : entier Temp <-- X X <-- Y Y <-- Temp } Algorithme Utilisation { variable A, B : entier Afficher("Veuillez saisir deux nombres entier : ") Saisir(A,B) Afficher("Les nombres sont ", A, " et ", B, " avant l'appel à la procédure.\n") permutation(A, B) Afficher("Les nombres sont ", A, " et ", B, " après l'appel à la procédure.\n") } procedure triCroissant(E/S A : entier, E/S B : entier, E/S C : entier) { Si (B < A) alors { permutation(A,B) } // je suis sûr d'avoir en A la plus petite des valeurs de A et B de départ Si (C < A) alors { permutation(A,C) } // ICI je suis sûr d'avoir dans A la plus petite valeur du triplet A, B , C de départ Si (C < B) alors { permutation(B,C) } // Ici A < B < C // CQFD !! } Algorithme Utilisation { variable A, B, C : entier Afficher("Veuillez saisir trois nombres entier : ") Saisir(A,B,C) Afficher("Les nombres sont ", A,", ",B, " et ", C, " avant l'appel à la procédure.\n") triCroissant(A, B, C) Afficher("Les nombres sont ", A,", ",B, " et ", C, " après l'appel à la procédure.\n") // triCroissant(C, B, A) ferait un tri dans l'ordre décroissant ! } procedure quotient_reste_div_euclidienne(E dividende : entier, E diviseur : entier, S quotient : entier, S reste : entier) { quotient <-- dividende div diviseur reste <-- dividende mod diviseur } Algorithme Utilisation { variable A, B, Q, R : entier Afficher("Veuillez saisir deux nombres entier : ") Saisir(A,B) quotient_reste_div_euclidienne(A, B, Q, R) Afficher("Le quortient de la division de ", A, " par", B, " est ", Q, " et le reste est ", R, ".\n") } procedure CalculNbjours(E mois : entier, E annee : entier, S nbjours : entier) { Selon (mois) { 1,3,5,7,8,10,12 : nbjours <-- 31 4,6,9,11 : nbjours <-- 30 2: Si (annee mod 4 = 0) alors nbjours <-- 29 sinon nbjours <-- 28 } } Algorithme Utilisation { variable m, a, nbj : entier Afficher("Veuillez saisir le mois et l'année : ") Saisir(m,a) CalculNbJours(m,a, nbj) Afficher("le nombre de jours du mois ", m, "/", a, " est ", nbj, ".\n") }