Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЭК_ТП.doc
Скачиваний:
30
Добавлен:
01.05.2025
Размер:
106 Кб
Скачать
☆
  • этап Математическая модель – математическое описание задачи.

    • Формализованное описание задачи и формулируется средствами математического языка в зависимости между исходными и результативными данными.

    • Моделирование задачи: модель – некоторый мыслительный образ реального объекта (системы), отражающий существенные свойства объекта и заменяющие его в процессе решения задачи.

    Существуют два типа моделей:

    - материальные, основаны на чем-то объективным, существующим независимо от человеческого сознания. Разделяются на физические и аналоговые)

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

    Чаще всего используют математические модели среди них выделяют аналитические, матричные и графические.

    При выборе метода решения отдается предпочтение методу, который полностью удовлетворяет следующие критерии:

    1. обеспечивает необходимую точность

    2. используем минимум объема исходной информации

    3. позволяет использовать готовый стандарт программы

    4. обеспечивает более быстрое получение исходных результатов

    3 этап Разработка алгоритма

    АЛГОРИТМЫ – точное предписание, определяющее вычислительный процесс, ведущий от начальных данных к искомому результату.

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

    1. Результативность – для любых допустимых исходных данных он должен через некоторое число шагов завершить свою работу.

    2. Массовость – предполагает возможность варьирование исходных данных в определенных пределах. Определяет пригодность алгоритма для решения задач данного класса.

    3. Дискретность – возможность разбиения сложного процесса на отдельные элементарные этапы.

    Способы описания:

    1. словесный – отражает содержание выполняемых действий средствами естественного языка.

    Достоинство: общедоступность, возможность описывать действия с высокой степенью детализации.

    Недостатки: громоздкое описание, низкое наглядность.

    1. формульно-словесный – основан на использование возможностей языка математики и естественного языка. Более лаконичен, нагляден, частично формализован.

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

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

    4. графический (в виде блок-схем).

    Алгоритмизация сложный процесс, носящий творческий характер. Этапы:

    • выделение автономных этапов задачи

    • формализованное описание действий на каждом выделенном этапе

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

    4 этап Составление программы

    Разработанный алгоритм переводится на язык программирования

    5 этап тестирование и отладка

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

    Отладка – устранение ошибок

    1. Математическая модель задачи. Виды и особенности моделей.

    Математическая модель – математическое описание задачи.

    • Формализованное описание задачи и формулируется средствами математического языка в зависимости между исходными и результативными данными.

    • Моделирование задачи: модель – некоторый мыслительный образ реального объекта (системы), отражающий существенные свойства объекта и заменяющие его в процессе решения задачи.

    Существуют два типа моделей:

      • материальные, основаны на чем-то объективным, существующим независимо от человеческого сознания. Разделяются на физические и аналоговые)

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

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

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

    2.Методы проектирования программ. Проектирование сверху - вниз.

    Существует несколько методов проектирования программ:

    Нисходящие; - восходящие; - структурное; - модульное; - объективно-ориентированное

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

    Восходящие

    Мелкие задачи объединяются в одну программу.

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

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

    1. должен иметь имя по которому идет обращение

    2. иметь один вход и один выход

    3. небольшой размер

    4. по завершению работы должен возвращать управление тому модулю, который его вызвал.

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

    Модульный принцип разработки обладает следующими преимуществами:

    1. Объемную программу, могут разрабатывать несколько человек одновременно.

    2. Упрощается процедура загрузки больших программ в оперативную память.

    3. Обеспечивается более эффективное тестирование и отладка.

    Преимущество принципа проявляется на этапе сопровождения и модификации программных продуктов.

    Недостатки: Увеличение объема требуемой памяти, времени исполнения программ, увеличению времени компиляции и загрузки.

    Общая структура

    1. Управляющие модули (головной модуль, транзитные модули)

    2. Модули реализующие основное назначение пакета (функциональные модули)

    3. Вспомогательные модули (трансляторы исходного языка, модуль сбора и обработки статистики, модули обработки ошибочных ситуаций, модули экспорта и импорта информации, модули обучения и помощи).

    3.Модульное программирование. Модули и их особенности. Принципы структурного программирования.

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

    Заголовок

    unit Unit1;

    Секция интерфейсных объявлений

    interface

    // Секция интерфейсных объявлений

    Секция реализации

    implementation

    // Секция реализации

    Секция инициации

    begin

    // Секция инициации

    Терминатор

    end.

    В секции интерфейсных объявлений описываются программные элементы (типы, классы, процедуры и функции), которые будут «видны» другим программным модулям, а в секции реализации раскрывается механизм работы этих элементов. Разделение модуля на две секции обеспечивает удобный механизм обмена алгоритмами между отдельными частями одной программы. Он так же реализует средство обмена программными разработками между отдельными программистами. Детали реализации объявленных процедур, функций, классов скрыты в секции реализаций и недоступны другим модулям.

    Секция инициации используется крайне редко и обычно опускается вместе с открывающим ее словом begin.

    Заголовок модуля и связь модулей друг с другом.

    Заголовок модуля состоит из зарезервированного слова Unit и следующего за ним имени модуля. Имя модуля должно совпадать с именем дискового файла, в котором помещается исходный текст модуля. Имя модуля служит для его связи с другими модулями и основной программой. Эта связь устанавливается специальным предложением:

    Uses <список модулей>

    Здесь Uses – зарезервированное слово (использует); <список модулей> - список модулей, с которыми устанавливается связь; элементами списка являются имена модулей, отделяемые друг от друга запятыми.

    Если объявление Uses используется, оно должно открывать раздел описаний основной программы.

    Интерфейсная часть.

    Интерфейсная часть открывается зарезервированным словом Interface. В этой части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), которые должны стать доступными основной программе или другими модулями.

    Пример

    Unit Proba;

    Interface

    type

    complex = record

    re, im: Real

    end;

    function AddC(x,y: Complex): Complex;

    function MulC(x,y: Complex): Complex;

    Если теперь в другом модуле написать предложение

    Uses Proba;

    то в нем станут доступными тип Complex и две функции AddC и MulC из модуля Proba.

    Исполняемая часть.

    Исполняемая часть начинается зарезервированным словом Implementation и содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные и блоки. Описанию подпрограммы, объявленной в интерфейсной части модуля, в исполняемой части должен предшествовать заголовок, в котором можно опускать список формальных параметров, т.к. они уже описаны в интерфейсной части.

    Пример.

    Unit Proba;

    Interface

    type

    complex = record

    re, im: Real

    end;

    function AddC(x,y: Complex): Complex;

    function MulC(x,y: Complex): Complex;

    Implementation

    function AddC(x,y: Complex): Complex;

    begin

    …

    end;

    function MulC; // вариант описание подпрограммы

    begin // без повторения списка параметров

    …

    end;

    end.

    Типы модулей.

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

    Большинство типовых модулей-форм содержаться в репозитории, они уже содержат заготовки для создания диалоговых окон.

    Модули данных имеют связанные с ними окна, однако эти окна никогда не появляются на экране. Необходимость в модулях данных появляется при использовании компонентов доступа к базам данных страницы Data Access, которые вставляются в форму, но не имеют видимого воплощения в работающей программе. Невидимое окно модуля данных предназначено для размещения этих компонентов и связанных с ним полей-объектов.

    Модули динамических библиотек предназначены для создания широко используемых в Windows динамически связанных библиотек DLL (Dynamic-Link Libraries). DLL служат универсальным средством согласования подпрограммы, написанных на разных языках программирования.

    Модули-потоки предназначены для реализации так называемого потока команд – фрагментов программы, которые исполняются параллельно с другими фрагментами, разделяя с ними время процессора и остальные системные ресурсы.

    4.Концепция объектно-ориентированного программирования. Инкапсуляция, наследование, полиморфизм.

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

    Основными принципами объектно-ориентированного программирования являются:

    • Инкапсуляция.

    • Наследование.

    • Полиморфизм.

    1. Инкапсуляция

    Инкапсуляция (encapsulation) - это механизм, который объединяет данные и код, манипулирующий зтими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В объектно-ориентированном программировании код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так называемый "чёрный ящик". Когда коды и данные объединяются таким способом, создаётся объект (object). Другими словами, объект - это то, что поддерживает инкапсуляцию.

    Внутри объекта коды и данные могут быть закрытыми (private). Закрытые коды или данные доступны только для других частей этого объекта. Таким образом, закрытые коды и данные недоступны для тех частей программы, которые существуют вне объекта. Если коды и данные являются открытыми, то, несмотря на то, что они заданы внутри объекта, они доступны и для других частей программы. Характерной является ситуация, когда открытая часть объекта используется для того, чтобы обеспечить контролируемый интерфейс закрытых элементов объекта.

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

    2. Полиморфизм

    Полиморфизм (polymorphism) (от греческого polymorphos) - это свойство, которое позволяет одно и то же имя использовать для решения двух или более схожих, но технически разных задач. Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий. Выполнение каждого конкретного действия будет определяться типом данных. В более общем смысле, концепцией полиморфизма является идея "один интерфейс, множество методов". Это означает, что можно создать общий интерфейс для группы близких по смыслу действий. Преимуществом полиморфизма является то, что он помогает мнижать сложность программ, разрешая использование того же интерфейса для задания единого класса действий. Выбор же конкретного действия, в зависимости от ситуации, возлагается на компилятор. Вам, как программисту, не нужно делать этот выбор самому. Нужно только помнить и использовать общий интерфейс. Пример из предыдущего абзаца показывает, как, имея три имени для функции определения абсолютной величины числа вместо одного, обычная задача становится более сложной, чем это действительно необходимо.

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

    3. Наследовние

    Наследование (inheritance) - это процесс, посредством которого один объект может приобретать свойства другого. Точнее, объект может наследовать основные свойства другого объекта и добавлять к ним черты, характерные только для него. Наследование является важным, поскольку оно позволяет поддерживать концепцию иерархии классов (hierarchical classification). Применение иерархии классов делает управляемыми большие потоки информации. Например, подумайте об описании жилого дома. Дом - это часть общего класса, называемого строением. С другой стороны, строение - это часть более общего класса - конструкции, который является частью ещё более общего класса объектов, который можно назвать созданием рук человека. В каждом случае порождённый класс наследует все, связанные с родителем, качества и добавляет к ним свои собственные определяющие характеристики. Без использования иерархии классов, для каждого объекта пришлось бы задать все характеристики, которые бы исчерпывающи его определяли. Однако при использовании наследования можно описать объект путём определения того общего класса (или классов), к которому он относится, с теми специальными чертами, которые делают объект уникальным. Наследование играет очень важную роль в OOP.

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

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

    В начале этого дерева находится базовый класс TObject, который реализует элементы, наиболее общие для всех объектов, например, действия по созданию и удалению объектов. Чем дальше тот или иной объект находится от базового класса, тем он более специфичен.

    Пример. Объявление нового класса.

    TAnyClass = class (TParentClass)

    // добавление к классу TParentClass новых

    // и переопределение существующих элементов

    end;

    5.Классы.

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

    Описание класса имеет следующую структуру:

    Type <Имя класса>=class(<Имя класса-родителя>)

    private

    <Частные описания>;

    protected

    <Недоступные описания >;

    public

    <Общедоступные описания >;

    published

    < Опубликованные описания >;

    end;

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

    Разделы private и protected содержат защищенные описания, которые доступны внутри модуля, в котором они находятся, а также для порожденных классов.

    Раздел public содержит общедоступные описания, которые видимы в любом месте программы, где доступен сам класс.

    Раздел published содержит опубликованные описания, которые в дополнение к общедоступным описаниям порождают информацию о типе времени выполнения (Run Time Type Information, RTTI). По этой информации во время выполнения приложения осуществляется проверка принадлежности элементов объекта тому или иному классу. Одно из назначений раздела published – обеспечение доступа к свойствам объектов при конструировании приложений. В Инспекторе объектов видны те свойства, которые являются опубликованными. Если спецификатор published не указан, то он подразумевается по умолчанию, поэтому любые описания, расположенные за строкой с указанием имени класса, будут опубликованы.

    Поля.

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

    Пример. Описание полей.

    type TNewClass = class (TObject)

    private

    FCode: integer;

    FSign: char;

    FNote: string;

    end;

    Новый класс TNewClass создается на основе базового класса TObject и получает в дополнение три новых поля FCode, FSign, FNote. Согласно принятому соглашению имена полей должны начинаться с префикса f (от англ. field – поле).

    Поскольку TObject является базовым классом, его имя после слова class можно не указывать, тогда первая строка описания будет выглядеть следующим образом:

    type TNewClass = class

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

    Свойства.

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

    Пример. Описание свойств.

    type TNewClass = class (TObject)

    private

    FCode: integer;

    FSign: char;

    FNote: string;

    Published

    Property Code: integer read FCode write FCode;

    FSign: char;

    FNote: string;

    end;

    Для доступа к полям FCode, FSing и FNote, которые описаны в защищенном разделе и не доступны программисту, используются свойства Code, Sing и Note, соответственно.

    Методы.

    Метод представляет собой подпрограмму (процедуру или функцию), являющуюся элементом класса. Описание метода похоже на описание обычной подпрограммы модуля. Заголовок метода располагается в описание класса, а сам код метода находится в разделе реализации, где имеет составное имя, включающее указание типа класса.

    Пример. Описание метода Button1Click.

    interface

    …

    type

    TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click (Sender: TObject);

    …

    implementation

    …

    procedure TForm.Button1Click (Sender: TObject);

    begin

    Close;

    end;

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

    • virtual – виртуальный метод;

    • dynamic – динамический метод;

    • override – перекрывающий метод;

    • message – обработка сообщений;

    • abstract – абстрактный метод.

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

    Методы, которые предназначены для создания или удаления объектов, называются соответственно конструкторами и деструкторами.

    6.Понятие модуля. Составные части модуля. Типы модулей. (Delphi).

    Модуль - это автономно компилируемая программная единица, включающая в

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

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

    создание нужных окон и связь программы с Windows. Вся основная работа программы управляется кодом, содержащимся в модулях.

    Модуль имеет следующую структуру:

    Unit <имя>;

    interface<интерфейсная часть>

    implementation<исполняемая часть>

    initialization <инициирующая часть>

    finalization <завершающая часть>

    end.

    Здесь unit - зарезервированное слово (единица); начинает заголовок модуля; <имя>

    - имя модуля (правильный идентификатор); interface - зарезервированное слово (интерфейс); начинает интерфейсную часть модуля; implementation - зарезервированное слово (выполнение); начинает исполняемую часть; initialization -зарезервированное слово (инициация); начинает инициирующую часть модуля; finalization - зарезервированное слово (завершение); начинает завершающую часть модуля; end - зарезервированное слово - признак конца модуля.

    Все модули можно разбить на две группы:

    - стандартные модули, заранее созданные разработчиками языка Object Pascal и среды Delphi; эти модули поставляются в скомпилированном виде и их без каких либо доработок можно использовать в программах;

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

    Типы модулей

    Модуль форма наиболее распространенный Delphi. Он связан с модулем окна. Интерфейсная часть такого модуля обычно содержит объявление нового класса и автоматически обновляется Delphi в ходе конструирования окна.

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

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

    Модули потоки предназначены для реализации потока команд, т.е фрагмента программы, которые исполняются параллельно другими фрагментами программ, разделяя с ними время процессора и другие ресурсы.

    7.Модель перевода и источники ошибок при разработке программных средств.

    06 - Качество ПС.pdf

    8.Сопровождение программных средств. Программная документация.

    13-Сопровождениеи ПС.pdf

    9.Приемы отладки программных средств.

    12 - Тестирование и отладка.pdf

    10.Сцепление и связность модулей

    11_Сцепление и связность модулей