簡易洗牌程式使用VB.NET
我在過去的工作中有用過洗牌程式,我自己也會寫,今天就來給大家看一下我最近用VB.NET寫出來的簡單洗牌程式。
Dim amount = 20 '總共多少個數字
Dim i, j, temp As Integer
Dim numbers(amount - 1) As Integer '在VB中的陣列如果數字是N,實際這個陣列就會有N-1個資料,要注意
amount = amount - 1
For x = 0 To amount '把數字照順序存入陣列
numbers(x) = x + 1
Console.Write(numbers(x).ToString + " ")
Next
Console.WriteLine()
Console.WriteLine("----------------------------------")
Randomize() '要加入這行才會每次的亂數都不一樣
'任意一個號碼和任意一個號碼位置對換,重複一直做就可以達到洗牌的效果
For x = 0 To amount
i = CInt(Rnd() * amount)
j = CInt(Rnd() * amount)
temp = numbers(i)
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
讀取文字檔案內容使用Visual Basic
過去我的工作曾經有過要用程式讀取文字檔案的經驗,今天就來教大家如何使用Visual Basic讀取文字檔案的內容。
首先新增一個Winform程式使用VB,然後在設計的區塊加入一個RichTextBox並命名為Resultbox如下圖:
一開始撰寫程式記得要引用System.IO,程式碼如下:
Imports System.IO
然後我在程式中使用StreamReader,用一行一行讀取的方式把文字讀取出來,我寫下這行程式:
Dim filereader = My.Computer.FileSystem.OpenTextFileReader("D:\doc\Text.txt", System.Text.Encoding.Default)
程式中filereader他會根據後面的程式自動轉換為StreamReader,在新版的Visual Basic中這裡是可以省略As StreamReader的,D:\doc\Text.txt這裡記得改成你的文字檔路徑,System.Text.Encoding.Default這是設定文字編碼格式為預設。
然後我在程式中用While迴圈把每一行文字給讀取出來,如下:
Dim text As String = ""
Dim line As String = filereader.ReadLine()
While Not (line Is Nothing)
text = text & line & vbCrLf
line = filereader.ReadLine()
End While
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
Visual Basic教學網站推薦
學習程式語言在網路上可以找到很多資源使用,最近我在複習Visual Basic就有上網找相關的程式教學,今天來跟大家推薦2個很好用的學習Visual Basic的網路資源。
TW511教學網
TW511教學網是一個擁有豐富教學資源的網站,裡面有各種不同程式語言的教學,舊的新的語言都有,我竟然在上面看到有Fortran程式語言的教學,那是我研究所在寫的程式,現在業界幾乎看不到有人還在寫Fortran。TW511也有VB的教學,內容滿豐富的,想學VB看這個網站很有用。
電腦學習園地-VB教學
這是一個Youtube頻道,在電腦學習園地Youtube中有各種不同程式語言的教學,其中也有包含Visual Basic的教學,從很基本的城市基礎開始教起,適合剛開始學程式的初學者看,並且講解也是十分的淺顯易懂。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
最近複習VB.NET所感受到VB.NET和C#差異
C# |
VB.Net |
using |
Imports |
this |
Me |
void |
sub |
base |
MyBase |
abstract |
Mustlnherit |
sealed |
NotOverrideable |
virtual |
MustOverride |
switch |
Select |
internal |
Friend |
static |
shared |
在網路上看到有人整理C#和VB.Net語法的比較(資料來源:ITRead01)
最近我在複習VB.NET,我因為我本來就已經學會C#,VB.NET過去工作也曾經有用過,所以現在複習就很快,基本上學會C#以後再來學VB.Net應該是很簡單的,有很多觀念是互通的。
雖然說有在觀念上是互通的,但是寫C#那麼久了,改成寫VB.NET還是不太習慣,如上面的這個表格,C#裡面有很多語法和VB.NET是不一樣的,最近複習我就發現static這個關鍵字就很不一樣。其實C#和VB.NET都有static這個關鍵字,但是在VB.Net中可以用static的地方很少,如果想要共用,就要使用shared這個關鍵字,這部分的觀念有時間我可以再整理一篇跟大家介紹,C#可以用static的地方在寫VB.NET時使用static這個關鍵字,很有可能程式就會錯誤,你就要改用shared。
在C#中的abstract在VB.NET中變成了MustInherit,而virtual在VB.NET中變成了MustOverride,這個如果有學物件導向語言的人應該會覺得這很好理解,確實就是MustInherit和MustOverride這二個意思,但是剛開始從C#轉成VB.NET當然是不習慣。
在C#中會使用{},在VB.NET根本就不使用{},取而代之的是使用End來代表結束,VB.NET很多地方都和C#不一樣,但我要強調有很多程式的觀念相通,學會一種程式語言後再換成另一種就很快,大家可以先學會一種語言,先學到很熟練以後就可以開始再去學其他程式語言了。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
撰寫Visual Basic要注意資料型態不會自動轉換
最近在複習Visual Basic,在寫VB時有些地方會和C#不一樣,有一個地方就是很不一樣又常常會忘記,就是C#輸出時會自動轉換資料型態,但是VB不會。
Dim num = 1
Dim str As String
str = "Age:" + num
Console.WriteLine(str)
如果是C#的話,因為輸出時會自動做資料型態的轉換,按照C#的邏輯這樣的程式不會錯,但是寫VB你這樣寫的話,你就會發現程式錯了,就是錯在第三行。
str = "Age:" + num
這裡因為num是屬於數字的資料型態,不屬於字串的資料型態,所以就會出錯。VB不會自動把num轉換為字串的資料型態,所以正確的寫法要改成下面這樣:
str = "Age:" + num.ToString()
最後再一次執行程式輸出結果 Age:1,這個程式就OK了。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
想學Visual Basic嗎?推薦一本好用的Visual Basic的電腦書
最近剛入手讀Visual Basic書籍(圖片來源:經瑋文化)
Visual Basic.NET 2017物件/函數物件/元件模組開發寶典
作者:孫惠民
售價:550元
出版社:經瑋文化
出版日期:2017/07/20
最近正在複習Visual Basic,原本我在讀的Visual Basic的書是VB2012和VB2013的版本,已經太舊了,因此我最近又買了一本新的Visual Basic書籍,這一本比較進階,適合有程式基礎的人讀。裡面有一些很棒的程式範例,可以藉由這些程式範例讓自己的VB功力更上一層樓,推薦給大家。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
懂C#後再來學習VB的心得
最近這段時間我在學Visual Basic,其實這個程式語言我很早就有接觸了,專科時期在學校就有學過VB,但是那時候用的沒有那麼多,當時我的專題並沒有使用VB,當時上課教VB,然後有一些課堂作業這樣而已。後來我在工作上曾經有使用過VB,但是只有一小部分而已,對於VB這個程式語言的程度只是大略知道,但還沒有學會。最近我比較有時間了,我現在就正在複習VB程式語言,我發現懂C#再來學VB還滿快的,那些程式觀念很快就弄懂了,當然也是因為我VB已經有一些基礎,所以可以學很快,但是你如果學會了一種程式語言以後,有一些東西確實是相通的,要再學另一種語言確實有幫助,現在大概就只要再多多練習以後如果工作要用到VB就沒問題了。
Visual Basic這個程式曾經很熱門,現在工作上會用的機會變少了,但還是有VB的相關職缺,學會VB在工作上還是有用,當然每個人的興趣不同,要不要學VB看個人想往哪個方面發展,有的人他想要寫APP,那應該是要學JAVA,有的人想要做前端工程師,那他應該要學會HTML,CSS和Javascript,我是因為過去有一些VB的相關經驗,現在又比較有空,所以在複習VB,相信未來工作如果要使用VB對我來說是可以很快上手的。
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
抽象方法與抽象類別的程式範例使用VB
我以前曾經簡單介紹過物件導向的抽象(Abstract)這個觀念,抽象簡單來說就是大家都一定會做的事情,只是內容會有所不同。今天簡單的用計算面積這件事情來說明抽象的觀念,使用Visual Basic程式語言為大家說明。
不同的形狀對於計算面積這件事情都會有不同的方法,而計算面積是每一種形狀所都會擁有的方法,所以今天我可以宣告一個抽象類別Shape,並且我定義邊長為10,在抽象類別裡面我定義一個抽象方法Area。
Public MustInherit Class Shape
Public AcrossLine As Double = 10
Public MustOverride Function Area() As Double
End Class
這裡可以看到在宣告抽象類別時使用的關鍵字為MustInherit,字面上的意思是必須繼承,因為抽象類別裡面的抽象方法不能在裡面做定義,抽象方法一定要讓繼承的子類別實作,子類別一定要繼承這個方法,所以宣告抽象類別時使用MustInherit這個字。另外在定義抽象方法時所使用的關鍵字是MustOverride,字面上的意思是必須重新定義,這就是因為抽象方法在父類別中是不會定義的,一定要讓繼承的子類別去定義,所以定義抽象方法用的關鍵字是MustOverride。
接下來我定義Circle和Square這二個類別,繼承父類別Shape,並且分別定義面積計算的方式為PI*邊長*邊長和邊長*邊長。
Public Class Circle
Inherits Shape
Public Overrides Function Area() As Double
Return Math.PI * (AcrossLine ^ 2) '圓形面積算法
End Function
End Class
Public Class Square
Inherits Shape
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
泡沫排序法使用VB
泡沫排序法那是一個程式設計師剛開始學程式一定要會自己寫的基礎程式,泡沫排序法是把一串未經排序的數字照順序排列的一種方式,初學者一定要學會,而且我去面試的時候有好幾家公司都有考過泡沫排序法,資深程式設計師要寫這個程式當然是輕而易舉的,最近我在讀Visual Basic就練習了這個程式,使用VB寫泡沫排序法的程式碼如下:
Module Program
Sub Main(args As String())
Dim Numbers() As Integer = {2, 15, 6, 9, 1, 7, 26, 17, 5, 10}
Dim i, j, temp As Integer
For i = 0 To 9
For j = i To 9
If Numbers(i) > Numbers(j) Then
temp = Numbers(i)
Numbers(i) = Numbers(j)
Numbers(j) = temp
End If
Next
Next
For i = 0 To 9
Console.Write(Numbers(i) & " ")
Next
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()
九九乘法表是學習程式語言剛開始時滿基本的一個練習,會練習到使用For迴圈,Visual Basic寫九九乘法表的程式如下:
Dim x, y As Integer
Dim result As String = ""
For x = 1 To 9
For y = 1 To 9
result += y & "*" & x & "=" & x * y & Chr(9)
Next
result += vbNewLine
Next
Console.WriteLine(result)
波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()