Моделирование алгебраических и тригонометрических функций в C#

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.03.2017
Размер файла 619,7 K

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

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

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

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ "КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ"

ИНСТИТУТ ФИЗИКИ

КАФЕДРА ОБРАЗОВАТЕЛЬНЫХ ТЕХНОЛОГИЙ В ФИЗИКЕ

Направление: 44.03.05 педагогическое образование,

профиль: физика и информатика

КУРСОВАЯ РАБОТА

Моделирование алгебраических и тригонометрических функций в C#

Работа завершена:

Студент гр. 06-312

И. В. Захаров

Казань-2016

Рецензия

на курсовую работу

Студент Захаров Иван Владимирович

Направление: 44.03.05 «педагогическое образование», профиль: физика и информатика

Тема работы Моделирование алгебраических и тригонометрических функций в C#

Руководитель Ахмедшина Екатерина Николаевна, к.ф.-м.н., ассистент

Показатели оценки курсовой работы

№ пп

Показатели

Оценка

5

4,5

4

3,5

3

0

Профессиональные

1

Актуальность темы

2

Степень полноты обзора

3

Новизна полученных результатов

4

Степень самостоятельности работы студента

5

Обоснованность и достоверность результатов

Информационные

1

Использование информационных ресурсов Интернет

2

Использование современных пакетов прикладных программ

3

Собственная разработанная программа

Оформительские

1

Ясность и четкость изложения

2

Общий уровень грамотности

3

Качество иллюстраций, общее оформление

Итоговая оценка курсовой работы

Рецензент ________________________________________

Дата ______________________

Отзыв

на курсовую работу

Студент Захаров Иван Владимирович

Направление: 44.03.05 «педагогическое образование», профиль: физика и информатика

Тема работы Моделирование алгебраических и тригонометрических функций в C#

Руководитель Ахмедшина Екатерина Николаевна, к.ф.-м.н., ассистент

Показатели оценки курсовой работы

№ пп

Показатели

Оценка

5

4,5

4

3,5

3

0

Профессиональные

1

Актуальность темы

2

Степень полноты обзора

3

Новизна полученных результатов

4

Степень самостоятельности работы студента

5

Обоснованность и достоверность результатов

Информационные

1

Использование информационных ресурсов Интернет

2

Использование современных пакетов прикладных программ

3

Собственная разработанная программа

Оформительские

1

Ясность и четкость изложения

2

Общий уровень грамотности

3

Качество иллюстраций, общее оформление

Итоговая оценка курсовой работы

Руководитель _______________________________________

Дата ______________________

Содержание

  • Введение
  • Глава 1. Основы программирования на С#
    • 1.1 Назначение и возможности программы Microsoft Visual Studio
    • 1.2 Базовые элементы С#
      • 1.2.1 Операторы C#
    • 1.2.2Типы данных в C#
    • 1.2.3 Математические функции в C#
    • 1.2.4 Массивы в C#
    • Глава 2 Моделирование алгебраических и тригонометрических функций
    • 2.1 Проектирование архитектуры приложения
    • 2.2 Проектирование графического приложения
    • 2.3 Спецификация классов
    • 2.4 Моделирование алгебраических и тригонометрических функции Microsoft Visual Studio C#
  • Заключение
  • Библиографический список
  • Приложения

Введение

C# (произносится “Си-шарп”) -- это язык программирования, предназначенный для разработки самых разнообразных приложений, предназначенных для выполнения в среде .NET Framework. Язык C# прост, типобезопасен и объектно-ориентирован. Благодаря множеству нововведений C# обеспечивает возможность быстрой разработки приложений, но при этом сохраняет выразительность и элегантность, присущую языкам C.

Visual C# -- это реализация языка C# корпорацией Майкрософт. Поддержка Visual C# в Visual Studio обеспечивается с помощью полнофункционального редактора кода, компилятора, шаблонов проектов, конструкторов, мастеров кода, мощного и удобного отладчика и многих других средств. Библиотека классов .NET Framework предоставляет доступ ко многим службам операционной системы и другим полезным, правильным классам, что существенно ускоряет цикл разработки.

Цель:

1) Изучить язык программирования C#.

2) Изучить основы программирования в среде разработки Microsoft Visual Studio.

3) Овладеть навыками практического программирования на языке С# в среде Microsoft Visual Studio .Net.

4) Описать процесс моделирования алгебраических и тригонометрических функций на языке С# в среде Microsoft Visual Studio .Net.

Задачи:

1) Изучить и настроить интерфейс С#.

2) Изучение типов данных и базовых структур программирования.

3) Изучение средств визуализации данных.

4) Изучение инструментов проектирования графического интерфейса.

