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 |
댓글