Nßi dung giáo trình gãm 5 bài: - Bài 1: Giái thiáu ngôn ngữ lập trình - Bài 2: Kiểu, toán tử, lánh IF, SWITCH - Bài 3: MÁng và lánh lặp - Bài 4: Láp và đái tượng - Bài 5: Kế thừa Trong q
Trang 1ĀY BAN NHÂN DÂN THÀNH PHà Hâ CHÍ MINH
TR¯âNG CAO ĐÀNG BÁCH KHOA NAM SÀI GÒN
GIÁO TRÌNH MÔN HàC/MÔ ĐUN: L¾P TRÌNH CN BÀN NGÀNH/NGHÀ: TIN HàC ĀNG DĀNG
NGÀNH/ NGH À: TIN HàC ĀNG DĀNG
TRÌNH ĐÞ: CAO ĐÀNG
Ban hành kèm theo Quy ết định số: 459/QĐ-NSG, ngày 31 tháng 08 năm 2022
c ủa Hiệu trưởng Trường Cao Đẳng Bách Khoa Nam Sài Gòn
Tp.H ồ Chí Minh, nm 2022
Trang 3LâI GIàI THIÞU
Môn học này thußc khái kiến thức chuyên môn nghề trong chương trình đào t¿o ngành tin học ứng dÿng há cao đẳng Lập trình căn bÁn là môn học bắt bußc trong chương trình ngành Tin học ứng dÿng trình đß cao đẳng
Nßi dung giáo trình gãm 5 bài:
- Bài 1: Giái thiáu ngôn ngữ lập trình
- Bài 2: Kiểu, toán tử, lánh IF, SWITCH
Tp.HCM , ngày 31 tháng 08 năm 2022 Tham gia biên so¿n
1 Chā biên: ThS Bùi Thị Mai Châu
2 &&&&
3 &&&&
&&&&&
Trang 4MỤC LỤC
LâI GIàI THIàU 3
Bài 1: Giái thiáu ngôn ngữ lập trình 6
1.1 Giái thiáu ngôn ngữ 6
1.2 Biến, toán tử, hàm toán học và lánh nhập xuất 8
Bài tập: 18
Bài 2: Cấu trúc IF, SWITCH 22
2.1 Lánh IF 22
2.2 Lánh SWITCH 24
Bài tâp: 24
Bài 3: MÁng và lánh lặp 27
3.1 Lánh lặp 27
3.2 MÁng 30
Bài tập: 42
Bài 4: Láp và đái tượng 46
4.1 Láp và đái tượng 46
4.2 Phương thức 48
4.3 Package 52
Bài tập: 57
Bài 5: Kế thừa 60
5.1 Kế thừa 60
5.2 Láp và phương thức trừu tượng 72
Bài tập: 92
TÀI LIàU THAM KHÀO: 97
Trang 5GIÁO TRÌNH MÔN HàC/MÔ ĐUN
Tên môn hác/mô đun: L¾P TRÌNH WEB C¡ BÀN
Tên môn học: Lập trình căn bÁn
Māc tiêu môn hác:
1 Về kiến thức:
- Trình bày được các kiến thức cơ bÁn về ngôn ngữ lập trình;
- Phân biát các biến, cấu trúc dữ liáu, toán tử, biên dịch và thực thi chương trình, câu lánh, điều khiển;
- Áp dÿng các kiến thức cơ bÁn về lập trình trong viác giÁi quyết các bài toán đơn giÁn
Trang 6Nßi dung cÿa môn hác/mô đun:
Bài 1: Giái thißu ngôn ngữ l¿p trình
1 Mÿc tiêu:
- Trình bày được khái niám về biến, toán tử và các hàm toán học;
- Áp dÿng để viết mã và thi hành chương trình đơn giÁn
2 Nßi dung:
1.1 Giái thißu ngôn ngữ
Java là ngôn ngữ lập trình hưáng đái tượng (tựa C++) do Sun Microsystem đưa ra vào giữa thập niên 90
Chương trình viết bằng ngôn ngữ lập trình java có thể ch¿y trên bất kỳ há tháng nào có cài máy Áo java (Java Virtual Machine)
Ngôn ngữ lập trình Java do James Gosling và các công sự cāa Công ty Sun Microsystem phát triển
Đầu thập niên 90, Sun Microsystem tập hợp các nhà nghiên cứu thành lập nên nhóm đặt tên là Green Team Nhóm Green Team có trách nhiám xây dựng công nghá mái cho ngành đián tử tiêu dùng Để giÁi quyết vấn đề này nhóm nghiên cứu phát triển đã xây dựng mßt ngôn ngữ lập trình mái đặt tên là Oak tương tự như C++ nhưng lo¿i bß mßt sá tính năng nguy hiểm cāa C++ và có khÁ năng ch¿y trên nhiều nền phần cứng khác nhau Cùng lúc đó world wide web bắt đầu phát triển và Sun đã thấy được tiềm năng cāa ngôn ngữ Oak nên đã đầu tư cÁi tiến và phát triển Sau đó không lâu ngôn ngữ mái vái tên gọi là Java ra đãi và được giái thiáu năm 1995
Java là tên gọi cāa mßt hòn đÁo å Indonexia, Đây là nơi nhóm nghiên cứu phát triển đã chọn để đặt tên cho ngôn ngữ lập trình Java trong mßt chuyến đi tham quan
và làm viác trên hòn đÁo này Hòn đÁo Java này là nơi rất nổi tiếng vái nhiều khu vưãn trãng cafe, đó chính là lý do chúng ta thưãng thấy biểu tượng ly café trong nhiều sÁn phẩm phần mềm, công cÿ lập trình Java cāa Sun cũng như mßt sá hãng phần mềm khác đưa ra
Trang 7Mßt sá đặc điểm nổi bậc cāa ngôn ngữ lập trình Java
Máy Áo Java (JVM - Java Virtual Machine)
Tất cÁ các chương trình muán thực thi được thì phÁi được biên dịch ra mã máy
Mã máy cāa từng kiến trúc CPU cāa m̀i máy tính là khác nhau (tập lánh mã máy cāa CPU Intel, CPU Solarix, CPU Macintosh & là khác nhau), vì vậy trưác đây mßt chương trình sau khi được biên dịch xong chỉ có thể ch¿y được trên mßt kiến trúc CPU cÿ thể nào đó Đái vái CPU Intel chúng ta có thể ch¿y các há điều hành như Microsoft Windows, Unix, Linux, OS/2, & Chương trình thực thi được trên Windows được biên dịch dưái d¿ng file có đuôi EXE còn trên Linux thì được biên
dịch dưái d¿ng file có đuôi ELF, vì vậy trưác đây mßt chương trình ch¿y được trên Windows muán ch¿y được trên há điều hành khác như Linux chẳng h¿n thì phÁi chỉnh sửa và biên dịch l¿i Ngôn ngữ lập trình Java ra đãi, nhã vào máy Áo Java mà khó khăn nêu trên đã được khắc phÿc Mßt chương trình viết bằng ngôn ngữ lập trình Java sẽ được biên dịch ra mã cāa máy Áo java (mã java bytecode) Sau đó máy Áo Java chịu trách nhiám chuyển mã java bytecode thành mã máy tương ứng Sun Microsystem chịu trách nhiám phát triển các máy Áo Java ch¿y trên các há điều hành trên các kiến trúc CPU khác nhau
Thông dịch:
Java là mßt ngôn ngữ lập trình vừa biên dịch vừa thông dịch Chương trình nguãn viết bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên được biên dịch thành tập tin có đuôi *.class và sau đó sẽ được trình thông dịch thông dịch thành mã máy
Đßc lập nền:
Mßt chương trình viết bằng ngôn ngữ Java có thể ch¿y trên nhiều máy tính có
há điều hành khác nhau (Windows, Unix, Linux, &) mißn sao å đó có cài đặt máy Áo java (Java Virtual Machine) Viết mßt lần ch¿y mọi nơi (write once run anywhere) Hưáng đái tượng:
Hưáng đái tượng trong Java tương tự như C++ nhưng Java là mßt ngôn ngữ lập trình hưáng đái tượng hoàn toàn Tất cÁ mọi thứ đề cập đến trong Java đều liên quan đến các đái tượng được định ngh椃̀a trưác, thậm chí hàm chính cāa mßt chương
Trang 8trình viết bằng Java (đó là hàm main) cũng phÁi đặt bên trong mßt láp Hưáng đái tượng trong Java không có tính đa kế thừa (multi inheritance) như trong C++ mà thay vào đó Java đưa ra khái niám interface để h̀ trợ tính đa kế thừa Vấn đề này sẽ được bàn chi tiết trong chương 3
Đa nhiám - đa luãng (MultiTasking - Multithreading):
Java h̀ trợ lập trình đa nhiám, đa luãng cho phép nhiều tiến trình, tiểu trình
có thể ch¿y song song cùng mßt thãi điểm và tương tác vái nhau KhÁ chuyển (portable):
Chương trình ứng dÿng viết bằng ngôn ngữ Java chỉ cần ch¿y được trên máy
Áo Java là có thể ch¿y được trên bất kỳ máy tính, há điều hành nào có máy Áo Java
<Viết mßt lần, ch¿y mọi nơi= (Write Once, Run Anywhere)
H̀ trợ m¿nh cho viác phát triển ứng dÿng:
Công nghá Java phát triển m¿nh mẽ nhã vào <đ¿i gia Sun Microsystem= cung cấp nhiều công cÿ, thư vián lập trình phong phú h̀ trợ cho viác phát triển nhiều lo¿i hình ứng dÿng khác nhau cÿ thể như: J2SE (Java 2 Standard Edition) h̀ trợ phát triển những ứng dÿng đơn, ứng dÿng client-server; J2EE (Java 2 Enterprise Edition) h̀ trợ phát triển các ứng dÿng thương m¿i, J2ME (Java 2 Micro Edition) h̀ trợ phát triển các ứng dÿng trên các thiết bị di đßng, không dây, &
1.2 Bi¿n, toán tử, hàm toán hác và lßnh nh¿p xuất
Trang 9- Trong java, biến có thể được khai báo å bất kỳ nơi đâu trong chương trình Cách khai báo
<kiểu_dữ_liáu> <tên_biến>;
<kiểu_dữ_liáu> <tên_biến> = <giá_trị>;
Gán giá trị cho biến
<tên_biến> = <giá_trị>;
Biến công cßng (toàn cÿc): là biến có thể truy xuất å khắp nơi trong chương trình, thưãng được khai báo dùng từ khóa public, hoặc đặt chúng trong mßt class
Biến cÿc bß: là biến chỉ có thể truy xuất trong khái lánh nó khai báo
Lưu ý: Trong ngôn ngữ lập trình java có phân biát chữ in hoa và in thưãng Vì vậy chúng ta cần lưu ý khi đặt tên cho các đái tương dữ liáu cũng như các xử lý trong chương trình
Trang 11Kích
thưác (bytes)
mặc định
- Kiểu mặc định cāa các sá nguyên là kiểu int
- Các sá nguyên kiểu byte và short rất ít khi được dùng
- Trong java không có kiểu sá nguyên không dấu như trong ngôn ngữ C/C++
Khai báo và khåi t¿o giá trị cho các biến kiểu nguyên:
int x = 0;
long y = 100;
Mßt sá lưu ý đái vái các phép toán trên sá nguyên:
- Nếu hai toán h¿ng kiểu long thì kết quÁ là kiểu long Mßt trong hai toán h¿ng không phÁi kiểu long sẽ được chuyển thành kiểu long trưác khi thực hián phép toán
Trang 12- Nếu hai toán h¿ng đầu không phÁi kiểu long thì phép tính sẽ thực hián vái kiểu int
- Các toán h¿ng kiểu byte hay short sẽ được chuyển sang kiểu int trưác khi thực hián phép toán
- Trong java không thể chuyển biến kiểu int và kiểu boolean như trong ngôn ngữ C/C++
Ví dÿ: có đo¿n chương trình như sau boolean b = false; if (b == 0)
{
System.out.println("Xin chao");
}
Lúc biên dịch đo¿n chương trình trên trình dịch sẽ báo l̀i: không được phép
so sánh biến kiểu boolean vái mßt giá trị kiểu int
Ki ểu dấu chấm đßng:
Đái vái kiểu dấu chấm đßng hay kiểu thực, java h̀ trợ hai kiểu dữ liáu là float
và double
Kiểu float có kích thưác 4 byte và giá trị mặc định là 0.0f
Kiểu double có kích thưác 8 byte và giá trị mặc định là 0.0d
Sá kiểu dấu chấm đßng không có giá trị nhß nhất cũng không có giá trị lán nhất Chúng có thể nhận các giá trị:
Trang 13Mßt sá lưu ý đái vái các phép toán trên sá dấu chấm đßng:
- Nếu m̀i toán h¿ng đều có kiểu dấn chấm đßng thì phép toán chuyển thành phép toán dấu chấm đßng
- Nếu có mßt toán h¿ng là double thì các toán h¿ng còn l¿i sẽ được chuyển thành kiểu double trưác khi thực hián phép toán
- Biến kiểu float và double có thể ép chuyển sang kiểu dữ liáu khác trừ kiểu boolean
Ki ểu ký tự (char):
Kiểu ký tự trong ngôn ngữ lập trình java có kích thưác là 2 bytes và chỉ dùng
để biểu dißn các ký tự trong bß mã Unicode Như vậy kiểu char trong java có thể biểu dißn tất cÁ 216 = 65536 ký tự khác nhau
Giá trị mặc định cho mßt biến kiểu char là null
Ki ểu lu¿n lý (boolean):
- Kiểu boolean chỉ nhận 1 trong 2 giá trị: true hoặc false
- Trong java kiểu boolean không thể chuyển thành kiểu nguyên và ngược l¿i
- Giá trị mặc định cāa kiểu boolean là false
H ¿ng:
- Hằng là mßt giá trị bất biến trong chương trình
- Tên hằng được đặt theo qui ưác giáng như tên biến
- Hằng sá nguyên: trưãng hợp giá trị hằng å d¿ng long ta thêm vào cuái chùi sá
chữ <l= hay <L= (ví dÿ: 1L)
- Hằng sá thực: truãng hợp giá trị hằng có kiểu float ta thêm tiếp v椃̀ ngữ <f= hay
<F=, còn kiểu sá double thì ta thêm tiếp v椃̀ ngữ <d= hay <D=
- Hằng Boolean: java có 2 hằng boolean là true, false
- Hằng ký tự: là mßt ký tự đơn nằm giữa nằm giữa 2 dấu ngoặc đơn
Trang 14L ßnh, khßi lßnh trong java :
Giáng như trong ngôn ngữ C, các câu lánh trong java kết thúc bằng mßt dấu chấm phẩy (;)
Mßt khái lánh là đo¿n chương trình gãm hai lánh trå lên và được bắt đầu bằng dấu
må ngoặc nhọn ({) và kết thúc bằng dấu đóng ngoặc nhọc (})
Bên trong mßt khái lánh có thể chứa mßt hay nhiều lánh hoặc chứa các khái lánh khác
Trang 16&& AND (biểu thức logic)
! NOT (biểu thức logic)
Trang 17int iCount = (int) fNum; // (iCount = 2)
Toán t ử điÁu kißn:
Cú pháp: <điều kián> ? <biểu thức 1> : < biểu thức 2> Nếu điều kián đúng thì có giá trị, hay thực hián <biểu thức 1>, còn ngược l¿i là <biểu thức 2> <điều kián>: là mßt biểu thức logic
<biểu thức 1>, <biểu thức 2>: có thể là hai giá trị, hai biểu thức hoặc hai hành đßng
Trang 18> >= < <=
== !=
&
^
|
&&
||
?:
= <toántử>=
Thấp nhất
1.2.4 Lánh xuất ra màn hình và nhập từ bàn phím
Bài tập:
Câu 1 Kích thưác cāa 1 Char là bao nhiêu?
a 4 bit b 7 bit c 8 bit d 16 bit Câu 2 1 class không thể được khai báo å chế đß
a Static b Private c Default
Câu 3 Kết quÁ sau khi biên dịch mã int a = 3.5
a Compilation error
b Runtime error
c 3.5
d 3
Câu 4 Kết quÁ khi biên dịch mã int a1 = 5; double a2 = (float)a1
Trang 19b Runtime error
c No error
Câu 5 Kết quÁ sau khi biên dịch mã int a = 9/0
a Compilatinon error: Phép tính chia phÁi nằm trong cú pháp try
b Compilation error: DivideByZeroException
c Runtime Exception
d No Error: kết quÁ là NaN
Câu 6 Kết quÁ sau khi biên dịch mã: float a = 9/0
a Compilation error: Phép tính chia phÁi nằm trong cú pháp try
b Compilation error: DivideByZeroException
c Runtime Exception
d No Error: Kết quÁ là NaN
Câu 7: Đâu là câu SAI về ngôn ngữ Java?
a Ngôn ngữ Java có phân biát chữ hoa – chữ thưãng
b Java là ngôn ngữ lập trình hưáng đái tượng
c Dấu chấm phẩy được sử dÿng để kết thúc lánh trong java
d Chương trình viết bằng Java chỉ có thể ch¿y trên há điều hành win
Câu 8: Đâu không phÁi là mßt kiểu dữ liáu nguyên thāy trong Java?
a double b int c long d long float
Câu 9: Trong câu lánh sau: public static void main(String[] agrs) thì phần tử agrs[0] chứa giá trị gì?
a Tên cāa chương trình
b Sá lượng tham sá
Trang 20c Tham sá đầu tiên cāa danh sách tham sá
d Không câu nào đúng
Câu 10: Phương thức next() cāa láp Scanner dùng để làm gì?
a Nhập mßt sá nguyên
b Nhập mßt ký tự
c Nhập mßt chùi
d Không có phương thức này
Câu 11: Muán ch¿y được chương trình java, chỉ cần cài phần mền nào sau đây?
a Netbeans b Eclipse c JDK d Java Platform
Câu 12: Gói nào trong java chứa láp Scanner dùng để nhập dữ liáu từ bàn phím?
a java.net b java.io c java.util d java.awt
Câu 13: Phương thức nextLine() thußc láp nào ?
A String B Scanner C Integer D System
Câu 14: Tên đầu tiên cāa Java là gì?
Câu 15: Đâu KHÔNG phÁi là thành phần trong cấu trúc cāa láp trong java
A Tên láp B Thußc tính C Phương thức D Biến Câu 16: Đọc đo¿n mã lánh sau Sau khi thực thi chương trình sẽ in ra kết quÁ gì ? public class Main {
public static void main(String[] args) {
int x = -1;
String y = x + 3;
System.out.println("x = " + x + "y = " + y);
Trang 22Bài 2: Cấu trúc IF, SWITCH
1 Mÿc tiêu:
- Mô tÁ được các kiểu dữ liáu;
- Trình bày được lánh có cấu trúc IF, SWITCH;
- Vận dÿng các kiểu dữ liáu, toán tử, lánh IF và SWITCH để giÁi các bài toán liên
Lánh if-else cũng kiểm tra giá trị d¿ng boolean cāa điều kián Nếu giá trị điều
kián là True thì chỉ có khái lánh sau if sẽ được thực hián, nếu là False thì chỉ có khái lánh sau else được thực hián
Trang 23Cú pháp:
if (condition1) {
// khái lánh này được thực thi
// nếu condition1 là true
} else if (condition2) {
// khái lánh này được thực thi
// nếu condition2 là true
} else if (condition3) {
// khái lánh này được thực thi
// nếu condition3 là true
}
else {
// khái lánh này được thực thi
// nếu tất cÁ những điều kián trên là false
Trang 241 Kiểm tra sá chẵn hay sá lẻ trong Java
2 Kiểm tra năm nhuận trong java
int year;
Scanner scan = new Scanner(System.in);
System.out.println("Nhập vào năm b¿n cần kiểm tra:");
year = scan.nextInt();
scan.close();
boolean isLeap = false;
if(year % 4 == 0)//chia hết cho 4 là năm nhuận
{
Trang 25System.out.println(year + " không phÁi là năm nhuận.");
3 Tìm phần nguyên và phần dư trong java
Scanner scanner = new Scanner(System.in);
System.out.println("Nhập vào sá thứ nhất: ");
int num1 = scanner.nextInt();
System.out.println("Nhập vào sá thứ hai: ");
int num2 = scanner.nextInt();
int phanNg = num1 / num2;
int phanDu = num1 % num2;
System.out.println("Phần nguyên là: " + phanNg);
System.out.println("Phần dư là: " + phanDu);
4 T¿o máy tính bằng Switch Case trong Java
Trang 26double num1, num2;
Scanner scanner = new Scanner(System.in);
Trang 27Bài 3: MÁng và lßnh lặp
1 Mÿc tiêu:
- Trình bày được cấu trúc lặp, ngắt vòng và mÁng;
- Áp dÿng các cấu trúc lặp, ngắt vòng và mÁng để giÁi quyết các bài toán liên quan
- Điều_kián_lặp là biểu thức để xác định điều kián lặp Biểu thức này phÁi trÁ
về giá trị là true hoặc false
- Các lánh nằm trong cặp dấu {} là thân cāa vòng lặp
Cách ho¿t đßng:
- Đầu tiên, vòng lặp while sẽ tính giá trị cāa biểu thức điều_kián_lặp Khi biểu thức này có giá trị đúng (true) thì những lánh nằm trong thân cāa vòng lặp sẽ được thực hián; sau khi thực hián xong các lánh này thì biểu thức điều_kián_lặp được kiểm tra l¿i để quyết định có lặp tiếp hay không
Trang 28- Như vậy, những lánh nằm trong thân vòng lặp sẽ lần lượt được làm đi làm l¿i nhiều lần trong khi biểu thức điều_kián_lặp còn có giá trị đúng Nếu đến mßt lúc nào đó biểu thức điều_kián_lặp có giá trị sai (false) thì các lánh trong thân vòng lặp sẽ không được thực hián và vòng lặp while sẽ kết thúc
D ¿ng 2: do { & } while;
Công dÿng:
Vòng lặp do - while là cấu trúc điều khiển lặp được dùng để thực hián mßt lánh hay mßt khái lánh vái sá lần lặp chưa xác định trưác nhưng khác vái while, cấu trúc do - while chỉ kiểm tra điều kián lặp sau khi thân vòng lặp đã được thực hián mßt lần
- Điều_kián_lặp là biểu thức để xác định điều kián lặp Biểu thức này phÁi trÁ
về giá trị là đúng (true) hoặc sai (false)
- Các lánh nằm trong cặp dấu {} là thân cāa vòng lặp
Cách ho¿t đßng:
Đầu tiên, các lánh nằm trong thân cāa vòng lặp do - while sẽ được thực hián Sau khi thực hián xong các lánh này thì biểu thức điều_kián_lặp sẽ được kiểm tra: nếu biểu thức này có giá trị đúng (true) thì tiếp tÿc quay l¿i thực hián các lánh trong thân vòng lặp Nếu đến mßt lúc nào đó biểu thức điều_kián_lặp có giá trị sai (false) thì các lánh trong thân vòng lặp sẽ không được thực hián và vòng lặp do - while sẽ kết thúc
D ¿ng 3: for (&)
Trang 29- Biểu_thức_1 là biểu thức tính ra giá trị khåi đầu cho biến cāa for
- Biểu_thức_2 là biểu thức tính ra giá trị điều kián lặp cāa for
- Biểu_thức_3 là bưác nhÁy cāa biến sau m̀i lần lặp
- Các lánh là lánh thực hián trong thân cāa vòng lặp for
Cách ho¿t đßng:
- Bưác 1: Các lánh å biểu_thức_1 được thực hián trưác tiên Trong biểu thức này có thể có nhiều biểu thức đơn và viết ngăn cách nhau båi dấu phẩy
- Bưác 2: Kiểm tra giá trị cāa biểu_thức_2 (điều kián lặp) Nếu biểu thức này
có giá trị đúng (true) thì chuyển sang Bưác 3, ngược l¿i thì chuyển đến Bưác
6
- Bưác 3: Lần lượt thực hián các lánh trong thân vòng lặp
- Bưác 4: Thực hián các lánh trong biểu_thức_3 Trong biểu thức này có thể có nhiều biểu thức đơn và viết ngăn cách nhau båi dấu phẩy
- Bưác 5: Quay l¿i Bưác 2
Trang 30- Bưác 6: Thực hián các lánh bên ngoài vòng lặp for
Cấu trúc lßnh nhÁy (jump)
L ßnh break: trong cấu trúc switch chúng ta dùng câu lánh break để thoát
thßi cấu trúc switch trong cùng chứa nó Tương tự như vậy, trong cấu trúc lặp, câu lánh break dùng để thóat khßi cấu trúc lặp trong cùng chứa nó
L ßnh continue: dùng để tiếp tÿc vòng lặp trong cùng chứa nó (ngược vái
break)
Nhãn (label):
Không giáng như C/C++, Java không h̀ trợ lánh goto để nhÁy đến 1 vị trí
nào đó cāa chương trình Java dùng k¿t hÿp nhãn (label) vái từ khóa break và continue để thay thế cho lánh goto Ví dụ: label: for (…)
Lánh <label:= xác định vị trí cāa nhãn và xem như tên cāa vòng lặp ngoài Nếu <biểu
th ức điều kiện> đúng thì lánh break label sẽ thực hián viác nhÁy ra khßi vòng lặp có nhãn là <label=, ngược l¿i sẽ tiếp tÿc vòng lặp có nhãn <label= (khác vái break và continue thông thưãng chỉ thoát khßi hay tiếp tÿc vòng lặp trong cùng chứa nó.)
3.2 MÁng
Kiểu dữ liệu mảng
Như chúng ta đã biết Java có 2 kiểu dữ liáu
- Kiểu dữ liáu cơ så (Primitive data type)
- Kiểu dữ liáu tham chiếu hay dẫn xuất (reference data type): thưãng có 3 kiểu: o Kiểu mÁng o Kiểu láp o Kiểu giao tiếp(interface)
Trang 31ä đây chúng ta sẽ tìm hiểu mßt sá vấn đề cơ bÁn liên quan đền kiểu mÁng Kiểu
láp(class) và giao tiếp(interface) chúng ta sẽ tìm hiểu chi tiết trong chương 3 và các chương sau
Khái ni ßm mÁng:
MÁng là tập hợp nhiều phần tử có cùng tên, cùng kiểu dữ liáu và m̀i phần
tử trong mÁng được truy xuất thông qua chỉ sá cāa nó trong mÁng
Khai báo m Áng:
<kiểu dữ liáu> <tên mÁng>[];
hoặc <kiểu dữ liáu>[] <tên mÁng>;
Ví dụ:
int arrInt[];
hoặc int[] arrInt;
int[] arrInt1, arrInt2, arrInt3;
C ấp phát bß nhá cho mÁng:
Không giáng như trong C, C++ kích thưác cāa mÁng được xác định khi khai báo Chẳng h¿n như:
int arrInt[100]; // Khai báo náy trong Java s ẽ bị báo lỗi - Để cấp phát bß
nhá cho mÁng trong Java ta cần dùng từ khóa new (Tất cÁ trong Java đều thông qua các đái tượng) Chẳng h¿n để cấp phát vùng nhá cho mÁng trong Java ta làm như sau:
int arrInt = new int[100];
Kh ởi t¿o mÁng:
Chúng ta có thể khåi t¿o giá trị ban đầu cho các phần tử cāa
mÁng khi nó được khai báo
Ví dụ:
int arrInt[] = {1, 2, 3};
Trang 32char arrChar[] = {8a9, 8b9, 8c9};
String arrStrng[] = {<ABC=, <EFG=,
8GHI9};
Truy c ¿p mÁng:
Chỉ sá mÁng trong Java bắt đầu tư 0 Vì vậy phần tử đầu tiên có chỉ sá là 0,
và phần tử thứ n có chỉ sá là n-1 Các phần tử cāa mÁng được truy xuất thông qua chỉ sá cāa nó đặt giữa cặp dấu ngoặc vuông ([])
Ví d ụ:
int arrInt[] = {1, 2, 3}; int x = arrInt[0]; // x s ẽ có giá trị là 1
int y = arrInt[1]; // y s ẽ có giá trị là 2
int z = arrInt[2]; // z s ẽ có giá trị là 3
L°u ý: Trong nhưng ngôn ngữ lập trình khác (C chẳng h¿n), mßt chùi được xem
như mßt mÁng các ký tự Trong java thì khác, java cung cấp mßt láp String để làm viác vái đái tượng dữ liáu chùi cùng khác thao tác trên đái tượng dữ liáu này
Trang 33Ví d ụ 2: Nhập dữ liáu sá import java.io.*; class inputNum
{ public static void main(String[] args)
Trang 34public static void main(String args[])
{ public static void main(String args[])
{ int nums[] = new int[10]; int min, max;
for(int i=1; i < 10; i++)
Trang 35if(nums[i] < min) min = nums[i];
if(nums[i] > max) max = nums[i];
+ max);
}
}
Ví d ụ 5: chương trình minh họa mßt l̀i tham chiếu đến phần tử bên ngoài (vuợt
quá) kích thưác mÁng class ArrayErr
{ public static void main(String args[])
{ int sample[] = new int[10];
int i;
Trang 36for(i = 0; i < 100; i = i+1) sample[i] = i;
int a, b, t; int size;
size = 10; // number of elements to sort // display original array System.out.print("Original array is:");
for(int i=0; i < size; i++) System.out.print(" " + nums[i]);
System.out.println(); // This is the Bubble sort for(a=1; a < size; a++) for(b=size-1; b >= a; b ) { if(nums[b-1] > nums[b])
{ // if out of order // exchange elements t = nums[b-1];
Trang 37// display sorted array
System.out.print("Sorted array is:"); for(int i=0; i < size; i++) System.out.print(" " + nums[i]);
Trang 38Ví dụ 9: Minh họa mßt sá thao tác cơ bÁn trên chùi // Chuong trinh minh
hoa cac thao tac tren chuoi ky tu class StrOps
Trang 39// Hien thi chuoi str1, moi lan mot ky tu
System.out.println(); for(int i=0; i < str1.length();
System.out.println("str4:" + str4);
Trang 40System.out.println("Vi tri xuat hien dau tien cua chuoi con 'Mot' trong str4: " + idx);
Ví dụ 10: chương trình nhập vào mßt chùi và in ra chùi nghịch đÁo cāa chùi
nhập import java.lang.String; import java.io.*; public class InverstString
{ public static void main(String arg[])
{ System.out.println("\n *** CHUONG TRINH IN