Diskuze: list ve VB

C# .NET .NET (C# a Visual Basic) list ve VB American English version English version

Avatar
Jaroslav Trojan:

Nevím proč nejde tento kód s Property

Module Module1
'PROSTÝ NOSNÍK program pro výpočet vnitřních sil a dimenzování nosníku z oceli
Dim retez(15) As String
Dim i1, q9, a9, a8, c1, i, c, klo, t9, svar, i10, j, i3, k, zes As Integer
Dim dd, ss, pi, m1, y5, y0, kof, kf, y1, y2, t, L, zz, maxd, a6 As Single
Dim r0, w9, a, b, a7, q1, aa, bb, u, m2, l1, pd, wd, z1, j1, z2, jc, wc As Single
Dim pc, b1, aa8, o9, w1, jd, m9, a5, x, xx, x1, r1, r3, k1, k2, v1, pb, wb, jb, w, v0 As Single
Dim c3, g, L2, L3, y, f, wa, pa, ja, k9, k91, h2, h1, k8, L8, b9, j3, j2, a1, a2, a3, w2, w3 As Single
Dim m(120), q(25), z(45), kk(25), s(25), p(25), n(30), v(25), d(50), R(66, 10) As Single
Public Sub pruh()
y0 = 0 : a = 0.5 * L
2660: kf = kf + 1 : If kf = 1 Then
kof = 1
End If
pruhy()
If Math.Abs(y1) > 0 Then
' Console.WriteLine(" částečný průhyb y[cm]=" & y2 * 10 / kof & ".")
End If
If Math.Abs(y2) > Math.Abs(y0) Then
y0 = y2 : x1 = a
End If
a = a + 0.1 * L
If a < 0.5 * L Then
GoTo 2660
End If
End Sub

Public Sub pruhy()
y1 = 0 : y2 = 0
For j = 0 To 48
t = j * L / 50
If t <= x Or t >= x + dd Then
zz = z1
Else
zz = z2
End If
If j = 0 Then
y1 = y1 + (L - t + L / 100) * m(j) / 2 / zz * L / 50
Else
y1 = y1 + (L - t + L / 100) * (m(j) + m(j - 1)) / 2 / zz * L / 50
End If
If t > a Then
GoTo 2510
End If
If j = 0 Then
y2 = y2 - (a - t + L / 100) * m(j) / 2 / zz * L / 50
Else
y2 = y2 - (a - t + L / 100) * (m(j) + m(j - 1)) / 2 / zz * L / 50
End If
2510: Next j

End Sub
Public Sub prubeh()
Console.WriteLine(" Průběh momentu M zleva doprava [kNm]")
For j = 0 To 99
Console.WriteLine(" j=" & j & " M=" & m(j) & "&.")
Next
End Sub
Public Sub tisk()
Console.WriteLine(" ")
Console.WriteLine(" ")
Console.WriteLine(" P R O S T Ý N O S N Í K")
Console.WriteLine(" Návrh prostého nosníku číslo:" & retez(15) & ".")
Console.WriteLine(" délka nosníku=" & L & " počet sil=" & i1 & ".")
For i = 0 To i1
Console.WriteLine(" P[kN]" & i + 1 & "=" & p(i) & " a[m]=" & v(i) & " gama f=" & n(i) & ".")
Next i
Console.WriteLine(" rovnoměrné q [kN/m]=" & q1 & " gama f=" & u & ".")
For c = 0 To c1
Console.WriteLine(" částečné rovnoměrné qč[kN/m]=" & q(c) & " od zč[m]=" & z(c) & " do kč[m]=" & kk(c) & " gama f=" & s(c) & ".")
Next
Console.WriteLine(" levá reakce A[kN]=" & aa & " pravá reakce B[kN]=" & bb & " max.moment M [kNm]=" & m9 & " v průřezu xc[m]=" & xx & ".")
If i10 = 0 Then
Console.WriteLine(" Navrhuje II" & pb & " Wx[cm3]=" & wb & " Jx[cm4]=" & jb & " maximální L/y:" & a5 & " y,dov[cm]=" & aa8 & ".") : GoTo 3130
End If
Console.WriteLine(" Navrhuje I" & pb & " Wx[cm3]=" & wb & " Jx[cm4]=" & jb & " max.L/y=" & a5 & " y,dov[cm]=" & aa8 & ".")
Console.WriteLine(" nový nánrh profilu I " & pd & " Wx[cm3]=" & wd & " Jx[cm4]=" & jd & ".")
3130: If i10 = 0 Then
Console.WriteLine(" nový návrh II" & pd & " Wx[cm3]=" & wd & " Jx[cm4]=" & jd & ".")
End If
Console.WriteLine(" 1.MEZNÍ STAV: napětí Sigma[MPa]=" & b1 & "< Rd=210 MPa vyhovuje ")
Console.WriteLine(" 2.MEZNÍ STAV: průhyb y[cm]=" & a6 & " < y,dov[cm]=" & aa8 & " posuzovaný profil vyhovuje na 1.MEZ.STAV a 2.MEZ.STAV")
Console.WriteLine(" bez klopení vyhovuje profil I" & pc & " Wx[cm3]=" & wc & " Jx[cm4]=" & jc & ".")
If i10 = 0 Then
Console.WriteLine(" bez klopení vyhovuje profil II" & pc & " Wx[cm3]=" & wc & " Jx[cm4]=" & jc & ".")
End If
If klo = 1 Then
Console.WriteLine(" výpočet na klopení: vodorovný moment My[kNm]=" & m2 & " vzpěrná délka na klopení Ly1[m]=" & l1 & " napětí Sigma[MPa]=" & ss & " fi, lat = " & f & ".")
Console.WriteLine(" napětí Sigma[MPa]=" & ss & " fi,lat = " & f & " s klopením navržen profil I " & pa & " Wx[cm3]=" & wa & " Jx[cm4]=" & ja & ".")
End If
If zes = 1 Then
Console.WriteLine(" Zesílení profilu I : stávající profil I:" & k9% & " průřezové moduly zesíleného I" & k9% & " Wh[cm3]=" & w2 & " Wd[cm3]=" & w3 & " výška úpalku z I" & k9% & " h[cm]=" & h2 & ".")
Console.WriteLine(" neutrální osa yh[cm]=" & a1 & " yd[cm]=" & a2 & " mom.setrvačnosti J[cm4]=" & j2 + j3 & " celková výška [cm]=" & a1 + a2 & " profil vyhovuje")
Console.WriteLine(" 1.MEZNÍ STAV: začátek zesílení od levé podpory [m]=" & x & " od pravé podpory [m]=" & y5 & " délka podvaření [m]=" & dd & ".")
End If
Console.WriteLine(" 2.MEZNÍ STAV: začátek zesílení x[m]=" & x & " délka zasílení d[m]=" & dd & ".")
Console.WriteLine(" max.průhyb y[cm]=" & a6 & " < y, dov[cm]=" & aa8 & " v průřezu x[m]=" & x1 & ".")
End Sub

Sub Main()
80: Console.WriteLine(" ")
Console.WriteLine(" ")
Console.WriteLine(" PROSTÝ NOSNÍK - program pro výpočet vnitřních sil a dimenzování nosníků z oceli") : pi = 3.1415926
r0 = 0 : w9 = 0 : a6 = 0 : aa8 = 0 : m9 = 0
Console.Write(" NOSNÍK ČÍSLO ? ")
retez(15) = Convert.ToStrin­g(Console.Read­Line())
Console.WriteLine(" Výpočet vnitřních sil a dimenzování nosníku čislo: " & retez(15) & ".")
For i = 0 To 99
m(i) = 0
Next

r0 = r0 + 1 : a = 0 : b = 0
Console.Write(" Délka nosníku L [m] ? ")
L = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" počet sil ? ")
i1 = Convert.ToInt32(Con­sole.ReadLine())
a9 = 100 : a8 = a9 : a7 = L / 100
If i1 = 0 Then
GoTo 190
End If
For i = 0 To i1 - 1
Console.Write(" síla P [kN] ? ")
p(i) = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" rameno a [m] ? ")
v(i) = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" souč.gama,f ? ")
n(i) = Convert.ToSin­gle(Console.Re­adLine())
a = a + p(i) * (L - v(i)) / L : b = b + p(i) * v(i) / L

Next i : GoTo 200

190: Console.WriteLine(" není zatížen osamělou silou")
200: Console.Write(" zatížení q [kN/m] ? ")
q1 = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" souč.gama,f ? ")
u = Convert.ToSin­gle(Console.Re­adLine())
a = a + q1 * L / 2 : b = b + q1 * L / 2
Console.Write(" počet částečných zatížení q [kN/m]")
c1 = Convert.ToInt32(Con­sole.ReadLine())
If c1 = 0 Then
GoTo 300
End If
For i = 0 To c1 - 1
Console.Write(" částečné q [kN/m] ? ")
q(i) = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" začátek az[m] ? ")
z(i) = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" konec ak[m] ? ")
kk(i) = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" gama f ? ")
s(i) = Convert.ToSin­gle(Console.Re­adLine())
Next i
For i = 0 To c1 - 1
a = a + q(i) * (kk(i) - z(i)) / L * ((kk(i) - z(i)) * 0.5 + (L - kk(i)))
b = b + q(i) * (kk(i) - z(i)) / L * ((kk(i) - z(i)) * 0.5 + z(i))
Next
GoTo 310
300: Console.WriteLine(" není zatížen částečným rovnoměrným zatížením ")
310: For i = 0 To i1 - 1
Console.WriteLine(" Síla P(i)[kN]=" & p(i) & " rameno a[m]=" & v(i) & " gama f=" & n(i) & ".")
Next
Console.WriteLine(" rovnoměrné zatížení q [kN/m]=" & q1 & " gama f=" & u & ".")
For i = 0 To c1 - 1
Console.WriteLine(" částečné rovnoměrné zatížení q [kN/m]=" & q(i) & " od " & z(i) & "[m] do " & kk(i) & "[m] gama f=" & s(i) & ".")

Next
Console.WriteLine(" Levá reakce A [kN]=" & a & " Pravá reakce B [kN]=" & b & ".")
aa = a : bb = b
If i1 = 0 Then
' GoTo 490
End If
For i = 0 To 100
m(i) = 0
Next
For i = 0 To i1 - 1
x = 0
a = p(i) * (L - v(i)) / L
b = p(i) - a
For j = 0 To a8
If x >= v(i) Then
m(j) = m(j) + b * (L - x) : GoTo 430
End If
m(j) = m(j) + a * x
430: x = x + a7
Next j
Next i
490: If c1 = 0 Then
GoTo 600
End If
For c = 0 To c1 - 1
a = (kk(c) - z(c)) * q(c) * ((kk(c) - z(c)) / 2 + (L - kk(c))) / L
b = (kk(c) - z(c)) * q(c) - a
x = 0
For j = 0 To a8
If x >= z(c) Then
GoTo 560
End If
m(j) = m(j) + a * x : GoTo 590
560: If x <= kk(c) Then
GoTo 580
End If
m(j) = m(j) + b * (L - x) : GoTo 590
580: m(j) = m(j) + (a * x - (x - z(c)) ^ 2 * q(c) / 2)
590: x = x + a7
Next j
Next c
600: x = 0
If q1 = 0 Then
GoTo 650
End If
a = q1 * L / 2 : b = a
For j = 0 To a8
m(j) = m(j) + (a * x - x ^ 2 * q1 / 2) : x = x + a7
Next j
650: x = 0 : m9 = 0
For j = 0 To a8
If j = 0 Then
m9 = m(0)
End If

If Math.Abs(m(j)) > Math.Abs(m9) Then
m9 = m(j) : x = (j - 1) * L / 100
End If
Next j
Console.WriteLine(" Maximální moment M[kNm]=" & m9 & ".")
v0 = m9 : m9 = Math.Abs(m9)
Console.WriteLine(" v průřezu Xc[m]=" & x + L / 100 & ".")
xx = x + L / 100
Console.Write(" chceš průběh momentu ? ano=1 ne=0 ")
t9 = Convert.ToInt32(Con­sole.ReadLine())
If t9 = 1 Then
'gsub 2260 průběh momentu
prubeh()
End If
w = m9 * 1000 / 208
Console.WriteLine(" Potřebnýmodul průřezu Wx[cm3]=" & w & ".")
'vytvořit matici dat průřezů R(18,10)
R = {{12, 54.7, 7.41, 328, 21.5, 2.31, 14.2, 11.23, 0.51, 0.77, 5.8},
{14, 81.9, 10.7, 573, 35.2, 3.69, 18.3, 13.14, 0.57, 0.86, 6.6},
{16, 117, 14.8, 935, 54.7, 5.08, 22.8, 15.05, 0.63, 0.95, 7.4},
{18, 161, 19.8, 1450, 81.3, 8.23, 27.9, 16.96, 0.69, 1.04, 8.2},
{20, 214, 26, 2140, 117, 11.64, 33.5, 18.87, 0.75, 1.13, 9},
{22, 278, 33.1, 3060, 162, 16.5, 39.6, 20.78, 0.81, 1.22, 9.8},
{24, 354, 41.7, 4250, 221, 21.53, 46.1, 22.69, 0.87, 1.31, 10.6},
{26, 442, 51, 5740, 288, 28.73, 53.4, 24.59, 0.94, 1.41, 11.3},
{28, 542, 61.2, 7590, 364, 37.87, 61.1, 26.48, 1.01, 1.52, 11.9},
{30, 653, 72.2, 9800, 451, 48.46, 69.1, 28.38, 1.08, 1.62, 12.5},
{32, 782, 84.7, 12510, 555, 61.73, 77.8, 30.28, 1.15, 1.73, 13.1},
{34, 923, 98.4, 15700, 674, 76.74, 86.8, 32.17, 1.22, 1.83, 13.7},
{36, 1090, 114, 19610, 818, 96.94, 97.1, 34.05, 1.3, 1.95, 14.3},
{38, 1260, 131, 24010, 975, 117.8, 107, 35.95, 1.37, 2.05, 14.9},
{40, 1460, 149, 29210, 1160, 143.3, 118, 37.84, 1.44, 2.16, 15.5},
{45, 2040, 203, 45850, 1730, 224.5, 147, 42.57, 1.62, 2.43, 17},
{50, 2750, 268, 68740, 2480, 335.8, 180, 47.3, 1.8, 2.7, 18.5},
{55, 3610, 349, 99180, 3490, 481.4, 213, 52, 1.9, 3, 20},
{60, 4630, 434, 139000, 4670, 678, 254, 56.76, 2.15, 3.24, 21.5},
{70, 4092.63, 612.66, 143242.1, 10721.61, 90.18, 158.6, 65.5, 0.8, 1.5, 35},
{80, 5383.14, 800.16, 215325.6, 16003.3, 103.14, 181.6, 75.5, 0.8, 1.5, 40},
{90, 7094.2, 1012.82, 319239, 22788.5, 130.25, 222, 85.5, 1, 1.5, 45},
{100, 11079.9, 1667, 553994.6, 41674.7, 298.67, 296, 94, 1, 2, 50},
{110, 13469.9, 2016.99, 740844.6, 55467.2, 328.67, 326, 104, 1, 2, 55},
{120, 19795.21, 3000.55, 1187713, 90016.56, 691.24, 436, 112.5, 1.2, 2.5, 60},
{130, 23327.73, 3521.39, 1516302, 114445.1, 749.09, 475, 122.5, 1.2, 2.5, 65},
{150, 32278.96, 4688.59, 2420922, 175822.1, 944.38, 592.5, 142.5, 1.5, 2.5, 75},
{170, 41679, 6021.93, 3542714, 255931.8, 1071.04, 672.5, 162.5, 1.5, 2.5, 85},
{180, 54314.71, 8101.09, 4888323, 364549, 1815.75, 801, 171, 1.5, 3, 90},
{200, 67344.74, 10001.1, 6734473, 500054.6, 2018.25, 891, 191, 1.5, 3, 100},
{70, 4665.5, 1177.37, 163293, 20604.1, 35148.61, 212.2, 65.5, 0.8, 1.5, 35},
{80, 6144.03, 2113.4, 245761, 42267.9, 89363.15, 243.2, 75.5, 0.8, 1.5, 40},
{90, 8313.65, 2639.08, 374114.2, 59379.25, 122168.6, 309, 85.5, 1, 1.5, 45},
{100, 12554.45, 3282.03, 627722.6, 82050.66, 143590.5, 392, 94, 1, 2, 50},
{110, 15274.47, 3638.15, 840096, 100049, 160153.9, 432, 104, 1, 2, 55},
{120, 19128.32, 5893.74, 1147699, 176812, 356088.6, 518.4, 114, 1.2, 2, 60},
{130, 22540.34, 6319.67, 1465122, 205389.2, 391303, 562.4, 124, 1.2, 2, 65},
{150, 37360, 11511.2, 2802000, 431670.1, 869356.8, 810, 142.5, 1.5, 2.5, 75},
{180, 61631.4, 18026.7, 5546826, 811201.5, 1559501, 1062, 171, 1.5, 3, 90},
{200, 85551.24, 25252.9, 8555123, 1262645, 2406543, 1279, 189.5, 1.5, 3.5, 100},
{250, 135039, 43723.76, 16879860, 2732735, 5560905, 1604, 239.5, 1.5, 3.5, 125}}

For i = 0 To 18
For j = 0 To 10
If R(i, 1) >= w Then
i10 = 2 : GoTo 870
End If
Next j
Next i
Console.WriteLine(" Nelze nadimenzovat z válcovaných I profilů")
Console.Write(" Svařované I nebo II profily ? I=1 II=0 ? ")
i10 = Convert.ToInt32(Con­sole.ReadLine())
If i10 = 1 Then
Console.WriteLine(" Svařovaný I profil")
svar = 1
Else
'gsb 2550 procedura -svařované profily II
GoTo 870
End If
For i3 = 20 To 30
Console.WriteLine(" I3=" & i3 & " W[cm3]=" & R(i3, 1) & ".")
If R(i3, 1) >= w Then
i = i3 : GoTo 870
End If
Next i3
i = i3 : GoTo 880
870: w1 = R(i, 1) : j1 = R(i, 3)
If w1 = 0 Then
GoTo 80
End If
880: If i = 30 Then
Console.WriteLine(" nejsou větší svař. I profily-nutno použít svař. II profily")
'gsb 2550 procedura- svařované profily II
w1 = R(i, 1) : j1 = R(i, 3)
End If
If i10 = 0 Then
Console.WriteLine(" Navrhuji svař. II profil:" & R(i, 0) & " Wx[cm3]=" & w1 & " Jx[cm4]=" & j1 & " y[cm]=" & a6 & " y,dov[cm]=" & aa8 & ".")
z1 = j1 : z2 = j1 : pb = R(i, 0) : wb = w1 : jb = j1 : GoTo 910
End If
Console.WriteLine(" Navrhuji I profil:" & R(i, 0) & " Wx[cm3]=" & w1 & " Jx[cm4]=" & j1 & " y[cm]=" & a6 & " y,dov[cm]=" & aa8 & ".")
z1 = j1 : z2 = j1 : pb = R(i, 0) : wb = w1 : jb = j1

910: If a6 = 0 Then
Console.Write(" dovolený průhyb L/y ? ")
a5 = Convert.ToSin­gle(Console.Re­adLine())
End If
Console.WriteLine(" Maximální L/y=" & a5 & ".")
aa8 = L / a5 * 100
For q9 = 0 To 19
d(q9) = 0
Next
' průhyb nosníku
x = 0
For k1 = 0 To i1 - 1
For j = 0 To 19
x = x + L / 20
If x > v(k1) Then
v1 = v(k1) : x1 = L - x
Else
v1 = L - v(k1) : x1 = x
End If
d(j) = d(j) + p(k1) / n(k1) * v1 * x1 * (L ^ 2 - v1 ^ 2 - x1 ^ 2) / 6 / L
Next j
Next k1
x = 0
For j = 0 To 19
x = x + L / 20
d(j) = d(j) + q1 / u * x * (L - x) * (L ^ 2 + x * (L - x)) / 24
Next j
For c = 0 To c1 - 1
x = 0
For j = 0 To 19
x = x + L / 20
k1 = q(c) / s(c) * ((L - z(c)) ^ 4 - (L - kk(c)) ^ 4) / 24
k2 = q(c) / s(c) * ((L - z(c)) ^ 2 - (L - kk(c)) ^ 2) / 2
r1 = -(k2 / L) : r3 = -(k1 / L) + k2 * L / 6
d(j) = d(j) + r1 * x ^ 3 / 6 + r3 * x
If x > z(c) And x <= kk(c) Then
d(j) = d(j) + q(c) / s(c) * (x - z(c)) ^ 4 / 24
Else
If x > kk(c) Then
d(j) = d(j) + q(c) / s(c) * ((x - z(c)) ^ 4 - (x - kk(c)) ^ 4) / 24

