pgms

[9주차] - [9기] 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 10회차 - 41

Ejah 2026. 3. 12. 16:56

연산자

 

정적인 데이터들을 유기적으로 행동하게 하여 새로운 가치를 창출해 내는것

예를 들어 학생들 과목당 성적 데이터는 그 자체로 의가 없다

총점 및 평균을 데이터화 해야 그 의미가 있다.

 

연산자들의 종류.

기능별 분류 연산자 종류
산술 연산자 +  -  *   /   %
대입 연산자 =  +=  -=  *=  /=  %=
부호 연산자 +  -
증감 연산자 ++  --
관계 연산자 ==  !=  <  >  <=  >=
논리 연산자 ||  &&  !
비트 연산자 !  &  >>  <<  ~

 

산술 연산자

 

사칙 연산이 기본이다.

일상에서 많이 사용하기 때문에 이해하는데 어려움이 없다.

+ 두 값을 더한다 a = 5 + 3 8
- 왼쪽 값에서 오른쪽 값을 뺀다 a = 5 - 3 2
* 두 값을 곱한다 a = 5 * 3 15
/ 왼쪽 값을 오른쪽 값으로 나눈다 a = 5 / 3 1 (정수 나눗셈)
% 나눗셈의 나머지를 구한다 a = 5 % 3 2

 

#include <stdio.h>

int main(void)
{
    int a = 5;
    int b = 3;

    printf("두 수의 합은 %d 입니다.\n", a + b);
    printf("두 수의 차는 %d 입니다.\n", a - b);
    printf("두 수의 곱은 %d 입니다.\n", a * b);
    printf("두 수를 나누기는 %d 입니다.\n", a / b);
    printf("두 수의 나머지는 %d 입니다.\n", a % b);

    return 0;
}

 

대입 연산자

 

대입 연산자는 오른쪽에 있는 값을 왼쪽에 대입하는 역할을 한다.

대입 연산자와 산술연산자를 혼용해서 사용하기도 한다.

= 오른쪽 값을 왼쪽 변수에 대입 a = b ab 값을 저장
+= 왼쪽 값에 오른쪽 값을 더한 다시 왼쪽에 대입 a += b a = a + b
-= 왼쪽 값에서 오른쪽 값을 다시 왼쪽에 대입 a -= b a = a - b
*= 왼쪽 값에 오른쪽 값을 곱한 다시 왼쪽에 대입 a *= b a = a * b
/= 왼쪽 값을 오른쪽 값으로 나눈 다시 왼쪽에 대입 a /= b a = a / b
%= 왼쪽 값을 오른쪽 값으로 나눈 나머지를 다시 왼쪽에 대입 a %= b a = a % b

 

int a = 10;

a += 5;   // a = 15
a -= 3;   // a = 12
a *= 2;   // a = 24
a /= 4;   // a = 6
a %= 4;   // a = 2
#include <stdio.h>

int main(void)
{
    int a = 5;
    int b = 3;

    a += b;
    printf("a += b의 결과는 %d 입니다.\n", a);

    a -= b;
    printf("a -= b의 결과는 %d 입니다.\n", a);

    a *= b;
    printf("a *= b의 결과는 %d 입니다.\n", a);

    a /= b;
    printf("a /= b의 결과는 %d 입니다.\n", a);

    a %= b;
    printf("a %%= b의 결과는 %d 입니다.\n", a);

    return 0;
}

 

증감 연산자

 

증감 연산자는 증가 연산자와 감소 연산자의 줄임말이다.

논리 연산자 의미 결과 설명
++a 전위 증가 연산자 a값을 1 증가시킨 연산을 수행
a++ 후위 증가 연산자 연산을 먼저 수행한 a값을 1 증가
--a 전위 감소 연산자 a값을 1 감소시킨 연산을 수행
a-- 후위 감소 연산자 연산을 먼저 수행한 a값을 1 감소
#include <stdio.h>

int main(void)
{
    int a;
    int b;

    a = 5;
    printf("++a 의 처리 결과 : %d\n", ++a);

    a = 5;
    printf("a++ 의 처리 결과 : %d\n", a++);
    printf("a를 다시 출력 : %d\n", a);

    b = 10;
    printf("--b 의 처리 결과 : %d\n", --b);

    b = 10;
    printf("b-- 의 처리 결과 : %d\n", b--);
    printf("b를 다시 출력 : %d\n", b);

    return 0;
}

 

