Cỏc lệnh điều khiển rẻ nhỏnh khụng điều kiệ n

Một phần của tài liệu Giáo trình lập trình windowns form với c net tập 1 TS lê trung hiếu, ths nguyễn thị minh thi (Trang 86)

2.4.5.1. Lệnh break

Cỳ phỏp:

break;

hay break Nhón;

í nghĩa: Lệnh break dựng để thoỏt tức thời ra khỏi vũng lặp

while, do… while, for hay lệnh rẻ nhỏnh switch chứa nú và thực hiện

lệnh tiếp theo.

 Lệnh break Nhón; dừng vũng lặp tức thời và quay về nhón (Label). Tờn nhón đặt theo quy ước đặt tờn của C#, ghi trong

chương trỡnh cú dạng: Nhón: Lệnh; 2.4.5.2. Lệnh continue Cỳ phỏp: continue; hay continue Nhón;

í nghĩa: Lệnh continue để bỏ qua cỏc lệnh sau continue và quay

trở về đầu vũng lặp chứa nú. Lệnh continue Nhón bỏ qua cỏc lệnh sau

continue và quay về nhón.

2.5. NGOẠI LỆ (EXCEPTION) VÀ XỬ Lí NGOẠI LỆ

Ngoại lệ trong C# là cỏc đối tượng cú kiểu lớp định nghĩa sẵn, biểu diễn trạng thỏi lỗi phỏt sinh trong trường hợp nào đú khi gọi phương thức hay trong trường hợp chia cho 0, cảnh bỏo bộ nhớ

thấp… Một số phương thức định nghĩa sẵn trong trường hợp nào đú

thỡ ngoại lệ sẽ phỏt sinh.

Khi một ngoại lệ phỏt sinh, phải bắt ngoại lệ bởi lệnh try…

catch, nếu khụng chương trỡnh sẽ kết thỳc thực hiện. Lệnh xử lý ngoại

lệ thực hiện thụng qua cỏc từ khoỏ: try, catch, finally và throw.

2.5.1. Lệnh try… catch… finally

Cỳ phỏp:

try {

Lệnh;

}

catch (KiểuNgoạiLệ1 [ĐốiTượngNgoạiLệ 1]) {

Lệnh 1; }

catch (KiểuNgoạiLện [ĐốiTượngNgoạiLệ n]) { Lệnh n; } finally { Lệnh n+1; }

 Lệnh: Cú thể là một hay nhiều lệnh đơn, hay cấu trỳc điều khiển

 Đối tượng ngoại lệ (Exception instance): Là tờn của đối tượng kiểu lớp ngoại lệ, cú thể cú hoặc khụng

í nghĩa:

 Try: Định nghĩa một khối lệnh mà ngoại lệ cú thể xảy ra.  catch: Đi kốm với try, để bắt ngoại lệ. Những cõu lệnh trong

chương trỡnh mà bạn muốn bắt ngoại lệ được đưa vào giữa

khối try, nếu một ngoại lệ xảy ra trong khối try, cỏc lệnh cũn lại trong khối try sẽ được bỏ qua và thõn của mệnh đề catch cú kiểu ngoại lệ tương ứng sẽ được thực hiện. Cú thể cú nhiều mệnh đề catch bắt cỏc kiểu ngoại lệ khỏc nhau.

 finally: Thõn của mệnh đề finally luụn luụn thực hiện ngay trước khi lệnh try kết thỳc, cho dự cú hay khụng cú ngoại lệ, mệnh đề finally cú thể cú hay khụng.

Vớ dụ: using System; class Test {

static void Main () {

int [] arr = new int [5];

for (int x = 0; x < arr.Length; ++x) {

while (true) {

Console.Write ("Enter a value for element {0}: ", x); string str = Console.ReadLine (); int val; try { val = int.Parse (str); } catch (FormatException) {

Console.WriteLine ("Enter an integer value\r\n"); continue;

}

arr[x] = val; break; }

}

int index = 0;

foreach (int val in arr) {

Console.WriteLine ("arr[{0}] = {1}", index, val); ++index; } } } 2.5.2. Lệnh throw Cỳ phỏp:

