Java (1): Cài đặt và sử dụng Eclipse

 Bài trước: Java (0): Tạo tài liệu ghi chép

-----

1. Cài đặt và sử dụng Eclipse

Để lập trình chúng ta cần có vài thứ sau:

- Một ngôn ngữ lập trình, để ra lệnh cho máy tính thực hiện các hành động. Ví dụ ngôn ngữ Java. Kiến thức về ngôn ngữ Java chúng ta sẽ học để nó nằm ở trong “đầu”. Ví dụ, làm sao để in một dòng chữ ra màn hình, làm sao để nhập dữ liệu từ bàn phím.

- Một chương trình để viết mã nguồn, lưu mã nguồn thành một tập tin. Eclipse sẽ đóng vai trò là chương trình để viết mã nguồn.

- Một trình dịch mã nguồn, thực thi chương trình và hiển thị kết quả. Eclipse cũng sẽ đảm nhiệm vai trò này.

1.1 Tải và cài đặt Eclipse

Vào trang https://www.eclipse.org/downloads/, chọn bản phù hợp với máy tính của bạn để tải Eclipse về máy.

Thực hiện cài đặt Eclipse như một chương trình thông thường.

Khi cài đặt, chương trình cài đặt sẽ hỏi bạn cài Eclipse để làm gì? Vì bạn có thể sử dụng Eclipse để làm nhiều việc khác nhau.


Ví dụ, bạn sẽ chọn Eclipse IDE for Java Developers để học lập trình Java.

1.2. Chạy chương trình đầu tiên

Thông báo của Microsoft Defender

Khi chạy Eclipse lần đầu, có thể bạn sẽ nhận được thông báo của chương trình Microsoft Defender (viết tắt MD), đây là chương trình bảo vệ máy tính. Nó hỏi bạn là “có muốn MD giám sát Eclipse không?”.

- Nếu bạn chọn “Exclude Eclipse IDE …”. MD sẽ không giám sát hoạt động của Eclipse

- Nếu bạn chọn  “Keep Eclipse IDE …”. MD sẽ luôn giám sát hoạt động của Eclipse


Vì chúng ta chỉ học lập trình Java, nên chắc cũng không có gì ảnh hưởng đến an toàn, bảo mật của máy tính. Nên sẽ không cần MD giám sát Eclipse. Lựa chọn này giúp tăng tốc độ xử lý của Eclipse và bạn sẽ không gặp các cảnh báo của MD.

Nếu bạn lỡ chọn MD “luôn giám sát Eclipse” (sau này khi lập trình sẽ hay gặp cảnh báo của MD, hơi khó chịu!) thì vẫn có thể điều chỉnh lại ở trong MD.

Workspace

Trước khi tạo và chạy chương trình đầu tiên, chúng ta cần tìm hiểu một số khái niệm: workspace, project, package, class.

Sau khi cài đặt Eclipse thành công, khi bạn chạy Eclipse lần đầu, nó sẽ yêu cầu bạn lựa chọn một thư mục để làm workspace.  


Workspace chính là thư mục làm việc hay không gian làm việc. Bạn có thể sử dụng thư mục làm việc mặc định hoặc tạo ra thư mục làm việc mới.

Workspace dùng để chứa các dự án, cùng với các thành phần liên quan để phát triển dự án.

Như ở hình trên, workspace mặc định sẽ là C:\Users\Maxsys\eclipse-workspace.

Bạn nên tạo workspace mới, để học lập trình Java, ví dụ E:\HocJava. Để tạo, bạn chỉ việc mở File Explorer của Windows và tạo một thư mục mới. Sau đó, chỉ cho Eclipse biết là bạn dùng thư mục vừa tạo để làm workspace.

Trong giao diện của Eclipse, workspace bạn đang làm việc sẽ được hiển thị ở góc trên, bên trái của Eclipse.


Để chuyển workspace, vào menu File > chọn Switch Workspace > chọn Other… > chọn workspace cụ thể (ví dụ: E:\HocJava). Eclipse sẽ chạy lại với workspace làm việc mới.

Project

Khi đã có workspace, chúng ta sẽ tạo dự án mới trong workspace.

Một workspace có thể chứa nhiều project.

Project là một tập hợp các tập tin (files) và thư mục (folders) chứa mã nguồn Java, tài liệu, hình ảnh và các thành phần khác cần thiết để xây dựng một ứng dụng Java hoàn chỉnh.

Cách tạo project

Vào menu File > New > Java Project >  đặt tên cho project sẽ tạo (ví dụ: projectBT1) > Finish.

Dự án được tạo (nếu thành công) sẽ xuất hiện trong cửa sổ Package Explorer.


Nếu bạn đang mở cùng lúc nhiều project, để chọn project hiện hành, bấm vào tên của project ở cửa sổ Package Explorer (khung bên trái). Như ở hình trên projectBT2 là project hiện hành.

Package

Package (gói) dùng để nhóm các class, interface và các package con tương tự, liên quan đến nhau.

Có thể coi package giống như một thư mục.

Các package trong Java giúp tránh xung đột khi đặt tên, kiểm soát truy cập, hỗ trợ tìm kiếm và sử dụng các class, interface.

Có 2 loại package: package có sẵn của Java và package do người dùng tạo ra.

Để tạo package, chuột phải vào src > chọn New > Package > đặt tên cho package (ví dụ demo). Tên của package nên viết thường toàn bộ.


Bạn có thể tạo nhiều package trong một project, package có thể lồng trong package.

Class

Trong lập trình, một lớp (class) là một nhóm đối tượng có các đặc điểm giống nhau. Ví dụ: xe, sinh viên, nhân viên.

Người ta dùng khái niệm class để mô tả về các đối tượng sẽ được tạo ra. Cũng có thể xem class là một kiểu dữ liệu. Một class gồm các thuộc tính và hành vi (phương thức).

Tuy nhiên, trong một chương trình Java luôn có một lớp đặc biệt, nó không dùng để mô tả các đối tượng sẽ được tạo ra. Mà nó chỉ dùng để chứa hàm main(), là điểm bắt đầu (entry point) để chạy chương trình.

Chúng ta sẽ tạo ra class này để viết chương trình đầu tiên trong Java.

Chuột phải vào package (ví dụ demo) > chọn New > Class > đặt tên cho class sẽ tạo (ví dụ helloworld) > bấm Finish để hoàn thành.


Eclipse sẽ tạo ra tập tin helloworld.java để lưu mã nguồn của class helloworld. Trong tập tin helloworld.java, bạn nhập vào đoạn mã sau:

package demo;

public class helloworld {

     public static void main(String[] args) {

       System.out.println("hi cu Teo");

   }

}

Nhớ lưu (File > save) tập tin mã nguồn, trước khi dịch và thực thi đoạn mã.

Một tập tin chưa được lưu, sẽ có dấu sao (*) ở phía trước tên. Bạn lưu mã nguồn rồi, thì dấu sao này sẽ không còn nữa.

Để dịch và thực thi mã nguồn, bấm vào nút Run, chương trình sẽ chạy (nếu không có lỗi), và xuất ra kết quả.


Vậy là bạn đã tạo được workspace, project, package, class, và chạy chương trình đầu tiên.

Để học tốt, bạn nên tìm hiểu kĩ về các từ khóa, khái niệm, mà bạn gặp khi lập trình. Chúng ta sẽ cùng tìm hiểu về đoạn mã vừa viết.

package demo;

- package là từ khóa để khai báo, báo cho chương trình biết là tập tin helloworld.java sẽ nằm trong package có tên là demo.

public class helloWorld {

public: quyền truy cập công khai, nghĩa là lớp này có thể được truy cập từ bất kỳ đâu.

class: khai báo một lớp mới tên là helloworld.

Dấu { là bắt đầu một khối lệnh

public static void main(String[] args) {:

public static void: đây là một phương thức (method) đặc biệt, được gọi là điểm vào của chương trình. Khi bạn chạy một chương trình Java, máy ảo Java (JVM) sẽ tìm và gọi phương thức main này đầu tiên.

String[] args: một mảng các chuỗi, được sử dụng để truyền các đối số vào chương trình từ dòng lệnh.

System.out.println("hi cu Teo");

System.out: là thư viện có hàm xuất dữ liệu ra cửa sổ dòng lệnh (console).

println(): một hàm (phương thức) của System.out, dùng để in một dòng văn bản ra màn hình và xuống dòng.

Dấu } để báo kết thúc một khối lệnh.

-----

Cập nhật: 4/11/2024

Bài sau:

-----

Java (0): Tạo tài liệu ghi chép

0. Tạo sổ tay ghi chép cho bản thân

Mặc dù chúng ta có rất nhiều tài nguyên để học, như các video trên youtube, tài liệu trên các trang web, sách điện tử (ebook), trợ lý ảo (copilot, gemini, chatgpt). Nhưng có một cách học khá hiệu quả là tự mình “tái tạo” lại kiến thức cho bản thân.

Cách thực hiện:

- Tạo một tài liệu để ghi chép. Bạn có thể tạo trên máy tính hoặc trên mạng. Bạn nên tạo tài liệu trên Google Docs, vừa tiện trong quá trình sử dụng, ngồi ở đâu cũng truy cập, ghi chép được; lại có thể chia sẻ dễ dàng cho bạn bè.

- Đăng nhập vào tài khoản gmail của Google. Bấm vào ô hình vuông (cạnh tên tài khoản) > chọn mục Drive. 

- Chọn nút New > chọn Google Docs để tạo một tập tin mới, chúng ta sẽ ghi chép kiến thức vào tập tin này. 


- Đặt tên cho tập tin. Ví dụ HocJava. Vậy là chúng ta đã có nơi để ghi chép, để “tái tạo” lại bài học.


- Trong Google Docs > bấm đúp vào vùng header > vào menu Insert, chọn Horizontal Line để chèn một đường kẻ ngang cho vùng header, nhập dòng chữ cho tài liệu, ví dụ Học Java. Bấm đúp vào vùng footer > vào menu Insert, chèn một đường kẻ ngang và chèn số trang cho vùng cuối rang.

- Kết quả sẽ được tài liệu như hình sau:

- Bạn sẽ sử dụng Heading 1, 2, 3 và Normal text cho phù hợp để soạn thảo văn bản.

----

Cập nhật: 2/11/2024

Bài sau: Java (1): Cài đặt và sử dụng Eclipse

-----



Python căn bản (16): Python Lists (cont.3)

16. Python Lists (cont.3)

16.1 List Comprehensions

List comprehension offers a shorter syntax when you want to create a new list based on the values of an existing list.

Example:

Based on a list of fruits, you want a new list, containing only the fruits with the letter "a" in the name.

Without list comprehension you will have to write a for statement with a conditional test inside.

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

newlist = []

 

for x in fruits:

  if "a" in x:

    newlist.append(x)

 

print(newlist)

With list comprehension you can do all that with only one line of code:

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

 

newlist = [x for x in fruits if "a" in x]

 

print(newlist)

The Syntax

newlist = [expression for item in iterable if condition == True]

The return value is a new list, leaving the old list unchanged.

Condition

The condition is like a filter that only accepts the items that evaluate to True.

Example

Only accept items that are not "apple":

newlist = [x for x in fruits if x != "apple"]

The condition if x != "apple"  will return True for all elements other than "apple", making the new list contain all fruits except "apple".

The condition is optional and can be omitted.

Example

With no if statement:

newlist = [x for x in fruits]

Iterable

The iterable can be any iterable object, like a list, tuple, set etc.

Example

You can use the range() function to create an iterable:

newlist = [x for x in range(10)]

Same example, but with a condition.

Example

Accept only numbers lower than 5:

newlist = [x for x in range(10) if x < 5]

Expression

The expression is the current item in the iteration, but it is also the outcome, which you can manipulate before it ends up like a list item in the new list.

Example

Set the values in the new list to upper case:

newlist = [x.upper() for x in fruits]

You can set the outcome to whatever you like.

Example

Set all values in the new list to 'hello':

newlist = ['hello' for x in fruits]

The expression can also contain conditions, not like a filter, but as a way to manipulate the outcome.

Example

Return "orange" instead of "banana":

newlist = [x if x != "banana" else "orange" for x in fruits]

The expression in the example above says:

"Return the item if it is not banana, if it is banana return orange".

16.2 Sort Lists

Sort List Alphanumerically

List objects have a sort() method that will sort the list alphanumerically, ascending, by default.

Example

Sort the list alphabetically:

thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]

thislist.sort()

print(thislist)

Example

Sort the list numerically:

thislist = [100, 50, 65, 82, 23]

thislist.sort()

print(thislist)

Sort Descending

To sort descending, use the keyword argument reverse = True.

Example

Sort the list descending:

thislist = ["orange", "mango", "kiwi", "pineapple", "banana"]

thislist.sort(reverse = True)

print(thislist)

Another example:

thislist = [100, 50, 65, 82, 23]

thislist.sort(reverse = True)

print(thislist)

Customize Sort Function

You can also customize your own function by using the keyword argument key = function.

The function will return a number that will be used to sort the list (the lowest number first).

Example

Sort the list based on how close the number is to 50:

def myfunc(n):

  return abs(n - 50)

 

thislist = [100, 50, 65, 82, 23]

thislist.sort(key = myfunc)

print(thislist)

Case Insensitive Sort

By default the sort() method is case sensitive, resulting in all capital letters being sorted before lower case letters.

Example

Case sensitive sorting can give an unexpected result:

thislist = ["banana", "Orange", "Kiwi", "cherry"]

thislist.sort()

print(thislist)

Luckily we can use built-in functions as key functions when sorting a list.

So if you want a case-insensitive sort function, use str.lower as a key function.

Example

Perform a case-insensitive sort of the list:

thislist = ["banana", "Orange", "Kiwi", "cherry"]

thislist.sort(key = str.lower)

print(thislist)

Reverse Order

What if you want to reverse the order of a list, regardless of the alphabet?

The reverse() method reverses the current sorting order of the elements.

Example

Reverse the order of the list items:

thislist = ["banana", "Orange", "Kiwi", "cherry"]

thislist.reverse()

print(thislist)

16.3 Copy and Join Lists

Copy a List

You cannot copy a list simply by typing list2 = list1, because: list2 will only be a reference to list1, and changes made in list1 will automatically also be made in list2.

You can use the built-in List method copy() to copy a list.

Example

thislist = ["apple", "banana", "cherry"]

mylist = thislist.copy()

print(mylist)

Use the list() method

Another way to make a copy is to use the built-in method list().

Example

Make a copy of a list with the list() method:

thislist = ["apple", "banana", "cherry"]

mylist = list(thislist)

print(mylist)

Use the slice Operator

You can also make a copy of a list by using the : (slice) operator.

 

Example

thislist = ["apple", "banana", "cherry"]

mylist = thislist[:]

print(mylist)

Join Two Lists

There are several ways to join, or concatenate, two or more lists in Python.

One of the easiest ways is by using the + operator.

Example

Join two list:

list1 = ["a", "b", "c"]

list2 = [1, 2, 3]

 

list3 = list1 + list2

print(list3)

Another way to join two lists is by appending all the items from list2 into list1, one by one.

Example

Append list2 into list1:

list1 = ["a", "b" , "c"]

list2 = [1, 2, 3]

 

for x in list2:

  list1.append(x)

 

print(list1)

Or you can use the extend() method, where the purpose is to add elements from one list to another list.

Example

Use the extend() method to add list2 at the end of list1:

list1 = ["a", "b" , "c"]

list2 = [1, 2, 3]

 

list1.extend(list2)

print(list1)

16.4 List Methods

Python has a set of built-in methods that you can use on lists.

Method            Description

append()          Adds an element at the end of the list

clear()              Removes all the elements from the list

copy()              Returns a copy of the list

count()             Returns the number of elements with the specified value

extend()           Add the elements of a list (or any iterable), to the end of the current list

index()             Returns the index of the first element with the specified value

insert()             Adds an element at the specified position

pop()                Removes the element at the specified position

remove()         Removes the item with the specified value

reverse()         Reverses the order of the list

sort()                Sorts the list

16.5 Exercise

1. Consider the following code:

fruits = ['apple', 'banana', 'cherry']

newlist = [x for x in fruits if x == 'banana']

What will be the value of newlist?

A. ['apple', 'cherry']

B. ['banana']

C. True

D. False

2. What is the correct syntax for making a copy of a list?

A. list2 = list1

B. list2 = list1.copy()

C. list2.copy(list1)

D.  list2 = ref(list1)

3. What is the correct syntax for joining list1 and list2 into list3?

A. list3 = join(list1, list2)

B. list3 = list1 + list2

C. list3 = [list1, list2]

D. list3 = connect(list1, list2)

4. Write a program to input a string from the keyboard that contains a combination of the lower and upper case letters, then rearrange the characters of a string so that all lowercase letters should come first.

Input:

s1: hiBacTeo 

Expected output:

            hiaceoBT

5. Write a python program that allows the user to input a list of numbers from the keyboard. The user enters the character "q" to finish entering the list. Remove duplicate numbers from the list.

Input: 

[1, 2, 3, 40, 2, 1, 5]

Expected output:

[1, 2, 3, 40, 5]

-----

The answer hints:

1(B), 2(B), 3(B), 4()

4. Write a program to input a string from the keyboard that contains a combination of the lower and upper case letters, then rearrange the characters of a string so that all lowercase letters should come first.

Input:

s1: hiBacTeo 

Expected output:

            hiaceoBT

[code16_4.py]

# user input string from the keyboard

s1 = input("Enter a string:")

 

# create 2 strings to store lower and upper characters

lowerString = []

upperString = []

 

for char in s1:

    if char.islower():

        lowerString.append(char)

    elif char.isupper():

        upperString.append(char)

# concatenate lowerString and upperString        

resultString = lowerString + upperString

 

# convert a character list into string

resultString = ''.join(resultString)

 

print(resultString)

[code16_5.py]

#create a number list

numbers = []

 

# input a character list from the keyboard, enter "q" to quit

while True:

    number = input("Enter a number (or 'q' to quit):")

    if number == 'q':

        break

    else:

        numbers.append(number)

print(numbers)

 #create a unique number list

uniqueNumbers = []

 

 #remove the duplicate item from the numbers

for i in numbers:

    if i not in uniqueNumbers:

        uniqueNumbers.append(i)

        

print(uniqueNumbers)

-----

Cập nhật: 1/11/2024

Bài sau: Python căn bản (17): 

-----

[Nội dung tham khảo từ w3schools, pynative và Internet]

Bạn muốn học Python căn bản tại Đà Lạt, liên hệ