О способах развития логического мышления при решении олимпиадных задач по программированию

Анализ влияния решения олимпиадных задач на процесс формирования логического мышления на примере разбора олимпиадной задачи по программированию. Анализ способов решения задачи. Определение способов оптимизации решения задачи по программированию.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 03.03.2018
Размер файла 14,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

о способах развития логического мышления при решении олимпиадных задач по программированию

Кильдибаева Светлана Рустамовна, кандидат наук, доцент

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

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

задача программирование решение олимпиадный

В настоящее время всё больше становится популярным изучение языков программирования. Существует мнение, что чем раньше учить человека какому-то, пусть даже самому простому языку программирования, его мышлении станет более последовательным и ясным, а склонность к аналитике повысится[1,2]. Так, например, согласно последним стандартам обучения, самые простые задачки программирования начинают решать уже с начальной школы, а начиная с 6 класса ученики приобщаются к программированию. Для этого используется программа "Кумир" и графический исполнитель "Чертёжник".

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

Условие задачи:

"В городе Стерлитамак разрабатывается и развивается платформа Электронной игровой школы (https://eplayschool.ru). Пятиклассник Петя любит получать новые знания по математике и информатике, проходя уроки на платформе, а в свободное время он очень любит изучать числа и их свойства. Сейчас он увлёкся поиском «удивительных» чисел. Рассматривается натуральное число а из диапазона [10, 99]. Число c получается путём умножения числа a на некоторое натуральное число. Рассматриваются только трёхзначные натуральные числа c. Петя заметил, что в некоторых случаях, если в записи числа с зачеркнуть первую цифру и записать её в конец, то полученное число также будет нацело делиться на число a. Если это действие можно применить для числа дважды, то такие числа Петя называет «удивительными». Если в записи числа используется только одна цифра, то такое число не подходит. Петя решил найти сумму всех удивительных чисел с для чисел a из заданного диапазона. В результате он хочет найти цифру, которая соответствует сумме «удивительных» чисел.

Примечание. Цифра, которая должна быть найдена в результате, вычисляется следующим образом: например, если сумма «удивительных» чисел равняется 6452, то суммируем цифры числа 6+4+5+2=17. Если в результате получилась цифра, то можно записать её в ответ, иначе повторяем предыдущее действие. Для нашего примера суммируем цифры получившегося числа повторно 1+7=8."

Итак, во-первых, как и любая другая задача олимпиадного типа, задача немного запутанная и требует некоторых пояснений. Для начала необходимо выяснить, какие числа могут быть названы "удивительными". Согласно условию: "Рассматривается натуральное число а из диапазона [10, 99]. Число c получается путём умножения числа a на некоторое натуральное число. Рассматриваются только трёхзначные натуральные числа c. Петя заметил, что в некоторых случаях, если в записи числа с зачеркнуть первую цифру и записать её в конец, то полученное число также будет нацело делиться на число a. Если это действие можно применить для числа дважды, то такие числа Петя называет «удивительными».". Т.е. нам необходимо начать перебирать все числа от 10 до 99, чтобы проверить, какие же числа нам подходят. Итак, берем первое число 10 и последовательно умножаем его на все натуральные числа. Следует отметить, что условие относительно того, что результат должен получиться трехзначным (только такие числа рассматриваются) наводит на мысль, что совсем не обязательно перебирать натуральные числа от 1 до бесконечности. Так для первого числа будут подходить натуральные числа от 10 до 99. Теперь нужно рассмотреть полученное число.

10*10=100.

Зачеркнем первую цифру и запишем её в конец. Получится 001 или просто 1. Это число не является трехзначным, а, следовательно, не подходит и рассматриваться не будет. Очевидно, что первое число из диапазона всегда будет давать трёхзначное число, содержащее 0. Такие числа нам подходить не будут, поэтому число 10 можем не рассматривать дальше. При рассмотрении чисел, подозрительных на "удивительность", можно сразу исключить те из них, которые содержат 0. Это исключение позволит уменьшить число проверок и увеличить скорость работы программы.

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

Например,

18*16=288.

Преобразуем полученное число, зачеркнув цифру 2, и записав её в конец. Получим число 882. Данное число делится нацело на 18, т.е.

882:18=49.

Повторим преобразование, получим число 828. Оно также делится на 18:

828:18=46.

Таким образом, число 288 подходит и является "удивительным".

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

Поиск чисел, которые могут искать "удивительные" числа можно организовать следующим образом. Первый (внешний) цикл будет проходить по числам a из диапазона от 10 до 99. Второй (внутренний) цикл будет бежать по натуральным числам, которые могут при умножении на число a давать трехзначное число. Если для первого цикла корректнее всего использовать цикл-счётчик (for), то для второго будет рациональнее использовать цикл с предусловием (while).

Помимо этого в условии сказано, что: "Если в записи числа используется только одна цифра, то такое число не подходит.". Поэтому необходимо добавить дополнительное условие, которое будет проверять, одна ли цифра использовалась при записи числа. Для этого достаточно проверить на равенство цифры удивительного числа, что можно сделать всего в одном условии.

Следует отметить, что все числа, которые соответствуют условию "удивительного" числа следует сразу суммировать в некоторую переменную, например, в s. После завершения прохода цикла по числам необходимо найти сумму цифр полученного числа. Для этого достаточно запустить цикл, который будет отделять из полученного числа цифру, и суммировать её. Результат можно записать снова в s. А суммирование производить до тех пор, пока результат не станет меньше 10.

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

Список литературы

