Naredna: Hardversko celobrojno deljenje Gore: Celobrojno deljenje Prethodna: Dokaz zaustavljanja programa   Sadržaj


Prevođenje u C program

Prevedimo sada program iz paskalolikog jezika (za koji smo dokazali totalnu korektnost), u C program vodeći računa da pri tome ne narušimo invarijantu petlje i korektnost programa.

Da bi program imao smisla, moramo obezbediti unošenje vrednosti ulaznih promenljivih x i y od strane korisnika, kao i ispis rezultata na standardni izlaz. Potrebno je voditi računa i o deklaraciji i tipu promenljivih. Kako promenljive x i y mogu imati samo celobrojne nenegativne vrednosti, njihov tip će biti neoznačen ceo broj, pritom moramo voditi računa da y mora biti različito od nule. Takođe, podrazumevamo da su podržane operacije oduzimanja i sabiranja celih brojeva. Time dobijamo sledeći program:

#include<stdio.h>
#include<stdlib.h>

main()
{ 
 unsigned int x, y; 
 unsigned int q, r; 
 printf("Unesite brojeve x i y za koje zelite da izracunate celobrojno deljenje:\n"); 
 scanf("%d%d", &x, &y); 
 if(y == 0)
 {
   printf("Greska pri unosu vrednosti y!\n");   
   exit(1);
 }
 q = 0;
 r = x;  
 while (r >= y) 
 {
   q = q + 1;
   r = r - y;   
 }
 printf("%d = %d * %d + %d\n", x, q, y, r); 
}

Ako iskoristimo specifičnosti programskog jezika C, prethodni program postaje:

#include<stdio.h> 
#include<stdlib.h>

main() 
{ 
 unsigned int x, y, q, r; 
 printf("Unesite brojeve x i y za koje zelite da izracunate celobrojno deljenje:\n"); 
 scanf("%d%d", &x, &y);  
 if(y == 0)
 {
   printf("Greska pri unosu vrednosti y!\n");   
   exit(1);
 }
 q = 0; 
 r = x; 
 while (r >= y) 
 { 
   q++; 
   r -= y; 
 } 
 printf("%d = %d * %d + %d\n", x, q, y, r); 
}

Na ovaj način smo došli do kraja razvojnog puta programa za izračunavanje celog dela i ostatka pri celobrojnom deljenju prirodnih projeva x i y. Pri tome, znamo da se on uvek zaustavlja i da je korektan za sve vrednosti ulaznih parametara.



Naredna: Celobrojni koren Gore: Celobrojno deljenje Prethodna: Dokaz zaustavljanja programa   Sadržaj