Vous êtes sur la page 1sur 5

Université de Ngaoundéré

Faculté des sciences


Département de Mathématiques et informatique
Année académique 2021/2022
Par GUIDANA GAZAWA Frédéric

Début Problème

Comprendre le problème

Algorithme

Ordinateur

Coder l’algorithme

S
o
r
Entrées Programme t
i
e
s

Fin

[Introduction à l’Algorithmique (INF 131)]


Algorithmique : Une séquence de pas de calcul qui prend un ensemble de valeurs comme entrée
(input) et produit un ensemble de valeurs comme sortie (output). Un algorithme résout toujours un
problème de calcul. L’énoncé du problème spécifie la relation entrée/sortie souhaitée. Donner une
définition précise de la notion d’algorithme est assez difficile et complexe.
Table des matières
Objectifs du cours ............................................................................................................................. i
1. Objectifs thématiques ............................................................................................................ i
2. Objectifs pédagogiques.......................................................................................................... i
3. Objectifs comportementaux ............................................................................................... ii

Chapitre I : Introduction ................................................................................................................ 1


1. Concepts de base ..................................................................................................................... 1
1.1. Notion d’algorithme ........................................................................................................... 1
1.2. Définition d’un algorithme .............................................................................................. 2
2. Caractéristiques d'un algorithme ...................................................................................... 3
3. Structure d’un algorithme.................................................................................................... 3
3.1. Représentation.................................................................................................................... 3
3.2. Déclaration des constantes, de type et de variables.................................................. 4
3.2.1. Déclaration d’une constante ............................................................................................... 4
3.2.2. Définition d’un type ............................................................................................................. 4
3.2.3. Déclaration des variables ................................................................................................... 5
4. Les opérateurs ......................................................................................................................... 6
4.1. Les opérations sur les types............................................................................................. 6
4.1.1. Opérateurs sur les entiers et les réels................................................................................... 6
4.1.2. Opérateurs sur les entiers et les booléens ............................................................................ 6
4.1.3. Opérateurs sur les caractères et les chaînes ........................................................................ 6
4.2. L’affectation ......................................................................................................................... 6
4.3. Saisie des données .............................................................................................................. 7
4.4. Affichage des données ....................................................................................................... 7
5. Les structures de contrôle ................................................................................................... 7
5.1. La structure séquentielle .................................................................................................. 7
5.2. La structure de choix ....................................................................................................... 7
5.2.1. Structure alternative........................................................................................................... 7
5.2.2. Sélection sur choix multiples ............................................................................................... 8
5.3. Structures répétitives (ou itératives) ........................................................................... 9
5.3.1. Exécutions répétitive : la boucle "tant que" ...................................................................... 9
5.3.2. Exécutions répétitive : la boucle "pour" ............................................................................. 9
5.3.3. Exécutions répétitive : La boucle "répéter" ..................................................................... 10
5.3.4. Comparaison des boucles .................................................................................................. 10
5.3.5. Problème des boucles infinies ............................................................................................. 11
5.3.6. Récapitulatif des différentes boucles .................................................................................. 11
6. Efficacité des algorithmes ................................................................................................... 11
7. Exercices d’applications ......................................................................................................13

Chapitre II : LES OBJETS DE TYPE COMPOSÉ ................................................................ 16


1. Les tableaux ........................................................................................................................... 16
1.1. Syntaxe de déclaration d’un tableau ........................................................................... 16
1.2. Exemples d’algorithmes utilisant les tableaux ......................................................... 17
1.2.1. Saisie et affichage des éléments d’un tableau ......................................................................17
1.2.2. Produit de deux matrices carrées ....................................................................................... 17
1.3. Opérations sur un tableau ............................................................................................. 18
1.3.1. Recherche d’un élément dans un tableau ........................................................................... 18
1.3.2. Algorithmes de tri ............................................................................................................. 23
2. Les objets composés hétérogènes .................................................................................... 26
2.1. La structure de type enregistrement ........................................................................... 26
2.1.1. Définition .......................................................................................................................... 26
2.1.2. Utilisation de la structure de type enregistrement. .......................................................... 26
3. Exercices d’applications ..................................................................................................... 28

Chapitre III: LES SOUS-PROGRAMMES .............................................................................31


1. Présentation et terminologie ..............................................................................................31
2. Fonctions et procédures ..................................................................................................... 32
3. Communication entre programme appelant et sous-programme appelé ............. 33
3.1. Variables locales et variables globales ........................................................................ 33
3.2. Les paramètres .................................................................................................................. 34
3.2.1. Les paramètres réels et formels ......................................................................................... 34
3.2.2. Transmission de paramètres par valeur............................................................................ 34
3.2.3. Transmission de paramètres par adresse .......................................................................... 35
3.2.4. Transmission de paramètres par référence (Langage C) .................................................. 35
4. Exercices d’applications ..................................................................................................... 37

Chapitre IV : ALGORITHMES RECURSIFS.......................................................................42


