Как написать формулу в visual studio

Обновлено: 07.07.2024

Авторы - И. А. Гурин, Н. А. Спирин, В. В. Лавров, ФГАОУ ВО «Уральский федеральный университет имени первого Президента России Б.Н. Ельцина», г. Екатеринбург, Россия.

Введение

Создание математической библиотеки

Отличительной особенностью MATLAB от других математических пакетов является наличие средств, которые позволяют использовать функционал, созданный в MATLAB, при разработке автономных приложений. Такая возможность реализуется с помощью продукта MATLAB Compiler. Данный продукт позволяет собирать модули в виде [1]:

Приложения и библиотеки, созданные с помощью MATLAB Compiler, используют свободно распространяемое исполняемое ядро, называемое MATLAB Compiler Runtime (MCR). Это позволяет запускать приложения, которые используют MATLAB-функции, без необходимости установки дорогостоящей копии MATLAB.

Одним из инструментов для создания математических библиотек или внешних компонентов является Deployment Tool, представляющий собой графический интерфейс. Вызов данного инструмента осуществляется командой deploytool. На рисунке 1 представлено стартовое окно Deployment Tool, на котором предлагается выбрать тип и создать новый проект.


Рис. 1. Стартовое окно инструмента Deployment Tool в MATLAB

Рассмотрим решение задачи линейного программирования в пакете MATLAB. Решение осуществляется с помощью функции linprog [3]. Функция linprog решает задачу линейного программирования в форме:


Основными входными данными функции linprog являются: вектор коэффициентов целевой функции f, матрица ограничений-неравенств A, вектор правых частей ограничений - неравенств b, матрица ограничений - равенств Aeq, вектор правых частей ограничений - равенств beq, вектор lb, ограничивающий план x снизу, вектор ub, ограничивающий план x сверху. На выходе функция linprog даёт оптимальный план x задачи (1) и экстремальное значение целевой функции fval.

Листинг функции MOptimaGaz решения задачи линейного программирования:

Стоит заметить, что при решении практической задачи не использовались ограничения - равенства, поэтому матрица Aeq и вектор beq не передаются как входные параметры, а принимают пустые значения.

Таким образом, в MATLAB был создан проект MOptimaGaz с классом MClassOptimaGaz и функцией MOptimaGaz. Для использования написанных функций проект компилируется в динамически подключаемую библиотеку DLL.

Подключение библиотеки и ее использование


Рис. 2. Окно добавления ссылки на сборку в Visual Studio

Отметим обязательность соблюдения разрядности MATLAB и создаваемого программного обеспечения. Также замечена нестабильность работы при работе с 64-разрядной архитектурой, поэтому при разработке использовалась 32-разрядная версия MATLAB.

Для использования библиотеки необходимо добавить описание пространства имен:

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

Из программы опущен блок, присваивающий переменным lb, ub, Aeq, beq и f значения. Если решение не найдено, то результат содержит пустой массив.

Заключение

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

Кетков Ю.Л. "MATLAB 7: программирование, численные методы" – Спб.: БХВ- Петербург, 2005. – 752 с.

Ключове слово

Псевдонім класу бібліотеки NET

Розмір (байт)

Рядок символів Unicode

Иерархия классов NET Framework имеет один общий корень - класс System.Object. Все типы разделяются на две категории: размерные типы и ссылочные типы.

При создании переменной размерного типа под нее в стеке вы­деляется определенный объем памяти, соответствующий типу этой переменной. При передаче такой переменной в качестве параметра выполняется передача значения, а не ссылки на него. Значение раз­мерного типа не может быть равным null. К размерным типам, на­пример, относятся целочисленные и вещественные типы, структу­ры.

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

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

static void Main(string[] args)

Ключевое слово static определяет, что метод Main является статическим методом, вызываемым без создания экземпляра объек­та типа класса, в котором этот метод определен. Метод, не возвра­щающий никакого значения, указывается с ключевым словом void. Однако метод Main может возвращать значение типа int.

static void Main()

Console.WriteLine("Уpa!\n Сегодня \"Информатика\". ");


Замечание. Для отладки можно использовать команду меню Debug\Start Without Debugging. На экране появится окно с резуль­татом исполнения. Обратите внимание на надпись в конце прог­раммы: Press any key to continue, которая не была предусмотрена. При нажатии любой клавиши окно закрывается. Это результат сра­батывания встроенной разработчиками компилятора функции «ос­тановки экрана» для того, чтобы можно было бы сколь угодно дол­го его рассматривать.

