algorithmes sur open office

Post on 05-Jan-2016

29 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

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)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.

2. Créer une fonctiondans Visual Basic de

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.

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.

Cas d’une fonctionrécursive

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)

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

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 »

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!

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

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

5. Travail à faire…

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

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.

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

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

FIN

L’algorithme de tri

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

top related