Методы разработки алгоритмов и программ
Основные принципы структурированного проектирования следующие:
Ø Нисходящее программирование основано на иерархическом подходе к решению задач и используется на начальной стадии процесса разработки решения задачи.
Ø Модульное программирование предполагает независимое программирование каждого модуля, начиная с верхнего уровня иерархии.
Ø Структурированное программирование – процесс программирования на алгоритмическом языке с использованием определенных конструкций.
Ø Структурный контроль используется для решения сложных задач, включающих сотни модулей.
Основы алгоритмизации
Алгоритм — это предписание некоторому исполнителю выполнить конечную последовательность действий, приводящую к некоторому результату. Алгоритм может быть записан с помощью блок-схемы, текстовым предписанием, с помощью рисунков, таблично или на специальном алгоритмическом языке. Наиболее популярны блок-схемы и предписания. Преимущество блок-схем — в наглядности алгоритма.
Основными свойствами алгоритма являются:
· дискретность — представление алгоритма в виде последовательности шагов;
· массовость — применимость алгоритма к некоторому множеству исходных данных;
· определенность — за конечное число шагов либо должен быть получен результат, либо доказано его отсутствие;
· однозначность — при повторном применении алгоритма к тем же исходным данным должен быть получен тот же результат.
Способы представления алгоритмов
ü Словесный способ. Описание алгоритма состоит из словесного перечня действий.
ü Формульно-словесный способ основан на задании инструкций о выполнении конкретных действий в четкой последовательности, в сочетании со словесными пояснениями.
ü Табличный способ. Алгоритм задается в виде таблиц. Часто используется в экономических расчетах.
ü Операторный способ. Вычислительный процесс изображается в виде последовательности символов.
ü Графический способ (блок-схема). Каждый этап отображается в виде блоков, форма которых зависит от выполняемой операции.
Типы алгоритмов.
Различают три основных типа алгоритмов: линейный, ветвящийся и циклический. Их названия определяются входящими в них типовыми алгоритмическими конструкциями, которые также называют базовыми структурами. К основным базовым структурам относятся: следование (линейный алгоритм), ветвления (ветвящийся алгоритм) и цикл (циклический алгоритм).
o Линейный алгоритм: не имеют ветвлений и циклов. В блок-схемах таких алгоритмов отсутствует блок условия и обратная связь, позволяющие разбивать потоки данных и многократно выполнять некоторые действия. Работает операция следующим образом: сначала вычисляется выражение, затем присваивается результат переменной, имя которой записано в левой части.
o Разветвляющийся алгоритм: алгоритм, при котором выполнение последовательных действий рассчитывается в зависимости от заданных условий. В них должны присутствовать 1 или неск. логических операторов и несколько ветвей решений.
o Циклический алгоритм: это алгоритмы, отдельные свойства в которых много кратно повторяются. Цикл – совокупность повторяющихся действий алгоритма. Состоит из подготовки цикла; тела цикла; условия продолжения цикла.
Классификация языков программирования.
Классы машинно-ориентированных языков:
─ Машинный язык – командный язык, с помощью которого сообщается о местонахождениях операторов и типе выполняемой операции
─ Языки символического кодирования (ЯСК) – командные языки, в которых коды операций и адреса в машинных командах заменены на символы, форма написания которых помогает программисту легче запоминать смысловое содержание операции
─ Автокоды – языки, включающие в себя возможности ЯСК посредством расширенного введения макрокоманд
─ Макрос – язык, являющийся средством для замены последовательности символов, описывающих выполнение требуемых действий на более сжатую форму. Предназначен для сокращения записи исходящей программы
─ Ассемблеры – развитые автокоды, символическое представление машинного языка
Машинно-независимые языки – средство описания алгоритмов решения задач и информации, подлежащей обработке. По-другому называются высокоуровневыми языками программирования. Делятся на:
· Проблемно-ориентированные языки: ориентированы на решение определенных проблем, обеспечивает программиста средствами, позволяющими коротко и четко формулировать задачу и получать результаты в требуемой форме (Simula, Фортран)
· Универсальные языки: были созданы для широкого круга задач: коммерческих, научных и др. (Алгол-68)
· Диалоговые языки – программные средства, обеспечивающие оперативное взаимодействие человека с компьютером (Бейсик, Си)
· Непроцедурные языки: составляют группу языков, описывающих организацию данных, обрабатываемых по фиксированным алгоритмам, и языков связи с ОС