End If
End If
Next j
Next c
For j = 0 To 19
If d(j + 1) > d(j) Then
maxd = d(j + 1) : GoTo 1220
End If
GoTo 1230
1220: Next j
1230: a6 = maxd / 21 / j1 * 1000 : Console.WriteLine(" a6[cm]=" & a6 & " maxd=" & maxd & " J1=" & j1 & ".")
a7 = L * 100 / a5
b1 = m9 * 1000 / w1
Console.WriteLine(" napětí Sigma[MPa]=" & b1 & ".")
If b1 > 210 Then
i = i + 1 : GoTo 870
End If
o9 = j1
If a6 <= a7 Then
GoTo 1410
End If
Console.WriteLine(" Profil nevyhoví na 2.mezní stav-zvětšen profil!") : GoTo 1300
w9 = 1
1300: i = i + 1 : If i >= 18 Then
GoTo 1510
End If
For j9 = 0 To i1 - 1
' R(i, j9)
Next j9
If R(i, 1) >= w Then
GoTo 1360
End If
GoTo 1300
1360: If i10 = 0 Then
Console.WriteLine(" Nový návrh profilu II :" & R(i, 0) & " Wx[cm3]=" & w1 & " Jx[cm4]=" & j1 & ".")
pd = R(i, 0) : wd = w1 : jd = j1 : GoTo 1390
End If
w1 = R(i, 1) : j1 = R(i, 3)
Console.WriteLine(" Nový návrh profilu I :" & R(i, 0) & " Wx[cm3]=" & w1 & " Jx[cm4]=" & j1 & ".")
pd = R(i, 0) : wd = w1 : jd = j1
1390: o9 = j1 : GoTo 1230
1410: Console.WriteLine(" Průhyb y[cm]=" & a6 & "< y,dov[cm]=" & aa8 & " 2.mezní stav VYHOVÍ!")
If b1 <= 210 Then
GoTo 1440
End If
Console.WriteLine(" napětí Sigma[Mpa]=" & b1 & ".") : GoTo 1510
1440: Console.WriteLine(" 1.mezní stav: napětí Sigma [MPa]=" & b1 & "<210 MPa VYHOVÍ! ")
Console.WriteLine(" Posuzovaný profil vyhoví na 1. a 2.mezní stav dle ČSN 731401")
If i10 = 0 Then
Console.WriteLine(" bez klopení navržen profil II :" & R(i, 0) & " Wx[cm3]=" & R(i, 1) & ".")
pc = R(i, 0) : wc = R(i, 1) : GoTo 1490
End If
Console.WriteLine(" bez klopení navržen profil I :" & R(i, 0) & " Wx[cm3]=" & R(i, 1) & ".")
pc = R(i, 0) : wc = R(i, 1)
1490: z1 = j1 : z2 = j1 : jc = R(i, 3) : GoTo 1540
1510: If svar <> 1 Then
Console.WriteLine(" Nelze nadimenzovat na 2.mezní stav z válcovaných I profilů")
1520: pd = R(i, 0) : wd = R(i, 1) : GoTo 870
End If
1540: Console.Write(" chceš počítat s klopením ? ano=1, ne=0 ")
t9 = Convert.ToInt32(Con­sole.ReadLine())
If t9 = 0 Then
GoTo 1840
End If
Console.WriteLine(" Výpočet na klopení") : klo = 1
Console.Write(" zadej moment My[kNm] ? ")
m2 = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" zadej délku klopení Ly1[m] ? ")
l1 = Convert.ToSin­gle(Console.Re­adLine())
Console.WriteLine(" vodorovný moment My[kNm]=" & m2 & " délka klopení Ly1[m]=" & l1 & ".")
1600: a = 0.62 / R(i, 7) * Math.Sqrt(R(i, 5) / R(i, 4)) * l1 * 100
c3 = R(i, 7) / 2 * Math.Sqrt(R(i, 4) * R(i, 7) ^ 2 / 40 / R(i, 5) * (2 / R(i, 7)) ^ 2 + 4 * (a / pi) ^ 2)
g = 1 / Math.Sqrt(-0.5 + Math.Sqrt(0.25 + (2 * c3 / R(i, 7)) ^ 2))
y = Math.Sqrt(R(i, 4) / R(i, 3) * (R(i, 7) / 2) ^ 2)
L2 = g * 90 * l1 / y
L3 = (L2 / 93) ^ 2
If L2 > 104 Then
f = (93 / L2) ^ 2
Else
f = 0.8 - 0.02 * L3 + Math.Sqrt * 1000
End If
If ss < 210 Then
wa = R(i, 1) : pa = R(i, 0) : ja = R(i, 3)
GoTo 1780
End If
i = i + 1 : If i > 18 Then
GoTo 1770
End If
For j = 0 To i1 - 1
' ReadR(i,j)
Next
1770: GoTo 1600
1780: Console.WriteLine(" napětí Sigma [MPa]=" & ss & " fi,lat=" & f & ".")
If svar = 1 Then
If i10 = 0 Then
Console.WriteLine(" s klopením vyhovuje profil II :" & pa & " Wx[cm3]=" & wa & ".")
GoTo 1840
End If
End If
If i10 = 2 Then
Console.WriteLine(" s klopením navržen profil I :" & R(i, 0) & " Wx[cm3]=" & R(i, 1) & ".")
End If
If i10 = 0 Then
Console.WriteLine(" profil II :" & R(i, 0) & " vyhoví na klopení !") : GoTo 1840
End If
Console.WriteLine(" profil I:" & R(i, 0) & " vyhovuje na klopení") : GoTo 1840
Console.WriteLine(" nosník nelze nadimenzovat z válcovaných I profilů") : GoTo 1520
1840: Console.Write(" chceš zesilovat profil ? ano=1 ne=0 ")
t9 = Convert.ToInt32(Con­sole.ReadLine())
x = 0 : dd = 0 : z1 = R(i, 3) : z2 = z1 : w = R(i, 1)
If t9 = 0 Then
'gsb2650 procedura
pruh()
GoTo 3370
End If
Console.Write(" stávající profil I ? ")
k9 = Convert.ToSin­gle(Console.Re­adLine())
k91 = k9 : Console.WriteLine(" stávající profil I=" & k91 & " i=" & i & " svar=" & svar & ".")
zes = 1 : If svar = 1 Then
For k = 19 To 29
If R(k, 0) = k9 Then
GoTo 1980
End If
Next k
GoTo 1980
Else
GoTo 1920
End If
1920: For i = 0 To 18
If R(i, 0) = k9 Then
GoTo 1980
End If
Next i
1980: If svar = 1 Then
' k = k - 1
R(k, 0) = k9 : i = k
End If
h1 = 0 : z1 = R(i, 3)
2000: k8 = R(i, 0) / 2 + h1 / 2 : L8 = (h1 + R(i, 9)) / 2
a8 = R(i, 8) * k8 * h1 + R(i, 10) * R(i, 9) * (k8 + L8)
b9 = R(i, 6) + R(i, 8) * h1 + R(i, 10) * R(i, 9)
a = a8 / b9
j3 = R(i, 3) + R(i, 6) * a ^ 2 + R(i, 8) * h1 * (h1 ^ 2 / 12 + (k8 - a) ^ 2)
j2 = R(i, 10) * R(i, 9) ^ 3 / 12 + R(i, 9) * R(i, 10) * (k8 + L8 - a) ^ 2
j1 = j2 + j3
a1 = R(i, 0) / 2 + a : a2 = R(i, 0) + h1 + R(i, 9) - a1
w2 = j1 / a1 : w3 = j1 / a2
If w3 < w2 Then
a3 = w3
Else
a3 = w2
End If
If a3 >= w And j1 >= o9 Then
Console.WriteLine(" průřezové hodnoty zesíleného I=" & R(i, 0) & " Wh[cm3]=" & w2 & " Wd[cm3]=" & w3 & ".")
GoTo 2150
End If
h1 = h1 + 1 : GoTo 2000
2150: h2 = h1 + R(i, 9)
Console.WriteLine(" výška úpalku z profilu I=" & R(i, 0) & " h[cm]=" & h2 & ".")
Console.WriteLine(" neutrální osa: Yh[cm]=" & a1 & " Yd[cm]=" & a2 & " moment setrvačnosti Jx[cm4]=" & j1 & ".")
z2 = j1
Console.WriteLine(" zesílený profil I ...celková výška H [cm]=" & a1 + a2 & " vyhoví !")
m1 = 208 * R(i, 1) / 1000
For j = 0 To 99
If m1 <= m(j) Then
x = (j - 1) * L / 100
GoTo 2240
End If
Next j
2240: Console.WriteLine(" 1. MEZNÍ STAV")
Console.WriteLine(" začátek zesílení od levé podpory z[m]=" & x & ".")
For j = 99 To 0 Step -1
If m1 < m(j) Then
y5 = (99 - j) * L / 100
GoTo 2290
End If
Next j
2290: Console.WriteLine(" konec zesílení od pravé podpory z,k[m]=" & y5 & ".")
dd = L - x - y5
Console.WriteLine(" Délka podvaření (zesílení úpalkem) D[m]=" & dd & ".")
' gsb 2650
pruh()

