FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» PANORAMIC V 1
COMPILATEUR version beta 18 du 09/05/2020 Emptypar papydall Aujourd'hui à 2:21

» Gestion d'un système client-serveur.
COMPILATEUR version beta 18 du 09/05/2020 Emptypar Klaus Hier à 23:59

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
COMPILATEUR version beta 18 du 09/05/2020 Emptypar Marc Hier à 12:14

» @Jack
COMPILATEUR version beta 18 du 09/05/2020 Emptypar Jack Mar 30 Avr 2024 - 20:40

» trop de fichiers en cours
COMPILATEUR version beta 18 du 09/05/2020 Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
COMPILATEUR version beta 18 du 09/05/2020 Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
COMPILATEUR version beta 18 du 09/05/2020 Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
COMPILATEUR version beta 18 du 09/05/2020 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
COMPILATEUR version beta 18 du 09/05/2020 Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
COMPILATEUR version beta 18 du 09/05/2020 Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
COMPILATEUR version beta 18 du 09/05/2020 Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
COMPILATEUR version beta 18 du 09/05/2020 Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
COMPILATEUR version beta 18 du 09/05/2020 Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
COMPILATEUR version beta 18 du 09/05/2020 Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
COMPILATEUR version beta 18 du 09/05/2020 Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Réassort du coffret Pokémon 151 Électhor-ex : où l’acheter ?
Voir le deal
anipassion.com

 

 COMPILATEUR version beta 18 du 09/05/2020

Aller en bas 
4 participants
AuteurMessage
Jack
Admin
Jack


Nombre de messages : 2386
Date d'inscription : 28/05/2007

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptyVen 8 Mai 2020 - 17:24

Une nouvelle version du compilateur est disponible: version beta 17 du 8 mai 2020

C'est encore une version Béta, donc sujette à des bugs.

La modification par rapport à la version précédente porte sur la correction de quelques bugs:
- les commandes GRID_COLUMN_FIXED et GRID_ROW_FIXED n'acceptaient pas la valeur 0 pour ligne ou colonne
- les commandes midi suivantes n'étaient pas activées : MIDI_ON, MIDI_OFF, MIDI_PLAY, MIDI_VOLUME, MIDI_INSTRUMENT

_________________
COMPILATEUR version beta 18 du 09/05/2020 Webdav username : panoramic@jack-panoramic password : panoramic123


Dernière édition par Jack le Sam 9 Mai 2020 - 16:23, édité 1 fois
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Marc

Marc


Nombre de messages : 2385
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptyVen 8 Mai 2020 - 17:27

Merci Jack !  cheers
Revenir en haut Aller en bas
Pedro

Pedro


Nombre de messages : 1549
Date d'inscription : 19/01/2014

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: COMPILATEUR version beta 17.   COMPILATEUR version beta 18 du 09/05/2020 EmptyVen 8 Mai 2020 - 17:48

Bonjour.

Cette nouvelle version du compilateur corrige certes certains bugs, mais en ajoute d'autres !!

Il semble que les button_picture n'apparaissent plus, alors que tout fonctionnait parfaitement avant.

Pour ma part, je retourne à l'ancienne version du compilateur.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptyVen 8 Mai 2020 - 19:01

Salut tout le monde.
Merci Jack pour les efforts que tu fais pour nous offrir gratuitement Panoramic et dérivés.
Je viens de télécharger la nouvelle version  V09Beta17.
Mais, désolé de te l’annoncer, ça plante et je n’arrive pas à comprendre pourquoi.
Le code suivant fonctionne parfaitement avec les versions précédentes (Beta 11, Beta 12, et Beta 14) sauf pour Beta 16 et aussi pour cette version toute fraiche.


V09Beta11 :  Compilation et exécution : ok
V09Beta12 :  Compilation et exécution : ok
V09Beta14 :  Compilation et exécution : ok
V09Beta16 et V09Beta17 : compilation : Ok ; Exécution : plantage au niveau SUB Demo_7() , lignes 132 à 143

Code:

rem ============================================================================
rem         Tracé d’arc de cercle par l’algorithme de Bresenham
rem                        Par Papydall
rem ============================================================================
dim xc,yc,where_x,where_y,p
Init()
Demo()
end
rem ============================================================================
SUB Init()  
    width 0,800 : height 0, 600
    top 0,(screen_y - height(0))/2 : left 0,(screen_x - width(0))/2
    color 0,0,0,255 : 2d_pen_color 255,0,0 : font_color 0,255,255,255 : font_bold 0
    xc = width(0)/2 : yc = height(0)/2 : p = 3000
END_SUB
rem ============================================================================
SUB Demo()
    Les_8_Octants() : pause p : cls
    Demo_1()    : pause p : cls
    Demo_2()    : pause p : cls
    Demo_3()    : pause p : cls
    Demo_4()    : pause p : cls
    Demo_5()    : pause p : cls
    Demo_6()    : pause p : cls
    Demo_7()    : pause p : cls
    Alphabet()  : pause p : cls
    Bonhommes() : pause p : cls
    Texte(50,50,20)
    Bonhomme(100,400,10) : Bonhomme(250,400,8) : Bonhomme(350,400,5)
    Bonhomme(400,400,3)  : Bonhomme(430,400,2) : Bonhomme(450,400,1)
    
END_SUB
rem ============================================================================

' Tracer un arc de cercle : un huitième de cercle
' x_centre,y_centre : coordonnées du centre du cercle
' rayon : rayon du cercle
' octant : numéro de l'octant de 1 à 8 dans le sens trigonométrique
' octant = 1 : angle compris entre 0      et pi/4   rad soit entre 0°   et 45°
' octant = 2 : angle compris entre pi/4   et pi/2   rad soit entre 45°  et 90°
' octant = 3 : angle compris entre pi/2   et 3*pi/4 rad soit entre 90°  et 135°
' octant = 4 : angle compris entre 3*pi/4 et pi     rad soit entre 135° et 180°
' octant = 5 : angle compris entre pi     et 5*pi/4 rad soit entre 180° et 225°
' octant = 6 : angle compris entre 5*pi/4 et 3*pi/2 rad soit entre 225° et 270°
' octant = 7 : angle compris entre 3*pi/2 et 7*pi/4 rad soit entre 270° et 315°
' octant = 8 : angle compris entre 7*pi/4 et 2*pi   rad soit entre 315° et 360°

