SlideShare ist ein Scribd-Unternehmen logo
1 von 7
Downloaden Sie, um offline zu lesen
program tpse;

uses crt ;

type processus=record

         n1:0..20;

         n2:0..20;

         tab:array[1..20,1..16]of integer;

         end;

   processeur=array[1..16] of integer;

   var w,r:processus;

   p:processeur;



procedure init_processeur(var p:processeur);

var i:integer;

begin

for i:=1 to 16 do p[i]:=0;

end;



procedure remplire_ready(var r:processus;nb1:integer);

var m,n,i:integer;

begin

i:=r.n2+1;

for m:=i to i+nb1-1 do

begin

if(r.n2<15)then

 begin

 r.n1:=r.n1+1;

 r.n2:=r.n2+1;
for n:=1 to 16 do r.tab[m,n]:=1;

 r.tab[m,10]:=r.n1;

 end;

end;

end;

procedure afficher_processus(w:processus);

var m,n:integer;

begin

for m:=1 to w.n2 do begin

            for n:=1 to 16 do write(w.tab[m,n]:4);

            writeln;

            end;

end;



procedure affiche_processeur (p:processeur);

var i:integer;

begin

for i:=1 to 16 do write(p[i]:4);

writeln;

end;

procedure transition_ready_to_run(var r:processus;var p:processeur);

var i,j:integer;

begin

for i:=1 to 16 do p[i]:= r.tab[1,i];

for i:=2 to r.n2 do for j:=1 to 16 do r.tab[i-1,j]:=r.tab[i,j];

r.n2:=r.n2-1;

end;
procedure transition_ran_ready (var p:processeur;var r:processus);

var i:integer;

begin

if (r.n2<20)then begin

           r.n2:=r.n2+1;

           for i:=1 to 16 do

           r.tab [r.n2,i]:=p[i];

           r.tab[r.n2,6]:=1;

           end;

p[1]:=0;

end;

procedure transition_wate_to_ready(var r,w :processus);

var i:integer;

begin

if (r.n2<15) then begin

            r.n2:=r.n2+1;

            for i:=1 to 16 do

            r.tab [r.n2,i]:=w.tab[w.n2,i];

            end;

w.n2:=w.n2-1;

end;



procedure transition_run_to_wait(var w:processus;var p:processeur);

var i:integer;

begin

if (w.n2<15) then begin

            w.n2:=w.n2+1;
for i:=1 to 16 do

           w.tab [w.n2,i]:=p[i];

           end;

p[1]:=0;

end;

 procedure teste(var r,w:processus;var p:processeur);

 begin

 if (p[1]=0)then transition_ready_to_run(r,p)

 else if (p[5]=0) then transition_run_to_wait(w,p)

    else if(p[6]=0)then

    transition_ran_ready (p,r);

 if (w.tab[w.n2,5]=1)then transition_wate_to_ready(r,w);

 if(p[1]=0)then transition_ready_to_run(r,p);

 end;



procedure help;

begin



writeln ('1:remplir la matrice ready');



writeln('2:entre le bit que vous voulez metre a 0 dans le processeur');



writeln('3:entre le bit que vous voulez metre a 1 dans le processeur');



writeln('4:metre a 1 le 5éme bit de dernier ligne dans W');



writeln('5:afficher le processeur');
writeln('6:afficher les processus ready');



writeln('7:afficher les processus wait');



writeln('8:help');

end;




var choix:char;

  k:integer;



begin

textcolor(20);

clrscr;

init_processeur(p);

r.n2:=0;

r.n1:=0;

w.n2:=0;

w.n1:=0;

writeln ('1:remplir la matrice ready');

writeln('2:entre le bit que vous voulez metre a 0 dans le processeur');

writeln('3:entre le bit que vous voulez metre a 1 dans le processeur');

writeln('4:metre a 1 le 5éme bit de dernier ligne dans W');

writeln('5:afficher le processeur');

writeln('6:afficher les processus ready');

writeln('7:afficher les processus wait');
writeln('8:help');

repeat

write('entre votre choix: ');

readln(choix);

case choix of

'1':begin

  write('entre le nombre de processus: ');

         readln(k);

         remplire_ready(r,k);

         end;

'2':begin

  readln(k);

         if(k<17)and(k<>10)then p[k]:=0;

         end;

'3':begin

  readln(k);

         if(k<17)and(k<>10)then p[k]:=1;

         end;

'4':w.tab[w.n2,5]:=1;

'5':affiche_processeur(p);

'6':afficher_processus(r);

'7':afficher_processus(w);

'8':help;

end;

teste(r,w,p);

until(choix='q');

end.
Program tpse

Weitere ähnliche Inhalte

Ähnlich wie Program tpse

Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitresborhen boukthir
 
Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programmeBaghdadi Wajih
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018salah fenni
 
Correction dc3 3sc2
Correction dc3 3sc2Correction dc3 3sc2
Correction dc3 3sc2Hela Ch
 
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)ebruchez
 
