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#

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

pdf 48 trang phuongnguyen 5800
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

Tóm tắt nội dung 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#

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
Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
© 2010 Slide 1
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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 2
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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 3
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 :
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 4
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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 5
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áckýtựkhác,nhấtlàcáckýtựcómã>256chỉ₫ượcdùngtrong
 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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 6
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ướcnàymiêutả1kýtựthuộcdanhsáchliệtkêcácký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 @.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 7
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ướcnàymiêutảchuỗikýtựcónộidung
 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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 8
1.3 Extended Backus-Naur Form (EBNF) notation
 . A? miêutảcótừ0tới1lầnA.ThídụS?miêutảcótừ0tới1
 phần tử S.
 . A+ miêutảcótừ1tớinlầnA.ThídụS+miêutảcótừ1tớin
 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.
 . ABmiêu tả phần tử A rồi tới phần tử B.
 . A|Bmiêu tả chọn lựa A hay B.
 . A-Bmiê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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 9
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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 10
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 */
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 11
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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 12
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...
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 13
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...
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 14
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)
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 15
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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 16
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ó).
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 17
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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 18
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 Associativity
[ ] Array subscript Left to right
( ) Function call Left to right
( ) Conversion None
. Member selection (object) Left to right
++ Postfix increment None
-- Postfix decrement None
new Allocate object None
typeof Type of
checked
unchecked
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 19
1.7 Qui trình tính biểu thức
Operator Name or Meaning Associativity
++ Prefix increment None
-- Prefix decrement None
+ Unary plus None
– Arithmetic negation (unary) None
! Logical NOT None
~ Bitwise complement None
& Address of None
sizeof ( ) Size of type None
typeid( ) type name None
(type) Type cast (conversion) Right to left
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 20
1.7 Qui trình tính biểu thức
Operator Name or Meaning Associativity
* Multiplicatio ...  2010 Slide 22
1.7 Qui trình tính biểu thức
Operator Name or Meaning Associativity
<<= Left-shift assignment Right to left
>>= Right-shift assignment Right to left
&= Bitwise AND assignment Right to left
|= Bitwise inclusive OR assignment Right to left
^= Bitwise exclusive OR assignment Right to left
?? null-coalescing
, Comma Left to right
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 23
1.7 Qui trình tính biểu thức
. Thí dụ :
dblDv = dblDv + intpn * d * pow(10,-bytPosDigit);
 1
 2
 5
 4 3
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 24
1.8 Các lệnh ₫ịnh nghĩa thành phần phần mềm
Định nghĩa hằng gợi nhớ
. Cú pháp ₫ịnh nghĩa hằng gợi nhớ cơ bản :
 ConstDef ::= "const" S TName S Name S? "=" S? Expr S? ";"
 Thí dụ :
 const double PI = 3.1416;
Định nghĩa biến cục bộ trong hàm
. Cú pháp ₫ịnh nghĩa biến cục bộ trong hàm :
 VarDef ::= TName S Name (S? "=" S? Expr S?)? ";"
 Thí dụ :
 double epsilon = 0.000001;
Định nghĩa kiểu người dùng (họcchitiếttrongmônKỹthuậtlập
trình và các chương sau của môn này)
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 25
1.8 Các lệnh ₫ịnh nghĩa thành phần phần mềm
Định nghĩa hàm hay tác vụ chức năng (học chi tiết trong môn Kỹ
thuật lập trình và các chương sau của môn này)
Định nghĩa chương trình (học chi tiết trong môn Kỹ thuật lập trình
và các chương sau của môn này)
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 26
1.9 Các lệnh thực thi
. Ta ₫ã biết giải thuật ₫ể giải quyết 1 vấn ₫ề nào ₫ó là trình tự các
 công việc nhỏ hơn, nếu ta thực hiện ₫úng trình tự các công việc nhỏ
 hơn này thì sẽ giải quyết ₫ược vấn ₫ề lớn.
. VC# (hay ngôn ngữ lập trình khác) cung cấp 1 tập các lệnh thực
 thi, mỗi lệnh thực thi ₫ược dùng ₫ể miêu tả 1 công việc nhỏ trong 1
 giải thuật với ý tưởng chung như sau :
 Nếu tồn tại lệnh thực thi miêu tả ₫ược công việc nhỏ của giải
 thuật thì ta dùng lệnh thực thi này ₫ể miêu tả nó.
 Nếu công việc nhỏ của thuật giải vẫn còn quá phức tạp và
 không có lệnh thực thi nào miêu tả ₫ược thì ta dùng lệnh gọi
 hàm (function, method) trong ₫ó hàm là trình tự các lệnh thực
 hiện công việc nhỏ này...
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 27
1.9 Các lệnh thực thi
. Hầu hết các lệnh thực thi ₫ều có chứa biểu thức và dùng kết quả
 của biểu thức này ₫ể quyết ₫ịnh công việc kế tiếp cần ₫ược thực
 hiện ta thường gọi các lệnh thực thi là các cấu trúc ₫iều khiển.
