[10주차 Day1] 프론트엔드 기초 - 프로그래밍의 기본 원리

반 히·2024년 4월 29일

데브코스

목록 보기
20/58
post-thumbnail

💡연산자


📌 연산자

  • 정적인 데이터들을 유기적으로 행동하게 하여 새로운 가치를 창출해 내는 것.
  • 예를 들어 학생들 과목당 성적 데이터는 그 자체로 의미가 없다.
  • 총점 및 평균을 데이터화해야 그 의미가 있다.
  • ex) 산술 연산자, 대입 연산자, 부호 연산자, 증감 연산자, 관계 연산자, 논리 연산자, 비트 연산자

📌 산술 연산자

  • 사칙 연산이 기본이다.
  • 일상에서 많이 사용하기 때문에 이해하는데 어려움이 없다.
  • 실습 예제
#include <stdio.h>

int main()
{
    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;
}

📌 대입 연산자

  • 대입 연산자는 오른쪽에 있는 값을 왼쪽에 대입하는 역할을 한다.
  • 대입 연산자와 산술 연산자를 혼용해서 사용하기도 한다.
  • 실습 예제
#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;
}

📌 증감 연산자

  • 증감 연산자는 증가 연산자와 감소 연산자의 줄임말이다.
  • 실습 예제
#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\n", a);
    
    b = 10;
    printf("--b의 처리 결과 : %d\n", --b);
    
    b = 10;
    printf("b--의 처리 결과 : %d\n", b--);
    printf("b를 다시 출력 : %d\n", b);

    return 0;
}

📌 관계 연산자

  • 관계 연산자는 두 개의 피연산자로 관계를 따지는 연산자로, 같은지 다른지 어느쪽이 큰지 작은지 비교하는 연산자이다.
  • boolean 값을 return 함 (true or false)
  • 실습 예제
#include <stdio.h>

void main(void)
{
    int a = 10;
    int b = 11;
    int c = 12;
    int d = 10;
    
    printf("a == b의 결과는 : %d\n", a == b);
    printf("a < b의 결과는 : %d\n", a < b);
    printf("a >= c의 결과는 : %d\n", a >= c);
    printf("a == d의 결과는 : %d\n", a == d);
}

📌 논리 연산자

  • 두 개의 조건식 등을 결합하여 하나의 결과값을 만들어낸다.
    • ! : 피연산자의 결과를 모두 반대로 만든다. 피연산자가 true이면 false를 리턴하고, 피연산자가 false이면 true를 리턴한다.
    • && : 피연산자가 모두 참이어야만 true를 리턴한다.
    • || : 피연산자 둘 중에 하나가 참이어도 true를 리턴함 (둘 다 거짓이어야만 false임.)

📌 평가 문제

  • 사용자로부터 3개의 정수를 입력받아서, 3개의 수를 곱한 결과를 출력하라.
    출력 예)
    세 개의 정수를 입력하세요 : 2 3 4
    세 수의 곱은 24입니다.
#include <stdio.h>

void main(void)
{
    int a;
    int b;
    int c;
    
    scanf("%d %d %d", &a, &b, &c);
    
    printf("세 수의 곱은 %d입니다.", a  *b * c);
}
  • 사용자로부터 3개의 정수를 입력받는다. 입력한 세 정수의 합과 평균을 출력하는 프로그램을 작성하라.
#include <stdio.h>

void main(void)
{
    int a;
    int b;
    int c;
    
    scanf("%d %d %d", &a, &b, &c);
    
    int sum = a + b + c;
    double avg = sum / 3;
    
    printf("세 수의 합 : %d\n", sum);
    printf("세 수의 평균 : %f\n", avg);
}

💡분기문 (if문)


📌 조건이란

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

📌 if문

  • 만약에 …라면
  • 가정법
  • 아직 일어나지 않은 상황을 가정해서 그 상황에 대한 처리를 미리 구현을 하는 것

📌 if문 기본 원리

  • if문 사용 원리
if (수행 조건)
{
	수행하고 싶은 일
}
  • 수행 조건에 관계 연산자 사용
  • 실습 예제
#include <stdio.h>

