Ra Quyết định

Một phần của tài liệu Lập trình với Microsoft Visual Studio pptx (Trang 63 - 69)

Khi chúng ta ra một quyết định, chúng ta thường có rất nhiều lựa chọn. Giống như mua loại kem có mùi vị gì, nghe nhạc gì, chơi với ai. Máy tính không quá may mắn như thế chúng phải ra quyết định dựa trên cái gì đó là đúng hoặc sai. Đúng vậy, câu lệnh này đúng hoặc sai? Ví dụ:

Bạn có muốn uống gì không? Có.

Bạn có muốn uống cà phê không? Không. Bạn có muốn uống trà không? Không. Bạn có muốn uống sô đa không? Có. Bạn có muốn uống Cô la không? Không.

Bạn có muốn uống đồ uống không cồn không? Có!

Cách đặt câu hỏi và trả lời như thế này cũng giống như chương trình máy tính ra quyết định –có hoặc không. Loại “suy nghĩ” hoặc lô gíc này được gọi là Boolean, lô gíc (đúng/sai).

2. Lô gíc Boolean

Chương trình máy tính rất giỏi trong việc giải các bài toán toán học. Chúng cũng giỏi trong việc giải các bài toán lô gíc Boolean. Trong bài toán lô gíc Boolean, câu trả lời luôn luôn hoặc là True (đúng) hoặc là False (sai). Dưới đây là một vài ví dụ lô gíc Boolean.

4=4

4=4 đúng không? có, điều này đúng. 3=1+3

3=1+3 đúng không? không, điều này sai. 3=(6+12)/(1+5)

3=(6+12)/(1+5) đúng không? có, điều này đúng.

Bạn có thể thấy rằng trong mỗi vấn đề lô gíc ở trên câu trả lời luôn luôn hoặc là đúng hoặc là sai. Câu trả lời không phải là số, màu sắc, hoặc các từ. Đây là cách chương trình máy tính ra quyết định. Nếu câu trả lời là True (đúng), chương trình thực hiện cái gì đó. Nếu câu trả lời là False (sai) chương trình máy tính không thực hiện gì cả.

3. Toán t Lô gíc

Như toán học phổ thông, Lô gíc cũng có các toán tử của nó, nhưng chúng không làm việc trên các số, chúng chỉ làm việc trên các toán hạng lô gíc – Đúng và Sai. Chúng cho phép bạn “thêm” các lệnh đúng và sai cùng với nhau theo cách riêng. Chúng có thể được sử dụng để nối các lệnh lô gíc để tạo ra các biểu thức lô gíc phức tạp hơn.

Có ba toán tử lô gíc: AND, OR, và NOT. Toán tử AND và OR là toán tử hai ngôi (tác động lên hai toán hạng). Toán tử NOT là toán tử một ngôi (tác động lên một toán hạng). Cả

ba toán tử đều cho kết quả là giá trị lô gíc. Mỗi toán tử có “quy tắc” riêng của nó. Hãy xem một vài ví dụ toán tử lô gic.

3=1+2 AND 2=1+1 Biểu thức này đúng

Ở đây chúng ta có hai biểu thức lô gíc riêng biệt nối với nhau bằng toán tử AND. Đầu tiên chúng ta định giá trị cho biểu thức 3=1+2, biểu thức này đúng. Tiếp đó chúng ta định giá trị cho 2=1+1, biểu thức này cũng đúng. Sau đó chúng ta định giá trị cho biểu thức True AND True (đúng AND đúng). Cả hai vế của toán tử AND là đúng nên câu trả lời cuối cùng là đúng.

3=1+2 AND 5=2+2 Biểu thức này sai.

