Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

문타쿠, 공부하다.

[독하게 시작하는 C 프로그래밍] 섹션 11. 기본 제어문 본문

C언어/독하게 시작하는 C 프로그래밍

[독하게 시작하는 C 프로그래밍] 섹션 11. 기본 제어문

개발새발 문타쿠 2023. 11. 1. 00:34

if문과 스코프

if

  • 분기문
  • 실행의 절차적 흐름을 제어하는 제어문
  • 조건식의 결과에 따라 절차상 수행할 구문이 달라질 수 있는 제어문
  • 삼항 연산자와 논리적으로 유사

Scope

  • 여러 개의 구문을 하나로 묶는 역할 -> { 중괄호 }

[필수 실습 문제] 최댓값 구하기 - if문 버전

#include <stdio.h>

int main(void)
{
	int num1 = 0;
	int max = 0;

	printf("세 개의 정수 입력 ㄱ\n");
	printf(">> ");
	scanf_s("%d", &num1);
	max = num1;

	printf(">> ");
	scanf_s("%d", &num1);
	if (num1 > max)
		max = num1;

	printf(">> ");
	scanf_s("%d", &num1);
	if (num1 > max)
		max = num1;

	printf("MAX = %d\n", max);

	return 0;
}


[필수 실습 문제] 버스요금 계산

#include <stdio.h>

int main(void)
{
	int age = 0;
	int charge = 750;

	printf("나이>> ");
	scanf_s("%d", &age);

	if (age >= 20)
	{
		age = 20;		// 조건: 20세 이상 = 20세로 출력
		charge = 1000;
	}

	printf("나이: %d, 최종요금: %d\n", age, charge);

	return 0;
}


if else문

  • 조건식을 만족하는 경우와 그렇지 않은 경우 수행되는 식을 배타적으로 기술할 수 있는 제어문
  • else의 오른쪽에는 조건식도 세미콜론도 없음에 주의
  • 어떤 기준(조건식)이 생기고, 그 기준에 대해 2분할 선택지(조건식이 참일 때, 거짓일 때)가 주어짐

if else문 중첩 (분류와 선택)

  • 각종 제어문 내부에 다시 제어문을 넣을 수 있음
  • 여러 발생 가능한 경우의 수를 나열한 후 피라미드 식으로 분류하는 경우 유용
  • 조건에 의한 분류와 선택 구조

[필수 실습 문제] 연령별 버스요금 계산

#include <stdio.h>

int main(void)
{
	int age = 0;
	double discount = 0.0;

	printf("나이를 입력해주세요: ");
	scanf_s("%d", &age);

	if (age < 14)
	{
		if (age < 4)
			discount = 0.0;
		else
			discount = 0.5;
	}
	else
	{
		if (age < 20)
			discount = 0.75;
		else
			discount = 1.0;
	}

	int charge = (int)(1000 * discount);

	printf("나이	: %d세\n", age);
	printf("할인율	: %d%%\n", (int)((1 - discount) * 100));
	printf("요금	: %d원\n", charge);

	return 0;
}


다중 if문

  • if else를 여럿 연이어 기술한 것과 같은 형식
  • 다수의 조건식이 등장

중첩 스코프와 식별자 검색 순서

  • 변수의 접근 가능 범위는 선언된 스코프로 제한됨 (지역변수)
  • 현재까지 배우고 사용한 모든 변수는 지역변수 및 자동변수
  • 자동변수는 선언된 스코프를 넘어서면 자동으로 소멸
  • 식별자가 같을 경우(=변수명이 같을 경우) 최근 스코프가 우선

*참고하면 좋은 영상: 지역변수 / 전역변수 / 정적변수 / 동적변수

https://www.youtube.com/watch?v=oDQyZrs7WCg&list=PLdaE6YENrbZA8sXCvVBUWjFwFI2zb4tlK&index=4


switch-case문

  • if문처럼 정보를 분류하고 경우를 선택하는 제어문
  • 조건식의 결과는 반드시 정수
  • 각 case는 결국 상등 연산 시 일치하는 값에 해당하는 정수
  • case는 콜론(:)으로 끝남
  • 한 case에 대해 break문 조합 -> 생략가능

무조건 goto문

  • 프로그램의 흐름을 조건 없이 즉시 변경하는 제어문
  • 프로그램의 흐름이 엉킬 수 있어 대부분 사용을 권하지 않음