본문 바로가기
Study/C++

[C++] 조건, 반복,배열

by Jamie Lim 2020. 3. 31.

1. 조건문

 1) if문

    - 조건식이 참이면 해당 코드를 실행하고, 거짓일 때 해당 코드를 실행하거나 아무것도 하지 않음

    - 보통 수행할 코드가 여러 줄이면 { }를 이용해 묶어줘야 함

 

< 기본 형식 > 

if (조건식1) { 

    참일 때 실행할 코드;     
    
} 
else if (조건식2) { 

    조건식2에 참일 때 실행할 코드; 
    
} 
else { 

    모든 조건식에 대해 거짓일 때 실행할 코드;
    
}

 

 

 

2) 중첩 if문

    - if문을 수행한 후 또 다른 if문을 사용할 수 있음

    - 가능하면 블록으로 코드를 범위를 명확히 해야 함

 

< 기본 형식 >

if (조건식1) {
    if (조건식2) {
    
	 실행할 코드;
        
    }
    else {
    
        실행할 코드;
        
    }
}
else {

  실행할 코드;
    
}

 

 

 3) switch ~ case문

    - 참과 거짓 이외의 다른 선택이 가능한 경우 사용

    - 여러 개 중 하나를 선택할 때 사용

    - 조건 값에 따라 그에 해당하는 case문을 실행

    - break는 switch~case문을 빠져나가게 해주기에 실행문의 마지막에 반드시 써야 함

      break가 모두 없다면 case1에 해당된 경우 실행할 코드 1~3이 모두 출려된다

 

< 기본 형식 >

switch (정수값) {

	case 정수값1 :
     	실행할 코드1;
        break;
        
    case 정수값2 :
       	실행할 코드2;
        break;
        
    case 정수값3 :
     	실행할 코드3;
        break;
        
}

 

 


 

2. 반복

  1) for문

    - 특정 문장을 반복하게 만들어 줌

    - 초기값이 조건식에 만족하지 않을 때까지 반복함

    - 초기식, 조건시, 증감식은 아예 없거나, 여러개를 지정해줘도 괜찮음

    - 초기식, 조건식, 증감식 아무것도 적지 않으면 무한루프로 실행됨

 

< 기본 형식 >

for ( 초기값; 조건식; 증감식; )
{ 

	반복할 문장;

}


< 예시 >

for ( int i = 1; i < 10; i++ )
{
	
    cout << i << endl;  // 1 ~ 9까지 출력됨

}

 

 

  2) 중첩 for문

    -  for문 내부에 또 다른 for문이 들어있는 형태

    - 총 반복되는 횟수는 바깥 for문 횟수 * 안쪽 for문 횟수이다

 

< 기본 형태 >

for ( 초기값1; 조건식1; 증감식1; )
{
	
    for ( 초기값2; 조건식2; 증감식2; )
    {
    
    	반복할 코드;
        
    }
    
}


< 예시 >

for ( int i = 1; i < 10; i++ )
{

	for ( j = 1; j < 10; j++ )
    {
    
    	cout << i*j;  // i와 j의 곱의 값 출력
        
    }
    
}

 

 

  3) while문

    - 조건식이 참인 동안 반복할 문장 수행함

    - 무한루프는 while(1)로 표현함 (1은 무조건 참이라는 뜻, 0은 false)

 

< 기본 형태 >

while (조건식)
{
	
    반복할 코드;
    
}

< 예시 >

int i = 1;
while ( i < 20 )
{

    cout << i << endl; // i가 20이 되기 전까지 i 출력
    i++;               // i + 1
    
}

 

 

  4) do ~ while문

    - 조건식을 확인하기 전에 반복할 문장을 먼저 실행

    - 무조건 한 번은 실행인 됨

    - 조건식이 아래에 위치함

 

< 기본 형태 >

do {

	반복할 코드;

} while ( 조건식 );


< 예시>

int i = 1;
do {

	cout << i << endl;
    i++;
    
} while ( i < 20 );

 

 

  5) 제어문

    - break문

        * 반복문에서 탈출할 때 사용

 

< 기본 형태 >

반복문 ()
{

    반복할 코드;
    break;   // 이때 반복문 탈출
    
}


< 예시 >

int i = 1;
while (1)
{

    cout << i << endl;
    i++;
    
    if ( i = 20 )
    	break;

}

   

 

    - continue문

        * 블록의 끝으로 이동한 후 반복문을 처음부터 다시 수행

        * continue 아래있는 코드들은 실행되지 않고 넘어감

 

< 기본 형태 >

반복문 ()
{

    반복할 코드1;
    continue;
    반복할 코드2;
    
}


< 예시 >

