Programmation en Turbo Pascal
Résolu/Fermé
cheick-ha
Messages postés
5
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
26 décembre 2008
-
7 déc. 2008 à 20:20
cheick-ha Messages postés 5 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 26 décembre 2008 - 11 déc. 2008 à 19:32
cheick-ha Messages postés 5 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 26 décembre 2008 - 11 déc. 2008 à 19:32
A voir également:
- Programmation en Turbo Pascal
- Turbo pascal download - Télécharger - Édition & Programmation
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Iphone turbo sim inconvénient - Forum iPhone
- My pascal - Télécharger - Édition & Programmation
- Turbo sim - Forum iPhone
1 réponse
KX
Messages postés
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 005
11 déc. 2008 à 12:42
11 déc. 2008 à 12:42
Dans tous le code, il est plus clair de mettre write('entrez ...'); readln(...); sur la même ligne
De plus tu n'utilises que des variables globales alors que des locales suffiraient
ligne 2 : uses crt; ne sert que pour clrscr, c'est à dire à rien (l'écran est systématiquement effacé au démarrage)
ligne 3 : tu prends a,b,c,d integer, ça marche très bien avec des real (de toute façon ton résultat est real)
ligne 18 : until (a<>0); soit tu fais les procédures de résolution au degré 1 et 0 soit tu expliques pourquoi tu boucles : writeln('/!\ a=0'); et à la limite tu place ton until a<>0 juste sur le a
ligne 19 : précises que c'est un O que tu veux pour confirmer de plus ton programme est court, ce n'est pas la peine de s'embeter avec une vérification
ligne 28 : utilise plutôt sqr(b) que b*b quand tu peux
ligne 30 : writeln('pas de racines réelles'), on pourrait faire le calcul en complexe
ligne 30 : pas de point virgule avant else
ligne 32 à 34 : il faut encadrer tes instructions par begin end
ligne 32, 33 : n'oublie pas les parenthèses : / (2*a);
ligne 40 : pour l'affichage des réels il vaudrait mieux préciser le nombre de chiffres significatifs : writeln(X:0:5);
En ce qui concerne ton programme principal (ormi l'utilisation des variables globales à revoir), étant donné que ton programme est court il n'est pas nécessaire de faire ce genre de boucle (très lourde), de plus si tu dis au revoir, peut-être faudrait-il dire bonjour...
Ensuite tu pourrais aérer la console pour l'utilisateur avec quelques writeln ici ou là
De plus tu n'utilises que des variables globales alors que des locales suffiraient
ligne 2 : uses crt; ne sert que pour clrscr, c'est à dire à rien (l'écran est systématiquement effacé au démarrage)
ligne 3 : tu prends a,b,c,d integer, ça marche très bien avec des real (de toute façon ton résultat est real)
ligne 18 : until (a<>0); soit tu fais les procédures de résolution au degré 1 et 0 soit tu expliques pourquoi tu boucles : writeln('/!\ a=0'); et à la limite tu place ton until a<>0 juste sur le a
ligne 19 : précises que c'est un O que tu veux pour confirmer de plus ton programme est court, ce n'est pas la peine de s'embeter avec une vérification
ligne 28 : utilise plutôt sqr(b) que b*b quand tu peux
ligne 30 : writeln('pas de racines réelles'), on pourrait faire le calcul en complexe
ligne 30 : pas de point virgule avant else
ligne 32 à 34 : il faut encadrer tes instructions par begin end
ligne 32, 33 : n'oublie pas les parenthèses : / (2*a);
ligne 40 : pour l'affichage des réels il vaudrait mieux préciser le nombre de chiffres significatifs : writeln(X:0:5);
En ce qui concerne ton programme principal (ormi l'utilisation des variables globales à revoir), étant donné que ton programme est court il n'est pas nécessaire de faire ce genre de boucle (très lourde), de plus si tu dis au revoir, peut-être faudrait-il dire bonjour...
Ensuite tu pourrais aérer la console pour l'utilisateur avec quelques writeln ici ou là
program second_d;
var a,b,c,d:integer;
X1,X2: real;
rep1: char;
procedure saisie;
var rep: char;
begin
repeat
repeat
writeln;
write('Entrez a : '); readln(a);
if a=0 then writeln('/!\ a=0');
until (a<>0);
write('Entrez b : '); readln(b);
write('Entrez c : '); readln(c);
writeln;
write('Confirmez-vous ? (O/N) '); readln (rep);
until rep in ['O','o'];
end;
procedure resultat;
begin
d:= sqr(b)-(4*a*c);
if d<0 then writeln('Il n''y a pas de racines reelles')
else begin
X1:= (-b-sqrt(d))/(2*a);
X2:= (-b+sqrt(d))/(2*a);
writeln;
writeln('X1=',X1:0:5,' et X2=',X2:0:5);
end;
end;
begin
writeln('Bonjour, calculons les racines de aX^2+bX+c=0');
repeat
saisie;
resultat;
writeln;
writeln('Voulez-vous continuer ? (O/N)'); readln (rep1);
until rep1 in ['N','n'];
write('Au revoir'); readln;
end.Enfin, pour bien comprendre mes remarques sur les variables globales voici ce qu'on pourrait faire :program second_d;
procedure saisie(var a,b,c:integer);
begin
repeat
writeln;
write('Entrez a : '); readln(a);
if a=0 then writeln('/!\ a=0');
until (a<>0);
write('Entrez b : '); readln(b);
write('Entrez c : '); readln(c);
writeln;
end;
procedure resultat(a,b,c:integer);
var d:integer;
begin
d:=sqr(b)-(4*a*c);
if d<0 then writeln('Il n''y a pas de racines reelles')
else begin
writeln;
writeln('X1 = ',(-b-sqrt(d))/(2*a):0:5,
' et X2 = ',(-b+sqrt(d))/(2*a):0:5);
end;
end;
var a,b,c:integer;
begin
writeln('Bonjour, calculons les racines de aX^2+bX+c=0');
while true do
begin
saisie(a,b,c); // l'intéret c'est que les a,b,c ont la même valeur dans
resultat(a,b,c);// les procédures mais sans pour autant porté le même nom
writeln;
end;
end.Utiliser des fonctions et procédures avec des paramètres permet de mieux les réutiliser ultérieurement...
11 déc. 2008 à 19:32
je m'éforcerai de faire attention et de suivre les conseils que vous m'avez donner.