59
Algorithmes sur Open Office

Algorithmes sur Open Office

  • Upload
    strom

  • View
    29

  • Download
    0

Embed Size (px)

DESCRIPTION

Algorithmes sur Open Office. 1. Ouvrir Visual Basic de Open Office. 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 ». Ouvrir un module Visual Basic (2/3). - PowerPoint PPT Presentation

Citation preview

Page 1: Algorithmes  sur  Open  Office

Algorithmes sur

Open Office

Page 2: Algorithmes  sur  Open  Office

1. Ouvrir Visual Basic de Open Office

Page 3: Algorithmes  sur  Open  Office

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 »

Page 4: Algorithmes  sur  Open  Office

Ouvrir un module Visual Basic (2/3)3) Sélectionner votre classeur (ici « algo »)

4) Cliquer sur « Nouveau » et valider « Module1 » par OK

Page 5: Algorithmes  sur  Open  Office

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.

Page 6: Algorithmes  sur  Open  Office

2. Créer une fonctiondans Visual Basic de

Open Office

Page 7: Algorithmes  sur  Open  Office

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 + 1 et sur ]0 ; 1], signal(x) = 1 – x.

Page 8: Algorithmes  sur  Open  Office

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 =… »

Page 9: Algorithmes  sur  Open  Office

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.

Page 10: Algorithmes  sur  Open  Office

Cas d’une fonctionrécursive

Page 11: Algorithmes  sur  Open  Office

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)

Page 12: Algorithmes  sur  Open  Office

3. Créer une procédure dans Visual Basic de

Open Office

Page 13: Algorithmes  sur  Open  Office

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 »

Page 14: Algorithmes  sur  Open  Office

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!!!

Page 15: Algorithmes  sur  Open  Office

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 formulaire2) Créer un bouton à l’aide de l’outil bouton et cliquer/glisser

Doit être enfoncé:Activation du mode conception

Créé un bouton

Page 16: Algorithmes  sur  Open  Office

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

Page 17: Algorithmes  sur  Open  Office

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!

Page 18: Algorithmes  sur  Open  Office

4. Réouverture d’un classeur contenant des procédures

Page 19: Algorithmes  sur  Open  Office

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

Page 20: Algorithmes  sur  Open  Office

Réouverture d’un classeur contenant des procédures (2/2)

Pour retourner sur visual basic: ALT F11 puis choisir votre module du classeur

Page 21: Algorithmes  sur  Open  Office

5. Travail à faire…

Page 22: Algorithmes  sur  Open  Office

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.

Page 23: Algorithmes  sur  Open  Office

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 »

Page 24: Algorithmes  sur  Open  Office

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 à triera: matrice des nombres à trierj: 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éterFin algorithme

Faire tourner l’algorithme

Page 25: Algorithmes  sur  Open  Office

Réponses

Page 26: Algorithmes  sur  Open  Office

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-x2) Tracer la représentation graphique de cette fonction sur [-8;8] dans le tableur.

Page 27: Algorithmes  sur  Open  Office

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 »

Page 28: Algorithmes  sur  Open  Office

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éterFin algorithme

Page 29: Algorithmes  sur  Open  Office

Quelques fonctions et méthodessur Visual Basic dans Open Office

Page 30: Algorithmes  sur  Open  Office

Quelques fonctions importantes sur Visual basic de Open office

Mathématiques:sin, cos, tan, atan : sinus, cosinus, tangente, arc tangenteexp, log : exponentiel et logarithme népériensqr, ^, 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 texteslen : donne la longueur d’un texte

Page 31: Algorithmes  sur  Open  Office

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

Page 32: Algorithmes  sur  Open  Office

FIN

Page 33: Algorithmes  sur  Open  Office

L’algorithme de tri

Page 34: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 7 4 3

Page 35: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

Page 36: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

j=1, n=3Condition réalisée

Page 37: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

j=1a(j+1)=a(2)=4 a(j)=a(1)=7Condition réalisée

Page 38: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

Page 39: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

j=1Condition non réalisée

Page 40: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

Page 41: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

Page 42: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

j=2, n=3Condition réalisée

Page 43: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

a(j+1)=a(3)=3a(j)=a(2)=7Condition réalisée

Page 44: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 2 4 3 7

Page 45: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 2 4 3 7

j=2Condition réalisée

Page 46: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

Page 47: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

Page 48: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

Page 49: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

j=1, n=3 Condition réalisée

Page 50: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

j=1, a(j+1)=a(2)=3 a(j)=a(1)=4 Condition réalisée

Page 51: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

3 1 3 4 7

Page 52: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

3 1 3 4 7

j=1, Condition non réalisée

Page 53: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

3 1 3 4 7

Page 54: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

3 1 3 4 7

3 2 3 4 7

Page 55: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

3 1 3 4 7

3 2 3 4 7

j=2, n=3 Condition réalisée

Page 56: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

3 1 3 4 7

3 2 3 4 7

j=2a(j+1)=a(3)=7a(j)=a(2)=4 Condition non réalisée

Page 57: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

3 1 3 4 7

3 2 3 4 7

3 3 3 4 7

Page 58: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

3 1 3 4 7

3 2 3 4 7

3 3 3 4 7

j=3, n=3 Condition non réalisée

Page 59: Algorithmes  sur  Open  Office

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éterFin algorithme

n j a(1) a(2) a(3)

3 1 7 4 3

3 1 4 7 3

3 2 4 7 3

3 0 4 3 7

3 1 4 3 7

3 1 3 4 7

3 2 3 4 7

3 3 3 4 7

Les nombres a(j) sont triésRetour