СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ ЭВМ.
ЛЕКЦИЯ 10
ПРОЦЕСС РАЗРАБОТКИ НОВЫХ ПРОГРАММ ДЛЯ ЭВМ ВКЛЮЧАЕТ В СЕБЯ:
1) ПОСТАНОВКУ ЗАДАЧИ
2) СОЗДАНИЕИ АЛГОРИТМА ЕЕ РЕШЕНИЯ
3) РЕАЛИЗАЦИЮ АЛГОРИТМА НА ЭВМ В ВИДЕ ПРОГРАММЫ
4) ОТЛАДКУ ПРОГРАММЫ
Рассмотрим поочередно все эти этапы.
1) ПОСТАНОВКА ЗАДАЧИ СОСТОИТ В ЧЕТКОМ ФОРМУЛИРОВАНИИ ЦЕЛЕЙ
РАБОТЫ. Необходимо четко определить, что является исходными данными, что
требуется получить в качестве результата, каким должен быть интерфейс программы (т.е.
каким путем будет осуществляться диалог с пользователем) и т.д. Постановка задачи
является чрезвычайно важным этапом работы. Многие специалисты считают, что
правильная постановка задачи это уже полшага в направлении ее решения.
2) АЛГОРИТМ- ОПИСАНИЕ ПОСЛЕДОВАТЕЛЬНОСТИ ОПЕРАЦИЙ, КОТОРЫЕ
НУЖНО ВЫПОЛНИТЬ ДЛЯ РЕШЕНИЯ ЗАДАЧИ. Слово "алгоритм" происходит от
имени арабского математика Мухаммеда бен Мусы аль-Хорезми, предложившего в IX
веке первые алгоритмы решения арифметических задач.
ГРАФИЧЕСКАЯ ИНТЕРПРЕТАЦИЯ АЛГОРИТМА НАЗЫВАЕТСЯ БЛОК-СХЕМОЙ. В
качестве примера рассмотрим блок-схему простого и хорошо всем известного алгоритма
перехода улицы через перекресток, оборудованный светофором.
Разработку алгоритма можно сравнить с прокладыванием трамвайных путей, при котором
нужно предусмотреть систему стрелок, разворотов таким образом, чтобы при любых
условиях трамваи могли по проложенным путям дойти от исходного пункта маршрута к
конечному.
ТРЕБОВАНИЯ К АГОРИТМАМ:
А) ОТСУТСТВИЕ ОШИБОК.
Б) ОДНОЗНАЧНОСТЬ, Т.Е. ЧЕТКОЕ ПРЕДПИСАНИЕ, ЧТО И КАК ДЕЛАТЬ В
КАЖДОЙ КОНКРЕТНОЙ СИТУАЦИИ. Никаких неоднозначностей ("можно сделать так,
а можно и так...") быть не должно. Один из пунктов рассмотренного выше алгоритма
перехода улицы звучит неоднозначно- "немного подождать". Понятно, что данный
алгоритм ориентирован на человека, а человек поймет, что означает слово "немного",
правда каждый по-своему. Для компьютера понятия "немного" не существует, поэтому
при создании машинно-ориентированных алгоритмов нужно указывать конкретные
величины, например "подождать 3 секунды".
В) УНИВЕРСАЛЬНОСТЬ, Т.Е. ПРИМЕНИМОСТЬ ДАННОГО АЛГОРИТМА К
РЕШЕНИЮ ЛЮБОЙ ЗАДАЧИ ДАННОГО ТИПА. Это означает, что если Вы пишите
программу для решения квадратного уравнения, использованный в ней алгоритм должен
позволить использовать ее для решения любого квадратного уравнения, а если Вы пишите
программу для создания мультфильмов, то это нужно делать так, чтобы с ее помощью
можно было создавать любые мультфильмы, и т.д. Данное требование- экономическое.
Разработка серьезной программы это очень сложный, длительный и трудоемкий процесс,
и окупится он только тогда, когда созданная в результате программа будет использоваться
многократно. Писать программы, которые будут использоваться только однажды смысла
нет. Исключением могут быть только какие-то особые случаи и обучение
программированию.
Г) РЕЗУЛЬТАТИВНОСТЬ, Т.Е. ОТСУТСТВИЕ ЗАЦИКЛИВАНИЙ. Любая программа
должна всегда приводить к результату, даже если этим результатом будет аварийное
сообщение. Иными словами, рельсы должны быть проложены так, чтобы идущий по ним
трамвай в любой ситуации доехал от начала до конца, т.е. необходимо предусмотреть все
возможные ситуации. Обратимся снова к рассмотренному выше алгоритму перехода
улицы. Очевидно, что если светофор сломан, данный алгоритм не сработает. Иными
словами, эта аварийная ситуация в нем не предусмотрена, и в данном случае, результат
будет не таким, каким должен быть. Конечно, человек, не дождавшись зеленого сигнала,
поймет, что что-то не так и предпримет какие-то действия. Но компьютер ведь думать не
умеет, он как трамвай идет по проложенным рельсам! Если рельсы проложены так, что
аварийная ситуация не предусмотрена, произойдет зацикливание или будут иметь место
какие-либо другие непредсказуемые результаты. Тогда, в ряде случаев программы
"зависают", или зацикливаются, как в рассматриваемой ситуации. Выйти из
образовавшегося замкнутого круга можно только принудительным прерыванием работы
программы, например, путем перезагрузки компьютера.
3) О ПРОГРАММЕ, ВЫПОЛНЯЮЩЕЙ ДЕЙСТВИЯ, ПРЕДПИСАННЫЕ
АЛГОРИТМОМ, ГОВОРЯТ, ЧТО ОНА РЕАЛИЗУЕТ ДАННЫЙ АЛГОРИТМ НА ЭВМ.
Следующим шагом после создания алгоритма является написание реализующей его
программы. Основная сложность здесь заключается в том, что программа, как Вы
помните, представляет собой набор двоичных кодов - нулей и единиц. Алгоритм же
формулируется на естественном человеческом языке- русском, английском, немецком,
арабском и.т.д. Понятно, что перевести текст на естественном человеческом языке в набор
цифр чрезвычайно сложно:
В связи с этим в данный процесс вводится промежуточный этап - разработка текста
программы:
ЯЗЫК ПРОГРАММИРОВАНИЯ- ИСКУССТВЕННЫЙ ЯЗЫК, ЯВЛЯЮЩИЙСЯ
ПРОМЕЖУТОЧНЫМ ПРИ ПЕРЕХОДЕ ОТ ЕСТЕСТВЕННОГО ЧЕЛОВЕЧЕСКОГО
ЯЗЫКА К МАШИННЫМ ДВОИЧНЫМ КОДАМ. ЯЗЫКИ ПРОГРАММИРОВАНИЯ
БЫВАЮТ ВЫСОКОГО И НИЗКОГО УРОВНЕЙ. ЯЗЫКИ ПРОГРАММИРОВАНИЯ
ВЫСОКОГО УРОВНЯ (как видно из схемы) ЯВЛЯЮТСЯ БОЛЕЕ БЛИЗКИМИ К
ЕСТЕСТВЕННОМУ ЧЕЛОВЕЧЕСКОМУ ЯЗЫКУ ПО СРАВНЕНИЮ С ЯЗЫКАМИ
ПРОГРАММИРОВАНИЯ НИЗКОГО УРОВНЯ. СОЗДАНИЕ ТЕКСТА ПРОГРАММЫ НА
ЯЗЫКЕ ПРОГРАММИРОВАНИЯ ВЫПОЛНЯЕТСЯ ЧЕЛОВЕКОМ ВРУЧНУЮ, А
ПЕРЕВОД ТЕКСТА ПРОГРАММЫ В МАШИННЫЕ ДВОИЧНЫЕ КОДЫ -
ТРАНСЛЯЦИЯ (англ.translation - перевод) ВЫПОЛНЯЕТСЯ СПЕЦИАЛЬНЫМИ
ПРОГРАММАМИ- ТРАНСЛЯТОРАМИ.
Программирование на языках высокого уровня, очевидно, проще, чем на языках низкого
уровня. Оно не требует глубоких знаний устройства компьютера и поэтому вполне
доступно людям, не являющимися специалистами в вычислительной технике. Однако,
программы, написанные на языках низкого уровня, как правило, отличаются более
высокой скоростью работы, меньшим объемом и более полным использованием ресурсов
вычислительной техники.
К ЯЗЫКАМ ВЫСОКОГО УРОВНЯ ОТНОСЯТСЯ: ФОРТРАН, БЕЙСИК, ПАСКАЛЬ, СИ,
АЛГОЛ, АЛМИР, АДА, СИ++, DELPHI, JAVA и сотни других.
Старейшим языком программирования высокого уровня является ФОРТРАН (англ.
FORmula TRANslation, перевод формул). Он был создан группой программистов
американской фирмы IBM под руководством Джона Бекуса в 1957 году. Несколько позже
в Европе был разработан язык АЛГОЛ (англ.ALGOrythmic Language, алгоритмический
язык). Эти языки послужили основой для других новых языков программирования. Так,
язык БЕЙСИК (англ. basic, базовый, или Beginner's All-purpose Symbolic Instruction Code,
многоцелевой язык символических команд для начинающих) был создан Джоном Кемени
в США в 1965 году. Он представляет собой упрощенную версию ФОРТРАНА, который
оказался сложным для большинства пользователей из-за своей избыточности. Язык
АЛГОЛ послужил основой для не менее популярного языка ПАСКАЛЯ, созданного в
1969 году швейцарским математиком Никласом Виртом. ПАСКАЛЬ не сложнее Бейсика,
но в него изначально были заложены более широкие возможности. Дальнейшее развитие
язык ПАСКАЛЬ получил в виде системы программирования DELPHI. На Украине в 1965
году на базе АЛГОЛА был создан язык АЛМИР, отличавшийся использованием
символики на основе русского, а не английского языка. Этот язык считается первым в
мире языком программирования на основе национального языка (Native Language).
Язык СИ, в котором использованы элементы ПАСКАЛЯ, был создан в 1972 году в
американской фирме Bell Laboratories под руководством Дениса Ритчи. Название языка
СИ связано с тем, что наиболее удачной оказалась его третья версия ( СИ- третья буква
английского алфавита). СИ считается наиболее эффективным среди языков
программирования высокого уровня. С одной стороны он не намного сложнее ПАСКАЛЯ
или ФОРТРАНА, но с другой обладает возможностями, присущими языкам
программирования низкого уровня. Поэтому СИ иногда называют языком
программирования среднего уровня и используют как при написании прикладных
программ, так и при разработке системных. Дальнейшим развитием языка СИ стали языки
СИ++ и JAVA.
К ЯЗЫКАМ НИЗКОГО УРОВНЯ ОТНОЯТСЯ АССЕМБЛЕР И АВТОКОД. Ассемблер,
как язык низкого уровня, фактически состоит из набора команд данной машины,
записанных в виде сокращений на английском языке. Автокод- вариант ассемблера на
основе русского языка.
Программы трансляторы бывают двух типов:
ИНТЕРПРЕТАТОРЫ ТРАНСЛИРУЮТ ТЕКСТ ПРОГРАММЫ И СРАЗУ ЖЕ
ВЫПОЛНЯЮТ ПРЕДПИСАННЫЕ В НЕМ ДЕЙСТВИЯ, НЕ СОЗДАВАЯ .ЕХЕ-ФАЙЛ.
КОМПИЛЯТОРЫ ТРАНСЛИРУЮТ ТЕКСТ ПРОГРАММЫ И СОЗДАЮТ ГОТОВУЮ К
ИСПОЛНЕНИЮ ПРОГРАММУ В ВИДЕ .ЕХЕ-ФАЙЛА, КОТОРЫЙ МОЖНО БУДЕТ
ПОСЛЕ ЗАПУСТИТЬ НА ИСПОЛНЕНИЕ.
4) ОТЛАДКА ПРОГРАММЫ - ИСПРАВЛЕНИЕ В НЕЙ ОШИБОК И ТЩАТЕЛЬНОЕ ЕЕ
ТЕСТИРОВАНИЕ.
При тестировании программы важно проверить ее работоспособность как можно в
большем числе ситуаций, напрмер, при различных вариантах исходных данных. Бывает,
что в 1000 случаях программа сработает нормально, а на 1001-й раз обнаружится ошибка.
При написании серьезных программных продуктов для более полного их тестирования
фирмы-разработчики часто распространяют их пробные версии (бета-версии) среди как
можно большего числа пользователей, которые сообщают в фирму об обнаруженных
ошибках, что позволяет исправить их в окончательных версиях программных продуктов.
Если Вы освоили весь вышеизложенный материал, то можете сдавть тест N3. Желаем
удачи!
ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА:
1. Вебер Р. Конфигурирование ПК на процессорах Pentium. Пер. с нем.- М.: Мир, 1996.-
256с.
2. Вершинин О.Е. Компьютер для менеджера: Учеб.пособие для экон. спец. вузов.- М.:
Высш.школа, 1990.-240с.
3. Дьяконов В.П. Windows 95 на вашем компьютере. -Смоленск: Русич, 1997.-528с.
4. Кирсанов Д. Понятный Интернет: Практическое пособие по настройке и навигации с
Netscape Navigator. - СПб: Символ-Плюс, 1996. -252с.
5. Кенин А.М., Печенкина Н.С. Окно в мир компьютеров: Научно-популярное издание. -
Екатеринбург: Тезис, 1994. -400с.
6. Крайзмер Л.П., Кулик Б.А. Персональный компьютер на вашем рабочем месте. - СПб.:
Лениздат, 1991. -286с.
7. Ратч Э. IBM AT. Руководство для начинающих. Справ. пособие. -М.: Радио и связь,
1993. -160с.
8. Тимофеев А.В. Информатика и компьютерный интеллект. -М.: Педагогика, 1991.- 128с.
9. Фигурнов В.Э. IBM PC для пользователя. Изд. 6-е, перераб. и доп. -М.: ИНФРА-М,
1996.- 432с.
10. Яцкевич Ю.Э. Сети ЭВМ: Учеб.пособие. - СПб: Изд-во СПбГТУ, 1995. -125с.__