SUB Tracer_Octant(x_centre,y_centre,rayon,octant)
    dim_local x, y, m, xp, yp
    x = 0 : y = rayon : m = 5 - 4*rayon
    while x <= y
       select octant
          case 1 : xp = x_centre + y : yp = y_centre - x
          case 2 : xp = x_centre + x : yp = y_centre - y
          case 3 : xp = x_centre - x : yp = y_centre - y
          case 4 : xp = x_centre - y : yp = y_centre - x
          case 5 : xp = x_centre - y : yp = y_centre + x
          case 6 : xp = x_centre - x : yp = y_centre + y
          case 7 : xp = x_centre + x : yp = y_centre + y
          case 8 : xp = x_centre + y : yp = y_centre + x
       end_select
       2d_point xp,yp
       if  m > 0 then y = y - 1 : m = m - 8 * y
       x = x + 1 : m = m + 8 * x + 4
    end_while
    where_x = xp : where_y = yp
END_SUB
rem ============================================================================
SUB Les_8_Octants()
    caption 0,"Les 8 octants d'un cercle"
    dim_local i,j
    print_locate xc-100,50 : print "Les 8 octants d'un cercle"
    Cercle(xc,yc,100) : j = 9
    for i = 0 to 2*pi step pi/4 : 2d_line xc,yc,xc+100*cos(i),yc+100*sin(i) : next i
    for i = pi/8 to 2*pi step pi/4
        j = j-1 : print_locate xc+120*cos(i),yc+120*sin(i) : print j
    next i
END_SUB
rem ============================================================================
SUB Demo_1()
    dim_local i,j
    caption 0,"Tracé d'un carreau par les octants"
    for j = 1 to height(0) step 150
        for i = 1 to width(0) step 100 : carreau(50+i,50+j,50,1,255,255,0) : next i
    next j
END_SUB
rem ----------------------------------------------------------------------------
SUB Demo_2()
    Carreau(xc,yc,yc-100,1,255,0,0)
    Carreau(100,100,100,1,255,255,0)
    Carreau(500,100,50,1,255,255,0)
    Carreau(200,300,20,1,255,255,0)
END_SUB
rem ----------------------------------------------------------------------------
SUB Demo_3()
    dim_local i,j
    for i = 10 to 150  step 4 : Carreau(xc,yc,i,1,255,255,0) : next i
    Cercle(xc,yc-150,25)   : cercle(xc,yc+150,25)   : ' tracer cercle par 8 octants
    2d_circle xc-200,yc,50 : 2d_circle xc+200,yc,50 : ' tracer cercle par 2d_circle
END_SUB
rem ----------------------------------------------------------------------------
SUB Demo_4()
    dim_local r
    r = 30
    caption 0,"Tracé de carreau / Trèfle / Coeur / Pique"
    Carreau(4*r,yc,3*r,1,255,255,0)
    Trefle(10*r,yc,r,1,255,255,0)
    Coeur(15*r,yc,r,1,255,255,0)
    Pique(20*r,yc,r,1,255,255,0)
END_SUB
rem ----------------------------------------------------------------------------
SUB Demo_5()
    dim_local x,y,r
    r = 25
    caption 0,"Tracé d'une frise par les octants"
    for x = 100 to 2*xc-4*r step 4*r
        for y = 2*r to 2*yc step 4*r+10 : Frise_1(x,y,r,1,255,0,0) : next y
    next x
    for x = 100 to 2*xc-8*r step 4*r
        for y = 2*r to 2*yc step 4*r+10 : 2d_flood x+2*r,y,255,255,0 : next y
    next x
END_SUB
rem ============================================================================
SUB Demo_6()
    dim_local x,y,r
    r = 20
    for x = 0 to 2*xc step 2*r
        for y = 0 to 2*yc step 2*r : Frise_2(x,y,r) : next y
    next x
END_SUB
rem ============================================================================
SUB Demo_7()
    dim_local x,y,r,r1
    r = 30
    caption 0,"Tracé d'une balle par les octants"
    for x = r to 2*xc step 2*r
        r1 = 1-r1
        for y = r to 2*yc step 2*r : Balle(x,y,r+r1) : next y
    next x
    pause p : cls
    for r = 20 to yc-50  step 5 : cls : Balle(xc,yc,r) : pause 50 : next r

END_SUB
rem ============================================================================
' Tracé d'un cercle par octant
' Pour obtenir un cercle complet, on trace les 8 octants
SUB Cercle(x,y,r)
    dim_local i
    for i = 1 to 8 : Tracer_Octant(x,y,r,i) : next i
END_SUB
rem ============================================================================
' Tracé d'un carreau par combinaison d'octants
' Chaque branche est constituée par 2 octants (soit un quart de cercle)
' x,y : coordonnées du centre du carreau
' r   : rayon
' p   : si p > 0 , le carreau est rempli de la couleur cr,cg,cb
SUB Carreau(x,y,r,p,cr,cg,cb)
    dim_local i
    for i = 7 to 8 : Tracer_Octant(x-r,y-r,r,i) : next i
    for i = 5 to 6 : Tracer_Octant(x+r,y-r,r,i) : next i
    for i = 1 to 2 : Tracer_Octant(x-r,y+r,r,i) : next i
    for i = 3 to 4 : Tracer_Octant(x+r,y+r,r,i) : next i
    if p > 0 then 2d_flood x,y,cr,cg,cb
