Bài giảng Lập trình Java cơ bản - Chương 6: Điều kiện, biểu thức logic và cấu trúc chọn
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java cơ bản - Chương 6: Điều kiện, biểu thức logic và cấu trúc chọn", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_lap_trinh_java_co_ban_chuong_6_dieu_kien_bieu_thuc.ppt
Nội dung text: Bài giảng Lập trình Java cơ bản - Chương 6: Điều kiện, biểu thức logic và cấu trúc chọn
- LẬPLẬP TRÌNHTRÌNH JAVAJAVA CƠCƠ BẢNBẢN Chương 6 ĐIỀU KIỆN, BIỂU THỨC LOGIC VÀ CẤU TRÚC CHỌN Lê Tân Bộ môn: Lập trình máy tính 1
- Nội dung chương 6 n Luồng điều khiển n Điều kiện và biểu thức logic n Cấu trúc if n Cấu trúc if lồng nhau n Cấu trúc switch n Quản lý các sự kiện nhiều nút bấm 2
- 6.1 Luồng điều khiển n Luồng điều khiển: trật tự mà máy tính thực hiện các lệnh trong một chương trình. n Cấu trúc điều khiển: là một lệnh được sử dụng để làm thay đổi luồng điều khiển tuần tự một cách bình thường. n Ngôn ngữ Java có các dạng cấu trúc điều khiển chung như sau: 3
- 6.1 Luồng điều khiển n Cấu trúc tuần tự (sequence): Một dãy các lệnh được thực hiện từ đầu đến cuối, lệnh này tiếp lệnh kia. 4
- 6.1 Luồng điều khiển n Cấu trúc lựa chọn (còn gọi là cấu trúc rẽ nhánh hoặc cấu trúc quyết định): Thực hiện các lệnh khác nhau tuỳ thuộc vào các điều kiện xác định. if Điềukiện Lệnh1 else Lệnh2; 5
- 6.1 Luồng điều khiển n Cấu trúc lặp (loop, repetition hoặc decision): Lặp lại các lệnh trong khi các điều kiện xác định còn đúng. while Điềukiện do Lệnh; 6
- 6.1 Luồng điều khiển n Cấu trúc chương trình con: Một chương trình con sẽ chia chương trình chính thành các đơn vị nhỏ hơn. 7
- 6.1 Luồng điều khiển n Cấu trúc không đồng bộ: Cấu trúc này xử lý các sự kiện bắt nguồn từ bên ngoài chương trình, ở thời điểm bất kỳ, ví dụ sự kiện bấm một nút. 8
- 6.2 Điều kiện và biểu thức logic n Kiểu dữ liệu Boolean: là một kiểu nguyển thuỷ, chỉ bao gồm hai giá trị là các hằng true (T - đúng), và false (F - sai). n Khai báo các biến thuộc kiểu Boolean: boolean hasFever; boolean isSenior; boolean a1 = true; boolean a2 = false; boolean b = (1 > 2); boolean b2 = (1 = = 2); 9
- 6.2 Điều kiện và biểu thức logic n Phép so sánh: Kết quả là một giá trị logic n Các toán tử so sánh: 10
- 6.2 Điều kiện và biểu thức logic n Các toán tử Boolean: 11
- 6.2 Điều kiện và biểu thức logic n Bảng giá trị của các toán tử 12
- 6.2 Điều kiện và biểu thức logic n Biểu thức logic Boolean chỉ nhận giá trị true (đúng) hoặc false (sai). n Một biểu thức logic là sự kết hợp đúng, giữa các toán tử so sánh và logic, và các toán hạng. n Mỗi biểu thức có một giá trị là true hoặc false. 13
- 6.3 Cấu trúc if n Cú pháp: if (BT_L) { Lệnh; } 14
- 6.3 Cấu trúc if n Ý nghĩa: Nếu BT_L (là một biểu thức logic) trả về giá trị true thì thực hiện Lệnh, ngược lại, không làm gì cả. n Ví dụ: if ((i > 0) && (i < 10)) { System.out.println("i la nguyen giua 0 va 10"); } 15
- 6.3 Cấu trúc if n Lỗi phổ biến: thêm một dấu chấm phẩy ở cuối mệnh đề if. if (radius >= 0); { area = radius*radius*PI; System.out.println("The area for the circle of radius " + radius + " is " + area); } 16
- 6.3 Cấu trúc if n Lệnh if else: n Cú pháp: if (BT_L) { Lệnh1; } else { Lệnh2; } 17
- 6.3 Cấu trúc if n Ý nghĩa: Nếu BT_L trả về giá trị true thì thực hiện Lệnh1, ngược lại, thực hiện Lệnh2. n Ví dụ: if (bankinh >= 0) { dientich = bankinh*bankinh*PI; System.out.println("Dien tich hinh tron co ban kinh " + bankinh + " la " + dientich); } else { System.out.println("Du lieu khong hop le!"); } 18
- 6.4 Cấu trúc if lồng nhau n Cú pháp: 19
- 6.4 Cấu trúc if lồng nhau n Ý nghĩa: Thực hiện Lệnhi, (i = 1 n) ứng với BT_Li trả về giá trị true đầu tiên. Ngược lại, nếu không có BT_Li nào đúng thì lệnh lệnhn+1 sẽ được thực hiện. n Chú ý: • Chỉ có một phát biểu duy nhất được thực hiện • Mệnh đề else gắn với mệnh đề if gần nhất trong cùng một khối. 20
- 6.4 Cấu trúc if lồng nhau n Ví dụ, đoạn lệnh sau int i = 1; int j = 2; int k = 3; if (i > j) if (i > k) System.out.println("A"); else System.out.println("B"); n là tương đương với int i = 1; int j = 2; int k = 3; if (i > j) { if (i > k) System.out.println("A"); else System.out.println("B");} 21
- 6.4 Cấu trúc if lồng nhau n Đoạn lệnh trước sẽ không in ra gì cả. n Muốn mệnh đề else gắn với mệnh đề if đầu tiên, ta phải thêm một cặp ngoặc nhọn: int i = 1; int j = 2;int k = 3; if (i > j) { if (i > k) System.out.println("A"); } else System.out.println("B"); 22
- 6.5 Cấu trúc switch n Cú pháp: switch (bt_switch) { case gtri1: lệnh1; case gtri2: lệnh2; case gtrin: lệnhn; default: lệnhn+1; } 23
- 6.5 Cấu trúc switch n Ý nghĩa: • Nếu giá trị của một biến gtrii nào đó bằng với giá trị của bt_switch thì các lệnhi trở đi (cho đến cuối cấu trúc) được thực hiện (i = 1 n). • Ngược lại, nếu không có gtrii nào bằng với giá trị của bt_switch thì lệnh lệnhn+1 (sau default, nếu có) sẽ được thực hiện. 24
- 6.5 Cấu trúc switch n Ví dụ: switch (sonam) { case 7: laisuatnam = 7.25; case 15: laisuatnam = 8.50; case 30: laisuatnam = 9.0; default: System.out.println ("Sai so nam, nhap 7, 15, hoac 30"); } 25
- 6.5 Cấu trúc switch n Quy tắc sử dụng lệnh switch • Biểu thức bt_switch phải sinh ra một giá trị kiểu char, byte, short, hoặc int, và phải luôn được bao trong cặp dấu ngoặc tròn. • gtri1, , gtrin phải có cùng kiểu dữ liệu với giá trị của bt_switch. • Nên sử dụng từ khóa break cuối mỗi trường hợp để thoát khỏi phần còn lại của lệnh switch. Nếu không có lệnh break, lệnh case tiếp theo sẽ được thực hiện. 26
- 6.5 Cấu trúc switch n Quy tắc sử dụng lệnh switch (tt) • Trường hợp default là tùy chọn, có thể sử dụng để thực hiện các lệnh khi không có trường hợp nào ở trên là đúng. • Thứ tự của các trường hợp (gồm cả trường hợp default) là không quan trọng. Tuy nhiên, phong cách lập trình tốt là nên theo một trình tự logic của các trường hợp và đặt trường hợp default ở vị trí cuối cùng. 27
- 6.5 Cấu trúc switch n Lưu ý: Đừng quên dùng lệnh break khi cần thiết. Ví dụ đoạn mã sau switch (sonam) { case 7: laisuatnam = 7.25; case 15: laisuatnam = 8.50; case 30: laisuatnam = 9.0; default: System.out.println("Sai so nam!"); } 28
- 6.6 Quản lý các sự kiện nhiều nút bấm n Sau khi tạo ra một nút với phương thức new, gọi setActionCommand với tham số String để xác định nút này. n Nếu không, listener sẽ giả sử rằng tên của nút cũng giống như chuỗi được sử dụng khi tạo đối tượng nút. n Sau đó gọi addActionListener. n Ví dụ, xây dựng một giao diện người dùng với hai nút bấm, Copy và Done 29
- 6.6 Quản lý các sự kiện nhiều nút bấm buttonAction = new ButtonHandler(); //Tạo đối tượng ButtonHandler copy = new Button(“Copy”); //Tạo đối tượng nút với chuỗi Copy copy.setActionCommand(“copy”); //Gán một chuỗi cho nút để định danh copy.addActionListener(buttonAction); //Đăng ký button listener done = new Button(“Done”); //Tạo đối tượng nút với chuỗi Done done.setActionCommand(“done”); //Gán một chuỗi cho nút để định danh done.addActionListener(buttonAction); //Đăng ký button listener 30
- 6.6 Quản lý các sự kiện nhiều nút bấm n Ví dụ: Viết chương trình mô phỏng máy tính (calculator) 31
- 6.6 Quản lý các sự kiện nhiều nút bấm n Thẻ CRC của máy tính: 32
- 6.6 Quản lý các sự kiện nhiều nút bấm import java.awt.*; import java.awt.event.*; public class CongTru{ private static class ActionHandler implements ActionListener{ public void actionPerformed(ActionEvent event){ double a,b,c; a = Double.valueOf(inputField.getText()).doubleValue(); b = Double.valueOf(inputField1.getText()).doubleValue(); String s = event.getActionCommand(); if (s.equals("cong")) c = a + b; else c = a - b; outputLabel.setText("" + c); // Clear input field inputField.setText("");inputField1.setText(""); } } 33
- 6.6 Quản lý các sự kiện nhiều nút bấm private static Frame inputFrame; // User interface frame private static Label outputLabel; private static TextField inputField, inputField1; public static void main( String[ ] args ){ Button cong, tru; // Declare buttons ActionHandler action; // Declare listener inputFrame = new Frame( ); inputFrame.setLayout(new GridLayout(4,2)); inputFrame.add(new Label("Nhap a:")); inputField = new TextField("", 10); inputFrame.add(inputField); inputFrame.add(new Label("Nhap b:")); inputField1 = new TextField("", 10); inputFrame.add(inputField1); inputFrame.add(new Label("Ket qua:")); outputLabel = new Label(""); inputFrame.add(outputLabel); 34
- 6.6 Quản lý các sự kiện nhiều nút bấm cong = new Button("+"); cong.setActionCommand("cong"); // Name button event action = new ActionHandler( ); // Instantiate listener cong.addActionListener(action); // Register listener inputFrame.add(cong); // Add button tru = new Button("-"); tru.setActionCommand("tru"); // Name button event tru.addActionListener(action); // Register listener inputFrame.add(tru); // Add button inputFrame.pack( ); inputFrame.show( ); inputFrame.addWindowListener( new WindowAdapter( ){ public void windowClosing (WindowEvent event){ inputFrame.dispose( ); // Remove frame System.exit( 0 ); // Quit program } }); } } 35