Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пр раб Мод программирование.doc
Скачиваний:
1
Добавлен:
17.11.2019
Размер:
122.88 Кб
Скачать

6.3. Загрузочный модуль

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

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

В ИС Turbo C (C++) с помощью серий функции exec см заголовочный файл process.h

B ИС Turbo Pascal с помощью функции exe: exес (имя файла) и директивной операции, которая управляет стековой областью памяти ($M …)

Этот вид модуля является самым независимым модулем и применяется в различных программных системах, в частности на этом построены все операционные системы, многие пакеты прикладных программ.

6.4. Статическая библиотека

6.4.1. В системе программирования Turbo Pascal.

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

  1. Создание библиотеки:

TpuMover my_lib

В результате создаться файл my_lib.tpl. Эта и есть статическая библиотека , но только пустая

  1. Работа с утилитой:

Подключение объектного модуля в статическую библиотеку

TpuMover my_lib+my_file1

Удаление объектного модуля из статической библиотеки

TpuMover my_lib - my_file1

Замена модуля более поздней версией

TpuMover my_lib+- my_file1

  1. Использование статической библиотеки

Также как и объектные модули, только надо убрать все объектные модули из текущей директории оставив только статическую библиотеку.

6.4.2. В системе программирования Turbo C (Turbo C++)

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

  1. Создание библиотеки:

tlib.exe my_lib

В результате создаться файл my_lib.tpl. Эта и есть статическая библиотека , но только пустая

  1. Работа с утилитой:

Подключение объектного модуля в статическую библиотеку

tlib.exe my_lib+my_file1

Удаление объектного модуля из статической библиотеки

tlib.exe my_lib- my_file1

Замена модуля более поздней версией

tlib.exe my_lib- my_file1

  1. Использование статической библиотеки

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

Оформление документа Текст программы

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

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

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

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

- имя модуля,

- функция модуля,

- список подпрограмм находящихся в модуле,

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

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

В разделе Листинги модуля приводятся тексты модулей. Каждый модуль оформляется как подраздел, где указывается имя модуля и его функция. Каждый модуль должен быть оформлен в соответствии с правилами хорошего стиля программирования, т.е. иметь: вводный комментарий, комментарий по тексту, отступы, имена идентификаторов должны нести смысловую нагрузку и т.д..

10. Типовые ошибки.

№ п/п

Проявление ошибки

Место ошибки (локализация)

Что было

Как надо

1.

2.

8. Примеры:

8.1. Пример на языке программирования С

Решаемая задача: Разработать программу по определению отклонения значения элементов массива от среднего значения.

Уточнение задания : Дан массив m из n элементов

n

M средн =  mas;

i=1

m otkl i = m i - m средн

Табл. 1. Список модулей в программе «»

п/п

Имя блока

Функция блока

Имя модуля

Тип модуля

Example4

Ядро программы

Example4

основной

Exempl4_1

Ввод элементов массива

Vvod

исходный

Exempl4_2

Определение среднего значения

Sredn

объектный

Определение отклонения от среднего значения

Otkl

Вывод элементов массива

Vivod

Пояснения

1.В файле Exempl4_2 описаны идентификаторы Sredn,otkl,vivod, а используются эти идентификаторы в файле Exempl4.

2.Исходный текст программы состоит из 3 файлов:

  • Example4.c – основной модуль

  • Exempl4_1.c - исходный модуль

  • Exеmpl4_2.c – объектный модуль

  1. Листинг программы

    1. Текст модуля exmpl4.c

/*************************************************************

* Программа определения отклонения от среднего *

* ----------------------------------------------------- *

* файл exmpl4.c содержит функцию main, в которой *

* используются функции, находящиеся в файлах: *

* еxmpl4_1.c, exmpl4_2.c *

*************************************************************/

#include <stdio.h>

#include "exmpl4_1.c"

extern float o_sredn (float *xx,int n);

extern int otkl (float *xx,int n,float sredn,float *yy);

extern int vivod (float *yy,int n);

void main(void)

{

float x[20];

int n;

float y[20];

float sredn;

n=vvod(x);

sredn=o_sredn(x,n);

n=otkl(x,n,sredn,y);

n=vivod(y,n);

}

    1. Текст модуля exmpl4_1c

/*************************************************************

файл exmpl4_1.c

* ----------------------------------------------------- *

* содержит функции vvod *

*************************************************************/

int vvod (float *xx)

{

int i,k;

printf("\nПрограмма определения отклонения от среднего");

printf("\nРазмер последовательности:");

scanf("%d",&k);

printf("\nВвод последовательности:");

for(i=0; i<k; i++) scanf("%f",&xx[i]);

return (k);

}

    1. Текст модуля exmpl4_2.c

/*************************************************************

файл exmpl4_2.c

* ----------------------------------------------------- *

* содержит функции o_sredn, otkl, vivod *

*************************************************************/

float o_sredn (float *xx,int n)

{

int i;

float sr;

sr=0.0;

for(i=0;i<n;i++) sr+=xx[i];

sr=sr/n;

return (sr);

}

int otkl (float *xx,int n,float sr,float *yy)

{

int i;

for(i=0; i<n; i++) yy[i]=xx[i]-sr;

return(i);

}

int vivod (float *yy,int n)

{

int i;

for(i=0; i<n; i++) printf(" %5.2f ",yy[i]);

return i;

}

/********************************************************************/

Диаграмма внешних связей

Exeml4

Exeml4_1

Exempl4_2

vvod

Sredn,otkl,vivod

Рисунок 1. – Диаграмма внешних связей для примера 1

8.2. Пример на языке программирования PASCAL

Program exemp

Uses Crt,Summa;

Var

a: array[1..10] of integer;

i,n: integer;

Begin

Vv(a,n);

Writeln(“Сумма= ”, Sum(a,n));

End.

Unit Vvod;

Interfase

Uses Crt;

Procedure Vv(Var b: array of integer; Var k:integer):integer;

Implementation

Procedure Vv(Var b: array of integer; Var k:integer):integer;

Var s,i:integer;

Begin

Write(“Количество элементов в массиве: “);

Readln(k);

Writeln(“Элементы массива: “);

for i:=1 to k do Read(a[i]);

Readln;

End;

End.

Unit Summa;

Interfase

Function Sum(b: array of integer; k:integer):integer;

Implementation

Function Sum(b: array of integer; k:integer):integer;

Var s,i:integer;

Begin

s:=0;

for i:=1 to k do s:=s+b[i];

Sum:=s;

End;

End.

Exemp

Vvod

Summa

Vv

Sum

Рисунок 2. – Диаграмма внешних связей для примера 2