Những năm gần đây, nhu cầu tuyển dụng ngành lập trình đã tăng lên đáng kể, và ngày càng nhiều bạn trẻ quan tâm đến việc học công nghệ thông tin và chuyển sang lĩnh vực này từ các ngành khác. Tuy nhiên, do thời gian học ngắn và thiếu tập trung, nhiều bạn gặp khó khăn khi tham gia phỏng vấn, đặc biệt là phần phỏng vấn về thuật toán.
Trong chuỗi bài viết này, chúng ta sẽ cùng nhau tìm hiểu về thuật toán và những thuật toán phổ biến, nhằm giúp bạn hiểu rõ hơn, áp dụng dễ dàng và tự tin hơn trong quá trình tham gia phỏng vấn tìm việc cũng như xây dựng nền tảng cho quá trình học lập trình.
Thuật toán là gì?
Thuật toán (Algorithm) được hiểu đơn giản là cách giải một bài toán bằng chương trình máy tính. Kỹ năng về thuật toán là một nền tảng quan trọng trong lập trình , vì vậy các lập trình viên cần nắm vững phần này để thực hiện công việc tốt.
Ví dụ, để giải một phương trình bậc nhất ax + b = 0, chúng ta cần thực hiện các bước sau:
- Khai báo các biến a, b và x.
- Nhập hai tham số a và b.
- Kiểm tra giá trị của a:
- Nếu a = 0:
- Kiểm tra giá trị của b:
- Nếu b = 0, in ra "Phương trình có vô số nghiệm".
- Nếu b ≠ 0, in ra "Phương trình vô nghiệm".
- Kiểm tra giá trị của b:
- Nếu a ≠ 0, in ra "Phương trình có một nghiệm duy nhất x = -b/a".
- Nếu a = 0:
Ví dụ trên là một thuật toán để giải phương trình bậc nhất ax + b = 0.
Cách biểu diễn thuật toán
Thỉnh thoảng, bạn có thể biết cách giải một bài toán nhưng không biết cách biểu diễn thuật toán đó. Có ba cách cơ bản để biểu diễn thuật toán:
1. Ngôn ngữ giả (Pseudo Code)
Trong ngôn ngữ giả, không sử dụng ngôn ngữ lập trình mà bạn có thể sử dụng tiếng Anh hoặc tiếng Việt để biểu diễn thuật toán. Ví dụ ở trên, chúng ta đã sử dụng ngôn ngữ Việt để biểu diễn thuật toán giải phương trình bậc nhất ax + b = 0. Trong các bài viết tiếp theo, chúng ta sẽ sử dụng ngôn ngữ giả thường xuyên để biểu diễn thuật toán.
2. Sơ đồ khối (Flowchart)
Sơ đồ khối sử dụng các ký hiệu để biểu diễn các khối lệnh trong thuật toán.
-
Bảng ký hiệu của sơ đồ khối:
-
Khối lệnh điều khiển (if):
-
Khối lệnh điều khiển (if..else):
-
Khối lệnh lặp:
Ví dụ: Sử dụng sơ đồ khối để biểu diễn thuật toán giải phương trình ax + b = 0 ở ví dụ trước.
3. Code
Bạn cũng có thể sử dụng ngôn ngữ lập trình mà bạn đã học để biểu diễn thuật toán. Ví dụ, sử dụng ngôn ngữ lập trình java để biểu diễn thuật toán giải phương trình ax + b = 0 ở ví dụ trên.
package firstdegreeequation; import java.util.Scanner; public class FirstDegreeEquation { public static void main(String[] args) { System.out.println("Giai phuong trinh bac nhat ax + b = 0"); int a, b; double x; Scanner sc = new Scanner(System.in); System.out.print("Nhap bien so a: "); a = sc.nextInt(); System.out.print("Nhap bien so b: "); b = sc.nextInt(); if (a == 0) { if (b == 0) System.out.println("Phuong trinh co vo so nghiem"); else System.out.println("Phuong trinh vo nghiem"); } else { x = (double) -b / a; System.out.println("Phuong trinh co nghiem x = " + x); } } }
Việc nắm vững cách biểu diễn thuật toán không chỉ giúp bạn biểu diễn các thuật toán mà bạn muốn viết, mà còn giúp bạn đọc và hiểu các thuật toán được viết bởi người khác hoặc trong các cuộc thi.
Cách giải quyết một bài toán liên quan đến thuật toán
Có thể tóm tắt các bước để giải quyết một bài toán liên quan đến thuật toán như sau:
-
Tìm hiểu kỹ về yêu cầu: Đây là bước quan trọng, bạn cần đọc kỹ để hiểu rõ yêu cầu và đảm bảo bạn hiểu đúng yêu cầu.
-
Tìm ra cách giải: Bước này khó nhất và tùy thuộc vào kỹ năng tư duy và kinh nghiệm của bạn. Phần lớn phụ thuộc vào khả năng giải toán. Tuy nhiên, nếu bạn đọc kỹ các bài toán liên quan và lập trình nhiều, kỹ năng này sẽ được cải thiện.
-
Phân ra từng bước thực hiện: Lập trình là quá trình chia nhỏ các bước thực hiện của một thuật toán thành các lệnh trong ngôn ngữ lập trình. Bạn cần chia nhỏ các bước thực hiện của thuật toán ra thành từng bước nhỏ nhất có thể.
-
Biểu diễn: Tùy thuộc vào nhu cầu mà bạn có thể biểu diễn thuật toán theo các hình thức đã nêu ở trên.
Thuật toán và cấu trúc dữ liệu
Mỗi kiểu dữ liệu định hình các bài toán cơ bản và thuật giải tương ứng. Do đó, khi nói về thuật toán, chúng ta thường đi kèm với cấu trúc dữ liệu. Trong các bài viết tiếp theo, chúng ta sẽ làm quen với các thuật toán thông dụng trên các kiểu dữ liệu phổ biến như:
- Các thuật toán cơ bản về số học.
- Các thuật toán cơ bản trên mảng một chiều.
- Các thuật toán cơ bản trên mảng hai chiều.
- Các thuật toán cơ bản trên chuỗi.
- Các thuật toán cơ bản trên danh sách đối tượng.
- Các thuật toán đệ qui.
- Các thuật toán khác.
Đó là những nội dung cơ bản về thuật toán, hy vọng giúp bạn dễ dàng hơn trong việc học hoặc ôn tập về thuật toán.
Bài viết tiếp theo: Các thuật toán về số học.