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

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

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

Авторы: ,

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

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

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

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

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

Юсупов, О. К. 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/ (дата обращения: 29.04.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.

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

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

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

Воспитательное значение пословиц и поговорок казахского языка

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

Татарская диаспора Восточно-Казахстанской области в XVIII-XIX вв.

В казахском языке есть слова «татыр» - солончак, «татыру» - угощать, «тату» - пробовать, дружный, «татулык» - дружба, хорошие приятельские отношения [3, с. 41].

Разработка сценария проведения... | Молодой ученый

Ведущий 1: Здравствуйте, дорогие друзья! Ведущий 2: Вас приветствует познавательный клуб «Коэффициент интеллекта». Мы очень рады Вас видеть.

Moodle тизими маълумотлар базаси ёрдамида data mining...

ТАТУ Moodle ВТТ форумларидаги талабалар томонидан билдирилган мулоҳазалар асосида ўқитувчларнинг дарс ўтиш сифатини баҳолашдан иборат. – 1-босқич.

Ўқув жараенини статистик таҳлил қилиш | Статья в журнале...

ТАТУ нинг Урганч филиалида Урганч шаҳар МХ КҲК “Радиотехника ва телеаппаратураларни тузатиш ва ишлатиш” мутахассислигига...

Об n (d)-нормальности сингулярных интегральных операторов со...

Пусть — замкнутая Жорданова спрямляемая кривая, - диаметр , - сохраняющий ориентацию гомеоморфизм (сдвиг) на себя имеющий непустое множество периодических точек.

Жисмоний маданият машғулотларини компьютерлашган...

-Тошкент, ТАТУ.

Знакомство с татарской национальной куклой как средство...

Например, в средней группе: «Тату гайлә» –«Дружная семья», «Минем өем» — «Мой дом»; старшей группе: «Кишер үстерәбез» — «Выращиваем морковь», «Кем нәрсә ярата...

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

Воспитательное значение пословиц и поговорок казахского языка

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

Татарская диаспора Восточно-Казахстанской области в XVIII-XIX вв.

В казахском языке есть слова «татыр» - солончак, «татыру» - угощать, «тату» - пробовать, дружный, «татулык» - дружба, хорошие приятельские отношения [3, с. 41].

Разработка сценария проведения... | Молодой ученый

Ведущий 1: Здравствуйте, дорогие друзья! Ведущий 2: Вас приветствует познавательный клуб «Коэффициент интеллекта». Мы очень рады Вас видеть.

Moodle тизими маълумотлар базаси ёрдамида data mining...

ТАТУ Moodle ВТТ форумларидаги талабалар томонидан билдирилган мулоҳазалар асосида ўқитувчларнинг дарс ўтиш сифатини баҳолашдан иборат. – 1-босқич.

Ўқув жараенини статистик таҳлил қилиш | Статья в журнале...

ТАТУ нинг Урганч филиалида Урганч шаҳар МХ КҲК “Радиотехника ва телеаппаратураларни тузатиш ва ишлатиш” мутахассислигига...

Об n (d)-нормальности сингулярных интегральных операторов со...

Пусть — замкнутая Жорданова спрямляемая кривая, - диаметр , - сохраняющий ориентацию гомеоморфизм (сдвиг) на себя имеющий непустое множество периодических точек.

Жисмоний маданият машғулотларини компьютерлашган...

-Тошкент, ТАТУ.

Знакомство с татарской национальной куклой как средство...

Например, в средней группе: «Тату гайлә» –«Дружная семья», «Минем өем» — «Мой дом»; старшей группе: «Кишер үстерәбез» — «Выращиваем морковь», «Кем нәрсә ярата...

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