FAQ

1 - Lập trình là gì?

Lập trình là việc dùng ngôn ngữ lập trình và các công cụ, tiện ích để viết mã lệnh hiện thực các thuật toán để xây dựng nên các ứng dụng, chương trình thực thi trên máy tính, thiết bị để phục vụ cho cuộc sống. Thông qua những phần mềm ứng dụng, máy tính có thể giúp con người tiết kiệm thời gian, công sức và tận hưởng được nhiều tiện nghi hơn.

2 - Ngôn ngữ lập trình

Ngôn ngữ lập trình ( Programming Language ):

Là loại ngôn ngữ có quy tắc, bao gồm tập các chỉ lệnh để cho ra các thông tin (output) từ thông tin đầu vào (input). Ngôn ngữ lập trình được sử dụng trong lập trình máy tính để mô tả các thuật toán theo cách mà máy tính có thể hiệu và thực hiện theo.

Có rất nhiều ngôn ngữ máy tính được thiết kế để phục vụ cho nhiều nhu cầu khác nhau từ giáo dục, thương mại cho đến các hoạt động nghiên cứu chuyên sâu về Trí tuệ nhân tạo, Hàng không vũ trụ, Y-Sinh...Một số ngôn ngữ lập trình thường được đề cập phổ biến bao gồm: Pascal, C/C++, Java/Java Script, PHP, Python, Swift, ...

Trong đó, Pascal là ngôn ngữ lập trình được lựa chọn để dành cho giáo dục vì hệ thống tập lệnh được tổ chức một cách tự nhiên giống cách con người mô tả bằng lời nói. Vì thế, khi chuyển thuật toán từ mô tả bằng lời thành chương trình trên máy tính thì Pascal thể hiện rõ sự tự nhiên và trong sáng khi thiết kế chương trình.

Trong thời gian gần đây, một số quan điểm mong muốn thay thế Pascal bằng C/C++ trong dạy học cũng được đề xuất và được áp dụng thử nghiệm. Tuy nhiên, còn phụ thuộc vào cách xây dựng bài học và cách tiếp cận để có thể tận dụng được các thế mạnh về ngôn ngữ và các tiện ích hỗ trợ vừa phải đảm bảo được yêu cầu "dạy-học các kỹ năng cơ bản của lập trình", tránh việc lạm dụng các thư viện sẽ gây ra các lổ hổng kiến thức về sau.

 

Mỗi ngôn ngữ lập trình có 3 thành phần cơ bản, đó là: bảng chữ cái, cú pháp và ngữ nghĩa.

a) Bảng chữ cái là tập các kí tự được dùng để viết chương trình. Không được phép dùng bất kì kí tự nào ngoài các kí tự quy định trong bảng chữ cái.

Ví dụ: Trong Pascal, bảng chữ cái bao gồm các kí tự:

Bảng chữ cái của các ngôn ngữ lập trình được mô tả rõ trong tài liệu hướng dẫn tương ứng, có thể tham khảo tại trang chủ của nhà phát triển.

b) Cú pháp là bộ qui tắc để viết chương trình, mà dựa vào chúng, người lập trình và chương trình dịch biết được tổ hợp nào của các kí tự trong bàng chữ cái là hợp lệ. Nhờ đó, có thể mô tả chính xác thuật toán để máy tính thực hiện.

c) Ngữ nghĩa xác định ý nghĩa thao tác cần phải thực hiện, ứng với tổ hợp kí tự dựa vào ngữ cảnh của nó.

cú pháp cho biêt cách viết chương trình hợp lệ. Còn ngữ nghĩa xác định ý nghĩa của các tổ hợp kí tự trong chương trình.


 

2.1 Công cụ lập trình _ IDE là gì?

Môi trường lập trình-Integrated development environment (IDE)

Là phần mềm cung cấp cho các lập trình viên một môi trường tích hợp bao gồm nhiều công cụ khác nhau như chương trình viết mã lệnh (code editor), chương trình sửa lỗi (debugger), chương trình mô phỏng ứng dụng khi chạy thực tế (simulator).

Một số IDE thông dụng: FreePascal, Codeblocks, VisualStudio, Eclipse...

 