3370: If aa8 < y0 / kof Then
x = x - 0.1 : dd = dd + 0.1 : Console.WriteLine(" y0=" & y0 & ".")
' gsb 2650 průhyb
pruh()
GoTo 3370
Else
GoTo 3380
End If
3380: Console.WriteLine(" 2. MEZNÍ STAV ") : y0 = a6
If y0 > aa8 Then
GoTo 870
End If
Console.WriteLine(" začátek podvaření(zesílení) X[m]=" & x & " délka zesílení D[m]=" & dd & ".")
Console.WriteLine(" maximální průhyb y[cm]=" & y0 / kof & " < y,dov[cm]=" & aa8 & " v průřezu X[m]=" & L / 2 & ".")
'gsb 2980 tisk
tisk()
'gsb 2390 průběh momentu M
' prubeh()
GoTo 80

'konec programu
Console.ReadLine()

End Sub

End Module
Module Module1
'PROSTÝ NOSNÍK program pro výpočet vnitřních sil a dimenzování nosníku z oceli
Dim retez(15) As String
Dim i1, q9, a9, a8, c1, i, c, klo, t9, svar, i10, j, i3, k, zes As Integer
Dim dd, ss, pi, m1, y5, y0, kof, kf, y1, y2, t, L, zz, maxd, a6 As Single
Dim r0, w9, a, b, a7, q1, aa, bb, u, m2, l1, pd, wd, z1, j1, z2, jc, wc As Single
Dim pc, b1, aa8, o9, w1, jd, m9, a5, x, xx, x1, r1, r3, k1, k2, v1, pb, wb, jb, w, v0 As Single
Dim c3, g, L2, L3, y, f, wa, pa, ja, k9, k91, h2, h1, k8, L8, b9, j3, j2, a1, a2, a3, w2, w3 As Single
Dim m(120), q(25), z(45), kk(25), s(25), p(25), n(30), v(25), d(50), R(66, 10) As Single
Public Sub pruh()
y0 = 0 : a = 0.5 * L
2660: kf = kf + 1 : If kf = 1 Then
kof = 1
End If
pruhy()
If Math.Abs(y1) > 0 Then
' Console.WriteLine(" částečný průhyb y[cm]=" & y2 * 10 / kof & ".")
End If
If Math.Abs(y2) > Math.Abs(y0) Then
y0 = y2 : x1 = a
End If
a = a + 0.1 * L
If a < 0.5 * L Then
GoTo 2660
End If
End Sub

Public Sub pruhy()
y1 = 0 : y2 = 0
For j = 0 To 48
t = j * L / 50
If t <= x Or t >= x + dd Then
zz = z1
Else
zz = z2
End If
If j = 0 Then
y1 = y1 + (L - t + L / 100) * m(j) / 2 / zz * L / 50
Else
y1 = y1 + (L - t + L / 100) * (m(j) + m(j - 1)) / 2 / zz * L / 50
End If
If t > a Then
GoTo 2510
End If
If j = 0 Then
y2 = y2 - (a - t + L / 100) * m(j) / 2 / zz * L / 50
Else
y2 = y2 - (a - t + L / 100) * (m(j) + m(j - 1)) / 2 / zz * L / 50
End If
2510: Next j

End Sub
Public Sub prubeh()
Console.WriteLine(" Průběh momentu M zleva doprava [kNm]")
For j = 0 To 99
Console.WriteLine(" j=" & j & " M=" & m(j) & "&.")
Next
End Sub
Public Sub tisk()
Console.WriteLine(" ")
Console.WriteLine(" ")
Console.WriteLine(" P R O S T Ý N O S N Í K")
Console.WriteLine(" Návrh prostého nosníku číslo:" & retez(15) & ".")
Console.WriteLine(" délka nosníku=" & L & " počet sil=" & i1 & ".")
For i = 0 To i1
Console.WriteLine(" P[kN]" & i + 1 & "=" & p(i) & " a[m]=" & v(i) & " gama f=" & n(i) & ".")
Next i
Console.WriteLine(" rovnoměrné q [kN/m]=" & q1 & " gama f=" & u & ".")
For c = 0 To c1
Console.WriteLine(" částečné rovnoměrné qč[kN/m]=" & q(c) & " od zč[m]=" & z(c) & " do kč[m]=" & kk(c) & " gama f=" & s(c) & ".")
Next
Console.WriteLine(" levá reakce A[kN]=" & aa & " pravá reakce B[kN]=" & bb & " max.moment M [kNm]=" & m9 & " v průřezu xc[m]=" & xx & ".")
If i10 = 0 Then
Console.WriteLine(" Navrhuje II" & pb & " Wx[cm3]=" & wb & " Jx[cm4]=" & jb & " maximální L/y:" & a5 & " y,dov[cm]=" & aa8 & ".") : GoTo 3130
End If
Console.WriteLine(" Navrhuje I" & pb & " Wx[cm3]=" & wb & " Jx[cm4]=" & jb & " max.L/y=" & a5 & " y,dov[cm]=" & aa8 & ".")
Console.WriteLine(" nový nánrh profilu I " & pd & " Wx[cm3]=" & wd & " Jx[cm4]=" & jd & ".")
3130: If i10 = 0 Then
Console.WriteLine(" nový návrh II" & pd & " Wx[cm3]=" & wd & " Jx[cm4]=" & jd & ".")
End If
Console.WriteLine(" 1.MEZNÍ STAV: napětí Sigma[MPa]=" & b1 & "< Rd=210 MPa vyhovuje ")
Console.WriteLine(" 2.MEZNÍ STAV: průhyb y[cm]=" & a6 & " < y,dov[cm]=" & aa8 & " posuzovaný profil vyhovuje na 1.MEZ.STAV a 2.MEZ.STAV")
Console.WriteLine(" bez klopení vyhovuje profil I" & pc & " Wx[cm3]=" & wc & " Jx[cm4]=" & jc & ".")
If i10 = 0 Then
Console.WriteLine(" bez klopení vyhovuje profil II" & pc & " Wx[cm3]=" & wc & " Jx[cm4]=" & jc & ".")
End If
If klo = 1 Then
Console.WriteLine(" výpočet na klopení: vodorovný moment My[kNm]=" & m2 & " vzpěrná délka na klopení Ly1[m]=" & l1 & " napětí Sigma[MPa]=" & ss & " fi, lat = " & f & ".")
Console.WriteLine(" napětí Sigma[MPa]=" & ss & " fi,lat = " & f & " s klopením navržen profil I " & pa & " Wx[cm3]=" & wa & " Jx[cm4]=" & ja & ".")
End If
If zes = 1 Then
Console.WriteLine(" Zesílení profilu I : stávající profil I:" & k9% & " průřezové moduly zesíleného I" & k9% & " Wh[cm3]=" & w2 & " Wd[cm3]=" & w3 & " výška úpalku z I" & k9% & " h[cm]=" & h2 & ".")
Console.WriteLine(" neutrální osa yh[cm]=" & a1 & " yd[cm]=" & a2 & " mom.setrvačnosti J[cm4]=" & j2 + j3 & " celková výška [cm]=" & a1 + a2 & " profil vyhovuje")
Console.WriteLine(" 1.MEZNÍ STAV: začátek zesílení od levé podpory [m]=" & x & " od pravé podpory [m]=" & y5 & " délka podvaření [m]=" & dd & ".")
End If
Console.WriteLine(" 2.MEZNÍ STAV: začátek zesílení x[m]=" & x & " délka zasílení d[m]=" & dd & ".")
Console.WriteLine(" max.průhyb y[cm]=" & a6 & " < y, dov[cm]=" & aa8 & " v průřezu x[m]=" & x1 & ".")
End Sub

Sub Main()
80: Console.WriteLine(" ")
Console.WriteLine(" ")
Console.WriteLine(" PROSTÝ NOSNÍK - program pro výpočet vnitřních sil a dimenzování nosníků z oceli") : pi = 3.1415926
r0 = 0 : w9 = 0 : a6 = 0 : aa8 = 0 : m9 = 0
Console.Write(" NOSNÍK ČÍSLO ? ")
retez(15) = Convert.ToStrin­g(Console.Read­Line())
Console.WriteLine(" Výpočet vnitřních sil a dimenzování nosníku čislo: " & retez(15) & ".")
For i = 0 To 99
m(i) = 0
Next

r0 = r0 + 1 : a = 0 : b = 0
Console.Write(" Délka nosníku L [m] ? ")
L = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" počet sil ? ")
i1 = Convert.ToInt32(Con­sole.ReadLine())
a9 = 100 : a8 = a9 : a7 = L / 100
If i1 = 0 Then
GoTo 190
End If
For i = 0 To i1 - 1
Console.Write(" síla P [kN] ? ")
p(i) = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" rameno a [m] ? ")
v(i) = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" souč.gama,f ? ")
n(i) = Convert.ToSin­gle(Console.Re­adLine())
a = a + p(i) * (L - v(i)) / L : b = b + p(i) * v(i) / L

Next i : GoTo 200

190: Console.WriteLine(" není zatížen osamělou silou")
200: Console.Write(" zatížení q [kN/m] ? ")
q1 = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" souč.gama,f ? ")
u = Convert.ToSin­gle(Console.Re­adLine())
a = a + q1 * L / 2 : b = b + q1 * L / 2
Console.Write(" počet částečných zatížení q [kN/m]")
c1 = Convert.ToInt32(Con­sole.ReadLine())
If c1 = 0 Then
GoTo 300
End If
For i = 0 To c1 - 1
Console.Write(" částečné q [kN/m] ? ")
q(i) = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" začátek az[m] ? ")
z(i) = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" konec ak[m] ? ")
kk(i) = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" gama f ? ")
s(i) = Convert.ToSin­gle(Console.Re­adLine())
Next i
For i = 0 To c1 - 1
a = a + q(i) * (kk(i) - z(i)) / L * ((kk(i) - z(i)) * 0.5 + (L - kk(i)))
b = b + q(i) * (kk(i) - z(i)) / L * ((kk(i) - z(i)) * 0.5 + z(i))
Next
GoTo 310
300: Console.WriteLine(" není zatížen částečným rovnoměrným zatížením ")
310: For i = 0 To i1 - 1
Console.WriteLine(" Síla P(i)[kN]=" & p(i) & " rameno a[m]=" & v(i) & " gama f=" & n(i) & ".")
Next
Console.WriteLine(" rovnoměrné zatížení q [kN/m]=" & q1 & " gama f=" & u & ".")
For i = 0 To c1 - 1
Console.WriteLine(" částečné rovnoměrné zatížení q [kN/m]=" & q(i) & " od " & z(i) & "[m] do " & kk(i) & "[m] gama f=" & s(i) & ".")

