Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| AND OR XOR : calculatrice 8 bits | |
| | Auteur | Message |
---|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: AND OR XOR : calculatrice 8 bits Mer 23 Fév 2022 - 17:32 | |
| Bonjour à tous ! Voici une calculatrice binaire 8 bits permettant de mettre en exergue les opérateurs logiques de Panoramic : BIN_AND, BIN_OR et BIN_XOR. Chaque valeur binaire est traduite en décimal et hexadécimal, et réciproquement. Vous pouvez à tout moment changer les valeurs hexadécimales, décimales ou binaires. Tous les champs de la calculatrice sont recalculés et remis à jour à chaque clic. Pour modifier un champ binaire, cliquez directement sur un bit pour obtenir son changement d’état. Pour les champs décimaux et hexadécimaux, cliquez sur les signes « + » et « - ». Vous pouvez aussi changer d’opérateur logique à tout moment. - Code:
-
' Calculatrice Binaire ' Opérateurs AND, OR et XOR ' Marc - février 2022 ' Ecrit en langage Panoramic
dim bin_a%, bin_b%, bin_r%, a_bin$, b_bin$, r_bin$ dim dec_a%, dec_b%, dec_r%, a_dec$, b_dec$, r_dec$ dim hex_a%, hex_b%, hex_r%, a_hex$, b_hex$, r_hex$ dim operator%, bit%, valeur%, valeurBinaire%, valeurDecimale%, valeurHexa%
label operateur, binModif, decModifPlus, decModifMoins, hexModifPlus, hexModifMoins, redim
interfaceUtilisateur()
end
sub interfaceUtilisateur() width 0,width(0) - width_client(0) + 674 height 0,height(0) - height_client(0) + 345 left 0,(screen_x - width(0)) / 2 top 0,(screen_y - height(0)) / 2 color 0,240,240,240 caption 0,"PANORAMIC" font_name 0,"Arial" font_size 0,10 on_resize 0,redim
container 1 top 1,15 left 1,20 width 1,635 height 1,310 color 1,240,240,240 caption 1," Calculatrice Binaire " command_target_is 1
option 2 top 2,100 left 2,25 font_size 2,10 font_bold 2 caption 2,"bin_and (A,B)" cursor_point 2 mark_on 2 on_click 2,operateur option 3 top 3,125 left 3,25 caption 3,"bin_or (A,B)" cursor_point 3 on_click 3,operateur
option 4 top 4,150 left 4,25 font_size 4,10 caption 4,"bin_xor (A,B)" cursor_point 4 on_click 4,operateur
' creer zone de saisie binaire A creerZoneBinaire(10,225,80) ' creer zone de saisie binaire B creerZoneBinaire(20,225,155)
' creer zone de saisie binaire Résultat creerZoneBinaire(30,225,245) ' creer zone de saisie décimale A creerZoneDecimale(40,450,80)
' creer zone de saisie décimale B creerZoneDecimale(50,450,155) ' creer zone de saisie décimale Résultat creerZoneDecimale(60,450,245)
' creer zone de saisie hexadécimale A creerZoneHexadecimale(70,550,80) ' creer zone de saisie hexadécimale B creerZoneHexadecimale(80,550,155)
' creer zone de saisie hexadécimale Resultat creerZoneHexadecimale(90,550,245) ' légendes alpha 200 top 200,35 left 200,294 font_size 200,13 caption 200,"Binaire" alpha 201 top 201,35 left 201,456 font_size 201,13 caption 201,"Décimal" alpha 202 top 202,35 left 202,554 font_size 202,13 caption 202,"Hexa." alpha 203 top 203,82 left 203,198 font_size 203,13 caption 203,"A :"
alpha 204 top 204,157 left 204,198 font_size 204,13 caption 204,"B :" alpha 205 top 205,247 left 205,150 font_size 205,13 caption 205,"Résultat :" alpha 206 top 206,190 left 206,195 caption 206,string$(59,"_")
alpha 207 top 207,70 left 207,45 font_size 207,12 caption 207,"Opérateur :"
logoPanoramic(25,225) set_focus 0 end_sub
sub creerZoneBinaire(n%,x%,y%) dim_local i%, e%, b% b% = 7 for i% = 0 to 7 button n% left n%, x% + e% top n%, y% width n%, 25 height n%, 25 font_name n%,"Courier" font_size n%,13 font_bold n% caption n%,"0" if n% < 30 cursor_point n% on_click n%,binModif end_if alpha n%+100 left n%+100, x% + e% + 8 top n%+100, y% - 17 width n%+100, 25 height n%+100, 25 font_name n%+100,"Courier" font_size n%+100,10 caption n%+100,b% n% = n% + 1 b% = b% - 1 e% = e% + 25 next i% end_sub
sub creerZoneDecimale(n%,x%,y%) dim_local i%, e% for i% = 0 to 2 button n% left n%, x% + e% top n%, y% width n%, 25 height n%, 25 font_name n%,"Courier" font_size n%,13 font_bold n% caption n%,"0"
if n% < 60 picture n%+100 left n%+100, x% + e% top n%+100, y% - 20 width n%+100, 25 height n%+100, 25 2d_target_is n%+100 2d_fill_color 240,240,240 color n%+100,240,240,240 font_name n%+100,"Courier" font_size n%+100,12 print_target_is n%+100 print_locate 8,3 print "+" cursor_point n%+100 on_click n%+100,decModifPlus picture n%+105 left n%+105, x% + e% top n%+105, y% + 20 width n%+105, 25 height n%+105, 25 2d_target_is n%+105 2d_fill_color 240,240,240 color n%+105,240,240,240 font_name n%+105,"Courier" font_size n%+105,12 print_target_is n%+105 print_locate 8,3 print "-" cursor_point n%+105 on_click n%+105,decModifMoins end_if n% = n% + 1 e% = e% + 25 next i% end_sub
sub creerZoneHexadecimale(n%,x%,y%) dim_local i%, e% for i% = 0 to 1 button n% left n%, x% + e% top n%, y% width n%, 25 height n%, 25 font_name n%,"Courier" font_size n%,13 font_bold n% caption n%,"0"
if n% < 90 picture n%+100 left n%+100, x% + e% top n%+100, y% - 20 width n%+100, 25 height n%+100, 25 2d_target_is n%+100 2d_fill_color 240,240,240 color n%+100,240,240,240 font_name n%+100,"Courier" font_size n%+100,12 print_target_is n%+100 print_locate 8,3 print "+" cursor_point n%+100 on_click n%+100, hexModifPlus picture n%+105 left n%+105, x% + e% top n%+105, y% + 20 width n%+105, 25 height n%+105, 25 2d_target_is n%+105 2d_fill_color 240,240,240 color n%+105,240,240,240 font_name n%+105,"Courier" font_size n%+105,12 print_target_is n%+105 print_locate 8,3 print "-" cursor_point n%+105 on_click n%+105,hexModifMoins end_if n% = n% + 1 e% = e% + 25 next i%
end_sub
sub logoPanoramic(x%,y%) ' Logo Panoramic picture 220 height 220,60 width 220,60 top 220,y% left 220,x% color 220,255,255,255 2d_target_is 220 ' dessin des cercles rouges 2d_fill_color 255,255,255 2d_pen_color 255,0,0 2d_pen_width 2 2d_circle 30,30,26 2d_circle 30,30,20 ' dessin du "P" en bleu 2d_pen_width 1 2d_pen_color 51,52,153 2d_fill_color 51,52,153 2d_rectangle 23,20,27,42 2d_line 19,20,37,20 2d_line 21,21,39,21 2d_line 32,22,40,22 2d_line 34,23,41,23 2d_rectangle 35,24,41,28 2d_line 34,28,41,28 2d_line 32,29,40,29 2d_line 27,30,39,30 2d_line 27,31,37,31 2d_line 21,40,29,40 2d_line 19,41,32,41 end_sub
operateur: select number_click case 2 font_bold 2 font_size 2,10 caption 2,"bin_and (A,B)" font_bold_off 3 font_size 3,10 caption 3,"bin_or (A,B)" font_bold_off 4 font_size 4,10 caption 4,"bin_xor (A,B)" operator% = 0 case 3 font_bold 3 font_size 3,10 caption 3,"bin_or (A,B)" font_bold_off 4 font_size 4,10 caption 4,"bin_xor (A,B)" font_bold_off 2 font_size 2,10 caption 2,"bin_and (A,B)" operator% = 1
case 4 font_bold 4 font_size 4,10 caption 4,"bin_xor (A,B)" font_bold_off 2 font_size 2,10 caption 2,"bin_and (A,B)" font_bold_off 3 font_size 3,10 caption 3,"bin_or (A,B)" operator% = 2 end_select calcul_R() return
binModif: if caption$(number_click) = "0" caption number_click,"1" else caption number_click,"0" end_if if number_click > 9 and number_click < 18 :' modification de la valeur binaire A modif_bin_a() end_if if number_click > 19 and number_click < 28 :' modification de la valeur binaire B modif_bin_b() end_if calcul_R() return
decModifPlus: select number_click case 140 valeur% = val(caption$(40)) valeur% = valeur% + 1 valeurDecimale% = (valeur% * 100) + (val(caption$(41))*10) + val(caption$(42)) if valeurDecimale% > 255 return end_if caption 40,str$(valeur%) modif_dec_a()
case 141 valeur% = val(caption$(41)) valeur% = valeur% + 1 if valeur% > 9 valeur% = 9 end_if valeurDecimale% = (val(caption$(40))*100) + (valeur% * 10) + val(caption$(42)) if valeurDecimale% > 255 return end_if caption 41,str$(valeur%) modif_dec_a()
case 142 valeur% = val(caption$(42)) valeur% = valeur% + 1 if valeur% > 9 valeur% = 9 end_if valeurDecimale% = (val(caption$(40))*100) + (val(caption$(41))*10) + valeur% if valeurDecimale% > 255 return end_if caption 42,str$(valeur%) modif_dec_a()
case 150 valeur% = val(caption$(50)) valeur% = valeur% + 1 valeurDecimale% = (valeur% * 100) + (val(caption$(51))*10) + val(caption$(52)) if valeurDecimale% > 255 return end_if caption 50,str$(valeur%) modif_dec_b()
case 151 valeur% = val(caption$(51)) valeur% = valeur% + 1 if valeur% > 9 valeur% = 9 end_if valeurDecimale% = (val(caption$(50))*100) + (valeur% * 10) + val(caption$(52)) if valeurDecimale% > 255 return end_if caption 51,str$(valeur%) modif_dec_b()
case 152 valeur% = val(caption$(52)) valeur% = valeur% + 1 if valeur% > 9 valeur% = 9 end_if valeurDecimale% = (val(caption$(50))*100) + (val(caption$(51))*10) + valeur% if valeurDecimale% > 255 return end_if caption 52,str$(valeur%) modif_dec_b() end_select calcul_R() return
decModifMoins: select number_click case 145 valeur% = val(caption$(40)) valeur% = valeur% - 1 if valeur% < 0 valeur% = 0 end_if caption 40,str$(valeur%) modif_dec_a()
case 146 valeur% = val(caption$(41)) valeur% = valeur% - 1 if valeur% < 0 valeur% = 0 end_if caption 41,str$(valeur%) modif_dec_a()
case 147 valeur% = val(caption$(42)) valeur% = valeur% - 1 if valeur% < 0 valeur% = 0 end_if caption 42,str$(valeur%) modif_dec_a()
case 155 valeur% = val(caption$(50)) valeur% = valeur% - 1 if valeur% < 0 valeur% = 0 end_if caption 50,str$(valeur%) modif_dec_b()
case 156 valeur% = val(caption$(51)) valeur% = valeur% - 1 if valeur% < 0 valeur% = 0 end_if caption 51,str$(valeur%) modif_dec_b()
case 157 valeur% = val(caption$(52)) valeur% = valeur% - 1 if valeur% < 0 valeur% = 0 end_if caption 52,str$(valeur%) modif_dec_b() end_select calcul_R() return
hexModifPlus: select number_click case 170 valeurHexa% = hex(caption$(70)) valeurHexa% = valeurHexa% + 1 if valeurHexa% > 15 valeurHexa% = 15 end_if caption 70,hex$(valeurHexa%) modif_hex_a() calcul_R() case 171 valeurHexa% = hex(caption$(71)) valeurHexa% = valeurHexa% + 1 if valeurHexa% > 15 valeurHexa% = 15 end_if caption 71,hex$(valeurHexa%) modif_hex_a() calcul_R() case 180 valeurHexa% = hex(caption$(80)) valeurHexa% = valeurHexa% + 1 if valeurHexa% > 15 valeurHexa% = 15 end_if caption 80,hex$(valeurHexa%) modif_hex_b() calcul_R() case 181 valeurHexa% = hex(caption$(81)) valeurHexa% = valeurHexa% + 1 if valeurHexa% > 15 valeurHexa% = 15 end_if caption 81,hex$(valeurHexa%) modif_hex_b() calcul_R() end_select return
hexModifMoins: select number_click case 175 valeurHexa% = hex(caption$(70)) valeurHexa% = valeurHexa% - 1 if valeurHexa% < 0 valeurHexa% = 0 end_if caption 70,hex$(valeurHexa%) modif_hex_a() case 176 valeurHexa% = hex(caption$(71)) valeurHexa% = valeurHexa% - 1 if valeurHexa% < 0 valeurHexa% = 0 end_if caption 71,hex$(valeurHexa%) modif_hex_a() case 185 valeurHexa% = hex(caption$(80)) valeurHexa% = valeurHexa% - 1 if valeurHexa% < 0 valeurHexa% = 0 end_if caption 80,hex$(valeurHexa%) modif_hex_b() case 186 valeurHexa% = hex(caption$(81)) valeurHexa% = valeurHexa% - 1 if valeurHexa% < 0 valeurHexa% = 0 end_if caption 81,hex$(valeurHexa%) modif_hex_b() end_select calcul_R() return
sub modif_bin_a() ' lecture de la nouvelle valeur binaire A en décimal dec_a% = 0 for bit% = 0 to 7 if val(caption$(bit% + 10)) = 1 dec_a% = dec_a% + POWER(2,7-Bit%) end_if next bit%
' conversion valeur décimale A en chaine avec complement de "0" en tête pour avoir 3 chiffres a_dec$ = str$(dec_a%) while len(a_dec$) < 3 a_dec$ = "0" + a_dec$ end_while
' affiche de la nouvelle valeur décimale A caption 40,left$(a_dec$,1) caption 41,mid$(a_dec$,2,1) caption 42,right$(a_dec$,1)
' conversion valeur décimale de A en hexa avec complement de "0" en tête pour avoir 2 chiffres a_hex$ = hex$(dec_a%) while len(a_hex$) < 2 a_hex$ = "0" + a_hex$ end_while
' affiche de la valeur décimale caption 70,left$(a_hex$,1) caption 71,right$(a_hex$,1) end_sub
sub modif_bin_b() ' lecture de la nouvelle valeur binaire B en décimal dec_b% = 0 for bit% = 0 to 7 if val(caption$(bit% + 20)) = 1 dec_b% = dec_b% + POWER(2,7-Bit%) end_if next bit%
' conversion valeur décimale A en chaine avec complement de "0" en tête pour avoir 3 chiffres b_dec$ = str$(dec_b%) while len(b_dec$) < 3 b_dec$ = "0" + b_dec$ end_while
' affiche de la nouvelle valeur décimale A caption 50,left$(b_dec$,1) caption 51,mid$(b_dec$,2,1) caption 52,right$(b_dec$,1)
' conversion valeur décimale de A en hexa et ajout de "0" en tête pour avoir 2 chiffres b_hex$ = hex$(dec_b%) while len(b_hex$) < 2 b_hex$ = "0" + b_hex$ end_while
' affiche de la valeur hexadécimale de A caption 80,left$(b_hex$,1) caption 81,right$(b_hex$,1) end_sub
sub modif_dec_a() ' lecture de la nouvelle valeur decimale de A dec_a% = val(caption$(40)+caption$(41)+caption$(42))
' conversion valeur décimale de A en hexa avec ajout de "0" en tête pour obtenir 2 chiffres a_hex$ = hex$(dec_a%) while len(a_hex$) < 2 a_hex$ = "0" + a_hex$ end_while ' affichage de la valeur hexadécimale de A caption 70,left$(a_hex$,1) caption 71,right$(a_hex$,1)
' conversion de la valeur decimale de A en binaire a_bin$ = "" while dec_a% > 0 if frac(dec_a% / 2) = 0 a_bin$ = "0" + a_bin$ else a_bin$ = "1" + a_bin$ end_if dec_a% = int(dec_a% / 2) end_while
while len(a_bin$) < 8 a_bin$ = "0" + a_bin$ end_while ' affiche la valeur binaire de A for bit% = 0 to 7 caption 10+bit%,mid$(a_bin$,bit%+1,1) next bit% end_sub
sub modif_dec_b() ' lecture de la nouvelle valeur decimale de B dec_b% = val(caption$(50)+caption$(51)+caption$(52))
' conversion valeur décimale de B en hexa avec ajout de "0" en tête pour obtenir 2 chiffres b_hex$ = hex$(dec_b%) while len(b_hex$) < 2 b_hex$ = "0" + b_hex$ end_while ' affichage de la valeur hexadécimale de A caption 80,left$(b_hex$,1) caption 81,right$(b_hex$,1)
' conversion de la valeur decimale de A en binaire b_bin$ = "" while dec_b% > 0 if frac(dec_b% / 2) = 0 b_bin$ = "0" + b_bin$ else b_bin$ = "1" + b_bin$ end_if dec_b% = int(dec_b% / 2) end_while
while len(b_bin$) < 8 b_bin$ = "0" + b_bin$ end_while ' affiche la valeur binaire de A for bit% = 0 to 7 caption 20+bit%,mid$(b_bin$,bit%+1,1) next bit% end_sub
sub modif_hex_a() ' lecture nouvelle valeur hexadécimale de A a_hex$ = caption$(70)+caption$(71) ' conversion de la valeur haxe de A en décimal dec_a% = hex(a_hex$) ' conversion valeur décimale de A en chaine avec complement de "0" en tête pour avoir 3 chiffres a_dec$ = str$(dec_a%) while len(a_dec$) < 3 a_dec$ = "0" + a_dec$ end_while ' affiche de la valeur décimale de A caption 40,left$(a_dec$,1) caption 41,mid$(a_dec$,2,1) caption 42,right$(a_dec$,1)
' conversion de la valeur decimale de A en binaire a_bin$ = "" while dec_a% > 0 if frac(dec_a% / 2) = 0 a_bin$ = "0" + a_bin$ else a_bin$ = "1" + a_bin$ end_if dec_a% = int(dec_a% / 2) end_while
while len(a_bin$) < 8 a_bin$ = "0" + a_bin$ end_while ' affiche la nouvelle valeur binaire de A for bit% = 0 to 7 caption 10+bit%,mid$(a_bin$,bit%+1,1) next bit% end_sub
sub modif_hex_b() ' lecture nouvelle valeur hexadécimale de B b_hex$ = caption$(80)+caption$(81) ' conversion de la valeur haxe de B en décimal dec_b% = hex(b_hex$) ' conversion valeur décimale de B en chaine avec complement de "0" en tête pour avoir 3 chiffres b_dec$ = str$(dec_b%) while len(b_dec$) < 3 b_dec$ = "0" + b_dec$ end_while ' affiche de la valeur décimale de B caption 50,left$(b_dec$,1) caption 51,mid$(b_dec$,2,1) caption 52,right$(b_dec$,1)
' conversion de la valeur decimale de B en binaire b_bin$ = "" while dec_b% > 0 if frac(dec_b% / 2) = 0 b_bin$ = "0" + b_bin$ else b_bin$ = "1" + b_bin$ end_if dec_b% = int(dec_b% / 2) end_while
while len(b_bin$) < 8 b_bin$ = "0" + b_bin$ end_while ' affiche la nouvelle valeur binaire de B for bit% = 0 to 7 caption 20+bit%,mid$(b_bin$,bit%+1,1) next bit% end_sub
sub calcul_R() ' calcul de R en fonction de A et B dec_a% = val(caption$(40)+caption$(41)+caption$(42)) dec_b% = val(caption$(50)+caption$(51)+caption$(52))
select operator% case 0 dec_r% = bin_and(dec_a%,dec_b%) case 1 dec_r% = bin_or(dec_a%,dec_b%) case 2 dec_r% = bin_xor(dec_a%,dec_b%) end_select ' conversion valeur décimale R en chaine avec complement de "0" en tête pour avoir 3 chiffres r_dec$ = str$(dec_r%) while len(r_dec$) < 3 r_dec$ = "0" + r_dec$ end_while ' affiche la valeur décimale de B caption 60,left$(r_dec$,1) caption 61,mid$(r_dec$,2,1) caption 62,right$(r_dec$,1)
' conversion valeur décimale de R en hexa avec ajout de "0" en tête pour obtenir 2 chiffres r_hex$ = hex$(dec_r%) while len(r_hex$) < 2 r_hex$ = "0" + r_hex$ end_while ' affichage de la valeur hexadécimale de R caption 90,left$(r_hex$,1) caption 91,right$(r_hex$,1)
' conversion de la valeur decimale de R en binaire r_bin$ = "" while dec_r% > 0 if frac(dec_r% / 2) = 0 r_bin$ = "0" + r_bin$ else r_bin$ = "1" + r_bin$ end_if dec_r% = int(dec_r% / 2) end_while
while len(r_bin$) < 8 r_bin$ = "0" + r_bin$ end_while ' affiche la valeur binaire de R for bit% = 0 to 7 caption 30+bit%,mid$(r_bin$,bit%+1,1) next bit% end_sub
redim: width 0,width(0) - width_client(0) + 674 height 0,height(0) - height_client(0) + 345 return | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: AND OR XOR : calculatrice 8 bits Jeu 24 Fév 2022 - 17:44 | |
| Je ne crois pas que je m'en servirai pour faire ma compta, mais ça peut toujours servir pour des opérations plus compliquées. Donc, à mettre en réserve... Bravo, Marc ! | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: AND OR XOR : calculatrice 8 bits Ven 25 Fév 2022 - 16:13 | |
| Heu... je crois bien que je ne me suis jamais servi de ces fonctions !! C'est peut être le moment de les découvrir... Merci Marc pour ton programme.
Dernière édition par Minibug le Sam 26 Fév 2022 - 10:14, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: AND OR XOR : calculatrice 8 bits Sam 26 Fév 2022 - 2:42 | |
| - jjn4 a écrit:
- Je ne crois pas que je m'en servirai pour faire ma compta
- Minibug a écrit:
- Heu... je crois bien que je ne me suis jamais servi de ces opérateurs !!
Bon, alors pour vous deux et pour les autres aussi qui en demandent, je vous propose ceci: - Code:
-
rem ============================================================================ rem Graphisme avec les fonctions logiques binaires : BIN_AND ; BIN_OR ; BIN_XOR rem par Papydall rem ============================================================================ dim a,x,y,x0,y0,ym,i label choix, quitter width 0,1000 : height 0,700 picture 10 : width 10,600 : height 10,600 : 2d_target_is 10 x0 = width_client(10)*.5 : y0 = height_client(10)-10 : ym = y0/2 color 10,200,100,50 : 2d_fill_color 50,100,200 : 2d_circle x0,y0/2+5,ym container_option 20 : top 20,20 : left 20,650 : height 20,520 : width 20,300 font_bold 20 : caption 20,"Faites votre choix"
option 30 : caption 30,"bin_and(x,y-x)" option 40 : caption 40,"bin_or(x,y-x)" option 50 : caption 50,"bin_xor(x,y-x)" option 60 : caption 60,"bin_and(x,y)" option 70 : caption 70,"bin_and(x,y+x)" option 80 : caption 80,"bin_and(y/pi,y+x/sqr(2))" option 90 : caption 90,"bin_and(x,sqr(x*x+y*y))" option 100 : caption 100,"bin_and(bin_and(x,sqr(x*x+y*y)),y)" option 110 : caption 110,"bin_and(x*pi,y*pi)" option 120 : caption 120,"bin_and(bin_and(x*x,x*x),sqr(y*x+y*x))" option 130 : caption 130,"bin_and(bin_and(bin_and(x,x*y*pi),y),x)" option 140 : caption 140,"bin_and(x*x/y+pi,y*y/x+pi)" option 150 : caption 150,"bin_and(pi*x-y,pi*y)" option 160 : caption 160,"bin_and(exp(1)*x,exp(1)*y)" option 170 : caption 170,"bin_or(exp(1)*x,exp(1)*y)" option 180 : caption 180,"bin_and(exp(pi)*x,exp(1)*y)"
alpha 998 : top 998,height(10)+20 : left 998,50 : font_bold 998 font_color 998,0,0,255 : font_size 998,12 caption 998,"Papydall vous propose du graphisme avec les fonctions binaires" button 999 : top 999, height(20)+50 : left 999,width(10)+50 caption 999,"Quitter" : on_click 999,quitter
for i = 30 to 180 step 10 parent i,20 : top i,i*3-50 : left i,10 : width i,250 : font_bold i on_click i,choix next i end rem ============================================================================ Choix: Tracer() return rem ============================================================================ Quitter: terminate return rem ============================================================================ SUB Tracer() inactive 20 color 10,200,100,50 : 2d_fill_color 50,100,200 : 2d_circle x0,y0/2+5,ym caption 0,"Graphisme avec les fonctions logiques binaires ... Tracé en cours ... <ESC> pour arrêter" for y = 1 to ym for x = 1 to y select number_click case 30 : a = bin_and(x,y-x) case 40 : a = bin_or(x,y-x) case 50 : a = bin_xor(x,y-x) case 60 : a = bin_and(x,y) case 70 : a = bin_and(x,y+x) case 80 : a = bin_and(y,y-x) case 90 : a = bin_and(y/pi,y+x/sqr(2)) case 100 : a = bin_and(x,sqr(x*x+y*y)) case 110 : a = bin_and(bin_and(x,sqr(x*x+y*y)),y) case 120 : a = bin_and(x*pi,y*pi) case 130 : a = bin_and(bin_and(x*x,x*x),sqr(y*x+y*x)) case 140 : a = bin_and(bin_and(bin_and(x,x*y*pi),y),x) case 150 : a = bin_and(x*x/y+pi,y*y/x+pi) case 160 : a = bin_and(pi*x-y,pi*y) case 170 : a = bin_and(exp(1)*x,exp(1)*y) case 180 : a = bin_and(exp(1)*x,exp(1)*y) end_select if a <> 0 couleur(a) 2d_point x0+x,y+5 : 2d_point x0-x,y+5 2d_point x0+x,y0-y+5 : 2d_point x0-x,y0-y+5 display end_if if scancode = 27 then caption 0,"Programme arrêté par l'utilisateur ! " : end next x next y caption 0,"TERMINE" active 20 END_SUB rem ============================================================================ SUB Couleur(a) if a > 10 then 2d_pen_color 255,0,0 if a > 20 then 2d_pen_color 0,255,0 if a > 30 then 2d_pen_color 0,0,255 if a > 40 then 2d_pen_color 255,255,0 if a > 50 then 2d_pen_color 0,255,255 if a > 60 then 2d_pen_color 127,0,0 if a > 70 then 2d_pen_color 0,127,0 if a > 80 then 2d_pen_color 0,0,127 if a > 100 then 2d_pen_color rnd(255),rnd(255),rnd(255) END_SUB rem ============================================================================
- Spoiler:
| |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: AND OR XOR : calculatrice 8 bits Sam 26 Fév 2022 - 9:48 | |
| Merci Papydall ! - Papydall a écrit:
- Graphisme avec les fonctions logiques binaires : BIN_AND ; BIN_OR ; BIN_XOR par Papydall
C'est beaucoup plus jovial | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: AND OR XOR : calculatrice 8 bits Sam 26 Fév 2022 - 10:15 | |
| Cela parait si simple comme ça... Merci Papydall ! | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: AND OR XOR : calculatrice 8 bits Sam 26 Fév 2022 - 12:50 | |
| Ouahhh, joli ! Bravo ! Mais juste une question comme ça, en passant, ça simplifie ou ça complique ? | |
| | | Contenu sponsorisé
| Sujet: Re: AND OR XOR : calculatrice 8 bits | |
| |
| | | | AND OR XOR : calculatrice 8 bits | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |