Giới thiệu về lập trình Java
(dành cho người mới và lập trình viên lần đầu)
JDK
Bạn nên đã cài đặt Bộ công cụ phát triển Java (JDK) và viết chương trình "Hello-world". Nếu không, hãy đọc " Cách cài đặt JDK ".
Trình soạn thảo và biên dịch code (IDE)
KHÔNG sử dụng Notepad (Windows) hoặc TextEdit (macOS) để lập trình. Cài đặt trình soạn thảo văn bản lập trình , làm nổi bật màu cú pháp. Ví dụ,
- IntelliJ IDEA
- NetBeans
- Eclipse
1. Bắt đầu - Chương trình Java đầu tiên của bạn
Chúng ta hãy xem lại chương trình "Hello-world" in thông báo " Hello, world!
" tới bảng điều khiển hiển thị.
Bước 1: Viết mã nguồn: Nhập các mã nguồn sau, định nghĩa một lớp có tên là " Hello
", sử dụng trình soạn thảo văn bản lập trình. Không nhập số dòng (trên khung bên trái), được thêm vào để hỗ trợ giải thích.
Lưu tệp nguồn dưới dạng " Hello.java
". Một tệp nguồn Java phải được lưu với phần mở rộng tệp là " .java
". Tên tệp phải giống với tên lớp - trong trường hợp này là " Hello
". Tên tệp và tên lớp là phân biệt chữ hoa chữ thường .
1
2
3
4
5
6
7
8
|
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
|
Bước 2: Biên dịch mã nguồn: Biên dịch mã nguồn " Hello.java
" thành mã byte Java (hoặc mã máy) " Hello.class
" bằng cách sử dụng trình biên dịch Java của JDK " javac
".
Khởi động một Shell Shell (Windows) hoặc Terminal (UNIX / Linux / macOS) và ban hành các lệnh sau:
javac Hello.java
Bước 3: Chạy Chương trình: Chạy mã máy bằng cách sử dụng Java Runtime của JDK " java
", bằng cách ban hành lệnh này:
java Hello
Hello, world!
Làm thế nào nó hoạt động
/ * ...... * /
// ... cho đến khi kết thúc dòng hiện tại
Đây được gọi là chú thích. Chú thích KHÔNG được thực thi và bị bỏ qua bởi trình biên dịch. Nhưng nó cung cấp lời giải thích và tài liệu hữu ích cho độc giả của bạn (và cho chính bạn ba ngày sau đó). Có hai loại ý kiến:
- Chú thích nhiều dòng : bắt đầu bằng
/*
và kết thúc bằng */
, và có thể kéo dài hơn một dòng (như trong dòng 1-3).
- Chú thích cuối dòng (một dòng) : bắt đầu bằng
//
và kéo dài cho đến hết dòng hiện tại (như trong dòng 4, 5 và 6).
public class Hello {
......
}
Đơn vị cơ bản của chương trình Java là một lớp . Một lớp có tên " Hello
" được định nghĩa thông qua từ khóa " class
" trong Dòng 4-8. Các dấu ngoặc nhọn {......}
bao quanh phần thân của lớp.
Trong Java, tên của tệp nguồn phải giống với tên của lớp có phần mở rộng tệp bắt buộc là " .java
". Do đó, tệp này PHẢI được lưu dưới dạng " Hello.java
" - phân biệt chữ hoa chữ thường.
public static void main(String[] args) {
......
}
Dòng 5-7 định nghĩa main()
phương thức , là điểm vào để thực hiện chương trình. Một lần nữa, dấu ngoặc nhọn {......}
bao quanh phần thân của phương thức, chứa các câu lệnh lập trình.
System.out.println("Hello, world!");
Trong Dòng 6, câu lệnh lập trình System.out.println("Hello, world!")
được sử dụng để in chuỗi " Hello, world!
" đến bảng điều khiển hiển thị. Một chuỗi được bao quanh bởi một cặp dấu ngoặc kép và chứa các văn bản. Các văn bản sẽ được in như nó vốn có, mà không có dấu ngoặc kép. Một câu lệnh trong lập trình kết thúc bằng dấu chấm phẩy ( ;
).
2. Java Programming Steps
Các bước viết chương trình Java được minh họa như trên:
Bước 1: Viết mã nguồn " Xxx.java
".
Bước 2: Biên dịch mã nguồn " Xxx.java
" thành mã byte di động Java (hoặc mã máy) "Xxx.class
"bằng trình biên dịch Java của JDK bằng cách ban hành lệnh" javac Xxx.java
".
Bước 3: Chạy mã byte được biên dịch " Xxx.class
", sử dụng Java Runtime của JDK bằng cách ban hành lệnh " java Xxx
".
3. Kiến trúc máy tính
Các Central Processing Unit (CPU) là trái tim của một máy tính, mà đóng vai trò như bộ điều khiển tổng thể của hệ thống máy tính. Nó tìm nạp các chương trình / dữ liệu từ bộ nhớ chính và thực thi các chương trình. Nó thực hiện các phép toán số học và logic (như cộng và nhân).
Các bộ nhớ chính lưu trữ các chương trình và dữ liệu để thực hiện bởi CPU. Nó bao gồm RAM (Bộ nhớ truy cập ngẫu nhiên) và ROM (Bộ nhớ chỉ đọc). RAM rất dễ bay hơi, làm mất tất cả nội dung của nó khi tắt nguồn. ROM không dễ bay hơi, nó giữ lại nội dung của nó khi tắt nguồn. ROM chỉ đọc và nội dung của nó không thể thay đổi khi được khởi tạo. RAM là đọc-ghi. RAM và ROM đắt tiền. Do đó, số lượng của họ là khá hạn chế.
Các bộ nhớ thứ cấp , chẳng hạn như ổ đĩa và flash, ít tốn kém và được sử dụng cho dung lượng và vĩnh viễn lưu trữ các chương trình và dữ liệu (bao gồm cả văn bản, hình ảnh và video). Tuy nhiên, CPU chỉ có thể chạy các chương trình từ bộ nhớ chính, không phải bộ nhớ phụ.
Khi bật nguồn, một chương trình nhỏ được lưu trong ROM sẽ được thực thi để tìm nạp các chương trình thiết yếu (được gọi là hệ điều hành) từ bộ nhớ phụ sang bộ nhớ chính, trong một quá trình được gọi là khởi động . Khi hệ điều hành được tải vào bộ nhớ chính, máy tính đã sẵn sàng để sử dụng. Đây là, nó đã sẵn sàng để tải chương trình mong muốn từ bộ nhớ phụ sang bộ nhớ chính để thực hiện theo lệnh của người dùng.
CPU có thể đọc dữ liệu từ các thiết bị Đầu vào (như bàn phím hoặc bàn phím cảm ứng) và ghi dữ liệu vào các thiết bị Đầu ra (như màn hình hoặc máy in). Nó cũng có thể đọc / ghi dữ liệu thông qua các giao diện mạng (có dây hoặc không dây).
Bạn làm việc như một lập trình viên là viết chương trình, được CPU thực thi để hoàn thành một nhiệm vụ cụ thể.
4. Thuật ngữ và cú pháp Java
Chú thích nhiều dòng bắt đầu bằng /*
và kết thúc bằng */
, và có thể kéo dài nhiều dòng. Một nhận xét cuối dòng (một dòng) bắt đầu bằng //
và kéo dài đến cuối dòng hiện tại. Nhận xét KHÔNG phải là câu lệnh thực thi và bị trình biên dịch bỏ qua. Nhưng họ cung cấp giải thích và tài liệu hữu ích. Tôi thực sự khuyên bạn nên viết bình luận một cách tự do để giải thích suy nghĩ và logic của bạn.
Tuyên bố : Một tuyên bố lập trình thực hiện một phần của hành động lập trình. Nó được chấm dứt bởi dấu chấm phẩy ( ;
), giống như một câu tiếng Anh được kết thúc bằng một dấu chấm, như trong Dòng 6.
Khối : Khối là một nhóm các câu lệnh lập trình được bao quanh bởi một cặp dấu ngoặc nhọn {}
. Nhóm báo cáo này được coi là một đơn vị. Có hai khối trong chương trình trên. Một chứa cơ thể của lớp Hello
. Cái kia chứa phần thân của main()
phương thức. Không cần phải đặt dấu chấm phẩy sau khi đóng dấu ngoặc.
Khoảng trắng : Trống, tab và dòng mới được gọi chung là khoảng trắng . Các khoảng trắng bổ sung được bỏ qua, nghĩa là chỉ cần một khoảng trắng để tách các mã thông báo. Tuy nhiên, khoảng trắng thêm cải thiện khả năng đọc và tôi thực sự khuyên bạn nên sử dụng thêm khoảng trắng và dòng mới để cải thiện khả năng đọc mã của bạn.
Phân biệt chữ hoa chữ thường : Java phân biệt chữ hoa chữ thường - ROSE KHÔNG phải là hoa hồng và KHÔNG phải là hoa hồng . Tên tệp , giống như tên lớp, cũng phân biệt chữ hoa chữ thường.
5. Mẫu chương trình Java
Bạn có thể sử dụng mẫu sau để viết chương trình Java của mình. Chọn một "Tên lớp " có ý nghĩa phản ánh mục đích của chương trình của bạn và viết các câu lệnh lập trình của bạn bên trong phần thân của main()
phương thức. Đừng lo lắng về các điều khoản và từ khóa khác ngay bây giờ. Tôi sẽ giải thích chúng trong khóa học do. Cung cấp ý kiến trong chương trình của bạn!
1
2
3
4
5
6
7
8
|
public class Classname {
public static void main(String[] args) {
// Your programming statements here!!!
}
}
|
6. Xuất ra thông qua System.out.println () và System.out.print ()
Bạn có thể sử dụng System.out.println()
(dòng in) hoặc System.out.print()
để in tin nhắn văn bản đến bảng điều khiển hiển thị:
System.out.println(aString)
(dòng in) in aString
và đưa con trỏ đến đầu dòng tiếp theo.
System.out.print(aString)
in aString
nhưng đặt con trỏ sau chuỗi in.
System.out.println()
không có tham số in một dòng mới .
Hãy thử chương trình sau đây và giải thích đầu ra được tạo ra:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public class PrintTest {
public static void main(String[] args) {
System.out.println("Hello world!");
System.out.println("Hello world again!");
System.out.println();
System.out.print("Hello world!");
System.out.print("Hello world again!");
System.out.println();
System.out.print("Hello,");
System.out.print(" ");
System.out.println("world!");
System.out.println("Hello, world!");
}
}
|
Lưu mã nguồn là " PrintTest.java
" (giống với tên lớp). Biên dịch và chạy chương trình.
Các đầu ra dự kiến là:
Hello world!
Hello world again!
Hello world!Hello world again!
Hello, world!
Hello, world!
Bài tập sử dụng System.out.println ()
- Viết 4 chương trình, được gọi là
PrintCheckerPattern
, PrintSquarePattern
, PrintTriangularPattern
và PrintStarPattern
in mỗi các mẫu sau. Sử dụng câu lệnh ONE System.out.println(...)
(dòng in) cho MACHI LINE của đầu ra. Hãy lưu ý rằng bạn cần in các khoảng trống trước.
* * * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * * * * * *
(a) (b) (c) (d)
- Viết chương trình được gọi
PrintSheepPattern
để in mẫu sau:
'__'
(oo)
/========//
/ || @@ ||
* ||----||
VV VV
'' ''
7. Hãy viết một chương trình để thêm một vài số
Hãy để chúng tôi viết chương trình để thêm số nguyên và hiển thị tổng của chúng, như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class FiveIntegerSum {
public static void main(String[] args) {
int number1 = 11;
int number2 = 22;
int number3 = 33;
int number4 = 44;
int number5 = 55;
int sum;
sum = number1 + number2 + number3 + number4 + number5;
System.out.print("The sum is ");
System.out.println(sum);
}
}
|
Lưu mã nguồn là " FiveIntegerSum.java
" (giống với tên lớp). Biên dịch và chạy chương trình.
Đầu ra dự kiến là:
The sum is 165
Làm thế nào nó hoạt động?
int number1 = 11;
int number2 = 22;
int number3 = 33;
int number4 = 44;
int number5 = 55;
Phần trên khai báo năm số nguyên int
(số nguyên) biến được gọi là number1
, number2
, number3
, number4
, và number5
; và gán các giá trị tương ứng là 11, 22, 33, 44 và 55 cho các biến, thông qua cái gọi là toán tử gán '='
.
Ngoài ra, bạn có thể khai báo nhiều biến trong một câu lệnh được phân tách bằng dấu phẩy, ví dụ:
int number1 = 11, number2 = 22, number3 = 33, number4 = 44, number5 = 55;
int sum;
khai báo một biến int
(số nguyên) được gọi sum
, mà không gán giá trị ban đầu - giá trị của nó sẽ được tính và gán sau.
sum = number1 + number2 + number3 + number4 + number5;
tính tổng của number1
để number5
và assign kết quả vào biến sum
. Biểu tượng ' +
' biểu thị phép cộng số học , giống như Toán học.
System.out.print("The sum is ");
System.out.println(sum);
Dòng 13 in một chuỗi mô tả. A String
được bao quanh bởi dấu ngoặc kép và sẽ được in như hiện tại (không có dấu ngoặc kép). Con trỏ ở lại sau chuỗi in. Hãy thử sử dụng println()
thay vì print()
và nghiên cứu đầu ra.
Dòng 15 in giá trị được lưu trong biến sum
(trong trường hợp này là tổng của năm số nguyên). Bạn không nên bao quanh một biến được in bằng dấu ngoặc kép; mặt khác, văn bản sẽ được in thay vì giá trị được lưu trong biến. Con trỏ tiến lên đầu dòng tiếp theo sau khi in. Hãy thử sử dụng print()
thay vì println()
và nghiên cứu đầu ra.
BÀI TẬP
- Thực hiện theo ví dụ trên, viết một chương trình được gọi
SixIntegerSum
bao gồm một biến mới được gọi number6
với giá trị 66 và in tổng của chúng.
- Thực hiện theo ví dụ trên, viết một chương trình được gọi
SevenIntegerSum
bao gồm một biến mới được gọi number7
với giá trị 77 và in tổng của chúng.
- Thực hiện theo ví dụ trên, viết chương trình được gọi
SaleProducts
để in 5 sản phẩm gồm giá bán và số lượng. Bạn nên sử dụng một biến được gọi là total
(thay vì num*qty) để lưu tổng giá bán. Sử dụng ký hiệu *
để nhân.
8. Chương trình là gì?
Một chương trình là một chuỗi các hướng dẫn (được gọi là các câu lệnh lập trình ), thực hiện lần lượt từng bước một theo cách có thể dự đoán được .
Luồng tuần tự là dòng phổ biến và đơn giản nhất, trong đó các câu lệnh lập trình được thực thi theo thứ tự chúng được viết - từ trên xuống dưới theo cách tuần tự , như được minh họa trong biểu đồ luồng sau.
Thí dụ
Chương trình sau đây in diện tích và chu vi của hình tròn, cho bán kính của nó. Hãy lưu ý rằng các câu lệnh lập trình được thực hiện tuần tự - lần lượt từng câu lệnh theo thứ tự chúng được viết.
Trong ví dụ này, chúng tôi sử dụng " double
" giữ số dấu phẩy động (hoặc số thực với một phần phân số tùy chọn) thay vì " int
" chứa số nguyên .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class CircleComputation {
public static void main(String[] args) {
double radius, area, circumference;
final double PI = 3.14159265;
radius = 1.2;
area = radius * radius * PI;
circumference = 2.0 * radius * PI;
System.out.print("The radius is ");
System.out.println(radius);
System.out.print("The area is ");
System.out.println(area);
System.out.print("The circumference is ");
System.out.println(circumference);
}
}
|
Các đầu ra dự kiến là:
The radius is 1.2
The area is 4.523893416
The circumference is 7.5398223600000005
Làm thế nào nó hoạt động?
double radius, area, circumference;khai báo ba double
biến radius
, area
và circumference
. Một double
biến có thể chứa một số thực hoặc số dấu phẩy động với một phần phân số tùy chọn. (Trong ví dụ trước, chúng tôi sử dụng int
, chứa số nguyên.)
final double PI = 3.14159265;khai báo một double
biến được gọi PI
và gán giá trị PI
được khai báo final
để xác định rằng giá trị của nó không thể thay đổi, tức là hằng số.
radius = 1.2;
gán một giá trị (số thực) cho double
biến radius
.s
.
area = radius * radius * PI;
circumference = 2.0 * radius * PI;tính toán area
và circumference
, dựa trên giá trị của radius
và PI
.
System.out.print("The radius is ");
System.out.println(radius);
System.out.print("The area is ");
System.out.println(area);
System.out.print("The circumference is ");
System.out.println(circumference);
in kết quả với mô tả thích hợp.
Hãy lưu ý rằng các câu lệnh lập trình bên trong main()
phương thức được thực thi lần lượt, theo cách thức liên tiếp .
Bài tập
- Thực hiện theo ví dụ trên, viết chương trình được gọi
RectangleComputation
để in diện tích và chu vi của hình chữ nhật, với chiều dài và chiều rộng của nó (tính bằng double
s). Bạn nên sử dụng 4 biến double được gọi là length
, width
, area
và perimeter
.
- Thực hiện theo ví dụ trên, viết chương trình được gọi
CylinderComputation
để in diện tích bề mặt, diện tích cơ sở và thể tích của hình trụ, với bán kính và chiều cao của nó (tính bằng double
s). Bạn nên sử dụng 5 biến có kiểu dữ liệu là double
đặt tên lần lượt là radius
, height
, surfaceArea
, baseArea
và volume
. Lưu ý rằng không gian (trống) không được phép trong tên biến.
9. Biến là gì?
Một chương trình máy tính thao tác (hoặc xử lý) dữ liệu. Một biến là một vị trí lưu trữ (như một ngôi nhà, một lỗ chim bồ câu, một hộp thư) lưu trữ một phần dữ liệu để xử lý. Nó được gọi là biến vì bạn có thể thay đổi giá trị được lưu trữ bên trong.
Chính xác hơn, một biến là một vị trí lưu trữ được đặt tên, lưu trữ giá trị của một loại dữ liệu cụ thể . Nói cách khác, một biến có một tên , một loại và lưu trữ một giá trị của loại cụ thể đó.
- Một biến có tên (hay còn gọi là định danh ), ví dụ
radius
, area
, age
, height
, numStudnets
. Tên là cần thiết để xác định duy nhất từng biến, để gán giá trị cho biến (ví dụ radius = 1.2
:) cũng như truy xuất giá trị được lưu trữ (ví dụ radius * radius * 3.14159265
:).
- Một biến có một loại . Ví dụ về loại là:
int
: Có nghĩa là cho số nguyên (hoặc số nguyên hoặc số điểm cố định) trong đó có không, nguyên dương và tiêu cực, chẳng hạn như 123
, -456
và 0
;
double
: Có nghĩa là cho số dấu chấm động hay số thực, chẳng hạn như 3.1416
, -55.66
, có một dấu thập phân tùy chọn và phần thập phân.
String
: có nghĩa là cho các văn bản như "Hello"
, "Good Morning!"
. Các chuỗi phải được đính kèm với một cặp dấu ngoặc kép.
- Một biến có thể lưu trữ một giá trị của loại khai báo . Điều quan trọng cần lưu ý là một biến trong hầu hết các ngôn ngữ lập trình được liên kết với một loại và chỉ có thể lưu trữ giá trị của loại cụ thể đó. Ví dụ: một
int
biến có thể lưu trữ một giá trị nguyên như 123
, nhưng KHÔNG phải là số thực như 12.34
, cũng như các văn bản như "Hello"
. Khái niệm loại đã được đưa vào các ngôn ngữ lập trình ban đầu để đơn giản hóa việc giải thích dữ liệu.
Sơ đồ dưới đây minh họa ba loại biến: int
, double
và String
. Một int
biến lưu một số nguyên (số nguyên); một double
biến lưu trữ một số thực (bao gồm số nguyên dưới dạng một số đặc biệt của số thực); một String
biến lưu trữ văn bản.
Khai báo và sử dụng biến
Để sử dụng một biến, trước tiên bạn cần khai báo tên và loại của nó và một giá trị ban đầu tùy chọn , theo một trong các cú pháp sau
type varName;
type varName1, varName2,...;
type varName = initialValue;
type varName1 = initialValue1, varName2 = initialValue2,... ;
For examples,
int sum;
double average;
int number1, number2;
int height = 20;
String msg = "Hello";
Hãy lưu ý rằng:
- Mỗi câu lệnh khai báo biến bắt đầu bằng một loại và chỉ áp dụng cho loại đó. Đó là, bạn không thể trộn 2 loại trong một tuyên bố biến.
- Mỗi câu lệnh được chấm dứt bằng dấu chấm phẩy (
;
).
- Trong khai báo nhiều biến, các tên biến được phân tách bằng dấu phẩy (
,
).
- Biểu tượng
'='
, được gọi là toán tử gán , có thể được sử dụng để gán giá trị ban đầu cho một biến, trong một tuyên bố khai báo.
Thêm ví dụ,
int number;
number = 99;
number = 88;
number = number + 1;
int sum = 0;
sum = sum + number;
int num1 = 5, num2 = 6;
double radius = 1.5;
String msg;
msg = "Hello";
int number;
sum = 55.66;
sum = "Hello";
Hãy lưu ý rằng:
- Mỗi biến chỉ có thể được khai báo một lần. (Bạn không thể có hai ngôi nhà có cùng địa chỉ.)
- Trong Java, bạn có thể khai báo một biến ở bất cứ đâu trong chương trình của mình, miễn là nó được khai báo trước khi nó được sử dụng. (Một số ngôn ngữ cũ yêu cầu bạn khai báo tất cả các biến ở đầu chương trình.)
- Khi một biến được khai báo, bạn có thể gán và gán lại một giá trị cho biến đó, thông qua toán tử gán
'='
.
- Khi loại của một biến được khai báo, nó chỉ có thể lưu trữ một giá trị của loại cụ thể đó . Ví dụ: một
int
biến chỉ có thể chứa số nguyên như 123
, và KHÔNG có số dấu phẩy động như -2.17
hoặc chuỗi văn bản như "Hello"
.
- Sau khi khai báo, loại biến CANNOT sẽ được thay đổi.
x = x + 1 ?
Bài tập trong lập trình (ký hiệu là '='
) khác với bình đẳng trong Toán học (cũng được ký hiệu là '='
). Ví dụ: " x=x+1
" không hợp lệ trong Toán học. Tuy nhiên, trong lập trình, nó có nghĩa là tính giá trị của x
cộng 1 và gán kết quả trở lại cho biến x
.
"X + y = 1" là hợp lệ trong Toán học, nhưng không hợp lệ trong lập trình. Trong lập trình, RHS (Phía bên tay phải) '='
phải được đánh giá theo giá trị; trong khi LHS (Phía bên tay trái) sẽ là một biến. Nghĩa là, đánh giá RHS trước, sau đó gán kết quả cho LHS.
Một số ngôn ngữ sử dụng :=
hoặc ->
làm toán tử gán để tránh nhầm lẫn với đẳng thức.
10. Các phép toán số học cơ bản
Các phép toán số học cơ bản là:
Operator | Mode | Usage | Meaning | Example
x=5; y=2 |
+ | Binary
Unary | x + y
+x | Addition | x + y returns 7 |
- | Binary
Unary | x - y
-x | Subtraction | x - y returns 3 |
* | Binary | x * y | Multiplication | x * y returns 10 |
/ | Binary | x / y | Division | x / y returns 2 |
% | Binary | x % y | Modulus (Remainder) | x % y returns 1 |
++ | Unary Prefix
Unary Postfix | ++x
x++ | Increment by 1 | ++x or x++ (x is 6) Same as x = x + 1 |
-- | Unary Prefix
Unary Postfix | --x
x-- | Decrement by 1 | --y or y-- (y is 1) Same as y = y - 1 |
Phép cộng, phép trừ, phép nhân, phép chia và phần dư là các toán tử nhị phân có hai toán hạng (ví dụ x + y
:); trong khi phủ định (ví dụ -x
:), tăng và giảm (ví dụ ++x
, --y
) là các toán tử đơn nguyên chỉ mất một toán hạng.
Thí dụ
Chương trình sau đây minh họa các hoạt động số học này:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
public class ArithmeticTest {
public static void main(String[] args) {
int number1 = 98;
int number2 = 5;
int sum, difference, product, quotient, remainder;
sum = number1 + number2;
difference = number1 - number2;
product = number1 * number2;
quotient = number1 / number2;
remainder = number1 % number2;
System.out.print("The sum, difference, product, quotient and remainder of ");
System.out.print(number1);
System.out.print(" and ");
System.out.print(number2);
System.out.print(" are ");
System.out.print(sum);
System.out.print(", ");
System.out.print(difference);
System.out.print(", ");
System.out.print(product);
System.out.print(", ");
System.out.print(quotient);
System.out.print(", and ");
System.out.println(remainder);
++number1;
--number2;
System.out.println("number1 after increment is " + number1); System.out.println("number2 after decrement is " + number2);
quotient = number1 / number2;
System.out.println("The new quotient of " + number1 + " and " + number2
+ " is " + quotient);
}
}
|
Các đầu ra dự kiến là:
The sum, difference, product, quotient and remainder of 98 and 5 are 103, 93, 490, 19, and 3
number1 after increment is 99
number2 after decrement is 4
The new quotient of 99 and 4 is 24
Làm thế nào nó hoạt động?
int number1 = 98;
int number2 = 5;
int sum, difference, product, quotient, remainder;tuyên bố tất cả các biến number1
, number2
, sum
, difference
, product
, quotient
và remainder
cần thiết trong chương trình này. Tất cả các biến là loại int
(số nguyên).
sum = number1 + number2;
difference = number1 - number2;
product = number1 * number2;
quotient = number1 / number2;
remainder = number1 % number2;thực hiện các phép toán số học trên number1
và number2
. Hãy lưu ý rằng sự phân chia của hai số nguyên tạo ra một cắt ngắn số nguyên, ví dụ 98/5 → 19
, 99/4 → 24
và 1/2 → 0
.
System.out.print("The sum, difference, product, quotient and remainder of ");
......in kết quả của các phép toán số học, với các mô tả chuỗi thích hợp ở giữa. Hãy lưu ý rằng các chuỗi văn bản được đặt trong dấu ngoặc kép và sẽ được in như hiện tại, bao gồm các khoảng trắng nhưng không có dấu ngoặc kép. Để in giá trị được lưu trữ trong một biến, không nên sử dụng dấu ngoặc kép. Ví dụ,
System.out.println("sum");
System.out.println(sum);
++number1;
--number2;minh họa các hoạt động tăng và giảm. Không giống như '+'
, '-'
, '*'
, '/'
và '%'
, mà làm việc trên hai toán hạng ( toán tử nhị phân ), '++'
và '--'
hoạt động trên chỉ có một toán hạng ( các nhà khai thác unary ). ++x
tương đương với x = x + 1
, tức là tăng x thêm 1.
System.out.println("number1 after increment is " + number1);
System.out.println("number2 after decrement is " + number2);
in các giá trị mới được lưu trữ sau các hoạt động tăng / giảm. Xin lưu ý rằng thay vì sử dụng nhiều print()
câu lệnh như trong Dòng 18-31, chúng ta chỉ cần đặt tất cả các mục (chuỗi văn bản và biến) thành một println()
, với các mục được phân tách bằng '+'
. Trong trường hợp này, '+'
không thực hiện bổ sung . Thay vào đó, nó ghép hoặc nối tất cả các mục lại với nhau.
Bài tập
- Kết hợp các dòng 18-31 thành một
println()
câu lệnh duy nhất , sử dụng '+'
để ghép tất cả các mục lại với nhau.
- Trong Toán học, chúng ta có thể bỏ qua dấu nhân trong biểu thức số học, vd
x = 5a + 4b
. Trong lập trình, bạn cần cung cấp rõ ràng tất cả các toán tử, nghĩa là , x = 5*a + 4*b
. Hãy thử in tổng số của hai số: 31
lần number1
và 17
lần number2
.
- Dựa vào ví dụ trên, hãy viết một chương trình có tên
SumProduct3Numbers
, giới thiệu thêm một int
biến được gọi number3
và gán cho nó một giá trị nguyên 77
. Tính và in tổng và tích của cả ba số.
11. Điều gì sẽ xảy ra nếu bạn cần thêm một nghìn số? Sử dụng một vòng lặp
Giả sử bạn muốn thêm tất cả các số nguyên từ 1
đến 1000
. Nếu bạn làm theo ví dụ trước, bạn sẽ cần một chương trình ngàn dòng! Thay vào đó, bạn có thể sử dụng một vòng lặp được gọi là trong chương trình của mình để thực hiện một nhiệm vụ lặp đi lặp lại , đó là những gì máy tính giỏi.
Thí dụ
Hãy thử chương trình sau, tính tổng tất cả các số nguyên từ cấp dưới ( =1
) đến cấp trên ( =1000
) bằng cách sử dụng cái gọi là vòng lặp while .
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public class RunningNumberSum {
public static void main(String[] args) {
int lowerbound = 1;
int upperbound = 1000;
int sum = 0;
int number = lowerbound;
while (number <= upperbound) {
sum = sum + number;
++number;
}
System.out.println("The sum from " + lowerbound + " to " + upperbound + " is " + sum);
}
}
|
Đầu ra dự kiến:
The sum from 1 to 1000 is 500500
Làm thế nào nó hoạt động?
int lowerbound = 1;
int upperbound = 1000;khai báo hai int
biến để giữ phía trên và phía dưới, tương ứng.
int sum = 0;khai báo một int
biến để giữ tổng. Biến này sẽ được sử dụng để tích lũy qua các bước trong vòng lặp lặp lại và do đó được khởi tạo thành 0.
int number = lowerbound;
while (number <= upperbound) {
sum = sum + number;
++number;
}Đây là cái gọi là while-loop . Một vòng lặp while có cú pháp sau:
initialization-statement;
while (test) {
loop-body;
}
next-statement;
Như được minh họa trong biểu đồ luồng, câu lệnh khởi tạo được thực hiện đầu tiên. Các xét nghiệm sau đó được kiểm tra. Nếu kiểm tra là đúng, cơ thể được thực thi. Các thử nghiệm được kiểm tra một lần nữa và quá trình này lặp đi lặp lại cho đến khi kiểm tra là sai. Khi kiểm tra sai, vòng lặp hoàn thành và thực hiện chương trình tiếp tục đến câu lệnh tiếp theo sau vòng lặp.
Trong ví dụ của chúng tôi, câu lệnh khởi tạo khai báo một int
biến có tên number
và khởi tạo nó thành lowerbound
. Các kiểm tra kiểm tra nếu number
bằng hoặc nhỏ hơn upperbound
. Nếu đúng, giá trị hiện tại của number
được thêm vào sum
và câu lệnh ++number
tăng giá trị number
lên 1. Thử nghiệm sau đó được kiểm tra lại và quá trình lặp lại cho đến khi thử nghiệm sai (nghĩa là number
tăng lên upperbound+1
), điều này gây ra vòng lặp chấm dứt. Thực thi sau đó tiếp tục tuyên bố tiếp theo (trong Dòng 18).
Một vòng lặp thường được điều khiển bởi một biến chỉ số. Trong ví dụ này, biến chỉ số number
mất giá trị lowerbound
, lowerbound+1
, lowerbound+2
, ...., upperbound
, cho mỗi lần lặp của vòng lặp.
Trong ví dụ này, vòng lặp lặp lại upperbound-lowerbound+1
lần. Sau khi hoàn thành vòng lặp, Dòng 18 sẽ in kết quả với một mô tả thích hợp.
System.out.println("The sum from " + lowerbound + " to " + upperbound + " is " + sum);in kết quả
Bài tập
- Sửa đổi chương trình trên (gọi là
RunningNumber
Sum1) để tổng hợp tất cả các số từ 9
đến 899
. ( Ans : 404514
)
- Sửa đổi chương trình trên (gọi là
RunningNumberOdd
Tổng) để tổng tất cả các số lẻ giữa 1
thành 1000
. ( Gợi ý : Thay đổi sau khi chế biến tuyên bố number = number + 2
"" Ans : 250000
)
- Sửa đổi các chương trình trên (gọi
RunningNumberMod7Sum
) để tổng hợp tất cả các số giữa 1
để 1000
mà chia hết cho 7
. ( Gợi ý : Sửa các khởi tuyên bố bắt đầu từ 7 và sau chế biến tuyên bố tăng bởi 7. Ans : 71071
)
- Sửa đổi các chương trình trên (gọi
RunningNumberSquareSum
) để tìm tổng các vuông của tất cả các số từ 1
để 100
, tức là 1*1 + 2*2 + 3*3 +...
( Gợi ý : Sửa các sum = sum + number
. Tuyên bố Ans : 338350
)
- Sửa đổi chương trình trên (được gọi
RunningNumberProduct
) để tính tích của tất cả các số từ 1
đến 10
. ( Gợi ý : Sử dụng một biến gọi là product
thay vì sum
và khởi tạo product
để 1. Sửa các sum = sum + number
tuyên bố làm nhân trên biến product
. Ans : 3628800
)
12. Có điều kiện (hoặc Quyết định)
Điều gì nếu bạn muốn tổng hợp tất cả các số lẻ và tất cả các số chẵn giữa 1
và 1000
? Bạn có thể khai báo hai biến sumOdd
và sumEven
để giữ hai tổng. Sau đó, bạn có thể sử dụng một câu lệnh có điều kiện để kiểm tra xem số đó là số lẻ hay số chẵn và tích lũy số đó vào các khoản tiền tương ứng. Chương trình như sau:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
23
24
25
|
public class OddEvenSum {
public static void main(String[] args) {
int lowerbound = 1, upperbound = 1000;
int sumOdd = 0;
int sumEven = 0;
int number = lowerbound;
while (number <= upperbound) {
if (number % 2 == 0) {
sumEven += number;
} else {
sumOdd += number;
}
++number;
}
System.out.println("The sum of odd numbers from " + lowerbound + " to " + upperbound + " is " + sumOdd);
System.out.println("The sum of even numbers from " + lowerbound + " to " + upperbound + " is " + sumEven);
System.out.println("The difference between the two sums is " + (sumOdd - sumEven));
}
}
|
Các đầu ra dự kiến là:
The sum of odd numbers from 1 to 1000 is 250000
The sum of even numbers from 1 to 1000 is 250500
The difference between the two sums is -500
Làm thế nào nó hoạt động?
int lowerbound = 1, upperbound = 1000;tuyên bố và khởi tạo các hướng trên và dưới.
int sumOdd = 0;
int sumEven = 0;khai báo hai int
biến có tên sumOdd
và sumEven
khởi tạo chúng thành 0, để tích lũy các số lẻ và chẵn tương ứng.
if (number % 2 == 0) {
sumEven += number;
} else {
sumOdd += number;
}Đây là một tuyên bố có điều kiện . Câu lệnh có điều kiện có thể có một trong các dạng sau: if-then hoặc if-then-other .
if ( test ) {
true-body;
}
if ( test ) {
true-body;
} else {
false-body;
}
Đối với câu lệnh if-then , phần thân thực được thực thi nếu kiểm tra là đúng. Mặt khác, không có gì được thực hiện và việc thực thi tiếp tục cho câu lệnh tiếp theo. Đối với câu lệnh if-then-other , phần thân thực được thực thi nếu kiểm tra là đúng; mặt khác, cơ thể giả được thực thi. Thực hiện sau đó được tiếp tục để tuyên bố tiếp theo.
Trong chương trình của chúng tôi, chúng tôi sử dụng toán tử còn lại hoặc mô đun(%)
để tính phần còn lại của các phép number
chia theo 2
. Sau đó, chúng tôi so sánh phần còn lại với 0
để kiểm tra số chẵn.
Hơn nữa, sumEven += number
là một tốc ký cho sumEven = sumEven + number
.
Toán tử so sánh
Có sáu toán tử so sánh (hoặc quan hệ):
Operator | Mode | Usage | Meaning | Example |
== | Binary | x == y | Equal to | |
!= | Binary | x != y | Not equal to | |
> | Binary | x > y | Greater than | |
>= | Binary | x >= y | Greater than or equal to | |
< | Binary | x < y | Less than | |
<= | Binary | x <= y | Less than or equal to | |
Xin lưu ý rằng toán tử so sánh cho đẳng thức là dấu bằng hai lần (==)
; trong khi đó một dấu bằng đơn (=)
là toán tử gán.
Kết hợp các điều kiện đơn giản
Giả sử rằng bạn muốn kiểm tra xem một số x
có nằm giữa 1
và 100
(bao gồm) hay không, nghĩa là , 1 <= x <= 100
. Có hai điều kiện đơn giản ở đây , (x >= 1) AND (x <= 100)
. Trong Java, bạn không thể viết 1 <= x <= 100
, nhưng cần phải viết (x >= 1) && (x <= 100)
, trong đó " &&
" biểu thị AND
toán tử "". Tương tự, giả sử rằng bạn muốn kiểm tra xem một số x
có chia hết cho 2 HOẶC 3 hay không, bạn phải viết (x % 2 == 0) || (x % 3 == 0)
trong đó " ||
" biểu thị OR
toán tử "".
Có ba toán tử logic được gọi là hoạt động trên các điều kiện boolean :
Operator | Mode | Usage | Meaning | Example |
&& | Binary | x && y | Logical AND | (x >= 1) && (x <= 100) |
|| | Binary | x || y | Logical OR | (x < 1) || (x > 100) |
! | Unary Prefix | !x | Logical NOT | !(x == 8) |
For examples:
(x >= 0) && (x <= 100)
(x < 0) || (x > 100)
!((x >= 0) && (x <= 100))
((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)
Bài tập
- Viết chương trình được gọi
ThreeFiveSevenSum
để tính tổng tất cả các số nguyên đang chạy từ 1 và 1000, chia hết cho 3, 5 hoặc 7, nhưng KHÔNG chia cho 15, 21, 35 hoặc 105.
- Viết chương trình được gọi
PrintLeapYears
để in tất cả các năm nhuận giữa AD999 và AD2010. Cũng in tổng số năm nhuận. (Gợi ý: sử dụng một int
biến được gọi là biến count
được khởi tạo thành số 0. Tăng thêm count
bất cứ khi nào một năm nhuận được tìm thấy.)
13. Tóm tắt
Tôi đã trình bày những điều cơ bản để bạn bắt đầu lập trình. Để học lập trình, bạn cần hiểu các cú pháp và tính năng liên quan đến ngôn ngữ lập trình mà bạn đã chọn và bạn phải thực hành, thực hành và thực hành, về nhiều vấn đề nhất có thể.
إرسال تعليق