Chúng ta cũng có hai biểu thức nối với nhau bằng toán tử AND (Và). Đầu tiên chúng ta định giá trị của biểu thức ở vế bên trái 3=1+2, biểu thức này đúng. Tiếp theo chúng ta định giá trị của biểu thức ở vế bên phải 5=2+2, biểu thức này sai. Sau cùng chúng ta định giá trị biểu thức True AND False (đúng AND sai), biểu thức này sai bởi vì nếu có ít nhất một vế của toán tử AND là sai thì biểu thức AND sai.

Một ví dụ khác:

3=1+2 OR 5=2+2 Biểu thức này đúng.

Đầu tiên, chúng ta định giá trị 3=1+2, biểu thức này đúng. Tiếp đến định giá trị 5=2+2, biểu thức này sai. Và bài toán trở thành True OR False (đúng OR sai), biểu thức này đúng. Bởi vì nếu có ít nhất một biểu thức đúng thì biểu thức OR đúng.

Chúng ta sẽ luyện, chúng ta sẽ quen sau một thời gian sử dụng các toán tử logíc Chúng ta có một bảng đơn giản liệt kê các khả năng xảy ra của toán tử AND. Bạn không cần ghi nhớ, chỉ cần quay lại xem khi cần.

Vế trái Vế phi Vế trái AND Vế phi (kết qu)

True True True True False False False True False False False False Các khả năng xảy ra của toán tử OR (hoặc).

Vế trái Vế phi Vế trái OR Vế phi (kết qu)

True True True True False True False True True False False False

Toán tử Not không nối biểu thức lại với nhau. Nó chỉ đơn giản chuyển False(sai) thành True (đúng) và ngược lại..

Vế phi NOT Vế phi (kết qu)

True False False True Dưới đây là một vài ví dụ của toán tử Not. Not(3=1+2) cho kết quả là False. (adsbygoogle = window.adsbygoogle || []).push({});

3=1+2 là True. Not True là False. Not(5=2+2) cho kết quả là True. 5=2+2 là False. Not False là True.

4. Toán t so sánh

Khi mã lệnh được thực hiện, chương trình giải bài toán. Câu trả lời là đúng hoặc sai. Chương trình ra quyết định phụ thuộc vào câu trả lời của bài toán là đúng hay sai.

Dấu bằng không những được sử dụng làm toán tử gán mà nó còn được sử dụng làm toán tử so sánh. Trong ví dụ trên, dấu bằng là hỏi câu hỏi, "Vế trái có bằng vế phải không? Đúng hoặc sai?" Có các toán tử so sánh khác dùng để so sánh vế trái có nhỏ hơn hoặc vế trái có lớn hơn vế phải không. Trong từng trường hợp, câu trả lời sẽ là đúng hoặc sai.

3<4 Câu hỏi là: 3 có nhỏ hơn 4 không? Có, điều này đúng. 2>5 Câu hỏi là: 2 có lớn hơn 5 không? Không, điều này sai. Bảng các toán tử so sánh thông dụng:

Toán t so sánh Ý nghĩa Câu hi

= Bằng Biểu thức bên phải có bằng biểu thức bên trái không?

> Lớn hơn Biểu thức bên trái có lớn hơn biểu thức bên phải không?

< Nhỏ hơn Biểu thức bên trái có nhỏ hơn biểu thức bên phải không?

>= Lớn hơn hoặc bằng Biểu thức bên trái có lớn hơn hoặc bằng biểu thức bên phải không?

<= Nhỏ hơn hoặc bằng Biểu thức bên trái có nhỏ hơn hoặc bằng biểu thức bên phải không?

<> Khác nhau Biểu thức bên trái có khác biểu thức bên phải không?

Bạn có thể chưa quen với các toán tử >=, <= và<>. Chúng là hai toán tử gộp làm một. Chúng chứa hai lệnh lô gíc được nối bởi toán tử một OR. Chỉ cần một lệnh lô gíc đúng thì toàn bộ lệnh đúng. Ví dụ, >= nghĩa là: vế trái có lớn hơn vế phải không? OR vế trái có bằng vế phải không? Hai câu hỏi riêng biệt được nối với nhau bởi toán tử OR. Toán tử <> nghĩa là: vế trái có nhỏ hơn vế phải? OR vế trái có lớn hơn vế phải không? Thực ra toán tử <> hỏi: hai vế không bằng nhau phải không?

