Jean-Pierre Rosen wrote in message <6r1e1a$mj$1@platane.wanadoo.fr>... >Robert Dewar a �crit dans le message ... >>2) to write finite state machines encoding the state into the PC. Yes, some >>people prefer case statements for this purpose, but many people prefer the >>use of labels and gotos as the most obvious translation of labeled states >>with arrows between them. > >I agree with this one, > >>For example, I find the following perfectly clear: >> >> <> for J in 1 .. N - 1 loop >> if D (J) > D (J + 1) then >> Swap (D(J), D(J + 1)); >> goto Sort; >> end if; >> >But not on this one, since: >loop > Inner: for J in 1 .. N - 1 loop > if D (J) > D (J + 1) then > Swap (D(J), D(J + 1)); > exit Inner; > end if; >end loop; >reflects the intent better (at least to my taste). When I need to write a quick sort, and don't have access to a decent sort function, then I prefer this simple structure... bool unsorted = true; for (int i=0; unsorted && i<(N-1); i++) { unsorted = false; for (int j = 0; j<(N-i-1); j++) { if (d[j] > d[j+1]) { swap(d, j); unsorted = true; } } } Robert C. Martin | Design Consulting | Training courses offered: Object Mentor | rmartin@oma.com | Object Oriented Design 14619 N Somerset Cr | Tel: (800) 338-6716 | C++ Green Oaks IL 60048 | Fax: (847) 918-1023 | http://www.oma.com "One of the great commandments of science is: 'Mistrust arguments from authority.'" -- Carl Sagan