LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài 3 Các phép toán – khai báo hằng
Nội dung
Các phép toán trên các kiểu dữ liệu cơ
bản
Kiểu liệt kê (enumeration)
Hằng
Các phép toán -Operators
Tạo 1 project mới để thử nghiệm các phép toán
Đặt tên cho tập tin class này . Ví dụ OperarorDemo.cs
•
Nhập thử chương trình sau
namespace Example1
{
class OperatorDemo
{
static void Main(string[] args)
{
float a = 5.5f;
float b = 2.0f;
float c;
int i = 7;
int j = 2;
int k;
c = a + b;
Console.WriteLine("c = {0}",c);
•
int i = 7;
int j = 2;
int k;
k = i / j;
Console.WriteLine("k is {0}",k}
•
Kết quả in ra :
k is 3
•
Phép chia 7/2 cho kết quả là 3.
•
int i = 7;
int j = 2;
double d;
d = i / j;
•
System.Console.WriteLine(d); /////????
Phép chia lấy phần dư
•
Phép chia lếy phần dư : Áp dụng cho 2
số nguyên.
•
Ký hiệu : %
•
Ví dụ
•
7 % 2 = 1
•
d = d * 2.0;
d = d - 5.0;
•
C# cung cấp nhiều phép toán tự gán như +=,
-=, *=, /=
•
Ví dụ Dùng phép toán tự gán
•
d = d * 2.0; d *= 2.0;
•
d = d + 7.0; d += 7.0;
•
d = d - 5.0; d -= 5.0;
•
d = d / 2.0; d /= 2.0;
Ví dụ
•
using System;
namespace Example3
{
class ShortHandExample
{
static void Main(string[] args)
{
int i = 2;
i += 2;
Console.WriteLine("i is {0}",i);
i *= 3;
Lý do : Độ ưu tiên của các toán tử
•
Ghi nhớ PEMDAS. : các phép toán có độ ưu tiên
theo qui tắc sau:
parenthesis exponents multiplication division
addition subtraction
Xem lại ví dụ
5 * 2 + 6 * 3
Phép nhân có độ ưu tiên cao hơn.
10 + 18
Sau đó thi hành phép cộng.
28
• Sử dụng dấu ( và ) để thay đổi thứ tự tính toán.
5 * ( 2 + 6 ) * 3
5 * 8 * 3
40 * 3
120
•
Xem ví dụ sau.
4 * 3 / 2
Có thể là
4 * 3 / 2
4 * 1
4
Có thể là
4 * 3 / 2
12 / 2
6
float b = 16.0f;
Console.WriteLine("a = {0}", a);
a++;
Console.WriteLine("a = {0}", a);
a ;
Console.WriteLine("a = {0}", a);
Console.WriteLine("b = {0}", b);
b++;
Console.WriteLine("b = {0}", b);
b ;
Console.WriteLine("b = {0}", b);
•
Kết quả:
a = 5
a = 6
a = 5
b = 16.0
b = 17.0
b = 16.0
•
Toán tử ++ av2 – có thề đi trước hay sau 1 biến
Postfix: a++, a
Prefix: ++a, a
int a = 5, b;
b = a++;
•
Sau phép gán thì b = 5, a = 6;
int a = 5, b;
b = ++a;
enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat}
•
Ngầm định : tên đầu tiên trong tập liệt kê có giá trị là 0.
Các giá trị kế tiếp tự động tăng lên 1. Trong ví dụ trên
Sun = 0, Mon = 1, Tue = 2, và tiếp theo.
•
Có khả năng thiết lập giá trị cho từng phần tử trong tập
liệt kê.
•
enum Days {Sun = 1, Mon, Tue, Wed = 57, Thu, Fri, Sat}
•
Trong ví dụ trên Sun = 1, Mon = 2, Tue =
3, Wed = 57, Thu = 58, Fri = 59, Sat =
60
•
Cũng có thể gán 1 giá trị cho nhiều phần
tử khác nhau trong 1 tập liệt kê.
•
enum Days {Sat = 0, Sun = 0, Mon, Tue, Wed, Thu,
Fri}
• Sat=0,Sun=0, Mon=1,Tue=2,….Fri=5.
• Ngầm định : các phần tử trong tập liệt kê
tương ứng với 1 giá trị kiểu int . Tuy vậy,
có thể sử dụng 1 kiểu nguyên khác.
•
enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat}????//int
enum Days : int {Sun, Mon, Tue, Wed, Thu, Fri,
Sat}????//tương đương
enum Days : short {Sun, Mon, Tue, Wed, Thu, Fri, Sat}
Days dayOfWeek;
dayOfWeek = Days.Sun;
Console.WriteLine("The day of the week is
{0}",dayOfWeek);
dayOfWeek = Days.Fri;
Console.WriteLine("The day of the week is
{0}",dayOfWeek);
Console.WriteLine("Friday has value {0}",(int) dayOfWeek);
} } }
•
Kết quả in ra :
The day of the week is Sun
The day of the week is Fri
Friday has value 6
•
Ngầm định : Phương thức WriteLine sẽ
in ra tên phần tử trong kiểu liệt kê.
Trong ví dụ trên sẽ in ra Sun và Fri , chứ
không in ra 1 và 6.
•
Để in giá trị ứng với 1 phần tử kiểu liệt
kê, ta phải thực hiện ép kiểu.
Hằng - Constants
•
Thường có nhu cầu về việc thể hiện các
đại lương có giá trị không đổi trong khi
chương trình thi hành
•