throw Đối tượng ngoại lệ;

 Đối tượng ngoại lệ (Exception instance): Là một đối tượng

của kiểu ngoại lệ System.Exception, hay những đối tượng được dẫn xuất từ kiểu dữ liệu này. Namespace System chứa

một số cỏc kiểu dữ liệu xử lý ngoại lệ mà chỳng ta cú thể sử

dụng trong chương trỡnh như ArgumentNullException,

InValidCastException, OverflowException…

 Tạo một đối tượng kiểu ngoại lệ bằng toỏn tử new

Vớ dụ: throw new System.Exception ();

í nghĩa: Cõu lệnh throw được đưa vào khối try, cho phộp bạn điều khiển điều kiện phỏt sinh ngoại lệ. Khi gặp lệnh throw, cỏc cõu

lệnh sau throw trong khối try sẽ được bỏ qua, và khối lệnh của mệnh đề catch cú kiểu ngoại lệ tương ứng sẽ được thực hiện.

Vớ dụ: Kiểm tra và bắt lỗi nếu phộp chia cho 0.

using System; class Test {

public static void Main() {

Test t = new Test(); t.TestFunc();

}

public void TestFunc() { try { double a = 5; double b = 2; Console.WriteLine("{0} / {1} = {2}", a, b, DoDivide(a,b)); } catch (System.DivideByZeroException) {

Console.WriteLine("Divide By Zero Exception!"); }

}

public double DoDivide(double a, double b) {

if (b == 0) throw new System.DivideByZeroException(); return a / b;

} }

2.5.3. Cỏc lớp ngoại lệ

Exception là lớp cha của tất cả cỏc ngoại lệ, cung cấp một số cỏc phương thức và thuộc tớnh:

 Thuộc tớnh Message trả về thụng tin phỏt sinh ngoại lệ.

 Thuộc tớnh HelpLink cung cấp một liờn kết để trợ giỳp cho

cỏc tập tin liờn quan đến cỏc ngoại lệ.

 Thuộc tớnh StackTrace cung cấp thụng tin về cõu lệnh lỗi.

Cú hai kiểu ngoại lệ:

 Ngoại lệ phỏt sinh bởi ứng dụng dẫn xuất từ lớp

ApplicationException

 Ngoại lệ phỏt sinh bởi hệ thống dẫn xuất từ lớp

SystemException.

Hai lớp này kế thừa trực tiếp từ lớp Exception. Lớp ngoại lệ bạn định nghĩa nờn dẫn xuất từ lớp ApplicationException.

Cõy phõn cấp cỏc ngoại lệ xõy dựng sẵn kế thừa từ lớp SystemException Object Exception ApplicationException SystemException IndexOutOfRangeException ArrayTypeMismatchException NullReferenceException InvalidOperationException ArgumentException ArgumentNullException ArgumentOutOfRangeException MemberAccessException MethodAccessException ArithmeticException DivideByZeroException NotFiniteNumberException FormatException InvalidCastException OutOfMemoryException StackOverflowException NotSupportedException Bảng 2.5 Cỏc kiểu ngoại lệ Kiểu ngoại lệ Mụ tả Vớ dụ

Exception Lớp cha của tất cả ngoại lệ

SystemException Lớp cha của tất cả cỏc ngoại lệ xõy dựng sẵn

IndexOutOfRangeException

Phỏt sinh khi chỉ số truy

cập phần tử mảng khụng

hợp lệ

ArrayTypeMismatchException Phỏt sinh khi kiểu thành

phần mảng khụng đỳng

NullReferenceException

Phỏt sinh khi truy cập

thành viờn của đối tượng

null

object o = null; o.ToString();

InvalidOperationException

Phỏt sinh bởi phương

thức khi ở trạng thỏi khụng đỳng int? a = default(int?); int b = a.Value; a kiểu Nullable khụng chứa bất kỳ giỏ trị

