Программа (program, routine)


Скачать 124.02 Kb.
НазваниеПрограмма (program, routine)
Дата публикации16.03.2013
Размер124.02 Kb.
ТипПрограмма
userdocs.ru > Информатика > Программа

ВВЕДЕНИЕ. 2

ПРОГРАММИРОВАНИЕ. 3

ОСНОВНЫЕ МЕТОДЫ И ПОДХОДЫ К РАЗРАБОТКЕ ПРОГРАММ. 4

ВВЕДЕНИЕ.


Программирование на сегодняшний день является развивающейся отраслью, так как с развитием техники усложняется и связанная с ней деятельность. Чтобы эта деятельность не выходила из-под контроля возникла необходимость в создании определенных программ, которые направляли бы эту деятельность в нужное русло. В своем широком смысле оно пронизывает всю нашу жизнь, так как когда мы планируем какое-то действие, мы расписываем для себя как будем его выполнять по шагам, то есть составляем программу этого действия.

В данной работе рассказывается о программировании с его технической стороны, то есть, что такое программа и программирование, основные подходы к программированию, методы и технологии.

ПРОГРАММИРОВАНИЕ.


Программирование сегодня – это гонка, в которой соревнуются разработчики, стремящиеся построить большие и обладающие защитой от дурака программы, и Вселенная, порождающая все больших и качественных дураков. На данный момент Вселенная побеждает.

Рич Кук
Программирование – это процесс подготовки задач для решения их на ЭВМ, состоящий из следующих этапов: составление «плана решения» задачи в виде набора операций (алгоритмическое описание задачи); описание «плана решения» на языке программирования (составление программы); трансляция программы с языка программирования на машинный язык (в виде последовательности команд, реализация которых техническими средствами ЭВМ и есть процесс решения задачи).[Российский энциклопедический словарь]

Программирование (programming) - теоретическая и практическая деятельность, связанная с созданием программ.

Программирование является собирательным понятием и может рассматриваться и как наука, и как искусство, на этом основан научно-практический подход к разработке программ.

Программа (program, routine) - упорядоченная последовательность команд (инструкций) компьютера для решения задачи. Программы предназначены для машинной реализации задач и являются результатом интеллектуального труда, для которого характерно творчество, а оно, как известно, не имеет четких границ. В любой программе присутствует индивидуальность ее разработчика, программа отражает определенную степень искусства программиста. Вместе с тем программирование предполагает и рутинные работы, которые могут и должны иметь строгий регламент выполнения и соответствовать стандартам.

Программирование базируется на комплексе научных дисциплин, направленных на исследование, разработку и применение методов и средств разработки программ (специализированного инструментария создания программ). При разработке программ используются ресурсоемкие и наукоемкие технологии, высококвалифицированный интеллектуальный труд.

В связи с ростом потребности в разнообразных программах обработки данных весьма актуален вопрос применения эффективных технологий программирования и их перевода на промышленную основу. Это означает:

  • стандартизованность, тиражируемость и воспроизведение различными разработчиками методов программирования;

  • внедрение прогрессивных инструментальных средств разработки программ;

  • использование специальных методов и приемов организации работ по разработке программ.

Основные характеристики программ:

  • алгоритмическая сложность (логика алгоритмов обработки информации);

  • состав и глубина проработки реализованных функций обработки;

  • полнота и системность функций обработки;

  • объем файлов программ;

  • требования к операционной системе и техническим средствам обработки со стороны программного средства;

  • объем дисковой памяти;

  • размер оперативной памяти для запуска программ;

  • тип процессора;

  • версия операционной системы;

  • наличие вычислительной сети и др.

Программа представляет собой запись алгоритма решения задачи при помощи языка программирования. Существует множество языков программирования: Ada, Fortran, Algol, Java, Pascal, C и др., которые имеют свою специфику моделирования программ, а, следовательно, и подходы к программированию характерные для них.
^

ОСНОВНЫЕ МЕТОДЫ И ПОДХОДЫ К РАЗРАБОТКЕ ПРОГРАММ.

1. Процедурное программирование


Это исторически первый появившийся подход, при котором программист должен решить, какие процедуры должна выполнять программа, а затем выбрать наиболее подходящие алгоритмы для их реализации. Под процедурой понимается особенным образом оформленный фрагмент программы, имеющий собственное имя. Упоминание процедуры в тексте программы приводит к ее активизации и называется ее вызовом. Для обмена информацией и основной программой могут использоваться один или несколько параметров вызова.

