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)
Пікір қалдыру үшін кіріңіз →
Әзірге пікір жоқ. Бірінші болыңыз.