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

Flash Pascal Discussion :

Apprendre le Pascal avec FlashPascal


Sujet :

Flash Pascal

  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut Apprendre le Pascal avec FlashPascal
    Bonjour !

    Voici une suite de petits exemples dans lesquels j'ai essayé de faire le tour des types de données et des fonctions de FlashPascal (sans l'unité Flash8).

    Array1.fpr
    Binaire1.fpr
    Booleen1.fpr
    Char1.fpr
    Class1.fpr
    Class2.fpr
    Nombres1.fpr
    Record1.fpr
    Set1.fpr
    Set2.fpr
    Set3.fpr
    Set4.fpr
    Set5.fpr
    SortieTexte.fpr
    String1.fpr
    TableauChaines1.fpr
    Soit dit en passant, ce serait bien d'avoir un manuel, même qui tienne sur une page comme celui de Flash 0.8, avec la liste des types, des opérateurs, des fonctions...
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  2. #2
    Membre chevronné
    Avatar de Archimède
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2005
    Messages
    1 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 644
    Points : 1 975
    Points
    1 975
    Par défaut
    Merci pour ton travail, je n'ai pas encore regardé mais c'est toujours utile

    anthony

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    oui c'est bien sympathique tout ça et ça permet de tester rapidement le code.

    je remarque aussi qu'il manque la possibilité de déclarer un array[TJour] of string...va falloir que je prévoie ça
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Merci pour vos encouragements.

    Citation Envoyé par Paul TOTH Voir le message
    je remarque aussi qu'il manque la possibilité de déclarer un array[TJour] of string...va falloir que je prévoie ça
    C'est vrai que ce serait joli. Une autre chose à laquelle j'ai pensé, c'est la possibilité de déclarer des constantes dans des procédures.

    En attendant, voici un nouvel exercice sur le type chaîne (mais avec Flash8 cette fois).

    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
     
    program Accents;
     
    uses Flash8;
     
    {$FRAME_WIDTH 320}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND 0}
     
    ////////////////////////////////////////////////////////////////////////////////
    const
      LARGEUR = 320;
      HAUTEUR = 200;
      VER = 'Compilateur FlashPascal 2 v13.04.29'#13;
     
    var
      t: TextField;
      f: TextFormat;
      s: String;
    ////////////////////////////////////////////////////////////////////////////////
     
    const
      AvecAccents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
      SansAccents = 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn';
     
    function EnleveAccents(aChaine: string): string;
    var
      i, j: Integer;
    begin
      Result := '';
      for i := 1 to Length(aChaine) do
      begin
        j := Pos(aChaine[i], AvecAccents);
        if j > 0 then
          Result := Result + SansAccents[j]
        else
          Result := Result + aChaine[i];
      end;
    end;
     
    begin
    ////////////////////////////////////////////////////////////////////////////////
      f := TextFormat.Create('Tahoma', 16);
      f.color := clWhite;
      f.leftMargin := 5;
      t := TextField.Create(_root, 't', 0, 0, 0, LARGEUR, HAUTEUR);
      t.SetNewTextFormat(f);
    ////////////////////////////////////////////////////////////////////////////////
     
      s := EnleveAccents("aàeéè");
     
    ////////////////////////////////////////////////////////////////////////////////
      t.text := VER + s;
      f.size := 12;
      f.color := clLime;
      t.SetTextFormat(0, Length(VER)-1, f);
    ////////////////////////////////////////////////////////////////////////////////
    end.
    De ne pas pouvoir écrire

    ça manque un peu (même si ça n'empêche pas de faire ce qu'on veut d'une autre façon).
    Images attachées Images attachées  
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    c'est pas faux, par contre ça va être une méchante rustine car les chaines de ActionScript ne sont pas modifiables...donc s[i] := 'a' sera compilé comme s := copy(s, 1, i - 1) + 'a' + copy(s, i + 1 , Length(s) - i) tout un programme
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    ça va être une méchante rustine car les chaines de ActionScript ne sont pas modifiables...
    D'accord, je vois maintenant.

    On peut toujours utiliser des tableaux de caractères, non ?

    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
    program ArrayOfChar1;
     
    uses Flash8;
     
    {$FRAME_WIDTH 320}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND 0}
     
    ////////////////////////////////////////////////////////////////////////////////
    const
      LARGEUR = 320;
      HAUTEUR = 200;
      VER = 'Compilateur FlashPascal 2 v13.04.29'#13;
     
    var
      t: TextField;
      f: TextFormat;
      s: string;
    ////////////////////////////////////////////////////////////////////////////////
     
    type
      shortString = array[0..255]of char;
     
    function StrToShort(aString: string): shortString;
    var
      i, l: integer;
    begin
      l := Length(aString) mod 256;
      Result[0] := Chr(l);
      for i := 1 to l do
        Result[i] := aString[i];
    end;
     
    function ShortToStr(aShort: shortString): string;
    var i: integer;
    begin
      Result := '';
      for i := 1 to Ord(aShort[0]) do
        Result := result + aShort[i];
    end;
     
    begin
    ////////////////////////////////////////////////////////////////////////////////
      f := TextFormat.Create('Tahoma', 16);
      f.color := clWhite;
      f.leftMargin := 5;
      t := TextField.Create(_root, 't', 0, 0, 0, LARGEUR, HAUTEUR);
      t.SetNewTextFormat(f);
    ////////////////////////////////////////////////////////////////////////////////
     
      s := ShortToStr( StrToShort( 'ABCD' ) );
     
    ////////////////////////////////////////////////////////////////////////////////
      t.text := VER + s;
      f.size := 12;
      f.color := clLime;
      t.SetTextFormat(0, Length(VER)-1, f);
    ////////////////////////////////////////////////////////////////////////////////
    end.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #7
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    je viens de publier la version 13.05.04 qui permet de modifier un caractère dans une chaîne
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  8. #8
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Parfait !

    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
    program Accents2;
     
    uses Flash8;
     
    {$FRAME_WIDTH 320}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND 0}
     
    ////////////////////////////////////////////////////////////////////////////////
    const
      LARGEUR = 320;
      HAUTEUR = 200;
      VER = 'Compilateur FlashPascal 2 v13.05.04'#13;
     
    var
      t: TextField;
      f: TextFormat;
      s: string;
    ////////////////////////////////////////////////////////////////////////////////
     
    const
      AvecAccents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
      SansAccents = 'AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn';
     
    function EnleveAccents(aChaine: string): string;
    var
      i, j: Integer;
    begin
      Result := aChaine;
      for i := 1 to Length(aChaine) do
      begin
        j := Pos(aChaine[i], AvecAccents);
        if j > 0 then
          Result[i] := SansAccents[j];
      end;
    end;
     
    begin
    ////////////////////////////////////////////////////////////////////////////////
      f := TextFormat.Create('Tahoma', 16);
      f.color := clWhite;
      f.leftMargin := 5;
      t := TextField.Create(_root, 't', 0, 0, 0, LARGEUR, HAUTEUR);
      t.SetNewTextFormat(f);
    ////////////////////////////////////////////////////////////////////////////////
     
      s := EnleveAccents("aàeéè");
     
    ////////////////////////////////////////////////////////////////////////////////
      t.text := VER + s;
      f.size := 12;
      f.color := clLime;
      t.SetTextFormat(0, Length(VER)-1, f);
    ////////////////////////////////////////////////////////////////////////////////
    end.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  9. #9
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 072
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Pour prolonger ma série d'exemples, je me suis amusé avec un problème apparu ces jours-ci dans le forum.

    Vous remarquerez qu'on peut faire défiler les résultats avec la molette ou la roulette (je ne sais comment il faut dire) de la souris.

    La première version utilise un tableau de booléens.

    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
    (* Problème de Flavius Josèphe *)
    (* http://irem.u-strasbg.fr/php/articles/109_Lefort.pdf *)
     
    program Flavius1;
     
    uses Flash8;
     
    {$FRAME_WIDTH 320}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND 0}
     
    ////////////////////////////////////////////////////////////////////////////////
    const
      LARGEUR = 320;
      HAUTEUR = 200;
      VER = 'Compilateur FlashPascal 2 v13.05.04'#13;
     
    var
      t: TextField;
      f: TextFormat;
      s: string;
    ////////////////////////////////////////////////////////////////////////////////
     
    const
      n = 41;     // nombre de personnes
      k = 3;      // nombre fatal
     
    var
      i: integer; // ordre d'élimination de 1 à n
      j: integer; // rang  de 1 à n
      c: integer; // compteur de 1 à k
      v: array[1..n]of boolean; // vivants
     
    begin
    ////////////////////////////////////////////////////////////////////////////////
      f := TextFormat.Create('Tahoma', 16);
      f.color := clWhite;
      f.leftMargin := 5;
      t := TextField.Create(_root, 't', 0, 0, 0, LARGEUR, HAUTEUR);
      t.SetNewTextFormat(f);
    ////////////////////////////////////////////////////////////////////////////////
     
      for j := 1 to n do v[j] := True;
     
      i := 0;
      j := 0;
      c := 0;
     
      s := '';
     
      while i < n do
      begin
        Inc(j);
        if j > n then j := 1;
     
        if v[j] then
        begin
          Inc(c);
          if c > k then c := 1;
     
          if c = k then
          begin
            v[j] := False;
            Inc(i);
            s := s + 'Elimination ' + IntToStr(i) + ' rang ' + IntToStr(j) + Chr(13);
          end;
        end;
      end;
     
    ////////////////////////////////////////////////////////////////////////////////
      t.text := VER + s;
      f.size := 12;
      f.color := clLime;
      t.SetTextFormat(0, Length(VER)-1, f);
    ////////////////////////////////////////////////////////////////////////////////
    end.
    La seconde utilise une espèce de liste chaînée.

    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
    (* Problème de Flavius Josèphe *)
    (* http://irem.u-strasbg.fr/php/articles/109_Lefort.pdf *)
     
    program Flavius2;
     
    uses Flash8;
     
    {$FRAME_WIDTH 320}
    {$FRAME_HEIGHT 200}
    {$BACKGROUND 0}
     
    ////////////////////////////////////////////////////////////////////////////////
    const
      LARGEUR = 320;
      HAUTEUR = 200;
      VER = 'Compilateur FlashPascal 2 v13.05.04'#13;
     
    var
      t: TextField;
      f: TextFormat;
      s: string;
    ////////////////////////////////////////////////////////////////////////////////
     
    const
      n = 41;     // nombre de personnes
      k = 3;      // nombre fatal
     
    var
      i: integer; // ordre d'élimination de 1 à n
      j: integer; // rang  de 1 à n
      c: integer; // compteur de 1 à k
     
    const
      prec = 0;
      suiv = 1;
     
    var
      a: array[1..n, prec..suiv]of integer; // liste chaînée :)
     
    begin
    ////////////////////////////////////////////////////////////////////////////////
      f := TextFormat.Create('Tahoma', 16);
      f.color := clWhite;
      f.leftMargin := 5;
      t := TextField.Create(_root, 't', 0, 0, 0, LARGEUR, HAUTEUR);
      t.SetNewTextFormat(f);
    ////////////////////////////////////////////////////////////////////////////////
     
      a[1, prec] := n;
      a[1, suiv] := 2;
      a[n, prec] := n-1;
      a[n, suiv] := 1;
     
      for j := 2 to n-1 do
      begin
        a[j, prec] := j-1;
        a[j, suiv] := j+1;
      end;
     
      i := 0;
      j := 1;
      c := 0;
     
      s := '';
     
      while i < n do
      begin
     
        Inc(c);
        if c > k then c := 1;
     
        if c = k then
        begin
          a[a[j, prec], suiv] := a[j, suiv];
          a[a[j, suiv], prec] := a[j, prec];
          Inc(i);
          s := s + 'Elimination ' + IntToStr(i) + ' rang ' + IntToStr(j) + Chr(13);
        end;
     
        j := a[j, suiv];
      end;
     
    ////////////////////////////////////////////////////////////////////////////////
      t.text := VER + s;
      f.size := 12;
      f.color := clLime;
      t.SetTextFormat(0, Length(VER)-1, f);
    ////////////////////////////////////////////////////////////////////////////////
    end.
    J'ai fait une autre "liste chaînée", avec un tableau d'enregistrements. Cette version-là compile mais ne fonctionne pas correctement. Je la mets en pièce jointe pour le cas où cela vous intéresse.
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  10. #10
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    ah c'est vicieux, quand on fait un array of Integer, on affecte a[i] donc ça fonctionne, mais avec un array of record on accède directement aux membres du record, or celui-ci n'est pas initialisé. Il faut que j'ajoute cela dans le compilateur.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. [Lazarus] Quel bouquin pour apprendre le Pascal pour travailler avec Lazarus
    Par lkhalid dans le forum Lazarus
    Réponses: 2
    Dernier message: 04/09/2013, 19h39
  2. apprendre le Perl avec des exos
    Par Ohemeg dans le forum Langage
    Réponses: 1
    Dernier message: 25/05/2009, 12h35
  3. Apprendre le C# avec Mono
    Par Rapha222 dans le forum Mono
    Réponses: 18
    Dernier message: 04/08/2008, 23h41
  4. Comment apprendre a programmer avec l'API W32
    Par Claude URBAN dans le forum Windows
    Réponses: 8
    Dernier message: 22/01/2007, 23h40
  5. Problème unit CRT pour Faire du Pascal avec Delphi
    Par alexmorel dans le forum Débuter
    Réponses: 4
    Dernier message: 01/06/2004, 17h13

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