Можно использовать команду Debug\Start Debugging, но тогда окно закроется и мы не сможем рассмотреть искомый результат. Для того чтобы обойти это неудобство, следует при разработке про­граммы предусмотреть собственную остановку экрана. Для этого используется команда Console.Read();

Это неизменяемые в процессе выполнения программы вели­чины.

Целые константы - наиболее распространенный тип int. Это целое число, которое может быть отрицательным, положительным или нулем -12, 5, 0 (все целые со знаком 32 бита). Их можно за­писывать с суффиксом -12L (длинное целое 64 бита), 5u (целое без знака 8 бит)

Вещественные константы с фиксированной точкой. При за­писи константы типа float(32 бита) необходимо, чтобы за значе­нием шел суффикс символ f или F 1.2, -1.234, при записи конс­танты типа double (64 бита) можно записать суффикс «d» или «D», но это не является обязательным условием: 1234.5678, 12.3d. Дробная часть отделяется от целой части точкой.

Вещественные константы с плавающей точкой. При записи константы типа float(32 бита) необходимо, чтобы за значением шел суффикс символ f или F: 1.2E-3f (число 0.0012), при запи­си константы типа double (64 бита) -1.34E5 (число -134000) на­личие суффикса не требуется.

Символьные константы. Символьная константа char может представлять собой 16-битный символ Unicode ('a') или управ­ляющие символы (возврат каретки ('\r'), перевод страницы ('\f'), горизонтальную табуляцию ('\t'), и другие), заключенный в апо­строфы.

Строковые константы - это последовательность символов, заключенная в кавычки, или константы string. Строка, состоящая из символов, например "Уpa!\n Сегодня \"Информатика\". "

Именованные константы. Применяются для того, чтобы вме­сто значений констант, использовать в программе их имена, напри­мер константа р вещественная одинарной точности

const float p = 3.14159f

Переменная - именованная область памяти, для хранения дан­ных определенного типа. При выполнении программы значение пе­ременной величины можно изменять. Все переменные должны быть описаны явно, при описании переменной задается ее значение и тип. При объявлении переменной может быть задано начальное значение.

Имя переменной может содержать буквы, цифры и символ под­черкивания. Прописные и строчные буквы различаются. Например, переменные Long, LONG, long - три разных переменные.

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

Правильные имена переменных: MaxLen, iMaxLen, Max_Len

Примеры описания переменных:

int a = -14; // числовая целая 32 бита

float c = -0.00151f; // числовая вещественная 32

double i = 1234.56789; // числовая вещественная 64

bool l = false; // логическая 16 бит

string name = "Petrov"; // строковая

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

Примеры выражений:

2 * 2 + 1 полученное значение 5

1 / 2 - 3 полученное значение -3

1 / 2 - 3 полученное значение -2.5

Присвоение значения переменной представляет оператор прис­ваивания (знаки основных операций приведены в таблице 1.2) : y = 2*x*x + 3*x - 1.

В этом примере сначала производятся вычисления правой час­ти оператора присваивания « = », а затем полученное значение присваивается переменной у. Для текстовых данных выражение можно записать в следующем виде:

string kaf = "Кафедра" + "ПМиСИ";

В этом примере строки по правую сторону от оператора прис­ваивания объединяются, чтобы получить строку "Кафедра + ПМиСИ", которая затем присваивается переменной kaf.

Таблица 1.2 Знаки операций

Знак операции

Остаток от деления

Если в арифметических выражениях используются целые чис­ла, то результатом вычислений будет целое число, и любой оста­ток от деления будет отброшен. Для получения остатка можно ис­пользовать соответствующую операцию %, например 10 % 3 воз­вращает остаток от целочисленного деления, равный 1.

Когда в арифметических выражениях используются числа с плавающей точкой, то результатом деления 10f / 3f будет число 3,333333.

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

Замечание. Использование нескольких функций с одним и тем же именем, но с различными типами параметров, называется пере­грузкой функции. Например, функция Math.Abs(), вычисляющая модуль числа, имеет 7 перегруженных версий: double Math.Abs (double x), float Math.Abs (float x), int Math.Abs(int x), и т. д. (таблица 1.3)

Среда Visual Studio снабжена текстовым редактором, компиляторами, сборщиком, отладчиком. Работа начинается с создания проекта:

- создайте новый проект в каталоге с именем File|New|New Project|Intel Visual Fortran|Console Application;

- задайте внизуимяпроекта в поле Name;

- внизу через <Browse> выберите место Location для размещения проекта myProj;

- нажмите кнопку <Ok> – создать проект.

Варианты включения программы в состав проекта по правой кнопке мыши:

1. включить в проект ранее написанную программу lab.f90 через меню Source|File project ==> выбрать lab.f90;

2. создать текст программы lab.f90 в Visual Studio и включить в проект.

Создание текста программы lab.f90 в Visual Studio:

- выбрать правой кнопкой мыши в меню Source|New|Text;

- набрать текст программы;

- задать имя программы lab1.f90 и выбрать место для размещения программы myProj;

- щелкнув правой кнопкой мыши, выбрать в контекстном меню Compile для компиляции.

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

- исходные данные, которые можно создать, как новый текст через меню Insert|File into project, чтобы myProj/in.txt при выполнении программы читались, как данные из файла в папке проекта с именем, указанным в операторе open;

- текст результатов под именем, указанным в операторе open.

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

Тексты программы и результатов составят распечатку для отчета.

Вызов среды проектирования - это ярлычок MSVisual Studio. Чтобы закончить работу с программой и сохранить всю информацию, достаточно закрыть приложение, щелкнув по крестику в верхнем правом углу окна приложения.

При повторном входе надо открыть последний проект.

Варианты создания приложения – переключатель Debug|Release:

- Debug – отладочный вариант приложения (выполнение <F5>) ;

- Release – чистовой вариант приложения (выполнение <Ctrl>+<F5>).

Варианты запуска программы на выполнение:

- после коррекции щелкните на панели инструментов по “стрелке вправо” – компилируется, компонуется и выполняется программа в отладочном режиме;

- то же самое, что “стрелка вправо”, <F5> на панели инструментов.

Дополнительные возможности по отладке программы:

- Start Debug – продолжить программу (выполнение <F5>) ;

- <F10> – пошаговая отладка, без «входа» в процедуры;

- <F11> – вместо <F10>, чтобы не «нырять» в процедуры;

- по правой кнопке мыши Run to Cursor – идти в отладке до места, указанного курсором;

- чередуя <F10> , Run to Cursor, <F11>, <F5> при «хитрой» отладке;

- мышку навести на переменную – появится её значение;

Отладочный вариант приложения (Debug) работает под Windows-Vista и Windows-7.

Дополнительные возможности без отладки:
- выполнение <Ctrl>+<F5>;

- либо через меню Build|execute lab1.exe с паузой для просмотра консоли.

Инструкция по работе в Plato IDE Studio

Среда разработки программ Plato IDE Studio для обучения Fortran. Студия Plato IDE снабжена текстовым редактором, компиляторами, сборщиком, отладчиком. Работа начинается с создания проекта:

- создайте папку d:/PROJ для хранения проектов;

- в папке проектов d:/PROJ создайте папку myProj под новый проект;

- в одной папке может быть лишь один проект.

Создайте новый проект в каталоге с именем myProj
File|New Project|Fortran Application:

- задайте снизу имяпроекта в поле Name;

- через <Browse> выберите место Location для размещения проекта myProj в папке d:/PROJ и нажмите кнопку <Open>, чтобы создать проект.

Варианты включения программы в состав проекта:

1) создать новый текст программы Lab.f90 в Plato IDE Studio и включить в проект по правой кнопке мыши;

2) включить в проект ранее написанную программу labac.f90 через меню Source Files | Add existing item ==> выбрать labac.f90.

Создание нового текста программы Lab.f90 по правой кнопкой мыши в
Project Explorer пункт Source Files | New Item:

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

- через <Browse> выберите место Location для размещения программы lab.f90 в папке d:/PROJ/myProj и нажмите кнопку Open, чтобы создать программу;

- набрать новый текст программы;

- щелкнуть по правой кнопке мыши – и по кнопке Compile выполнить компиляцию.

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

- исходные данные через меню Source Files|Add existing item
==> выбрать myProject/in.txt, тогда при выполнении программы данные будут читаться из файла в текущем каталоге проекта с именем, указанным в операторе open;

- текст результатов – под именем, указанным в операторе open.

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

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

Варианты создания приложения – переключатель Debug|Release:

- Debug – отладочный вариант приложения, выполнение <F7>;

