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 : 105
Enregistré le : 26 nov. 2015 11:09
Localisation : Wiltz ( Luxembourg)

programme en Turbo Pascal

Message par Marc556 »

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 du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: programme en Turbo Pascal

Message par gilles »

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 du membre
Rom1500
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 701
Enregistré le : 29 nov. 2013 16:24
Localisation : Pas très loin de Lyon
Contact :

Re: programme en Turbo Pascal

Message par Rom1500 »

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 du membre
gilles
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3100
Enregistré le : 17 avr. 2007 21:25
Localisation : 44
Contact :

Re: programme en Turbo Pascal

Message par gilles »

'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 : 105
Enregistré le : 26 nov. 2015 11:09
Localisation : Wiltz ( Luxembourg)

Re: programme en Turbo Pascal

Message par Marc556 »

merci les gars de vous penchez sur ces petits exercices....
pour ma part, le Pascal, ça date de ....................30 ans......
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: programme en Turbo Pascal

Message par C.Ret »

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 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Répondre

Retourner vers « Tous les ordinateurs »