Научная статья на тему 'ТРЕБОВАНИЕ ЭФФЕКТИВНОСТИ РЕШЕНИЯ В ЗАДАЧАХ ПО ПРОГРАММИРОВАНИЮ'

ТРЕБОВАНИЕ ЭФФЕКТИВНОСТИ РЕШЕНИЯ В ЗАДАЧАХ ПО ПРОГРАММИРОВАНИЮ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
11
4
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГРАММИРОВАНИЕ / ЭФФЕКТИВНЫЕ АЛГОРИТМЫ / СЛОЖНОСТЬ АЛГОРИТМА / ВРЕМЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Дмитриев В.Л., Алексеева К.В.

В работе кратко рассматриваются основные проблемы, имеющие место при обучении программированию. Особое внимание отводится проблеме поиска эффективных алгоритмов при решении задач. Приведены тексты трех задач, предполагающих поиск эффективных алгоритмов.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

THE REQUIREMENT FOR EFFECTIVENESS OF THE SOLUTION IN THE PROGRAMMING TASKS

In the work briefly discusses the main tasks that occur when teaching programming. Special attention is given to the problem of finding efficient algorithms for solving tasks. Is presented the texts of the three tasks, involving the search for efficient algorithms.

Текст научной работы на тему «ТРЕБОВАНИЕ ЭФФЕКТИВНОСТИ РЕШЕНИЯ В ЗАДАЧАХ ПО ПРОГРАММИРОВАНИЮ»

Городецкий // Литературные и общественные деятели Северного Кавказа: библиографические очерки. - Екатеринодар, 1913. - С. 22.

6. Фелицын Е.Д. Описание дольмена станицы Баговской Кубанской области / Е.Д. Фелицын // Изв. О-ва любителей обществознания, антропологии и этнографии при Московском университете. - М., 1880. - Т 3. - 4.1.-С. 25.

7. Каверина Т.П. Туризм как вид деятельности / Т.П. Каверина. - М.: Финансы и статистика, 2005. - С.43.

8. Науменко В.В. Деятельность кубанских историков по развитию экскурсионной деятельности в регионе в конце XIX - начале XX вв. / В.В. Науменко // Развитие социально-культурной сферы Северо-Кавказского региона. - Краснодар, 2001. - С.253.

9. Дьячков-Тарасов А.Н. В горах Большого и Малого Карачая / А.Н. .Дьячков-Тарасов. - Тифлис, 1900. - С.З 89-390.

10.Дьячков-Тарасов А.Н. В горах Большого и Малого Карачая / А.Н. .Дьячков-Тарасов. - Тифлис, 1900. - С.З 89-395

11.Борчевский СИ. Описание минералогической коллекции, собранной в верховьях Кубани в 1898 году /

12.СИ. Борчевский // Изв. ОЛИКО. - Екатеринодар, 1900. - Вып.2. - С.251.

13.Инструкция для велосипедистов-туристов (Русского туринг-клуба) // Русский турист. - СПб, 1899. 1-ый год. - С.62.

14. Отчет о действиях и состояниях Кавказского отдела императорского Русского географического общества за 1901 год. // Изв. КОИРГО. - Тифлис, 1902. - Т 15. - Вып.З. - С. 140.

15. Отчет о действиях и состояниях Кавказского отдела императорского Русского географического общества за 1901 год. // Изв. КОИРГО. - Тифлис, 1902. - Т 15. - Вып.З. - С. 143.

УДК 004.424

Дмитриев В.Л., к.ф.-м.н.

доцент

кафедра «Прикладная информатика и программирование»

Алексеева К.В. студент 3 курса

факультет «Математики и информационных технологий»

Стерлитамакский филиал Башкирский государственный университет

Россия, г. Стерлитамак ТРЕБОВАНИЕ ЭФФЕКТИВНОСТИ РЕШЕНИЯ В ЗАДАЧАХ ПО

ПРОГРАММИРОВАНИЮ В работе кратко рассматриваются основные проблемы, имеющие место при обучении программированию. Особое внимание отводится проблеме поиска эффективных алгоритмов при решении задач. Приведены тексты трех задач, предполагающих поиск эффективных алгоритмов.

Ключевые слова: программирование, эффективные алгоритмы, сложность алгоритма, время выполнения программы

Dmitriev V.L., Ph.D. (Physics and Mathematics), associate professor associate professor of the department of applied informatics and

programming

Sterlitamak branch of the Bashkir state University

Russia, Sterlitamak Alekseeva K.V. student

the 3th course, the faculty of mathematics and information technology

Sterlitamak branch of the Bashkir state University

Russia, Sterlitamak

THE REQUIREMENT FOR EFFECTIVENESS OF THE SOLUTION IN THE PROGRAMMING TASKS

In the work briefly discusses the main tasks that occur when teaching programming. Special attention is given to the problem of finding efficient algorithms for solving tasks. Is presented the texts of the three tasks, involving the search for efficient algorithms.

