Прогноз возникновения наводнений
Наводнение – это значительное затопление местности в результате подъема уровня воды в реке, озере или море. |
Основными причинами возникновения наводнений являются:
ливни;
интенсивное таяние снега;
скопление льдин во время ледохода;
аварии на гидротехнических сооружениях;
цунами, тайфуны.
Наводнения занимают в России первое место по повторяемости, площади распространения, причиняемому материальному ущербу.
Повторяемость наводнений:
Наводнения |
Повторяемость |
Низкие |
5–10 лет |
Высокие |
20–25 лет |
Большие |
50–100 лет |
Катастрофические |
100–200 лет |
На территории России угроза наводнений существует для 746 городов и нескольких тысяч населенных пунктов.
Средний ежегодный ущерб от наводнений составляет 5 трлн. руб. (в ценах 1995 г.), что превышает 20 трлн. современных руб.
Отрасль |
Ущерб |
коммунальное хозяйство |
35% |
сельское хозяйство |
27 % |
промышленность |
14% |
коммуникации (дороги и мосты) |
8% |
Паводок – подъем воды в реках при ливневых дождях. Возникают внезапно и продолжаются несколько дней.
Весеннее половодье – подъем воды в реках в результате таяния снега и льда. Возникают постепенно. Продолжительность половодья для малых рек – несколько дней, для больших рек – 1…3 месяца.
Пример 1. прогноз наводнения
Написать процедуру для прогноза возможности наводнения по следующим простым признакам:
признак A |
ливневый дождь |
признак B |
обильное таяние снега |
признак C |
заторы при ледоходе |
Сценарии развития ситуации на реке:
Номер сценария |
Количество признаков |
Описание |
0 |
0 |
благоприятная обстановка |
1 |
1 |
малое наводнение |
2 |
2 |
высокое наводнение |
3 |
3 |
большое наводнение |
Алгоритм прогноза:
Код программы:
Function Rain() As Integer
Dim p As Byte
p = MsgBox("ливневый дождь", vbYesNo, "Опрос")
If p = vbYes Then Rain = 1
End Function
Function Snow() As Integer
Dim p As Byte
p = MsgBox("обильное таяние снега", vbYesNo, "Опрос")
If p = vbYes Then Snow = 1
End Function
Function Ice() As Integer
Dim p As Byte
p = MsgBox("заторы при ледоходе", vbYesNo, "Опрос")
If p = vbYes Then Ice = 1
End Function
Private Sub Command1_Click()
Dim j As Integer
j = Rain() + Snow() + Ice()
Select Case j
Case 0: Label1.Caption = "благоприятная обстановка"
Case 1: Label1.Caption = "малое наводнение"
Case 2: Label1.Caption = "высокое наводнение"
Case 3: Label1.Caption = "большое наводнение"
End Select
End Sub
Пример 2. прогноз наводнения
Написать процедуру для прогноза возможности наводнения по следующим составным признакам:
признак A |
оттепель & ливневый дождь |
признак B |
оттепель & снежная зима |
признак C |
внезапная оттепель & холодная зима |
Комментарии:
Сочетание условий оттепель & ливневый дождь является причиной возникновения паводка.
Сочетание условий оттепель & снежная зима является причиной возникновения половодья.
Сочетание условий внезапная оттепель & холодная зима является причиной возникновения ледяных заторов.
Если оттепель = False, то внезапная оттепель = False.
Алгоритм прогноза:
ЕСЛИ оттепель = да ТО
ливневый дождь: да/ нет
снежная зима: да/ нет
ЕСЛИ внезапная оттепель = да ТО
холодная зима: да/ нет
Код программы:
Function Thaw() As Boolean
Dim p As Byte
p = MsgBox("оттепель", vbYesNo, "Опрос")
If p = vbYes Then Thaw = True
End Function
Function SuddenThaw() As Boolean
Dim p As Byte
p = MsgBox("внезапная оттепель", vbYesNo, "Опрос")
If p = vbYes Then SuddenThaw = True
End Function
Function Rain() As Integer
Dim p As Byte
p = MsgBox("ливневый дождь", vbYesNo, "Опрос")
If p = vbYes Then Rain = 1
End Function
Function SnowWinter() As Integer
Dim p As Byte
p = MsgBox("снежная зима", vbYesNo, "Опрос")
If p = vbYes Then SnowWinter = 1
End Function
Function ColdWinter() As Integer
Dim p As Byte
p = MsgBox("холодная зима", vbYesNo, "Опрос")
If p = vbYes Then ColdWinter = 1
End Function
Private Sub Command1_Click()
Dim j As Integer
If Thaw() Then
j = Rain() + SnowWinter()
If SuddenThaw() Then
j = j + ColdWinter()
End If
End If
Select Case j
Case 0: Label1.Caption = "благоприятная обстановка"
Case 1: Label1.Caption = "малое наводнение"
Case 2: Label1.Caption = "высокое наводнение"
Case 3: Label1.Caption = "большое наводнение"
End Select
End Sub
Пример 3. детальный прогноз наводнения
Написать процедуру для прогноза возможности наводнения по следующим признакам (известно, что температура выше нуля):
признак A |
высокий уровень воды в реке |
признак B |
ливневый дождь |
признак C |
среднесуточная температура >3°С & много снега |
Сценарии развития ситуации на реке:
Номер сценария |
Признаки |
Описание |
0 |
none |
благоприятная обстановка |
1 |
A |
усилить внимание |
2 |
B |
угроза паводка |
3 |
C |
угроза половодья |
4 |
B & C |
угроза большого наводнения |
5 |
A & B |
угроза большого паводка |
6 |
A & С |
угроза большого половодья |
7 |
A & B & С |
угроза катастрофического наводнения |
Комментарий:
Сочетание условий среднесуточная температура >3°С & много снега является причиной возникновения обильного таяния снега.
Код программы:
Function River() As Boolean
Dim p As Byte
p = MsgBox("высокий уровень воды в реке", vbYesNo, "Опрос")
If p = vbYes Then River = True
End Function
Function Rain() As Boolean
Dim p As Byte
p = MsgBox("ливневый дождь", vbYesNo, "Опрос")
If p = vbYes Then Rain = True
End Function
Function Snow() As Boolean
Dim p As Byte, q As Byte
p = MsgBox("температура > 3", vbYesNo, "Опрос")
If p = vbYes Then
q = MsgBox("много снега", vbYesNo, "Опрос")
If q = vbYes Then Snow = True
End If
End Function
Private Sub Command1_Click()
Dim A As Boolean, B As Boolean, C As Boolean
A = River()
B = Rain()
C = Snow()
If A And B And C Then
Label1.Caption = "угроза катастрофического наводнения"
ElseIf A And C Then
Label1.Caption = "угроза большого половодья"
ElseIf A And B Then
Label1.Caption = "угроза большого паводка"
ElseIf B And C Then
Label1.Caption = "угроза большого наводнения"
ElseIf C Then
Label1.Caption = "угроза половодья"
ElseIf B Then
Label1.Caption = "угроза паводка"
ElseIf A Then
Label1.Caption = "усилить внимание"
Else
Label1.Caption = "благоприятная обстановка"
End If
End Sub
