제어구조, 배열
「제어구조」
- 순차 구조
- 선택 구조
- 반복 구조
「관계 연산자」: 두 개의 피 연산자를 비교하는 데 사용
- ==: 연산자 값이 같은지
- >,<: 연산자 값의 대소 유무(초과, 미만)
- != : 연산자가 다른지
- >=, <=: 연산자의 대소유무(이상, 이하)
「논리 연산자」: 여러 개의 조건을 조합하여 참인지 거짓인지 구분
- &&: AND연산, 두 비교 대상이 모두 참이면 참, 그렇지 않으면 거짓
- ||: OR연산, 두 비교 대상 중 한 가지만 참이어도 참, 둘 다 거짓이면 거짓
- ! x(x는 임시값): NOT연산, x가 참이면 거, x가 거짓이면 참
「if-else」
if(조건식){
문장1
}
else{
문장2
}
if(조건식){
문장1
}
else if{
문장2
}
else{
문장3
}
「switch」
> switch 문은 여러 개의 가능한 실행 경로 중에서 하나를 선택하는 데 사용한다.
> switch문은 switch문 안에 들어 있는 수식을 계산하여서 case절과 비교된다. 일치하는 case절이 있으면 case절의 문장들이 실행되다가 break문에 도달하면 종료된다. 만약 case절에서 일치하는 정수값을 찾지 못하면 최종적으로 default 절이 실행된다.
> switch문은 정수형에 대해서만 동작하는 것이 유리하다.
switch(제어식){
case c1:
문장;
break;
case c2:
문장2;
break;
default:
문장4:
break;
}
> 만약 case절 안에 break문이 없으면 다음 case절의 문장들을 계속하여 실행하게 된다. default문은 어떤 case문과도 일치하지 않는 경우에 선택되어 실행된다. default 문은 없을 수도 있지만, 미처 예상하지 못한 값을 알아내기 위하여 가급적 default문을 포함시키는 것이 좋다.
「while」: 같은 처리 과정을 여러번 되풀이하는 구조. 조건식이 만족되면 반복을 계속 구한다.
while(조건식)
실행문
「do... while」
do{
문장1;
문장2;
문장3;
}while (조건);
> do... while 루프는 일반적으로 '문장'이 한 번은 실행되어야 하는 경우에 선호된다.
「for」: 일정한 횟수만큼 반복할 때 유용하다
for(초기식;조건식;증감식){
실행문
}
- 초기식은 반복에 사용되는 변수를 선언하거나 초기화한다. 반복이 시작될 때 딱 한번 실행된다
- 만약 조건식이 참이면 문장을 실행하고, 거짓으로 계산되면 반복을 종료한다.
- 증감식은 한 번의 반복 뒤에 실행된다. 증감식은 제어 변수를 증가하거나 감소하게 된다
- 다시 검사하고, 참이면 반복을 계속하고 거짓이면 반복을 중단한다.
「break」
> 반복 루프를 벗어나기 위하여 사용한다. 반복 루프 안에서 break문이 실행되면 반복루프는 즉시 중단되고 반복 루프 다음에 있는 문장이 실행된다.
「continue」
> 현재 수행하고 있는 반복 과정의 나머지를 건너뛰고 다음 반복 과정을 강제적으로 시작하게 만든다. 반복 루프에서 continue 문을 만나게 되면, continue문 다음에 있는 후속 코드들은 실행되지 않고 건너뛰게 된다.
「tip」
> 루프의 반복 횟수를 아는 경우에는 for루프가 while루프에 비해 더 편하다. 즉 루프제어 변수를 증가하는 것을 잊어버린다거나 하는 일이 while루프에 비해 덜 발생한다. 만약 조건만 존재하고 정확한 반복 횟수는 모르는 경우에는 while문이 더 좋다. 만약 반드시 한 번은 실행되어야 하는 문장이 있다면 do... while구조가 좋다.
> while문과 for문은 반복하기 전에 조건을 검사하는 구조이고, do... while문은 먼저 실행한 후에 반복 조건을 검색한다. 특별한 경우가 아닌 일반 경우에는 반복을 하기 전에 조건 검사를 하는 것이 좋다.
「배열」: 같은 종류의 데이터들이 순차적으로 메모리에 저장되는 자료구조
> 각각의 데이터들은 인덱스를 사용하여 독립적으로 접근한다. 또한 배열을 이용하면 대용량의 데이터를 동일한 이름으로 쉽게 저장하고 처리할 수 있다.
int 배열이름[배열크기]
> 배열의 요소에는 번호가 붙어 잇는데 이것을 index, subscript라고 부른다. 배열이름이 index면 요소는 index [0], index [1] 이렇게 붙이면 된다. 배열 요소의 번호는 항상 0부터 시작한다.
-참고
> 배열의 크기를 const지시자로 만들어진 기호상수로 지정하면 배열의 크기를 변경하기가 쉬워진다. 즉 다른 부분의 변경 없이 기호 상수의 정의만 바꾸면 된다.
> 배열의 초기화: 만약 리스트 수가 배열 크기보다 적게 있다면, 앞에 있는 요소들만 초기화되고, 나머지 배열 요소는 0으로 초기화된다. 즉 배열의 크기가 비어 있고, 초기값의 리스트만 있는 경우에는 컴파일러가 자동으로 초기값들의 개수만큼 배열 크기를 정한다.
int number[]={1,2,3};
->
int number[] {1,2,3};
int a{0}; // int a=0
string s{"hello}; // stirng s="hello"
vector<string> list{"alpha","beta","gamma"}; //벡터 생성시 초기화
「범위기반 for-loop」
for(변수:범위){
문장
}
for (int i: list){
문장
}
「2차원 배열」
//선언방법
int s[x][y]
//사용 방법
int s[3][4]={
{1,2,3,4},
{2,3,4,5},
{3,4,5,6}
};