Dasturlash bo'yicha masalalar yechimi to'g'riligini tekshiruvchi yangi tizim haqida | Статья в журнале «Техника. Технологии. Инженерия»

Отправьте статью сегодня! Журнал выйдет 28 декабря, печатный экземпляр отправим 1 января.

Опубликовать статью в журнале

Авторы: ,

Рубрика: Спецвыпуск

Опубликовано в Техника. Технологии. Инженерия №3 (5) июнь 2017 г.

Дата публикации: 14.07.2017

Статья просмотрена: 9650 раз

Библиографическое описание:

Юсупов, О. К. Dasturlash bo'yicha masalalar yechimi to'g'riligini tekshiruvchi yangi tizim haqida / О. К. Юсупов, К. К. Ибадуллаев. — Текст : непосредственный // Техника. Технологии. Инженерия. — 2017. — № 3.1 (5.1). — С. 74-75. — URL: https://moluch.ru/th/8/archive/62/2627/ (дата обращения: 18.12.2024).



Annotatsiya: Ushbu maqolada online TATU Urganch filialida ishlab chiqilgan va amalga tadbiq qilingan tekshiruv tizimi, uning imkoniyatlari, oldingi tizimlardan afzallik tamonlari to’g’risida so’z yuritilgan.

Kalit so’zlar: dasturlash, dastur kodi, dastur kodini testlash, online tekshiruv tizimi, online musobaqa, foydalanuvchilar reytingi

Аннотация. В данной статье речь идёт о новой онлайн-проверяющий системе, разработанной в Ургенчском филиале ТУИТ, ее возможностях и преимуществах.

Ключевые слова: программирование, исходный код, онлайн проверяющая система, онлайн соревнование, рейтинг пользователей.

Online tekshiruv tizimlari – dastur kodini testlovchi online tizimlar bo’lib, bu tizimlar yordamida dasturning berilgan testlarni to’g’ri chiqarishidan tashqari dasturning ishlash vaqti, operativ xotiradan egallagan joyi haqida ham ma’lumotlarni olish mumkin.

TATU Urganch filialining algo.ubtuit.uz yechimlarni avtomatik tekshiruv tizimiga uchun yangi tekshiruvchi dastur ishlab chiqildi. Natijada tekshirish vaqtida yechimlarning qancha vaqtda ishlagani va qancha hotira talab qilganligi haqida ma’lumotlar aniqlandi.

Oldingi tekshiruv tizimi sintaktik jihatdan hato yozilgan oddiy kodlar masalan C++ dasturlash tilida ma’lumotni kiritishda cin >> x o’rniga cin << x ko’rinishdia yozilsa, tizim komplyatsida hatolik chiqarmasdan o’z ishini davom ettira olmay qolar edi. Uni administratorning o’zi komplaysiyada hatolikni qo’lda belgilab, tizimni boshqatdan ishga tushirishi lozim edi. Endilikda buning oldi olinib, bunday hatoliklar tizimning turg’un ishlashiga to’sqinlik qila olmaydi. Buni amalga oshirish uchun protses yaratishda maksimal kutish vaqti 5 sekund qilib belgilanib, agar 5 sekundgacha bajariluvchi fayl yaratila olinmasa u holda jarayon to’xtatiladi va comlyatsiyada hatolik javobi qaytariladi.

Dasturning ishlash tartibi

Dastur har bir 1 sekund vaqtdan ma’umotlar bazasiga yangi yechimlar tushganligini tekshirib turadi. Agar yangi yechim jo’natilgan bo’lsa, unining barcha parametrlarnini o’ziga oladi va ma’lumotlar bazasida uning holatini tekshirilmoqda (Running) qilib belgilab qo’yadi. Olingan yechim orqali fayl yaratiladi. Yaratilgan fayl asosida bajariluvchi fayl yaratiladi. Bajariluvchi fayl C, C++, Pascal dasturlash tillarida .exe kengaytmali, Java dasturlash tilida .jar kengaytlali fayl bo’ladi. Keyin testlar papkasidan jami nechta test borligini aniqlaydi va shuncha marta jarayonni bajartiradi. Teslashning ikki variant va mavjud. Umuman olganda masalalar chiqaradigan javob bo’yicha ikki turga bo’linadi.

1) Yagona yechimga ega bo’lgan masalalar.

Yagona yechimga ega bo’lgan masalaga misol qilib quyidagi misolni keltirish mumkin:

Bir o’lchamli massiv berilgan. Sizning vazifangiz uning maksimal elementining qiymatini topishdan iborat. Masalan 5 ta elementdan iborat 40 20 40 30 40 massiv berilgan bo’lsa uning maksimal elementi 40 ga teng. Masimal qiymat yagona bo’lganligi uchun bu masala yagona yechimga ega. Yagona yechimga ega masalalarni tekshirish uchun faqatgina chiquvchi ma’lumotlarni javob faylida yozilgan ma’lumotlar bilan bir xil ekanligini tekshirish yetarli. Chiquvchi ma’lumotlarning bir xilligini 1-ilovada yozilgan quyidagi funksiya asosida quyidagicha tekshirish mumkin:

lineOut = readerOut.readLine(); lineAns = readerAns.readLine();

funksiyalar orqali chiquvchi ma’lumot fayli va javob faylidan bitta qatorni oq’itamiz.

if (!lineOut.equals(lineAns)) return false;

Agar chiquvchi ma’umotlar bir xil bo’lmasa tekshirishni to’xtatish lozim va mantiqiy yolg’on qiymat qaytariladi.

Agar qatorlar oxirigacha tenglik sharti bajarilsa u holda rost qiymatini ya’ni chiquvchi ma’lumotlar teng ekenligi haqida natija qaytariladi.

2) Yagona yechimga ega bo’lmagan masalalar.

Yagona yechimga ega bo’lmagan masalalarda foydalanuvchi chiqaradigan ma’lumot yechimlardan biriga to’g’ri kelishini tekshirish asosiy masala hisoblanadi. Masalan 5 ta elementdan iborat 40 20 40 30 40 massiv berilgan, uning maskimal elementining indeksini topish talab qilinadi. Massivning maksimal elementi 40 ga teng. Indekslari esa 1, 3, 5 sonlari. Masala sharti bo’yicha bu sonlardan birini topish talab etiladi. Foydalanuvchi yechimi 1 sonini, 3 sonini yoki 5 sonini chiqarsa ham to’g’ri hisoblanishi kerak. Bu masalani oldingi usulda (chiquvchi ma’lumotlarni tekshirish) tekshirib bo’lmaydi. 3 ta sondan istalgan birsini chiqarganda yechim to’g’ri deb hisoblanishi kerak.

Bunday tipli masalani tekshirish uchun har bir masala uchun alohida tekshiruvchi bajariluvchi fayl yaratish lozim. Barcha bajariluvchi fayllar checkers deb nomlanuvchi alohida deirektoriyada yaratib, checkerga ega masalalar uchun uning id si bilan .exe bajariluvchi fayl ko’rinishida saqlanadi. Masalan masala indeksi 883 bo’lsa u holda 883.exe deb nomlangan barariluvchi tekshiruvchi fayl yaratish lozim. Uni yaratish uchun uning C++ dasturlash tilidagi kodini yozish loizm. Aynan C++ tili tanlanganligiga sababi bu til uchun yaratilgan testlib.h bibliotekasi yaratilgan bo’lib, tekshiruvchi faylni uning yordamida yozish ancha qulay va oson. Yuqoridagi masala uchun tekshiruvchi fayl kodi quyidagicha 2 – ilovada yozilgan.

int main(int argc, char * argv[]) funksiyasi bajartirilganda 3 ta argument qabul qiladi. Birinchi argument kiruvchi fayl adresi, ikkinchi argument chiquvchi fayl adresi, uchinchi argument javob fayl adresi. Foydalanuvchi yechimining variantlaridan biriga mos kelishini tekshirish uchun kiruvchi fayl ma’lumotlari albatda kerak bo’ladi. Masalan yuqoridagi masalada chiqarilgan maksimal element indeksini olib, massivning maksimal elementini topib, chiqarilgan indeksdagi qiymat maksimalga tengligini tekshirish yetarli.

inf – kiruvchi ma’lumotlar fayli obyekti

ouf – chiquvchi ma’lumotlar fayli obyekti

ansf – javob ma’umotlar fayli obyekti

Shu uchta fayldagi ma’lumotlardan foydalanish orqali istalgan masala uchun yechimning variantlardan biriga mos kelish yoki kelmasligini tekshirish mumkin.

Kiruvchu ma’lumotlar, ya’ni massiv elementlarini quyidagicha kiritib olamiz:

int n = inf.readInt(); – massiv elementlari sonini kiritamiz. readInt() funkiyasi butun sonni kiritish uchun foydalaniladi. Undan tashqari haqiqiy sonni kiritish uchun readDouble(), satr kiritish uchun readString() funksiyalaridan foydalanish mumkin.

Massiv elementlarini esa sikl yordamida kiritamiz. Kiritish vaqtida maksimal elementi va uning indeksini topib boramiz.

for (int i = 1; i <= n ;i++) {

a[i] = inf.readInt();

if (i==1 || a[i] > max_array)

max_array = a[i];

}

