Bài giảng Lập trình Java - Bài 1: Giới thiệu về ngôn ngữ lập trình Java - Bùi Trọng Tùng

pdf 24 trang ngocly 3510
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình Java - Bài 1: Giới thiệu về ngôn ngữ lập trình Java - Bùi Trọng Tùng", để 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:

  • pdfbai_giang_lap_trinh_java_bai_1_gioi_thieu_ve_ngon_ngu_lap_tr.pdf

Nội dung text: Bài giảng Lập trình Java - Bài 1: Giới thiệu về ngôn ngữ lập trình Java - Bùi Trọng Tùng

  1. 17/08/2014 LẬP TRÌNH JAVA Bùi Trọng Tùng Bộ môn Truyền thông và Mạng máy tính Viện CNTT – TT, Đại học BKHN 1 Về môn học này •Mã học phần: IT3650 •Tên học phần: Lập trình Java •Khối lượng: 3(0-0-6-6) ~ 90 tiết thực hành •Học phần theo chương trình hợp tác đào tạo giữa trường Đại học BKHN và Tập đoàn Samsung •Đánh giá: oĐiểm quá trình (0.3): Hoàn thành các bài tập tuần oĐiểm thi cuối kỳ (0.7): Hoàn thành project + 20% Điểm quá trình •Website: •Tài liệu tham khảo: 2 1
  2. 17/08/2014 Học kỳ 20141 •Kế hoạch (dự kiến): oTuần 2-9: Lý thuyết + Bài tập trên lớp + Bài tập tuần oTuần 12-17: Thực hiện Project oTuần 18: Trình bày Project trên lớp •Thời gian đăng ký project: 01-08/12/2014 •Quy định chung xem trên website môn học 3 Giảng viên Bùi Trọng Tùng, Email: tungbt@soict.hust.edu.vn Địa chỉ: Phòng 801 – Nhà B1 – Đại học BKHN Website: 4 2
  3. 17/08/2014 BÀI 1. GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH JAVA Giới thiệu chung về Java Sử dụng trình biên dịch Java và máy ảo Java Các phần tử cơ bản trong Java Toán tử và biểu thức Một số lệnh vào ra cơ bản 5 1. GIỚI THIỆU CHUNG VỀ JAVA 6 3
  4. 17/08/2014 Lịch sử ngôn ngữ lập trình •Hợp ngữ oMOV, ADD, JMP, CMP oNgôn ngữ lập trình tuần tự oGần với ngôn ngữ máy oChương trình cồng kềnh, khó sửa lỗi, bảo trì •Ngôn ngữ lập trình hướng cấu trúc/thủ tục: oPascal, C oNgôn ngữ bậc cao, gần với ngôn ngữ tự nhiên oDễ viết oChương trình gồm các chương trình con (hàm, thủ tục) oDữ liệu và xử lý của hàm, thủ tục tách rời nhau oChương trình = Cấu trúc dữ liệu + Giải thuật 7 Ngôn ngữ lập trình hướng đối tượng •Chương trình gồm các đối tượng và tương tác giữa chúng Chương trình = Đối tượng + Thông điệp •Mô hình hóa đối tượng thực thành các đối tượng phần mềm: oDùng ngôn ngữ lập trình để mô tả đối tượng thực Máy ATM – Đối tượng thực* Mô hình hóa – Lớp (class) ATM Thuộc tính: Ngân hàng, Vị trí Thuộc tính: bank, location Hành động: Kiểm tra mã PIN, Rút Hàng động: userAuthenticated(), tiền, Chuyển khoản withdraw(), tranfer() (*) Trong ngữ cảnh này đề cập đến đối tượng máy ATM nói chung. Một đối tượng máy ATM cụ thể nào đó phải có thuộc tính cụ thể 8 4
  5. 17/08/2014 Ngôn ngữ lập trình Java •Java là một ngôn ngữ lập trình HĐT được phát triển bởi Sun Microsystems. •Java là một ngôn ngữ lập trình khá trẻ oBan đầu được sử dụng để xây dựng ứng dụng điều khiển các bộ xử lý bên trong các thiết bị điện tử dân dụng như máy điện thoại cầm tay, lò vi sóng oBắt đầu được sử dụng từ năm 1995 (với tên gọi là “Oak”) 9 Ngôn ngữ lập trình Java •Đơn giản oLoại bỏ con trỏ oKhông có goto, file header oLoại bỏ struct và union •Hướng đối tượng oJava được thiết kế xoay quanh mô hình hướng đối tượng. •Mạnh oChặt chẽ Loại bỏ các kiểu dữ liệu dễ gây lỗi •Độc lập phần cứng oViết một lần, chạy nhiều nơi (chỉ khác nhau trình thông dịch – máy ảo Java) 10 5
  6. 17/08/2014 Ngôn ngữ lập trình Java •Ngày nay, nhắc đến Java, không còn nhắc đến như một ngôn ngữ mà còn là một công nghệ, một nền tảng phát triển. oJava có một cộng đồng phát triển mạnh mẽ oMột tập hợp các thư viện với số lượng lớn (từ Sun và các nguồn khác) •Java là ngôn ngữ vừa biên dịch vừa thông dịch oBiên dịch: Mã nguồn được biên dịch bằng công cụ JAVAC để chuyển thành dạng ByteCode oThông dịch: Bytecode thực thi trên từng loại máy cụ thể nhờ chương trình thông dịch (nằm trong máy ảo Java) oNhằm mục đích viết một lần, chạy nhiều nơi 11 Ngôn ngữ lập trình Java 12 6
  7. 17/08/2014 Ngôn ngữ lập trình Java •J2SE (Java 2 Platform Standard Edition) oCung cấp các thành phần cốt lõi để xây dựng ứng dụng desktop- based oJRE: Java Runtime Environment: môi trường thực thi để chạy các ứng dụng Java •J2EE (Java 2 Platform Enterprise Edition) oXây dựng các ứng dụng hướng dịch vụ (service-oriented) oWeb service oỨng dụng doanh nghiệp •J2ME (Java 2 Platform Mobile Edition): xây dựng ứng dụng di động 13 Cài đặt trình biên dịch và môi trường thực thi •Download J2SE tại s/index.html •Cài đặt •Thiết lập biến môi trường This PC Properties Advanced system settings Environments Variables: - Tạo biến JAVA_HOME trong mục System Variables và đặt giá trị là thư mục cài đặt Java - Tạo(hoặc thêm) biến PATH: giá trị %JAVA_HOME%\bin;.; - Tạo (hoặc thêm) biến PATH: %JAVA_HOME%\bin;.; %JAVA_HOME%\include 14 7
  8. 17/08/2014 Kiểm tra Java đã được cài đặt đúng cách •Trên cửa sổ Command Line lần lượt gõ 2 lệnh: > javac –version > Java –version Nếu hai lệnh được thực hiện thành công, thông tin phiên bản Java sẽ xuất hiện Java được cài đặt đúng 15 Chương trình Java đầu tiên // The first Java program public class HelloWorld { //Phương thức main, được gọi đầu tiên khi chạy bất cứ ứng dụng Java nào public static void main (String[] args) { System.out.println(“Hello Java!”); } //Kết thúc phương thức main } //Kết thúc lớp HelloWorld 16 8
  9. 17/08/2014 Khai báo lớp Khai báo lớp có tên là HelloWorld // The first Java program public class HelloWorld { //Phương thức main, được gọi đầu tiên khi chạy bất cứ ứng dụng Java nào public static void main (String[] args) { System.out.println(“Hello Java!”); } //Kết thúc phương thức main } //Kết thúc lớp HelloWorld Khai bái một phương thức của lớp HelloWorld •Tạm thời, chúng ta chưa phân tích kỹ ý nghĩa của các khai báo này. Hãy để dành nó cho các bài sau. 17 Câu lệnh // The first Java program public class HelloWorld { //Phương thức main, được gọi đầu tiên khi chạy bất cứ ứng dụng Java nào public static void main (String[] args) { System.out.println(“Hello Java!”); } //Kết thúc phương thức main } //Kết thúc lớp HelloWorld •Thực hiện các thao tác của lớp, xử lý của phương thức •Kết thúc bằng dấu ; •Một câu lệnh Có thể viết trên 1 hoặc nhiều dòng •Ký hiệu để bao khối lệnh { } 18 9
  10. 17/08/2014 Chú thích // The first Java program public class HelloWorld { /*Phương thức main, được gọi đầu tiên khi chạy bất cứ ứng dụng Java nào*/ public static void main (String[] args) { System.out.println(“Hello Java!”); } //Kết thúc phương thức main } //Kết thúc lớp HelloWorld •Giải thích mã nguồn, các câu lệnh, các bước xử lý phức tạp trong chương trình: // chú thích trên một dòng /* chú thích trên một đoạn*/ •Không có ý nghĩa thực thi 19 Dịch chương trình •Sử dụng chương trình Notepad gõ lại đoạn lệnh trên o Bắt đầu tập thói quen lùi dòng cho các khối lệnh bao nhau •Lưu file mã nguồn có tên Test.java vào thư mục D:\Java\20141\W1 •Dịch: mở cửa sổ Command Line và gõ lệnh sau để dịch >javac D:\Java\20141\W1\Test.java •Lỗi dịch: “class HelloWorld is public, should be declared in a file named HelloWorld.java” o Nguyên nhân: Tên file mã nguồn khác tên lớp đã khai báo o Sửa: đặt lại tên file •Dịch thành công: dấu nhắc lệnh > xuất hiện trở lại. File mã nguồn được dịch thành file Byte Code có cùng tên và đuôi .class, cùng thư mục với file mã nguồn 20 10
  11. 17/08/2014 Chạy chương trình • Thực hiện lệnh: > java D:\Java\20141\W1\Test Chú ý: Có thể sẽ gặp thông báo lỗi “Could not find or load main class ” Khắc phục: chuyển vào thư mục chứa file .class >D: >cd .\Java\20141\W1 >java Test • Kết quả thực hiện System.out.println(): Hiển thị thông báo trên cửa sổ Console 21 Sửa lại phương thức main public static void main (String[] args) { myName = “Tung”; System.out.println(“Hello Java! I am ” + myName); } //Kết thúc phương thức main } //Kết thúc lớp HelloWorld •Lỗi dịch: •Nguyên nhân: chưa khai báo myName •Chúng ta sẽ xem xét các sửa trong phần sau. 22 11
  12. 17/08/2014 2. CÁC PHẦN TỬ CƠ BẢN CỦA JAVA 23 Từ khóa và định danh • Là những từ được Java quy định ý nghĩa và cách sử dụng • Định danh: xâu ký tự, xác định duy nhất một phần tử trong chương trình •Quy định với định danh: o Không đặt trùng với từ khóa o Không bắt đầu bằng chữ số oKý tự được phép sử dụng: chữ cái, chữ số, $, _ oPhân biệt chữ hoa, chữ thường 24 12
  13. 17/08/2014 Quy tắc “con lạc đà” • Biến số: bắt đầu bằng chữ thường, viết hoa chữ cái đầu tiên các từ còn lại • Hằng số: Toàn bộ bằng chữ hoa • Lớp: viết hoa chữ cái đầu tiên các từ • Thuộc tính, phương thức: bắt đầu bằng chữ thường, viết hoa chữ cái đầu tiên các từ còn lại • Gói: sử dụng chữ thường Biến số myName, numberOfStudent Hằng số MAX_LINE, USER_PARAMETER Lớp HelloWorld, Student Thuộc tính studentID, mark Phương thức setValue(), getValue(),sortByName() Gói sis.subject, sis.student 25 Các kiểu dữ liệu nguyên thủy Kiểu dữ liệu Kích Giá trị Giá trị Giá trị thước mặc định nhỏ nhất lớn nhất byte 8 0 -128 127 short 16 0 -32768 32767 int 32 0 -2147483648 2147483647 long 64 0L -2^63 (2^63) – 1 float 32 0.0f double 64 0.0d boolean Không false NA NA xác định char 16 \u0000 NA NA 26 13
  14. 17/08/2014 Toán tử số học 27 Toán tử nhị phân 28 14
  15. 17/08/2014 Toán tử nhị phân 29 Toán tử quan hệ 30 15
  16. 17/08/2014 Toán tử logic 31 Các toán tử khác • Toán tử rút gọn: +=, −=, *=, /= • Toán tử tăng 1 đơn vị: ++ • Toán tử giảm 1 đơn vị: − − • Toán tử điều kiện: ?: (boolean_expression)?true_expression:false_expression oNếu boolean_expression đúng, tính giá trị true-expression oNếu boolean_expression sai, tính giá trị false-expression 32 16
  17. 17/08/2014 Hằng số • Phần tử trong chương trình không thể thay đổi giá trị • Cú pháp: final DataType CONSTANT_NAME = Literal; •Trong đó: ofinal: từ khóa oDataType: Kiểu dữ liệu oCONSTANT_NAME: Tên hằng. Tuân thủ quy tắc định danh oLiterals : Giá trị hằng 33 Giá trị hằng (Literals) • Boolean: true, false •Số nguyên: oHệ cơ số 8: Bắt đầu bằng chữ số 0 Ví dụ: 012 = 001010(2) = 8 + 2 = 10(10) o Hệ cơ số 16: Bắt đầu bằng 0x Ví dụ: 0x2A = 00101010 = 2x16 + 10 = 42 o Kiểu dữ liệu long: Kết thúc bằng ký tự L hoặc l Ví dụ: 10L 34 17
  18. 17/08/2014 Giá trị hằng • Số thực: oMặc định có kiểu double o Kiểu float: Kết thúc bằng ký tự F hoặc f o Dạng dấu phảy động: Ký tự e (hoặc E) kèm theo số mũ Ví dụ: 1.2E7 • Ký tự: Đặt giữa dấu nháy đơn. Ví dụ: ‘a’ • Xâu ký tự: Đặt giữa dấu nháy kép Ví dụ: “SoICT-HUST” 35 Biến số • Là phần tử trong chương trình có thể thay đổi giá trị • Cú pháp: DataType varName1,varName2, ,varNameN; hoặc DataType varName1 = Literal1, ,varNameN = LiteralN; • Trong đó: o varName là tên biến, đặt theo quy tắc định danh oLiterral có thể là một biến khác đã được khai báo trước •Trước khi sử dụng trong biểu thức, biến phải được khởi tạo giá trị 36 18
  19. 17/08/2014 Toán tử gán • Cú pháp: variable = expression; • Biến variable và biểu thức expression nên có cùng kiểu dữ liệu •Trong thường hợp hai vế có kiểu dữ liệu khác nhau: oVế trái có kiểu dữ liệu “rộng” hơn: ép kiểu tự động oNgược lại: không hợp lệ. Nếu vẫn muốn thực hiện phép gán, cần ép kiểu •Trong có các giá trị khác kiểu, tất cả các giá trị được ép tự động thành kiểu rộng nhất 37 Toán tử gán (Ví dụ) long a = 1.2; //không hợp lệ long b = (long) 1.2; //hợp lệ int m = b/2; //không hợp lệ char ch = ‘a’; //hợp lệ int n = ch; //hợp lệ short k = ch; //không hợp lệ short p = (short) ch; //hợp lệ float x = 1.2; //không hợp lệ float y = 1.2f; //hợp lệ 38 19
  20. 17/08/2014 Hãy thử lại // The second Java program public class NewHelloWorld { //Phương thức main, được gọi đầu tiên khi chạy bất cứ ứng dụng Java nào public static void main (String[] args) { String myName = “Tung”; System.out.println(“Hello Java! I am ” + myName); } //Kết thúc phương thức main } //Kết thúc lớp HelloWorld 39 3. CÁC PHƯƠNG THỨC VÀO RA CƠ BẢN 40 20
  21. 17/08/2014 Hiển thị dữ liệu •Phương thức System.out.println(): Hiển thị dữ liệu và xuống dòng •Phương thức System.out.print(): Hiển thị dữ liệu •Phương thức System.out.printf(): Hiển thị dữ liệu có định dạng •Phương thức System.out.format(): Hiển thị dữ liệu có định dạng •Có thể dùng toán tử + để nối các dữ liệu khi hiển thị 41 Định dạng dữ liệu khi hiển thị •Dạng Boolean: %b •Dạng ký tự: %c •Dạng số nguyên: %d •Dạng số thực: %f •Dạng xâu ký tự: %s 42 21
  22. 17/08/2014 Nhập dữ liệu từ bàn phím • Khá phức tạp vì Java coi dữ liệu nhận được từ bàn phím là luồng vào •Thực hiện oĐọc dữ liệu vào bộ đệm: BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); oChuyển dữ liệu từ bộ đệm vào xâu String inValue = br.readLine( ); oChuyển dữ liệu từ xâu thành giá trị : sử dụng các lớp Giá trị kiểu int: Integer.parseInt(inValue) Giá trị kiểu long: Long.parseLong(inValue) Giá trị kiểu float: Float.parseFloat(inValue) Giá trị kiểu double: Double.parseDouble(inValue) 43 Ví dụ / The Addition class calculates the sum of two numbers */ import java.io.*; public class Addition { / The main method begins execution of Java application *@param args: input parameter */ public static void main (String[] args) throws IOException{ String inputData; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.print(“Enter the 1st number:”); inputData = br.readLine(); int number1 = Integer.parseInt(inputData); 44 22
  23. 17/08/2014 Ví dụ (tiếp) System.out.print(“Enter the 2nd number:”); inputData = br.readLine(); int number2 = Integer.parseInt(inputData); int sum = number1 + number2; System.out.println(“The sum of two numbers: ” + sum); } } 45 Ví dụ - Giải thích • Chú thích tạo tài liệu Javadoc: / Comment something */ • Sử dụng các gói thư viện được Java định nghĩa sẵn import somepakage ojava.io: Thư viện xuất nhập dữ liệu •Bỏ qua các ngoại lệ (lỗi) trong khi thực thi chương trình: throws someException oIOException: ngoại lệ xuất hiện khi xuất nhập dữ liệu 46 23
  24. 17/08/2014 Nhập dữ liệu – Lớp Scanner •Được cung cấp bởi thư viện java.ulti •Quét luồng dữ liệu người dùng nhập từ bàn phím và phân tách các giá trị có kiểu dữ liệu nguyên thủy hoặc xâu. •Rất hữu dụng import java.util.Scanner Scanner inputData = new Scanner(System.in); System.out.print(“Enter the 1st number:”); int number1 = inputData.nextInt(); System.out.print(“Enter the 2nd number:”); int number2 = inputData.nextInt(); int sum = number1 + number2; System.out.println(“The sum of two numbers: ” + sum); 47 24