programme en Turbo Pascal

Tout sur les ordinateurs, liens, infos...Avec un thread par machine. Si la machine n'y est pas , créez le premier post la concernant dans ce forum

Modérateur : Politburo

Répondre
Marc556
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 137
Inscription : 26 nov. 2015 12:09
Localisation : Wiltz ( Luxembourg)

programme en Turbo Pascal

Message par Marc556 » 15 févr. 2016 19:46

Mon fils est comme son père, il s'y prend à la dernière minute pour faire ses prépas....
j'ai besoin de votre aide pour ses exercices en turbo Pascal.....

1. Ecrivez une fonction qui detecte si une chaine de caracteres est vide.

2. Ecrivez une fonction qui compte le nombre de chiffres contenu dans une chaine composée de chiffres et de lettres?

3 Ecrivez un programme qui lit le numerateur et le denominateur d'une fraction et fourni la fraction simplifiée.

je sais le faire en Basic, mais pas en Turbo Pascal....de plus je ne vois pas ce qu'on appelle fonction...
pourriez-vous l'aider?... Evidemment, c'est pour demain!!!

merci
Marc

Avatar de l’utilisateur
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3411
Inscription : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: programme en Turbo Pascal

Message par gilles » 15 févr. 2016 20:38

pour le 1 ca doit donner un truc comme

function EstVide (chaine : STRING) : boolean;
var i:int;
begin
if (length(chaine) == 0) then
begin
EstVide := true;
end;
EstVide := false;
end;

pour le 2 il va falloir faire une boucle et utiliser du ord()

le 3 est plus rigolo.

après ça commence à remonter loin le Turbo pascal, je fais plutôt du C depuis 20 ou 25 ans

Avatar de l’utilisateur
Rom1500
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 1004
Inscription : 29 nov. 2013 17:24
Localisation : Pas très loin de Lyon
Contact :

Re: programme en Turbo Pascal

Message par Rom1500 » 15 févr. 2016 22:41

On va simplifier un peu en syntaxe Delphi... :wink:
Function EstVide(MaChaine :String):Boolean;
Begin
Result:= Length(MaChaine)=0;
End;

Function NbChiffres(MaChaine:String):Integer;
Var i:Integer;
Begin
Result:=0;
If MaChaine <>'' then
For i:=1 to Length(MaChaine) do
Result:=Result+1*( Pos( MaChaine , '0123456789')>0);
End;

... si ça peut te donner une piste
Toutes les infos : http://www.pc-1500.info
PC-1500+CE-150 : EU PC1500, PC1500A / JP PC1500, PC1500D, PC1501 / HU PTA4000, PTA4000+16 / US TRS80 PC2 / BR PC-1500RP, PC-1500RP2 / CN PC-1500, PC-1500A, Nanfeng PC-1500A
PC-1600 : PC-1600K V2, CE-1600M, CE-1604L, CE-515P, module 32Ko, module 512Ko
Extensions en boite : CE-150/151/152/153/154/155/156/157/158/159/160/161/162E/163 sans boite

Avatar de l’utilisateur
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3411
Inscription : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: programme en Turbo Pascal

Message par gilles » 15 févr. 2016 23:16

'ffectivment un seul signe égal pour le test d'égalité en Pascal.

Autant avec le C et le pascal j'avais tendance à prendre une écriture compacte, autant avec le temps on se rend compte que c'est une pratique qui rend la relecture plus difficile. La plupart des langages postérieurs vont imposer la présence de parenthèses sur les "if" et l'ouverture d'un bloc même s'il n'y a qu'une seule instruction. Certains langages vont jusqu'à imposer une indentation qui sert de structure (python). Optimiser c'est le boulot du compilateur, pas du (re)lecteur ;)

Marc556
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 137
Inscription : 26 nov. 2015 12:09
Localisation : Wiltz ( Luxembourg)

Re: programme en Turbo Pascal

Message par Marc556 » 16 févr. 2016 22:52

