<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article
PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.4 20190208//EN"
       "JATS-journalpublishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="1.4" xml:lang="en">
 <front>
  <journal-meta>
   <journal-id journal-id-type="publisher-id">Profession-Oriented School</journal-id>
   <journal-title-group>
    <journal-title xml:lang="en">Profession-Oriented School</journal-title>
    <trans-title-group xml:lang="ru">
     <trans-title>Профильная школа</trans-title>
    </trans-title-group>
   </journal-title-group>
   <issn publication-format="print">1998-0744</issn>
  </journal-meta>
  <article-meta>
   <article-id pub-id-type="publisher-id">2033</article-id>
   <article-id pub-id-type="doi">10.12737/3574</article-id>
   <article-categories>
    <subj-group subj-group-type="toc-heading" xml:lang="ru">
     <subject>Практика</subject>
    </subj-group>
    <subj-group subj-group-type="toc-heading" xml:lang="en">
     <subject>Practice</subject>
    </subj-group>
    <subj-group>
     <subject>Практика</subject>
    </subj-group>
   </article-categories>
   <title-group>
    <article-title xml:lang="en">Efficient Algorithms for Solving Several Problems in Teaching Programming</article-title>
    <trans-title-group xml:lang="ru">
     <trans-title>Об эффективных алгоритмах решения ряда задач при обучении программированию</trans-title>
    </trans-title-group>
   </title-group>
   <contrib-group content-type="authors">
    <contrib contrib-type="author">
     <name-alternatives>
      <name xml:lang="ru">
       <surname>Дмитриев</surname>
       <given-names>Владислав Леонидович</given-names>
      </name>
      <name xml:lang="en">
       <surname>Dmitriev</surname>
       <given-names>Vladislav Леонидович</given-names>
      </name>
     </name-alternatives>
     <email>admwell@yandex.ru</email>
    </contrib>
   </contrib-group>
   <pub-date publication-format="print" date-type="pub" iso-8601-date="2014-06-17T00:00:00+04:00">
    <day>17</day>
    <month>06</month>
    <year>2014</year>
   </pub-date>
   <pub-date publication-format="electronic" date-type="pub" iso-8601-date="2014-06-17T00:00:00+04:00">
    <day>17</day>
    <month>06</month>
    <year>2014</year>
   </pub-date>
   <volume>2</volume>
   <issue>3</issue>
   <fpage>16</fpage>
   <lpage>26</lpage>
   <self-uri xlink:href="https://zh-szf.ru/en/nauka/article/2033/view">https://zh-szf.ru/en/nauka/article/2033/view</self-uri>
   <abstract xml:lang="ru">
    <p>При изучении программирования как в школе, так и в вузе, предпочтение в основном отдается стандартным задачам, решение которых в большинстве случаев оказывается очевидным. Однако часть таких задач может быть решена более оптимальными способами, которые, чаще всего, так и остаются не найденными. В статье на примерах рассматриваются вопросы поиска и реализации эффективных алгоритмов при решении некоторого класса задач в процессе обучения программированию. Под эффективностью алгоритма понимается выполнение требований по минимальному использованию памяти программой (в рамках условия задачи) и быстроте работы алгоритма. Рассматриваемые в статье задачи с успехом использовались автором для проведения дистанционной олимпиады по программированию среди студентов физико-математических и технических профилей. Исходные коды программ приведены на языке программирования С++.</p>
   </abstract>
   <trans-abstract xml:lang="en">
    <p>Both at school and at higher educational institutions the priority generally is given to standard mathematical problems, which in most cases seem&#13;
