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

Turbo Pascal Discussion :

Afficher les lettres les unes après les autres


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 30
    Par défaut Afficher les lettres les unes après les autres
    Bonjour

    J'aimerais afficher une phrase de manière séquentielle.

    Exemple : soit le mot toiture.
    J'aimerais afficher d'abord t puis o puis i... jusqu'à e chacun à son tour.
    J'ai essayé avec delay mais ça a affiché tout d'une fois.
    Merci de m'aider

  2. #2
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    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
     
     
    // variables de sauvegarde 
    var
      _WS : string; // le mot ou la phrase
      _WL : integer; // la longueur de la chaine
     
    // sauvegarde une chaine
    function registerWord(S: string): integer;
    begin
      _WS := S;
      _WL := Length(S);
      result := _WL;
    end;
     
    // renvois un caractère de _WS
    function stepWord(i : integer): char;
    begin
      if (i >= 1) and (i <= _WL) then
        result := _WS[i];
      else
        result := #0;
    end;
     
     
    // vitesse d'affichage en milliseconde
    const
      Speed = 500;
     
    // etape et taille maximale
    var 
      Step, maxLength : integer;
     
    // début
    begin
      // on commence à 1
      Step := 1;
      // on prépare un mot et on récupère la taille maximale
      maxLength := registerWord('Toiture');
     
      // une boucle, tant que Step est inférieur à taille max
      while Step <= MaxLength do
      begin 
        // affiche la suite du mot
        write( stepWord(Step) );
        // incremente Step
        inc(Step);
        // fait une pause
        delay(Speed);
      end;
     
      // attend qu'on appuis sur une touche pour quitter
      readln;
    end.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  3. #3
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Un code un peu plus simple et peut-être plus compréhensible :
    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
     
    Uses crt;
    Var 
        S:String; {Chaine à afficher}
        i:Integer; {Compteur pour la boucle FOR}
    Begin
        TextAttr:=blue Shl 4 +14; ClrScr; {TP pour DOS uniquement : Texte jaune sur Fond bleu. Ce formatage du texte n'est pas obligatoire}
    {On peut donc s'en passer}
        Write('Donner une chaine : ');Readln(S);
        Writeln;
        For i:=1 to length(s) do
          begin
            Write(S[i]);
            Delay(400);
          end;
        Readln;
    End.
    Ce code marche à coup sûr par contre celui proposé par Dr.Who contient des incohérences de types. En plus une fonction doit retourner un résultat, ce qui n'a pas été fait.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  4. #4
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    salut.
    le code fourni par l_autodidacte peut être exécuter sous Turbo Pascal 7 pour DOS ou bien sous FreePascal ou Lazarus

  5. #5
    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

    Citation Envoyé par l_autodidacte Voir le message
    Un code un peu plus simple et peut-être plus compréhensible :

    Ce code marche à coup sûr par contre celui proposé par Dr.Who contient des incohérences de types. En plus une fonction doit retourner un résultat, ce qui n'a pas été fait.
    Moi je dirai la fonction renvoie bien un résultat parce qu'il y a un result qui récupère la résultat à retourner.
    Maintenant il est vrai qu'on est dans la section Turbo Pascal et le code de Dr.Who ne compilerait pas dessus mais compilerait sous Free Pascal par exemple en apportant quelques changements (ajout de crt, mode de compilation) (bref c'est du code pour delphi).

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Moi je dirai la fonction renvoie bien un résultat
    Une chose et certaine, c'est qu'une fonction qui retourne un résultat(du moins c'est ce que j'ai appris à faire sous TP et BP) doit avoir une structure telle que la suivante(et là je sais que je n'apprends rien à personne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Function MaFonction(Param1:<type>;Param2:<Type>...) :Type;
    VAR
        var1,var2,[....]:type;
    Begin
       ...........................
       ...........................
     MaFonction:=....(résultat ou Variable de retour);
    End;
    Le fait d'écrire : n'implique rien pour la fonction s'il ne lui a pas été affecté.

    Voici le code intégral de la fonction en question auquel manque l'affectation de result à la fonction StepWord
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function stepWord(i : integer): char;
    begin
      if (i >= 1) and (i <= _WL) then
        result := _WS[i];
      else
        result := #0;
    end;
    Tu es d'accord avec moi qu'avant le "End;" final de la fonction, on devait mettre : StepWord:=result;

    Que le code compile ou non sous un autre EDI, pour moi(peut-être un peu borné dira-t-on), il a été invoqué sous la rubrique TP et par conséquent, la réponse(ou commentaire) devrait en principe s'y rattacher.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    Voici le code intégral de la fonction en question auquel manque l'affectation de result à la fonction StepWord
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function stepWord(i : integer): char;
    begin
      if (i >= 1) and (i <= _WL) then
        result := _WS[i];
      else
        result := #0;
    end;
    Tu es d'accord avec moi qu'avant le "End;" final de la fonction, on devait mettre : StepWord:=result;

    Que le code compile ou non sous un autre EDI, pour moi(peut-être un peu borné dira-t-on), il a été invoqué sous la rubrique TP et par conséquent, la réponse(ou commentaire) devrait en principe s'y rattacher.
    Si tu as bien remarque, result n'est pas une variable declarée dans la fonction. Comme la dit krachik, le code passe bien sous fpc par exemple mais pas sous tp.
    Tu as tout a fait raison qu'on doit poster un code qui marche sous turbo pascal. Mais c'est un truc qui arrive souvent quand on travaille avec plusieurs langage/compilateur.

Discussions similaires

  1. Afficher deux courbes les unes après les autres
    Par gmachi10 dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 09/07/2008, 09h49
  2. Réponses: 9
    Dernier message: 24/01/2008, 12h53
  3. Réponses: 32
    Dernier message: 28/08/2007, 19h57
  4. [Débutant] Charger et afficher des images les unes apres les autres
    Par kharon dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 29/03/2007, 08h51
  5. Ouvrir plusieurs boites de dialogues les unes après les autres
    Par troumad dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 25/02/2007, 11h55

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