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

Langage Pascal Discussion :

Où placer une procédure dans la structure de mon programme


Sujet :

Langage Pascal

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut Où placer une procédure dans la structure de mon programme
    Bonjour , j'ai envie d'écrire un programme qui fait ceci :

    si je tape par exemple 15 au clavier , il m'affiche les valeurs de 1 à 15 , si je tape 44 au clavier il m'affiche les valeurs de 1 à 44 , bref quelquechose de simple , on lit une valeur numérique au clavier et on affiche les valeurs de 1 à valeur tapée .

    La structure du programme est donc la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    program test;
     
    var
    x: REAL;
     
    begin
    readln(x);
    MaProcedure;
     
    end.
    ALors ma 1ère question est : où je dois mettre le code de ma procédure , dois je la déclarer quelquepart dans le programme?

    merci de vos éclairssissements .

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Juste avant le begin du corps principal de ton programme.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut
    ok parfait , alors vois tu j'ai déclaré dans mon programme une variable x qui je vais taper au clavier , et ma procédure va prendre en compte cette variable x et écrire les nombres de 0 à x , ma seconde question est la suivante :

    ma procédure doit prendre x en paramètre je suppose ? si oui comment mettre x en paramètre dans le nom de la procédure ?

    par exemple je l'écris comme çà :

    MaProcédure(var: x) ?

    c'est surtout sur l'écriture du paramètre de la procédure que j'ai des difficultés en fait...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    633
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 633
    Points : 711
    Points
    711
    Par défaut
    Bonjour,

    Au vu de tes différentes questions, qui concernent toutes les bases du langage, il est plus que temps que tu lises sérieusement un cours/bouquin sur le pascal.
    Compilation sans erreur ne signifie pas programme sans erreur.
    L'indentation n'a pas été imaginée pour faire beau, mais pour faciliter la lecture des programmes.

  5. #5
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut
    je connais mon cours mais c'est pas parce qu'on connait son cours qu'on sait faire ce que l'on veut...

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut
    je sais déjà à quoi ressemble mon programme il ne me reste plus que la procédure à écrire , j'ai trouvé l'algo , alors voici le programme est l'algo :

    1.programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    program test;
     
    var
    x: REAL;//variable qu'on va taper au clavier
     
    //code de ma procédure ici que j'ai pas encore mis
     
    begin
    readln(x);
    MaProcedure;
     
    end
    et voici l'algorithme de ma procédure que j'ai du mal à traduire en pascal :

    Si x = valeur tapée au clavier
    j'écris x
    je décrémente x

    ce que je ne sais pas coder c'est "Si x = valeur tapée au clavier" , c'est tout...

  7. #7
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut
    voilà mon code final mais il ne marche pas , j'ai volontairement utilisé une procédure pour me familiariser avec :

    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
     
    program test;
     
    var
    x: REAL;//variable qu'on va taper au clavier
     
    Procedure MaProcedure
    begin
    if(y = x)
    write(y);
    y := y-1
    end;
     
    begin
    readln(x);
    MaProcedure;
     
    end.

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut
    çà fait des heures que je suis dessus donc ya aucune mauvaise volonté , si quelqu'un pouvait m'aider autrement qu'en me disant de lire mon cours çà m'aiderait mieux

  9. #9
    Membre confirmé Avatar de Haywire
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2006
    Messages : 462
    Points : 573
    Points
    573
    Par défaut
    Salut,

    c'est normal que ça ne marche pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Procedure MaProcedure
    begin
    if(y = x) // tu ne declare nulle part de variable y...
    write(y); // mais meme si tu l'avais declaré, tu l'ecris
    y := y-1 // puis tu diminues sa valeur de 1, et puis ???
    end;
    si on entrait 50, ca afficherait 50 puis ca mettrait y a 49 et puis c'est tout.

    voici ce qu'il faut faire:

    pour i de 1 à x faire
    ecrire i;

    et c'est tout !
    Si tu veux les ecrire en partant du nombre entré tu fais:
    pour i de x à 1 faire
    ecrire i;

    voici comment inserer ta procedure dans ton programme pascal, comme la version pascal est de la pure traduction de l'algo je te l'ai deja traduite:
    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
     
    program machin;
     
    procedure afficherNombres (const x: integer);
    var i:integer;
    begin
       for i:= 1 to x do
          writeln(x);
    end;
     
    var x:integer;
     
    begin
       readln(x);
       afficherNombres(x);
    end;
    end.
    Développeur écolo, je suis pour le développement durable.

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut
    merci beaucoup , mais ton programme ne fait pas ce que je veux lol , si je tape 16 il m'affiche 16 fois 16 , moi je veux qu'il m'affiche 16 , 15 , 14...jusque 0

  11. #11
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut
    j'ai légèrement modifié ( un iota ton programme ) et là si je tape n'importe quel nombre et que je tape sur entrée il revient au prompt c'est curieux :

    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
    program machin;
     
    procedure afficherNombres (const x: integer);
    var i:integer;
    begin
       for i:= x to 1 do
          writeln(x);
    end;
     
    var x:integer;
     
    begin
       readln(x);
       afficherNombres(x);
    end.

  12. #12
    Membre confirmé Avatar de Haywire
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2006
    Messages : 462
    Points : 573
    Points
    573
    Par défaut
    oups excuse moi j'ai fais une erreur dans mon code, j'ai mis writeln(x) au lieu de writeln(i). C'est pour ça qu'il affiche toujours la meme chose.

    Bon si tu veux que les chiffres s'affiche du plus grand au plus petit il faut mettre "downto" au lieu de "to" dans le for.

    Et pour eviter que la fenetre se ferme apres execution, ajouter un readln a la fin.

    Tout ça corrigé donne donc ceci:

    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
     
    program machin;
     
    procedure afficherNombres (const x: integer);
    var i:integer;
    begin
       for i:= x downto 0 do
          writeln(i);
    end;
     
    var x:integer;
     
    begin
       readln(x);
       afficherNombres(x);
       readln;
    end;
    end.
    Développeur écolo, je suis pour le développement durable.

  13. #13
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut
    Le programme marche parfaitement et j'ai globalement compris sa structure , je reposerai une petite question demain sur le code si çà t'ennuit pas . J'ai un cours mais il explique rien dedans donc je galère un peu , merci bcp à demain .

  14. #14
    Membre confirmé Avatar de Haywire
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2006
    Messages : 462
    Points : 573
    Points
    573
    Par défaut
    Au fait je n'avais pas executé le programme et je viens de me rendre compte que le "end;" avant le "end." doit être enlevé.

    Maintenant j'ai vu sur le forum qu'au depart tu voulais afficher l'alphabet.
    Tu peux alors modifier le programme de cette façon:

    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
     
    program machin;
     
    procedure afficherAlpha;
    var i: char;
    begin
       for i:= 'a' to 'z' do
          writeln(i);
    end;
     
    var x:integer;
     
    begin
       afficherAlpha;
       readln;
    end.
    Développeur écolo, je suis pour le développement durable.

  15. #15
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut
    Bonjour , alors voici ma petite question :

    dans le programme qui m'affiche les nombres , tu déclares la procédure comme çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure afficherNombres (const x: integer)
    SI j'ai bien compris elle a qu'un seul paramètre , et ce paramètre est en fait la variable que la procédure utilise , mais tu l'as déclaré comme une constante j'ai l'impression , "const x" , au lieu de dire "var x" , est ce normal ?

    merci

  16. #16
    Membre confirmé Avatar de Haywire
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2006
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2006
    Messages : 462
    Points : 573
    Points
    573
    Par défaut
    salut,

    j'ai mis const pour empecher qu'on modifie sa valeur dans le corps de la procedure. Ici comme il n'y a que 2 lignes de code ce n'est pas très important mais c'est toujours bien de prendre l'habitude de mettre const quand on ne veut pas que la valeur de la variable puisse être modifié dans la procédure.
    Développeur écolo, je suis pour le développement durable.

  17. #17
    Débutant
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Points : 107
    Points
    107
    Par défaut
    merci pour toutes tes précisions .

  18. #18
    Candidat au Club
    Inscrit en
    Mai 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut re
    slt quesque vs voulez dire par le terme code!!!!!!!!!!!!

  19. #19
    Membre actif Avatar de Ultima
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 223
    Points : 261
    Points
    261
    Par défaut
    Citation Envoyé par inessou
    slt quesque vs voulez dire par le terme code!!!!!!!!!!!!
    Bonjour,
    Code, c’est le diminutif de code source,
    Le code source est ce que tu écris dans ton éditeur de texte.
    Par abus de langage, on dit aussi programme. En réalité le programme est ce qu’on obtient après compilation du code source.
    Deux lignes de code = deux lignes d'un texte qui pourrait être interprété par le compilateur ou l’interpréteur de code.

Discussions similaires

  1. Placer une valeur dans un textbox
    Par ThunderBib dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/05/2006, 22h34
  2. Placer une valeur dans un textbox
    Par ThunderBib dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/05/2006, 20h59
  3. stocker une procédure dans une string
    Par Coug1234 dans le forum Langage
    Réponses: 6
    Dernier message: 26/04/2006, 21h46
  4. Placer une image dans un dossier où qu'elle soit
    Par st0nky dans le forum Langage
    Réponses: 2
    Dernier message: 04/12/2005, 21h22
  5. Surcharge d'une procédure dans l'instance d'une frame
    Par damien.yep dans le forum Composants VCL
    Réponses: 3
    Dernier message: 14/09/2005, 15h28

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