Partie 3 Apprendre A Formuler Un Traitement TP 6156f3eca20c5
Partie 3 Apprendre A Formuler Un Traitement TP 6156f3eca20c5
Partie 3 Apprendre A Formuler Un Traitement TP 6156f3eca20c5
• Activité 6: Récursivité
2
Description de l’activité
Compétences visées
• Maitrise des structures alternatives (utilisation et syntaxe)
• Choix de la meilleure structure alternative pour un problème donné
Recommandations clés
• Bonne compréhension du problème
• Maitrise des notions vues dans le cours
Etapes
1. Demander de lister les entrées d’un problème ainsi que leurs types
2. Demander de lister les résultats calculés pour la résolution du problème ainsi que leurs types
3. Questionner sur les formules permettant de déterminer ces résultats
4. Guider les stagiaires à écrire l’algorithme en se basant sur les résultats obtenus précédemment
Enoncé de l’exercice1:
Un organisme de location de voiture propose deux formules de location :
1. Location au kilomètre :
• pour les 100 premiers kilomètres : tarif t1 au km,
• pour les kilomètres de 101 à 1000 : tarif t2 au km,
• au delà de 1000 kilomètres : tarif t3 au km.
2. Forfait journalier : kilométrage illimité au prix t4 par jour.
Dans les deux cas, il convient d’ajouter une assurance comptabilisée par jour et dont le montant est
donné.
Ecrire un algorithme qui lit le nombre total de kilomètres et le nombre de jours de location ainsi que
les tarifs t1, t2, t3 et t4 calcule les coûts totaux des deux tarifications, affiche les 2 coûts et indique
au client la solution la plus avantageuse
Modéliser un problème Apprendre à formuler un Traduire son algorithme dans le 4
Définir un algorithme langage de programmation Python
traitement
Description de l’activité
2. Demander de lister les résultats calculés pour la résolution du problème ainsi que leurs types
4. Guider les stagiaires à écrire l’algorithme en se basant sur les résultats obtenus précédemment
Enonvé de l’exercice2:
Écrire un algorithme qui étant donnés deux entiers représentant un mois et une année affiche le nombre de jours du
mois de cette année. On prendra en considération l’année bissextile (divisible par 4 et ne se termine pas par 00 ou elle
se termine par 00 et son quotient par 100 est divisible par 4).
2. Faire rappeler la formule permettant de vérifier si une année a est bissextile ou non
5. Guider les stagiaires à écrire l’algorithme en se basant sur les résultats obtenus précédemment
Exercice1:
2. Demander de lister les résultats calculés pour la résolution du problème ainsi que leurs types
Tarif 2?
Tarif 1?
Si km ≤ 100 → tarif1 := km * t1
4. Guider les stagiaires à écrire l’algorithme en se basant sur les résultats obtenus précédemment
Tarif tarif1 := tarif1 + (jour * ass)
Var t1, t2, t3, t4, ass, km, tarif1, tarif2 : réel tarif2 := jour * (t4+ass)
Jour : entier écrire(‘’Le coût selon la formule 1 est :’’, tarif1)
Début écrire(‘‘Le coût selon la formule 2 est :’’, tarif2)
Lire(t1,t2,t3,t4 ,ass,km,jour) si tarif1 = tarif2
Si km ≤ 100 alors écrire(‘’Les 2 formules ont le même coût’’)
Alors tarif1 := km * t1 sinon si tarif1 < tarif2
Sinon tarif1 := 100*t1 alors écrire(‘’La formule 1 est plus
si km ≤ 1000 avantageuse’’)
alors tarif1 := tarif1 + (km-100)*t2 sinon écrire(‘’La formule 2 est plus
sinon tarif1 := tarif1 + 900*t2 + (km- avantageuse’’)
1000)*t3 fsi
fsi fsi
fsi Fin
Enoncé de l’Exercice 2
Écrire un algorithme qui étant donnés deux entiers représentant un mois et une année affiche le nombre de jours du
mois de cette année. On prendra en considération l’année bissextile (divisible par 4 et ne se termine pas par 00 ou elle
se termine par 00 et son quotient par 100 est divisible par 4).
2. Faire rappeler de l’expression permettant de vérifier si une année a est bissextile ou non
si (a mod 4 = 0) ET ( (a mod 100 ≠ 0) OU (a mod 400 = 0)) alors a est bissextile sinon non
3. Questionner sur la possibilité d’utiliser la structure alternative Si_alors_sinon pour écrire l’algorithme
Non car dans ce cas l’emboîtement de si en cascade est fastidieux à écrire. Il est préférable d’utiliser le schéma
conditionnel généralisé
La variable a pour déterminer s’il s’agit d’une année bissextile et ainsi déterminer le nombre de jour pour le
mois de février
5. Guider les stagiaires à écrire l’algorithme en se basant sur les résultats obtenus précédemment
Nb-jours 4 :
Var m , a , j: entier 6 :
Debut 9 :
lire( m , a ) 11 : j := 30
cas m de : 2 : si (a mod 4 = 0) ET ( (a mod 100 ≠ 0) OU (a
1 : mod 400 = 0))
3 : alors j := 29
5 : sinon j := 28
7 : fsi
8 : default : j := 0
10 : fcas
12 : j := 31 écrire(₺Le nombre de jours est :₺, j)
Fin
13
Description de l’activité
Compétences Visées
• Maitrise des structures itératives (utilisation et syntaxe)
• Choix de la meilleure structure itérative pour un problème donné
Recommandations clés
• Bonne compréhension de l’exercice
• Maitrise des notions vues dans le cours
Etapes
1. Questionner sur la solution possible pour vérifier que l’entier N saisi est >0
2. Demander de préciser le nombre de structures itératives à programmer ainsi que leurs types
3. Demander de proposer un algorithme pour la résolution de ce problème
Écrire un algorithme qui lit un entier N > 0 puis saisit une suite de N quadruplets (un quadruplet est une suite
de 4 entiers). Pour chacun des quadruplets, l’algorithme doit afficher le minimum et le maximum des 4
nombres. Enfin, on affichera le plus petit et le plus grand de tous les nombres.
1. Questionner sur la solution possible pour vérifier que l’entier N saisi est >0
2. Demander de préciser le nombre de structures itératives à programmer ainsi que leurs types
Exercice1:
Écrire un algorithme qui lit un entier N > 0 puis saisit une suite de N quadruplets (un quadruplet est une suite
de 4 entiers). Pour chacun des quadruplets, l’algorithme doit afficher le minimum et le maximum des 4
nombres. Enfin, on affichera le plus petit et le plus grand de tous les nombres.
1. Questionner sur la solution possible pour vérifier que l’entier N saisi est >0
Répéter
Lire( N )
Jusqu’a N > 0
2. Demander de préciser le nombre de structures itératives à programmer ainsi que leurs types
3 structures itératives:
19
Description de l’activité
Compétences visées
• Maitrise de la manipulation des tableaux vecteurs et des matrices (lecture, saisie, remplissage, parcours,
etc)
Recommandations clés
• Maitrise des structures itératives et alternatives
Etapes
1. Proposer de définir une variable T de type tableau
2. Demander de préciser le type de la structure itérative à utiliser pour la résolution de ce problème
3. Donner une indication: Ajouter une variable booléenne Test qui est initialisée à vrai et prend faux si
T[i]>T[i+1]
3. Demander de proposer un algorithme pour la résolution de ce problème en se basant sur les étapes
précédentes
Enoncé de l’Exercice 1:
Ecrire un algorithme qui étant donné un tableau contenant N entiers (N ≤ 100) (on suppose le tableau est
rempli) retourne :
3. Donner une indication: Ajouter une variable booléenne Test qui est initialisée à vrai et prend faux si
T[i]>T[i+1]
3. Demander de proposer un algorithme pour la résolution de ce problème en se basant sur les étapes
précédentes
Enoncé de l’exercice 2:
Écrire un algorithme qui lit 2 entiers N et P ( > 0 et ≤ 100) puis saisit N*P entiers et les stocke dans
une matrice N lignes P colonnes ligne par ligne.
Ensuite, l’algorithme affiche le contenu de la matrice ligne par ligne et alternativement de gauche à
droite puis de droite à gauche.
Enoncé de l’exercice1:
T: Tab_entier
Répéter….. jusqu’à ou la structure Tanque puisque le nombre d’itérations n’est pas connu à l’avance
3. Donner une indication: Ajouter une variable booléenne Test qui est initialisée à vrai et prend faux si T[i]>T[i+1]
4s. Demander de proposer un algorithme pour la résolution de ce problème en se basant sur les étapes
précédentes
Enoncé de l’exercice 2:
Saisie_matrice
M: tableau[1..100,1..100] d’entiers
N,P : entiers
Debut
Lire (N)
Lire (P) // Il faut faire des tests sur les valeurs de N et P saisies
Pour i de 1 à N faire
Pour j de 1 à P faire
Lire( M[ i , j ] )
Fpour
Fpour
Fin
Permutter
Var
V,fin, deb: entier
Début
Lire(v)
Lire(fin)
v := deb
deb := fin
fin := v
Fin
Affiche_accordéon
deb := 1
Var
fin := P
M: tableau[1..100,1..100] d’entiers
Pour i de 1 à N faire
N,P : entiers
Pour j de deb à fin faire
i , j, deb, fin, v : entier
écrire( M[ i , j ] )
Debut
Fpour
Lire (N)
v := deb
Lire (P)
deb := fin
Pour i de 1 à N faire
fin := v
Pour j de 1 à P faire
Fpour
Lire( M[ i , j ] )
Fin
Fpour
Fpour
30
Description de l’activité
Compétences visées
• Maitrise des notions acquises dans le cours Fichiers
Recommandations clés
• Révision convenable du cours
C. l’accès à l’article de rang n, il est nécessaire de parcourir les (n-1) articles précédents.
A. Fermer un fichier
A. Vrai
B. Faux
A. Vrai
B. Faux
C. l’accès à l’article de rang n, il est nécessaire de parcourir les (n-1) articles précédents.
A. Vrai
B. Faux
35
Description de l’activité
Compétences visées
• Maitrise de la syntaxe d’écriture d’une procédure et d’une fonction
• Différencier entre procédure et fonction
• Maitriser l’appel d’une procédure ou une fonction dans un programme principal
Recommandations clés
• Maitrise de toute la partie précédente du cours
Etapes
1. Demander l’écrire une fonction/procédure permettant de retourner un entier positif saisi au clavier
2. Demander une définition d’une fonction permettant de retourner la somme des diviseurs d’un entier
positif
3. Demander l’écriture de l’algorithme principal faisant appel aux procédures et fonctions définies
précédemment
Enoncé de l’exercice1
Ecrire un algorithme qui permet de lire deux entiers X et Y strictement positifs, affiche "X et Y sont AMIS" ou "X
et Y ne sont pas AMIS".
1. Demander l’écrire une fonction/procédure permettant de retourner un entier positif saisi au clavier
2. Demander une définition d’une fonction permettant de retourner la somme des diviseurs d’un entier
positif
3. Demander l’écriture de l’algorithme principal faisant appel aux procédures et fonctions définies
précédemment
Enoncé de l’exercice1
1. Demander l’écrire une fonction/procédure permettant de retourner un entier positif saisi au clavier
lire_ent( ) : entier
Var x : entier
Début
Répéter
Lire( x )
Jusqu’à x > 0
lire_ent := x
Fin
2. Demander une définition d’une fonction permettant de retourner la somme des diviseurs d’un entier
positif
3. Demander l’écriture de l’algorithme principal faisant appel aux procédures et fonctions définies
précédemment
Amis
Var x, y, sx, sy : entier
Début
x := lire_ent( )
y := lire_ent( )
sx := Somme_div( x )
sy := Somme_div( y )
Si sx = y ET sy = x
Alors écrire(‘’Les 2 entiers sont amis’’)
Sinon écrire(‘’Les 2 entiers ne sont pas amis’’)
Fsi
Fin
42
Description de l’activité
Compétences visées
• Maitrise de toutes les étapes d’écriture d’une solution récursive (Condition d’arrêt et formule de récursivité)
Recommandations clés
• Maitrise de toute la partie précédente du cours
Etapes
1. Questionner sur la (les) condition(s) d’arrêt
2. Demander la formule de récurrence
3. Demander la définition d’une fonction récursive
Enoncé de l’exercice 1:
Ecrire une fonction récursive qui teste si une suite d’entiers stockée dans un tableau est croissante ou non.
Enoncé de l’exercice2:
Ecrire une fonction récursive qui teste si une suite d’entiers stockée dans un tableau est croissante ou non.
Cas particulier: suite vide ( deb>fin) ou suite contenant un seul élément (deb=fin), le résultat est évident la
suite est croissante.
Enoncé de l’exercice 2:
2 cas particuliers :
Selon la comparaison entre le milieu du tableau et x on oriente la recherche vers la partie à gauche ou la partie
à droite (Si x < T[m] on effectue une recherche à gauche sinon à droite)