to have quite evident solutions. However some of these problems can be solved in more optimal ways, which are often not been found at all. Based&#13;
on a range of examples the paper considers how to seek and apply efficient algorithms when solving a specific class of problems in the course of&#13;
programming teaching. The algorithm efficiency is meant that the program (as far as the current problem specifications require) meets requirements&#13;
of minimal memory use and certain speed of algorithms. The author has successfully used the problems discussed in the paper for running the distant&#13;
programming competition among students of physical-mathematical and engineering profiles. Source codes for the programs discussed are indicated&#13;
in terms of C++ programming language.</p>
   </trans-abstract>
   <kwd-group xml:lang="ru">
    <kwd>программирование</kwd>
    <kwd>эффективный алгоритм</kwd>
    <kwd>конструктивное мышление</kwd>
    <kwd>разработка программы.</kwd>
   </kwd-group>
   <kwd-group xml:lang="en">
    <kwd>programming</kwd>
    <kwd>efficient algorithm</kwd>
    <kwd>possibility thinking</kwd>
    <kwd>software engineering.</kwd>
   </kwd-group>
  </article-meta>
 </front>
 <body>
  <p>В большинстве случаев при обучении программированию, как в школе, так и в вузе, редко обращается внимание на поиск наиболее эффективных решений той или иной задачи. По крайней мере, этот вопрос обычно не рассматривается, если предложенный алгоритм решения задачи дает более-менее хорошие результаты в плане скорости вычислений (при этом, зачастую, об экономии памяти речи вообще не идет).Однако многие задачи, даже являющиеся достаточно простыми, могут быть решены более эффективными алгоритмами. Простота таких задач, очевидно, и является причиной того, что решение, не лежащее на поверхности, а требующее некоторых мыслительных операций, так и остается не найденным.Рассмотрим несколько задач, демонстрирующих возможности использования эффективных алгоритмов. Похожие задачи могут быть предложены при обучении программированию как олимпиадные задачи, причем в условиях оценки задач такой олимпиады должно быть обязательно указано, что максимальный балл будет давать именно оригинальный эффективный алгоритм.Так, например, была организована олимпиада по программированию в дистанционной форме среди студентов физико-математического факультета продолжительностью шесть дней. Задания (по одному в день) высылались участникам ежедневно в одно и то же определенное положением о проведении олимпиады время на адреса электронной почты, и в течение двух часов участник должен был прислать решение. При подведении итогов олимпиады оценивалась эффективность использования оперативной памяти, скорость работы алгоритма, его оригинальность и, конечно же, время решения задачи участником. Результаты олимпиады показали, что только около 20% студентов смогли предложить эффективные алгоритмы решения некоторых задач. Стоит отметить, что при проведении дистанционной олимпиады необходимо придумывать новые задачи, не встречающиеся в сети Интернет, а также активно использовать при проверке решений программы, позволяющие выявить плагиат решения (например, система eTXT Антиплагиат).</p>
 </body>
 <back>
  <ref-list>
   <ref id="B1">
    <label>1.</label>
    <citation-alternatives>
     <mixed-citation xml:lang="ru">Дмитриев В.Л. Теория и практика программирования на С++. - Стерлитамак: РИО СФ БашГУ, 2013. - 308 с.</mixed-citation>
     <mixed-citation xml:lang="en">Dmitriev V.L. Teoriya i praktika programmirovaniya na C++ [Theory and practice of C++ programming]. Sterlitamak, RIO SF BashGU Publ., 2013. 308 p.</mixed-citation>
    </citation-alternatives>
   </ref>
   <ref id="B2">
    <label>2.</label>
    <citation-alternatives>
     <mixed-citation xml:lang="ru">Дмитриев В.Л., Ахмадеева Р.З. Развитие конструктивного мышления при изучении программирования // Информатика и образование. - 2009. - № 2. - С. 69-73.</mixed-citation>
     <mixed-citation xml:lang="en">Dmitriev V.L., Akhmadeeva R.Z. Development of constructive thinking in the study of programming. Informatika i obrazovanie [Computer science and education], 2009. I. 2, pp. 69-73. (in Russian)</mixed-citation>
    </citation-alternatives>
   </ref>
   <ref id="B3">
    <label>3.</label>
    <citation-alternatives>
     <mixed-citation xml:lang="ru">Окулов С.М. Программирование в алгоритмах. - М.: БИНОМ. Лаборатория знаний, 2002. - 341 с.</mixed-citation>
     <mixed-citation xml:lang="en">Okulov S.M. Programmirovanie v algoritmakh [Programming algorithms]. Moscow, BINOM. Laboratorija znanij Publ., 2002. 341 p.</mixed-citation>
    </citation-alternatives>
   </ref>
   <ref id="B4">
    <label>4.</label>
    <citation-alternatives>
     <mixed-citation xml:lang="ru">Stroustrup Bjarne. The C++ programming language / Bjarne Stroustrup. - Fourth edition. - Boston: Addison-Wesley, 2013. - 1368 p.</mixed-citation>
     <mixed-citation xml:lang="en">Stroustrup Bjarne. The C++ programming language. Fourth edition. Boston, Addison-Wesley, 2013. 1368 p.</mixed-citation>
    </citation-alternatives>
   </ref>
  </ref-list>
 </back>
</article>
