본문 바로가기
Language/C++

03.basic-syntax

by 아무키 2023. 12. 22.
반응형

배열(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

댓글