Помощь в написании студенческих работ
Антистрессовый сервис

Вариант 2

Курсовая Купить готовую Узнать стоимостьмоей работы

While (strcmp (command, «return») ≠ NULL && strcmp (command, «stop») ≠ NULL). Fprintf (m_pRunResFile, «%s, %sn», (*pseudVec1). c_str (), (*pseudVec2). c_str ()); Printf («Using of unknown program name %snProcessing is terminatedn», procName); Int finishNamesIdx = startNamesIdx + m_blocNameTable. m_rangeInLocalNames.m_numRows; If (strcmp (pseudVec1. c_str (), m_localNameTable. m_name.c_str… Читать ещё >

Вариант 2 (реферат, курсовая, диплом, контрольная)

Содержание

  • 1. Постановка задачи
  • 2. Описание программной модели
  • 3. Результаты тестирования программы
  • Заключение
  • Литература

clear ();

for (i = startNamesIdx; i < finishNamesIdx; i++)

{

for (j = 0; j < m_centralTableOfNames.size (); j++)

{

if (strcmp (m_localNameTable[i]. m_name.c_str (), m_centralTableOfNames[j]. m_identName.c_str ()) == NULL)

break;

}

if (j == m_centralTableOfNames.size ())

return 0;

if (m_centralTableOfNames[j]. m_flag == 1)

{

centralTableOfNamesPrev.push_back (m_centralTableOfNames[j]);

}

m_centralTableOfNames[j]. m_flag = 1;

m_centralTableOfNames[j]. m_procName = procName;

for (j = 0; j < pseudVec1. size (); j++)

{

if (strcmp (pseudVec1[j]. c_str (), m_localNameTable[i]. m_name.c_str ()) == NULL)

{

pseudVec1.erase (pseudVec1.begin () + j);

pseudVec2.erase (pseudVec2.begin () + j);

j—;

}

}

}

// print local names table

RunProcedureDynamicOutput (procName, &pseudVec1, &pseudVec2);

m_returnAddressStack.push_back (m_IP + 1);

m_IP = m_blocNameTable[blockNameID]. m_rangeInCodeTable.m_firstID;

const char *command = m_codeTable[m_IP]. c_str ();

while (strcmp (command, «return») ≠ NULL && strcmp (command, «stop») ≠ NULL)

{

string procName1;

IdentefierVector paramsVec1;

TranclateCommand (command, &procName1, ¶msVec1);

//check on using of undescribed name

if (paramsVec1.size () > 0)

{

for (i = 0; i < paramsVec1. size (); i++)

{

for (j = startNamesIdx; j < finishNamesIdx; j++)

{

if (strcmp (paramsVec1[i]. c_str (), m_localNameTable[j]. m_name.c_str ()) == 0)

break;

}

if (j == finishNamesIdx)

{

printf («Using of undefined parameter %s in program %snProcessing is terminatedn», paramsVec1[i]. c_str (), procName);

fprintf (m_pRunResFile, «Èñïîëüçîâàíèå íåèçâåñòíîãî ïàðàìåòðà %s â ïðîãðàììå %sn», paramsVec1[i]. c_str (), procName);

return -2;

}

}

}

int res = RunProcedureDynamic (procName1.c_str (), ¶msVec1);

if (res < 0)

return res;

RunProcedureDynamicOutput (procName, &pseudVec1, &pseudVec2);

command = m_codeTable[m_IP]. c_str ();

}

if (strcmp (command, «stop») ≠ NULL)

{

m_IP = m_returnAddressStack.back ();

m_returnAddressStack.pop_back ();

}

// restore central names table

for (i = startNamesIdx; i < finishNamesIdx; i++)

{

for (j = 0; j < m_centralTableOfNames.size (); j++)

{

if (strcmp (m_localNameTable[i]. m_name.c_str (), m_centralTableOfNames[j]. m_identName.c_str ()) == NULL)

break;

}

if (j == m_centralTableOfNames.size ())

return 0;

m_centralTableOfNames[j]. m_flag = 0;

m_centralTableOfNames[j]. m_procName = «» ;

}

for (i = 0; i < centralTableOfNamesPrev. size (); i++)

{

for (j = 0; j < m_centralTableOfNames.size (); j++)

{

if (strcmp (centralTableOfNamesPrev[i]. m_identName.c_str (), m_centralTableOfNames[j]. m_identName.c_str ()) == NULL)

break;

}

if (j == m_centralTableOfNames.size ())

return 0;

m_centralTableOfNames[j]. m_flag = 1;

m_centralTableOfNames[j]. m_procName = centralTableOfNamesPrev[i]. m_procName;

}

return 1;

}

void Modelling: RunProgaram ()

{

if (!m_pFile — !m_pCompResFile — !m_pRunResFile)

return;

for (int i = 0; i < m_blocNameTable.size (); i++)

{

if (strcmp (m_blocNameTable[i]. m_name.c_str (), m_progName) == NULL)

break;

}

if (i == m_blocNameTable.size ())

{

return;

}

m_IP = m_blocNameTable[i]. m_rangeInCodeTable.m_firstID;

IdentefierVector paramsVec;

if (m_scopeType == 1)

{

RunProcedureStatic (m_progName, ¶msVec);

}

else if (m_scopeType == 2)

{

RunProcedureDynamic (m_progName, ¶msVec);

}

}

void Modelling: RunProcedureStaticOutput (const char* procName,

const std: vector* pseudVec1,

const std: vector* pseudVec2)

{

int i;

// print display

fprintf (m_pRunResFile, «Âûïîëíåíèå áëîêà %snn», procName);

for (i = 0; i < m_display.size (); i++)

{

fprintf (m_pRunResFile, «Ññûëêà íà äàííûå áëîêà %sn», m_display[i]. m_procName.c_str ());

}

// print pseudonyms

fprintf (m_pRunResFile, «nÑïèñîê ïñåâäîíèìîân»);

if (pseudVec1->size () == 0)

fprintf (m_pRunResFile, «-n»);

for (i = 0; i < pseudVec1->size (); i++)

{

fprintf (m_pRunResFile, «%s, %sn», (*pseudVec1)[i]. c_str (), (*pseudVec2)[i]. c_str ());

}

fprintf (m_pRunResFile, «nn»);

}

int Modelling: RunProcedureStatic (const char* procName, const std: vector* paramsVec)

{

int blockNameID;

for (blockNameID = 0; blockNameID < m_blocNameTable.size (); blockNameID++)

{

if (strcmp (m_blocNameTable[blockNameID]. m_name.c_str (), procName) == NULL)

break;

}

if (blockNameID == m_blocNameTable.size ())

{

printf («Using of undefined program name %snProcessing is terminatedn», procName);

fprintf (m_pRunResFile, «Îáíàðóæåíî èñïîëüçîâàíèå íåèçâåñòíîé ïðîãðàììû %sn», procName);

return -2;

}

int startNamesIdx = m_blocNameTable[blockNameID]. m_rangeInLocalNames.m_firstID;

int finishNamesIdx = startNamesIdx + m_blocNameTable[blockNameID]. m_rangeInLocalNames.m_numRows;

int i, j;

// build pseudonyms vectors

IdentefierVector pseudVec1;

IdentefierVector pseudVec2;

for (i = finishNamesIdx — 1, j = 0; i >= startNamesIdx && j < paramsVec->size (); i—)

{

if (m_localNameTable[i]. m_identType == itParamV)

{

pseudVec1.push_back ((*paramsVec)[j]);

pseudVec2.push_back (m_localNameTable[i]. m_name);

j++;

}

if (m_localNameTable[i]. m_identType == itParam)

{

j++;

}

}

// search procName in SC

for (i = m_display.size () — 1; i >= 0; i—)

{

for (j = m_display[i]. m_RefSC.m_firstID; j < m_display[i]. m_RefSC.m_firstID + m_display[i]. m_RefSC.m_numRows; j++)

{

if (strcmp (m_staticChain[j]. m_identName.c_str (), procName) == NULL)

{

break;

}

}

if (j ≠ m_display[i]. m_RefSC.m_firstID + m_display[i]. m_RefSC.m_numRows)

{

break;

}

}

if (strcmp (procName, m_progName) ≠ NULL)

{

if (i == -1)

{

printf («Using of unknown program name %snProcessing is terminatedn», procName);

fprintf (m_pRunResFile, «Îáíàðóæåíî èñïîëüçîâàíèå íåèçâåñòíîé ïðîãðàììû %sn», procName);

return -2;

}

else if (m_staticChain[j]. m_identType ≠ itProc)

{

printf («%s is not procedure namenProcessing is terminatedn», procName);

fprintf (m_pRunResFile, «%s íå ÿâëÿåòñÿ èìåíåì ïðîãðàììûn», procName);

return -2;

}

}

// update display

std:vector displayPrev;

displayPrev.clear ();

if (i > -1)

{

displayPrev.assign (m_display.begin () + i + 1, m_display.end ());

m_display.resize (i + 1);

}

DisplayRec addedDispRec;

addedDispRec.m_RefSC.m_firstID = m_staticChain.size ();

addedDispRec.m_RefSC.m_numRows = finishNamesIdx — startNamesIdx;

addedDispRec.m_procName = procName;

m_display.push_back (addedDispRec);

StaticChainRec addedSCRec;

for (i = startNamesIdx; i < finishNamesIdx; i++)

{

addedSCRec.m_identName = m_localNameTable[i]. m_name;

addedSCRec.m_identType = m_localNameTable[i]. m_identType;

m_staticChain.push_back (addedSCRec);

// remove false pseudonyms

for (j = 0; j < pseudVec1. size (); j++)

{

if (strcmp (pseudVec1[j]. c_str (), m_localNameTable[i]. m_name.c_str ()) == NULL)

{

pseudVec1.erase (pseudVec1.begin () + j);

pseudVec2.erase (pseudVec2.begin () + j);

j—;

}

}

}

// print local names table

RunProcedureStaticOutput (procName, &pseudVec1, &pseudVec2);

m_returnAddressStack.push_back (m_IP + 1);

m_IP = m_blocNameTable[blockNameID]. m_rangeInCodeTable.m_firstID;

const char *command = m_codeTable[m_IP]. c_str ();

while (strcmp (command, «return») ≠ NULL && strcmp (command, «stop») ≠ NULL)

{

string procName1;

IdentefierVector paramsVec1;

TranclateCommand (command, &procName1, ¶msVec1);

//check on using of undescribed name

if (paramsVec1.size () > 0)

{

int k;

for (i = 0; i < paramsVec1. size (); i++)

{

for (j = 0; j < m_display.size (); j++)

{

for (k = m_display[j]. m_RefSC.m_firstID; k < m_display[j]. m_RefSC.m_firstID + m_display[j]. m_RefSC.m_numRows; k++)

{

if (strcmp (paramsVec1[i]. c_str (), m_staticChain[k]. m_identName.c_str ()) == 0)

break;

}

if (k ≠ m_display[j]. m_RefSC.m_firstID + m_display[j]. m_RefSC.m_numRows)

{

break;

}

}

if (j == m_display.size ())

{

printf («Using of undefined parameter %s in program %snProcessing is terminatedn», paramsVec1[i]. c_str (), procName);

fprintf (m_pRunResFile, «Èñïîëüçîâàíèå íåèçâåñòíîãî ïàðàìåòðà %s â ïðîãðàììå %sn», paramsVec1[i]. c_str (), procName);

return -2;

}

}

}

RunProcedureStatic (procName1.c_str (), ¶msVec1);

RunProcedureStaticOutput (procName, &pseudVec1, &pseudVec2);

command = m_codeTable[m_IP]. c_str ();

}

if (strcmp (command, «stop») ≠ NULL)

{

m_IP = m_returnAddressStack.back ();

m_returnAddressStack.pop_back ();

}

// restore display

m_staticChain.resize (m_display.back ().m_RefSC.m_firstID);

m_display.pop_back ();

for (i = 0; i < displayPrev. size (); i++)

{

m_display.push_back (displayPrev[i]);

}

return 1;

}

Показать весь текст

Список литературы

  1. Т. Языки программирования: разработка и реализация. — М.: Мир. 1979. -580с.
  2. В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. — М.: «Нолидж», 1997. — 616с.
  3. Б. Страуструп. Язык программирования С++. — М.: «Бином», 2001, 1114с.
Заполнить форму текущей работой
Купить готовую работу

ИЛИ