home *** CD-ROM | disk | FTP | other *** search
-
- - 59 -
-
- 3. Å«Γ«¬ π»αáó½Ñ¡¿∩
-
- ô»αáó½∩εΘ¿Ñ «»ÑαáΓ«αδ ∩ºδ¬á «»αÑñѽ∩εΓ »«α∩ñ«¬ óδτ¿ß½Ñ-
- ¡¿⌐. é »α¿óÑñÑ¡¡δσ αá¡ÑÑ »α¿¼Ñαáσ ¼δ πªÑ óßΓαÑτ὿ß∞ ß ¡á¿-
- í«½ÑÑ π»«ΓαÑí¿Γѽ∞¡δ¼¿ π»αáó½∩εΘ¿¼¿ ¬«¡ßΓαπ¬µ¿∩¼¿ ∩ºδ¬á "C";
- ºñÑß∞ ¼δ «»¿ΦѼ «ßΓá½∞¡δÑ «»ÑαáΓ«αδ π»αáó½Ñ¡¿∩ ¿ πΓ«τ¡¿¼
- ñÑ⌐ßΓó¿∩ «»ÑαáΓ«α«ó, «íßπªñáóΦ¿σß∩ αá¡ÑÑ.
-
- 3.1. Ä»ÑαáΓ«αδ ¿ í½«¬¿
-
- Æá¬¿Ñ óδαáªÑ¡¿∩, ¬á¬ X=0, ¿½¿ I++, ¿½¿ PRINTF(...),
- ßΓá¡«ó∩Γß∩ «»ÑαáΓ«αἿ, Ñß½¿ ºá ¡¿¼¿ ß½ÑñπÑΓ Γ«τ¬á ß ºá»∩-
- Γ«⌐, ¬á¬, ¡á»α¿¼Ñα,
-
- X = 0;
- I++;
- PRINTF(...);
-
- é ∩ºδ¬Ñ "C" Γ«τ¬á ß ºá»∩Γ«⌐ ∩ó½∩ÑΓß∩ »α¿º¡á¬«¼ ¬«¡µá «»Ñαá-
- Γ«αá, á ¡Ñ αáºñѽ¿ΓѽѼ «»ÑαáΓ«α«ó, ¬á¬ ó ∩ºδ¬áσ Γ¿»á á½ú«-
- ½á.
- ö¿úπα¡δÑ ß¬«í¬¿ /( ¿ /) ¿ß»«½∞ºπεΓß∩ ñ½∩ «íΩÑñ¿¡Ñ¡¿∩
- «»¿ßá¡¿⌐ ¿ «»ÑαáΓ«α«ó ó ß«ßΓáó¡«⌐ «»ÑαáΓ«α ¿½¿ í½«¬, ΓᬠτΓ«
- «¡¿ «¬áºδóáεΓß∩ ß¿¡Γá¬ß¿τÑ߬¿ φ¬ó¿óá½Ñ¡Γ¡δ «ñ¡«¼π «»ÑαáΓ«απ.
- Äñ¿¡ ∩ó¡δ⌐ »α¿¼Ñα Γᬫú« Γ¿»á ñáεΓ Σ¿úπα¡δÑ ß¬«í¬¿, ó ¬«Γ«-
- αδÑ ºá¬½ετáεΓß∩ «»ÑαáΓ«αδ, ß«ßΓáó½∩εΘ¿Ñ Σπ¡¬µ¿ε, ñαπú«⌐ -
- Σ¿úπα¡δÑ ß¬«í¬¿ ó«¬απú úαπ»»δ «»ÑαáΓ«α«ó ó ¬«¡ßΓαπ¬µ¿∩σ IF,
- ELSE, WHILE ¿ FOR.(¡á ßἫ¼ ñÑ½Ñ »ÑαѼѡ¡δÑ ¼«úπΓ íδΓ∞ «»¿-
- ßá¡δ ó¡πΓα¿ ½εí«ú« í½«¬á; ¼δ »«ú«ó«α¿¼ «í φΓ«¼ ó ú½áóÑ 4).
- Æ«τ¬á ß ºá»∩Γ«⌐ ¡¿¬«úñá ¡Ñ ßΓáó¿Γß∩ »«ß½Ñ »Ñαó«⌐ Σ¿úπα¡«⌐
- ߬«í¬¿, ¬«Γ«αá∩ ºáóÑαΦáÑΓ í½«¬.
-
- 3.2. IF - ELSE
-
- Ä»ÑαáΓ«α IF - ELSE ¿ß»«½∞ºπÑΓß∩ »α¿ ¡Ñ«íσ«ñ¿¼«ßΓ¿ ßñÑ-
- ½áΓ∞ óδí«α. ö«α¼á½∞¡« ß¿¡Γá¬ß¿ß ¿¼ÑÑΓ ó¿ñ
-
- IF (óδαáªÑ¡¿Ñ)
- «»ÑαáΓ«α-1
- ELSE
- «»ÑαáΓ«α-2,
-
- âñÑ τáßΓ∞ ELSE ∩ó½∩ÑΓß∩ ¡Ñ«í∩ºáΓѽ∞¡«⌐. æ¡áτá½á óδτ¿ß½∩-
- ÑΓß∩ óδαáªÑ¡¿Ñ; Ñß½¿ «¡« "¿ßΓ¿¡¡«" /Γ.Ñ. º¡áτÑ¡¿Ñ óδαáªÑ¡¿∩
- «Γ½¿τ¡« «Γ ¡π½∩/, Γ« óδ»«½¡∩ÑΓß∩ «»ÑαáΓ«α-1. àß½¿ «¡« ½«ª¡«
- /º¡áτÑ¡¿Ñ óδαáªÑ¡¿∩ αáó¡« ¡π½ε/, ¿ Ñß½¿ ÑßΓ∞ τáßΓ∞ ß ELSE,
- Γ« ó¼ÑßΓ« «»ÑαáΓ«αá-1 óδ»«½¡∩ÑΓß∩ «»ÑαáΓ«α-2.
-
- - 60 -
-
- Æá¬ ¬á¬ IF »α«ßΓ« »α«óÑα∩ÑΓ τ¿ß½Ñ¡¡«Ñ º¡áτÑ¡¿Ñ óδαáªÑ-
- ¡¿∩, Γ« 󫺼«ª¡« ¡Ñ¬«Γ«α«Ñ ß«¬αáΘÑ¡¿Ñ ºá»¿ß¿. æá¼«⌐ «τÑó¿ñ-
- ¡«⌐ 󫺼«ª¡«ßΓ∞ε ∩ó½∩ÑΓß∩ ºá»¿ß∞
-
- IF (óδαáªÑ¡¿Ñ)
- ó¼ÑßΓ«
- IF (óδαáªÑ¡¿Ñ !=0)
-
- ¿¡«úñá Γá¬á∩ ºá»¿ß∞ ∩ó½∩ÑΓß∩ ∩ß¡«⌐ ¿ ÑßΓÑßΓóÑ¡¡«⌐, ¡« óαѼÑ-
- ¡á¼¿ «¡á ßΓá¡«ó¿Γß∩ ºáúáñ«τ¡«⌐.
- Æ«, τΓ« τáßΓ∞ ELSE ó ¬«¡ßΓαπ¬µ¿¿ IF - ELSE ∩ó½∩ÑΓß∩ ¡Ñ«-
- í∩ºáΓѽ∞¡«⌐, »α¿ó«ñ¿Γ ¬ ñóπß¼δ߽ѡ¡«ßΓ¿ ó ß½πτáÑ, ¬«úñá ELSE
- «»π߬áÑΓß∩ ó« 󽫪ѡ¡«⌐ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿ «»ÑαáΓ«α«ó IF.
- ¥Γá ¡Ñ«ñ¡«º¡áτ¡«ßΓ∞ αáºαÑΦáÑΓß∩ «íδτ¡δ¼ «íαẫ¼ - ELSE ßó∩-
- ºδóáÑΓß∩ ß í½¿ªá⌐Φ¿¼ »αÑñδñπΘ¿¼ IF, ¡Ñ ß«ñÑαªáΘ¿¼ ELSE.
- ìá»α¿¼Ñα, ó
-
- IF ( N > 0 )
- IF( A > B )
- Z = A;
- ELSE
- Z = B;
-
- ¬«¡ßΓαπ¬µ¿∩ ELSE «Γ¡«ß¿Γß∩ ¬ ó¡πΓαÑ¡¡Ñ¼π IF, ¬á¬ ¼δ ¿ »«¬á-
- ºá½¿, ßñó¿¡πó ELSE »«ñ ß««ΓóÑΓßΓóπεΘ¿⌐ IF. àß½¿ φΓ« ¡Ñ Γ«,
- τΓ« óδ σ«Γ¿ΓÑ, Γ« ñ½∩ »«½πτÑ¡¿∩ ¡πª¡«ú« ß««ΓóÑΓßΓó¿∩ ¡Ñ«íσ«-
- ñ¿¼« ¿ß»«½∞º«óáΓ∞ Σ¿úπα¡δÑ ß¬«í¬¿:
-
- IF (N > 0) {
- IF (A > B)
- Z = A;
- }
- ELSE
- Z = B;
-
-
- Tá¬á∩ ñóπß¼δ߽ѡ¡«ßΓ∞ «ß«íÑ¡¡« »áúπí¡á ó ß¿Γπᵿ∩σ Γ¿»á
-
- IF (N > 0)
- FOR (I = 0; I < N; I++)
- IF (S[I] > 0) {
- PRINTF("...");
- RETURN(I);
- }
- ELSE /* WRONG */
- PRINTF("ERROR - N IS ZERO\N");
-
- - 61 -
-
- çỿß∞ ELSE »«ñ IF ∩ß¡« »«¬áºδóáÑΓ, τÑú« óδ σ«Γ¿ΓÑ, ¡« ¬«¼-
- »¿½∩Γ«α ¡Ñ »«½πτ¿Γ ß««ΓóÑΓßΓóπεΘÑú« π¬áºá¡¿∩ ¿ ßó∩ªÑΓ ELSE ß
- ó¡πΓαÑ¡¡¿¼ IF. ÄΦ¿í¬¿ Γᬫú« α«ñá «τÑ¡∞ Γαπñ¡« «í¡áαπª¿óáεΓ-
- ß∩.
- îѪñπ »α«τ¿¼, «íαáΓ¿ΓÑ ó¡¿¼á¡¿Ñ, τΓ« ó
-
- IF (A > B)
- Z = A;
- ELSE
- Z = B;
-
- »«ß½Ñ Z=A ßΓ«¿Γ Γ«τ¬á ß ºá»∩Γ«⌐. äѽ« ó Γ«¼, τΓ« ß«ú½áß¡«
- úαá¼¼áΓ¿τÑ߬¿¼ »αáó¿½á¼ ºá IF ñ«½ªÑ¡ ß½Ññ«óáΓ∞ «»ÑαáΓ«α, á
- óδαáªÑ¡¿Ñ Γ¿»á Z=A, ∩ó½∩εΘÑÑß∩ «»ÑαáΓ«α«¼, óßÑúñá ºá¬á¡τ¿óá-
- ÑΓß∩ Γ«τ¬«⌐ ß ºá»∩Γ«⌐.
-
- 3.3. ELSE - IF
-
- è«¡ßΓαπ¬µ¿∩
-
- IF (óδαáªÑ¡¿Ñ)
- «»ÑαáΓ«α
- ELSE IF (óδαáªÑ¡¿Ñ)
- «»ÑαáΓ«α
- ELSE IF (óδαáªÑ¡¿Ñ)
- «»ÑαáΓ«α
- ELSE
- «»ÑαáΓ«α
-
- óßΓαÑτáÑΓß∩ ¡áßΓ«½∞¬« τáßΓ«, τΓ« ºáß½πª¿óáÑΓ «Γñѽ∞¡«ú«
- ¬αáΓ¬«ú« αáßß¼«ΓαÑ¡¿∩. Æá¬á∩ »«ß½Ññ«óáΓѽ∞¡«ßΓ∞ «»ÑαáΓ«α«ó
- IF ∩ó½∩ÑΓß∩ ¡á¿í«½ÑÑ αáß»α«ßΓαá¡Ñ¡¡δ¼ ß»«ß«í«¼ »α«úαá¼¼¿α«-
- óá¡¿∩ óδí«αá ¿º ¡Ñ߬«½∞¬¿σ 󫺼«ª¡δσ óáα¿á¡Γ«ó. óδαáªÑ¡¿∩
- »α«ß¼áΓα¿óáεΓß∩ »«ß½Ññ«óáΓѽ∞¡«; Ñß½¿ ¬á¬«Ñ-Γ« óδαáªÑ¡¿Ñ
- «¬áºδóáÑΓß∩ ¿ßΓ¿¡¡δ¼,Γ« óδ»«½¡∩ÑΓß∩ «Γ¡«ß∩Θ¿⌐ß∩ ¬ ¡Ñ¼π «»Ñ-
- αáΓ«α, ¿ φΓ¿¼ óß∩ µÑ»«τ¬á ºá¬á¡τ¿óáÑΓß∩. èáªñδ⌐ «»ÑαáΓ«α ¼«-
- ªÑΓ íδΓ∞ ½¿í« «Γñѽ∞¡δ¼ «»ÑαáΓ«α«¼, ½¿í« úαπ»»«⌐ «»ÑαáΓ«α«ó
- ó Σ¿úπα¡δσ ߬«í¬áσ.
- ū߽Ññ¡∩∩ τáßΓ∞ ß ELSE ¿¼ÑÑΓ ñѽ« ß« ß½πτáѼ, ¬«úñá ¡¿
- «ñ¡« ¿º »α«óÑα∩Ѽδσ πß½«ó¿⌐ ¡Ñ óδ»«½¡∩ÑΓß∩. ê¡«úñá »α¿ φΓ«¼
- ¡Ñ ¡áñ« »αÑñ»α¿¡¿¼áΓ∞ ¡¿¬á¬¿σ ∩ó¡δσ ñÑ⌐ßΓó¿⌐; ó φΓ«¼ ß½πτáÑ
- σó«ßΓ
-
- ELSE
- «»ÑαáΓ«α
-
- ¼«ªÑΓ íδΓ∞ «»πΘÑ¡, ¿½¿ Ñú« ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ñ½∩ ¬«¡Γα«½∩,
- τΓ«íδ ºáßÑτ∞ "¡Ñ󫺼«ª¡«Ñ" πß½«ó¿Ñ.
-
- - 62 -
-
- ä½∩ ¿½½εßΓαᵿ¿ óδí«αá ¿º ΓαÑσ 󫺼«ª¡δσ óáα¿á¡Γ«ó »α¿-
- óÑñѼ »α«úαá¼¼π Σπ¡¬µ¿¿, ¬«Γ«αá∩ ¼ÑΓ«ñ«¼ »«½«ó¿¡¡«ú« ñѽѡ¿∩
- «»αÑñѽ∩ÑΓ, ¡áσ«ñ¿Γß∩ ½¿ ñá¡¡«Ñ º¡áτÑ¡¿Ñ σ ó «Γß«αΓ¿α«óá¡¡«¼
- ¼áßß¿óÑ V. ¥½Ñ¼Ñ¡Γδ ¼áßß¿óá V ñ«½ª¡δ íδΓ∞ αáß»«½«ªÑ¡δ ó »«-
- α∩ñ¬Ñ ó«ºαáßΓá¡¿∩. öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ ¡«¼Ñα »«º¿µ¿¿ (τ¿ß½«
- ¼Ñªñπ 0 ¿ N-1), ó ¬«Γ«α«⌐ º¡áτÑ¡¿Ñ σ ¡áσ«ñ¿Γß∩ ó V, ¿ -1,
- Ñß½¿ σ ¡Ñ ß«ñÑনΓß∩ ó V.
-
- BINARY(X, V, N) /* FIND X IN V[0]...V[N-1] */
- INT X, V[], N;
- {
- INT LOW, HIGH, MID;
-
- LOW = 0;
- HIGH = N - 1;
- WHILE (LOW <= HIGH) {
- MID = (LOW + HIGH) / 2;
- IF (X < V[MID])
- HIGH = MID - 1;
- ELSE IF (X > V[MID])
- LOW = MID + 1;
- ELSE /* FOUND MATCH */
- RETURN(MID);
- }
- RETURN(-1);
- }
-
- Äß¡«ó¡«⌐ τáßΓ∞ε ¬áªñ«ú« Φáúá á½ú«α¿Γ¼á ∩ó½∩ÑΓß∩ »α«óÑα-
- ¬á, íπñÑΓ ½¿ σ ¼Ñ¡∞ΦÑ, í«½∞ΦÑ ¿½¿ αáóÑ¡ ßαÑñ¡Ñ¼π φ½Ñ¼Ñ¡Γπ
- V[MID]; ¿ß»«½∞º«óá¡¿Ñ ¬«¡ßΓαπ¬µ¿¿ ELSE - IF ºñÑß∞ 󻫽¡Ñ Ñß-
- ΓÑßΓóÑ¡¡«.
-
- 3.4. ÅÑαѬ½ετáΓѽ∞
-
- Ä»ÑαáΓ«α SWITCH ñáÑΓ ß»Ñµ¿á½∞¡δ⌐ ß»«ß«í óδí«αá «ñ¡«ú« ¿º
- ¼¡«ú¿σ óáα¿á¡Γ«ó, ¬«Γ«αδ⌐ ºá¬½ετáÑΓß∩ ó »α«óÑα¬Ñ ß«ó»áñÑ¡¿∩
- º¡áτÑ¡¿∩ ñá¡¡«ú« óδαáªÑ¡¿∩ ß «ñ¡«⌐ ¿º ºáñá¡¡δσ ¬«¡ßΓá¡Γ ¿
- ß««ΓóÑΓßΓóπεΘѼ óÑΓó½Ñ¡¿¿. é ú½áóÑ 1 ¼δ »α¿óѽ¿ »α«úαá¼¼π
- »«ñßτÑΓá τ¿ß½á óσ«ªñÑ¡¿⌐ ¬áªñ«⌐ µ¿Σαδ, ß¿¼ó«½«ó »πßΓδσ »α«-
- ¼ÑªπΓ¬«ó ¿ óßÑσ «ßΓá½∞¡δσ ß¿¼ó«½«ó, ¿ß»«½∞ºπεΘπε »«ß½Ññ«óá-
- Γѽ∞¡«ßΓ∞ IF...ELSE IF...ELSE. é«Γ Γá ªÑ ßá¼á∩ »α«úαá¼¼á ß
- »ÑαѬ½ετáΓѽѼ.
-
- - 63 -
-
- MAIN() /* COUNT DIGITS,WHITE SPACE, OTHERS */
- {
- INT C, I, NWHITE, NOTHER, NDIGIT[10];
-
- NWHITE = NOTHER = 0;
- FOR (I = 0; I < 10; I++)
- NDIGIT[I] = 0;
-
- WHILE ((C = GETCHAR()) != EOF)
- SWITCH (C) {
- CASE '0':
- CASE '1':
- CASE '2':
- CASE '3':
- CASE '4':
- CASE '5':
- CASE '6':
- CASE '7':
- CASE '8':
- CASE '9':
- NDIGIT[C-'0']++;
- BREAK;
- CASE ' ':
- CASE '\N':
- CASE '\T':
- NWHITE++;
- BREAK;
- DEFAULT :
- NOTHER++;
- BREAK;
- }
- PRINTF("DIGITS =");
- FOR (I = 0; I < 10; I++)
- PRINTF(" %D", NDIGIT[I]);
- PRINTF("\NWHITE SPACE = %D, OTHER = %D\N",
- NWHITE, NOTHER);
-
-
- ÅÑαѬ½ετáΓѽ∞ óδτ¿ß½∩ÑΓ µÑ½«Ñ óδαáªÑ¡¿Ñ ó ¬απú½δσ ߬«í-
- ¬áσ (ó ñá¡¡«⌐ »α«úαá¼¼Ñ - º¡áτÑ¡¿Ñ ß¿¼ó«½á ß) ¿ ßαáó¡¿óáÑΓ
- Ñú« º¡áτÑ¡¿Ñ ß« óßѼ¿ ß½πτá∩¼¿ (CASE). èáªñδ⌐ ß½πτá⌐ ñ«½ªÑ¡
- íδΓ∞ »«¼ÑτÑ¡ ½¿í« µÑ½δ¼, ½¿í« ß¿¼ó«½∞¡«⌐ ¬«¡ßΓá¡Γ«⌐, ½¿í«
- ¬«¡ßΓá¡Γ¡δ¼ óδαáªÑ¡¿Ñ¼. àß½¿ º¡áτÑ¡¿Ñ ¬«¡ßΓá¡Γ¡«ú« óδαáªÑ-
- ¡¿∩, ßΓ«∩ΘÑú« »«ß½Ñ óáα¿á¡Γ¡«ú« »αÑΣ¿¬ßá CASE, ß«ó»áñáÑΓ ß«
- º¡áτÑ¡¿Ñ¼ µÑ½«ú« óδαáªÑ¡¿∩, Γ« óδ»«½¡Ñ¡¿Ñ ¡áτ¿¡áÑΓß∩ ß φΓ«ú«
- ß½πτá∩. àß½¿ ¡¿ «ñ¿¡ ¿º ß½πτáÑó ¡Ñ »«ñσ«ñ¿Γ, Γ« óδ»«½¡∩ÑΓß∩
- «»ÑαáΓ«α »«ß½Ñ »αÑΣ¿¬ßá DEFAULT. ÅαÑΣ¿¬ß DEFAULT ∩ó½∩ÑΓß∩
- ¡Ñ«í∩ºáΓѽ∞¡δ¼ ,Ñß½¿ Ñú« ¡ÑΓ, ¿ ¡¿ «ñ¿¡ ¿º ß½πτáÑó ¡Ñ »«ñσ«-
- ñ¿Γ, Γ« ó««íΘÑ ¡¿¬á¬¿Ñ ñÑ⌐ßΓó¿∩ ¡Ñ óδ»«½¡∩εΓß∩. æ½πτá¿ ¿ óδ-
- í«α »« π¼«½τá¡¿ε ¼«úπΓ αáß»«½áúáΓ∞ß∩ ó ½εí«¼ »«α∩ñ¬Ñ. éßÑ
- ß½πτá¿ ñ«½ª¡δ íδΓ∞ αẽ¿τ¡δ¼¿.
-
- - 64 -
-
- Ä»ÑαáΓ«α BREAK »α¿ó«ñ¿Γ ¬ ¡Ñ¼Ññ½Ñ¡¡«¼π óδσ«ñπ ¿º »ÑαѬ-
- ½ετáΓѽ∩. ū߬«½∞¬π ß½πτá¿ ß½πªáΓ Γ«½∞¬« ó ¬áτÑßΓóÑ ¼ÑΓ«¬,
- Γ« Ñß½¿ óδ ¡Ñ »αÑñ»α¿¼¿ΓÑ ∩ó¡δσ ñÑ⌐ßΓó¿⌐ »«ß½Ñ óδ»«½¡Ñ¡¿∩
- «»ÑαáΓ«α«ó, ß««ΓóÑΓßΓóπεΘ¿σ «ñ¡«¼π ß½πτáε, óδ »α«ó὿ΓÑß∞ ¡á
- ß½ÑñπεΘ¿⌐ ß½πτá⌐. Ä»ÑαáΓ«αδ BREAK ¿ RETURN ∩ó½∩εΓß∩ ßá¼δ¼
- «íδτ¡δ¼ ß»«ß«í«¼ óδσ«ñá ¿º »ÑαѬ½ετáΓѽ∩. èᬠ¼δ «íßπñ¿¼
- »«ºªÑ ó φΓ«⌐ ú½áóÑ, «»ÑαáΓ«α BREA¬ ¼«ª¡« ¿ß»«½∞º«óáΓ∞ ¿ ñ½∩
- ¡Ñ¼Ññ½Ñ¡¡«ú« óδσ«ñá ¿º «»ÑαáΓ«α«ó µ¿¬½á WHILE, FOR ¿ DO.
- Åα«ó὿óá¡¿Ñ ß¬ó«º∞ ß½πτá¿ ¿¼ÑÑΓ ¬á¬ ßó«¿ ñ«ßΓ«¿¡ßΓóá,
- Γᬠ¿ ¡Ññ«ßΓáΓ¬¿. è »«½«ª¿Γѽ∞¡δ¼ ¬áτÑßΓóá¼ ¼«ª¡« «Γ¡ÑßΓ¿
- Γ«, τΓ« «¡« »«ºó«½∩ÑΓ ßó∩ºáΓ∞ ¡Ñ߬«½∞¬« ß½πτáÑó ß «ñ¡¿¼ ñÑ⌐-
- ßΓó¿Ñ¼, ¬á¬ í佫 ß »α«íѽ«¼, Γáíπ½∩µ¿Ñ⌐ ¿ ¡«ó«⌐ ßΓ᫬«⌐ ó
- ¡áΦѼ »α¿¼ÑαÑ. ì« ó Γ« ªÑ óαѼ∩ «¡« «íδτ¡« »α¿ó«ñ¿Γ ¬ ¡Ñ«í-
- σ«ñ¿¼«ßΓ¿ ºá¬á¡τ¿óáΓ∞ ¬áªñδ⌐ ß½πτá⌐ «»ÑαáΓ«α«¼ BREAK, τΓ«íδ
- ¿ºíѪáΓ∞ »ÑαÑσ«ñá ¬ ß½ÑñπεΘѼπ ß½πτáε. Åα«ó὿óá¡¿Ñ ß «ñ¡«ú«
- ß½πτá∩ ¡á ñαπú«⌐ «íδτ¡« íδóáÑΓ ¡ÑπßΓ«⌐τ¿óδ¼, Γᬠ¬á¬ «¡«
- ߬½«¡¡« ¬ αáßΘÑ»½Ñ¡¿ε »α¿ ¼«ñ¿Σ¿¬áµ¿¿ »α«úαá¼¼δ. çá ¿ß¬½ετÑ-
- ¡¿Ñ¼, ¬«úñá «ñ¡«¼π óδτ¿ß½Ñ¡¿ε ß««ΓóÑΓßΓóπεΓ ¡Ñ߬«½∞¬« ¼ÑΓ«¬,
- »α«ó὿óá¡¿Ñ ß½ÑñπÑΓ ¿ß»«½∞º«óáΓ∞ π¼ÑαÑ¡¡«.
- çáóÑñ¿ΓÑ »α¿óδτ¬π ßΓáó¿Γ∞ «»ÑαáΓ«α BREAK »«ß½Ñ »«ß½Ññ¡Ñ-
- ú« ß½πτá∩ (ó ñá¡¡«¼ »α¿¼ÑαÑ »«ß½Ñ DEFAULT), ñáªÑ Ñß½¿ φΓ« ¡Ñ
- ∩ó½∩ÑΓß∩ ½«ú¿τÑ߬¿ ¡Ñ«íσ«ñ¿¼δ¼. é «ñ¿¡ »αѬαáß¡δ⌐ ñÑ¡∞, ¬«ú-
- ñá óδ ñ«íáó¿ΓÑ ó ¬«¡Ñµ ÑΘÑ «ñ¿¡ ß½πτá⌐, φΓá ¼á½Ñ¡∞¬á∩ ¼Ñαá
- »αÑñ«ßë᫪¡«ßΓ¿ ¿ºíáó¿Γ óáß «Γ ¡Ñ»α¿∩Γ¡«ßΓÑ⌐.
- ô»α᪡ѡ¿Ñ 3-1.
- --------------
- ìá»¿Φ¿ΓÑ »α«úαá¼¼π ñ½∩ Σπ¡¬µ¿¿ EXPAND(S, T), ¬«Γ«αá∩ ¬«-
- »¿απÑΓ ßΓ᫬π S ó Γ, ºá¼Ñ¡∩∩ »α¿ φΓ«¼ ß¿¼ó«½δ Γáíπ½∩µ¿¿ ¿
- ¡«ó«⌐ ßΓ᫬¿ ¡á ó¿ñ¿¼δÑ πß½«ó¡δÑ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿, ¬á¬ \N
- ¿ \Γ. ¿ß»«½∞ºπ⌐ΓÑ »ÑαѬ½ετáΓѽ∞.
-
- 3.5. û¿¬½δ - WHILE ¿ FOR
-
- îδ πªÑ ßΓὬ¿ó὿ß∞ ß «»ÑαáΓ«αἿ µ¿¬½á WHILE ¿ FOR. é
- ¬«¡ßΓαπ¬µ¿¿
-
- WHILE (óδαáªÑ¡¿Ñ)
- «»ÑαáΓ«α
-
- óδτ¿ß½∩ÑΓß∩ óδαáªÑ¡¿Ñ. àß½¿ Ñú« º¡áτÑ¡¿Ñ «Γ½¿τ¡« «Γ ¡π½∩, Γ«
- óδ»«½¡∩ÑΓß∩ «»ÑαáΓ«α ¿ óδαáªÑ¡¿Ñ óδτ¿ß½∩ÑΓß∩ ß¡«óá. ¥Γ«Γ
- µ¿¬½ »α«ñ«½ªáÑΓß∩ ñ« ΓÑσ »«α, »«¬á º¡áτÑ¡¿Ñ óδαáªÑ¡¿∩ ¡Ñ
- ßΓá¡ÑΓ ¡π½Ñ¼, »«ß½Ñ τÑú« óδ»«½¡Ñ¡¿Ñ »α«úαá¼¼δ »α«ñ«½ªáÑΓß∩ ß
- ¼ÑßΓá »«ß½Ñ «»ÑαáΓ«αá.
-
- Ä»ÑαáΓ«α
-
- FOR (óδαáªÑ¡¿Ñ 1; óδαáªÑ¡¿Ñ 2; óδαáªÑ¡¿Ñ 3)
- «»ÑαáΓ«α
-
- - 65 -
-
- φ¬ó¿óá½Ñ¡ΓÑ¡ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿
-
- óδαáªÑ¡¿Ñ 1;
- WHILE (óδαáªÑ¡¿Ñ 2) {
- «»ÑαáΓ«α
- óδαáªÑ¡¿Ñ 3;
- }
-
- âαá¼¼áΓ¿τÑ߬¿ óßÑ Γα¿ ¬«¼»«¡Ñ¡Γá ó FOR ∩ó½∩εΓß∩ óδαáªÑ¡¿∩¼¿.
- ¡á¿í«½ÑÑ αáß»α«ßΓαá¡Ñ¡¡δ¼ ∩ó½∩ÑΓß∩ ß½πτá⌐, ¬«úñá óδαáªÑ¡¿Ñ 1
- ¿ óδαáªÑ¡¿Ñ 3 ∩ó½∩εΓß∩ »α¿ßóá¿óá¡¿∩¼¿ ¿½¿ «íαáΘÑ¡¿∩¼¿ ¬ Σπ¡-
- ¬µ¿∩¼, á óδαáªÑ¡¿Ñ 2 - πß½«ó¡δ¼ óδαáªÑ¡¿Ñ¼. ½εíá∩ ¿º ΓαÑσ
- τáßΓÑ⌐ ¼«ªÑΓ íδΓ∞ «»πΘÑ¡á, σ«Γ∩ Γ«τ¬¿ ß ºá»∩Γ«⌐ »α¿ φΓ«¼
- ñ«½ª¡δ «ßΓáóáΓ∞ß∩. àß½¿ «ΓßπΓßΓóπÑΓ óδαáªÑ¡¿Ñ 1 ¿½¿ óδαáªÑ-
- ¡¿Ñ 3, Γ« «¡« »α«ßΓ« óδ»áñáÑΓ ¿º αáßΦ¿αÑ¡¿∩. àß½¿ ªÑ «ΓßπΓß-
- ΓóπÑΓ »α«óÑα¬á, óδαáªÑ¡¿Ñ 2, Γ« ßτ¿ΓáÑΓß∩, ¬á¬ íπñΓ« «¡«
- óßÑúñá ¿ßΓ¿¡¡«, ΓᬠτΓ«
-
- FOR (;;) {
- ...
- }
-
- ∩ó½∩ÑΓß∩ íÑ߬«¡Ñτ¡δ¼ µ¿¬½«¼, « ¬«Γ«α«¼ »αÑñ»«½áúáÑΓß∩, τΓ«
- «¡ íπñÑΓ »αÑαóá¡ ñαπú¿¼¿ ßαÑñßΓóἿ (Γᬿ¼¿ ¬á¬ BREAK ¿½¿
- RETURN).
- êß»«½∞º«óáΓ∞ ½¿ WHILE ¿½¿ FOR - φΓ«, ó «ß¡«ó¡«¼ ñѽ«
- ó¬πßá. ìá»α¿¼Ñα ó
-
- WHILE ((C = GETCHAR())
- == ' ' \!\! C == '\N' \!\! C == '\T')
- ; /* SKIP WHITE SPACE CHARACTERS */
-
- ¡ÑΓ ¡¿ ¿¡¿µ¿á½¿ºáµ¿¿, ¡¿ αÑ¿¡¿µ¿á½¿ºáµ¿¿, ΓᬠτΓ« µ¿¬½ WHILÑ
- óδú½∩ñ¿Γ ßá¼δ¼ ÑßΓÑßΓóÑ¡¡δ¼.
- û¿¬½ FOR, «τÑó¿ñ¡«, »αÑñ»«τΓ¿Γѽ∞¡ÑÑ Γá¼, úñÑ ¿¼ÑÑΓß∩
- »α«ßΓá∩ ¿¡¿µ¿á½¿ºáµ¿∩ ¿ αÑ¿¡¿µ¿á½¿ºáµ¿∩, »«ß¬«½∞¬π »α¿ φΓ«¼
- π»αáó½∩εΘ¿Ñ µ¿¬½«¼ «»ÑαáΓ«αδ ¡áú½∩ñ¡δ¼ «íαẫ¼ «¬áºδóáεΓß∩
- ó¼ÑßΓÑ ó ¡áτá½Ñ µ¿¬½á. ¥Γ« ¡á¿í«½ÑÑ «τÑó¿ñ¡« ó ¬«¡ßΓαπ¬µ¿¿
-
- FOR (I = 0; I < N; I++)
-
- ¬«Γ«αá∩ ∩ó½∩ÑΓß∩ ¿ñ¿«¼«⌐ ∩ºδ¬á "C" ñ½∩ «íαáí«Γ¬¿ »Ñαóδσ N
- φ½Ñ¼Ñ¡Γ«ó ¼áßß¿óá, á¡á½«ú¿τ¡«⌐ «»ÑαáΓ«απ µ¿¬½á DO ó Σ«αΓαá¡Ñ
- ¿ PL/1. ǡὫú¿∩, «ñ¡á¬«, ¡Ñ »«½¡á∩, Γᬠ¬á¬ úαá¡¿µδ µ¿¬½á
- ¼«úπΓ íδΓ∞ ¿º¼Ñ¡Ñ¡δ ó¡πΓα¿ µ¿¬½á, á π»αáó½∩εΘá∩ »ÑαѼѡ¡á∩
- ß«σαá¡∩ÑΓ ßó«Ñ º¡áτÑ¡¿Ñ »«ß½Ñ óδσ«ñá ¿º µ¿¬½á, ¬á¬«óá íδ ¡¿
- íδ½á »α¿τ¿¡á φΓ«ú« óδσ«ñá. ū߬«½∞¬π ¬«¼»«¡Ñ¡ΓἿ FOR ¼«úπΓ
- íδΓ∞ »α«¿ºó«½∞¡δÑ óδαáªÑ¡¿∩, «¡¿ ¡Ñ «úαá¡¿τ¿óáεΓß∩ Γ«½∞¬«
- áα¿Σ¼ÑΓ¿τÑ߬¿¼¿ »α«úαÑßß¿∩¼¿. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ ∩ó½∩ÑΓß∩ »½«σ¿¼
- ßΓ¿½Ñ¼ ó¬½ετáΓ∞ ó FOR óδτ¿ß½Ñ¡¿∩, ¬«Γ«αδÑ ¡Ñ «Γ¡«ß∩Γß∩ ¬ π»-
- αáó½Ñ¡¿ε µ¿¬½«¼, ½πτΦÑ »«¼ÑßΓ¿Γ∞ ¿σ ó π»αáó½∩ѼδÑ µ¿¬½«¼
- «»ÑαáΓ«αδ.
-
- - 66 -
-
- é ¬áτÑßΓóÑ í«½∞ΦÑú« »« αẼÑαπ »α¿¼Ñαá »α¿óÑñѼ ñαπú«⌐
- óáα¿á¡Γ Σπ¡¬µ¿¿ ATOI, »αÑ«íαáºπεΘÑ⌐ ßΓ᫬π ó ÑÑ τ¿ß½Ñ¡¡δ⌐
- φ¬ó¿óá½Ñ¡Γ. ¥Γ«Γ óáα¿á¡Γ ∩ó½∩ÑΓß∩ í«½ÑÑ «íΘ¿¼; «¡ ñ«»π߬áÑΓ
- »α¿ßπΓßΓó¿Ñ ó ¡áτá½Ñ ß¿¼ó«½«ó »πßΓδσ »α«¼ÑªπΓ¬«ó ¿ º¡á¬á +
- ¿½¿ -. (é ú½áóÑ 4 »α¿óÑñÑ¡á Σπ¡¬µ¿∩ ATOF, ¬«Γ«αá∩ óδ»«½¡∩ÑΓ
- Γ« ªÑ ßá¼«Ñ »αÑ«íαẫóá¡¿Ñ ñ½∩ τ¿ßѽ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐).
- ÄíΘá∩ ßσÑ¼á »α«úαá¼¼δ «ΓαáªáÑΓ Σ«α¼π »«ßΓπ»áεΘ¿σ ñá¡¡δσ:
-
- - »α«»πßΓ¿Γ∞ »πßΓ«⌐ »α«¼ÑªπΓ«¬, Ñß½¿ «¡ ¿¼ÑÑΓß∩
- - ¿ºó½Ñτ∞ º¡á¬, Ñß½¿ «¡ ¿¼ÑÑΓß∩
-
- - ¿ºó½Ñτ∞ µÑ½πε τáßΓ∞ ¿ »αÑ«íαẫóáΓ∞ ÑÑ
-
- èáªñδ⌐ Φáú óδ»«½¡∩ÑΓ ßó«ε τáßΓ∞ αáí«Γδ ¿ «ßΓáó½∩ÑΓ óßÑ ó
- »«ñú«Γ«ó½Ñ¡¡«¼ ß«ßΓ«∩¡¿¿ ñ½∩ ß½ÑñπεΘÑ⌐ τáßΓ¿. éÑß∞ »α«µÑßß
- ºá¬á¡τ¿óáÑΓß∩ ¡á »Ñαó«¼ ß¿¼ó«½Ñ, ¬«Γ«αδ⌐ ¡Ñ ¼«ªÑΓ íδΓ∞
- τáßΓ∞ε τ¿ß½á.
-
- ATOI(S) /* CONVERT S TO INTEGER */
- CHAR S[];
- {
- INT I, N, SIGN;
- FOR(I=0;S[I]==' ' \!\!
- S[I]=='\N' \!\! S[I]=='\T';I++)
- ; /* SKIP WHITE SPACE */
- SIGN = 1;
- IF(S[I] == '+' \!\! S[I] == '-') /* SIGN */
- SIGN = (S[I++]=='+') ? 1 : - 1;
- FOR( N = 0; S[I] >= '0' && S[I] <= '9'; I++)
- N = 10 * N + S[I] - '0';
- RETURN(SIGN * N);
- }
-
- ÅαÑ¿¼πΘÑßΓóá µÑ¡Γα὿ºáµ¿¿ π»αáó½Ñ¡¿∩ µ¿¬½«¼ ßΓá¡«ó∩Γß∩
- ÑΘÑ í«½ÑÑ «τÑó¿ñ¡δ¼¿, ¬«úñá ¿¼ÑÑΓß∩ ¡Ñ߬«½∞¬« 󽫪ѡ¡δσ µ¿¬-
- ½«ó. æ½ÑñπεΘá∩ Σπ¡¬µ¿∩ ß«αΓ¿απÑΓ ¼áßß¿ó µÑ½δσ τ¿ßѽ »« ¼ÑΓ«-
- ñπ Φѽ½á. «ß¡«ó¡á∩ ¿ñÑ∩ ß«αΓ¿α«ó¬¿ »« Φѽ½π ºá¬½ετáÑΓß∩ ó
- Γ«¼, τΓ« ß¡áτá½á ßαáó¡¿óáεΓß∩ πñá½Ñ¡¡δÑ φ½Ñ¼Ñ¡Γδ, á ¡Ñ ß¼Ñª-
- ¡δÑ, ¬á¬ ó «íδτ¡«¼ ¼ÑΓ«ñÑ ß«αΓ¿α«ó¬¿. ¥Γ« »α¿ó«ñ¿Γ ¬ íδßΓα«-
- ¼π πßΓαá¡Ñ¡¿ε í«½∞Φ«⌐ τáßΓ¿ ¡Ñπ»«α∩ñ«τÑ¡¡«ßΓ¿ ¿ ß«¬αáΘáÑΓ
- »«ß½ÑñπεΘπε αáí«Γπ. ê¡ΓÑαóá½ ¼Ñªñπ φ½Ñ¼Ñ¡ΓἿ »«ßΓѻѡ¡«
- ß«¬αáΘáÑΓß∩ ñ« Ññ¿¡¿µδ, ¬«úñá ß«αΓ¿α«ó¬á Σá¬Γ¿τÑ߬¿ »αÑóαá-
- ΘáÑΓß∩ ó ¼ÑΓ«ñ »ÑαÑßΓá¡«ó¬¿ ß«ßÑñ¡¿σ φ½Ñ¼Ñ¡Γ«ó.
-
-
- - 67 -
-
- SHELL(V, N) /* SORT V[0]...V[N-1]
- INTO INCREASING ORDER */
- INT V[], N;
- {
- INT GAP, I, J, TEMP;
-
- FOR (GAP = N/2; GAP > 0; GAP /= 2)
- FOR (I = GAP; I < N; I++)
- FOR (J=I-GAP; J>=0 && V[J]>V[J+GAP]; J-=GAP) {
- TEMP = V[J];
- V[J] = V[J+GAP];
- V[J+GAP] = TEMP;
- }
- }
-
- çñÑß∞ ¿¼ÑεΓß∩ Γα¿ ó½«ªÑ¡¡δσ µ¿¬½á. æá¼δ⌐ ó¡ÑΦ¡¿⌐ µ¿¬½ π»αáó-
- ½∩ÑΓ ¿¡ΓÑαóὫ¼ ¼Ñªñπ ßαáó¡¿óáÑ¼δ¼¿ φ½Ñ¼Ñ¡ΓἿ, π¼Ñ¡∞Φá∩ Ñú«
- «Γ N/2 óñó«Ñ »α¿ ¬áªñ«¼ »α«σ«ñÑ, »«¬á «¡ ¡Ñ ßΓá¡ÑΓ αáó¡δ¼
- ¡π½ε. æαÑñ¡¿⌐ µ¿¬½ ßαáó¡¿óáÑΓ ¬áªñπε »áαπ φ½Ñ¼Ñ¡Γ«ó, αáºñÑ-
- ½Ñ¡¡δσ ¡á óѽ¿τ¿¡π ¿¡ΓÑαóá½á; ßá¼δ⌐ ó¡πΓαÑ¡¡¿⌐ µ¿¬½ »ÑαÑß-
- Γáó½∩ÑΓ ½εíπε ¡Ñπ»«α∩ñ«τÑ¡¡πε »áαπ. Æá¬ ¬á¬ ¿¡ΓÑαóá½ ó ¬«¡µÑ
- ¬«¡µ«ó ßó«ñ¿Γß∩ ¬ Ññ¿¡¿µÑ, óßÑ φ½Ñ¼Ñ¡Γδ ó αѺπ½∞ΓáΓÑ π»«α∩-
- ñ«τ¿óáεΓß∩ »αáó¿½∞¡«. ÄΓ¼ÑΓ¿¼, τΓ« ó ß¿½π «íΘ¡«ßΓ¿ ¬«¡ßΓαπ¬-
- µ¿¿ FOR ó¡ÑΦ¡¿⌐ µ¿¬½ π¬½áñδóáÑΓß∩ ó Γπ ªÑ ßá¼πε Σ«α¼π, τΓ« ¿
- «ßΓá½∞¡δÑ, σ«Γ∩ «¡ ¿ ¡Ñ ∩ó½∩ÑΓß∩ áα¿Σ¼ÑΓ¿τÑ߬«⌐ »α«úαÑßß¿Ñ⌐.
- ū߽Ññ¡Ñ⌐ «»ÑαᵿÑ⌐ ∩ºδ¬á "C" ∩ó½∩ÑΓß∩ ºá»∩Γá∩ ",", ¬«-
- Γ«αá∩ τáΘÑ óßÑú« ¿ß»«½∞ºπÑΓß∩ ó «»ÑαáΓ«αÑ FOR. äóá óδαáªÑ-
- ¡¿∩, αáºñѽѡ¡δÑ ºá»∩Γ«⌐, óδτ¿ß½∩εΓß∩ ß½Ñóá ¡á»αáó«, »α¿τѼ
- Γ¿»«¼ ¿ º¡áτÑ¡¿Ñ¼ αѺπ½∞ΓáΓá ∩ó½∩εΓß∩ Γ¿» ¿ º¡áτÑ¡¿Ñ »αáó«ú«
- «»Ñαá¡ñá. Æá¬¿¼ «íαẫ¼, ó αẽ¿τ¡δÑ τáßΓ¿ «»ÑαáΓ«αá FOR
- ¼«ª¡« ó¬½ετ¿Γ∞ ¡Ñ߬«½∞¬« óδαáªÑ¡¿⌐, ¡á»α¿¼Ñα, ñ½∩ »áαώѽ∞-
- ¡«ú« ¿º¼Ñ¡Ñ¡¿∩ ñóπσ ¿¡ñѬ߫ó. ¥Γ« ¿½½εßΓα¿απÑΓß∩ Σπ¡¬µ¿Ñ⌐
- REVERSE(S), ¬«Γ«αá∩ αáß»«½áúáÑΓ ßΓ᫬π S ó «íαáΓ¡«¼ »«α∩ñ¬Ñ
- ¡á Γ«¼ ªÑ ¼ÑßΓÑ.
-
- REVERSE(S) /* REVERSE STRING S IN PLACE */
- CHAR S[];
- {
- INT C, I, J;
-
- FOR(I = 0, J = STRLEN(S) - 1; I < J; I++, J--) {
- C = S[I];
- S[I] = S[J];
- S[J] = C;
- }
- }
-
- çá»∩ΓδÑ, ¬«Γ«αδÑ αáºñѽ∩εΓ áαúπ¼Ñ¡Γδ Σπ¡¬µ¿⌐, »ÑαѼѡ¡δÑ ó
- «»¿ßá¡¿∩σ ¿ Γ.ñ., ¡Ñ ¿¼ÑεΓ «Γ¡«ΦÑ¡¿∩ ¬ «»Ñαᵿ¿ ºá»∩Γá∩ ¿ ¡Ñ
- «íÑß»Ñτ¿óáεΓ óδτ¿ß½Ñ¡¿⌐ ß½Ñóá ¡á»αáó«.
-
-
- - 68 -
-
- ô»α᪡ѡ¿Ñ 3-2.
- ---------------
- æ«ßΓáó∞ΓÑ »α«úαá¼¼π ñ½∩ Σπ¡¬µ¿¿ EXPAND(S1,S2), ¬«Γ«αá∩
- αáßΦ¿α∩ÑΓ ß«¬αáΘÑ¡¡δÑ «í«º¡áτÑ¡¿∩ ó¿ñá á-Z ¿º ßΓ᫬¿ S1 ó
- φ¬ó¿óá½Ñ¡Γ¡δ⌐ »«½¡δ⌐ ß»¿ß«¬ áóß...XYZ ó S2. ä«»π߬áεΓß∩ ß«¬-
- αáΘÑ¡¿∩ ñ½∩ ßΓα«τ¡δσ ¿ »α«»¿ß¡δσ íπ¬ó ¿ µ¿Σα. üπñ∞ΓÑ ú«Γ«óδ
- ¿¼ÑΓ∞ ñѽ« ß« ß½πτá∩¼¿ Γ¿»á á-ó-ß, á-Z0-9 ¿ -á-Z. (Å«½Ñº¡«Ñ
- ß«ú½áΦÑ¡¿Ñ ß«ßΓ«¿Γ ó Γ«¼, τΓ« ß¿¼ó«½ -, ßΓ«∩Θ¿⌐ ó ¡áτá½Ñ ¿½¿
- ¬«¡µÑ, ó«ß»α¿¡¿¼áÑΓß∩ íπ¬óá½∞¡«).
-
- 3.6. û¿¬½ DO - WHILE
-
- èᬠπªÑ «Γ¼ÑτὫß∞ ó ú½áóÑ 1, µ¿¬½δ WHILE ¿ FOR «í½áñáεΓ
- ΓѼ »α¿∩Γ¡δ¼ ßó«⌐ßΓó«¼, τΓ« ó ¡¿σ »α«óÑα¬á «¬«¡τá¡¿∩ «ßπΘÑß-
- Γó½∩ÑΓß∩ ó ¡áτá½Ñ, á ¡Ñ ó ¬«¡µÑ µ¿¬½á. ÆαÑΓ¿⌐ «»ÑαáΓ«α µ¿¬½á
- ∩ºδ¬á "C", DO-WHILE, »α«óÑα∩ÑΓ πß½«ó¿Ñ «¬«¡τá¡¿∩ ó ¬«¡µÑ,
- »«ß½Ñ ¬áªñ«ú« »α«σ«ñá τÑαѺ Γѽ« µ¿¬½á; Γѽ« µ¿¬½á óßÑúñá
- óδ»«½¡∩ÑΓß∩ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ «ñ¿¡ αáº. æ¿¡Γá¬ß¿ß φΓ«ú« «»Ñαá-
- Γ«αá ¿¼ÑÑΓ ó¿ñ:
-
- DO
- «»ÑαáΓ«α
- WHILE (óδαáªÑ¡¿Ñ)
-
- æ¡áτá½á óδ»«½¡∩ÑΓß∩ «»ÑαáΓ«α, ºáΓѼ óδτ¿ß½∩ÑΓß∩ óδαáªÑ¡¿Ñ.
- àß½¿ «¡« ¿ßΓ¿¡¡«, Γ« «»ÑαáΓ«α óδ»«½¡∩ÑΓß∩ ß¡«óá ¿ Γ.ñ. àß½¿
- óδαáªÑ¡¿Ñ ßΓá¡«ó¿Γß∩ ½«ª¡δ¼, µ¿¬½ ºá¬á¡τ¿óáÑΓß∩.
-
- èᬠ¿ ¼«ª¡« í佫 «ª¿ñáΓ∞, µ¿¬½ DO-WHILE ¿ß»«½∞ºπÑΓß∩
- º¡áτ¿Γѽ∞¡« αѪÑ, τѼ WHILE ¿ FOR, ß«ßΓáó½∩∩ »α¿¼Ñα¡« »∩Γ∞
- »α«µÑ¡Γ«ó «Γ óßÑσ µ¿¬½«ó. ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, ¿¡«úñá «¡ «¬áºδóáÑΓ-
- ß∩ »«½Ñº¡δ¼, ¬á¬, ¡á»α¿¼Ñα, ó ß½ÑñπεΘÑ⌐ Σπ¡¬µ¿¿ ITOA, ¬«Γ«-
- αá∩ »αÑ«íαáºπÑΓ τ¿ß½« ó ß¿¼ó«½∞¡πε ßΓ᫬π («íαáΓ¡á∩ Σπ¡¬µ¿¿
- ATOI). ¥Γá ºáñáτá «¬áºδóáÑΓß∩ ¡Ñ߬«½∞¬« í«½ÑÑ ß½«ª¡«⌐, τѼ
- ¼«ªÑΓ »«¬áºáΓ∞ß∩ ß¡áτá½á. äѽ« ó Γ«¼, τΓ« »α«ßΓδÑ ¼ÑΓ«ñδ óδ-
- ñѽѡ¿∩ µ¿Σα úÑ¡Ñα¿απεΓ ¿σ ó ¡Ñ»αáó¿½∞¡«¼ »«α∩ñ¬Ñ. îδ »αÑñ-
- »«τ½¿ »«½πτ¿Γ∞ ßΓ᫬π ó «íαáΓ¡«¼ »«α∩ñ¬Ñ, á ºáΓѼ «íαáΓ¿Γ∞
- ÑÑ.
-
- - 69 -
-
-
- ITOA(N,S) /*CONVERT N TO CHARACTERS IN S */
- CHAR S[];
- INT N;
- {
- INT I, SIGN;
-
- IF ((SIGN = N) < 0) /* RECORD SIGN */
- N = -N; /* MAKE N POSITIVE */
- I = 0;
- DO { /* GENERATE DIGITS IN REVERSE ORDER */
- S[I++] = N % 10 + '0';/* GET NEXT DIGIT */
- } WHILE ((N /=10) > 0); /* DELETE IT */
- IF (SIGN < 0)
- S[I++] = '-'
- S[I] = '\0';
- REVERSE(S);
- }
-
- û¿¬½ DO-WHILE ºñÑß∞ ¡Ñ«íσ«ñ¿¼, ¿½¿ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ πñ«íÑ¡,
- »«ß¬«½∞¬π, ¬á¬«ó« íδ ¡¿ í佫 º¡áτÑ¡¿Ñ N, ¼áßß¿ó S ñ«½ªÑ¡ ß«-
- ñÑαªáΓ∞ σ«Γ∩ íδ «ñ¿¡ ß¿¼ó«½. îδ ºá¬½ετ¿½¿ ó Σ¿úπα¡δÑ ß¬«í¬¿
- «ñ¿¡ «»ÑαáΓ«α, ß«ßΓáó½∩εΘ¿⌐ Γѽ« DO-WHILÑ, σ«Γ∩ φΓ« ¿ ¡Ñ
- «í∩ºáΓѽ∞¡«, ñ½∩ Γ«ú«, τΓ«íδ Γ«α«»½¿óδ⌐ τ¿ΓáΓѽ∞ ¡Ñ »α¿¡∩½
- τáßΓ∞ WHILE ºá ¡áτὫ «»ÑαáΓ«αá µ¿¬½á WHILE.
- ô»α᪡ѡ¿Ñ 3-3.
- --------------
- Åα¿ »αÑñßΓáó½Ñ¡¿¿ τ¿ßѽ ó ñó«¿τ¡«¼ ñ«»«½¡¿Γѽ∞¡«¼ ¬«ñÑ
- ¡áΦ óáα¿á¡Γ ITOA ¡Ñ ß»αáó½∩ÑΓß∩ ß ¡á¿í«½∞Φ¿¼ «Γα¿µáΓѽ∞¡δ¼
- τ¿ß½«¼, Γ.Ñ. æ« º¡áτÑ¡¿Ñ¼ N αAó¡δ¼ -2 ó ßΓѻѡ¿ ¼-1, úñÑ ¼ -
- αẼÑα ß½«óá. «íΩ∩ß¡¿ΓÑ »«τѼπ. 꺼ѡ¿ΓÑ »α«úαá¼¼π Γá¬, τΓ«-
- íδ «¡á »αáó¿½∞¡« »ÑτáΓá½á φΓ« º¡áτÑ¡¿Ñ ¡á ½εí«⌐ ¼áΦ¿¡Ñ.
-
- ô»α᪡ѡ¿Ñ 3-4.
- --------------
- ìá»¿Φ¿ΓÑ á¡á½«ú¿τ¡πε Σπ¡¬µ¿ε ITOB(N,S), ¬«Γ«αá∩ »αÑ«íαá-
- ºπÑΓ µÑ½«Ñ íѺ º¡á¬á N ó Ñú« ñó«¿τ¡«Ñ ß¿¼ó«½∞¡«Ñ »αÑñßΓáó½Ñ-
- ¡¿Ñ ó S. çá»α«úαá¼¼¿απ⌐ΓÑ Σπ¡¬µ¿ε ITOH, ¬«Γ«αá∩ »αÑ«íαáºπÑΓ
- µÑ½«Ñ ó ΦÑßΓ¡áñµáΓÑα¿τ¡«Ñ »αÑñßΓáó½Ñ¡¿Ñ.
- ô»α᪡ѡ¿Ñ 3-5.
- ---------------
- ìá»¿Φ¿ΓÑ óáα¿á¡Γ IΓ«á, ¬«Γ«αδ⌐ ¿¼ÑÑΓ Γα¿, á ¡Ñ ñóá áαúπ-
- ¼Ñ¡Γá. ÆαÑΓ¿⌐ áαúπ¼Ñ¡Γ - ¼¿¡¿¼á½∞¡á∩ Φ¿α¿¡á »«½∩; »αÑ«íαẫ-
- óá¡¡«Ñ τ¿ß½« ñ«½ª¡«, Ñß½¿ φΓ« ¡Ñ«íσ«ñ¿¼«, ñ«»«½¡∩Γ∞ß∩ ß½Ñóá
- »α«íѽἿ, ΓᬠτΓ«íδ «¡« ¿¼Ñ½« ñ«ßΓáΓ«τ¡πε Φ¿α¿¡π.
-
- - 70 -
-
-
- 3.7. Ä»ÑαáΓ«α BREAK
-
- ê¡«úñá íδóáÑΓ πñ«í¡δ¼ ¿¼ÑΓ∞ 󫺼«ª¡«ßΓ∞ π»αáó½∩Γ∞ óδσ«-
- ñ«¼ ¿º µ¿¬½á ¿¡áτÑ, τѼ »α«óÑᬫ⌐ πß½«ó¿∩ ó ¡áτá½Ñ ¿½¿ ó
- ¬«¡µÑ. Ä»ÑαáΓ«α BRÑᬠ»«ºó«½∩ÑΓ óδ⌐Γ¿ ¿º «»ÑαáΓ«α«ó FOR,
- WHILE ¿ DO ñ« «¬«¡τá¡¿∩ µ¿¬½á Γ«τ¡« ΓᬠªÑ, ¬á¬ ¿ ¿º »ÑαѬ-
- ½ετáΓѽ∩. Ä»ÑαáΓ«α BRÑᬠ»α¿ó«ñ¿Γ ¬ ¡Ñ¼Ññ½Ñ¡¡«¼π óδσ«ñπ ¿º
- ßἫú« ó¡πΓαÑ¡¡Ñú« «σóáΓδóáεΘÑú« Ñú« µ¿¬½á (¿½¿ »ÑαѬ½ετáΓÑ-
- ½∩).
- æ½ÑñπεΘá∩ »α«úαá¼¼á πñá½∩ÑΓ σó«ßΓ«óδÑ »α«íÑ½δ ¿ Γáíπ½∩-
- µ¿¿ ¿º ¬«¡µá ¬áªñ«⌐ ßΓ᫬¿ Σá⌐½á óó«ñá. Ä¡á ¿ß»«½∞ºπÑΓ «»Ñ-
- αáΓ«α BRÑᬠñ½∩ óδσ«ñá ¿º µ¿¬½á, ¬«úñá ¡á⌐ñÑ¡ ¬αá⌐¡¿⌐ »αáóδ⌐
- «Γ½¿τ¡δ⌐ «Γ »α«íÑ½á ¿ Γáíπ½∩µ¿¿ ß¿¼ó«½.
-
- #DEFINE MAXLINE 1000
- MAIN() /* REMOVE TRAILING BLANKS AND TABS */
- {
- INT N;
- CHAR LINE[MAXLINE];
-
- WHILE ((N = GETLINE(LINE,MAXLINE)) > 0) {
- WHILE (--N >= 0)
- IF (LINE[N] != ' ' && LINE[N] != '\T'
- && LINE[N] != '\N')
- BREAK;
- LINE[N+1] = '\0';
- PRINTF("%S\N",LINE);
- }
- }
-
- öπ¡¬µ¿∩ GETLINE ó«ºóαáΘáÑΓ ñ½¿¡π ßΓ᫬¿. é¡πΓαÑ¡¡¿⌐ µ¿¬½
- ¡áτ¿¡áÑΓß∩ ß »«ß½Ññ¡Ñú« ß¿¼ó«½á LINE (¡á»«¼¡¿¼, τΓ« --N
- π¼Ñ¡∞ΦáÑΓ N ñ« ¿ß»«½∞º«óá¡¿∩ Ñú« º¡áτÑ¡¿∩) ¿ ñó¿ªÑΓß∩ ó «í-
- αáΓ¡«¼ ¡á»αáó½Ñ¡¿¿ ó »«¿ß¬Ñ »Ñαó«ú« ß¿¼ó«½á , ¬«Γ«αδ⌐ «Γ½¿-
- τÑ¡ «Γ »α«íѽá, Γáíπ½∩µ¿¿ ¿½¿ ¡«ó«⌐ ßΓ᫬¿. û¿¬½ »αÑαδóáÑΓ-
- ß∩, ¬«úñá ½¿í« ¡á⌐ñÑ¡ Γᬫ⌐ ß¿¼ó«½, ½¿í« N ßΓá¡«ó¿Γß∩ «Γα¿-
- µáΓѽ∞¡δ¼ (Γ.Ñ., ¬«úñá »α«ß¼«ΓαÑ¡á óß∩ ßΓ᫬á). æ«óÑΓπѼ óá¼
- πíÑñ¿Γ∞ß∩, τΓ« Γá¬«Ñ »«óÑñÑ¡¿Ñ »αáó¿½∞¡« ¿ ó Γ«¼ ß½πτáÑ,
- ¬«úñá ßΓ᫬á ß«ßΓ«¿Γ Γ«½∞¬« ¿º ß¿¼ó«½«ó »πßΓδσ »α«¼ÑªπΓ¬«ó.
- é ¬áτÑßΓóÑ á½∞ΓÑα¡áΓ¿óδ ¬ BRÑᬠ¼«ª¡« óóÑßΓ¿ »α«óÑα¬π ó
- ßá¼ µ¿¬½:
-
- WHILE ((N = GETLINE(LINE,MAXLINE)) > 0) {
- WHILE (--N >= 0
- && (LINE[N] == ' ' \!\! LINE[N] == '\T'
- \!\! LINE[N] == '\N'))
- ;
- ...
- }
-
- - 71 -
-
- ¥Γ« πßΓπ»áÑΓ »αÑñδñπΘѼπ óáα¿á¡Γπ, Γᬠ¬á¬ »α«óÑα¬á ßΓá¡«-
- ó¿Γß∩ Γαπñ¡ÑÑ ñ½∩ »«¡¿¼á¡¿∩. Åα«óÑ᫬, ¬«Γ«αδÑ ΓαÑíπεΓ »Ñ-
- αÑ»½ÑΓÑ¡¿∩ &&, \!\!, ! ê ¬απú½δσ ߬«í«¬, »« 󫺼«ª¡«ßΓ¿ ß½Ñ-
- ñπÑΓ ¿ºíÑúáΓ∞.
-
- 3.8. Ä»ÑαáΓ«α CONTINUE
-
- Ä»ÑαáΓ«α CONTINUE α«ñßΓóѡѡ «»ÑαáΓ«απ BRÑá¬, ¡« ¿ß»«½∞-
- ºπÑΓß∩ αѪÑ; «¡ »α¿ó«ñ¿Γ ¬ ¡áτá½π ß½ÑñπεΘÑ⌐ ¿ΓÑαᵿ¿ «σóáΓδ-
- óáεΘÑú« µ¿¬½á (FOR, WHILE, DO ). é µ¿¬½áσ WHILE ¿ DO φΓ« «º-
- ¡áτáÑΓ ¡Ñ»«ßαÑñßΓóÑ¡¡δ⌐ »ÑαÑσ«ñ ¬ óδ»«½¡Ñ¡¿ε »α«óÑα«τ¡«⌐
- τáßΓ¿; ó µ¿¬½Ñ FOR π»αáó½Ñ¡¿Ñ »ÑαÑñáÑΓß∩ ¡á Φáú αÑ¿¡¿µ¿á½¿-
- ºáµ¿¿. (Ä»ÑαáΓ«α CONTINUE »α¿¼Ñ¡∩ÑΓß∩ Γ«½∞¬« ó µ¿¬½áσ, ¡« ¡Ñ
- ó »ÑαѬ½ετáΓѽ∩σ. Ä»ÑαáΓ«α CONTINUE ó¡πΓα¿ »ÑαѬ½ετáΓѽ∩
- ó¡πΓα¿ µ¿¬½á óδºδóáÑΓ óδ»«½¡Ñ¡¿Ñ ß½ÑñπεΘÑ⌐ ¿ΓÑαᵿ¿ µ¿¬½á).
- é ¬áτÑßΓóÑ »α¿¼Ñαá »α¿óÑñѼ Σαáú¼Ñ¡Γ, ¬«Γ«αδ⌐ «íαáíáΓδ-
- óáÑΓ Γ«½∞¬« »«½«ª¿Γѽ∞¡δÑ φ½Ñ¼Ñ¡Γδ ¼áßß¿óá á; «Γα¿µáΓѽ∞¡δÑ
- º¡áτÑ¡¿∩ »α«»π߬áεΓß∩.
-
- FOR (I = 0; I < N; I++) {
- IF (A[I] < 0) /* SKIP NEGATIVE ELEMENTS */
- CONTINUE;
- ... /* DO POSITIVE ELEMENTS */
- }
-
- Ä»ÑαáΓ«α CONTINUE τáßΓ« ¿ß»«½∞ºπÑΓß∩, ¬«úñá »«ß½ÑñπεΘá∩
- τáßΓ∞ µ¿¬½á «¬áºδóáÑΓß∩ ß½¿Φ¬«¼ ß½«ª¡«⌐, ΓᬠτΓ« αáßß¼«ΓαÑ-
- ¡¿Ñ πß½«ó¿∩, «íαáΓ¡«ú« »α«óÑα∩Ѽ«¼π, »α¿ó«ñ¿Γ ¬ ß½¿Φ¬«¼ ú½π-
- í«¬«¼π πα«ó¡ε 󽫪ѡ¡«ßΓ¿ »α«úαá¼¼δ.
-
- ô»α᪡ѡ¿Ñ 3-6.
- --------------
-
- ìá»¿Φ¿ΓÑ »α«úαá¼¼π ¬«»¿α«óá¡¿∩ óó«ñá ¡á óδó«ñ, ß ΓѼ ¿ß-
- ¬½ετÑ¡¿Ñ¼, τΓ« ¿º ¬áªñ«⌐ úαπ»»δ »«ß½Ññ«óáΓѽ∞¡δσ «ñ¿¡á¬«óδσ
- ßΓ᫬ óδó«ñ¿Γß∩ Γ«½∞¬« «ñ¡á. (¥Γ« »α«ßΓ«⌐ óáα¿á¡Γ πΓ¿½¿Γδ
- UNIQ ß¿ßΓѼ UNIX).
-
- 3.9. Ä»ÑαáΓ«α GOTO ¿ ¼ÑΓ¬¿
-
- é ∩ºδ¬Ñ "C" »αÑñπß¼«ΓαÑ¡ ¿ «»ÑαáΓ«α GOTO, ¬«Γ«αδ¼ íÑ߬«-
- ¡Ñτ¡« º½«π»«ΓαÑí½∩εΓ, ¿ ¼ÑΓ¬¿ ñ½∩ óÑΓó½Ñ¡¿∩. æ Σ«α¼á½∞¡«⌐
- Γ«τ¬¿ ºαÑ¡¿∩ «»ÑαáΓ«α GOTO ¡¿¬«úñá ¡Ñ ∩ó½∩ÑΓß∩ ¡Ñ«íσ«ñ¿¼δ¼,
- ¿ ¡á »αá¬Γ¿¬Ñ »«τΓ¿ óßÑúñá ¼«ª¡« «í«⌐Γ¿ß∞ íѺ ¡Ñú«. îδ ¡Ñ
- ¿ß»«½∞º«ó὿ GOTO ó φΓ«⌐ ¬¡¿úÑ.
- ÆÑ¼ ¡Ñ ¼Ñ¡ÑÑ, ¼δ π¬áªÑ¼ ¡Ñ߬«½∞¬« ß¿Γπᵿ⌐, úñÑ «»ÑαáΓ«α
- GOTO ¼«ªÑΓ ¡á⌐Γ¿ ßó«Ñ ¼ÑßΓ«. ìá¿í«½ÑÑ σáαá¬ΓÑα¡δ¼ ∩ó½∩ÑΓß∩
- Ñú« ¿ß»«½∞º«óá¡¿Ñ Γ«úñá, ¬«úñá ¡πª¡« »αÑαóáΓ∞ óδ»«½¡Ñ¡¿Ñ ó
- ¡Ñ¬«Γ«α«⌐ ú½πí«¬« 󽫪ѡ¡«⌐ ßΓαπ¬ΓπαÑ, ¡á»α¿¼Ñα, óδ⌐Γ¿ ßαáºπ
- ¿º ñóπσ µ¿¬½«ó. çñÑß∞ ¡Ñ½∞º∩ ¡Ñ»«ßαÑñßΓóÑ¡¡« ¿ß»«½∞º«óáΓ∞
- «»ÑαáΓ«α BRÑá¬, Γᬠ¬á¬ «¡ »αÑαδóáÑΓ Γ«½∞¬« ßá¼δ⌐ ó¡πΓαÑ¡¡¿⌐
- µ¿¬½. Å«φΓ«¼π:
-
- - 72 -
-
- FOR ( ... )
- FOR ( ... ) {
- ...
- IF (DISASTER)
- GOTO ERROR;
- }
- ...
-
- ERROR:
- CLEAN UP THE MESS
-
- àß½¿ »α«úαá¼¼á «íαáí«Γ¬¿ «Φ¿í«¬ ¡ÑΓα¿ó¿á½∞¡á ¿ «Φ¿í¬¿ ¼«úπΓ
- 󫺡¿¬áΓ∞ ó ¡Ñ߬«½∞¬¿σ ¼ÑßΓáσ, Γ« Γá¬á∩ «αúá¡¿ºáµ¿∩ «¬áºδóá-
- ÑΓß∩ πñ«í¡«⌐. îÑΓ¬á ¿¼ÑÑΓ Γá¬πε ªÑ Σ«α¼π, τΓ« ¿ ¿¼∩ »ÑαѼѡ-
- ¡«⌐, ¿ ºá ¡Ñ⌐ óßÑúñá ß½ÑñπÑΓ ñó«ÑΓ«τ¿Ñ. îÑΓ¬á ¼«ªÑΓ íδΓ∞
- »α¿»¿ßá¡á ¬ ½εí«¼π «»ÑαáΓ«απ Γ«⌐ ªÑ Σπ¡¬µ¿¿, ó ¬«Γ«α«⌐ ¡áσ«-
- ñ¿Γß∩ «»ÑαáΓ«α GOTO.
- é ¬áτÑßΓóÑ ñαπú«ú« »α¿¼Ñαá αáßß¼«Γα¿¼ ºáñáτπ ¡áσ«ªñÑ¡¿∩
- »Ñαó«ú« «Γα¿µáΓѽ∞¡«ú« φ½Ñ¼Ñ¡Γá ó ñóπ¼Ñα¡«¼ ¼áßß¿óÑ. (î¡«ú«-
- ¼Ñα¡δÑ ¼áßß¿óδ αáßß¼áΓα¿óáεΓß∩ ó ú½áóÑ 5). é«Γ «ñ¡á ¿º ó«º-
- ¼«ª¡«ßΓÑ⌐:
-
- FOR (I = 0; I < N; I++)
- FOR (J = 0; J < M; J++)
- IF (V[I][J] < 0)
- GOTO FOUND;
- /* DIDN'T FIND */
- ...
- FOUND:
- /* FOUND ONE AT POSITION I, J */
- ...
-
- Åα«úαá¼¼á, ¿ß»«½∞ºπεΘá∩ «»ÑαáΓ«α GOTO, óßÑúñá ¼«ªÑΓ íδΓ∞
- ¡á»¿ßá¡á íѺ ¡Ñú«, σ«Γ∩, 󫺼«ª¡«, ºá ßτÑΓ »«óΓ«αÑ¡¿∩ ¡Ñ¬«-
- Γ«αδσ »α«óÑ᫬ ¿ óóÑñÑ¡¿∩ ñ«»«½¡¿Γѽ∞¡δσ »ÑαѼѡ¡δσ. ìá»α¿-
- ¼Ñα, »α«úαá¼¼á »«¿ß¬á ó ¼áßß¿óÑ »α¿¼ÑΓ ó¿ñ:
-
- FOUND = 0;
- FOR (I = 0; I < N && !FOUND; I++)
- FOR (J = 0; J < M && !FOUND; J++)
- FOUND = V[I][J] < 0;
- IF (FOUND)
- /* IT WAS AT I-1, J-1 */
- ...
- ELSE
- /* NOT FOUND */
- ...
- ò«Γ∩ ¼δ ¡Ñ ∩ó½∩Ѽß∩ ó φΓ«¼ ó«»α«ßÑ ñ«ú¼áΓ¿¬á¼¿, ¡á¼ óßÑ
- ªÑ ¬áªÑΓß∩, τΓ« Ñß½¿ ¿ ¡πª¡« ¿ß»«½∞º«óáΓ∞ «»ÑαáΓ«α GOTO, Γ«
- óÑß∞¼á π¼ÑαÑ¡¡«.
-