calcul surface d'un rectangle pour me familiariser avec pb .

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

il est plus de 23h si vous voulez on verra les restant demain ?
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

je vous suis , pas de souci
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

klystron a écrit :il est plus de 23h si vous voulez on verra les restant demain ?
Pas de souci. je continue ma littérature que tu pourras consulter demain.

Au fait, tu as la possibilité de modifier un message que tu as posté en cliquant sur le bouton Editer qui se trouve à la fin de ton message.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

Oui je lirais la suite , je te remercie pour ta patience , tout est tres claire, et je pense que des novices comme moi vont pouvoir se documenter a ces lignes .
merci pour tout, je vais noter tout cela sur un cahier, avoir de bons principes au debut c'est le principal je pense .
a bientôt, et encore merci.
bonne soirée.
Yves
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

On a vu précédemment comment Ajouter un bouton à une fenêtre.

■ Nous allons voir maintenant :
-Comment ajouter des zones informatives : Un simple texte avec un TextGadget()
  TextGadget(#Gadget, x, y, Largeur, Hauteur, Texte$)
  Aide : http://www.purebasic.com/french/documen ... adget.html

-Une zone de saisie de données : StringGadget()
  Aide StringGadget(#Gadget, x, y, Largeur, Hauteur, Texte$)

et le code suivant

Code : Tout sélectionner

Enumeration Fenetre ;Pour le moment il y en a qu'une 
  #MaFenetre
EndEnumeration

Enumeration Gadgets
  #Button1    
  #Nom        
EndEnumeration

Procedure AfficheMessage()
  Protected Resultat.s
  
  ;Que contient #Nom
  Resultat = GetGadgetText(#Nom)
  
  MessageRequester("Information", "Bonjour " + Resultat)
EndProcedure

;Ouverture d'une fenêtre
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")

;Zone informative : On utilise #PB_Any car on ne travaillera pas sur ce gadget
TextGadget(#PB_Any, 10, 20, 100, 20, "Quel est votre nom") 

;Zone de saisie
StringGadget(#Nom, 110, 20, 100, 22, "") ;Un StringGadget est un champ de saisie.

;Création d'un bouton 
ButtonGadget(#Button1, 700, 30, 80, 22, "Clique moi")

;Boucle évenementielle
Repeat 
  Select WaitWindowEvent() ;Un évenement est arrivé
    Case #PB_Event_Gadget  ;Est un gadget qui a provoqué l'événement ?
      Select EventGadget() ;Apparement oui : On cherche qui 
          
        Case #Button1 ;Clique sur le bouton 1
          AfficheMessage()
            
      EndSelect
      
    Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
      End ;Apparement oui : Fermeture de la fenêtre.
  EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

■ A retenir
-Tu sais créer une fenêtre et ajouter une zone de texte, une zone de saisie et un bouton.
  Fonctions : OpenWindow(), TextGadget(), StringGadget(), ButtonGadget()

-Tu sais récupérer une valeur se trouvant dans une zone de saisie.
  Fonction : GetGadgetText()

-Tu sais coder une procédure avec paramètres.

■ Sachant tout cela tu devrais pouvoir compléter ce code pour calculer:

Image

- la surface d'un triangle rectangle ABC
- Le périmètre d'un triangle rectangle ABC

:idea: Pour compléter, un peu d'aide sur quelques fonctions que tu utiliseras:
- Convertit une chaîne en une valeur numérique. Fonction Val() ça te sera utile avec les StringGadget()
  http://www.purebasic.com/french/documen ... g/val.html

- Le calcul des puissance : Fonction Pow()
http://www.purebasic.com/french/documen ... h/pow.html

- Le calcul d'une racine carré : Fonction Sqr()
http://www.purebasic.com/french/documen ... h/sqr.html


■ Le code à compléter

Code : Tout sélectionner

Enumeration Fenetre ;Pour le moment il y en a qu'une 
  #MaFenetre
EndEnumeration

Enumeration Gadgets
  #Largeur
  #Longueur
  
  #Perimetre ;C'est un bouton
  #Surface; C'est un bouton
EndEnumeration

Procedure CalculPerimetre()
  ;A compléter
  
EndProcedure

Procedure CalculSurface()
  ;A compléter
  
EndProcedure

;Ouverture d'une fenêtre
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")

TextGadget(#PB_Any, 10, 35, 100, 22, "Longueur (AB)")
StringGadget(#Longueur, 120, 30, 80, 22, "", #PB_String_Numeric)

TextGadget(#PB_Any, 10, 65, 100, 22, "Largeur (AC)")
StringGadget(#Largeur, 120, 60, 80, 22, "", #PB_String_Numeric)


;Création d'un bouton 
ButtonGadget(#Perimetre, 700, 30, 80, 22, "Périmètre")
ButtonGadget(#Surface, 700, 60, 80, 22, "Surface")

;Boucle événementielle
Repeat 
  Select WaitWindowEvent() ;Un événement est arrivé
    Case #PB_Event_Gadget  ;Est un gadget qui a provoqué l'événement ?
      Select EventGadget() ;Apparemment oui : On cherche qui 
          
        Case #Perimetre ;Clique sur le bouton périmètre
          CalculPerimetre()
            
        Case #Surface ;Clique sur le bouton surface
          CalculSurface()
 
      EndSelect
      
    Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
      End ;Apparement oui : Fermeture de la fenêtre.
  EndSelect
ForEver
PS: Ne cherches pas à saisir des valeurs décimales pour le moment.
PS: Correction à venir dans la journée.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

Bonjour Falsam,
je viens de mettre les manquants des procédures du petit programme, mais je ne suis pas sur de moi :oops:
je ne connais pas comment faire pour mettre ici le texte du programme , copier-coller ?.
voici mes modifications :

Code : Tout sélectionner

Enumeration Fenetre ;Pour le moment il y en a qu'une 
  #MaFenetre
EndEnumeration

Enumeration Gadgets
  #Largeur
  #Longueur
  
  #Perimetre ;C'est un bouton
  #Surface; C'est un bouton
EndEnumeration

Procedure CalculPerimetre(AB.i,AC.i,CB.i)
  Protected resultat.i
  resultat = AB+AC+CB
  Debug resultat 
    
EndProcedure

Procedure CalculSurface(AB.i,AC.i)
  Protected resultat.i
  resultat = (AB*AC)/2
  Debug resultat
    
EndProcedure

;Ouverture d'une fenêtre
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")

TextGadget(#PB_Any, 10, 35, 100, 22, "Longueur (AB)")
StringGadget(#Longueur, 120, 30, 80, 22, "", #PB_String_Numeric)

TextGadget(#PB_Any, 10, 65, 100, 22, "Largeur (AC)")
StringGadget(#Largeur, 120, 60, 80, 22, "", #PB_String_Numeric)


;Création d'un bouton 
ButtonGadget(#Perimetre, 700, 30, 80, 22, "Périmètre")
ButtonGadget(#Surface, 700, 60, 80, 22, "Surface")

;Boucle événementielle
Repeat 
  Select WaitWindowEvent() ;Un événement est arrivé
    Case #PB_Event_Gadget  ;Est un gadget qui a provoqué l'événement ?
      Select EventGadget() ;Apparemment oui : On cherche qui 
          
        Case #Perimetre ;Clique sur le bouton périmètre
          CalculPerimetre(AB.i,AC.i,CB.I)
            
        Case #Surface ;Clique sur le bouton surface
          CalculSurface(AB.i,AC.i)

      EndSelect
      
    Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
      End ;Apparement oui : Fermeture de la fenêtre.
  EndSelect
ForEver
Edit par TazNormand :
Bonjour Klystron, j'ai edité ton message pour mettre les balises "code"
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

klystron a écrit :e ne connais pas comment faire pour mettre ici le texte du programme , copier-coller ?.
Bonjour klystron. Copier coller est effectivement la bonne solution.

Par contre fait précéder par [ code] et termine le par [/ code]

Voir ce tutoriel http://www.purebasic.fr/french/viewtopi ... 21&t=14964
Dernière modification par falsam le dim. 07/déc./2014 16:59, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

Ok Falsam pour inserrer texte code.
ce matin je ne pourrais pas resté longtemps sur le site, apres 16h je serais plus disponible.

quelles sont mes erreurs ?

merci pour le lien du site .
bonjour .

ha je viens de voir une erreur au niveau périmetre, l'hypothénuse il faut la calculer , car on ne nous la donne pas ... Pythagore ...

je reviendrais plustard je dois me sauver . a+
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

klystron a écrit :je viens de mettre les manquants des procédures du petit programme, mais je ne suis pas sur de moi
Si tu rentres des valeurs dans les zones de saisies et que tu cliques sur le bouton Surface par exemple, le résultat reste à zéro.

■ Décryptage partiel du code.
-Le formulaire contient les zones de saisie #Longueur et #Largeur ainsi qu'un bouton #Surface.

-Dans ta boucle événementielle il y a bien l'appel de la procédure CalculSurface()

Code : Tout sélectionner

Case #Surface ;Clique sur le bouton surface
      CalculSurface(AB.i,AC.i)
-Ta procédure

Code : Tout sélectionner

Procedure CalculSurface(AB.i,AC.i)
  Protected resultat.i
  resultat = (AB*AC)/2
Debug resultat
Le calcul est bon mais tes variable AB et AC ne reçoivent aucune valeur.

Pourquoi ? Parce que l'appel de ta procédure n'envoie pas #Longueur et #Largeur à cette procédure.

:idea: Correction: Tu dois utiliser la fonction GetGadgetText() pour récupérer ce que tu as saisi dans les zones de saisie #Longueur et #Largeur.

Code : Tout sélectionner

Case #Perimetre ;Clique sur le bouton perimetre
       CalculPerimetre(GetGadgetText(#Longueur), GetGadgetText(#Largeur))
Dans ta procédure CalculSurface() utilises plutot MessageRequester() pour afficher ton résultat.

:arrow: Je te laisse faire la correction de la procédure CalculPerimetre(). Je te rappelle que tu ne connais que la largeur (AB) et la longueur (AC) de ce triangle rectangle. A toi de calculer BC. Pythagore est ton ami :)

:idea: Consigne : Utilises les fonctions Pow() et Sqr() comme je l'ai mentionné dans un de mes messages précédents.

A plus tard pour la correction finale.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

Rebonjour Falsam,
me voici revenu.
pour calculer le périmètre du triangle il faut calculer l'hypoténuse ( BC) du triangle rectangle.

procedure calculBC ( AB.i, AC.i)
resultat ( BC) = SQR( pow((AB)+(AC)))
debug resultat ( BC)
endprocedure

ce qui revient au meme en calcul classic :
hypoténuse = SQR (( AB*AB)+(AC*AC))

- je ne suis pas sur de ma procedure :oops:


PS/- une question, avec pureBasic, peut-on ajouter une image dans une fenetre ?
par exemple le dessin du triangle ,si oui quel format du fichier ?.
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: calcul surface d'un rectangle pour me familiariser avec

Message par Marc56 »

Bonjour klystron,

En passant, quand tu as des doute sur la syntaxe d'une commande, il suffit de faire comme dans presque tous les autres langages:
clique sur ton mot clé dans l'éditeur, puis appuie sur F1. Cela t'amène directement à la page d'aide.

Exemple pour pow

Code : Tout sélectionner

Pow()

Syntaxe

Resultat.f = Pow(Nombre.f, Puissance.f)
Donc Pow() nécessite 2 paramètres

De même, en tapant le code, dès que le système reconnait un mot clé basic, il te met la syntaxe dans la barre d'état (très utile!).

Ta syntaxe serait donc

Code : Tout sélectionner

BC = SQR( pow(AB, 2) + pow(AC, 2) )
(corrigé :D comme quoi)
ou

Code : Tout sélectionner

BC = SQR( ( AB * AB ) + (AC * AC) )
:wink:
Dernière modification par Marc56 le mer. 03/déc./2014 16:50, modifié 2 fois.
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

Bonsoir Marc56 ,
OK merci pour les infos.
oui c'est loin de ce que j'ai mis 8O je vais noté tout ça moi me rappeler .
merci
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: calcul surface d'un rectangle pour me familiariser avec

Message par falsam »

Il est temps de te donner la correction du code que tu devais compléter. Entre quelques valeurs (sans décimale) et cliques sur chaque bouton pour avoir le résultat.

Ensuite je te laisse le soin de décortiquer ce code.

Code : Tout sélectionner

Enumeration Fenetre ;Pour le moment il y en a qu'une 
  #MaFenetre
EndEnumeration

Enumeration Gadgets
  #Largeur
  #Longueur
  
  #Perimetre ;C'est un bouton
  #Surface; C'est un bouton
EndEnumeration

Procedure CalculPerimetre(Longueur.s, Largeur.s)
  Protected AB = Val(Longueur)
  Protected AC = Val(Largeur)
  Protected Resultat.i
  
  Protected BC.i ;C'est la longueur à retrouver
  
  Resultat = Pow(AB,2) + Pow(AC,2)
  
  BC = Sqr(Resultat)
  
  MessageRequester("Résultat de l'opération", Str(AB + BC + AC))
EndProcedure

Procedure CalculSurface(Longueur.s, largeur.s)
  Protected AB = Val(Longueur)
  Protected AC = Val(Largeur)
  Protected Resultat.i
  
  Resultat = (AB * AC)/2
  
  MessageRequester("Résultat de l'opéation", Str(Resultat))
EndProcedure

;Ouverture d'une fenêtre
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")

TextGadget(#PB_Any, 10, 35, 100, 22, "Longueur (AB)")
StringGadget(#Longueur, 120, 30, 80, 22, "", #PB_String_Numeric)

TextGadget(#PB_Any, 10, 65, 100, 22, "Largeur (AC)")
StringGadget(#Largeur, 120, 60, 80, 22, "", #PB_String_Numeric)

;Création des boutons de calcul
ButtonGadget(#Perimetre, 700, 30, 80, 22, "Perimétre")
ButtonGadget(#Surface, 700, 60, 80, 22, "Surface")

;Boucle évenementielle
Repeat 
  Select WaitWindowEvent() ;Un évenement est arrivé
    Case #PB_Event_Gadget  ;Est un gadget qui a provoqué l'événement ?
      Select EventGadget() ;Apparement oui : On cherche qui 
          
        Case #Perimetre ;Clique sur le bouton perimetre
          CalculPerimetre(GetGadgetText(#Longueur), GetGadgetText(#Largeur))
            
        Case #Surface ;Clique sur le bouton surface
          CalculSurface(GetGadgetText(#Longueur), GetGadgetText(#Largeur))
 
      EndSelect
      
    Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
      End ;Apparement oui : Fermeture de la fenêtre.
  EndSelect
ForEver
klystron a écrit :une question, avec pureBasic, peut-on ajouter une image dans une fenetre ?
Oui tu peux. Il s'agit du gadget ImageGadget()

:idea: Regarde sur ce lien l'ensemble des gadgets que tu peux mettre dans une fenêtre.
Cliques sur chacun d'eux et tu auras la syntaxe ainsi qu'un code exemple en principe. Testes chacun de ces exemples.

:arrow: http://www.purebasic.com/french/documen ... index.html
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
klystron
Messages : 149
Inscription : mar. 02/déc./2014 12:16

Re: calcul surface d'un rectangle pour me familiariser avec

Message par klystron »

Bonsoir ,
Si je veux que dés que j'ai entré la dernière valeur( longueur et largeur ), les résultats de la surface et du périmètre s'affichent sans toucher aux deux boutons , et les résultats , dans la fenetre principale ?.

pourriez-vous me dire comment faire ?.
merci .
Répondre