int main(void)
{
    int a;
    printf("정수를 입력하세요 : ");
    
    scanf("%d", &a);
    if (a > 5) {
        printf("입력 값은 5보다 큽니다.\n");
    }
    
    return 0;
}

  • 순서도
  • 실습 예제
#include <stdio.h>

int main(void)
{
    int a;
    printf("정수를 입력하세요 : ");
    
    scanf("%d", &a);
    if (a > 5) {
        printf("입력 값은 5보다 큽니다.\n");
    }
    if (a < 5) {
        printf("입력 값은 5보다 작습니다.\n");
    }
    if (a == 5) {
        printf("입력 값은 5와 같습니다.\n");
    }
    return 0;
}

💡분기문 (if-else 문)


📌 if ~ else문

  • else 문은 ‘그 밖의’라는 의미를 가지고 있다.
  • else 문을 추가함으로써 이것만 선택할 수 있는 것이 아니라 저것도 선택이 가능하다.
  • 양자 택일의 형태이다.
if (수행 조건)
{
	수행 조건 만족 시 수행
}
else
{
	수행 조건 불만족 시 수행
}
  • 실습 예제
#include <stdio.h>

int main(void)
{
    int a;
    printf("정수를 입력하세요 : ");
    scanf("%d", &a);
    
    if (a > 5) {
        printf("입력 값은 5보다 큽니다.\n");
    } else {
        printf("입력 값은 5보다 크지 않습니다.")
    }
    
    return 0;
}
  • 순서도

📌 평가 문제

  • 사용자로부터 하나의 정수를 입력 받는다. 입력한 값이 짝수이면 출력 결과로 “입력한 수는 짝수입니다.”라는 문자열을 출력하고, 입력한 값이 홀수이면 출력 결과로 “입력한 수는 홀수입니다.”라는 문자열을 출력하라.
#include <stdio.h>

int main()
{
    int input;
    
    scanf("%d", &input);
    
    if (input % 2 == 0) {
        printf("입력한 수는 짝수입니다.");
    } else {
        printf("입력한 수는 홀수입니다.");
    }

    return 0;
}
  • 사용자로부터 세 개의 정수를 입력받는다. 입력받은 세 개의 정수를 비교하여 그 중 가장 작은 최소값을 출력하는 프로그램을 작성하라.
#include <stdio.h>

int main()
{
    int a, b, c;
    
    scanf("%d %d %d", &a, &b, &c);
    
    if (a < b && a< c)
        printf("최소값 : %d", a);
    else {
        if (b < c && b < a)
            printf("최소값 : %d", b);
        else
            printf("최소값 : %d", c);
    }

    return 0;
}

💡분기문 (if - else if 문)


📌 if ~ else if ~ else 문

  • 인생은 양자택일만 있는 것이 아니다.
  • else if문을 사용하면 조건 자체가 계속 늘어날 수 있다.
  • if ~ else if ~ else문의 기본 원리
if (수행 조건1) {
	수행 조건1 만족 시 수행
} else if (수행 조건2) {
	수행 조건2 만족 시 수행
} else {
	수행 조건1, 수행 조건2 불만족시 수행
}
#include <stdio.h>

int main(void)
{
    int a;
    printf("정수를 입력하세요 : ");
    scanf("%d", &a);
    
    if (a > 5) {
        printf("입력 값은 5보다 큽니다.\n");
    } else if (a < 5) {
        printf("입력값은 5보다 작습니다.\n");
    } else {
		    printf("입력값은 5와 같습니다.\n");
		}
    
    return 0;
}
  • 순서도

📌 평가 문제

  • 사용자로부터 점수값을 입력받는다. 점수값은 정수이다. 점수값이 60점 이상이면 “합격입니다.”를 출력하고, 60점 미만이면 “불학겹입니다.”를 출력하라.
#include <stdio.h>

int main()
{
    int score;
    scanf("%d", &score);
    
    if (score >= 60) {
        printf("합격입니다.\n");
    } else {
        printf("불합격입니다.\n");
    }

    return 0;
}
  • 사용자로부터 점수값을 입력받는다. 점수값은 정수이다. 점수값이 60점 이상이면 “합격입니다.”를 출력하고, 60점 미만이면 “불학겹입니다.”를 출력하라. 단, 합격자 중에 90점 이상이면 추가로 “장학 대상입니다.”를 출력하도록 한다.