관계 연산자

 

관계 연산자는 두 개의 피연산자로 관계를 따지는 연산자로, 같은지 다른지 어느쪽이 큰지 작은지 비교하는 연산자이다.

논리 연산자 의미 결과 설명
== 두 값이 같다 a == b 같으면 true, 다르면 false
!= 두 값이 다르다 a != b 다르면 true
> 왼쪽 값이 오른쪽 값보다 크다 a > b 조건이 맞으면 true
< 왼쪽 값이 오른쪽 값보다 작다 a < b 조건이 맞으면 true
>= 왼쪽 값이 오른쪽 값보다 크거나 같다 a >= b 조건이 맞으면 true
<= 왼쪽 값이 오른쪽 값보다 작거나 같다 a <= b 조건이 맞으면 true

 

논리 연산자

 

두 개의 조건식 등을 결합하여 하나의 결과값을 만들어낸다.

논리 연산자 의미 예시 결과 설명
! 논리 부정 (NOT) !a a가 true이면 false, false이면 true
&& 논리 곱 (AND) a && b 두 값이 모두 true일 때만 true
|| 논리 합 (OR) a || b 둘 중 하나라도 true이면 true

 

분기문

조건이란?

- 어떤 의미를 이루게 하거나 이루지 못하게 하기 위하여 갖추어야 할 상태나 요소.

 

if문의 기본 원리

if(수행 조건)
{
	수행하고 싶은 일
}

 

수행 조건에 관계 연산자 사용

#include <stdio.h>

int main(void)
{
    int a;

    printf("정수를 입력하세요 : ");
    scanf_s("%d", &a);

    if(a > 5)
    {
        printf("입력 값은 5보다 큽니다.\n");
    }

    return 0;
}

 

순서도

의미 없는 조건 비교를 하지 않기 위해 if 문만을 사용하지 않는다.

 

if ~ else 문

else 문은 '그 밖의' 라는 의미를 가지고 있다.

else 문을 추가함으로써 이것만 선택할 수 있는 것이 아니라 저것도 선택이 가능하다.

 

양자 택일의 형태이다.

if(수행 조건) {
	수행조건 만족 시 실행
} else {
	수행조건 불만족 시 실행
};

 

if ~ else if ~ else 문

인생은 양자택일만 있는 것이 아니다.

else if문을 사용하는 방법

if(수행 조건1){
	수행 조건1 만족 시 수행
} else if (수행 조건2){
	수행 조건2 만족 시 수행
} else {
	수행조건1, 수행조건2  불만족시 수행
};

 

반복문

 

while문의 기본 원리

while(반복 조건){
	반복 문장
}

반복 조건을 만족하는 동안 반복 문장을 수행한다.

반복 조건을 만족하지 않으면 while문을 빠져 나간다.

 

이중 while 문

 

구구단 2단부터 9단까지 출력하시오.

이중 반복문을 사용해야 한다.

반복 빈도가 높은 부분 : 단수와 곱해지는 수

반복 빈도가 낮은 부분 : 단수

 

지구의 공전과 자전의 원리와 비슷하다.

 

공전은 태양 한바퀴를 도는것이기에 오래걸림 (1년)

자전은 지구 혼자 한바퀴 도는것으로 빠름(하루)

#include <stdio.h>

int main()
{
    int dan = 2;
    while (dan < 10){
        int i = 1;
        while ( i < 10){
            printf("%d X %d = %d\n", dan, i, dan*i);
            i++;
        }
        dan++;
    }
    
    return 0;
}

 

무한 루프

무한 루프란 반복 수행이 무한이 일어난다는 것

#include <stdio.h>

void main()
{
    int i = 0;

    while(1)
    {
        printf("Programming\n");
        i++;
    }

    return;
}

 

반복 조건이 어느 시점에 무너질 수 있도록 설계

무한 루프 안에서 어느 시점에 break나 return으로 빠져 나올 수 있어야 함

 

반복문

for문의 기본 원리

for 문은 while문과 다르게 변수의 초기화 연산과 증감 연산이 추가된다.

