CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Débutant] Calculatrice Vb

Aigle21
Aigle21
Niveau 9
02 décembre 2009 à 16:54:25

Salut, voila je dois faire une calculatrice en vb

j'ai commencé, je peux faire addition soustraction division multipli. ... même si y'a des probs mais je ne suis pas venu vous demandez pour ce problème encore ^^

donc dans mon code j'ai mes boutons 1 2 3 4 5 6 7 (btn_9_Click...handles...) cependant chaque bouton à ses 3-5 lignes de code

et je me demandais si il n'y avait pas moyen de passer par une fonction pour remplacer tout cela

si vous voyez ce que je veux dire et si c'est possible pour la fonction, est-ce que sans me donner la réponse vous pouvez m'orientez sur une piste, une struture pour réaliser cela

soit c'est pas possible et c'est pour ça que j'ai pas le bon déclic, soit je suis sur la bonne voie mais il me manque un élément qui fait que j'ai pas le déclic ^^

Voila merci !

Aigle21
Aigle21
Niveau 9
02 décembre 2009 à 16:57:03

(visual basic version 08)

dnob700
dnob700
Niveau 10
02 décembre 2009 à 17:22:27

Soit tu dois générer les fonction de gestion d'événement par de la programmation. Mais ce n'estpas forcément intéressant quand tu en as un nombre fixé à l'avance et qui est connu. Dans ton cas, j'imagine que le code de chacune des fonction est le même à un paramètre près qui est le numéro du bouton.

Écris une fonction qui prend ce numéro en argument et qui fait ce qu'il faut lorsqu'un bouton est appuyé. Puis appel cette fonction depuis le handler de chaque bouton. Comme ça, le code de chaque bouton sera vraiment réduit au stricte minimum.

Aigle21
Aigle21
Niveau 9
03 décembre 2009 à 09:51:10

Bon j'avoue ne pas trop comprendre :/

en tout cas je peux déjà réduire un minimum le code tel que cela

AVANT :
affichage1 variableglobale

Private Sub btn_8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_8.Click
..........lbl_nombre.Text = lbl_nombre.Text & "8"
..........affichage1 = lbl_nombre.Text
End Sub

APRES :
Sub bouton(ByVal valeurbouton As Single)
..........lbl_nombre.Text = lbl_nombre.Text & valeurbouton
..........affichage1 = lbl_nombre.Text
End Sub

Private Sub btn_9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_9.Click
..........bouton(9)
End Sub

Donc à chaque bouton on retrouve juste l'appel de la procédure bouton avec en paramètre le chiffre
par contre est-ce bien juste ?

je n'ai pas trop compris le principe, je ne sais pas si c'est une valeur d'entrée ou de sortie qu'il faut utiliser ? (byval byref ?)

(sauf si fallait une fonction pour cela... c'est difficile de faire la distinction)

Aigle21
Aigle21
Niveau 9
03 décembre 2009 à 09:58:22

je crois que mon ptoblème est :

est-ce que chaque bouton doit obligatoirement avoir sa ligne de code :

Private Sub btn_8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_8.Click
..........lbl_nombre.Text = lbl_nombre.Text & "8"
..........affichage1 = lbl_nombre.Text
End Sub

?
parce que si je fais fonction ou procédure, il faut bien que je mette un paramètre du chiffre qui sera entré, et ce chiffre correspond au bouton ? mais si je supprime chaque code de chaque bouton je pourrais plus y faire référence dans ma fonction

alala !

merci

dnob700
dnob700
Niveau 10
03 décembre 2009 à 10:52:07

Prend l'habitude d'utiliser des mots précis quand tu décris un problème, ça rend toute aide plus facile. Ce que tu montre, ce n'est pas "une ligne de code", mais une procédure ou un gestionnaire d'événement.

Et oui, chaque boutons doit en avoir un (tu pourrais ne pas les écrire et avoir une seule fonction qui les fabriquent tous, mais si tu ne connais pas la différence entre byval et byref, il est trop tôt). La meilleur solution pour l'instant est celle que tu adopte où chaque bouton appel juste ta procédure bouton. Comme ça si tu dois changer le traitement qui est fait par les boutons, tu ne le fait qu'à un seul endroit (et ton code est plus court et plus lisible).

Il faut bien utiliser des paramètre byval (de toutes manières, tant que tu ne sais pas qu'elle est la différence, il ne faut utiliser que des byval). Il n'y a pas de différence entre une fonction et une procédure, sauf que la procédure (sub) ne renvoie pas de valeur à la fin de son traitement tandis que la fonction oui. La plupart des autres langages n'ont pas deux concepts pour ça, mais un seul avec des fonctions qui ne renvoient rien. ByVal est ce qu'il faut toujours utiliser pour passer des arguments à une fonction (elle peut les lire, mais usuellement elle n'a pas à les modififer). ByRef est exceptionnel quand tu dois donner des arguments à une fonction et que celle-ci peut changer leur valeur, et qu'une valeur de retour de la fonction ne serait pas approprié pour ça.

Aigle21
Aigle21
Niveau 9
03 décembre 2009 à 17:12:06

Ok merci j'ai l'impression de comprendre de mieux en mieux au fil de la création de la calculette

je m'occuppe donc maintenant des fonctions additions soustraction...

j'ai juste une question pour l'instant

Si je met par ex (après chaque if et then then y'a quelque chose c'est juste pour ex...)

If then
Else
....If Then
......Else
..........If Then
...........Else
........... x=x
..........End If
....End if
End if

Est-ce que c'est mieux que
If Then
Else
If then
Else
If then
Else

? j'ai l'impression que ça donne la même chose, si c'est le cas c'est quoi le mieux à faire ?

(désolé pour ces questions sans doute un peu idiote...)

Aigle21
Aigle21
Niveau 9
03 décembre 2009 à 17:12:58

(j'ai oublié de mettre les end if au dernier)

dnob700
dnob700
Niveau 10
03 décembre 2009 à 18:36:46

Si il n'y a rien après tes else, alors le mieux c'est :

If then
Else If then
Else If then
Else
End If

Et tu peut même remplacer "Else If" par le mot clef "ElseIf" (en un seul mot). S'il y a quelque chose après tes else et avant tes if, alors la première variantes (avec indentation) est celle qui est le plus couramment utilisée (mais c'est une question de goût).

Aigle21
Aigle21
Niveau 9
07 décembre 2009 à 16:57:43

oki, merci

j'ai régler les différents probs, j'ai mis un max de procédure pour alléger le tout, je prends de bonnes habitudes :)

mais ça fait une bonne heure que je bloque au niveau de la priorité des calculs :/

une ptite piste pour m'aider ?

c'est normal de galéré comme ça pour une calculatrice ? :/

godrik
godrik
Niveau 30
07 décembre 2009 à 17:52:27

aigle, faire une calculatrice n'est pas un exercice facil.

Pour gerer la priorite des operations, le plus simple est certainement de les entre en notation polonaise inverse; sinon il faut construire un arbre d'evaluation.

Aigle21
Aigle21
Niveau 9
10 décembre 2009 à 12:11:50

:/

j'ai chercher un peu en quoi ça consistait, mais je dois tout refaire et à vrai dire je ne saurais même pas par où commencer ensuite...

moi j'ai deux variables globales, une reçoit les chiffres, la deuxième récup le contenu de la première lorsque l'on clique sur un bouton d'opération puis vide la première et le bouton égal effectue l'opération entres les deux variables

et c'est tout, donc faut que je reparte sur une autre base ? si oui un pti exemple serait pas de refus, je sèche :/

merci

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment