[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Приложение Windows Forms: таблица синусов
Neo Дата: Воскресенье, 16.02.2014, 22:09 | Сообщение 1
Программа с графическим интерфейсом. На форме размещены окошки: начальный угол, шаг таблицы, число строк таблицы, окно для таблицы результатов, кнопка "Создать таблицу".

Результаты работы программы

Как работает приложение Windows Forms ? Оно, как и консольное приложение, начинает работу с исполнения метода Main, размещенного (по умолчанию) в файле Program.cs. Но в этом случает Main обычно показывает главную форму и на этом свою работу заканчивает. Дальнейшая работа приложения Windows Forms происходит под управлением так называемых событий: щелчков по кнопкам или пунктам меню и т п. Поэтому в этом примере на форме размещена кнопка "Создать таблицу"

Как создать приложение Windows Forms ?
- При запуске Visual Studio обычно открывается "Начальная страница". Щёлкните "Создать проект". В окне "Создать проект", в окошке "Расположение" выберите папку, внутри которой будет расположена папка проекта. Например, у меня здесь:
D:\XRAN_MY_PROGS\0_vis_stud\ . В окошке "Имя" впишите имя проекта, например, этот проект: "my0_4sin"

- Выберите тип приложения: "Приложение Windows Forms" "Visual C#". Флажки "Создать каталог" и "Добавить в систему" у меня очищены. Щелкните кнопку ОК и вы попадёте на вкладку "Form1.cs [Конструктор]". Если это не произойдёт, то щелкните в меню: Вид : Обозреватель решений. Откройте вкладку Обозреватель решений и сделайте двойной щелчок по Form1.cs. Если откроется окно кода, а не конструктора, то щёлкните в меню: Вид : Конструктор.

- В окне конструктора вы видите форму. Её размеры можно изменять мышкой. Чтобы настраивать свойства формы сделайте правый мышещелчок и из контекстного меню выберите Свойства. Появляется список свойств объекта, который вы выделили в окне крнструктора. Я обычно настраиваю следуюшие свойства главной формы:

  • Font (шрифт). Щёлкаю кнопку построителя справа, выбираю размер и тип шрифта
  • Text - Заголовок формы вписываю.
  • FormBorderStyle - Fixed3D - форма фиксированных размеров


- Далее перехожу на вкладку "Form1.cs [Конструктор]", чтобы установить на форме другие элементы. Эти элементы находятся на вкладке "Панель элементов". Наведите курсор на "Панель элементов" (слева), чтобы раскрылась Панель элементов (вначале она раскрывается с задержкой). Устанавливаю, например, надписи. Выбираю мышкой элемент класса Label, затем размещаю её на форме (щелчком или рисую прямоугольник). Перехожу в окно "Свойства", записываю свойство Text (надпись). Так установливаю три надписи: Начальный угол (град), Шаг таблицы (град), Число строк таблицы. При движении элементов появляются линии, помогающие выравнивать элементы.

- Аналогично устанавливаю окошки для ввода значений - правее надписей. Это элементы класса TextBox. Устанавливаю свойства Text, соответственно (сверху-вниз): 0, 1, 10 хотя это необязательно. Считаю полезным задавать имена элементов - для того, чтобы в окне кода легче узнавать их по именам. Установил имена TextBox, соответвтвенно: tBnac (начало), tBshag (шаг), tBstrok (число строк)

- Размещаю окошко TextBox для вывода таблицы. Устанавливаю для него свойства: ScrollBars = Vertical (вертикальная полоса прокрутки), Multiline = True (для показа нескольких строк), WordWrap = False (Запретил перенос на новую строку),

- Обработчик события - это метод, который выполняется при возникновении события, например, щелчка по кнопке. Ставлю кнопку (класс Button), заполняю свойство Text: Создать таблицу, имя (Name = btnGo), а также обработчик события Click (щелчок по кнопке, клик). Этот обработчик можно создать двойным щелчком по кнопке в окне конструктора. Более универсальный способ такой: выделить кнопку, открыть Свойства, перейти на вкладку "События" (кликнуть вверху кнопку "События" (где молния )) и в списке событий сделать двойной щелчок по строке Click. Вы перейдёте в окно редактора кода, где часть кода в окне редактора уже сформирована автоматически, в том числе и пустая заготовка для метода, являющегося обработчиком события Click. То есть этот метод btnGo_Click будет выполняться, когда пользователь кликнет кнопку "Создать таблицу". Далее обсуждается работа этого метода.

Текст программы (текст файла Form1.cs):
Код
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace my0_4sin
{
     public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();
         }

         private void btnGo_Click(object sender, EventArgs e)
         {
             double fi0, dfi, fi, sinfi;
             int nn;
             nn = int.Parse(tBstrok.Text);
             fi0 = double.Parse(tBnac.Text) * Math.PI / 180;
             dfi = double.Parse(tBshag.Text) * Math.PI / 180;
             textBox1.Text = "";

             for (int ii = 0; ii < nn; ii++)
             {  
             fi = fi0 + dfi*ii;
             sinfi = Math.Sin(fi);
             textBox1.AppendText("Угол= " + (fi*180/Math.PI).ToString()  
               + " Sin= " + sinfi.ToString() + Environment.NewLine);
             }
         }
     }
}

Обсуждение программы (метода btnGo_Click)
Все действия, задуманные программистом, выполняются в btnGo_Click. Рассмотрим строки кода.

  • double fi0, dfi, fi, sinfi; - объявляются переменные, которые будут использованы:
  • fi0 - угол, от которого начнётся таблица, dfi - шаг таблицы (изменение угла при переходе к следующей строке таблицы), fi - значение угла для текущей строки таблицы, sinfi - значение синуса угла fi.
  • int nn; - объявляется переменная nn (число строк таблицы)
  • nn = int.Parse(tBstrok.Text); - используя метод Parse, преобразуется строковое представление числа в вещественное, которое присваивается переменной nn
  • fi0 = double.Parse(tBnac.Text) * Math.PI / 180; - аналогично, строковое представление начального угла, записанное в окошке, перед которым стоит надпись "Начальный угол", преобразуется в число и далее преобразуется в радианы умножением на Math.PI / 180 и присваивается переменной fi0
  • dfi = double.Parse(tBshag.Text) * Math.PI / 180; - Точно так же вычисляется шаг таблицы.
  • textBox1.Text = ""; - очищается окно textBox1, в котором будет таблица
  • for (int ii = 0; ii < nn; ii++) - это так называемый оператор цикла for. Здесь объявляется переменная ii (так называемая переменная цикла) с начальным значением = 0. Затем выполняется заключённая между фигурными скобками {} группа операторов. Затем ii увеличивается на 1 (об этом указывает ii++). Далее снова выполняется эта же группа операторов, и так повторяется до тех пор, пока ii меньше чем nn (об этом указывает ii < nn;). Подробнее об операторах цикла см в учебниках
  • Какие же действия повторяются (внутри оператора цикла)

    fi = fi0 + dfi*ii; - для каждого ii = 0,1,2... nn-1 вычисляется угол fi
    sinfi = Math.Sin(fi); - для каждого ii, а следовательно, для соответствующего fi вычисляется Sin(fi). При этом используется класс Math (математический. Он содержит многие популярные функции).
    textBox1.AppendText("Угол= " + (fi*180/Math.PI).ToString() + " Sin= " + sinfi.ToString() + Environment.NewLine);
    Метод AppendText добавляет к тексту, уже содержащемуся в textBox1 выражение типа string, являющеся параметром, т е записанное в скобках. Это выражение представляет собой сумму:

    "Угол= " - это строковый литерал

    (fi*180/Math.PI).ToString() - сначала fi переводится в градусы, затем метод ToString преобразует это число градусов к строковому типу (получается строка)

    " Sin= " - это строковый литерал

    sinfi.ToString() - это строка, содержащая значение синуса фи

    Environment.NewLine. Класс Environment позволяет программе работать в разных операционных системах. Если программа запускается в ОС Unix, то NewLine имеет значение "\n", а в других ОС - значение "\r\n" . Таким образом каждая новая порция текста в окне textBox1 начинается с новой строки.

Исправление в программе - чтобы синусы выводились с тремя цифрами правее запятой. Применено форматирование строк
Код
textBox1.AppendText("Угол= " + (fi*180/Math.PI).ToString()
  + " Sin= " + sinfi.ToString("f3") + Environment.NewLine);



Результат форматирования строк.

Статус: Neo
  • Страница 1 из 1
  • 1
Поиск: