Научни трудове на Съюза на учените в България-Пловдив. Серия В. Техника и технологии, т. XV, ISSN 1311 -9419 (Print), ISSN 2534-9384 (On- line), 2017. Scientific Works of the Union of Scientists in Bulgaria-Plovdiv, series C. Technics and Technologies, Vol. XV., ISSN 1311 -9419 (Print), ISSN 2534-9384 (On- line), 2017.
ЧЕТЕНЕ С РАЗБИРАНЕ НА ПРОГРАМЕН КОД Галя Шивачева1, Георги Тотков2 ,Росица Донева2
фракийски университет - ОгараЗагора 2Пловдивски университет „Паисий Хилендарски"
READING PROGRAMCODE WITH UNDERSTANDING Galya Slhi'vpchevp1, George Totkov2, liosksp Doneva2 1 TrakmUnivemty - Starp ZPgori ^ovtUvUniversky „Ppisii Шк^агск"'
Abstract
A relation between the teres frame and programming invariant is established on the basis of the tere Accumulative frame pattern (AFP). As p consequence two methods for initial training in programming are proposed and experimented. The first method („source code reading and understanding") refers to training for analysing unknown program code by detecting programming invariants and identifying their parameters. The second method ("program design and implementation") is limited to: initial presentation of the solution as p number AFPs of programming invariants; modification (if necessary) and valuation of their pprpcters; implementation of p program code as p set of program frames (possibly coUifieU) of the respective AFP; testing and correction. As p conclusion some other prospective directions and possibilities for using AFP are also commented, including the creation of p Virtual Laboratory for Training in Programming.
Keywords: training in programming, reading and understanding, knowledge representation by frames, virtual laboratory
1. Увод
Фреймът се използва за представяне на минималната структурирана информация, която дефинира еднотипни явления, събития, ситуации или процеси (Korzh, 2016). Понятието „фрейм" е въведено в изкуствения интелект от М. Мински (Minsky M., 1974) като средство за представяне на знания. Под формата на т. нар. „фреймови опори" успешно e ползвано в обучението по математика, физика, химия, история, английски език и др. (Gurina et al. 2007). В случая на обучение за придобиване на умения и стил по програмиране, фреймови модели са предложени в (Somova et al., 2014) под името „инварианта" (пасажи от програмен код, които с малки неструктурни промени се срещат в решенията на задачи за програмиране).
На базата на понятието „акумулативен фреймов модел" - АФМ (Panayotova et al., 2017), в работата е направена връзка между понятията „инвариант в програмирането" и „фрейм", предложени и експериментирани са методики, подходящи за провеждане на начално
обучение по програмиране.
2. Фреймови модели в обучението по програмиране
Инвариантите в програмен текст могат да се разглеждат като относително
самостоятелни, логически обособени единици, които се отличават с възможността за многократно използване в различни ситуации. Същото се отнася и за АФМ, който може да се представи като именована фреймова структура, съставена от слотове. От своя страна, всеки слот е с уникално име (различно от имената на останалите слотове на АФМ) и със съдържание от точно определен тип (елементарен или съставен). Примери за елементарни типове са множествата от имена на променливи, на реалните и на целите числа, на текстове (с определена дължина), изображения, файлове от различен тип, програмен код и др., а за съставни - списъци/записи от други типове или АФМ.
Частни случаи на АФМ в обучението са „фреймовите опори" ^шпа et а1., 2005; 2007), „акумулативните тестови единици" (ТоНкоу et а1., 2014) и „електронните бележки" (РапауоЮуа е1 а1., 2016; 2017).
Фреймите-екземпляри от Примери 1. и 2. (модели на два инварианта в програмирането), често се използват в задачи за програмиране.
Пример 1. Фрейм-екземпляр за инвариант „Размяна на стойности на две променливи"
Слот Съдържание
Наименование на фрейма Размяна на стойности на две променливи x и y
Входни аргумента x, y, type
Изходни аргумента x, y
Стойност на type (пример) int
Програмен код type buf= x; x=y;y=buf;
Пример 2. Фрейм-екземпля р за инвариант „Намиране на максимален елемент на масив "
Слот Съдържание
Наименование на фрейм Намиране на максимален елемент( max ) на масив ( arr) с n на брой елемента
Входни аргумента arr, type, n
Изходни аргумента max
Стойност на type (пример) int
Програмен код int max=arr[0];for (int i=1; i<n; i++) if(arr[i]>max)max=arr[i];
На базата на АФМ, в обучението по програмиране се обособяват следните групи
задачи:
A. Самостоятелно проектиране и писане на програмен код (по дадени спецификации);
Б. Запознаване с често използвани инварианти за програмиране (спец. със
съдържанието на слот „Програмен код");
B. Проектиране на решения на задачи за програмиране под формата на словесни описания (съставени от фрейми-инварианти с конкретно съдържание на слотовете).
Г. Анализ на непознат програмен код, откриване на инварианти (вкл. и на нови), както и на стойностите на техните параметри (съдържание на съответните слотове);
Д. Модифициране на непознат програмен код (с промяна на съдържанието на слотовете на фрейми-инварианти и въвеждане на нови инварианти);
На практика (към момента), първоначалното обучение по програмиране се свежда до решаване на задачи само от група А. Последното създава определени трудности -промени в контекста (условието) или вариации в съдържанието, често затрудняват обучаваните. Причината - не са научени да анализират контекста в термините на инварианти и не умеят да приспособяват тяхното съдържание (параметри) в зависимост от конкретната ситуация.
В списъка от задачи специално ще отбележим група Б. По наше мнение, подходящо е разглеждането на група Б. да е основен предмет на лекционния курс, съпровождащ
практического обучение.
Уменията да се решават задачи от групи В. - Д. са основни компетенции на програмистите, но за съжаление (поне към момента), не намират своето достойно място в обучението по програмиране.
За всяка група задачи А. - Д. могат да се въвеждат и експериментират различни „фреймови" методики за тяхното решаване. В следващия раздел се предлагат и експериментират методики за решаване на някои от посочените проблеми.
3. Проведени експерименти
Ще демонстрираме две методики в обучението за решаване на задачи от групи В. -
Д., свързани с прилагане на АФМ и експериментирани във Факултета по Техника и технологии (Ямбол) със студенти от 1-ви курс в специалност „Автоматика и компютърни системи", ОКС „Бакалавър" (редовно обучение).
Условно, първата методика може да се определи като „четене с разбиране на програмен код" и се отнася до обучение по решаване на задачи от група Г.
„Четенето с разбиране" традиционно се използва в обучението по роден и чужд език. В обучението по програмиране този подход може да се интерпретира като „разбиране на готов програмен код чрез откриване на фреймове-екземпляри на съответни инварианты за програмиране ".
За провеждане на експеримента (в дисциплина „Програмиране и използване на компютри" 11-ра част) са подготвени следните учебни материали:
- Таблица 1. от фрейм--инварианта с две колони (наименование на фрейма-инвариант и цвят за маркиране на пасажи с инварианта в програмен текст);
- Програмен код на С++ (решение на задача по програмиране, условието на която не е известно на студентите);
- Таблица 2. за масиви с три колони (тип, име и максимален брой елементи на масива);
- Таблица 3. за променливи с три колони (тип, име и описание на променлива).
В Таблица 1. с фрейм-инварианти са включени фотоуа et а1., 2014) деклариране на променливи, деклариране на масив, въвеждане на броят елементи на масив, въвеждане на стойности за елементи на масив, търсене на минимален елемент в масив, търсене на максимален елемент в масив, размяна на стойностите на две променливи, сортиране на масив, извеждане на стойности на променливи, извеждане на стойностите на елементите на масив.
На студентите се предлага - в програмен код на С++ да открият и маркират (със съответен цвят) фрейми-инварианти от Таблица 1., като определят съдържанието на техните слотове (спец. - на слот „Програмен код"). В Пример 3. са представени някои от тези фрейми-инварианти.
Пример 3. Фрейми-инварианти, открити в програмен код
Наименование на фрейм Програмен код
Търсене на минимален елемент т=0; Ьг^=1;Кп^++) if(a[i]<a[m])m=i;
Размяна на стойности на две променливи Ь=а[т]; а[т]=а[п-1];а[п-1]=Ь;
Извеждане на елементите на масив Рэг^=0;Кп^++) cout<<a[i]<<endl;
Успешното решаване на предложените задачи е свидетелство за умението на студентите да „четат с разбиране програмен код на съответен език за програмиране". Предложените програмни кодове са подобни на решения на задачи, за които преди това студентите сами са създавали програмни кодове. В експеримента студентите са разделени на три групи.
Задачите, програмните реализации на които са предмет на дейността „четене на програмен код с разбиране" са:
- да се намерят максималния и минимален елемент на едномерен масив, да се
разменят техните стойности, след което да се изведат всички елементи;
- да се намери минималния елемент на едномерен масив, да се размени неговата стойност със стойността на първия елемент, след което да се изведат всички елементи;
- да се намери максималния елемент на едномерен масив, да се размени неговата стойност със стойността на последния елемент, след което да се изведат всички елементи.
Втората експериментирана методика, базирана на АФМ, е предназначена за обучение по решаване на задачи от група А., и се свежда до:
- проектиране на решението под формата на редица от фрейми-инварианти (задача от група В.);
- модифициране на съдържанието на слотовете на фреймите-инварианти (спец. на слот „Програмен код" - умение, което се предполага че е придобито от решаване на задачи от група Б.) ;
- реализация на програмен код („сглобяване" на модифицираните пасажи от програмен код).
- тестване и коригиране.
Двете методики са експериментирани в курса по дисциплината „Програмиране и използване на компютри" (2-ра част). За целта, в системата за е-обучение на Тракийския университет (Стара Загора) е създадена възможност за записване от всеки студент на:
- файл с решения, съдържащи анализ на програмен код (следващи 1-та методика);
- самостоятелно написан (следвайки 2-та методика) програмен код - решение на задача от група А.;
- графичен файл, съдържащ изображението на дисплея след изпълнението на представения програмен код с определен набор от входни данни.
4. Заключение
Работата е елемент от по-широко изследване на възможностите за прилагане на АФМ в обучението (Totkov et al., 2017). Определено предизвикателство в тази посока са:
- проектирането на системи от типови АФМ (за различни дисциплини, набори от дидактически единици и др.);
- изследването на алгоритми и методи за извличане и агрегиране на данни от учебни материали в процеси на е-обучение, „маркирани" с АФМ;
- създаването на софтуерни системи и БД за работа с АФМ и техни екземпляри;
- разработването на методики за използване на АФМ в е-обучението и др.
Предстояща задача е проектиране и реализация на Виртуална лаборатория по
програмиране, в основата на която да е система за създаване на АФМ. Проведените и експерименти дават основания да се твърди, че функционалността на подобна Виртуална лаборатория би осигурила е-обучението по решаване на задачи от групи А. - Д.
Благодарности
Работата е подкрепена от университетски проекти МУ17-ФФ-023 „Акумулативни фреймови модели за извличане и агрегиране на данни за знания и процеси в обучението" и № 2 ФТТ/30.04.2015 г. „Приложение на виртуални лаборатории във висшите училища", съответно към Фондове „Научни изследвания" на ПУ „Паисий Хилендарски" и на Тракийския университет (Стара Загора).
Литература
Gurina R. et al. Frejmovie opori, NII Shkolnih tehnologii, Moscow, 2007 (in Russian).
Korzh T., Teaching Translating of Russian Literary Texts on the Basis of Frame of Genre, DOI:
10.17223/19996195/36/5, 2016 (in Russian).
Minsky M., A Framework for Representing Knowledge, MIT, Cambridge, 1974.
Panayotova T., G. Totkov, Il. Chakarova. Accumulirane na metadanni za uchebni materiali i generirane na testovi edinici v Moodle, SUB - Smolian, Vol. II, ISSN:1314-9490, 2016, 222232 (in Bulgarian),
Panayotova T., G. Totkov, Il. Chakarova. Eksperimentalna sistema za proektirane na akumulativni freymovi modeli, Nauchni trudove na SUB - Plovdiv, Seriya V. Tehnika i tehnologii, 1516.06.2017 (in Bulgarian) (in print).
Somova E., Y. Enev, G. Totkov. Invariants in Learning of Programming. International scientific on-line journal "Science & Technologies", Vol. 4, No. 3, 2014 (in Bulgarian).
Totkov G., M. Sokolova-Rajkova M., Hr. Kostadinova. Testyt v e-obuchenieto, Rakursi OOD, Plovdiv, 2014, 205 p. (in Bulgarian).
Totkov G., S. Gaftandzhieva, R. Doneva. Akumulativni freymovi modeli v e-obuchenieto, Nauchni trudove na SUB - Plovdiv, Seriya V. Tehnika i tehnologii, 15-16.06.2017 (in Bulgarian) (in print).