Day 7:第二週總結練習

學習目標

  • 綜合運用本週學到的基本語法
  • 完成一個小程式整合變數、函式、控制流程

今日重點

本週回顧清單

  1. 變數預設不可變,用 mut 宣告可變
  2. 基本型別:i32、u32、f64、bool、char、String、tuple、array
  3. 型別推斷與明確標註
  4. 函式:參數、回傳值、表達式 vs 陳述式
  5. 多回傳值(tuple)、Option
  6. if / match 表達式
  7. 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 最核心也最特別的「所有權系統」。