Основы программирования на языке С#

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

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

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

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

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

Киевский национальный университет строительства и архитектуры

Курсовая робота

Выполнил: студент группы КН-11

Хлань В.Н.

Проверила: Пороховниченко И.А.

Оглавление

  • 1. Постановка задачи
  • 2. Структура программы
  • 3. Спецификация всех функций
  • 4. Описание интерфейса взаимодействия с пользователем
  • 5. Исходный код программы

1. Постановка задачи

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

Программа должна иметь следующие функциональные возможности:

1. Табулирование функции.

2. Расчет функции при помощи ряда.

3. Расчет функции при помощи рекурсии.

4. Вывод результатов работы в таблицу.

5. Построение графиков каждой из функций.

6. Сохранение результатов в файл.

7. Чтение результатов из файла.

Таким образом, дерево функций будет иметь следующий вид (рис. 1).

Рисунок 1. Дерево функций

Рисунок 2. интерфейс формы закладка для ввода данных

Для разработки программы будет использоваться Windows Forms. Интерфейс будет располагаться на одной форме, которая будет иметь две закладки. Закладка 1 - для ввода данных и вывода результатов табулирования и Закладка 2 - для построения графика интерфейс показан на рис. 2 и рис. 3. Интерфейс разработан при помощи программы Pencil.

Рисунок 3. Интерфейс формы закладка для построения графика

Структура главного меню показана на рис. 4.

Рисунок 4. Структура главного меню

2. Структура программы

В программе разработана структура для хранения информации о результатах табулирования. Структура имеет следующий вид (табл. 1).

Таблица 1. Описание структуры

struct xy

x

y

double

double

Программа состоит из одного модуля и имеет следующую структуру (рис. 5). программа функция график интерфейс

Рисунок 5. Структура программы

3. Спецификация всех функций

Таблица 2. Спецификация функций

Функция

Описание

Void button1_Click (System::Object^ sender, System::EventArgs^ e)

Функция расчета. Вызывается при нажатии кнопки "Расчет". В ней решаются следующие задачи:

1. Инициализация начальных значений переменных

2. Рисует график и заполняет таблицу

3. Вызов функций расчета

Входные данные:

System::Object^ sender - объект вызвавший событие (кнопка).

System::EventArgs^ e- данные о событии(нажатии кнопки).

Выходные данные: -

System::Void записьВФайлToolStripMenuItem_Click (System::Object^ sender, System::EventArgs^ e)

Функция записи в файл. Вызывается при нажатии на пункт меню "Запись в файл"

Входные данные:

System::Object^ sender - объект вызвавший событие (кнопка).

System::EventArgs^ e- данные о событии(нажатии кнопки).

list<xy> sin2 - список результатов табулирования при помощи рекурсии, т.е. значений х и у.

list<xy> sin1 - список результатов табулирования при помощи ряда, т.е. значений х и у.

list<xy> sin - список результатов табулирования эталонной функции arccos(x), т.е. значений х и у.

Выходные данные:

sin.txt - файл с данными табулирования эталонной функции arccos(x)

sin1.txt - файл с данными табулирования при помощи ряда

sin2.txt - файл с данными табулирования при помощи рекурсии.

System::Void чтениеИзФайлаToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)

Функция чтения из файла. Вызывается при нажатии на пункт меню "Чтение из файла"

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

Входные данные:

System::Object^ sender - объект вызвавший событие (кнопка).

System::EventArgs^ e- данные о событии(нажатии кнопки).

Выходные данные: ---

int count ()

Функция для расчета количества строк в файле

Входные данные:

Имя файла

Выходные данные:

количество строк

void recursiya(double End, double begin, double x,double kk)

Функция для расчета суммы рекурсией

Входные данные:

double x - текущее значение х

double end-текущее значение end:

double begin-текущее значение begin:

double kk-текущее значение kk:

long fact(double N)

Функция для расчета факториала

Входные данные:

N - значение факториал которого ищем

Выходные данные:

N - факториал от х

4. Описание интерфейса взаимодействия с пользователем

При запуске программы появляется главная форма рис. 6. На которой можно ввести данные и при нажатии на кнопку расчет будет произведен расчет, результаты которого отобразиться в таблице (рис. 7) и построится график по полученным данным рис. 8.

Рисунок 6. Главное окно программы

Рисунок 7. Главное окно программы с результатом расчета

Рисунок 8. Главное окно программы с графиком

При нажатии на пункт меню "Запись в файл " результаты запишутся в файлы sin.txt - файл с данными табулирования эталонной функции arccos(x), sin1.txt - файл с данными табулирования при помощи ряда, sin2.txt - файл с данными табулирования при помощи рекурсии. Пример файла показан на рис. 9. При выборе кнопки меню чтения из файла результаты будут прочтены из файла запишутся в таблицу рис. 10 и отобразятся на графике рис. 10.

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

Рисунок 10. Результаты чтения из файла

5. Исходный код программы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.IO;

using System.Windows.Forms;

namespace WindowsFormsApplication1CS

{

public partial class Form1: Form

{

public Form1()

{

InitializeComponent();

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

}

private void label1_Click(object sender, EventArgs e)

{

}

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

}

private void файлToolStripMenuItem_Click(object sender, EventArgs e)

{

}

private void записьВФайлToolStripMenuItem_Click(object sender, EventArgs e) //функция для записи данных в 3 текстовых файла

{

FileStream file = new FileStream("sin1.txt", FileMode.Create, FileAccess.Write);

StreamWriter write_text = new StreamWriter(file);

for (int i = 0; i < dataGridView1.RowCount; i++)

{

write_text.WriteLine(dataGridView1.Rows [i].Cells [0].Value);

write_text.WriteLine(dataGridView1.Rows [i].Cells [1].Value);

}

write_text.Close();

file.Close();

FileStream file1 = new FileStream("sin.txt", FileMode.Create, FileAccess.Write);

StreamWriter write_text1 = new StreamWriter(file1);

for (int i = 0; i < sin.Count; i++)

{

obj1 = sin [i];

write_text1.WriteLine(obj1.x);

write_text1.WriteLine(obj1.y);

}

write_text1.Close();

file1.Close();

FileStream file2 = new FileStream("sin2.txt", FileMode.Create, FileAccess.Write);

StreamWriter write_text2 = new StreamWriter(file2);

for (int i = 0; i < sin.Count; i++)

{

obj1 = sin2 [i];

write_text2.WriteLine(obj1.x);

write_text2.WriteLine(obj1.y);

}

write_text2.Close();

file2.Close();

}

int count(string name) // функция для подсчёта строк в входных текстовых файлах

{

StreamReader read_text = new StreamReader(name);

int num = 0;

while (read_text.ReadLine()!=null&& read_text.ReadLine()!="")

{

num++;

}

read_text.Close();

return num;

}

private void чтениеИзФайлаToolStripMenuItem_Click(object sender, EventArgs e) // функция для чтения из файла и вывода на экран

{

int j = count("sin1.txt");

StreamReader read_text = new StreamReader("sin1.txt");

dataGridView1.Rows.Clear();

chart1.Series [0].Points.Clear();

chart1.Series [1].Points.Clear();

double x, y;

for (int i = 0; i < j; i++)

{

x = Convert.ToDouble(read_text.ReadLine());

y = Convert.ToDouble(read_text.ReadLine());

dataGridView1.Rows.Add();

dataGridView1.Rows [i].Cells [0].Value = x;

dataGridView1.Rows [i].Cells [1].Value = y;

chart1.Series [0].Points.AddXY(x, y);

}

read_text.Close();

j = count("sin.txt");

StreamReader read_text1 = new StreamReader("sin.txt");

for (int i = 0; i < j; i++)

{

x = Convert.ToDouble(read_text1.ReadLine());

y = Convert.ToDouble(read_text1.ReadLine());

chart1.Series [1].Points.AddXY(x, y);

}

read_text1.Close();

}

private void dataGridView1_CellContentClick_1(object sender, DataGridViewCellEventArgs e)

{

}

double fact(double N) // функция для подсчёта факториала

{

if (N < 0)

return 0;

if (N == 0)

return 1;

else

return N * fact(N - 1);

}

void recursiya(double End, double begin, double x,double kk,int ii) // функция для расчёта суммы ряда методом рекурсии

{

double j = 1, k = 0;

k = 0;

for (double n = 0; n < 8; n++)

{

k = k + (fact(2 * n) * Math.Pow(x, 2 * n + 1)) / (Math.Pow(4, n) * fact(n) * fact(n) * (2 * n + 1));

}

k = Math.PI / 2 - k;

obj1.x = x;

obj1.y = k;

sin2.Add(obj1);

ii++;

if (x < End)

{

x += kk;

recursiya(End, begin, x, kk,ii);

}

}

private void button1_Click_1(object sender, EventArgs e) // функция для обработки нажатия кнопки

{

dataGridView1.Rows.Clear();

chart1.Series [0].Points.Clear();

chart1.Series [1].Points.Clear();

double begin = Convert.ToDouble(start.Text);

double End = Convert.ToDouble(end.Text);

double kk = Convert.ToDouble(krok.Text);

double x = begin;

int ii = 0;

recursiya(End, begin, x, kk, ii); // вызов функции для расчета суммы ряда методом рекурсии

double k = 0,x1,k1;

for (x = begin; x < End; x += kk)

{

k = 0;

for (double n = 0; n < 8; n++)

{

k = k + (fact(2 * n) * Math.Pow(x, 2 * n + 1)) / (Math.Pow(4, n) * fact(n) * fact(n) * (2 * n + 1));

}

k = Math.PI / 2 - k;

dataGridView1.Rows.Add();

dataGridView1.Rows [ii].Cells [0].Value = x;

dataGridView1.Rows [ii].Cells [1].Value = k;

x1 = x;

k1 = Math.Acos(x1);

chart1.Series [0].Points.AddXY(x, k);

chart1.Series [1].Points.AddXY(x1, k1);

obj1.x = x;

obj1.y = k;

sin1.Add(obj1); // сохраняем данные Х и У

obj1.x = x1;

obj1.y = k1;

sin.Add(obj1); // сохраняем данные Х и У

ii++;

}

}

public struct xy // структура для создания списка

{

public double x, y;

}

xy obj1, obj2; // и её обьекты для использования

List<xy> sin = new List<xy>(); //

List<xy> sin1 = new List<xy>(); // Списки для сохранения данных табулирования, расчётом суммы ряда и рекурсией

List<xy> sin2 = new List<xy>(); //

private void tabPage1_Click(object sender, EventArgs e)

{

}

}

}

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

...

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

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

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

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

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

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

    творческая работа [6,7 M], добавлен 01.02.2014

  • История создания и развитие языка программирования Pascal, его версии. Особенности и порядок построения графика функции на языке Turbo Pascal с использованием декартовой системы координат. Блок схема алгоритма процедур, листинг и тестирование программы.

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

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

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

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

    контрольная работа [204,4 K], добавлен 26.01.2013

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

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

  • Изучение основных конструкций и способов написания программ на языке Паскаль. Обзор принципов работы и интерфейса написанной программы. Обработка и модификация двумерных массивов. Файловые структуры данных. Текстовые файлы. Элементы машинной графики.

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

  • Описание структуры микроконтроллера AT90mega103 и интегрированной системы его программирования на языке Ассемблер. Создание нового файла и его сохранение. Инициализация микропроцессорной системы командой Ran/Program/Reset/, описание шагов программы.

    лабораторная работа [330,6 K], добавлен 26.06.2013

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

    отчет по практике [527,5 K], добавлен 10.04.2016

  • Программирование на языке Паскаль: алфавит, решение задач, простейшие программы, разветвляющие программы, циклические программы, ввод-вывод, массивы, подпрограммы, строковые данные, записи, файлы, использование библиотеки CRT, графика в Паскале.

    учебное пособие [211,1 K], добавлен 30.03.2008

  • Выбор и обоснование методов составления схемы алгоритма и разработки программы для построения графика временной функции, работающей как в машинном, так и в реальном времени. Алгоритм Горнера. Программа на языке Quick BASIC (с распечаткой листинга).

    курсовая работа [55,1 K], добавлен 21.11.2012

  • Характеристика и описание массива структур из 3-х элементов. Блок-схемы главной функции main и текст программы на языке Си. Построение графика изменения напряженности поля заряженной частицы. Таблица символических имен, работоспособность программы.

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

  • Составление оптимального расписания, где критерием оптимальности служит минимальное значение функции штрафа. Описание алгоритма и разработка программы на языке программирования высокого уровня Java в среде BlueJ. Проверка решения и построение графика.

    курсовая работа [67,1 K], добавлен 04.12.2012

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

    курсовая работа [254,0 K], добавлен 02.07.2011

  • Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.

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

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

    курсовая работа [20,0 K], добавлен 05.03.2015

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

    курсовая работа [49,2 K], добавлен 02.11.2011

  • Исследование общих принципов программирования на языке Assembler для 32-х разрядных и 64-х разрядных процессоров. Изучение основных отличий архитектур i686 и amd64. Работа со стеком. Передача параметров в функции. Смена способа адресации внутри программы.

    контрольная работа [118,2 K], добавлен 10.02.2015

  • Среда программирования Embarcadero RAD Studio. Создание окна, которое отображает системную дату и время. Выполнение выбранного действия в определенный промежуток времени, заданный пользователем. Руководство программиста. Минимальные системные требования.

    курсовая работа [85,2 K], добавлен 16.06.2014

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