home *** CD-ROM | disk | FTP | other *** search
-
- ├ ╠ANGUAGE ╘UTORIAL
- -------------------
- ╠ESSON 5 OF 11
-
-
-
- ╔F, FOR, AND WHILE -
-
-
- MAIN()
- █ /* WHAT'S IN A NAME ? */
- INT I, J; /* SOME INTEGERS. */
- CHAR NAME[10]; /* 10 CHAR ARRAY */
- FOR (I=0; I<25; I++)
- /* PRINT '\N', 25 TIMES, */
- PRINTF("\N");
- /* TO CLEAR THE SCREEN! */
- PRINTF("\N TYPE YOUR NAME : ");
- /* ASK FOR A NAME. */
- SCANF("%S",&NAME);
- /* INPUT THE NAME */
- FOR (I=0, J=0; NAME[I] != '\0';
- I++) █ /* A NICE FOR-LOOP */
- IF ( NAME[I] == 'E' )
- /* CHECK FOR AN 'E' */
- J++; /* IF SO, INCREMENT J */
- ▌ /* END OF FOR-LOOP */
- PRINTF("\N THE LETTER E OCCURS %D
- TIMES IN %S",J,NAME);
- ▌ /* END OF MAIN() */
-
- ╠ET'S LOOK AT THIS PROGRAM A PART AT
- AT TIME. ╔T'S SUPPOSED TO ASK FOR A
- NAME, THEN PRINT OUT THE NUMBER OF
- TIMES THE LETTER E OCCURS IN THE
- NAME.
-
- MAIN()
- █
- INT I, J, NUM;
- CHAR NAME[10];
-
- ╘HIS PART IS FAMILIAR. ╬OTE THAT WE
- ALLOW FOR A NAME OF 9 CHARACTERS
- SINCE THE 10TH WILL BE THE
- TERMINATING '\0' (REMEMBER?).
-
- FOR (I=0; I<25; I++)
- PRINTF("\N");
-
- ╫E USE A FOR LOOP TO PRINT 25
- NEWLINES (THEREBY CLEARING THE SCREEN
- ..NOT VERY ELEGENT, BUT.. ).
- ╘HE NEW THING HERE IS I++ WHICH, IN
- C, MEANS INCREMENT I, OR, INCREASE
- THE VALUE OF I BY ONE.
- ╥EMEMBER,SINCE THERE IS ONLY ONE
- STATEMENT IN THE FOR LOOP THE SEMI-
- COLON AFTER PRINTF ACTS TO TERMINATE
- THE LOOP.
-
- PRINTF("\N TYPE YOUR NAME : ");
-
- ╫E NOW ASK FOR YOUR NAME BY PRINTING:
-
- TYPE YOUR NAME :
-
- SCANF("%S",&NAME);
-
- ╘HEN WE WAIT FOR THE USER TO TYPE IN
- HIS/HER NAME (ENDING WITH THE
- ENTER KEY), AND PUT THIS STRING AT
- MEMORY ADDRESS &NAME .
-
- FOR (I=0, J=0; NAME[I] != '\0';
- I++) █
-
- ╬OW WE GO THROUGH THE NAME[] ARRAY,
- ONE CHARACTER AT-A-TIME, STARTING
- WITH I=0 (THE FIRST CHARACTER IS THE
- ZEROTH!). ╫E WILL COUNT THE NUMBER OF
- TIMES THE LETTER E OCCURS AND STORE
- THIS COUNT IN THE VARIABLE J, SO WE
- ALSO INITIALIZE J=0, TOO! (NOTE THE
- USE OF THE COMMA BETWEEN I=0 AND
- J=0). ╘HIS FOR-LOOP WILL CONTINUE SO
- LONG AS THE ITH CHARACTER IN THE
- NAME[] ARRAY IS NOT THE NULL '\0'. ╔N
- C THE FINAL ELEMENT IN A STRING IS
- ALWAYS A NULL AS THIS IS HOW C
- DECIDES WHERE A STRING ENDS. ╙INCE
- OUR ARRAY NAME[10] WAS ONLY
- INITIALIZED TO HOLD 10 ELEMENTS AND
- THE FINAL ONE IS RESERVED FOR THE
- NULL THE NAME CANNOT BE MORE THAN 9
- CHARACTERS LONG. ┴NY CHARACTERS WHICH
- ARE ENTERED ABOVE 9 WILL TRUNCATED.
- (NOTE THE CONSTRUCTION != WHICH, IN
- C, MEANS NOT EQUAL). ╧F COURSE, EACH
- TIME WE ADVANCE THROUGH THE
- CHARACTERS IN THE ARRAY NAME[] WE
- MUST INCREMENT I (UNTIL WE REACH THE
- END).
-
- IF ( NAME[I] == 'E' )
-
- ┴ND NOW WE CHECK THE ITH CHARACTER,
- NAME[I], TO SEE IF IT IS EQUIVALENT
- TO THE LETTER E. ╬OTE THE CURIOUS WAY
- WE CHECK FOR ==. ╚AD WE USED
- NAME[I]='E' IT WOULD COMPILE OK, BUT
- THIS ACTUALLY ASSIGNS TO NAME[I] THE
- CHARACTER 'E' RATHER THAN CHECKING
- FOR EQUALITY! ...AND NAME WOULD BE
- ALL E'S.
-
- J++;
-
- ╙INCE THE 'J++;' IS THE ONLY STATEMENT
- ACTED ON WHEN THE 'IF' CONDITIONAL TESTS
- AS TRUE THE SEMI-COLON AFTER 'J++'
- TERMINATES IT.
-
- ╬OW, IF WE FIND AN 'E', WE INCREMENT J.
-
- ...AND THIS ENDS THE FOR-LOOP.
-
-
- PRINTF("\N THE LETTER E OCCURS %D
- TIMES IN %S",J,NAME);
- ▌
-
- ...AND, AFTER LEAVING THE FOR-LOOP,
- WE PRINT THE RESULTS:
-
- ╘HE LETTER E OCCURS J TIMES IN NAME.
-
- ┴FTER WE COMPILE AND LINK AND
- EXECUTE, WE GET:
-
- TYPE YOUR NAME : PETER
-
- ╫E TYPE THIS, THEN PRESS THE ENTER
- KEY, AND GET:
-
- ╘HE LETTER E OCCURS 2 TIMES IN PETER
-
-
- ╔F (THIS ) DO THAT ELSE IF (THIS)
- DO THAT ELSE DO THAT -
-
- ╫E MAY WISH TO CHECK FOR SEVERAL
- CHARACTERS (NOT JUST 'E'), SO WE
- COULD SAY:
-
- #1 IF ( NAME[I] == 'E' )
- J++; /* INCREMENT J IF AN 'E' */
- #2 ELSE IF ( NAME[I] == 'F' )
- K++; /* INCREMENT K IF AN 'F' */
- #3 ELSE IF ( NAME[I] == 'G' )
- L++; /* INCREMENT L IF AN 'G' */
- #4 ELSE ; /* ELSE DO NOTHING */
-
- ╘HERE IS ANOTHER WAY OF MAKING TESTS
- OF THIS TYPE CALLED A 'SWITCH' WHICH
- WE'LL GET TO IN ANOTHER LESSON.
-
- ╔N LINE 1 WE INCREMENT THE VARIABLE J
- WHICH COUNTS THE NUMBER OF TIMES AN
- 'E' OCCURS. ╔N LINE 2 WE INCREMENT
- THE VARIABLE K WHICH COUNTS THE
- NUMBER OF TIMES AN 'F' OCCURS. ╔N
- LINE 3 WE INCREMENT THE VARIABLE L
- WHICH COUNTS THE NUMBER OF TIMES AN
- 'G' OCCURS. ╔N LINE 4, WHICH IS
- REACHED ONLY IF THE CHARACTER IS NONE
- OF THE ABOVE, WE DO NOTHING. ╫E
- COULD HAVE DONE SOMETHING
- INTERESTING, BUT WE SHOULD, JUST
- ONCE, DEMONSTRATE A DO NOTHING
- STATEMENT ....JUST THE SEMI-COLON!
- (WE WOULD, OF COURSE, HAVE DECLARED K
- AND L AS INT DATA TYPES).
-
-
- ═ORE STUFF LIKE 'I++' -
-
- ┴LTHOUGH WE COULD HAVE INCREMENTED I
- BY USING I=I+1, WE USED THE INCREMENT
- OPERATOR ++. ╘HERE IS ALSO (WHAT
- ELSE?) A DECREMENT OPERATOR --. ╔N
- FACT THESE CAN BE EITHER PRE- OR
- POST-OPERATIVE.
-
- J=I-- WILL ASSIGN TO J THE VALUE
- OF I, THEN WILL DECREMENT I.
- J=--I WILL FIRST DECREMENT I,THEN
- ASSIGN TO J THE DECREMENTED
- VALUE OF I.
-
- ┴LSO, THE FOLLOWING ASSIGNMENT
- OPERATORS MAY BE USED:
-
- X+=5 INSTEAD OF X=X+5
- X-=5 INSTEAD OF X=X-5
- X*=5 INSTEAD OF X=X*5
- X/=5 INSTEAD OF X=X/5
-
- ╘ESTS FOR EQUALITY && INEQUALITY -
-
- ╘O TEST FOR EQUALITY OF, SAY, X AND 5
- WE ASK IF X==5. HAD WE USED
- SOMETHING LIKE: IF (X=5) THEN X WOULD
- BE ASSIGNED THE VALUE 5 (AND, OF
- COURSE, X WOULD NOW BE EQUAL TO 5 AND
- THE IF-STATEMENTS WOULD CERTAINLY BE
- EXECUTED). ╬OTE VERY CAREFULLY THE
- DIFFERENCE BETWEEN THE ASSIGNMENT
- OPERATOR '=' AND THE TEST FOR
- EQUALITY OPERATOR '=='.
-
- ╫E ALSO USE:
-
- IF (X!=5) != MEANS NOT EQUAL
-
- IF (X>5) > MEANS GREATER THAN
-
- IF (X<5) < MEANS LESS THAN
-
- ╫E ALSO HAVE:
-
- IF (X>5 && X!=7)
-
- ╫HERE && MEANS AND ...SO THIS READS:
-
- IF (X IS GREATER THAN 5)
- AND (X IS NOT EQUAL TO 7)
-
- ╫E ALSO HAVE:
-
- IF (X==5 ▀▀ X>=7)
-
- ╫HERE ▀▀ MEANS 'OR' ...SO THIS READS:
-
- IF (X IS EQUIVALENT TO 5)
- OR (X IS GREATER OR EQUAL TO 7)
-
- [END OF LESSON 5 OF 11]
-