C 프로그래밍 치트 시트 -4

4782 단어 c

4. 루프 제어 구조



때때로 우리는 코드의 일부가 두 번 이상 실행되기를 원합니다. 프로그램에서 코드를 반복하거나 대신 루프를 사용할 수 있습니다. 예를 들어 코드의 일부를 백 번 실행해야 하는 경우 코드를 반복하는 것은 실용적이지 않습니다. 또는 루프 내에서 반복 코드를 사용할 수 있습니다.

프로그램의 일부를 반복할 수 있는 세 가지 방법for, whiledo-while가 있습니다.

4.1 동안 루프


while 루프는 조건 또는 표현식과 단일 명령 또는 실행해야 하는 명령 블록으로 구성됩니다.
루프에서.

//for single statement  
while(expression) 
    statement;

//for multiple statement   
while(expression) 
{ 
    block of statement 
} 

while 루프 내의 명령문은 테스트 중인 조건이 true로 유지될 때까지 계속 실행됩니다. 조건이 false가 되면 제어는 while 루프의 본문 다음에 오는 첫 번째 문으로 전달됩니다.while의 일반적인 형태는 아래와 같다.

initialise loop counter;  
while (test loopcounter using a condition) 
{ 
    do this; 
    and this; 
    increment loopcounter;
} 


4.2 for 루프


for 루프는 while 루프와 비슷하지만 더 복잡합니다. for 루프는 루프가 실행될 횟수와 명령 섹션을 결정하는 제어 문으로 구성됩니다. 명령 섹션은 단일 명령 또는 명령 블록입니다.

//for single statement  
for(control statement) 
    statement;  

//for multiple statement
for(control statement) 
{ 
    block of statement 
} 


제어문 자체에는 세 부분이 있습니다.

for ( initialization; test condition; run every time command )



* `Initialization` part is performed only once at `for` loop start. We can initialize a loop variable here.
* `Test condition` is the most important part of the loop. Loop will continue to run if this condition is valid (true). If the condition becomes invalid (false) then the loop will terminate.
* `Run every time command` section will be performed in every loop cycle. We use this part to reach the final condition for terminating the loop. **For example** we can increase or decrease loop variable’s value in a way that after specified number of cycles the loop condition becomes invalid and `for` loop can terminate.

4.3 do-while 루프


whilefor 루프는 상단에서 종료 조건을 테스트합니다. 대조적으로, C의 세 번째 루프인 do-while 는 루프 본문을 통과할 때마다 맨 아래에서 테스트합니다. 본문은 항상 적어도 한 번 실행됩니다.
do의 구문은

do
{
    statements;
}while (expression);


명령문이 실행된 다음 표현식이 평가됩니다. 참이면 명령문이 다시 평가되는 식입니다. 표현식이 false가 되면 루프가 종료됩니다. 경험에 따르면 do-while는 while 및 for보다 훨씬 덜 사용됩니다. do-while 루프는 루프 내의 명령문이 한 번 이상 실행되도록 하는 데 사용됩니다.

4.4 중단 및 계속 문



우리는 이전에 break 구조에서 switch...case 문을 사용했습니다. 루프 내에서 "break"문을 사용하여 루프를 종료하고 (특정 조건으로) 종료할 수도 있습니다.

위의 예에서 루프 실행은 num>=20 또는 입력된 점수가 음수가 될 때까지 계속됩니다.

while (num<20) 
{ 
    printf("Enter score : "); 
    scanf("%d",&scores[num]); 
    if(scores[num]<0) 
        break; 
} 

Continue 문은 루프에서 사용할 수 있습니다. break 명령continue과 마찬가지로 프로그램의 흐름을 변경합니다. 그러나 루프를 종료하지는 않습니다. 현재 루프의 나머지 반복을 건너뛰고 루프의 시작점으로 돌아갑니다.

#include<stdio.h> 
main() 
{ 
    while((ch=getchar())!='\n') 
    { 
        if(ch=='.') 
            continue; 
        putchar(ch); 
    }  
} 


위의 예에서 프로그램은 모든 입력을 허용하지만 '.' 그 캐릭터. 텍스트는 입력할 때 에코되지만 Enter 키("\n"문자를 삽입하는 것과 동일)를 누른 후 기본 출력이 인쇄됩니다. 앞에서 말했듯이 getchar() 함수가 버퍼링된 입력 함수이기 때문입니다.

4.5 Goto 및 레이블



C는 무한 남용goto 명령문과 분기labels를 제공합니다. 공식적으로 goto 문은 절대 필요하지 않으며 실제로는 거의 항상 그것 없이 코드를 작성하는 것이 쉽습니다. 이 책에서는 goto를 사용하지 않았습니다.

그럼에도 불구하고 gotos 자리를 찾을 수 있는 몇 가지 상황이 있습니다. 가장 일반적인 것은 한 번에 두 개 이상의 루프를 끊는 것과 같이 깊게 중첩된 구조에서 처리를 포기하는 것입니다. break 문은 가장 안쪽 루프에서만 나오기 때문에 직접 사용할 수 없습니다. 따라서:

for ( ... )
{           
    for ( ... ) 
    {               
        ...               
        if (disaster)
        {                   
            goto error;
        }           
    }
}       
...   
error:       
/* clean up the mess */


이 구성은 오류 처리 코드가 간단하지 않고 여러 위치에서 오류가 발생할 수 있는 경우에 편리합니다.

Alabel는 변수명과 형태가 같고 뒤에 콜론이 붙는다. goto 와 동일한 기능의 모든 명령문에 첨부할 수 있습니다. 레이블의 범위는 전체 기능입니다.

주 - goto 를 사용하면 프로그램을 신뢰할 수 없고 읽을 수 없으며 디버그하기 어려워집니다. 그러나 많은 프로그래머가 goto 매혹적이라고 생각합니다.


여기에서 저를 팔로우해주세요 :)

좋은 웹페이지 즐겨찾기