Главная страница
Навигация по странице:

  • Предмет: Информатика Отчет Лабораторная работа 5 Тема и название работы

  • Объект Имя объекта Свойство

  • Мартынов. Мартынов project5. Отчет Лабораторная работа 5 Тема и название работы Лабораторная работа Программирование алгоритмов регулярных циклических структур


    Скачать 325.81 Kb.
    НазваниеОтчет Лабораторная работа 5 Тема и название работы Лабораторная работа Программирование алгоритмов регулярных циклических структур
    АнкорМартынов
    Дата13.11.2021
    Размер325.81 Kb.
    Формат файлаdocx
    Имя файлаМартынов project5.docx
    ТипОтчет
    #270677

    Московский технический университет связи и информатики

    Факультет: ЗОТФ


    Предмет: Информатика


    Отчет

    Лабораторная работа 5

    Тема и название работы:

    «Лабораторная работа: Программирование алгоритмов регулярных циклических структур»

    Студент: Мартынов А.И.

    2 курс, группа БСТ1351
    Москва, 2015

    Содержание


    1.Задание на разработку проекта 3

    2.Формализация и уточнение задания 3

    3.Разработка приложения 3

    3.1Разработать графический интерфейс пользователя 3

    3.2Установка свойств объектов 4

    3.3Разработка схемы алгоритма 5

    3.4Написание программного кода 6

    4.Результат выполнения проекта 8

    5.Выводы 9


    1. Задание на разработку проекта



    Создать проект для формирования таблицы значений функции f(x)=x+1/x при изменении x на отрезке [a;b] c шагом h и найти наименьшее значение функции y=f(x). Пусть, a=0,1, b=1,5 и шаг h= 0,1. Значения a, b, h вводятся в элементы управления TextBox. Значения аргумента и значения функции, при выводе их на форму необходимо разместить в элементах управления ListBox. Наименьшее значение функции поместить в текстовое поле, а надписи - в метки.

    1. Формализация и уточнение задания


    Для решения задачи табуляции функции на заданном интервале следует использовать алгоритмическую структуру регулярного типа, т.к. заданы начальное и конечное значения аргумента, а также шаг его изменения, то есть в этом случае можно заранее определить количество вычисленных значений. Данная задача решается с помощью процедуры-подпрограммы RegCikl(), которая, получив в качестве входных параметров (по значению) границы интервала (a и b) и шаг (h) изменения аргумента, табулирует функцию, а также вызывает процедуру-функцию calculateFunction(), которая и вычисляет значение заданной функции от заданного аргумента.

    1. Разработка приложения




      1. Разработать графический интерфейс пользователя



    Приложение может иметь вид как на рис. 1

    Рис.1 Графический интерфейс приложения.
      1. Установка свойств объектов



    Используемые объекты и их свойства приведены в таблице 1.
    Таблица 1. Свойства объектов.


    Объект

    Имя объекта

    Свойство

    Значение свойства

    Форма



    Form1

    Name

    Form1

    Text

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

    BackColor (Palette)

    ActiveCaption

    FormBorderStyle

    FixedSingle

    Метка

    label_zadanie

    Text

    Задание:

    Метка

    label_argument_x

    Text

    Аргумент (x)

    Метка

    label_funkcija

    Text

    Функция F(x)

    Метка

    label_start

    Text

    Начало интервала

    Метка

    label_stop

    Text

    Конец интервала

    Метка

    label_shag

    Text

    Шаг

    Метка

    label_output_n

    Text

    Количество шагов

    Метка

    label_output_minimal

    Text

    Минимальное значение функции

    Метка

    label_error_text

    Text

    Пусто

    Таблица

    listBox_argument_x

    Items

    Пусто

    Таблица

    listBox_funkcija_x

    Items

    Пусто

    Изображение

    pictureBox

    Name

    pictureBox1

    Текстовое поле

    textBox_input_start

    Name

    textBox_input_start

    Text


    0,1



    Текстовое поле


    textBox_input_stop



    Name

    textBox_input_stop

    Text

    1,5

    Текстовое поле



    textBox_input_h


    Name

    textBox_input_h

    Text

    0,1

    Текстовое поле


    textBox__output_n

    Name

    textBox__output_n

    Text

    Пусто

    Текстовое поле


    textBox_output_minimal

    Name

    textBox_output_minimal

    Text

    Пусто

    Выделить все текстовые поля и присвоить им одинаковые свойства

    Size

    194; 20

    Выделить текстовые поля textBox__output_n , textBox_output_minimal и присвоить им одинаковые свойства

    Enabled

    False

    Кнопка


    button1_calculate

    Name

    button1_calculate

    Text

    Вычислить

    Кнопка


    button_clear


    Name

    button_clear

    Text

    Очистить

    Кнопка


    button_exit


    Name

    button_exit

    Text

    Выход



      1. Разработка схемы алгоритма



    Схема алгоритма представлена на рис.2


    Рис.2 Схема алгоритма
      1. Написание программного кода



    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 WForms_project5

    {

    public partial class Form1 : Form

    {

    public Form1()

    {

    InitializeComponent();

    }
    //функция ввода в TextBox действительного числа

    double vvod(TextBox textbox){return Convert.ToDouble(textbox.Text);}
    //процедура вывода double-результата в listBox

    void vivod(double? z, ListBox l)

    {

    l.Items.Add(z.ToString());

    }
    //процедура вывода double-результата в TextBox

    void vivod(double? value, TextBox tx)

    {

    tx.Text = Convert.ToString(value);

    }
    //процедура вывода int-результата в TextBox

    void vivod(int n, TextBox tx){tx.Text = Convert.ToString(n);}
    //вычисление функции от заданного аргумента

    double calculateFunction(double x){return x + 1 / x;}
    //процедура решения задачи

    void RegCikl(double min, double max, double h,out double? minimum)

    {

    int n;

    double x, y;

    minimum = null;
    if (min > max) {

    label_error_text.Text = "ОШИБКА : Начальное значение не может быть больше конечного!";

    return;

    }

    if (h <= 0)

    {

    label_error_text.Text = "ОШИБКА : Шаг должен быть строго больше нуля!";

    return;

    }
    //первоначальное допущение, что в интервале начальная и конечная границы совпадают

    minimum = calculateFunction(min);
    //вычисление количества шагов

    n = Convert.ToInt32(Math.Ceiling((max - min) / h)+1);

    vivod(n, textBox__output_n);
    x = min;
    for (int i = 0; i < n; i++)

    {

    y = calculateFunction(x);

    vivod(x, listBox_argument_x);

    vivod(y, listBox_funkcija_x);

    if (y < minimum) minimum = y;

    x = x + h;

    }
    }
    //описание действий при нажатии на кнопку Выход

    private void button_exit_Click(object sender, EventArgs e)

    {

    Application.Exit();

    }
    //очистка текстовых полей с результатами

    private void clearResults(){

    textBox_output_minimal.Clear();

    listBox_argument_x.Items.Clear();

    listBox_funkcija_x.Items.Clear();

    textBox_output_minimal.Clear();

    textBox__output_n.Clear();

    label_error_text.Text = "";

    }
    //описание действий при нажатии на кнопку Очистить

    private void button_clear_Click(object sender, EventArgs e)

    {

    clearResults();

    }
    //описание действий при нажатии на кнопку Вычислить

    private void button1_calculate_Click(object sender, EventArgs e)

    {

    clearResults();
    try

    {

    double min, max, h;

    min = vvod(textBox_input_start);

    max = vvod(textBox_input_stop);

    h = vvod(textBox_input_h);

    double? minimum = null;

    RegCikl(min, max, h, out minimum);

    vivod(minimum, textBox_output_minimal);

    }

    catch (Exception ex)

    {

    label_error_text.Text = "Ошибка : "+ex.Message;

    }

    }

    }

    }

    1. Результат выполнения проекта



    Результаты выполнения проекта приведены на рис. 3 и 4

    Рис.3


    Рис.4
    1. Выводы


    1. Создан проект на C#.

    2. Формализованы и уточнены данные, в результате которых был разработан алгоритм решения задачи.

    3. Разработан графический интерфейс пользователя, включающий в себя: множество меток, одну форму, три кнопки управления, три текстовых полей для ввода данных и два элемента управления listbox для вывода результата работы программы.

    4. Создан проект, использующий алгоритмы регулярных циклических структур.

    5. Протестирована работа программы. Использованы следующие исходные тестовые данные: а=0,1, b=1,5 и шаг h=0,1. В результате ручного счета получены следующие результаты: значения на рис.3. При этих исходных тестовых данных результаты ручного расчета и вычисления на ПК совпадают.


    написать администратору сайта