Your SlideShare is downloading. ×
INF120 - Algo DUT SRC1 - Cours 3
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

INF120 - Algo DUT SRC1 - Cours 3

5,376
views

Published on

Published in: Education

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,376
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. DUT SRC – IUT de Marne-la-Vallée 04/11/2011 INF120 - Algorithmique Cours 3Méthodologie pour lalgorithmique Philippe Gambette
  • 2. Sources • Le livre de Java premier langage, dA. Tasso • Cours INF120 de J.-G. Luque • Cours de J. Henriet : http://julienhenriet.olympe-network.com/Algo.html • http://xkcd.com, http://xkcd.free.fr
  • 3. Plan du cours 3 – Méthodologie • Résumé des épisodes précédents • Compétences acquises en INF120 • Méthodologie pour lalgorithmique • Exemples dapplication de la méthodologie
  • 4. Plan du cours 3 – Méthodologie • Résumé des épisodes précédents • Compétences acquises en INF120 • Méthodologie pour lalgorithmique • Exemples dapplication de la méthodologie
  • 5. Résumé de lépisode précédent Du problème au programme pour le résoudre : problème algorithme code source décomposition du traduction directe problème + connaissance des outils compilation javac disponibles + intuition traduction directe organigramme programme exécution java Codage des données : • Pour chaque type de variable (entiers, flottants, chaînes de caractères, couleurs, booléens), une méthode de codage en binaire est choisie (en Java : int, float, double, String, Color, boolean, ...) • Définition dopérations de base pour chaque type de données (en Java : +, -, *, /, %, &&, ||, !, ...)
  • 6. Plan du cours 3 – Méthodologie • Résumé des épisodes précédents • Compétences acquises en INF120 • Méthodologie pour lalgorithmique • Exemples dapplication de la méthodologie
  • 7. Compétences acquises en INF120 • Connaître les éléments de base dun algorithme • Savoir lire et comprendre un algorithme • Savoir concevoir un algorithme pour résoudre un problème • Savoir programmer un algorithme
  • 8. Compétences acquises en INF120 Connaître les éléments de base dun algorithme Un algorithme résout un problème, en fournissant un résultat en sortie à partir de données en entrée. Pour cela, il utilise plusieurs types dinstructions : - des affectations dans des variables (mémoires) - des boucles - des appels à dautres algorithmes - des tests - des “lectures” dentrées et “renvois” de sorties Chaque variable a un nom. On doit : - la déclarer en définissant son type (ensemble de valeurs possibles) - puis linitialiser (lui donner une valeur) avant de lutiliser.
  • 9. Compétences acquises en INF120 en pseudo-code Connaître les éléments de base dun algorithme Un algorithme résout un problème, en fournissant un résultat en sortie à Entrées : entiers i et j partir de données en entrée. Sortie : somme i+j (entier) une instruction par ligne ! Pour cela, il utilise plusieurs types dinstructions : - des affectations dans des variables (mémoires) produit ← entier1+produit - des boucles Tant que … faire : … Fin TantQue variable valeur - des appels à dautres algorithmes Addition(3,5) entrées de lalgorithme entre parenthèses, respectant lordre de déclaration des entrées - des tests Si ... alors : ... sinon : … FinSi - des “lectures” dentrées et “renvois” de sorties renvoyer i+j Chaque variable a un nom. On doit : - la déclarer en définissant son type (ensemble de valeurs possibles) Variables : entiers a et b - puis linitialiser (lui donner une valeur par une affectation) type avant de lutiliser. a ←2 b ← a+2
  • 10. Compétences acquises en INF120 en Java Connaître les éléments de base dun algorithme Un algorithme résout un problème, en fournissant un int Addition(int i, int j){...} public static résultat en sortie à partir de données en entrée. type de sortie entrées précédées de instructions finies par “;” leur type Pour cela, il utilise plusieurs types dinstructions : - des affectations dans des variables (mémoires) produit = entier1+produit; - des boucles while(…){...} variable valeur - des appels à dautres algorithmes Addition(3,5); entrées de lalgorithme entre parenthèses, respectant lordre de déclaration des entrées - des tests if(...){...}else{...} - des “lectures” dentrées et “renvois” de sorties Indentation : while (i<10){ return i+j; décalage du début if (x==5){ i=i+1; de la ligne pour } structurer le code } Chaque variable a un nom. On doit : - la déclarer en définissant son type (ensemble de valeurs possibles) int a,b; - puis linitialiser (lui donner une valeur par une affectation) type a = 2; avant de lutiliser. b = a+2;
  • 11. Plan du cours 3 – Méthodologie • Résumé des épisodes précédents • Compétences acquises en INF120 • Méthodologie pour lalgorithmique • Exemples dapplication de la méthodologie
  • 12. Méthodologie pour lalgorithmique Savoir lire et comprendre un algorithme Premiers éléments à identifier : - quest-ce que lalgorithme prend en entrée ? Combien de variables, de quels types ? - quest-ce que lalgorithme renvoie en sortie ? Rien ? Ou bien une variable ? De quel type ? Ensuite : - quels sont les autres algorithmes appelés par lalgorithme ? Enfin : - faire la trace de lalgorithme, cest-à-dire lessayer sur un exemple (… ou plusieurs pour passer au moins une fois par toutes les instructions de lalgorithme) et voir ce que valent toutes les variables à chaque étape (et noter ces valeurs dans un tableau contenant une ligne par variable et une colonne par étape), - noter en particulier le résultat obtenu en sortie pour une entrée testée.
  • 13. Méthodologie pour lalgorithmique Savoir concevoir un algorithme pour résoudre un problème La “minute xkcd” Problèmes informatiques Mais aujourdhui, Cest comme ceci Sur une Je passe la plupart de Tu connais ce échelle de 1 à 10, lagencement des lumières que jexplique mes quelle est la probabilité temps à appuyer rectangle métallique mon est complètement anormal ! problèmes plein de petites question utilise boutons pour que cette sur des Oh mon Dieu ! dordinateur à mon lumières ? du binaire ? changer la configuration Essaye dappuyer chat. Dhabitude, il a Oui. des lumières comme je le veux. Ça naméliore sur plus de 4? lair plus content que Cool. rien ! boutons ! moi. Cest quoi un 4 ? http://xkcd.com/722 http://xkcd.free.fr?id=722
  • 14. Méthodologie pour lalgorithmique Savoir concevoir un algorithme pour résoudre un problème Premiers éléments à identifier : - quels sont les outils à disposition ? (pour ces outils : données en entrée, type de données en entrée, résultat en sortie, type de résultat en sortie, résultat attendu sur un exemple...) - quel est le comportement attendu pour mon algorithme ? (données en entrée, type de données en entrée, résultat en sortie, type de résultat en sortie, résultat attendu sur un exemple...) Ensuite, résoudre le problème en utilisant ces outils : - comment résoudre le problème étape par étape ? (essayer sur lexemple testé) - est-ce que les outils à disposition sont utilisables pour réaliser chaque étape ? Enfin : - comment structurer lutilisation des outils à disposition ? (combinaison des différents outils à lintérieur de structure de boucles, de tests, utilisation dun organigramme...) - comment décomposer le problème ? (et reformuler chaque sous-problème pour le résoudre avec les outils à disposition, écrire un algorithme par sous-problème)
  • 15. Plan du cours 3 – Méthodologie • Résumé des épisodes précédents • Compétences acquises en INF120 • Méthodologie pour lalgorithmique • Exemples dapplication de la méthodologie
  • 16. Le toit avec une pente à 26,565° i=0; rouge=couleurRGB(200,0,0); while (i<51){ dessineLigne(g,300+2*i,199-i,300+2*i,199,rouge); dessineLigne(g,300+2*i+1,199-i,300+2*i+1,199,rouge); dessineLigne(g,500-2*i,199-i,500-2*i,199,rouge); dessineLigne(g,500-2*i+1,199-i,500-2*i+1,199,rouge); i=i+1; }
  • 17. Le toit avec une pente à 26,565° i=0; rouge=couleurRGB(200,0,0); while (i<51){ dessineLigne(g,300+2*i,199-i,300+2*i,199,rouge); dessineLigne(g,300+2*i+1,199-i,300+2*i+1,199,rouge); dessineLigne(g,500-2*i,199-i,500-2*i,199,rouge); dessineLigne(g,500-2*i+1,199-i,500-2*i+1,199,rouge); i=i+1; } Faire la trace de lalgorithme
  • 18. Le toit avec une pente à 26,565° (300,200) (500,200) i=0; rouge=couleurRGB(200,0,0); while (i<51){ dessineLigne(g,300+2*i,199-i,300+2*i,199,rouge); dessineLigne(g,300+2*i+1,199-i,300+2*i+1,199,rouge); dessineLigne(g,500-2*i,199-i,500-2*i,199,rouge); dessineLigne(g,500-2*i+1,199-i,500-2*i+1,199,rouge); i=i+1; } Faire la trace de lalgorithme “dessineLigne(Graphics g, int abscisse1, int ordonnee1, int abscisse2, int ordonnee2, Color couleur), qui dessine sur lobjet g une ligne commençant au point de coordonnées (abscisse1,ordonnee1) et se terminant au point de coordonnées (abscisse2,ordonnee2).”
  • 19. Le toit avec une pente à 26,565° (300,200) (500,200) i=0; rouge=couleurRGB(200,0,0); while (i<51){ dessineLigne(g,300+2*i,199-i,300+2*i,199,rouge); dessineLigne(g,300+2*i+1,199-i,300+2*i+1,199,rouge); dessineLigne(g,500-2*i,199-i,500-2*i,199,rouge); dessineLigne(g,500-2*i+1,199-i,500-2*i+1,199,rouge); i=i+1; } Faire la trace de lalgorithme, quand i=0 : dessineLigne(g,300,199,300,199,rouge) dessineLigne(g,301,199,301,199,rouge) ...
  • 20. Le toit avec une pente à 26,565° (300,200) (500,200) i=0; rouge=couleurRGB(200,0,0); while (i<51){ dessineLigne(g,300+2*i,199-i,300+2*i,199,rouge); dessineLigne(g,300+2*i+1,199-i,300+2*i+1,199,rouge); dessineLigne(g,500-2*i,199-i,500-2*i,199,rouge); dessineLigne(g,500-2*i+1,199-i,500-2*i+1,199,rouge); i=i+1; } Faire la trace de lalgorithme, quand i=1 : dessineLigne(g,302,198,302,199,rouge) dessineLigne(g,303,198,303,199,rouge) ...
  • 21. Le toit avec une pente à 26,565° (300,200) (500,200) i=0; rouge=couleurRGB(200,0,0); while (i<51){ dessineLigne(g,300+2*i,199-i,300+2*i,199,rouge); dessineLigne(g,300+2*i+1,199-i,300+2*i+1,199,rouge); dessineLigne(g,500-2*i,199-i,500-2*i,199,rouge); dessineLigne(g,500-2*i+1,199-i,500-2*i+1,199,rouge); i=i+1; } Faire la trace de lalgorithme, quand i=10 : dessineLigne(g,320,189,320,199,rouge) dessineLigne(g,321,189,321,199,rouge) ...
  • 22. Le toit avec une pente à 26,565° i=0; rouge=couleurRGB(200,0,0); while (i<51){ dessineLigne(g,300+2*i,199-i,300+2*i,199,rouge); dessineLigne(g,300+2*i+1,199-i,300+2*i+1,199,rouge); dessineLigne(g,500-2*i,199-i,500-2*i,199,rouge); dessineLigne(g,500-2*i+1,199-i,500-2*i+1,199,rouge); i=i+1; } On sort de la boucle après avoir affecté la valeur 51 à la variable i
  • 23. Le toit avec une pente à 26,565° i=0; rouge=couleurRGB(200,0,0); while (i<51){ dessineLigne(g,300+2*i,199-i,300+2*i,199,rouge); dessineLigne(g,300+2*i+1,199-i,300+2*i+1,199,rouge); dessineLigne(g,500-2*i,199-i,500-2*i,199,rouge); dessineLigne(g,500-2*i+1,199-i,500-2*i+1,199,rouge); i=i+1; } Traduction en pseudo-code : Algorithme DessineToit() Variables : entier i, couleur rouge Début i←0 rouge ← couleurRGB(200,0,0) Tant que i<51 faire : dessineLigne(300+2i,199-i,300+2i,199,rouge) dessineLigne(301+2i,199-i,301+2i,199,rouge) dessineLigne(500-2i,199-i,500-2i,199,rouge) dessineLigne(501-2i,199-i,501-2i,199,rouge) i ← i+1 Fin TantQue Fin
  • 24. Exercice 1 du TD2• 42 en binaire : 101010• 84 en binaire : 1010100• Déduisez-en un algorithme DiviseParDeuxPair qui prend en entrée une chaînede caractères qui contient un nombre binaire n et sil est pair, renvoie unechaîne de caractères qui contient la valeur de n/2 écrite en binaire. Vousutiliserez lalgorithme Caractère qui prend en entrée une chaîne de caractèreschaine et un entier i et renvoie le i-ième caractère de chaine, ainsi quelalgorithme SousChaine qui renvoie la partie de la chaîne de caractères chaineallant du i-ième au j-ième caractère (inclus), et lalgorithme Longueur quirenvoie le nombre de caractères de la chaîne de caractères chaine.Longueur :Entrée : chaîne de caractères chaine
  • 25. Exercice 1 du TD2• 42 en binaire : 101010• 84 en binaire : 1010100• Déduisez-en un algorithme DiviseParDeuxPair qui prend en entrée une chaînede caractères qui contient un nombre binaire n et sil est pair, renvoie unechaîne de caractères qui contient la valeur de n/2 écrite en binaire. Vousutiliserez lalgorithme Caractère qui prend en entrée une chaîne de caractèreschaine et un entier i et renvoie le i-ième caractère de chaine, ainsi quelalgorithme SousChaine qui renvoie la partie de la chaîne de caractères chaineallant du i-ième au j-ième caractère (inclus), et lalgorithme Longueur quirenvoie le nombre de caractères de la chaîne de caractères chaine.Longueur :Entrée : chaîne de caractères chaineSortie : entier (nombre de caractères de chaine)
  • 26. Exercice 1 du TD2• 42 en binaire : 101010• 84 en binaire : 1010100• Déduisez-en un algorithme DiviseParDeuxPair qui prend en entrée une chaînede caractères qui contient un nombre binaire n et sil est pair, renvoie unechaîne de caractères qui contient la valeur de n/2 écrite en binaire. Vousutiliserez lalgorithme Caractère qui prend en entrée une chaîne de caractèreschaine et un entier i et renvoie le i-ième caractère de chaine, ainsi quelalgorithme SousChaine qui renvoie la partie de la chaîne de caractères chaineallant du i-ième au j-ième caractère (inclus), et lalgorithme Longueur quirenvoie le nombre de caractères de la chaîne de caractères chaine.Longueur :Entrée : chaîne de caractères chaine Longueur(“101010”)Sortie : entier (nombre de caractères de chaine) 6
  • 27. Exercice 1 du TD2• 42 en binaire : 101010• 84 en binaire : 1010100• Déduisez-en un algorithme DiviseParDeuxPair qui prend en entrée une chaînede caractères qui contient un nombre binaire n et sil est pair, renvoie unechaîne de caractères qui contient la valeur de n/2 écrite en binaire. Vousutiliserez lalgorithme Caractère qui prend en entrée une chaîne de caractèreschaine et un entier i et renvoie le i-ième caractère de chaine, ainsi quelalgorithme SousChaine qui renvoie la partie de la chaîne de caractères chaineallant du i-ième au j-ième caractère (inclus), et lalgorithme Longueur quirenvoie le nombre de caractères de la chaîne de caractères chaine.Longueur :Entrée : chaîne de caractères chaine Longueur(“101010”)Sortie : entier (nombre de caractères de chaine) 6DiviseParDeuxPair :Entrée : chaîne de caractères chaine (qui code un entier n)Sortie : chaîne de caractères (n/2 en binaire)
  • 28. Exercice 1 du TD2• 42 en binaire : 101010• 84 en binaire : 1010100• Déduisez-en un algorithme DiviseParDeuxPair qui prend en entrée une chaînede caractères qui contient un nombre binaire n et sil est pair, renvoie unechaîne de caractères qui contient la valeur de n/2 écrite en binaire. Vousutiliserez lalgorithme Caractère qui prend en entrée une chaîne de caractèreschaine et un entier i et renvoie le i-ième caractère de chaine, ainsi quelalgorithme SousChaine qui renvoie la partie de la chaîne de caractères chaineallant du i-ième au j-ième caractère (inclus), et lalgorithme Longueur quirenvoie le nombre de caractères de la chaîne de caractères chaine.Longueur :Entrée : chaîne de caractères chaine Longueur(“101010”)Sortie : entier (nombre de caractères de chaine) 6DiviseParDeuxPair :Entrée : chaîne de caractères chaine (qui code un entier n)Sortie : chaîne de caractères (n/2 en binaire)DiviseParDeuxPair(“1010100”) SousChaine(“1010100”,2,3) “101010” “01”
  • 29. Exercice 1 du TD2 Principale instruction :• 42 en binaire : 101010 renvoyer SousChaine(chaine,1,Longueur(chaine)-1)• 84 en binaire : 1010100• Déduisez-en un algorithme DiviseParDeuxPair qui prend en entrée une chaînede caractères qui contient un nombre binaire n et sil est pair, renvoie unechaîne de caractères qui contient la valeur de n/2 écrite en binaire. Vousutiliserez lalgorithme Caractère qui prend en entrée une chaîne de caractèreschaine et un entier i et renvoie le i-ième caractère de chaine, ainsi quelalgorithme SousChaine qui renvoie la partie de la chaîne de caractères chaineallant du i-ième au j-ième caractère (inclus), et lalgorithme Longueur quirenvoie le nombre de caractères de la chaîne de caractères chaine.Longueur :Entrée : chaîne de caractères chaine Longueur(“101010”)Sortie : entier (nombre de caractères de chaine) 6DiviseParDeuxPair :Entrée : chaîne de caractères chaine (qui code un entier n)Sortie : chaîne de caractères (n/2 en binaire)DiviseParDeuxPair(“1010100”) SousChaine(“1010100”,2,3) “101010” “01”
  • 30. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.
  • 31. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte. Outils à disposition : SousChaine, Longueur, CaractèreExemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ” South Park S15E09 http://www.spscriptorium.com/Season15/E1509script.htm
  • 32. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte. Outils à disposition : SousChaine, Longueur, CaractèreExemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”TrouveMotEntrées : chaîne de caractères mot, chaîne de caractères texteSortie : entier (nombre de fois que mot apparaît dans texte) TrouveMot(“fuck”, “Nobodys fuckin screaming, Craig! Wake the fuck up!”) renvoie lentier 2
  • 33. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte. Outils à disposition : SousChaine, Longueur, CaractèreExemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Idée : regarder à toutes les positions de la chaîne decaractères texte si on trouve le mot mot.Décomposition du problème :• à toutes les positions de texte• on teste si on trouve mot
  • 34. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte. Outils à disposition : SousChaine, Longueur, CaractèreExemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Idée : regarder à toutes les positions de la chaîne decaractères texte si on trouve le mot mot.Décomposition du problème :• à toutes les positions de texte• on teste si on trouve mot la sous-chaine de texte qui commence au i-ième caractère et a autant de lettres que mot, cest-à-dire 4, est-elle égale à mot ? reformulation du problème avec Caractères, SousChaine, Longueur
  • 35. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte. Outils à disposition : SousChaine, Longueur, CaractèreExemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Idée : regarder à toutes les positions de la chaîne decaractères texte si on trouve le mot mot.Décomposition du problème :• à toutes les positions de texte• on teste si on trouve mot la sous-chaine de texte qui commence au i-ième caractère et a autant de lettres que mot, cest-à-dire 4, est-elle égale à mot ? mot = SousChaine(texte,i,i+...) ? reformulation du problème avec Caractères, SousChaine, Longueur
  • 36. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte. Outils à disposition : SousChaine, Longueur, CaractèreExemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Idée : regarder à toutes les positions de la chaîne decaractères texte si on trouve le mot mot.Décomposition du problème :• à toutes les positions de texte• on teste si on trouve mot la sous-chaine de texte qui commence au i-ième caractère et a autant de lettres que mot, cest-à-dire 4, est-elle égale à mot ? mot = SousChaine(texte,i,i+3) ? reformulation du problème avec Caractères, SousChaine, Longueur
  • 37. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte. Outils à disposition : SousChaine, Longueur, CaractèreExemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Idée : regarder à toutes les positions de la chaîne decaractères texte si on trouve le mot mot.Décomposition du problème :• à toutes les positions de texte• on teste si on trouve mot la sous-chaine de texte qui commence au i-ième caractère et a autant de lettres que mot, cest-à-dire 4, est-elle égale à mot ? mot = SousChaine(texte,i,i+Longueur(mot)-1) ? reformulation du problème avec Caractères, SousChaine, Longueur
  • 38. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte. Outils à disposition : SousChaine, Longueur, CaractèreExemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Idée : regarder à toutes les positions de la chaîne decaractères texte si on trouve le mot mot.Décomposition du problème :• à toutes les positions de texte appeler cette position i• on teste si on trouve mot la faire varier de 1 à ... mot = SousChaine(texte,i,i+Longueur(mot)-1) ? reformulation du problème avec Caractères, SousChaine, Longueur
  • 39. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte. Outils à disposition : SousChaine, Longueur, CaractèreExemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Idée : regarder à toutes les positions de la chaîne decaractères texte si on trouve le mot mot.Décomposition du problème :• à toutes les positions de texte appeler cette position i i←1• on teste si on trouve mot la faire varier de 1 à ... Tant que i<Longueur(texte)- Longueur(mot)+2 faire : ... mot = SousChaine(texte,i,i+Longueur(mot)-1) ? reformulation du problème avec Caractères, SousChaine, Longueur
  • 40. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte. Outils à disposition : SousChaine, Longueur, CaractèreExemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Idée : regarder à toutes les positions de la chaîne decaractères texte si on trouve le mot mot.Décomposition du problème :• à toutes les positions de texte i←1• on teste si on trouve mot Tant que i<Longueur(texte)- Longueur(mot)+2 faire : ... mot = SousChaine(texte,i,i+Longueur(mot)-1) ? reformulation du problème avec Caractères, SousChaine, Longueur
  • 41. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.Exemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ” i←1 Tant que i<Longueur(texte)-Longueur(mot)+2 faire : mot = SousChaine(texte,i,i+Longueur(mot)-1) ?
  • 42. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.Exemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Algorithme TrouveMot :Entrées : chaîne de caractères mot, chaîne de caractères texteSorties : nombre de fois (entier) que mot apparaît dans texteVariables : entier iDébut i←1 ... Tant que i<Longueur(texte)-Longueur(mot)+2 faire : Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors : ... i ← i+1 Fin TantQue ...Fin
  • 43. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.Exemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Algorithme TrouveMot :Entrées : chaîne de caractères mot, chaîne de caractères texteSorties : nombre de fois (entier) que mot apparaît dans texteVariables : entier iDébut i←1 ... Tant que i<Longueur(texte)-Longueur(mot)+2 faire : Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors : ... i ← i+1 Fin TantQue ...Fin
  • 44. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.Exemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Algorithme TrouveMot :Entrées : chaîne de caractères mot, chaîne de caractères texteSorties : nombre de fois (entier) que mot apparaît dans texteVariables : entiers i, NombreTrouvéDébut i←1 NombreTrouvé ← 0 Tant que i<Longueur(texte)-Longueur(mot)+2 faire : Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors : ... i ← i+1 Fin TantQue ...Fin
  • 45. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.Exemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Algorithme TrouveMot :Entrées : chaîne de caractères mot, chaîne de caractères texteSorties : nombre de fois (entier) que mot apparaît dans texteVariables : entiers i, NombreTrouvéDébut i←1 NombreTrouvé ← 0 Tant que i<Longueur(texte)-Longueur(mot)+2 faire : Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors : NombreTrouvé ← NombreTrouvé+1 FinSi i ← i+1 Fin TantQue ...Fin
  • 46. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.Exemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Algorithme TrouveMot :Entrées : chaîne de caractères mot, chaîne de caractères texteSorties : nombre de fois (entier) que mot apparaît dans texteVariables : entiers i, NombreTrouvéDébut i←1 NombreTrouvé ← 0 Tant que i<Longueur(texte)-Longueur(mot)+2 faire : Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors : NombreTrouvé ← NombreTrouvé+1 FinSi i ← i+1 Fin TantQue renvoyer NombreTrouvéFin
  • 47. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.Exemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Algorithme TrouveMot :Entrées : chaîne de caractères mot, chaîne de caractères texteSorties : nombre de fois (entier) que mot apparaît dans texteVariables : entiers i, NombreTrouvéDébut i←1 NombreTrouvé ← 0 Pourquoi cette condition darrêt ? Tant que i<Longueur(texte)-Longueur(mot)+2 faire : Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors : NombreTrouvé ← NombreTrouvé+1 FinSi i ← i+1 Fin TantQue renvoyer NombreTrouvéFin
  • 48. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.Exemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Algorithme TrouveMot :Entrées : chaîne de caractères mot, chaîne de caractères texteSorties : nombre de fois (entier) que mot apparaît dans texteVariables : entiers i, NombreTrouvéDébut i←1 NombreTrouvé ← 0 Pourquoi cette condition darrêt ? Tant que i<Longueur(texte)-Longueur(mot)+2 faire : Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors : NombreTrouvé ← NombreTrouvé+1 FinSi 123456 i ← i+1 mot = “ab” texte = “ccabab” Fin TantQue renvoyer NombreTrouvéFin
  • 49. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.Exemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Algorithme TrouveMot :Entrées : chaîne de caractères mot, chaîne de caractères texteSorties : nombre de fois (entier) que mot apparaît dans texteVariables : entiers i, NombreTrouvéDébut i←1 NombreTrouvé ← 0 Pourquoi cette condition darrêt ? Tant que i<Longueur(texte)-Longueur(mot)+2 faire : Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors : NombreTrouvé ← NombreTrouvé+1 FinSi 123456 i ← i+1 mot = “abc” texte = “ccabab” Fin TantQue renvoyer NombreTrouvéFin
  • 50. Le nombre dutilisations dun mot dans un texte• Écrivez un algorithme TrouveMot qui prend en entrée une chaîne decaractères mot et une chaîne de caractères texte, et compte le nombrede fois que mot apparaît dans texte.Exemple : mot = “fuck” texte=“ Nobodys fuckin screaming, Craig! Wake the fuck up! ”Algorithme TrouveMot :Entrées : chaîne de caractères mot, chaîne de caractères texteSorties : nombre de fois (entier) que mot apparaît dans texteVariables : entiers i, NombreTrouvéDébut i←1 NombreTrouvé ← 0 Pourquoi cette condition darrêt ? Tant que i<Longueur(texte)-Longueur(mot)+2 faire : Si mot = SousChaine(texte,i,i+Longueur(mot)-1) alors : Longueur(texte) NombreTrouvé ← NombreTrouvé+1 FinSi 123456 i ← i+1 mot = “abc” texte = “ccabab” Fin TantQue renvoyer NombreTrouvéFin Longueur(texte)-Longueur(mot)+1 6 4