END_SUB
rem ============================================================================
SUB Trefle(x,y,r,p,cr,cg,cb)
    dim_local i,r1,x1,y1 : r1 = sqr(2)
    for i = 1 to 5 : Tracer_Octant(x,y-r1*r,r,i) : next i
    for i = 2 to 7 : Tracer_Octant(x-r1*r,y,r,i) : next i
    for i = 1 to 3 : Tracer_Octant(x+r1*r,y,r,i) : next i
    for i = 6 to 8 : Tracer_Octant(x+r1*r,y,r,i) : next i
    Tracer_Octant(x,y-r1*r,r,8)
    Tracer_Octant(x-r1*r,y+r1*r,r,1)
    Tracer_Octant(x+r1*r,y+r1*r,r,4)
    Tracer_Octant(x-r1*r,y+r1*r,r,8) : x1 = where_x : y1 = where_y
    Tracer_Octant(x+r1*r,y+r1*r,r,5) : 2d_line where_x,where_y,x1,y1
    if p > 0 then 2d_flood x,y,cr,cg,cb
    
END_SUB
rem ============================================================================
SUB Coeur(x,y,r,p,cr,cg,cb)
    dim_local i
    for i = 1 to 6 : Tracer_Octant(x-r,y,r,i) : next i
    for i = 1 to 4 : Tracer_Octant(x+r,y,r,i) : next i
    for i = 7 to 8 : Tracer_Octant(x+r,y,r,i) : next i
    
    for i = 3 to 4 : Tracer_Octant(x+r,y+2*r,r,i) : next i
    for i = 1 to 2 : Tracer_Octant(x-r,y+2*r,r,i) : next i
    if p > 0 then 2d_flood x,y+2,cr,cg,cb
END_SUB
rem ============================================================================
SUB Pique(x,y,r,p,cr,cg,cb)
    dim_local i
    for i = 3 to 6 : Tracer_Octant(x-r,y,r,i) : next i
    for i = 1 to 2 : Tracer_Octant(x+r,y,r,i) : next i
    for i = 7 to 8
        Tracer_Octant(x+r,y,r,i) : Tracer_Octant(x-r,y+r,r,i)
        Tracer_Octant(x-r,y-2*r,r,i)
    next i
    for i = 5 to 6
        Tracer_Octant(x+r,y-2*r,r,i) : Tracer_Octant(x+r,y+r,r,i)
    next i

    2d_line x-r,y+r,x+r,y+r : 2d_line x-r,y+2*r,x+r,y+2*r
    if p > 0 then 2d_flood x,y,cr,cg,cb: 2d_flood x,y+2*r-2,cr,cg,cb
END_SUB
rem ============================================================================
SUB Frise_1(x,y,r,p,cr,cg,cb)
    dim_local i
    2d_pen_color 0,0,254
    for i = 1 to 4 : Tracer_Octant(x,y,r,i) : next i
    for i = 7 to 8 : Tracer_Octant(x,y,r,i) : next i
    for i = 3 to 8 : Tracer_Octant(x,y+2*r,r,i) : next i
    for i = 1 to 6 : Tracer_Octant(x+2*r,y,r,i) : next i
    for i = 1 to 2 : Tracer_Octant(x+2*r,y+2*r,r,i) : next i
    for i = 5 to 8 : Tracer_Octant(x+2*r,y+2*r,r,i) : next i
    if p > 0 then 2d_flood x,y+2*r,cr,cg,cb
END_SUB
rem ============================================================================
SUB Frise_2(x,y,r)
    dim_local i
    2d_pen_color 255,0,0
    for i = 3 to 4 : Tracer_Octant(x,y,r,i)   : next i
    for i = 1 to 2 : Tracer_Octant(x+r,y,r,i) : next i
    2d_line x,y-r,x+r,y-r
    for i = 5 to 6 : Tracer_Octant(x,y+r,r,i)   : next i
    for i = 7 to 8 : Tracer_Octant(x+r,y+r,r,i) : next i
    2d_line x,y+2*r,x+r,y+2*r : 2d_line x-r,y,x-r,y+r : 2d_line x+2*r,y,x+2*r,y+r
END_SUB
rem ============================================================================
SUB Balle(x,y,r)
    dim_local i,r1
    r1 = int(r/2)
    for i = 1 to 8 : Tracer_Octant(x,y,r,i) : next i
    for i = 1 to 2 : Tracer_Octant(x,y-r1,r1,i) : next i
    for i = 7 to 8 : Tracer_Octant(x,y-r1,r1,i) : next i
    for i = 3 to 6 : Tracer_Octant(x,y+r1,r1,i) : next i
    for i = 1 to 4 : Tracer_Octant(x-r1,y,r1,i) : next i
    for i = 5 to 8 : Tracer_Octant(x+r1,y,r1,i) : next i
    if odd(r) = 1
       2d_flood x,y-r1,255,255,000 : 2d_flood x,y+r1,255,255,000
       2d_flood x-r1,y,255,000,000 : 2d_flood x+r1,y,255,000,000
    else
       2d_flood x,y-r1,255,000,000 : 2d_flood x,y+r1,255,000,000
       2d_flood x-r1,y,255,255,000 : 2d_flood x+r1,y,255,255,000
    end_if
END_SUB
rem ============================================================================
SUB Alphabet()
    caption 0,"Création des lettres de l'alphabet par les octants"
    A(050,100,20) : B(100,100,20) : C(150,100,20) : D(200,100,20) : E(250,100,20)
    F(300,100,20) : G(350,100,20) : H(400,100,20) : I(450,100,20) : J(500,100,20)
    K(550,100,20) : L(600,100,20) : M(650,100,20) : N(050,200,20) : O(100,200,20)
    P(150,200,20) : Q(200,200,20) : R(250,200,20) : S(300,200,20) : T(350,200,20)
    U(400,200,20) : V(450,200,20) : W(500,200,20) : X(550,200,20) : Y(600,200,20)
    Z(650,200,20)