Foydalanuvchi yechimi chiqargan ma’lumotni quyodagicha kiritamiz:

int out_id = ouf.readInt();

Foydalanuvchi chiqargan qiymat massiv indeksi bo’lganligi uchun uni dastlab filtirlagan ma’qul, chunki butun son bo’lganligi bilan massiv indeksga mos kelmasligi mumkin:

if (out_id < 1 || out_id > n)

quitf(_wa, "not such index, array size is %d, output id %d", n, out_id);

_wa=1 bo’lib jarayondan shu qiymat bilan qaytadi va bu qaytgan qiymatni jarayonda exitValue() metodidan foydalanib olishimiz mumkin:

int exitVal = process.exitValue();

Yangi tizimning avval ishlab turgan tizimdan afzalligi sifatida tamonlari quyidagilar amalga oshirildi:

1) Foydalanuvchi jo’natgan yechimning ishlash vaqti va foydalanilgan hotira hajmini o’lchash, ularni foydalanuvchiga ko’rsatish imkoniyati paydo bo’ldi.

2) Istalgancha chiquvchi ma’lumotlar chiqarish imkoniyati joriy qilindi.

3) Sinkattik jihattdan hato yozilgan yechimlarni koplyatsiyada hato ekanlgini samarali aniqlandi va tizimning uzliksiz ishlab turish ta’minlandi.

4) Yechimlarni tekshirish vaqtida foydalanuvchi tamonidan tizimni ishini buzish maqsadida yuborilishi mumkin bo’lgan kodlardan himoyalash orqali tizim havfsizligini ta’nimlashga erishildi.

5) Yagona yechimga ega bo’lmagan masalalarni tekshirishda faqat chiquvchi ma’lumotlarni tekshirmasdan har bir alohida tekshirish uchun foydalaniladigan checker dasturlar orqali ishlab, foydalanuvchi dasturi chiqargan yechim variantlardan biriga mos kelishi yoki kelmasligini aniqlash imkoniyati joriy qilindi.

Foydalanilgan adabiyotlar ro’yxati:

  1. Елизаров Р.А., Станкевич А.С. Система управления соревнованиями по программированию как система обработки данных. Телекоммуникации и информатизация образования, №3, 2003, с. 64-85.
  2. Елизаров Р.А., Корнеев Г.А. Автоматическое тестирование решений на соревнованиях по программированию. Телекоммуникации и информатизация образования, №1, 2003, с. 61-73.
  3. Интернет-технологии ─ образованию/ Под ред. В.Н. Васильева, Л.С. Лисицыной ─СПб.: Питер, 2003. ─464 с.:ил.
Основные термины (генерируются автоматически): TATU.

Ключевые слова

программирование, исходный код, онлайн проверяющая система, онлайн соревнование, рейтинг пользователей

Похожие статьи

SunRav BookEditor dasturida elektron kurslarni loyihalashtirish

Ushbu ilmiy maqolada zamonaviy o’quv tizimlari, SunRav BookEditor dasturida elektron kurslarni loyihalashtirish, afzalliklari, ularni online va offline tartibida qo’llash imkoniyatlari haqida yoritilgan.

Umumiy o’rta ta’lim maktablari va kasb-hunar kollejlarida ingliz tili grammatikasi va uni rivojlantirish masalalari

В данной статье раскрываются проблемы совершенствования уроков английского языка в процессе непрерывного образования. Анализируются учебные программы общего и средне-специального, профессионального образования. Также, даны рекомендации по внесению не...

Bozor iqtisodiyoti va o'zbekistonda bozor iqtisodiyotiga o'tishning o'ziga xos yo'li

Данная статья посвящена развитию рыночной экономики, а также изложения пути построения рыночной экономики в Узбекистане и анализу «узбекской модели» рыночной экономики.

Ingliz tilini o'qitishdagi zamonaviy ta'lim texnologiyalari

Ushbu maqolada til va uni o’rganishda foydalaniladigan zamonaviy ta’lim texnologiyalaridan bir nechtasi yoritib berilgan.

So‘z birikmasining valentlik vazifasi

Ushbu maqolada so‘z birikmalarining boshqa birliklar bilan birikishi hamda imkoniyati va xususiyatlari, valentlik hodisasini o‘rganish va uning turlarini farqlash ko’rib chiqilgan.

Fuqarolarning o’zini o’zi boshqarish organlari ish faoliyatini avtomatlashtirishda web texnologiyalarning imkoniyatlarini qo’llash

Mazkur maqolada fuqarolarning o’zini o’zi boshqarish organlari ish faoliyatini avtomatlashtirishda qo’llash mumkin bo’lgan axborot tizimi va ma’lumotlar bazasini yaratish jarayonlari qarab chiqilgan.

