Bai 02 Co ban ve Java va UML 1 Bài 2 Cú pháp Java cơ bản 1 1 Mục tiêu bài học v Nắm được quy định cơ bản về định danh, câu lệnh, chú thích, và biến trong Java v Sử dụng thành thạo các kiểu dữ liệu ngu.
Mục tiêu học v Nắm quy định định danh, câu lệnh, thích, biến Java v Sử dụng thành thạo kiểu liệu nguyên thủy Java v Nắm loại toán tử, cấu trúc điều khiển, cấu trúc liệu kiểu mảng Java v Hiểu ý nghĩa ngơn ngữ mơ hình hóa thống UML, biết loại biểu đồ thông dụng Bài 2: Cú pháp Java 1 2 Bài giảng e-learning Bài giảng e-learning v Trong khóa học Java Programming Basics, SV học theo 1, 2, Bước - Truy cập trang https://www.udacity.com/ course/javaprogramming-basics-ud282 § § § § § Bước 2: Đăng ký tài khoản (free) Lession 1: Variables and Data Types Lession 2: Control Flow and Conditionals Lession 3: Functions (sẽ trình bày giảng sau) Lession 4: Loops Lession 5: IntelliJ and Debugging (tham khảo) Bước 3: Nhấn nút START FREE COURSE 3 4 Nội dung Cơ Java Cơ Java Giới thiệu UML 1.1 Các khái niệm 1.2 Biến 1.3 Các kiểu liệu 1.4 Toán tử 1.5 Cấu trúc điều khiển 1.6 Mảng 5 6 Cơ Java Định danh 1.1 Các khái niệm 1.2 Biến 1.3 Các kiểu liệu 1.4 Toán tử 1.5 Cấu trúc điều khiển 1.6 Mảng v Định danh: § Xâu ký tự thể tên biến, phương thức, lớp nhãn § chương trình v Quy định với định danh hợp lệ (bắt buộc tuân thủ) § Gồm ký tự chữ cái, chữ số, ký tự '$' ‘_’ § Khơng phép: • Bắt đầu chữ số • Trùng vi t khúa ã Cha du cỏch Đ Phõn bit chữ hoa chữ thường • Yourname, yourname, YourName yourName định danh khác 7 8 Định danh (2) Các từ khóa v Quy ước với định danh - naming convention (Quy ước: không bắt buộc, nên làm theo) v Người lập trình khơng phép sử dụng từ khóa định danh Đ Phi mang tớnh gi nh v Literals: ã Ví dụ: nên dùng định danh “bookPrice” “bp” để lưu thơng tin giá sách § null true false v Từ khóa (keyword): § Bắt đầu chữ § Gói (package): tất sử dụng chữ thường § abstract assert boolean break byte case catch char class continue default double else extends final finally float for if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while • theexample § Lớp (Class): viết hoa chữ đầu tiờn cỏc t ghộp li ã TheExample Đ Phng thức/thuộc tính (method/field): Bắt đầu chữ thường, viết hoa chữ từ cịn lại • theExample § Hằng (constants): Tất viết hoa v Từ dnh riờng (reserved word): ã THE_EXAMPLE Đ byvalue cast const future generic goto inner operator outer rest var volatile 9 10 10 Câu lệnh Chú thích Java v Các câu lệnh kết thúc dấu; v Nhiều lệnh viết dịng v Một câu lệnh viết nhều dịng v Java hỗ trợ ba kiểu thích sau: § § § § § Ví dụ: // Chú thích dịng // Khơng xuống dịng /* Chú thích đoạn */ /** Javadoc * thích dạng Javadoc */ v Chú thích dùng để mô tả thêm mã nguồn (source code) Trình thơng dịch bỏ qua thích System.out.println( “This is part of the same line”); a=0; b=1; c=2; 11 11 12 12 Cơ Java Khái niệm biến 1.1 Các khái niệm 1.2 Biến (Tham khảo Lession – Session 6) 1.3 Các kiểu liệu 1.4 Toán tử 1.5 Cấu trúc điều khiển 1.6 Mảng v Biến giống hộp nhớ, chứa giá trị cho đại lượng Giá trị biến Tên biến § Biến có tên khơng thay đổi § Biến gán giá trị, thay đổi chạy v Biến chứa giá trị kiểu số, ký tự, văn bản, hay đối tượng § kiểu giá trị biến không thay đổi, gọi kiểu liệu biến 13 13 https://www.youtube.com/watch?v=TGw5szyZ k88 14 14 Khai báo biến Khai báo biến (2) v Biến dùng phải khai báo tên (định danh) gán cho kiểu liệu (số, ký tự, văn bản, đối tượng, v.v.) v Các biến đơn cần phải khởi tạo trước sử dụng v Có thể kết hợp khai báo khởi tạo lúc v Sử dụng toán tử = để gán (bao gồm khởi tạo) v Ví dụ: Lệnh khai báo biến có tên passengers, có kiểu số nguyên, Java ký hiệu int Lệnh khởi tạo giá trị biến passengers = 15 15 16 16 Sử dụng biến Phạm vi sử dụng biến v Phạm vi biến vùng chương trình mà biến tham chiếu đến, sử dụng v Phạm vi hoạt động (scope) biến cho phép xác định nguyên lý tạo biến, sử dụng biến giải phóng biến v Phân loại: § Biến tồn cục: phạm vi chương trình § Biến cục bộ: khai báo phương thức/khối lệnh truy cập phương thức/khối lệnh Lệnh in giá trị biến passengers (khơng có “” quanh tên biến) Nếu passengers chưa khởi tạo, báo lỗi 17 17 18 18 Phạm vi sử dụng biến (2) Cơ Java 1.1 Các khái niệm 1.2 Biến Tham khảo Lession - Session 16, 12, 13 1.3 Các kiểu liệu 1.4 Toán tử 1.5 Cấu trúc điều khiển 1.6 Mảng Tham khảo Lession - Session 19 19 20 20 Các kiểu liệu Java Số nguyên v Trong Java kiểu liệu chia thành hai loại: v Số nguyên có dấu v Khởi tạo với giá tr Đ Kiu d liu nguyờn thy (primitive) ã Số nguyên (integer) • Số thực (float) • Ký tự (char) ã Giỏ tr logic (boolean) Đ Kiu d liu tham chiếu (reference) • Mảng (array) • Đối tượng (object) v Kích thước kiểu liệu nguyên thủy định nghĩa JVM Chúng giống tất platform v Cần cân nhu cầu lưu trữ (độ lớn giá trị) việc tiết kiệm nhớ (không dư thừa ô nhớ) 21 21 22 22 Số thực Ký tự v Khởi tạo với giá trị 0.0 v Ký tự Unicode không dấu, đặt hai dấu nháy đơn v cách gán giá trị: § Sử dụng chữ số hệ 16: char uni ='\u05D0'; § Sử dụng ký tự: char a = ‘A’; v Giá trị mặc định giá trị zero (\u0000) 23 23 24 24 Giá trị logic Giá trị (literal) v Giá trị boolean xác định rõ ràng Java v Literal giá trị kiểu liệu nguyên thủy xâu ký tự v Gồm loại: Literals § integer § floating point integer………… § boolean floating point…7.0f § character boolean……….true § String character……….'A' string………… "A" § Một giá trị int sử dụng thay cho giá trị boolean § Có thể lưu trữ giá trị true false v Biến boolean khởi tạo false 25 25 26 26 Hằng số nguyên Hằng số thực v Hệ số (Octals) bắt đầu với chữ số v float kết thúc ký tự f (hoặc F) § 032 = 011 010(2) = 16 + + = 26(10) § 7.1f v Hệ số 16 (Hexadecimals) bắt đầu với ký tự x v double kết thúc ký tự d (hoặc D) § 7.1D § 0x1A = 0001 1010(2) = 16 + + = 26(10) v e (hoặc E) sử dụng dạng biểu diễn khoa học: v Kết thúc ký tự “L” thể kiểu liệu long § 7.1e2 § 26L v Một giá trị thực mà khơng có ký tự kết thúc kèm có kiểu double v Ký tự hoa, thường cho giá trị § 0x1a , 0x1A , 0X1a , 0X1A có giá trị 26 hệ decimal § 7.1 giống 7.1d 27 27 28 28 Hằng boolean, ký tự xâu ký tự Escape sequence v boolean: v Các ký tự điều khiển nhấn phím § true § false § § § § § v Ký tự: § Được đặt dấu nháy đơn § Ví dụ: ‘a’, ‘A’ '\uffff‘ \b backspace \f form feed \n newline \r return (về đầu dòng) \t tab v Hiển thị ký tự đặc biệt xâu v Xâu ký tự: § \" quotation mark § \’ apostrophe § \\ backslash § Được đặt hai dấu nháy kép § Ví dụ: “Hello world”, “Xin chao ban”,… 29 29 30 30 Chuyển đổi kiểu liệu (Casting) Chuyển đổi kiểu liệu (2) v Java ngôn ngữ định kiểu chặt v Chuyển đổi kiểu thực tự động không xảy mát thơng tin § Gán sai kiểu giá trị cho biến dẫn đến lỗi biên dịch ngoại lệ JVM v JVM ngầm định chuyển từ kiểu liệu hẹp sang kiểu rộng v Để chuyển sang kiểu liệu hẹp hơn, cần phải định kiểu rõ ràng int a, b; short c; a = b + c; int d; short e; e = (short)d; § byte short int long float double v Lưu ý: ép kiểu từ short char, từ byte char ngược lại phải ép kiểu tường minh double f; long g; f = g; g = f; //error v Ép kiểu trực tiếp (explicit cast) yêu cầu có “nguy cơ” giảm độ xác 31 31 32 32 Ví dụ SV tự thử kiểm tra kết Ví dụ - chuyển đổi kiểu short i = 6, j=7; i = i + j; i += j; long p = (long) 12345.56; // p nhận giá trị 12345 int g = p; // không hợp lệ dù kiểu int lưu giá trị 12345 char c = ‘t’; int j = c; // hợp lệ, tự động chuyển đổi short k = c; // không hợp lệ, phải ép kiểu tường minh short k = (short) c; // hợp lệ float f = 12.35; // Báo lỗi 12.35 double float f = 0.0; // Báo lỗi 0.0 double float f = 0; long l = 999999999999; //Báo lỗi: The literal 999999999999 of type int is out of range short k = 99999999; // Báo lỗi: Type mismatch: cannot convert from int to short short i, j = 5; int n = 6; i = (short)n + j; 33 33 34 Cơ Java Toán tử (Operators) 1.1 Các khái niệm 1.2 Biến 1.3 Các kiểu liệu 1.4 Toán tử Tham khảo Lession - Session 18 1.5 Cấu trúc điều khiển 1.6 Mảng v Kết hợp giá trị đơn biểu thức thành biểu thức mới, phức tạp trả giá trị v Java cung cấp nhiều dạng tốn tử sau: § § § § § 37 37 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ử ngơi 38 38 Tốn tử (2) Tốn tử (3) v Toán tử số học v Toán tử ngơi § +, -, *, /, % § Đảo dấu: +, § Tăng giảm đơn vị: ++, -§ Phủ định biểu thức logic: ! v Toán tử bit § AND: &, OR: |, XOR: ^, NOT: ~ § Dịch bit: v Tốn tử gán § =, +=, -=, %= tương tự với >>, >> (unsigned shift) 8.So sánh: < > = instanceof 9.So sánh == != //3.3333333 41 41 10.Toán tử bit AND: & 11.Toán tử bit OR: ^ 12.Toán tử bit XOR: | 13.Toán tử logic AND: && 14.Toán tử logic OR: || 15.Toán tử điều kiện: (ternary) ?: 16.Toán tử gán: = *= /= %= += -= >>= >= &= ^= |= 42 42 10 Thứ tự ưu tiên toán tử - Ví dụ Thứ tự ưu tiên tốn tử - Ví dụ int i; System.out.println(i=5); System.out.println(i+=4); System.out.println(i++); System.out.println( i); //5 //9 //9 //9 44 43 43 44 Cơ Java 1.5 Cấu trúc điều khiển 1.1 Các khái niệm 1.2 Biến 1.3 Các kiểu liệu 1.4 Toán tử 1.5 Cấu trúc điều khiển Tham khảo Lession – Session 16 1.6 Mảng v Là cấu trúc lệnh nhằm định cho chương trình thực câu lệnh/đoạn lệnh khác nhau, tùy theo điều kiện v loại cấu trúc điều khiển: § Câu lệnh điều kiện • Lệnh if – else, • Lệnh switch case Đ Cõu lnh lp ã Vũng lp for • Vòng lặp while • Vòng lặp – while 45 45 46 46 11 Lệnh if Lệnh if - else v Cú pháp if (dieu_kien){ cac_cau_lenh; } v Cú pháp if (dieu_kien){ cac_cau_lenh_1; } else { cac_cau_lenh_2; } v Nếu biểu thức điều kiện dieu_kien (có kiểu boolean) nhận giá trị true thực khối lệnh cac_cau_lenh; v Nếu biểu thức điều kiện (kiểu boolean) nhận giá trị true thực khối lệnh cac_cau_lenh_1, false thực khối lệnh cac_cau_lenh_2 47 47 48 48 Lệnh else-if Biểu thức điều kiện v Cú pháp v Toán tử so sánh if (dieu_kien_1){ cac_cau_lenh_1; } else if (dieu_kien_2){ cac_cau_lenh_2; } else if (dieu_kien_3){ cac_cau_lenh_3; } else { cac_cau_lenh_n; } v Có thể có nhiều else-if, có else tối đa 49 49 50 50 12 Biểu thức điều kiện (2) Ví dụ - Kiểm tra số chẵn – lẽ v Toán tử logic class CheckNumber { public static void main(String args[]) { int num =10; if (num %2 == 0) System.out.println (num+ “la so chan”); else System.out.println (num + “la so le”); } } 52 51 51 52 Lệnh switch - case Ví dụ - Lệnh switch - case (1) v Kiểm tra biến đơn với nhiều giá trị khác thực trường hợp tương ứng public class Test { public static void main(String args[]) { int i = 2; § break: Thốt khỏi lệnh switch-case § default kiểm sốt giá trị nằm giá trị case: case a case b [true] [false] [true] [false] case a action(s) break case b action(s) break switch (i) { case 1: System.out.println("1"); case 2: System.out.println("2"); case 3: System.out.println("3"); } } [true] case z [false] } case z ac:on(s) break default action(s) 54 53 53 54 13 Ví dụ - Lệnh switch - case (2) switch (day) { case 0: case 1: rule = “weekend”; break; case 2: case 3: case 4: case 5: case 6: rule = “weekday”; break; default: rule = “error”; } Bài tập: Tính số ngày tháng v Input: Năm, tháng v Output: số ngày tháng năm v Yêu cầu: sử dụng lệnh switch-case v Gợi ý: if (day == || day == 1) { rule = “weekend”; } else if (day > && day = 1){ fact *=a; a ; } System.out.println(“The Factorial of is”+fact); } } for (start_expr; test_expr; increment_expr){ // code to execute repeatedly } v Ví dụ: v biểu thức (1) (2) (3) vắng mặt (thay lệnh tương ứng khối lệnh) v Có thể khai báo biến câu lệnh for Kết quả: “The factorial of is 120” hiển thị § Thường sử dụng để khai báo biến đếm § Thường khai báo biểu thức “start” § Phạm vi biến giới hạn vòng lặp Viết thay lệnh while lệnh do-while ? 59 59 60 60 Ví dụ - Vịng lặp for Vịng lặp for while v Các câu lệnh for while cung cấp chức tương đương v Các cấu trúc lặp thường sử dụng tình khác class ForDemo { public static void main(String args[]){ int i=1, sum=0; § while sử dụng cho lặp từ đầu đến cuối § for sử dụng để lặp với số vòng lặp xác định for (i=1;i