END_SUB
rem ============================================================================
SUB A(x,y,r)
    dim_local i
    for i = 1 to 4 : Tracer_Octant(x+r,y+r,r,i) : next i
    2d_line x,y+r,x,y+4*r : 2d_line x+2*r,y+r,x+2*r,y+4*r : 2d_line x,y+2*r,x+2*r,y+2*r
END_SUB
rem ============================================================================
SUB B(x,y,r)
    dim_local i
    2d_poly_from x+r,y : 2d_poly_to x,y : 2d_poly_to x,y+4*r
    2d_poly_to x+r,y+4*r : 2d_line x,y+2*r,x+r,y+2*r
    for i = 1 to 2 : Tracer_Octant(x+r,y+r,r,i) : Tracer_Octant(x+r,y+3*r,r,i) : next i
    for i = 7 to 8 : Tracer_Octant(x+r,y+r,r,i) : Tracer_Octant(x+r,y+3*r,r,i) : next i
END_SUB
rem ============================================================================
SUB C(x,y,r)
    dim_local i
    for i = 1 to 4 : Tracer_Octant(x+r,y+r,r,i) : next i
    for i = 5 to 8 : Tracer_Octant(x+r,y+3*r,r,i) : next i
    2d_line x,y+r,x,y+3*r
END_SUB
rem ============================================================================
SUB D(x,y,r)
    dim_local i
    2d_poly_from x+r,y : 2d_poly_to x,y : 2d_poly_to x,y+4*r :2d_poly_to x+r,y+4*r
    for i = 1 to 2 : Tracer_Octant(x+r,y+r,r,i) : next i
    for i = 7 to 8 : Tracer_Octant(x+r,y+3*r,r,i) : next i
    2d_line x+2*r,y+r,x+2*r,y+3*r
END_SUB
rem ============================================================================
SUB E(x,y,r)
    dim_local i
    2d_poly_from x+2*r,y : 2d_poly_to x,y : 2d_poly_to x,y+4*r
    2d_poly_to x+2*r,y+4*r : 2d_line x,y+2*r,x+r,y+2*r
END_SUB
rem ============================================================================
SUB F(x,y,r)
    dim_local i
    2d_poly_from x+2*r,y : 2d_poly_to x,y : 2d_poly_to x,y+4*r
    2d_line x,y+2*r,x+r,y+2*r
END_SUB
rem ============================================================================
SUB G(x,y,r)
    dim_local i
    for i = 1 to 4 : Tracer_Octant(x+r,y+r,r,i) : next i
    for i = 5 to 8 : Tracer_Octant(x+r,y+3*r,r,i) : next i
    2d_line x,y+r,x,y+3*r : 2d_line x+r,y+2*r,x+2*r,y+2*r : 2d_poly_to x+2*r,y+3*r
    
END_SUB
rem ============================================================================
SUB H(x,y,r)
    2d_line x,y,x,y+4*r : 2d_line x+2*r,y,x+2*r,y+4*r : 2d_line x,y+2*r,x+2*r,y+2*r
END_SUB
rem ============================================================================
SUB I(x,y,r)
    2d_line x,y,x+2*r,y : 2d_line x,y+4*r,x+2*r,y+4*r: 2d_line x+r,y,x+r,y+4*r
END_SUB
rem ============================================================================
SUB J(x,y,r)
    dim_local i
    2d_line x,y,x+2*r,y :2d_poly_to x+2*r,y+3*r
    for i= 5 to 8 : Tracer_Octant(x+r,y+3*r,r,i) : next i
END_SUB
rem ============================================================================
SUB K(x,y,r)
    dim_local i
    2d_line x,y,x,y+4*r
    for i = 3 to 4 : Tracer_Octant(x+2*r,y+r,r,i) : next i
    for i = 7 to 8 : Tracer_Octant(x,y+r,r,i) : next i
    for i = 1 to 2 : Tracer_Octant(x,y+3*r,r,i) : next i
    for i = 5 to 6 : Tracer_Octant(x+2*r,y+3*r,r,i) : next i
END_SUB
rem ============================================================================
SUB L(x,y,r)
    2d_poly_from x,y : 2d_poly_to x,y+4*r : 2d_poly_to x+2*r,y+4*r
END_SUB
rem ============================================================================
SUB M(x,y,r)
     dim_local i
     for i = 5 to 8 : Tracer_Octant(x+r,y,r,i) : next i
     2d_line x,y,x,y+4*r : 2d_line x+2*r,y,x+2*r,y+4*r
END_SUB
rem ============================================================================
SUB N(x,y,r)
    dim_local i
    2d_line x,y,x,y+4*r : 2d_line x+2*r,y,x+2*r,y+4*r
    for i = 1 to 2 : Tracer_Octant(x,y+r,r,i) : next i
    for i = 5 to 6 : Tracer_Octant(x+2*r,y+r,r,i) : next i
END_SUB
rem ============================================================================
SUB O(x,y,r)
    dim_local i
    for i = 1 to 4 : Tracer_Octant(x+r,y+r,r,i) : next i
    for i = 5 to 8 : Tracer_Octant(x+r,y+3*r,r,i) : next i
    2d_line x,y+r,x,y+3*r : 2d_line x+2*r,y+r,x+2*r,y+3*r
END_SUB
rem ============================================================================
SUB P(x,y,r)
    dim_local i
    for i = 1 to 2 : Tracer_Octant(x+r,y+r,r,i) : next i
    for i = 7 to 8 : Tracer_Octant(x+r,y+r,r,i) : next i
    2d_poly_from x+r,y : 2d_poly_to x,y
    2d_poly_to x,y+4*r : 2d_line x,y+2*r,x+r,y+2*r
END_SUB
rem ============================================================================
SUB Q(x,y,r)
    dim_local i
    for i = 1 to 4 : Tracer_Octant(x+r,y+r,r,i) : next i
    for i = 5 to 8 : Tracer_Octant(x+r,y+3*r,r,i) : next i
    2d_line x,y+r,x,y+3*r : 2d_line x+2*r,y+r,x+2*r,y+3*r
    for i = 5 to 6 : Tracer_Octant(x+2*r,y+3*r,r,i) : next i
