Разработка программного приложения для решения информационнотАУлогических задач

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



Диалог с пользователем будет интерактивным и осуществляется следующим образом:

-введение функции для проверки с клавиатуры пользователем, вывод результата;

-запуск программы пользователя с указанием имени файла, обработка и вывод результата;

-выход из программы.

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

Список использованной литературы

1.Иванова, Г.С. Технология программирования [Текст]: Учебник для вузов / Иванова Г.С. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2002. - 320 с.: ил. - (Информатика в техническом университете). - ISBN 5-7038-2077-4.

2.Полный справочник по С. Четвертое издание [Текст]: Пер. с англ./ Шилдт, Герберт. - М.: Издательский дом Вильямс, 2002. - 704 с.: ил. - Парал. Тит. Англ. - ISBN 5-8459-0226-6 (рус.).

.Теория и реализация языков программирования [Электронный ресурс] / Интернет-Университет Информационных технологий. - Электрон. текст. дан. - Режим доступа: http//www.INTUIT.ru, свободный.

Приложение А

Блок-схема решения задачи арифметического анализа

Приложение Б

Блок-схема алгоритма задачи синтаксического анализа

Приложение В

Исходный код программы арифметического анализа

#include main()

{

*dnf="a&b|b&c";

int form[255][255];j;=0;k;=0;

int dnfsize;=0;

{=dnfsize+1;

}(dnf[dnfsize]!='\0');

max;='a';neqzero;=0;flag;=0;( int i=0 ;i<=dnfsize; i=i+1 )

{

if (dnf[i]=='|')

{=k+1;=0;

}(i!=0 && dnf[i]!='|' && dnf[i]!='&' )

{[j][k]=dnf[i];

=j+1;(dnf[i]!='&')(max<dnf[i])=dnf[i];

}

}z;=max-'a'+1;pow;=1<<z;table2[pow];(int i=0;i<pow;i=i+1)[i]=0;

(int i=0;i<k;i=i+1)

{table[z];(int j=0;j<z;j=j+1)[j]=2;nm;=0;

(int j=0;form[j][i];j=j+1)

{

hgy;=form[j-1][i];( j==0||hgy=='|')

{

(form[j][i]=='!')

{

nmb;=form[j+1][i]-'a';(table[nmb]==1)=1;(table[nmb]==2)[nmb]=0;

(form[j][i]!='!')

{nmb;=form[j][i]-'a';(table[nmb]==0)=1;

if (table[nmb]==2)[nmb]=1;

}

}

}

(nm==0)

{=1;(int j=0;j<pow;j=j+1)

{show;=1;(int k=0;k<z;k=k+1)

{(table[k]!=2)(table[k]==1)

{r;=1<<k;e;

e=j|r;(e!=j)=0;

}(table[k]==0)

{

// заполнение числа 1 и отнимание 1 сдвинутой на к влево

int jh;=max-'a'+2;

int jj;=1<<jh;jk;=1<<k;

int exp;=j&jj-1-jk;(exp!=j)=0;

}

}

(show==1)(table2[j]==0)

{[j]=1;

(flag)

{1:(") & (");;0:(" ( ");=1;;

}

for (int k=0;k<z;k=k+1)

{(k!=0)("|");hg;=j|1<<k;(hg!=j)("!");("%c",k+'a');

}

}

}

}

}

(neqzero)

{0:("1");;1:(" ) \n");;

}

system ("pause");

}

Приложение Г

Исходный код программы синтаксического анализа простой программы на языке С

using System;System.Collections.Generic;System.IO;System.Text;

Program

{List();void test(string expr, string line)

{(expr.EndsWith("++") || expr.EndsWith("--"))

{(!(vars.IndexOf(expr.Substring(0, expr.Length - 2)) > -1))

{.Error.WriteLine("Переменая {0} не обьявлена в выражении {1}, строке {2}", expr.Substring(0, expr.Length - 2), expr, line);

};

}[] nvars = expr.Split(new String[] { "+", "-", "*", "", "==", "!=", "=" }, StringSplitOptions.None);(string var in nvars)

{

if (var != "")

{

{.ToDouble(var);

}(FormatException)

{(vars.IndexOf(var) > -1).Add(var);.Error.WriteLine("Переменая {0} не обьявлена в выражении {1}, строке {2}", var, expr, line);

}

}.Error.WriteLine("В выражении {0} не хватает операндов, в строке {1}", expr, line);

}

}

void Main(string[] args)

{path = args[1];read = new StreamReader(path);code = read.ReadToEnd();(code.IndexOf(" (") != -1)= code.Replace(" (", "(");tmp_code = "", tmp = "";in_for = false;

for (int i = 0; i < code.Length; i++)

{((code[i] == '}') || (code[i] == '{'))

{+= "\n";

}+= code[i];(in_for == true)(code[i] == ')')

{_code += "\n" + tmp.Trim();= "";_code = tmp_code.Trim();_for = false;

}

(in_for == false)(tmp.Trim() == "else")

{_code += "\n" + tmp.Trim() + "\n";_code = tmp_code.Trim();= "";_for = false;

}if (code[i] == ';')

{

(tmp.Trim().StartsWith("for("))

{_for = true;

}

{_code += "\n" + tmp.Trim();_code = tmp_code.Trim();= "";

}

}

((code[i] == '}') || (code[i] == '{'))

{_code += "\n" + tmp.Trim();_code = tmp_code.Trim();= "";

}

}= tmp_code;

[] cod = code.Split('\n');

in_main = false;incl = 0;if_c = 0;need_op = 0;

foreach (string ln in cod)

{line = ln.Trim();(line != "")

{

(line == "int main()")_main = true;(in_main == true)

{