Université de Sherbrooke Département d`informatique CQP112

publicité
Université de Sherbrooke Département d’informatique CQP112 Introduction à la programmation Hiver 2017 Examen périodique formatif Professeure: Aïda Ouangraoua Le mardi 14 mars 2017 de 14 h 30 h à 16 h 20 Toute documentation est permise. Cet examen comporte 4 questions. Question 1: 25 points Question 2: 25 points Question 3: 25 points Question 4: 25 points -­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐-­‐ Total: 100 points NOM : . PRÉNOM : . MATRICULE : . SIGNATURE : . 1
Question 1 (25 points)
a) Donner la définition d’un langage de programmation fonctionnel et donner deux exemples de langage fonctionnel. b) Lire le programme Python suivant. #!/usr/bin/env python # -­‐*-­‐ coding: utf-­‐8 -­‐*-­‐ def fonction1(m, n): somme = 0 if (n < 0): n = -­‐n i = 0 while(i < n): if(i % m == 0): somme += i print i i += 1 return somme def main(): somme = 0 somme = fonction1(3, 10) print somme main() b.1) Donner la représentation sous-­‐forme de diagramme de l’algorithme implémenté par la fonction fonction1. 2
b.2) Faire la trace de la fonction fonction1 pour les entrées m = 3 et n = 10 b.3) Décrire le problème résolu par le programme et dessiner ce que le programme affiche en sortie à l’écran. 3
Question 2 (25 points)
Donner un algorithme qui résout le problème suivant : n Entrée : (clavier) vitesse : nombre entier n Sortie : (écran) amende : nombre entier n Relation : o Si la vitesse est inférieure ou égale à 50 km/h, alors l’amende est de $0. o Si la vitesse est comprise entre 50 km/h et 70 km/h inclus, alors l’amende est de $10 pour chaque km/h de la tranche excédant les 50 km/h. o Si la vitesse est strictement supérieure à 70 km/h, alors l’amende est de $200 plus $15 pour chaque km/h de la tranche excédant les 70km/h. Par exemple, si le programme lit vitesse = 65, il affiche amende = 150.
Si le programme lit vitesse = 80, il affiche amende = 350. 4
Question 3 (25 points)
a) Donner la définition en Python d’une fonction qui résout le problème suivant : n Entrée : (clavier) n : nombre entier positif n Sortie : (écran) i : nombre entier n Relation : i est le plus petit entier positif tel que 2i est inférieure ou égale à n, Par exemple, si la fonction reçoit en paramètre n = 30, elle retourne i = 4, car 24 = 16 et 25 = 32. b) L’algorithme suivant permet de calculer le plus grand commun diviseur (pgcd) de deux nombres entiers positifs. n Entrée : (variable) a : nombre entier positif (variable) b : nombre entier positif n Sortie : (variable) pgcd : nombre entier positif n Variable locale : (variable) r : nombre entier positif n Algorithme : Début Tant que b est non nul r ß a % b a ß b
b ß r
Retourner a
Fin
5
b.1) Faire la trace de l’algorithme pour les entrées a = 30 et b = 100. b.2) Donner la traduction de l’algorithme en Python. 6
Question 4 (25 points)
Donner la définition en Python d’une fonction qui résout le problème suivant: n Entrée : (variable) chaine : chaîne de caractères (variable) sous-­‐chaine : chaîne de caractères n Sortie : (variable) liste : liste d’entiers n Relation : liste contient les positions de début de toutes les occurrences de sous-­‐
chaine dans chaine. Par exemple, si la fonction reçoit en paramètre chaine = "clairefontaine" et sous-­‐chaine = "ai", elle retourne liste = [2,10]. FIN DE L’EXAMEN 7
Téléchargement