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

Pascal Discussion :

Triangle de Pascal


Sujet :

Pascal

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Août 2006
    Messages : 193
    Points : 85
    Points
    85
    Par défaut Triangle de Pascal
    Salut Tout le monde
    et bien voila un exercice que j'ai passé une demie journée a le faire
    Je veux savoir si vous avez quelques suggestions,conseils ou même de remarques ...
    J'éspere que le programme marche correctement et qu'il n'y a pas des exceptions ...
    Bon voila l'ennoncé de l'exercice
    Saisir le degré du polynome n appartient [2..10] Calculer et afficher le polynome Ainsi que sa derivé par rapport à a .
    EX : (a+b) puissance 2 sera egal à: a puissance 2 + 2ab + b puissance 2
    et les derivé de a sont : 2a et 2
    Voila ce que j'ai pu faire
    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
    program exercice ;
    uses wincrt ;
    type
        mat=array[0..10,1..11] of integer ;
     
    var
       m : mat ;
       n : integer ;
     
    procedure saisie (var n : integer  );
     begin
      repeat
       writeln('Saisir le degré du polynome :');
       readln(n);
      until n in [2..10] ; 
     end;
     
    procedure remplir (var m : mat ; n : integer );
    var
    l,c : integer ;
     
    begin
     m[0,1]:=1 ;
     m[1,1]:=1 ;
     m[1,2]:=1 ;
      for l:= 2 to n do
        begin
         m[l,1]:=1 ;
         m[l,l+1]:=1 ;
          for c:= 2 to l do
           begin
            m[l,c]:=m[l-1,c-1]+m[l-1,c] ;
           end; 
        end;
      end;
     
    procedure affiche (m : mat ; n : integer ) ;
    var
    x,y,l,c : integer ;
    begin
     x:=n ;
     y:=0 ;
     writeln('le polynome est :');
     
     for c:= 1 to n+1 do
      begin
       write(m[n,c]) ;
        if x <> 0 then
         write('a',x);
          if y <> 0 then
           write('b',y);
            if c <> n+1 then
             begin
              write('+');
              x:=x-1 ;
              y:=y+1 ;
             end;
      end; 
    end;
     
    procedure deriver  (m : mat ; n : integer ) ;
    var
    x,y,l,c : integer ;
     
    begin
     x:=n ;
     y:=0 ;
     writeln;
     write('les derivés de a sont :');
     for c:= 1 to n+1 do
      begin
        if x <> 0 then
         begin
         writeln ;
         write(m[n,c]*x,'*a*',(x-1));
         end;
          if c <> n+1 then
           begin
            x:=x-1 ;
           end;
      end; 
    end;
    begin
    saisie(n);
    remplir(m,n);
    affiche(m,n);
    deriver (m,n);
    end.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut plus joli
    Bonjour, juste une remarque
    pour rentrer dans ton programme il faudrait que je m'y plonge
    Perso je préfère les programmes commentés où les noms des variables sont expressifs où chaque procédure est précédée d'un chapeau ou d'un titre juste pour préparer la lecture ou pour inviter le lecteur à suivre la démarche du programmeur.
    D'entrée je n'aurais pas pris la mm structure de données que toi
    Alors rien ne me tente de me plonger dans ton programme
    A+

  3. #3
    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
    Bonjour,

    Je souscris à ce que dit hoelbihan

    Je ne suis pas allé bien loin pour lire ton code, car, presque dès le début, ça me gène de voir définie une procedure là ou une function serait nettement mieux adaptée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    procedure saisie (var n : integer  );
     begin
      repeat
       writeln('Saisir le degré du polynome :');
       readln(n);
      until n in [2..10] ; 
     end;
    serait avantageusement remplacée par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    { le nom de la fonction doit être suffisamment explicite }
     
    function saisieDegre : integer;
    var
      resultat : integer; { ici également, nom explicite }
    begin
      repeat
        { writeln remplacé par write : ainsi la lecture se fera sur la même ligne }
        write('Saisir le degré du polynome : ');
        readln(resultat);
      until resultat  in [2..10] ;
      saisieDegre :=  resultat;
    end;
    à quoi il faudrait ajouter des contrôles sur l'entrée (que se passera-t-il si tu entres des données qui ne correspondent pas à un entier, abe, par exemple ?), et le programme devrait prendre ne compte qu'on puisse entrer une valeur signifiant "je n'ai pas envie de continuer, sortir du progamme", 0 ou -1 seraient des valeurs appropriées.

    D'autre part, je n'ai pas lu la suite, mais pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    type
        mat=array[0..10,1..11] of integer ;
    indices dimension 1 = 0..10, et pour dimension 2 = 1..11.

    Je ne vois pas l'intérêt de distinguer ainsi. C'est peut-être justifié par l'usage que tu en fais ensuite, mais je n'irais pas voir tout de suite, car ça manque d'explications (par exemple : à quoi correspondent les 2 dimensions de ton tableau ?).

    Il ne faut pas hésiter à mettre des commentaires, même pour toi, et encore plus quand tu veux que d'autres programmeurs lisent/corrigent/utilisent ton code, ce qui est le cas, puisque tu nous demandes notre avis.
    Si les cons volaient, il ferait nuit à midi.

  4. #4
    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
    Bonjour,
    Excuse moi droggo mais une fonction qui contient un readln, c’est pas très catholique.
    Imagine :
    F(x)=x²
    F(2) te demande d’entrer une valeur.
    Je sais qu’en info ça pose pas de problèmes mais mon prof d’info nous rappelle souvent qu’une fonction qui demande une valeur c’est une procédure, donc qu’il faut le déclarer avec "procedure".

    Pour le reste je trouve que toi (Droggo) et hoelbihan, aviez tout à fait raison.

  5. #5
    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
    Hi,
    Citation Envoyé par Ultima
    Bonjour,
    Excuse moi droggo mais une fonction qui contient un readln, c’est pas très catholique.
    Imagine :
    F(x)=x²
    F(2) te demande d’entrer une valeur.
    Je sais qu’en info ça pose pas de problèmes mais mon prof d’info nous rappelle souvent qu’une fonction qui demande une valeur c’est une procédure, donc qu’il faut le déclarer avec "procedure".

    Pour le reste je trouve que toi (Droggo) et hoelbihan, aviez tout à fait raison.
    Désolé à mon tour, mais absolument rien n'interdit d'utiliser une fonction pour lire une donnée.

    Ici, on a besoin de lire une donnée entière, une fonction peut renvoyer un entier, on fait une fonction.

    Je pense que tu prends beaucoup trop "fonction" au sens mathématique.
    Leur utilisation en programmation, Pascal ou autre, ne se limite pas à cela :
    une fonction renvoie un résultat, rien ne lui interdit d'aller lire la valeur de ce résultat au clavier, ou dans un fichier, ou dans la mémoire d'un autre programme, pourquoi pas.

    Si ton prof dit ce que tu écris
    Je sais qu’en info ça pose pas de problèmes mais mon prof d’info nous rappelle souvent qu’une fonction qui demande une valeur c’est une procédure, donc qu’il faut le déclarer avec "procedure"
    il se trompe, pour la même raison que toi (logique) : il ne faut pas prendre "function" au sens purement mathématique, ni "procedure" d'ailleurs.

    Cela vous amène à confondre les termes "procedure" et "function" d'un langage de programmation avec leur signification en mathématiques ou plus générale, erreur classique concernant des noms "faux-amis".

    La seule chose qui distingue une function d'une procedure est que l'une renvoie une valeur, et l'autre non.
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Tunisie

    Informations forums :
    Inscription : Août 2006
    Messages : 193
    Points : 85
    Points
    85
    Par défaut
    Salut les gars
    Merci pour vos remarques !! cette semaine est la semaine bolquée et demain j'ai un devoir de physique je viens de lire vos remarques et vos commentaires Aprés 2 jours je vais vous répondre (dsl j'ai des devoirs) donc je suis hyper occupé
    Allez A bientot

Discussions similaires

  1. Triangle de Pascal
    Par Nulysses dans le forum Fortran
    Réponses: 6
    Dernier message: 22/10/2009, 09h24
  2. Affichage du Triangle de Pascal
    Par jrosenzw dans le forum C++
    Réponses: 11
    Dernier message: 14/03/2009, 03h10
  3. Triangle de pascal
    Par koko03 dans le forum Mathématiques
    Réponses: 3
    Dernier message: 26/01/2009, 17h52
  4. triangle de pascal
    Par chouuc dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 20/01/2009, 01h36
  5. Triangle de Pascal
    Par yushkoya dans le forum VBScript
    Réponses: 6
    Dernier message: 11/07/2006, 14h18

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