Прежде чем понять задачу, следует её точно сформулировать. Это условие само по себе не является достаточным для понимания задачи, но оно абсолютно необходимо. Для плохо сформулированных задач полезны следующие вопросы:
· Понятна ли терминология, используемая в предварительной формулировке?
· Что дано? Что нужно найти? В чём состоит условие?
· Каких данных не хватает? Все ли они нужны?
· Являются ли какие-то имеющиеся данные бесполезными?
· Какие сделаны допущения?
Возможны и другие вопросы в зависимости от конкретной задачи. Часто после получения полных или частичных ответов на некоторые из вопросов их приходится ставить повторно.
Построение модели
Задача чётко поставлена, теперь нужно сформулировать для неё математическую модель. Это очень важный шаг в процессе решения, и его надо хорошо обдумать. Выбор модели существенно влияет на остальные этапы процесса решения.
Ясно, что невозможно предложить набор правил, автоматизирующих стадию моделирования. Большинство задач должно рассматриваться индивидуально. Тем не менее существует несколько полезных руководящих принципов. Выбор модели – в большей степени дело искусства, чем науки, и, вероятно, эта тенденция сохранится. Изучение удачных моделей – это наилучший способ приобрести опыт в моделировании.
Лекция 2 часть 1 (Технология разработки программ. Алгоритмизация)
Приступая к разработке модели, следует задать, по крайней мере, два основных вопроса:
· Какие математические структуры больше всего подходят для задачи?
· Существует ли решение аналогичной задачи?
Второй вопрос, возможно, самый полезный во всей математике. В контексте моделирования он часто даёт ответ на первый вопрос. Действительно, большинство решаемых в математике задач, как правило, являются модификациями уже решённых. Поскольку большинство из нас не обладает талантами великих математиков, то для продвижения вперёд приходится руководствоваться накопленным опытом.
Сначала нужно рассмотреть первый вопрос. Необходимо описать математически, что знаем, и что хотим найти. На выбор соответствующей структуры оказывают влияние следующие факторы: 1) ограниченность наших знаний относительно небольшим количеством структур; 2) удобство представления; 3) простота вычислений; 4) полезность различных операций, связанных с рассматриваемой структурой или структурами.
Сделав пробный выбор математической структуры, задачу следует переформулировать в терминах соответствующих математических объектов. Это будет одна из возможных моделей, если можно утвердительно ответить на такие вопросы:
· Вся ли важная информация задачи хорошо описана математическими объектами?
· Существует ли математическая величина, ассоциируемая с искомым результатом?
· Выявлены ли какие-нибудь полезные отношения между объектами модели?
· Можно ли работать с моделью? Удобно ли с ней работать?
Разработка алгоритма
Как только задача чётко поставлена и для неё построена модель, следует приступить к разработке алгоритма её решения. Выбор метода разработки, зачастую сильно зависящий от выбора моделей, может в значительной степени повлиять на эффективность алгоритма решения. Два разных алгоритма могут быть правильными, но очень сильно отличаться по эффективности.
С чего начать разработку проекта? — Вопросы и Ответы #10
Многие программисты затрачивают относительно небольшое время на стадию разработки алгоритма при создании программ – проявляется желание как можно быстрее начать писать саму программу. Однако этому побуждению не стоит поддаваться! На стадии разработки требуется тщательное обдумывание; нужно также уделить внимание двум предшествующим и первым трём следующим за стадией разработки этапам. Как и следует ожидать, все восемь перечисленных этапов являются взаимосвязанными. В особенности первые три сильно влияют на последующие, а шестой и седьмой этапы обеспечивают ценную обратную связь, которая может заставить нас пересмотреть некоторые из предшествующих этапов.
Правильность алгоритма
Доказательство правильности алгоритма – это один из наиболее трудных, а иногда и особенно утомительных этапов создания алгоритма.
Вероятно, наиболее распространенная процедура доказательства правильности программы – это прогон её на разных тестах. Если выданные программой ответы могут быть подтверждены известными или вычисленными вручную данными, возникает искушение сделать вывод, что программа «работает». Однако этот метод редко исключает все сомнения; может существовать случай, когда программа не сработает.
Можно предложить следующую методику доказательства правильности алгоритма [2]. Предположим, что алгоритм описан в виде последовательности шагов, например, от шага 0 до шага m. Постараемся предложить некое обоснование правомерности для каждого шага. В частности, может потребоваться лемма об условиях, действующих до и после пройденного шага.
Затем постараемся предложить доказательство конечности алгоритма, при этом будут проверены все подходящие входные данные и получены все подходящие выходные данные. Подобный метод доказательства известен как «доказательство исчерпыванием»; это самый грубый из всех методов доказательства.
Подчеркнём тот факт, что правильность алгоритма ещё ничего не говорит о его эффективности. Исчерпывающие алгоритмы редко бывают хорошими во всех отношениях.
Реализация алгоритма
Как только алгоритм выражен, допустим, в виде последовательности шагов и есть уверенность, что он правильный, настаёт черёд реализации алгоритма, т. е. написание программы для ЭВМ.
Этот существенный шаг может быть довольно трудным. Во-первых, трудность заключается в том, что очень часто отдельно взятый шаг алгоритма может быть выражен в форме, которую трудно перевести непосредственно в конструкции языка программирования (например, для реализации данного шага потребуется целая подпрограмма). Во-вторых, реализация может оказаться трудным процессом потому, что перед тем, как начать писать программу, нужно построить целую систему структур данных для представления важных аспектов используемой модели. Чтобы сделать это, необходимо ответить, например, на такие вопросы:
· Каковы основные переменные? Каких они типов?
· Сколько нужно массивов и какой размерности?
· Имеет ли смысл пользоваться связанными списками?
· Какие нужны подпрограммы (возможно, уже записанные в памяти)?
· Каким языком программирования пользоваться?
Конкретная реализация может существенно влиять на требования к памяти и на скорость алгоритма.
Другой аспект построения программной реализации – это программирование “сверху–вниз”, которое состоит в преобразовании алгоритма в такую последовательность всё более конкретизированных алгоритмов, что окончательный вариант представляет собой программу для ЭВМ.
Сделаем одно важное замечание. Одно дело – доказать правильность конкретного алгоритма, описанного в словесной форме, другое – доказать, что данная программа, предположительно являющаяся реализацией этого алгоритма, также правильна. Таким образом, необходимо очень тщательно следить, чтобы процесс преобразования правильного алгоритма (в словесной форме) в машинную программу «заслуживал доверия».
Источник: poisk-ru.ru
Этапы разработки программы
Алгоритмизация и программирование — Содержание Выражение «написать программу» отражает только один из этапов создания компьютерной программы, когда разработчик программы (программист) действительно пишет команды (инструкции) на бумаге или при помощи текстового редактора.
Программирование — это процесс создания (разработки) программы, который может быть представлен последовательностью следующих шагов:
1. Спецификация (определение, формулирование требований к программе).
2. Разработка алгоритма.
3. Кодирование (запись алгоритма на языке программирования).
4. Отладка.
5. Тестирование.
6. Создание справочной системы.
7. Создание установочного диска (CD-ROM).
Спецификация
Спецификация, определение требований к программе — один из важнейших этапов, на котором подробно описывается исходная информация, формулируются требования к результату, поведение программы в особых случаях (например, при вводе неверных данных), разрабатываются диалоговые окна, обеспечивающие взаимодействие пользователя и программы.
Разработка алгоритма
На этапе разработки алгоритма необходимо определить последовательность действий, которые надо выполнить для получения результата. Если задача может быть решена несколькими способами и, следовательно, возможны различные варианты алгоритма решения, то программист, используя некоторый критерий, например, скорость решения алгоритма, выбирает наиболее подходящее решение. Результатом этапа разработки алгоритма является подробное словесное описание алгоритма или его блок-схема.
Кодирование
После того как определены требования к программе и составлен алгоритм решения, алгоритм записывается на выбранном языке программирования. В результате получается исходная программа.
Отладка
Отладка — это процесс поиска и устранения ошибок. Ошибки в программе разделяют на две группы: синтаксические (ошибки в тексте) и алгоритмические. Синтаксические ошибки — наиболее легко устраняемые. Алгоритмические ошибки обнаружить труднее. Этап отладки можно считать законченным, если программа правильно работает на одном-двух наборах входных данных.
Тестирование
Этап тестирования особенно важен, если вы предполагаете, что вашей программой будут пользоваться другие. На этом этапе следует проверить, как ведет себя программа на как можно большем количестве входных наборов данных, в том числе и на заведомо неверных.
Создание справочной системы
Если разработчик предполагает, что программой будут пользоваться другие, то он обязательно должен создать справочную систему и обеспечить пользователю удобный доступ к справочной информации во время работы с программой. В современных программах справочная информация представляется в форме СНМ- или HLP-файлов. Помимо справочной информации, доступ к которой осуществляется из программы во время ее работы, в состав справочной системы включают инструкцию по установке (инсталляции) программы, которую оформляют в виде Readme-файла в одном из форматов: TXT, DOC или НТМ.
Создание установочного диска
Установочный диск или CD-ROM создаются для того, чтобы пользователь мог самостоятельно, без помощи разработчика, установить программу на свой компьютер. Обычно помимо самой программы на установочном диске находятся файлы справочной информации и инструкция по установке программы (Readme-файл). Следует понимать, что современные программы, в том числе разработанные в Delphi, в большинстве случаев (за исключением самых простых программ) не могут быть установлены на компьютер пользователя путем простого копирования, так как для своей работы требуют специальных библиотек и компонентов, которых может и не быть у конкретного пользователя. Поэтому установку программы на компьютер пользователя должна выполнять специальная программа, которая помещается на установочный диск. Как правило, установочная программа создает отдельную папку для устанавливаемой программы, копирует в нее необходимые файлы и, если надо, выполняет настройку операционной системы путем внесения дополнений и изменений в реестр.
Источник: cyberfac.ru
Презентация к уроку «Программа. Алгоритм»
Скачать
презентацию
Конкурсная работа
Урок 2 (2 часа)
Типы алгоритмов. Трансляторы
Отладка и тестирование программы
Тема : Типы алгоритмов. Трансляторы. Отладка и тестирование программы
Обучающие цели:
определить уровень усвоения понятий алгоритма, его типов и форм;
продолжить формирование знаний об этапах разработки программы;
сформировать понятия программа, программирование;
классифицировать и охарактеризовать языки программирования;
добиться понимания назначения программ трансляторов, интерпретаторов, компиляторов;
познакомить с тестированием и отладкой программы как этапами анализа результата.
Тип урока: урок изучения нового материала
ФОПД: фронтальная
объяснительно-иллюстративный, репродуктивный, частично-поисковый.
(по характеру познавательной деятельности)
Усвоение новых знаний и способов действий.
Первичная проверка понимания.
Этап коррекции знаний и способов действий.
Информация о домашнем задании.
Подведение итогов. Рефлексия
Конспект урока
Программа. Программирование.
Трансляторы. Отладка и тестирование программы
Организационный момент
Приветствие, отметить отсутствующих.
Актуализация знаний
Дайте определение понятию «Исполнитель».
На какие виды делятся исполнители? Приведите по 3 примера по каждому виду.
Перечислите способы записи алгоритма.
Каким СКИ обладают следующие исполнители:
- студент; бухгалтер.
Усвоение новых знаний и способов действий
Типы алгоритмов
Известны три типа алгоритмов – линейные, разветвляющиеся, циклические.
Линейный тип алгоритмов
Алгоритмы, в которых команды выполняются последовательно друг за другом, независимо от каких-либо условий, называются алгоритмами линейного типа.
ЗДано: R — радиус круга.
Найти: S — площадь круга.
Решение: S=3,14 R2
Словесная форма записи алгоритма
Прочесть значение R.
Умножить значение R на 3,14.
Умножить результат второго действия на значение R.
Записать полученный результат как значение S.
Разветвляющийся тип алгоритмов
Решение задач не всегда можно представить в виде линейного алгоритма.
Алгоритмы, в которых требуется организовать выбор последовательности действий в зависимости от каких-либо условий, называют алгоритмами разветвляющегося типа.
ПЗадача: вычислить Дано: х – значение аргумента.
Найти: у – значение функции.
Словесная форма записи алгоритма
Прочесть значение х
Если х>0, то у: = х иначе у: = -х
Записать значение у
Выделяют полную и неполную условную конструкцию.
Циклический тип алгоритмов
При составлении алгоритмов решения достаточно большого круга задач нередко возникает потребность в неоднократном повторении одних и тех же команд.
Алгоритм, составленный с использованием многократных повторений одних и тех же действий (циклов), называется алгоритмом циклического типа.
Однако, «неоднократно» не значит «до бесконечности». Организация циклов, никогда не приводящая к остановке в выполнении алгоритма (так называемое зацикливание), является нарушением требования его результативности.
Для автоматизации процесса решения задачи алгоритм должен быть записан на компьютере. Команды, предназначенные для ЭВМ необходимо записывать в понятной ей форме. С этой целью применяются языки программирования – искусственные языки, алфавит, словарный запас и структура которых удобны человеку и понятны компьютеру.
Программа – это алгоритм (набор команд), записанный на языке программирования.
Программа представляет собой набор единиц информации – байтов.
Она выполняется процессором под управлением операционной системы. Для того, чтобы процессор мог выполнить программу, эта программа и данные, с которыми она работает, должны быть загружены в оперативную память.
Язык программирования – это фиксированная система обозначений и правил для описания алгоритмов и структур данных.
Программирование – это процесс составления алгоритма решения поставленной задачи на языке программирования, ее тестирование (проверка соответствия поставленной задаче) и отладка (исправление ошибок).
Этапы разработки программы
Написание исходного текста программы на языке программирования.
Так как текст программы, записанный на языке программирования, не понятен процессору, который должен выполнить программу, то требуется перевести текст на машинный язык.
Перевод программы с языка программирования на язык машинных кодов называется трансляцией. Выполняется он специальными программами – трансляторами.
Все трансляторы разделяют на три вида: интерпретатор, компилятор, ассемблер.
Компиляция программы (англ. Compiling) – это процесс получения из исходного текста программы первичного машинного кода, с помощью которого программа может быть выполнена операционной системой.
Данную задачу выполняют специальные программы – компиляторы – именно они определяют, под какой именно ОС должна запускаться программа. Компилятор преобразует всю программу.
Если процесс преобразования программы в машинный код осуществляется покомандно, то он называется интерпретацией. За это отвечают интерпретаторы.
Для перевода языков низкого уровня в машинные коды существуют ассемблеры.
3. Анализ результата
Состоит в тестировании и отладке программы.
Отладка – это процесс выявления и исправления ошибок.
Виды ошибок, возникающих в процессе разработки программы:
Синтаксические – связанные с неправильным использованием языка программирования. Например, вместо команды языка Writeln использована несуществующая команда Writeln. Данные ошибки могут возникать только на этапе компиляции, компилятором сразу же выдается сообщение о них (выделяется цветом место ошибки), соответственно, такие ошибки просто исправляются и больше не появляются, если программист не предпринимает попыток изменения исходной программы и дальнейшей перекомпиляции.
Логические – связанные с неправильной разработкой или реализацией алгоритма. Данные ошибки выявляются в процессе тестирования программы.
Тестирование – это установление соответствия полученной программы поставленной задаче. Процесс тестирования начинается с проверки возможности ввода всех необходимых исходных данных, их корректной обработки и правильного хранения. Далее проверяется правильность работы алгоритма с помощью тестовых примеров.
В случае обнаружения логических ошибок, необходимо вернуться к этапу реализации алгоритма и пересмотреть разработку алгоритма с учетом найденных ошибок. После исправления логических ошибок начать тестирование заново.
Динамические – связанные с некорректным использованием синтаксически верных инструкций языка программирования. Например, программа в начале своей работы обращается к операционной системе с требованием выделить ей для работы некоторое количество оперативной памяти, а после окончания своей работы не возвращает выделенную память обратно операционной системе. В таких случаях через несколько запусков некорректно написанной программы (конкретное число определяется свободными ресурсами ПК и объемом памяти, не освобожденным программой), работа всей системы в целом становится невозможной, что приводит к потере информации в других приложениях. Такие ошибки трудны в обнаружении и устранении. Они обнаруживаются на этапе выполнения программы и требуют возвращения к этапу реализации алгоритма.
Итак, обнаружение синтаксических ошибок осуществляется на этапе компиляции программы компилятором. А за обнаружение логических и динамических ошибок отвечает программа, контролирующая процесс выполнения программы, которая называется отладчик.
Первичное понимание и коррекция знаний
Фронтальная беседа по вопросам:
1. назовите типы алгоритмов
2. приведите примеры алгоритмов
3. Что такое программа
4. Что такое программирование
5. Перечислите этапы разработки программ
6. Чем интерпретатор отличается от компилятора.
При необходимости (неправильные ответы), разъяснять ошибки и исправлять их.
Домашнее задание
Подготовиться к проверочной работе по теме «Программа. Программирование. Трансляторы. Отладка и тестирование программы». А для этого необходимо выучить, то что мы изучали.
Подведение итогов. Рефлексия
1. Спросить остались ли у кого вопросы. (по возможности ответить на них)
2. Попросить на доске нарисовать смайл, который отражает их эмоциональное состояние на конец урока.
3. Похвалить ребят за продуктивный урок.
Источник: xn--j1ahfl.xn--p1ai