Среда, 2025-01-22

Professor VB - примеры на VB.net и C#
Меню сайта
Вход на сайт
Категории раздела
Мои программы [9]
Полезный софт [8]
Главная » Статьи » Soft » Мои программы

VB.net - тепловой баланс

VB.net - тепловой баланс



Представляю вам небольшую программу, на основе лабораторной работы.

* * *

Когда нет под рукой термометра, а необходимо получить нужную температуру, можно воспользоваться следующей формулой:
t = (t1 * V1 + t2 * V2) / (V1 + V2)

Где
t - конечная температура,
t1,t2 - начальные температуры жидкостей
V1,V2 - начальные
объемы соответствующих жидкостей

Таким образом, мы сможем подобрать любую температуру из диапазона, для воды это примерно от 18°- 24° (комнатная температура) до 100° (температура кипения воды).

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

Таким образом можно решить 3 различных задачи:
    - Найти общую температуру
    - Найти начальные объемы
    - Определить одну из температур

    
Для решения этих задач выведем соответствующие формулы.


    - Найти общую температуру


T = (T1 * V1 + T2 * V2) / (V1 + V2)
V = V1 + V2

 

    - Найти начальные объемы


V2 = V * (T - T1) / (T2 - T1)
V1 = V - V2

 

    - Определить одну из температур


V = V1 + V2
T1 = (T * V - T2 * V2) / V1

 


 

Интерфейс нашей программы будет таким:
на форму поместим

- 3 RadioButton - для выбора задачи
- 3 GroupBox - для ввода условий и вывода ответов
- Кнопку - для решения (при изменении значений в нумераторе - так же будет выполнятся решение)
- Ярлыки - для подписей

В GroupBox помешаем нумераторы(NumericUpDown) и Ярлыки.

Свойства нумераторов(NumericUpDown):
-DecimalPlaces = 2 (для объемов) и 3 (для температур)
-Maximum = 1000
-Value - отличное от нуля
-Minimum = 0,01 (для объемов) и 0 (для температур, если работаем только с водой)

 

Все нумераторы и ярлыки ответов называем соответственно.

    - Найти общую температуру
gbT
    numV1
    numV2
    lblV
    numt1
    numt2
    lblt
        
    - Найти начальные объемы
gbV2
    numVVt1
    numVVt2
    numVVt
    numVVv
    lblVVv1
    lblVVv2    
    
    - Определить одну из температур
gbTT
    numTTv1
    numTTv2
    lblTTv
    numTTt
    numTTt2
    lblTTt1

Где
gb... - GroupBox
num... - NumericUpDown
lbl... - label (ярлыки)

---

Переходим к коду.