END_SUB
rem ============================================================================
SUB R(x,y,r)
    dim_local i
    2d_poly_from x+r,y : 2d_poly_to x,y : 2d_poly_to x,y+4*r : 2d_line x,y+2*r,x+r,y+2*r
    for i = 1 to 2 : Tracer_Octant(x+r,y+r,r,i) : Tracer_Octant(x+r,y+3*r,r,i) :  next i
    for i = 7 to 8 : Tracer_Octant(x+r,y+r,r,i) : next i
    2d_line x+2*r,y+3*r,x+2*r,y+4*r
END_SUB
rem ============================================================================
SUB S(x,y,r)
    dim_local i
    for i = 1 to 6 : Tracer_Octant(x+r,y+r,r,i) : next i
    for i = 1 to 2 : Tracer_Octant(x+r,y+3*r,r,i) : next i
    for i = 5 to 8 : Tracer_Octant(x+r,y+3*r,r,i) : next i
END_SUB
rem ============================================================================
SUB T(x,y,r)
    2d_line x,y,x+2*r,y : 2d_line x+r,y,x+r,y+4*r
END_SUB
rem ============================================================================
SUB U(x,y,r)
    dim_local i
    for i = 5 to 8 : Tracer_Octant(x+r,y+3*r,r,i) : next i
    2d_line x,y,x,y+3*r : 2d_line x+2*r,y,x+2*r,y+3*r
END_SUB
rem ============================================================================
SUB V(x,y,r)
    dim_local i
    2d_line x,y,x,y+3*r : 2d_line x+2*r,y,x+2*r,y+3*r
    for i = 1 to 2 : Tracer_Octant(x,y+4*r,r,i) : next i
    for i = 3 to 4 : Tracer_Octant(x+2*r,y+4*r,r,i) : next i
END_SUB
rem ============================================================================
SUB W(x,y,r)
    dim_local i
    2d_line x,y,x,y+4*r : 2d_line x+2*r,y,x+2*r,y+4*r
    for i = 7 to 8 : Tracer_Octant(x,y+3*r,r,i) : next i
    for i = 5 to 6 : Tracer_Octant(x+2*r,y+3*r,r,i) : next i
END_SUB
rem ============================================================================
SUB X(x,y,r)
    dim_local i
    2d_line x,y,x,y+r : 2d_line x+2*r,y,x+2*r,y+r
    2d_line x,y+3*r,x,y+4*r : 2d_line x+2*r,y+3*r,x+2*r,y+4*r
    for i = 5 to 8 : Tracer_Octant(x+r,y+r,r,i) : next i
    for i = 1 to 4 : Tracer_Octant(x+r,y+3*r,r,i) : next i
END_SUB
rem ============================================================================
SUB Y(x,y,r)
    dim_local i
    2d_line x,y,x,y+r : 2d_line x+2*r,y,x+2*r,y+3*r
    for i = 5 to 8 : Tracer_Octant(x+r,y+r,r,i) :  Tracer_Octant(x+r,y+3*r,r,i) : next i
END_SUB
rem ============================================================================
SUB Z(x,y,r)
    dim_local i
    2d_line x,y,x+2*r,y : 2d_poly_to x+2*r,y+r
    2d_line x,y+3*r,x,y+4*r : 2d_poly_to x+2*r,y+4*r
    for i = 7 to 8 : Tracer_Octant(x+r,y+r,r,i) : next i
    for i = 3 to 4 : Tracer_Octant(x+r,y+3*r,r,i) : next i
END_SUB
rem ============================================================================
SUB Bonhommes()
    caption 0,"Création de bonhommes par les octants"
    Bonhomme(100,50,30) : Bonhomme(300,50,20) : Bonhomme(450,50,15)
    Bonhomme(550,50,10) : Bonhomme(620,50,05) : Bonhomme(660,50,02)
    Bonhomme(680,50,01)
END_SUB
rem ============================================================================
SUB Bonhomme(x,y,r)
    dim_local i    
    for i = 1 to 4 : Tracer_Octant(x,y,r,i) : next i
    for i = 7 to 8 : Tracer_Octant(x-2*r,y,r,i) : next i
    for i = 5 to 6 : Tracer_Octant(x+2*r,y,r,i) : next i
    2d_line x-2*r,y+r,x+2*r,y+r
    2d_line x-r,y+r,x-r,y+2*r : 2d_line x+r,y+r,x+r,y+2*r
    for i = 5 to 8 : Tracer_Octant(x,y+2*r,r,i) : next i
    2d_line x-2*r,y+3*r,x+2*r,y+3*r
    for i = 3 to 4 : Tracer_Octant(x-2*r,y+4*r,r,i) : next i
    for i = 1 to 2 : Tracer_Octant(x+2*r,y+4*r,r,i) : next i
    2d_line x-3*r,y+4*r,x-3*r,y+10*r : 2d_poly_to x-2*r,y+10*r
    2d_line x+3*r,y+4*r,x+3*r,y+10*r : 2d_poly_to x+2*r,y+10*r
    for i = 5 to 6 : Tracer_Octant(x-2*r,y+10*r,r,i) : next i
    for i = 7 to 8 : Tracer_Octant(x+2*r,y+10*r,r,i) : next i
    
    2d_line x-2*r,y+6*r,x-2*r,y+15*r : 2d_line x+2*r,y+6*r,x+2*r,y+15*r
    2d_line x-2*r,y+9*r,x+2*r,y+9*r
    2d_line x,y+9*r,x,y+15*r
    2d_line x-2*r,y+15*r,x+2*r,y+15*r
    for i = 5 to 8 : Tracer_Octant(x-r,y+15*r,r,i) : Tracer_Octant(x+r,y+15*r,r,i) :  next i
