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

Contribuez Pascal Discussion :

Exemples de code pour Algebrus XPascal


Sujet :

Contribuez Pascal

  1. #1
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    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 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut Exemples de code pour Algebrus XPascal
    Je me propose de réunir ici quelques exemples de code pour Algebrus XPascal. Si vous voulez contribuer, n'hésitez pas !

    Qu'est-ce qu'Algebrus ? Pour résumer, je dirais que c'est une sorte de calculatrice programmable en Pascal. Cette calculatrice a des fonctions graphiques. Elle peut lire et écrire des fichiers.

    Quant au langage XPascal, pour ce que j'en ai vu, il ajoute au Pascal classique 1° des fonctions d'affichage amélioré 2° des types de variable, comme le type Vector.

    Le programme suivant calcule des valeurs approchées de racine de 2 jusqu'à ce que la meilleure approximation soit atteinte. Les résultats sont ajoutés au fur et à mesure dans un vecteur.

    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
     
    // Algebrus XPascal
     
    program racine_de_2;
     
    function U(a, n: Integer): Real;
    // Approximations de la racine carrée de a
    // "n" est le nombre d'itérations
    var
      i: Integer;
      temp: Real;
    begin
      temp := a;
      for i:= 1 to n do
      begin
        temp := 0.5 * (temp + a / temp);
      end;
      result := temp;
    end;
     
    var
      resultat, precedent: Real;
      i                  : Integer;
      stop               : Boolean;
      vecteur            : Vector;
     
    begin
      precedent := 0;
      i := 0;
      stop := False;
      SetLength(vecteur, 0);
      //
      repeat
        resultat := U(2, i);// racine de 2
        if resultat = precedent then
          begin
            stop := True;
          end
        else
          begin
            vecteur := Append(vecteur, resultat);
            precedent := resultat;
            i := i + 1;
          end;
      until stop;
      //
      Write(vecteur);
    end.
    Ce qui donne l'affichage suivant :

    {2, 1.5, 1.4166667, 1.4142157, 1.4142136, 1.4142136}
    On peut remplacer write() par ShowVec() pour un affichage en colonne avec certaines options.

    Un bémol toutefois. Comme Simicro l'a déjà signalé dans sa présentation, le produit n'est plus mis à jour et il a quelques bugs. Je me suis enregistré pour pouvoir essayer toutes les fonctionnalités : certaines sont restées bloquées malgré la clé. Ce n'était pas une très bonne idée, apparemment.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 930
    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 930
    Points : 59 398
    Points
    59 398
    Billets dans le blog
    2
    Par défaut
    Très bonne initiative !

    La dernière version date déjà de 2006 et je pense que la boîte (Astrise Corporation) elle-même a dû couler il y a quelques années, puisque les dernières news sur le site datent également de 2006.
    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]

  3. #3
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    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 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut Procédure ayant une fonction pour argument
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Exemple Algebrus XPascal
     
    program demoPlot;
     
    function f ( x : real ) : real;
    begin
      result := abs ( sin ( x ) );
    end;
     
    begin
      plot ( f, {0, 2 * Pi} );
    end.
    La procédure plot() admet comme argument une fonction. Etonnant, non ?

    P.-S. En cherchant des informations sur le XPascal, j'ai l'impression qu'il y a plusieurs langages ou dialectes qui portent ou ont porté le même nom. J'ai ainsi trouvé des choses sur un langage de script qui aurait un rapport avec le XML, mais je n'ai pas compris lequel.

    Savez-vous quelque chose sur cet autre (?) XPascal qui figure sur la liste des types MIME ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  4. #4
    Membre habitué Avatar de Simicro
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 136
    Points : 196
    Points
    196
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    La procédure plot() admet comme argument une fonction. Etonnant, non ?
    Etonnant et en même temps naturel : "dessiner la courbe de la fonction f(x)", donc bien fait
    Tony
    Hobbyiste débutant Delphi 7

  5. #5
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    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 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Simicro Voir le message
    Etonnant et en même temps naturel : "dessiner la courbe de la fonction f(x)", donc bien fait
    Si j'avais l'honneur de rencontrer le docteur Apostolyuk, je lui demanderais volontiers comment il a écrit cette procédure.

    En attendant je viens de télécharger l'un de ses ouvrages, qui s'intitule Excitation of Primary Oscillations in Micromechanical Vibratory Gyroscopes.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  6. #6
    Membre habitué Avatar de Simicro
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2012
    Messages : 136
    Points : 196
    Points
    196
    Par défaut
    Dis Roland, je trouve que tu as une sacrée soif d'apprendre
    Tony
    Hobbyiste débutant Delphi 7

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    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 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Pour le livre, je te rassure, je n'ai pas l'intention de le lire, encore que le gyroscope soit un objet assez fascinant.

    Sinon je suis curieux de tout ce qui touche au Pascal d'autant que je m'y suis mis assez récemment et que j'ai pas mal de retard à rattraper.

    Pour revenir au code en question, je me demande 1° comment on fait pour qu'une procédure accepte un nombre variable d'arguments 2° comment une fonction peut-elle être traitée comme une variable. Je n'en ai pas la moindre idée.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  8. #8
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Citation Envoyé par Roland Chastain
    Pour revenir au code en question, je me demande 1° comment on fait pour qu'une procédure accepte un nombre variable d'arguments 2° comment une fonction peut-elle être traitée comme une variable. Je n'en ai pas la moindre idée.
    En fait, tu peux définir un type comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    type
      TFonctionMath = function(X : double):double;
    et faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure Plot (f: TFonctionMath);
    var i : integer;
         X, Res : Double;
    begin
      for i:=-10 to 10 do
      begin
        X:=i;
        Res:=f(X);
        ...
      end;
    end;
    J’espère ne pas m’être trompé, je ne peux pas tester mon code ...

    En fait, tu donnes a ta procédure un pointeur sur ta fonction (si je me trompe pas).

    Tout ceci peut être fait en Pascal (pas besoin de XPascal). Tu serais étonné de voir tout ce qu'on peut faire ...

  9. #9
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    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 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Merci, mick605 !

    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
    program Exemple;
     
    {$APPTYPE CONSOLE}
     
    type
      TFonctionMath = function(X: double): double;
     
    function maFonction(X: double): double;
    begin
      result := X / 2;
    end;
     
    procedure Plot(f: TFonctionMath);
    var
      i: integer;
    begin
      for i := -10 to 10 do
      begin
        writeln(f(i));
      end;
    end;
     
    begin
      Plot(maFonction);
      readln;
    end.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  10. #10
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 930
    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 930
    Points : 59 398
    Points
    59 398
    Billets dans le blog
    2
    Par défaut
    Bonjour,
    Citation Envoyé par Roland Chastain Voir le message
    1° comment on fait pour qu'une procédure accepte un nombre variable d'arguments
    Ce n'est pas évident en Pascal ; il faut avoir recours à une astuce de contournement comme, par exemple : http://alcatiz.developpez.com/tutoriel/thunking/#LIV.
    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]

  11. #11
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 062
    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 062
    Points : 15 353
    Points
    15 353
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Alcatîz Voir le message
    Ce n'est pas évident en Pascal ; il faut avoir recours à une astuce de contournement comme, par exemple : http://alcatiz.developpez.com/tutoriel/thunking/#LIV.
    Merci pour ta réponse, Alcatîz.

    Je crois que j'ai encore quelques progrès à faire avant de pouvoir employer ce genre de technique, mais il me semble avoir compris le principe.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/04/2010, 16h48
  2. Exemple de code pour créer un menu accordeon
    Par stefsas dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/04/2010, 09h58
  3. Réponses: 1
    Dernier message: 03/10/2008, 22h34
  4. Exemple de code pour appeler un Web Service
    Par ericw78 dans le forum Wildfly/JBoss
    Réponses: 6
    Dernier message: 21/05/2008, 20h58
  5. Réponses: 1
    Dernier message: 30/08/2006, 19h26

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