Создайте Ваш сайт учителя Курсы ПК и ППК Видеоуроки Олимпиады Вебинары для учителей
Методы решения задач программирования
Учащиеся должны четко представлять, что такое алгоритм, что такое программа, как она исполняется компьютером, какие виды языков программирования существуют.
Алгоритм — это последовательность действий, выполнение которой в указанном порядке приводит к решению задачи независимо от воли исполнителя.
Алгоритм - это основа программы, исполнитель программы - компьютер. На стадии отладки программы в роли исполнителя часто выступает сам программист.
Алгоритм должен соответствовать следующим свойствам
Алгоритм может быть записан с помощью блок-схемы, текстовым предписанием, с помощью рисунков, таблично или на специальном алгоритмическом языке. Наиболее популярны блок-схемы и предписания. Преимущество блок-схем — в наглядности.
Блок-схема обычно содержит записи внутри блоков, эти записи содержат необходимую информацию для выполнения очередных действий.
Методика разработки алгоритмов
Разработке алгоритма предшествуют такие этапы, как формализация и моделирование. Формализация предполагает замену словесной формулировки решаемой задачи краткими символьными обозначениями, близкими к обозначениям в языках программирования или к математическим. Моделирование задачи является важнейшим этапом, целью которого является поиск алгоритма решения. При разработке алгоритма основным является метод пошаговой детализации. Этот принцип предполагает первоначальную разработку алгоритма в виде укрупненных блоков (разбиение задачи на подзадачи) и их постепенную детализацию.
Алгоритм следует записывать аккуратно и разборчиво. Аккуратность записи есть аккуратность мысли программиста. Аккуратно записанный и детализированный алгоритм упрощает его программирование.
Программа — это описание алгоритма средствами языка программирования.
Исполнителем программы является компьютер. Программы создаются с помощью языков программирования, которые по синтаксису и семантике приближены к естественному человеческому языку. Это снижает трудоемкость программирования. Однако, текст программы, записанный с помощью языка программирования, должен быть преобразован в машинный код. Эта операция выполняется автоматически с помощью специальной служебной программы, называемой транслятором.
Трансляторы делятся на два типа: интерпретаторы и компиляторы.
Интерпретатор переводит в машинный код и выполняет очередной оператор (команду) программы. Если команда повторяется, то интерпретатор рассматривает ее как встреченную впервые.
Компилятор переводит в машинный код исходный текст программы целиком. Поэтому достоинство компиляторов — быстродействие и автономность получаемых программ. Достоинство интерпретаторов — их компактность, возможность остановить в любой момент выполнение программы, выполнить различные преобразования данных и продолжить работу программы.
Этапы решения задачи
Обобщим рассмотренные выше принципы разработки алгоритмов и выделим главные этапы решения задач.
Рассмотрим задачу с достаточно сложным алгоритмом решения для того, чтобы, во-первых, более ярко продемонстрировать этапы решения задачи, во-вторых, принцип поэтапной детализации алгоритма.
Постановка задачи. По кругу стоят m человек. Каждый из них имеет порядковый номер. Отсчет ведется по кругу в порядке следования номеров. Каждый n – й выходит из круга. Так продолжается до тех пор, пока не останется один человек. Определите его порядковый номер.
Разработка алгоритма решения задачи
Начало
Ввод данных
Организация отсчета
Вывод
результатов
Конец
Изобразим укрупненный алгоритм решения поставленной задачи. На рисунке показаны основные шаги поэтапной детализации основного алгоритма.
Первый и последний элементы никаких трудностей не представляют. Второй и четвертый тоже. Достаточно решить, откуда брать исходные данные (с клавиатуры или из файла) и куда выводить результаты (на экран или в файл).
Но третий блок требует детальной проработки. Необходимо решить главную проблему: как этот отсчет организовать?
После долгих поисков возникла идея использования двух вспомогательных файлов, в которых будут храниться промежуточные состояния отсчета. Один из этих файлов будет хранить текущее состояние расстановки, а в другом будет формироваться ее следующее состояние. В программе эти файлы связаны с файловыми переменными h и l. Этот процесс можно описать словесно:
Разработанный алгоритм желательно проверить в “ручном режиме” хотя бы для одного частного случая. Предположим, что по кругу стоят 5 человек и из круга выходить каждый третий. Продемонстрируем процесс решения с помощью таблицы состояния файлов h и l после выполнения пунктов 2 - 7:
Запомним, что при таких исходных данных последним из круга выйдет участник под № 4. Это нам пригодится при тестировании программы.
Теперь остается техническая сторона решения задачи. То есть, требуется написать программу.
Приведем текст программы с пояснениями
Описание переменных: f – входной файл, g – выходной файл, файлы h и l – вспомогательные. Остальные переменные необходимы для организации считывания, подсчета и сравнения.
Перед испытанием программы ее следует сохранить (на всякий случай). В рабочей папке надо создать входящий файл с именем in.txt. Исходящий файл out.txt создавать не обязательно. Он будет создан в процессе исполнения программы. Чтобы убедиться в том, что программа работает правильно, ее следует хорошенько “погонять”. Для ускорения процесса лучше создать компилированный файл программы.
* Свидетельство о публикации выдается БЕСПЛАТНО, СРАЗУ же после добавления Вами Вашей работы на сайт