Next
Console.WriteLine(" Levá reakce A [kN]=" & a & " Pravá reakce B [kN]=" & b & ".")
aa = a : bb = b
If i1 = 0 Then
' GoTo 490
End If
For i = 0 To 100
m(i) = 0
Next
For i = 0 To i1 - 1
x = 0
a = p(i) * (L - v(i)) / L
b = p(i) - a
For j = 0 To a8
If x >= v(i) Then
m(j) = m(j) + b * (L - x) : GoTo 430
End If
m(j) = m(j) + a * x
430: x = x + a7
Next j
Next i
490: If c1 = 0 Then
GoTo 600
End If
For c = 0 To c1 - 1
a = (kk(c) - z(c)) * q(c) * ((kk(c) - z(c)) / 2 + (L - kk(c))) / L
b = (kk(c) - z(c)) * q(c) - a
x = 0
For j = 0 To a8
If x >= z(c) Then
GoTo 560
End If
m(j) = m(j) + a * x : GoTo 590
560: If x <= kk(c) Then
GoTo 580
End If
m(j) = m(j) + b * (L - x) : GoTo 590
580: m(j) = m(j) + (a * x - (x - z(c)) ^ 2 * q(c) / 2)
590: x = x + a7
Next j
Next c
600: x = 0
If q1 = 0 Then
GoTo 650
End If
a = q1 * L / 2 : b = a
For j = 0 To a8
m(j) = m(j) + (a * x - x ^ 2 * q1 / 2) : x = x + a7
Next j
650: x = 0 : m9 = 0
For j = 0 To a8
If j = 0 Then
m9 = m(0)
End If

If Math.Abs(m(j)) > Math.Abs(m9) Then
m9 = m(j) : x = (j - 1) * L / 100
End If
Next j
Console.WriteLine(" Maximální moment M[kNm]=" & m9 & ".")
v0 = m9 : m9 = Math.Abs(m9)
Console.WriteLine(" v průřezu Xc[m]=" & x + L / 100 & ".")
xx = x + L / 100
Console.Write(" chceš průběh momentu ? ano=1 ne=0 ")
t9 = Convert.ToInt32(Con­sole.ReadLine())
If t9 = 1 Then
'gsub 2260 průběh momentu
prubeh()
End If
w = m9 * 1000 / 208
Console.WriteLine(" Potřebnýmodul průřezu Wx[cm3]=" & w & ".")
'vytvořit matici dat průřezů R(18,10)
R = {{12, 54.7, 7.41, 328, 21.5, 2.31, 14.2, 11.23, 0.51, 0.77, 5.8},
{14, 81.9, 10.7, 573, 35.2, 3.69, 18.3, 13.14, 0.57, 0.86, 6.6},
{16, 117, 14.8, 935, 54.7, 5.08, 22.8, 15.05, 0.63, 0.95, 7.4},
{18, 161, 19.8, 1450, 81.3, 8.23, 27.9, 16.96, 0.69, 1.04, 8.2},
{20, 214, 26, 2140, 117, 11.64, 33.5, 18.87, 0.75, 1.13, 9},
{22, 278, 33.1, 3060, 162, 16.5, 39.6, 20.78, 0.81, 1.22, 9.8},
{24, 354, 41.7, 4250, 221, 21.53, 46.1, 22.69, 0.87, 1.31, 10.6},
{26, 442, 51, 5740, 288, 28.73, 53.4, 24.59, 0.94, 1.41, 11.3},
{28, 542, 61.2, 7590, 364, 37.87, 61.1, 26.48, 1.01, 1.52, 11.9},
{30, 653, 72.2, 9800, 451, 48.46, 69.1, 28.38, 1.08, 1.62, 12.5},
{32, 782, 84.7, 12510, 555, 61.73, 77.8, 30.28, 1.15, 1.73, 13.1},
{34, 923, 98.4, 15700, 674, 76.74, 86.8, 32.17, 1.22, 1.83, 13.7},
{36, 1090, 114, 19610, 818, 96.94, 97.1, 34.05, 1.3, 1.95, 14.3},
{38, 1260, 131, 24010, 975, 117.8, 107, 35.95, 1.37, 2.05, 14.9},
{40, 1460, 149, 29210, 1160, 143.3, 118, 37.84, 1.44, 2.16, 15.5},
{45, 2040, 203, 45850, 1730, 224.5, 147, 42.57, 1.62, 2.43, 17},
{50, 2750, 268, 68740, 2480, 335.8, 180, 47.3, 1.8, 2.7, 18.5},
{55, 3610, 349, 99180, 3490, 481.4, 213, 52, 1.9, 3, 20},
{60, 4630, 434, 139000, 4670, 678, 254, 56.76, 2.15, 3.24, 21.5},
{70, 4092.63, 612.66, 143242.1, 10721.61, 90.18, 158.6, 65.5, 0.8, 1.5, 35},
{80, 5383.14, 800.16, 215325.6, 16003.3, 103.14, 181.6, 75.5, 0.8, 1.5, 40},
{90, 7094.2, 1012.82, 319239, 22788.5, 130.25, 222, 85.5, 1, 1.5, 45},
{100, 11079.9, 1667, 553994.6, 41674.7, 298.67, 296, 94, 1, 2, 50},
{110, 13469.9, 2016.99, 740844.6, 55467.2, 328.67, 326, 104, 1, 2, 55},
{120, 19795.21, 3000.55, 1187713, 90016.56, 691.24, 436, 112.5, 1.2, 2.5, 60},
{130, 23327.73, 3521.39, 1516302, 114445.1, 749.09, 475, 122.5, 1.2, 2.5, 65},
{150, 32278.96, 4688.59, 2420922, 175822.1, 944.38, 592.5, 142.5, 1.5, 2.5, 75},
{170, 41679, 6021.93, 3542714, 255931.8, 1071.04, 672.5, 162.5, 1.5, 2.5, 85},
{180, 54314.71, 8101.09, 4888323, 364549, 1815.75, 801, 171, 1.5, 3, 90},
{200, 67344.74, 10001.1, 6734473, 500054.6, 2018.25, 891, 191, 1.5, 3, 100},
{70, 4665.5, 1177.37, 163293, 20604.1, 35148.61, 212.2, 65.5, 0.8, 1.5, 35},
{80, 6144.03, 2113.4, 245761, 42267.9, 89363.15, 243.2, 75.5, 0.8, 1.5, 40},
{90, 8313.65, 2639.08, 374114.2, 59379.25, 122168.6, 309, 85.5, 1, 1.5, 45},
{100, 12554.45, 3282.03, 627722.6, 82050.66, 143590.5, 392, 94, 1, 2, 50},
{110, 15274.47, 3638.15, 840096, 100049, 160153.9, 432, 104, 1, 2, 55},
{120, 19128.32, 5893.74, 1147699, 176812, 356088.6, 518.4, 114, 1.2, 2, 60},
{130, 22540.34, 6319.67, 1465122, 205389.2, 391303, 562.4, 124, 1.2, 2, 65},
{150, 37360, 11511.2, 2802000, 431670.1, 869356.8, 810, 142.5, 1.5, 2.5, 75},
{180, 61631.4, 18026.7, 5546826, 811201.5, 1559501, 1062, 171, 1.5, 3, 90},
{200, 85551.24, 25252.9, 8555123, 1262645, 2406543, 1279, 189.5, 1.5, 3.5, 100},
{250, 135039, 43723.76, 16879860, 2732735, 5560905, 1604, 239.5, 1.5, 3.5, 125}}

For i = 0 To 18
For j = 0 To 10
If R(i, 1) >= w Then
i10 = 2 : GoTo 870
End If
Next j
Next i
Console.WriteLine(" Nelze nadimenzovat z válcovaných I profilů")
Console.Write(" Svařované I nebo II profily ? I=1 II=0 ? ")
i10 = Convert.ToInt32(Con­sole.ReadLine())
If i10 = 1 Then
Console.WriteLine(" Svařovaný I profil")
svar = 1
Else
'gsb 2550 procedura -svařované profily II
GoTo 870
End If
For i3 = 20 To 30
Console.WriteLine(" I3=" & i3 & " W[cm3]=" & R(i3, 1) & ".")
If R(i3, 1) >= w Then
i = i3 : GoTo 870
End If
Next i3
i = i3 : GoTo 880
870: w1 = R(i, 1) : j1 = R(i, 3)
If w1 = 0 Then
GoTo 80
End If
880: If i = 30 Then
Console.WriteLine(" nejsou větší svař. I profily-nutno použít svař. II profily")
'gsb 2550 procedura- svařované profily II
w1 = R(i, 1) : j1 = R(i, 3)
End If
If i10 = 0 Then
Console.WriteLine(" Navrhuji svař. II profil:" & R(i, 0) & " Wx[cm3]=" & w1 & " Jx[cm4]=" & j1 & " y[cm]=" & a6 & " y,dov[cm]=" & aa8 & ".")
z1 = j1 : z2 = j1 : pb = R(i, 0) : wb = w1 : jb = j1 : GoTo 910
End If
Console.WriteLine(" Navrhuji I profil:" & R(i, 0) & " Wx[cm3]=" & w1 & " Jx[cm4]=" & j1 & " y[cm]=" & a6 & " y,dov[cm]=" & aa8 & ".")
z1 = j1 : z2 = j1 : pb = R(i, 0) : wb = w1 : jb = j1

