PawelG: Różnice pomiędzy wersjami

Z Lem
Skocz do: nawigacji, wyszukiwania
Linia 14: Linia 14:
 
   '''unit''' F: \textbf{'''procedure'''};
 
   '''unit''' F: \textbf{'''procedure'''};
 
       '''var''' i: integer;   
 
       '''var''' i: integer;   
   \textbf{'''begin'''
+
   '''begin'''  
       \textbf{if} k=n+1 \textbf{then}  
+
       '''if''' k=n+1 '''then'''  
           \textbf{call} DrukujA; \ licz := licz+1   
+
           '''call''' DrukujA; licz := licz+1   
       \textbf{else}  
+
       '''else'''  
         \textbf{for} i:= 1 \textbf{to} n   
+
         '''for''' i:= 1 '''to''' n   
         \textbf{do}  
+
         '''do'''  
           \textbf{if} A[i]=0 \textbf{then}  
+
           '''if''' A[i]=0 '''then'''  
 
               A[i] := k; k := k+1;   
 
               A[i] := k; k := k+1;   
               \textbf{call} F;             
+
               '''call''' F;             
 
               k := k-1; A[i]:=0   
 
               k := k-1; A[i]:=0   
           \textbf{fi};   
+
           '''fi''';   
         \textbf{od};   
+
         '''od''';   
       \textbf{fi};\ \  \textbf{return}
+
       '''fi''';
   \textbf{end} F;   
+
        '''return'''
 +
   '''end''' F;   
 
'''begin'''   
 
'''begin'''   
 
   readln(n);   
 
   readln(n);   
   array A dim(1:n);   
+
   '''array''' A '''dim'''(1:n);   
 
   '''for''' j := 1 '''to''' n '''do''' A[j] := 0 '''od''';   
 
   '''for''' j := 1 '''to''' n '''do''' A[j] := 0 '''od''';   
 
   k :=1;
 
   k :=1;

Wersja z 12:01, 16 mar 2020

Poniżej znajdziesz niewielki program.

  1. Czy potrafisz odgadnąc co ten program robi i sformułować odpowiednie twierdzenie?
  2. Czy potrafisz je udowodnić?


program PawelG;\ \ (* autor Paweł Gburzyński, 1983, \cite{Zabo83}\ \ *)    
  var A: arrayof integer; 
  var n, k,   j, licz: integer ;  
  unit DrukujA:  procedure;  
     var j: integer 
begin  
     writeln  
end DrukujA;     
  unit F: \textbf{procedure};
     var i: integer;  
  begin 
     if k=n+1 then  
          call DrukujA;  licz := licz+1  
     else  
        for i:= 1 to n  
        do  
          if A[i]=0 then  
             A[i] := k; k := k+1;  
             call F;             
             k := k-1; A[i]:=0  
          fi;  
        od;  
     fi;
        return
  end F;  

begin

  readln(n);  
  array A dim(1:n);  
  for j := 1 to n do A[j] := 0 od;  
  k :=1;
  licz:=0;  
  call F;  
  writeln(Bywaj``)  

end PawelG