Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Интерполяционный полином Лагранжа

атрат времени на отладку программ.
    Применение программ в самых разных областях  человеческой  деятельности
привело   к   необходимости   повышения   надежности   всего    программного
обеспечения. Одним из направлений совершенствования языков  программирования
стало повышения уровня типизации данных.  Теория  типов  данных  исходит  из
того, что каждое  используемое  в  программе  данное  принадлежит  одному  и
только одному  типу  данных.  Тип  данного  определяет  множество  возможных
значений данного и  набор  операций,  допустимых  над  этим  данным.  Данное
конкретного типа в ряде случаев может быть преобразовано  в  данное  другого
типа, но такое преобразование должно быть явно представлено в  программе.  В
зависимости от степени выполнения перечисленных  требований  можно  говорить
об уровне  типизации  того  или  иного  языка  программирования.  Стремление
повысить уровень типизации языка программирования привело к появлению  языка
Паскаль, который считается  строго  типизированным  языком,  хотя  и  в  нем
разрешены  некоторые  неявные  преобразования  типов,  например,  целого   в
вещественное.  Применение  строго  типизированного   языка   при   написании
программы позволяет еще  при  трансляции  исходного  текста  выявить  многие
ошибки использования данных и этим повысить надежность программы.  Вместе  с
тем строгая типизация сковывала свободу программиста, затрудняла  применение
некоторых приемов преобразования  данных,  часто  используемых  в  системном
программировании. Практически одновременно с Паскалем  был  разработан  язык
Си, в  большей  степени  ориентированный  на  системное  программирование  и
относящийся к слабо типизированным языкам.
    Все  универсальные  языки  программирования,  несмотря  на  различия  в
синтаксисе  и  используемых  ключевых  словах,  реализуют  одни  и   те   же
канонические структуры: операторы присваивания,  циклы  и  разветвления.  Во
всех современных языках присутствуют предопределенные (базовые) типы  данных
(целые  и  вещественные  арифметические  типы,   символьный   и,   возможно,
строковый тип), имеется возможность использования агрегатов  данных,  в  том
числе массивов и структур (записей).  Для  арифметических  данных  разрешены
обычные арифметические операции, для агрегатов данных  обычно  предусмотрена
только операция присваивания и возможность обращения к  элементам  агрегата.
Вместе с тем при разработке  программы  для  решения  конкретной  прикладной
задачи желательна возможно большая концептуальная близость текста  программы
к  описанию  задачи.  Например,  если  решение  задачи  требует   выполнения
операций над комплексными числами  или  квадратными  матрицами,  желательно,
чтобы  в  программе  явно  присутствовали  операторы  сложения,   вычитания,
умножения и деления данных типа  комплексного  числа,  сложения,  вычитания,
умножения и обращения данных типа квадратной матрицы. Решение этой  проблемы
возможно несколькими путями:
     . Построением языка программирования,  содержащего  как  можно  больше
       типов  данных,  и  выбором  для  каждого  класса  задач   некоторого
       подмножества  этого  языка.  Такой  язык  иногда  называют   языком-
       оболочкой. На роль языка-оболочки претендовал язык ПЛ/1, оказавшийся
       настолько  сложным,   что   так   и   не   удалось   построить   его
       формализованное  описание.  Отсутствие  формализованного   описания,
       однако, не помешало широкому применению ПЛ/1 как в Западной  Европе,
       так и в СССР.
     .  Построением  расширяемого  языка,  содержащего  небольшое  ядро   и
       допускающего  расширение,   дополняющее   язык   типами   данных   и
       операторами, отражающими концептуальную сущность конкретного  класса
       задач.  Такой  язык  называют  языком-ядром.  Как   язык-ядро   были
       разработаны  языки  Симула  и  Алгол-68,  не   получившие   широкого
       распространения, но оказавшие большое влияние на  разработку  других
       языков программирования.
    Дальнейшим  развитием  второго  пути  явился   объектно-ориентированный
подход к программированию.



    2.  Различия  функционального  и   объектно-ориентированного   подходов
       программирования
    Есть   два   принципиально   отличающихся    подхода    к    технологии
программирования:   инженерно-конструкторский   и   математический.   Первый
основан  на  том,  что  изготовление  программного  продукта   по   заданным
требованиям суть итеративный процесс последовательной  реализации  алгоритма
решения задачи.  Второй  подход  основан  на  математическом  доказательстве
правильности программы и автоматическом (или  полуавтоматическом)  получении
готовой программы по заданным спецификациям.
    Объектно-ориентированный  подход  к   технологии   программирования   –
инженерно-конструкторский,  в  котором  внимание  концентрируется  на  самом
процессе  решения  задачи.  В  данной  статье   авторами   обобщается   опыт
использования  объектно-ориентированной  технологии  при  разработке   среды
объектно-ориентированного программирования и некоторых прикладных  программ,
работающих в этой среде.
    Оценим преимущества и недостатки наиболее  распространенной  инженерной