910: If a6 = 0 Then
Console.Write(" dovolený průhyb L/y ? ")
a5 = Convert.ToSin­gle(Console.Re­adLine())
End If
Console.WriteLine(" Maximální L/y=" & a5 & ".")
aa8 = L / a5 * 100
For q9 = 0 To 19
d(q9) = 0
Next
' průhyb nosníku
x = 0
For k1 = 0 To i1 - 1
For j = 0 To 19
x = x + L / 20
If x > v(k1) Then
v1 = v(k1) : x1 = L - x
Else
v1 = L - v(k1) : x1 = x
End If
d(j) = d(j) + p(k1) / n(k1) * v1 * x1 * (L ^ 2 - v1 ^ 2 - x1 ^ 2) / 6 / L
Next j
Next k1
x = 0
For j = 0 To 19
x = x + L / 20
d(j) = d(j) + q1 / u * x * (L - x) * (L ^ 2 + x * (L - x)) / 24
Next j
For c = 0 To c1 - 1
x = 0
For j = 0 To 19
x = x + L / 20
k1 = q(c) / s(c) * ((L - z(c)) ^ 4 - (L - kk(c)) ^ 4) / 24
k2 = q(c) / s(c) * ((L - z(c)) ^ 2 - (L - kk(c)) ^ 2) / 2
r1 = -(k2 / L) : r3 = -(k1 / L) + k2 * L / 6
d(j) = d(j) + r1 * x ^ 3 / 6 + r3 * x
If x > z(c) And x <= kk(c) Then
d(j) = d(j) + q(c) / s(c) * (x - z(c)) ^ 4 / 24
Else
If x > kk(c) Then
d(j) = d(j) + q(c) / s(c) * ((x - z(c)) ^ 4 - (x - kk(c)) ^ 4) / 24

End If
End If
Next j
Next c
For j = 0 To 19
If d(j + 1) > d(j) Then
maxd = d(j + 1) : GoTo 1220
End If
GoTo 1230
1220: Next j
1230: a6 = maxd / 21 / j1 * 1000 : Console.WriteLine(" a6[cm]=" & a6 & " maxd=" & maxd & " J1=" & j1 & ".")
a7 = L * 100 / a5
b1 = m9 * 1000 / w1
Console.WriteLine(" napětí Sigma[MPa]=" & b1 & ".")
If b1 > 210 Then
i = i + 1 : GoTo 870
End If
o9 = j1
If a6 <= a7 Then
GoTo 1410
End If
Console.WriteLine(" Profil nevyhoví na 2.mezní stav-zvětšen profil!") : GoTo 1300
w9 = 1
1300: i = i + 1 : If i >= 18 Then
GoTo 1510
End If
For j9 = 0 To i1 - 1
' R(i, j9)
Next j9
If R(i, 1) >= w Then
GoTo 1360
End If
GoTo 1300
1360: If i10 = 0 Then
Console.WriteLine(" Nový návrh profilu II :" & R(i, 0) & " Wx[cm3]=" & w1 & " Jx[cm4]=" & j1 & ".")
pd = R(i, 0) : wd = w1 : jd = j1 : GoTo 1390
End If
w1 = R(i, 1) : j1 = R(i, 3)
Console.WriteLine(" Nový návrh profilu I :" & R(i, 0) & " Wx[cm3]=" & w1 & " Jx[cm4]=" & j1 & ".")
pd = R(i, 0) : wd = w1 : jd = j1
1390: o9 = j1 : GoTo 1230
1410: Console.WriteLine(" Průhyb y[cm]=" & a6 & "< y,dov[cm]=" & aa8 & " 2.mezní stav VYHOVÍ!")
If b1 <= 210 Then
GoTo 1440
End If
Console.WriteLine(" napětí Sigma[Mpa]=" & b1 & ".") : GoTo 1510
1440: Console.WriteLine(" 1.mezní stav: napětí Sigma [MPa]=" & b1 & "<210 MPa VYHOVÍ! ")
Console.WriteLine(" Posuzovaný profil vyhoví na 1. a 2.mezní stav dle ČSN 731401")
If i10 = 0 Then
Console.WriteLine(" bez klopení navržen profil II :" & R(i, 0) & " Wx[cm3]=" & R(i, 1) & ".")
pc = R(i, 0) : wc = R(i, 1) : GoTo 1490
End If
Console.WriteLine(" bez klopení navržen profil I :" & R(i, 0) & " Wx[cm3]=" & R(i, 1) & ".")
pc = R(i, 0) : wc = R(i, 1)
1490: z1 = j1 : z2 = j1 : jc = R(i, 3) : GoTo 1540
1510: If svar <> 1 Then
Console.WriteLine(" Nelze nadimenzovat na 2.mezní stav z válcovaných I profilů")
1520: pd = R(i, 0) : wd = R(i, 1) : GoTo 870
End If
1540: Console.Write(" chceš počítat s klopením ? ano=1, ne=0 ")
t9 = Convert.ToInt32(Con­sole.ReadLine())
If t9 = 0 Then
GoTo 1840
End If
Console.WriteLine(" Výpočet na klopení") : klo = 1
Console.Write(" zadej moment My[kNm] ? ")
m2 = Convert.ToSin­gle(Console.Re­adLine())
Console.Write(" zadej délku klopení Ly1[m] ? ")
l1 = Convert.ToSin­gle(Console.Re­adLine())
Console.WriteLine(" vodorovný moment My[kNm]=" & m2 & " délka klopení Ly1[m]=" & l1 & ".")
1600: a = 0.62 / R(i, 7) * Math.Sqrt(R(i, 5) / R(i, 4)) * l1 * 100
c3 = R(i, 7) / 2 * Math.Sqrt(R(i, 4) * R(i, 7) ^ 2 / 40 / R(i, 5) * (2 / R(i, 7)) ^ 2 + 4 * (a / pi) ^ 2)
g = 1 / Math.Sqrt(-0.5 + Math.Sqrt(0.25 + (2 * c3 / R(i, 7)) ^ 2))
y = Math.Sqrt(R(i, 4) / R(i, 3) * (R(i, 7) / 2) ^ 2)
L2 = g * 90 * l1 / y
L3 = (L2 / 93) ^ 2
If L2 > 104 Then
f = (93 / L2) ^ 2
Else
f = 0.8 - 0.02 * L3 + Math.Sqrt * 1000
End If
If ss < 210 Then
wa = R(i, 1) : pa = R(i, 0) : ja = R(i, 3)
GoTo 1780
End If
i = i + 1 : If i > 18 Then
GoTo 1770
End If
For j = 0 To i1 - 1
' ReadR(i,j)
Next
1770: GoTo 1600
1780: Console.WriteLine(" napětí Sigma [MPa]=" & ss & " fi,lat=" & f & ".")
If svar = 1 Then
If i10 = 0 Then
Console.WriteLine(" s klopením vyhovuje profil II :" & pa & " Wx[cm3]=" & wa & ".")
GoTo 1840
End If
End If
If i10 = 2 Then
Console.WriteLine(" s klopením navržen profil I :" & R(i, 0) & " Wx[cm3]=" & R(i, 1) & ".")
End If
If i10 = 0 Then
Console.WriteLine(" profil II :" & R(i, 0) & " vyhoví na klopení !") : GoTo 1840
End If
Console.WriteLine(" profil I:" & R(i, 0) & " vyhovuje na klopení") : GoTo 1840
Console.WriteLine(" nosník nelze nadimenzovat z válcovaných I profilů") : GoTo 1520
1840: Console.Write(" chceš zesilovat profil ? ano=1 ne=0 ")
t9 = Convert.ToInt32(Con­sole.ReadLine())
x = 0 : dd = 0 : z1 = R(i, 3) : z2 = z1 : w = R(i, 1)
If t9 = 0 Then
'gsb2650 procedura
pruh()
GoTo 3370
End If
Console.Write(" stávající profil I ? ")
k9 = Convert.ToSin­gle(Console.Re­adLine())
k91 = k9 : Console.WriteLine(" stávající profil I=" & k91 & " i=" & i & " svar=" & svar & ".")
zes = 1 : If svar = 1 Then
For k = 19 To 29
If R(k, 0) = k9 Then
GoTo 1980
End If
Next k
GoTo 1980
Else
GoTo 1920
End If
1920: For i = 0 To 18
If R(i, 0) = k9 Then
GoTo 1980
End If
Next i
1980: If svar = 1 Then
' k = k - 1
R(k, 0) = k9 : i = k
End If
h1 = 0 : z1 = R(i, 3)
2000: k8 = R(i, 0) / 2 + h1 / 2 : L8 = (h1 + R(i, 9)) / 2
a8 = R(i, 8) * k8 * h1 + R(i, 10) * R(i, 9) * (k8 + L8)
b9 = R(i, 6) + R(i, 8) * h1 + R(i, 10) * R(i, 9)
a = a8 / b9
j3 = R(i, 3) + R(i, 6) * a ^ 2 + R(i, 8) * h1 * (h1 ^ 2 / 12 + (k8 - a) ^ 2)
j2 = R(i, 10) * R(i, 9) ^ 3 / 12 + R(i, 9) * R(i, 10) * (k8 + L8 - a) ^ 2
j1 = j2 + j3
a1 = R(i, 0) / 2 + a : a2 = R(i, 0) + h1 + R(i, 9) - a1
w2 = j1 / a1 : w3 = j1 / a2
If w3 < w2 Then
a3 = w3
Else
a3 = w2
End If
If a3 >= w And j1 >= o9 Then
Console.WriteLine(" průřezové hodnoty zesíleného I=" & R(i, 0) & " Wh[cm3]=" & w2 & " Wd[cm3]=" & w3 & ".")
GoTo 2150
End If
h1 = h1 + 1 : GoTo 2000
2150: h2 = h1 + R(i, 9)
Console.WriteLine(" výška úpalku z profilu I=" & R(i, 0) & " h[cm]=" & h2 & ".")
Console.WriteLine(" neutrální osa: Yh[cm]=" & a1 & " Yd[cm]=" & a2 & " moment setrvačnosti Jx[cm4]=" & j1 & ".")
z2 = j1
Console.WriteLine(" zesílený profil I ...celková výška H [cm]=" & a1 + a2 & " vyhoví !")
m1 = 208 * R(i, 1) / 1000
For j = 0 To 99
If m1 <= m(j) Then
x = (j - 1) * L / 100
GoTo 2240
End If
Next j
2240: Console.WriteLine(" 1. MEZNÍ STAV")
Console.WriteLine(" začátek zesílení od levé podpory z[m]=" & x & ".")
For j = 99 To 0 Step -1
If m1 < m(j) Then
y5 = (99 - j) * L / 100
GoTo 2290
End If
Next j
2290: Console.WriteLine(" konec zesílení od pravé podpory z,k[m]=" & y5 & ".")
dd = L - x - y5
Console.WriteLine(" Délka podvaření (zesílení úpalkem) D[m]=" & dd & ".")
' gsb 2650
pruh()