Процедуры могут вызываться из разных частей программы многократно. При этом в процедуру могут передаваться переменные и параметры-значения, сама процедура может возвращать результат работы в головную программу. Важным свойством процедур является использование ими локальных, доступных только данной процедуре, переменных, что позволяет исключить побочные эффекты при работе процедуры. Процедурное программирование может быть использовано в большинстве современных языков программирования, таких как Pascal, Modula, C и так далее.
^

2. Модульное программирование.


Модульное программирование является развитием и совершенствованием процедурного программирования и библиотек специальных программ. Основная черта модульного программирования - стандартизация интерфейса между отдельными программными единицами. Модуль - это отдельная функционально-законченная программная единица, которая структурно оформляется стандартным образом по отношению к компилятору и по отношению к объединению ее с другими аналогичными единицами и загрузке. Как правило, каждый модуль содержит паспорт, в котором указаны все основные его характеристики: язык программирования, объем, входные и выходные переменные, их формат, ограничения на них, точки входа, параметры настройки и т.д. Объем модуля обычно не превышает 1000 команд ЭВМ или операторов языка программирования. В противном случае модуль становится громоздким и трудным к восприятию и использованию.

Модульное программирование – это искусство разбиения задачи на некоторое число различных модулей, умение широко использовать стандартные модули путем их параметрической настройки, автоматизация сборки готовых модулей из библиотек, банков модулей.

Основные концепции модульного программирования:

  • каждый модуль реализует единственную независимую функцию;

  • каждый модуль имеет единственную точку входа и выхода;

  • размер модуля по возможности должен быть минимизирован;

  • каждый модуль может быть разработан и закодирован различными членами бригады программистов и может быть отдельно протестирован;

  • вся система построена из модулей;

  • модуль не должен давать побочных эффектов;

  • каждый модуль не зависит от того, как реализованы другие модули.

При таком подходе сложная система разделяется на несколько частей, одновременно создаваемых различными программистами. Каждый модуль реализует единственную функцию. Размер модуля невелик, поэтому тестирование управляемо и может быть проведено тщательным образом. После кодирования и тестирования всех модулей происходит их интеграция, и тестируется вся система.

При сопровождении тестируется и отлаживается только тот модуль, который плохо работает. Очевидны преимущества в облегчении написания и тестирования программ, уменьшается стоимость их сопровождения.

Концепция модульного программирования реализована в ряде языков, таких как Modula 2, Turbo Pascal 5.0 и выше, C, и др.

Отличие в реализации процедурного программирования от модульного состоит в том, что модуль не виден программе. В отличие от стандартных языков процедурного программирования, в модульных языках лишние модули просто не прикомпановываются на этапе сборки.
^

3. Нисходящее проектирование.


Одна из основных идей, положенных в большинство известных технологий программирования - нисходящее проектирование. Существуют также другие названия: «программирование с пошаговым совершенствованием», «систематическое программирование», «иерархическое программирование». Принцип его – сначала определяются основные функции, которые должны быть обеспечены изготавливаемой программой, а затем доопределяются дополнительные функции, вытекающие из основных.

Например:

Основная функция: «обработка файла»

Доопределенные функции: «открыть файл»

«обработать все записи»

«закрыть файл»

Вот некоторые принципы нисходящего проектирования:

  • подробное формальное и строгое описание проектировщиком входов, функций и выходов всех модулей программ или системы;

  • как только Вы убедитесь, что некоторая часть задачи может быть реализована в виде отдельного модуля, постарайтесь больше не думать об этом;

  • внимательно следите, чтобы Вас не вовлекли в обсуждение несущественных частей проекта;

  • на каждом уровне проекта пытайтесь записать реализацию модуля в виде символических кодов или блок схемы (размер описания в идеале не должен превосходить одного листа, чтобы при последующем анализе перед глазами находилась наиболее полная картина);

  • проектированию структуры данных и их движения следует уделять не меньше времени, чем программе;
^

4. Программирование с защитой от ошибок.


Критики программирования с защитой от ошибок считают, что несправедливо заставлять программиста вставлять средства контроля в свою программу, что при этом увеличивается время исполнения программы, что программирование будет отнимать слишком много времени. На самом деле это время будет в последствии сэкономлено, так как множество малозаметных потенциальных ошибок в программе просто не появится.

