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

7.3. Методика проектирования программы оформления решения

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

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

#include <stdio.h>

#include <stdlib.h>

#include <dos.h>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#include <stdio.h>

#include <stdlib.h>

#include <dos.h>

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

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

int ks, i, j, RezNum_String, RezNum_Stolb;

unsigned Seg_GreatArray, Offs_GreatArray, Seg_CJK, Offs_CJ, Offs_CK;

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

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

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

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

if( argc < 9 ){

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

return -2;

}

if( argc > 9 )

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);

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));

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

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

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

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

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

return 1;

}

Рис. 9. Состав программы оформления решения

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

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

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