3370: If aa8 < y0 / kof Then
x = x - 0.1 : dd = dd + 0.1 : Console.WriteLine(" y0=" & y0 & ".")
' gsb 2650 průhyb
pruh()
GoTo 3370
Else
GoTo 3380
End If
3380: Console.WriteLine(" 2. MEZNÍ STAV ") : y0 = a6
If y0 > aa8 Then
GoTo 870
End If
Console.WriteLine(" začátek podvaření(zesílení) X[m]=" & x & " délka zesílení D[m]=" & dd & ".")
Console.WriteLine(" maximální průhyb y[cm]=" & y0 / kof & " < y,dov[cm]=" & aa8 & " v průřezu X[m]=" & L / 2 & ".")
'gsb 2980 tisk
tisk()
'gsb 2390 průběh momentu M
' prubeh()
GoTo 80

'konec programu
Console.ReadLine()

End Sub

End Module

promiň, ale to je jiný kód, ten výše funguje správně

nejde tento kód s částí Property
Class Student
Public jmeno As String
Public muz As Boolean
Public vek As Integer
Public plnolety As Boolean
Public Sub New(jmeno As String, pohlavi As Boolean, vek As Integer)
Me.Jmeno = jmeno
Me.Muz = Muz
Me.Vek = vek
Plnolety = True
If vek < 18 Then
Plnolety = False
End If
End Sub
Public Overrides Function ToString() As String
Dim jsemPlnolety As String = "jsem"
If Not Plnolety Then
jsemPlnolety = "nejsem"
End If
Dim pohlavi As String = "muž"
If Not True Then
pohlavi = "žena"
Else
pohlavi = "muž"
End If
Return [String].Format("Jsem {0}, {1}.Je mi {2} let a {3} plnoletý.", Jmeno, pohlavi, Vek, jsemPlnolety)
End Function
Public Function VratJmeno() As String
Return jmeno
End Function

Public Function VratPlnoletost() As String
Return plnolety
End Function
Public Function VratVek() As Integer
Return vek
End Function
Public Function Muz1() As String
Return muz
End Function
Public Sub NastavVek(hodnota As Integer)
vek = hodnota
' přehodnocení plnoletosti
plnolety = True
If vek < 18 Then
plnolety = False
End If
End Sub

' vše co je Property nefunguje

' Public Property Jmeno() As String
' Get
' Return Jmeno
' End Get
' Private Set(value As String)
' Jmeno = value
'End Set
'End Property
' Private jmeno As String
'Public Property Muz() As Boolean
'Get
'Return Muz
'End Get
'Private Set(value As Boolean)
' muz = value
'End Set
' End Property
' Private muz As Boolean
'Public Property Plnolety() As Boolean
'Get
'Return Plnolety
'End Get
'Private Set(value As Boolean)
' plnolety = value
'End Set
'End Property
' Private plnolety As Boolean
' Private vek As Integer
'Public Property Vek() As Integer
'Get
'Return Vek
'End Get
'Set(value As Integer)
' vek = value
'kontrola plnoletosti
' plnolety = True
'If vek < 18 Then
' plnolety = False
'End If
'End Set
'End Property
End Class

Module Module1

Sub Main()
Dim s As New Student("Pavel Hora", True, 20)
's.Vek = 15
' s.muz = True
Console.Write­Line(s)

' Console.Write­Line(objekt, Jmeno) 'číst
' objekt.Jmeno = "Jan Malý" 'zapisovat

Console.ReadKey()
End Sub

End Module

 
Odpovědět  -7 4. července 19:27
Avatar
Odpovídá na Jaroslav Trojan
Michal Štěpánek:

Protože se v tom nedá vyznat...

Nahoru Odpovědět  +4 7. července 15:20
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Lukas C#
Redaktor
Avatar
Odpovídá na Jaroslav Trojan
Lukas C#:

Musím říct, že jsi ignorant - už snad 10x ti ostatní říkali, jak se má vkládat dlouhý kód, aby byl pěnkně formátovaný, a aby se dal číst. Nevím, jestli má někdo náladu ty tvoje kilometrové zdrojáky číst, když ty ani nemáš zájem na tom, aby se daly dobře číst.

 
Nahoru Odpovědět  +5 7. července 15:38
Avatar
Marian Benčat
Redaktor
Avatar
Marian Benčat:

Prostě ho ignorujte, kdo chce kam, pomozme mu tam

 
Nahoru Odpovědět  +3 7. července 17:12
Avatar
VitekST
Člen
Avatar
Odpovídá na Jaroslav Trojan
VitekST:
  1. Dlouhý kód se vkládá pomocí patřičného tlačítka.
  2. Nikdo tady nemá energii ani náladu číst takto dlouhý zdrojový kód, zvlášť když to není jeho práce.
  3. Špatně položený dotaz, co takhle přijít s konkrétním problémem? Nefunguje mi tento cyklus, nechce se mi přiřadit proměnná, cokoliv konkrétního. Neprojevil si žádnou snahu co se ladění týče, zkus si pro příště definovat zarážku a program si odkrokovat, jestli dělá, to co má.

Jestli tomu programu (co dělá, jak vevnitř funguje) rozumíš jak koza petrželi, prosím, ve vlastním zájmu toto přenech někomu jinému.

 
Nahoru Odpovědět  +1 8. července 11:37
Avatar
Odpovídá na VitekST
Jaroslav Trojan:

Vůbec nejde o ten dlouhý kód, ten se tam vloudil omylem a je to funkční program, který normálně běží a dává správné výsledky- Navrhuje ocelové nosníky z válcovaných a svařovaných profilů, a sám jsem ho sestavil, tak mu asi rozumím dobře.
Ale o to mi nešlo!
Na konci je připojen kód, který se týká použití Property
A t e n správně nefunguje! Pro věk 15 let píše plnoletý a to mi vadí

 
Nahoru Odpovědět 8. července 11:52
Avatar
Odpovídá na Jaroslav Trojan
Michal Štěpánek:

A jak z toho máme poznat, ke kterému konci je co připojeno, když se to v tomto stavu nedá luštit??? Kód, ať už krátký nebo delší se vkládá pomocí tlačítka pro vložení kódu (druhé zleva). Pak je kód pěkně zformátovaný, odsazený, barevně rozlišený a hned se na tom dá leccos poznat. Takhle jeto jen kus textu, který nechce nikdo ani číst, natož pak louskat, co k čemu patří...

Nahoru Odpovědět  +3 8. července 13:12
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
VitekST
Člen
Avatar
Odpovídá na Jaroslav Trojan
VitekST:

1251 řádků vážně není dlouhý kód...
Ach ták, máš na mysli jen poslední část toho kódu. Co tam tedy dělá ten (IMHO) komplexní program pro výpočet čehosi s ocelí?

Jednak prvá věc, je to zakomentované.

Dobře, dal jsem si tu práci a vše převedl do čitelné podoby (pro příště, byl bych rád kdybys použil TLAČÍTKO SE SYMBOLEM KÓDU V EDITORU a dával sis pozor, co vkládáš, předmětem diskuze není program pro výpočet čehosi z ocele, předmětem diskuze je třída Student a procedura Main). Kdyžtak máš prvních 5 minut po vložení příspěvku přístupno tlačítko se symbolem tužky (Upravit).

Výpočet vlastnosti Plnolety je IMHO pofidérní, nemyslím si že je třeba mít u této vlastnosti setter odkazující na lokální proměnnou, proč to nevypočítávat přímo jakmile se na hodnotu této vlastnosti zeptáš?

Tzn:

Public Property Plnolety() As Boolean
        Get
                Return vek < 18
        End Get
End Property

U vlastnosti Plnolety smaž settera, stejně tak jako korespondující lokální proměnnou (zbytečná) a patřičně si uprav settera u vlastnosti Vek.
Tudíž:

Public Property Vek() As Integer
        Get
                Return Vek
        End Get
        Set(value As Integer)
                vek = value
        End Set
End Property
Editováno 8. července 13:58
 
Nahoru Odpovědět  +1 8. července 13:56
Avatar
Jaroslav Trojan:
Vlastnosti.vbproj
 
Nahoru Odpovědět 8. července 14:04
Avatar
Odpovídá na VitekST
Jaroslav Trojan:

Opravil jsem ,ale nešlo to.
Upravil jsem kód ,aby nehlásil chyby, ale přestal pracovat

Module Module1

    Sub Main()
        Dim s As New Student(" student Pavel Hora ", True, 20)
        Dim vek As Integer
        ' s.Vek = 15
        's.muz = True
        'Console.Write("plnolety=")
        Console.WriteLine(s)

        ' Console.WriteLine(objekt, Jmeno) 'číst
        ' objekt.Jmeno = "Jan Malý" 'zapisovat

        Console.ReadKey()
    End Sub

End Module
Class Student
    '  Public jmeno As String
    '  Public muz As Boolean
    '  Public vek As Integer
    '  Public plnolety As Boolean
    Public Sub New(jmeno As String, pohlavi As Boolean, vek As Integer)
        Me.Jmeno = jmeno
        Me.Muz = Muz
        Me.Vek = vek
        Plnolety = True
        If vek < 18 Then
            Plnolety = False
        End If
    End Sub
    Public Overrides Function ToString() As String
        Dim jsemPlnolety As String = "jsem"
        If Plnolety = False Then
            jsemPlnolety = "nejsem"
        End If
        Dim pohlavi As String = "muž"
        If False Then
            pohlavi = "žena"
        End If
        Return [String].Format("  Jsem {0}, {1}.Je mi {2} let a {3} plnoletý.", Jmeno, pohlavi, Vek, jsemPlnolety)
    End Function
    Public Function VratJmeno() As String
        Return Jmeno
    End Function

    Public Function VratPlnoletost() As String
        Return Plnolety
    End Function
    Public Function VratVek() As Integer
        Return Vek
    End Function
    Public Function Muz1() As String
        Return Muz
    End Function
    Public Sub NastavVek(hodnota As Integer)
        Vek = hodnota
        ' přehodnocení plnoletosti
        Dim jsemPlnolety As String
        Plnolety = True
        If Vek < 18 Then
            Plnolety = False
        End If
        If False Then
            jsemPlnolety = "nejsem"
        End If
    End Sub


    '  Property funguje, třeba dělat gettery a settery

    Public Property Jmeno() As String
        Get
            Return Jmeno
        End Get
        Private Set(value As String)
            Jmeno = value
        End Set
    End Property
    ' Private jmeno As String
    Public Property Muz() As Boolean
        Get
            Return Muz
        End Get
        Private Set(value As Boolean)
            Muz = value
        End Set
    End Property
    Public Property Plnolety() As Boolean
        Get
            Return Vek < 18
        End Get
        Private Set(value As Boolean)
            Plnolety = value
        End Set
    End Property
    Public Property Vek() As Integer
        Get
            Return Vek
        End Get
        Set(value As Integer)
            Vek = value

        End Set
    End Property
