ALGORITHME Un algorithme n'est jamais lié à un langage. Principe de l'algorithme L'algorithme doit être lisible, compréhensif Règles d'algorithme : -
le nom le rôle, expliquer du résultat, le principe le corps : délimité par les mots début et fin description des variables d'écrire leur type
Convention - mettre les identifiants des variables en minuscules, le nom de la variables doit refléter son contenu - nom de la fonction ou de la procédure : une majuscule au début de chaque mot, coller, ou on utiliser des underscor. - PQL : Plan qualité logiciel (description des normes algorithmique) Les variables : Une variable doit avoir un nom, une valeur et un type Le type correspond au différente valeur de la variable Les différents typess : entier, réel, boolean, les cractères(alphabétique ou numérique), les chaînes de caractères (attention aux typages des varaibles); Les operateurs mathématique : +,-,/,*, div(modulo) Les opérandes - opérateur binaire - opérateur ternaire - opérateur unaire L'opérateur est associé à un type de donnée :
Les opérateur booleen : - non - et logique : il fout que les 2 opérandes soit vrai que la résultat soit vrai, si non faut - ou logique : il faut au moins une opérande soit vrai pour le résultat soit vrai, si non le résultat est faux. - ou exclusif : les opérandes doivent avoir des valeurs différents Les opérateur s de comparaison Les priorités :
La multiplication est prioritaire sur la division et la soustraction 3 * 2 + 5 = 11 3 * (2 + 5) = 21 Les affectations : elles sont font toujours de la droite vers la gauche ex : c a + b Si c avait une valeur avant l'affectation la valeur est perdu. Afficher et lire le contenu d'une variable variable lire() ecrire (variable) Nom : carreEntier Rôle : calculer le carré d'un entier et l'afficher Donne : valeur entrer par l'utilisateur Résultat : carre d proc principale début ecrire ("Entrer une valeur") valeur lire() carre valeur * valeur ecrire (carre) fin Ecrire un programme entrer deux valeur est les interchangé Nom : changeValeur Rôle : Echanger les valeurs de saisies Donnee : les 2 valeurs saisies au clavier Résultat : les 2 valeurs échangées Principe : debut ecrire("Entrer deux valeurs") a lire() b lire() ca ab bc ecrire( "Valeurs de a et b"a,b ) fin
Lexique : a, b, c: réel Instructions Instruction Si : instruction booléenne Instruction Si, sinon Ex Ecrire un algo qui définit si une valeur est multiple de l'autre Sachant que pour le diviseur (2 à 10) Afficher si, c'est un multiple ou non Afficher le résultat. 1 er test : la 1 er valeur doit être plus grand que la deuxième. Multiple : Rôle : rechercher si une valeur est multiple d'un nombre Donnée : valeur saisies Résultat : Principe :
debut ecrire("Entrer deux nombre") valeur1 lire() valeur2 lire() if (valeur1 > valeur2) alors resultat valeur1 divvaleur2 reste valeur1 mod valeur2 Les tableaux : Un tableau doit être déclaré de même type, toutes les valeurs doit avoir un type commun. Pour accéder à un élément du tableau, on utilise l'indice Affectation d'un élément de tableau à une variable : x t[i] Initialiser le contenu d'un tableau Tableau[1..10] : permet de saisir et mémoriser des valeurs 0 à 100
Nom : saisiValeurTableau Role : Saisir et remplir un tableau de 10 éléments contenant des valeur compris entre 0 et 100. Donnee : les valeurs saisies Résultat : le tableau rempli Principe : Utiliser une boucle pour remplir le tableau et faire un teste à l'intérieur de la boucle pour tester que la valeur soit compris [0,100] debut pour i de 0 à 9 faire ecrire("Entrer un nombre") valeur lire() si valeur > = 0 et valeur < = 100 alors t[i] <- valeur fsi fpour fin Lexique : Fonction et procédure Le principe d'une ne peut avoir que des paramètres en entrée Fonction addition(x : entire, y : entire) : reel d : entire dx+y retourner d Fin Debut a, b, c : entier c = addition(a,b) Fin addition( Procédure peut avoir des paramètres : - entrée - entrée - entrée-sortie Algo Saisir 10 valeurs dans un tableau : Fonction saisie Fonction mini Fonction maxi Fonction moyenne Procédure Saisie(e t[i] :entier, e taille : entier) i : entier
pour i de 0 à taille faire ecrie("Entrer un entier") t[i] lire() finfaire Fin Fonction rechercheMax(e t[i] : entier, e taille : entier) max : entier max t[0] pour i de 1 à taille faire if t[i] > max alors max t{i] finsi finfaire retourner max Fin Fonction rechercheMin(e t[i] : entier, e taille : entier) min : entier min t[0] pour i de 1 à taille faire if t[i] < min alors min t{i] finsi finfaire retourner min Fin Procedure calculMoyenne(e t[i] : entier, e taille : entier, s x_moyenne : réel) somme : entier Debut somme 0 pour i de 0 à taille somme = somme + t[i] Finfaire x_moyenne somme/taille Fin
Programme principale MAX 10
minTab, maxTab : entier tab tableau[MAX] : entier Saisie(tab, M) minTab = rechercheMax(tab, MAX) maxTab = rechercheMaxtab,Min) calculMoyenne(tab,MAX, moyenne) ecrire("La valeur de max est :"maxTab) ecrire("La valeur de min est :" minTab) ecrie("La moyenne est :" moyenne) Fin
Exercice résolution d'une équation du second degre Programme principale Début a,b, c, delta : entier ecrire("Entrer a : ") a lire() ecrire("Entre b:") b lire() ecrire("Entrer c") c lire() delta calculDiscriminant(a,b,c) calculRacine(delta, racine) Fin fonction calculDiscirminant(x : entier, y : entier, z : entier) d : entier d = (y ^2) – (4*x*z) returner d Fin Fonction calculRacinePositif(e x : entier, e y : entier, e delta :entier, r1 : entier, r2 : entier) r1, r2 : entier r1 = - y –sqrt(delta)/2 * x r2 = - y + sqrt(delta)/2 * x Fin Utilisation obligatoire des fonctions, le nombre de choix possible de p par rapport à n
Exercice 3 Choix possible p pour n Combien de possibilité y a-t-il pour que tire N numéros sur une grille d'un ensemble Formule n!/p!*(n-p)! var p,n, nbPass : entier Début écrire("Saisir le nombre de numéro tirés") p lire() écrire("Saisir le taille de la grille des nombres") n lire(); nbPass factorielle(n)/ factorielle(p)* factorielle(n-p) Fin Fonction factorielle(val : entier) : entier var i, res : entier Debut res val pour i de 1 à val-1 faire res res *i finpour Fin
Fonction récursif Fonction Facto(n : entier) : entier Début si n = 1 alors renvoyer 1 sinon renvoyer Facto(n-1) * n finsi Fin ………………………………............ Algorithme de trie : peut aller du simple et plus complexe. Les tries à Bull : n'est pas trop optimisé. Le principe c'est de balayer tout le tableau, et on va comparer élément par éléments (2 par 2) élément en cours avec l'élément suivant. Si l'élément en cours et plus grand que la suivante en échange. Il faut faire 2 boucles imbriqué. Il faut le tableau soit pré-reillé
Trie par insertion On part du principe, qu'on déplace les éléments au bon endroit. Pour le trie insertion fonctionne, il faut que la tableau soit déjà triller. Utiliser. Pour insérer la valeur : - soit on fait un décallage - soit on dimentionne - soit on supprime un élément 12345
insertion de 8
Trie par sélection, le tableau n'est pas triller au départ. Il faut rechercher la plus petite valeur. Ensuite on la mais dans la première position, et on reboucle 82031 02831 01832 01238 Tableau pré-triller (pré-shell) Le tableau est presque triller, Le tableau pré-triller à 4 rang pré Et ensuite on fait un trie à bull Déterminer le pas du Shell : prendre des caleurs qui ne sont pas pert et qui ne sont pas multiples entre elles Quick Sort Le trie le plus rapide, trie de récurssion. On choisi une valeur dans le tableau éléatoire. et on cherche la position définitive de cette valeur. Eµnsuite on exécute des déplacements. On compare la valeur médiane. Puis au décalle la madiane vers la gauche et en redivise par 2. Recherche récursif On par de la moitié du tableau Structure dynamique Un pointeur : c'est une variable au lieu de contenir une valeur, va contenir l'adresse d'une valeur. Le pointeur indique l'adresse le premier élément de la structure. Un pointeur doit être initialisé à null au départ, un contient une structure de même type.