Problème d'affichage
Posté le 19/06/2016 11:45
Salut,
j'ai commencer le basic hier grâce au tuto présent sur le site (qui est très bien fait d'ailleurs, merci) et mon programme marchais correctement, je trouvais à chaque fois mes erreurs jusqu'à maintenant... En effet quand je vais dans la rubrique
"reseau" de mon programme et que je choisit un chapitre, aucun texte ne s'affiche sur ma calculette...
Si quelqu'un pourrais m'aider ça serais sympa, il me le faudrait pour demain, c'est un programme pour le bac d'ETT...
Bref, je vous met le code ci-dessous....
Filename:ETT
"1: Chaine d'energie"Ù
"2: reseau"Ù
"3: Formules"Ù
"4: Torseur cohesion"Ù
"Cours a regarder"?ãAÙ
Ù
ClrTextÙ
If A>4Ù
Then Locate 8,4,"VICTIME"Ø
IfEndÙ
ClrTextÙ
If A=4Ù
Then Locate 2,2,"Torseur cohesion"Ù
Locate 9,3,"0"Ù
Locate 11,3,"0"Ù
Locate 8,4,"Ty"Ù
Locate 11,4,"0"Ù
Locate 9,5,"0"Ù
Locate 11,5,"Mfz"Ø
ClrTextÙ
Locate 1,2,"Ty = effort tranchant"Ù
Locate 1,3,"Mfz = moment de"Ù
Locate 1,4,"flexion"Ø
IfEndÙ
ClrTextÙ
If A=3Ù
Then Locate 2,2,"Formules"Ù
Locate 1,3,"radÁs en trÁmin"Ù
Locate 1,4,"W= (2Pi)Á60"Ù
Locate 1,5,"Puissance mecanique W"Ù
Locate 1,6,"(rotation)"Ù
Locate 1,7,"P=C(N.m)ÀW(radÁs)"Ø
ClrTextÙ
Locate 2,2,"Puissance meca"Ù
Locate 1,3,"(Translation)"Ù
Locate 1,4,"P=F(N)ÀV(mÁs)"Ù
Locate 1,5,"V(mÁs)=(radÁs)Àrayon"Ù
Locate 1,6,"1Pa = 1NÁm^2"Ø
IfEndÙ
ClrTextÙ
If A=1Ù
Then Locate 2,2,"Chaine d'energie"Ù
Locate 1,3,"Unites d'energie:"Ù
Locate 1,4,"1W.h = 3600J"Ù
Locate 1,5,"Unites de puissance:"Ù
Locate 1,6,"1W=1JÁs"Ù
Locate 1,7,"1 Cheval vapeur= 736W"Ø
ClrTextÙ
Locate 2,2,"Chaine d'energie"Ù
Locate 1,3,"Unites vitesse:"Ù
Locate 1,4,"1mÁs = 3,6 kmÁh"Ø
IfEndÙ
ClrTextÙ
If A=2Ù
Then Locate 7,2,"reseau"Ù
Locate 1,3,"1:Modele TCP IP"Ù
Locate 1,4,"2:MAC"Ù
Locate 1,5,"3:IPV4, IPV6"Ù
Locate 1,6,"4:Masque"Ù
Locate 1,7,"5:Next Page"Ù
"Cours a regarder"?ãBÙ
Ù
ClrTextÙ
Ù
If B=5Ù
Then Locate 7,2,"reseau"Ù
Locate 1,3,"6:Protocole TCP"Ù
Locate 1,4,"7:Type de reseau"Ù
"Cours a regarder"?ãBØ
ClrTextÙ
If B=1Ù
Then Locate 1,2,"Modele TCP IP"Ù
Locate 1,4,"Application (Message)"Ù
Locate 1,5,"Transport (Segment)"Ù
Locate 1,6,"Internet (Datagramme)"Ù
Locate 1,7,"Acces reseau (Trame)"Ø
IfEndÙ
Ù
If B=2Ù
Then Locate 1,2,"MAC:MediaAcessControl"Ù
Locate 1,3,"sous 6 octets (hexa)"Ù
IfEndÙ
If B=3Ù
Then Locate 1,2,"IPV4, IPV6"Ù
Locate 1,3,"IPV4 = 4 octets"Ù
Locate 1,4,"IPV6 = 8 double octet"Ù
IfEndÙ
Ù
If B=4Ù
Then Locate 1,2,"Masque"Ù
Locate 1,3,"Classe A: 255.0.0.0"Ù
Locate 1,4,"Classe B: 255.255.0.0"Ù
IfEndÙ
Ù
If B=6Ù
Then Locate 1,2,"Protocole TCP"Ù
Locate 1,3,"Transmission control"Ù
Locate 6,4,"Protocol"Ù
Locate 1,5,"Hyper Text Transfer"Ù
Locate 1,6,"Protocol"Ù
Locate 8,7,"HTTP"Ø
ClrTextÙ
Ù
Locate 1,2,"FileTransferProtocol"Ù
Locate 9,3,"FTP"Ù
Locate 1,4,"SimpleMailTransfer"Ù
Locate 1,5,"Protocol"Ù
Locate 1,6,"SMTP"Ù
Locate 1,7,"DomainNameService:DNS"Ù
IfEndÙ
If B=7Ù
Then Locate 1,2,"LAN:"Ù
Locate 1,3,"Local Area Network"Ù
Locate 1,4,"WAN:"Ù
Locate 1,5,"Wide Area Network"Ù
IfEndÙ
If B>7Ù
Then Locate 8,4,"VICTIME"Ø
IfEndÙ
ClrTextÙ
Merci d'avance pour l'aide et à bientôt!
Citer : Posté le 19/06/2016 11:50 | #
La structure de ton code est surprenante. Normalement tu ne dois passer que dans un et un seul des tests sur A. Tu devrais donc avoir quelque chose comme ceci :
ClrText
If A>4
Then ...
Else If A=4
Then...
Else If A=3
Then...
IfEnd
Edit : Petite erreur de ma part. L'erreur est bien ici :
Then Locate 7,2,"reseau"
Locate 1,3,"6:Protocole TCP"
Locate 1,4,"7:Type de reseau"
"Cours a regarder"?->BØ
ClrText
If B=1
Mais ce n'est pas ce que je disais. Le If B=1 n'est testé, et le texte n'est affiché, que si tu rentres d'abord dans le If B=5. Donc si tu tapes 1 directement, le test n'est pas affiché.
Imperions Invité
Citer : Posté le 19/06/2016 11:52 | #
Merci pour l'aide, je vais modifier tout ça et je dit si ça fonctionne, et oui, structure surprenante, je cherchais pas à optimiser le programme mais à le faire facilement ...
Bon je vais modifier tout ça et je revient.
Citer : Posté le 19/06/2016 11:54 | #
C'est peut être dû au fait que tu ne pense pas à mettre le ◢ avant les CLRTEXT.
Citer : Posté le 19/06/2016 12:06 | #
Then Locate 7,2,"reseau"
Locate 1,3,"6:Protocole TCP"
Locate 1,4,"7:Type de reseau"
"Cours a regarder"?->BØ
ClrText
[b]IfEnd[/b]
If B=1
Then Locate 1,2,"Modele TCP IP"
Locate 1,4,"Application (Message)"
Locate 1,5,"Transport (Segment)"
Locate 1,6,"Internet (Datagramme)"
Locate 1,7,"Acces reseau (Trame)"Ø
IfEnd
Rajoute le IfEnd en gras et ça devrait marcher.
Ecrivez vos programmes basic sur PC avec BIDE
Imperions Invité
Citer : Posté le 19/06/2016 12:36 | #
Me revoilà, merci pour les conseils.
Donc voilà mon programme final, il marche je vient de tester.
"1: Chaine d'energie"Ù
"2: reseau"Ù
"3: Formules"Ù
"4: Torseur cohesion"Ù
"Cours a regarder"?ãAÙ
Ù
ClrTextÙ
If A>4Ù
Then Locate 8,4,"VICTIME"Ø
ClrTextÙ
Else If A=4Ù
Then Locate 2,2,"Torseur cohesion"Ù
Locate 9,3,"0"Ù
Locate 11,3,"0"Ù
Locate 8,4,"Ty"Ù
Locate 11,4,"0"Ù
Locate 9,5,"0"Ù
Locate 11,5,"Mfz"Ø
ClrTextÙ
Locate 1,2,"Ty = effort tranchant"Ù
Locate 1,3,"Mfz = moment de"Ù
Locate 1,4,"flexion"Ø
ClrTextÙ
Else If A=3Ù
Then Locate 2,2,"Formules"Ù
Locate 1,3,"radÁs en trÁmin"Ù
Locate 1,4,"W= (2Pi)Á60"Ù
Locate 1,5,"Puissance mecanique W"Ù
Locate 1,6,"(rotation)"Ù
Locate 1,7,"P=C(N.m)ÀW(radÁs)"Ø
ClrTextÙ
Locate 2,2,"Puissance meca"Ù
Locate 1,3,"(Translation)"Ù
Locate 1,4,"P=F(N)ÀV(mÁs)"Ù
Locate 1,5,"V(mÁs)=(radÁs)Àrayon"Ù
Locate 1,6,"1Pa = 1NÁm^2"Ø
ClrTextÙ
Else If A=1Ù
Then Locate 2,2,"Chaine d'energie"Ù
Locate 1,3,"Unites d'energie:"Ù
Locate 1,4,"1W.h = 3600J"Ù
Locate 1,5,"Unites de puissance:"Ù
Locate 1,6,"1W=1JÁs"Ù
Locate 1,7,"1 Cheval vapeur= 736W"Ø
ClrTextÙ
Locate 2,2,"Chaine d'energie"Ù
Locate 1,3,"Unites vitesse:"Ù
Locate 1,4,"1mÁs = 3,6 kmÁh"Ø
ClrTextÙ
Else If A=2Ù
Then Locate 7,2,"reseau"Ù
Locate 1,3,"1:Modele TCP IP"Ù
Locate 1,4,"2:MAC"Ù
Locate 1,5,"3:IPV4, IPV6"Ù
Locate 1,6,"4:Masque"Ù
Locate 1,7,"5:Next Page"Ù
"Cours a regarder"?ãBØ
Ù
ClrTextÙ
Ù
If B=5Ù
Then Locate 7,2,"reseau"Ù
Locate 1,3,"6:Protocole TCP"Ù
Locate 1,4,"7:Type de reseau"Ù
"Cours a regarder"?ãBØ
IfEndÙ
ClrTextÙ
If B=6Ù
Then Locate 1,2,"Protocole TCP"Ù
Locate 1,3,"Transmission control"Ù
Locate 6,4,"Protocol"Ù
Locate 1,5,"Hyper Text Transfer"Ù
Locate 1,6,"Protocol"Ù
Locate 8,7,"HTTP"Ø
ClrTextÙ
Ù
Locate 1,2,"FileTransferProtocol"Ù
Locate 9,3,"FTP"Ù
Locate 1,4,"SimpleMailTransfer"Ù
Locate 1,5,"Protocol"Ù
Locate 1,6,"SMTP"Ù
Locate 1,7,"DomainNameService:DNS"Ù
Else If B=7Ù
Then Locate 1,2,"LAN:"Ù
Locate 1,3,"Local Area Network"Ù
Locate 1,4,"WAN:"Ù
Locate 1,5,"Wide Area Network"Ø
ClrTextÙ
Else If B=1Ù
Then Locate 1,2,"Modele TCP IP"Ù
Locate 1,4,"Application (Message)"Ù
Locate 1,5,"Transport (Segment)"Ù
Locate 1,6,"Internet (Datagramme)"Ù
Locate 1,7,"Acces reseau(Trame)"Ø
Ù
Else If B=2Ù
Then Locate 1,2,"MAC:MediaAcessControl"Ù
Locate 1,3,"sous 6 octets (hexa)"Ù
Else If B=3Ù
Then Locate 1,2,"IPV4, IPV6"Ù
Locate 1,3,"IPV4 = 4 octets"Ù
Locate 1,4,"IPV6 = 8 double octet"Ù
Ù
Else If B=4Ù
Then Locate 1,2,"Masque"Ù
Locate 1,3,"Classe A: 255.0.0.0"Ù
Locate 1,4,"Classe B: 255.255.0.0"Ù
Else If B>7Ù
Then Locate 8,4,"VICTIME"Ø
IfEndÙ
ClrTextÙ
Encore merci et Zezombie aussi même si j'ai fait autrement que ce que tu a dit...
Citer : Posté le 19/06/2016 12:48 | #
De souvenir, il me semblait que pour chaque If, il fallait un IfEnd
Then ...
Else If ...
Then ...
Else ...
IfEnd
IfEnd
Sinon il y a des risques que le code après le IfEnd soit pas atteint.
Enfin dites-moi si je me trompe :x
Citer : Posté le 19/06/2016 14:01 | #
De souvenir, il me semblait que pour chaque If, il fallait un IfEnd
Ah oui, je peux me tromper '-'
En l'écrivant, je me suis dit que le Basic devait bien se comporter comme tous les langages classiques, mais même ça c'est pas sûr --'
Citer : Posté le 19/06/2016 14:10 | #
Je viens d'essayer, je confirme
If A=1
Then "X"
Else If A=2
Then "Y"
IfEnd
"Z"
Ici il n'affiche que X. Le Else If n'existe pas en Casio Basic, c'est juste des conditions imbriquées.
Du coup pour en revenir à Imperions, je te conseille de prendre l'habitude de compter tes If et tes IfEnd pour vérifier que y'en a autant, sinon tu risque d'avoir une mauvaise surprise un de ces quatre et tu saura pas d'où ça vient x)
Citer : Posté le 19/06/2016 14:14 | #
D'ailleurs pourquoi tu commences les locates à la 2e ligne ? Tu pourrais éviter le "next page" dans les réseaux si tu affichais directement toutes les options (il y a 7 lignes au total).
Ecrivez vos programmes basic sur PC avec BIDE
Citer : Posté le 19/06/2016 14:21 | #
Je commence a la deuxième ligne car quand je commence à la première, rien ne s'affiche, je ne sais pas pourquoi encore une fois, et comme par magie, quand je commence à la seconde ligne, ça marche...
Et merci, je vais faire ça pour mon programme de physique alors, enfin, je le ferais mardi pour mercredi...
J'ai regardé vite fait comment programmer en Basic, ce qui change vraiment par rapport à la programmation web c'est la place limitée...
Citer : Posté le 19/06/2016 14:25 | #
Zezombye, n'oublie pas que l'instruction "?" nécessite deux lignes pour s'exécuter et qu'elle ignore le Locate car il ne modifie pas la position du curseur virtuel. Du coup tu peux pas afficher 7 lignes.