Loop

Hunter_Joe·2023년 8월 6일
0

Rust 기초

목록 보기
4/8
post-thumbnail

loop

  • 조건에 도달할 때까지 반복

1. definite loops

  • 컴파일 타임에 반복횟수가 정해진 루프

example

for

2. indefinite loops

  • 컴파일 타임에 반복횟수가 정해지지 않은 루프

example

while
loop

for loop

syntax

example

fn main() {
    //define a for loop 
    for i in 0..5 {
      println!("{}", i);
    }
}
-----------------------
*console 
0
1
2
3
4

note

  • lower bound는 포함되고 upper bound는 제외됨

enumerate

  • .enumerate()function : 루프가 몇번 실행됐는지 확인 가능

syntax

example

fn main() {
	for(count, variable) in (7..10).enumerate() {
    	println!("count = {}, variable = {}", count, variable); 
    }
}

while

  • 특정 조건에 도달할 때까지 반복
  • while에서 반복 횟수를 미리 알 수 없음

syntax

example

fn main() {
	let mut var = 1 ;
	let mut found = false; 

	while !found {
		var = var + 1; 
		println!("{}", var);

		if var % 2 == 1 {
			found = true;
		}
        println!("Loop runs");
	}
}

loop

  • 코드 블록 앞에 loop keyword 사용
  • 반복을 무한하게 사용하고 싶을 때

syntax

example

fn main() {
	let mut var = 1; 
    
    loop {
    var +=1;
    prinln!("{}", var);
    }
}

break

  • break는 반복을 종료함
  • 일반적으로 조건문 안에 위치하고 연결된 조건이 true일 때 실행

syntax & example

for i in 0..10 {
	println!("{}", i);
    if i == 2 {
    break
    }
}
  • break문은 while, for,, loop에서 사용가능

1. for loop에서의 break

fn main() {
	for i in 0..10 {
    	prinln("i : {}", i);
    	if i == 5 {
        break;
    	}
    }
}

2. while loop에서의 break

fn main() {
	let mut i = 1;
    let found = false;
	
    while !found {
    println!("i : {}", i);
    	if i == 5 {
    	break;
    	}
        i = i + 1;
    }
}

3. loop 에서의 break

fn main() {
	let mut i = 1;
    
    loop {
    	println!("i : {}", i);
        if i == 5 {
        	break; 
        }
        i = i + 1;
    }
}

note

  • 무한 루프에서 관리 가능한 반복문으로 바뀐다.
    the infinite loop is turned into a "managrable" loop.

continue

  • 반복문 안에서 마주치면 나머지 본문의 실행을 건너뜀
  • 다시 루프 시작 지점으로 이동

syntax

fn main() {
	for var in 0..5 {
    	if var == 2 {
        	println!("Continue statement");
            continue;
        }
        println!("var : {}", var);
    }
}

for loop에서의 continue

fn main() {
	for var in 0..10 {
    if var == 4 {
    println!("encounter a continue statement"};
    continue;
    }
    println!("var : {}", var);
    println!("did not encounter continue statement")
}

while loop 에서의 continue

fn main() {
    let mut var = 1; 
    let mut found = true;

    while found {
      var = var + 1;
      println!("{}", var);      
    
    	if var == 4 {
          println!("I encoutered a continue statement");
          continue;
        }
        println!("I did not encounter continue statement");
        
        if var == 10{
          found = false;
        }
    }
}

loop 에서의 continue

fn main() {
  // define an integer variable
  let mut var = 1; 
  // define a loop
  loop {
    var = var + 1;
    println!("{}", var);
    
     if var == 4 {
        println!("I encoutered continue statement");
        continue;
      }
      println!("I did not encounter continue statement");
  }
}

note

  • 위 코드는 무한히 작동

nested loops

  • 이중 for

syntax

example

fn main() {
	for i in 1..5 {
    	println!("multiplication table of : {}, i");
        for  j 1..5 {
	        println!("{} * {} = {}", i, j, i*j);
        }
    }
}

loop labels

  • 루프에 식별자를 할당함

syntax

  • 반복문 앞에 레이블과 콜론을 붙힘

example

fn main() {
 'outer:for i in 1..5 { 
    println!("Muliplication Table : {}", i);
   'inner:for j in 1..5 { 
        if i == 3 { continue 'outer; } 
        if j == 2 { continue 'inner; } 
        println!("{} * {} = {}", i, j, i * j);
   }
 }
}
----------------------------------------------
* 2,4번 코드 맨 앞에 '는 왜 붙히는거지?
profile
hunting season

0개의 댓글