Shanraq.org Shanraq.org
Тәжірибе: шағын қорытынды
IT

Rust: алғашқы қадамнан жеке жоспарлау құралына дейін 17-сабақ (барлығы 20)

Тәжірибе: шағын қорытынды

Сабақ 17. Бұрынғы шарт, функция, жиым және тест арқылы қорытындыны өз бетіңізше жасау.

Мәтін ИИ көмегімен аударылды.

Алдын ала: 1–16-сабақтар. Бұл сабақта жаңа Rust жазылымы жоқ. Тест іске қосылмаса, 16-сабаққа, ал жиымдағы мән мен орынды шатастырсаңыз, 13-сабаққа және 15-сабаққа оралыңыз.

Алдымен тірек картаны қалпына келтіріңіз

Алдыңғы беттерді жауып, мына жолды өзіңіз сызыңыз: дерек → таңдау ережесі → әр мәнді қарау → санауыштар → көрсету → тесттер. u32, [u32; 4], for, if, fn, #[test] туралы жатқа түсіндіріңіз. Содан кейін ғана ескі сабақтармен салыстырыңыз. Дайын кодты тану оңай; бұл жұмыста оны қайта құрасыз.

Сандар төрт тапсырманың минутын білдіреді. Нөл — тапсырма жоқ деген шартты белгі; 1–15 минут аралығы, екі шетімен қоса, қысқа тапсырма. Әзірге атау мен пайдаланушы енгізетін дерек жоқ. Мәндер бастапқы кодта жазылған, сондықтан бағдарлама жабылғаннан кейін өзгертілген тізім сақталмайды.

Дайын кодты оқып көріңіз

6-сабақтағы organizer жобасында, Cargo.toml бар бумада жұмыс істеңіз. Ескі src/main.rs файлын бөлек сақтап, мазмұнын осы мысалмен толық ауыстырыңыз. cargo run пәрмені main функциясын құрастырып, іске қосады. Төмендегі блокта Cargo хабарлары жоқ. Алдымен санды болжаңыз.

fn count_short(minutes: [u32; 4]) -> u32 {
    let mut count = 0;
    for value in minutes {
        if value > 0 && value <= 15 {
            count = count + 1;
        }
    }
    count
}

fn main() {
    let tasks = [0, 8, 20, 15];
    println!("Қысқа тапсырма: {}", count_short(tasks));
}
Қысқа тапсырма: 2

Функция санды қайтарады, ал хабарды main шығарады. 0 мен 20 неге есепке алынбайды? 15 орнына 16 қойсаңыз не болады? Әуелі болжап, сосын өзгертіп тексеріңіз. Бұл сандық жиым функцияға берілгенде көшіріле алады; осы ережені кейін кездесетін мәтін мәндеріне тексермей қолданбаңыз.

Тапсырма: дербес тексеру

Міндетті. Дайын мысалды көшірмей, is_short(minutes: u32) -> bool және summarize(minutes: [u32; 4]) -> [u32; 2] жазыңыз. Қайтарылатын екі элементтің біріншісі — қысқа тапсырма саны, екіншісі — олардың жалпы минуты. [0, 8, 20, 15] үшін main нәтижесі Қысқа тапсырма: 2 және Минут: 23 болсын. [0, 0, 0, 0][0, 0], [1, 15, 16, 0][2, 16] және негізгі жағдайға тест қосыңыз. cargo test, кейін cargo run орындаңыз.

Жұмыс реті: күтілетін жауаптарды қағазға жазыңыз; функцияларды еске түсіріп теріңіз; алғашқы қате хабарын өз сөзіңізбен түсіндіріңіз; қайта тексеріңіз. Тек кіріс жиымды [15, 15, 15, 15] етіп ауыстырыңыз: 4 пен 60 шығуы керек. Ертең бос файлдан қайта орындап көріңіз. Қай жерде тоқтасаңыз, тірек картадағы жетіспейтін қадамды табыңыз.

Ишара

Екі санауышты нөлден бастаңыз. Жиымның әр мәнін қараңыз. if is_short(value) ішінде санын бірге арттырып, минутын қосыңыз. Функцияның соңғы өрнегі — [count, total]. main ішінде нәтижедегі 0 және 1 орындарды 15-сабақтағыдай қолданыңыз.

Өз талпынысыңыздан кейінгі үлгі

fn is_short(minutes: u32) -> bool {
    minutes > 0 && minutes <= 15
}

fn summarize(minutes: [u32; 4]) -> [u32; 2] {
    let mut count = 0;
    let mut total = 0;
    for value in minutes {
        if is_short(value) {
            count = count + 1;
            total = total + value;
        }
    }
    [count, total]
}

fn main() {
    let result = summarize([0, 8, 20, 15]);
    println!("Қысқа тапсырма: {}", result[0]);
    println!("Минут: {}", result[1]);
}

#[test]
fn no_tasks() {
    assert_eq!(summarize([0, 0, 0, 0]), [0, 0]);
}

#[test]
fn boundaries() {
    assert_eq!(summarize([1, 15, 16, 0]), [2, 16]);
}

#[test]
fn ordinary_case() {
    assert_eq!(summarize([0, 8, 20, 15]), [2, 23]);
}
Қысқа тапсырма: 2
Минут: 23

Нәтиже жиымы әзірге ыңғайлы, бірақ 0 және 1 индекстерінің мағынасын есте ұстау керек. Кейін құрылым арқылы оларға атау береміз. Үлгіге қарап аяқтасаңыз, келесі сабаққа дейін оны қарамай қайта орындаңыз.

Алдыңғы сабақ · Мазмұны

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.