End Class
 
Nahoru Odpovědět 8. července 15:10
Avatar
VitekST
Člen
Avatar
Odpovídá na Jaroslav Trojan
VitekST:

Jsem rád, že si konečně použil tlačítko pro kód. :)

Moje verze, testováno v SharpDevelopu:

Module Module1
    Sub Main()
        Dim s As New Student(" student Pavel Hora ", True, 15)

        Console.WriteLine(s)
        Console.ReadKey()
    End Sub
End Module

Class Student
    Private _jmeno As String
    Private _muz As Boolean
    Private _vek As Integer

    Public Sub New(jmeno As String, pohlavi As Boolean, vek As Integer)
        _jmeno = jmeno
        _muz = Muz
        _vek = vek
    End Sub

    Public Overrides Function ToString() As String
        Dim jsemPlnolety As String = "jsem"
        If Not Plnolety Then
            jsemPlnolety = "nejsem"
        End If
        Dim pohlavi As String = "muž"
        If Not _muz Then
            pohlavi = "žena"
        End If
        Return [String].Format("  Jsem {0}, {1}.Je mi {2} let a {3} plnoletý.", _jmeno, pohlavi, _vek, jsemPlnolety)
    End Function

    Public Property Jmeno() As String
        Get
            Return _jmeno
        End Get
        Private Set(value As String)
            _jmeno = value
        End Set
    End Property

    Public Property Muz() As Boolean
        Get
            Return _muz
        End Get
        Private Set(value As Boolean)
            _muz = value
        End Set
    End Property

    Public ReadOnly Property Plnolety() As Boolean
        Get
            Return Vek > 18
        End Get
    End Property

    Public Property Vek() As Integer
        Get
            Return _vek
        End Get
        Set(value As Integer)
            _vek = value
        End Set
    End Property
End Class
  • Lokální proměnné reprezentující data třídy kolidovaly s vlastnostmi třídy (pokud vlastnost má deklarované vlastní gettery a settery, už to není vlastní proměnná, ale dvě metody upravující lokální proměnné) => lokální proměnné se deklarují s odlišným názvem než vlastnosti (použil jsem podtržítko)¨
  • Lokální proměnné reprezentující data třídy NESMÍ BÝT VEŘEJNÉ!
  • Lokální proměnné se používají uvnitř třídy, vlastnosti slouží jen pro vnější interakci. (představ si třídu jako černou skříňku s páru čudlíky)
  • Proč si zakomentoval všechny lokální proměnné? Pod výrazem "patřičnou" jsem myslel jen proměnnou patřící k vlastnosti "Plnolety".
  • Nevím, co tam čachruješ s metodami "Vrat**" a "Nastav***". Tyto metody jsou právě gettery a settery a patří do deklarace vlastnosti.
  • Proč máš logiku pro plnoletost na třech různých místech? Stačí ji uvést do getteru vlastnosti a konec.
  • Pokud deklaruješ vlastnost pouze s jedním prvkem (buďto setter, nebo getter), použij klíčového slova WriteOnly nebo ReadOnly.

Pročti si prosím nějaké výukové materiály pro navrhování tříd.

Editováno 8. července 15:28
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +1 8. července 15:27
Avatar
Odpovídá na VitekST
Jaroslav Trojan:

Opravil jsem program dle tvého , spustil se , ale stále mi píše : jsem žena!
neumím si to vysvětlit , nastaven je muž

 
Nahoru Odpovědět 9. července 9:30
Avatar
Jaroslav Trojan:
Class Student
    Private _jmeno As String
    Private _muz As Boolean
    Private _vek As Integer
    Public Sub New(jmeno As String, pohlavi As Boolean, vek As Integer)
        _jmeno = jmeno
        _muz = Muz
        _vek = vek
    End Sub
    Public Overrides Function ToString() As String
        Dim jsemPlnolety As String = "jsem"
        If Not Plnolety Then
            jsemPlnolety = "nejsem"
        End If
        Dim pohlavi As String = "muž"
        If Not _muz Then
            pohlavi = "žena"
        End If

        Return [String].Format("  Jsem {0}, {1}.Je mi {2} let a {3} plnoletý.", Jmeno, pohlavi, Vek, jsemPlnolety)
    End Function
    '  Public Function VratJmeno() As String
    ' Return jmeno
    ' End Function

    ' Public Function VratPlnoletost() As String
    ' Return plnolety
    ' End Function

    ' Public Function VratVek() As Integer
    ' Return vek
    ' End Function

    ' Public Function Muz() As String
    ' Return Muz
    ' End Function

    '  Property funguje,  třeba dělat gettery a settery

    Public Property Jmeno() As String
        Get
            Return _jmeno
        End Get
        Private Set(value As String)
            _jmeno = value
        End Set
    End Property

    Public Property Muz() As Boolean
        Get
            Return _muz
        End Get
        Private Set(value As Boolean)
            _muz = value
        End Set
    End Property

    Public ReadOnly Property Plnolety() As Boolean
        Get
            Return _vek > 18
        End Get
    End Property

    Public Property Vek() As Integer
        Get
            Return _vek
        End Get
        Set(value As Integer)
            _vek = value
        End Set
    End Property
End Class

Module Module1
Sub Main()
Dim s As New Student(" student Pavel Hora ", True, 20)
Dim vek As Integer
s.Vek = 15

Console.Write­Line(s)

' Console.Write­Line(objekt, Jmeno) 'číst
' objekt.Jmeno = "Jan Malý" 'zapisovat

Console.ReadKey()
End Sub

End Module

 
Nahoru Odpovědět 9. července 9:37
Avatar
Jaroslav Trojan:

správně má být

Public Overrides Function ToString() As String
Dim jsemPlnolety As String = "jsem"
If Not Plnolety Then
jsemPlnolety = "nejsem"
End If
Dim pohlavi As String = "muž"
If Not pohlavi = "muž" Then
pohlavi = "žena"
End If

Return [String].Format(" Jsem {0}, {1}.Je mi {2} let a {3} plnoletý.", Jmeno, pohlavi, Vek, jsemPlnolety)
End Function

 
Nahoru Odpovědět 9. července 9:45
Avatar
 
Nahoru Odpovědět 9. července 9:47
Avatar
VitekST
Člen
Avatar
Odpovídá na Jaroslav Trojan
VitekST:

Není, pohlaví bude stále muž, protože podmínka závisí na lokální proměnné v metodě, kterou nastavíš na jednu a samou hodnotu, výsledek vždy bude muž.

 
Nahoru Odpovědět 9. července 10:25
Avatar
Odpovídá na VitekST
Jaroslav Trojan:

Ale nebyl. Je to správně , podle tvého kódu byl výsledek žena.
Vždyť vidíš, že jsem musel tvůj kód opravit.

 
Nahoru Odpovědět 9. července 11:04
Avatar
VitekST
Člen
Avatar
Odpovídá na Jaroslav Trojan
VitekST:

Omlouvám se, udělal jsem chybu v konstruktoru.
Já totiž přiřazuju na lokální proměnnou _muz hodnotu z veřejné vlastnosti "Muz", a protože dosud není přiřazená, vrací to implicitní hodnotu.

Zmátlo mě to, protože ze sémantického hlediska parametr "pohlavi" by měl obsahovat hodnotu toho pohlaví (výčtový typ, nebo string ["zena", "muz"]), ne booleovskou hodnotu (to by se potom měl jmenovat "jeMuz", nebo "jeZena").

Problém si ale neopravil, schválně, zkus si zadat ať je žena (dřív než zkopíruješ a vložíš opravený kód dostupný níže). Vypíše ti to muž.

Proč?
Definuješ v metodě lokální proměnnou "pohlavi", která má reprezentovat text toho pohlaví a její výchozí hodnota je "muž".
Co ale vůbec nechápu, že ji uvádíš v podmínce, a to tak, že pokud se hodnota tý proměnné nebude rovnat hodnotě "muž", tak ji přiřadíš hodnotu "žena".

Což je blbost, protože to je lokální proměnná v metodě, která má přiřazenou výchozí hodnotu "muž", a ona se nikdy nezmění, neprobíhá tedy tudíž žádná interakce s daty ve třídě!

Trochu logického uvažování do toho, prosím, promysli si co ten kód dělá dřív než stiskneš tlačítko se symbolem "Play".

Opravený konstruktor:

Public Sub New(jmeno As String, pohlavi As Boolean, vek As Integer)
    _jmeno = jmeno
    _muz = pohlavi
    _vek = vek
End Sub

Opravená funkce ToString:

Public Overrides Function ToString() As String
    Dim jsemPlnolety As String = "jsem"
    If Not Plnolety Then
        jsemPlnolety = "nejsem"
    End If

    Dim pohlavi As String = "muž"
    If Not _muz Then
        pohlavi = "žena"
    End If

    Return [String].Format("  Jsem {0}, {1}.Je mi {2} let a {3} plnoletý.", _jmeno, pohlavi, _vek, jsemPlnolety)
End Function

Ještě jednou: Prosím, pro vkládání kódu používej TLAČÍTKO SE SYMBOLEM KÓDU, kód to formátuje a zbarvuje, nemám náladu na to, abych se brouzdal v bordelu. Děkuji mnohokrát.

Editováno 9. července 19:00
 
Nahoru Odpovědět 9. července 18:59
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.