프로그래밍 언어는 실제 생활을 시뮬레이션합니다. 무언가에 대해 혼란스럽다면 실제 생활에서 사례를 찾아보세요.
우리 삶의 대부분은 조립 라인과 같습니다.
기상 -> 아침 -> 직장/학교 -> 점심 -> 직장/학교 -> 집 -> 저녁 -> 수면
일상적인 관점에서 보면 삶은 정말 순조롭고 유선형이지만, 모든 일에 있어서는 많은 딸꾹질이 있을 것입니다.
예를 들어
일어나 -> (아직 어두우면 계속 자고, 그렇지 않으면 일어나서 아침을 먹어라)
예를 들어
토요일이나 일요일이면 출근하지 않아도 되고, 수업에 가지 않아도 됩니다.
즉, 모든 일은 조건에 따라 판단되는데, 그 조건이 참이면 어떻고, 조건이 거짓이면 어떻습니까?
프로그래밍 언어도 생활을 시뮬레이션하기 때문에 일반적으로 프로그래밍 언어는 입력 코드부터 시작하여 하나씩 실행합니다.
fn main()
{
let name ="러스트";// 이름
let first_meet =false;// 처음인가요?
println!("{},안녕!",name);
println!("만나서 반가워요");
println!("처음하는 배우세요");
println!("러스트 프로그래밍");
}
위 코드는 위에서 아래로 한줄씩 실행됩니다. 그래서 출력 결과는
러스트,안녕!
만나서 반가워요
처음하는 배우세요
러스트 프로그래밍
하지만 때때로 우리는 '처음 만난다면 인사말을 출력하고, 처음이 아니면 이름을 직접 출력하라'고 생각할 것입니다.
실제 생활에서 흔히 발생하는 이러한 요구 사항을 프로그램에서 어떻게 시뮬레이션할 수 있습니까?
9.1 프로그래밍 언어의 조건부 판단
위에서 언급한 if...then...또는 if...then...else...선택 판단에 대해 우리는 이를조건 판단이라고 부릅니다.
즉, 조건부 판단은
그렇다면...그러면
또는
그렇다면 .... 그러면 ... 그렇지 않으면 ....
또는
그렇다면 .... 그렇다면 .... 그렇지 않으면 ... 그렇다면 ... 그렇지 않으면 ... 그렇다면 .... 그렇지 않으면 ....
대부분의 프로그래밍 언어에는 조건이 참인지 거짓인지에 대해 서로 다른 선택을 하는 동일한 조건부 판단문이 있습니다. 기본 흐름도는 다음과 같습니다.
조건부 판단문
설명하다
if 문
if 문은 실제 if...then...을 시뮬레이션하는 데 사용됩니다.
if…else 문
if...else 문은 if...then...else...를 시뮬레이션하는 데 사용됩니다.
else…if 및 중첩된 if 문
중첩된 if 문은 if...then...if...then...을 시뮬레이션하는 데 사용됩니다.
match
match 문은 관련 내용과 일치하는 데 사용됩니다.
9.2 if 문
우리는 흔히 배고프면 밥을 먹고, 오늘 날씨가 좋으면 나들이를 간다고 말하곤 합니다.
우리는 이것을 if...then 문이라고 부르는데, 배가 고프다, 맑다 등을 조건이라 하고, 식사, 나들이 등을 조건이 참일 때 수행되는 동작이라고 합니다.
if 문은 Rust 언어에서 실제 생활의if...then상황을 시뮬레이션하는 데 사용됩니다.
9.2.1 if 문 구문
if boolean_expression {
// boolean_expression이 true일 때 실행할 명령문
// statement(s)
}
따라서 if 문은 간단히 말해서 다음과 같습니다.
boolean_expression이 true이면 중괄호 안의 명령문이 실행됩니다.
boolean_expression이 false인 경우 중괄호 뒤의 첫 번째 문이 실행됩니다.
배가 고프면if 문으로 형식을 지정하면 먹어보세요 .
if배가 고프면{
식사하세요
}
9.2.2 예
if 문을 사용하여 숫자가 0보다 큰 경우 양수 출력을 시뮬레이션하는 예제를 작성해 보겠습니다.
fn main(){
let num:i32 =5;
if num >0{
println!("정수");
}
}
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
정수
9.3 if else 문
인생에는 매일 조립 라인 스타일이 있지만 객관식 질문은 하나뿐입니다. 하지만 객관식 문제가 하나만 있는 경우 선택지가 실제로 하나뿐이라면 어떻게 될까요?
아니, 아무것도 하지 않는 것 외에 다른 선택은 없을까?
다른 선택이 뭔가를 하는 것이라면, 그렇게 되지 않을까요?
그렇다면... 그렇다면... 그렇지 않으면...
프로그래밍 언어의 제작자들은 의도적으로 if 문과 선택적인 else 문을 뒤따라 이러한 대체 상황을 오랫동안 생각해 왔습니다.
이 대체 if 문을 if else 문이라고 합니다.
9.3.3 if..else 문 구문 형식
if boolean_expression {
// boolean_expression이 true인 경우 여기에서 코드를 실행하세요.
}else{
// boolean_expression이 false이면 여기에서 코드를 실행하세요.
}
9.3.4 if..else 문 흐름도
if else 문 중에서 if 문이 가장 중요합니다. 조건이 true이면 else 문과 아무 관련이 없습니다.
실제로 if 문 뒤의 else 문은 선택 사항입니다. 앞서 말했듯이 조건이 거짓이고 아무 작업도 수행되지 않은 경우 else 문의 용도는 무엇입니까? else 문의 유일한 기능은 if 문의 조건이 false일 때 수행할 작업과 실행할 작업을 수행하는 것입니다.
9.3.5 예
if else 문을 사용하여 숫자가 짝수인지 홀수인지 확인하는 코드를 작성합니다. 짝수이면 짝수를 출력합니다.
fn main(){
let num =12;
if num %2==0{
println!("짝수");
}else{
println!("홀수");
}
}
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
짝수
9.4 중첩된 If 문
실제 생활에서는 if...그렇지 않으면 이와 같은 상황이 여러 개 있습니다.
예를 들어, 오늘 날씨가 좋으면 소풍을 가고, 비가 오면 눈사람을 만들고, 비가 많이 오면 집에서 TV를 봅니다. .
여러 if 상황에 직면하면 중첩된 if 문을 사용할 수 있습니다.
중첩된 if 문은 여러 조건을 테스트하는 데 사용됩니다.
9.4.1 구문
중첩된 If 문의 구문 형식은 다음과 같습니다.
if boolean_expression1 {
// boolean_expression1이 true일 때 실행할 명령문
}elseif boolean_expression2 {
// boolean_expression2가 true일 때 실행할 명령문
}else{
// boolean_expression1 및 boolean_expression2가 모두 false인 경우 실행할 명령문
}
좀 복잡해 보이지 않나요?
중첩된 if 문, 즉 if…else if… 문을 사용할 때 명심해야 할 몇 가지 사항이 있습니다.
모든 if 또는 중첩된 if 문은 0개 또는 1개의 else 문을 가질 수 있지만 else 문은 if else 뒤, 즉 끝에 나타나야 합니다.
모든 if 또는 중첩된 if 문은 0개 이상의 if else 문을 가질 수 있지만 모든 if else 문은 else 문 앞에 나타나야 합니다.
else if의 조건 boolean_expression1이 true를 반환하면 후속 else if 및 else 문은 실행되지 않습니다.
9.4.2 예
중첩된 if 문을 사용하여 값이 0보다 큰지, 작은지, 같은지를 결정하는 코드를 작성합니다.
fn main(){
let num =2;
if num >0{
println!("{} is positive",num);
}elseif num <0{
println!("{} is negative",num);
}else{
println!("{} is neither positive nor negative",num);
}
}
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
2is positive
9.5 일치문
match 문은 현재 값이 값 집합/열 중 하나와 일치하는지 확인하는 데 사용됩니다.
실생활에 적용하면 일치는 교사가 출석을 위해 철수 이름을 부르면 철수라는 학생이 대답합니다.
C 언어를 알고 있다면 Rust의 일치 표현식은 C 언어의 스위치 문과 유사합니다.
이제 match 문의 일반적인 인상을 얻었으므로 Rust의 switch 문의 구문 형식을 살펴보겠습니다.
9.5.1 일치문 구문 형식
Rust의 기본 일치문 구문 형식은 다음과 같습니다.
match variable_expression {
constant_expr1 =>{
// 성명;
},
constant_expr2 =>{
// 성명;
},
_ =>{
// 기본
// 기타
}
};
일치 문에는 반환 값이 있으며, 일치 값 이후 마지막으로 실행된 문의 결과를 반환 값으로 사용합니다.
let expressionResult = match variable_expression {
constant_expr1 =>{
//성명;
},
constant_expr2 =>{
// 성명;
},
_ =>{
// 기본
// 기타
}
};
위의 두 match 문의 구문을 분석해 보겠습니다.
가장 먼저 주목해야 할 점은 match 키워드 뒤에 오는 표현식을 괄호로 묶을 필요가 없다는 것입니다. 즉, Variable_expression은 한 쌍의 대괄호(())로 묶을 필요가 없습니다.
둘째, match 문이 실행되면 Variable_expression 표현식의 값을 계산한 다음 계산된 결과를 각 Constant_exprN과 일치시킵니다. 즉, =를 사용하여 일치시킵니다. 일치가 성공하면 => {} 내부의 문이 실행됩니다.
변수 표현식의 값이어떤 Constant_exprN과도 일치하지 않으면 기본적으로 일치합니다. 따라서 일치하는 항목이 없으면 기본적으로 _ => {}의 문이 실행됩니다.
일치 문에는 반환 값이 있으며, 일치 값 이후 마지막으로 실행된 문의 결과를 반환 값으로 사용합니다.
_ => {} 문은 선택 사항입니다. 즉, match 문은 이 문 없이도 사용할 수 있습니다.
문이 하나만 있는 경우 각 상수_expr2 => {}의 {}를 생략할 수 있습니다.
9.5.2 예
match 문은 약간 복잡한 것 같습니다. 이를 설명하기 위해 몇 가지 예를 들어보겠습니다.
fn main(){
let state_code ="MH";
let state = match state_code {
"MH"=>{println!("Found match for MH");"Maharashtra"},
"KL"=>"Kerala",
"KA"=>"Karnadaka",
"GA"=>"Goa",
_ =>"Unknown"
};
println!("State name is {}",state);
}
위의 Rust 코드를 컴파일하고 실행하면 출력 결과는 다음과 같습니다.
Found match for MH
State name isMaharashtra
위의 예에서 state_code는 문법의 Variable_expression에 해당하고, MH, KL, KA, GA는 문법의 Constant_expr1, Constant_expr2 등에 해당됩니다.
값이 MH인 Variable_expression은 값이 MH인 첫 번째 Constant_expr1과 일치하므로 실행됩니다{println!("Found match for MH"); "Maharashtra"}. 마지막으로 실행된 문의 결과인 "Maharashtra"가 전체 표현식의 값으로 반환됩니다.
이러한 방식으로 상태 변수에 Maharashtra 값이 할당됩니다.
9.5.3 예 2
위의 예는 일치하는 경우입니다. 일치하는 항목이 없으면 _ => 문이 실행됩니다.
fn main(){
let state_code ="MS";
let state = match state_code {
"MH"=>{println!("Found match for MH");"Maharashtra"},