int i = 1;
while (1)
{

    i++;
    if ( i = 5 )   // i가 5일 때는 출력을 건너뜀
    	continue;
    cout << i << endl;
    
}

 

 

    - goto문

        * 지정한 위치(레이블)로 건너뛰거나 이동하게 하는 명령어

        * 잘못 사용하면 프로그램 흐름이 복잡해짐

        * 웬만하면 사용하지 않기

 

< 기본 형태 >

~ 코드 ~

goto 레이블명; //레이블 이름으로 이동

~ 코드 ~

goto문 레이블 :
	실행할 코드;

< 예시 >

while (1)
{

    i++;
    
    if ( i = 20 )
    	goto twenty; // while문을 벗어나 twenty 부분 실행
        
}

twenty :
	cout << i;

 

 

    - return문

        * 현재 실행중인 함수를 끝내고, 해당 함수를 호출한 곳으로 돌아가게 하는 제어문

        * return문을 만나면 프로그램이 종료됨

 

< 기본 형태 >

int main()
{

	~ 코드 ~

	return 0;  // 프로그램 종료

	~ 코드 ~

}

< 예제 >

int main()
{

    cout << "프로그램 시작" <<endl;
    return 0;  // 이 코들 실행히 프로그램 종료
    cout << "프로그램 종료";   // 출력 X

 

 


 

3. 배열

  1) 배열이란?

    - 여러 변수를 나란히 연결하는 느낌

       ex) 변수 a, b, c, d가 있었다면 대신, a[4]로 선언하여 a[0], a[1], a[2], a[3]으로 사용

    - 같은 자료형을 가진 연속된 메모리 공간으로 이루어짐

    - 같은 자료형을 가진 변수들이 여러 개 필요할 때 사용

    - 많은 양의 데이터를 처리할 때 유용  ex) 반마다 학생수를 int class[8]에 저장

    - (자료형) (배열이름) [배열 길이];로 배열 선언  ex) int a[3];

 

  2) 배열 초기화

int a[4];  // 선언 & 초기화 X

int a[] = {1, 2, 3, 4};  // 선언 & 초기화

int a[4] = {1, 2, 3, 4};  // 선언 & 초기화

int a[4] = {1, 2};  // 1, 2, 0, 0으로 초기화

int a[4] = {0}  // 모든 값을 0으로 초기화

 

  3) 문자열

    - 선언한 배열의 각각의 값에 문자가 하나씩 저장됨

    - 마지막에 '\0'로 널값을 넣어줘야 문자열이 됨

    - 문자열 처리는 <string.h> 파일을 호출해야 함

 

< 문자열 처리 함수들 >

#include <string.h>

char ss[8] ="ABCD"; // {'A', 'B', 'C', 'D', '\0')
// strcat()할 때 7문자가 들어가야 하기에 8공간 필요

// strlen() : 문자열의 길이를 출력해줌
int len = strlen(ss);  // len = 4

// strcpy() : 선언된 문자열 배열에 다른 문자열 대입
strcpy(ss, "EFG");  // ss는 "ABCD"에서 "EFGH"로 바뀜
// 만약 "EF"라면 {'E', 'F', '\0', 'D'}로 "EF"가 출력됨

// strcat() : 두 문자열을 이어줌, 널값부터 넣어줌
strcat(ss, "IJK");  // ss는 "EFGH"에서 "EFGHIJK"로 바뀜

// strcmp(A, B) : A와 B 문자열 비교, 0이면 두 문자열이 같고 다르면 0이외의 값
// A-B의 결과가 출력됨 -> 양수면 A가 사전순서로 뒤쪽, 음수면 A가 사전순서로 앞쪽
char tt[4] = "AAA"
strcmp(tt, ss);  // 0이 아닌 음수가 나올 것

 

  4) 2차원 배열

    - 1차원 배열을 여러 개 연결한 것

    - 두 개의 첨자(인자) 사용

 

 

    - 초기화 방법 (이 외에도 다른 방법도 있음)

방법 1

int a[2][2] = {
                {1, 2},
                {3, 4)
};


방법 2

int a[2][2];

a[0][0] = 1;
a[0][1] = 2;
a[1][0] = 3;
a[1][1] = 4;


방법 3

int a[2][2];
int n = 1;

for ( int i = 0; i < 2; i++ )
{

    for ( int j = 0; j < 2; j++)
    {
    
        a[i][j] = n;
        n++;
        
    }
    
}

 

  5) 3차원 배열

    - 2차원 배열 위에 또 다른 2차원 배열을 쌓음

    - 초기화는 2차원 배열 초기화와 비슷한 방식이므로 생략

 

 

< 참고 >
명품  C++ 프로그래밍 - 황기태

'Study > C++' 카테고리의 다른 글

[C++] 입출력, 연산자  (0) 2020.08.02
[C++] 클래스와 객체 & 객체 포인터  (1) 2020.05.31
[C++] 클래스와 객체  (0) 2020.05.24
[C++] 포인터, 함수  (0) 2020.04.07

댓글