Faculté des Arts et Sciences - Département d'Informatique et de Recherche opérationnelle
TITRE DU COURS: Programmation 2
SIGLE: IFT1020 PROFESSEUR: Jian-Yun Nie
EXAMEN: INTRA-2001H DATE: 16 oct. 2001
LIEU: Z110 HEURES: 15:30-17:30
_________________________________________________________________________
Directives pédagogiques: Les documents sont autorisés.
_________________________________________________________________________
Question 1. 15%
1.1. (10%) Décrivez les différences et les relations entre un algorithme et un programme.
Différences :
Un algorithme est plus général et plus abstrait qu’un programme. Dans un algorithme,
on décrit les étapes importantes, en négligeant certains détails. Dans un programme,
on doit décrire tous les détails.
Un algorithme est décrit dans un langage moins strict qu’un programme qui doit
suivre strictement la syntaxe d’un langage donné. Un algorithme est indépendant du
langage de programmation.
Un algorithme ne peut pas être directement exécuté par une machine, tandis qu’un
programme le peut.
Relation : Un programme implante ou réalise un algorithme.
1.2. (5%) Pourquoi est-il important de définir un bon algorithme avant d’écrire un
programme?
Il est important de définir un bon algorithme pour la résolution d’un problème.
L’étape de définition et de l’analyse de l’algorithme permet de connaître les propriétés
(complexités) de l’algorithme, et de le comparer avec d’autres. Un programme suivant
un bn algorithme est plus efficace.
Question 2. 20%
2.1. (8%) En utilisant la récursion, quelles sont les conditions à respecter pour garantir
que la récursion ne se boucle pas à l’infini?
Il faut qu’il y ait un (ou plusieurs) cas limite simple pour lequel on connaît out de
suite la réponse;
Il faut que chaque cas plus complexe se décompose en des cas plus simples.
2.2. (12%) Écrivez un algorithme récursif de recherche linéaire dans un tableau
d’entiers. Cette recherche doit trouver l’endroit (l’index) où l’élément recherché est
stocké. Si cet élément n’existe pas, il retourne -1.
Algorithme recherche(a[0, n-1], début, élément) :
1. si a[début] = élément alors retourner début;