Понедельник, 2025-06-16

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)
Просмотров: 3564 | Теги: физика, объем, температура, Лабораторная, Vb.net, тепловой баланс | Рейтинг: 5.0/1
Всего комментариев: 0
avatar
Облако тегов
Поиск
Друзья сайта
  • www.youtube.com

  • vk.com/professorvb

  • Партнерка AIR

  • Партнерка VSP Group
  • Поделись с друзьям
    Теги
    урок C# си шарп видео hello world MenuStrip Генератор имен Switch дроби решебник Алгебра системы уравнения геометрия Vb.net генератор уроки математика программа условия Math массив элементов видеоуроки добавление записи в xml анекдот поиск создать XML удалить из xml калькулятор НОД нок время дата Деструкторы конструкторы тест сокращение дробей десятичные дроби тренажер английский развитие мнемоника иностранные слова random рандом professorvb OpenFileDialog Timer mindgames цикл словарь база пароль слова cos sin комплексные числа вирус массив классы массивы многомерные Break Continue do for forEach While Обработка событий rgb задать цвет XML база данных xml количество элементов xml поиск значений xml редактирование xml создание soft AntiCenz fri-gate google pirat proxy tor запрещенные сайты Open save RichTextBox TopMost DateTimePicker календарь количество дней между датами перемешивание массива Анаграммы Меморина Ребусы Рифмоплет скорочтение Сравнение дробей использование
    Copyright ProfessorVB © 2025