ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Day 2: 기초 문법 (변수, 스코프, 데이터 타입)
    RUST 20일 과정 2025. 1. 6. 13:35
    Day 2: 기초 문법 (변수, 스코프, 데이터 타입)

    Day 2: 기초 문법 (변수, 스코프, 데이터 타입)

    1. 수업 개요

    • 주제: Rust의 변수 선언 방식, 스코프(생존 범위), 기본 데이터 타입을 익힌다.
    • 학습 목표:
      • Rust에서의 변수 선언과 사용 방법(불변 변수와 가변 변수)을 이해한다.
      • Shadowing 개념을 이해하고, C 언어 대비 특징을 파악한다.
      • Rust의 기본 데이터 타입(정수형, 실수형, 문자형, bool 등)을 사용할 수 있다.

    2. 이론

    변수 선언: letlet mut

    • 불변 변수(let)
      • 기본적으로 Rust에서는 변수 재할당이 불가능하다.
      • 예시:
      • let x = 5;
        // x = 6;  // 에러 발생 (재할당 불가)
    • 가변 변수(let mut)
      • mut 키워드로 선언된 변수는 재할당이 가능하다.
      • 예시:
      • let mut y = 10;
        y = 20;  // OK

    Shadowing(섀도잉)

    • 같은 이름의 변수를 새로 선언해서, 기존 변수를 “가리는(Shadow)” 개념
    • 기존 변수와 구분되어 새로운 스코프 범위에서만 유효
    • 예시:
    • let a = 5;
      let a = a + 1;  
      {
          let a = a * 2; 
          println!("스코프 내부 a: {}", a); // 12
      }
      println!("스코프 외부 a: {}", a); // 6

    스코프와 변수 생존 범위

    • 스코프: 변수가 유효한 코드 블록의 범위
    • Rust에서는 블록({ })이 끝나면 해당 스코프 안에서 선언된 변수는 해제된다.

    데이터 타입

    • 정수형: i8, i16, i32, i64, i128, isize / u8, u16, …
    • 실수형: f32, f64
    • bool: true, false
    • char: 유니코드 문자(4바이트)
    • 예시:
    • let int_num: i32 = 42;
      let float_num: f64 = 3.14;
      let is_rust_fun: bool = true;
      let letter: char = 'R';

    타입 변환(Casting)

    • Rust에서는 타입 변환이 명시적으로 필요하다. (암묵적 형변환 불가)
    • 예시:
    • let a: i32 = 10;
      let b: u32 = a as u32;  // 명시적인 형변환

    3. 실습

    변수 선언 연습

    새 프로젝트를 만들거나(예: cargo new day2_practice) 혹은 기존 프로젝트에 main.rs를 새로 작성해보자.

    Shadowing 확인

    fn main() {
        let a = 3;
        println!("a: {}", a);  
        let a = a + 2;  
        println!("a + 2: {}", a);
        {
            let a = a * 2;
            println!("(스코프 내부) a * 2: {}", a);
        }
        println!("(스코프 외부) a: {}", a);
    }

    데이터 타입 실습

    • 정수형, 실수형, bool, char 변수를 각각 선언하고, println!으로 출력해본다.
    • 서로 다른 정수형끼리 캐스팅할 때(as 키워드) 어떤 일이 일어나는지 실험

    4. 마무리 및 과제

    오늘 배운 내용 정리

    • Rust의 변수 선언 방식(let, let mut), Shadowing
    • 스코프 개념과 변수 생존 범위
    • Rust의 기본 데이터 타입과 명시적 형변환

    과제(실습 문제)

    1. 다음 코드를 작성해 보고 결과를 분석해보자.
    2. let mut x = 5;
      println!("초기 x: {}", x);
      x = x + 1;
      println!("x에 1 더하기: {}", x);
      let x = x * 2; 
      println!("shadowing x * 2: {}", x);
    3. a + b의 값을 저장하는 정수형 변수, 그리고 이를 실수로 바꾸어 출력하는 코드를 작성.
    4. 실습한 프로젝트(또는 main.rs)를 GitHub에 올리기(가능하다면).

    학습 팁

    • Rust의 변수는 기본적으로 불변이라는 점이 큰 차이이므로, 의도적으로 가변 변수(let mut) 또는 Shadowing을 활용해보며 감을 익히자.
    • 타입이 다른 변수 간 연산 시 꼭 명시적 변환이 필요한 점도 기억하자.

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

    • 10분: 이론 설명: 변수 개념, let / let mut, Shadowing, 스코프, 데이터 타입
    • 5분: 질의응답: C언어와의 비교 (함께 얘기해보기)
    • 20분: 실습:
      • 간단한 예제 코드 직접 작성 & 출력 결과 확인
      • Shadowing과 스코프 블록 실습
    • 10분: 실습 코드 공유 및 디버깅, 에러 메시지 분석
    • 5분: 마무리, 과제 안내

    정리: Rust 언어에서 변수는 기본적으로 불변이라는 점이 C 언어와 가장 다른 부분 중 하나이며, Shadowing을 통해 이름은 같지만 새로운 변수를 선언해 기존 변수를 가릴 수 있다는 것이 흥미로운 특징입니다.

Designed by Tistory.