6.3. Загрузочный модуль
На практике, когда речь идет о больших программных разработках (пакетов программ, программных системах) использование рассмотренных модулей недостаточно. Система должна состоять из более независимых модулей, это дает возможность гибкости комплектования, использования, поддержки и т.д. Этим видом модуля является модуль выполняемого кода (загрузочного кода). Создается цепочкой инструментальных средств: редактор - компилятор - компоновщик.
Подключение в языках высокого уровня с использованием подпрограмм библиотеки системы программирования.
В ИС Turbo C (C++) с помощью серий функции exec см заголовочный файл process.h
B ИС Turbo Pascal с помощью функции exe: exес (имя файла) и директивной операции, которая управляет стековой областью памяти ($M …)
Этот вид модуля является самым независимым модулем и применяется в различных программных системах, в частности на этом построены все операционные системы, многие пакеты прикладных программ.
6.4. Статическая библиотека
6.4.1. В системе программирования Turbo Pascal.
Для создания статической библиотеки необходимо воспользоваться утилитой системы программирования TpuMover.exe, которая является менеджером статических библиотек.
Создание библиотеки:
TpuMover my_lib
В результате создаться файл my_lib.tpl. Эта и есть статическая библиотека , но только пустая
Работа с утилитой:
Подключение объектного модуля в статическую библиотеку
TpuMover my_lib+my_file1
Удаление объектного модуля из статической библиотеки
TpuMover my_lib - my_file1
Замена модуля более поздней версией
TpuMover my_lib+- my_file1
Использование статической библиотеки
Также как и объектные модули, только надо убрать все объектные модули из текущей директории оставив только статическую библиотеку.
6.4.2. В системе программирования Turbo C (Turbo C++)
Для создания статической библиотеки необходимо воспользоваться утилитой системы программирования tlib.exe, которая является менеджером статических библиотек.
Создание библиотеки:
tlib.exe my_lib
В результате создаться файл my_lib.tpl. Эта и есть статическая библиотека , но только пустая
Работа с утилитой:
Подключение объектного модуля в статическую библиотеку
tlib.exe my_lib+my_file1
Удаление объектного модуля из статической библиотеки
tlib.exe my_lib- my_file1
Замена модуля более поздней версией
tlib.exe my_lib- my_file1
Использование статической библиотеки
В проектном файле вместо и объектных модулей необходимо указать статическую библиотеку.
Оформление документа Текст программы
Текст программы должен состоять из титульного листа, введения, перечень модулей, текст каждого модуля.
Титульный лист оформляется также как и документ техническое задание, только наименование документа другое. На обложке документа необходимо указать число страниц. Титульный лист считается листом номер 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 – объектный модуль
Листинг программы
Текст модуля 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);
}
Текст модуля 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);
}
Текст модуля 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