В основу программирования с защитой от ошибок положено следующее:

  • контроль входных данных (тех, что поступают от пользователя), их форматов, границ;

  • контроль обращений из других программ;

  • контроль входных данных из внешних файлов.

  • Основные пути достижения этой цели:

  • контроль версий файлов, версий программы;

  • не следует думать, что пользователь всегда все делает правильно, скорее наоборот, если что-то можно сделать неправильно, то это будет обязательно сделано;

  • не следует думать, что операционная система или транслятор работает корректно, особенно это касается новых версий;

  • подпрограммы для научных расчетов должны контролировать большинство входных аргументов;

  • экономические расчеты должны проверять корректность диапазонов и типов входных данных;

  • возможные ошибки ввода-вывода должны быть обдуманы до того, как готова функционирующая версия алгоритма;

  • следует составлять блок-схему и комментарии к программе в процессе написания программы, а не оставлять это «на потом»;

  • следует стараться избегать использования программ с большим количеством флагов, а в случае их наличия тщательно проверять их состояние;

  • при условных переходах следует проверять все ситуации;

  • обязательно надо проверять индексацию массивов на предмет выхода за границы;

  • при разработке программы следует сразу же обдумывать стратегию ее тестирования.
^

5. Функциональное программирование.


При этом подходе программа представляет собой последовательность встроенных и определяемых пользователем функций. Примером реализации этого подхода является язык Лисп, ориентированный на обработку связанных списков.

Функциональное программирование - это способ составления программ, в котором единственным действием является вызов функции, единственным способом расчленения программы на части является введение имени для функции и задание для этого имени выражения, вычисляющего значение функции, а единственным правилом композиции оператор суперпозиции функций. Никаких ячеек памяти, ни операторов присваивания, ни циклов, ни блок схем, ни передачи управления. Чтобы программировать при помощи функций, нужно иметь возможность определить достаточно большое множество основных функций и затем использовать композицию, чтобы определять функции в терминах исходных. Так можно построить библиотеку функций, некоторые из которых могут представляться достаточно мощными, чтобы называться программами.
^

6. Логическое программирование.


При этом подходе программист использует для программирования термины логики, с помощью которых он описывает объекты и задает отношения между ними. Примером является язык Пролог (программирование в терминах логики). Идея использовать логику в качестве языка программирования разрабатывалась в начале семидесятых годов Робертом Ковальским из Эдинбурга (теоретические аспекты), Мартен ван Эмденом (экспериментальная демонстрационная система), и Аленом Колмероэ (реализация).

Реализация языков логического программирования, как, впрочем, и языков функционального программирования, основывается на очень мощном ядре с большим количеством предопределенных функций.
^

7. Параллельное программирование.


Параллельное программирование представляет собой мало известную рядовому разработчику отрасль. Причина проста - по-настоящему «параллельным» выполнение программы может стать только в многопроцессорной системе. Даже самые лучшие многозадачные ОС, функционирующие на компьютере с одним процессором, всего лишь создают иллюзию одновременного выполнения нескольких процессов, на самом деле разделяя между ними мельчайшие кванты процессорного времени.

Основной проблемой программирования реальных параллельных процессов является синхронизация и осуществление одновременного доступа к данным различными процессами.
^

8. Объектно-ориентированное программирование.


ООП в настоящий момент является бурно развивающейся и одной из самых перспективных технологий программирования. Человек привык существовать в мире, который состоит из объектов. Объект – это понятие, которое человек использует интуитивно с самого момента рождения, и, следовательно, попытки перенести работу с объектами в достаточно абстрактную по своей сути область, коей и является программирование, просто «обречены на успех». Приведем основные термины ООП.

Объект – осязаемый или видимый предмет, а так же нечто, воспринимаемое мышлением.

Состояние – характеристики различных статистических свойств объекта, а так же значения этих характеристик.

Поведение – характеристика того, как один объект воздействует на другие объекты или изменяется сам под их воздействием. Поведение влияет на способ изменения состояний объекта.

Класс – некоторое множество объектов, обладающих одинаковыми свойствами и поведением, отличающихся друг от друга только значением своих свойств.

Абстракция – процесс выделения наиболее важных с точки зрения рассматриваемого процесса его компонент, на основании которых строится идеализированная модель, отражающая данный процесс.

Иерархия – это ранжированная система абстракций. Иерархические системы состоят из нескольких подсистем, причем то, что на одном уровне абстракции является элементом системы, на более низком уровне является системой.

В основе ООП лежат «три кита»:

Инкапсуляция (encapsulation) – свойство объединять внутри одной структуры состояние и поведение, с помощью инкапсуляции данные одного объекта могут быть защищены от других объектов. Такое «сокрытие» информации позволяет объектам спрятать их внутреннее устройство. При этом объект можно использовать, ничего не зная о механизме его работы и ненужных деталях.