технологии   –   функциональной.    Существует    три    главные    проблемы
функционального подхода:
    1. Слабая  формализация  связей  между  этапами.  Специализация  этапов
       приводит к тому, что интерфейсы между ними описываются на  различных
       языках с разной степенью формализации. Слабая формализация уменьшает
       надежность  программы  и,  что  самое  неприятное,  ее  адекватность
       требованиям заказчика.
    2. Отсутствие гибкости. Поэтапная последовательная схема жестко связана
       с  нисходящим   способом   создания   программы.   Однако   практика
       показывает,  что  процесс.  создания.  хоть  сколько-нибудь  сложной
       программы  неизбежно  оказывается  циклическим,  с  возвратами   для
       внесения изменений в предыдущие  этапы.  Такие  возвраты  связаны  с
       большими затратами, поскольку вовлекают этапы с разными интерфейсами
       и разными исполнителями.
    3. Плохое использование результатов предыдущих  разработок.  Нисходящее
       проектирование вместе со слабой  формализацией  языков  спецификаций
       приводят к  тому,  что  результаты  проектирования,  как  и  готовые
       программы и их части, практически невозможно использовать для других
       целей. Исключение составляют библиотеки языков  программирования  на
       этапе кодирования.
    Принципиальное отличие от  функциональной  схемы  состоит  в  том,  что
поэтапный  цикл  жизни  программного  продукта   заменяется   многоуровневым
представлением  процесса  решения  задачи,  которое  получается   сочетанием
нисходящего  и  восходящего  способов.  С  одной  стороны  идет  детализация
верхних уровней, с другой стороны из нижних уровней  собираются  недостающие
компоненты верхних  уровней.  Смежные  и  другие  близлежащие  уровни  могут
пересекаться, т.е. иметь общие  компоненты.  Таким  образом,  границы  между
уровнями   размываются,   их   число   становится   произвольным   и    даже
неопределенным, а сами уровни теряют свою специфику.
    Возможность применения вышеуказанной схемы обеспечивают три единые  для
всех    уровней    средства:    объектно-ориентированный     язык,     среда
программирования, база данных (библиотека классов).  Эти  средства  в  явном
виде   составляют   основу   любой   объектно-ориентированной    технологии.
Рассмотрим их основные характеристики.
     Объектно-ориентированный язык программирования основывается на понятии
объекта как замкнутой  независимой  сущности,  взаимодействующей  с  внешним
миром через строго определенный интерфейс в виде перечня сообщений,  которые
объект  может  принимать.   Объект   обладает   свойствами,   поведением   и
состоянием. Объекты с одинаковыми свойствами  и  поведением  объединяются  в
классы.  Программа  на  объектно-ориентированном  языке  представляет  собой
совокупность описаний классов. Классы, в свою  очередь,  представляют  собой
описания  свойств   и   поведения   составляющих   их   объектов.   Свойства
представляются другими, как правило,  более  простыми  объектами.  Поведение
описывается обменивающимися сообщениями объектами.
    Объектно-ориентированным языкам присущи следующие характеристики:
     . абстрактные типы данных;
     . скрытие реализации внешнего интерфейса (инкапсуляция);
     . наследование свойств и поведения объектов;
     . динамическое связывание имени со значением;
     . полиморфизм имен сообщений;
     . автоматическое управление памятью.
    Чисто объектно-ориентированные  языки,  такие  как  Smalltalk,  Eiffel,
обладают  всеми  перечисленными  здесь  свойствами.  Широко   распространены
объектно-ориентированные  расширения  традиционных  языков   (Си++,   Турбо-
Паскаль), в которых присутствуют не все объектно-ориентированные черты.
    Объектно-ориентированная база классов представляет собой  иерархический
набор (библиотеку) классов – строительных блоков для  сборки  новых  уровней
создаваемого программного продукта. Здесь хранятся  классы  «джентльменского
набора» библиотек  языков  программирования,  а  также  классы,  описывающие
понятия прикладных предметных областей.
    Классы представляют собой  накопленные  знания  о  ранее  изготовленных
продуктах.  База  классов  должна  обеспечивать  легкий  поиск  классов,  их
изучение,  модификацию,  включение  новых  классов.  Язык  и  база   классов
объединяются    в     интегрированную     объектно-ориентированную     среду
программирования, в  которой  все  средства  поддержки  процесса  разработки
программ написаны на данном языке и входят на равных правах  в  состав  базы
классов.   Типичными   примерами   таких   средств   являются    графический
многооконный интерф
12345След.
скачать работу

Интерполяционный полином Лагранжа

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