- vừa được xem lúc

Tản mạn về Nhập Môn Lập Trình (phần 1)

0 0 24

Người đăng: Thới Hải Đức

Theo Viblo Asia

Sơ lược một tí về series này: Đây là một series mình sẽ tóm tắt lại kiến thức các môn cơ sở mà sinh viên sẽ được học ở những năm đại học trong ngành CNTT. Series này sẽ nhắm đến các bạn học sinh đang có ý định thi vào ngành CNTT, giúp các bạn có thể hình dung được sơ lược những gì mình sẽ được học nếu chọn dấn thân vào con đường CNTT, bên cạnh đó mình cũng hi vọng series này có thể giúp được các bạn sinh viên CNTT có thể ôn tập lại các kiến thức mình đã học.

P/s: Những gì mình tóm tắt ở đây sẽ chỉ là sơ lược, tóm tắt về môn học, và dĩ nhiên sẽ có rất rất nhiều kiến thức các bạn cần đọc thêm để có thể hiểu sâu hơn các vấn đề.

Nhập Môn Lập Trình

Ngôn ngữ sử dụng: tiếng Anh, tiếng Việt, tiếng C/C++.


Nội dung môn học:

  • Giới thiệu tổng quan về lập trình.
  • Cấu trúc một chương trình.
  • Nhập, xuất cơ bản trong C/C++.
  • Biến, hằng, kiểu dữ liệu.
  • Công cụ mô tả bài toán(mã giả, lưu đồ).
  • Cấu trúc điều khiển, câu lệnh rẽ nhánh (if-else, switch case).
  • Vòng lặp (loop).
  • Dữ liệu có cấu trúc (struct) và mảng (array).
  • Hàm.
  • Làm việc với tập tin (file).

Mục tiêu môn học:

Đúng với tên gọi của nó, đây sẽ là môn học đưa bạn vào thế giới lập trình (thế giới mà giang hồ đồn sẽ toàn màu hồng, là vua các nghề, việc nhẹ, lương cao,... nhưng với tư cách là một người trong cuộc thì mình không chắc :v). Sau khi học xong môn học này bạn có thể tạo ra một số chương trình đơn giản, có nền tảng để tiếp tục học ở các môn tiếp theo.

1. Lập trình (programming) là gì?

Có khá nhiều định nghĩa về thuật ngữ này, nhưng với mình đây có lẽ là định nghĩa ngắn gọn, đầy đủ và dễ hiểu nhất:

“Programming is how you get computers to solve problems.” - "Lập trình là việc hướng dẫn máy tính xử lí vấn đề."

2. Cấu trúc một chương trình:

#include<stdio.h> //Khai báo thư viện int main() // Hàm main - hiểu đơn giản thì đây là nơi các bạn viết code để thực thi chương trình.
{ printf("Hello, world!"); // Thân hàm, chứa các đoạn code cần thực thi của hàm. return 0; // Kết quả trả về của hàm - sẽ nói kỹ hơn ở mục Hàm (Function).
}