int main()
{
    int score;
    scanf("%d", &score);
    
    if (score >= 60) {
        printf("합격입니다.\n"); 
        if (score >= 90) {
            printf("장학대상입니다.\n");
        }
    } else {
        printf("불합격입니다.\n");
    }

    return 0;
}
  • 사용자로부터 나이를 입력받는다. 나이는 정수이다. 나이의 값이 13세 미만이면 “어린이입니다.”를 출력하고, 13세 이상 19세 미만이면 “청소년입니다.”를 19세 이상이면 “성인입니다.”를 출력하라.
int main()
{
    int age;
    scanf("%d", &age);
    
    if (age < 13) {
        printf("어린이입니다.\n"); 
    } else if (age >= 13 && age < 19) {
        printf("청소년입니다.\n");
    } else {
		    printf("성인입니다.\n");
		}

    return 0;
}
  • 사용자로부터 char형으로 문자 한 개를 입력받는다. 문자는 ‘y’ 또는 ‘n’ 둘 중에 하나의 문자를 입력한다. 만약 입력한 값이 ‘y’라면 “네, 드라이브를 포멧하겠습니다.”를 출력하고, 입력한 값이 ‘n’이라면 “아니오, 드라이브를 포멧하겠습니다.”를 출력하시오.
    출력 예)
    정말로 이 드라이브를 포멧하시겠습니까? (y/n) y
    네, 드라이브를 포멧하겠습니다.
#include <stdio.h>

int main()
{
    char ch;
    
    printf("정말로 이 드라이브를 포멧하시겠습니까?(y/n)");
    scanf("%c", &ch);
    
    if (ch == 'y') {
        printf("네, 드라이브를 포멧하겠습니다.\n");
    } else if (ch == 'n') {
        printf("아니오, 드라이브를 포멧하겠습니다.\n");
    }

    return 0;
}
  • 사용자로부터 성적 점수인 정수 값을 한 개 입력 받아 그 값에 대한 점을 표시하는 프로그램을 작성하라. 예를 들어 100~91점은 A학점, 90~81점은 B학점, 80-71점은 C학점, 70~61점은 D학점, 60점 이하는 F 학점으로 표시한다. 단, 입력하는 수의 범위는 0부터 100 사이다. (참고, 관계 연산자의 대소 비교 시 '크거나 같다' 혹은 '작거나 같다'와 같은 연산자는 '<=', '>='로 사용된다. 그리고, 두 조건을 모두 만족해야 하는 AND 연산자는 '&&' 이다.)
    출력 예)
    점수를 입력하시오 : 95
    학점은 A입니다.
int main()
{
    int score;
    
    printf("점수를 입력하시오 : ");
    scanf("%d", &score);
    
    if (score >= 91 && score <= 100) {
        printf("학점은 A입니다.\n");
    } else if (score >= 81 && score <= 90) {
        printf("학점은 B입니다.\n");
    } else if (score >= 71 && score <= 80) {
        printf("학점은 C입니다.\n");
    } else if (score >= 61 && score <= 70) {
        printf("학점은 D입니다.\n");
    } else {
        printf("학점은 F입니다.\n");
    }

    return 0;
}

💡반복문 (while문)


📌 while문의 기본 원리

while (반복 조건) {
	반복 문장
}
  • 반복 조건을 만족하는 동안 반복 문장을 수행한다.
  • 반복 조건을 만족하지 않으면 while문을 빠져나간다.
  • 실습 예제
#include <stdio.h>

void main() 
{
    int i = 0;
    while (i < 5) {
        printf("Programming\n");
        i++;
    }
}

📌 평가 문제

  • 반복문을 사용하여 1월부터 12월까지 출력하라.
    출력 예)
    1월
    2월
    3월
    4월
    ...
    12월
#include <stdio.h>

void main() 
{
    int i = 1;
    while (i <= 12) {
        printf("%d월\n", i);
        i++;
    }
}

📌 while문의 기본 원리

  • 반복문의 대표적인 예제가 구구단이다.
  • 구구단 2단의 반복되는 포인트를 살펴보자.
  • 단수와 곱해지는 수를 반복문으로 처리하면 된다.
  • 실습 예제
