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

Autres IDE Pascal Discussion :

Problème avec les tableaux [Component Pascal]


Sujet :

Autres IDE Pascal

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Problème avec les tableaux
    Bonsoir à toutes et à tous,

    Etant nouveau dans les parages, je me permet de poster mon premier message, ainsi que mon premier problème.

    Je ne sais pas si je peux mettre mon code directement ou pas et j'espère être dans la bonne partie du forum ^^

    J'utilise dans mon école le programme BlackBox, je ne sais pas si quelqu'un connait. C'est pour le component pascal, donc voilà pourquoi je poste sur cette partie du forum ^^

    En faite j'ai une erreur dans mon programme mais je n'arrive pas à comprendre de quoi elle peut venir... J'ai essayé de me relire à maintes reprises mais rien à faire...

    Voici mon énoncé :
    Remplir un tableau de 10 entiers par des valeurs lues, puis afficher ce tableau.
    Il y a bien sur des données de test, mais je ne sais pas si c'est vraiment utile de vous les mettres...

    Données*de*test: (-1 0 1 2 3 10 12 13 20 30 )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    PROCEDURE TabOuvert (OUT tabouvert : ARRAY OF INTEGER);
    
    VAR
    valeur, compteur:INTEGER;
    BEGIN (*TabOuvert*)
    In.Int(valeur);
    compteur:=0;
    WHILE compteur<=LEN(tabouvert)-1 DO(*Tant que le compteur est plus petit que la longueur de mon tableau -1, remplacer la premiere valeur de mon tableau par la valeur*)
    tabouvert[compteur]:=valeur;
    In.Int(valeur);
    compteur:=compteur+1;
    END;
    END TabOuvert; PROCEDURE Exercice4*; PROCEDURE AffichageTab ();
    VAR
    valeur, indice : INTEGER;
    tabouvert:Ttab; (*Ttab étant un tableau de TYPE Ttab = ARRAY nMax OF INTEGER;*)
    BEGIN (*AffichageTab*)
    indice :=0;
    WHILE indice <=LEN (tabouvert)-1 DO(*Tant que l'indice est plus petit ou égal à la longueur du tableau -1, on remplace valeur par la première valeur de notre tableau et on affiche le texte en boucle)
    valeur :=tabouvert[indice];
    Out.String(" Indice ");
    Out.Int(indice,5);
    Out.String(" valeur ");
    Out.Int(valeur,5);
    Out.Ln;
    INC(indice);
    END;
    END AffichageTab; BEGIN (*Exercice4*)
    In.Open; Out.Open; StdLog.Clear;
    TabOuvert (tabouvert undeclared identifier); (*voici mon erreur, il me met que je n'ai pas déclaré ma variable(du moins je crois que c'est ca) alors que je penses que je l'ai bien déclaré... Es ce que mon code est catastrophique ?*)
    AffichageTab ();
    END Exercice4;
    Sa fait bcp de code désolé ^^

    En espérant que vous pourrez m'aider, merci d'avance

    [EDIT] Ouf désolé pour l'indentation j'arrange ca de suite ^^

  2. #2
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    Si j'en crois Wikipédia, il ne s'agit pas de Pascal mais d'un dialecte d'Oberon (?). In. et Out. n'existent pas en Pascal.

    En tout cas ce n'est pas du Pascal. Pose la question peut-être sur le forum Modula.

    Edit : ça m'apprendra à vérifier avant de poster... apparemment, il n'y a pas de forum Modula sur developpez.net. Je ne sais pas qui pourra aider.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Je crois qu'il s'agit belle et bien de langage pascal, mais orienté objet, en tout cas c'est ce qu'on nous dit en cours...

    Merci en tout cas je vais essayer de regarder par la bas ^^

    [EDIT] Qu'es ce que le forum Modula ? Merci d'avance.

  4. #4
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    J'ai dit une bêtise, apparemment il n'y a pas de forum Modula.

    Citation Envoyé par Ruben_Blanco Voir le message
    Je crois qu'il s'agit belle et bien de langage pascal, mais orienté objet, en tout cas c'est ce qu'on nous dit en cours...
    Certes, c'est un langage créé par Niklaus Wirth, créateur du Pascal, certes il a sans doute créé Oberon à partir du Pascal dans une démarche objet, le problème c'est que dans le même temps une société commerciale (Borland) créait son propre Pascal orienté objet, qui deviendra le langage Delphi. Quand on parle de Pascal Objet, on pense d'abord à la création de Borland, c'est dommage pour Wirth mais malheureusement c'est comme ça...

    Maintenant, si on considère Oberon comme une évolution du langage Pascal, comme le Pascal Objet "légitime", il faudrait dans ce cas ouvrir un sous-forum ici-même, mais je ne sais pas si nous avons des spécialistes. Tu pourrais le devenir !

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Hahahaha oui pourquoi pas, surtout que je pause une question haha, cela ne me dérangerais pas de mettre à disposition un tutoriel, mais lorsque j'aurais finis mes épreuves dans ce cas ^^

    Ainsi que proposer aux admins une section sur ce langage, mais il faut encore que je m'améliore, je pourrais demander l'aide d'amis à moi ^^

    Merci en tout cas je vais chercher sur le net pour d'autres forums ^^

  6. #6
    Responsable Pascal, Lazarus et Assembleur


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

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Les questions relatives à Component Pascal (dont BlackBox est l'IDE) ont parfaitement leur place sur le présent sous-forum "Autres IDE".

    Tout d'abord, il y a un problème de conception dans la boucle suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    In.Int(valeur);
     
        compteur:=0;
     
        WHILE compteur<=LEN(tabouvert)-1 DO
            tabouvert[compteur]:=valeur;
            In.Int(valeur);
            compteur:=compteur+1;
        END;
    Le dernier entier lu n'est pas stocké dans le tableau.

    Ensuite, l'identificateur TabOuvert est à la fois celui d'une procédure et du tableau renvoyé par cette procédure. Apparemment, ce genre de déclaration ne peut fonctionner que pour des pointeurs (cf. cette doc). Je ne sais pas si le renvoi de types structurés est autorisé en Component Pascal mais je verrais plutôt une déclaration dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE TabOuvert : ARRAY OF INTEGER;
    Je m'excuse d'avance si j'ai écrit des bêtises, je connais très peu cette variante du Pascal.
    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]

  7. #7
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Citation Envoyé par Ruben_Blanco
    J'utilise dans mon école le programme BlackBox, je ne sais pas si quelqu'un connait. C'est pour le component pascal, donc voilà pourquoi je poste sur cette partie du forum ^^
    Bien sûr que l'on connaît. Par contre, et contrairement on ce qu'on t'a affirmé en cours, il s'agit bien d'un descendant d'OBERON-2 enrichi avec quelques gadgets post design-patterns. En tout cas c'est clairement mieux que du Pascal , fût-il objet à la sauce Borland .

    Et bien entendu on va tout de même répondre à ta question.

    Tu as déclaré tabouvert comme un paramètre formel de ta procédure TabOuvert, ce que le compilateur attend lors de l'appel c'est un paramètre réel, or tu n'as pas déclaré tabouvert comme une donnée réelle, mais seulement comme une variable formel.

    Code Component Pascal : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    VAR tabouvert: ARRAY 10 OF INTEGER 
    BEGIN (*Exercice4*)
    
        In.Open; Out.Open; StdLog.Clear;
        TabOuvert (tabouvert);
        AffichageTab ();
    
    END Exercice4;
    (en bleu le code à ajouter)

    Citation Envoyé par Alcatîz
    Ensuite, l'identificateur TabOuvert est à la fois celui d'une procédure et du tableau renvoyé par cette procédure.
    Component-Pascal est sensible à la casse, TabOuvert et tabouvert ce sont deux identificateurs distincts.
    Code Ruben_Blanco : Sélectionner tout - Visualiser dans une fenêtre à part
    PROCEDURE TabOuvert (OUT tabouvert : ARRAY OF INTEGER);
    Ce passage de paramètre OUT est tout à fait correct (mais pour le reste du code: je ne l'ai pas relu).
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Merci bien à tous j'ai résolu mon problème ^^

    Donc comme on me l'a expliqué il suffisait en faite de déclarer mon tableau dans cette partie de mes procédures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PROCEDURE Exercice4*;
     VAR
      tabouvert:Ttab;
    et non pas comme je l'avais fait dans une procédure locale à ma procédure AffichageTab.

    Merci bien en tout cas à tous pour votre aide ^^, si vous avez d'autres commentaires à propos de mon code je n'ai pas peur des critiques, au contraire ça me permettra de m'améliorer...

    [EDIT] D'ailleurs quelqu'un serait-il comment faire fonctionner correctement les fonctions dans mes procédure ?

    Car j'ai essayé mais chaque fois dans mon code lorsque j'appelle ma procédure il me dit "incompatible assignment"

    J'ai compris qu'il fallait faire comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    PROCEDURE X(paramètres:INTEGER) : BOOLEAN; (*le type de la fonction*)
     
    Notre codes..........
     
    RETURN notre variable;
    Ensuite je n'ai pas compris comment appeler ma fonction justement, j'ai essayé ceci

    Out.Int(nom procedure( paramètres ) , 0 ); et c'est ici qu'il me dit incompatible assignment.

  9. #9
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Si, tu as bien compris comment appeler une fonction

    'incompatible assignment' c'est parce que ton paramètre réel est BOOLEAN alors que le paramètre formel est INTEGER.
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Ha d'accord d'accord, merci bien ^^

    C'est vrai que c'est pas très malin de vouloir mettre un boolean en integer et vise versa ^^

    Je dois mettre résolus je suppose ? Car si j'ai d'autres questions es ce qu'il serait mieux de refaire un nouveau message, si dans le faq je ne trouve pas mes réponse, ou je reprend celui ci ?

  11. #11
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Qio,

    Si tes nouvelles questions ne concernent pas le même sujet ==> nouveau, la règle étant (normalement) 1 question par sujet ouvert.
    Si les cons volaient, il ferait nuit à midi.

  12. #12
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Oui, tag et si tu as une autre question, même forum, même tag [Component Pascal], ça t'aide à attirer plus facilement les personnes susceptibles de pouvoir t'aider, et nous ça nous aide à créer des sous-forums, utiliser le bouton Recherche, rédiger des FAQs, etc...
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

  13. #13
    Membre éprouvé
    Avatar de CapJack
    Homme Profil pro
    Prof, développeur amateur vaguement éclairé...
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Prof, développeur amateur vaguement éclairé...
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 988
    Points
    988
    Par défaut
    En tout cas, j'ai dit une grosse bêtise : il y a bien des experts ici . Et, tant qu'on y est, il faudrait peut-être éclaircir la ligne éditoriale en précisant bien que la section n'est pas sectaire, et accepte Modula, Modula-2, Oberon et Oberon-2, non ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec les tableaux de char.
    Par Letinono dans le forum Débuter
    Réponses: 3
    Dernier message: 29/05/2008, 16h24
  2. problème avec les tableaux
    Par scary dans le forum Débuter
    Réponses: 2
    Dernier message: 29/03/2008, 23h44
  3. Problème avec les tableaux de pointeurs
    Par TheDoci dans le forum C
    Réponses: 2
    Dernier message: 07/01/2007, 13h04
  4. [Débutant] Problèmes avec les tableaux.
    Par Lwq dans le forum C++
    Réponses: 6
    Dernier message: 01/11/2005, 12h54

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