merci les gars de vous penchez sur ces petits exercices....
pour ma part, le Pascal, ça date de ....................30 ans......

Avatar de l’utilisateur
C.Ret
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1950
Inscription : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: programme en Turbo Pascal

Message par C.Ret » 20 févr. 2016 09:04

Du Turbo Pacal, ça fait un bail... En tout cas bien moins que 30 ans (28 en fait :tongue: )

Mais je me souviens qu'en Turbo Pascal, que nous utilisions le nom de la fonction pour 'retourner' le "résultat" de celle-ci.
Je me souviens aussi que nous utilisions les majuscules pour les mots et instruction du Pascal. Mais je ne sais plus si c'était une convention (une demande de l'enseignant pour plus de pédagogie) ou une obligation (liée à la version du Borland Turbo Pascal que nous utilisions) ?

Je m'attendais donc à quelque chose du style :

Code : Tout sélectionner

FUNCTION EstVide(MaChaine:STRING):BOOLEAN;
   BEGIN 
      EstVide:= LENGTH(MaChaine)=0;
   END;

Code : Tout sélectionner

FUNCTION NbChiffres(MaChaine:STRING):INTEGER;
   CONST d0=ORD('0'),d9=ORD('9');
   VAR i,n,d:INTEGER;
   BEGIN
      i:=0;
      n:=0;
      WHILE i<LENGTH(MaChaine) DO  
         BEGIN
            i:=i+1;
            d:=ORD(MaChaine[i]);
            IF d0<=d AND d<=d9 THEN n:=n+1;
         END;
      NbChiffres:=n;
   END; 

Code : Tout sélectionner

PROGRAM SimplFrac ;
VAR N,D,A,B,T:INTEGER;
BEGIN
   D:=0;
   WHILE D<=0 DO
      BEGIN
         WRITE('ENTRER   Numérateur:'); READLN(N):
         WRITE('ENTRER Dénominateur:'); READLN(D);
      END;
   WRITELN(); 
   A:=ABS(N);B:=D;
   WRITE( 'PGCD(' );WRITE( A );WRITE( ',' );WRITE( B );WRITE( ' = ' );
   WHILE B>0 DO
      BEGIN
         T:=B; B=A-B*INT(A/B); A:=T;
      END;
  WRITELN(T); WRITELN();
  WRITE( N   ); WRITE('/'); WRITE(D  ); WRITE(' = ');
  WRITE( N/T ); WRITE('/'); WRITE(D/T); WRITELN();
END.
Ce dernier programme pouvant être "structuré" :

Code : Tout sélectionner

PROGRAM SimplFrac ;
VAR N,D,P:INTEGER;

FUNCTION Pgdc( A:INTEGER , B:INTEGER ):INTEGER;
   VAR T:INTEGER;
   BEGIN
     WRITE( 'PGDC(' , A , ',' , B , ' = ' );
     WHILE B>0 DO
        BEGIN
           T:=B; B=A-B*INT(A/B); A:=T;
        END;
     WRITELN( T );
     Pgdc:=T;
   END;

BEGIN  
   D:=0;
   WHILE D<=0 DO
      BEGIN
         WRITE( 'ENTRER   Numérateur:' ); READLN( N ):
         WRITE( 'ENTRER Dénominateur:' ); READLN( D );
      END;
   P:=Pgdc(ABS(N),D);
   WRITELN( N , '/' , D , ' = ' , N/P , '/' , D/P );
END.
SHARP PC-1211 + CE-121 + CE-122. | VIC 20 Commodore 128D + Printer P-803. | TI-57 LCD | TI-74 BasiCalc | TI-92 II | HP-15C | HP-28S + HP82240A | HP-41C + (2 memory + stat + IR) modules. | HP Prime Wireless Graphing Calculator . .Sommaire des M.P.O.. . Sommaire du P.C.T.M. .

Répondre

Revenir vers « Tous les ordinateurs »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités