590 likes | 700 Views
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).
E N D
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) 3) Sélectionner votre classeur (ici « algo »)4) Cliquer sur « Nouveau » et valider « Module1 » par OK
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.
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.
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 =…»
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.
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)
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 »
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!!!
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
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
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!
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
Réouverture d’un classeur contenant des procédures (2/2) Pour retourner sur visual basic: ALT F11 puis choisir votre module du classeur
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.
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 »
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
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.
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 »
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
Quelques fonctions et méthodessur Visual Basic dans 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 inversementstr(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
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 B3Attention: 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
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
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
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRé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 j=1, n=3Condition réalisée
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1j Répéter tant que j < nsi 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 j=1a(j+1)=a(2)=4 a(j)=a(1)=7Condition réalisée
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRépéter tant que j < nsi 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
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1j Répéter tant que j < nsi 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 j=1Condition non réalisée
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRépéter tant que j < nsi a(j+1) < a(j) alors a(j) a(j+1)si j >1 alors j-2 jfin du si fin du si j+1 j fin du répéterFin algorithme
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRé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
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 j=2, n=3Condition réalisée
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRépéter tant que j < nsi 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 a(j+1)=a(3)=3a(j)=a(2)=7Condition réalisée
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRé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
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRé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 j=2Condition réalisée
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRé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
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRé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
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRépéter tant que j < nsi 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
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1j Répéter tant que j < nsi 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 j=1, n=3 Condition réalisée
Algorithme de tri: on le fait « tourner » Début algorithme de tri 1jRépéter tant que j < nsi 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 j=1, a(j+1)=a(2)=3 a(j)=a(1)=4 Condition réalisée