返回列表 發帖

有關Visual Basic程式語言的設計

小弟對程式語言不是很懂
(在下是文組的==)
這次程式語言的作業內容是
重複性結構,也就是迴圈的意思
大概是運用下面程式碼為結構
-----------------------
Dim e, sum as Integer

For e =1 To 999           
    sum = sum + 1
Next

MsgBox (sum)
------------------------
這次的作業是要求奇數皆的相加
也就是1!+3!+...+e!=?
用For-Next寫法
e是給user輸入的,e需要大於1且為基數

新增回覆,程式碼也附上
話說32位元的,算到19!就爆了==

[ 本文最後由 Iverson 於 2009-12-27 16:03 編輯 ]

用2個loop+要奇數很容易的 加個if再mod2非0就是odd.這是其中一個方法 已告訴你了
你再轉成vb code吧
你上面用msgbox 按 確認按到你手軟:)

TOP

既然是文組,那為什麼要修程式設計呢 = =
而且如果是觀念不懂我想會有許多人樂意替你解答
但這樣把作業丟上來叫別人幫你寫.....
要得到幫忙至少展現點誠意吧
如果只打算伸手那還是早點棄修程式設計吧

TOP

重複性結構.簡單的說就FOR迴圈
你要算幾階這種程式...去網路上找一定一大堆
這就跟寫Hello world一樣重要

我可以跟你說這程式超簡單,絕對不會超過20行
而且你這程式用for..next去寫大約要用兩個for...next去跑

以下是我想的虛擬碼
Dim e, sum,temp as Integer
for x=1 to e
for y=1 to e
  temp =temp *y;
next
sum+=temp;
next

照上面去跑一定會掛掉
因為這是我隨手打的,(沒用vb跑過)
而且當你看懂就知道哪裡有問題了
在修正一下就好了...

話說vb要不要加分號阿
我太久沒用都忘了

TOP

vb阿
懷念阿 不過有段時間沒有碰了

如果我沒記錯vb是不用分號的  
忘記了XDDD

寫程式的重點在邏輯清楚就沒有問題了
至於用法倒是可以慢慢翻書

TOP

與友人討論後寫出來的結果
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sum, input As Long
        input = Val(TextBox1.Text)
        If input Mod 2 = 1 And input >= 1 And input <= 19 Then
            For index As Long = 1 To input Step 2
                sum = sum + Factorial(index)
            Next
            MsgBox(sum)
        Else
            MsgBox("Please enter any odd number that is larger than 1 and between 1 & 19 ")
        End If
    End Sub
    Private Function Factorial(ByVal number As Long) As Long
        If number <= 1 Then
            Return (1)
        Else
            Return number * Factorial(number - 1)
        End If
    End Function

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        End
    End Sub

    Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
        TextBox1.Focus()
    End Sub
End Class

請大家看一下有哪些地方需要改進

[ 本文最後由 Iverson 於 2009-12-27 16:38 編輯 ]

TOP

原文由 Iverson 於 2009-12-27 15:56 發表
與友人討論後寫出來的結果
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sum, input As Long
        input ...

其實階層可以不要每次都重算...
由小到大的乘,下次的乘法一定是上一次的結果再...?

不過我總覺得這題有陷阱~"~
不知道是不是我的錯覺...

TOP

有幾個地方有疑惑

1.
基數還是奇數?
中文念起來一樣 但是意思差很多

2.
19!會算到爆掉
大該是因為定義整數精度的關係........

3.
寫程式最重要的是邏輯性的思考
通常教學書都會有 方塊、菱形這些挖溝的圖型來做的流程圖

4.
程式常常會寫得很多很長
因此註解非常重要
不然別說是給別人看了
自己要作除錯都很困難又很煩...

TOP

你是文組怎麼會跑去修這門課==
難道是被朋友拉去修?

TOP

看起來程式邏輯 沒有什麼問題

基本上 數字到19!暴掉的話 就宣告成double

這樣數值應該會比較大

然後 Step 2 好像沒有定義

這樣似乎會出現錯誤吧

vb很久沒碰了 所以萬一有錯就請多包涵

補充一點 基本上 1F裡那段程式碼認真定義的話

叫演算法 就是將文字描述轉成類似程式碼的東西

所以要了解這個題目要什麼樣的結果

然後再用它給定的參數下去實現這個結果

[ 本文最後由 01xe11 於 2009-12-27 22:10 編輯 ]

TOP

返回列表