Разработка программного приложения для решения информационнотАУлогических задач
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
Диалог с пользователем будет интерактивным и осуществляется следующим образом:
-введение функции для проверки с клавиатуры пользователем, вывод результата;
-запуск программы пользователя с указанием имени файла, обработка и вывод результата;
-выход из программы.
При тестировании программы выданы были верные результаты.
Список использованной литературы
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)
{