. Để dễ học, dễ nhớ và dễ dùng, VC# (cũng như các ngôn ngữ khác)
 chỉ cung cấp 1 số lượng rất nhỏ các lệnh thực thi :
. Nhóm lệnh không ₫iều khiển :
 Lệnh gán dữ liệu vào 1 biến.
. Nhóm lệnh tạo quyết ₫ịnh/rẽ nhánh :
 Lệnh kiểm tra ₫iều kiện luận lý if ... else ...
 Lệnh kiểm tra ₫iều kiện số học switch
 Lệnh goto
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 28
1.9 Các lệnh thực thi
. Nhóm lệnh lặp :
 Lệnh lặp : while
 Lệnh lặp : for, foreach
 Lệnh lặp : do ... while
. Nhóm lệnh gọi hàm :
 Lệnh gọi hàm
 Lệnh thoát khỏi cấu trúc ₫iều khiển : break, continue
 Lệnh thoát khỏi hàm : return, throw
. Nhóm lệnh xử lý lỗi theo cơ chế ngoại lệ (Exception) :
 Lệnh try
 Mệnh ₫ề catch của lệnh try
 Mệnh ₫ề finally của lệnh try
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 29
1.9 Các lệnh thực thi
Lệnh gán : là lệnh ₫ược dùng nhiều nhất trong chương trình, chức
năng của lệnh này là gán giá trị dữ liệu vào 1 vùng nhớ ₫ể lưu trữ hầu
sử dụng lại nó sau ₫ó. Cú pháp :
 lvar S? "=" S? Expr S? ";"
 biểu thức Expr bên phải sẽ ₫ược tính ₫ể tạo ra kết quả (1 giá trị cụ
 thể thuộc 1 kiểu cụ thể), giá trị này sẽ ₫ược gán vào ô nhớ do lvar
 qui ₫ịnh. Trước khi gán, VC# sẽ kiểm tra kiểu của 2 phần tử (qui
 tắc kiểm tra sẽ ₫ược trình bày sau).
 lvar có thể là biến ₫ơn (intTuoi), phần tử của biến array
 (matran[2,3]), thuộc tính của ₫ối tượng (rect.dorong).
 Thí dụ :
 x1 = (-b-Math.sqrt(delta))/2/a;
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 30
1.9 Các lệnh thực thi
Lệnh kiểm tra ₫iều kiện luận lý if ... else : cho phép dựa vào kết quả
luận lý (tính ₫ược từ 1 biểu thức luận lý) ₫ể quyết ₫ịnh thi hành 1
trong 2 nhánh lệnh. Sau khi thực hiện 1 trong 2 nhánh lệnh, chương
trình sẽ tiếp tục thi hành lệnh ngay sau lệnh IF. Cú pháp :
 "if" S? "(" S? Expr S? ")" S? Statement S? ("else" S Statement)?
 Thí dụ :
 if (delta <0) //báo sai
 System.Console.Writeln ("Phuong trinh vo nghiem");
 else { //tính 2 nghiệm
 x1 = (-b-sqrt(delta))/2/a;
 x2 = (-b+sqrt(delta))/2/a;
 }
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 31
1.9 Các lệnh thực thi
Lệnh kiểm tra ₫iều kiện số học switch : cho phép dựa vào kết quả số
học (tính ₫ược từ 1 biểu thức số học) ₫ể quyết ₫ịnh thi hành 1 trong n
nhánh lệnh. Sau khi thực hiện 1 trong n nhánh lệnh, chương trình sẽ
tiếp tục thi hành lệnh ngay sau lệnh switch. Cú pháp :
 "switch" S? "(" Expr S? ")" S? "{" S?
 "case" S expr1 S? ":" S? Statement*
 "case" S expr2 S? ":" S? Statement*
 ...
 "case" S exprn S? ":" S? Statement*
 ("default" S? ":" S? Statement*)? S?
 "}"
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 32
1.9 Các lệnh thực thi
 Thí dụ :
 switch (diem) {
 case 0 : case 1 : case 2 : case 3 : case 4 :
 Console.Writeln("Quá yếu"); break;
 case 5 : case 6 :
 Console.Writeln("Trung bình"); break;
 case 7 : case 8 :
 Console.Writeln("Khá"); break;
 case 9 : case 10 :
 Console.Writeln("Giỏi"); break;
 }
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 33
1.9 Các lệnh thực thi
Lệnh lặp do... while : chophéplặpthựchiện1côngviệcnào₫ótừ1
tới n lần theo 1 ₫iều kiện kiểm soát. Cú pháp :
 "do" S Statement S? "while" S? "(" S? Expr S? ")" S? ";"
 Thí dụ :
 int i = 1;
 long giaithua = 1;
 do { do
 i = i+1; giaithua *= (++i);
 giaithua = giaithua*i; while (i < n);
 } while (i < n)
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 34
1.9 Các lệnh thực thi
Lệnh lặp while : cho phép lặp thực hiện 1 công việc nào ₫ó từ 0 tới n
lần theo 1 ₫iều kiện kiểm soát. Cú pháp :
 "while" S? "(" S? Expr S? ")" S? Statement
 Thí dụ :
 int i = 1;
 long giaithua = 1;
 while (i < n) { while (i < n) giaithua *= (++i);
 i = i+1;
 giaithua = giaithua*i;
 }
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 35
1.9 Các lệnh thực thi
Lệnh lặp for : cho phép lặp thực hiện 1 công việc nào ₫ó từ 0 tới n lần
theo 1 ₫iều kiện kiểm soát số học. Cú pháp :
 "for" S? "(" S? init-expr? S? ";" S? cond-expr? ";" S? loop-expr? S? ")"
 S? Statement
 Thí dụ :
 int i;
 long giaithua = 1;
 for (i=2; i <=n; i++) { for (i=2; i <=n; i++)
 giaithua = giaithua*i; giaithua *= i;
 }
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 36
1.9 Các lệnh thực thi
Lệnh lặp foreach : cho phép lặp thực hiện 1 công việc nào ₫ó trên
từng phần tử của 1 tập hợp xác ₫ịnh. Cú pháp :
 "foreach" "(" elemType elem "in" setVar ")" Statement