5) Изучение на языке С# в среде Microsoft Visual Studio .Net процесс компьютерного моделирования.

Акутальность:

На сегодняшний день стремительно развивающийся язык программирования C# ( с 2001 года разработано четыре версии) не только покорил многих программистов настольных, мобильных и веб-приложений, но и стал использоваться преподавателями школ и университетов.

Молодой, перспективный, лишенный множества недостатков языков прошлого поколения, язык C# приобр?л только самое лучшее и продолжает вбирать в себя самые передовые идеи программирования. Подобную популярность C# приобр?л благодаря лаконичности конструкций языка и мощной библиотеке .NetFramework, способной решать самый широкий спектр задач программирования. Эти его достоинства и заинтересовали преподавателей, ранее использовавших устаревшие Basic и Pascal.

Язык программирования C# один из самых мощных, быстро развивающихся и востребованных языков в ИТ-отрасли с помощью которого пишутся самые различные приложения: от небольших десктопных программок до крупных веб-порталов и веб-сервисов, обслуживающих ежедневно миллионы пользователей. Язык C# для платформ .NetFramework и Mono вполне пригоден для обучения в школе. Идеально подходит для учебных заведений, где в равной степени используются как компьютеры на базе Windows, так и Linux. Методические материалы лишь с небольшими изменениями могут быть применены на данных платформах. А уже скомпилированные программы свободно работают в любой системе.

С#(Sharp) полезен как в школе так и в высших учебных заведениях. Для школьников он интересен в создании приложений для Windows. Например, с помощью этого языка ученик 7-11 класса может создать приложение (игру), допустим, крестики-нолики, а после может из него вырастит хороший разработчик игр. А в ВУЗе этот язык просто незаменим, можно смоделировать, что угодно. Правда, есть одна проблема возможности этого языка ограничены тем что они применимы в основном только для OS Windows.

Практическая значимость: С# в основном применяются для создания приложения в Windows. Границы этого языка неограниченны. Язык С# 6.0 представляет собой пятое крупное обновление флагманского языка программирования от Microsoft, которое превращает С# в язык с невероятной гибкостью и широтой применения. С одной стороны, он предлагает высокоуровневые абстракции, такие как выражения запросов и асинхронные продолжения, в то время как с другой обеспечивает низкоуровневую эффективность через конструкции вроде специальных типов значений и дополнительное использование указателей.

Научная новизна:

Синтаксис C# очень выразителен, но прост в изучении. Все, кто знаком с языками C, C++ или Java с легкостью узнают синтаксис с фигурными скобками, характерный для языка C#. Разработчики, знающие любой из этих языков, как правило, смогут добиться эффективной работы с языком C# за очень короткое время. Синтаксис C# делает проще то, что было сложно в C++, и обеспечивает мощные возможности, такие как типы значений Nullable, перечисления, делегаты, лямбда-выражения и прямой доступ к памяти, чего нет в Java. C# поддерживает универсальные методы и типы, обеспечивая более высокий уровень безопасности и производительности, а также итераторы, позволяющие при реализации коллекций классов определять собственное поведение итерации, которое может легко использоваться в клиентском коде. Выражения LINQ делают строго типизированный запрос очень удобной языковой конструкцией.

Как объектно-ориентированный язык, C# поддерживает понятия инкапсуляции, наследования и полиморфизма. Все переменные и методы, включая метод Main - точку входа приложения - инкапсулируются в определения классов. Класс может наследовать непосредственно из одного родительного класса, но может реализовывать любое число интерфейсов. Для методов, которые переопределяют виртуальные методы в родительском классе, необходимо ключевое слово override, чтобы исключить случайное повторное определение. В языке C# структура похожа на облегченный класс: это тип, распределяемый по стопкам, реализующий интерфейсы, но не поддерживающий наследование.

В дополнение к основным описанным объектно-ориентированным принципам, язык C# упрощает разработку компонентов программного обеспечения благодаря нескольким инновационным конструкциям языка, в число которых входят следующие:

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

· Свойства, выступающие в роли методов доступа для закрытых переменных-членов.

· Атрибуты с декларативными метаданными о типах во время выполнения.

· Встроенные комментарии XML-документации.

· LINQ, предлагающий встроенные возможности запросов в различных источниках данных.

Если потребуется обеспечить взаимодействие с другим программным обеспечением Windows, таким как объекты COM или собственные библиотеки DLL Win32, в языке C# можно использовать процесс, который называется "Interop." Процесс Interop позволяет программам на C# выполнять практически любые действия, которые может выполнять исходное приложение на C++. Язык C# поддерживает даже указатели и понятие "небезопасного" кода для тех случаев, когда прямой доступ к памяти имеет крайне важное значение.

