Разработка объектно-ориентированной программы разбора математических выражений

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 22.12.2019
Размер файла 1,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

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

В современном мире программные средства и разработки облегчают решение различных задач. В данный момент математические примеры решаются вручную, а значит, затрачивая время человека. Время в современном обществе - главный ресурс. Опираясь на данное утверждение, и выбрана данная тематика курсовой работы.

В данный момент все решения математических выражений осуществляется вручную, и человек может допустить ошибку в решении тех или иных задач. Главное в решении выражений - это правильная последовательность действий.

Объектом разработки является образовательный процесс. И по данной тематике существует решение для сокращения затратов времени и развитию образования, путем наглядного решения простого математического выражения с неизвестными по действиям.

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

Таким образом, основной целью работы является разработка объектно-ориентированной программы разбора математических выражений. Основной задачей выполнения работы является создание эффективной и простой в освоении программы для решения математических выражений.[1]

1. Анализ технического задания

алгебраический цифра скобка алгоритм

Согласно техническому заданию на курсовой проект, необходимо разработать приложение "Разработка объектно-ориентированной программы разбора математических выражений", в дальнейшем именуемая как "программа". Краткое название программы - "Программа Mat". Она предназначена для анализа выражение, его разбора по действиям и с дальнейшим решением.

1.1. Критерии эффективности и качества программы

Данная программная разработка очень проста в освоении и рассчитана не только на профессионалов, но и на рядовых пользователей, работающих в среде MS Windows.

В отличие от других программ "Программа разбора математических выражений " идеально подходит для любителей и опытных пользователей, так как содержит все, что им необходимо для работы.

1.2. Цели разработки программы

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

1.3. Организация входных и выходных данных

В данной программе входной информацией будет являться-выражение, а выходной информацией будет являться-результат выражения.

1.4. Требования к программе

1.4.1 Требования к функциональным характеристикам

Требования к функциональным характеристикам заключаются в способности выполнения программой следующих функций:

1. Программа должна работать с одним пользователем;

2. Программа должна проанализировать выражения и разбить его по действиям;

3. Программа должна распознать неизвестные и вывести запрос для внесения в них чисел;

1.4.2 Временные характеристики

Время восстановления после отказа должно состоять из:

- времени закрытия программы;

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

- времени повторного ввода потерянных данных.

1.4.3 Анализ исключительных ситуаций

При возникновении в ходе работы программы исключительных ситуаций, программа не должна прекращать свою работу при
возникновении исключительных ситуаций - программа должна обработать ситуацию и выдать пользователю сообщение о ней.

1.5 Описание класса

«Decompositor» данный класса позволяет разобрать выражение методом рекурсивного спуска. Данный класс содержит методы, которые позволяют выражение, которое написал пользователь, разобрать по переменным и действиям.[2]

Данный класс включает следующие методы:

1. double Calculate(stringstr);

2. double Base(refstringstr,refint index);

3. double Expr(stringstr,refint index);

4. doubleGetNumber(stringstr, refint index);

5. doubleGetIdentifier(stringstr, refint index);

6. doubleCalcFunction(string name, stringstr,refint index);

8. double Factor(stringstr, refint index);

9. double Term(stringstr,refint index);

1.5.1 Описание методов

doubleCalculate(stringstr)

Данный метод является стартовым для всей программы. Дальнейшие методы являются рекурсией этого метода.

double Base(refstringstr,refint index)

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие скобок в выражении и разбирает выражение внутри скобки.

double Expr(stringstr,refint index)

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие алгебраических операций низшего уровня (сложение и вычитание) и выполняет их с крайними элементами этой операции. Данные метод является рекурсией для метода «base», т.к. в скобках могут быть только алгебраические операций низшего уровня (сложение и вычитание).

doubleGetNumber(stringstr, refint index)

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие цифры и извлекает её. Числа могут быть как целыми, так и с плавающей точкой.

doubleGetIdentifier(stringstr, refint index)

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие неизвестных (идентификаторов) и извлекает их.

