배열(Array)
복합(compound) 데이터 타입
동일한 타입인 요소들의 집합
개별 요소들에 직접적인 접근이 가능
사용 목적 : 아래와 같은 코드를 효율적으로 바꿀 수 있다.
int score_1 = 0;
int score_2 = 0;
int score_3 = 100;
특징
고정된(정해진)길이
연속된 메모리 주소에 저장
인덱스를 통해 접근 가능
인덱스는 0부터 시작하며, 마지막 인덱스는 size - 1
out of bound 체크 하지 않음
초기화 필요
효율적인 데이터 구조
배열의 정의
기본형
ElementType array_name[constant number of element];
정의 예
int socres[5];
const int days_in_year= 365;
double temperature[days_in_year];
// int days_in_year = 365 선언 후 a[days_in_year]은 사용 불가
// 배열은 크기가 고정
배열의 초기화
int socres[5] = {100, 85, 21, 56, 70};
int high_scores[10] = {3, 5}; // 3,5 remaining 0
cosnt int days = 30;
double tmp[days] ={0}; // all to zero
int my_array[] = {1, 2, 3, 4, 5}; // automatic sizing
배열 내의 요소들에 대한 접근
int scores[] = {100, 85, 21, 56, 70};
cout << scores[0];
cout << scores[3];
scores[1] = 40;
명령문과 연산자(Statements and Operators)
표현식(Expressions)
코드의 가장 작은 구성 요소
연산을 통해 값을 계산
34 //literal
n // variable
3 + 5 //addition
3 * 6 //multiplication
a > b // relational
a == b // assignment
명령문(Statements)
명령을 수행하는 코드 단위
세미콜론(’;’)으로 끝나는 문장
표현식의 집합
int n; // declaration
n = 20; // assignment
3 + 5; // expression
n = 3 * 5; // assignment
if(a> b) cout <<"a to b"; // if
연산자(Operations)
단항(unary), 이항(binary), 삼항(ternary) 연산자
대입 연산자
a = 10;
l-value & r-value
오른쪽의 값을 계산하여 왼쪽에 대입
컴파일러가 대입이 가능한지 체크함
int n = 0;
n = "Hi"; // 오류 발생
왼쪽은 대입이 가능해야 함(ex. 리터럴, 상수는 될 수 없다.)
산술 연산자
+, -, *, /, %(mod)
증감 연산자
Prefix(++num, —num)(대입 전 증감)
Postfix(num++, num—)(대입 후 증감)
비교 연산자
==, ≠
결과는 Boolean 타입의 true of false
관계 연산자
<, >, ≤, ≥
논리 연산자
!, &&, ||
Short-circuit evaluation
→ 결과 파악이 가능한 경우 나머지 연산을 하지 않음(최적화)
(앞에서 조건 불일치시 뒤에 계산 안하기에 순서 생각하면 좋다)
복합 연산자
+=, *=, >≥등
연산자 우선순위
혼동을 없애기 위해 우선순위 괄호표기 하는것이 좋은 코드
멤버 접근 연산자
., →
제어문(Controlling flow)
조건문(Conditional statement)
if-else문(블록, nested)
if문과 블록
조건문 내에서 하나 이상의 명령문을 실행하기 위해서는 불록 내에 명령문을 작성
블록은 ‘{’로 시작해서 ‘}’로 끝남 → scope
블록 내에서 선언된 변수는 ‘지역변수’라 하며, 블록 내에서만 접근 가능
switch문
switch, case, default를 사용한 분기문
switch 표현문의 결과는 정수형 리터럴이어야함(정수, char, 열거형)
switch(selection){
case 1: cout << 1;
break;
case 2: cout << 2;
break;
default:
cout << "Not 1, 2";
}
?: 연산자
a > b ? a : b;
//a > b 인 경우 a 출력 아니면 b 출력
cout << ((score > 90) ? "Perfect":"Good");
반복문(Looping statement)
반복 조건 + 명령문
for문
int scores[]{100, 90, 50};
for(int i = 0 ; i < 5; i++){
cout << i << '\n';
cout << scores[i] << '\n';
}
//콤마 연산자 거의 안씀
for(int i = 0, j = 5; i < 5; i++, j++){
cout << i << " * " << j << " : " << i * j << '\n';
}
for(; true; ) // while(true)와 같다
while, do-while문
bool is_done = false;
int n = 0;
while(!is_done){
cout << "enter n under 10" <<'\n';
cin >> n;
if(n >= 10){
cout << "wrong" << '\n';
}
else{
cout << "OK" << '\n';
is_done = true;
}
}
//do while 버전
do{
cout << "enter n under 10" << '\n';
cin >> n;
}
while(n <= 10);
cout << "OK" << '\n';
continue, break
continue
Continue문 이후의 문장은 실행되지 않음
다음 iteration으로 곧바로 넘어가기 위해 사용
break
break문 이후의 문장은 실행되지 않음
루프 밖으로 바로 빠져나가기 위해 사용
int values[]{1,2,-1,3,-1,99,7,8,9};
for(int i = 0 ; i < 9 ; i++){
if(values[i] == -99){
break;
}else if(values[i] == -1){
continue;
}else{
cout << values[i] << '\n';
}
}
// -99면 for문 종료, -1은 출력안하고 다음으로 넘어감
// 그외는 값 출력
디버깅
vs 기준
F5 : 디버깅
F10 : 프로시저 단위로 실행
F11 : 한단계식 코드 실행
Shift + F11 : 현재 명령문이 호출되는 상위 stack으로 나가기
'Language > C++' 카테고리의 다른 글
05.포인터 (0) | 2023.12.22 |
---|---|
04.Function (1) | 2023.12.22 |
02. 변수와 상수 (1) | 2023.12.22 |
01. C++ 프로그램의 구조 (0) | 2023.12.21 |
C++ 이론편 (0) | 2022.05.22 |
댓글