Thí dụ :
 Sinhvien[] dsSV;
 ...
 foreach (Sinhvien sv in dsSV) {
 //xử lý sinh viên sv
 }
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 37
1.9 Các lệnh thực thi
Các lệnh lồng nhau : Như ta ₫ã thấy trong cú pháp của hầu hết các
lệnh VC# ₫ều có chứa thành phần Statement, ₫ây là 1 lệnh thực thi
VC#bấtkỳ tagọicúpháp₫ịnhnghĩalệnhVC#làlặp₫ệqui tạora
các lệnh VC# lồng nhau. Ta gọi cấp ngoài cùng là cấp 1, các lệnh
trong thân lệnh cấp 1 ₫ược gọi là lệnh cấp 2, các lệnh trong thân lệnh
cấp 2 ₫ược gọi là lệnh cấp 3,... Để dễ ₫ọc, các lệnh cấp thứ i nên gióng
cộtnhời-1kýtựTab.
Ví dụ : ₫oạn chương trình tính ma trận tổng của 2 ma trận
const int N = 100;
double[,] a, b, c;
...
for (i = 0; i <N; i++) //duyệt theo hàng
 for (j = 0; j<N; j++) //duyệt theo cột
 c[i,j] = a[i,j] + b[i,j];
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 38
1.9 Các lệnh thực thi
Vấn ₫ề thoát ₫ột ngột khỏi cấp ₫iều khiển : Trong cú pháp của hầu
hết các lệnh VC# ₫ều có chứa thành phần Statement mà ₫a số là phát
biểu kép chứa nhiều lệnh khác. Theo trình tự thi hành thông thường,
các lệnh bên trong phát biểu kép sẽ ₫ược thực thi tuần tự, hết lệnh
này ₫ến lệnh khác cho ₫ến lệnh cuối, lúc này thì việc thi hành lệnh
cha mới kết thúc. Tuy nhiên trong 1 vài trạng thái thi hành ₫ặc biệt,
ta muốn thoát ra khỏi lệnh cha ₫ột ngột chứ không muốn thực thi hết
các lệnh con trong danh sách. Để phục vụ yêu cầu này, VC# cung cấp
lệnh break với cú pháp ₫ơn giản sau ₫ây :
break;
Lưu ý lệnh break chỉ cho phép thoát khỏi cấp trong cùng (lệnh chứa
lệnh break. Để thoát trực tiếp ra nhiều cấp 1 cách tự do, ta dùng lệnh
goto với cú pháp :
goto stat_label; //trong ₫ó stat_label là nhãn của lệnh cần goto ₫ến.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 39
1.9 Các lệnh thực thi
Vấn ₫ề thoát ₫ột ngột khỏi cấp ₫iều khiển : phân biệt lệnh break và
goto
...
for (i=0; i < 1000; i++) {
 for (j=0; j < 1000; j++) {
 ...
 if (cond1) break;
 if (cond2) goto L1;
 ...
 ...
 }
 ...
}
L1 : ...
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 40
1.9 Các lệnh thực thi
Vấn ₫ề thoát ₫ột ngột khỏi cấp ₫iều khiển : phân biệt lệnh break và
continue
...
for (i=0; i < 1000; i++) {
 ...
 if (cond1) continue;
 ...
 if (cond2) break;
 ...
}
...
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 41
1.9 Các lệnh thực thi
Vấn ₫ề thoát ₫ột ngột khỏi hàm : Như ta ₫ã biết hàm là danh sách các
lệnh thực thi ₫ể thực hiện 1 chức năng nào ₫ó. Thông thường thì danh
sách lệnh này sẽ ₫ược thực hiện từ ₫ầu ₫ến cuối rồi ₫iều khiển sẽ
₫ược trả về lệnh gọi hàm này, tuy nhiên ta có quyền trả ₫iều khiển về
lệnh gọi hàm bất cứ ₫âu trong danh sách lệnh của hàm. Cú pháp lệnh
trả ₫iều khiển như sau :
 "return" S? ";" // nếu hàm có kiểu trả về là void
 "return" S? "(" S? expr S? ")" S? ";" // nếu hàm có kiểu trả về void
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 42
1.9 Các lệnh thực thi
Vấn ₫ề thoát ₫ột ngột khỏi hàm :
... int func1() {
kq = func1(); 
 if (cond) return error_code1;
 return OK_code;
 }
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 43
1.9 Các lệnh thực thi
Vấn ₫ề thoát ₫ột ngột khỏi hàm :
Thuật giải gốc : int func1() {
1. thực hiện chức năng 1 
2. thực hiện chức năng 2 if (cond1) return error_code1;
3. thực hiện chức năng 3 if (cond2) return error_code2;
Dịch ra mã nguồn : return OK_code;
func1(); }
func2();
func3();
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 44
1.9 Các lệnh thực thi
Dịch ra mã nguồn :
int kq = func1(); int func1() {
switch (kq) { 
case error_code1 : if (cond1) return error_code1;
 //₫oạn code giải quyết lỗi 1 if (cond2) return error_code2;
case error_code2 : 
 //₫oạn code giải quyết lỗi 2 return OK_code;
} }
kq = func2();
//kiểm tra và xử lý lỗi
kq = func3();
//kiểm tra và xử lý lỗi
 code mã nguồn quá phức tạp và khó hiểu so với giải thuật gốc
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 45
1.9 Các lệnh thực thi
Thoát khỏi hàm theo cơ chế Exception : ₫ây là phương án mới ₫ể khắc
phục việc thoát khỏi hàm bằng lệnh return.
Dịch ra mã nguồn : void func1() {
try { 
 func1(); if (cond1) throw new Exception1("lỗi 1");
 func2(); if (cond2) throw new Exception2("lỗi 2");
 func3(); 
} }
catch (Exception1 e1) {
 //₫oạn code giải quyết loại lỗi Exception1
}
catch (Exception2 e2) {
 //₫oạn code giải quyết loại lỗi Exception2
}
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 46
1.9 Các lệnh thực thi
Thoát khỏi hàm theo cơ chế Exception : ₫ây là phương án mới ₫ể khắc
phục việc thoát khỏi hàm bằng lệnh return.
Dịch ra mã nguồn : void func1() {
void func() { 
 func1(); if (cond1) throw new Exception1("lỗi 1");
 func2(); if (cond2) throw new Exception2("lỗi 2");
 func3(); 
} }
về lệnh try ... catch chứa lệnh gọi hàm func()... Cách xử lý này ₫ược
lặp lại ₫ến hàm Main(), nếu hàm Main() cũng không dùng lệnh try
catch thì OS sẽ tự xử lý Exception dùm (trên Windows là 1 cửa sổ báo
lỗi màu xanh rồi dừng luôn chương trình).
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 47
1.10 Kết chương 
 Chương này ₫ã 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.
 Khoa Khoa học & Kỹ thuật Máy tính Môn : Lập trình hướng ₫ối tượng
 Trường ĐH Bách Khoa Tp.HCM Chương 1 : Ôn các kiến thức về cú pháp ngôn ngữ VC#
 © 2010 Slide 48

File đính kèm:

  • pdfbai_giang_lap_trinh_huong_doi_tuong_chuong_1_on_cac_kien_thu.pdf