Académique Documents
Professionnel Documents
Culture Documents
INTRODUCTION A L’ALGORITHMIQUE
ET À LA PROGRAMMATION EN PASCAL
SKILLS AND CASE STUDY
3. Mots clés
4. Organisation du cours
7. Références bibliographiques
Objectifs du cours
CHAPITRE 1
Dr FOTSING Eric
Université de Dschang
IUT Fotso Victor de Bandjoun
Content
• 1. Introduction : Concepts fondamentaux
– Etapes de l’informatisation
• Logiciels, programme et programmation ou codage,
• Notion d’algorithme et d’organigramme
– Algorithmique et programmation :
• Frontière et liens, avantages de l’algorithmique
• Avec quelles conventions les écrit-on ?
• Qualités d’un bon algorithme/programme
– Pré-requis : Faut-il être matheux ?
• Démarche informatique en tant que science
• Structure et fonctionnement d’un ordinateur
• Bases mathématiques
Introduction aux concepts fondamentaux
• Etapes de résolution d'un problème portant sur….
1. Comprendre l’énoncé du problème
2. Décomposer le problème en sous-problèmes plus simple à
résoudre (DPR)
3. Associer à chaque sous problème, une spécification :
• Les données résultantes : que veut-on ? Sorties
• Les données nécessaires : de quoi a – t- on besoin? Entrées
• La démarche à suivre : quelles opérations pour arriver au résultat en
partant d'un ensemble de données. Traitements
4. Elaboration d'un algorithme et tester (dérouler pour
vérifier).
Introduction aux concepts fondamentaux
• Informatiser une application, c'est faire réaliser par
ordinateur, une tâche qui était réalisée par l'Homme. Pour
cela, il faut :
– tout d'abord, connaître la résolution manuelle du
problème , détailler suffisamment les étapes de
résolution du problème, pour qu'elle soit exécutable par
l'homme.
– Ensuite, transférer la résolution en une suite d'étapes si
élémentaire et simple à exécuter, pouvant être codée
en un programme dans un langage compréhensible par
l’ordinateur.
– connaître les capacités de l'ordinateur en terme
d'actions élémentaires qu'il peut assurer et la logique
d'exécution des instructions.
Introduction aux concepts fondamentaux
• Un algorithme ?
– décrit une succession d'opérations, d’étapes, d’instructions élémentaires et
simple à exécuter qui, si elles sont fidèlement exécutées, produiront le résultat
désiré ou mèneront à la résolution d’un problème.
– est une suite ordonnée d’opération permettant d’obtenir un résultat déterminé
en un temps fini.
– Est une suite finie, séquentielle de règles que l’on applique à un nombre fini de
données, permettant de résoudre des classes de problèmes semblables.
– Est un calcul, un enchaînement des actions nécessaires à l’accomplissement
d’une tâche
– séquence d’étapes de calcul qui transforment l’entrée en sortie.
– Procédure de calcul bien définie qui prend en entrée une ou plusieurs valeurs,
et qui donne en sortie, une ou plusieurs valeurs
• L’algorithmique ?
– C’est la logique d'écrire des algorithmes ou la science/technologie qui étudie
les algorithmes.
– c’est le choix d’un algorithme, le choix d’une structure de données, les deux
étant indissociables
Introduction aux concepts fondamentaux
• Exemples d’algorithme?
• L’algorithme d’Euclide permet de trouver le P.G.C.D de 2 nombres
• Les algorithmes de tri permettent de réarranger et de classer des
données (par sélection, insertion, etc).
• Un algorithme de recherche permet de localiser des données dans un
fichier, un tableau ou une liste chainée. Les méthodes sont très
variées et dépendent de l’organisation des données dans la mémoire.
• Les algorithme de traitement de chaines de caractères portent sur la
manipulation de (longues) chaines de caractères, la recherche de
motifs dans des chaines (pattern matching),
• Les algorithme de compression de fichiers
• Les algorithmes de parcours de graphes pour la résolution de
problèmes complexes (le problème du voyageur de commerce).
• Algorithmes mathématiques provenant des problèmes d’analyse
numérique et de l’arithmétique des entiers, des polynômes, des
matrices.
Introduction aux concepts fondamentaux
• Exemples d’algorithme?
• Le projet du génome humain a pour objectifs (chacune de ces étapes
exige des algorithmes très élaborés)
– d’identifier les 100 000 gènes de l’ADN humain, - de déterminer les séquences
des 3 milliards de paires de bases chimiques qui constituent l’ADN humain,
– de stocker ces informations dans des bases de données et
– de développer des outils d’analyse de données.
• Les services d’Internet reposent sur des algorithmes intelligents qui
permettent de gérer et manipuler de grosses masses de données.
(recherche de routes optimales , utilisation d’un moteur de recherche pour trouver
rapidement les pages contenant un type de données
• Dans le e-commerce, on doit préserver la confidentialité de données.
La cryptographie s’appuient sur des algorithmes numériques et sur la théorie des
nombres.
• Dans l’industrie ou le commerce, pour optimiser l’allocation de
ressources limitées on utilise des algorithmes de programmation
linéaire
Introduction aux concepts fondamentaux
• Algorithme et programmation
• Un algorithme est
– motivé par la résolution d’une tâche, d’un problème
– une méthode indépendante de la machine
– une méthode indépendante du langage de programmation
– une résolution structurée
• Pourquoi ne pas donner comme instruction unique :
« résous le problème », et laisser l’interlocuteur se
débrouiller avec ça
– Pour fonctionner, un algorithme doit donc contenir uniquement
des instructions compréhensibles par celui qui devra l’exécuter
(ordinateur)
– Un algorithme doit pouvoir être facilement traductible en
programme informatique exécutable par un ordinateur
Introduction aux concepts fondamentaux
• Algorithme et programmation
• Un programme c'est un algorithme codé dans un langage
compréhensible par ordinateur à l'aide d'un compilateur
(traducteur).
– La programmation ou le codage.
– « Un langage de programmation est une convention
pour donner des ordres à un ordinateur. Ce n’est pas
censé être obscur, bizarre et plein de pièges subtils.»
• L’ADN, qui est en quelque sorte le programme génétique,
l’algorithme à la base de construction des êtres vivants, est
une chaîne construite à partir de quatre éléments
invariables. Ce n’est que le nombre de ces éléments, ainsi
que l’ordre dans lequel ils sont arrangés, qui vont
déterminer si on obtient une puce ou un éléphant.
Introduction aux concepts fondamentaux
• Algorithme et programmation
• Les ordinateurs ne sont fondamentalement capables de
comprendre que quatre catégories d'instructions:
– l’affectation de variables
– la lecture / écriture
– les tests
– les boucles
• 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 de
gestion.
– la taille d’un algorithme ne conditionne pas en soi sa complexité :
Introduction aux concepts fondamentaux
• Algorithmique : avantages
• Pourquoi apprendre l’algorithmique pour apprendre
à programmer ?
• Apprendre l’algorithmique,
– c’est apprendre à manier la structure logique d’un
programme informatique.
– Cette dimension est présente quelle que soit le langage
de programmation ;
– mais lorsqu’on programme dans un langage on
s’encombre en plus des problèmes de syntaxe, ou de
types d’instructions, propres à ce langage.
– c’est donc sérier les difficultés pour mieux les vaincre.
Introduction aux concepts fondamentaux
• Algorithmique : avantages
• Programmeurs autodidactes
– ne font pas mentalement clairement la différence entre ce qui
relève de la structure logique générale de tout programme et ce
qui relève du langage particulier qu’ils ont appris.
– Ont beaucoup plus de mal à passer ensuite à un langage différent,
– Ecrivent bien souvent des programmes qui même s’ils sont justes,
restent laborieux à comprendre ou maintenir.
• Les algorithmes sont au cœur de la plupart des
technologies employées dans les ordinateurs modernes.
– La conception des matériels performants utilise des algorithmes.
– Toutes les interfaces utilisateur graphiques reposent sur des algorithmes
– En réseau ? Le routage s’appuie fondamentalement sur des algorithmes
– Les compilateurs, interpréteur ou un assembleur, toutes ces belles
choses faisant un usage intensif d’algorithmes
Introduction aux concepts fondamentaux
• Algorithmes : avec quelles conventions les écrit-on?
• En quoi a-t-on besoin d’un langage spécial, distinct des
langages de programmation compréhensibles par les
ordinateurs ? Parce que l’algorithmique exprime les instructions
résolvant un problème donné indépendamment des particularités de
tel ou tel langage. (Organigrammes ou flowchart, Pseudo-code)
– D’abord en francais ou anglais (concis)
– Un organigramme ou ordinogramme est la représentation
schématique d’un algorithme où les traitements sont représentés
par des symboles standards relié par des traits.
– Un pseudo-code est la représentation d’un algorithme dans un
langage compréhensible mais proche des langages de
programmation, conçu pour être lisible par tout programmeur,
pour présenter l’algorithme de façon claire et succinte sans
s’encombrer par les détails des langages de programmation
Introduction aux concepts fondamentaux
• Algorithmes : avec quelles conventions les écrit-on?
– Structure d'un algorithme Début
– ALGORITHME nom_de_l'algorithme
– CONST {Définition des constantes} programme calcule
surface d’un cercle
– TYPE {Définition de types}
Donnez le rayon du
– VAR {Déclaration de variables} cercle
– DEBUT
R
{Suite d'instructions}
A R*R*3,14
– FIN
A
• Début, fin ou begin, end
• Lire, écrire ou read et write Fin
• Affectation : ou
Faux Vraie
• Si cond alors inst1 sinon inst2. Condition
– Sémantique
• Nombre d’élément du tableau est sup-inf+1,
• inf<indice<sup
– Exemple
• Sélectionner un élément du tableau
– Syntaxe
• Identificateur[indice]
– Exemples
• Algorithme de lecture des éléments d’un tableau
• Algorithme de parcours d’un tableau
4. Types de variables composés : enregistrements
• Définition
– Objets complexes dont les composantes de natures identiques ou différentes
• Exemples : nombres complexes, étudiants, etc.
– Nouveau type de données : enregistrement ou record composé de type
simples
– Syntaxe :
• Type nom_type = record
identificateur1 : type1
Identificateurn : typen peut être un tableau et réciproquement
End
– Semantique
• Les composantes du type sont des champs
• Déclaration et manipulation
– Var identificateur : nom_type;
– Identificateur.Champi:= valeur de typei
Dr FOTSING Eric
Université de Dschang
IUT Fotso Victor de Bandjoun
Content
• 4. Les Sous-programmes / procédures et fonction
– Définition et Rôle des procédures ou sous-programmes
• Programme structurée, lisible et compréhensible
• Modularité et réutilisabilité
– Déclaration de procédures
• Portées des variables ou durée de vie des objets (locales et variables
globales)
– Appel de procédure avec paramètres ou sans paramètres
Dr FOTSING Eric
Université de Dschang
IUT Fotso Victor de Bandjoun
Content
• 6. Algorithmes et problèmes concrets : cas du tris
– Définition du tri et de la recherche
– Rappel des problèmes qui constituent les grands défi
de la science moderne et importance des algorithmes
de tri et de recherche
– Introduction aux algorithmes de tri (insertion, sélection
et fusion) : principe et ordre de complexité
– Comment combiner les algorithme de tris pour obtenir
des tris plus efficaces ?
• Tri rapide stochastique, par fusion optimisé par le tri par
insertion , par tas, par dénombrement et par paquets
– Choisir en fonction du problème à résoudre le tri le plus
adapté ?
Définition du tri et rappel des problèmes
• Définition du tri
– Entrée : Suite de n nombres a1, a2, . . . , an.
– Traitement : permutation consiste en recherche et remplacement
– Sortie : suite de n nombres ai1, ai2, . . . , ain rangés c-a-d ai1<ai2< . . . , <ain
• Problème de recherche
– Soient un ensemble E et un élément a, il s’agit de savoir si aєE ? i.e si x є E tel
que x =a ? Plus généralement, existe-t-il x dans E vérifiant certains critères : (Э
x є E / P(x))?
• Projets d’algorithmique sur les domaines : du problème à
au code source en passant par la spécification formelle)
– Projet du génome humain (ADN), e-commerce (cryptographie ), Services
Internet (moteurs de recherche et routage en réseau), Matériel performants
en électricité, en électronique ou en robotique, Jeux
• Types d’algorithmes
– Pour bases de données (SQL 02, requêtes avancées), pour parcours des
graphes (RO, programmation dynamique ), pour problèmes de
mathématiques (matrices, etc), pour architectures N-tiers (Réseau)
Définition du tri et rappel des problèmes
Problème de recherche : Soient un ensemble E et un élément a, il s’agit de savoir
si aєE ? i.e si x є E tel que x =a ? Plus généralement, existe-t-il x dans E vérifiant
certains critères : (Э x є E / P(x))?
Définition du tri et rappel des problèmes
Problème de recherche : Soient un ensemble E et un élément a, il s’agit de savoir
si aєE ? i.e si x є E tel que x =a ? Plus généralement, existe-t-il x dans E vérifiant
certains critères : (Э x є E / P(x))?
Introduction aux algorithmes de tri
Introduction aux algorithmes de tri
Tri par sélection
Introduction aux algorithmes de tri
ALG10
INTRODUCTION A L’ALGORITHMIQUE
ET À LA PROGRAMMATION EN PASCAL
SKILLS AND CASE STUDY
Dr FOTSING Eric
Université de Dschang
IUT Fotso Victor de Bandjoun
Content
• 7. Introduction aux pointeurs et types abstraits
• Notion d’adresse et définition de pointeur
• Déclaration et utilisation des pointeur
– Syntaxe et sémantique
– Déférencer et initialiser un pointeur
– Pointeur vers un enregistrement
• Introduction aux types de données abstraits ou
structure de données complexes
– linéaires (Tableaux, listes chaînées, piles, Files ou
fichiers)
– non linéaires (les graphes et les arbres)
Rappel de la notion d’adresse
• Chaque octet de la Mémoire Centrale est identifié par un numéro
séquentiel appelé adresse.
• La déclaration d’une variable attribue un nom (l'identificateur) à
une zone définie par sa position (adresse de son premier octet) et
sa taille (nombre d’octets)
– Nom_var permet d’accéder à la valeur contenue dans une variable
• La fonction adresseDe (Nom_var) permet d’acceder à l’adresse
adresseDe (age) vaut 0x3fffd11
• Déréférencer un pointeur
• on fait précédé le pointeur du symbole * qui signifie le contenu
de . Ceci consiste à extraire la valeur de la variable sur laquelle
il pointe.
• On peut aussi modifier la valeur d'une variable pointée à
travers un pointeur déréférencé (accès en écriture).
– note ← 18 ; est équivalent à *pNote ← 18 ;
– Ecrire (‘La note de l’étudiant est : ’, *pNote) ; est équivalent à Ecrire (‘La
note de l’étudiant est : ’, note) ;
Déclaration et utilisation des pointeurs
• Initialisation d’un pointeur
– Toujours initialiser les pointeurs pour éviter les pointeurs
pendants (dangereux).
• Si l'on déréférence ce pointeur et qu'on lui affecte une
nouvelle valeur, on va écraser un emplacement mémoire
quelconque, et on risque de faire planter son programme.
– Solution : initialiser à NIL (not identified link), équivalent de 0.
Mais attention, il ne faut jamais déréférencer un pointeur nul.
• si p ≠ NIL Alors p ← NIL ; {déréférencement d’un
pointeur}Déréférencer un pointeur
• Pointeur vers un enregistrement
– Type Tetudiant = record nom : chaine ; moyenne : réel end ;
– Var etudiant: Tetudiant ; pEtudiant : pointeur sur Tetudiant ;
– pEtudiant ← adresseDe (etudiant) ;
– etudiant.matricule ← "00A069" ; {équivalent à : pEtudiant–>matricule ←
"00A069" ;
Structures de données complexes
• Dans un enregistrement, un champs peut être un pointeur, et notamment sur un
autre enregistrement (introduction aux listes chaînées, solution au problème de
tableau de taille variable)
Structures de données complexes
• Les structures de données permettent de relier entre
elles des données (tableaux, enregistrements, fichier).
• On peut distinguer
– a) Les structures de données linéaires, qui permettent de
relier des données en séquence : liste chaînée, pile, file
– b) Les structures de données non linéaires, qui permettent
de relier un élément à plusieurs autres éléments : graphe,
arbre
• Cela permet de réserver des emplacements
dynamiquement à l’exécution et non statiquement à la
compilation.