Bài giảng Lập trình hướng đối tượng - Chương 1: Ôn các kiến thức về cú pháp ngôn ngữ VC#

Chương 1  
Ôn các kiến thức về cú pháp ngôn ngữ VC#  
1.0 Dẫn nhập  
1.1 Tổng quát về máy tính và ngôn ngữ VC#  
1.2 Tập ký tự cơ bản của ngôn ngữ VC#  
1.3 Extended Backus-Naur Form (EBNF) notation  
1.4 Cú pháp ₫ịnh nghĩa tên nhận dạng (Name)  
1.5 Cú pháp ₫ịnh nghĩa dấu ngăn (Seperator)  
1.6 Cú pháp ₫ịnh nghĩa biểu thức  
1.7 Qui trình tính biểu thức  
1.8 Các lệnh ₫ịnh nghĩa các thành phần phần mềm  
1.9 Các lệnh thực thi  
1.10 Kết chương  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 1  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.0 Dẫn nhập  
Chương này sẽ tóm tắt lại 1 số kiến thức cơ bản về cú pháp của  
ngôn ngữ VC# hầu giúp các SV có góc nhìn tổng thể và hệ thống  
về ngôn ngữ VC#, nhờ ₫ó có nhiều thuận lợi hơn trong việc học  
các kiến thức của môn học này.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 2  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.1 Tổng quát về máy tính và ngôn ngữ VC#  
Máy tính số là thiết bị ₫ặc biệt, nó là thiết bị tổng quát hóa, nghĩa  
là có thể thực hiện nhiều công việc khác nhau. Ta có thể nói máy  
tính số là thiết bị vạn năng.  
Vậy tại 1 thời ₫iểm xác ₫ịnh, máy tính thực hiện công việc gì ? Nó  
không làm gì cả nếu con người không yêu cầu cụ thể nó.  
Làm sao ₫ể con người có thể yêu cầu máy tính thực hiện 1 công  
việc nào ₫ó ? Ta phải viết chương trình giải quyết công việc tương  
ứng rồi ₫ưa vào máy và nhờ máy chạy dùm.  
Viết chương trình là qui trình lớn và dài hạn gồm nhiều bước, trong  
₫ó các bước chính yếu là : xác ₫ịnh chính xác các chức năng của  
chương trình, phân tích cách giải quyết từng chức năng, tìm thuật  
giải chi tiết ₫ể giải quyết từng chức năng, ₫ổi thuật giải chi tiết từ  
ngôn ngữ ₫ời thường thành ngôn ngữ lập trình cho máy hiểu.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 3  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.1 Tổng quát về máy tính và ngôn ngữ VC#  
Ngôn ngữ lập trình là ngôn ngữ giao tiếp giữa người và máy. Học  
ngôn ngữ lập trình cũng giống như học ngôn ngữ tự nhiên, nghĩa là  
học tuần tự các thành phần của ngôn ngữ từ thấp ₫ến cao như :  
. Tập ký tự cơ bản  
. Cú pháp xây dựng từ (word). Từ ₫ược dùng ₫ể ₫ặt tên nhận  
dạng cho từng phần tử cấu thành chương trình như hằng gợi  
nhớ, biến, hàm chức năng, class ₫ối tượng,…  
. Cú pháp xây dựng biểu thức. Biểu thức (công thức toán học)  
miêu tả 1 quá trình tính toán tuần tự nhiều phép toán trên  
nhiều dữ liệu ₫ể tạo ra kết quả tính toán.  
. Cú pháp xây dựng từng câu lệnh : có 2 loại câu lệnh : lệnh ₫ịnh  
nghĩa và lệnh thực thi :  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 4  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.1 Tổng quát về máy tính và ngôn ngữ VC#  
Lệnh ₫ịnh nghĩa ₫ược dùng ₫ể ₫ịnh nghĩa và tạo mới phần  
tử cấu thành phần mềm. Thí dụ lệnh ₫ịnh nghĩa biến, ₫ịnh  
nghĩa hằng gợi nhớ, ₫ịnh nghĩa kiểu, ₫ịnh nghĩa hàm chức  
năng, …  
Lệnh thực thi miêu tả 1 hành ₫ộng cụ thể cần phải thực  
hiện. Thí dụ lệnh gán, lệnh kiểm tra ₫iều kiện luận lý if, …  
. Cú pháp ₫ặc tả 1 hàm chức năng  
. Cú pháp ₫ặc tả 1 class chức năng  
. Cú pháp ₫ặc tả 1 chương trình.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 5  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.2 Tập ký tự cơ bản của ngôn ngữ VC#  
Ngôn ngữ VC# hiểu và dùng tập ký tự Unicode. Cụ thể trên  
Windows, mỗi ký tự Unicode dài 2 byte (16 bit) => có 65536 ký tự  
Unicode khác nhau trên Windows.  
Mặc dù vậy, VC# dùng chủ yếu các ký tự :  
chữ tiếng Anh (a-zA-Z), '_',  
ký tự số (0-9),  
khoảng trắng và các dấu ngăn như Tab (gióng cột), CR (quay về  
₫ầu dòng), LF (xuống dòng).  
các ký tự ₫ặc biệt ₫ể miêu tả phép toán như +, -, *, /, =, !, (, )  
Các ký tự khác, nhất là các ký tự có mã > 256 chỉ ₫ược dùng trong  
lệnh chú thích và chuỗi văn bản. Các ký tự có dấu tiếng Việt có mã  
từ 7840-7929.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 6  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.3 Extended Backus-Naur Form (EBNF) notation  
Ta sẽ dùng qui ước EBNF ₫ể miêu tả cú pháp xây dựng các phần tử  
của ngôn ngữ VC#. Cụ thể ta sẽ dùng các qui ước EBNF sau ₫ây :  
. #xN, trong ₫ó N là chuỗi ký tự thập lục phân. Qui ước này miêu  
tả 1 ký tự có mã thập lục phân tương ứng. Thí dụ ta viết #x3e  
₫ể miêu tả ký tự >.  
. [a-zA-Z], [#xN-#xN], trong ₫ó N là chuỗi ký tự thập lục phân.  
Qui ước này miêu tả 1 ký tự thuộc danh sách liệt kê các ký tự có  
mã liên tục. Thí dụ ta viết [0-9] ₫ể miêu tả 1 ký tự số thập phân  
từ 0 ₫ến 9.  
. [agn], [^#xN#xN#xN], trong ₫ó N là chuỗi ký tự thập lục  
phân. Qui ước này miêu tả 1 ký tự thuộc danh sách liệt kê các  
ký tự rời rạc. Thí dụ ta viết [<@] ₫ể miêu tả 1 ký tự hoặc là <  
hay @.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 7  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.3 Extended Backus-Naur Form (EBNF) notation  
. [^a-zA-Z], [^#xN-#xN], trong ₫ó N là chuỗi ký tự thập lục  
phân. Qui ước này miêu tả 1 ký tự không thuộc danh sách liệt  
kê các ký tự có mã liên tục. Thí dụ ta viết [^0-9] ₫ể miêu tả 1  
ký tự bất kỳ nhưng không phải là số thập phân từ 0 ₫ến 9.  
. [^agn], [^#xN#xN#xN], trong ₫ó N là chuỗi ký tự thập lục  
phân. Qui ước này miêu tả 1 ký tự không thuộc danh sách liệt  
kê các ký tự rời rạc. Thí dụ ta viết [^<@] ₫ể miêu tả 1 ký tự  
bất kỳ nhưng không phải là < hay @.  
. "string" hay 'string'. Qui ước này miêu tả chuỗi ký tự có nội dung  
nằm trong 2 dấu nháy kép hay nháy ₫ơn. Thí dụ ta viết "DHBK"  
hoặc 'DHBK' ₫ể miêu tả chuỗi ký tự DHBK.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 8  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.3 Extended Backus-Naur Form (EBNF) notation  
. A? miêu tả có từ 0 tới 1 lần A. Thí dụ S? miêu tả có từ 0 tới 1  
phần tử S.  
. A+ miêu tả có từ 1 tới n lần A. Thí dụ S+ miêu tả có từ 1 tới n  
phần tử S.  
. A* miêu tả có từ 0 tới n lần A. Thí dụ S* miêu tả có từ 0 tới n  
phần tử S.  
. A B miêu tả phần tử A rồi tới phần tử B.  
. A | B miêu tả chọn lựa A hay B.  
. A - B miêu tả chuỗi thỏa A nhưng không thỏa B.  
. (expression). Qui ước này miêu tả kết quả của việc tính biểu  
thức. Thí dụ (DefStatement | ExeStatement) ₫ể miêu tả sự tồn  
tại của phần tử DefStatement hay ExeStatement.  
. /* ... */ miêu tả chuỗi chú thích.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 9  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.4 Cú pháp ₫ịnh nghĩa tên nhận dạng (Name)  
. Mỗi phần tử trong chương trình ₫ều ₫ược nhận dạng bởi 1 tên nhận  
dạng riêng biệt. Tên là 1 chuỗi từ 1 tới nhiều ký tự, ký tự ₫ầu phải  
là ký tự chữ hay dấu _, các ký tự còn lại có thể là chữ, dấu _ hay số.  
Độ dài maximum của tên là 255 ký tự. Cú pháp ₫ịnh nghĩa tên của  
VC# ₫ược viết theo EBNF bằng 3 luật sinh như sau :  
Name ::= NameStartChar (NameChar)*  
NameStartChar ::= [a-zA-Z_]  
NameChar ::= NameStartChar | [0-9]  
. Thí dụ if, do, while, switch, ... là những tên viết ₫úng cú pháp và  
₫ược ngôn ngữ dùng ₫ể nhận dạng các lệnh thực thi. intTuoi,  
dblX1, XuatKetqua,… là những tên viết ₫úng cú pháp bởi người lập  
trình.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 10  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.5 Cú pháp ₫ịnh nghĩa dấu ngăn (Seperator)  
. Cú pháp miêu tả các phần tử lớn hơn thường có ₫iểm chung là  
phần tử lớn gồm tuần tự nhiều phần tử nhỏ hợp lại theo 1 thứ tự  
xác ₫ịnh.  
. Thường ta cần từ 1 tới n dấu ngăn nằm giữa các phần tử nhỏ kề  
nhau ₫ể ngăn chúng ra. Cú pháp miêu tả chuỗi từ 1 ₫ến nhiều ký  
tự ngăn cách là :  
S ::= (#x20 | #x9 | #xD | #xA | Comment)+  
Comment ::= InLineComment | OutofLineComment  
InLineComment ::= "//" [^#xD#xA]*  
OutofLineComment ::= "/*" (Char* - (Char* "*/" Char*)) "*/"  
Thí dụ :  
//₫ây là chú thích trên 1 dòng  
/* còn ₫ây là  
chú thích trên nhiều dòng */  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 11  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.6 Cú pháp ₫ịnh nghĩa biểu thức  
. Ta ₫ã biết trong toán học công thức là phương tiện miêu tả 1 qui  
trình tính toán nào ₫ó trên các số.  
. Trong VC# (hay ngôn ngữ lập trình khác), ta dùng biểu thức ₫ể  
miêu tả qui trình tính toán nào ₫ó trên các dữ liệu biểu thức  
cũng giống như công thức toán học, tuy nó tổng quát hơn (xử lý  
trên nhiều loại dữ liệu khác nhau) và phải tuân theo qui tắc cấu tạo  
khắt khe hơn công thức toán học.  
. Để hiểu ₫ược biểu thức, ta cần hiểu ₫ược các thành phần của nó :  
Các toán hạng : các biến, hằng dữ liệu,...  
Các phép toán (toán tử) tham gia biểu thức : +,-,*,/,...  
Qui tắc kết hợp toán tử và toán hạng ₫ể tạo biểu thức.  
Qui trình mà máy dùng ₫ể tính trị của biểu thức.  
Kiểu của biểu thức là kiểu của kết quả tính toán biểu thức.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 12  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.6 Cú pháp ₫ịnh nghĩa biểu thức  
. Biểu thức cơ bản (hay toán hạng) là phần tử nhỏ nhất cấu thành  
biểu thức bất kỳ. Một trong các phần tử sau ₫ược gọi là biểu thức cơ  
bản :  
. Biến, thuộc tính của ₫ối tượng  
. Hằng gợi nhớ,  
. Giá trị dữ liệu cụ thể thuộc kiểu nào ₫ó (nguyên, thực,..)  
. Lời gọi hàm hay gởi thông ₫iệp,  
. 1 biểu thức ₫ược ₫óng trong 2 dấu ().  
. Qui trình tạo biểu thức là qui trình lặp ₫ệ qui : ta kết hợp từng toán  
tử với các toán hạng của nó, rồi ₫óng trong 2 dấu () ₫ể biến nó trở  
thành biểu thức cơ bản, rồi dùng nó như 1 toán hạng ₫ể xây dựng  
biểu thức lớn hơn và phức tạp hơn...  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 13  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.6 Cú pháp ₫ịnh nghĩa biểu thức  
. Dựa theo số toán hạng tham gia, có 3 loại toán tử thường dùng  
nhất :  
toán tử 1 ngôi : chỉ cần 1 toán hạng. Ví dụ toán tử '-' ₫ể tính  
phần âm của 1 ₫ại lượng.  
toán tử 2 ngôi : cần dùng 2 toán hạng. Ví dụ toán tử '*' ₫ể tính  
tích của 2 ₫ại lượng.  
toán tử 3 ngôi : cần dùng 3 toán hạng. Ví dụ toán tử 'c?v1:v2' ₫ể  
kiểm tra ₫iều kiện c hầu lấy kết quả v1 hay v2.  
. VC# thường dùng các ký tự ₫ặc biệt ₫ể miêu tả toán tử. Ví dụ :  
toán tử '+' : cộng 2 ₫ại lượng.  
toán tử '-' : trừ ₫ại lượng 2 ra khỏi ₫ại lượng 1.  
toán tử '*' : nhân 2 ₫ại lượng.  
toán tử '/' : chia ₫ại lượng 1 cho ₫ại lượng 2...  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 14  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.6 Cú pháp ₫ịnh nghĩa biểu thức  
. Trong vài trường hợp, VC# dùng cùng 1 ký tự ₫ặc biệt ₫ể miêu tả  
nhiều toán tử khác nhau. Trong trường hợp này, ngữ cảnh sẽ ₫ược  
dùng ₫ể giải quyết nhằm lẫn.  
. Ngữ cảnh thường là kiểu và số lượng các toán hạng tham gia.  
. Thí dụ :  
-x // - là phép toán 1 ngôi  
a-b // - là phép toán 2 ngôi  
. Trong vài trường hợp khác, VC# dùng chuỗi nhiều ký tự ₫ể miêu tả  
1 toán tử. Thí dụ :  
a >= b // >= là toán tử so sánh lớn hơn hay bằng  
a++ // ++ là toán tử tăng 1 ₫ơn vị  
a == b // == là toán tử so sáng bằng (không phải là toán tử gán)  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 15  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.6 Cú pháp ₫ịnh nghĩa biểu thức  
. Giá trị luận lý : true | false  
. Giá trị thập phân nguyên : (+|-)? (decdigit)+ (Vd. 125, -548)  
. Giá trị thập lục phân nguyên : (+|-)? "0x" (hexdigit)+ (0xFF)  
. Giá trị bát phân nguyên : (+|-)? "0" (ocdigit)+ (0577)  
. Giá trị nhị phân nguyên : (+|-)? (bidigit)+ "b" (101110b)  
. Giá trị thập phân thực :  
(+|-)? (decdigit)+ ("." (decdigit)*)? ("E" (+|-)? (decdigit)+)?  
Vd : 3.14159, 0.31459e1,-83.1e-9,...  
. Giá trị chuỗi : "Nguyen Van A"  
"\"Nguyen Van A\""  
. Lưu ý dùng ký tự '\' ₫ể thực hiện cơ chế 'escape' dữ liệu hầu giải  
quyết nhầm lẫn.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 16  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.7 Qui trình tính biểu thức  
. Một biểu thức có thể chứa nhiều phép toán, qui trình tính toán biểu  
thức như sau : duyệt từ trái sang phải, mỗi lần gặp 1 phép toán (ta  
gọi là CurrentOp) thì phải nhìn trước phép toán ₫i ngay sau nó  
(SuccessorOp), so sánh ₫ộ ưu tiên của 2 phép toán và ra quyết ₫ịnh  
như sau :  
nếu không có SuccessorOp thì tính ngay phép toán CurrentOp  
(trên 1, 2 hay 3 toán hạng của nó).  
nếu phép toán CurrentOp có ₫ộ ưu tiên cao hơn phép toán  
SuccessorOp thì tính ngay phép toán CurrentOp (trên 1, 2 hay 3  
toán hạng của nó).  
nếu phép toán CurrentOp có ₫ộ ưu tiên bằng phép toán  
SuccessorOp và kết hợp trái thì tính ngay phép toán CurrentOp  
(trên 1, 2 hay 3 toán hạng của nó).  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 17  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.7 Qui trình tính biểu thức  
các trường hợp còn lại thì cố gắng thực hiện phép toán  
SuccessorOp trước. Việc cố gắng này cũng phải tuân theo các  
qui ₫ịnh trên,...  
Khi phép toán SussesorOp ₫ược thực hiện xong thì phép toán  
ngay sau SuccessorOp trở thành phép toán ₫i ngay sau  
CurrentOp việc kiểm tra xem CurrentOp có ₫ược thực hiện hay  
không sẽ ₫ược lặp lại.  
Môn : Lập trình hướng ₫ối tượng  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 18  
Khoa Khoa học & Kỹ thuật Máy tính  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.7 Qui trình tính biểu thức  
Bảng liệt kê ₫ộ ưu tiên của các toán tử từ trên xuống = từ cao xuống  
thấp :  
Operator  
[ ]  
( )  
( )  
Name or Meaning  
Array subscript  
Function call  
Associativity  
Left to right  
Left to right  
None  
Conversion  
.
Member selection (object) Left to right  
++  
--  
new  
typeof  
checked  
unchecked  
Postfix increment  
Postfix decrement  
Allocate object  
Type of  
None  
None  
None  
Môn : Lập trình hướng ₫ối tượng  
Khoa Khoa học & Kỹ thuật Máy tính  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 19  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
1.7 Qui trình tính biểu thức  
Operator  
++  
--  
+
Name or Meaning  
Prefix increment  
Prefix decrement  
Unary plus  
Associativity  
None  
None  
None  
–
!
Arithmetic negation (unary) None  
Logical NOT  
None  
~
&
Bitwise complement  
Address of  
None  
None  
sizeof ( )  
typeid( )  
(type)  
Size of type  
type name  
Type cast (conversion)  
None  
None  
Right to left  
Môn : Lập trình hướng ₫ối tượng  
Khoa Khoa học & Kỹ thuật Máy tính  
Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#  
Slide 20  
Trường ĐH Bách Khoa Tp.HCM  
© 2010  
Tải về để xem bản đầy đủ
pdf 48 trang myanh 24600 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hướng đối tượng - Chương 1: Ôn các kiến thức về cú pháp ngôn ngữ VC#", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_1_on_cac_kien_thu.pdf