Vous êtes sur la page 1sur 75

ALG10

INTRODUCTION A L’ALGORITHMIQUE
ET À LA PROGRAMMATION EN PASCAL
SKILLS AND CASE STUDY

CHAPITRE 0 :OBJECTIFS ET CONTENU DU


COURS
CHAPITRE 1 : INTRODUCTION GÉNÉRALE
Dr FOTSING Eric
Université de Dschang
IUT Fotso Victor de Bandjoun
Content
1. Objectifs du cours

2. Situation du cours dans la formation

3. Mots clés

4. Organisation du cours

5. Attentes et règles à respecter

6. Contenu détaillé du cours

7. Références bibliographiques
Objectifs du cours

• Introduire les concepts de base de


l’algorithmique
Situation du cours dans la formation
Mots clés
Organisation du cours
Attentes et règles à respecter
Références bibliographiques
ALG10
INTRODUCTION A L’ALGORITHMIQUE
ET À LA PROGRAMMATION EN PASCAL
SKILLS AND CASE STUDY

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

• Itération :pour interval repeter inst ou for - do


itération
• boucle tant que cond faire inst ou while-do
Introduction aux concepts fondamentaux
• Algorithmes : avec quelles conventions les écrit-on?
Introduction aux concepts fondamentaux
• Critères de qualité d’un bon algorithme/programme
1. l’algorithme est-il correct ou résout-il le problème ?. si,
pour chaque instance en entrée, il se termine en produisant la
bonne sortie
2. l’algorithme se termine-t-il c’est-à-dire a-t-il une fin ?.
3. l’algorithme est-il compréhensible ?
• Lisible: doit être compréhensible même par un non-
informaticien.
• Précis et non ambigüe: chaque élément ne doit pas porter à
confusion.
• Concis: ne doit pas dépasser une page. Si c'est le cas, il faut
décomposer le problème en plusieurs sous-problèmes.
• Structuré: doit être composé de différentes parties facilement
identifiables.
4. Quel est le temps d’exécution ?
5. Quelle est la place utilisée en mémoire ?
Introduction aux concepts fondamentaux
• Pré-requis : Mathématiques ?
• Cours à suivre ou lire
– Démarche informatique en tant que science, applications informatique
– Structure et fonctionnement d’un ordinateur, architecture des systèmes
• Intuition personnelle et intelligence ?
– il faut avoir une certaine intuition, les réflexes s’acquièrent avec l’expérience
– il faut être méthodique et rigoureux. Il faut systématiquement se mettre
mentalement à la place de la machine qui va les exécuter (papier et d'un
crayon)
– dans un premier temps, évitez de sauter les étapes : la vérification méthodique,
pas à pas, de chacun de vos algorithmes représente plus de la moitié du travail
à accomplir... et le gage de vos progrès.
• Bases mathématiques utiles pour
– problèmes spécifiques dont la solution est mathématique (cryptographie) ou
algorithmique avancée (graphes, complexité des algorithmes, preuves de
programme, etc…)
ALG10
INTRODUCTION A L’ALGORITHMIQUE
ET À LA PROGRAMMATION EN PASCAL
SKILLS AND CASE STUDY

CHAPITRE 2 : NOTION D’IDENTIFICATEUR ET TYPES


CHAPITRE 3 : LES INSTRUCTIONS SIMPLES ET COMPLEXES
Dr FOTSING Eric
Université de Dschang
IUT Fotso Victor de Bandjoun
Content
• 2.Notion d’Identificateurs, de variables et leurs types

• Notions de données, identificateurs (variable, constante)


et emplacements en mémoire

• Types de variables simples (numérique : entier, réel,


caractère, chaine ou texte et logique),
– Opérations sur types et conversion : expression et priorité des opérateurs et
fonctions (voir chapitre 3)

• Déclaration d’une variable ou constante


– Portée d’un identificateur (Chapitre 4)