Hãy xem một số ví dụ sau, sử dụng toán tử so sánh để xây dựng biểu thức lô gíc. Bạn có thể phải xem lại các bảng.

3<=3

3<3 là sai. 3=3 là đúng. sai OR đúng =đúng đúng, 3 nhỏ hơn hoặc bằng 3.

2>=3

2>3 là đúng. 2=3 là sai. sai OR sai = sai sai, 2 không lớn hơn hoặc bằng 3. 3<>4

3<4 là đúng. 3>4 là sai. đúng OR sai = đúng đúng, 3 không bằng 4.

3<>3

3<3 là sai. 3>3 là sai. sai OR sai = sai sai, 3 không bằng 3. vì thế 3 bằng 3.

Các ví dụ đã đưa ra so sánh giữa các số. Bạn cũng có thể sử dụng toán tử so sánh các chuỗi văn bản, các giá trị lô gic khác. Xem các ví dụ sau:

"ABC" = "DEF"

"ABC" = "DEF"? Không, điều này sai. True=True

True=True đúng không? Có, điều này đúng. True=False

True=False đúng không? Không, điều này sai.

5. Mã lnh điu kin

Bây giờ bạn để cho chương trình hỏi một câu hỏi đúng hoặc sai bằng cách sử dụng toán tử so sánh và toán tử lô gíc. Nhưng chương trình máy tính làm gì với câu trả lời? Nó ra một quyết định! Dựa trên câu trả lời cho câu hỏi lo gíc là đúng hoặc sai, nó có thể chọn thực hiện việc này hoặc việc khác. Thực tế, nó không có sự lựa chọn. Nếu câu trả lời là đúng thì thực hiện một việc gì đấy, nếu sai thì không làm gì cả.

Gợi ý

Việc so sánh giữa các chuỗi văn bản thực hiện từ trái qua phải. Ký tựđầu tiên của toán tử 1 so sánh với ký tựđầu tiên của toán tử 2, sau đó ký tự thứ 2 so sánh với ký tự thứ (adsbygoogle = window.adsbygoogle || []).push({});

2, .... Khi so sánh chữ hoa và chữ

Đây là một vài ví dụ trong cuộc sống thực tế:

Nếu rửa xe của mẹ trước khi bố về nhà thì bố sẽ cho mình $5. Bố đã về nhà. Tôi đã rửa xe? đúng. Bố cho tôi $5.

Bố đã về nhà. Tôi đã rửa xe? sai. Bố không cho tôi $5. Nếu Pauline nghĩ tôi tử tế thì cô ấy sẽ rủ tôi đi chơi. Pauline nghĩ tôi là người tử tế? đúng. Cô rủ tôi đi chơi. Pauline nghĩ tôi là người tử tế? sai. Cô không rủ tôi đi chơi. Đây là một vài ví dụ về cách mà chương trình có thể ra quyết định:

Nếu Ô đánh dấu “ngoại cỡ” được đánh dấu thì hiển thị ảnh lớn. Ô đánh dấu “ngoại cỡ” được đánh dấu? đúng. Hiển thị ảnh lớn. Ô đánh dấu “ngoại cỡ” được đánh dấu? sai. Không hiển thị ảnh lớn. Nếu biến SoGallon (tổng số galông) lớn hơn 0 thì tính chi phí xăng. Biến SoGallon > 0? đúng. Tính chi phí xăng.

Biến SoGallon > 0? sai. Không tính chi phí xăng.