doubleCalcFunction(string name, stringstr,refint index)

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие тригонометрических функций и извлекает их. Если в этих функциях есть неизвестные, то он извлекает их в строку с неизвестными name.

doubleFactor(stringstr, refintindex)

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие алгебраических операций низшего уровня (сложение и вычитание) и выполняет их с крайними элементами этой операции.

double Term(stringstr,refint index)

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие алгебраических операций высшего уровня (умножение и деление) и выполняет их с крайними элементами этой операции.[3]

2. Обзор и сравнение аналогов

В данном разделе сравнивается программа курсового проекта(MathParser) с двумя аналогами, «Инженерный калькулятор 2.1» и «Калькулятор Windows 10» .

2.1 Инженерный калькулятор 2.1

Инженерный калькулятор 2.1- Программа для инженерных расчетов. Вычисляет математические выражения, введенные в строку с использованием знаков операций, чисел, констант, функций и скобок. Выражения можно вводить как с клавиатуры, так и с использованием панели инструментов. [4]

Рисунок1 - Инженерный калькулятор 2.1

2.2 Калькулятор Windows 10

Калькулятор Windows 10 - это версия калькулятора для настольных компьютеров под управлением предыдущих Windows,которая поддерживает сенсорный ввод и работает как на телефонах, так и на настольных устройствах.

Рисунок 2 - калькулятор Windows 10

2.3 Сравнение программ

Таблица 1 - сравнение программ

Сильные и слабые стороны

Название программы

Инженерный калькулятор 2.1

Калькулятор

Windows 10

MathParser

Цена

Интерфейс

Использование ячейки памяти

Выведение некорректных ситуаций

Вычисление основных арифметических действий

Решение нелинейных уравнений

Работа с углами в градусной и радианной мерах

Преобразователь

3. Разработка алгоритма

3.1 Описание ключевых методов и их алгоритмы

3.1.1 Общий алгоритм программы

Рисунок 3 - Общий алгоритм программы

3.1.2 Стартовый метод

Данный метод является стартовым для всей программы. Дальнейшие методы являются рекурсией этого метода.

Рисунок 4 - Декомпозиция метода Calculat.

Приведем код по данной блок-схеме:

publicdouble Calculate(stringstr)

