KhanSoft Academy
Цэс
Хичээл

Программын оролт ба гаралт

Программ стандарт оролтоос өгөгдөл авч, стандарт гаралт руу яг шаардсан үр дүнг хэрхэн бичдгийг ойлгоно.

  • beginner
  • 25 минут

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

  • Стандарт оролт, боловсруулалт, стандарт гаралтын үүргийг ялгах
  • C, C++, Python хэлний энгийн унших болон хэвлэх үйлдлийг таних
  • Online judge яагаад гаралтын хэлбэрийг яг шалгадгийг тайлбарлах

Холбоотой practice

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

Программ зөв тооцоолол хийсэн ч шаардсан өгөгдлөө уншаагүй эсвэл хариугаа өөр хэлбэрээр хэвлэвэл хэрэглэгч, өөр программ, эсвэл шалгагч систем үр дүнг зөв танихгүй. Тиймээс оролт → боловсруулалт → гаралт бол бараг бүх жижиг программын үндсэн урсгал.

Энгийн mental model

text
Стандарт оролт → Программ → Стандарт гаралт

Стандарт оролт (standard input, stdin) нь программд гаднаас ирэх текстэн өгөгдөл. Стандарт гаралт (standard output, stdout) нь программын үндсэн үр дүнгээ бичих суваг. Terminal дээр ажиллуулахад keyboard болон дэлгэц мэт харагддаг ч online judge файл эсвэл тусгаарлагдсан урсгал ашиглаж болно.

Гурван хэл дээрх ижил санаа

c
int a, b;
scanf("%d %d", &a, &b);
printf("%d\n", a + b);
cpp
int a, b;
cin >> a >> b;
cout << a + b << '\n';
python
a, b = map(int, input().split())
print(a + b)

Syntax өөр боловч урсгал ижил: хоёр бүхэл тоо уншина, нийлбэрийг олно, хариуг хэвлэнэ.

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

  1. Оролтын contract-ийг унш

    Хэдэн утга, ямар төрөл, ямар дарааллаар ирэхийг тодорхойл.

  2. Утгуудаа parse хий

    Ирсэн текстийг шаардсан бүхэл тоо эсвэл өөр өгөгдлийн төрөл болго.

  3. Үр дүнгээ тооцоол

    Бодлогын дүрмийг зөвхөн уншсан утгууд дээр хэрэгжүүл.

  4. Гаралтын contract-ийг дага

    Мөр, зай, тэмдэглэгээг шаардлагатай хэлбэрээр бич.

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

Хоёр тооны нийлбэрийн урсгалыг бич

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

3 5 оролтоос 8 гаралт үүсэх дөрвөн алхмын тайлбар болон сонгосон хэл дээрх ажиллах код.

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

Эхлээд хэлээс үл хамаарах оролт → тооцоо → гаралт урсгалаа бич.

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

  • Оролтын утгын тоо эсвэл дарааллыг буруу ойлгох.
  • Тоог текст хэлбэрээр залгаж хэвлэх.
  • Гаралтад шаардлагагүй үг, таслал, зай нэмэх.
  • C хэлэнд scanf ашиглахдаа хувьсагчийн хаягийг өгөхөө мартах.

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

stdin ямар үүрэгтэй вэ?
Judge бодлогод яагаад `Хариу: 8` гэж хэвлэх нь буруу байж болох вэ?
C, C++, Python жишээнүүдийн нийтлэг урсгал аль вэ?

Дүгнэлт

Программ стандарт оролтоос өгөгдөл уншиж, түүнийг шаардсан төрөлд хөрвүүлэн боловсруулж, стандарт гаралт руу contract-ийн дагуу үр дүн бичдэг. Энэ урсгал хэл бүрд өөр syntax-тай боловч ижил сэтгэх загвартай.

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