Algorithmique Amp Programmation (R Sum
Algorithmique  Amp  Programmation (R SumAlgorithmique  Amp  Programmation (R Sum
Algorithmique Amp Programmation (R SumAmy Isleb
 

Ähnlich wie Program tpse (6)

Exercices pascal tous les chapitres
Exercices pascal tous les chapitresExercices pascal tous les chapitres
Exercices pascal tous les chapitres
 
Fiche3 ex-sous-programme
Fiche3 ex-sous-programmeFiche3 ex-sous-programme
Fiche3 ex-sous-programme
 
Algorithmique programmation2018
Algorithmique programmation2018Algorithmique programmation2018
Algorithmique programmation2018
 
Correction dc3 3sc2
Correction dc3 3sc2Correction dc3 3sc2
Correction dc3 3sc2
 
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
Programmes et objets informatiques (Prof. Ch. Rapin, Juillet 1989)
 
Algorithmique Amp Programmation (R Sum
Algorithmique  Amp  Programmation (R SumAlgorithmique  Amp  Programmation (R Sum
Algorithmique Amp Programmation (R Sum
 

Program tpse

  • 1. program tpse; uses crt ; type processus=record n1:0..20; n2:0..20; tab:array[1..20,1..16]of integer; end; processeur=array[1..16] of integer; var w,r:processus; p:processeur; procedure init_processeur(var p:processeur); var i:integer; begin for i:=1 to 16 do p[i]:=0; end; procedure remplire_ready(var r:processus;nb1:integer); var m,n,i:integer; begin i:=r.n2+1; for m:=i to i+nb1-1 do begin if(r.n2<15)then begin r.n1:=r.n1+1; r.n2:=r.n2+1;
  • 2. for n:=1 to 16 do r.tab[m,n]:=1; r.tab[m,10]:=r.n1; end; end; end; procedure afficher_processus(w:processus); var m,n:integer; begin for m:=1 to w.n2 do begin for n:=1 to 16 do write(w.tab[m,n]:4); writeln; end; end; procedure affiche_processeur (p:processeur); var i:integer; begin for i:=1 to 16 do write(p[i]:4); writeln; end; procedure transition_ready_to_run(var r:processus;var p:processeur); var i,j:integer; begin for i:=1 to 16 do p[i]:= r.tab[1,i]; for i:=2 to r.n2 do for j:=1 to 16 do r.tab[i-1,j]:=r.tab[i,j]; r.n2:=r.n2-1; end;
  • 3. procedure transition_ran_ready (var p:processeur;var r:processus); var i:integer; begin if (r.n2<20)then begin r.n2:=r.n2+1; for i:=1 to 16 do r.tab [r.n2,i]:=p[i]; r.tab[r.n2,6]:=1; end; p[1]:=0; end; procedure transition_wate_to_ready(var r,w :processus); var i:integer; begin if (r.n2<15) then begin r.n2:=r.n2+1; for i:=1 to 16 do r.tab [r.n2,i]:=w.tab[w.n2,i]; end; w.n2:=w.n2-1; end; procedure transition_run_to_wait(var w:processus;var p:processeur); var i:integer; begin if (w.n2<15) then begin w.n2:=w.n2+1;
  • 4. for i:=1 to 16 do w.tab [w.n2,i]:=p[i]; end; p[1]:=0; end; procedure teste(var r,w:processus;var p:processeur); begin if (p[1]=0)then transition_ready_to_run(r,p) else if (p[5]=0) then transition_run_to_wait(w,p) else if(p[6]=0)then transition_ran_ready (p,r); if (w.tab[w.n2,5]=1)then transition_wate_to_ready(r,w); if(p[1]=0)then transition_ready_to_run(r,p); end; procedure help; begin writeln ('1:remplir la matrice ready'); writeln('2:entre le bit que vous voulez metre a 0 dans le processeur'); writeln('3:entre le bit que vous voulez metre a 1 dans le processeur'); writeln('4:metre a 1 le 5éme bit de dernier ligne dans W'); writeln('5:afficher le processeur');
  • 5. writeln('6:afficher les processus ready'); writeln('7:afficher les processus wait'); writeln('8:help'); end; var choix:char; k:integer; begin textcolor(20); clrscr; init_processeur(p); r.n2:=0; r.n1:=0; w.n2:=0; w.n1:=0; writeln ('1:remplir la matrice ready'); writeln('2:entre le bit que vous voulez metre a 0 dans le processeur'); writeln('3:entre le bit que vous voulez metre a 1 dans le processeur'); writeln('4:metre a 1 le 5éme bit de dernier ligne dans W'); writeln('5:afficher le processeur'); writeln('6:afficher les processus ready'); writeln('7:afficher les processus wait');
  • 6. writeln('8:help'); repeat write('entre votre choix: '); readln(choix); case choix of '1':begin write('entre le nombre de processus: '); readln(k); remplire_ready(r,k); end; '2':begin readln(k); if(k<17)and(k<>10)then p[k]:=0; end; '3':begin readln(k); if(k<17)and(k<>10)then p[k]:=1; end; '4':w.tab[w.n2,5]:=1; '5':affiche_processeur(p); '6':afficher_processus(r); '7':afficher_processus(w); '8':help; end; teste(r,w,p); until(choix='q'); end.