END_SUB
rem ============================================================================
SUB Texte(x,y,r)
    dim_local s,x1, y1 ,y2
    caption 0,"Un texte écrit par un alphabet crée par les octants"
    s = 3*r : y1 = y + 4*r+10 : y2 = y+10*r : x1 = x+6*r
    
    P(x,y,r) : A(x+s,y,r) : N(x+2*s,y,r) : O(x+3*s,y,r) : R(x+4*s,y,r)
    A(x+5*s,y,r) : M(x+6*s,y,r) : I(x+7*s,y,r) : C(x+8*s,y,r)
    E(x1,y1,r) : C(x1+s,y1,r) : R(x1+2*s,y1,r) : I(x1+3*s,y1,r) : T(x1+4*s,y1,r)
    P(x,y2,r)  : A(x+s,y2,r) : R(x+2*s,y2,r)
    O(x+4*s,y2,r) : C(x+5*s,y2,r) : T(x+6*s,y2,r) : A(x+7*s,y2,r)
    N(x+8*s,y2,r) : T(x+9*s,y2,r) : S(x+10*s,y2,r)
    
    2d_pen_color 0,255,0
    A(600,500,5) : U(615,500,5)
    R(640,500,5) : E(655,500,5) : V(670,500,5)
    O(685,500,5) : I(700,500,5) : R(715,500,5)
    
END_SUB
rem ==========================================================


REM : Ce code fonctionne parfaitement avec l'interpréteur.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 5:35

Bonjour tout le monde.

@Jack
J’ai testé avec plusieurs codes et ça marche parfaitement !  cheers
Toutefois je n’ai pas trouvé ce qui cloche dans le code que j’ai posté ci-haut ! Embarassed
Est-ce que tu vois ce que je n’arrive pas à voir  Question
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 7:03

Comme je suis têtu, j’ai décortiqué mon code pour découvrir ce qui ne va pas.
Et j’ai enfin trouvé la petite bête.
Le Bug se trouve dans la fonction INT

Code:

dim r,r1
r = 31
r2 = int(r/2)
print r  
print r2 : ' <--- r2 = 15 pour la version beta 14  : c'est correct
           '      r2 = 0 pour la version beta 16   : c'est la ...
           '   et r2 = 4096 pour la beta 17        : ... petite bête !!!

Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 9:02

Voici un code et son résultat:

Code:

print int(123.456)  : ' <--- 2048
print int(5)        : ' <--- 1179680
print int(2/3)      : ' <--- 1194016
print int(0)        : ' <--- 1208352
print int(-1)       : ' <--- 1190176
print int(sqr(100)) : ' <--- 8224
print "======="
print int(123.456)  : ' <--- 1185889
print int(5)        : ' <--- ??<00000
print int(2/3)      : ' <--- ??<00000
print int(0)        : ' <--- ??<00000
print int(-1)       : ' <--- ??<00000
print int(sqr(100)) : ' <--- ??<00

Et si on modifie le code et on le compile à nouveau,ça donne :

COMPILATEUR version beta 18 du 09/05/2020 170

Remarquer le CAPTION de la fenêtre Beta 12 et non Beta 17
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jack
Admin
Jack


Nombre de messages : 2386
Date d'inscription : 28/05/2007

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 9:46

@Pedro:
J'ai refait tous mes tests sur l'objet BUTTON_PICTURE et je n'ai trouvé aucun défaut. Peux-tu mettre en évidence en quelques lignes le défaut que tu observes ?
Le seul petit problème, c'est que 'BUTTON_PICTURE" n'est pas coloré dans l'éditeur. C'est peut-être cela qui te chagrines. C'est alors un problème purement esthétique et qui n'empêche pas de fonctionner.
J'en profite pour rappeler ce que je dis depuis 6 mois:
Je n'examinerai que les bugs qui seront mis en évidence par quelques lignes de code.
Je ne conteste pas qu'il y ait des bugs dans Panoramic. Je tiens à les corriger, mais encore faut-il me les signaler de manière précise.

@Papydall:
Tu as mis le doigt sur un bug.
En effet, il y a un problème sur la fonction INT().
Cela est du au fait que j'utilise indifféremment le Pascal (FreePascal) et le Basic (FreeBasic) pour générer le compilateur. En pascal comme en basic, on passe un réel à cette fonction, mais FreePascal retourne un entier alors que FreeBasic retourne un réel.
J'ai compilé les 2 dernières versions (la Beta 16 et la Beta 17) avec FreeBasic, mais en laissant par erreur, un appel "à la mode" du pascal. Il y a alors une confusion: un retour avec un entier au lieu d'un réel, et tout cela sans conversion entier/réel, ce qui provoque le bug.

J'ai remarqué le bandeau avec beta 12 au lieu de beta 17. Il y a un sac de nœuds dans cette version beta 17.  affraid  affraid  affraid
Je corrige, je refais des tests et je mets une nouvelle version…
A bientôt.

La version beta 17 n'est plus disponible au téléchargement.

_________________
COMPILATEUR version beta 18 du 09/05/2020 Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Pedro

Pedro


Nombre de messages : 1549
Date d'inscription : 19/01/2014

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: COMPILATEUR version beta 17.   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 11:17

Bonjour.

@Jack.

Il faudrait que tu remettes au téléchargement, la nouvelle version du compilateur, au moins jusqu'à ce soir.

Car je n'ai pas conservé cette version.

Info de dernière minute:

En décortiquant le code d'affichage des button_picture, je m'aperçois que la sub fait appel 4 fois à la fonction int.
Le problème viendrait-il de là ?

Code:
left no%,int(x%*fl2):top no%,int(y%*fh2):width no%,int(l%*fl2):height no%,int(h%*fh2)
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 13:33

J’ai testé avec BUTTON_PICTURE et ça marche !
C’est vrai qu’il manquait la coloration, mais ça fonctionne.
C’est surement la faute à la fonction INT().

