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

7.2. Методика проектирования программы вычисления признаков

Программу вычисления признака вызывает функция "filtr", которая передает и принимает параметры из вызываемой программы. Поэтому программу вычисления признака следует оформлять по определенным правилам (рис.8):

  • задать файлы-расширения

#include <stdio.h>

#include <stdlib.h>

#include <dos.h>

  • определить функцию как int main(int argc, char argv)

  • описать рабочие переменные (см. блок 1 на рис.8);

  • рекомендуется включить блок проверки аргументов командной строки (см. блок 2 на рис.8 );

  • сформировать адреса аргументов командной строки (см. блок 3 на рис.8);

  • спроектировать тело функции ( блок 4 );

  • оформить выход из функции.

Состав аргументов, которые передаются в программу и принимаются из программы, следующий:

argv[1] - сегмент, в котором размещается массив описания объекта;

argv[2] - адрес в сегменте, с которого размещается массив описания объекта;

argv[3] - число столбцов массива описания объекта;

argv[4] - сегмент, в котором размещается информация о номере строки и столбца, анализируемых данных массива описания объекта;

argv[5] - адрес в сегменте, по которому размещается информация о номере строки, анализируемых данных массива описания объекта;

argv[6] - адрес в сегменте, по которому размещается информация о номере столбца, анализируемых данных массива описания объекта;

argv[7] - номер строки массива описания объекта, в который должно быть записано значение вычисляемого признака;

argv[8] - номер столбца массива описания объекта, в который должно быть записано значение вычисляемого признака;

argv[9] -

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

  • возвращаемое значение >= 0 несет информацию о нормальном завершении программы;

  • возвращаемое значение < 0 несет информацию об аварийном завершении программы.

#include <stdio.h>

#include <stdlib.h>

#include <dos.h>

int main( int argc, char argv ){

/* БЛОК 1: описание рабочих переменных */

int ks, RezNum_String, RezNum_Stolb;

unsigned Seg_GreatArray, Offs_GreatArray, Seg_CJK, Offs_CJ, Offs_CK, Offs_KK;

long far *GreatArray, /* массив описания объекта */

*Znach_Priz; /* значение признака */

int far *Num_Stolb, /* номеp просматриваемого столбца */

*Num_String; /* номер просматриваемой строки */

/* БЛОК 2: проверка аргументов командной строки */

if( argc < 10 ) {

printf("\n\a Недостаточно аргументов в командной строке!");

return -2;

}

if( argc > 10 )

printf("\n\a Слишком много аргументов ! Возможна ошибка !");

/*БЛОК 3: формирование адресов из аргументов командной строки */

sscanf( argv[1], "%x", &Seg_GreatArray);

sscanf( argv[2], "%x", &Offs_GreatArray);

sscanf( argv[4], "%x", &Seg_CJK);

sscanf( argv[5], "%x", &Offs_CJ);

sscanf( argv[6], "%x", &Offs_CK);

sscanf( argv[9], "%x", &Offs_KK);

GreatArray = (long far *)(MK_FP( Seg_GreatArray, Offs_GreatArray));

Num_String = (int far *)(MK_FP( Seg_CJK, Offs_CJ));

Num_Stolb = (int far *)(MK_FP( Seg_CJK, Offs_CK));

Znach_Priz = (long far *)(MK_FP( Seg_CJK, Offs_KK));

ks = atoi(argv[3]); /* количество столбцов */

RezNum_String = atoi(argv[7]); /* Результирующий номер строки */

RezNum_Stolb = atoi(argv[8]); /* Результирующий номер столбца */

/* БЛОК 4: операторы тело функции */

<тело функции>

return 1;

}

Рис. 8. Состав программы вычисления признаков

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]