Главная страница
Навигация по странице:

  • Теоретический материал

  • Заголовок модуля UNIT имя модуля; 21 Интерфейсная часть

  • Инициализационная часть

  • Практическая работа № 1.4. Разработка алгоритма поставленной задачи

  • Методы изображения алгоритмов

  • Практическая работа № 1.5. Реализация алгоритма поставленной задачи

  • Ход работы Задание.

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


    Скачать 3.25 Mb.
    НазваниеМетодические указания по выполнению лабораторных и практических работ по мдк
    Дата23.01.2023
    Размер3.25 Mb.
    Формат файлаpdf
    Имя файла37._MU_PZ_PM.01_MDK_01.01_Razrabotka_programmnyx_moduley(1)_remo.pdf
    ТипМетодические указания
    #899980
    страница3 из 24
    1   2   3   4   5   6   7   8   9   ...   24
    Практическая работа № 1.3. Создание программ по разработанному
    алгоритму как отдельный модуль
    Цель работы:
    Создание программ по разработанному алгоритму как отдельный модуль
    Теоретический материал:
    Модуль (UNIT) – программная единица, текст которой компилируется независимо
    (автономно). Внутренняя структура модуля (тексты программ и т.д.) скрыта от пользователя.
    Заголовок модуля
    UNIT имя модуля;

    21
    Интерфейсная часть
    INTERFACE начало раздела объявлений;
    USES используемые при объявлении модули;
    LABEL подраздел объявления доступных глобальных меток;
    CONST подраздел объявления доступных глобальных констант;
    TYPE подраздел объявления доступных глобальных типов;
    VAR подраздел объявления доступных глобальных переменных;
    PROCEDURE заголовки доступных процедур;
    FUNCTION заголовки доступных функций;
    Реализационная часть
    IMPLEMENTATION начало раздела реализации;
    USES используемые при реализации модули;
    LABEL подраздел объявления скрытых глобальных меток;
    CONST подраздел объявления скрытых глобальных констант;
    TYPE подраздел объявления скрытых глобальных типов;
    VAR подраздел объявления скрытых глобальных переменных;
    PROCEDURE тела доступных и скрытых процедур;
    FUNCTION тела доступных и скрытых функций;
    Инициализационная часть
    BEGIN
    Операторы, которые выполняются при подключении модуля;
    END.
    1) Создайте модуль для вычисления факториала некоторого числа. В основной программе, не объявляя никаких переменных, осуществите вывод на экран факториалов чисел a и b.
    2) Напишите программу для ввода некоторого числа X и вывода факториала этого числа.
    В программе должны использоваться два модуля: модуль для проверки, является ли число X целым и положительным, модуль для вычисления факториала (можно применить модуль, созданный для решения предыдущей задаче).
    Ход работы:
    В тетрадь оформите листинги программ и модулей с комментариями
    1. Основная программа, согласно условию, будет содержать подключение модуля, ввод чисел a и b, вызов функции для каждого числа и вывод результата на экран. Текст программы можно представить так: usees unitF; {подключение модуля} begin writeln(‘введите два числа’); readln(a,b); {ввод переменных, описанных в модуле} f1:=factor(a);{вызов функции, описанной в модуле; вычисление факториала от a} f2:=factor(b); {вызов функции, описанной в модуле; вычисление факториала от b} writeln(‘факториал числа а = ’, f1); writeln(‘факториал числа b = ’, f2); readln; end.
    Модуль создаётся отдельно от основной программы. Его название должно совпадать с именем файла, в котором он записан (unitF). Для удобства использования модули сохраняют с расширениями pas и tpu, т.к. откомпилированный модуль нельзя исправить. В интерфейсной части модуля описываются переменные a, b типа integer и переменные f1, f2 типа longint (для записи результата используется тип с наибольшим диапазоном из целых типов), описывается функция factor. В реализационной части находится не только описание функции, но и сама функция. Инициализационная часть будет пустой. Текст модуля unitF (файлы unitF.tpu и unitF.pas): unit unitF; {заголовок модуля} interface {интерфейсная часть} var a, b: integer; {описание переменных доступных из вызывающий модуль программ}

    22 f1, f2: longint; function factor(x: integer): longint; {описание доступной программам функции} implementation {реализационная часть} function factor(x: integer): longint; {тело функции} var i: inttger; {локальные переменные} f: longint; begin f;=1; for i:= 1 to x do {цикл для вычисления факториала} f:=f*i; factor:=f; {имени функции всегда присваивается результат} end; {завершение функции} end. {закрытие модуля, пустая инициализационная часть}
    Задание 2. Решение этой задачи упрощается тем, что в предыдущей уже разработан модуль для вычисления факториала. Следовательно, необходимо создать ещё один модуль и исправить вызывающую программу. В модуле proverka находится функция: является ли число, от которого вычисляется факториал, положительным и целым, это проверяется так: ost:=x-round(x); {определение дробной части числа x} if (x>=0) and (ost=0) then writeln(‘факториал числа = ’,factor(round(x))) else writeln(‘от данного числа не возможно найти факториал’);
    Если x неотрицательное и целое число, то вызывается функция для вычисления факториала из модуля unitf - factor.
    Практическая работа № 1.4. Разработка алгоритма поставленной задачи
    Цель работы: изучение метода разработки алгоритма поставленной задачи
    Теоретически й материал
    Алгоритм – это последовательность элементарных шагов, выполнение которой позволяет получать однозначный результат (не зависящий от того, кто выполнял эти шаги) или за конечное число шагов прийти к выводу о том, что решения не существует. [3].
    Задача называется алгоритмически неразрешимой, если не существует машины, модели или алгоритма, которые ее бы решали.
    Алгоритм может быть предназначен для выполнения его человеком или автоматическим устройством. Создание алгоритма, пусть самого простого, - процесс творческий. Другое дело – реализация уже имеющегося алгоритма, ее можно поручить субъекту или объекту, который не обязан вникать в существо дела, а возможно, и не способен его понять. Такой субъект или объект принято называть формальным исполнителем. Каждый алгоритм создается в расчете на вполне конкретного исполнителя. Совокупность действий (шагов) образует систему команд исполнителя. Алгоритм должен содержать только те действия, которые допустимы для данного исполнителя.
    Чтобы алгоритм выполнил свое предназначение, его необходимо строить по определенным правилам.
    Первое правило – необходимо задать множество объектов, с которыми будет работать алгоритм. Формализованное (в виде, удобном для записи, поиска и хранения в ПК) представление этих объектов носит название данных. Алгоритм приступает к работе с некоторым набором данных, которые называются входными, в результате своей работы выдает данные, которые называются выходными.
    Второе правило – для работы алгоритма требуется память. В памяти размещаются входные, выходные и промежуточные данные.
    Поименованная ячейка памяти называется переменной. В теории алгоритмов размеры памяти не ограничиваются.
    Третье правило – дискретность.
    Четвертое правило – детерменированность. После каждого шага (действия) необходимо указывать, какой шаг выполняется следующим, либо дать команду остановки.

    23
    Пятое правило – сходимость (результативность). Алгоритм должен завершать работу после конечного числа шагов. При этом необходимо указать, что считается результатом работы алгоритма.
    Виды алгоритмов
    Виды алгоритмов как логико-математических средств:
    механические – или детерминированные, жесткие, задают определенные действия в единственной и достоверной последовательности, обеспечивая однозначный и требуемый результат;
    гибкие – дают последовательность нахождения решения задачи несколькими путями или способами, или это такие алгоритмы, в которых достижение результата однозначно не определено;
    линейные – набор действий, выполняемых во времени последовательно, друг за другом;
    разветвляющиеся – алгоритмы, содержащие хотя бы одно условие, в результате проверки которого программа переходит к одному из двух возможных шагов;
    циклические – алгоритмы, предусматривающие многократное повторение одного и того же действия, но над новыми данными;
    подчиненные (вспомогательные) – алгоритмы, ранее разработанные и целиком использованные при алгоритмизации задачи (обычно на их основе создаются подпрограммы).
    Методы изображения алгоритмов
    На практике распространены формы представления алгоритмов:
    словесная - в виде последовательности записей на естественном языке;
    графическая - в виде совокупности графических знаков;
    псевдокоды – полуформализованное описание алгоритма на условном языке, включающем в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.;
    · программная – текст на языке программирования.
    Выполнение алгоритма в виде блок-схемы перед программированием существенно облегчает процесс создания и отладки программы, определения форматов и перечня переменных, поиск ошибок, редактирование алгоритма в будущем.
    Таблица 1 − Знаки для изображения схем алгоритмов
    Обозначение (графическое изображение)
    Название
    Назначение
    Наименование автофигуры в Word
    Терминатор
    Начало или завершение программы или подпрограммы
    Знак завершения
    Процесс
    Обработка данных
    (вычисления, пересылки т.п.)
    Процесс
    Решение
    Ветвления, выбор, итерационные и поисковые циклы
    Решение
    Данные
    Операции ввода-вывода Данные
    Подготовка
    Счетные циклы
    Подготовка

    24
    Документ
    Вывод на бумагу
    Документ
    Архив
    Данные, хранящиеся в архиве или взятые из архива
    -
    Документ
    Документ, подготовленный вручную
    -
    Файл
    Файл или база данных Магнитный диск
    Предопреде- ленный процесс
    Вызов подпрограмм
    (процедур)
    Типовой процесс
    Источник или приемник данных
    Указание источника или приемника данных
    -
    Монитор
    Вывод информации на экран
    Дисплей
    Соединитель
    Маркировка разрывов линий
    Узел
    Соединитель
    Маркировка разрывов линий
    Ссылка на другую страницу
    Комментарий
    Пояснения к действиям Выноска
    Поток информации
    Линии, связывающие блоки
    Стрелка
    В теории программирования доказано [1, 2], что для записи любого сложного алгоритма достаточно трех базовых структур: следование – последовательное выполнение действий (рис.
    1,а); ветвление – соответствует выбору одного из двух вариантов действий (рис. 1,б); цикл-пока – определяет повторение действий, пока не будет нарушено условие, выполнение которого проверяется в начале цикла (рис. 2).

    25
    Рисунок 1 − Базовые алгоритмические структуры: а) следование, б) ветвление
    Рисунок 2 − Базовая структура: цикл-пока
    На основе базовых структур строятся дополнительные структуры для изображения алгоритмов: выбор (рис. 3), цикл-до, счетный цикл.
    Рисунок 3 − Дополнительная структура «выбор» и реализация ее через базовые структуры
    Рисунок 4 − Дополнительная структура: цикл – до
    Рисунок 5 − Дополнительная структура: цикл с заданным числом повторений (счетный
    цикл).
    На основе алгоритмов создается программное обеспечение (ПО) для решения прикладных задач.
    Выражения

    26
    Все вычисления и другие преобразования данных в программе записываются в виде выражений. Обычно выражение включает несколько операций, которые выполняются в порядке их приоритетности (табл. 2).
    Таблица 2 − Приоритеты, присвоенные операциям
    Операции
    Приоритет
    (булево “не”) х(умножить),/(делить), mod (остаток от деления нацело), ˄ (булево “и”)
    +, -, ˅ (булево “или”)
    > , < , ≥ , ≤ , = (булево “равно”)
    Для изменения порядка выполнения операций используют круглые скобки. В выражениях допускается использование функций (табл. 3, рисунок 1). Им присваивается высший приоритет.
    Таблица 3 − Функции SMath Studio из панели Функции
    Математическая или словесная запись
    Запись в
    SMathStudio
    Математическая или словесная запись
    Запись в
    SMathStudio
    cosx cos(x)
    sinx sin(x)
    Определение знака числа sign(x)
    lnx ln(x)
    ctgx ctg(x)
    tgx tg(x)
    Производная
    e
    x
    exp(x)
    Интеграл
    Сумма ряда чисел (функция
    итерационного сложения)
    Произведение ряда чисел
    (функция итерационного
    умножения)
    Рисунок 1 – Различные виды функций
    Ход работы
    Этап 1. Постановка задачи.Данрадиус окружности R. Вычислить длину окружности.
    Этап 2. Анализ. Из математики известно, что длина окружности
    Этап 3. Проектирование и определение спецификаций. Составим линейный алгоритм для вычисления значения
    (рис. 3). На этом же этапе рассчитаем тестовый пример (рис. 4).
    SMath Studio позволяет выполнять математические вычисления над данными имеющими размерность (в нашей задаче данные и результаты вычислений представлены в метрах).

    27
    Рисунок 3 − Графический линейный алгоритм – следование - для расчета длины окружности.
    Рисунок 4 − Расчет тестового примера в SMath Studio с использованием единиц измерения
    Примечание: важно следить за тем, чтобы все переменные и функции были определены
    левее или выше тех выражений, где они используются.
    Таблица 4 − Спецификация к алгоритму и тестовый пример
    № Наименование
    Обозначение в алгоритме
    Обозначение в программе
    Ед. изм.
    Значение Статус
    Радиус окружности
    R
    R м
    Входной параметр
    Длина окружности
    l
    l м
    6,283
    Выходной параметр
    Этап 4. Расчет тестового примера в SMathStudio (рисунок 5), результат заносится в таблицу 4.

    28
    Рисунок 5 – Увеличение шрифта в SMath Studio
    Список единиц измерения можно узнать с помощью кнопки главного меню (рис. 6).
    Рисунок 6 – Кнопка «Единица измерения»
    Этап 5. Кодирование. Создаем и тестируем программу на PascalABC.
    Примечание: PascalABC является свободно распространяемым программным
    продуктом.
    Можно не устанавливать программу на ПК, а тестировать программы онлайн на сайте
    http://www.pascalabc.net/WDE/
    PROGRAM Primer1;
    VAR R: INTEGER; l: REAL;
    BEGIN
    R:=1; l:=2*PI*R; WRITELN(‘ДЛИНА ОКРУЖНОСТИ l=’, l:4:2);
    END.
    Рисунок 6.1 – Результат онлайн тестирования программы
    Результат работы: разработан алгоритм и программа для решения поставленной задачи; рассчитан тестовый пример для проверки алгоритма и программы.

    29
    Практическая работа № 1.5. Реализация алгоритма поставленной задачи
    средствами автоматизированного проектирования
    Цель работы: изучить способ разработки алгоритма поставленной задачи и реализация его средствами автоматизированного проектирования
    Ход работы
    Задание. Необходимо написать программу, которая будет выполнять действия на матрицами: умножения, сложения, вычитания, транспонирования. Программа должна решать введенные вручную матрицу в форму. Для удобства пользователя программа должна иметь интуитивно понятный интерфейс.
    1. Выбор методов и разработка основных алгоритмов решения
    В программе используется следующий алгоритм работы: в программе есть формы, в которые вводятся элементы матриц, элементы переводятся из String типа в Integer. Затем нужно нажать кнопку соответствующего действия. Выполняется алгоритм решения матриц и результат выводится в элемент DataGridView.
    2. Для построения блок-схем использовалась программа Microsoft Office Visio 2013. С её помощью можно составлять различные диаграммы и схемы, в том числе, блок-схемы.
    Рисунок 1.1 - Блок схема считывания и записи данных из записи в массив
    Рисунок 1.2 - Проверка на доступность для ввода

    30
    Рисунок 1.3 - Блок схема ввода данных в textbox и сравнения с существующим массивом
    Рисунок 1.4 - Вызов метода Vizov с параметрами
    3. Разработка кода программного продукта на основе готовой спецификации на уровне модуля
    Калькулятор матриц реализован на языке программирования C# в среде программирования Microsoft Visual Studio Ultimate 2013. Выбор языка C# обусловлен тем, что он современный и популярный объектно-ориентированный язык программирования, а среда
    Microsoft Visual Studio Ultimate 2013 является мощным средством, позволяющим быстро создать программу, обладающую графическим оконным интерфейсом.
    Макет окна представлен на рисунке 2.1
    Рисунок 2.1 - Оконный интерфейс будущего приложения
    На форме располагается 3 элемента DataGridView, в них будут размещаться матрицы. Так же 4 Button для выполнения действий над матрицами.
    4. Использование инструментальных средств на этапе отладки программного модуля
    При отладке программного продукта необходимо воспользоваться командой меню
    Отладка (рис. 3.1). В меню отладка существуют ряд команд, назначение которых представлено ниже.

    31
    Рисунок 3.1 - Окно меню Отладка
    5. Окна - открывает в интегрированной среде окно Точки останова, которое дает доступ ко всем точкам останова данного решения. Показывает в интегрированной среде окно Вывод.
    6. Окно Вывод - это бегущий журнал множества сообщений, выдаваемых интегрированной средой, компилятором и отладчиком. Поэтому эта информация относится не только к сеансу отладки, а также открывает в интегрированной среде окно Интерпретация, которое позволяет выполнять команды:

    начать отладку - запускает приложение в режиме отладки;

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

    исключения - открывает диалоговое окно Исключения, которое позволяет выбрать способ останова отладчика для каждого исключительного состояния;

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

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

    точка останова - включает или выключает точку останова на текущей (активной) строке кода текстового редактора. эта опция неактивна, если в интегрированной среде нет активного кодового окна;

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

    удалить все точки останова - удаляет все точки останова из текущего решения;

    очистить все подсказки по данным - деактивирует (без удаления) все точки останова текущего решения;

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

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

    тестирование на предельных объемах - проверка работоспособности программы на максимально больших объемах данных, например, объемах текстов, таблиц, большом количестве файлов и т.п.;

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

    32

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

    тестирование защиты - проверка защиты, например, от несанкционированного доступа к информации;

    тестирование производительности - определение пропускной способности при заданной конфигурации и нагрузке;

    тестирование требований к памяти - определение реальных потребностей в оперативной и внешней памяти;

    тестирование конфигурации оборудования - проверка работоспособности программного обеспечения на разном оборудовании;

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

    тестирование удобства установки - проверка удобства установки;

    тестирование надежности - проверка надежности с использованием математических моделей;

    тестирование восстановления - проверка восстановления программного обеспечения, например, системы, включающей базу данных, после сбоев оборудования и программы;

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

    тестирование документации - тщательная проверка документации, например, если документация содержит примеры, то их все необходимо попробовать;

    тестирование процедуры - проверка ручных процессов, предполагаемых в системе.
    8. Естественно, целью всех этих проверок является поиск несоответствий техническому заданию. Считают, что только после выполнения всех видов тестирования программный продукт может быть представлен пользователю или к реализации. Однако на практике обычно выполняют не все виды оценочного тестирования, так как это очень дорого и трудоемко. Как правило, для каждого типа программного обеспечения выполняют те виды тестирования, которые являются для него наиболее важными. Так базы данных обязательно тестируют на предельных объемах, а системы реального времени - на предельных нагрузках.
    1   2   3   4   5   6   7   8   9   ...   24


    написать администратору сайта