{

int index = 0;

str = str.Replace(" ", "");

double result;

try

{

result = Expr(str, ref index);

}

catch(Exception ex)

{

throw ex;

}

if (index <str.Length - 1) thrownew Exception("Некорректныйсимволвпозиции " + (index + 1).ToString());

returnresult;

3.1.3 Сложение и вычитание

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие алгебраических операций низшего уровня (сложение и вычитание) и выполняет их с крайними элементами этой операции. Данные метод является рекурсией для метода «base», т.к. в скобках могут быть только алгебраические операций низшего уровня (сложение и вычитание).

Рисунок 5 - Декомпозиция метода Expr

Приведем код по данной блок - схеме:

double Expr(stringstr,refint index)

{

double result;

char operation;

try

{

result = Term(str, ref index);

while (index <str.Length&&

(str[index] == '+' || str[index] == '-'))

{

operation = str[index];

++index;

switch

(operation)

{

case'+':

{

result += Term(str, ref index);

}

break;

case'-':

result -= Term(str, ref index);

break;

}

}

}

catch(Exception ex)

{

throw ex;

}

returnresult;

}

3.1.4 Умножение и деление

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие алгебраических операций высшего уровня (умножение и деление) и выполняет их с крайними элементами этой операции.

Рисунок 6 - Декомпозиция метода Term

Приведем код по данной блок-схеме:

double Term(stringstr,refint index)

{

double result;

char operation;

double div;

try

{

result = Factor(str, ref index);

while (index <str.Length&&

(str[index] == '*' || str[index] == '/'))

{

operation = str[index];

++index;

switch (operation)

{

case'*':

result *= Factor(str, ref index);

break;

case'/':

div = Factor(str, ref index);

if (div == 0) thrownewDivideByZeroException("Невозможноподелитьнаноль!");

result /= div;

break;

}

}

}

catch(Exception ex)

{

throw ex;

}

returnresult;

}

3.1.5 Проверка наличия алгебраических операций

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие алгебраических операций низшего уровня (сложение и вычитание) и выполняет их с крайними элементами этой операции.

Рисунок 7 - Декомпозиция метода Factor

Приведем код по данной блок-схеме:

double Factor(stringstr, refint index)

{

double result;

if (index >= str.Length) thrownew Exception("Неожиданныйконецстроки");

try

{

switch (str[index])

{

case'+':

++index;

result = Factor(str, ref index);

break;

case'-':

++index;

result = -Factor(str, ref index);

break;

default:

result = Base(refstr, ref index);

if (index <= str.Length - 1 &&str[index] == '^')

{

++index;

result = Math.Pow(result, Factor(str, ref index));

}

break;

}

}catch(Exception ex)

{

throw ex;

}

returnresult;

}

3.1.6 Проверка наличия скобок в выражении

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие скобок в выражении и разбирает выражение внутри скобки.

Рисунок 8 - Декомпозиция метода base

Приведем код по данной блок-схеме:

double Base(refstringstr,refint index)

{

double result;

if (index >= str.Length) thrownew Exception("Неожиданныйконецстроки");

if (str[index] == '(')

{

++index;

try

{

result = Expr(str, ref index);

}

catch(Exception ex)

{

throw ex;

}

if (index >= str.Length || str[index] != ')') thrownewArithmeticException("Ожидается \")\" впозиции");

++index;

}

else

{

if (str[index] >= '0'&&str[index] <= '9')

result = GetNumber(str,ref index);

else

{

if ((str[index] >= 'A'&&str[index] <= 'Z') ||

(str[index] >= 'a'&&str[index] <= 'z') ||

(str[index] == '_'))

{

try

{

result = GetIdentifier(str, ref index);

}

catch(Exception ex)

{

throw ex;

}

}

elsethrownew Exception("Некорректныйсимволвпозиции " + index + 1);

}

}

returnresult;

}

3.1.7 Проверка наличия цифры

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие цифры и извлекает её. Числа могут быть как целыми, так и с плавающей точкой.

Рисунок 9 - Декомпозиция метода GetNumber

Приведем код по данной блок-схеме:

doubleGetNumber(stringstr, refint index)

{

double result = 0.0;

char digit = '\0';

double k = 10.0;

while (index <str.Length)

{

digit = str[index++];

if (digit >= '0'&& digit <= '9')

result = result * 10.0 + (digit - '0');

else

{

--index;

break;

}

}

if (index <str.Length)

digit = str[index++];

if (digit == '.')

{

while (index <str.Length)

{

digit = str[index++];

if (digit >= '0'&& digit <= '9')

{

result += (digit - '0') / k;

k *= 10.0;

}

else

{

--index;

break;

}

}

}

else --index;

return result;

}

3.1.8 Проверка наличия неизвестных (идентификаторов)

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие неизвестных (идентификаторов) и извлекает их.

Рисунок 10 - Декомпозиция метода GetIdentifier

Приведем код по данной блок-схеме:

doubleGetIdentifier(stringstr, refint index)

{

string name = "";

double result;

while (index <str.Length&&

((str[index] >= 'a'&&str[index] <= 'z') || (str[index] >= 'A'&&str[index] <= 'Z') || (str[index] >= '0'&&str[index] <= '9') ||

(str[index] == '_')))

name += str[index++];

if (index <str.Length&&str[index] == '(')

{

++index;

try

{

result = CalcFunction(name, str, ref index);

}

catch (Exception ex)

{

throw ex;

}

if (index >= str.Length || str[index] != ')') thrownewArithmeticException("Ожидается \")\" впозиции " + index + 2);

++index;

}

elseif (vars.ContainsKey(name.ToLower())) result = vars[name.ToLower()];

else

{

try

{

result = Convert.ToDouble(NeedWriteVar(name));

vars.Add(name.ToLower(), result);

}

catch (Exception ex)

{

throw ex;

}

}

returnresult;

}

3.1.9 Проверка наличия тригонометрических функций

Данный метод в строке str, которое хранит выражение, введённое пользователем, в позиции index, проверяет наличие тригонометрических функций и извлекает их. Если в этих функциях есть неизвестные, то он извлекает их в строку с неизвестными name.

Рисунок 11 - Декомпозиция метода CalcFunction

Приведем код по данной блок-схеме:

doubleCalcFunction(string name, stringstr,refint index)

{

try

{

double argument = Expr(str, ref index);

switch (name.ToLower())

{

case"acos":

returnMath.Acos(argument);

case"asin":

returnMath.Asin(argument);

case"atan":

returnMath.Atan(argument);

case"cos":

returnMath.Cos(argument);

case"cosh":

returnMath.Cosh(argument);

case"exp":

returnMath.Exp(argument);

case"log":

returnMath.Log(argument);

case"log10":

return Math.Log10(argument);

case"sin":

returnMath.Sin(argument);

case"sinh":

returnMath.Sinh(argument);

case"sqrt":

returnMath.Sqrt(argument);

case"tan":

returnMath.Tan(argument);

case"tanh":

returnMath.Tanh(argument);

default:

thrownewArgumentException("Неизвестнаяфункция");

}

}

catch(Exception ex)

{

throw ex;

}

}

4. Тестирование

1. Выполним запуск exe-файла данной программы.

Рисунок 12 - Окно программы «Разложение математического выражения».

2. Введём выражение, которое заведомо решили: .

Рисунок 13 - Тестирование программы с использованием степенного выражения

3. На запрос программы о вводе значения переменной, введем значение x=2.

Рисунок 13 - Запрос программы ввода неизвестной.

4. Получаем результат решения равным 15, что является верным, т.к.

.

Рисунок 14 - Вывод ответа

Данная программа может разобрать степенные функции тригонометрические: x^2+6*y+cos(z).

5. На запрос программы о вводе значения переменной, введем значение x=2, y=4, z=0.

Рисунок 15 - Решение выражения с 3 неизвестными и тригонометрической функцией

В случае отсутствия скобки программа выдаст сообщение с номером места отсутствия:

Рисунок 16 - Вывод ошибки при отсутствии скобки.

Все неизвестные должны быть написаны английскими буквами, в противном случае программа выдаст ошибку:

Рисунок 17 - Вывод ошибки при вводе неизвестной

Если тригонометрическая функция будет введена неверно, то программа выдаст ошибку:

Рисунок 18 - Вывод ошибки при вводе неизвестной функции

В случае если происходит деление на нуль, то программа выдаст ошибку:

Рисунок 19 - Вывод ошибки при делении на нуль

5. Руководство пользователя

5.1 Назначение программы

Программа, разработанная в курсовой работе, предназначена для разбора математических выражений. Программа выполняет разбор выражения методом рекурсивного спуска.

5.2 Некорректные ситуации

Программа разбора математических выражений» выводит сообщение об ошибке при некорректных ситуациях.

К некорректным ситуациям относятся:

1.отсутствие закрывающей скобки в выражении;

2. некорректно введенные переменные;

3. некорректно введенная функция;

4. деление на нуль;

5.3 Минимальные системные требования

1. ОС Windows XP и выше.

2. монитор с разрешением 800X600

3. Объем занимаемой оперативной памяти 1,6 Мb.

4. На HDD запускаемый файл с расширением exe занимает 964 Kb.

5. Клавиатура

6. рекомендуется манипулятор типа мышь.

6. Руководство системного администратора

Чтобы установить программу, необходимо скачать папку «Release», со-держащую, в себе 2 файла: Setup.exe и Setup.msi. Открыть файл Setup.msi и в открывшемся мастере установки указать путь, куда будет устанавливаться программа.

Чтобы удалить программу, необходимо запустить файл Delete.exe и вы-брать пункт «Удалить Delete», также можно удалить приложение через панель управления.

6.1 Описание среды программирования

VisuaStudioС# живет по принципу «всякая сущность есть объект». Его причисляют к объектно-ориентированным, а точнее объектным, языкам программирования. «Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода» - так принято характеризовать его. Однако скептики сомневаются как минимум в его безопасности.

Сторонники VisuaStudio С# называют его самым мультипарадигменным, универсальным, продвинутым и удобным в использовании языком программирования. Учитывая тот факт, что за ним стоит платформа Microsoft .NET, число таких сторонников достаточно велико.

6.2 Переменные

Переменная - это именованная область памяти. В переменную можно записывать данные и считывать. Данные, записанные в переменной, называются значением переменной.

6.3 Минимальные системные требования

1. ОС Windows XP и выше.

2. Монитор с разрешением 800X600

3. Объем занимаемой оперативной памяти 1,6 Мb.

4. На HDD запускаемый файл с расширением exe занимает 964 Kb.

5. Клавиатура

6. Рекомендуется манипулятор типа мышь.

Заключение

В процессе выполнения курсовой работы было разработано приложение ОС Windows «Программа разбора математических выражений» в среде программирования C#.

Все цели и задачи, поставленные в работе, были выполнены:

- анализ выражения с неизвестными

- вывод неизвестных с запросом о внесении в них чисел,

- разбор по действиям

- решение выражения

С помощью разработанной программы можно решить выражение с неизвестными.

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

1. C# 5.0. Справочник. Полное описание языка. Авторы: Джозеф Албахари, Бен Албахари. Вильямс, 2013 г. 1008 стр.

Приложение A

Программный код

llFunctions.cs:

using System;

usingSystem.Collections.Generic;

namespaceMathParser

{

classDecompositor

{

private Dictionary<string, double>vars;

public delegate string DecompositorEventHandler(string name);

public event DecompositorEventHandlerNeedWriteVar;

publicDecompositor()

{

vars = new Dictionary<string, double>();

}

doubleGetNumber(string str, ref int index)

{

double result = 0.0;

char digit = '\0';

double k = 10.0;

while (index <str.Length)

{

digit = str[index++];

if (digit >= '0' && digit <= '9')

result = result * 10.0 + (digit - '0');

else

{

--index;

break;

}

}

if (index <str.Length)

digit = str[index++];

if (digit == '.')

{

while (index <str.Length)

{

digit = str[index++];

if (digit >= '0' && digit <= '9')

{

result += (digit - '0') / k;

k *= 10.0;

}

else

{

--index;

break;

}

}

}

else --index;

return result;

}

doubleGetIdentifier(string str, ref int index)

{

string name = "";

double result;

while (index <str.Length&&

((str[index] >= 'a' &&str[index] <= 'z') || (str[index] >= 'A' &&str[index] <= 'Z') || (str[index] >= '0' &&str[index] <= '9') ||

(str[index] == '_')))

name += str[index++];

if (index <str.Length&&str[index] == '(')

{

++index;

try

{

result = CalcFunction(name, str, ref index);

}

catch (Exception ex)

{

throw ex;

}

if (index >= str.Length || str[index] != ')') throw new ArithmeticException("Ожидается \")\" впозиции " + index + 2);

++index;

}

else if (vars.ContainsKey(name.ToLower())) result = vars[name.ToLower()];

else

{

try

{

result = Convert.ToDouble(NeedWriteVar(name));

vars.Add(name.ToLower(), result);

}

catch (Exception ex)

{

throw ex;

}

}

return result;

}

doubleCalcFunction(string name, string str,refint index)

{

try

{

double argument = Expr(str, ref index);

switch (name.ToLower())

{

case "acos":

returnMath.Acos(argument);

case "asin":

returnMath.Asin(argument);

case "atan":

returnMath.Atan(argument);

case "cos":

returnMath.Cos(argument);

case "cosh":

returnMath.Cosh(argument);

case "exp":

returnMath.Exp(argument);

case "log":

returnMath.Log(argument);

case "log10":

return Math.Log10(argument);

case "sin":

returnMath.Sin(argument);

case "sinh":

returnMath.Sinh(argument);

case "sqrt":

returnMath.Sqrt(argument);

case "tan":

returnMath.Tan(argument);

case "tanh":

returnMath.Tanh(argument);

default:

throw new ArgumentException("Неизвестнаяфункция");

}

}

catch(Exception ex)

{

throw ex;

}

}

double Expr(string str,refint index)

{

double result;

char operation;

try

{

result = Term(str, ref index);

while (index <str.Length&&

(str[index] == '+' || str[index] == '-'))

{

operation = str[index];

++index;

switch

(operation)

{

case '+':

{

result += Term(str, ref index);

}

break;

case '-':

result -= Term(str, ref index);

break;

}

}

}

catch(Exception ex)

{

throw ex;

}

return result;

}

double Term(string str,refint index)

{

double result;

char operation;

double div;

try

{

result = Factor(str, ref index);

while (index <str.Length&&

(str[index] == '*' || str[index] == '/'))

{

operation = str[index];

++index;

switch (operation)

{

case '*':

result *= Factor(str, ref index);

break;

case '/':

div = Factor(str, ref index);

if (div == 0) throw new DivideByZeroException("Невозможноподелитьнаноль!");

result /= div;

break;

}

}

}

catch(Exception ex)

{

throw ex;

}

return result;

}

double Factor(string str, ref int index)

{

double result;

if (index >= str.Length) throw new Exception("Неожиданныйконецстроки");

try

{

switch (str[index])

{

case '+':

++index;

result = Factor(str, ref index);

break;

case '-':

++index;

result = -Factor(str, ref index);

break;

default:

result = Base(ref str, ref index);

if (index <= str.Length - 1 &&str[index] == '^')

{

++index;

result = Math.Pow(result, Factor(str, ref index));

}

break;

}

}catch(Exception ex)

{

throw ex;

}

return result;

}

double Base(ref string str,refint index)

{

double result;

if (index >= str.Length) throw new Exception("Неожиданныйконецстроки");

if (str[index] == '(')

{

++index;

try

{

result = Expr(str, ref index);

}

catch(Exception ex)

{

throw ex;

}

if (index >= str.Length || str[index] != ')') throw new ArithmeticException("Ожидается \")\" впозиции");

++index;

}

else

{

if (str[index] >= '0' &&str[index] <= '9')

result = GetNumber(str,ref index);

else

{

if ((str[index] >= 'A' &&str[index] <= 'Z') ||

(str[index] >= 'a' &&str[index] <= 'z') ||

(str[index] == '_'))

{

try

{

result = GetIdentifier(str, ref index);

}

catch(Exception ex)

{

throw ex;

}

}

else throw new Exception("Некорректныйсимволвпозиции " + index + 1);

}

}

return result;

}

public double Calculate(string str)

{

int index = 0;

str = str.Replace(" ", "");

double result;

try

{

result = Expr(str, ref index);

}

catch(Exception ex)

{

throw ex;

}

if (index <str.Length - 1) throw new Exception("Некорректныйсимволвпозиции " + (index + 1).ToString());

returnresult;

}

}

}

Размещено на Allbest.ru

...

Подобные документы

  • Исследование арифметических выражений и разработка простых программ. Таблица переменных для алгоритма и программы. Алгоритм решения, текст программы на языке С. Разработка программы вычисления значений выражений, сравнение результатов с ручным подсчетом.

    лабораторная работа [282,7 K], добавлен 30.01.2015

  • Изучение принципов построения линейных алгоритмов и простых расчетных программ на языке программирования C. Разработка программы расчета математических выражений на основе вводимых данных. Создание консольных приложений в среде Microsoft Visual Studio.

    лабораторная работа [254,4 K], добавлен 23.11.2014

  • Понятие и принципы построения трансляторов. Методика написания программы на языке программирования С++, реализующей определенные действия над математическими выражениями. Написание транслятора с языка математических выражений на язык деревьев вывода.

    курсовая работа [423,3 K], добавлен 24.08.2009

  • Изучение категории типов данных, видов выражений и операций, работа на языке Си. Составление программы вычисления значения функции у(х) при произвольном значении х. Блок-схема алгоритма. Описание текста программы и рассмотрение контрольного примера.

    лабораторная работа [124,7 K], добавлен 09.01.2012

  • Особенности объектно-ориентированного программирования. Основные возможности языка программирования Java, классификация платформ. Создание программы, обеспечивающей вычисление арифметических выражений. Руководство пользователя и характеристика функций.

    курсовая работа [1,2 M], добавлен 07.07.2012

  • Команды преобразования выражений, используемые в системе Maple, их назначение и принцип действия, отличия активной и пассивной формы. Команда simplify () для упрощения выражений, случаи ее применения. Разложение полинома на множители: factor ().

    лабораторная работа [57,8 K], добавлен 15.07.2009

  • Метод Гаусса-Зейделя как модификация метода Якоби, его сущность и применение. Разработка программы решения системы линейных алгебраических уравнений на языке VB, проверка правильности работы программы в MS Excel и математических пакетах MathCad и MatLab.

    курсовая работа [325,5 K], добавлен 27.10.2013

  • Разработка программы тестирования студентов по MS PowerPoint с кодом на языке Delphi. Создание алгоритма для решения функциональных требований задачи. Описание переменных, вспомогательных процедур, входных и выходных данных для реализации программы.

    курсовая работа [1,5 M], добавлен 21.09.2010

  • Комбинированный тип данных для хранения входных данных о студентах и информация, содержащаяся в полях. Пример структуры входных и выходных данных. Алгоритм работы и программный код программы по успеваемости студентов, описание используемых функций.

    курсовая работа [135,9 K], добавлен 28.12.2012

  • Виды записи выражений. Особенности обратной польской записи. Вычисления на стеке. Преобразование из инфиксной нотации. Операторы входного языка. Описание выходной информации. Алгоритмические аспекты программы-распознавателя арифметических выражений.

    курсовая работа [2,1 M], добавлен 26.11.2011

  • Особенности составления программы (сценария) на языке JavaScript. Построение выражений из литералов, переменных, знаков операций, скобок. Элементы, используемые для хранения данных. Приоритет операций, порядок, в котором выполняются операции в выражении.

    лабораторная работа [40,2 K], добавлен 19.09.2019

  • Создание программы решения математических выражений методом трансляции с помощью обратной пользовательской записи на алгоритмическом языке Си. Определение функционального назначения процедур ChartoInt, Scobka и Sumin, представление их в виде блок-схем.

    курсовая работа [267,7 K], добавлен 20.11.2010

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.

    курсовая работа [159,8 K], добавлен 26.01.2010

  • Метод половинного деления при приближенном вычислении алгебраических и трансцендентных выражений. Решение системы уравнений методом Крамера. Блок-схема программы Glav. Описание стандартных и нестандартных процедур и функций, интерфейса. Численные примеры.

    курсовая работа [1,5 M], добавлен 29.07.2013

  • Написание программы для работы с клиентами средствами языка Delphi, которая предусматривает ввод, редактирование и удаление информации. Разработка алгоритма решения задачи, описание переменных, вспомогательных процедур, входных и выходных данных.

    курсовая работа [355,7 K], добавлен 21.09.2010

  • Разработка программы игры в крестики-нолики. Примеры игровой ситуации на игровом поле. Описание входных и выходных данных, переменных и функций программы. Реализация алгоритма работы программы на языке C++. Текст программы и примеры ее выполнения.

    курсовая работа [352,8 K], добавлен 14.04.2011

  • Разработка эскизного и технического проектов программы "Шифр Цезаря": назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка, тест и внедрение программы.

    курсовая работа [563,7 K], добавлен 15.07.2012

  • Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы.

    курсовая работа [700,6 K], добавлен 26.01.2010

  • Создание приложения, которое будет производить построение графиков функций по заданному математическому выражению. Разработка программы "Генератор математических функций". Создание мастера функций для ввода математического выражения, тестирование.

    дипломная работа [1,7 M], добавлен 16.02.2016

  • Команды, используемые при вычислении обыкновенных и частных производных аналитического выражения по одной или нескольким переменным в системе вычислений Maple, при интегрировании аналитических выражений и при вычислении пределов, сумм, рядов функций.

    лабораторная работа [62,1 K], добавлен 15.07.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.