Раздел C • Категория C2 (демонстрационный вариант-2012)

 
 
 

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

Дано:
целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от –1000 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, позволяющий найти и вывести минимальное значение среди элементов массива, которые имеют чётное значение и не делятся на три. Гарантируется, что в исходном массиве есть хотя бы один элемент, значение которого чётно и не кратно трем. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но разрешается не использовать часть из них.

 

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

 

Методические указания

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

  1. техническое задание (постановка задачи);

  2. формализация (математическая постановка задачи);

  3. выбор (или разработка) метода (или способа) решения задачи;

  4. алгоритмизация (разработка алгоритма для решения упражнения);

  5. запись программы на конкретном языке программирования (кодирование задачи);

  6. тестирование и отладка;

  7. выполнение программы и обработка полученных результатов;

  8. документирование.

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

 

Теоретические сведения

Естественный язык – язык, используемый для общения людей (например, в отличие от общепринятых языков программирования) и не создан искусственно.

Свойства естественного языка:

  • без ограничительная семантическая мощность;

  • эволютивность;

  • этничность.

Язык программирования – специальная кодовая система для записи компьютерных программ. Каждый язык программирования обладает определенной семантикой, лексикой и синтаксисом. В мире придумано и реализовано свыше 8000 тысяч языков программирования, но востребованными являются не более 20 – 30 различных языков.

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

 

Решение

Прежде чем непосредственно приступать к разработке алгоритма, надо выбрать язык программирования, на основе которого пойдет весь последующий анализ. Выбор достаточен, разнообразен, так как предлагается один из четырех языков (Turbo Pascal, Basic, C, Алгоритмический язык).

Среди всех приведенных для выбора языков, я свое предпочтение, безусловно, отдаю языку Turbo Pascal, так как:

  • данный язык имеет прекрасную внутреннюю группировку по разделам (раздел описания констант, раздел описания переменных, раздел описания собственных типов данных и т. д.);

  • хорошо понятная лексика;

  • перед использованием переменной она обязана быть описана выше (в отличие от языка программирования Basic);

  • большое количество встроенных структур, позволяющих наиболее эффективно решать поставленные задачи (например, имеется встроенный тип данных "Множество", в отличие от любого другого представленного здесь языка);

  • по официальной статистике: превалирующее количество школьников сдающих ЕГЭ по информатике и ИКТ в качестве базового языка программирования выбирают Turbo Pascal.

Промежуточный вывод: мой субъективный выбор - превосходный язык программирования Pascal.

 

Рассмотрим алгоритм решения поставленной задачи.
В качестве примера рассмотрим одномерный целочисленный массив, состоящий из восьми элементов, являющихся целыми случайными числами из диапазона [-1000 ... 1000].
Числа, являющееся значениями элементов массива выбраны абсолютно хаотично и на их месте могли оказаться абсолютно другие значения (смысл разработки алгоритма заключается в том, чтобы не привязываться к каким-то конкретным данным, так как иначе происходит нарушение одного из фундаментальных свойств алгоритма - массовость).

916-214-1176240-800-66444значения
элементов
12345678значения
индексов

В условии задания фигурирует такие понятия как:

  • минимальный элемент;

  • четное значение;

  • не делится на 3.

Минимальный элемент - элемент массива, имеющий наименьшее значение среди всех элементов данного массива.
Четное значение (число) - число, делящееся без остатка на два.
Не делится на три - означает, что рассматриваемое число не кратно 3-ем, то есть при делении на три образуется остаток не равный 0.

*примечание:
признак делимости на три: если сумма цифр рассматриваемого числа делится на три без остатка, то и само число также делится на три без остатка, иначе, рассматриваемое число не кратно трем.

 

Как правило, любые операции над элементами массива требуют, как минимум, просмотра всех элементов массива, то есть используются циклические обработки. Данная задача - не исключение, поэтому, начнем секвентивный просмотр элементов с выявлением тех значений, удовлетворяющих граничным критериям (минимальность, четность, не кратность трем).

ВАЖНО!
Поскольку по условию упражнения требуется определить минимальное значение, то когда будет производиться обработка первого элемента массива, то его значение не с чем будет сравнивать, следовательно, воспользуемся приемом "плюс бесконечность", то есть будем сравнивать значение первого элемента с максимально большим значением. В данной задаче, таким значением является +1000.
Очень важно понимать следующее: многие могут возразить и сказать, что в качестве минимального элемента, можно априори принять первый элемент. Иногда да, но в данной задаче, необходимо, чтобы элемент подчинялся не только ограничению минимальности, но еще и был четным и не кратным трем, то есть далеко не факт, что первый элемент массив будет удовлетворять всем указанным ограничениям. Как следствие, нужно проводить реализацию только через метод "плюс бесконечность"!


В итоге, после расчета значение -800 удовлетворяет всем граничным критериям (минимальность, четность, не кратность трем).

 

Возможная доработка программы на языке программирования Turbo Pascal 7.0 с подробными комментариями:

 

Вывод:

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

Резюме

  1. разобрались детально с постановкой задачи;

  2. смоделировали алгоритм на произвольном наборе данных и вывели методику решения;

  3. запрограммировали выведенный ранее алгоритм, используя язык программирования Pascal.

 
 
Рейтинг:
 
Проголосовало: 0
Количество просмотров: 1822
 
 
 

Раздел C • Категория C2 (демонстрационный вариант-2012)

 

Комментарии

Для комментирования или зарегистрируйтесь
 
 
© 2011-2024 ООО "СтадиМен". Все права сохранены.
Перепечатка и использование материалов с данного сайта, разрешена только по согласию с владельцем.
Владелец оставляет за собой право воспользоваться 146 статьей УК РФ при нарушении авторских и смежных прав.
 
 
 
 
Авторизация на сайте
 
 
 
Обнаружили
ошибку на сайте?