Public Class Form1
    'Задаем переменные
    Dim V As Decimal    'общий объем
    Dim V1 As Decimal    'объем 1 жидкости
    Dim V2 As Decimal    'объем 2 жидкости
    Dim T As Decimal    'полученная температура
    Dim T1 As Decimal    'температура 1 жидкости
    Dim T2 As Decimal    'температура 2 жидкости

    'При загрузке, выравниваем все GroupBox (gb...) и меняем размер формы (me)
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
        '374; 475
        Me.Width = 374
        Me.Height = 475

        gbT.Top = 137
        gbT.Left = 52

        gbTT.Top = 137
        gbTT.Left = 52

        gbV2.Top = 137
        gbV2.Left = 52
  
  End Sub

    'подпрограмма выполнения расчетов
    Sub START()
        '----- T---Найти общую температуру-
        If rbT.Checked = True Then
            V1 = numV1.Value
            V2 = numV2.Value

            T1 = numt1.Value
            T2 = numt2.Value

            If V1 <> 0 Or V2 <> 0 Then
                V = V1 + V2
                T = (T1 * V1 + T2 * V2) / (V1 + V2)

                lblt.Text = Math.Round(T, 1)
                lblV.Text = Math.Round(V, 2)

            Else
                lblt.Text = "-"
                lblV.Text = "-"
            End If

        End If
        '---END-- T----

        '----- V1V2---Найти начальные объемы -
        If rbV2.Checked = True Then
            T = numVVt.Value
            T1 = numVVt1.Value
            T2 = numVVt2.Value
            V = numVVv.Value

            If (T2 - T1) <> 0 Then
                V2 = V * (T - T1) / (T2 - T1)
                V1 = V - V2

                lblVVv1.Text = Math.Round(V1, 2)
                lblVVv2.Text = Math.Round(V2, 2)
            Else
                lblVVv1.Text = "-"
                lblVVv2.Text = "-"
            End If

        End If
        '---END-- V1V2----

        '----- t1t2---Определить одну из температур-
        If rbT1.Checked = True Then
            V1 = numTTv1.Value
            V2 = numTTv2.Value
            T = numTTt.Value
            T2 = numTTt2.Value

            If V1 <> 0 Then
                V = V1 + V2
                T1 = (T * V - T2 * V2) / V1

                lblTTt1.Text = Math.Round(T1, 1)
                lblTTv.Text = Math.Round(V, 2)
            Else
                lblTTt1.Text = "-"
                lblTTv.Text = "-"

            End If

        End If
        '---END-- t1t2----
    End Sub

 

    'меняем обозначения и выбираем нужное решение
    Private Sub rbT_CheckedChanged(sender As Object, e As EventArgs) Handles rbT.CheckedChanged
        lblName.Text = "Найти общую температуру"
        gbT.Visible = True
        gbTT.Visible = False
        gbV2.Visible = False
        START()

    End Sub

    'меняем обозначения и выбираем нужное решение
    Private Sub rbV2_CheckedChanged(sender As Object, e As EventArgs) Handles rbV2.CheckedChanged
        lblName.Text = "Найти начальные объемы "
        gbT.Visible = False
        gbTT.Visible = False
        gbV2.Visible = True
        START()
 
   End Sub

    'меняем обозначения и выбираем нужное решение
    Private Sub rbT1_CheckedChanged(sender As Object, e As EventArgs) Handles rbT1.CheckedChanged
        lblName.Text = "Определить одну из температур"
        gbT.Visible = False
        gbTT.Visible = True
        gbV2.Visible = False
        START()

    End Sub

    'выполнение расчетов
    'по нажатию на кнопку

    Private Sub cmdOk_Click(sender As Object, e As EventArgs) Handles cmdOk.Click
        START()
    End Sub

    'выполнение расчетов
    'по нажатию на нумераторы

    Private Sub numV1_ValueChanged(sender As Object, e As EventArgs) Handles numV1.ValueChanged
        START()
    End Sub

    Private Sub numV2_ValueChanged(sender As Object, e As EventArgs) Handles numV2.ValueChanged
        START()
    End Sub

    Private Sub numt1_ValueChanged(sender As Object, e As EventArgs) Handles numt1.ValueChanged
        START()
    End Sub

    Private Sub numt2_ValueChanged(sender As Object, e As EventArgs) Handles numt2.ValueChanged
        START()
    End Sub

    Private Sub numVVt1_ValueChanged(sender As Object, e As EventArgs) Handles numVVt1.ValueChanged
        START()
    End Sub

    Private Sub numVVt2_ValueChanged(sender As Object, e As EventArgs) Handles numVVt2.ValueChanged
        START()
    End Sub

    Private Sub numVVt_ValueChanged(sender As Object, e As EventArgs) Handles numVVt.ValueChanged
        START()
    End Sub

    Private Sub numVVv_ValueChanged(sender As Object, e As EventArgs) Handles numVVv.ValueChanged
        START()
    End Sub

    Private Sub numTTv1_ValueChanged(sender As Object, e As EventArgs) Handles numTTv1.ValueChanged
        START()
    End Sub

    Private Sub numTTv2_ValueChanged(sender As Object, e As EventArgs) Handles numTTv2.ValueChanged
        START()
    End Sub

    Private Sub numTTt_ValueChanged(sender As Object, e As EventArgs) Handles numTTt.ValueChanged
        START()
    End Sub

    Private Sub numTTt2_ValueChanged(sender As Object, e As EventArgs) Handles numTTt2.ValueChanged
        START()
    End Sub

End Class

 


 

 

 

В начало

 

 



 

Категория: Мои программы | Добавил: ProfessorVB (2017-03-28)
Просмотров: 3482 | Теги: физика, Объем, температура, лабораторная, Vb.net, тепловой баланс | Рейтинг: 5.0/1
Всего комментариев: 0
avatar
Облако тегов
Поиск
Друзья сайта
  • www.youtube.com

  • vk.com/professorvb

  • Партнерка AIR

  • Партнерка VSP Group
  • Поделись с друзьям
    Теги
    Видео Switch массивы уравнения геометрия continue forEach while Обработка событий задать цвет C# math Vb.net xml количество элементов xml поиск значений математика видеоуроки Soft системы Google pirat Proxy tor НОД нок добавление записи в xml поиск Уроки генератор hello world время деструкторы конструкторы дроби калькулятор десятичные дроби решебник сокращение дробей си шарп мнемоника тренажер random количество дней между датами professorvb дата Урок mindgames алгебра многомерные слова словарь Пароль cos SIN база timer рандом Цикл Break DO for RGB условия массив элементов xml редактирование xml создание вирус MenuStrip AntiCenz fri-gate запрещенные сайты база данных Open RichTextBox XML удалить из xml save TopMost анекдот создать XML Классы Тест OpenFileDialog английский развитие иностранные слова DateTimePicker календарь массив перемешивание массива Анаграммы Рифмоплет Сравнение дробей Меморина скорочтение Использование ребусы комплексные числа программа генератор имен
    Copyright ProfessorVB © 2025