Học kỹ thuật lập trình PHP cơ bản qua các ví dụ – Phần 2 – Xây dựng phương thức và Debug trong Eclipse IDE

Giới thiệu

Tiếp theo nội dung của bài trước, trong bài này chúng ta cùng nhau tìm hiểu một số kỹ thuật lập trình cơ bản trong PHP đồng thời tìm hiểu một số chức năng cần thiết trong Eclipse IDE.

Chúng ta thực hiện tiếp Yêu cầu 2 và Yêu cầu 3 của bài toán cơ bản thông qua những kỹ thuật về lập trình:

  • Kỹ thuật vòng lặp for kiểu mới.
  • Câu lệnh điều khiển và rẽ nhánh.
  • Các toán tử cơ bản.
  • Định nghĩa và thực thi các phương thức.

Chúng ta cũng tìm hiểu phương pháp debug trong Eclipse IDE để kiểm tra từng câu lệnh cũng như bắt lỗi.

Những kỹ thuật được trình bày sẽ mang tính phổ quát và độc lập ngôn ngữ lập trình. Điều đó có nghĩa rằng chúng ta có thể áp dụng ý tưởng từ các kỹ thuật này khi tìm hiểu các ngôn ngữ khác như Java / C# / Python.

Xây dựng phương thức trong PHP

Một phương thức trong PHP là một khối các câu lệnh có tên và có thể được thực thi bằng cách gọi từ một nơi khác trong chương trình.

Cấu trúc cú pháp của một phương thức như sau:

function tên_phương_thức (danh_sách_tham_số) [: kiểu_dữ_liệu_trả_về] {
  // Thực hiện công việc
}

Chúng ta có hai dạng phương thức chính:

  • Dạng phương thức không trả về kết quả.
  • Dạng phương thức có trả về kết quả.

Xây dựng phương thức không trả về kết quả

Bước 1.

Chúng ta thực hiện việc tạo một PHP Project mới trong Eclipse IDE.

Chúng ta tiếp tục thực hiện việc tạo file index.php.

Màn hình giao diện Eclipse IDE hiển thị nội dung của file index.php hiện ra.

Bước 2.

Chúng ta thực hiện việc tạo folder baitap và file BaiCoBan.php.

Chúng ta tiếp tục tạo phương thức:

function tinhTong() {}

Bước 3.

Nội dung đầu tiên bên trong phương thức tinhTong() như sau:

Bước 4.

Nội dung thứ hai bên trong phương thức tinhTong() như sau:

Bước 5.

Nội dung thứ ba bên trong phương thức tinhTong() như sau:

Ở đây chúng ta có một số điểm cần chú ý:

  1. Thứ nhất, kỹ thuật lặp for mới.

Cú pháp cho kỹ thuật lặp for mới như sau:

foreach (danh_sách as phần_tử) {
  // Thực hiện công việc
}

Ý nghĩa của cú pháp trên: hệ thống tự động truy xuất lần lượt từng phần tử trong danh_sách và gán giá trị cho phần_tử.

  1. Thứ hai, câu lệnh điều kiện và rẽ nhánh.

Câu lệnh điều kiện thứ nhất là if có cấu trúc cú pháp như sau:

if (điều_kiện_1) {
  // Thực thi công việc nếu điều_kiện_1 là đúng
} elseif (điều_kiện_2) {
  // Thực thi công việc nếu điều_kiện_2 là đúng
} else {
  // Thực thi công việc nếu cả điều_kiện_1 và điều_kiện_2 đều sai
}

Chú ý rằng tùy trường hợp chúng ta mới cần đến rẽ nhánh elseif hoặc else.

Câu lệnh điều khiển thứ hai là switch có cấu trúc cú pháp như sau:

switch(biểu_thức) {
  case giá_trị_1:
    // thực thi công việc nếu giá trị của biểu_thức trùng với giá_trị_1
    break;
  case giá_trị_2:
    // thực thi công việc nếu giá trị của biểu_thức trùng với giá_trị_2
    break;
  default:
    // thực thi công việc nếu giá trị của biểu_thức khác với các giá trị bên trên
}

Chúng ta có một số chú ý ở đây:

  • Từ khóa break thực hiện thoát khỏi một đoạn chương trình bên trong cặp {} hoặc một vòng lặp.
  • Từ khóa default được sử dụng tùy trường hợp cần thiết.
  1. Thứ ba, một số toán tử cơ bản.
  • Toán tử +. Thực hiện phép cộng: $x + $y.
  • Toán tử . Thực hiện phép trừ: $x – $y.
  • Toán tử *. Thực hiện phép nhân: $x * $y.
  • Toán tử /. Thực hiện phép chia: $x / $y.
  • Toán tử %. Thực hiện phép chia lấy số dư: $x % $y.
  • Toán tử ++. Thực hiện phép cộng thêm 1 vào số: $x ++.
  • Toán tử --. Thực hiện phép trừ đi 1 vào số: $x --.

Bước 6.

Nội dung thứ tư bên trong phương thức tinhTong() như sau:

Bước 7.

Chúng ta thực thi phương thức tinhTong() trong file index.php như sau:

Xây dựng phương thức có trả về kết quả

Bước 1.

Đối với phương thức tinhTong() có trả về kết quả, chúng ta có một số chú ý như sau:

  • Ở đây do chúng ta thực hiện tính tổng các số tự nhiên nên kiểu dữ liệu của kết quả được trả về là int.
  • Chúng ta có thể cung cấp tham số cho phương thức này. Ở đây chúng ta cung cấp tham số là mảng int[] tapHop để thực hiện việc tính tổng các số tự nhiên.
  • Do là có trả về kết quả nên ở câu lệnh cuối chúng ta sử dụng từ khóa return. Ở đây chúng ta thực hiện return tong.

Bước 2.

Trong file index.php, chúng ta thực hiện một số nội dung trước khi thực thi phương thức tinhTongSoChan().

Chúng ta chú ý rằng nên định nghĩa một biến để lưu giá trị được trả về của phương thức tinhTongSoChan().

Bước 3.

Chúng ta lựa chọn chức năng Run → Run Configurations để thực hiện cấu hình thực thi project.

Màn hình Run Configurations hiện ra.

Chúng ta lựa chọn nút New trong tab Server / Server để tạo mới PHP Web Server.

Bước 4.

Màn hình PHP Server Creation hiện ra.

Chúng ta nhập thông tin tương tự như sau:

Server Name: lampstack-7.3.6-1

Base URL: http://localhost:8080

Document Root: /home/homes/lampstack-7.3.6-1/apache2/htdocs/WorkspacePHP

Những điểm đáng chú ý ở đây:

  • Server Name. Chúng ta có thể đặt tên tùy ý. Ví dụ ở đây chúng ta đang xây dựng các phần mềm Web bằng PHP dựa theo bộ LAMP Stack thì đặt tên như trên cho dễ hình dung.
  • Base URL. Mặc định thì Apache Web Server trong bộ LAMP Stack thiết lập cổng là 8080.
  • Document Root. Đây là đường dẫn đến thư mục lưu trữ và thực thi các phần mềm Web bằng PHP bên trong apache2/htdocs.

Chúng ta lựa chọn nút Next > để tiếp tục.

Bước 5.

Màn hình thiết lập các thông số về debug hiện ra.

Chúng ta lựa chọn và nhập các thông tin như sau:

Debugger: Xdebug

Port: 9000

Chúng ta lựa chọn nút Finish để thực hiện.

Bước 6.

Màn hình Run Configurations hiện ra với các thông tin đã được cấu hình lại.

Chúng ta lựa chọn file index.php là file đầu tiên được thực thi.

Bước 7.

Chúng ta thực thi toàn bộ project để thử nghiệm những đoạn mã nguồn PHP được xây dựng bên trên:

Thực hiện Debug để kiểm tra các dòng lệnh và bắt lỗi trong Eclipse IDE

Bước 1.

Chúng ta mở file php.ini trong thư mục lampstack-7.3.6-1/php/etc/.

Chúng ta thực hiện mở chức năng xdebug bằng cách bỏ các dấu ; đứng trước các dòng cấu hình.

Sau đó chúng ta khởi động lại Apache Web Server để xác nhận.

Bước 2.

Chúng ta bổ sung phương thức phpinfo() trong file index.php để kiểm tra xem chức năng xdebug đã được khởi động lên chưa.

Chúng ta kiểm tra trên trình duyệt nếu xuất hiện các thông tin về xdebug thì là đúng.

Bước 3.

Chúng ta nhấn đôi chuột trái vào cột bên trái của dòng lệnh muốn bắt đầu thực hiện debug.

Một chấm nhỏ màu xanh sẽ xuất hiện ngay vị trí dòng lệnh này:

Bước 4.

