IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Free Pascal Discussion :

Problème dans la séquence d'un programme


Sujet :

Free Pascal

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut Problème dans la séquence d'un programme
    Bonjour,
    Je suis en licence de biologie et on nous demande de nous familiariser avec free pascal en compilant quelques petits programmes, et comme c'est la première fois c'est pas vraiment évident...
    J'ai fait un programme où il y avait des erreurs, j'ai essayé de les corriger et maintenant en faisant "run" la fenêtre de graphique qui s'ouvre n'affiche que la couleur de fond et plus les axes de ma courbe.. En plus, la petite fenêtre qui s'ouvre pour l'utilisateur ne pose plus les questions pour entrer le pas, le temps max etc...
    Je n'arrête pas de chercher ce qui ne va pas en changeant des morceaux mais je ne trouve toujours pas... Est-ce que quelqu'un aurait une idée d'où cela peut venir ou qui pourrait me mettre sur la voie svp ..?

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Il faudrait que tu donnes le code en question, car comme ça, il est difficile de dire où ça cloche.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut
    Justement le problème c'est que je n'arrive pas à trouver où est l'erreur dans mon programme... Peut-être qu'en le voyant tu pourras m'aider
    Images attachées Images attachées  

  4. #4
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Bonjour

    Il serait plus judicieux d'ouvrir le fichier.pas et copier la source directement et le coller ici en utilisant les balises CODE plutot que de nous montrer une capture
    Cordialement

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut
    C'est ce que je voulais faire au début mais le copier-coller sur le fichier .pas ne marche pas.. ou alors je suis vraiment nulle ..

  6. #6
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Si tu fais un click droit sur le fichier =>copiper et ensuite coller ici, c'est normal que ça marche pas, il faut ouvrir ton fichier.pas avec un editeur de texte par exemple ensuite selectionner dans l'editeur , copier et finalement coller ici.

    C'est quel editeur tu utilises? ça m'a l'air d'être celui intégré à TP.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut
    A bah oui effectivement vu comme çà ...

    Alors voilà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
    program bilandemasse;
     uses
     crt,Graph;
    CONST
    ox=60;
    oy=600;
    unitx=60;
    unity=250;
    a=1;
    p=2;
    c=0.5;
    m=0.5;
     
    VAR
    GraphPilote, GraphMode : integer;
    x, y, h, dt, t, Xa, Ya, Xn, Yn, Tmax , stop : real;
    i : integer;
     
     
    procedure Point(x,y:real);
    VAR
    a,b : integer;
    begin;
    a:= round(ox+unitx*x);
    b:= round(oy-unity*y);
    moveto(a,b);
    lineto(a,b);
    end;
     
    procedure Axes;
    VAR
    px,py:real;
    begin;
    setcolor(2);
    px:=-1;
    py:=-0.1;
    repeat
       px:=px+h;
         py:=py+h;
       point(px,0);
       point(0,py);
       until px>100;
    end;
     
    procedure Tics;
    var
    j:integer;
    tx,ty:real;
    begin;
    setcolor(2);
    for j:=0 to 10 do
       begin;
       tx:=0;
       ty:=0;
       repeat
       tx:=tx+h;
       point(10*j,tx);
       ty:=ty+h;
       point (ty,0.1*j);
     until tx>0.05;
     end;
    end;
     
    procedure  Fond;
    var
    kx:integer;
    begin;
    setcolor(15);
     
    kx:= 0;
     repeat
     kx:= kx+1;
    moveto(kx,0);
    lineto(kx,2000);
    until kx>5000;
    end;
     
     procedure Trace(xa, ya, xn,yn: real);
    var
    a,b: integer;
    begin
    a:= round(ox+unitx*xa);
      b:= round(oy-unity*ya);
    moveto(a,b);
    a:= round(ox+unitx*xn);
    b:= round(oy-unity*yn);
    lineto(a,b);
    end;
     
     
    Begin
     
    GraphPilote := Detect;
    InitGraph(GraphPilote, GraphMode, '');
     
     
    begin
     
     
    repeat
     
    Fond;
    Axes;
    Tics;
    write('   Entrer un pas de temps dt = ');
    readln(dt);
    write(' Entrer un Tmax = ');
    readln(Tmax);
     
    write('Entrer une couleur pour la courbe ');
    readln(i);
    setcolor(i);
     
     
     
     
    {ici commence le trace de la recurrence}
    begin
    Xa := 1;
    Ya := 1;
    t := 0;
    repeat
    Xn := Xa+dt*(a*Xa-p*Xa*Ya);
    Yn := Ya+dt*(c*p*Xa*Ya-m*ya);
    Xa := XN;
    Ya := Yn;
    t := t+dt;
    until (t>10);
    end;
     
     
    writeln(' Voulez-vous continuez ? oui = 1, non = 2 ');
    readln(i);
    until i = 2;
    end;
     
    writeln();
    readln();
     
     
    end.

  8. #8
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 038
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 038
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Sans vouloir te froisser, un aussi long code sans aucun commentaire, c'est vraiment indigeste. Il faudrait au moins indiquer ce que fait chaque procédure.

    Il y a des begin orphelins perdus dans le code. Prendre soin de l'indentation du code permet de repérer facilement ce genre d'erreur. Voici ton code "nettoyé" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    Program Bilandemasse;
     
    Uses
      Crt, Graph;
     
    Const
      ox = 60;
      oy = 600;
      UnitX = 60;
      UnitY = 250;
      a = 1;
      p = 2;
      c = 0.5;
      m = 0.5;
     
    Var
      GraphPilote, GraphMode : Integer;
      x, y, h, dt, t, Xa, Ya, Xn, Yn, Tmax , Stop : Real;
      i : Integer;
     
     
    Procedure Point (x, y : Real);
    Var
      a, b : Integer;
    Begin
      a := Round(ox + UnitX * x);
      b := Round(oy - UnitY * y);
      MoveTo(a,b);
      LineTo(a,b);
    End;
     
    Procedure Axes;
    Var
      px, py : Real;
    Begin
      SetColor(2);
      px := -1;
      py := -0.1;
      repeat
        px := px + h;
        py := py + h;
        Point(px,0);
        Point(0,py);
      until px > 100;
    End;
     
    Procedure Tics;
    Var
      j : Integer;
      tx, ty : Real;
    Begin
      SetColor(2);
      for j := 0 to 10 do
        begin
          tx := 0;
          ty := 0;
          repeat
            tx := tx + h;
            Point(10 * j,tx);
            ty := ty + h;
            Point(ty,0.1 * j);
          until tx > 0.05;
        end;
    End;
     
    Procedure Fond;
    Var
      kx : Integer;
    Begin
      SetColor(15);
      kx := 0;
      repeat
        kx := kx + 1;
        MoveTo(kx,0);
        LineTo(kx,2000);
      until kx > 5000;
    End;
     
    Procedure Trace (xa, ya, xn, yn : Real);
    Var
      a, b : Integer;
    Begin
      a := Round(ox + UnitX * xa);
      b := Round(oy - UnitY * ya);
      MoveTo(a,b);
      a := Round(ox + UnitX * xn);
      b := Round(oy - UnitY * yn);
      LineTo(a,b);
    End;
     
     
    Begin
      GraphPilote:= Detect;
      InitGraph(GraphPilote,GraphMode,'');
      repeat
        Fond;
        Axes;
        Tics;
        Write('   Entrer un pas de temps dt  =  ');
        ReadLn(dt);
        Write(' Entrer un Tmax  =  ');
        ReadLn(Tmax);
        Write('Entrer une couleur pour la courbe ');
        ReadLn(i);
        SetColor(i);
        {ici commence le trace de la recurrence}
        a := 1;
        ya := 1;
        t := 0;
        repeat
          Xn := Xa + dt * (a * Xa - p * Xa * Ya);
          Yn := Ya + dt * (c * p * Xa * Ya - m * ya);
          Xa := Xn;
          Ya := Yn;
          t := t + dt;
        until t > 10;
        Write(' Voulez-vous continuez ? oui  =  1, non  =  2 ');
        ReadLn(i);
      until i = 2;
      WriteLn;
      ReadLn;
    End.
    Le compilateur donne certains warnings significatifs : pas mal de variables ne sont pas initialisées avant d'être utilisées. Un simple exemple : dans les procédure Axes et Tics, h n'a jamais été initialisé.

    Une chose importante : une procédure ou fonction ne devrait pas travailler directement avec des variables globales : il faut lui passer tout ce dont elle a besoin comme paramètres.

    Pour terminer, tu as écrit une procédure Trace mais tu ne l'utilises nulle part.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  9. #9
    Membre Expert
    Avatar de krachik
    Inscrit en
    Décembre 2004
    Messages
    1 964
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 964
    Par défaut
    Voila du code bien indenté comme on les aime

    Ton problème vient surtout du fait que tu melanges les 2 modes(graphique & texte), pour ecrire en mode graphique il faut utiliser outtext() plutot que writeln etc...

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/09/2014, 15h32
  2. Problème dans le déroulement de mon programme
    Par clairetj dans le forum Débuter
    Réponses: 2
    Dernier message: 13/09/2013, 11h53
  3. Problème dans mon programme
    Par zesister dans le forum Scheme
    Réponses: 17
    Dernier message: 02/05/2008, 02h39
  4. Problème dans un petit programme !
    Par Cody082 dans le forum Langage
    Réponses: 11
    Dernier message: 17/10/2007, 08h20
  5. problème dans un programme
    Par mederic dans le forum C
    Réponses: 5
    Dernier message: 13/05/2006, 16h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo