break, et cetera

Chris Torek chris at umcp-cs.UUCP
Mon Nov 18 12:38:58 AEST 1985


Darn...  when I got up this evening I realized that I had not really
said what I wanted to in the first part of that article.  I hate
to reopen the wound and rub in salt, but . . . here goes:

Given a C construct such as

	for (init; cond; step) {
		code;
		if (cond2)
			break;
		code2;
	}

one can, without changing the meaning of the code, write

	init;
	bool := true;
	while (cond) and bool do
	   begin code;
	   if cond2 then
	      bool := false
	   else
	      begin code2;
	      step
	      end
	   end;

which is how the loop would most likely appear in Pascal.  (The
expanded form if `code' or `code2' contains `continue' statements
is somewhat different, but does exist.)  This expanded form can be
transformed direcly into C in the obvoius way.

These are semantically equivalent when it comes to proving the code
correct.  Since they are equivalent, you may elect to use either
form.  In C, I would use the `compressed' form; but this is a matter
of taste, and you probably know the old expression concerning such.
-- 
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (+1 301 454 4251)
UUCP:	seismo!umcp-cs!chris
CSNet:	chris at umcp-cs		ARPA:	chris at mimsy.umd.edu



More information about the Comp.lang.c mailing list