Télécharger la présentation
1
Algorithmes sur Open Office
2
1. Ouvrir Visual Basic de Open Office
3
Ouvrir un module Visual Basic (1/3)
1) Ouvrir Open Office, créer un classeur nommé « algo » (Enregistrer sous…) 2) Faire « Outils/Macros/Gérer les macros/OpenOffice Basic »
4
Ouvrir un module Visual Basic (2/3)
3) Sélectionner votre classeur (ici « algo ») 4) Cliquer sur « Nouveau » et valider « Module1 » par OK
5
Ouvrir un module Visual Basic (3/3)
La fenêtre Visual Basic s’ouvre et est présente dans la barre des tâches. Les fonctions et procédures seront créées dans ce module.
6
2. Créer une fonction dans Visual Basic de Open Office
7
Créer une fonction en Visual Basic (1/3): la fonction
On veut créer une fonction qui s’appelle « signal »: signal est périodique, de période 2; la représentation graphique de signal est ci-dessous: sur [-1 ; 0], signal(x) = x et sur ]0 ; 1], signal(x) = 1 – x.
8
Créer une fonction en Visual Basic (2/3): création de la fonction
On créé une fonction d’une ou plusieurs variable par Function nom(x,y,z..) A la fin de l’algorithme, il y nécessairement End Function Les commentaires sont précédés d’une apostrophe. VB gère les « for.. Next » et les « Do ..loop » avec while ou until. Avant le « End function », il faut donner la valeur de l’image de x par la fonction signal par « signal =… »
9
Créer une fonction en Visual Basic (3/3): utilisation dans le tableur
Maintenant on peut utiliser la nouvelle fonction comme une fonction normale du tableur.
10
Cas d’une fonction récursive
11
Créer une fonction récursive en Visual Basic : Factoriel
On veut créer la fonction n n! qu’on appelle « fiel » (avec n entier naturel). On utilise la définition récurrente: fiel(0)=1 et pour tout n > 0, fiel(n) = n*fiel(n-1)
12
3. Créer une procédure dans Visual Basic de Open Office
13
Créer une procédure en Visual Basic (1/5): La procédure
On veut tirer au sort 5 noms d’élèves d’une liste de 35 noms. 1) Nommer une nouvelle feuille du classeur « procedure » 2) Créer une liste de 35 noms dans la colonne A (par exemple ELEVE1 dans A1, puis « tirer »
14
Créer une procédure en Visual Basic (2/5): Créer la procédure
Retourner dans le module visual basic. On créé la procédure appelée « tirage » par Sub tirage … End sub. Il suffit de mettre ce qu’il faut entre Sub et end sub!!!
15
Créer une procédure en Visual Basic (3/5): Créer un bouton sur le tableur
Pour lancer la procédure depuis le tableur, on peut créer un bouton qui, lorsqu’on cliquera dessus, lancera la procédure: 1) Afficher la barre d’outil « contrôle » dans affichage/barre d’outils/contrôle de formulaire 2) Créer un bouton à l’aide de l’outil bouton et cliquer/glisser Doit être enfoncé: Activation du mode conception Créé un bouton
16
Créer une procédure en Visual Basic (4/5): Créer un bouton sur le tableur
3) Afficher le « contrôle » du bouton (clic droit sur le bouton, contrôle) 4) Dans l’onglet « général », mettre le titre: tirage de 5 élèves
17
Créer une procédure en Visual Basic (5/5): Créer un bouton sur le tableur
5) Dans l’onglet « Evènements », associer le clic sur le bouton à la macro « tirage »: 6) Valider deux fois par OK puis désactiver le mode conception du bouton 7) Maintenant, quand on clique sur le bouton, la procédure se lance et 5 élèves sont désignés…. Normalement!
18
4. Réouverture d’un classeur contenant des procédures
19
Réouverture d’un classeur contenant des procédures (1/2)
Quand on ouvre un classeur contenant des macros (procédures visual basic), souvent ces macros sont « désactivées » et donc ne fonctionnent pas. Pour les activer: Outils/option OpenOffice.org/sécurité Sécurité des macros : Niveau de sécurité faible
20
Réouverture d’un classeur contenant des procédures (2/2)
Pour retourner sur visual basic: ALT F11 puis choisir votre module du classeur
21
5. Travail à faire…
22
Travail (1/3): créer une fonction
Exercice 1: En s’inspirant de la fonction signal: 1) Créer une fonction « chaine » périodique de période 4 telle que: sur [-1;1], chaine(x) = x² sur [-2;-1[, chaine(x) = x+2 sur ]1;2[, chaine(x) = 2-x 2) Tracer la représentation graphique de cette fonction sur [-8;8] dans le tableur.
23
Travail (2/3): créer une fonction récursive
Exercice 2: En s’inspirant de la fonction fiel: Créer la suite de fibonnaci : U0 = 1, U1 = 1 et pour tout entier n >1, Un = Un-1 + Un-2 à l’aide d’une fonction récursive appelée « suite »
24
Faire tourner l’algorithme
Travail (3/3): créer une fonction récursive Exercice 3: Modifier la procédure « tirage » de sorte à ce que les noms d’élèves tirés soit en ordre alphabétiques (c’est-à-dire que les nombres choisis doivent être en ordre croissant). On pourra utiliser l’algorithme de tri suivant: Variables: n: nombre de nombres à trier a: matrice des nombres à trier j: entier Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme Faire tourner l’algorithme
25
Réponses
26
Réponses (1/3): créer une fonction
Exercice 1: En s’inspirant de la fonction signal: 1) Créer une fonction « chaine » périodique de période 4 telle que: sur [-2;-1[, chaine(x) = x+2 sur [-1;1], chaine(x) = x² sur ]1;2[, chaine(x) = 2-x 2) Tracer la représentation graphique de cette fonction sur [-8;8] dans le tableur.
27
Réponses (2/3): créer une fonction récursive
Exercice 2: En s’inspirant de la fonction fiel: Créer la suite de fibonnaci : U0 = 1, U1 = 1 et pour tout entier n >1, Un = Un-1 + Un-2 à l’aide d’une fonction récursive appelée « suite »
28
Réponses (3/3): créer une fonction récursive
Exercice 3: Modifier la procédure « tirage » de sorte à ce que les noms d’élèves tirés soit en ordre alphabétiques (c’est-à-dire que les nombres choisis doivent être en ordre croissant). On pourra utiliser l’algorithme de tri suivant: Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme
29
Quelques fonctions et méthodes sur Visual Basic dans Open Office
30
Quelques fonctions importantes sur Visual basic de Open office
Mathématiques: sin, cos, tan, atan : sinus, cosinus, tangente, arc tangente exp, log : exponentiel et logarithme népérien sqr, ^, rnd : racine carrée, puissance, aléa de ]0;1[ int, abs, sgn : partie entière, valeur absolue, signe (renvoie -1,0,1 suivant le signe) +, *, -, /, mod : opérations habituelles et modulo (reste de la division euclidienne) Textes: str, val : convertit un nombre en chaîne de caractère, et inversement str(3,5) est la chaîne « 3,5 », val(« 3,5 ») est le nombre 3,5. left(« texte »,n) , right(« texte »,n) : renvoie les n caractère de gauche (droite) du « texte » left(« MATHEMATIQUES »,3) est égal à « MAT » mid(« texte »,n,p) : renvoie la partie du texte à partir du nième caractère et de longueur p « texte1 » & « texte2 » : concatène les deux textes len : donne la longueur d’un texte
31
3 méthodes importantes sur Visual basic de Open office
Chercher et mettre des informations dans une feuille du classeur: truc = thisComponent.getSheets.getByName(« machin ») : place dans la variable truc « l’objet » feuille appelée machin du classeur dans lequel est la procédure. truc.getCellByPosition(col,lig).string : est le texte contenue dans la cellule repérée par la colonne col et ligne lig de la feuille désignée par truc (cf au-dessus). Par exemple: si dans la feuille appelée machin du classeur la cellule B3 contient le texte « chien », A = truc.getCellByPosition(1,2).string met dans la variable A le mot « chien » truc.getCellByPosition(1,2).string = « chat » met le mot « chat » dans la cellule B3 Attention: La colonne A correspond à la colonne 0, la colonne B correspond à la colonne 1… La ligne 1 du classeur correspond à la ligne 0 de visual basic truc.getCellByPosition(col,lig).value : est le nombre contenu dans la cellule repérée par la colonne col et ligne lig de la feuille désignée par truc. Cela marche comme précédemment: on peut récupérer un nombre d’une cellule ou bien mettre un nombre dans une cellule
32
FIN
33
L’algorithme de tri
34
Algorithme de tri: on le fait « tourner »
On suppose que a(1)=7, a(2)=4, a(3)=3, n=3. Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 7 4
35
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4
36
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 j=1, n=3 Condition réalisée
37
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 j=1 a(j+1)=a(2)=4 a(j)=a(1)=7 Condition réalisée
38
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4
39
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 j=1 Condition non réalisée
40
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4
41
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2
42
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2 j=2, n=3 Condition réalisée
43
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2 a(j+1)=a(3)=3 a(j)=a(2)=7 Condition réalisée
44
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2
45
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2 j=2 Condition réalisée
46
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2
47
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2
48
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2
49
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2 j=1, n=3 Condition réalisée
50
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2 j=1, a(j+1)=a(2)=3 a(j)=a(1)=4 Condition réalisée
51
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2
52
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2 j=1, Condition non réalisée
53
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2
54
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2
55
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2 j=2, n=3 Condition réalisée
56
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2 j=2 a(j+1)=a(3)=7 a(j)=a(2)=4 Condition non réalisée
57
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2
58
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2 j=3, n=3 Condition non réalisée
59
Algorithme de tri: on le fait « tourner »
Début algorithme de tri 1j Répéter tant que j < n si a(j+1) < a(j) alors a(j) a(j+1) si j >1 alors j-2 j fin du si fin du si j+1 j fin du répéter Fin algorithme n j a(1) a(2) a(3) 3 1 7 4 2 Retour Les nombres a(j) sont triés
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.