• Types de variables composés (tableaux simples et


enregistrements)
1. Notions de données, identificateurs
• Les données sont communiquées aux programmes
à travers les périphériques d’entrée et sont codées
et stockées en mémoire
• Un Identificateur (variable ou constante) est un
nom qui sert à repérer un emplacement en
mémoire centrale, les adresses n’étant pas connues
par le programmeur
• Lisibilité, compréhension et maintenance de
l’algorithme / programme : choix des noms
représentatifs
2. Types de variables simples
• Type = nature du contenu de la variable. Il définit
– un ensemble de valeurs qui dépend des caractéristiques du
processeur (numérique et chaine)
– Les opérations réalisables
• 5 types simples
– numérique : entier, réel, : +, -, *, /, comparaison et les
fonctions (ABS, ENT, SIN, etc)
– Caractère : comparaison = et #
– chaine ou texte : comparaison = et #
– Logique : non ou not, ou ou or, et ou and, = et #
• non (x=y) renvoie faux si x et y ont la valeur vrai
2. Types de variables simples
• Règles de priorité des opérateurs et fonctions (Lienou/Init)
– Les opérations de plus forte priorité sont d’abord évaluées. Par ordre de
priorité décroissante
• + et – unaire sur entier ou réel
• Négation logique (non)
• Multiplication (*), division entière (div), division (/)
• Reste (modulo) : mod
• + et – binaire
• Comparaison
• Et ou and logique
• Ou ou or logique
– En cas d’égalité, on évalue de la gauche vers la droite
– On peut mettre les parenthèses pour forcer la priorité
3. Déclaration d’une variable ou constante
• Préciser son nom et son type
• Syntaxe :
– Const ident_constante = valeur;
– Var ident_variable : type;
• Sémantique
– Un emplacement est réservé en mémoire
– L’identificateur constante a le type de la valeur
• La portée d’un identificateur est la partie du
programme où il est accessible (voir procedure
et fonction)
4. Types de variables composés : tableaux simples
• Définition
• Liste d’objets non isolés, non indépendants, mais de
même natures (caractéristiques communes)
– Exemples : 1000 premiers entiers, nom des jours de la
semaine, mois de l’année, nom ou note d’algo1 des élèves
d’IG1, etc.
• Nouveau type de données : tableau liste d’éléments
de types simples
• Syntaxe :
– Type nom_type = tableau [inf..sup] de T
– Exemple : tableau de 1000 entiers, Tableau de 12 chaine
de caractères
4. Types de variables composés : tableaux simples
• Déclaration et manipulation
– Syntaxe
• Var identificateur : nom_type;

– 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

• Exemple : étudiant, nombre complexe


5. Quelque exemples
• Notions d’identificateurs: déclaration et manipulation
– Var A, B :Entier Début A ← 1 B ← A + 3 A ← 3 Fin
– Var A, B, C : Entier Début A ← 5 B ← 3 C ← A + B A ← 2 C ← B – A Fin
– Var A, B : Entier Début A ← 5 B ← A + 4 A ← A + 1 B ← A – 4 Fin
– Var A, B, C : Entier Début A ← 3 B ← 10 C ← A + B B ← A + B A ← C Fin
– Var A, B : Entier Début A ← 5 B ← 2 A ← B B ← A Fin
– écrire un algorithme permettant d’échanger les valeurs de deux variables A
et B, et ce quel que soit leur contenu préalable.

• Types de variables simples : expression et priorité


des opérateurs
– 3+5*3 = 18 mais (3+5)*3=24; 5+2>4 vrai;
– 5+3>= 7 et non (5-3=8) est vrai
– 5+2>4 et non(vrai ou 5- 3=8) est faux
– 5+2>4 et non vrai ou 5- 3=2 est vrai
5. Quelque exemples
• Types de variables composés : manipulation des tableaux
– Ecrire un algorithme qui déclare un tableau de 50 notes, dont on
fait ensuite saisir les valeurs par l’utilisateur.

– Ecrivez la fin de cet algorithme afin que le calcul de la moyenne


des notes soit effectué et affiché à l’écran.

• Types de variables composés : manipulation des


enregistrements
– Ecrire un algorithme qui déclare un tableau de 50 étudiants
(caractérisée par un matricule, un nom et ses notes de l’année
académique 2012-2013) dont on fait ensuite saisir les valeurs
par l’utilisateur.
– Ecrivez cet algorithme pour calculer et afficher à l’écran, la
moyenne de chaque étudiant, ainsi que la moyenne générale de
la classe.
Content
• 3. Les instructions simples et complexes
– de lecture et d’écriture, d’affectation, de calcul (expressions)
– Structures de contrôle de base
• Schémas ou instructions conditionnels : les tests
• Les itérations ou instructions répétitives : boucles et les compteurs ,
– Imbrication des structures (exemples uniquement)
– Ces instructions permettent de
• Manipuler les données (variables ou constantes) et communiquer avec
l’ordinateur
• Demander à l’ordinateur de résoudre les problèmes qui peuvent être très
complexes en lui faisant faire des choix ou en répétant la même chose
plusieurs fois.
– C’est ce que nous faisons pour résoudre nos problèmes même
de façon inconsciente. Il suffit donc de prendre conscience et
d’être capable de le dire à l’ordinateur. Prise de conscience de ce
que nous faisons et communication avec nos sembable
Instructions simples
• Structure générale d’un algorithme
– Commentaires (P décomposé en P1, P2 et P3)
– Déclaration des données
– Début
• P1;P2;P3
– Fin