ArgumentException Lớp cha của tất cả ngoại lệ tham đối

ArgumentNullException

Phỏt sinh bởi phương

thức khụng cho phộp một tham đối là null

String s = null; "Calculate".Index Of (s);

ArgumentOutOfRangeException

Phỏt sinh bởi phương

thức kiểm tra cỏc tham đối

trong phạm vi đó cho

String s = string"; s.Chars[9];

MemberAccessException

Lớp cha của tất cả ngoại

lệ phỏt sinh khi truy cập

thành viờn

MethodAccessException

Phỏt sinh khi truy cập đến phương thức khụng được

truy cập

ArithmeticException Phỏt sinh khi cú lỗi liờn

quan đến cỏc phộp toỏn

DivideByZeroException Phỏt sinh khi chia cho 0

NotFiniteNumberException Phỏt sinh khi số 0 là hữu hạn, khụng hợp lệ

FormatException Phỏt sinh do định dạng

khụng đỳng

InvalidCastException Phỏt sinh khi phộp gỏn khụng hợp lệ

OutOfMemoryException Phỏt sinh khi đầy bộ nhớ

StackOverflowException Phỏt sinh khi tràn stack

NotSupportedException Phỏt sinh khi gọi phương thức khụng tồn tại trong lớp

2.6. LỚP SYSTEM.CONSOLE

Lớp Console bao gồm cỏc phương thức nhập, xuất và định dạng kết xuất, cỏc luồng xử lý lỗi cho cỏc ứng dụng dựa trờn console. Lớp

Console trong phiờn bản .NET 2.0 đó được cải tiến thờm cỏc đặc tớnh mới.

2.6.1. Định dạng kết xuất

Lớp Console cung cấp một số đặc tớnh định dạng kết xuất sau:

 BackgroundColor, ForegroundColor: hai thuộc tớnh này cho phộp bạn thiết lập màu nền và màu chữ cho kết xuất ra màn hỡnh.

 BufferHeight, BufferWidth: hai thuộc tớnh này điều chỉnh

chiều cao và chiều rộng cho buffer của console.

 Clear(): phương thức xúa buffer và vựng hiển thị của

console.

 WindowHeight, WindowWidth, WindowTop, WindowLeft: cỏc thuộc tớnh này điều khiển cỏc chiều cao, rộng, lề trờn, lề

trỏi của console so với buffer.

Vớ dụ: using System; class Program

{

static void Main(string[] args) {

ConfigureCUI(); }

private static void ConfigureCUI() {

Console.Title = "My Application";

Console.ForegroundColor = ConsoleColor.Yellow; Console.BackgroundColor = ConsoleColor.Blue; Console.WriteLine("********************************");

Console.WriteLine("**** Welcome to My Application ****"); Console.WriteLine("********************************");

} }

2.6.2. Nhập và xuất với lớp Console

Lớp Console định nghĩa một tập cỏc phương thức tĩnh để thực hiện việc nhập dữ liệu từ bàn phớm và xuất ra màn hỡnh.

 Phương thức Write() xuất một giỏ trị hay đối tượng ra màn hỡnh. Nếu xuất đối tượng, phương thức ToSring() của đối tượng sẽ chuyển đối tượng thành chuỗi và xuất ra màn hỡnh.

 Phương thức WriteLine() xuất một giỏ trị hay đối tượng ra

màn hỡnh, sau đú xuống dũng.

 Phương thức string ReadLine() trả về chuỗi nhập từ bàn phớm, kết thỳc bởi phớm xuống dũng.

 Phương thức int Read() trả về ký tự nhập từ bàn phớm.

Vớ dụ: Viết chương trỡnh nhập vào họ tờn, và năm sinh với điều kiện họ tờn khụng quỏ 25 ký tự, và năm sinh từ 1980 đến 1985.

