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
/*
 * First Java program, which says hello.
 */
public class Hello {   // Save as "Hello.java"
   public static void main(String[] args) {  // Program entry point
      System.out.println("Hello, world!");   // Print text message
   }
}
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:
// Change directory (cd) to the directory (folder) containing the source file "Hello.java"
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íchChú 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:
  1. 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).
  2. 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

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

Computer Architecture
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 HelloCá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
/*
 * Comment to state the purpose of the program
 */
public class Classname {   // Choose a meaningful Classname. Save as "Classname.java"
   public static void main(String[] args) {  // Entry point of the program
      // 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 aStringvà đưa con trỏ đến đầu dòng tiếp theo.
  • System.out.print(aString)in aStringnhư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
/*
 * Test System.out.println() (print-line) and System.out.print().
 */
public class PrintTest {   // Save as "PrintTest.java"
   public static void main(String[] args) {
      System.out.println("Hello world!");       // Advance the cursor to the beginning of next line after printing
      System.out.println("Hello world again!"); // Advance the cursor to the beginning of next line after printing
      System.out.println();                     // Print an empty line
      System.out.print("Hello world!");         // Cursor stayed after the printed string
      System.out.print("Hello world again!");   // Cursor stayed after the printed string
      System.out.println();                     // Print an empty line
      System.out.print("Hello,");
      System.out.print(" ");                    // Print a space
      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 ()
  1. Viết 4 chương trình, được gọi là PrintCheckerPatternPrintSquarePatternPrintTriangularPatternvà PrintStarPatternin 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.
  1. * * * * *      * * * * *    * * * * *        *
     * * * * *     *       *     *     *     * *   * *
    * * * * *      *       *      *   *         * *
     * * * * *     *       *       * *         *   *
    * * * * *      * * * * *        *         *     *
       (a)            (b)          (c)           (d)
  2. 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
/*
 * Add five integers and display their sum.
 */
public class FiveIntegerSum {   // Save as "FiveIntegerSum.java"
   public static void main(String[] args) {
      int number1 = 11;  // Declare 5 integer variables and assign a value
      int number2 = 22;
      int number3 = 33;
      int number4 = 44;
      int number5 = 55;
      int sum;  // Declare an integer variable called sum to hold the sum
      sum = number1 + number2 + number3 + number4 + number5;  // Compute sum
      System.out.print("The sum is ");  // Print a descriptive string
                                        // Cursor stays after the printed string
      System.out.println(sum);  // Print the value stored in variable sum
                                // Cursor advances to the beginning of next line
   }
}

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à number1number2number3number4, và number5và 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để number5và assign kết quả vào biến sumBiể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ả. 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
  1. Thực hiện theo ví dụ trên, viết một chương trình được gọi SixIntegerSumbao gồm một biến mới được gọi number6với giá trị 66 và in tổng của chúng.
  2. 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 number7với giá trị 77 và in tổng của chúng.
  3. 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ì?

sequential flow
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
/*
 * Print the area and circumference of a circle, given its radius.
 */
public class CircleComputation {  // Save as "CircleComputation.java"
   public static void main(String[] args) {
      // Declare 3 double variables to hold radius, area and circumference.
      // A "double" holds floating-point number with an optional fractional part.
      double radius, area, circumference;
      // Declare a double to hold PI.
      // Declare as "final" to specify that its value cannot be changed (i.e. constant).
      final double PI = 3.14159265;
      
      // Assign a value to radius. (We shall read in the value from the keyboard later.)
      radius = 1.2;
      // Compute area and circumference
      area = radius * radius * PI;
      circumference = 2.0 * radius * PI;
      
      // Print results
      System.out.print("The radius is ");  // Print description
      System.out.println(radius);          // Print the value stored in the variable
      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 doublebiến radiusareavà circumferenceMột doublebiế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 doublebiến được gọi PIvà 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 doublebiến radius.s.
area = radius * radius * PI;
circumference = 2.0 * radius * PI;
tính toán areavà circumference, dựa trên giá trị của radiusvà 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
  1. 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 doubles). Bạn nên sử dụng 4 biến double được gọi là lengthwidtharea và perimeter.
  2. 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 doubles). 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à radiusheightsurfaceAreabaseArea và volumeLư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ụ radiusareaageheightnumStudnetsTê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-456và 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 intbiế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: intdoublevà StringMột intbiến lưu một số nguyên (số nguyên); một doublebiế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 Stringbiến lưu trữ văn bản.
variable
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;                 // Declare a variable of a type
type varName1, varName2,...;  // Declare multiple variables of the SAME type
type varName = initialValue;  // Declare a variable of a type, and assign an initial value
type varName1 = initialValue1, varName2 = initialValue2,... ;  // Declare variables with initial values
For examples,
int sum;              // Declare a variable named "sum" of the type "int" for storing an integer.
                      // Terminate the statement with a semi-colon.
double average;       // Declare a variable named "average" of the type "double" for storing a real number.
int number1, number2; // Declare 2 "int" variables named "number1" and "number2", separated by a comma.
int height = 20;      // Declare an "int" variable, and assign an initial value.
String msg = "Hello"; // Declare a "String" variable, and assign an initial value.
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;           // Declare a variable named "number" of the type "int" (integer).
number = 99;          // Assign an integer value of 99 to the variable "number".
number = 88;          // Re-assign a value of 88 to "number".
number = number + 1;  // Evaluate "number + 1", and assign the result back to "number".
int sum = 0;          // Declare an int variable named "sum" and assign an initial value of 0.
sum = sum + number;   // Evaluate "sum + number", and assign the result back to "sum", i.e. add number into sum.
int num1 = 5, num2 = 6;  // Declare and initialize 2 int variables in one statement, separated by a comma.
double radius = 1.5;  // Declare a variable named "radius", and initialize to 1.5.
String msg;           // Declare a variable named msg of the type "String".
msg = "Hello";        // Assign a double-quoted text string to the String variable.
int number;           // ERROR: The variable named "number" has already been declared.
sum = 55.66;          // ERROR: The variable "sum" is an int. It cannot be assigned a double.
sum = "Hello";        // ERROR: The variable "sum" is an int. It cannot be assigned a string.
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 intbiến chỉ có thể chứa số nguyên như 123, và KHÔNG có số dấu phẩy động như -2.17hoặ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 ?
x_plus_one.gif
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 xcộ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à:
OperatorModeUsageMeaningExample
x=5; y=2
+Binary
Unary
x + y
+x
Additionx + y returns 7
-Binary
Unary
x - y
-x
Subtractionx - y returns 3
*Binaryx * yMultiplicationx * y returns 10
/Binaryx / yDivisionx / y returns 2
%Binaryx % yModulus (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
/*
 * Test Arithmetic Operations
 */
public class ArithmeticTest {     // Save as "ArithmeticTest.java"
   public static void main(String[] args) {
      int number1 = 98; // Declare an int variable number1 and initialize it to 98
      int number2 = 5;  // Declare an int variable number2 and initialize it to 5
      int sum, difference, product, quotient, remainder;  // Declare 5 int variables to hold results
   
      // Perform arithmetic Operations
      sum = number1 + number2;
      difference = number1 - number2;
      product = number1 * number2;
      quotient = number1 / number2;
      remainder = number1 % number2;
  
      // Print results
      System.out.print("The sum, difference, product, quotient and remainder of ");  // Print description
      System.out.print(number1);      // Print the value of the variable
      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;  // Increment the value stored in the variable "number1" by 1
                  // Same as "number1 = number1 + 1"
      --number2;  // Decrement the value stored in the variable "number2" by 1
                  // Same as "number2 = number2 - 1"
      System.out.println("number1 after increment is " + number1);  // Print description and variable
      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 number1number2sumdifferenceproductquotientvà remaindercầ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 number1và number2Hã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 → 1999/4 → 24và 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");   // Print text string "sum" - as it is
System.out.println(sum);     // Print the value stored in variable sum, e.g., 98
++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 ). ++xtươ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
  1. 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.
  2. 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 + 4bTrong 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*bHãy thử in tổng số của hai số: 31lần number1 và 17 lần number2.
  3. 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 intbiến được gọi number3và gán cho nó một giá trị nguyên 77Tí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 1000Nế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
/*
 * Sum from a lowerbound to an upperbound using a while-loop
 */
public class RunningNumberSum {  // Save as "RunningNumberSum.java"
   public static void main(String[] args) {
      int lowerbound = 1;      // Store the lowerbound
      int upperbound = 1000;   // Store the upperbound
      int sum = 0;   // Declare an int variable "sum" to accumulate the numbers
                     // Set the initial sum to 0
      // Use a while-loop to repeatedly sum from the lowerbound to the upperbound
      int number = lowerbound;
      while (number <= upperbound) {
            // number = lowerbound, lowerbound+1, lowerbound+2, ..., upperbound for each iteration
         sum = sum + number;  // Accumulate number into sum
         ++number;            // increment number
      }
      // Print the result
      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 intbiến để giữ phía trên và phía dưới, tương ứng.
int sum = 0;khai báo một intbiế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:
for-loop
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 intbiến có tên numbervà khởi tạo nó thành lowerboundCác kiểm tra kiểm tra nếu numberbằng hoặc nhỏ hơn upperboundNếu đúng, giá trị hiện tại của numberđược thêm vào sumvà câu lệnh ++numbertăng giá trị numberlê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à numbertă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ố numbermất giá trị lowerboundlowerbound+1lowerbound+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+1lầ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
  1. Sửa đổi chương trình trên (gọi là RunningNumberSum1) để tổng hợp tất cả các số từ 9đến 899Ans : 404514)
  2. Sửa đổi chương trình trên (gọi là RunningNumberOddTổng) để tổng tất cả các số lẻ giữa 1thành 1000Gợi ý : Thay đổi sau khi chế biến tuyên bố number = number + 2"" Ans : 250000)
  3. 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để 1000mà chia hết cho 7Gợ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)
  4. 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)
  5. 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 10Gợi ý : Sử dụng một biến gọi là productthay vì sumvà khởi tạo productđể 1. Sửa các sum = sum + numbertuyên bố làm nhân trên biến productAns : 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 1và 1000Bạn có thể khai báo hai biến sumOddvà 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
/*
 * Sum the odd numbers and the even numbers from a lowerbound to an upperbound
 */
public class OddEvenSum {  // Save as "OddEvenSum.java"
   public static void main(String[] args) {
      int lowerbound = 1, upperbound = 1000;  // lowerbound and upperbound
      int sumOdd  = 0;    // For accumulating odd numbers, init to 0
      int sumEven = 0;    // For accumulating even numbers, init to 0
      int number = lowerbound;
      while (number <= upperbound) {
            // number = lowerbound, lowerbound+1, lowerbound+2, ..., upperbound for each iteration
         if (number % 2 == 0) {  // Even
            sumEven += number;   // Same as sumEven = sumEven + number
         } else {                // Odd
            sumOdd += number;    // Same as sumOdd = sumOdd + number
         }
         ++number;  // Next number
      } 
      // Print the result
      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 intbiến có tên sumOddvà sumEvenkhở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-then-elseif-then
// if-then
if ( test ) {
   true-body;
}

// if-then-else
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 numberchia theo 2Sau đó, 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 += numberlà một tốc  cho sumEven = sumEven + number.
Toán tử so sánh
Có sáu toán tử so sánh (hoặc quan hệ):
OperatorModeUsageMeaningExample
==Binaryx == yEqual to
!=Binaryx != yNot equal to
>Binaryx > yGreater than
>=Binaryx >= yGreater than or equal to
<Binaryx < yLess than
<=Binaryx <= yLess 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ố xcó nằm giữa 1và 100(bao gồm) hay không, nghĩa là , 1 <= x <= 100Có 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ị ANDtoán tử "". Tương tự, giả sử rằng bạn muốn kiểm tra xem một số xcó 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ị ORtoán tử "".
Có ba toán tử logic được gọi là hoạt động trên các điều kiện boolean :
OperatorModeUsageMeaningExample
&&Binaryx && yLogical AND(x >= 1) && (x <= 100)
||Binaryx || yLogical OR(x < 1) || (x > 100)
!Unary Prefix!xLogical NOT!(x == 8)
For examples:
// Return true if x is between 0 and 100 (inclusive)
(x >= 0) && (x <= 100)  // AND (&&)
// Incorrect to use 0 <= x <= 100
  
// Return true if x is outside 0 and 100 (inclusive)
(x < 0) || (x > 100)       // OR (||)
!((x >= 0) && (x <= 100))  // NOT (!), AND (&&)
 
// Return true if "year" is a leap year
// A year is a leap year if it is divisible by 4 but not by 100, or it is divisible by 400.
((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)
Bài tập
  1. 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.
  2. 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 intbiến được gọi là biến countđược khởi tạo thành số 0. Tăng thêm countbấ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ể.

1 Nhận xét

Đăng nhận xét

Mới hơn Cũ hơn