- Release – чистовой вариант приложения, выполнение <Ctrl>+<F5>.

Варианты запуска программы на выполнение:

- Step Info, отладка в пошаговом режиме, после коррекции программы щелкните по клавише <F7>, чтобы скомпилировать, скомпоновать и выполнить программу в отладочном режиме, в отдельном окне;

- Start run, или, что то же самое <Ctrl>+<F5>, чтобы запустить программу без отладки, в чистовом варианте;

Дополнительные возможности по отладке программы:

- <F6> – Continue, продолжить программу;

- <F7> – Step Info, пошаговая отладка,

- <F8> – Step Over, пошагово, не «ныряя» в процедуры,

- <Ctrl>+<F10> – Goto Cursor, идти в отладке до места, указанного курсором,

- чередуя <F7> , <F8>, <Ctrl>+<F10> при «хитрой» отладке,

- отладочный вариант приложения (Debug) работает под Windows-Vista и Windows-7.

Лабораторные работы

Вычисления по формулам

Задание

Составить программу, которая:

1. вычисляет значения двух эквивалентных пар числовых формул
y1

z2, с указанными в варианте индивидуального задания значениями исходных данных.

2. выводит в файл out.txt исходные данные и результаты вычислений.

a) математически две числовые формулы эквивалентны, если для всех возможных значений переменных их значения равны;

b) эквивалентными на компьютере будем считать значения, совпадающие до 6-7 десятичного знака с одинарной точностью real;

c) функции в формулах задания нельзя заменять другими, кроме тех, которых нет среди встроенных функций, как sec x;

d) формулы задания нельзя упрощать, но рекомендуется вводить вспомогательные (промежуточные) переменные.

Содержание отчета

1. Название работы и номер варианта индивидуального задания.

2. Фамилия, имя, отчество и номер группы студента.

3. Текст задания, формулы в том виде, как они приведены в варианте индивидуального задания.

4. Области допустимых значений (ОДЗ) переменных для y1, y2.

5. Математические формулы для промежуточных переменных (если они используются в программе).

6. Распечатки текста программы и результатов работы программы с тремя комплектами исходных данных.

При подготовке к защите ответить на контрольные вопросы.

Справочная информация

1. Порядок выполнения операций в соответствии их старшинством (приоритетом) показан в Табл.1.

Порядок выполнения операций в соответствии их старшинством

Операции Знаки операций Старшинство
Вычисление функций Ссылки на функции
Возведение в степень **
Умножение, деление *, /
Сложение, вычитание +, –

Примечание: порядок выполнения операций изменяют скобки (круглые).

2. Реализация некоторых математических выражений средствами Фортрана показана в Табл. 2; х - вещественный аргумент Sqrt(x) и тригонометрических функций.

Реализация некоторых математических выражений средствами Фортрана

3. Тип результата числовой операции (целочисленный или вещественный) выбирается автоматически по типу операндов, особо важно понимание этого механизма для операции деления:

a) если операнды целые, в результате взятия целой части частного получается целое число (для 7/4 => 1);

b) если операнды вещественные, в результате получается вещественное число (для 7./4. => 1.75);

c) если операнды разных типов, например, целого и вещественного, перед выполнением операции они приводятся к типу, который соответствует наиболее широкому классу (диапазону) чисел (для 7./4 => 7./4. – к вещественным числам); затем выполняется операция для этого типа с соответствующим результатом:
(7./4 => 7./4. => 1.75).

4. Выполнение операции a**b – возведения в степень a b зависит от типа показателя b:

a) для integer b выполняется b-кратное умножение основания a;

b) для вещественного значения b при a>0 .

Внимание! Отрицательное основание не возводят в вещественную степень.

Комментарии к заданию

1. Имена переменных предпочтительно выбирать со смыслом (например, длина окружности С=2pR : Circle=2*Pi*Radius).

2. Громоздкие формулы рекомендуется упрощать, вводя промежуточные переменные для частей формулы: повторяющиеся части формулы, числители и знаменатели дробей и так далее.

3. Восстановив формулу по выражению в программе, найдете ошибки.

4. Типичные ошибки в арифметических выражениях – см. раздел 8.3.

Пример

Исходное значение аргумента из ОДЗ: x=3.3

Область допустимых значений (ОДЗ)

Повторяющаяся часть формулы:

Знаменатель формулы y1:

ProgramFormula ! тема: вычисления по формулам

! студент (фамилия, имя) группа № работа № вариант №

