SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
ALGORITHMIQUE ET METHODES
DE PROGRAMMATION
MSc. Sage KATALIKO
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
+243995591378
Objectifs
• Permettre aux etudiants de concevoir des algorithmes pour resoudre
des problemes
• Permettre aux etudiants d’appliquer ces algorithms en python
• Donner aux etudiants les bases de la programmation en python
• Initier les etudiants aux structures des donnees
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• GENERALITES SUR L’ALGORITHMIQUE
• LES VARIABLES
• LES PRIMITIVES
• LES FONCTIONS
• LES STRUCTURES DES DONNEES
• METHODES DE PROGRAMMATION
• PROGRAMMATION EN PYTHON
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
GENERALITES SUR L’ALGORITHME
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Un algorithme est une méthode de résolution de problème énoncée sous
la forme d'une série d'opérations à effectuer. La mise en oeuvre de
l'algorithme consiste en l'écriture de ces opérations dans un langage de
programmation et constitue alors la brique de base d’un programme
informatique.
• Exemples:
• Une recette de cuisine est un algorithme!
• Le mode d’emploi d’un magnétoscope est aussi un algorithme!
• Indiquer un chemin à un touriste égaré ou faire chercher un objet à quelqu’un par
téléphone c’est fabriquer et faire exécuter - des algorithmes.
• Un algorithme, c’est une suite d’instructions, qui une fois exécutée
correctement, conduit à un résultat donné.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• N.B:
• Si l’algorithme est juste, le résultat est le résultat voulu, et le touriste se retrouve là
où il voulait aller.
• Si l’algorithme est faux, le résultat est, disons, aléatoire, et décidément, ce
magnétoscope ne marche pas!
• Pour fonctionner, un algorithme doit donc contenir uniquement des
instructions compréhensibles par celui qui devra l’exécuter (l’ordinateur).
• Les ordinateurs eux-mêmes ne sont fondamentalement capables
d’exécuter que quatre opérations logiques :
• l’affectation de variables
• la lecture / écriture
• les tests
• les boucles
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Un algorithme informatique se ramène donc toujours au bout du
compte à la combinaison de ces quatre petites briques de base. Il
peut y en avoir quelques unes, quelques dizaines, et jusqu’à plusieurs
centaines de milliers dans certains programmes.
• La taille d’un algorithme ne conditionne pas en soi sa complexité : de
longs algorithmes peuvent être finalement assez simples, et de petits
algorithmes peuvent être très compliqués.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• L’informatique est la science du traitement automatique de
l’information.
• Pour cela il faut:
• modéliser cette information,
• définir à l’aide d’un formalisme strict les traitements dont elle fera l’objet.
• et enfin traduire ces traitements dans un langage compréhensible par un
ordinateur.
• Les deux premiers points concernent l’algorithmique, alors que le
dernier point relève de ce que l’on nomme la programmation.
• et sont l’un des centres d’intérêt de la plupart, sinon la totalité, des
domaines de cette science.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• L’écriture d’un programme consiste généralement à implanter une
méthode de résolution déjà connue et souvent conçue
indépendamment d’une machine pour fonctionner aussi bien sur
toutes les machines ou presque. Ainsi, ce n’est pas le programme
mais la méthode qu’il faut étudier pour comprendre comment traiter
le problème.
• Le terme algorithme est employé en informatique pour décrire une
méthode de résolution de problème programmable sur machine. Les
algorithmes sont la « matière » de l’informatique
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
Algorithmique (principe)
• Un algorithme est une séquence bien définie d’opérations (calcul,
manipulation de données, etc.) permettant d’accomplir une tache en un
nombre fini de pas.
• En principe un algorithme est indépendant de toute implémentation.
Cependant dans la pratique de la programmation il s’avère indispensable
de tenir compte des capacités du langage de programmation utilisé.
• La conception d’un algorithme passe par plusieurs étapes :
• Analyse : compréhension du problème
• Conception : définition d’une solution au problème
• Implémentation : traduction et réalisation de l’algorithme dans un langage précis;
• Test: Vérification du bon fonctionnement de l’algorithme.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
Les caracteristiques d’un algorithme
• Un algorithme est une marche à suivre:
• dont les opérations sont toutes définies et portent sur des objets appelés
informations,
• dont l’ordre d’exécution des opérations est défini sans ambiguïté,
• qui est réputée résoudre de manière certaine un problème ou une classe de
problèmes,
• s’exprime dans un langage indépendant des langages de programmation,
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
Algorithmique et programmation
• Un programme est la traduction d’un algorithme dans un certain
langage de programmation. Il faut savoir qu’à chaque instruction d’un
programme correspond une action du processeur.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
Le but de la programmation
• Utiliser l’ordinateur pour traiter des données afin d’obtenir des
résultats.
• Abstraction par rapport au matériel (indépendance application / plate
forme matérielle).
• Intermédiaire entre le langage machine (binaire) et le langage humain
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
Langages de programmation
• Le langage utilisé par le processeur, est appelé langage machine. Il s'agit d'une
suite de 0 et de 1 (du binaire). Toutefois le langage machine est difficilement
compréhensible par l'humain.
• Ainsi il est plus pratique de trouver un langage intermédiaire, compréhensible par
l'homme, qui sera ensuite transformé en langage machine pour être exploitable
par le processeur.
• L'assembleur est le premier langage informatique qui ait été utilisé. Celui-ci est
encore très proche du langage machine mais il permet déjà d'être plus
compréhensible.
• Toutefois un tel langage est tellement proche du langage machine qu'il dépend
étroitement du type de processeur utilisé (chaque type de processeur peut avoir
son propre langage machine).
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Ainsi un programme développé pour une machine ne pourra pas être
porté sur un autre type de machine (on désigne par le terme
"portable" un programme qui peut être utilisé sur un grand nombre
de plateformes).
• Pour pouvoir l'utiliser sur une autre plateforme il faudra alors parfois
réécrire entièrement le programme.
• Il y a trois catégories de langage de programmations:
• les langages interprétés,
• les langages intermédiaires et
• les langages compilés.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Langage compilé:
• Le code source est donné à un programme appelé compilateur qui va lire le
code source et le convertir dans un langage que l'ordinateur sera capable
d'interpréter : c'est le langage binaire, fait de 0 et de 1. Les langages comme
le C ou le C++ sont des langages dits compilés.
• En d’autres termes, un programme écrit dans un langage dit "compilé" va être
traduit une fois pour toutes par un programme annexe (le compilateur) afin
de générer un nouveau fichier qui sera autonome, c'està-dire qui n'aura plus
besoin d'un programme autre que lui pour s'exécuter (on dit d'ailleurs que ce
fichier est exécutable).
• Un programme écrit dans un langage compilé a comme avantage de ne plus
avoir besoin, une fois compilé, de programme annexe pour s'exécuter.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• De plus, la traduction étant faite une fois pour toute, il est plus rapide à
l'exécution. Toutefois il est moins souple qu'un programme écrit avec un
langage interprété car à chaque modification du fichier source il faudra
recompiler le programme pour que les modifications prennent effet.
• D'autre part, un programme compilé a pour avantage de garantir la sécurité
du code source. En effet, un langage interprété, étant directement intelligible
(lisible), permet à n'importe qui de connaître les secrets de fabrication d'un
programme et donc de copier le code voire de le modifier. Il y a donc risque
de non-respect des droits d'auteur. D'autre part, certaines applications
sécurisées nécessitent la confidentialité du code pour éviter le piratage
(transaction bancaire, paiement en ligne, communications sécurisées, ...).
• Exemples de langages compilés : Le langage C (Programmation système), le
langage C++ (Programmation système objet), le Cobol (Gestion) etc.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Langage interprété
• Dans ce cas, il n'y a pas de compilation. Le code source reste tel quel, et si on veut exécuter
ce code, on doit le fournir à un interpréteur qui se chargera de le lire et de réaliser les actions
demandées.
• Exemples de langages interprétés : Le langage HTML et le javascript(les pages web), le
langage Maple (calcul mathématique), Prolog (Intelligence artificielle), etc.- Langages
intermédiaires ou précompilés :
• Certains langages appartiennent en quelque sorte aux deux catégories précédentes (LISP,
Java, Python, C# ..) car le programme écrit avec ces langages peut dans certaines conditions
subir une phase de compilation intermédiaire vers un fichier écrit dans un langage qui n'est
pas intelligible (donc différent du fichier source) et non exécutable (nécessité d'un
interpréteur). Autrement dit, ici, le code source est compilé partiellement, généralement
dans un code plus simple à lire pour l'ordinateur, mais qui n'est pas encore du binaire. Ce
code intermédiaire devra être lu par ce que l'on appelle une « machine virtuelle » qu’on peut
considérer comme interpréteur, qui exécutera ce code. Les applets Java, petits programmes
insérés parfois dans les pages Web, sont des fichiers qui sont compilés mais que l'on ne peut
exécuter qu'à partir d'un navigateur Internet (ce sont des fichiers dont l'extension est .class).
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Toutefois, à peu près tous les langages de programmation sont basés sur le
même principe: Le programme est constitué d'une suite d'instructions que la
machine doit exécuter. Celle-ci exécute les instructions au fur et à mesure
qu'elle lit le fichier (donc de haut en bas) jusqu'à ce qu'elle rencontre une
instruction (appelée parfois instruction de branchement) qui lui indique
d'aller à un endroit précis du programme. Il s'agit donc d'une sorte de jeu de
piste dans lequel la machine doit suivre le fil conducteur et exécuter les
instructions qu'elle rencontre jusqu'à ce qu'elle arrive à la fin du programme
et celui-ci s'arrête.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
Historique des langages
• Langage de bas niveau (proche du langage machine):
• Jusqu’en 1945 : langage binaire
• 1950 : langage assembleur
• Langage de haut niveau (proche des langages naturels):
• Depuis 1955:
• Programmation procédurale : Fortran, Cobol, Basic, Pascal, C, Ada…
• Programmation orienté objet : SmallTalk, C++, Delphi, Java…
• Programmation logique : Prolog…
• Et beaucoup d’autres…
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Evolution:
• Programmation impérative (fonction):
• Exemples : Pascal, C, …
• Programmation orientée objet (POO) :
• Exemples : SmallTalk, Java, C++, …
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
La démarche de programmation et analyse
descendante
• La résolution d'un problème passe par toute une suite d'étapes:
• Phase d'analyse et de réflexion (algorithmique) Phase de programmation
• choisir un langage de programmation
• traduction de l'algorithme en programme
• programme (ou code) source
• compilation : traduction du code source en code objet
• traduction du code objet en code machine exécutable, compréhensible par
l'ordinateur
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Phase de test
• Phase d’exécution
• Le travail est ici surtout basé sur l'analyse du problème et l'écriture de
l'algorithme. La réalisation d'un programme passe par l'analyse
descendante du problème: il faut réussir à trouver les actions élémentaires
qui, en partant d'un environnement initial, nous conduisent à l'état final.
• L’analyse descendante consiste à décomposer le problème donné en sous-
problèmes, et ainsi de suite, jusqu’à descendre au niveau des primitives.
Les étapes successives donnent lieu à des sous algorithmes qui peuvent
être considérés comme les primitives de machine intermédiaires
(procédures en Pascal, fonction en C).
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Le travail de l’analyse est terminé lorsqu’on a obtenu un algorithme ne
comportant que:
• Des primitives de la machine initiale,
• Des algorithmes déjà connus.
• L’ordre des instructions est essentiel : la machine ne peut exécuter qu’une action
à la fois et dans l’ordre donné; c’est la propriété de séquentialité. Une fois ces
actions déterminées, il suffit de les traduire dans le langage de programmation.
• Durant l'écriture d'un programme, on peut être confronté à 2 types d'erreur:
• les erreurs syntaxiques : elles se remarquent à la compilation et sont le résultat d'une
mauvaise écriture dans le langage de programmation.
• les erreurs sémantiques: elles se remarquent à l'exécution et sont le résultat d'une mauvaise
analyse. Ces erreurs sont beaucoup plus graves car elles peuvent se déclencher en cours
d'exploitation du programme.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
Exécuter un programme
• La mise au point d'un programme informatique se fait en plusieurs
étapes.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
Représentation d’un algorithme
• Historiquement, plusieurs types de notations ont
représentédes algorithmes:
• Il y a une représentation graphique, avec des carrés, des losanges,
etc. qu’on appelle des ordinogrammes.
• On utilise généralement une série de conventions appelée « pseudo-
code », qui ressemble à un langage de programmation authentique.
• Donc, chaque cuisinier peut faire sa sauce à sa guise, avec ses petites
épices bien à lui, sans quecela prête à conséquence.
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Ordinogramme
• Représentation graphique de l’algorithme. Pour le construire, on utilise des
symboles normalisés
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Indépendamment du type de procédure représenté, un algorithme
est composé au minimum des trois éléments suivants:
• Les données entrant dans l’algorithme (entrées)
• Les opérations transformant les données en résultats
• Les résultats sortant de l’algorithme (sorties)
Le parallélogramme est le symbole E/S
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Un algorithme doit avoir:
• Un et un seul point d’entrée:
• Un et un seul point de sortie:
• Ils sont appelés symboles terminaux. Les symboles sont reliés par des
lignes de flux.
• Chaque symbole d’opération dispose de
• Un et un seul flux d’entrée Un et un seul flux de sortie
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
• Pseudo-code
• L’ordinogramme représente graphiquement l’algorithme. C’est visuel (un
dessin vaut mille mots!), mais ça exige plus de travail de mise en page et plus
d’espace sur papier.
• Le pseudo-code représente textuellement l’algorithme. Moins visuel, mais
plus facile à mettre sur papier et requiert moins d’espace L’algorithme est
décrit sous forme de mots et phrases; Semblable aux langages de
programmation (Visual Basic, Pascal, C, …), le pseudo-code est généralement
préféré à l’ordinogramme. Il est plus rapide à écrire et plus facile à traduire en
un langage de programmation
• Avantage du pseudo-code
• Le pseudo-code est facilement traduisible en un langage de programmation.
Exemples
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
(pseudocode)
Nom : multiplication
Rôle : demander deux nombres et afficher leur
Début
variables A, B, C : entiers
écrire " entrer la valeur de A : "
lire A
écrire "entrer la valeur de B : «
lire B
C←ßA*B
écrire "le produit de " & A & " et " & B & " est : "& C
Fin
COURS D'ALGORITHMIQUE ET METHODES DE
PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020

Contenu connexe

Tendances

Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationECAM Brussels Engineering School
 
Les signatures avec java.security
Les signatures avec java.securityLes signatures avec java.security
Les signatures avec java.securityMehdi EL KRARI
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1SinGuy
 
Chapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptxChapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptxFerdawsBNasrBSalah
 
Formation python
Formation pythonFormation python
Formation pythonj_lipaz
 
Algorithmique et Structures de Données II
Algorithmique et Structures de Données IIAlgorithmique et Structures de Données II
Algorithmique et Structures de Données IIRiadh Bouslimi
 
L’algorithme 1.pptx
L’algorithme 1.pptxL’algorithme 1.pptx
L’algorithme 1.pptxOkanimegamers
 
Qcm en-informatique-avec-correction
Qcm en-informatique-avec-correction Qcm en-informatique-avec-correction
Qcm en-informatique-avec-correction Jamal Yasser
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleECAM Brussels Engineering School
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithmebadr zaimi
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite completChahrawoods Dmz
 
Intelligence Artificielle - Systèmes experts
Intelligence Artificielle - Systèmes expertsIntelligence Artificielle - Systèmes experts
Intelligence Artificielle - Systèmes expertsMohamed Heny SELMI
 
Cours algorithme: structures répétitives
Cours algorithme: structures répétitivesCours algorithme: structures répétitives
Cours algorithme: structures répétitivesInforMatica34
 
regression_logistique.pdf
regression_logistique.pdfregression_logistique.pdf
regression_logistique.pdfSidiAbdallah1
 
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...ATPENSC-Group
 

Tendances (20)

Programmation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communicationProgrammation de systèmes embarqués : Bus et périphériques de communication
Programmation de systèmes embarqués : Bus et périphériques de communication
 
Les signatures avec java.security
Les signatures avec java.securityLes signatures avec java.security
Les signatures avec java.security
 
Systeme embarque td1
Systeme embarque td1Systeme embarque td1
Systeme embarque td1
 
Chapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptxChapitre5 les chaînes de caractères - Copy.pptx
Chapitre5 les chaînes de caractères - Copy.pptx
 
Formation stm32
Formation stm32Formation stm32
Formation stm32
 
Formation python
Formation pythonFormation python
Formation python
 
Algorithmique et Structures de Données II
Algorithmique et Structures de Données IIAlgorithmique et Structures de Données II
Algorithmique et Structures de Données II
 
L’algorithme 1.pptx
L’algorithme 1.pptxL’algorithme 1.pptx
L’algorithme 1.pptx
 
Qcm en-informatique-avec-correction
Qcm en-informatique-avec-correction Qcm en-informatique-avec-correction
Qcm en-informatique-avec-correction
 
Intelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielleIntelligence Artificielle : Introduction à l'intelligence artificielle
Intelligence Artificielle : Introduction à l'intelligence artificielle
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithme
 
QCM Sécurité Informatique
QCM Sécurité InformatiqueQCM Sécurité Informatique
QCM Sécurité Informatique
 
Cours algorithmique et complexite complet
Cours algorithmique et complexite completCours algorithmique et complexite complet
Cours algorithmique et complexite complet
 
Les systèmes embarqués arduino
Les systèmes embarqués arduinoLes systèmes embarqués arduino
Les systèmes embarqués arduino
 
Intelligence Artificielle - Systèmes experts
Intelligence Artificielle - Systèmes expertsIntelligence Artificielle - Systèmes experts
Intelligence Artificielle - Systèmes experts
 
Cours de c
Cours de cCours de c
Cours de c
 
Prez PFE
Prez PFEPrez PFE
Prez PFE
 
Cours algorithme: structures répétitives
Cours algorithme: structures répétitivesCours algorithme: structures répétitives
Cours algorithme: structures répétitives
 
regression_logistique.pdf
regression_logistique.pdfregression_logistique.pdf
regression_logistique.pdf
 
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...
Fiche de TP 3 sur les bases de données avec les SGBD(Système de Gestion des B...
 

Similaire à Algorithmique et methodes de programmation

cours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.comcours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.comcoursedu
 
Objectif algorithme
Objectif algorithmeObjectif algorithme
Objectif algorithmewwwsaidnet
 
Programmation en technologie (C.Blin)
Programmation en technologie (C.Blin)Programmation en technologie (C.Blin)
Programmation en technologie (C.Blin)APMEPIledeFrance
 
Gl slides-cours-1
Gl slides-cours-1Gl slides-cours-1
Gl slides-cours-1Sami Neili
 
resume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfresume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfFootballLovers9
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)mahbouba
 
initialisation sur algorithme chapitre 1
initialisation sur algorithme chapitre 1initialisation sur algorithme chapitre 1
initialisation sur algorithme chapitre 1CheikhTidiane8
 
Algorithme et Programmation
Algorithme et ProgrammationAlgorithme et Programmation
Algorithme et ProgrammationMonssifNajim1
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Amina HAMEURLAINE
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxOlyvierNzighou1
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxOlyvierNzighou1
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptxMED B
 
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfLUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfRedaBelattar
 

Similaire à Algorithmique et methodes de programmation (20)

cours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.comcours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
cours Algorithmique SMP-SMC s2 by coursedu.blogspot.com
 
Objectif algorithme
Objectif algorithmeObjectif algorithme
Objectif algorithme
 
Algorithme
AlgorithmeAlgorithme
Algorithme
 
Programmation en technologie (C.Blin)
Programmation en technologie (C.Blin)Programmation en technologie (C.Blin)
Programmation en technologie (C.Blin)
 
Gl slides-cours-1
Gl slides-cours-1Gl slides-cours-1
Gl slides-cours-1
 
resume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdfresume-theorique-m106-2004-6261bb9556a66.pdf
resume-theorique-m106-2004-6261bb9556a66.pdf
 
Chapitre 1 (algorithme)
Chapitre 1 (algorithme)Chapitre 1 (algorithme)
Chapitre 1 (algorithme)
 
Pl 2-bis
Pl 2-bisPl 2-bis
Pl 2-bis
 
initialisation sur algorithme chapitre 1
initialisation sur algorithme chapitre 1initialisation sur algorithme chapitre 1
initialisation sur algorithme chapitre 1
 
Ktab asd
Ktab asdKtab asd
Ktab asd
 
Asd
AsdAsd
Asd
 
Ch1-Généralités.pdf
Ch1-Généralités.pdfCh1-Généralités.pdf
Ch1-Généralités.pdf
 
Chapitre 01 - Notions de base
Chapitre 01 - Notions de baseChapitre 01 - Notions de base
Chapitre 01 - Notions de base
 
Algorithme et Programmation
Algorithme et ProgrammationAlgorithme et Programmation
Algorithme et Programmation
 
Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++Cours Programmation Orientée Objet en C++
Cours Programmation Orientée Objet en C++
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
cours fortran.pptx
cours fortran.pptxcours fortran.pptx
cours fortran.pptx
 
algo & prog python.pptx
algo & prog python.pptxalgo & prog python.pptx
algo & prog python.pptx
 
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdfLUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
LUP IRT 2021_2022 - Cours - Programmation Python (Partie I).pdf
 

Algorithmique et methodes de programmation

  • 1. ALGORITHMIQUE ET METHODES DE PROGRAMMATION MSc. Sage KATALIKO COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020 +243995591378
  • 2. Objectifs • Permettre aux etudiants de concevoir des algorithmes pour resoudre des problemes • Permettre aux etudiants d’appliquer ces algorithms en python • Donner aux etudiants les bases de la programmation en python • Initier les etudiants aux structures des donnees COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 3. • GENERALITES SUR L’ALGORITHMIQUE • LES VARIABLES • LES PRIMITIVES • LES FONCTIONS • LES STRUCTURES DES DONNEES • METHODES DE PROGRAMMATION • PROGRAMMATION EN PYTHON COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 4. GENERALITES SUR L’ALGORITHME COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 5. • Un algorithme est une méthode de résolution de problème énoncée sous la forme d'une série d'opérations à effectuer. La mise en oeuvre de l'algorithme consiste en l'écriture de ces opérations dans un langage de programmation et constitue alors la brique de base d’un programme informatique. • Exemples: • Une recette de cuisine est un algorithme! • Le mode d’emploi d’un magnétoscope est aussi un algorithme! • Indiquer un chemin à un touriste égaré ou faire chercher un objet à quelqu’un par téléphone c’est fabriquer et faire exécuter - des algorithmes. • Un algorithme, c’est une suite d’instructions, qui une fois exécutée correctement, conduit à un résultat donné. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 6. • N.B: • Si l’algorithme est juste, le résultat est le résultat voulu, et le touriste se retrouve là où il voulait aller. • Si l’algorithme est faux, le résultat est, disons, aléatoire, et décidément, ce magnétoscope ne marche pas! • Pour fonctionner, un algorithme doit donc contenir uniquement des instructions compréhensibles par celui qui devra l’exécuter (l’ordinateur). • Les ordinateurs eux-mêmes ne sont fondamentalement capables d’exécuter que quatre opérations logiques : • l’affectation de variables • la lecture / écriture • les tests • les boucles COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 7. • Un algorithme informatique se ramène donc toujours au bout du compte à la combinaison de ces quatre petites briques de base. Il peut y en avoir quelques unes, quelques dizaines, et jusqu’à plusieurs centaines de milliers dans certains programmes. • La taille d’un algorithme ne conditionne pas en soi sa complexité : de longs algorithmes peuvent être finalement assez simples, et de petits algorithmes peuvent être très compliqués. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 8. • L’informatique est la science du traitement automatique de l’information. • Pour cela il faut: • modéliser cette information, • définir à l’aide d’un formalisme strict les traitements dont elle fera l’objet. • et enfin traduire ces traitements dans un langage compréhensible par un ordinateur. • Les deux premiers points concernent l’algorithmique, alors que le dernier point relève de ce que l’on nomme la programmation. • et sont l’un des centres d’intérêt de la plupart, sinon la totalité, des domaines de cette science. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 9. • L’écriture d’un programme consiste généralement à implanter une méthode de résolution déjà connue et souvent conçue indépendamment d’une machine pour fonctionner aussi bien sur toutes les machines ou presque. Ainsi, ce n’est pas le programme mais la méthode qu’il faut étudier pour comprendre comment traiter le problème. • Le terme algorithme est employé en informatique pour décrire une méthode de résolution de problème programmable sur machine. Les algorithmes sont la « matière » de l’informatique COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 10. Algorithmique (principe) • Un algorithme est une séquence bien définie d’opérations (calcul, manipulation de données, etc.) permettant d’accomplir une tache en un nombre fini de pas. • En principe un algorithme est indépendant de toute implémentation. Cependant dans la pratique de la programmation il s’avère indispensable de tenir compte des capacités du langage de programmation utilisé. • La conception d’un algorithme passe par plusieurs étapes : • Analyse : compréhension du problème • Conception : définition d’une solution au problème • Implémentation : traduction et réalisation de l’algorithme dans un langage précis; • Test: Vérification du bon fonctionnement de l’algorithme. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 11. Les caracteristiques d’un algorithme • Un algorithme est une marche à suivre: • dont les opérations sont toutes définies et portent sur des objets appelés informations, • dont l’ordre d’exécution des opérations est défini sans ambiguïté, • qui est réputée résoudre de manière certaine un problème ou une classe de problèmes, • s’exprime dans un langage indépendant des langages de programmation, COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 12. Algorithmique et programmation • Un programme est la traduction d’un algorithme dans un certain langage de programmation. Il faut savoir qu’à chaque instruction d’un programme correspond une action du processeur. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 13. Le but de la programmation • Utiliser l’ordinateur pour traiter des données afin d’obtenir des résultats. • Abstraction par rapport au matériel (indépendance application / plate forme matérielle). • Intermédiaire entre le langage machine (binaire) et le langage humain COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 14. Langages de programmation • Le langage utilisé par le processeur, est appelé langage machine. Il s'agit d'une suite de 0 et de 1 (du binaire). Toutefois le langage machine est difficilement compréhensible par l'humain. • Ainsi il est plus pratique de trouver un langage intermédiaire, compréhensible par l'homme, qui sera ensuite transformé en langage machine pour être exploitable par le processeur. • L'assembleur est le premier langage informatique qui ait été utilisé. Celui-ci est encore très proche du langage machine mais il permet déjà d'être plus compréhensible. • Toutefois un tel langage est tellement proche du langage machine qu'il dépend étroitement du type de processeur utilisé (chaque type de processeur peut avoir son propre langage machine). COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 15. • Ainsi un programme développé pour une machine ne pourra pas être porté sur un autre type de machine (on désigne par le terme "portable" un programme qui peut être utilisé sur un grand nombre de plateformes). • Pour pouvoir l'utiliser sur une autre plateforme il faudra alors parfois réécrire entièrement le programme. • Il y a trois catégories de langage de programmations: • les langages interprétés, • les langages intermédiaires et • les langages compilés. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 16. • Langage compilé: • Le code source est donné à un programme appelé compilateur qui va lire le code source et le convertir dans un langage que l'ordinateur sera capable d'interpréter : c'est le langage binaire, fait de 0 et de 1. Les langages comme le C ou le C++ sont des langages dits compilés. • En d’autres termes, un programme écrit dans un langage dit "compilé" va être traduit une fois pour toutes par un programme annexe (le compilateur) afin de générer un nouveau fichier qui sera autonome, c'està-dire qui n'aura plus besoin d'un programme autre que lui pour s'exécuter (on dit d'ailleurs que ce fichier est exécutable). • Un programme écrit dans un langage compilé a comme avantage de ne plus avoir besoin, une fois compilé, de programme annexe pour s'exécuter. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 17. • De plus, la traduction étant faite une fois pour toute, il est plus rapide à l'exécution. Toutefois il est moins souple qu'un programme écrit avec un langage interprété car à chaque modification du fichier source il faudra recompiler le programme pour que les modifications prennent effet. • D'autre part, un programme compilé a pour avantage de garantir la sécurité du code source. En effet, un langage interprété, étant directement intelligible (lisible), permet à n'importe qui de connaître les secrets de fabrication d'un programme et donc de copier le code voire de le modifier. Il y a donc risque de non-respect des droits d'auteur. D'autre part, certaines applications sécurisées nécessitent la confidentialité du code pour éviter le piratage (transaction bancaire, paiement en ligne, communications sécurisées, ...). • Exemples de langages compilés : Le langage C (Programmation système), le langage C++ (Programmation système objet), le Cobol (Gestion) etc. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 18. • Langage interprété • Dans ce cas, il n'y a pas de compilation. Le code source reste tel quel, et si on veut exécuter ce code, on doit le fournir à un interpréteur qui se chargera de le lire et de réaliser les actions demandées. • Exemples de langages interprétés : Le langage HTML et le javascript(les pages web), le langage Maple (calcul mathématique), Prolog (Intelligence artificielle), etc.- Langages intermédiaires ou précompilés : • Certains langages appartiennent en quelque sorte aux deux catégories précédentes (LISP, Java, Python, C# ..) car le programme écrit avec ces langages peut dans certaines conditions subir une phase de compilation intermédiaire vers un fichier écrit dans un langage qui n'est pas intelligible (donc différent du fichier source) et non exécutable (nécessité d'un interpréteur). Autrement dit, ici, le code source est compilé partiellement, généralement dans un code plus simple à lire pour l'ordinateur, mais qui n'est pas encore du binaire. Ce code intermédiaire devra être lu par ce que l'on appelle une « machine virtuelle » qu’on peut considérer comme interpréteur, qui exécutera ce code. Les applets Java, petits programmes insérés parfois dans les pages Web, sont des fichiers qui sont compilés mais que l'on ne peut exécuter qu'à partir d'un navigateur Internet (ce sont des fichiers dont l'extension est .class). COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 19. • Toutefois, à peu près tous les langages de programmation sont basés sur le même principe: Le programme est constitué d'une suite d'instructions que la machine doit exécuter. Celle-ci exécute les instructions au fur et à mesure qu'elle lit le fichier (donc de haut en bas) jusqu'à ce qu'elle rencontre une instruction (appelée parfois instruction de branchement) qui lui indique d'aller à un endroit précis du programme. Il s'agit donc d'une sorte de jeu de piste dans lequel la machine doit suivre le fil conducteur et exécuter les instructions qu'elle rencontre jusqu'à ce qu'elle arrive à la fin du programme et celui-ci s'arrête. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 20. Historique des langages • Langage de bas niveau (proche du langage machine): • Jusqu’en 1945 : langage binaire • 1950 : langage assembleur • Langage de haut niveau (proche des langages naturels): • Depuis 1955: • Programmation procédurale : Fortran, Cobol, Basic, Pascal, C, Ada… • Programmation orienté objet : SmallTalk, C++, Delphi, Java… • Programmation logique : Prolog… • Et beaucoup d’autres… COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 21. • Evolution: • Programmation impérative (fonction): • Exemples : Pascal, C, … • Programmation orientée objet (POO) : • Exemples : SmallTalk, Java, C++, … COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 22. La démarche de programmation et analyse descendante • La résolution d'un problème passe par toute une suite d'étapes: • Phase d'analyse et de réflexion (algorithmique) Phase de programmation • choisir un langage de programmation • traduction de l'algorithme en programme • programme (ou code) source • compilation : traduction du code source en code objet • traduction du code objet en code machine exécutable, compréhensible par l'ordinateur COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 23. • Phase de test • Phase d’exécution • Le travail est ici surtout basé sur l'analyse du problème et l'écriture de l'algorithme. La réalisation d'un programme passe par l'analyse descendante du problème: il faut réussir à trouver les actions élémentaires qui, en partant d'un environnement initial, nous conduisent à l'état final. • L’analyse descendante consiste à décomposer le problème donné en sous- problèmes, et ainsi de suite, jusqu’à descendre au niveau des primitives. Les étapes successives donnent lieu à des sous algorithmes qui peuvent être considérés comme les primitives de machine intermédiaires (procédures en Pascal, fonction en C). COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 24. • Le travail de l’analyse est terminé lorsqu’on a obtenu un algorithme ne comportant que: • Des primitives de la machine initiale, • Des algorithmes déjà connus. • L’ordre des instructions est essentiel : la machine ne peut exécuter qu’une action à la fois et dans l’ordre donné; c’est la propriété de séquentialité. Une fois ces actions déterminées, il suffit de les traduire dans le langage de programmation. • Durant l'écriture d'un programme, on peut être confronté à 2 types d'erreur: • les erreurs syntaxiques : elles se remarquent à la compilation et sont le résultat d'une mauvaise écriture dans le langage de programmation. • les erreurs sémantiques: elles se remarquent à l'exécution et sont le résultat d'une mauvaise analyse. Ces erreurs sont beaucoup plus graves car elles peuvent se déclencher en cours d'exploitation du programme. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 25. Exécuter un programme • La mise au point d'un programme informatique se fait en plusieurs étapes. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 26. Représentation d’un algorithme • Historiquement, plusieurs types de notations ont représentédes algorithmes: • Il y a une représentation graphique, avec des carrés, des losanges, etc. qu’on appelle des ordinogrammes. • On utilise généralement une série de conventions appelée « pseudo- code », qui ressemble à un langage de programmation authentique. • Donc, chaque cuisinier peut faire sa sauce à sa guise, avec ses petites épices bien à lui, sans quecela prête à conséquence. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 27. • Ordinogramme • Représentation graphique de l’algorithme. Pour le construire, on utilise des symboles normalisés COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 28. • Indépendamment du type de procédure représenté, un algorithme est composé au minimum des trois éléments suivants: • Les données entrant dans l’algorithme (entrées) • Les opérations transformant les données en résultats • Les résultats sortant de l’algorithme (sorties) Le parallélogramme est le symbole E/S COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 29. • Un algorithme doit avoir: • Un et un seul point d’entrée: • Un et un seul point de sortie: • Ils sont appelés symboles terminaux. Les symboles sont reliés par des lignes de flux. • Chaque symbole d’opération dispose de • Un et un seul flux d’entrée Un et un seul flux de sortie COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 30. COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 31. • Pseudo-code • L’ordinogramme représente graphiquement l’algorithme. C’est visuel (un dessin vaut mille mots!), mais ça exige plus de travail de mise en page et plus d’espace sur papier. • Le pseudo-code représente textuellement l’algorithme. Moins visuel, mais plus facile à mettre sur papier et requiert moins d’espace L’algorithme est décrit sous forme de mots et phrases; Semblable aux langages de programmation (Visual Basic, Pascal, C, …), le pseudo-code est généralement préféré à l’ordinogramme. Il est plus rapide à écrire et plus facile à traduire en un langage de programmation • Avantage du pseudo-code • Le pseudo-code est facilement traduisible en un langage de programmation. Exemples COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020
  • 32. (pseudocode) Nom : multiplication Rôle : demander deux nombres et afficher leur Début variables A, B, C : entiers écrire " entrer la valeur de A : " lire A écrire "entrer la valeur de B : « lire B C←ßA*B écrire "le produit de " & A & " et " & B & " est : "& C Fin COURS D'ALGORITHMIQUE ET METHODES DE PROGRAMMATION - UNIVERSITE OFFICIELLE DE SEMULIKI 2020