Chúng ta chú ý đến nút hình con bọ trên thanh Toolbars và nút mũi tên ngay bên phải.

Bước 5.

Chúng ta lựa chọn thực hiện chức năng debug project khi nhấn vào nút mũi tên.

Bước 6.

Màn hình thông báo về việc lựa chọn chuyển sang giao diện debug hiện ra.

Chúng ta lựa chọn nút Switch để chuyển sang giao diện debug.

Bước 7.

Giao diện debug PHP của Eclipse IDE hiện ra.

Chúng ta nhận thấy dòng lệnh đầu tiên của file index.php đã được tô đậm màu xanh lá cây.

Trong phần màn hình ở góc bên phải, giá trị của các biến được định nghĩa bên trong phương thức đang được debug sẽ được hiển thị. Chú ý rằng chỉ những biến được định nghĩa trước dòng lệnh đang được debug mới được hiển thị.

Bước 8.

Chúng ta có thể nhấn menu Run trên thanh Toolbars để tham khảo các chức năng cơ bản cho tác vụ debug:

  • Chức năng Terminate với cặp phím Ctrl + F2. Chấm dứt tác vụ debug tại thời điểm hiện tại.
  • Chức năng Step Into với phím F5. Thực hiện lần lượt chuyển đến phương thức gặp phải tại dòng lệnh đang được debug.
  • Chức năng Step Over với phím F6. Thực thi dòng lệnh hiện tại và chuyển tiếp đến dòng lệnh tiếp theo bên dưới.
  • Chức năng Run to Line với cặp phím Ctrl + R. Thực thi các dòng lệnh liên tiếp và chuyển đến dòng lệnh đang đặt con trỏ chuột.

Bước 9.

Chúng ta thực hiện để con trỏ chuột tại dòng lệnh muốn debug ở Bước 3.

Chúng ta thực hiện chức năng Run to Line với phím F5 tại dòng lệnh này.

Bước 10.

Chúng ta thực hiện chức năng Step Over với phím F6 tại một số dòng lệnh liên tiếp.

Chúng ta thử dừng lại tại dòng lệnh:

$tong += $phanTu;

Chúng ta chú ý tab Variables ở phần màn hình bên phải.

Giá trị của các biến được định nghĩa trước dòng lệnh hiện tại đã được hiển thị chi tiết.

Bước 11.

Chúng ta thử thực hiện chức năng Terminate với cặp phím Ctrl + F2.

Chúng ta nhận thấy tác vụ debug được dừng lại.

Một chú ý là chúng ta mới chỉ tạm dừng chức năng debug và phần màn hình bên trái có xuất hiện:

PHP Applications (Waiting…)

Bước 12.

Chúng ta kiểm tra trình duyệt nội tại.

Những kết quả được thực thi cho đến dòng lệnh hiện tại được hiển thị ra.

Bước 13.

Chúng ta tiếp tục thực hiện chức năng Terminate với cặp phím Ctrl + F2.

Chúng ta nhận thấy tác vụ debug được dừng lại hoàn toàn.

Kết quả được hiển thị như sau:

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu một số kỹ thuật lập trình cơ bản trong PHP đồng thời tìm hiểu một số chức năng cần thiết trong Eclipse IDE.

Hy vọng rằng chúng ta có thể áp dụng phù hợp những kỹ thuật và chức năng này cho những bài tiếp theo.

Học kỹ thuật lập trình Python cơ bản qua các ví dụ – Phần 2 – Xây dựng phương thức và Debug trong Eclipse IDE

Giới thiệu

Tiếp theo nội dung của bài trước, trong bài này chúng ta cùng nhau tìm hiểu một số kỹ thuật lập trình cơ bản trong Python đồng thời tìm hiểu một số chức năng cần thiết trong Eclipse IDE.

Chúng ta thực hiện tiếp Yêu cầu 2 và Yêu cầu 3 của bài toán cơ bản thông qua những kỹ thuật về lập trình:

  • Kỹ thuật vòng lặp for kiểu mới.
  • Câu lệnh điều khiển và rẽ nhánh.
  • Các toán tử cơ bản.
  • Định nghĩa và thực thi các phương thức.

Chúng ta cũng tìm hiểu phương pháp debug trong Eclipse IDE để kiểm tra từng câu lệnh cũng như bắt lỗi.

Những kỹ thuật được trình bày sẽ mang tính phổ quát và độc lập ngôn ngữ lập trình. Điều đó có nghĩa rằng chúng ta có thể áp dụng ý tưởng từ các kỹ thuật này khi tìm hiểu các ngôn ngữ khác như PHP / C# / Java.

Xây dựng phương thức trong Python

Một phương thức trong Python là một khối các câu lệnh có tên và có thể được thực thi bằng cách gọi từ một nơi khác trong chương trình.

Cấu trúc cú pháp của một phương thức như sau:

def tên_phương_thức (danh_sách_tham_số) :
  // Thực hiện công việc

Chúng ta có hai dạng phương thức chính:

  • Dạng phương thức không trả về kết quả.
  • Dạng phương thức có trả về kết quả.

Xây dựng phương thức không trả về kết quả

Bước 1.

Chúng ta thực hiện việc tạo một PyDev Project mới trong Eclipse IDE.

Chúng ta tiếp tục thực hiện việc tạo package mainmodule Main.py.

Màn hình giao diện Eclipse IDE hiển thị nội dung của module Main.py hiện ra.

Bước 2.

Chúng ta thực hiện việc tạo package baitapmodule class BaiCoBan.py.

Nội dung về packagemodule class sẽ được thảo luận sâu hơn trong các bài tiếp theo về lập trình hướng đối tượng.

Ở đây chúng ta chỉ cần chú ý tạo theo hướng dẫn, trong đó tên của packagemodule class có thể đặt theo mục đích riêng.

Chúng ta tiếp tục tạo phương thức:

def tinhTong(self):

Những điểm đáng chú ý ở đây:

  • Phương thức trong Python không có quy định kiểu dữ liệu trả về cũng như phạm vi được truy xuất tương tự như trong Java / C#.
  • Chúng ta sẽ tự quyết định về việc có dữ liệu trả về hay không đối với từng phương thức.
  • Tham số self là một từ khóa mặc định, cho biết đây là phương thức bên trong một class. Điều này giúp phân biệt cách thức gọi đến đối với một phương thức bên ngoài class.

Bước 3.

Nội dung đầu tiên bên trong phương thức tinhTong() như sau:

Bước 4.

Nội dung thứ hai bên trong phương thức tinhTong() như sau:

Bước 5.

Nội dung thứ ba bên trong phương thức tinhTong() như sau:

Ở đây chúng ta có một số điểm cần chú ý:

  1. Thứ nhất, kỹ thuật lặp for mới.

Cú pháp cho kỹ thuật lặp for mới như sau:

for phần_tử in danh_sách :
  // Thực hiện công việc

Ý nghĩa của cú pháp trên: hệ thống tự động truy xuất lần lượt từng phần tử trong danh_sách và gán giá trị cho phần_tử.

  1. Thứ hai, câu lệnh điều kiện và rẽ nhánh.

Câu lệnh điều kiện if có cấu trúc cú pháp như sau:

if (điều_kiện_1) :
  // Thực thi công việc nếu điều_kiện_1 là đúng
elif (điều_kiện_2) :
  // Thực thi công việc nếu điều_kiện_2 là đúng
else :
  // Thực thi công việc nếu cả điều_kiện_1 và điều_kiện_2 đều sai

Chú ý rằng tùy trường hợp chúng ta mới cần đến rẽ nhánh elif hoặc else.

  1. Thứ ba, một số toán tử cơ bản.

Chúng ta có thể tham khảo một số toán tử cơ bản trong Python như sau:

  • Toán tử +. Thực hiện phép cộng: x + y.
  • Toán tử . Thực hiện phép trừ: x – y.
  • Toán tử *. Thực hiện phép nhân: x * y.
  • Toán tử /. Thực hiện phép chia: x / y.
  • Toán tử %. Thực hiện phép chia lấy số dư: x % y.

Bước 6.

Nội dung thứ tư bên trong phương thức tinhTong() như sau:

Bước 7.

Chúng ta thực thi phương thức tinhTong() trong module Main.py như sau:

Xây dựng phương thức có trả về kết quả

Bước 1.

Đối với phương thức tinhTong() có trả về kết quả, chúng ta có một số chú ý như sau:

  • Chúng ta có thể cung cấp tham số cho phương thức này. Ở đây chúng ta cung cấp tham số là mảng tapHop để thực hiện việc tính tổng các số tự nhiên.
  • Do là có trả về kết quả nên ở câu lệnh cuối chúng ta sử dụng từ khóa return. Ở đây chúng ta thực hiện return tong.

Bước 2.

Trong phương thức main() của module Main.py, chúng ta thực hiện một số nội dung trước khi thực thi phương thức tinhTongSoChan().

Chúng ta chú ý rằng nên định nghĩa một biến để lưu giá trị được trả về của phương thức tinhTongSoChan().

Bước 3.

Chúng ta thực thi toàn bộ project để thử nghiệm những đoạn mã nguồn Python được xây dựng bên trên:

Thực hiện Debug để kiểm tra các dòng lệnh và bắt lỗi trong Eclipse IDE

Bước 1.

Chúng ta nhấn chuột phải vào cột bên trái dòng lệnh muốn bắt đầu thực hiện debug.

Chúng ta lựa chọn chức năng Add Breakpoint để tạo điểm bắt đầu debug.

Bước 2.

Chúng ta nhận thấy có sự xuất hiện của một chấm nhỏ màu xanh ngay vị trí dòng lệnh này.

Chúng ta nhấn chuột phải vào chấm nhỏ này để tham khảo các chức năng đối với breakpoint.

Bước 3.

Chúng ta chú ý đến nút hình con bọ trên thanh Toolbars và nút mũi tên ngay bên phải.

Chúng ta lựa chọn thực hiện chức năng debug project khi nhấn vào nút mũi tên.

Bước 4.

Màn hình thông báo về việc lựa chọn chuyển sang giao diện debug hiện ra.

Chúng ta lựa chọn nút Switch để chuyển sang giao diện debug.

Bước 5.

Giao diện debug Python của Eclipse IDE hiện ra.

Chúng ta nhận thấy dòng lệnh đầu tiên có đánh dấu chấm nhỏ màu xanh đã được tô đậm màu xanh lá cây.

Các chức năng của project cũng được thực thi và dừng lại tại dòng lệnh này.

Chúng ta có thể nhận thấy các kết quả thực thi trước dòng lệnh này trong phần màn hình Console ở góc bên dưới.

Trong phần màn hình ở góc bên phải, giá trị của các biến được định nghĩa bên trong phương thức đang được debug sẽ được hiển thị. Chú ý rằng chỉ những biến được định nghĩa trước dòng lệnh đang được debug mới được hiển thị.

Bước 6.

Chúng ta có thể nhấn menu Run trên thanh Toolbars để tham khảo các chức năng cơ bản cho tác vụ debug:

  • Chức năng Terminate với cặp phím Ctrl + F2. Chấm dứt tác vụ debug tại thời điểm hiện tại.
  • Chức năng Step Into với phím F5. Thực hiện lần lượt chuyển đến phương thức gặp phải tại dòng lệnh đang được debug.
  • Chức năng Step Over với phím F6. Thực thi dòng lệnh hiện tại và chuyển tiếp đến dòng lệnh tiếp theo bên dưới.
  • Chức năng Run to Line với cặp phím Ctrl + R. Thực thi các dòng lệnh liên tiếp và chuyển đến dòng lệnh đang đặt con trỏ chuột.

Bước 7.

Chúng ta thực hiện chức năng Step Over với phím F6 tại một số dòng lệnh liên tiếp.

Chúng ta thử dừng lại tại dòng lệnh:

tong += phanTu

Chúng ta chú ý phần màn hình Variables ở góc bên phải.

Giá trị của các biến được định nghĩa trước dòng lệnh hiện tại đã được hiển thị chi tiết.

Bước 8.

Chúng ta thử thực hiện chức năng Terminate với cặp phím Ctrl + F2.

Chúng ta nhận thấy tác vụ debug được dừng lại và chỉ còn phần màn hình Console ở góc bên dưới là hiển thị các thông tin cho đến dòng lệnh hiện tại.

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu một số kỹ thuật lập trình cơ bản trong Python đồng thời tìm hiểu một số chức năng cần thiết trong Eclipse IDE.

Hy vọng rằng chúng ta có thể áp dụng phù hợp những kỹ thuật và chức năng này cho những bài tiếp theo.

Học kỹ thuật lập trình C# cơ bản qua các ví dụ – Phần 2 – Xây dựng phương thức và Debug trong MonoDevelop

Giới thiệu

Tiếp theo nội dung của bài trước, trong bài này chúng ta cùng nhau tìm hiểu một số kỹ thuật lập trình cơ bản trong C# đồng thời tìm hiểu một số chức năng cần thiết trong MonoDevelop.

Chúng ta thực hiện tiếp Yêu cầu 2 và Yêu cầu 3 của bài toán cơ bản thông qua những kỹ thuật về lập trình:

  • Câu lệnh điều khiển và rẽ nhánh.
  • Các toán tử cơ bản.
  • Định nghĩa và thực thi các phương thức.

Chúng ta cũng tìm hiểu phương pháp debug trong MonoDevelop để kiểm tra từng câu lệnh cũng như bắt lỗi.

Những kỹ thuật được trình bày sẽ mang tính phổ quát và độc lập ngôn ngữ lập trình. Điều đó có nghĩa rằng chúng ta có thể áp dụng ý tưởng từ các kỹ thuật này khi tìm hiểu các ngôn ngữ khác như PHP / Java / Python.

Xây dựng phương thức trong C#

Một phương thức trong C# là một khối các câu lệnh có tên và có thể được thực thi bằng cách gọi từ một nơi khác trong chương trình.

Chú ý rằng một phương thức phải được định nghĩa bên trong một class. Điều này sẽ được thảo luận kỹ hơn trong các bài tiếp theo về lập trình hướng đối tượng.

Cấu trúc cú pháp của một phương thức như sau:

phạm_vi_truy_cập [static] kiểu_dữ_liệu_trả_về tên_phương_thức (danh_sách_tham_số) {
  // Thực hiện công việc
}

Chúng ta có hai dạng phương thức chính:

  • Dạng phương thức không trả về kết quả.
  • Dạng phương thức có trả về kết quả.

Xây dựng phương thức không trả về kết quả

Bước 1.

Chúng ta thực hiện việc tạo một Console Project mới trong MonoDevelop.

Màn hình giao diện MonoDevelop hiển thị nội dung mặc của class MainClass.cs hiện ra.

Bước 2.

Chúng ta lựa chọn tạo class mới bằng cách nhấn chuột phải vào tên của project trong phân vùng màn hình bên trái.

Chúng ta lựa chọn chức năng Add → New File …

Bước 3.

Màn hình New File hiện ra.

Chúng ta lựa chọn mục General trong phân vùng màn hình bên trái.

Chúng ta lựa chọn chức năng Empty Class trong phân vùng màn hình ở giữa.

Chúng ta nhập thông tin như sau:

Name: BaiCoBan

Chú ý rằng, theo quy định trong C# thì chữ cái đầu của file phải được viết hoa.

Chúng ta lựa chọn nút New để thực hiện.

Bước 4.

Hệ thống thực hiện việc tạo mới class BaiCoBan.cs.

Chúng ta điều chỉnh thông tin thứ nhất như sau:

namespace BaiTap

Về cơ bản thì namespace trong C# có ý nghĩa tương tự như package trong Java. Nội dung về namespaceclass sẽ được thảo luận sâu hơn trong các bài tiếp theo về lập trình hướng đối tượng.

Chúng ta tiếp tục tạo phương thức:

public void TinhTong() {}

Những điểm cần chú ý ở đây:

  • Theo quy định trong C# thì chữ cái đầu của phương thức phải được viết hoa.
  • Về nguyên tắc chung khi viết mã nguồn C#, cặp dấu {} nên để bên dưới phần định nghĩa phương thức. Không giống như Java là dấu { để ngay bên phải phần định nghĩa phương thức.
  • Từ khóa thứ nhất cho biết phạm vi được phép truy xuất đến phương thức này. Ở đây chúng ta sử dụng từ khóa public. Từ khóa này cho biết phạm vi được truy xuất đến phương thức này là trên toàn bộ project. Điều này sẽ được thảo luận kỹ hơn trong các bài tiếp theo về lập trình hướng đối tượng.
  • Từ khóa thứ hai cho biết kiểu dữ liệu của kết quả được trả về sau khi thực thi phương thức. Ở đây chúng ta sử dụng từ khóa void. Từ khóa này cho biết phương thức này không trả về kết quả mà chỉ thực hiện các tác vụ bên trong.

Bước 5.

Nội dung đầu tiên bên trong phương thức TinhTong() như sau:

Bước 6.

Nội dung thứ hai bên trong phương thức TinhTong() như sau:

Bước 7.

Nội dung thứ ba bên trong phương thức TinhTong() như sau:

Ở đây chúng ta có một số điểm cần chú ý:

  1. Thứ nhất, câu lệnh điều kiện và rẽ nhánh.

Câu lệnh điều kiện thứ nhất là if có cấu trúc cú pháp như sau:

if (điều_kiện_1)
{
  // Thực thi công việc nếu điều_kiện_1 là đúng
}
else if (điều_kiện_2)
{
  // Thực thi công việc nếu điều_kiện_2 là đúng
}
else
{
  // Thực thi công việc nếu cả điều_kiện_1 và điều_kiện_2 đều sai
}

Chú ý rằng tùy trường hợp chúng ta mới cần đến rẽ nhánh else if hoặc else.

Câu lệnh điều khiển thứ hai là switch có cấu trúc cú pháp như sau:

switch(biểu_thức)
{
  case giá_trị_1:
    // thực thi công việc nếu giá trị của biểu_thức trùng với giá_trị_1
    break;
  case giá_trị_2:
    // thực thi công việc nếu giá trị của biểu_thức trùng với giá_trị_2
    break;
  default:
    // thực thi công việc nếu giá trị của biểu_thức khác với các giá trị bên trên
}

Chúng ta có một số chú ý ở đây:

  • Từ khóa break thực hiện thoát khỏi một đoạn chương trình bên trong cặp {} hoặc một vòng lặp.
  • Từ khóa default được sử dụng tùy trường hợp cần thiết.
  1. Thứ hai, một số toán tử cơ bản.

Chúng ta có thể tham khảo một số toán tử cơ bản trong C# như sau:

  • Toán tử +. Thực hiện phép cộng: x + y.
  • Toán tử . Thực hiện phép trừ: x – y.
  • Toán tử *. Thực hiện phép nhân: x * y.
  • Toán tử /. Thực hiện phép chia: x / y.
  • Toán tử %. Thực hiện phép chia lấy số dư: x % y.
  • Toán tử ++. Thực hiện phép cộng thêm 1 vào số: x ++.
  • Toán tử --. Thực hiện phép trừ đi 1 vào số: x --.

Bước 8.

Nội dung thứ tư bên trong phương thức TinhTong() như sau:

Bước 9.

Chúng ta thực thi phương thức TinhTong() trong class MainClass.cs như sau:

Xây dựng phương thức có trả về kết quả

Bước 1.

Đối với phương thức TinhTong() có trả về kết quả, chúng ta có một số chú ý như sau:

  • Chúng ta thay thế từ khóa void bằng kiểu dữ liệu của kết quả được trả về. Ở đây do chúng ta thực hiện tính tổng các số tự nhiên nên kiểu dữ liệu của kết quả được trả về là int.
  • Chúng ta có thể cung cấp tham số cho phương thức này. Ở đây chúng ta cung cấp 02 tham số là số lượng phần tử n và mảng int[] tapHop để thực hiện việc tính tổng các số tự nhiên.
  • Do là có trả về kết quả nên ở câu lệnh cuối chúng ta sử dụng từ khóa return. Ở đây chúng ta thực hiện return tong.

Bước 2.

Trong phương thức main() của class MainClass.cs, chúng ta thực hiện một số nội dung trước khi thực thi phương thức TinhTong().

Chúng ta chú ý rằng nên định nghĩa một biến để lưu giá trị được trả về của phương thức TinhTong().

Bước 3.

Chúng ta thực thi toàn bộ project để thử nghiệm những đoạn mã nguồn C# được xây dựng bên trên:

Thực hiện Debug để kiểm tra các dòng lệnh và bắt lỗi trong MonoDevelop

Bước 1.

Chúng ta để con trỏ chuột tại dòng lệnh muốn bắt đầu debug.

Chúng ta lựa chọn chức năng Run → New Breakpoint … trên thanh Toolbars.

Chúng ta cũng nhận thấy trên menu Run có những chức năng cơ bản để debug:

  • Chức năng Step Into với phím F11. Thực hiện lần lượt chuyển đến phương thức gặp phải tại dòng lệnh đang được debug.
  • Chức năng Step Over với phím F10. Thực thi dòng lệnh hiện tại và chuyển tiếp đến dòng lệnh tiếp theo bên dưới.

Bước 2.

Màn hình Create a Breakpoint hiện ra.

Chúng ta giữ nguyên các thông tin mặc định.

Chúng ta lựa chọn nút Create để thực hiện.

Bước 3.

Chúng ta nhận thấy xuất hiện một chấm nhỏ màu đỏ bên trái và dòng lệnh đặt con trỏ chuột đã được tô đậm màu hồng.

Bước 4.

Chúng ta lựa chọn nút mũi tên ở góc trái trên thanh Toolbars để thực hiện debug.

Project sẽ được thực thi cho đến dòng lệnh được đặt dấu chấm đỏ debug.

Bước 5.

Màn hình giao diện chính cho tác vụ debug.

Bước 6.

Chúng ta thực hiện chức năng Step Over với phím F10 tại một số dòng lệnh liên tiếp.

Chúng ta thử dừng lại tại dòng lệnh:

Console.WriteLine(tapHop[i] + “ ”);

Chúng ta chú ý tab Locals trong phần màn hình bên dưới.

Giá trị của các biến được định nghĩa trước dòng lệnh hiện tại đã được hiển thị chi tiết.

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu một số kỹ thuật lập trình cơ bản trong C# đồng thời tìm hiểu một số chức năng cần thiết trong MonoDevelop.

Hy vọng rằng chúng ta có thể áp dụng phù hợp những kỹ thuật và chức năng này cho những bài tiếp theo.

Học kỹ thuật lập trình Java cơ bản qua các ví dụ – Phần 2 – Xây dựng phương thức và Debug trong Eclipse IDE

Giới thiệu

Tiếp theo nội dung của bài trước, trong bài này chúng ta cùng nhau tìm hiểu một số kỹ thuật lập trình cơ bản trong Java đồng thời tìm hiểu một số chức năng cần thiết trong Eclipse IDE.

Chúng ta thực hiện tiếp Yêu cầu 2 và Yêu cầu 3 của bài toán cơ bản thông qua những kỹ thuật về lập trình:

  • Kỹ thuật vòng lặp for kiểu mới.
  • Câu lệnh điều khiển và rẽ nhánh.
  • Các toán tử cơ bản.
  • Định nghĩa và thực thi các phương thức.

Chúng ta cũng tìm hiểu phương pháp debug trong Eclipse IDE để kiểm tra từng câu lệnh cũng như bắt lỗi.

Những kỹ thuật được trình bày sẽ mang tính phổ quát và độc lập ngôn ngữ lập trình. Điều đó có nghĩa rằng chúng ta có thể áp dụng ý tưởng từ các kỹ thuật này khi tìm hiểu các ngôn ngữ khác như PHP / C# / Python.

Xây dựng phương thức trong Java

Một phương thức trong Java là một khối các câu lệnh có tên và có thể được thực thi bằng cách gọi từ một nơi khác trong chương trình.

Chú ý rằng một phương thức phải được định nghĩa bên trong một class. Điều này sẽ được thảo luận kỹ hơn trong các bài tiếp theo về lập trình hướng đối tượng.

Cấu trúc cú pháp của một phương thức như sau:

phạm_vi_truy_cập [static] kiểu_dữ_liệu_trả_về tên_phương_thức (danh_sách_tham_số) {
  // Thực hiện công việc
}

Chúng ta có hai dạng phương thức chính:

  • Dạng phương thức không trả về kết quả.
  • Dạng phương thức có trả về kết quả.

Xây dựng phương thức không trả về kết quả

Bước 1.

Chúng ta thực hiện việc tạo một Java Project mới trong Eclipse IDE.

Chúng ta tiếp tục thực hiện việc tạo package mainclass Main.java.

Màn hình giao diện Eclipse IDE hiển thị nội dung của class Main.java hiện ra.

Chúng ta chú ý lựa chọn việc tạo sẵn phương thức main(String[] args) trong class Main.java.

Bước 2.

Chúng ta thực hiện việc tạo package baitapclass BaiCoBan.java.

Nội dung về packageclass sẽ được thảo luận sâu hơn trong các bài tiếp theo về lập trình hướng đối tượng.

Ở đây chúng ta chỉ cần chú ý tạo theo hướng dẫn, trong đó tên của packageclass có thể đặt theo mục đích riêng.

Chúng ta tiếp tục tạo phương thức:

public void tinhTong() {}

Có 02 từ khóa cần chú ý ở đây:

  • Từ khóa thứ nhất cho biết phạm vi được phép truy xuất đến phương thức này. Ở đây chúng ta sử dụng từ khóa public. Từ khóa này cho biết phạm vi được truy xuất đến phương thức này là trên toàn bộ project. Điều này sẽ được thảo luận kỹ hơn trong các bài tiếp theo về lập trình hướng đối tượng.
  • Từ khóa thứ hai cho biết kiểu dữ liệu của kết quả được trả về sau khi thực thi phương thức. Ở đây chúng ta sử dụng từ khóa void. Từ khóa này cho biết phương thức này không trả về kết quả mà chỉ thực hiện các tác vụ bên trong.

Bước 3.

Nội dung đầu tiên bên trong phương thức tinhTong() như sau:

Bước 4.

Nội dung thứ hai bên trong phương thức tinhTong() như sau:

Bước 5.

Nội dung thứ ba bên trong phương thức tinhTong() như sau:

Ở đây chúng ta có một số điểm cần chú ý:

  1. Thứ nhất, kỹ thuật lặp for mới.

Cú pháp cho kỹ thuật lặp for mới như sau:

for (kiểu_dữ_liệu biến : danh_sách) {
  // Thực hiện công việc
}

Ý nghĩa của cú pháp trên: hệ thống tự động truy xuất lần lượt từng phần tử trong danh_sách và gán giá trị cho biến với kiểu_dữ_liệu phù hợp.

  1. Thứ hai, câu lệnh điều kiện và rẽ nhánh.

Câu lệnh điều kiện thứ nhất là if có cấu trúc cú pháp như sau:

if (điều_kiện_1) {
  // Thực thi công việc nếu điều_kiện_1 là đúng
} else if (điều_kiện_2) {
  // Thực thi công việc nếu điều_kiện_2 là đúng
} else {
  // Thực thi công việc nếu cả điều_kiện_1 và điều_kiện_2 đều sai
}

Chú ý rằng tùy trường hợp chúng ta mới cần đến rẽ nhánh else if hoặc else.

Câu lệnh điều khiển thứ hai là switch có cấu trúc cú pháp như sau:

switch(biểu_thức) {
  case giá_trị_1:
    // thực thi công việc nếu giá trị của biểu_thức trùng với giá_trị_1
    break;
  case giá_trị_2:
    // thực thi công việc nếu giá trị của biểu_thức trùng với giá_trị_2
    break;
  default:
    // thực thi công việc nếu giá trị của biểu_thức khác với các giá trị bên trên
}

Chúng ta có một số chú ý ở đây:

  • Từ khóa break thực hiện thoát khỏi một đoạn chương trình bên trong cặp {} hoặc một vòng lặp.
  • Từ khóa default được sử dụng tùy trường hợp cần thiết.
  1. Thứ ba, một số toán tử cơ bản.

Chúng ta có thể tham khảo một số toán tử cơ bản trong Java như sau:

  • Toán tử +. Thực hiện phép cộng: x + y.
  • Toán tử . Thực hiện phép trừ: x – y.
  • Toán tử *. Thực hiện phép nhân: x * y.
  • Toán tử /. Thực hiện phép chia: x / y.
  • Toán tử %. Thực hiện phép chia lấy số dư: x % y.
  • Toán tử ++. Thực hiện phép cộng thêm 1 vào số: x ++.
  • Toán tử --. Thực hiện phép trừ đi 1 vào số: x --.

Bước 6.

Nội dung thứ tư bên trong phương thức tinhTong() như sau:

Bước 7.

Chúng ta thực thi phương thức tinhTong() trong class Main.java như sau:

Xây dựng phương thức có trả về kết quả

Bước 1.

Đối với phương thức tinhTong() có trả về kết quả, chúng ta có một số chú ý như sau:

  • Chúng ta thay thế từ khóa void bằng kiểu dữ liệu của kết quả được trả về. Ở đây do chúng ta thực hiện tính tổng các số tự nhiên nên kiểu dữ liệu của kết quả được trả về là int.
  • Chúng ta có thể cung cấp tham số cho phương thức này. Ở đây chúng ta cung cấp tham số là mảng int[] tapHop để thực hiện việc tính tổng các số tự nhiên.
  • Do là có trả về kết quả nên ở câu lệnh cuối chúng ta sử dụng từ khóa return. Ở đây chúng ta thực hiện return tong.

Bước 2.

Trong phương thức main() của class Main.java, chúng ta thực hiện một số nội dung trước khi thực thi phương thức tinhTong().

Chúng ta chú ý rằng nên định nghĩa một biến để lưu giá trị được trả về của phương thức tinhTong().

Bước 3.

Chúng ta thực thi toàn bộ project để thử nghiệm những đoạn mã nguồn Java được xây dựng bên trên:

Thực hiện Debug để kiểm tra các dòng lệnh và bắt lỗi trong Eclipse IDE

Bước 1.

Chúng ta nhấn đôi chuột trái vào cột bên trái của dòng lệnh muốn bắt đầu thực hiện debug.

Một chấm nhỏ màu xanh sẽ xuất hiện ngay vị trí dòng lệnh này:

Bước 2.

Chúng ta chú ý đến nút hình con bọ trên thanh Toolbars và nút mũi tên ngay bên phải.

Bước 3.

Chúng ta lựa chọn thực hiện chức năng debug project khi nhấn vào nút mũi tên.

Bước 4.

Màn hình thông báo về việc lựa chọn chuyển sang giao diện debug hiện ra.

Chúng ta lựa chọn nút Switch để chuyển sang giao diện debug.

Bước 5.

Giao diện debug Java của Eclipse IDE hiện ra.

Chúng ta nhận thấy dòng lệnh đầu tiên có đánh dấu chấm nhỏ màu xanh đã được tô đậm màu xanh lá cây.

Các chức năng của project cũng được thực thi và dừng lại tại dòng lệnh này.

Chúng ta có thể nhận thấy các kết quả thực thi trước dòng lệnh này trong phần màn hình Console ở góc bên dưới.

Trong phần màn hình ở góc bên phải, giá trị của các biến được định nghĩa bên trong phương thức đang được debug sẽ được hiển thị. Chú ý rằng chỉ những biến được định nghĩa trước dòng lệnh đang được debug mới được hiển thị.

Bước 6.

Chúng ta có thể nhấn menu Run trên thanh Toolbars để tham khảo các chức năng cơ bản cho tác vụ debug:

  • Chức năng Terminate với cặp phím Ctrl + F2. Chấm dứt tác vụ debug tại thời điểm hiện tại.
  • Chức năng Step Into với phím F5. Thực hiện lần lượt chuyển đến phương thức gặp phải tại dòng lệnh đang được debug.
  • Chức năng Step Over với phím F6. Thực thi dòng lệnh hiện tại và chuyển tiếp đến dòng lệnh tiếp theo bên dưới.
  • Chức năng Run to Line với cặp phím Ctrl + R. Thực thi các dòng lệnh liên tiếp và chuyển đến dòng lệnh đang đặt con trỏ chuột.

Bước 7.

Chúng ta thực hiện chức năng Step Over với phím F6 tại một số dòng lệnh liên tiếp.

Chúng ta thử dừng lại tại dòng lệnh:

System.out.println(phanTu + “ ”);

Chúng ta chú ý phần màn hình Variables ở góc bên phải.

Giá trị của các biến được định nghĩa trước dòng lệnh hiện tại đã được hiển thị chi tiết.

Bước 8.

Chúng ta thử thực hiện chức năng Terminate với cặp phím Ctrl + F2.

Chúng ta nhận thấy tác vụ debug được dừng lại và chỉ còn phần màn hình Console ở góc bên dưới là hiển thị các thông tin cho đến dòng lệnh hiện tại.

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu một số kỹ thuật lập trình cơ bản trong Java đồng thời tìm hiểu một số chức năng cần thiết trong Eclipse IDE.

Hy vọng rằng chúng ta có thể áp dụng phù hợp những kỹ thuật và chức năng này cho những bài tiếp theo.

Học kỹ thuật lập trình Python cơ bản qua các ví dụ – Phần 1

Giới thiệu

Trong chuỗi các bài học về kỹ thuật lập trình Python cơ bản qua các ví dụ, chúng ta sẽ cùng nhau tìm hiểu những kỹ thuật lập trình cơ bản nhất mà có thể áp dụng ngay để xây dựng các chương trình ứng dụng thực tế.

Những kỹ thuật được trình bày sẽ mang tính phổ quát và độc lập ngôn ngữ lập trình. Điều đó có nghĩa rằng chúng ta có thể áp dụng các kỹ thuật này đối với các ngôn ngữ khác như PHP / Java / C#.

Đề bài

Yêu cầu 1: Thiết lập một tập hợp gồm một số lượng nhất định các số tự nhiên ngẫu nhiên.

Yêu cầu 2: Tính tổng các số chẵn trong tập hợp này.

Yêu cầu 3: Hiển thị các số này và tổng ra màn hình Console.

Phân tích và lập trình Yêu cầu 1

Phân tích

Để thực hiện Yêu cầu 1, chúng ta xem xét một số tác vụ nhỏ sau:

  • Tác vụ 1. Xác định một số lượng cố định.
  • Tác vụ 2. Thiết lập một tập hợp với số lượng phần tử được xác định bên trên.
  • Tác vụ 3. Xác định giá trị số tự nhiên cho từng phần tử.

Như vậy chúng ta sẽ cùng tìm hiểu những kỹ thuật lập trình sau để thực hiện lần lượt các tác vụ trên:

  • Kỹ thuật 1. Các kiểu dữ liệu số nguyên cơ bản trong Python.
  • Kỹ thuật 2. Khai báo biến và gán giá trị.
  • Kỹ thuật 3. Kiểu dữ liệu về tập hợp: mảng.
  • Kỹ thuật 4. Sử dụng thư viện toán học cơ bản trong Python 3.
  • Kỹ thuật 5. Kỹ thuật thực hiện vòng lặp để duyệt các phần tử trong tập hợp.

Lập trình với ngôn ngữ Python

Thực hiện Tác vụ 1 – Xác định một số lượng cố định

Chúng ta có thể thực hiện Tác vụ 1 với chuỗi lệnh sau:

n = 10

Chú ý rằng, khác với những ngôn ngữ khác như Java / C# / PHP, trong Python thì không cần có thêm dấu ; ở cuối mỗi dòng lệnh.

Những điểm cơ bản cần chú ý với chuỗi lệnh trên:

  1. Thứ nhất, kiểu dữ liệu và gán giá trị cho một biến.

Python rất linh động trong việc khai báo biến và gán giá trị.

Chúng ta không cần định nghĩa kiểu dữ liệu mà có thể gán giá trị trực tiếp lên biến. Biến được khai báo sẽ tự động nhận về kiểu dữ liệu tương ứng với giá trị được gán.

Tên của biến có thể bao gồm nhiều ký tự viết liền nhau và nên bắt đầu bằng một ký tự in thường.

Ví dụ với Yêu cầu 1 trong bài này, chúng ta có thể đặt tên biến là n hoặc soPhanTu.

  1. Thứ hai, xác định số lượng.

Chúng ta cũng có thể xác định một cách ngẫu nhiên một số lượng trong phạm vi nào đó.

Chúng ta thực hiện ý tưởng trên với chuỗi lệnh sau:

import random
x = random.randint(0, 10)

Python cung cấp cho chúng ta module random để thực hiện tạo ra ngẫu nhiên một giá trị thuộc kiểu dữ liệu nào đó.

Theo Yêu cầu 1, chúng ta sử dụng phương thức randint() để tạo sinh ngẫu nhiên một số tự nhiên trong phạm vi cho trước.

Thực hiện Tác vụ 2 và Tác vụ 3 – Thiết lập một tập hợp bao gồm các số tự nhiên

Những điểm cần chú ý khi thực hiện Tác vụ 2 và Tác vụ 3:

  1. Thứ nhất, khởi tạo mảng và truy xuất từng phần tử trong mảng.

Mặc định, khác với những ngôn ngữ khác, Python không cung cấp một kiểu dữ liệu mảng thuần túy giống như Java hay C#.

Chúng ta có thể sử dụng kiểu dữ liệu List và truy xuất theo phương pháp tương tự như kiểu dữ liệu mảng trong Java hay C#.

Chúng ta có thể khởi tạo mảng với một số phần tử sẵn có như sau:

tapHop = [15, 10, 2, 4]

Chúng ta truy xuất phần tử bắt đầu từ vị trí 0 đến số_lượng – 1.

Như vậy phần tử tapHop[1] có giá trị là 10.

  1. Thứ hai, gán giá trị cho từng phần tử trong mảng bằng phương pháp tự động với kỹ thuật lặp for.

Cú pháp cơ bản cho việc truy xuất các phần tử trong một mảng một chiều với kỹ thuật lặp for như sau:

for biến in range(số_lượng):
  // thực hiện công việc

Python cung cấp phương thức range() để trả về các số tự nhiên trong khoảng từ 0 đến số_lượng – 1.

Ví dụ với mảng tapHop[] gồm có n phần tử là các số tự nhiên. Chúng ta thực hiện gán giá trị như sau:

for i in range(n):
  tapHop[i] = random.randint(0, 100)

  1. Thứ ba, gán giá trị cho từng phần tử trong mảng bằng phương pháp tự động với kỹ thuật lặp while.

Vòng lặp while là câu lệnh vòng lặp cơ bản.

  • Nó lặp lại một câu lệnh hoặc khối trong khi biểu thức kiểm soát của nó là đúng. Điều kiện có thể là bất kỳ biểu thức Boolean nào.
  • Phần thân của vòng lặp sẽ được thực thi miễn là biểu thức điều kiện là đúng.
  • Khi điều kiện trở thành sai, điều khiển chuyển sang dòng mã tiếp theo ngay sau vòng lặp.

Ví dụ với mảng tapHop[] gồm có n phần tử là các số tự nhiên. Chúng ta thực hiện gán giá trị như sau:

i=1
while i < n:
  tapHop[i] = random.randint(0, 100)
  i=i+1

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu một số những kỹ thuật lập trình cơ bản đầu tiên trong ngôn ngữ Python.

Trong những bài tiếp theo, chúng ta sẽ tiếp tục tìm hiểu những kỹ thuật lập trình cơ bản khác để hoàn thành bài toán đặt ra ban đầu.

Học kỹ thuật lập trình PHP cơ bản qua các ví dụ – Phần 1

Giới thiệu

Trong chuỗi các bài học về kỹ thuật lập trình PHP cơ bản qua các ví dụ, chúng ta sẽ cùng nhau tìm hiểu những kỹ thuật lập trình cơ bản nhất mà có thể áp dụng ngay để xây dựng các chương trình ứng dụng thực tế.

Những kỹ thuật được trình bày sẽ mang tính phổ quát và độc lập ngôn ngữ lập trình. Điều đó có nghĩa rằng chúng ta có thể áp dụng các kỹ thuật này đối với các ngôn ngữ khác như C# / Java / Python.

Đề bài

Yêu cầu 1: Thiết lập một tập hợp gồm một số lượng nhất định các số tự nhiên ngẫu nhiên.

Yêu cầu 2: Tính tổng các số chẵn trong tập hợp này.

Yêu cầu 3: Hiển thị các số này và tổng ra màn hình trình duyệt.

Phân tích và lập trình Yêu cầu 1

Phân tích

Để thực hiện Yêu cầu 1, chúng ta xem xét một số tác vụ nhỏ sau:

  • Tác vụ 1. Xác định một số lượng cố định.
  • Tác vụ 2. Thiết lập một tập hợp với số lượng phần tử được xác định bên trên.
  • Tác vụ 3. Xác định giá trị số tự nhiên cho từng phần tử.

Như vậy chúng ta sẽ cùng tìm hiểu những kỹ thuật lập trình sau để thực hiện lần lượt các tác vụ trên:

  • Kỹ thuật 1. Kiểu dữ liệu số nguyên cơ bản trong PHP.
  • Kỹ thuật 2. Khai báo biến và gán giá trị.
  • Kỹ thuật 3. Kiểu dữ liệu về tập hợp: mảng.
  • Kỹ thuật 4. Sử dụng thư viện toán học cơ bản trong PHP.
  • Kỹ thuật 5. Kỹ thuật thực hiện vòng lặp để duyệt các phần tử trong tập hợp.

Lập trình với ngôn ngữ PHP

Thực hiện Tác vụ 1 – Xác định một số lượng cố định

Chúng ta có thể thực hiện Tác vụ 1 với chuỗi lệnh sau:

$n = 10;

Những điểm cơ bản cần chú ý với chuỗi lệnh trên:

  1. Thứ nhất, cú pháp cho việc định nghĩa một biến và gán giá trị.

Theo quy định trong PHP, tất cả các biến được khuyến cáo nên định nghĩa trước khi có thể được sử dụng.

Cú pháp cơ bản cho việc định nghĩa một biến như sau:

$tên_biến [ = giá_trị ][, $tên_biến [= giá_trị ] …];

Tên của biến được bắt đầu bởi ký tự $ và sau đó là tên biến có một ý nghĩa cụ thể phù hợp mục tiêu sử dụng.

Ví dụ với Yêu cầu 1 trong bài này, chúng ta có thể đặt tên biến là $n hoặc $soPhanTu.

  1. Thứ hai, kiểu dữ liệu.

Theo Yêu cầu 1, số lượng phần tử của một tập hợp phải là một số tự nhiên.

PHP cung cấp cho chúng ta một kiểu dữ liệu số nguyên 32 bit tương ứng với phạm vi từ – 2,147,483,648 đến 2,147,483,647.

  1. Thứ ba, xác định số lượng.

Theo Yêu cầu 1, chúng ta có thể xác định trước một số lượng phần tử.

Ví dụ ở đây là $n = 10.

Chúng ta cũng có thể xác định một cách ngẫu nhiên một số lượng trong phạm vi nào đó.

Chúng ta thực hiện ý tưởng trên với chuỗi lệnh sau:

$n = rand();

Thực hiện Tác vụ 2 và Tác vụ 3 – Thiết lập một tập hợp bao gồm các số tự nhiên

Những điểm cần chú ý khi thực hiện Tác vụ 2 và Tác vụ 3:

  1. Thứ nhất, các phương pháp khởi tạo mảng.

PHP cung cấp cho chúng ta những phương pháp khác nhau để khởi tạo một mảng lưu trữ bất kỳ.

Một điểm đặc biệt của PHP so với những ngôn ngữ khác là từng phần tử trong mảng thì có thể có kiểu dữ liệu khác nhau tùy theo mục đích sử dụng.

  • Cách thứ nhất, khởi tạo một mảng bằng ký hiệu:

Chúng ta có thể khởi tạo một mảng rỗng với chuỗi lệnh sau:

$tapHop = [];

Chúng ta cũng có thể khởi tạo một mảng bao gồm một số phần tử sẵn có với chuỗi lệnh sau:

$tapHop = ['25', '43', '66'];

hoặc:

$tapHop = [
  'soA' => '25',
  'soB' => '43',
  'soC' => '66'
];

  • Cách thứ hai, khởi tạo mảng rỗng bằng phương thức array():

Chúng ta có thể khởi tạo một mảng rỗng với chuỗi lệnh sau:

$tapHop = array();

Chúng ta cũng có thể khởi tạo một mảng bao gồm một số phần tử sẵn có với chuỗi lệnh sau:

$tapHop = array('25', '43', '66');

hoặc:

$tapHop = array(
  'soA' => '25',
  'soB' => '43',
  'soC' => '66'
);

  1. Thứ hai, truy xuất các phần tử trong mảng.

Theo quy định trong PHP, các phần tử trong mảng được bắt đầu từ vị trí 0 đến số_lượng – 1.

PHP rất linh động trong việc gán và truy xuất giá trị cho các phần tử trong mảng.

Chúng ta có thể định nghĩa nhiều cách truy xuất khác nhau cho các phần tử trong mảng như ví dụ sau:

$tapHop = ['25', '43', '66'];
$tapHop['tam'] = '70';
$tapHop[8] = '36';
$tapHop[] = '99';

Chúng ta có kết quả cho việc định nghĩa trên:

Array (
  [0] => 25
  [1] => 43
  [2] => 66
  [tam] => 70
  [8] => 36
  [9] => 99
)

Như vậy phần tử $tapHop[1] có giá trị là 43.

  1. Thứ ba, gán giá trị cho từng phần tử trong mảng bằng phương pháp tự động với kỹ thuật lặp for.

Cú pháp cơ bản cho việc truy xuất các phần tử trong một mảng một chiều với kỹ thuật lặp for như sau:

for (khởi_tạo_biến_truy_xuất; điều_kiện_lặp; bước_lặp) {
  // thực hiện công việc
}

Vòng lặp for hoạt động như sau.

  • Khi vòng lặp đầu tiên bắt đầu, phần khởi tạo của vòng lặp được thực thi. Nói chung, đây là một biểu thức đặt giá trị của biến điều khiển vòng lặp, hoạt động như một bộ đếm điều khiển vòng lặp. Điều quan trọng là phải hiểu rằng biểu thức khởi tạo chỉ được thực hiện một lần.
  • Tiếp theo, điều kiện được đánh giá. Đây phải là một biểu thức Boolean. Nó thường kiểm tra biến điều khiển vòng lặp dựa trên giá trị đích. Nếu biểu thức này là đúng, thì phần thân của vòng lặp được thực thi. Nếu nó sai, vòng lặp chấm dứt.
  • Tiếp theo, phần lặp của vòng lặp được thực thi. Đây thường là một biểu thức làm tăng hoặc giảm biến điều khiển vòng lặp. Vòng lặp sau đó lặp lại, đầu tiên đánh giá biểu thức điều kiện, sau đó thực hiện phần thân của vòng lặp và sau đó thực hiện biểu thức lặp với mỗi lần truyền. Quá trình này lặp lại cho đến khi biểu thức kiểm soát là sai.

Ví dụ với mảng $tapHop[] gồm có 10 phần tử là các số tự nhiên. Chúng ta thực hiện gán giá trị như sau:

for ($i = 0; $i < $n; $i++) {
  $tapHop[$i] = rand();
}

  1. Thứ tư, gán giá trị cho từng phần tử trong mảng bằng phương pháp tự động với kỹ thuật lặp while.

Vòng lặp while là câu lệnh vòng lặp cơ bản.

  • Nó lặp lại một câu lệnh hoặc khối trong khi biểu thức kiểm soát của nó là đúng. Điều kiện có thể là bất kỳ biểu thức Boolean nào.
  • Phần thân của vòng lặp sẽ được thực thi miễn là biểu thức điều kiện là đúng.
  • Khi điều kiện trở thành sai, điều khiển chuyển sang dòng mã tiếp theo ngay sau vòng lặp.

Ví dụ với mảng $tapHop[] gồm có 10 phần tử là các số tự nhiên. Chúng ta thực hiện gán giá trị như sau:

$i = 1;
while ($i < $n) {
  $tapHop[i] = rand();
  $i = $i + 1;
}

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu một số những kỹ thuật lập trình cơ bản đầu tiên trong ngôn ngữ PHP.

Trong những bài tiếp theo, chúng ta sẽ tiếp tục tìm hiểu những kỹ thuật lập trình cơ bản khác để hoàn thành bài toán đặt ra ban đầu.

Học kỹ thuật lập trình Csharp cơ bản qua các ví dụ – Phần 1

Giới thiệu

Trong chuỗi các bài học về kỹ thuật lập trình Csharp cơ bản qua các ví dụ, chúng ta sẽ cùng nhau tìm hiểu những kỹ thuật lập trình cơ bản nhất mà có thể áp dụng ngay để xây dựng các chương trình ứng dụng thực tế.

Những kỹ thuật được trình bày sẽ mang tính phổ quát và độc lập ngôn ngữ lập trình. Điều đó có nghĩa rằng chúng ta có thể áp dụng các kỹ thuật này đối với các ngôn ngữ khác như PHP / Java / Python.

Đề bài

  • Yêu cầu 1: Thiết lập một tập hợp gồm một số lượng nhất định các số tự nhiên ngẫu nhiên.
  • Yêu cầu 2: Tính tổng các số chẵn trong tập hợp này.
  • Yêu cầu 3: Hiển thị các số này và tổng ra màn hình Console.

Phân tích và lập trình Yêu cầu 1

Phân tích

Để thực hiện Yêu cầu 1, chúng ta xem xét một số tác vụ nhỏ sau:

  • Tác vụ 1. Xác định một số lượng cố định.
  • Tác vụ 2. Thiết lập một tập hợp với số lượng phần tử được xác định bên trên.
  • Tác vụ 3. Xác định giá trị số tự nhiên cho từng phần tử.

Như vậy chúng ta sẽ cùng tìm hiểu những kỹ thuật lập trình sau để thực hiện lần lượt các tác vụ trên:

  • Kỹ thuật 1. Các kiểu dữ liệu số nguyên cơ bản trong Csharp.
  • Kỹ thuật 2. Khai báo biến và gán giá trị.
  • Kỹ thuật 3. Kiểu dữ liệu về tập hợp: mảng.
  • Kỹ thuật 4. Sử dụng thư viện toán học cơ bản trong dotNET Core SDK.
  • Kỹ thuật 5. Kỹ thuật thực hiện vòng lặp để duyệt các phần tử trong tập hợp.

Lập trình với ngôn ngữ Csharp

Thực hiện Tác vụ 1 – Xác định một số lượng cố định

Chúng ta có thể thực hiện Tác vụ 1 với chuỗi lệnh sau:

int n = 10;

Những điểm cơ bản cần chú ý với chuỗi lệnh trên:

  1. Thứ nhất, cú pháp cho việc định nghĩa một biến và gán giá trị.

Theo quy định trong Csharp, tất cả các biến phải được định nghĩa trước khi có thể được sử dụng.

Cú pháp cơ bản cho việc định nghĩa một biến như sau:

kiểu_dữ_liệu tên_biến [ = giá_trị ][, tên_biến [= giá_trị ] …];

  1. Thứ hai, kiểu dữ liệu.

Theo Yêu cầu 1, số lượng phần tử của một tập hợp phải là một số tự nhiên.

Csharp cung cấp cho chúng ta một số kiểu dữ liệu số tự nhiên tương ứng với phạm vi khác nhau:

  • Kiểu dữ liệu byte. Đây là kiểu dữ liệu không dấu 8-bit có phạm vi số từ 0 đến 255.
  • Kiểu dữ liệu sbyte. Đây là kiểu dữ liệu có dấu 8-bit có phạm vi số từ -128 đến 127.
  • Kiểu dữ liệu ushort. Đây là kiểu dữ liệu không dấu 16-bit có phạm vi số từ 0 đến 65,535.
  • Kiểu dữ liệu short. Đây là kiểu dữ liệu có dấu 16-bit có phạm vi số từ –32,768 đến 32,767.
  • Kiểu dữ liệu int. Đây là kiểu dữ liệu có dấu 32-bit có phạm vi số từ –2,147,483,648 đến 2,147,483,647.
  • Kiểu dữ liệu uint. Đây là kiểu dữ liệu không dấu 32-bit có phạm vi số từ 0 đến 4,294,967,295.
  • Kiểu dữ liệu long. Đây là kiểu dữ liệu có dấu 64-bit có phạm vi số rất lớn so với kiểu int.
  • Kiểu dữ liệu ulong. Đây là kiểu dữ liệu không dấu 64-bit có phạm vi số rất lớn so với kiểu uint.

Trong các chương trình ứng dụng thông thường, chúng ta chỉ cần sử dụng kiểu dữ liệu int là đủ.

  1. Thứ ba, gán giá trị cho biến.

Chúng ta có thể gán giá trị cho biến ngay khi định nghĩa giống như chuỗi lệnh trên.

Chúng ta cũng có thể định nghĩa biến trước rồi gán giá trị sau:

int n;
n = 10;

Theo nguyên tắc chung, chúng ta nên đặt tên biến có một ý nghĩa cụ thể phù hợp mục tiêu sử dụng.

Tên của biến có thể bao gồm nhiều ký tự viết liền nhau và nên bắt đầu bằng một ký tự in thường.

Ví dụ với Yêu cầu 1 trong bài này, chúng ta có thể đặt tên biến là n hoặc soPhanTu.

  1. Thứ tư, xác định số lượng.

Theo Yêu cầu 1, chúng ta có thể xác định trước một số lượng phần tử.

Ví dụ ở đây là n = 10.

Chúng ta cũng có thể xác định một cách ngẫu nhiên một số lượng trong phạm vi nào đó.

Chúng ta thực hiện ý tưởng trên với các chuỗi lệnh sau:

Random rand = new Random();
int n = rand.Next(1000);

Chuỗi lệnh thứ nhất là định nghĩa một thực thể của lớp đối tượng Random. Chúng ta sẽ tìm hiểu kỹ hơn những kiến thức về lớp đối tượng trong các bài sau.

Chuỗi lệnh thứ hai là thực thi phương thức Next() để phát sinh ngẫu nhiên một số tự nhiên trong phạm vi từ 0 đến 999. Chúng ta sẽ tìm hiểu kỹ hơn những kiến thức về phương thức trong các bài sau.

Thực hiện Tác vụ 2 – Thiết lập một tập hợp với số lượng phần tử được xác định

Chúng ta có thể thực hiện Tác vụ 2 với chuỗi lệnh sau:

int[] tapHop = new int[n];

Những điểm cơ bản cần chú ý với chuỗi lệnh trên:

  1. Thứ nhất, cú pháp cho việc định nghĩa mảng một chiều và gán giá trị.

Csharp cung cấp cho chúng ta một kiểu dữ liệu cơ bản để lưu trữ một tập hợp các phần tử: mảng.

Tùy thuộc vào yêu cầu của chương trình ứng dụng, chúng ta có thể định nghĩa mảng một chiều hoặc mảng nhiều chiều.

Theo Yêu cầu 1, chúng ta định nghĩa mảng một chiều.

Cú pháp cơ bản cho việc định nghĩa một mảng một chiều như sau:

kiểu_dữ_liệu[] tên_mảng = new kiểu_dữ_liệu[số_lượng];

Chú ý rằng toán tử đặc biệt new giúp khởi tạo trong bộ nhớ một khoảng để lưu trữ mảng một chiều.

Chúng ta sẽ tìm hiểu kỹ hơn những kiến thức về các toán tử trong các bài sau.

  1. Thứ hai, gán giá trị.

Chúng ta có thể gán giá trị cho mảng ngay khi định nghĩa giống như chuỗi lệnh trên.

Chúng ta cũng có thể định nghĩa mảng trước rồi gán giá trị sau:

int[] tapHop;
tapHop = new int[số_lượng];

Thực hiện Tác vụ 3 – Xác định giá trị số tự nhiên cho từng phần tử

Những điểm cần chú ý khi thực hiện Tác vụ 3:

  1. Thứ nhất, truy xuất từng phần tử trong mảng.

Theo quy định trong Csharp, các phần tử trong mảng được bắt đầu từ vị trí 0 đến số_lượng – 1.

Như vậy, để truy xuất phần tử thứ i trong mảng, chúng ta sử dụng cú pháp:

tên_mảng[i-1]

  1. Thứ hai, gán giá trị cho từng phần tử trong mảng bằng phương pháp thủ công.

Chúng ta truy xuất từng phần tử trong mảng rồi gán giá trị.

Ví dụ với mảng tapHop[] gồm có 10 phần tử là các số tự nhiên. Chúng ta thực hiện gán giá trị như sau:

tapHop[0] = 1;
tapHop[1] = 8;
tapHop[2] = 15;
tapHop[3] = 19;
tapHop[4] = 24;
tapHop[5] = 35;
tapHop[6] = 12;
tapHop[7] = 64;
tapHop[8] = 24;
tapHop[9] = 88;

  1. Thứ ba, gán giá trị cho từng phần tử trong mảng bằng phương pháp tự động với kỹ thuật lặp for.

Cú pháp cơ bản cho việc truy xuất các phần tử trong một mảng một chiều với kỹ thuật lặp for như sau:

for (khởi_tạo_biến_truy_xuất; điều_kiện_lặp; bước_lặp) {
  // thực hiện công việc
}

Vòng lặp for hoạt động như sau:

  • Khi vòng lặp đầu tiên bắt đầu, phần khởi tạo của vòng lặp được thực thi. Nói chung, đây là một biểu thức đặt giá trị của biến điều khiển vòng lặp, hoạt động như một bộ đếm điều khiển vòng lặp. Điều quan trọng là phải hiểu rằng biểu thức khởi tạo chỉ được thực hiện một lần.
  • Tiếp theo, điều kiện được đánh giá. Đây phải là một biểu thức Boolean. Nó thường kiểm tra biến điều khiển vòng lặp dựa trên giá trị đích. Nếu biểu thức này là đúng, thì phần thân của vòng lặp được thực thi. Nếu nó sai, vòng lặp chấm dứt.
  • Tiếp theo, phần lặp của vòng lặp được thực thi. Đây thường là một biểu thức làm tăng hoặc giảm biến điều khiển vòng lặp. Vòng lặp sau đó lặp lại, đầu tiên đánh giá biểu thức điều kiện, sau đó thực hiện phần thân của vòng lặp và sau đó thực hiện biểu thức lặp với mỗi lần truyền. Quá trình này lặp lại cho đến khi biểu thức kiểm soát là sai.

Ví dụ với mảng tapHop[] gồm có 10 phần tử là các số tự nhiên. Chúng ta thực hiện gán giá trị như sau:

for (int i = 0; i < n; i++) {
  tapHop[i] = rand.nextInt(100);
}

  1. Thứ tư, gán giá trị cho từng phần tử trong mảng bằng phương pháp tự động với kỹ thuật lặp while.

Vòng lặp while là câu lệnh vòng lặp cơ bản.

  • Nó lặp lại một câu lệnh hoặc khối trong khi biểu thức kiểm soát của nó là đúng. Điều kiện có thể là bất kỳ biểu thức Boolean nào.
  • Phần thân của vòng lặp sẽ được thực thi miễn là biểu thức điều kiện là đúng.
  • Khi điều kiện trở thành sai, điều khiển chuyển sang dòng mã tiếp theo ngay sau vòng lặp.

Ví dụ với mảng tapHop[] gồm có 10 phần tử là các số tự nhiên. Chúng ta thực hiện gán giá trị như sau:

int i = 0;
while (i < n) {
  tapHop[i] = rand.nextInt(100);
  i = i + 1;
}

Tổng kết

Trong bài này, chúng ta đã cùng nhau tìm hiểu một số những kỹ thuật lập trình cơ bản đầu tiên trong ngôn ngữ Csharp.

Trong những bài tiếp theo, chúng ta sẽ tiếp tục tìm hiểu những kỹ thuật lập trình cơ bản khác để hoàn thành bài toán đặt ra ban đầu.