1. Файн Я. Программирование на Java для детей, родителей, дедушек и бабушек. - 2011. - 231 с.

2. Симонович С., Евсеев Г. Занимательное программирование: Visual Basic. Книга для детей, родителей и учителей. - 2001. - 300 с.

Размещено на Allbest.ru

...

Подобные документы

  • Обзор методов и подходов решения поставленной задачи аппроксимации логического вывода экспертной системы. Разработка и описание метода сетевого оператора для решения данной задачи. Разработка алгоритма решения. Проведение вычислительного эксперимента.

    дипломная работа [1,5 M], добавлен 23.02.2015

  • Фурье и Данцига как основоположники методов математического программирования. Знакомство с теорией решения транспортных задач. Анализ способов применения симплекс-метода. Рассмотрение примера решения транспортной задачи в области электроэнергетики.

    презентация [981,0 K], добавлен 28.04.2014

  • Написание программы вычисления сопротивления электрической цепи, состоящей из двух параллельно и двух последовательно соединенных сопротивлений. Схема машинного алгоритма по условию задачи. Применение операций при написании программ на языке C/C++.

    контрольная работа [17,3 K], добавлен 09.11.2010

  • Разработка на основе игры "Точки" подхода к программированию "искусственного интеллекта" в позиционных играх и возможность применения данного подхода для решения задач в области экономики, управления и других областях науки. Модель игровой ситуации.

    дипломная работа [1,5 M], добавлен 21.07.2013

  • Программа для обучения графическому методу решения задач линейной оптимизации (ЗЛО). Необходимое серверное и клиентское программное обеспечение. Графический метод решения ЗЛО для произвольной задачи. Организационно-экономическое обоснование проекта.

    курсовая работа [996,3 K], добавлен 14.10.2010

  • Краткий обзор решения транспортных задач. Экономическая интерпретация поставленной задачи. Разработка и описание алгоритма решения задачи. Построение математической модели. Решение задачи вручную и с помощью ЭВМ. Анализ модели на чувствительность.

    курсовая работа [844,3 K], добавлен 16.06.2011

  • Анализ метода линейного программирования для решения оптимизационных управленческих задач. Графический метод решения задачи линейного программирования. Проверка оптимального решения в среде MS Excel с использованием программной надстройки "Поиск решения".

    курсовая работа [2,2 M], добавлен 29.05.2015

  • Анализ решения задачи линейного программирования. Симплексный метод с использованием симплекс-таблиц. Моделирование и решение задач ЛП на ЭВМ. Экономическая интерпретация оптимального решения задачи. Математическая формулировка транспортной задачи.

    контрольная работа [196,1 K], добавлен 15.01.2009

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

    контрольная работа [259,8 K], добавлен 22.05.2010

  • Оптимизация решения задачи с помощью алгоритма отжига. Анализ теории оптимизации как целевой функции. Метод градиентного спуска. Переменные и описание алгоритма отжига. Представление задачи коммивояжера через граф. Сведение задачи к переменным и решение.

    курсовая работа [784,0 K], добавлен 21.05.2015

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

    реферат [42,4 K], добавлен 06.03.2010

  • Теоретическая основа линейного программирования. Задачи линейного программирования, методы решения. Анализ оптимального решения. Решение одноиндексной задачи линейного программирования. Постановка задачи и ввод данных. Построение модели и этапы решения.

    курсовая работа [132,0 K], добавлен 09.12.2008

  • "Moodle" - модульная объектно-ориентированная динамическая среда обучения, ее использование для разработки систем дистанционного обучения. Общее представление о дистанционном практикуме по программированию. Разработка структуры данных и алгоритмов.

    дипломная работа [1,2 M], добавлен 09.11.2016

  • Решение задачи средствами Паскаль и блок-схемы выполненных процедур, составление программы. Результаты решения задачи по перевозке грузов. выполнение задачи средствами MS Excel, создание таблиц. Порядок и особенности решения задачи в среде MathCAD.

    курсовая работа [2,5 M], добавлен 27.02.2011

  • Определение понятия графа как набора вершин и связей между ними. Способы решения задач по программированию согласно теории графов на примерах заданий "Дороги", "Перекрестки", "Скрудж Мак-Дак", используя рекурсивные функции и рекуррентные соотношения.

    курсовая работа [36,2 K], добавлен 10.03.2010

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

    дипломная работа [418,3 K], добавлен 10.07.2017

  • Графоаналитический метод решения задач. Получение задачи линейного программирования в основном виде. Вычисление градиента и поиск экстремумов методом множителей Лагранжа. Параболоид вращения функции. Поиск решения на основе условий Куна-Таккера.

    контрольная работа [139,3 K], добавлен 13.09.2010

  • Методы решения задач линейного программирования: планирования производства, составления рациона, задачи о раскрое материалов и транспортной. Разработка экономико-математической модели и решение задачи с использованием компьютерного моделирования.

    курсовая работа [607,2 K], добавлен 13.03.2015

  • Использование информационных технологий для решения транспортных задач. Составление программ и решение задачи средствами Pascal10; алгоритм решения. Работа со средствами пакета Microsoft Excel18 и MathCad. Таблица исходных данных, построение диаграммы.

    курсовая работа [749,1 K], добавлен 13.08.2012

  • Задачи, решаемые методом динамического программирования. Основные этапы нахождения деревянного алгоритма решения задачи. Выполнение алгоритма Прима. Построение Эйлерового цикла. Решение задач средствами Excel. Алгоритм основной программы - Derevo.

    курсовая работа [586,3 K], добавлен 04.04.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.