Наследование (inheritance) – основанная на иерархии способность классов включать в себя свойства и поведение классов-предков, а так же добавлять к ним свое собственное поведение и свойства. С помощью механизма наследования одни классы могут происходить от других. Дочерний класс способен унаследовать от своего родительского класса все его методы и данные, причем потомок может унаследовать способности и от нескольких родителей.

Полиморфизм (polymorphism) – способность классов «играть роль» своих предков, сохраняя при этом свое собственное поведение. Благодаря полиморфизму имеет место позднее связывание. С помощью полиморфизма происходит присвоение единого имени процедуре, которая передается по иерархии объектов, с выполнением этой процедуры способом, соответствующим каждому объекту в иерархии.

Рассмотрим пример иерархии классов и наследования. Первым уровнем абстракции рассмотрим всех насекомых. Все они обладают определенными свойствами, характерными для всех насекомых вообще. Например, имеют лапки. Значение свойства «количество лапок» может отличаться для различных насекомых, но присутствует оно у всех.

Углубляясь на следующий уровень абстракции, рассмотрим разделение насекомых на два класса – насекомые с крыльями и без оных. Насекомые с крыльями отличаются от просто насекомых тем, что имеют свойство «количество крыльев». Класс «насекомые» является предком класса «с крыльями» в иерархии. Поэтому класс «с крыльями» имеет также и свойство «количество лапок».

Углубляясь еще дальше, разделим насекомых с крыльями еще на три класса – «бабочек», «мотыльков» и «мух». Любой из этих классов имеет все свойства «насекомого с крыльями», и какие-то свои свойства или способы поведения, отличающие его от собратьев, стоящих вместе с ним на одном уровне иерархии.

Теперь рассмотрим пример полиморфизма. Предположим, что класс «насекомые» имеет манеру поведения, которую можно охарактеризовать как «способ перемещения». Так как этот класс имеет признак «количество ножек», то «способ перемещения» описывается так: «ножек больше одной – бегает, ножек меньше двух – ползает». Очевидно, что насекомые с крыльями вне зависимости от количества ножек предпочитают летать. Поэтому для класса «с крыльями» поведение «способ перемещения» описывается так: «может лететь - летает, иначе как насекомое без крыльев». Теперь если мы рассмотрим бабочку как насекомое, то ее поведение «способ перемещения» будет выглядеть как «летает», несмотря на то, что мы рассматриваем бабочку на самом высоком уровне абстракции как насекомое и ничего не знаем о наличии у этого насекомого крыльев.

Все современные языки программирования являются объектно-ориентированными, а некоторые из ранних языков дополняются до объектно-ориентированных. Яркими примерами объектно-ориентированных по своей сути языков являются CPP и Java. Практически все программирование под Microsoft Windows связано с использованием классов. Такие технологии, как COM и вытекающая из нее OLE, полностью основаны на использовании классов, инкапсуляции и полиморфизме.

Конечно, каждый подход, как правило, используется не в чистом виде, а в сочетании с другими. Например, процедурное программирование содержит в себе элементы модульного, а ООП немыслимо без процедурного подхода.




5398.doc

Похожие:

Программа (program, routine) iconПрограмма VI международного кинофестиваля «Кино без барьеров» 9-12 Ноября Program
Два брата/Two Brothers, 15’, Хилт Лохтен/, Hilt Lochten, Нидерланды/Netherlands, 2010
Программа (program, routine) iconПрограмма 31 Международного фестиваля вгик program of 31 vgik international Festival
Румыния, Национальный университет драматических и кинематографического искусств им. Л. И. Караджале Факультет кино и телевидения
Программа (program, routine) iconTeam & Routine Requirements-Team Cheer Divisions

Программа (program, routine) iconKorean Government Scholarship Program for

Программа (program, routine) iconTraining program for russian policy and opinion makers

Программа (program, routine) iconActively participate in the program the level of applicant’s written...

Программа (program, routine) iconAmerican education provides a program for children, beginning at...

Программа (program, routine) iconВ нимание!
Американские советы по международному образованию: аспрял/акселс проводят набор на бесплатную конкурсную программу «Legislative Fellowship...
Программа (program, routine) iconПрограмма мероприятия. Обзор. Фестивально конкурсная программа. Обучающая...
После оформления заявки Оргкомитет предоставит информацию по обучающей и культурно-развлекательной программе
Программа (program, routine) iconПрограмма-минимум Левого Фронта Предварительные замечания Программа-минимум...
...
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2020
контакты
userdocs.ru
Главная страница