Bạn có thể thấy thực tế và chương trình của tôi có một vài thứ gì đó chung. Chúng sử dụng toán tử lô gíc để hỏi một câu hỏi đúng hoặc sai. Câu hỏi đúng hoặc sai, sử dụng toán tử so sánh như là bằng và nhỏ hơn hoặc bằng. Câu trả lời của câu hỏi thì hoặc là đúng hoặc là sai. Nếu câu trả lời là đúng thì làm một điều gì đó. Nếu câu trả lời là sai thì không có gì xảy ra.

6. Lnh If...Then

Bạn có để ý rằng có ví dụ đã sử dụng từ "If" và "Then"? Nếu một điều kiện nào đó là đúng thì làm cái gì đó. Nếu điều kiện sai thì không có gì xảy ra cả. Khi bạn muốn chương trình ra một quyết định, bạn viết một lệnh "If...Then". Cú pháp của lệnh “If…Then” trong Visual Basic.NET như sau:

Ifđiu kin Then

Lnh

End If

Ví dụ trong Visual Basic.NET:

If Tuoi = 3 Then

MessageBox.Show("Tôi 3 tui.")

End If

Chú ý từ "If". Nó là một từ khoá của Visual Basic.NET nên nó có màu xanh da trời. Điều kiện ở ngay sau từ "If". Điều kiện thực hiện một phép so sánh và hỏi một câu hỏi đúng hoặc

sai. Biến myAge = 3? Nếu đúng thì làm việc gì đó. Chú ý từ "Then" theo ngay sau điều kiện. Nó cũng là từ khoá của Visual Basic.NET, vì thế nó có màu xanh da trời. Sau "Then" đến lệnh được thực hiện. Chúng ta làm thụt đầu dòng này cho dễ đọc mã lệnh. Nếu điều kiện là đúng thì chương trình hiển thị một hộp thông báo với dòng chữ " Tôi 3 tuổi". Để ý rằng từ "End If" theo sau lệnh điều kiện cũng là từ khoá. Từ "End If" hoàn thành lệnh "If" (tức là báo hiệu kết thúc lệnh If).

Bây giờ bạn thử câu lệnh If.. Then! Tạo một ứng dụng Window tên là IfThen. Thêm một hộp văn bản vào Form1. Đặt một nút lệnh vào Form1. Nhấp đúp nút lệnh để mở cửa sổ soạn thảo lệnh cho thủ tục xử lý sự kiện nhấn nút. Thêm các dòng lệnh sau vào thủ tục này.

Dim Tuoi As Integer

Tuoi = 3

If Tuoi = 3 Then

TextBox1.Text = "Tôi 3 tui."

End If

Dịch và chạy chương trình. Nhấn nút lệnh. Cái gì đang xảy ra ở đây. Mã lệnh khai báo một biến tên là Tuoi và gán cho nó bằng 3. Lệnh "If" hỏi một câu hỏi đúng hoặc sai: Tuoi=3? Câu trả lời là đúng bởi vì bạn vừa mới đặt Tuoi=3. Vì câu trả lời là đúng nên câu lệnh sau "Then" được thực hiện. Hộp văn bản hiển thị nội dung "Tôi 3 tuổi"

Bây giờ hãy thay đổi mã lệnh như dưới đây:

Tuoi = 2

Dịch và chạy chương trình. Nhấn vào nút lệnh. Và theo dõi điều gì xảy ra. Tuoi được gán bằng 2. Lệnh "If " hỏi một câu hỏi Tuoi=3? Lần này câu trả lời là sai, vì thế câu lệnh sau "Then" không được thực hiện. Không có gì xảy ra. Nội dung của hộp văn bản không thay đổi bởi vì điều kiện là sai. Chương trình thực hiện chính xác như đã định.

Hãy xem một ví dụ khác, trên Form1 thêm vào một Ô đánh dấu. Viết mã lệnh cho sự kiện nhấn nút lệnh. Thay thế mã lệnh trong thủ tục xử lý sự kiện này bằng các mã lệnh sau:

If CheckBox1.Checked = True Then (adsbygoogle = window.adsbygoogle || []).push({});