Процесс построения C# по сравнению с C и C++ прост и является более гибким, чем в Java. Нет отдельных файлов заголовка, а методы и типы не требуется объявлять в определенном порядке. В исходном файле C# может быть определено любое число классов, структур, интерфейсов и событий.

Глава 1. Основы программирования на С#

1.1 Назначение и возможности программы Microsoft Visual Studio

Microsoft Visual Studio -- линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данные продукты позволяют разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework и Silverlight.

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как, например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования) или инструментов для прочих аспектов процесса разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server).

Рис. 1 Начальное окно среды разработки Microsoft Visual Studio.

1.2 Базовые элементы С#

1.2.1 Операторы C#

Основные операторы

Это операторы с наивысшим приоритетом. Обратите внимание, что можно щелкнуть операторы для перехода на страницы с подробным описанием и примерами.

x.y -- доступ к членам.

x?.y -- доступ к членам, определяемый условием NULL. Возвращает значение NULL, если левый операнд имеет значение NULL.

f(x) -- вызов функции.

[x] -- индексирование агрегатного объекта.

a?[x] -- индексирование, определяемое условием NULL. Возвращает значение NULL, если левый операнд имеет значение NULL.

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

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

New -- тип создания экземпляра.

Typeof -- возвращает объект System.Type, представляющий операнд.

Checked -- позволяет проверять переполнение при выполнении операций с целыми числами.

Unchecked -- запрещает проверять переполнение при выполнении операций с целыми числами. Это поведение установлено для компилятора по умолчанию.

default(T) -- возвращает инициализированное значение по умолчанию типа T, значение NULL для ссылочных типов, ноль для числовых типов и члены, заполненные нулями/значениями NULL, для типов структуры.

Delegate -- объявляет и возвращает экземпляр делегата.

Sizeof -- возвращает размер в байтах операнда тип.

-> -- разыменование указателя в сочетании с доступом к члену.

Унарные операторы

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

+x -- возвращает значение x.

-x -- числовое отрицание.

!x -- логическое отрицание.

~x -- поразрядное дополнение.

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

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

(T)x -- приведение типов.

Await -- ожидает Task.

&x -- адрес.

*x -- разыменование.

Мультипликативные операторы

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

x * y -- умножение.

x / y -- деление. Если операнды имеют целые числа, результатом является целочисленное значение, усеченное в сторону нуля (например, -7 / 2 is -3).

x % y -- получение модуля. Если операнды имеют целые числа, это возвращает остаток от деления x на y. Если q = x / y и r = x % y, то x = q * y + r.

Операторы сложения

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

x + y -- сложение.

x - y -- вычитание.

Операторы сдвига

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

x << y -- сдвиг битов влево и заполнение правой части нулем.

x >> y -- сдвиг битов вправо . Если левым операндом является int или long, затем левые биты заполняются битом знака. Если левым операндом является uint или ulong, затем левые биты заполняются нулем.

Относительные операторы и операторы тестирования типа

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

x < y -- меньше чем (значение true, если x меньше y).

x > y -- больше чем (значение true, если x больше y).

x <= y -- меньше или равно.

x >= y -- больше или равно.

Is -- совместимость типов. Возвращает значение true, если вычисленный левый операнд может быть приведен к типу, указанному в правом операнде (статический тип).

As -- преобразование типов. Возвращает левый операнд, приведенный к типу, заданному правым операндом (статический тип), но asвозвращает null, где (T)x вызывает исключение.

Операторы равенства

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

x == y -- равенство. По умолчанию для ссылочных типов, отличных от string, этот оператор возвращает равенство ссылок (проверка удостоверения). Однако типы могут перегрузить ==, поэтому если планируется проверять удостоверения, лучше использовать метод ReferenceEquals для object.

x != y -- неравенство. См. примечание для ==. Если тип перегружает ==, то его необходимо перегрузить !=.

Оператор логического И

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

x & y -- логические или битовые операторы И. В общем случае разрешено использовать с целочисленными типами и типами enum.

Оператор логического исключающего ИЛИ

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

x ^ y -- логические или битовые операторы исключающего ИЛИ. Обычно их можно использовать с целочисленными типами и типами enum.

Оператор логического ИЛИ

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

x | y -- логические или битовые операторы ИЛИ. В общем случае разрешено использовать с целочисленными типами и типами enum.

Условный оператор И

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

x && y -- логическое И. Если первый операнд имеет значение false, то C# не вычисляет второй операнд.

Условный оператор ИЛИ

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

x || y -- логическое ИЛИ. Если первый операнд имеет значение true, то C# не вычисляет второй операнд.

Оператор объединения с NULL

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

x?? y -- возвращает x, если значение отличается от null; в противном случае возвращает y.

Условный оператор

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

t ? x : y -- если тест t имеет значение true, вычисляет и возвращает x, в противном случае вычисляет и возвращает y.

Назначение и лямбда-операторы

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

x = y -- назначение.

x += y -- инкремент. Добавьте значение y к значению x, сохраните результат в x и возвратите новое значение. Если x назначает event, то y должен быть соответствующей функцией, которую C# добавляет в качестве обработчика событий.

x -= y -- декремент. Вычтите значение y из значения x, сохраните результат в x и возвратите новое значение. Если x назначает event, то y должен быть соответствующей функцией, которую C# удаляет в качестве обработчика событий.

x *= y -- назначение умножения. Умножьте значение y на значение x, сохраните результат в x и возвратите новое значение.

x /= y -- назначение деления. Разделите значение x на значение y, сохраните результат в x и возвратите новое значение.

x %= y -- назначение модуля. Разделите значение x на значение y, сохраните остаток в x и возвратите новое значение.

x &= y -- назначение И. Выполните операцию И для значения y и значения x, сохраните результат в x и возвратите новое значение.

x |= y -- назначение ИЛИ. Выполните операцию ИЛИ для значения y и значения x, сохраните результат в x и возвратите новое значение.

x ^= y -- назначение исключающего ИЛИ. Выполните операцию исключающего ИЛИ для значения y и значения x, сохраните результат в x и возвратите новое значение.

x <<= y -- назначение сдвига влево. Сдвиньте значение x влево на y позиций, сохраните результат в x и возвратите новое значение.

x >>= y -- назначение сдвига вправо. Сдвиньте значение x вправо на y позиций, сохраните результат в x и возвратите новое значение.

=> -- объявление лямбда-выражения.

Переполнение при арифметической операции

Арифметические операторы (+, -, *, /) могут давать результаты, которые находятся за пределами диапазона возможных значений для используемого числового типа. Подробнее см. в разделе, посвященном конкретному оператору, однако в общем случае применяются следующие правила.

· Переполнение при целочисленных арифметических операциях либо вызывает исключение OverflowException или отбрасывает старшие биты результата. Деление целого числа на ноль всегда вызывает исключение DivideByZeroException.

· Переполнение или деление на ноль при арифметических операциях с плавающей запятой никогда не вызывает исключение, так как типы с плавающей запятой -- а поэтому и правила для представления бесконечности и значения NaN (не число) -- основаны на стандарте IEEE 754.

· Переполнение при десятичной арифметической операции всегда вызывает исключение OverflowException. Деление десятичного числа на ноль всегда вызывает исключение DivideByZeroException.

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

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

1.2.2 Типы данных в C#

Как и любой язык программирования, язык C# предназначен для разработки программного обеспечения связанного с обработкой числовой и символьный информации. Весь объём обрабатываемых данных при выполнении программы хранится в оперативной памяти компьютера. По мере выполнения программы данные могут принимать разные значения. Те данные, которые требуется сохранить, например набранный вами текст или результаты каких либо вычислений, сохраняются в долговременной памяти компьютера. Чем более ёмкая программа, тем больше данных приходится хранить в оперативной памяти, поэтому, чтобы не расходовать память понапрасну, следует определиться с переменными участвующими в работе программы. Каждый тип переменных занимает разный объём в оперативной памяти, и какой смысл, например при сложении 2 и 2, резервировать кусок памяти под триллионные значения. Ниже, в таблице представлены типы данных, те значения (диапазон) которые они могут принимать и размер, выделяемый для них памяти

Тип

Область значений

Размер

Sbyte

-128 … 127

Знаковое 8-бит целое

Byte

0 до 255

Беззнаковое 8-бит целое

Char

U+0000 до U+ffff

16-битовый символ Unicode

Bool

True или false

Логическое. 1 байт

Short

-32768 до 32767

Знаковое 16-бит целое

Ushort

0 до 65535

Беззнаковое 16-бит целое

Int

-2147483648 до 2147483647

Знаковое 32-бит целое

uint

0 до 4294967295

Беззнаковое 32-бит целое

long

-9223372036854775808 до 9223372036854775807

Знаковое 32-бит целое

ulong

0 до 18446744073709551615

Беззнаковое 32-бит целое

float

± 1,5*10^-45 до ± 3,4*10^33

4 байта, точность - 7 разрядов

double

± 5*10^-324 до ± 1,7*10^306

8 байт, точность -16 разрядов

1.2.3 Математические функции в C#

Имя

Описание

Abs(Decimal)

Возвращает абсолютное значение числа Decimal.

Abs(Double)

Возвращает абсолютное значение числа двойной точности с плавающей запятой.

Abs(Int16)

Возвращает абсолютное значение 16-битового целого числа со знаком.

Abs(Int32)

Возвращает абсолютное значение 32-битового целого числа со знаком.

Abs(Int64)

Возвращает абсолютное значение 64-битового целого числа со знаком.

Abs(SByte)

Возвращает абсолютное значение 8-битового целого числа со знаком.

Abs(Single)

Возвращает абсолютное значение числа одинарной точности с плавающей запятой.

Acos(Double)

Возвращает угол, косинус которого равен указанному числу.

Asin(Double)

Возвращает угол, синус которого равен указанному числу.

Atan(Double)

Возвращает угол, тангенс которого равен указанному числу.

Atan2Double)?(Double,

Возвращает угол, тангенс которого равен отношению двух указанных чисел.

BigMulInt32)?(Int32,

Умножает два 32-битовых числа.

Ceiling(Decimal)

Возвращает наименьшее целое число, которое больше или равно заданному десятичному числу.

Ceiling(Double)

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

Cos(Double)

Возвращает косинус указанного угла.

Cosh(Double)

Возвращает гиперболический косинус указанного угла.

DivRemInt32)?Int32,?(Int32,

Вычисляет частное двух 32-битовых целых чисел со знаком и возвращает остаток в выходном параметре.

DivRemInt64)?Int64,?(Int64,

Вычисляет частное двух 64-битовых целых чисел со знаком и возвращает остаток в выходном параметре.

Exp(Double)

Возвращает значение e, возведенное в указанную степень.

Floor(Decimal)

Возвращает наибольшее целое число, которое меньше или равно указанному десятичному числу.

Floor(Double)

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

IEEERemainderDouble)?(Double,

Возвращает остаток от деления одного указанного числа на другое указанное число.

Log(Double)

Возвращает натуральный логарифм (с основанием e) указанного числа.

LogDouble)?(Double,

Возвращает логарифм указанного числа по заданному основанию.

Log10(Double)

Возвращает логарифм с основанием 10 указанного числа.

MaxByte)?(Byte,

Возвращает большее из двух 8-битовых целых чисел без знака.

MaxDecimal)?(Decimal,

Возвращает большее из двух десятичных чисел.

MaxDouble)?(Double,

Возвращает большее из двух чисел двойной точности с плавающей запятой.

MaxInt16)?(Int16,

Возвращает большее из двух 16-битовых целых чисел со знаком.

MaxInt32)?(Int32,

Возвращает большее из двух 32-битовых целых чисел со знаком.

MaxInt64)?(Int64,

Возвращает большее из двух 64-битовых целых чисел со знаком.

MaxSByte)?(SByte,

Возвращает большее из двух 8-битовых целых чисел со знаком.

MaxSingle)?(Single,

Возвращает большее из двух чисел одинарной точности с плавающей запятой.

MaxUInt16)?(UInt16,

Возвращает большее из двух 16-битовых целых чисел без знака.

MaxUInt32)?(UInt32,

Возвращает большее из двух 32-битовых целых чисел без знака.

MaxUInt64)?(UInt64,

Возвращает большее из двух 64-битовых целых чисел без знака.

MinByte)?(Byte,

Возвращает меньшее из двух 8-битовых целых чисел без знака.

MinDecimal)?(Decimal,

Возвращает меньшее из двух десятичных чисел.

MinDouble)?(Double,

Возвращает меньшее из двух чисел двойной точности с плавающей запятой.

MinInt16)?(Int16,

Возвращает меньшее из двух 16-битовых целых чисел со знаком.

MinInt32)?(Int32,

Возвращает меньшее из двух 32-битовых целых чисел со знаком.

MinInt64)?(Int64,

Возвращает меньшее из двух 64-битовых целых чисел со знаком.

MinSByte)?(SByte,

Возвращает меньшее из двух 8-битовых целых чисел со знаком.

MinSingle)?(Single,

Возвращает меньшее из двух чисел одинарной точности с плавающей запятой.

MinUInt16)?(UInt16,

Возвращает меньшее из двух 16-битовых целых чисел без знака.

MinUInt32)?(UInt32,

Возвращает меньшее из двух 32-битовых целых чисел без знака.

MinUInt64)?(UInt64,

Возвращает меньшее из двух 64-битовых целых чисел без знака.

PowDouble)?(Double,

Возвращает указанное число, возведенное в указанную степень.

Round(Decimal)

Округляет десятичное значение до ближайшего целого.

RoundInt32)?(Decimal,

Округляет десятичное значение до указанного числа дробных разрядов.

RoundMidpointRounding)?Int32,?(Decimal,

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

RoundMidpointRounding)?(Decimal,

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

Round(Double)

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

RoundInt32)?(Double,

Округляет значение двойной точности с плавающей запятой до заданного количества дробных разрядов.

RoundMidpointRounding)?Int32,?(Double,

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

RoundMidpointRounding)?(Double,

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

Sign(Decimal)

Возвращает целое число, указывающее знак десятичного числа.

Sign(Double)

Возвращает целое число, обозначающее знак числа двойной точности с плавающей запятой.

Sign(Int16)

Возвращает целое число, указывающее знак 16-разрядного целого числа со знаком.

Sign(Int32)

Возвращает целое число, указывающее знак 32-разрядного целого числа со знаком.

Sign(Int64)

Возвращает целое число, указывающее знак 64-разрядного целого числа со знаком.

Sign(SByte)

Возвращает целое число, указывающее знак 8-разрядного целого числа со знаком.

Sign(Single)

Возвращает целое число, обозначающее знак числа с плавающей запятой одиночной точности.

Sin(Double)

Возвращает синус указанного угла.

Sinh(Double)

Возвращает гиперболический синус указанного угла.

Sqrt(Double)

Возвращает квадратный корень из указанного числа.

Tan(Double)

Возвращает тангенс указанного угла.

Tanh(Double)

Возвращает гиперболический тангенс указанного угла.

Truncate(Decimal)

Вычисляет целую часть заданного десятичного числа.

Truncate(Double)

Вычисляет целую часть заданного числа двойной точности с плавающей запятой.

1.2.4 Массивы в C#

Общие сведения о массивах

Массив имеет следующие свойства.

· Массив может быть одномерным, многомерным или массивом массивов.

· Заданы количество измерений и длину каждого измерения, когда создается экземпляр массива. Эти значения невозможно изменить во время существования экземпляра.

· Значения по умолчанию числовых элементов массива задано равным нулю, а элементы ссылок имеют значение NULL.

· Невыровненный массив является массивом массивов и поэтому его элементы являются ссылочными типами и инициализируются значением null.

· Индексация массивов начинается с нуля: массив с элементами n индексируется от 0 до n-1.

· Элементы массива могут быть любых типов, включая тип массива.

· Типы массива являются ссылочными типами, производными от абстрактного базового типа Array. Поскольку этот тип реализует IEnumerable и IEnumerable<T>, в C# во всех массивах можно использовать итерацию foreach.

Одномерные массивы

Можно объявить массив из пяти целых чисел с одним измерением, как показано в следующем примере

int [] array = new int [5];

Массив содержит элементы с array[0] по array[4]. Оператор new служит для создания массива и инициализации элементов массива со значениями по умолчанию. В данном примере элементы массива инициализируются значением 0. алгебраический тригонометрический моделирование программа

Массив, в котором хранятся строковые элементы, можно объявить таким же образом. Примеры.

String [] strinArray = new string [6]

Инициализация массивов

Массив можно инициализировать при объявлении. В этом случае спецификация ранга не нужна, поскольку она уже предоставлена по числу элементов в списке инициализации. Примеры.

int [] array1 = new int [] {1,3,5,7,9};

Строковый массив можно инициализировать таким же образом. Ниже приведено объявление строкового массива, в котором каждый элемент инициализируется названием дня:

string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

Многомерные массивы

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

int[,] array = new int[4, 2];

Следующее объявление создает трехмерный массив с количеством элементов 4, 2 и 3.

int[, ,] array1 = new int[4, 2, 3];

Массив массивов

Массив массивов -- это массив, элементы которого сами являются массивами. Элементы массива массивов могут иметь различные размеры и измерения. Массивы массивов иногда также называются "невыровненными массивами". В следующих примерах показано, как выполняется объявление, инициализация и доступ к массивам массивов.

Ниже показано объявление одномерного массива, включающего три элемента, каждый из которых является одномерным массивом целых чисел.

C#

int[][] jaggedArray = new int[3][];

Перед использованием jaggedArray его элементы нужно инициализировать. Сделать это можно следующим образом.

C#

jaggedArray[0] = new int[5];

jaggedArray[1] = new int[4];

jaggedArray[2] = new int[2];

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

Для заполнения элементов массива значениями можно также использовать инициализаторы, при этом размер массива знать не требуется. Примеры.

C#

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };

jaggedArray[1] = new int[] { 0, 2, 4, 6 };

jaggedArray[2] = new int[] { 11, 22 };

Также массив можно инициализировать путем объявления.

C#

int[][] jaggedArray2 = new int[][]

{

new int[] {1,3,5,7,9},

new int[] {0,2,4,6},

new int[] {11,22}

};

Также можно использовать сокращенную форму. Обратите внимание, что при инициализации элементов оператор new опускать нельзя, так как инициализации по умолчанию для этих элементов не существует.

C#

int[][] jaggedArray3 =

{

new int[] {1,3,5,7,9},

new int[] {0,2,4,6},

new int[] {11,22}

};

Невыровненный массив является массивом массивов и поэтому его элементы являются ссылочными типами и инициализируются значением null.

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

// Assign 77 to the second element ([1]) of the first array ([0]):

jaggedArray3[0][1] = 77;

// Assign 88 to the second element ([1]) of the third array ([2]):

jaggedArray3[2][1] = 88;

Массивы массивов можно смешивать с многомерными массивами. Ниже показано объявление и инициализация одномерного массива массивов, состоящего из трех двумерных элементов различного размера. Дополнительные сведения о двумерных массивах см. в разделе Многомерные массивы.

int[][,] jaggedArray4 = new int[3][,]

{

new int[,] { {1,3}, {5,7} },

new int[,] { {0,2}, {4,6}, {8,10} },

new int[,] { {11,22}, {99,88}, {0,9} }

};

Доступ к отдельным элементам выполняется как показано в примере ниже, где отображено значение элемента [1,0] первого массива (значение 5).

System.Console.Write("{0}", jaggedArray4[0][1, 0]);

Метод Length возвращает число массивов, содержащихся в массиве массивов. Например, если объявить предыдущий массив, мы получим следующее.

System.Console.WriteLine(jaggedArray4.Length);

возвращает значение 3.

Глава 2 Моделирование алгебраических и тригонометрических функций.

2.1 Проектирование архитектуры приложения

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

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

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

2.2 Проектирование графического приложения

Для того чтобы создать калькулятор в среде разработки Visual Studio на языке программирования С# для начало мы должны разработать дизайн калькулятора. Для того выбираем в меню Visual C# после выбираем пункт «Windows Form Application». Таким образом, мы создали форму для будущего калькулятора. Зададим форме размер: 590; 450. Следующим пунктом мы будем добавлять кнопки (Buttons), а также для вывода текста нужен будет элемент textbox (элемент в котором будут выводиться числа на экран). Элемент «lblShowOp» нужен для того чтобы там отображались действия, которые мы будем выбирать с помощью нажатия кнопок.(Чтобы не забывать выполненные действия). Добавим меню для того чтобы переходить из стандартного калькулятора в более продвинутый калькулятор с расширенными возможностями. На Рис 1. вы видите дизайн моего калькулятора с расширенными возможностями.

Рис 1. Дизайн калькулятора

Перейдем к кнопкам. Всего добавлено 40 кнопок. Каждая кнопка имеет свое назначение. Цифры (от 0 до 9) выполняют функцию ввода числа в поле textbox. Кнопки «СЕ», «С» выполняют функцию очистки поля textbox. Кнопка Backspace выполняет функцию очистки поля textbox на один символ. Кнопки арифметических действий и тригонометрических функций выполняют соответствующие им функции. Кнопка sqrt вычисляет квадратный корень из поля textbox. Таким же образом можно вычислить десятичный и натуральный логарифм с помощью соответствующих кнопок. Кнопки «Bin», «Hex» «Oct» «Dec» переводят в двоичную, в шестнадцатеричную, в восьмеричную и в десятичную систему исчисления соответственно. Кнопка «Pi» выводит на поле textbox число Пи. А также есть кнопки возведения в квадрат, в куб, и для вычисления процентов.

2.3 Спецификация классов

Подсистема расчета арифметических функций реализована функцией:

private void Arithmetic_Operator(object sender, EventArgs e)

{

Button num = (Button)sender;

operation = num.Text;

results = Double.Parse(textBox1.Text);

textBox1.Text = "";

lblShowOp.Text = "";

}

Подробна описана функция выполнения арифметических операций.

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

private void button21_Click(object sender, EventArgs e)

{

double isin = Double.Parse(textBox1.Text);

lblShowOp.Text = System.Convert.ToString("asin" + "(" + (textBox1.Text) + ")");

isin = Math.Asin(isin);

textBox1.Text = System.Convert.ToString(isin);

}

В данном случае для примера показана функция кнопки «Asin». Остальные тригонометрические функции будут аналогичными, будет отличаться переменная и выполнение Math функции. Все это можно будет в приложении.

Для ввода цифр в textbox функция:

private void button_Click(object sender, EventArgs e)

{

if ((textBox1.Text == "0") || (enter_value))

textBox1.Text = "";

enter_value = false;

Button num = (Button)sender;

if (num.Text == ".")

{

if (!textBox1.Text.Contains("."))

textBox1.Text = textBox1.Text + num.Text;

}

else

textBox1.Text = textBox1.Text + num.Text;

}

Для очистки («С»):

private void button4_Click(object sender, EventArgs e)

{

textBox1.Text = "0";

lblShowOp.Text = "";

}

Backspace :

private void button1_Click(object sender, EventArgs e)

{

if (textBox1.Text .Length >0)

{

textBox1.Text = textBox1.Text.Remove(textBox1.Text.Length - 1, 1);

}

if (textBox1.Text == "")

{

textBox1.Text = "0";

}

}

Ввод числа Пи:

private void button17_Click(object sender, EventArgs e)

{

textBox1.Text = "3.141592653589976323";

}

Для вычисления логарифма:

private void button18_Click(object sender, EventArgs e)

{

double ilog = Double.Parse(textBox1.Text);

lblShowOp.Text = System.Convert.ToString("log" + "(" + (textBox1.Text) + ")");

ilog = Math.Log10(ilog);

textBox1.Text = System.Convert.ToString(ilog);

}

Для вычисления квадратного корня:

private void button20_Click(object sender, EventArgs e)

{

double sq = Double.Parse(textBox1.Text);

lblShowOp.Text = System.Convert.ToString("sq" + "(" + (textBox1.Text) + ")");

sq = Math.Sqrt(sq);

textBox1.Text = System.Convert.ToString(sq);

}

Для перевода в разные системы исчисления:

private void button28_Click(object sender, EventArgs e)

{

int a = int.Parse(textBox1.Text);

textBox1.Text = System.Convert.ToString(a, 2);

}

private void button32_Click(object sender, EventArgs e)

{

int a = int.Parse(textBox1.Text);

textBox1.Text = System.Convert.ToString(a, 16);

}

private void button36_Click(object sender, EventArgs e)

{

int a = int.Parse(textBox1.Text);

textBox1.Text = System.Convert.ToString(a, 8);

}

private void button24_Click(object sender, EventArgs e)

{

int a = int.Parse(textBox1.Text);

textBox1.Text = System.Convert.ToString(a);

}

Для возведения в квадрат числа:

private void button19_Click(object sender, EventArgs e)

{

Double a;

a = Convert.ToDouble(textBox1.Text) * Convert.ToDouble(textBox1.Text);

textBox1.Text = System.Convert.ToString(a);

}

Для вычисления конечного значения (Кнопка «Равно»):

private void button40_Click(object sender, EventArgs e)

{

lblShowOp.Text = "";

switch (operation)

{

case "+":

textBox1.Text = (results + Double.Parse(textBox1.Text)).ToString();

break;

case "-":

textBox1.Text = (results - Double.Parse(textBox1.Text)).ToString();

break;

case "*":

textBox1.Text = (results * Double.Parse(textBox1.Text)).ToString();

break;

case "/":

textBox1.Text = (results / Double.Parse(textBox1.Text)).ToString();

break;

case "Mod":

textBox1.Text = (results % Double.Parse(textBox1.Text)).ToString();

break;

case "Exp":

double i = Double.Parse(textBox1.Text);

double q;

q = (results);

textBox1.Text = Math.Exp(i * Math.Log(q * 4)).ToString();

break;

}

}

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

private void button3_Click(object sender, EventArgs e)

{

if (znak == true)

{

textBox1.Text = "-" + textBox1.Text;

znak = false;

}

else if (znak == false)

{

textBox1.Text = textBox1.Text.Replace("-", "");

znak = true;

}

2.4 Моделирование алгебраических и тригонометрических функции Microsoft Visual Studio C#

Среду разработки для моего калькулятора я выбрал MS Visual Studio. Почему я выбрал именно эту среду разработки? А все потому, что, во первых язык C# придуман компанией Microsoft, во вторых, среда разработки проста в использовании, в третьих она лицензированная и бесплатная(версия Community).

Открываем Microsoft Visual Studio, и нажимаем на «Создать проект…».

В создавшемся диалоговом окне выбираем в меню справа «Visual C#» а после выбираем «Приложение Windows Form».

Моделирование калькулятора разбилось на три этапа:

1) Проектирование и разработка дизайна приложение

2) Программирование калькулятора и назначение функций для каждой кнопки

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

Программирование - самая главная часть. Для того чтобы калькулятор работал исправно мы введем переменные и объявим их.

Double results = 0;

String operation = "";

bool enter_value = false;

bool znak = true;

Для калькулятора нам понадобится четыре общие переменные. «Results» - переменная для вычисления результата. Имеет тип «Double ». «Operation» для выполнения арифметических операций. И две переменные с логическим типом да...


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

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