페이지

2026년 1월 12일 월요일

2.2.5. C언어 문법 : 조건문

안녕하세요! 여러분의 AI-IT 멘토, '파이컴'입니다. 😊

지난 시간에는 코드의 흐름을 한눈에 볼 수 있게 도와주는 순서도에 대해 알아봤었죠. 지금까지 우리가 작성한 코드는 마치 외길을 걷는 것처럼, 위에서 아래로 정해진 순서대로만 실행되었어요. 하지만 오늘은 아두이노에게 '생각하는 힘', 즉 '판단력'을 선물해 주는 아주 중요한 문법을 배울 거예요. 바로 C언어의 '조건문'입니다!

Slide 1: 05. C언어 문법: 조건문

오늘의 주제는 바로 '조건문'입니다. 2장 '기본 부품과 C언어 체험하기'의 두 번째 부품인 '버튼'을 활용해서 조건문을 쉽고 재미있게 배워볼게요. 조건문을 배우고 나면, 여러분의 아두이노는 더 이상 시키는 일만 순서대로 하는 로봇이 아니라, 특정 상황에 맞춰 스스로 다른 행동을 하는 스마트한 친구가 될 거예요!

Slide 2: C언어 조건문 소개

"비가 오면 우산을 쓰고", "신호등이 빨간불이면 멈춘다"

사실 우리는 매 순간 선택과 판단을 하며 살아가요. 컴퓨터나 로봇이 똑똑해 보이는 이유도 바로 이런 상황 판단을 엄청나게 빠른 속도로 처리하기 때문이죠.

지금까지 우리가 짠 코드는 무조건 위에서 아래로 순서대로만 실행되는 '바보' 같은 코드였어요. 하지만 이제 if(만약에) 라는 마법의 단어를 배우면, 아두이노도 상황에 따라 다르게 행동하는 '판단력'을 갖게 된답니다. 이제 아두이노에게 진짜 지능을 불어넣어 줄 시간이에요!

Slide 3: C언어 조건문 실습 - 회로 구성

백문이 불여일견! 직접 만들어보면서 배우는 게 가장 빠르겠죠? '버튼을 누르면 LED가 켜지는' 간단한 회로부터 함께 만들어 봐요.

✅ 준비물

  • 아두이노, LED, 저항, 푸시 버튼, 브레드보드

✅ 회로 연결 방법

  1. LED: 긴 다리(+)는 아두이노 13번 핀에, 짧은 다리(-)는 저항을 거쳐 GND에 연결해주세요.
  2. 푸시 버튼: 한쪽 다리는 아두이노 2번 핀에, 반대쪽 다리는 GND에 바로 연결해주세요.

"어? 버튼에 저항을 연결 안 해도 되나요?" 라고 생각하셨다면, 훌륭해요! 맞아요. 이번 실습에서는 외부 저항 대신 아두이노 보드에 내장된 '내부 풀업(Pull-up) 저항'을 사용할 거예요. 이렇게 하면 회로가 훨씬 더 깔끔하고 간단해진답니다!

Slide 4: 조건문 소스 코드

회로가 완성되었다면, 이제 아두이노에게 '판단'을 내리게 할 코드를 작성해 봅시다.

CODE 2.6 | 버튼을 누르면 LED가 켜지는 코드
01// 1. 변수 선언
02int buttonPin = 2;  // 버튼 핀
03int ledPin = 13;    // LED 핀
04
05// 2. 초기 설정 함수 setup()
06void setup() {
07  pinMode(buttonPin, INPUT_PULLUP); // 버튼 핀을 내부 풀업 입력 모드로 설정!
08  pinMode(ledPin, OUTPUT);          // LED 핀을 출력 모드로 설정
09}
10
11// 3. 무한 반복 함수 loop()
12void loop() {
13  // 버튼 상태를 읽어서 buttonState 변수에 저장
14  int buttonState = digitalRead(buttonPin);
15
16  // 만약(if) 버튼이 눌렸다면(LOW 신호), LED를 켠다
17  if (buttonState == LOW) {
18    digitalWrite(ledPin, HIGH); // LED 켜기
19  }
20  // 그렇지 않다면(else), LED를 끈다
21  else {
22    digitalWrite(ledPin, LOW);  // LED 끄기
23  }
24}

🔍 코드 핵심 요약

  • setup() 함수에서 pinMode(buttonPin, INPUT_PULLUP); 이 부분이 핵심이에요. 이렇게 설정하면 버튼을 누르지 않았을 때 HIGH(1) 신호가, 눌렀을 때 LOW(0) 신호가 들어오게 됩니다.
  • loop() 함수에서는 digitalRead()로 버튼의 상태를 계속 확인해요.
  • 그리고 if-else 조건문을 사용해서, "만약 버튼이 눌렸다면(신호가 LOW라면) LED를 켜고, 그렇지 않으면 LED를 꺼라"는 논리를 구현한 것이죠.

이 코드를 업로드하고 버튼을 눌러보세요. 우리가 흔히 쓰는 초인종이나 키보드처럼, 버튼을 누르고 있는 동안에만 LED가 환하게 켜지는 것을 볼 수 있을 거예요!