Qishloq xoʻjaligida suv zaxiralaridan samarali foydalanish uchun IoT va Blockchain texnologiyalari imkoniyatlarini qo’llash

Maqolada IoT, Blockchain, Smart Contract texnologiyalari va ularining qishloq xo’jaligida samaradorlik va xavfsizlikni oshirish uchun qo’llanilishi qarab chiqiladi.

Quyosh elementlarining optik xususiyatlarini yaxshilash usullari

Ushbu maqolada, quyosh elementlarini optik xususiyatlarini optimallashtirish uchun qo’llaniladigan texnik yechimlarning nazariy asoslari berilgan.

Nutqni tanishda sphinx tizimini qo’llashning ahamiyati

Ushbu maqolada nuqtni tanishning online API lari, ularning imkoniyatlari va kamchilik tamonlari, nuqtni tanish tizimlarida offline ishlovchi Sphinx tizimidan foydalanishning afzallik tamonlari to’g’risida so’z yuritilgan.

Krеmniydа VI-guruh elementlari diffuziyasi

Ishda kremniyda VI-guruh elementlari uchun diffuziya jarayonlari ko’rib chiqiladi va bu elemenlar uchun noma’lum parametrlarni aniqlashga imkon beruvchi umumiy ifoda olingan.

Похожие статьи

SunRav BookEditor dasturida elektron kurslarni loyihalashtirish

Ushbu ilmiy maqolada zamonaviy o’quv tizimlari, SunRav BookEditor dasturida elektron kurslarni loyihalashtirish, afzalliklari, ularni online va offline tartibida qo’llash imkoniyatlari haqida yoritilgan.

Umumiy o’rta ta’lim maktablari va kasb-hunar kollejlarida ingliz tili grammatikasi va uni rivojlantirish masalalari

В данной статье раскрываются проблемы совершенствования уроков английского языка в процессе непрерывного образования. Анализируются учебные программы общего и средне-специального, профессионального образования. Также, даны рекомендации по внесению не...

Bozor iqtisodiyoti va o'zbekistonda bozor iqtisodiyotiga o'tishning o'ziga xos yo'li

Данная статья посвящена развитию рыночной экономики, а также изложения пути построения рыночной экономики в Узбекистане и анализу «узбекской модели» рыночной экономики.

Ingliz tilini o'qitishdagi zamonaviy ta'lim texnologiyalari

Ushbu maqolada til va uni o’rganishda foydalaniladigan zamonaviy ta’lim texnologiyalaridan bir nechtasi yoritib berilgan.

So‘z birikmasining valentlik vazifasi

Ushbu maqolada so‘z birikmalarining boshqa birliklar bilan birikishi hamda imkoniyati va xususiyatlari, valentlik hodisasini o‘rganish va uning turlarini farqlash ko’rib chiqilgan.

Fuqarolarning o’zini o’zi boshqarish organlari ish faoliyatini avtomatlashtirishda web texnologiyalarning imkoniyatlarini qo’llash

Mazkur maqolada fuqarolarning o’zini o’zi boshqarish organlari ish faoliyatini avtomatlashtirishda qo’llash mumkin bo’lgan axborot tizimi va ma’lumotlar bazasini yaratish jarayonlari qarab chiqilgan.

Qishloq xoʻjaligida suv zaxiralaridan samarali foydalanish uchun IoT va Blockchain texnologiyalari imkoniyatlarini qo’llash

Maqolada IoT, Blockchain, Smart Contract texnologiyalari va ularining qishloq xo’jaligida samaradorlik va xavfsizlikni oshirish uchun qo’llanilishi qarab chiqiladi.

Quyosh elementlarining optik xususiyatlarini yaxshilash usullari

Ushbu maqolada, quyosh elementlarini optik xususiyatlarini optimallashtirish uchun qo’llaniladigan texnik yechimlarning nazariy asoslari berilgan.

Nutqni tanishda sphinx tizimini qo’llashning ahamiyati

Ushbu maqolada nuqtni tanishning online API lari, ularning imkoniyatlari va kamchilik tamonlari, nuqtni tanish tizimlarida offline ishlovchi Sphinx tizimidan foydalanishning afzallik tamonlari to’g’risida so’z yuritilgan.

Krеmniydа VI-guruh elementlari diffuziyasi

Ishda kremniyda VI-guruh elementlari uchun diffuziya jarayonlari ko’rib chiqiladi va bu elemenlar uchun noma’lum parametrlarni aniqlashga imkon beruvchi umumiy ifoda olingan.

Задать вопрос