for(초기문; 조건문; 증감문;){
	반복하고자 하는 내용
}

 

 

for문과 while 문의 비교

 

while문에는 괄호안에 조건문만 있다고 해서 간단하지 않다 초기문과 증감문이 위 아래로 포진되어 있기에

for문이 오히려 정돈되어 있는 구조로 볼 수 있다.

#include <stdio.h>

void main()
{
    int dan, i;

    printf("단을 입력하시오 : ");
    scanf("%d", &dan);

    for(i = 1; i < 10; i++)
    {
        printf("%d * %d = %d\n", dan, i, dan * i);
    }

    return;
}

 

멈추거나 계속하거나 ex: 화

continue : 고

break : 스톱

 

break

반복문 while 문 내부에서 특정 조건이 되면 break를 만나게 되는데, break문은 while문을 빠져 나가게 된다.

#include <stdio.h>

int main()
{
    int a = 0;

    while(1)
    {
        if(a > 100)
        {
            break;
        }

        printf("a의 값은 %d 입니다.\n", a);
        a++;
    }

    printf("a는 100보다 크다\n");

    return 0;
}

 

continue 문의 기본 원리

반복문 while문 내부에서 특정 조건이 되면 continue문을 만나게 되는데, 이 떄 continue문 이하의 수행은 무시하고, 다시 반복의 시작점으로 간다.

#include <stdio.h>

int main()
{
    int a = 0;

    while(a < 100)
    {
        a++;

        if(a > 80 && a < 90)
        {
            continue;
        }
    }

    return 0;
}

컨티뉴를 사용해서 짝수단만 출력되는 구구단을 작성해보기

 

함수

함수의 정의 y = f(x)

 

함수의 종류

표준 함수 - 언어에서 기본적으로 제공해주는 함수를 표준함수라고 한다.

함수를 라이브러리화 시켜서 편리하게 사용할 수 있게 한다.

 

사용자 정의 함수 - 사용자가 자신이 원하는 기능을 직접 만들 수 있다.

표준함수의 기능에는 한계가 있다.

정형화된 완구(표준 함수)와 가변적인 레고같은 완구(사용자 정의 함수)의 차이

 

함수의 기본 형태

데이터타입 - 함수가 리턴하는 값의 타입

함수 이름 - 함수 기능과 밀접한 이름으로 만드는 것이 좋음

인수 목록 - 함수에 필요한 값을 전달할 때 사용

함수의 내용 - 중괄호{} 사이의 영역 안에서 작성

자료형 함수이름(인수목록) {
	함수의 내용
}

 

함수의 기본 형태

더하기 Add 기능 함수 작성

int Add(int a, int b){
	return a + b;
}

 

함수의 호출과 프로그램 흐름

함수 호출 및 반환되는 흐름을 순서대로 표현

 

void 타입

(타입이 없다)

결과값을 리턴하지 않는 함수

#include <stdio.h>

int Add(int i, int j);

void print_Start()
{
    printf("======= Programming Start =======\n");
    printf("두 개의 정수를 입력하시오 : ");
}

void print_Hap(int result)
{
    printf("두 수의 합은 %d 입니다.\n", result);
    printf("======= Programming End =======\n");
}

 

 

 

포인터란?

❐ 개념

일상 생활에서 포인터란 내 손을 대신해서 어딘가를 가리킬 때 사용하는 도구를 가리킨다. 마우스 포인터나 레이저 포인터는 화면이나 칠판의 특정 부분을 가리키는데 사용된다. C 언어의 포인터도 비슷한 개념인데, 다만 프로그램이 수행되면서 다른 곳을 참조할 필요가 있는 곳은 데이터나 명령어가 저장되어 있는 메모리가 그 대상이 된다.

즉, 포인터(pointer)란 어떤 다른 값이 저장되어 있는 메모리 주소를 갖고 있는 상수나 변수를 가리킨다. 좀 더 쉽게 말해 포인터란 어딘가를 가리킬 수 있는 능력을 갖고 있는 데이터이다. 이런 포인터는 컴파일 환경에 따라 4 바이트 혹은 8 바이트의 길이를 갖는 일종의 자료형으로 생각할 수 있다.