Существуют различные подходы и технологии разработки алгоритмов и программ. Хотя программирование в значительной степени искусство, тем не менее, можно систематизировать и обобщить накопленный профессиональный опыт. Проектирование и разработку программ целесообразно разбить на ряд последовательных этапов:
1. постановка задачи;
2. проектирование программы
3. построение модели
4. разработка алгоритма;
5. написание программы;
6. отладка программы;
7. тестирование программы;
Кратко остановимся на каждом из этих этапов.
Чтобы приступить к решению задачи необходимо точно ее сформулировать. В первую очередь, это означает определение исходных и выходных данных, т.е. ответы на вопросы: а) что дано; б) что нужно найти. Дальнейшая детализация постановки задачи представляет собой ответы на серию вопросов такого рода:
· как определить решение;
· каких данных не хватает и все ли они нужны;
· какие сделаны допущения и т. п.
Все про ПАРАЛЛЕЛОГРАММ за 8 минут: Свойства, Признаки, Формулы Периметра и Площади // Геометрия
Таким образом, кратко можно сказать, что на этапе постановки задачи необходимо:
· описание исходных данных и результата;
· описание поведения программы в особых случаях (если таковые есть).
В ходе этой работы выявляются свойства, которыми должна обладать система в конечном виде (замысел), описываются функции системы, характеристики интерфейса.
Проектирование программы. Сначала производится проектирование архитектуры программной системы. Следующим шагом является детальное проектирование. На этом этапе происходит процедурное описание программы, выбор и оценка алгоритма для реализации каждого модуля. Входной информацией для проектирования являются требования и спецификации системы.
Для проектирования программ существуют различные подходы и методы. Современный подход к проектированию основан на декомпозиции, которая, в свою очередь, основана на использовании абстракции. Целью при декомпозиции является создание модулей, которые взаимодействуют друг с другом по определенным и простым правилам. Декомпозиция используется для разбиения программы на компоненты, которые затем могут быть объединены.
Антивирусная программа A vast v. Home edition 4.7.
Антивирус от чешских разработчиков является младшим продуктом в целой линейке. Avast Home Edition может проверять файлы, оперативную память, E-mail, находить макровирусы. Кроме стандартного резидентного модуля, имеются также отдельные модули для защиты почты, интернет-пейджеров.
Одним из преимуществ программы является Генератор Восстановительной Базы Данных (сокращенно VRDB). Эта эксклюзивная разработка компании отвечает за восстановление файлов после удаления вируса, так как иногда после этой операции некоторые байты могут остаться измененными или вообще пропасть. Программа находит для каждого файла уникальный кэш, хранит его в своей защищенной папке и при необходимости вычисляет версию файла до изменений. Единственный минус то, что создание базы КЭШей всех файлов – длительная процедура, поэтому сразу после инсталляции рекомендуется в настройках указать создание VRDB (Генератор Восстановительной Базы Данных) во время бездействия компьютера.
Урок 1. Понятие алгоритма. Свойства и виды
Еще одной очень хорошей возможностью является проверка компьютера при загрузке перед стартом системы. Таким образом, Avast! Home Edition имеет доступ к файлам, обычно заблокированным ОС. (Бесплатная версия) русифицирована и имеет удобный интерфейс, содержит резидентный монитор, сканер, средства автоматического обновление баз и т.д.
Программный продукт, его характеристики и задачи.
Все программы по характеру использования и категориям пользователей можно разделить на два класса (рис.8.4) — утилитарные программы и программные продукты (изделия).
Утилитарные программы («программы для себя») предназначены для удовлетворения нужд их разработчиков. Чаще всего утилитарные программы исполняют роль сервиса в технологии обработки данных либо являются программами решения функциональных задач, не предназначенных для широкого распространения.
Программные продукты (изделия) предназначены для удовлетворения потребностей пользователей, широкого распространения и продажи.
Программный продукт — комплекс взаимосвязанных программ для решения определенной проблемы (задачи) массового спроса, подготовленный к реализации как любой вид промышленной продукции.
Программные продукты могут создаваться как:
· индивидуальная разработка под заказ;
· разработка для массового распространения среди пользователей.
При индивидуальной разработке фирма-разработчик создает оригинальный программный продукт, учитывающий специфику обработки данных для конкретного заказчика.
При разработке для массового распространения фирма-разработчик, с одной стороны, должна обеспечить универсальность выполняемых функций обработки данных, с другой стороны, гибкость и настраиваемость программного продукта на условия конкретного применения. Отличительной особенностью программных продуктов должна быть их системность — функциональная полнота и законченность реализуемых функций обработки, которые применяются в совокупности.
Как правило, программные продукты требуют сопровождения, которое осуществляется специализированными фирмами — распространителями программ (дистрибьютерами), реже — фирмами-разработчиками. Сопровождение программ массового применения сопряжено с большими трудозатратами — исправление обнаруженных ошибок, создание новых версий программ и т.п.
Сопровождение программного продукта — поддержка работоспособности программного продукта, переход на его новые версии, внесение изменений, исправление обнаруженных ошибок и т.п.
Основными характеристиками программ являются:
1. алгоритмическая сложность (логика алгоритмов обработки информации);
2. состав и глубина проработки реализованных функций обработки;
3. полнота и системность функций обработки;
4. объем файлов программ;
5. требования к операционной системе и техническим средствам обработки со стороны
6. программного средства;
7. объем дисковой памяти;
8. размер оперативной памяти для запуска программ;
9. тип процессора;
10. версия операционной системы;
11. наличие вычислительной сети и др.
Дата добавления: 2019-09-13 ; просмотров: 298 ; Мы поможем в написании вашей работы!
Источник: studopedia.net
Понятие, определение и свойства алгоритма
Для составления программы, предназначенной для решения на ЭВМ какой-либо задачи, требуется составление алгоритма ее решения. Алгоритм— это точное предписание, которое определяет процесс, ведущий от исходных данных к требуемому конечному результату. Алгоритмами, например, являются правила сложения, умножения, решения алгебраических уравнений, умножения матриц и т.п. Слово алгоритм происходит от algoritmi, являющегося латинской транслитерацией арабского имени хорезмийского математика IX векааль-Хорезми. Благодаря латинскому переводу трактата аль-Хорезми европейцы в XII веке познакомились с позиционной системой счисления, и в средневековой Европе алгоритмом называлась десятичная позиционная система счисления и правила счета в ней.
Применительно к ЭВМ алгоритм определяет вычислительный процесс, начинающийся с обработки некоторой совокупности возможных исходных данных и направленный на получение определенных этими исходными данными результатов. Термин вычислительный процесс распространяется и на обработку других видов информации, например, символьной, графической или звуковой.
Если вычислительный процесс заканчивается получением результатов, то говорят, что соответствующий алгоритм применим к рассматриваемой совокупности исходных данных. В противном случае говорят, что алгоритм неприменим к совокупности исходных данных. Любой применимый алгоритм обладает следующими основными свойствами:
- результативностью;
- определенностью;
- массовостью.
Результативностьозначает возможность получения результата после выполнения конечного количества операций.
Определенность состоит в совпадении получаемых результатов независимо от пользователя и применяемых технических средств.
Массовость заключается в возможности применения алгоритма к целому классу однотипных задач, различающихся конкретными значениями исходных данных.
Для задания алгоритма необходимо описать следующие его элементы:
— набор объектов, составляющих совокупность возможных исходных данных, промежуточных и конечных результатов;
— правило непосредственной переработки информации (описание последовательности действий);
— правило извлечения результатов.
Алгоритм всегда рассчитан на конкретного исполнителя. В нашем случае таким исполнителем является ЭВМ. Для обеспечения возможности реализации на ЭВМ алгоритм должен быть описан на языке, понятном компьютеру, то есть на языке программирования. Таким образом, можно дать следующее определение программы.
Программа для ЭВМпредставляет собой описание алгоритма и данных на некотором языке программирования, предназначенное для последующего автоматического выполнения.
Способы записи алгоритмов
К основным способам записи алгоритмов можно отнести следующие:
— структурный или блок-схемный;
— с помощью граф-схем;
— с помощью сетей Петри.
Перед составлением программ чаще всего используются словесно-формульный и блок-схемный способы. Иногда перед составлением программ на низкоуровневых языках программирования типа языка Ассемблера алгоритм программы записывают, пользуясь конструкциями некоторого высокоуровнего языка программирования. Удобно использовать программное описание алгоритмов функционирования сложных программных систем. Так, для описания принципов функционирования ОС использовался Алголоподобный высокоуровневый язык программирования.
При словесно-формульном способе алгоритм записывается в виде текста с формулами по пунктам, определяющим последовательность действий.
Пусть, например, необходимо найти значение следующего выражения:
Словесно-формульным способом алгоритм решения этой задачи может быть записан в следующем виде:
1. Ввести значения а и х.
2. Сложить х и 6.
3. Умножить a на 2.
4. Вычесть из 2а сумму (х+6).
5. Вывести у как результат вычисления выражения.
При блок-схемном описании алгоритм изображается геометрическими фигурами (блоками), связанными по управлению линиями (направлениями потока) со стрелками. В блоках записывается последовательность действий.
Презентация на тему Понятие программы
целях реализации определенного алгоритма. (ГОСТ 19781—90)
Программа – это представленная в объективной форме совокупность данных и команд, предназначенных для функционирования ЭВМ и других компьютерных устройств с целью получения определённого результата, включая подготовительные материалы, полученные в ходе разработки программы для ЭВМ, и порождаемые ею аудиовизуальные отображения. (ГК РФ)
Слайд 5Понятие программы
Программа – это размещённые в оперативной
памяти компьютера данные и машинные инструкции, исполняемые
процессором для достижения некоторой цели. (Википедия)
Слайд 6Понятие программы
Слайд 7Этапы создания программ
Накопление требований, работа с заказчиком
Проектирование
– процедурная декомпозиция, ОО, др.
Внутреннее и внешнее
документирование
Разработка
Написание исходного кода
Компиляция исходного кода
Сборка
Отладка
Оптимизация
Тестирование
Сдача в эксплуатацию (релиз)
Сопровождение
Слайд 8Каскадный подход
Слайд 9Инкрементальный подход
Слайд 10Эволюционный подход
Слайд 11Этапы создания программ
Слайд 12Написание исходного кода
Выбор языка программирования
Следование стандарту языка
Следование
системе правил
Именование типов, переменных, констант, функций, файлов
Деление
кода на функции, файлы, компоненты
Форматирование и комментирование кода
Минимальное дублирование кода
Похожим действия — похожая запись («устойчивые обороты»)
Рефакторинг кода (refactoring)
Ревью кода (review)
if (1==x) x=0; else x=1;
x=1-x;
int T[2] = ; x = T[x];
x = x?0:1;
x = !x;
if (1==x) x=0;
else if (0==x) x=1;
else assert(x==0||x==1);
Слайд 13Компиляция исходного кода
Файлы с исходным кодом называются
единицами компиляции
Результатом компиляции является файл с объектным
кодом
Если изменения в файле Ф1 могут нарушить логику работы кода в файле Ф2, то Ф2 зависит от Ф1
Системы компиляции умеют автоматически учитывать некоторые зависимости между файлами
GNU make, MS nmake, scons, …
За учёт всех зависимостей отвечает программист
Слайд 14Компиляция исходного кода
worker.h
void do_some_work();
worker.c
#include «worker.h»
void do_some_work()
main.c
#include «worker.h»
int main()
do_some_work();
return
0;
>
Изменения в worker.c требуют изменений в worker.h и перекомпиляции worker.c и main.c
Для чего нужна строка
#include «worker.h» в файле worker.c?
Слайд 15Сборка (линковка)
Различают три вида сборки
Сборка статической библиотеки
Сборка
динамической библиотеки
Сборка исполняемого файла
Слайд 16Сборка статической библиотеки
Вход: объектные файлы
Выход: архив, содержащий
эти файлы
Статическая библиотека – средство группирования логически
связанных объектных файлов
Слайд 17Сборка динамической библиотеки
Вход: объектные файлы, статические библиотеки,
ранее созданные динамические библиотеки
Выход: файл со служебной
информацией для ОС и машинными инструкциями, годными для исполнения процессором
Динамическая библиотека – средство построения программ в процессе их работы
Слайд 18Сборка исполняемого файла
Вход: объектные файлы, статические библиотеки,
динамические библиотеки
Выход: файл со служебной информацией для
ОС, машинными инструкциями, годными для исполнения процессором, и «точкой входа»
Слайд 19Компиляция, сборка, загрузка в память для исполнения
компилятор
Л – линкер, редактор связей
З – загрузчик
Свой исходный код
Чужой исходный код
(заголовочные файлы библиотек и т.п.)
Слайд 20Сборка (линковка)
c:Usersespetrov>cl –c worker.c
c:Usersespetrov>dumpbin /all /disasm worker.obj
Слайд 21Сборка (линковка)
c:Usersespetrov>cl –c main.c
c:Usersespetrov>dumpbin /all /disasm main.obj
Слайд 22Сборка (линковка)
c:Usersespetrov>link main.obj worker.obj /nodefaultlib /entry:main -out:main.exe
c:Usersespetrov>dumpbin/all
/disasm main.exe
Слайд 23Отладка
Достижение работоспособности программы, устранение грубых ошибок
Методы отладки
Имитация
пошагового исполнения с помощью «карандаша и бумаги»
для простых случаев
Трассировка работы программы с помощью отладочной печати
Проверка необходимых условий корректности в ходе работы программы
Пошаговое исполнение программы с помощью отладчика
Слайд 24Оптимизация
Улучшение количественных характеристик программы
Время компиляции
Время загрузки
Время работы
Размер
используемой памяти (данных на диске)
Размер исходного кода
Размер
исполняемого кода
Компилятор и линкер умеют автоматически делать некоторые преобразования программ, не зависящие от смысла (семантики) программы
Сохраняют корректность программы
Могут менять некорректную программу неожиданным образом
Могут ухудшать количественные характеристики программы
За результат оптимизации отвечает программист
Понимая семантику программы, программист имеет возможность добиться большего эффекта, чем компилятор и линкер
Слайд 25Заключение
Информация об этом курсе
Понятие программы
Этапы создания программ
Накопление
требований, проектирование, документирование, сдача в эксплуатацию, сопровождение
Обзор
Разработка
Написание
исходного кода
Компиляция исходного кода
Сборка
Отладка
Оптимизация
Тестирование
Источник: thepresentation.ru