• Lecture et écriture ou affichage d’un résultat


• Affectation d’une variable
• Expression arithmétiques et booléenne
Instructions simples
• Schémas conditionnels ou test
• Syntaxe en pseudo-code
– Si cond alors inst1 sinon inst2;
• Si cond alors inst 1;
• Si non cond alors inst2;
– Cas
• C1 T1
• ……….
• Cn Tn
• Autres  Tn+1 (optionnel)
– Fcas
• Organigramme
• Exemples
Instructions simples et complexes
• Les itérations ou boucles (Répeter jusqu’à, tantque et pour)
• Syntaxe en pseudo-code
– Repeter inst jusqu’à condition_d’arrêt;
– Tantque non (condition_d’arrêt) inst ;
– Pour intervalle faire inst;
– Repeat inst until condition_d’arrêt;
– while non (condition_d’arrêt) inst ;
– For intervalle do inst;
– Le fameux Go to
• Organigramme
• Exemples
• Instructions complexes ou imbriqués
– Limiter le nombres d’imbrication à trois et bien indenter
– Toutes les combinaisons sont possibles mais compréhension humaine limitée
Quelques exemples
• Lecture, écriture et affectation
– Lire un nombre au clavier et calcule son image par la fonction f(x)= x2+4 et
affiche le résultat à l’écran
– Lors d’un examen, un candidat a 4 notes d’écrit et deux notes d’oral. Ecrire un
algorithme qui lit les notes du candidat et affiche son relevé de note. L’écrit
vaut 80% et l’oral vaut 20%
– Editer la facture d’achat de bouteilles de vin de prix unitaire 3500FCFA.
L’utilisateur doit fournir le nom du client, le nombre de bouteilles. La TVA est
de 19,6%.
• Schémas conditionnels : les tests
– Lire trois nombre et dire s’il sont fournit en ordre croissant
– Lit quatre nombres et affiche la valeur du plus grand d’entre eux
– Lit trois nombres et affiche les dans l’ordre croissant
– Résoudre l’équation ax+b=0 pour deux valeurs a et b quelconques fournit par
un utilisateur. (réel, impossible, ou indéterminé)
Quelques exemples
• Les itérations ou instructions répétitives
– Lire une suite de nombres entiers non nuls terminée par le
marqueur de fin -1 et affiche la moyenne de ces nombres
– Affiche le nombre de caractère ‘F’ suivi du caractère ‘O’ dans
une phrase terminée par le marqueur . Lue au clavier.
– Lire deux nombres a et n et afficher a à la puissance n
– Lire une valeur entière strictement positif, puis nb nombre et
affiche leur minimum et leur maximum
ALG10
INTRODUCTION A L’ALGORITHMIQUE
ET À LA PROGRAMMATION EN PASCAL
SKILLS AND CASE STUDY

CHAPITRE 4 : LES SOUS-PROGRAMME : PROCEDURES ET


FONCTIONS
CHAPITRE 5 : LES STRUCTURES DE DONNÉES COMPLEXES

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

– Procédure de type fonction

– Introduction aux Fonctions itératives et fonctions récursives