#include <stdio.h>

void main() 
{
    int i = 1;
    while (i <= 9) {
        printf("2 X %d = %d\n", i, 2 * i);
        i++;
    }
}

📌 평가 문제

  • 사용자로부터 입력받은 숫자에 해당하는 구구단을 출력하시오. (사용자 입력 함수인 scanf를 사용하여 사용자로부터 정수를 입력받으시오.)
#include <stdio.h>

int main()
{
    int n;

    scanf("%d", &n);
    
    int i = 1;
    while (i <= 9) {
        printf("%d X %d = %d\n", n, i, n * i);
        i++;
    }

    return 0;
}
  • 반복문을 사용하여 1부터 10까지의 합을 출력하라.
#include <stdio.h>

int main()
{
    int sum = 0;
    int i = 1;
    
    while (i <= 10) {
        sum += i;
        i++;
    }
    printf("sum = %d\n", sum);

    return 0;
}
  • 반복문을 사용하여 1부터 사용자가 입력한 정수까지의 합을 출력하는 프로그램을 작성하라.
#include <stdio.h>

int main()
{
    int sum = 0;
    int i = 1;
    int n;
    
    scanf("%d", &n);
    
    while (i <= n) {
        sum += i;
        i++;
    }
    printf("sum = %d\n", sum);

    return 0;
}
  • 배터리를 충전중이다. 1부터 100까지 충전해야 하는데, 현재 충전양을 표시하고, 100이 넘어가면 “충전이 완료되었습니다.”라고 출력하자.
    출력 예)
    충전 : 1
    충전 : 2
    충전 : 3
    …..
    충전 : 100
    충전이 완료되었습니다.
#include <stdio.h>

int main()
{
    int sum = 0;
    int i = 1;
    int n;
    
    while (i <= 100) {
        printf("충전 : %d\n", i);
        i++;
    }
    printf("충전이 완료되었습니다.\n");

    return 0;
}

💡반복문 (이중 while문)


📌 이중 while문

  • 구구단 2단부터 9단까지 출력하시오.
  • 이중 반복문을 사용해야 한다.
  • 반복 빈도가 높은 부분 : 단수와 곱해지는 수
  • 반복 빈도가 낮은 부분 : 단수
  • 지구의 공전과 자전의 원리와 비슷하다.
  • 사용 형태
while (expression1)
{
		while (expression2)
		{
				....
		}
}
#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;
}

📌 평가 문제

  • 다음과 같이 출력하도록 프로그램을 작성하되 반드시 이중 while문을 사용하여 작성하여 보자.
    *
    **
    ***
    ****
    *****
int main()
{
    int i = 0, j = 0;
    
    while (i < 5) {
        j = 0;
        while (j <= i) {
            printf("*");
            j++;
        }
        printf("\n");
        i++;
    }

    return 0;
}

💡반복문 (무한 루프)


📌 무한 루프

  • 무한 루프란 반복 수행이 무한이 일어난다는 것
  • 반복 조건이 어느 시점에 무너질 수 있도록 설계
  • 무한 루프 안에서 어느 시점에 breakreturn으로 빠져나올 수 있어야 함.
#include <stdio.h>

int main()
{
    int i = 0;
    
    while (1) {
        printf("Programming\n");
        i++;
    }
    return 0;
}

💡반복문 (for문)


📌 for문의 기본 원리

  • for문은 while문과 다르게 변수의 초기화 연산과 증감 연산이 추가된다.
for (초기문; 조건문; 증감문)
{
	반복하고자 하는 내용
}
  • (초기문 →) 1 조건문 → 2 반복하고자 하는 내용 → 3 증감문
  • 1, 2, 3 계속 반복
  • while 문과의 비교 : while문은 괄호 안에 조건문만 있음. 초기문과 증감문은 while문의 위쪽과 안쪽에서 사용
#include <stdio.h>

int main()
{
    int dan, i;
    printf("단을 입력하시오 : ");
    scanf("%d", &dan);
    
    for (i = 1; i < 10; i++) {
        printf("%d X %d = %d\n", dan, i, dan * i);
    }

    return 0;
}

0개의 댓글