J’ai compilé et exécuté plusieurs codes et je n’ai détecté aucune anomalie à part INT.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 14:31

@Jack
Je viens de découvrir une autre petite insecte.
La fonction RND génère toujours la même séquence.
Le code suivant affiche à chaque exécution la liste suivante, alors qu’avec l’interpréteur, c’est toujours une liste de valeurs différentes

Code:

dim i
list 10 : top 10,20 : left 10,20 : width 10,200 : height 10,400
for i = 1 to 30
    item_add 10,str$(rnd(i)) : pause 100
next i

Résultat toujours le même:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jack
Admin
Jack


Nombre de messages : 2386
Date d'inscription : 28/05/2007

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 14:49

@Pedro:
Le bug sur INT est corrigé. Je vais mettre une nouvelle version au téléchargement dans quelques heures.
Je vais appliquer la coloration syntaxique à tous les nouveaux mots-clés. Par contre, la documentation ne sera pas à jour (il s'agit d'une version beta donc "instantanée").

@Papydall:
Il y avait un double bug sur la fonction INT():
- un problème interne d'entier non converti en réel,
- mais aussi un problème congénital (depuis le début) sur les nombres négatifs. Si int(-1,7) retournait correctement -2, int(-1) retournait -2 ce qui est incorrect.

La fonction RND() n'est pas codée de la même façon dans l'interpréteur et dans le compilateur. Je corrigerai cela plus tard pour qu'avec le compilateur, il y ait un "randomize" automatique. Ainsi le "germe" étant différent, une séquence sera différente à chaque fois.

_________________
COMPILATEUR version beta 18 du 09/05/2020 Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 14:53

Merci Jack et bon courage !
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Marc

Marc


Nombre de messages : 2385
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 15:38

Je réitère mon merci, Jack ! Et je ne te remercierai jamais assez au regard des milliers d’heures que tu as passées pour nous offrir ce langage.

Grâce au compilateur, j’ai pu trouver des erreurs dans le source d’EliP.
Après différentes corrections du code, EliP a passé avec succès le test du compilateur.  cheers
COMPILATEUR version beta 18 du 09/05/2020 1_bmp53

Bonne continuation !
Revenir en haut Aller en bas
Jack
Admin
Jack


Nombre de messages : 2386
Date d'inscription : 28/05/2007

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 16:24

Et voici la version beta 18 qui corrige le bug sur la fonction INT().
Bonne programmation !

_________________
COMPILATEUR version beta 18 du 09/05/2020 Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Marc

Marc


Nombre de messages : 2385
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 18:34

Merci Jack !
De mon coté, R.A.S. !  cheers
Revenir en haut Aller en bas
Pedro

Pedro


Nombre de messages : 1549
Date d'inscription : 19/01/2014

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: COMPILATEUR version beta 18.   COMPILATEUR version beta 18 du 09/05/2020 EmptySam 9 Mai 2020 - 18:53

@Jack.

Cette fois, les button_picture sont revenus.
Merci.
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptyDim 10 Mai 2020 - 0:14

Je viens de télécharger la nouvelle version Beta 18.
C’est bon pour la fonction INT().
C’est bon pour la coloration syntaxique.
En attendant la correction de la fonction RND(), j’ai codé mon propre générateur de nombres pseudo-aléatoires, juste pour voire ce que ça pourrait donner.
Le résultat est tout à fait honorable : j’obtiens toujours une séquence différente. cheers

A toute fin utile, voici mon code du générateur

Code:

rem ============================================================================
rem          Générateur de nombres pseudo-aléatoires
rem                      Par Papydall
rem ============================================================================
rem Génération de nombres pseudo-aléatoires distribués uniformément entre 0 et 1
rem selon la formule de Lehmer et l’algorithme et les paramètres de
rem Parker and Miller (1988):
rem
rem              ____________________________
rem             |                            |
rem             | x(i+1) = a * x(i) modulo c |
rem             |____________________________|
rem
rem
rem Avec :
rem    a = 7^5      = 16807
rem    c = 2^31 - 1 = 2147483647
rem Sa période est fixée par c
rem ============================================================================