IDE KOMODO  

IDE FreePascal

 

3 - Học lập trình để làm gì?

Trước khi quyết định sẽ học ngôn ngữ lập trình gì, đầu tư thời gian như thế nào thì bạn nên dừng lại và nghĩ xem mình học lập trình để làm gì? Đây là điều quan trọng vì chỉ khi bạn biết mình sẽ đến đâu thì việc lựa chọn con đường và cách đi lúc này mới thật sự có ý nghĩa.

Tại sao học lập trình lại được xem là chìa khóa của sự thành công trong tương lai?

Tương lai của một lập trình viên là một thế giới vô cùng rộng lớn, có rất nhiều ngã rẽ và với mỗi hướng đi đều có nhiều cơ hội và thử thách đang chờ đón bạn.

  • Lập trình di động: Được xem như là một “nền kinh tế trên di động” với khoảng 2 tỷ người dùng smartphone và các thiết bị di động thông minh với gần 6 triệu ứng dụng di động đủ loại từ game giải trí đến tiện ích, tin tức, kinh doanh, sức khỏe, học hành…Chắc chắn bạn đã nghe đến một game made in Vietnam đã làm dậy sóng cộng đồng với doanh thu cực khủng chứ? Tương lai sẽ đến lượt bạn đấy!
  • Lập trình Web: Internet gắn liền với website và bạn muốn tham gia phát triển các hệ thống website kinh doanh online, bán hàng trực tuyến, giới thiệu doanh nghiệp, mạng xã hội,…. Hay bạn muốn làm chủ website thương hiệu cá nhân của mình, mang dấu ấn của riêng mình để có nhiều cơ hội phát triển và thành công hơn. 
  • Chuyên viên ứng dụng, hệ thống thông tin: Gắn liền với các hoạt động của đơn vị, doanh nghiệp là các phần mềm quản lý như: kế toán, nhân sự, bán hàng, quản lý kho… hay là hệ thống giải pháp phần mềm quản lý tổng thể như phần mềm ERP, CRM, quản lý bệnh viện, quản lý trường học,…Đó chính là “sân chơi” của các các chuyên viên hệ thống thông tin với nhiều vai trò khác nhau như: quản lý dự án, phân tích, lập trình, quản trị cơ sở dữ liệu,… Đây cũng là cơ hội dành cho các bạn đã có kiến thức chuyên môn ở lĩnh vực khác khi có thêm kiến thức về cơ sở dữ liệu, lập trình phần mềm,… 
  • Kiểm thử phần mềm: Phần mềm cũng như con người, phụ thuộc vào nhiều yếu tố khác có liên quan như các lớp thư viện hệ thống,hệ điều hành, phần cứng máy tính, tốc độ đường truyền, …Và một phần mềm chất lượng là phần mềm chạy chính xác và ổn định trên nhiều kịch bản thực tế khác nhau nên rất cần những chuyên viên kiểm thử phần mềm để thực hiện công việc đó. 
  • Chuyên gia Big Data: Công việc của bạn là thực hiện các xử lý trên tập dữ liệu rất lớn và phức tạp mà các hệ thống xử lý dữ liệu truyền thống không thể đáp ứng được. Đây là lĩnh vực cũng đang rất “hút” nhân sự khi dữ liệu lưu trữ ngày càng lớn. 
  • Machine Learning: Cách mạng công nghiệp 4.0 gắn liền với Trí tuệ nhân tạo và Machine Learning là một phần trong đó. Giờ đây bạn có thể lập trình để máy có thể học rồi "hô biến" ảnh đen trắng thành ảnh màu, đọc hiểu ảnh, dịch tự động, viết truyện, viết quảng cáo...  
  • Lập trình IOT: Lúc này bạn sẽ lập trình trên các thiết bị, các vi mạch,… để điều khiển, kết nối chúng lại với nhau. Đây là xu hướng dự báo trong tương lai với sự xuất hiện của các khái niệm: ngôi nhà “thông minh”, trang trại “thông minh”, bệnh viện “thông minh”,…
  • Và....nếu không là lập trình viên, bạn cũng nắm được cách vận hành, cách xây dựng các kịch bản (thuật toán) giống như “lập trình” cho các kế hoạch, dự án. Nắm được các quy tắc này, bạn sẽ trang bị cho mình được kỹ năng “giải quyết vấn đề” không chỉ dừng lại ở mức giải quyết được vấn đề mà còn đạt đến mức “Giải quyết hiệu quả” các vấn đề gặp phải trong cuộc sống.

 

