home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / c / 11683 < prev    next >
Encoding:
Internet Message Format  |  1992-07-28  |  2.5 KB

  1. Path: sparky!uunet!dtix!darwin.sura.net!mips!sdd.hp.com!usc!sol.ctr.columbia.edu!destroyer!ncar!noao!amethyst!organpipe.uug.arizona.edu!news
  2. From: dave@cs.arizona.edu (Dave Schaumann)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: converting C 'for' to PASCAL 'FOR'
  5. Summary: bad, foolish, evil idea
  6. Message-ID: <1992Jul28.220307.13267@organpipe.uug.arizona.edu>
  7. Date: 28 Jul 92 22:03:07 GMT
  8. References: <1992Jul28.151937.247@falcon.navsses.navy.mil>
  9. Sender: news@organpipe.uug.arizona.edu
  10. Reply-To: dave@cs.arizona.edu (Dave Schaumann)
  11. Organization: University of Arizona
  12. Lines: 59
  13. In-Reply-To: huynh@falcon.navsses.navy.mil
  14.  
  15. In article <1992Jul28.151937.247@falcon.navsses.navy.mil>, huynh@falcon writes:
  16. >I am curious if there is a way to translate the "C" for(i,start,last,incr)
  17. >statement into the PASCAL FOR i = start to last DO (* incr = 1 *).
  18.  
  19. I'm not sure exactly what you want here.
  20.  
  21. The Pascal code
  22.  
  23.   for i := lo to hi do body ;
  24.  
  25. Is (mostly) equivalent to this C code:
  26.  
  27.   for( i = lo ; i <= hi ; i++ ) body ;
  28.  
  29. If you want to be pedantic, you could do this:
  30.  
  31.   for( index = lo ; index < hi ; index++ ) { int i = index ; body ; }
  32.  
  33. (assuming `index' is not referenced anywhere in `body').
  34.  
  35.  
  36. If you want to go the other way, the C code
  37.  
  38.   for( start_expr ; done_expr ; inc_expr ) body ;
  39.  
  40. Has no direct equivalent in Pascal.  The best you can do is
  41.  
  42.   start_expr ;
  43.   while done_expr do begin body ; inc_expr ; end ;
  44.  
  45. >I am interested in doing this using the #define statement.
  46.  
  47. No.  PLEASE don't do this.  It is a bad, vile thing to use the preprocessor
  48. to re-define the language to make it look like some other language.
  49.  
  50. Trust me, you're better off using C's control structures as they stand.
  51. You're programs will be easier to understand, and you'll learn C a lot
  52. quicker if you don't try to pretend that it's Pascal.
  53.  
  54. This means that "cute" processor tricks like
  55. #define BEGIN {
  56. #define END   }
  57. #define REPEAT    do {
  58. #define UNTIL(x)  } while( !(x) )
  59. #define AND &&
  60. #define OR  ||
  61. /* etc */
  62.  
  63. Are also a bad idea.  In many ways, C and Pascal are very similar
  64. languages.  But it is a mistake to assume that they are the same.
  65. Their differences are important too, and the above trickery not only
  66. obscures differences between the two languages, it also makes code
  67. harder to understand, particularly for non-Pascal programmers.
  68.  
  69. -- 
  70. You unlock this door with the key of imagination.  Beyond it is another
  71. dimension: a dimension if sound, a dimension of sight, a dimension of mind.
  72. You're moving into a land of both shadow and substance, of things and ideas.
  73. You've just crossed over into... the Twilight Zone.
  74.