Implicit None !переменные должны быть объявлены без умолчаний

Real::x=3.3,y1,y2,yd,s1 ! [pro1] инициализация переменной x (из задания)
! <== потом z1, z2 - объявить здесь же

Open(6,file=’result.txt’) ! закомментировать «open» - вывод на экран

![pro2] диалог по консоли: пригласить Write(*,*)’х=?’ читать Read(*,*)x

![pro3] Open(1,file=’input.txt’) – для чтения x из файла №1 Read(1,*) x

Write(6,*) ’at х=’,x

s1 = Sqrt(x**2-9)! повторяющаяся часть формулы

yd = x**2 - 2*x - 3 + (x-1)*s1! знаменатель y1

y1 = (x**2 + 2*x - 3 + (x+1)*s1) / yd

Write(6,*) ’y1=’, y1

y2 = Sqrt(x+3) / Sqrt(x-3)

Write(6,*)’y2=’, y2

! OK: в y1 и y2совпали 6 – 7 значащих цифр

End ProgramFormula ! <== далее – добавить вычисление z1,z2

Последовательность работы над программой

Проект [pro1] с Real:: x=3.3 приведен в программе, а [pro2], [pro3], показаны комментариями.

Составить три проекта:

- [pro1] - предъявить на ПК;

- [pro2] - предъявить на ПК с данными, введенными в диалоге;

- [pro3] - распечатать проект с данными из файла (3 комплекта чисел);

Определить область допустимых значений (ОДЗ) исходных данных. Отладить программу с данными, указанными в задании [pro1].

[pro1] Отладка завершена, если в y1 и y2 совпали 6 - 7 цифр.

[pro2] Организовать диалог по вводу исходных данных:

a) пригласить к вводу данных Write(*,*) ’x>3 x=?’

b) добавить в программу ввод данных с консоли Read(*,*) x

c) вычислить и вывести результирующие значения y1 и y2.

[pro3] Взять данные из ОДЗ, подготовив файл in.txt :

a) открыть файл in.txt для чтения данных Open(1,file=’in.txt’);

dok=1,3

- ввести один комплект данных из файла in.txt;

- вычислить y1 и y2, z1 и z2;

- вывести результаты с указанием имен переменных;

Enddo

Контрольные вопросы к защите работы

1. Что называется программой на алгоритмическом языке?

а) файл на диске; б) файл, внутри которого есть слово program;

в) дайте свой развернутый вариант ответа.

Примечание. Вы просматриваете на экране текстовый файл. Можете ли Вы утверждать, что это файл с программой?

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

а) хотя бы одна буква; б) слово fortran; в) свой вариант ответа – приведите примеры имен файлов с программами на Фортране 90.

3. Как записать комментарий в программе?

а) начать его с красной строки; б) начать его с «//» ; в) дайте свой вариант ответа. Приведите примеры комментариев.

4. Какие числовые типы данных используют в Фортране? Приведите примеры числовых констант.

5. Можно ли вещественную константу 6420 записать на Фортране без десятичной точки? Если можно, то как это сделать?

6. Как записать на Фортране комплексное число 19+4i ?

7. Какие имена переменных в программе записаны верно, а какие нет?

8. Как правильно вызвать функцию sinx ?

а) sinX б) sinx в) sin(x)

9. Определите значение переменной M в результате вычисления:

Integer:: N=1, M; M = 1/((2*N+1)*(2*N+2))

10. В каком порядке выполняются операции в числовом выражении?

а) со скобками; б) без скобок. Разъясните оба случая.

11. Определите значение переменной В в результате вычисления:

real:: А=2.0, B; B = -A**2

12. Исправьте ошибки:

a) записан как sqrt(4);

b) вещественный корень записан как sqrt (4,0) ;

c) комплексный корень записан какsqrt (-4);

d) комплексный корень записан какsqrt (-4.0);

e) комплексный корень записан какsqrt (-4,0) .

13. Отрицательное число не возводят в вещественную степень, почему?

а) в виде констант; б) как значения, точные для компьютера.

15. Определите значения переменных ВиC в результате вычисления:

real:: А=2.0, B,C; B = 1/2*A; C = 1/(2*A)

16. Как формулу записать в Фортране?

Пример контрольного задания

1. Расположите константы в порядке возрастания (представить в одинаковой форме): 24.0; 2.4Е+2; 0.24Е-3

