Structures de base [bs] Exercices de cours Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner Unisciel algoprog Version 3 octobre 2016 Table des matières 1 Appréhender le cours 1.1 Compréhension d’algorithmes / qzexercs . 1.2 Simplification de programme / qzsimplific 1.3 Réutilisation d’une variable / pgaffect3 . . 1.4 Exponentiation 16-ème / pgexponent1 . . . . . . 2 2 4 5 6 2 Appliquer le cours 2.1 Opérations sur deux entiers / pgcalcul1 . . . . . . . . . . . . . . . . . . . 2.2 Durée de trajet / pgtrajet1 . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Un peu de trigo / pgtrigo1 . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 8 9 3 Approfondir le cours 3.1 Moyennes de deux entiers / pgmoyenne1 . . . . . . . . . . . . . . . . . . 3.2 Codage d’une date / pgdate1 . . . . . . . . . . . . . . . . . . . . . . . . 10 10 11 alg - Exercices de cours (TD) Mots-Clés Structures de base Difficulté • ◦ ◦ (1 h 30) 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unisciel algoprog – bs00exerc-texte, October 3, 2016 1 1.1 Appréhender le cours Compréhension d’algorithmes / qzexercs Utilise Variable, Affectation, Calculs Durée estimée 10 min Objectif Cet exercice demande de comprendre des algorithmes. alg : Algorithme 1 Algorithme QZExerc1 Variable a , b : Entier Début | Saisir ( a , b ) | a <- a + 2 * b | Afficher ( a ) Fin Que fait-il ? Qu’affiche-t-il pour les valeurs 2 et 3 ? alg : Algorithme 2 Algorithme QZExerc2 Variable a , b : Entier Variable q : Réel Début | Saisir ( a , b ) | q <- a / b | Afficher ( q ) Fin Que fait-il ? Qu’affiche-t-il pour les valeurs 2 et 3 ? alg : Algorithme 3 Algorithme QZExerc3 Variable a , b , c , e : Entier Début | Saisir ( c , e ) | a <- 2 * c + 5 * e 2 Unisciel algoprog – bs00exerc-texte, October 3, 2016 | b <- 2 + c * 3 + e | c <- Modulo ( a , b ) | Afficher ( DivEnt ( a , c ) ) Fin Que fait-il ? Qu’affiche-t-il pour les valeurs 2 et 3 ? alg : Algorithme 4 Algorithme QZExerc4 Variable x , y : Réel Début | Saisir ( x , y ) | x <- x * x | x <- x * x + y * y | x <- RacineCarrée ( x ) | Afficher ( x ) Fin Que fait-il ? Qu’affiche-t-il pour les valeurs 2 et 3 ? alg : Algorithme 5 Algorithme QZExerc5 Variable x : entier Début | Saisir ( x , x ) | x <- Modulo ( x , x ) + DivEnt ( x + 1 , 2 ) | Afficher ( x + 3 ) Fin Que fait-il ? Qu’affiche-t-il pour les valeurs 2 et 3 ? 3 Unisciel algoprog – bs00exerc-texte, October 3, 2016 1.2 4 Simplification de programme / qzsimplific Utilise Variable, Affectation, Calculs Durée estimée 10 min Soit le programme suivant : @[qzsimplific1a.alg] Début | Saisir ( | b <- a | c <- b + | Saisir ( | e <- 4 * | s <- e + | s <- s * | f <- s | Afficher Fin a ) b * b x ) x b s + c ( "Le resultat est " , f ) Déclarez les variables de type entier. Quel est le résultat avec 3 et -2 ? Justifiez. Les variables b et f étant inutiles, Écrivez une première version simplifiée du programme. Quelles sont les variables incompressibles (c.-à-d. les données et les résultats) ? Écrivez une deuxième version simplifiée en ne déclarant que les données et les résultats. Unisciel algoprog – bs00exerc-texte, October 3, 2016 1.3 Réutilisation d’une variable / pgaffect3 Utilise Variable, Affectation, Calculs Durée estimée 10 min Écrivez un algorithme qui ne fait rien. Déclarez deux entiers x et y. Affectez 3 à x. Affectez x à y. Affectez 3 * x + 1 à x. Affectez 2 * x - 5 * y à x. Affichez (où [x] désigne le contenu de x) : x vaut [x] et y vaut [y] Donnez la valeur des variables à l’issue de votre algorithme. 5 Unisciel algoprog – bs00exerc-texte, October 3, 2016 1.4 Exponentiation 16-ème / pgexponent1 Utilise Variable, Affectation, Calculs Durée estimée 5 min Écrivez un algorithme qui saisit un entier X dans x. Affichez l’invite : Valeur de X? Calculez le plus rapidement X 16 dans x. Aide simple Calculez X 2 puis X 4 puis X 8 puis X 16 . Affichez (où [x] désigne le contenu de x) : La valeur de X^16 est [x] 6 Unisciel algoprog – bs00exerc-texte, October 3, 2016 2 2.1 7 Appliquer le cours Opérations sur deux entiers / pgcalcul1 Utilise Variable, Calculs Durée estimée 10 min Écrivez un algorithme qui saisit deux entiers dans n1 et n2. Affichez l’invite : Deux entiers? Calculez et affichez directement : La somme est ... La différence est ... Le produit est ... Supposez le deuxième entier n2 non nul. Calculez et affichez : La division entière est ... Et le modulo est ... Outil alg L’opération a div b de la division entière s’écrit DivEnt(a,b) et celle du reste a mod b s’écrit Modulo(a,b). Unisciel algoprog – bs00exerc-texte, October 3, 2016 2.2 8 Durée de trajet / pgtrajet1 Utilise Variable, Calculs Durée estimée 10 min Objectif Cet exercice calcule la durée en minutes du trajet d’un véhicule : Écrivez un algorithme qui saisit la vitesse moyenne en km/h d’un véhicule dans vmoy (réel) et la distance parcourue en m par ce véhicule dans dist (réel). Affichez les invites : Vitesse moyenne (en km/h)? Distance en m? La formule qui lit les trois éléments est : vitesse = distance temps d’où temps = distance vitesse pour autant que les unités soient compatibles. Dans notre cas, on peut d’abord convertir la distance en km d’où le temps sera exprimée en heure que l’on divisera par 60 pour l’exprimer en minutes. Par conséquent : Calculez la distance en km dans km (réel) puis affichez : ==> Distance en km : ... ==> Duree en minutes : ... Autre solution : Calculez la vitesse en m/s dans vitesse (réel) et la durée en secondes du trajet de ce véhicule dans nsecs (entier). Affichez finalement : ==> Vitesse en m/s : ... ==> Duree en secondes : ... ==> Duree en minutes : ... Unisciel algoprog – bs00exerc-texte, October 3, 2016 2.3 Un peu de trigo / pgtrigo1 Utilise Variable, Calculs Durée estimée 5 min Écrivez un algorithme qui saisit un entier dans n. Affichez l’invite : Valeur de n? Calculez et affichez les valeurs de cos(n ∗ π/2) et de sin(n ∗ π/2). 9 Unisciel algoprog – bs00exerc-texte, October 3, 2016 3 3.1 Approfondir le cours Moyennes de deux entiers / pgmoyenne1 Utilise Variable, Calculs Durée estimée 10 min Écrivez un algorithme qui saisit deux entiers dans n1 et n2. Affichez l’invite : Deux entiers? Calculez et affichez (où [x] désigne le contenu de x) : Moyenne décimale de [n1] et [n2] est ... Calculez et affichez : Moyenne entière de [n1] et [n2] est ... 10 Unisciel algoprog – bs00exerc-texte, October 3, 2016 3.2 11 Codage d’une date / pgdate1 Utilise Variable, Calculs Durée estimée 10 min Objectif On choisit de coder une date par un entier composé de la façon suivante : a × 10000 + m × 100 + j où a est l’année (a ≥ 1), m le mois (1 ≤ m ≤ 12) et j le jour (1 ≤ j ≤ 31). Exemple : La date « 14 juillet 1789 » sera codée par l’entier 17890714. Cet exercice décode une telle date (dont on supposera qu’elle est valide). Écrivez un algorithme qui saisit une date codée dans d (entier). Affichez l’invite : Votre date codee? Calculez le numéro du jour, le numéro du mois et l’année dans les variables respectives j, m et a de type entier. Affichez (où [x] désigne le contenu de x) : jour=[j] mois=[m] annee=[a]