(différences, avantages et inconvénients)
Définition et Rôle des procédures
• C’est une suite d’instructions qui permet de traiter le problème
sans s’encombrer dans un premier temps du règlement dans les
détails des sous problèmes le composant
– D’abord un intérêt méthodologique (approche descendante ou boite noire,
approche d’analyse)
– (améliore lisibilité et compréhension de l’algorithme général )
– Offre une plus grande facilité de mise au point et de maintenance voir la
possibilité de faire écrire un algorithme par plusieurs personnes (team)
– Important pour les problèmes où on est amené à resoudre plusieurs fois le
même problème
– Modularité entraine la réutilisabilité, fonctions ou procédure prédéfini
• Corps de la procédure = détails de ce sous traitement
– Déclaration de la procédure
• Appel de la procédure = désignation du traitement correspondant
dans le programme principal
Déclaration de procédures
• Syntaxe
– Procédure identificateur ( variables et leur types)
• Déclaration des variables locales
• Début
– Corps de la procédure
• Fin
• Sémantique
– Paramètres formels, Actions disponibles dans la bibliothèque
– Portées des variables ou durée de vie des objets (locales et variables
globales)
• Un paramètre formel ne peut être la partie gauche d’une affectation car il
est considéré comme une constante dont la valeur est celle du paramètre
effectif
• Un paramètre effectif peut être soit une constante, une variable ou une
expression
Appel de procédure sans ou avec paramètres
• Structure du programme principal
– Déclaration de tous les identificateurs (const, type, var, et procédure)
– début
• Identificateur (liste de paramètres effectifs)
• {le nombre et le type (ordre) des paramètres effectifs sont égaux à ceux des paramètres formels}
– Fin;
• Exemple :
– algorithme de reproduction (texte, nbrecopies)
– Ces paramètres ne sont pas susceptibles de modification : fixe
– On peut souhaiter que les paramètres soit modifiables : modifiable
• Passage des paramètres par valeur ou par variable ou
adresse
• Les paramètres fixes sont passés par valeur c-a-d que c’est leur valeur et
non leur adresse qui est transmise à la procédure
• Les paramètres modifiables sont passés par adresse
Procédure de type fonction
• Sémantique
– fonction identificateur ( variables et leur types) : type
• Déclaration des variables locales
• Début
– Corps de la fonction
– Retourne expression
• Fin
• Sémantique
– Expression doit être du type précisé dans la déclaration
– return, provoque le retour au programme appelant
– La procédure de type fonction peut être utilisé dans une
expression arithmétique ou logique
• Voir les exemples d’algorithme à écrire
Exemples d’algorithme
• Sur les procédures et fonctions
– Un algorithme qui lit un tableau, calcule le plus grand et
le plus petit élément de ce tableau ainsi que la
moyenne. Écrire et utiliser trois procédures lecture,
maxmin et moyenne
– Une fonction qui indique vérifie si un élément donné
appartient ou non à un tableau (prendre en donnée le
nombre d’éléments puis la suite des nombres et
l’élément recherché)
– Écrivez une fonction qui renvoie le nombre de voyelles
contenues dans une chaîne de caractères passée en
argument. (une fonction peut appeler une fonction)
Content
• 5. Les Structures de données complexes

– Notion de tableau constant ou variable

– Déclaration et manipulation des tableaux à 1 ou


plusieurs dimensions
• Déclaration et manipulation de types structuré
(enregistrement) avec des champs de type tableau ou
enregistrement

• Déclaration et manipulation de tableaux dont les éléments


sont de type structuré

– Fichiers : définition et organisation, déclaration d’un


fichier et sa manipulation