2. b=4.0 – вещественная переменная. Что получим в результате вычисления: 1/2*b; 1/(2*b); b**(1/2); 1/b*2 .

3. Формула была записана как x**1/5 –исправьте ошибки.

4. Запишите на Фортране формулу

5. Чему будут равны значения переменных m, n, k, c, c1 после выполнения программы? В ответах учесть тип переменных.

integer:: m, n, k; real:: a=7.2, b=1.8, c, c1

m=a; n=b; k=a/b+b; c = a/b+b; c1 = m/n+b

Варианты индивидуальных заданий «Формулы»

Ветвления If и циклы Do

Задание

Заштрихованная часть рисунка в дальнейшем называется областью. Задача состоит в проверке попадания точек (x,y) в заданную область.

Задание содержит рисунок, состоящий из геометрических фигур.

1. Написать программу, которая:

a) для точек каждой контурной линии рисунка составляет таблицу соответствия координат в файлах с расширением .txt;

b) генерирует точки в прямоугольнике, перекрывающем рисунок на 10-20% с каждой стороны, и записывает координаты этих точек в один из двух файлов в зависимости от их нахождения в области.

2. Для графической интерпретации результатов использовать программу Agrapher.

Для начала создадим проект.

Откроем Visual Studio, далее жмем Файл→Создать→Проект, далее выбираем пункт CLR и отмечаем Приложение Windows Forms, даем имя проекта, к примеру factr и жмем Ok.

После того как мы создали проект, должна появиться пустая форма, которая должна выглядеть примерно так:

Справа должна появиться панель элементов, если ее нет, то можно включить ее в меню Вид→Панель Элементов или нажатием горячих клавиш — Ctrl + Alt + X.

На ней расположены различные элементы для вставки в форму, нам понадобятся только элементы Button (Кнопка), Label (Надпись) и TextBox (Текстовое поле). Перетащите на форму три элемента Label, Два элемента TextBox, и одну кнопку (Button), расставьте элементы примерно так:

Теперь нам нужно будет изменить текст надписей для элементов Label и Button и Задать подходящие имена классов для элементов TextBox. Для этого Выделите элемент label1, перейдите в Панель свойств, (обычно она находится под Панелью элементов, если панель выключена, включите ее в меню Вид -> Диспетчер свойств.) и задайте для данного элемента значение атрибута Text как показано на рисунке.

Задайте атрибут Text для всех элементов Label и Кнопки Button аналогичным образом. Наша форма должна принять примерно следующий вид:

Я сделал кнопку развернуть неактивной, так как изменение размеров данной формы испортит ее внешний вид, Вы также можете это сделать, щелкнув левой кнопкой мыши на пустом месте формы и в Панели свойств задать для атрибута MaximizeBox параметр False.

Теперь задайте для текстовых полей (TextBox) Атрибуты Name в Панели Свойств – для первого поля это будет num1, а для второго, соответственно num2. Тем самым мы изменили имена классов для полей TextBox, чуть позднее Вы поймете зачем.

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

Первым делом нужно добавить заголовочный файл fact.h в проект, для этого щелкаем правой кнопкой мыши в Обозревателе решений на папке Заголовочные файлы, далее меню Добавить -> Создать Элемент, вписываем название файла – fact.h и нажимаем Добавить. В данном файле будет содержаться прототип функции для вычисления факториала. Добавляем туда следующий исходный код.

Теперь наш заголовочный файл подключен к проекту, далее аналогичным образом создаем файл исходного кода fact.cpp в проект.

В него добавляем саму функцию вычисления факториала целого числа.

Теперь наш проект содержит функцию вычисления факториала, откомпилируйте его, если ошибок нет, то можно приступить к написанию обработчика событий для кнопки Button.

Открываем файл Form.h, в нем мы видим визуальное представление нашей формы. Щелкаем двойным щелчком на кнопке Button и переходим к исходному коду.

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

Эта строка инициализирует переменную, которая хранит в себе число для вычисления его факториала. Далее нам нужно будет произвести вызов нашей функции fact с переменной number в качестве единственного аргумента и занести результат работы функции в новую переменную factor.

И затем преобразовать полученное значение обратно в строку и присвоить его второму текстовому полю.

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

Теперь можно скомпилировать и запустить готовую программу и проверить ее. Помните, что тип double в С++ может хранить число не превышающее !170.

Результат работы программы можно проверить в инженерном калькуляторе Windows.

Читайте также: