Programming

Rust기초 알기 - 3.2 제어문 (조건문, 반복문)

IT오이시이 2023. 6. 14. 23:19
728x90

 

 

Rust기초알기(3) - 기본 문법
3.1 변수와 데이터 타입
3.2 제어문 (조건문, 반복문)
3.3 함수 정의와 호출
3.4 모듈과 패키지
3.5 주석

[목차] Rust Programming - Rust 기초 알기 목차.Zip

#Rust프로그래밍  #Rust언어기초 #Rust기초문법 #Rust기초알기

 

 
 

Rust기초 알기 - 3.2 제어문 (조건문, 반복문)

Rust는 다양한 제어문을 제공하여 프로그램의 흐름을 제어할 수 있습니다. 제어문으로는 조건문(if, else if, else)과 반복문(loop, while, for)이 있습니다.


1. if 조건문:

`if` 조건문은 주어진 조건식이 참(True)인 경우에만 특정 코드 블록을 실행합니다. 조건식이 거짓(False)인 경우 해당 코드 블록은 건너뜁니다. 조건문은 주어진 조건에 따라 코드의 실행 흐름을 분기하는 데 사용됩니다.
Rust에서 if 문은 다음과 같은 구조를 가집니다:

if 조건식 {
    // 조건이 참인 경우 실행되는 코드
} else if 다른_조건식 {
    // 다른 조건이 참인 경우 실행되는 코드
} else {
    // 모든 조건이 거짓인 경우 실행되는 코드
}

조건식은 불리언(bool) 값을 갖는 표현식이며, 조건이 참(True)인 경우 해당 조건에 해당하는 코드 블록이 실행됩니다. else if 문과 else 문은 선택적으로 사용될 수 있습니다.

[Rust  `if` 조건 문 예시]

fn main() {
    let number = 7;

    if number < 5 {
        println!("숫자는 5보다 작습니다.");
    } else if number == 5 {
        println!("숫자는 5와 같습니다.");
    } else {
        println!("숫자는 5보다 큽니다.");
    }
}

* 위의 예시는 number 변수의 값에 따라 세 가지 다른 메시지를 출력합니다. 만약 number가 5보다 작으면 "숫자는 5보다 작습니다."를 출력하고, number가 5와 같으면 "숫자는 5와 같습니다."를 출력하며, 그렇지 않은 경우에는 "숫자는 5보다 큽니다."를 출력합니다.
 
 

2. loop 반복문:

loop문은 조건이 참이 될 때까지 무한히 반복하는 제어문입니다. loop문은 주어진 코드 블록을 무한히 반복 할 수 있습니다. `loop` 을 종료하기 위해 조건문을 포함하고  break 키워드로 종료를 해야 합니다.

loop {
    // 반복적으로 실행될 코드
    if 조건식 {
        break; // 반복문 종료
    }
}

 

[Rust  `loop` 반복문 예시]

fn main() {
    let mut count = 0;

    loop {
        println!("현재 count 값: {}", count);
        count += 1;

        if count >= 5 {
            break; // count가 5 이상이면 loop 종료
        }
    }
}

* 위의 코드에서 loop문은 무한히 반복되며, count 변수의 값을 출력하고 1씩 증가시킵니다. if count >= 5 조건문을 사용하여 count가 5 이상이 되면 break를 통해 loop를 종료합니다.
 
 

3. while 반복문:


`while` 문은 주어진 조건이 참인 경우에 코드 블록을 반복 실행합니다. 조건이 거짓이 되면 반복이 중지됩니다.

while 조건식 {
    // 반복 실행되는 코드
}

 

[Rust  `while` 반복문 예시]

fn main() {
    let mut count = 0;

    while count < 5 {
        println!("현재 count 값: {}", count);
        count += 1;
    }

    println!("반복문 종료!");
}

* 위의 예시는 count 변수가 0에서 시작하여 5보다 작은 동안 반복문이 실행됩니다. 반복문 내에서는 현재 count 값을 출력하고, count를 1씩 증가시킵니다.  count가 0,1,2,3,4 일때까지  총 5번 반복되고  count가 5가 되면 반복문의 조건이 거짓이 되면 반복문이 종료됩니다.
 
 

4. for  in 반복문:

for문은 주로 컬렉션(배열, 벡터 등)의 각 요소에 대해 반복 작업을 수행 하는데 사용됩니다.

for 요소 in 컬렉션 {
    // 요소에 대한 반복 실행되는 코드
}

 

[Rust  `for` 반복문 예시]

fn main() {
    let numbers = [1, 2, 3, 4, 5];
    // numbers[0] = 10; // 컴파일 오류! 배열의 요소는 변경할 수 없음

    for number in &numbers {
        println!("현재 숫자: {}", number);
    }
}

* 위의 예시는 numbers라는 배열에 저장된 각 숫자를 순회하면서 반복문이 실행됩니다. for 반복문의 특성상 반복 변수 number는 각 숫자를 차례대로 가리키게 됩니다( 1> 2 > 3> 4> 5 ). 반복문 내에서는 현재 number 값을 출력합니다.

다음은 벡터를 이용한 동적 크기의 배열을 반복하는 예시입니다.
위의 예시와 달리 동적 크기의 배열을 구현 할 수 있습니다.

let mut numbers = vec![1, 2, 3, 4, 5];
// numbers[0] = 10; // 배열의 요소는 변경 가능

for num in &numbers {
    println!("{}", num);
}

*위의 예시는 벡터를 이용하여  numbers의 각 요소를 가져와서 num 변수에 할당하고 반복적으로 출력합니다.

이러한 제어문을 사용하여 Rust 프로그램의 흐름을 제어할 수 있습니다. 각 제어문은 필요에 따라 유연하게 조합하여 복잡한 로직을 구성할 수 있습니다.
 

ㅁ동적 배열과 정적 배열

let numbers = [1, 2, 3, 4, 5];  와  let mut numbers = vec![1, 2, 3, 4, 5]; 차이

 
(1) 데이터 타입:

  • let mut numbers = [1, 2, 3, 4, 5];는 고정된 크기의 배열(array)을 생성
  • let mut numbers = vec![1, 2, 3, 4, 5];는 동적으로 크기가 조정 가능한 벡터(vector)를 생성

(2) 메모리 할당:

  • [1, 2, 3, 4, 5]를 사용한 배열은 컴파일 타임에 크기가 결정되며, 해당 크기에 맞게 메모리가 스택(stack)에 할당
  • vec![1, 2, 3, 4, 5]를 사용한 벡터는 실행 타임에 크기가 결정되기 때문에, 메모리는 힙(heap)에 동적으로 할당

(3) 크기 변경:

  • 배열([])은 생성된 이후에 크기를 변경할 수 없고  초기에 설정한 크기를 유지함
  • 벡터(vec!)는 push, pop 등의 메소드를 사용하여 동적으로 크기를 변경 가능하고 요소를 추가하거나 제거하여 벡터의 크기를 조절가능

 

ㅁ push pop를 이용한 배열 다루기

push는 벡터의 끝에 요소를 추가하고, pop은 벡터의 마지막 요소를 제거하고 반환하는 역할

fn main() {
    let mut numbers = vec![1, 2, 3, 4, 5];
    
    numbers.push(6); // 벡터에 6을 추가

    println!("numbers: {:?}", numbers); // [1, 2, 3, 4, 5, 6]

    let popped_value = numbers.pop(); // 마지막 요소를 제거하고 반환

    println!("popped_value: {:?}", popped_value); // Some(6)
    println!("numbers: {:?}", numbers); // [1, 2, 3, 4, 5]
}

 
Rust 언어가 생소한 명령들이 있어서 C나 Python 같은 언어들과 차이가 많습니다. 하나씩 배워 가야 할 것 같습니다.
 
[Programming] - Rust기초 알기 - 3.1 변수와 데이터 타입
[Programming] - Rust기초 알기 - 3.2 제어문 (조건문, 반복문)

728x90
반응형