Day 7:第二週總結練習
學習目標
- 綜合運用本週學到的基本語法
- 完成一個小程式整合變數、函式、控制流程
今日重點
本週回顧清單
- 變數預設不可變,用
mut宣告可變 - 基本型別:i32、u32、f64、bool、char、String、tuple、array
- 型別推斷與明確標註
- 函式:參數、回傳值、表達式 vs 陳述式
- 多回傳值(tuple)、Option
- if / match 表達式
- loop / while / for 迴圈
綜合練習:成績計算器
寫一支程式完成以下功能:
// 1. 一個函式轉成績分數為等第
fn grade_for(score: u32) -> char {
if score >= 90 { 'A' }
else if score >= 80 { 'B' }
else if score >= 70 { 'C' }
else if score >= 60 { 'D' }
else { 'F' }
}
// 2. 一個函式算總分與平均
fn stats(scores: &[u32]) -> (u32, f64) {
let total: u32 = scores.iter().sum();
let avg = total as f64 / scores.len() as f64;
(total, avg)
}
fn main() {
let scores = vec![95, 82, 67, 88, 73];
// 3. 印出每科等第
for &s in &scores {
println!("Score {} -> {}", s, grade_for(s));
}
// 4. 印出總分與平均
let (total, avg) = stats(&scores);
println!("Total: {}, Avg: {:.1}", total, avg);
}
自我挑戰
- 把所有不及格的成績用 loop/while 再數一遍有幾科。
- 加一個
max_score函式回傳最高分(用 loop 找)。
自我檢查
- 能獨立完成成績計算器
- 熟練使用函式回傳 tuple
- 能結合 for + match/if 處理集合
- 對寫 Rust 的基本手感有信心
週總結
你已完成基本語法。下一週將進入 Rust 最核心也最特別的「所有權系統」。