Tableau à deux dimensions
Importance des tableaux : objets non isolés réunis par des caractéristiques
communes
• Tableaux à 1 dimension constitué de n éléments de type simple: Taille fixe
• Indice pour accéder aux éléments du tableau
• Boucle for appropriée pour le parcours des éléments
– Exemple : algorithme de recherche d’un élément dans un tableau
• Un tableau à deux dimension a deux entrées ou dimensions: l’une représentée par
des lignes et l’autre par les colonnes
– Exemples : les 25 notes de chacun des 50 étudiants d’IG1, Les 10 relevés pluviométriques de
chaque mois etc.
• Déclaration
– Type nom_type = tableau [inf1..sup1, inf2..sup2]
– Le tableau a (sup1-inf1+1)* (sup2-inf2+1) éléments
• Il faut un indice pour chaque chaque dimension ou entrée : A(i,j)
– Exemple : algoritghme pour calculer la moyenne de chaque élève
Tableau à plusieurs dimensions
• De la même façon, on peut étendre la définition précédente à
un tableau à n dimension
• La taille est de (sup1-inf1+1)* (sup2-inf2+1)*…..*(supn-infn+1)
• On utilise autant d’indices qu’il y a de dimension
• Exemples
– Gérer les notes des étudiants sur tout leur cycle IG1, IG2
– Gérer les relevés pluviométriques les 10 dernières années et calculer la
moyenne générale sur ce temps
• Peut-on avoir un tableau de taille variable ?
– Solution 1 : déclarer une constante pour la taille du tableau
Les fichiers
• Définition et solution apportée
• Fichier = ensemble de données de même nature stockés de façon
permanente sur une mémoire de masse
• (disque, disquette, CDROM, bande, CléUSB, etc.) : différence avec RAM (taille et vitesse d’accès)
– Grandes quantité de données qui ne tiendraient pas en mémoire
– Stockage permanent du fait que la MC est volatile
– Faciliter de copie et d’échanger les données en vue de leur
exploitation sur des ordinateurs différent
• Exemples et type de fichiers :
– relevés pluviométriques et températures pour statistique,
– Comptes des clients d’une banque,
• Fichiers à accès séquentiels et fichiers à accès relatif
– Séquentiel : l’accès à la n-ième données ne peut se faire que si les n-1 données
précédentes ont été lues
– Fichiers à accès relatif : notion d’adresse, cas des fichier indexés
Les fichiers
• Déclaration et manipulation de fichiers
• Syntaxe
– Var nom_logique : file of type
• Var Data, Result : file of integer
– Assign (nom_logique, nom_physique)
• Sémantique
– Une adresse mémoire est réservé pour indiquer le début d’un fichier en mémoire
et sur le disque
– Le nom_physique est soit une valeur ou une variable chaine de caractère
– Assign est indispensable pour toute manipulation ultérieure du fichier
• Exemple
– Var Data, Result : file of etudiant; nomfich : string(50);
– Assign (Data, « NoteIG1.txt »);Assign (Result, «ListeIG1.txt»)
– Write (‘entrer le nom du fichier de données »); lire (nomfich)
– Assign (Data, nomfich)
Les fichiers
• Actions et opérations sur fichiers
• Ouverture de fichier
– Reset (nom_logique) en lecture, un fichier existant, la tête de lecture est
positionnée au début sur le premier enregistrement
– Rewrite (nom_logique) en construction ou écriture, si le fichier existait, il est
détruit
• Fermeture de fichier
– Close (nom_logique), le fichier est fermé et copié sur mémoire de masse, update
• Ecriture sur fichier
– Ecrire (nom_logique, identificateur)
• Lecture sur fichier
– Ecrire (nom_logique, identificateur)
• Exemple : un programme qui lit une suite de nombre terminé par 999
située sur un fichier de donnée, et écrit chaque nombre suivi de son
carré sur un autre fichier et imprime ce dernier
Exemples d’algorithme
• Sur les structures de données complexes (tableaux)
– Affiche vrai si un nombre NB est égal à la somme de
deux éléments consécutifs d’un tableau et faux dans le
cas contraire. Nb et le tableau sont lus en données
– Insérer la valeur 2 en position Place lue en donnée dans
un vecteur dont tous les éléments sont à 1.
– Insertion d’un élément dans un tableau trié en ordre
croissant de sorte que le résultat soit trié (utile pour le
tri par insertion)
– Qui reconnait si un tableau est magique ou non c-a-d,
les lignes, colonnes et diagonales ont la même valeur
Exemples d’algorithme
• Sur les structures de données complexes (fichiers)
• Un algorithme qui affiche le pgcd de chaque couple de
nombre lu dans un fichier texte terminé par le couple
(0,0). Utiliser la procédure pgcd
– Soustraction successives : tant que a#b faire si a>b alors a=a-b sinon b=b-a;
retourner a
– Modulo successifs : Si a>=b alors (si a Modulo b = 0 alors b sinon pgcd (b et
result)) sinon (si b Modulo a = 0 alors a sinon pgcd (a et result))
• On dispose d’un fichier d’assurés contenant pour chaque
personnes, un numéro d’assuré et le numéro du mois
d’échéance de la cotisation. Le fichier est terminé par un
assuré fictif de numéro 9999.
– Un algorithme qui imprime le numéro et le nombre des assurés
et dont la cotisation arrive à échéance le mois de novembre.
ALG10
INTRODUCTION A L’ALGORITHMIQUE
ET À LA PROGRAMMATION EN PASCAL
SKILLS AND CASE STUDY

CHAPITRE 6 : APPLICATION DES ALGORITHMES À LA


RÉSOLUTION DES PROBLÈMES CONCRETS : LE CAS DES
ALGORITHMES DE TRI

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

CHAPITRE 7 : INTRODUCTION AUX POINTEURS ET AUX TYPES


ABSTRAITS OU STRUCTURES DE DONNÉES COMPLEXES

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

• Pointeur = variable contenant


l'adresse d'une autre variable.
- Est associé à un type sur lequel il peut
pointer
- Le pointeur a aussi une adresse qui est
le contenu du pointeur sur ce pointeur
Déclaration et utilisation des pointeurs
• Syntaxe
– Nom_Pointeur : pointeur sur type.
– Par convention, commencer les pointeurs par la lettre p.
– Exemple : pAge : pointeur sur entier
• Sémantique
– déclare un pointeur nommé pAge qui pointe sur une variable
de type entier
– Il est très rare d’affecter une adresse à un pointeur car, utilisé
pour mémoriser l'emplacement d'une autre variable.
– On affecte en général l'adresse d'une variable existante.
"adresseDe« ou & emprunté du C++.
Déclaration et utilisation des pointeurs
• Exemple
– Var age, note : entier;
– pAge, pNote: pointeur sur entier ;
– Début
» pAge ← 0x3fffd11; {//affectation directe}
» pNote ← adresseDe(note) ; { équivalent à : pNote ← &note ;}
– Fin.

• 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.

Vous aimerez peut-être aussi