Support de cours de la matière :
Algorithmique et structures de données
Spécialité : Bioinformatique Niveau : Troisième année
Dr Chehili Hamza
RÉPUBLIQUE ALGERIENNE DÉMOCRATIQUE ET POPULAIRE
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE UNIVERSITÉ DES FRÈRES MENTOURI - CONSTANTINE 1
Faculté des sciences de la nature et de la vie Département de Biologie Appliquée
Département de Biologie Appliquée
Support de cours de la matière :
Algorithmique et structures de données
Spécialité : Bioinformatique Niveau : Troisième année
Dr Chehili Hamza
RÉPUBLIQUE ALGERIENNE DÉMOCRATIQUE ET POPULAIRE
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE UNIVERSITÉ DES FRÈRES MENTOURI - CONSTANTINE 1
Faculté des sciences de la nature et de la vie Département de Biologie Appliquée
Département de Biologie Appliquée
Support de cours de la matière :
Algorithmique et structures de données
Spécialité : Bioinformatique Niveau : Troisième année
Dr Chehili Hamza
RÉPUBLIQUE ALGERIENNE DÉMOCRATIQUE ET POPULAIRE
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE SCIENTIFIQUE UNIVERSITÉ DES FRÈRES MENTOURI - CONSTANTINE 1
Faculté des sciences de la nature et de la vie Département de Biologie Appliquée
Département de Biologie Appliquée
Objectifs de l’enseignement :
Cette matière vise à amener progressivement l’étudiant à assimiler et utiliser les concepts et les techniques nécessaires pour construire des algorithmes aux problèmes rencontrés. Ceci, doit impérativement passé par la compréhension de la démarche algorithmique et les énoncés nécessaires à sa représentation en pseudo code.
Mode d’évaluation
: Examens écrits, Contrôle continuI. CONCEPTS DE BASE 1. Algorithme
Une succession finie d’opérations qui donne la solution d’un problème donné. Pour écrire un algorithme, on utilise un pseudo-langage compréhensible par une communauté. Donc, l’idée générale d’un algorithme est de donner la solution d’un problème sous forme d’opérations qui peuvent être traduites dans un langage compréhensible par la machine tout en le gardant lisible et compréhensible par une personne ordinaire.
2. Programme
Un programme est un assemblage et un enchaînement d’instructions élémentaires écrites dans un langage de programmation, et exécuté par un ordinateur afin de traiter les données d’un problème et renvoyer un ou plusieurs résultats.
3. Langage de programmation
Un langage de programmation fournit un ensemble de mots-clés et de règles de syntaxe qui permettent de créer des instructions formant des programmes et qui peuvent s’exécuter, sans souci, sur une machine.
II. STRUCTURE D’UN ALGORITHME
La figure suivante donne la structure générale d’un algorithme:
Algorithme<Nom de l’algorithme>
Déclaration
Constantes:
<Liste des constantes>
Variables:
<Liste des variables>
Début
<Liste des instructions>
1
5
4
3
2
La première ligne permetjuste d’identifier l’algorithme. Donc, le nom attribué ne change pas l’exécution et les résultats.
Avant de mettre les instructions, il faut déclarer les constantes et les variables utilisées dans l’algorithme.
La partie principale de l’algorithme se trouve entre les mots clés ‘début’ et ‘fin’ . Elle contient la suite d’instructions à exécuter.
Exemple :
4. Notion de variable
Une variable est un motqui permet l’identification de l‘emplacement mémoire où on stocke une valeur à manipuler.
AlgorithmeProduit Déclaration
x, y, z : entier Début
Lire(x, y) zx *y Ecrire(z) Fin
5 3 4
2
1
Malgré que le choix est libre du nom de la variable, il préférable, pour des raisons de lisibilité et de compréhension de choisir des noms de variables en fonctions de ce qu’elles représentent.
Par exemple: Moyenne, Poids, Taille,…etc.
La notion de type d’une variable est capitale, car elle implique le choix du codage de la variable (par exemple, un entier sur 32 bits et un caractère sur 16 bits) ainsi que les possibilité d’usage ( par exemple: on ne peut pas multiplier un caractère par un nombre entier).
Exemple de déclaration des variables : M, Max : Entier
Poids, Moyenne : Réel Premier : Bouléen
5. Notion de constante
On peut assimiler la notion d’une constante à une variable dont la valeur ne change pas au coursde l’exécution de l’algorithme.
Exemple de déclaration des constantes : TVA = 0,17
N = 50 Admis = Vrai
III. LES TYPESD’INSTRUCTIONS
La partie principale d’un algorithme contient la suite d’instruction qui va être traduite vers un langage de programmation. Il existe quatre types d’instruction dont le détail est donné par la suite :
1. Les instructions d’entrée/sortie
Ce typed’instruction est utilisé pour interagir avec l’utilisateur, en lui permettant d’entrer des valeurs des variables. Ainsi, le résultat des traitementset des messages d’informationpeuvent être affichés à l’utilisateur via ce type d’instruction. En réalité, il existe plusieurs périphériques et manières pour échanger des données avec un algorithme ou un programme (via des fichiers, des bases de données, des formulaires,…). Toutefois, pour se concentrer sur les principes de l’algorithmique, on se contente par les entrées et les sorties standards, à savoir, l’écriture sur le clavier et l’affichage sur écran. L’exploitation des autres possibilités vont être abordées dans la matière dédiée à la programmation.
a. Instruction d'entrée
C’est l'instruction de lecture de données sur le périphérique d'entrée.
Structure générale :
Exemple : Lire(Taille) Lire (x, y)
b. Instruction de sortie
C’est l'instruction de restitution de résultats sur le périphérique de sortie.
Structure générale :
Exemple :
Écrire (moyenne)
Écrire (‘ entrer la taille’) Écrire (‘lerésultat est :’,max)
2. L’instruction d’affectation
Cette instruction permet d’affecter une valeur à une variable, après l’évaluation d’une expression logique ou arithmétique.
Ala place d’une expression, on peut utiliser une simple valeur ou une variable
Il faut noter que le résultat de l’évaluation de l’expression doit avoir le même type que la variable qui va le recevoir.
Structure générale :
Exemple 1 : x 15,2 xy xy+ 4
Lire (variable)
Lire (variable1, variable2,…)
Écrire (variable) Écrire (‘message’)
Écrire (‘message’, variable)
variableexpression (variable)
3. Test sur l’instruction d’affectation
Objectif : auto-évaluation de la compréhension de l'effet des instructions d'affectation sur l'état des variables.
Exercice 1
Quelles sont les valeurs des variables a,b et c écrites par l'algorithme suivant ?
o a= 10, b=20, c=40 o a= -5, b=20, c= 10 o a= 0, b=20, c=20
Exercice 2
Quelle est l'objectif de cette séquence d'instructions ?
o Calculer la différence entre deux variables.
o Permuter les valeurs de deux variables.
xx + y yx - y xx - y Algorithme Affectation1 Variables :
a,b,c: entier Début a10 ba*2 aa- b/2 cb + a*2 Ecrire (a,b,c) Fin.
o Sans objectif.
4. Les instructions conditionnelles
Ces instructions sont utilisées pour faire le choix entre l’exécution ou non des blocs d’instructions suite à l’évaluation d’une condition. On en distingue trois types :
a. L’instruction conditionnelle simple
Ce type d’instructions permet de faire le choix entre l’exécution ou non d’un seul boc d’instructions.
Structure :
Exemple : A5 B12
SI (B>A*2) alors BA
Fin Si Ecrire (B)
b. L’instruction conditionnelle alternative
Ce type d’instructions permet de faire le choixdel’exécutionentre deux blocsd’instructions.
Structure :
SI (Condition) alors Instructions Fin Si
Exemple : A5 B12
SI (B>A*2) alors BA
Sinon
BA + 4 Fin Si Ecrire (B)
c. L’instruction conditionnelle de choix
Ce type d’instructions permet de faire le choix de l’exécution entre plusieurs blocs selon la valeur d’une variable donnée.
Structure :
Exemple : Lire (x)
Selon le cas (x)
Selon le cas (variable)
Variable = valeur 1 : instructions Variable = valeur 2 : instructions
…
Variable = valeur n : instructions Sinon
Instructions Fin Si
SI (Condition) alors Instructions Sinon
Instructions Fin Si
x = 2 :Ecrire (‘Faible) x = 3 :Ecrire (‘Moyen) x = 4 :Ecrire (‘Bien’) x = 5 :Ecrire (‘Excellent’) Sinon
Ecrire(‘Valeur hors intervalle acceptée’) Fin Si
1. Test sur l'utilisation des instructions conditionnelles
Objectif : auto-évaluation de la compréhensionde du rôle des instructions conditionnelles. Exercice
Soit l’algorithme suivant: Algorithme Test2
Déclarations : a, b, c : Entier Début
1: Lire (a, b) Si (b/2>a) Alors :
2 : cb - a Sinon
3 : cb + a 4 : ab - c Fin si
5 :Ecrire (a, b, c) Fin.
Quelles sont les instructions exécutées pour les valeurs : a = 5, b = 10 ?
2. Les instructions itératives
Les instructions itératives ou répétitives, appelées aussi communément par les développeurs les boucles, permettent d’exécuter plusieurs le même bloc d’instructions. On en distingue trois types :
a. L’instruction ‘Pour’
Dans ce type d’instructions itératives on connait à l’avance le nombre d’itérations. En effet, on doit préciser, dans l’entête de l’instruction ‘Pour’, la valeur initiale et la valeur finale et éventuellement le pas(lorsqu’il est différent de 1).
Structure :
VI : valeur initiale de la variable i, VF ; valeur finale de la variable i,
V : valeur à ajouter la variable i après chaque itération (par défaut 1).
Exemple :
Pour i allant de 1 à 10 faire
Ecrire (‘L3 Bioinformatique’) Fin pour
a. L’instruction ‘Tant que
Dans ce type d’instructions itératives on ne connait pas forcement à l’avance le nombre d’itérations. En effet, on continue la répétition de l’exécution du bloc d’instructions tant qu’une condition est encore satisfaite.
Tant que (condition) faire Instructions
Fin Tant que
Pour i allant de VI à VF (pas = V) faire Instructions
Fin Pour
Exemple : i =1
Tant que (i <= 10) faire
Ecrire (‘L3 bioinformatique’) ii + 1
Fin Tant que
a. L’instruction ‘Répéter’
Comme le cas pour l’instruction ‘Tant que’, l’instruction ‘Répéter’ ne permet pas de connaitre forcement à l’avance le nombre d’itérations. En effet, on continue la répétition de l’exécution du bloc d’instructions jusqu’à la satisfaction d’une condition.
Structure :
Exemple : i =1 Répéter
Ecrire (‘L3 bioinformatique’) ii + 1
Jusqu’à (i > 10)
Remarque : L’instruction ‘Tant que’ s’exécute zéro ou plusieurs fois, au moment où, l’instruction ‘Répéter’ s’exécute une ou plusieurs fois.
Répéter
Instructions Jusqu’à (Condition)
Série de TD 1
Exercice 1 :
Écrire un algorithme qui calcule le carré d'un nombre entier donné par l'utilisateur.
Exercice 2 :
Écrire un l'algorithme qui échange les valeurs des variables A et B.
Exercice 3 :
Écrire un algorithme qui résout une équation du premier degré ax+ b=0.
Exercice 4 :
Ecrire un algorithme qui donne la valeur absolue d'un entier.
Exercice 5 :
Écrire un algorithme qui convertit un nombre de secondes en heures: minutes: secondes.
Exercice 6 :
Écrire un algorithme qui résout une équation du second degré ax2+ bx +c=0.
Exercice 7 :
Ecrire un algorithme qui détermine si la valeur d'un entier est paire ou impaire.
Exercice 8 :
Ecrire un algorithme qui donne tous les diviseurs d'un entier positif.
Exercice 9 :
Ecrire un algorithme qui calcule le factoriel d'un entier positif.
Exercice 10 :
Ecrire un algorithme qui calcule a puissance b avec a réel et b entier par multiplication successives.
Exercice 11 :
Ecrire un algorithme qui vérifie si ce nombre est premier ou non.
Exercice 12 :
Ecrire un algorithme qui calcule le PGCD de deux entiers positifs.
Exercice 13 :
Ecrire un algorithme qui détermine si un entier positif est parfait.
Un nombre parfait est un nombre présentant la particularité d'être égal à la somme de tous ses diviseurs, excepté lui-même.
Exercice 14 :
Ecrire un algorithme qui donne le nombre d'occurrences d'un caractère donné dans une chaine lue caractère par caractère et qui se termine par un point.
Exercice 15 :
Ecrire un algorithme qui affiche tous les nombres parfaits inférieurs à 1000.
Exercice 16 :
Ecrire un algorithme qui affiche tous les nombres parfaits inférieurs à 1000.
Exercice 17 :
Ecrire un algorithme qui calcule les 10 premiers termes de la suite de Fibonacci. La suite de Fibonacci est définie par :
F0 = 1 F1= 1
Fn=Fn-2+Fn-1 pour n>1