Précédent   Forum des professionnels en informatique > Autres langages > Pascal
Pascal Forum d'entraide sur la programmation en langage Pascal et sur les EDI. Avant de poster -> la F.A.Q Pascal, les cours
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2011, 11h16   #1
Invité de passage
 
Homme arnaud
Étudiant
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme arnaud
Localisation : Belgique

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

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 3
Points : 3
Par défaut Calcul de valeur absolue

Bonjour tout le monde, je suis nouveau sur le forum et je commence la programmation en Pascal...
Je voudrais faire un simple programme qui calcule la valeur absolue.
Voici le premier code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PROGRAM valeur_absolue;
 
VAR a : INTEGER;
CONST b = -1;
 
BEGIN
  WRITELN('Entrez la valeur de a');
  READLN(a);
       IF a<0 THEN
           WRITELN('La valeur absolue de a=',a*b);
           READLN   (a*b);
        IF a>0 THEN
        WRITELN('La valeur absolue de',a);
             READLN (a);
           IF a=0 THEN
              WRITELN('La valeur absolue de',a);
          READLN   (a);
 
  WRITELN('valeur absolue')
END.
Le souci c'est que j'aimerais pouvoir entrer d'autres valeurs par la suite, mais je ne comprends pas ce que je dois faire...
J'ai essayé en faisant ceci :
Code :
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 valeur_absolue;
 
VAR a : INTEGER;
VAR c : INTEGER;
CONST b = -1;
 
BEGIN;
  WRITELN('Entrez la valeur de a');
  READLN(a);
       WHILE a<0 DO
        BEGIN
           WRITELN('La valeur absolue de a=',c);
           c:= a*b;
        END;
        WHILE a>0 DO
          BEGIN WRITELN('La valeur absolue de',a);
             READLN (a);
          END;
         WHILE a=0 DO
           BEGIN
              WRITELN('La valeur absolue de',a);
          READLN   (a);
           END;
  WRITELN('valeur absolue');
  READLN;
END.
Si quelqu'un peut m'aider ???
daemongeek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 12h03   #2
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 3 411
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 42
Localisation : Réunion

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

Informations forums :
Inscription : novembre 2002
Messages : 3 411
Points : 6 705
Points : 6 705
pourquoi utilises-tu trois boucles alors que tu veux boucler une seule fois ?

il te manque une condition de sortie de boucle

1) je demande un nombre
2) j'affiche sa valeur absolue
3) dans quelle condition ne boucle-je pas ?
__________________
Developpez.com: Mes articles
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice sous Delphi
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 14h00   #3
Invité de passage
 
Homme arnaud
Étudiant
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme arnaud
Localisation : Belgique

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

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 3
Points : 3
Merci pour ta réponse, voilà ce que j'ai fait, mais je suis obligé d'employer le "0" pour quitter... Il n'y aurait pas une autre solution?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PROGRAM valeur_absolue;
 
VAR a : INTEGER;
VAR c : INTEGER;
CONST b = -1;
 
BEGIN
 
  WRITELN('Entrez la valeur de a');
  READLN(a);
    WHILE a<>0 DO
     BEGIN
       IF a<0 THEN
           WRITELN('La valeur absolue de a=', a*b);
           c:= a*b;
 
        IF a>0 THEN
             WRITELN('La valeur absolue de a=',a);
             READLN (a);
     END;
END.
c'est mieux??
daemongeek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 14h40   #4
Expert Confirmé Sénior
 
Avatar de Paul TOTH
 
Homme Paul TOTH
Freelance
Inscription : novembre 2002
Messages : 3 411
Détails du profil
Informations personnelles :
Nom : Homme Paul TOTH
Âge : 42
Localisation : Réunion

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

Informations forums :
Inscription : novembre 2002
Messages : 3 411
Points : 6 705
Points : 6 705
oui c'est mieux

à quoi sert "c" ?

attention à l'indentation, il n'y a pas de raison pour que les lignes 15 et 19 soient alignées avec la ligne qui précède.

pour avoir plusieurs instructions associées un IF il faut les englober dans une section BEGIN/END, ce qui n'est pas le cas ici.

Note que Ctrl+C devrait interrompre le programme si tu veux conserver le 0, il n'y a alors plus de condition de sortie et tu peux faire un
Code :
1
2
WriteLn('Appyez sur Ctrl+C pour quitter le programme');
while True do ..
__________________
Developpez.com: Mes articles
Entreprise: Execute SARL
Produits : UPnP, RemoteOffice sous Delphi
Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%
Paul TOTH est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2011, 14h54   #5
Invité de passage
 
Homme arnaud
Étudiant
Inscription : décembre 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme arnaud
Localisation : Belgique

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

Informations forums :
Inscription : décembre 2011
Messages : 5
Points : 3
Points : 3
merci pour tes réponses rapides et claires

le c c'est juste pour afficher le résultat de a*b car si je ne mets pas c:=a*b mais que a*b j'ai une erreur...

c'est quoi l'indentation???
daemongeek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 11h39   #6
Membre confirmé
 
Avatar de titeeee
 
Homme Titouan Créac'h
Lycéen
Inscription : mai 2009
Messages : 193
Détails du profil
Informations personnelles :
Nom : Homme Titouan Créac'h
Âge : 18
Localisation : France

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : mai 2009
Messages : 193
Points : 257
Points : 257
L'indentation c'est le fait de décaler tes instructions pour quelle le soit plus claire.

tu peux aller voir :
http://www.developpez.net/forums/d10...mation-pascal/

on y explique plein de technique pour rendre un code plus claire et certaines manière d'indenter.

Je ne comprend pas non plus d'où vient le c. Parce que, tu lui donne une valeur, mais tu t'en serre pas après.

Allez, bon courage !
titeeee est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 11h31   #7
Membre du Club
 
Homme
Webmaster
Inscription : mars 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : mars 2011
Messages : 33
Points : 41
Points : 41
Vous pouvez aussi demander à l'utilisateur à la fin de Taper sur 1 pour continuer, taper sur 0 pour sortir

voilà c'est mieux comme ça, à vous devez mettre deux boucle, une pour que l'utilisateur sois obligé de taper seulement 1 ou 0, et l'autre boucle pour répéter le programme si l'utilisateur tape 1.

Merci à vous.
Devildz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h43.


 
 
 
 
Partenaires

Hébergement Web