1. Un exemple plus mathématique : la factorielle ............................................................42
2. Exemple : Nombres de Fibonacci .................................................................................... 43
2.1. Formule explicite du nième nombre de Fibonacci ..................................................... 43
2.2. Algorithmes pour calculer les nombres de Fibonacci ........................................... 44
3. Critères d’un algorithme récursif correct ......................................................................45
4. Récursion et itération .........................................................................................................46
5. Récursivité et tableaux ....................................................................................................... 47
5.1. Fusion de deux listes déjà triées .................................................................................. 47
5.2. Tri par fusion .....................................................................................................................48
5.3. Recherche dichotomique ...............................................................................................50
6. Récursions célèbres .............................................................................................................50
6.1. Les tours de Hanoï ...........................................................................................................50
6.2. La fonction d’Ackermann............................................................................................... 53
6.3. La fonction 91 de Mc Carthy ......................................................................................... 53
6.4. La fonction de Morris...................................................................................................... 53
7. Exercices d’applications .....................................................................................................54

Bibliographie
1- Delanoy, C ; « Initiation a la programmation », Paris - Eyroles, 1996
2- Aho, Hopcroft, Ullman « Structures de données et algorithmes », Intereditions 1993
3- Carrez, « Des structures aux bases de données », Dunoe 1990
4- Froidevaux, Gaudel, Soria, « Types de données et algorithmes », McGramHill 1990
Objectifs du cours
1. Objectifs thématiques

L’objectif principal des enseignements d’informatique S1 de la Faculté des Sciences


est l’acquisition des notions fondamentales de l’algorithmique. Plus précisément, nous
étudierons successivement :
 Les instructions de base permettant de décrire les algorithmes : affectation, tests,
boucles ;
 Les procédures et les fonctions qui permettent de structurer et de réutiliser les
algorithmes ; on parlera alors d’encapsulation, de pré-conditions, de portée des
variables, de passage de paramètres, d’appels de fonctions, de récursivité et de jeux de
tests ;
 Les structures de données linéaires : tableaux, listes, piles, files, qui améliorent la
structuration des données manipulées par les algorithmes. A cette occasion, on
évaluera la complexité et l’efficacité de certains algorithmes utilisant ces structures
linéaires.
Ces différentes notions seront mises en œuvre à travers l’utilisation du langage C (UE
Programmation Structurée, Code : INF-141).

2. Objectifs pédagogiques

Au cours du semestre S1, nous nous positionnerons principalement sur les 3 premiers
niveaux de la taxonomie de Bloom qui constitue une référence pédagogique pour la
classification des niveaux d’apprentissage : connaissance, compréhension, application. Les
3 derniers niveaux seront plutôt abordés au cours du semestre S3 (analyse, synthèse,
évaluation) à l’UE INF-243 : Structures de Données.

 Connaissance : mémorisation et restitution d’informations dans les mêmes termes.


 Compréhension : restitution du sens des informations dans d’autres termes.
 Application : utilisation de règles, principes ou algorithmes pour résoudre un
problème, les règles n’étant pas fournies dans l’énoncé.
 Analyse : identification des parties constituantes d’un tout pour en distinguer les idées.
 Synthèse : réunion ou combinaison des parties pour former un tout.
 Evaluation : formulation de jugements qualitatifs ou quantitatifs.

i
Taxonomie de Bloom

Benjamin Bloom (1913- 1999), psychologue américain spécialisé en pédagogie.

 Connaître : définir, distinguer, acquérir, identifier, rappeler,


reconnaître...
 Comprendre : traduire, illustrer, représenter, dire avec ses mots,
distinguer, réécrire, réarranger, expliquer, dé montrer, …
 Appliquer : appliquer, généraliser, relier, choisir, développer, utiliser,
employer, transférer, classer, restructurer. . .
 Analyser : distinguer, détecter, classer, reconnaître, catégoriser, déduire,
discerner, comparer…
 Synthétiser : écrire, relater, produire, constituer, transmettre, modifier,
créer, proposer, planifier, projeter, spécifier, combiner, classer, formuler…
 Evaluer : juger, argumenter, valider, décider, comparer, …

3. Objectifs comportementaux

Nous cherchons à développer trois « qualités » comportementales chez l’informaticien


débutant : la rigueur, la persévérance et l’autonomie.

 Rigueur : Un ordinateur est une machine qui exécute vite et bien les instructions qu’on lui
a « apprises ». Mais elle ne sait pas interpréter autre chose : même mineure, une erreur
provoque le dysfonctionnement de la machine. Même si un humain peut transiger sur le
«;», la machine ne le peut pas : l’ordinateur ne se contente pas de l’« à peu près ». Le
respect des consignes, la précision et l’exactitude sont donc de rigueur en informatique !
 Persévérance : Face à l’intransigeance de la machine, le débutant est confronté à ses
nombreuses erreurs (les siennes, pas celles de la machine !) et sa tendance naturelle est de
passer à autre chose. Mais le papillonnage (ou zapping) est une très mauvaise stratégie en
informatique : pour s’exécuter correctement, un programme doit être finalisé.
L’informatique nécessite d’« aller au bout des choses ».
 Autonomie : Programmer soi-même les algorithmes qu’on a définis est sans doute le
meilleur moyen pour mieux assimiler les principales structures algorithmiques et pour
mieux comprendre ses erreurs en se confrontant à l’intransigeante impartialité de
l’ordinateur, véritable « juge de paix » des informaticiens. Par ailleurs, l’évolution
continuelle et soutenue des langages de programmation et des ordinateurs nécessitent de
se tenir à jour régulièrement et seule l’autoformation systématique permet de « ne pas
perdre pied ». Pratique personnelle et autoformation constituent ainsi deux piliers de
l’autonomisation nécessaire de l’apprenti informaticien.

ii

Vous aimerez peut-être aussi