<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; Ванькова Валентина Сергеевна</title>
	<atom:link href="http://web.snauka.ru/issues/author/vsvankova/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Sat, 18 Apr 2026 09:41:14 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Моделирование информационной системы «Совет молодых ученых вуза», как средство формирования профессиональных умений программиста</title>
		<link>https://web.snauka.ru/issues/2013/12/29770</link>
		<comments>https://web.snauka.ru/issues/2013/12/29770#comments</comments>
		<pubDate>Fri, 13 Dec 2013 12:41:43 +0000</pubDate>
		<dc:creator>Ванькова Валентина Сергеевна</dc:creator>
				<category><![CDATA[13.00.00 ПЕДАГОГИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[a data domain]]></category>
		<category><![CDATA[a module information system]]></category>
		<category><![CDATA[a young scientist]]></category>
		<category><![CDATA[an information model]]></category>
		<category><![CDATA[Информационная модель]]></category>
		<category><![CDATA[модуль информационной системы]]></category>
		<category><![CDATA[молодой ученый]]></category>
		<category><![CDATA[предметная область]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/?p=29770</guid>
		<description><![CDATA[Информатизация высших учебных заведений – сложный многоуровневый процесс, структура которого подобна дереву, имеющему густую крону. Описание, моделирование и разработка отдельных его ветвей является предметом научных исследований. Важной составляющей данного процесса является создание многомодульных информационных систем, призванных автоматизировать деятельность человека, находящегося внутри него (процесса). Грамотная разработка подобных информационных систем и составляющих их модулей повышает эффективность управления [...]]]></description>
			<content:encoded><![CDATA[<p>Информатизация высших учебных заведений – сложный многоуровневый процесс, структура которого подобна дереву, имеющему густую крону. Описание, моделирование и разработка отдельных его ветвей является предметом научных исследований. Важной составляющей данного процесса является создание многомодульных информационных систем, призванных автоматизировать деятельность человека, находящегося внутри него (процесса). Грамотная разработка подобных информационных систем и составляющих их модулей повышает эффективность управления образовательными процессами, экономит время и энергию их участников.</p>
<p>В информационном пространстве Тульского государственного педагогического университета им. Л. Н. Толстого на сегодняшний день важной задачей является разработка и проектирование модуля «Совет молодых ученых».</p>
<p>Молодой ученый – человек с высшим образованием в возрасте до 35 лет, занимающийся разработкой проблем в различных отраслях науки. Совет молодых ученых (СМУ) – это объединение молодых ученых, являющихся штатными работниками университета, созданное для активизации их профессионального роста, выражения их интересов, содействия защите их законных прав, а также для решения актуальных научных проблем и приоритетных научных задач. Совет молодых ученых ТГПУ им. Л.Н.Толстого создан приказом ректора при научной части университета.</p>
<p>Информационная система «Совет молодых ученых» содержит базу данных, которая поддерживает накопление и хранение информации об основных компонентах описанной системы и относится к категории  специализированных, то есть таких, которые выполняют решение фиксированного набора задач, предопределенного при проектировании системы. Для использования таких систем требуется наполнить их данными, соответствующими выбранному приложению (прикладным задачам, предметной области).</p>
<p>На первом этапе проектирования базы данных построена концептуальная модель. Эта модель данных создана на основе исследования структурных компонентов предметной области, выделения ее сущностей, их характеризующих и характеризуемых свойств, и связей.</p>
<p>В ходе разработки указанного модуля информационной системы на данный момент выделены следующие сущности: СубъектБД, Научные_школы, Гранты, Ученое_звание, Публикации, Международное_сотрудничество, Кураторы, Конференции, Специальности, Статус_в_системе, Хозяйствующие_общества, Ученая_степень, Кафедры, Пользователи.</p>
<p>Созданная концептуальная модель данных послужила источником информации для следующего этапа проектирования базы данных –логического, который определил структуру реляционной БД и включил в себя следующие этапы:</p>
<ol>
<li>Представление каждой простой сущности в виде таблицы (отношения), в которой имя сущности есть имя таблицы, а каждый простой атрибут – столбец таблицы с тем же именем.</li>
<li>Выражение компонентов уникального идентификатора сущности в виде первичного ключа.</li>
<li>Выражение бинарных связей один-к-одному и один-ко-многим с помощью внешних ключей. Создание копии уникального идентификатора с конца связи «один» и формирование внешнего ключа соответствующими столбцами.</li>
<li>Создание индексов для первичного ключа (уникальный индекс), а также внешних ключей и тех атрибутов, которые будут часто использоваться в запросах.</li>
</ol>
<p>Для проектирования БД информационной системы «Совет молодых ученых» была выбрана СУБД Microsoft SQL Server 2008. Это комплексная платформа, аналитические возможности которой доступны с любого рабочего места. На последнем этапе проектирования построена внутренняя модель базы данных средствами выбранной СУБД.</p>
<p><a href="https://web.snauka.ru/wp-content/uploads/2013/12/moluch2.jpg"><img class="aligncenter size-full wp-image-29835" src="https://web.snauka.ru/wp-content/uploads/2013/12/moluch2.jpg" alt="Концептуальная схема БД информационной системы «Совет молодых ученых»" width="801" height="1131" /></a></p>
<p align="center">Рис.1. Концептуальная схема БД информационной системы «Совет молодых ученых»</p>
<p> Исходя из природы сущностей и задач, решаемых в рассматриваемой предметной области, информационная система «Совет молодых ученых» на данный момент обеспечивает следующий функционал:</p>
<ol>
<li><strong>Регистрация и авторизация пользователей. </strong>В системе предусмотрено разграничение прав доступа.</li>
<li><strong>Навигация по записям.</strong> Обеспечен просмотр всех записей в базе данных и перемещение между ними.</li>
<li><strong>Получение информации о каждом субъекте системы</strong>: личные данные, фотография, выигранные гранты или участие в грантах в качестве исполнителя работ, участие в работе конференций; опубликованные или приравненные к ним работы, участие в проектах международного сотрудничества, ученая степень, ученое звание, участие в работе хозяйствующих обществ и малых предприятий.</li>
</ol>
<p>Реализация данных функций потребовала разработки соответствующей формы приложения, в которую интегрированы компоненты СУБД Microsoft SQL Server 2008, используемые для отображения информации: текстовые и графические поля, таблицы, закладки и т.д. Все эти объекты привязаны к БД.</p>
<ol>
<li><strong>Добавление, удаление и редактирование данных. </strong>Для этой цели на каждой закладке приложения расположен специальный компонент, состоящий из 6 кнопок: «Редактировать», «Добавить», «Удалить», «ОК», «Отмена» и «Сохранить в БД». Данная функциональность делает интерфейс приложения понятным на интуитивном уровне и обеспечивает физическую целостность данных на каждом из вышеперечисленных этапов. <strong></strong></li>
</ol>
<p>Реализация государственных образовательных стандартов подготовки специалистов, бакалавров и магистров по специальности и направлению подготовки «Математическое обеспечение и администрирование информационных систем» требует формирования у будущих математиков-программистов устойчивых навыков разработки информационных, математических, компьютерных и др. моделей. Речь идет об определении целей моделирования; о разработке концептуальной модели; о формализации и программной реализации модели; анализе и интерпретации результатов моделирования.</p>
<p>Задачи, выделенные в предметной области «Моделирование информационной системы „Совет молодых ученых вуза”», способствуют формированию и совершенствованию профессиональных навыков будущих программистов, а их успешная реализация вселяет уверенность в готовности к профессиональной деятельности.</p>
<p>В заключение следует отметить, что в силу ряда обстоятельств в данной работе функционал разработанного модуля информационной системы описан частично. Авторами планируется его расширение с целью добавления возможности формирования отчетов в соответствии с различными формами, определенными конечными пользователями. Кроме того, реализуется функция резервного копирования базы данных и некоторые другие возможности, совокупность которых окончательно будет определена в ходе тестирования заказчиком пробной версии данной системы.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2013/12/29770/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Обучение школьников программированию через систему творческих задач</title>
		<link>https://web.snauka.ru/issues/2015/07/54559</link>
		<comments>https://web.snauka.ru/issues/2015/07/54559#comments</comments>
		<pubDate>Wed, 01 Jul 2015 09:58:20 +0000</pubDate>
		<dc:creator>Ванькова Валентина Сергеевна</dc:creator>
				<category><![CDATA[13.00.00 ПЕДАГОГИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[олимпиадная задача]]></category>
		<category><![CDATA[программирование]]></category>
		<category><![CDATA[творческая задача]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/?p=54559</guid>
		<description><![CDATA[Данная статья подготовлена при поддержке гранта Правительства Тульской области в сфере науки и техники 2014 г. (Договор ДС/108) На современном этапе развития общества, в целом, и системы образования, в частности, по-новому понимаются цели, задачи и ценности образования. Культура, знания, информационные ресурсы являются тем единственным видом общественной собственности, которые увеличиваются в объеме и приобретают все большую [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><em>Данная статья подготовлена при поддержке гранта Правительства Тульской области в сфере науки и техники 2014 г. (Договор ДС/108)</em></p>
<p>На современном этапе развития общества, в целом, и системы образования, в частности, по-новому понимаются цели, задачи и ценности образования. Культура, знания, информационные ресурсы являются тем единственным видом общественной собственности, которые увеличиваются в объеме и приобретают все большую ценность по мере их интенсивного использования. Образование и знания становятся теми элементами макросистемы, импульсы развитию которых задает феномен востребованности. Неизбежен процесс трансформации системы образования, основное предназначение которой – процесс передачи знаний будущим поколениям,  в механизм, способный адаптировать получаемые знания к стремительно  меняющимся требованиям общества, техники и технологий к развитию личной инициативы человека, к его возможности генерировать новые идеи.</p>
<p>Авторский стаж обучения студентов программированию насчитывает около 25 лет. За это время в концепции обучения изменилось довольно многое: название дисциплины трансформировалось из «Основ алгоритмизации и программирования» в «Методы программирования» и «Структуры и алгоритмы компьютерной обработки данных»; на смену традиционным методам обучения пришли дистанционные формы, обусловленные электронной поддержкой курсов; знания и умения переросли в компетенции. Во всех этих метаморфозах неизменным оставалось одно – стойкое убеждение авторов, что обучение программированию и студентов, и школьников есть частный случай обучения творчеству вообще. В этой связи возникает вполне логичный вопрос: что следует понимать под творчеством? Все существующие на сегодняшний момент трактовки данного понятия сопоставляют творчество деятельности, порождающей нечто качественно новое, никогда ранее не существовавшее. В данном контексте понятия творчества и творческой деятельности, стимулом к которой служит проблемная ситуация, не разрешимая традиционным способом, можно считать синонимами. Оригинальный продукт творческой деятельности получается в результате формулирования нестандартной гипотезы или выявления новых, нетрадиционных взаимосвязей элементов проблемной ситуации. Предпосылками творческой деятельности являются гибкость мышления, критичность, способность к сближению понятий, цельность восприятия.</p>
<p>С данной точки зрения изучение языков и методов программирования, структур данных, элементов теории алгоритмов мыслятся авторами не как средство формирования профессиональных навыков школьников и студентов, а как средство их адаптации к стремительно меняющимся условиям жизни, к существованию человека в постинформационном обществе. Творческий человек, оперируя собственными знаниями, способен не только создавать нечто оригинальное, но и видеть классическое в новом ракурсе [3].</p>
<p>В процессе обучения человек развивает свои способности: внимание, память, умение копировать действия других, повторять увиденное или услышанное, умение довести профессиональный навык до автоматизма и т.п. Эти качества позволяют ему поступать в какой-либо привычной деятельности по раз и навсегда установленному правилу или шаблону. Если же задача требует самостоятельных размышлений и поиска ее решения, то это новая задача. И даже если она не очень сложная, ее можно отнести к творческим задачам.</p>
<p><em>Творческой задачей</em> будем считать учебное задание, предполагающее стимуляцию познавательной активности, поиск новых знаний и нестандартных способов решения задачи, выражающих индивидуальные склонности, способности, личный опыт человека [2]. Предлагаемые в процессе обучения творческие задания должны отвечать следующим требованиям:</p>
<ul>
<li>отражать систему и логику содержания учебного предмета;</li>
<li>учитывать актуальный уровень развития и учебной подготовки, чтобы создавать реальные условия развития учащихся;</li>
<li>содержать ситуации мыслительного напряжения, ситуации противоречивости;</li>
<li>создавать положительную мотивацию выполнения задания;</li>
<li>иметь объективные (социальные, материальные) предпосылки, условия для творчества.</li>
</ul>
<p>Каждое творческое задание должно быть творчески выполнено. Признаками творчески выполненного задания являются:</p>
<ul>
<li>наличие логики в содержании и целостность работы;</li>
<li>оригинальность и нестандартность действий, способов решения задачи;</li>
<li>раскрытие новых сторон изучаемых явлений, качественная новизна конечного продукта творческого акта;</li>
<li>отражение в творческой работе индивидуальных склонностей, способностей и индивидуального опыта учащегося.</li>
</ul>
<p>Авторы отталкиваются от положения о том, что каждый школьник или студент в той или иной мере обладает способностями, которые можно отнести к разряду творческих. Задача учебного заведения, в целом, и учителя, в частности, – развить эти способности с целью формирования профессионально-значимых качеств человека, живущего в условиях постинформационного общества 21 века.</p>
<p>Особый оттенок данные положения приобретают в условиях работы с одаренными детьми в рамках различных образовательных проектов линии «школа –вуз» [1]. Взаимовлияние высшего и среднего образования в таких проектах становится той основой, которая позволяет заложить фундамент прочного знания учащегося, послужить отправной точкой его дальнейших профессиональных интересов. С одной стороны, специфика средней школы с ее неизменным устойчивым вниманием к личности обучающего, его интересам, ценностям, проблемам становления; искренним желанием «не потерять» ни одного школьника на трудном пути от незнания к знанию; спецификой регулярных домашних заданий и отчетов по ним. С другой стороны классическое высшее образование, при котором на обучающегося смотрят как на человека, вполне осознающего всю ответственность за принимаемые решения, понимающего смысл будущей профессиональной деятельности и проецирующего выполняемые задания на реальный или виртуальный опыт работы. Поэтому весь процесс обучения школьников программированию следует организовать таким образом, чтобы учащийся не только смог составить красивый алгоритм, но что более важно – сумел объяснить, как он это сделал и что в этом алгоритме происходит. В решении этих вопросов потенциал творческих задач наиболее эффективен.</p>
<p>В основе большинства заданий, предлагаемых на олимпиадах школьников и студентов, лежат идеи творческого подхода к решению стандартных, классических задач программирования. Приведем пример, как стандартная задача расположения трех целых чисел в порядке возрастания приобретает элементы творчества в следующих олимпиадных задачах «Золотой песок» и «Максимальное произведение».</p>
<p><em>Исходная задача «Три числа по возрастанию».</em></p>
<p>Даны три целых числа <em>a</em><em>, </em><em>b</em><em>, </em><em>c</em>. Расположить их в порядке возрастания.</p>
<p><em>Указания к решению.</em></p>
<p>Если задачу решать при помощи простых сравнений трех заданных чисел, то потребуется, проанализировать, шесть ситуаций вида</p>
<p>a&lt;b&lt;c, a&lt;c&lt;b, b&lt;a&lt;c, b&lt;c&lt;a, c&lt;a&lt;b, c&lt;b&lt;a</p>
<p>Оптимальный алгоритм решения задачи предполагает использование наименьшего количества операций сравнения чисел. Поэтому логично рассмотреть три переменные m<sub>1</sub>, m<sub>2</sub>, m<sub>3</sub>, для которых выполнено условие задачи: m<sub>1</sub>&lt;m<sub>2</sub>&lt;m<sub>3</sub> (неравенства в общем случае могут быть и нестрогими), и которые формируются следующим образом:</p>
<p>1)    сравниваются первые два числа (a и b) и в m<sub>1</sub> записывается меньшее из них, а в m<sub>2</sub> – большее;<strong></strong></p>
<p>2)    третье число (c) сравнивается с m<sub>2</sub>, и если оно оказалось больше него, то записывается в m<sub>3</sub>, иначе выполняется п.3;<strong></strong></p>
<p>3)    в m<sub>3</sub> записывается m<sub>2</sub>, а третье число сравнивается с m<sub>1</sub>, и если оно оказалось больше него, то записывается в m<sub>2</sub>, иначе в m<sub>2</sub> записывается m<sub>1</sub>, а в m<sub>1</sub> – с.<strong></strong></p>
<p>Опишем приведенную схему в виде процедуры на языке Паскаль.</p>
<p>procedure tri_vozr(a,b,c:integer; var m:mass);</p>
<p>begin</p>
<p>if (a&lt;b) then begin m[1]=a; m[2]=b; end</p>
<p>else begin m[1]=b; m[2]=a; end;</p>
<p>if (c&gt;m[2]) then m[3]=c</p>
<p>else</p>
<p>begin m[3]=m[2];</p>
<p>if (c&gt;m[1]) then m[2]=c</p>
<p>else begin</p>
<p>m[2]=m[1]; m[1]=c; end;</p>
<p>end;</p>
<p>end;</p>
<p>Функция формирует значения упорядоченного по возрастанию массива m, записывая в него три данных числа.</p>
<p>Данный алгоритм относится к разряду классических. На его идее основан метод внутренней сортировки простыми включениями.</p>
<p><em>Задача «Золотой песок»</em> (Всероссийская олимпиада школьников по информатике, областной этап, 2005)</p>
<p>Сотрудники завода по производству золотого песка из воздуха решили поправить свое финансовое положение. Они пробрались на склад завода, где хранился золотой песок трёх видов. Один килограмм песка первого вида они смогли бы продать за <em>А<sub>1</sub></em> рублей, второго вида – за <em>А<sub>2</sub></em>рублей, а третьего вида – за <em>А<sub>3</sub></em> рублей. Так получилось, что у сотрудников оказались с собой только три ёмкости: первая была рассчитана на <em>В<sub>1</sub></em> килограмм груза, вторая – на <em>В<sub>2</sub></em> килограмм, а третья – на <em>В<sub>3</sub></em> килограмм. Им надо было заполнить полностью все ёмкости таким образом, чтобы получить как можно больше денег за весь песок. При заполнении ёмкостей следует выполнять правила: А) нельзя смешивать песок разных видов, т.е. нельзя помещать в одну ёмкость песок разных видов; Б) заполнять ёмкости песком так, чтобы один вид песка занимал не более чем одну ёмкость.</p>
<p><em>Требуется</em> написать программу, которая определяет, за какую сумму предприимчивые сотрудники смогут продать весь песок в случае наилучшего для себя заполнения ёмкостей песком.</p>
<p><em>Указания к решению.</em></p>
<p>Для достижения успеха необходимо расположить песок разных видов в порядке возрастания цены  за 1 кг, а также емкости для хранения песка. Далее следует взять сумму соответствующих произведений. Полученное число и будет соответствовать максимально благоприятной сумме.</p>
<p>Таким образом, решение данной задачи целиком основано на решении исходной задачи.</p>
<p><em>Задача «Максимальное произведение».</em></p>
<p>Дано <em>N</em> целых чисел, по модулю не превышающих 30 000.</p>
<p><em>Требуется</em> выбрать из них три таких числа, произведение которых максимально.</p>
<p><em>Указания к решению.</em></p>
<p>Сначала попробуем решить задачу простым перебором, рассмотрев все тройки чисел и выбрав из них такую, которая имеет максимальное произведение. В этом решении существуют следующие проблемы:</p>
<ol>
<li>Реализация алгоритма требует хранения элементов последовательности в массиве, что связано с соответствующими затратами памяти.</li>
<li>Трудоемкость алгоритма будет порядка <em>N</em><em><sup>3</sup></em> (три вложенных цикла по <em>N</em> итераций каждый). Это ограничит длину обрабатываемой последовательности.</li>
<li>Элементы последовательности по модулю могут достигать 30 000, а их произведение может выйти за пределы 32-битного длинного целого типа.</li>
</ol>
<p>Указанные недостатки требуют поиска другого, более «изящного» решения данной задачи. И здесь нам опять помогает исходная задача, в которой, по сути, описан классический алгоритм «проталкивания» элемента в упорядоченной группе элементов.</p>
<p>Рассмотрим алгоритм решения задачи с учетом следующих ограничений:</p>
<p>I. все числа последовательности положительны;</p>
<p>II. среди чисел последовательности имеются отрицательные числа.</p>
<p><em>В первом случае</em> максимальное произведение в последовательности могут давать три ее максимальных числа. Немного изменим исходную задачу на следующую: расположим три числа в порядке убывания. Назовем их первым максимальным, вторым максимальным и третьим максимальным. Тогда для решения задачи о максимальном произведении достаточно каждому очередному элементу последовательности, начиная с четвертого, отыскать место в этой упорядоченной тройке. В этом алгоритме массив заменяется именно последовательностью чисел, которые не нужно хранить все одновременно, а следует лишь считывать и запоминать те из них, которые обладают заданными свойствами. Таким образом, проблема № 1 устраняется, а трудоемкость алгоритма снижается до <em>N</em>. Проблемы № 3 не возникает, так как произведение не вычисляется.</p>
<p><em>Во втором случае</em> при наличии в последовательности отрицательных чисел необходимо найти еще и два минимальных отрицательных числа, т.к. их произведение положительно и может «перевесить» произведение второго и третьего максимальных чисел. Трудоемкость реализации алгоритма в данном случае по-прежнему имеет порядок <em>N</em>.</p>
<p>В случае если все числа в последовательности отрицательные, ответом задачи будут просто три максимальных элемента массива, так как максимальным произведением (отрицательным!) будет произведение трех максимальных (отрицательных!) элементов.</p>
<p>Все остальные случаи полностью учитываются в приведенном алгоритме. В случае последовательности из отрицательных элементов и нескольких нулей максимальное произведение будет равно нулю, но ноль в этом случае в нашем алгоритме обязательно попадет в первый максимум, а остальные два элемента значения играть не будут. Если же в последовательности есть хотя бы один положительный элемент, то первый максимальный  никогда не будет равен нулю, поэтому если нулю оказались равны второй и третий максимальные, то при наличии двух отрицательных элементов максимальное произведение будет формироваться из двух минимальных и первого максимального.</p>
<p>Таким образом, нестандартная формулировка обычной задачи побуждает искать новые, нестандартные, творческие подходы к решению. При этом, стандартные приемы и алгоритмы уже известны учащимся, а их комплексное использование в новой ситуации означает переход обучающихся к новому интегративному, гибкому уровню знаний, что, по сути, и является целью такой формы работы со школьниками, каковой является математическая школа.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2015/07/54559/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Формирование компетенций программиста на примере решения олимпиадных задач</title>
		<link>https://web.snauka.ru/issues/2016/03/64956</link>
		<comments>https://web.snauka.ru/issues/2016/03/64956#comments</comments>
		<pubDate>Mon, 07 Mar 2016 07:51:11 +0000</pubDate>
		<dc:creator>Ванькова Валентина Сергеевна</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[компетенции]]></category>
		<category><![CDATA[математик-программист]]></category>
		<category><![CDATA[программист]]></category>
		<category><![CDATA[решение олимпиадных задач]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/?p=64956</guid>
		<description><![CDATA[Процесс подготовки высококвалифицированных специалистов, прежде всего, направлен на формирование их профессиональных навыков. Уровень владения навыками напрямую определяется степенью сформированности общих, общепрофессиональных и профессиональных компетенций. В подготовке математика-программиста это, прежде всего, такие компетенции, как: способность решать стандартные задачи профессиональной деятельности на основе информационной и библиографической культуры с применением информационно-коммуникационных технологий и с учетом основных требований информационной [...]]]></description>
			<content:encoded><![CDATA[<p>Процесс подготовки высококвалифицированных специалистов, прежде всего, направлен на формирование их профессиональных навыков. Уровень владения навыками напрямую определяется степенью сформированности общих, общепрофессиональных и профессиональных компетенций. В подготовке математика-программиста это, прежде всего, такие компетенции, как:</p>
<ul>
<li>способность решать стандартные задачи профессиональной деятельности на основе информационной и библиографической культуры с применением информационно-коммуникационных технологий и с учетом основных требований информационной безопасности;</li>
<li>способность использовать знания основных концептуальных положений функционального, логического, объектно-ориентированного и визуального направлений программирования, методов, способов и средств разработки программ в рамках этих направлений;</li>
<li>готовность к разработке моделирующих алгоритмов и реализации их на базе языков и пакетов прикладных программ моделирования;</li>
<li>способность к самоорганизации и самообразованию;</li>
<li>способность работать в команде, толерантно воспринимая социальные, этнические, конфессиональные и культурные различия.</li>
</ul>
<p>В этой связи рассмотрение олимпиадных задач по программированию с определением их сущностных характеристик, выделением способов решения, изучением методик решения в обучении будущих специалистов способствует формированию и развитию указанных  компетентностей в сфере программирования, моделируя будущую профессиональную деятельность. Олимпиадные задачи, традиционно выделяемые в особый класс задач повышенной сложности, требуют в своем решении не только фундаментальных знаний в предметной области, но и нестандартных подходов, самостоятельности, творческого начала [1], – всего того, что связывается с определением хорошего программиста.</p>
<p>В соответствии с данным подходом формирование профессиональных способностей обучающихся рассматривается как процесс построения и изучения моделей алгоритмов и объектов для определения или улучшения их характеристик, реализации способов их построения, управления ими и т.п.</p>
<p>Решение олимпиадных задач предполагает эффективное применение навыков, приобретённых в ходе обучения, таких как:</p>
<ul>
<li>выполнение декомпозиции (разбиение задачи на более мелкие подзадачи);</li>
<li>оптимизация (поиск наилучших структур и объектов для реализации более быстрого и надежного алгоритма решения);</li>
<li>визуализация решения (использование программных продуктов для графического отображения алгоритмов);</li>
<li>работа в команде (совместная генерация общих идей с последующим разделением функций и решаемых задач).</li>
</ul>
<p>Наряду с обучающей функцией олимпиадные задачи с успехом могут выполнять функции контроля и оценки знаний и умений обучающихся. Поскольку умения – это способность человека применять знания в практической деятельности в изменяющихся условиях, следовательно, данные функции также служат основой подготовки студентов к профессиональной деятельности.</p>
<p>Рассмотрим сформулированные положения на примере решения олимпиадной задачи «Метро» в рамках занятий по дисциплине «Структуры и алгоритмы компьютерной обработки данных» учебного плана направления подготовки Математическое обеспечение и администрирование информационных систем.</p>
<p><strong><em>Условие задачи:</em></strong></p>
<p>«В некотором городе есть метро, состоящее из N (1£N£1000) станций и M линий, соединяющих их. Каждая линия обеспечивает проезд между какими-то двумя станциями в обе стороны. Между любой парой станций проведено не более одной линии. Сеть метро построена таким образом, чтобы с каждой станции можно было проехать на каждую (возможно, через промежуточные станции). Назовем это свойство связностью метро. В связи с изобретением принципиально нового вида транспорта метро стало убыточным, и его работу решили прекратить. На заседании мэрии города было постановлено закрывать каждый год по одной станции, но так, чтобы связность метро каждый раз сохранялась. При закрытии какой-либо станции, линии, ведущие из этой станции в другие, естественно, тоже перестают функционировать.</p>
<p><em>Требуется</em> по введенной информации о сети метро разработать какой-либо порядок закрытия станций, при котором метро всегда будет оставаться связным».</p>
<p>Решением стало приложение, разработанное в среде MS Visual Studio, посредством языка программирования С# и технологии WPF.</p>
<p>В ходе решения поставленной задачи были выполнены следующие этапы:</p>
<p>1) постановка задачи:</p>
<p>а)  определён входной набор данных:</p>
<ul>
<li>количество станций;</li>
<li>связи между станциями;</li>
</ul>
<p>б)  определён выходной набор данных:</p>
<ul>
<li>последовательность удалённых станций с их порядковыми номерами</li>
</ul>
<p>2) исследование задачи с целью составления и анализа модели:</p>
<p>а) при разработке математической модели было выяснено, что данная задача сводится к решению задачи из области дискретной математики. Исходный набор станций представляет собой связанный граф, вершинами которого являются станции, а рёбрами – линии метро, соединяющие станции. Решение задачи заключается в постепенном удалении вершин графа с условием того, что при последующем удалении вершины граф останется связанным;</p>
<p>б) в ходе анализа математической модели было принято решение использовать:</p>
<ul>
<li>расширенные структуры данных для оптимизации операций при работе с исходным набором данных, в которой в качестве полей a и b указываются две связные вершины:</li>
</ul>
<p>public struct apex</p>
<p>{</p>
<p>int a;</p>
<p>int b;</p>
<p>};</p>
<ul>
<li>массивы с динамическим выделением памяти.</li>
</ul>
<p>3) разработка алгоритма, схема которого сводится к следующим шагам:</p>
<ol>
<li>Выбираем произвольную станцию.</li>
<li>Проверяем, останутся ли все станции, смежные с выбранной в шаге 1, связанными между собой при её удалении.</li>
<li>Если пункт 2 выполняется, то записываем номер выбранной станции в результирующий массив и исключаем её из рассмотрения. Переходим в шагу 1.</li>
<li>Иначе, выбираем другую станцию и переходим к шагу 2.</li>
<li>Продолжаем алгоритм до тех пор, пока не исключим все станции из рассмотрения.</li>
</ol>
<p>Основной сложностью данного алгоритма являлось обнаружение связи между парой произвольных станций, т.е. проверка возможности попадания из одной станции на другую. Для этого был реализован вспомогательный рекурсивный алгоритм поиска пути, который представлен следующей функцией:</p>
<p>int SEARCH(int s1, int s2, int n, int *metki, int m, apex *edges)</p>
<p>{</p>
<p>for(int i=0; i&lt;m; i++)</p>
<p>{</p>
<p>if ((edges[i].a==s1 &amp;&amp; edges[i].b==s2)||(edges[i].a==s2 &amp;&amp; edges[i].b==s1)) return 1;</p>
<p>else</p>
<p>{</p>
<p>if (edges[i].a==s1 &amp;&amp; metki[edges[i].b]!=0)</p>
<p>{</p>
<p>metki[edges[i].b]=0;</p>
<p>if (SEARCH(edges[i].b, s2, n, metki, m, edges)==1)</p>
<p>return 1;</p>
<p>}</p>
<p>if (edges[i].b==s1 &amp;&amp; metki[edges[i].a]!=0)</p>
<p>{</p>
<p>metki[edges[i].a]=0;</p>
<p>if (SEARCH(edges[i].a, s2, n, metki, m, edges)==1)</p>
<p>return 1;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>return 0;</p>
<p>}</p>
<p>Параметрами данной функции являются порядковые номера двух вершин s1 и s2, массив использованных вершин metki[] размера n, в котором номера вершин есть индексы его элементов, и массив связанных вершин edges[] размера m.</p>
<p>Функция работает до тех пор, пока существует связь между вершинами s1 и s2, причём хотя бы одна из этих вершина должна быть не отмечена в массиве metki[]. Результатом работы функции является возврат единицы, если путь между вершинами s1 и s2<strong> </strong>существует, и нуля в противном случае.</p>
<p>4) программная реализация алгоритма, которая потребовала выполнения следующих шагов:</p>
<p>А) тестирование и отладка программной реализации алгоритма, которые  показали верные результаты на различных наборах тестовых данных. Один из примеров тестовых вариантов расположения станций приведён на рисунке 1.</p>
<p style="text-align: center;"><a href="https://web.snauka.ru/issues/2016/03/64956/1-510" rel="attachment wp-att-64957"><img class="alignnone size-full wp-image-64957" src="https://web.snauka.ru/wp-content/uploads/2016/03/1.gif" alt="" width="400" height="250" /></a></p>
<p style="text-align: center;">Рис. 1. Пример тестового варианта расположения станций</p>
<p>Потенциальной ошибкой данного теста, является случай, когда первой случайной станцией для удаления является станция под номером 4, так как после удаления нарушается связность графа. Рекурсивная проверка связанности смежных вершин (№3 и №5) показывает, что после удаления вершины №4 пути со станции №3 на станцию №5 <em>не существует.</em></p>
<p>Б) графическая визуализации алгоритма.</p>
<p>Готовая программа была написана на языке C# с использованием WPF.</p>
<p>Интерфейс программы представляет собой окно с кнопкой для открытия исходного файла и канвы, на которой происходит прорисовка станций и соединяющих линий. При открытии текстового файла входных данных матрица смежности исходного графа сохраняется в массив структур, а координаты в двумерный вещественный массив, далее вступает в работу алгоритм, описанный выше. В результате получаются три массива – с полученной очередностью удаления станций (массив результата), массив координат и матрица смежности. Так как канва имеет фиксированные размеры в пикселях, а также начало отсчёта ведётся с левого верхнего угла, координаты нужно преобразовать. Для этого используется «коэффициент сжатия», который высчитывается по формуле (Высота_канвы)/(Максимальная_по_модулю_координата). Так как канва квадратная, не имеет значения использование высоты или ширины канвы в данной формуле.</p>
<p>Все станции представляют собой эллипсы с фиксированным радиусом. На первом этапе прорисовки берутся числа из массива координат, умножаются на «коэффициент сжатия» и используются как координаты эллипсов на канве с учётом экранной системы координат (к координате X прибавляется высота канвы в пикселях, а из координаты Y вычитается высота канвы и умножается на минус единицу). На этом этапе работает цикл, в теле которого эллипсы прорисовываются на канве, а внутри них ставится порядковый номер (от 1 до N) в виде текст-блоков. Затем прорисовываются отрезки, соединяющие станции. Так как в матрице смежности попарно указываются соединённые станции, обе координаты отрезка берутся из массива координат (с учётом преобразований), а сама матрица смежности нужна только для определения наличия данного отрезка.</p>
<p>На следующем этапе выполняется поэтапное удаление станций за счет того, что по канве не прорисовывается та станция, порядковый номер которой хранится в массиве результата под очередным индексом, начиная с нулевого. На последней итерации не остаётся ни одного эллипса и отрезка, канва очищается. Промежуточный результат работы программы показан на рисунке 2.</p>
<p style="text-align: center;"><a href="https://web.snauka.ru/issues/2016/03/64956/2-312" rel="attachment wp-att-64958"><img class="alignnone size-full wp-image-64958" src="https://web.snauka.ru/wp-content/uploads/2016/03/2.gif" alt="" width="400" height="408" /></a></p>
<p style="text-align: center;">Рис. 2. Графический интерфейс приложения «Метро»</p>
<p>Существенным недостатком WPF, с которым пришлось столкнуться на практике – невозможность прорисовки элементов в реальном времени без использования нескольких потоков. Это означает, что интерфейс программы не обновится до тех пор, пока не выполнятся все вычисления (в данном случае на протяжении всей работы программы была видна только пустая канва). При этом, приоритет в одном потоке отдаётся вычислениям, а не прорисовке. Для решения данной проблемы использовался метод DoEvents из библиотеки WindowsForms.</p>
<p>При подобном комплексном решении задач повышенной сложности у студентов не только непосредственным образом формируются профессиональные навыки, помогающие достигать реальных целей, которые будут поставлены перед ними в их дальнейшей профессиональной деятельности, но и закладывается фундамент высокого профессионализма, конкурентоспособности, грамотного представления результатов своего труда.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2016/03/64956/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