Slide 5: if 문 - 가장 기본적인 조건문

자, 이제 코드에 사용된 조건문을 하나씩 자세히 살펴볼까요? 가장 기본이 되는 if 문입니다.

  • 의미: "만약에 (조건)이 사실이라면, { } 안의 명령을 실행해라"
  • 형식: if (조건) { 실행할 명령; }
  • 동작 원리: 괄호 ( ) 안의 조건이 참(True)일 때만 중괄호 { } 안의 코드를 실행해요. 만약 조건이 거짓(False)이라면, { } 안의 코드는 그냥 무시하고 다음으로 넘어가죠.

사용 예시

CODE 2.6.1 | if문 예시
01if (temp > 30) {
02  digitalWrite(ledPin, HIGH);
03}

"만약 온도 센서 값이 30을 초과하면, 경고등(LED)을 켜라!" 라는 의미가 되겠죠?

Slide 6: if-else 문 - 이거 아니면 저거!

다음은 if-else 문입니다. "이거 아니면 저거!"처럼 두 가지 선택지 중 하나를 반드시 골라야 할 때 사용해요. 마치 동전 던지기에서 앞면이 아니면 무조건 뒷면인 것과 같죠.

  • 의미: "만약 (조건)이 사실이라면 명령 A를 실행하고, 그렇지 않다면 명령 B를 실행해라"
  • 형식: if (조건) { 명령 A; } else { 명령 B; }
  • 동작 원리: if의 조건이 참이면 명령 A를 실행하고, 거짓이면 else의 명령 B를 실행해요. 둘 중 하나는 반드시 실행된다는 점이 중요해요!

우리가 만든 버튼 예제가 바로 이 if-else 구조를 사용한 거예요.
"버튼이 눌렸으면(참) LED를 켜고, 그렇지 않으면(거짓) LED를 꺼라."

Slide 7: if-else if-else 문 - 여러 갈래의 선택지

세상에는 '예/아니오'로만 결정할 수 없는 복잡한 상황도 많죠? 이럴 때 사용하는 것이 바로 if - else if - else 문입니다. 여러 개의 조건을 순서대로 체크할 수 있게 해줘요.

  • 의미: "만약 (조건 A)가 맞으면 명령 A 실행, 그게 아니고 만약 (조건 B)가 맞으면 명령 B 실행, ... 그것도 아니면 명령 C 실행"
  • 형식:
    CODE 2.6.2 | if-else if-else문 형식
    01if (조건 A) {
    02  // 명령 A
    03} else if (조건 B) {
    04  // 명령 B
    05} else {
    06  // 명령 C
    07}
  • 동작 원리: 위에서부터 순서대로 조건을 검사하다가, 가장 먼저 참이 되는 조건{ } 블록을 실행하고 전체 조건문을 빠져나와요. 만약 모든 조건이 거짓이라면 마지막 else 블록이 실행됩니다.

사용 예시

"점수가 90점 이상이면 A등급, 80점 이상이면 B등급, 그 외에는 모두 C등급을 부여해라." 와 같이 여러 경우의 수를 따져야 할 때 아주 유용하답니다.

Slide 8: [잠깐!] 꼭 알아야 할 비교 연산자

조건문에서 '조건'을 만들어주는 아주 중요한 친구들이 바로 비교 연산자예요. 수학 기호와 비슷하지만, 프로그래밍에서는 약간 다른 부분도 있으니 꼭 눈여겨보세요!

  • A == B : A와 B가 같다.
  • A != B : A와 B가 다르다. (!는 부정을 의미해요)
  • A > B : A가 B보다 크다. (초과)
  • A < B : A가 B보다 작다. (미만)
  • A >= B : A가 B보다 크거나 같다. (이상)
  • A <= B : A가 B보다 작거나 같다. (이하)

⚠️ 정말 중요해요!
프로그래밍에서 = 하나는 '오른쪽 값을 왼쪽에 넣어라(대입)'라는 뜻이에요. 두 값이 같은지 '비교'할 때는 반드시 == 이렇게 두 개를 써야 합니다! 초보자들이 가장 많이 하는 실수 중 하나이니 꼭 기억해주세요!

오늘은 아두이노에게 '판단력'을 부여하는 C언어 조건문에 대해 배워봤어요. if, if-else, if-else if-else 이 세 가지 구조만 잘 이해하고 있어도 훨씬 더 똑똑하고 유용한 프로그램을 만들 수 있답니다.

오늘 배운 내용을 응용해서 '버튼을 한 번 누르면 LED가 켜지고, 다시 누르면 꺼지는' 토글 스위치 기능을 한번 만들어보는 건 어떨까요? 처음에는 조금 헷갈릴 수 있지만, 직접 고민하고 코드를 짜보는 과정에서 실력이 쑥쑥 늘 거예요!

궁금한 점이 있다면 언제든지 댓글로 질문해주세요. 그럼 다음 포스팅에서 더 유익한 내용으로 다시 만나요! 👋

이 포스팅의 내용은 교재 [주니어 공학교실 아두이노의 기초]에 수록된 내용입니다.

댓글 없음:

댓글 쓰기