using System; class Program {

static void Main(string[] args) {

ConfigureCUI(); Console.ReadLine();

}

private static void ConfigureCUI() {

string s = null; do {

Console.Write("Nhap Ho va ten khong qua 25 ky tu: "); s = Console.ReadLine();

}

while (s.Length>25 || s.Length==0); Console.WriteLine("Ho va ten là : {0}",s); //Nhap nam sinh

while (true) { try {

Console.Write("Nhap nam sinh : "); s = Console.ReadLine();

int ns = int.Parse(s);

if (ns<1980 || ns>1985) throw new FormatException(); Console.WriteLine("Nam sinh la : "+ns);

break; }

catch (FormatException e1) {

Console.WriteLine("Nhap nam sinh tu 1980 -1985"); }

} } }

2.6.3. Định dạng và thiết lập vị trớ kết xuất cho phương thức Write

Trong cỏc vớ dụ, bạn thường xuyờn thấy sự xuất hiện của cỏc ký tự đỏnh dấu {0}, {1}…, được chốn trong chuỗi kết xuất. .Net giới

thiệu một cỏch định dạnh chuỗi mới, cũng khỏ giống so với hàm printf() của C, nhưng khụng cũn cỏc cờ %d, %s hay %c nữa.

Bạn cú thể thiết lập vị trớ kết xuất cho phương thức Write trờn màn hỡnh bằng cỏch thiết lập giỏ trị cho thuộc tớnh CursorLeft và

CursorTop hay phương thức tĩnh SetCursorPosition của lớp Console.

Vớ dụ: using System; class Program {

static void Main(string[] args){ int theInt = 90;

double theDouble = 9.99; bool theBool = true; Console.CursorLeft = 10; Console.CursorTop = 5;

//Console.SetCursorPosition(10,5);

Console.WriteLine("Int is: {0}\nDouble is: {1}\nBool is: {2}", theInt, theDouble, theBool);

} }

Tham đối đầu tiờn của phương thức WriteLine() là một chuỗi và chứa cỏc ký hiệu đỏnh dấu {0}, {1}, {2}… (số trong ngoặc được bắt đầu từ số khụng). Và cỏc tham đối cũn lại của WriteLine() chỉ đơn

giản là cỏc giỏ trị được thờm vào lần lượt tương ứng với cỏc ký hiệu đỏnh dấu (trong trường hợp này là một int, một double và một bool).

Phương thức WriteLine() cũng cho phộp bạn truyền vào một

mảng cỏc đối tượng, giống như sau:

object[] stuff = {"Hello", 20.9, 1, "There", "83", 99.99933}; Console.WriteLine("The Stuff: {0} , {1} , {2} , {3} , {4} , {5} ", stuff);

Nú cũng cho phộp bạn đặt cựng một đỏnh dấu ở nhiều nơi: Console.WriteLine("{0}, Number {0}, Number {0}", 9);

Nếu bạn truyền giỏ trị khụng khớp với cỏc đỏnh dấu, sẽ phỏt

Nếu bạn muốn định dạng thờm nhiều kiểu khỏc nữa, cú thể dựng cỏc cờ sau (viết hoa hay thường đều được), được viết sau dấu hai

chấm sau ký hiệu đỏnh dấu ({0:C}, {1:d}, {2:X},…):  C hay c: Sử dụng để định dạng tiền tệ.

 D hay d: Sử dụng để định dạng số thập phõn.  E hay e: Sử dụng để thể hiện dạng số mũ.  F hay f: Sử dụng cho định dạng dấu chấm tĩnh.

 G hay g: Viết tắt của general. Ký tự này dựng để định dạng

kiểu chấm tĩnh hay số mũ.

 N hay n: Sử dụng định dạng phần ngàn (với dấu phẩy)

 X hay x: Sử dụng định dạng thập lục phõn. Nếu bạn dựng X viết hoa thỡ ký tự thập lục cũng sẽ được viết hoa.

Vớ dụ: using System; class Program {

static void Main(string[] args) {

Console.WriteLine("C format: {0:C}", 99989.987); Console.WriteLine("D9 format: {0:D9}", 99999); Console.WriteLine("E format: {0:E}", 99999.76543); Console.WriteLine("F3 format: {0:F3}", 99999.9999); Console.WriteLine("N format: {0:N}", 99999); Console.WriteLine("X format: {0:X}", 99999); Console.WriteLine("x format: {0:x}", 99999); } }

Hoặc cú thể sử dụng phương thức tĩnh string.Format() để định dạng chuỗi Vớ dụ: using System; class Program {

static void Main(string[] args) {

string formatStr;

formatStr = string.Format("Don't you wish you had {0:C} in your account?", 99989.987);

Console.WriteLine(formatStr); }

}

CÂU HỎI CHƯƠNG 2

Cõu 1. Sự khỏc nhau giữa hằng định danh và hằng giỏ trị?

Cõu 2. Sự khỏc nhau giữa kiểu dữ liệu giỏ trị và kiểu dữ liệu tham chiếu?

Cõu 3. Cỏc kiểu dữ liệu giỏ trị trong C#?

Cõu 4. Cỏc kiểu dữ liệu tham chiếu trong C#?

Cõu 5. So sỏnh khai bỏo hằng, biến của C# với C++ và Java?

Cõu 6. So sỏnh cỏc phộp toỏn cung cấp bởi C# với C++ và Java?

Cõu 7. Sự giống nhau và khỏc nhau giữa cỏc cấu trỳc điều kiện if

và switch?

Cõu 8. So sỏnh cỏc cấu trỳc lặp for, while và do… while?

Cõu 9. Cho biết cỏc lệnh rẻ nhành cú điều kiện và lệnh rẻ nhỏnh khụng điều kiện?

Cõu 10. Kể tờn và ý nghĩa cỏc Collection định nghĩa sẵn của C#?

BÀI TẬP CHƯƠNG 2

Bài 1. Viết chương trỡnh đổi một ký tự thường thành ký tự in hoa

(a - z thành A - Z).

Bài 2. Thời gian hoàn thành một cụng việc là x giõy. Hóy đổi thời

gian này ở dạng năm, thỏng, ngày và giờ, phỳt giõy.

Bài 3. Tỡm số lớn nhất trong 4 số a, b, c, d.

Bài 4. Xếp loại sinh viờn xuất sắc, giỏi, khỏ, trung bỡnh khỏ, trung bỡnh hay yếu dựa vào điểm trung bỡnh

Bài 5. Giải phương trỡnh bậc hai

ax2 + bx + c = 0

Bài 6. Tớnh tổng sau trờn n số nguyờn dương đầu tiờn

n S ... 1 3 1 2 1 1    

Bài 7. Lặp lại chương trỡnh để cú thể tớnh tổng với cỏc giỏ trị n khỏc nhau.

Bài 8. Tớnh tổng sau trờn n số nguyờn dương đầu tiờn ... 6 5 4 3 2 1 2 2 2     S Bài 9. Tớnh x*n Bài 10. Tớnh n!

Bài 11. Tỡm n số Fibonacii đầu tiờn. Biết rằng dóy số Fibonacii như sau

1 1 2 3 5 8 13 21 …

Bài 12. Viết chương trỡnh in ra cỏc số nguyờn tố trong n số nguyờn

dương đầu tiờn

Bài 13. Nhập epsilon, và tớnh tổng sau với độ chớnh xỏc epsilon (tớnh

tổng chừng nào số hạng cũn lớn hơn hay bằng sai số epsilon)

! ... ! 3 ! 2 1 1 3 2 n x x x x e n x      

Bài 14. Nhập epsilon và tớnh tổng sau với độ chớnh xỏc epsilon (tớnh tổng

chừng nào số hạng cũn lớn hơn hay bằng sai số epsilon)

) 1 2 ( 4 ) 1 ( ... 7 4 5 4 3 4 4 1          n n

Bài 15. Nhập epsilon và tớnh tổng sau với độ chớnh xỏc epsilon (tớnh tổng

chừng nào số hạng cũn lớn hơn hay bằng sai số epsilon)

! 2 ) 1 ( ... ! 6 ! 4 ! 2 1 cos 2 6 4 2 n x x x x x n n        

Bài 16. Nhập epsilon và tớnh tổng sau với độ chớnh xỏc epsilon (tớnh tổng

chừng nào số hạng cũn lớn hơn hay bằng sai số epsilon)

)! 1 2 ( ) 1 ( ... ! 5 ! 3 ! 1 ) sin( ) 1 2 ( 1 5 3          n x x x x x n n

Bài 17. Nhập epsilon và tớnh tổng sau với độ chớnh xỏc epsilon (tớnh tổng

chừng nào số hạng cũn lớn hơn hay bằng sai số epsilon)

) 1 2 )( 1 2 ( ... 3 1 ) 1 ( ... 7 5 3 1 5 3 1 3 1 1 3 2                  n n x x x x n n

Bài 18. Viết chương trỡnh nhập số dũng và hiển thị tam giỏc với số dũng (*) như sau: * * * * * * * * * * * * * * *

Bài 19. Viết chương trỡnh nhập số dũng và hiển thị tam giỏc với số dũng (*) như sau: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Bài 20. Viết chương trỡnh in ra bảng cửu chương (từ bảng cửu chương 2 đến bảng cửu chương 9)

Trăm trõu trăm cỏ

Trõu đứng ăn năm

Trõu nằm ăn ba

Ba trõu già ăn một” Hỏi số trõu mỗi loại?

LẬP TRèNH HƯỚNG ĐỐI TƯỢNG VỚI C#

Chương này trỡnh bày khả năng mạnh mẽ của ngụn ngữ lập

trỡnh hướng đối tượng C#, so sỏnh cỏc đặc tớnh hướng đối tượng của

ngụn ngữ C# với Java và C++. Cỏc kiến thức này là nền tảng cho lập

trỡnh ứng dụng Windows Form truy xuất cơ sở dữ liệu.

 Định nghĩa lớp và tạo đối tượng  Truy xuất thành phần của lớp  Định nghĩa phương thức

 Phương thức khởi tạo (Constructor)  Phương thức hủy (Destructor)  Từ khúa this

 Nạp chồng phương thức (Overloading method)  Truyền tham đối cho phương thức

 Nạp chồng toỏn tử (Overloading operator)

 Thuộc tớnh (Property), thuộc tớnh chỉ đọc (Read only

property)

 Kiểu tham chiếu phương thức (Delegate)  Sự kiện (Event)

 Chỉ mục (Indexer)  Kiểu cấu trỳc (Struct)

 Kiểu tổng quỏt (Generic type)  Cõy biểu thức (Expression tree)

 Viết chồng phương thức (Overriding method) hay che

khuất phương thức (Hiding method)  Từ khúa base

 Khụng gian tờn (Namespace) và lệnh using

 Lớp, phương thức trừu tượng (Abstract class, abstract

method)

 Lớp, phương thức hằng (Sealed class, sealed method)  Khai bỏo và hiện thực giao tiếp (Interface)

C# là một ngụn ngữ lập trỡnh hướng đối tượng. Kỹ thuật lập

trỡnh hướng đối tượng trừu tượng cỏc lớp từ cỏc đối tượng trong thế

giới thực, chương trỡnh của bạn sẽ được xõy dựng từ cỏc lớp. Lớp là khuụn mẫu của đối tượng, và đối tượng là thể hiện của một lớp.

Tất cả cỏc ngụn ngữ lập trỡnh hướng đối tượng đều cú cỏc cơ

chế cho phộp bạn triển khai cỏc mụ hỡnh hướng đối tượng. Đú là tớnh

Một phần của tài liệu Giáo trình lập trình windowns form với c net tập 1 TS lê trung hiếu, ths nguyễn thị minh thi (Trang 86)

Tải bản đầy đủ (PDF)

(179 trang)