RUST 20일 과정

Day 4: 기본 제어문 (if, loop, while, for)

@thiskorea 2025. 1. 6. 13:39
Day 4: 기본 제어문

Day 4: 기본 제어문 (if, loop, while, for)

1. 수업 개요

  • 주제: Rust에서의 if 문, 다양한 루프(loop, while, for) 문법과 사용법
  • 학습 목표:
    • Rust의 if-else 구문을 작성하고, 표현식으로도 활용할 수 있음을 이해한다.
    • loop, while, for 문을 이용한 반복 처리를 학습한다.
    • C 언어 대비 Rust에서 달라진 점(예: break, continue 키워드, label)이 무엇인지 파악한다.

2. 이론

if, else if, else

  • 기본 구조:
  • if 조건식 {
        // 참일 때 실행
    } else if 다른조건 {
        // 위 조건이 거짓, 이 조건이 참일 때 실행
    } else {
        // 모든 조건이 거짓일 때 실행
    }
  • 조건식은 반드시 bool 타입이어야 함
  • if 를 표현식으로 활용하기:
  • let condition = true;
    let number = if condition { 5 } else { 10 };
    println!("number의 값: {}", number);

loop

  • 무한 루프:
  • loop {
        println!("계속 반복합니다...");
        break;
    }
  • loop 표현식: break 뒤에 값을 넘길 수 있음
  • let mut counter = 0;
    let result = loop {
        counter += 1;
        if counter == 5 {
            break counter * 2;
        }
    };
    println!("result = {}", result);

while

  • 기본 구조:
  • let mut n = 3;
    while n > 0 {
        println!("{}", n);
        n -= 1;
    }
    println!("발사!");

for

  • 기본 구조:
  • let arr = [10, 20, 30, 40, 50];
    for element in arr {
        println!("값: {}", element);
    }
  • 범위(Range)를 사용한 반복:
  • for i in 1..4 {
        println!("i = {}", i);  // 1, 2, 3
    }
    for i in 1..=4 {
        println!("i = {}", i); // 1, 2, 3, 4
    }
  • 역방향 반복:
  • for num in (1..4).rev() {
        println!("역방향: {}", num); // 3, 2, 1
    }

break, continue, 라벨(Label)

  • break: 루프 탈출
  • continue: 다음 반복으로 건너뛰기
  • 라벨 사용:
  • 'outer: for i in 1..=5 {
        for j in 1..=5 {
            if i + j == 5 {
                break 'outer;
            }
        }
    }

3. 실습

조건문 실습

  • 사용자 입력(또는 하드코딩된 변수)에 따라 “짝수/홀수”를 구별하는 코드를 if-else if-else로 작성
  • if 문을 표현식으로 활용해, 변수에 조건별로 다른 값을 할당해 출력해보기

반복문 실습

  • loop 예제:
  • let mut counter = 0;
    loop {
        counter += 1;
        if counter == 5 {
            break counter * 3;
        }
    }
  • while 예제:
  • let mut sum = 0;
    let mut n = 1;
    while n <= 10 {
        sum += n;
        n += 1;
    }
    println!("합: {}", sum);
  • for 예제:
  • for i in 1..=10 {
        println!("구구단 2단: {} x 2 = {}", i, i * 2);
    }

라벨(Label) 활용

'outer: loop {
    let mut inner = 0;
    while inner < 5 {
        if inner == 3 {
            break 'outer;
        }
        inner += 1;
    }
}

4. 마무리 및 과제

오늘 배운 내용 정리

  • if-else와 C 언어 대비 차이: 조건식은 bool이어야 함
  • Rust의 반복문: loop, while, for
  • loop의 표현식 기능(값을 반환 가능), 라벨을 통한 탈출 제어
  • 범위 표현(1..=n)이 매우 편리함

과제(실습 문제)

  1. 1부터 10까지 순회하며, 짝수는 println!("짝수: {}", i), 홀수는 println!("홀수: {}", i) 라고 출력하는 코드를 for 문으로 작성
  2. loopwhile을 각각 사용해 1부터 10까지 합을 구하고, 결과를 비교 출력
  3. 구구단(2~9단)을 for 문을 이용해 출력하되, 2단부터 5단까지만 출력하고 싶다면, 특정 조건에서 바깥 루프까지 break를 수행해보자(라벨 사용)

학습 팁

  • if, loop, while, for 등은 대부분 C, Java, Python 등의 문법과 유사하지만, Rust에서만의 특징(조건식의 엄격한 bool 요구, loop의 표현식 기능, 라벨)도 분명히 체득해두자.
  • 반복문 예제를 통해 Ownership & Borrowing 개념도 확인해보자.

5. 수업 진행 예시 타임라인 (총 50분 수업 기준)

  • 10분: 이론: if, loop, while, for 문법 및 예제 설명
  • 5분: C 언어와 다른 점 및 라벨(Label) 활용 법 Q&A
  • 20분: 실습:
    • 짝/홀수 판별, 1부터 N 합, 구구단 구현 등
    • 라벨을 이용한 중첩 루프 탈출 등
  • 10분: 실습 코드 리뷰 & 버그/에러 해결
  • 5분: 과제 안내 및 마무리

정리: Rust에서 제어문은 C 언어와 비슷하면서도 엄격한 타입 검사(조건식은 bool)와 loop 표현식, 라벨 등의 특징이 있습니다.