문타쿠, 공부하다.
[독하게 시작하는 C 프로그래밍] 섹션 11. 기본 제어문 본문
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문
- 프로그램의 흐름을 조건 없이 즉시 변경하는 제어문
- 프로그램의 흐름이 엉킬 수 있어 대부분 사용을 권하지 않음
'C언어 > 독하게 시작하는 C 프로그래밍' 카테고리의 다른 글
[독하게 시작하는 C 프로그래밍] 섹션 13. 배열과 프로그래밍 기법 (Part 3. C언어 수준향상) (0) | 2023.11.09 |
---|---|
[독하게 시작하는 C 프로그래밍] 섹션 12. 반복문 (0) | 2023.11.02 |
[독하게 시작하는 C 프로그래밍] 섹션 10. 연산자 (0) | 2023.10.29 |
[독하게 시작하는 C 프로그래밍] 섹션 9. 표준 입/출력 (0) | 2023.10.28 |
[독하게 시작하는 C 프로그래밍] 섹션 8. C언어 기초 문법 (0) | 2023.10.24 |