You are on page 1of 8

P3.

1 ESPECIFICACIN ESTRUCTURAL
(continuacin)

Llus Ters
Instituto de Microelectrnica de Barcelona, IMB-CNM (CSIC)
Universitat Autnoma de Barcelona (UAB)
2DESCRIPCINDEBLOQUES(cont.) P3.1
2.3BANCODEREGISTROS number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A; number:=number+1;
seleccinentrada seleccinsalida
when(DATA_INPUT,k,j)=>
X(k):=IN(j); number:=number+1;
when(DATA_OUTPUT,i,j)=>
bancode
OUT(i):=X(j); number:=number+1;
registros when(OUTPUT_VALUE,i,A)=>
{X(i)} OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f)=>
go to X(k):=f(X(i),X(j)); number:=number+1;
when(JUMP,N)=>
number:=N;
recursosde
clculo
when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N; elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N; elsenumber:=number+1;endif;
endcase;
endloop;
2
(bancoderegistros) P3.1
bancode
registros number:=0;
{X(i)} loop
caseprogram(number)is
Especificacin Funcional
when(ASSIGN_VALUE,k,A)=>
loop
X(k):=A; number:=number+1;
caseprogram(number)is
when(DATA_INPUT,k,j)=>
when(ASSIGN_VALUE,k,A)=>
X(k):=IN(j); number:=number+1;
X(k):=reg_in;left_out :=don'tcare;right_out :=don'tcare;
when(DATA_OUTPUT,i,j)=>
when(DATA_INPUT,k,j)=>
OUT(i):=X(j); number:=number+1;
X(k):=reg_in;left_out :=don'tcare;right_out :=don'tcare;
when(OUTPUT_VALUE,i,A)=>
when(DATA_OUTPUT,i,j)=>
OUT(i):=A;number:=number+1;
left_out :=don'tcare;right_out :=X(j);
when(OPERATION,i,j,k,f)=>
when(OUTPUT_VALUE,i,A)=>
X(k):=f(X(i),X(j)); number:=number+1;
left_out :=don'tcare;right_out :=don'tcare;
when(JUMP,N)=>
when(OPERATION,i,j,k,f)=>
number:=N;
left_out :=X(i);right_out :=X(j);X(k):=reg_in;
when(JUMP_POS,i,N)=>
when(JUMP,N)=>
ifX(i)>0thennumber:=N; elsenumber:=number+1;endif;
left_out :=don'tcare;right_out :=don'tcare;
when(JUMP_NEG,i,N)=>
when(JUMP_POS,i,N)=>
ifX(i)<0thennumber:=N; elsenumber:=number+1;endif;
left_out :=X(i);right_out :=don'tcare;
endcase;
when(JUMP_NEG,i,N)=>
endloop;
left_out :=X(i);right_out :=don'tcare;
endcase; 3
endloop;
P3.1
2.4RECURSOSDECLCULO number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A)=>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
seleccinentrada seleccinsalida X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
bancode when(OUTPUT_VALUE,i,A)=>
registros OUT(i):=A;number:=number+1;
{X(i)} when(OPERATION,i,j,k,f)=>
X(k):=f(X(i),X(j)); number:=number+1;
go to
when(JUMP,N)=>
number:=N;
recursos
when(JUMP_POS,i,N)=>
declculo ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
4
(recursos declculo) P3.1
number:=0;
loop
caseprogram(number)is
recursos when(ASSIGN_VALUE,k,A)=>
declculo X(k):=A;number:=number+1;
when(DATA_INPUT,k,j)=>
X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j)=>
OUT(i):=X(j);number:=number+1;
when(OUTPUT_VALUE,i,A)=>
OUT(i):=A;number:=number+1;
Especificacin Funcional when(OPERATION,i,j,k,f)=>
iff=0thenresult:=left_in +right_in; X(k):=f(X(i),X(j)); number:=number+1;
elseresult:=left_in right_in; when(JUMP,N)=>
number:=N;
endif; when(JUMP_POS,i,N)=>
ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
5
P3.1
2.5GOTO(instruccin siguiente) number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A) =>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j) =>
seleccinentrada seleccinsalida X(k):=IN(j);number:=number+1;
when(DATA_OUTPUT,i,j) =>
OUT(i):=X(j);number:=number+1;
bancode when(OUTPUT_VALUE,i,A) =>
registros OUT(i):=A;number:=number+1;
{X(i)} when(OPERATION,i,j,k,f) =>
X(k):=f(X(i),X(j));number:=number+1;
go to
when(JUMP,N)=>
number:=N;
when(JUMP_POS,i,N)=>
recursos
declculo ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
endcase;
endloop;
6
(goto) P3.1
number:=0;
loop
caseprogram(number)is
when(ASSIGN_VALUE,k,A) =>
X(k):=A;number:=number+1;
when(DATA_INPUT,k,j) =>
number:=0; X(k):=IN(j);number:=number+1;
loop when(DATA_OUTPUT,i,j) =>
caseprogram(number)is OUT(i):=X(j);number:=number+1;
when(JUMP,N)=> when(OUTPUT_VALUE,i,A) =>
number:=N; OUT(i):=A;number:=number+1;
when(OPERATION,i,j,k,f) =>
when(JUMP_POS,i,N)=>
X(k):=f(X(i),X(j));number:=number+1;
ifdata>0thennumber:=N; when(JUMP,N)=>
elsenumber:=number+1;endif; number:=N;
when(JUMP_NEG,i,N)=> when(JUMP_POS,i,N)=>
ifdata<0thennumber:=N; ifX(i)>0thennumber:=N;elsenumber:=number+1;endif;
elsenumber:=number+1;endif; when(JUMP_NEG,i,N)=>
ifX(i)<0thennumber:=N;elsenumber:=number+1;endif;
whenothers=>
endcase;
number:=number+1; endloop;
endcase;
endloop; 7
RESUMEN P3.1

Descripcin estructural completada

Descripcin funcional delosbloques:


Bancoderedistros,
Recursos declculo,
Bloque goto.

You might also like