rem Appel :
rem rand() : retourne un nombre pseudo-aléatoire de l’intervalle semi-ouvert[0..1[

rem ============================================================================
dim i
caption 0, "Générateur aléatoire Par Papydall"
list 10 : top 10,50 : left 10,100 : height 10,380 : item_add 10,"RND Papydall" : item_add 10,""
list 20 : top 20,50 : left 20,300 : height 20,380 : item_add 20,"RND Panoramic": item_add 20,""
font_bold 10 : font_bold 20 : width 10,150 : width 20,150

font_bold 0 : font_color 0,0,0,255
print_locate 30,20 : print "Séquence différente pour chaque appel" + string$(18," ") +"Toujours la même séquence"
for i = 1 to 25
    item_add 10,rand() : ' nombre aléatoire généré par FNC Rand()
    item_add 20,rnd(1) : ' nombre aléatoire généré par le compilateur Panoramic
    pause 1000
next i

end
rem ============================================================================
' Génération de la constante d'initialisation du générateur Random
' à partir de la date courante selon Anderson (1990)
FNC GenerationSeed()
    dim_local t0,t1,t2,t3,t4,t5,lseed,t$,d$

    t$ = time$  : ' Récupération de l'heure actuelle
    d$ = date$  : ' Récupération de la date actuelle

    t0 = val(mid$(t$,7,8)) : ' secondes
    t1 = val(mid$(t$,4,2)) : ' minutes
    t2 = val(mid$(t$,1,2)) : ' heures

    t3 = val(mid$(d$,1,2)) : ' Jour
    t4 = val(mid$(d$,4,2)) : ' Mois
    t5 = val(mid$(d$,7,4)) : ' année

' calcul du seed d'après l'algo d'Anderson (seed varie entre 0 et 2^31-1
    lseed = t5 + 70*(t4 + 12*(t3 + 31*(t2 + 23*(t1 + 59*t0))))
' s'assurer que seed est impair
    if even(lseed) = 1 then lseed = lseed - 1
    result lseed
END_FNC
rem ============================================================================
FNC Rand()
    dim_local a,c,x,y,seed
    seed = GenerationSeed()
    a = 16807 : c = 2147483647 : x = a * seed : seed = mod(x,c)
    y = seed/c : '  normalisation par c
    result y
END_FNC
rem ============================================================================

Résultat:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptyDim 10 Mai 2020 - 2:57

Comme le compilateur est basé sur FreePascal / FreeBasic, il hérite  de certaines subtilités de ces deux langages telles que la récursivité et les expressions logiques qui facilitent beaucoup la programmation.
Merci Jack.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptyDim 10 Mai 2020 - 17:37

Salut tout le monde.
@Jack
Il y a du pain sur la planche.

Quelques lignes de code valent mieux qu'un long discours.

Code:
dim a,b
a = 2 : b = 17
c = a*b+z  
' les variables c et z n'ont pas été DIMentionnées, mais acceptées par le compilateur
print c  : ' < --- 34
c = a*b+z/x+w*sin(t)
' ni c, ni z,ni x, ni w, ni t ont été DIMentionnées
print c   : ' <--- -2147483648 !!! où a-t-il chercher ce résultat ????
d = sigma :' ni d, ni sigma déclarées
print d + sigma  : ' <--- 0
f = sigma / d    : ' f non déclarée
print f   : ' <--- -2147483648
print 0/0 : ' <--- NAN

Du courage, Jack, car tu en as besoin.
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Pedro

Pedro


Nombre de messages : 1549
Date d'inscription : 19/01/2014

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: COMPILATEUR version beta 18.   COMPILATEUR version beta 18 du 09/05/2020 EmptyLun 11 Mai 2020 - 8:44

Bonjour.

Ce nombre 2147483648 me rappelait quelque chose (une limite de valeur pour un nombre entier peut-être).

En consultant la doc de FreeBasic, j'ai trouvé ceci :

Syntaxe de la déclaration Long:
dim variable as Long

Description:
32-bit signed whole-number data type.
Can hold values from -2147483648 to 2147483647.
Corresponds to a signed DWORD.


En plein dans le mille !
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6998
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptyLun 11 Mai 2020 - 18:03

On peut sûrement se passer de ces dysfonctionnements en veillant à bien déclarer toutes les variables par DIM.
Seulement, voilà : j’ai mal orthographié l’identificateur d’une variable :
Conséquences : résultat erroné, absence de message d’erreur et surtout difficulté de trouver d’où venait l’erreur surtout quand le code comporte plusieurs centaines de lignes.

En définitive : le compilateur est tout à fait utilisable avec quelques précautions à prendre.
Personnellement je le préfère à l’interpréteur qui souffre d’une lenteur parfois exaspérante.
D’autre part, le compilateur permet l’utilisation de la récursivité et l’utilisation des expressions logiques.
Ce n'était pas nécessairement voulu par Jack, mais comme le compilateur est à base de FreePascal / FreeBasic, on peut considérer qu'il s'agit là d'un heureux événement survenu par ricochet !
Pour la récursivité, j’ai posté quelques programmes pour l’illustrer.
Avec les expressions logiques, on peut coder comme suit (ce qui est interdit par l’interpréteur).

Code:

rem ============================================================================
rem     Expressions logiques retournant un boolien (-1 true ou 0 false)
dim a,b,c,x
a = 5 : b = 7 : c = sin(pi/12)
print x = a > 0 and b = 7 = 3 + 4 or (c < sqr(3)/2) : ' <--- -1 valeur true (vrai)
print 12 + 3 = 15 and 6 <= 17 or b = 10 - 3         : ' <--- -1 valeur true (vrai)                                                    
x = a = b = c                                       : ' expression logique
print x                                             : ' <---  0 valeur false (faux)


Je propose à Jack de porter son attention au développement et à l’amélioration du compilateur au lieu  de l’interpréteur ; mais c’est à lui de décider.

Bon courage Jack!
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jack
Admin
Jack


Nombre de messages : 2386
Date d'inscription : 28/05/2007

COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 EmptyLun 11 Mai 2020 - 20:31

Le bug qui fait qu'on peut utiliser une variable non déclarée sera corrigé dans la prochaine version.

papydall a écrit:
Je propose à Jack de porter son attention au développement et à l’amélioration du compilateur au lieu  de l’interpréteur

Je préfèrerai aussi développer le compilateur plutôt que l'interpréteur. C'est plus intéressant intellectuellement, et c'est l'avenir. Paradoxalement, c'est même plus facile à porter sur Mac, sur Linux et sur Android que l'interpréteur. J'ai certaines idées sur le développement d'un compilateur que je mettrai en œuvre prochainement. Mais pour le moment, je vais corriger les bugs.

Un autre poids est aussi le développement de l'éditeur. Je regarde de près le développement des éditeurs "alternatifs" dont en particulier celui de Marc, et il se pourrait que je l'adopte comme support du compilateur.

_________________
COMPILATEUR version beta 18 du 09/05/2020 Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Contenu sponsorisé





COMPILATEUR version beta 18 du 09/05/2020 Empty
MessageSujet: Re: COMPILATEUR version beta 18 du 09/05/2020   COMPILATEUR version beta 18 du 09/05/2020 Empty

Revenir en haut Aller en bas
 
COMPILATEUR version beta 18 du 09/05/2020
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» COMPILATEUR version beta 12 du 18/07/2019
» COMPILATEUR version Beta 11 du 22/06/2019
» COMPILATEUR version beta 14 du 19 septembre 2019
» COMPILATEUR version beta 19 du 9 février 2021
» COMPILATEUR V 0.9 beta 10 du 29 aout 2017

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC Le compilateur :: Le Compilateur-
Sauter vers: