Bài giảng Lập trình hướng đối tượng - Chương 1: Cú pháp Java cơ bản

pptx 45 trang huongle 6470
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: Cú pháp Java cơ bả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:

  • pptxbai_giang_lap_trinh_huong_doi_tuong_chuong_1_cu_phap_java_co.pptx

Nội dung text: Bài giảng Lập trình hướng đối tượng - Chương 1: Cú pháp Java cơ bản

  1. LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG CHƯƠNG 1 CÚ PHÁP JAVA CƠ BẢN
  2. Nội dung 1. Định danh 2. Các kiểu dữ liệu 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng
  3. Nội dung 1. Định danh 2. Các kiểu dữ liệu 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng
  4. 1. Định danh ◼ Định danh  Xâu các kí tự thể hiện tên các biến, các phương thức, các lớp và nhãn ◼ Quy định với định danh  Các ký tự có thể là chữ số, chữ cái, ‘$’ hoặc ‘_’  Tên không được phép ◼ Bắt đầu bởi một số ◼ Trùng với từ khoá  Phân biệt chữ hoa chữ thường ◼ Yourname, yourname, YourName và yourName là 4 định danh khác nhau
  5. 1. Định danh ◼ Quy ước với định danh (naming convention)  Bắt đầu bằng chữ cái  Gói (package): tất cả sử dụng chữ thường ◼ Vd: theexample  Lớp (Class): Viết hoa chữ cái đầu tiên trong các từ viết lại ◼ VD: TheExample  Phương thức/ thuộc tính (method/field): bắt đầu bằng chữ thường, viết hoa chữ cái đầu tiên trong các từ còn lại ◼ VD: theExample  Hằng (constants): Tất cả viết hoa ◼ VD: THEEXAMPLE
  6. Định danh ◼ Literals null, true, false; ◼ Từ khoá (keyword) Java có khoảng 50 từ khoá abstract, assert, boolean, break, byte, case, catch, char, class, continue, default, do, double, else, extends, final, finally, float, for, if, implements, import, instanceof, long, native,
  7. Nội dung 1. Định danh 2. Các kiểu dữ liệu 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng
  8. 2. Các kiểu dữ liệu ◼ Trong Java kiểu dữ liệu được chia thành 2 loại:  Kiểu dữ liệu nguyên thuỷ (primitive) ◼ Số nguyên (integer) ◼ Số thực (float) ◼ Ký tự (char) ◼ Giá trị logic (boolean)  Kiểu dữ liệu tham chiếu (reference) ◼ Mảng (array) ◼ Đối tượng (object)
  9. 2.1 Kiểu dữ liệu nguyên thuỷ ◼ Mọi biến đều phải khai báo một kiểu Catagories dữ liệu a. integer  Các kiểu dữ liệu cơ bản chứa một giá b. floating point trị đơn c. character  Kích thước và định dạng phải phù hợp d. boolean với kiểu của nó ◼ Java phân loại thành 4 kiểu dữ liệu nguyên thuỷ
  10. a. Số nguyên ◼ Số nguyên có dấu Catagories a. integer 1. byte (size – 1Byte) : -2^7→ 2^7 b. floating point c. character 2. short (size – 2Byte): -2^15→2^15 d. boolean 3. int (size – 4Byte): -2^31 → 2^31 4. Long (size -8Byte): -2^63→2^63
  11. b. Số thực ◼ Khởi tạo với giá trị 0.0 Catagories a. integer 1. float (size – 4Byte) : ±1.4^-15→ ±3.4^15 b. floating point c. character 2. double (size – 8Byte): ±4.9^-324→ ±1.8^308 d. boolean
  12. c. Ký tự ◼ Size: 2 bytes ◼ Ký tự unicode không dấu, được đặt giữa hai dấu nháy đơn ◼ 2 cách gán giá trị:  Sử dụng chữ số trong hệ 16: char uni=‘\uo5Do’  Sử dụng ký tự: char a=‘A’; ◼ Giá trị mặc định là giá trị zero (\uooo)
  13. d. Giá trị logic ◼ Giá trị kiểu boolean được xác định rõ ràng trong Java Một giá trị int không thể sử dụng thay cho giá trị boolean Có thể lưu trữ giá trị hoặc true hoặc false ◼ Biến boolean được khởi tạo là false
  14. 2.2 Giá trị hằng (literal) ◼ Literal là một giá trị của các kiểu dữ liệu kiể nguyên thuỷ và xâu kí tự ◼ Gồm 5 loại: interger, Vd: 7 floating poit, Vd: 7.0f boolean, Vd: true character, Vd: ‘A’ string, Vd: “abc”
  15. a. Số nguyên ◼ Hệ cơ số 8 (Octals) bắt đầu với chữ số o  o32 = 011 010(2) = 16+8+2 =26(10) ◼ Hệ cơ số 16 (Hexadecimal) bắt đầu với kí tự o và kí tự x  ox1A = 0001 1010(2)=26(10) ◼ Kết thúc bởi ký tự “L” thể hiện kiểu dữ liệu long  26L ◼ Ký tự hoa, thường cho giá trị bằng nhau  Ox1a, ox1A, oX1A, oX1a đều cho giá trị là 26 trong hệ decimal
  16. b. Số thực ◼ float kết thúc bằng ký tự f (hoặc F)  7.1f ◼ double kết thúc bằng ký tự d (hoặc D)  7/1d ◼ e (hoặc E) được sử dụng trong dạng biểu diễn khoa học  7.1e2 ◼ Một giá trị thực mà không có ký tự kết thúc đi kèm sẽ có kiểu là double  7.1 giống như 7.1d
  17. c. boolean, kí tự và xâu ký tự ◼ boolean:  true  false ◼ Ký tự:  Được đặt giữa hai dấu nháy đơn  VD: ‘a’, ‘A’ ◼ Xâu kí tự  Được đặt giữa hai dấu nháy kép  Ví dụ: “Hello world”, “xin chào bạn”,
  18. d. Escape sequence ◼ Các ký tự điều khiển nhấn phím  \b backspace  \f form feed  \n new line  \r return (về đầu dòng)  \t tab ◼ Hiển thị các ký tự đặc biệt trong xâu  \” quotation mark  \’ apostrophe  \\ backlash
  19. 2.3 Chuyển đổi các kiểu ký tự (casting) ◼ Java là một ngôn ngữ định kiểu chặt  Gán sai kiểu giá trị cho một biến có thể dẫn đến các lỗi biên dịch hoặc các ngoại lệ của JVM ◼ JVM có thể ngầm định chuyển từ một kiểu dữ liệu hẹp sang một kiểu rộng hơn ◼ Để chuyển sang một kiểu dữ liệu hẹp hơn cần phải định kiểu rõ ràng int a, b; int d; double f; short c; short e; long g; a =b+c; e = (short) d; f=g; g=f; // erro
  20. 2.3 chuyển đổi kiểu dữ liệu ◼ Chuyển đổi kiểu dữ liệu sẽ được thực hiện tự động nếu int không xảy ra mất mát thông tin implicit explicit  byte →short→int  long→float→double float ◼ Ép kiểu trực tiếp (explicit cast) được yêu cầu nếu có “nguy cơ” giảm độ chính xác
  21. Ví dụ - chuyển đổi kiểu long p = (long) 12345.67; // p == 123456 int g = p // ko hợp lệ char c = ‘t’; int j =c; // tự động chuyển đổi; short k = c // ko hợp lệ short k = (short)c; // ép kiểu trực tiếp float f = 12.35 // ko hợp lệ
  22. 2.4 Khai báo và khởi tạo biến ◼ Các biến đơn (biến không phải là mảng) cần phải được khởi tạo trước khi sử dụng trong các biểu thức  Có thể kết hợp khai báo và khởi tạo cùng một lúc  Sử dụng = để gán (bao gồm cả khởi tạo)  Ví dụ ◼ int i, j // khai báo biến ◼ i=0; ◼ int k = i+1; ◼ float x= 1.0f;
  23. Chú thích ◼ Java hỗ trợ 3 kiểu chú thích như sau // chú thích trên 1 dòng /* chú thích 1 đoạn */ / Javadoc* chú thích dạng Javadoc*/
  24. Câu lệnh ◼ Các câu lệnh được kết thúc bởi dấu ; ◼ Nhiều lệnh có thể viết trên 1 dòng ◼ Một cậu lệnh có thể viết trên nhiều dòng Ví dụ System.out.println( “ this is part of a line”); a=0, b=1, c=2;
  25. Nội dung 1. Định danh 2. Các kiểu dữ liệu 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng
  26. Toán tử (Operator) ◼ Kết hợp các giá trị đơn hoặc các biểu thức con thành những biểu thức mới, phức tạp hơn và có thể trả về giá trị ◼ Java cung cấp nhiều dạng toán tử sau:  Toán tử số học  Toán tử bit, toán tử quan hệ  Toán tử logic  Toán tử gán  Toán tử một ngôi
  27. 3. Toán tử (2) ◼ Toán tử số học +, -, *, /, % Toán tử bit ◼ AND: &; OR: |; XOR: ^, NOT: ~ ◼ Dịch bit: > ◼ Toán tử quan hệ  ==, !=, >, =, <= ◼ Toán tử logic  &&, ||, !
  28. 3. Toán tử một ngôi ◼ Toán tử một ngôi Đảo dấu: +, - Tăng giảm 1 đơn vị: ++, Phủ định một biểu thức logic: ! ◼ Toán tử gán =, +=, -=, %=
  29. Thứ tự ưu tiên của toán tử ◼ Cho biết toán tử nào thực hiện trước- được xác định bởi các dấu ngoặc đơn hoặc theo ngầm (chi tiết xem Lập trình hướng đối tượng với Java, Đoàn Văn Ban, trang 47)
  30. Nội dung 1. Định danh 2. Các kiểu dữ liệu 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng
  31. 4.1 Lệnh if-else ◼ Cú pháp if (điều kiện){ các câu lệnh; } else{ các câu lệnh } ◼ Biểu thức điều kiện nhận giá trị boolean ◼ Mệnh đề else là tuỳ chọn
  32. VD: Kiểm tra số chẵn –lẻ import java.util.*; Class CheckNumber{ public static void main(String agr[]){ Scanner nhap = new Scanner(System.in); int num; System.out.println (“hay nhap vao 1 so nguyen bat ky”); num = nhap. nextInt(); if (num % 2 ==0) System.out.println (num+ “ la so chan”); else System.out.println (num + “ la so le”); } }
  33. 4.2 Lệnh switch-case ◼ Kiểm tra một biến đơn với nhiều giá trị khác nhau và thực hiện trường hợp tương ứng  break: thoát khỏi lệnh switch-case  default kiểm soát các giá trị nằm ngoài các giá trị case
  34. Ví dụ - lệnh switch-case Switch (day){ case 2: rule = “monday”; break; case 3: case 6: rule = “friday”; break; dafault: rule = “weekend”; }
  35. 4.3 Vòng lặp while và do while ◼ Thực hiện một câu lệnh hoặc một khối câu lệnh khi điều kiện vẫn nhận giá trị true  While() thực hiện 0 hoặc nhiều lần  Do while() thực hiện ít nhất một lần int x=2; While (x<2){ x++; System.out.println(x); } int x=2; do{ x++; System.out.println(x); } While (x<2)
  36. 4.4 Vòng lặp for ◼ Cú pháp: for (start_expr; test_expr; increment_expr){ // code to execute repeatedly }  3 biểu thức đều có thể vắng mặt  Có thể khai báo biến trong câu lệnh for ◼ Thường sử dụng để khai báo một biến đếm ◼ Thường khai báo trong biểu thức start ◼ Phạm vi của biến giới hạn trong vòng lặp Ví dụ: for (int i=0; i<10; i++){ System.out.println(i); }
  37. ? Hãy viết hàm tính giai thừa của số nguyên dương n bất kì, sử dụng các vòng lặp for, while, do while.
  38. 4.5 Các lệnh thay đổi cấu trúc điều khiển ◼ break  Có thể được sử dụng để thoát ra ngoài cầu lệnh switch  Kết thúc vòng lặp for, while hoặc do while  Có hai dạng: ◼ Continue  Có thể được sử dụng cho vòng lặp for, while hoặc do while  Bỏ qua các câu lệnh còn lại trong vòng lặp hiện thời và chuyển sang thực hiện vòng lặp tiếp theo
  39. 4.6 Phạm vi khai báo biến ◼ Phạm vi của biến là vùng chương trình mà trong đó biến có thể được tham chiếu đến  Các biến được khai báo trong 1 phương thức thì chỉ có thể truy cập trong phương thức đó\  Các biến được khai báo trong vòng lặp hoặc khối lệnh thì chỉ có thể truy cập trong vòng lặp hoặc khối lệnh đó int a=1; for (int b=0; b<3; b++){ int c=1; for(int d=0; d<3;d++){ if (c<3) c++; } System.out.println(c); System.out.println(b); } a= c; // error: c is out of scope
  40. Nội dung 1. Định danh 2. Các kiểu dữ liệu 3. Toán tử 4. Cấu trúc điều khiển 5. Mảng
  41. 5. Mảng (array) ◼ Tập hợp hữu hạn các phần tử cùng kiểu ◼ Phải được khai báo trước khi sử dụng ◼ Khai báo: Cú pháp: ◼ dataType[] tenMang = new dataType [KT_Mảng]; ◼ dataType tenMang[] = new dataType [KT_Mảng]; Ví dụ: ◼ char c[] = new char [12];
  42. 5.1 Khai báo và khởi tạo mạng ◼ Khai báo, khởi tạo giá trị ban đầu:  Cú pháp: ◼ dataType[] tenMang = { danh sách giá trị các phần tử} Ví dụ: ◼ int [] number = {10,9,8,7,6};  Nếu không khởi tạo → nhận giá trị mặc định tuỳ thuộc vào kiểu dữ liệu Luôn bắt đầu từ các phần tử có chỉ số 0
  43. 5.1 Khai báo mảng ◼ Ví dụ: int max = 5; boolean bit[] = new boolean[max]; float[] value = new float[2*3]; int[] number = {10, 9, 8, 7, 6}; System.out.println(bit[0]); // prints "false" System.out.println(value[3]);// prints "0.0" System.out.println(number [1]); // prints "9"
  44. 5.2 Mảng nhiều chiều ◼ Bảng với các dòng và cột Thường sử dụng mảng hai chiều Ví dụ khai báo màng hai chiều b[2][2] int b[][]={ {1,2}, {3,4}}; ◼ 1 và 2 được khởi tạo cho b[0][0] và b[0][1] ◼ 3 và 4 được khởi tạo cho b[1][0] và b[1][1]
  45. Bài tập chương 2: ◼ Trang 64, 65, 66, 67, 68 trong sách của thầy Đoàn Văn Ban.