Key words: programming, efficient algorithms, complexity of algorithm, the execution time of the program

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

- учащиеся затрудняются с определением цели решения задачи;

- не могут целостно «увидеть» проблему;

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

- возникают трудности с анализом собственных программ и программ одноклассников;

- учащиеся часто не в состоянии найти ошибки в программе;

- не могут разработать оптимальную (эффективную) программу для решения задачи.

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

подходить к решению задач, а значит, поможет повысить эффективность и качество обучения программированию [1].

В тексте задач части «С» Единого Государственного Экзамена по информатике часто можно увидеть требование написать эффективную программу. В данном случае требование эффективности не является синонимом «рабочая», «правильная». Даже правильно работающая программа может быть неэффективной. Здесь перед учащимися ставится задача написать не просто рабочую программу, а именно программный код, который сможет выполняться в условиях ограниченных ресурсов [2-6]. Создавая код, школьники должны продемонстрировать умения распоряжаться ресурсами компьютера. Можно выделить два основных критерия эффективности алгоритма решения задач: ограничение на объем использованной памяти и ограничение на время получения решения программой.

Первый критерий предусматривает возможность программы получить решение задачи в условиях ограниченных ресурсов памяти ЭВМ.

Второй критерий напрямую связан с оптимизацией алгоритма решения задачи таким образом, чтобы наиболее быстро по времени получить ее решение. Время выполнения характеризует сложность алгоритма. Например, рассмотрим одномерный массив с количеством элементов, равным N. Если время выполнения программы линейно зависит от количества элементов массива (например, поиск минимального элемента), то сложность алгоритма обозначают 0(^. Если будем сортировать массив, используя «метода пузырька», то потребуется N2 шагов, и тогда сложность алгоритма будет уже 0(№).

Эффективность алгоритма решения задачи может быть достигнута не по всем показателям, а лишь по некоторым из них. Так, например, решение может быть эффективно в использовании оперативной памяти, но не эффективно по времени выполнения алгоритма (скорости вычислений). В таких случаях выбор варианта решения зависит от того, какой параметр наиболее критичен в данной ситуации (он может определяться характеристиками оборудования, на котором будет реализовано решение задачи).

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

Отметим, что многие задачи, являясь в формулировке достаточно простыми, могут быть решены более эффективными алгоритмами. Часто это

задачи, в тексте которых количество элементов незначительно - но стоит увеличить количество элементов, как стандартный подход к решению приведет к тому, что алгоритм решения задачи сможет получить решение лишь через сотни или миллионы лет. Кажущаяся простота таких задач и является причиной того, что эффективное решение остается не найденным.

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

Задача 1. Найти все пары дружественных чисел в диапазоне [a, b] или сообщить, что в указанном диапазоне таких чисел нет. Дружественными числами называются такие два различных числа A и B, что A есть сумма натуральных делителей числа B (исключая само число B), а B есть сумма натуральных делителей числа A (исключая само число A). Например: 220 и 284 - первая пара различных дружественных чисел (делители числа 284: 1, 2, 4, 71, 142; делители числа 220: 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110; тогда 220 есть сумма делителей числа 284, так как 220=1+2+4+71+142, а число 284 есть сумма делителей числа 220, так как 284=1+2+4+5+10+11+20+22+44+55+110).

Задача 2. Дан одномерный массив, содержащий N целых положительных элементов, причем все элементы массива парные, кроме одного. Найти непарный элемент массива.

Задача 3. Дан одномерный массив, содержащий N целых положительных элементов, причем значение каждого из элементов этого массива не менее 1 и не более N. Найти элементы массива, которые встречаются в нем ровно по одному разу.

Отметим, что задачи 2 и 3 решаются в один проход по массиву, дополнительный массив для решения не требуется.

Использованные источники:

1. Дмитриев В.Л., Ахмадеева Р.З. Развитие конструктивного мышления при изучении программирования // Информатика и образование. 2009. № 2. - С. 69-73.

2. Дмитриев В.Л. Об эффективных алгоритмах решения ряда задач при обучении программированию // Профильная школа. 2014. Т.2. №2 3. - С. 19-26.

3. Дмитриев В.Л. Об эффективных решениях в задачах по программированию // Информатика в школе. 2015. № 9. - С. 37-40.

4. Дмитриев В.Л. Эффективные алгоритмы в задачах по программированию // Профильная школа. 2016. Т.4. № 2. - С. 53-61.

5. Дмитриев В.Л. Поэтапная разработка программы в среде TurboPascal на примере поиска пути с использованием волнового алгоритма // Информатика и образование. 2013. № 8. - С. 29-33.

6. Титоров Д.Ю. Эффективные алгоритмы. [Электронный ресурс]. - URL: http://www.titorov.ru/index.php/distant/programmirovanie/551-effect

i Надоели баннеры? Вы всегда можете отключить рекламу.