KhanSoft Academy
Цэс
Хичээл

Нөхцөл ба давталтын үндэс

Нөхцөлөөр шийдвэр гаргаж, давталтаар олон утгыг системтэй боловсруулах үндсийг сурна.

  • beginner
  • 35 минут

Энэ хичээлээр

  • Boolean нөхцөл үнэн эсвэл худал болохыг тайлбарлах
  • if/else ашиглан хоёр замын нэгийг сонгох
  • Давталтын эхлэл, нөхцөл, шинэчлэл болон accumulator-ийг таних

Холбоотой practice

Яагаад энэ ойлголт хэрэгтэй вэ?

Программ үргэлж нэг шулуун замаар ажиллахгүй. Оролтын утгаас шалтгаалан өөр хариу сонгох, эсвэл олон өгөгдөл дээр ижил үйлдлийг давтах хэрэгтэй. Нөхцөл (condition) нь аль замыг сонгох, давталт (loop) нь хэдэн удаа хийх асуултад хариулна.

Энгийн mental model

text
Нөхцөл: асуулт → үнэн эсвэл худал → нэг салаа
Давталт: эхлэл → үргэлжлэх нөхцөл → ажил → шинэчлэл → дахин шалгах

Нөхцөлөөр шийдвэр гаргах

python
if n % 2 == 0:
    print("Тэгш")
else:
    print("Сондгой")

n % 2 == 0 нь Boolean илэрхийлэл. Үнэн үед эхний, худал үед хоёр дахь салаа ажиллана. Гаралтын хоёр мөр зэрэг ажиллахгүй.

Гурван тооны хамгийн ихийг олохдоо эхний утгыг одоогийн хариу болгоод дараагийн утга илүү их эсэхийг тус тусад нь шалгаж болно. Энэ нь бүх утга сөрөг үед 0-ээр эхлүүлэх алдаанаас хамгаална.

Давталтаар нийлбэр хуримтлуулах

c
long long total = 0;
for (int index = 0; index < n; index += 1) {
    int value;
    scanf("%d", &value);
    total += value;
}

total бол accumulator буюу давталт бүрийн үр дүнг хуримтлуулах хувьсагч. Түүнийг 0-ээр эхлүүлэх нь нэмэх үйлдлийн identity утгыг ашиглаж буй хэрэг.

Техникийн урсгал

  1. Нөхцлөө өгүүлбэрээр бич

    Жишээ нь: “n-ийг 2-т хуваасан үлдэгдэл 0-тэй тэнцүү юу?”

  2. Салаа бүрийн үр дүнг тодорхойл

    Үнэн болон худал үед яг юу хэвлэх, юу шинэчлэхийг салга.

  3. Давталтын хэмжээг тогтоо

    N утга боловсруулах бол loop яг N удаа ажиллах ёстой.

  4. Boundary тохиолдлыг шалга

    0, 1, сөрөг утга, тэнцүү maximum, хамгийн бага N-ийг турш.

Практик дасгал

Array нийлбэрийн trace table хий

Хүлээгдэж буй үр дүн

1, 2, 3, 4, 5 утга бүрийн дараах total-ийг 1, 3, 6, 10, 15 гэж харуулсан хүснэгт.

Дуусгах шалгах хуудас
Сонголттой зөвлөмж

Мөр бүрд index, value, шинэ total гэсэн гурван багана бич.

Түгээмэл алдаа

  • Нөхцөлд оноох = болон харьцуулах операторыг андуурах.
  • 0-ийг тэгш тоо гэдгийг орхих.
  • Давталтыг нэг удаа дутуу эсвэл илүү ажиллуулах.
  • Accumulator-ийг эхлүүлэхгүй орхих.
  • Бүх утга сөрөг байхад maximum-ийг 0-ээр эхлүүлэх.

Мэдлэгээ шалгах

if/else ямар асуудлыг шийддэг вэ?
N утгын нийлбэр олох loop хэдэн утгыг боловсруулах ёстой вэ?
Нийлбэрийн accumulator-ийг яагаад 0-ээр эхлүүлдэг вэ?

Дүгнэлт

Нөхцөл оролтын утгаас хамаарч нэг үйлдлийн замыг сонгодог. Давталт ижил ажлыг тодорхой тоогоор давтаж, accumulator олон алхмын үр дүнг хадгалдаг. Boundary тохиолдлыг гараар trace хийх нь off-by-one болон буруу эхлэлтийн алдааг эрт илрүүлнэ.

Албан эх сурвалж