Algorithmique et Programmation - Semestre 2
Licence Sciences, Santé et Technologies 1
ère
année
Examen de première session
Mercredi 22 mai 2013
13h30 - 15h30
L'épreuve est à réaliser en langage algorithmique.
Les dispositifs électroniques sont interdits. Aucun document papier n'est autorisé.
Exercice n°1
Un nombre entier est dit "premier" s'il est strictement supérieur à 1 et s'il n'est divisible que par 1 et par lui-même.
Les nombres premiers forment une suite débutant avec la valeur 2, se poursuivant par 3, 5, 7, 11, 13, 17, 19, 23, 29,
31, 37, 41, 43 et ainsi de suite jusqu'à l'infini.
Développer un sous-algorithme permettant de calculer le tableau des N premières valeurs de la suite des nombres
premiers. N est une constante strictement supérieure à 0.
Pour déterminer si un nombre n est premier, vous utiliserez la méthode consistant à tester sa divisibilité par tous les
nombres premiers compris entre 2 et sqrt(n) (Ces nombres sont trouvés dans le tableau en cours de calcul). Si aucun
de ces nombres n'est un diviseur de n alors n est premier. Le test de primarité étant développé, il sera ensuite utilisé
pour tester les nombres entiers les uns à la suite des autres à partir de 3 pour remplir le tableau calculé (tableau
initialisé avec le nombre 2).
Exercice n°2
Une couleur est représentée par le type agrégé ci-contre.
Les composantes colorées r, v et b sont des nombres réels compris
entre 0.0 et 1.0. Ainsi, par exemple, le noir est codé par le triplet
(0.0,0.0,0.0), le blanc par le triplet (1.0,1.0,1.0), le rouge par
(1.0,0.0,0.0), ...
Une image bitmap est représentée par le type agrégé ci-contre.
Le champ m est une matrice de couleur de dimension 2 et de
taille N x M (N et M sont des constantes strictement positives)
dont chacun des éléments code la couleur d'un pixel de l'image. nl
est le nombre de lignes de pixels de l'image bitmap. nc est le
nombre de colonnes de pixels de l'image bitmap. La résolution
maximale d'une image bitmap est donc de N lignes de M colonnes. Toute résolution inférieure est possible.
a) La valeur négation d'une composante colorée c est égale à 1.0-c. La couleur négation d'une couleur cl est la
couleur obtenue par négation de chacune des composantes de cl (Exemple: la négation du noir est le blanc, celle du
blanc est le noir). Développer un sous-algorithme de calcul de la couleur négation d'une couleur.
b) Développer un sous-algorithme de modification d'une image bitmap par négation de la couleur de chacun de ses
pixels.
c) Développer un sous-algorithme d'extraction d'une portion rectangulaire d'une imageBitmap source de manière à
obtenir une imageBitmap. La portion à extraire est définie par les coordonnées lmin et cmin de son pixel de
numéros de ligne et de colonne minimum ainsi que par ses nombres nl et nc de lignes et de colonnes. On apportera
une attention particulière à la création d'un sous-algorithme qui n'entraîne pas de problème d'exécution si les
paramètres d'entête transmis sont incohérents (coordonnées en dehors de l'image source, tailles trop grandes, ...).
Exercice n°3
a) En 10 lignes au maximum, définir le concept de "programmation récursive".
b) Donner et commenter un exemple de "programmation récursive".
Exercice n°4
a) En 10 lignes au maximum, définir ce en quoi consiste une décomposition dichotomique.
b) Indiquer et justifier pourquoi les algorithmes dichotomiques sont généralement plus intéressants que leurs équi-
valents séquentiels.
r : réel <- 1.0
v : réel <- 1.0
b : réel <- 1.0
fin structure
structure imageBitmap
m : Tableau[N][M] de couleur
nl : entier <- 0
nc : entier <- 0
fin structure