Cài 1 IDE (IDE là gì thì các bạn có thể đọc ở đây: https://www.redhat.com/en/topics/middleware/what-is-ide) và chạy thử đoạn chương trình này nhé!

Bạn làm được đúng không? Bạn vừa gửi lời chào đến thế giới lập trình đấy! Chào mừng bạn đến với thế giới "đầy màu sắc" này.

Chào mừng bạn đến với thế giới lập trình

⚡ À bạn thấy kí hiệu // trong đoạn chương trình ở trên chứ? Thử đoán công dụng của nó nhé.

3. Nhập, xuất cơ bản trong C/C++.

Bạn nhớ lệnh printf("Hello, world!") ban nãy không? Chắc hẳn bạn cũng đoán được phần nào lệnh này để làm gì rồi nhỉ. Đúng vậy, đây là câu lệnh để xuất ra màn hình, những gì được ghi trong cặp " " sẽ được in ra màn hình.

⚡Thử viết ra một đoạn chương trình in ra hình này xem nhé:

*
**
***
****
*****

Song song với đó, đã có lệnh xuất chắc bạn cũng đoán được đi đôi với xuất là gì đúng không, để lấy được dữ liệu ta cần phải có thêm lệnh nhập. Lệnh nhập cơ bản nhất là nhập từ bàn phím, C hỗ trợ nhập từ bàn phím thông qua lệnh scanf(). Nghe tới đây, chắc hẳn bạn sẽ tự hỏi sau khi nhập thì dữ liệu sẽ lưu ở đâu đúng không? Đừng nóng vội, chúng ta sẽ có ngay câu trả lời ở phần tiếp theo thôi!

⚡Chạy thử đoạn chương trình dưới và cho biết kết quả thu được là gì nhé!

#include <stdio.h> int main() { char name[50]; // ?????????????? printf("Please enter your name: "); scanf("%s", name); printf("Welcome %s to Programming!", name); return 0;
}

Để đọc thêm về nhập xuất trong C, về cú pháp, cách sử dụng, thư viện cần khai báo các bạn có thể xem rõ hơn ở đây https://www.programiz.com/c-programming/c-input-output

⚡Thử tự tìm hiểu các lệnh nhập/xuất trong C++ và viết lại các đoạn chương trình nãy giờ bằng C++ nhé. Mình tin là các bạn làm được!

4. Biến, Hằng, Kiểu dữ liệu:

a. Biến:

Biến là nơi để chứa dữ liệu. Bạn nhớ câu hỏi dữ liệu được lưu ở đâu khi nhập vào không? Đây là câu trả lời đấy!

Theo ví dụ trên thì biến (varible) sẽ như một chiếc ly, chiếc ly này có thể chứa các loại nước khác nhau (nước cam, nước chanh, nước lọc,...), tương tự thế biến cũng là nơi để chứa dữ liệu (data).

b. Hằng:

Như ví dụ trên thì hằng cũng là một chiếc ly, nhưng chiếc ly này đặc biệt ở chỗ bạn chỉ có thể chứa một loại nước nhất định, điểu đó có nghĩa là bạn không thể thay ly nước lọc thành ly nước cam được. Tương tự thì giá trị của hằng trong lập trình cũng không thể thay đổi được.

c. Kiểu dữ liệu:

Quay trở lại với ví dụ chiếc ly. Với các nhu cầu sử dụng khác nhau chúng ta sẽ dùng những chiếc ly khác nhau.

Khái niệm kiểu dữ liệu cho biết miền giá trị mà một biến có thể chứa. Mỗi biến sẽ có một kiểu dữ liệu khác nhau. Về phạm vi, kích thước các kiểu dữ liệu trong C các bạn có thể xem ở: https://www.geeksforgeeks.org/data-types-in-c/

5. Công cụ mô tả bài toán(mã giả, lưu đồ):

a. Mã giả (Pseudocode):

  • Mã giả là công cụ giúp bạn mô tả bài toán cần giải quyết gần gũi với ngôn ngữ thường ngày hơn, trước khi chuyển nó thành code.
  • Mã giả KHÔNG phải là một ngôn ngữ lập trình.
  • Cụ thể hơn về cú pháp và cách sử dụng các bạn có thể đọc ở đây: https://quantrimang.com/pseudocode-la-gi-169796

b. Lưu đồ thuật toán (Flowchart):

⚡Sau khi có kiến thức về flowchart, thử xem hình vẽ sau đây thể hiện flowchart để thực hiện công việc gì nhé!

⚡Hãy tập thói quen viết mã giả, vẽ flowchart trước khi code một chương trình nhé! Điều này sẽ giúp bạn có thể hình dung được rõ ràng chương trình mình sẽ làm gì sau khi code hoàn thành. Nhờ đó mà bạn có thể hiểu được sâu sắc vấn đề, và giảm được các lỗi không đáng có trong quá trình code đấy! ⚡