TextBox1.Text="Tôi được đánh du."

End If

Dịch và chạy chương trình. Đánh dấu vào Ô đánh dấu sau đó nhấn vào nút. Điều kiện là đúng (bạn đã đánh dấu vào Ô đánh dấu), vì thế nội dung của hộp văn bản là "Tôi được đánh dấu."

Dịch và chạy lại chương trình. Lần này, bỏ đánh dấu ở ô đánh dấu đi, sau đó nhấn vào nút lệnh. Điều gì xảy ra? Không có gì xảy ra cả. Lần này điều kiện là sai (bạn không đánh dấu vào Ô đánh dấu), vì thế nội dung của TextBox1.Text không thay đổi. Chương trình của bạn đã ra quyết định (gán giá trị cho thuộc tính Text) dựa trên một điều kiện (Ô đánh dấu có được đánh dấu hay không).

7. S dng nhiu Lnh If

Có thể bạn muốn chương trình của bạn ra một số quyết định trong khi chạy. Chương trình có thể cần kiểm tra trạng thái của Ô đánh dấu, sau đó kiểm tra trạng thái của nút lựa chọn, tiếp đến so sánh hai số, và cuối cùng là xác định xem người dùng có bỏ sót trường nào trống không. Chà! Đòi hỏi chương trình nhiều quá. Tất cả các điều này đều có thể thực hiện được? Câu trả lời là “có”. Bạn cần bao nhiêu lệnh "If...Then" thì bạn thêm vào chương trình từng ấy. Giống như các lệnh khác, chúng được thực hiện theo thứ tự mà chúng xuất hiện. Hãy viết một ứng dụng trình diễn cách sử dụng nhiều lệnh "If...Then".

Chương trình của chúng ta có một Ô đánh dấu "Hiển thị tất cả các báo động". Nếu ô đánh dấu này được đánh dấu thì chương trình thay đổi màu nền (BackColor) của form thành màu đỏ, thay đổi nội dung trong hộp văn bản thành "Báo động đỏ ", và hiển thị hộp thông báo hiển thị nội dung "Nguy hiểm! Nguy hiểm!". Để làm được điều này bạn có thể sử dụng ba lệnh "If...Then". Trong mỗi lệnh, điều kiện sẽ kiểm tra xem ô đánh dấu "Hiển thị tất cả các báo động" có được đánh dấu hay không. Nếu điều kiện là đúng, câu lệnh điều kiện được thực hiện.

Sau đây tạo một ứng dụng Window gọi là FireAlarm (báo cháy). Thêm một ô đánh dấu, một hộp văn bản, và một nút lệnh vào Form1. Thay đổi tiêu đề của Button1 thành "Ba lệnh If". Nháy đúp vào Button1 để viết lệnh cho sự kiện nhấn nút. Nội dung mã lệnh như sau.

If CheckBox1.Checked = True Then

Form.ActiveForm.BackColor = System.Drawing.Color.Red

End If

If CheckBox1.Checked = True Then

TextBox1.Text = "Báo động đỏ"

End If

If CheckBox1.Checked = True Then

MessageBox.Show("Nguy him! Nguy him!")

End If

Dịch và chạy chương trình. Đánh dấu vào ô đánh dấu "Hiển thị tất cả các báo động" sau đó nhấn nút lệnh "Ba lệnh If “. Mỗi một lệnh "If...Then" thực hiện lần lượt và ba lệnh điều kiện được thực hiện. Lệnh "If...Then" đầu tiên thay đổi màu nền của form thành màu đỏ. Lệnh thứ hai thay đổi nội dung của hộp văn bản thành "Báo động đỏ". Lệnh thứ ba làm xuất hiện một hộp thông báo hiển thị nội dung thông báo "Nguy hiểm! Nguy hiểm!"

Một phần của tài liệu Lập trình với Microsoft Visual Studio pptx (Trang 63 - 69)