PawelG: Różnice pomiędzy wersjami
Z Lem
								
												
				| (Nie pokazano 12 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
| Linia 2: | Linia 2: | ||
| # Czy potrafisz odgadnąc co ten program robi i sformułować odpowiednie twierdzenie? | # Czy potrafisz odgadnąc co ten program robi i sformułować odpowiednie twierdzenie? | ||
| # Czy potrafisz je udowodnić? | # Czy potrafisz je udowodnić? | ||
| + | # Czy potrafisz podać dowód w którym posługujesz sie wyłącznie aksjomatami rachunku programów (''alias'' AL), aksjomatami liczb naturalnych i regułami wnioskowania rachunku programów. Tak by czytelnik Twojego dowodu mógł zweryfikowac kazdy krok Twego rozumowania? | ||
| − | + | ||
| − | + |   '''program''' PawelG;   (*  autor Paweł Gburzyński, 1983, <ref>Loglan Summer School, 1983, Instytut Informatyki, Uniwersytet Warszawski</ref>  *)     | |
| − | + |     '''var''' A: '''arrayof''' integer;   | |
| − | + |     '''var''' n, k,   j, licz: integer ;    | |
| − |     var A: arrayof integer;  | + |     '''unit''' DrukujA:  '''procedure''';   | 
| − | + |        '''var''' j: integer   | |
| − |     var n, k,   j, licz: integer ;  | + |     '''begin'''  | 
| − |     unit DrukujA:  | + |        '''for''' j := 1 '''to''' n '''do''' write(A[j]) '''od''';   | 
| − |        var j: integer | + |        writeln   | 
| − | + |     '''end''' DrukujA;    | |
| − | + |     '''-----'''    | |
| − |        writeln  | + |     '''unit''' F: '''procedure'''; | 
| − | + |        '''var''' i: integer;   | |
| − | + |     '''begin'''  | |
| − | + |        '''if''' k=n+1 '''then'''   | |
| − |        var i: integer;  | + |             '''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   | |
| − |                A[i] := k; k := k+1;  | + |             '''fi''';   | 
| − | + |           '''od''';   | |
| − |                k := k-1; A[i]:=0  | + |        '''fi'''; | 
| − | + |          '''return''' | |
| − | + |     '''end''' F;   | |
| − | + |  '''begin'''   | |
| − | + |    readln(n);   | |
| − | + |     '''array''' A '''dim'''(1:n);   | |
| − | readln(n);  | + |     '''for''' j := 1 '''to''' n '''do''' A[j] := 0 '''od''';   | 
| − |     array A dim(1:n);  | + |     k :=1; | 
| − | + |    licz:=0;   | |
| − | + |     '''call''' F;   | |
| − |     k :=1; | + |     writeln(``Bywaj``)   | 
| − | + |  '''end''' PawelG | |
| − |     writeln( | + | |
| − | + | <references/> | |
| − | + | ||
| − | </ | + | |
Aktualna wersja na dzień 10:36, 23 mar 2020
Poniżej znajdziesz niewielki program.
- Czy potrafisz odgadnąc co ten program robi i sformułować odpowiednie twierdzenie?
- Czy potrafisz je udowodnić?
- Czy potrafisz podać dowód w którym posługujesz sie wyłącznie aksjomatami rachunku programów (alias AL), aksjomatami liczb naturalnych i regułami wnioskowania rachunku programów. Tak by czytelnik Twojego dowodu mógł zweryfikowac kazdy krok Twego rozumowania?
program PawelG; (* autor Paweł Gburzyński, 1983, [1] *) var A: arrayof integer; var n, k, j, licz: integer ; unit DrukujA: procedure; var j: integer begin for j := 1 to n do write(A[j]) od; writeln end DrukujA; ----- unit F: 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
- ↑ Loglan Summer School, 1983, Instytut Informatyki, Uniwersytet Warszawski