6. Cấu trúc điều khiển, câu lệnh rẽ nhánh (if-else, switch case):

a. if-else:

Chung quy lại thì lập trình cũng chỉ là sử dụng máy tính để giải quyết các vấn đề trong cuộc sống, chính vì vậy chúng ta cần phải mô tả những vấn đề đó dưới dạng ngôn ngữ lập trình. Một trong những mẫu câu mà chúng ta thường phải giải quyết trong cuộc sống đó là nếu... thì...ngược lại...(ví dụ nếu chăm chỉ học thì bạn sẽ qua môn ngược lại bạn sẽ rớt môn)

Trong C/C++, mẫu câu này sẽ có cấu trúc như sau:

Chi tiết về if-else trong C/C++ các bạn có thể xem ở đây: https://www.geeksforgeeks.org/decision-making-c-c-else-nested-else/

⚡Đến đây thì mình có một thử thách nhỏ cho các bạn đây: Hãy tạo ra một game kéo búa bao với các yêu cầu cụ thể sau:

- Game được chơi trên giao diện console.
- Game cho phép người chơi nhập vào ba giá trị (kéo, búa, bao, chấp nhận người dùng chỉ nhập 3 giá trị này, chưa xử lí các trường hợp người dùng nhập vào các giá trị không hợp lệ).
- Máy sẽ được random giá trị (kéo, búa, bao). Về cách thức random, các bạn có thể search google với từ khóa 'generate random number C'.
- Kết quả xuất ra màn hình là thông báo người dùng thắng hoặc thua máy.

b. switch-case:

Một cách khác để biễu diễn câu lệnh rẽ nhánh đó là sử dụng switch-case

Cụ thể về switch-case bạn có thể xem ở đây: https://www.programiz.com/c-programming/c-switch-case-statement

⚡ Thử viết một chương trình cho phép người dùng nhập vào năm, tháng và xuất ra mà hình số ngày của tháng đó nhé.

7. Vòng lặp (loop):

Thử tưởng tượng bạn được cho 1 đề bài như sau:

In ra các số từ 1 đến 10

Công việc có vẻ đơn giản đúng không, bạn hoàn toàn có thể code như sau:

#include<stdio.h>
int main()
{ printf("1\n"); printf("2\n"); printf("3\n"); printf("4\n"); printf("5\n"); printf("6\n"); printf("7\n"); printf("8\n"); printf("9\n"); printf("10\n"); return 0; }

Nhưng thử tưởng tượng xem nếu việc cần làm là in ra từ 1 đến 1.000, 10.000,... bạn sẽ làm thế nào? Viết 1.000, 10.000,... lần lệnh printf() chăng? Đây là lúc vòng lặp giải quyết vấn đề đó. Đúng với tên gọi của nó, vòng lặp sinh ra để xử lí các vấn đề được lặp đi, lặp lại nhiều lần giống nhau.

a. Vòng lặp for:

for thường được dùng để thực hiện các lệnh lặp mà số lần lặp là một số biết trước.

Cấu trúc của for như sau:

Áp dụng cấu trúc trên, đoạn chương trình để in từ 1 đến 1000 có thể viết lại như sau:

#include<stdio.h>
int main()
{ for(int i = 1; i <= 1000; i++) { printf("i\n"); } return 0; }

⚡Áp dụng vòng lặp for, bạn hãy thử in ra các số chẵn từ 1 đến 1000 nhé.

b. Vòng lặp while:

for loop

while thường được dùng để thực hiện các lệnh lặp với số lần lặp là một số chưa biết trước.

⚡Thử sử dụng vòng lặp while để in ra các số từ 1 đến 1000 nhé.

c. Vòng lặp do-while:

Cũng tương tự như while, tuy nhiên khác với while sẽ kiểm tra điểu kiện lặp ngay lần đầu tiên, do-while sẽ thực hiện khối lệnh cần lặp ít nhất 1 lần trước khi kiểm tra điều kiện lặp.


Lưu ý khi sử dụng vòng lặp:

Hãy để ý đến điều kiện dừng của vòng lặp, hãy chắc chắn rằng vòng lặp của bạn không phải là một vòng lặp vô tận. Xét thử vòng lặp này và cho biết liệu nó có kết thúc được không nhé.

for(int i = 0; i < 0; i++)
{ print("i\n")
}
⚡Sau khi có kiến thức về vòng lặp, bạn hãy thử cải tiến trò chơi kéo, búa, bao nhé. Các cải tiến bao gồm:
- Khi người dùng nhập sai giá trị đầu vào (khác kéo, búa, bao), hiện ra thông báo cho biết người dùng đã nhập sai định dạng đầu vào và yêu cầu người dùng nhập lại.
- Sau khi kết thúc trò chơi, hiện ra thông báo cho phép người dùng tiếp tục 1 phiên trò chơi mới hoặc kết thúc trò chơi.

Tạm kết:

Trên đây là phần 1 của bài viết, qua phần 1 này bạn cũng đã nắm được kha khá kiến thức về lập trình và có thể tự vọc vạch code rồi đấy. Cảm ơn các bạn đã dành thời gian đọc bài viết, chúc các bạn học tốt! Và sau cùng, nếu bài viết có sai sót hoặc có gì đó nhầm lẫn, mình hi vọng nhận được các ý kiến đóng góp từ các bạn. Hẹn gặp lại các bạn ở phần 2 bài viết.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu về dịch vụ EC2 của AWS (Phần 1)

Hôm nay, mình lại quay lại với series chia sẻ các kiến thức về cloud. Nội dung quan trọng tiếp theo của AWS đó là dịch vụ compute EC2. 1. WHAT IS EC2 .

0 0 42

- vừa được xem lúc

Giới thiệu Template Engine Pug - Một cách viết HTML mới

Đối với hầu hết chúng ta, HTML là bước đầu tiên của chúng ta khi đặt chân vào Web Development. Bình thường chúng ta có thể viết HTML bằng cú pháp truyền thống, nhưng khi chúng ta phát triển, thì các c

0 0 48

- vừa được xem lúc

Tản mạn về Nhập Môn Lập Trình(phần 2)

Tiếp nối bài viết Tản mạn về Nhập Môn Lập Trình(phần 1), hôm nay chúng ta sẽ đến với phần 2. Ở phần 2 này chúng ta sẽ lần lượt bàn về các vấn đề còn lại trong nội dung môn học Nhập Môn Lập Trình nhé.

0 0 23

- vừa được xem lúc

Được rồi, đi thôi!!! VPS free nè (^.^) [P1]

Bạn là sinh viên, bạn là lập trình viên khó khăn về mặt tài chính, bạn không có xiền thuê VPS, được rồi hãy đến đây!!!. Hôm nay mình sẽ hướng dẫn cho các bạn cách tạo VPS free bằng Github Workflow & N

0 0 46

- vừa được xem lúc

[Linux] Iptables trong hệ thống Linux

IPtables là ứng dụng tường lửa miễn phí trong Linux, cho phép thiết lập các quy tắc riêng để kiểm soát truy cập, tăng tính bảo mật. Khi sử dụng máy chủ, tường lửa là một trong những công cụ quan trọng

0 0 35

- vừa được xem lúc

Từ bug format sai chuỗi số khi nhập bằng bàn phím tiếng Nhật, tới IME và các sự kiện composition trong JS

"Tự nhiên tui thấy hiện tượng lạ”. Khi nhập liệu một chuỗi các kí tự vào thẻ input, thông thường chúng ta nhập thế nào thì hiển thị thế ấy, không làm phép biến đổi gì cả.

0 0 36