4 - Bài toán trong tin học

Bài toán trong tin học được hiểu là một yêu cầu mà ta muốn tận dụng tốc độ và sự chính xác của máy tính để thực hiện.

Ví dụ bài toán tính diện tích hình chữ nhật, tìm ước chung lớn nhất của hai số nguyên dương, giải phương trình bậc nhất, quản lý nhân sự, quản lý tiền lương của nhân viên…

Muốn giải một bài toán nào đó trên máy tính, trước tiên ta cần xác định được hai yếu tố cơ bản:

  • Đầu vào (Input): thông tin (dữ liệu) đầu vào làm cơ sở để giải quyết bài toán.
  • Đầu ra (Output): thông tin (dữ liệu) mong muốn đạt được sau khi giải quyết bài toán.

Các bước để giải một bài toán trong tin học được gọi là thuật toán

Thuật toán-Algorithm là một bộ các quy tắc hay các bước cụ thể nhằm giải quyết một vấn đề nào đó trong một số bước hữu hạn, nhằm cung cấp một kết quả từ một tập hợp của các dữ kiện đầu vào.

Ví dụ: thuật toán để giải phương trình bậc nhất P(x): ax + b = c, (abc là các số thực), trong tập hợp các số thực có thể là một bộ các bước sau đây:

  1. Nếu a = 0
    • b = c thì P(x) có nghiệm bất kì
    • b ≠ c thì P(c) vô nghiệm
  2. Nếu a ≠ 0
    • P(x) có duy nhất một nghiệm x =  c-ba 

5 - Phải học những kiến thức gì để có thể tham gia các kỳ thi lập trình?

Lập trình thi đấu-Programming Competition

Là cuộc thi giữa các lập trình viên với các thể thức đa dạng nhưng đều quy về một hình thái chung: Một bài toán được đặt ra và bằng các công cụ lập trình được cho phép họ sẽ tiến hành lập trình để giải quyết các bài toán sao cho hiệu quả nhất.

Dựa trên quy định của mỗi kỳ thi mà cách thức chấm điểm, xếp hạng sẽ có những tiêu chí riêng. Bài thi đạt yêu cầu phải giải quyết được bài toán --> Bài thi giải quyết được bài toán hiệu quả hơn sẽ có giải cao hơn...

Một số kỳ thi lập trình thường niên: ACM-ICPC, International Olympiad in Informatics - IOIGoogle Code JamsTopcoder Competitive Programming, Facebook Hacker Cup,...

 

Video giới thiệu kỳ thi Google Code Jams 2019

Một số website thường xuyên mở những kỳ thi lập trình thường kỳ (tuần, tháng): Codeforces, Hackerrank, Topcoder,

Cần chuẩn bị gì để tham gia các kỳ thi lập trình thi đấu:

1. Kiến thức:

- Các kiến thức từ cơ bản đến nâng cao về thuật toán: Các thuật toán xử lý số học, Tìm kiếm, Sắp xếp, Quy hoạch động, Đồ thị, Hash....

- Thường xuyên cập nhật các kiến thức mới trên các diễn đàn hoặc các bài báo khoa học chuyên sâu.

2. Kỹ năng:

- Kỹ năng xác định bài toán và các thông tin liên quan để có thể nhanh chóng tìm ra lời giải phù hợp và hiệu quả.

- Kỹ năng làm bài, Kỹ năng phân phối thời gian, Kỹ năng kiểm thử và đánh giá độ phức tạp của thuật toán...

3. Rèn luyện:

- Thường xuyên làm bài và rút kinh nghiệm từ các hệ thống bài tập online và các kỳ thi thông thường.

- Một số website để rèn luyện kỹ năng làm bài: SPOJ, Codeforces, Hackerank, HackerEarth,...