Day 3: Tìm Hiểu Ngôn Ngữ C - Tuần 1 Về C (Khóa CS50)
Vậy là mình đã viết những dòng code đầu tiền ở bài học tuần 1 về C này. Trong bài này mình sẽ tìm hiểu về hàm, biến, vòng lặp, điều kiện, kiểu dữ liệu... rất nhiều kiến thức
Vậy là đã tới ngày thứ 3 trên chặng đường học lập trình từ ZERO của mình. Mỗi ngày mình dành ra từ 2-4 tiếng để học lập trình. Nhưng thời gian đó là tổng thời gian mà thôi chứ không phải là học liên tục.
Sáng dậy sớm hơn thông thường 1 tiếng để xem bài giảng từ EDX cho khóa CS50
Xem thêm video liên quan trên youtube trong lúc di chuyển đi làm bằng xe bus
Học vào buổi tối sau đi vào về vào lúc 10-12h đêm trước khi đi ngủ
Mình tận dụng và cắt giảm các hoạt động giải trí không cần thiết và nhận ra là thực sự bản thân đang có nhiều thời gian hơn mình tưởng. Hy vọng và cố gắng giữ thói quen này trong 1 thời gian dài hơn. (Không liên quan nhưng các bạn có thể đọc quyển sách “Atomic Habits” để tìm hiểu thêm về cách thay đổi thói quen)
Chia sẻ mỏng đã xong, vậy mình đã học được gì từ bài học Tuần 1 về C này?
Tuần 1 Về C, Mình đã học được:
Trình Biên Tập Visual Studio Code - VS Code:
Trình biên tập VS Code là gì?
Là một trình soạn thảo văn bản mã nguồn mở miễn phí của Microsoft dành cho Windows, Linux và macOS.
Ở khóa CS50 này chúng ta sẽ dùng tới VS Code này trên nền tảng web tại
cs50.dev, nhưng bạn phải tạo thêm 1 tài khoản github để đăng nhập.
Vì tài liệu đã được lưu trên VS Code này trước nên khi học CS50 chúng ta sẽ dùng VS Code để viết code.
Giao diện VS Code sẽ chia làm 3 phần chính: file explorer, text editor, command line interface (CLI) hoặc gọi là terminal.
Các dòng lệnh cơ bản trên terminal để ra lệnh trong VS Code cơ bản như:
Make tenchuongtrinh : tìm và biên dịchchương trình
Code tenchuongtrinh.c : tạo một chương trình mới dưới tên là tenchuongtrinh trong ngôn ngữ C
vậy muốn chạy chương trình đó ở terminal thì sao? dùng ./tenchuongtrinh : chạy chương trình
Ví dụ:
(1) Code hello.c : tạo ra chương trình có tên hello trong ngôn ngữ C
→ (2) viết chương trình ở text editor
→ (3) make hello : tìm chương trình tên hello và biên dịch
→ (4) ./hello : để chạy chương trình
Mình sẽ phải đọc thêm và thức hình để nhớ các câu lệnh này vì mới bắt đầu sẽ khá khó nhớ.
Chức Năng Hàm - Functions trong C
Printf:
Mình có thể nói là printf chính là hàm đầu tiên mà mỗi người sẽ gặp khi học lập trình và dòng kí tự huyền thoại Hello, World.
Lỗi huyền thoại trong C đó là thiếu dấu ; (chấm phẩy) ở cuối câu khi viêt code. Mình đã quên rất nhiều lần nên là nhớ ; (chấm phẩy) một nháy nhé.
Bên cạnh đó thì phải nhớ đề cập gọi tên thư viện lúc ban đầu khi viết code như <stdio.h> hoặc <cs50.h> (thư viện riêng của khóa cs50).
\n : là để xuống dòng mới.
Biến - Variables
Biến là gì?
Biến là một cách để thể hiện vị trí bộ nhớ thông qua một cái tên để nó có thể được xác định một cách dễ dàng.. Mỗi biến trong C có một kiểu xác định, để xác định cỡ và layout cho bộ nhớ biến đó.
Answer là một biến ở chương trình trên, biến này sẽ lưu lại chuỗi ký tự mà người dùng nhập vào từ bàn phím để trả lời câu hỏi “bạn tên gì”.
get_string là hàm trong thư viện <cs50.h> để lấy dữ liệu chuỗi từ người dùng.
string là một trong những kiểu dữ kiểu có trong C, được gọi là kiểu chuỗi. Ngoài ra còn có kiểu dữ kiệu hay gặp như: int, bool, char, long, float…
Trên C có thể khai báo tên biến thông thường sẽ dùng kí tự chữ thường - không in hoa nhé.
Điều Kiện - Conditionals
Điều kiện - Conditionals là gì?
Trong trường hợp bạn muốn so sánh x lớn hơn y thì lúc này mình sẽ sử dụng tới điều kiện.
Viết một chương trình so sánh x và y rồi in ra x lớn hơn, nhỏ hơn hoặc bằng giá trị y.
Chúng ta sẽ so sánh x với y và xét 3 trường hợp:
x lớn hơn y nếu đúng thì in ra x lớn hơn y
nếu sai thì tiếp tục so sánh nếu x bé hơn y và đúng thì in ra x bé hơn y
nếu vẫn sai thì chỉ còn trượng hợp cuối là x bằng y - chúng ta không cần so sánh vì đây là trường hợp kha di cuôi cùng.
Mình sẽ dùng tới câu điều kiện và cú pháp là:
if (điều kiện) {
nếu đúng thì làm thực hiện câu lệnh
}
Else if : nghĩa là nếu kết quả từ if trả về là sai thì thực hiện lệnh else if.
Else: khi if và else if đều trả về là sai, hoặc hiểu là trường hợp cuối cùng có thể xảy ra thì thực hiện câu lệnh gì đó.
Điều kiện là một phần rất quan trọng trong tư duy lập trình cho nên mình đọc thêm và xem thêm khá nhiều video trên mạng.
Vòng Lặp - Loops
Vòng lặp - loops là gì?
Là một công cụ được dùng để thực hiện một số việc giống nhau, được lặp đi lặp lại nhiều lần cho đến khi tìm được kết quả thỏa với điều kiện quy ước ban đầu.
là cách hiểu ích để với nhiều ứng dụng trong lập trình, mình học được qua các vid dụ đơn giản bên dưới
Hình 1: In meow ra 3 lần trên màn hình
Hình 2: Dùng vòng lặp để tối ưu và cho ra cùng 1 kết quả in meow 3 lần.
- Sử dụng While khi i bé hơn 3, giá trị khởi tạo i = 0
- Nếu đúng thì in ra Meow và giá trị i sẽ tăng thêm 1 đơn vị
- Quay lại bước so sánh i bé hơn 3 không? với giá trị mới i =1 và lặp lạiHình 3:Dùng cách đếm giảm dần, tương tự cách ở hình 2, ở hình 3 sử dụng sự giảm dần của giá trị i với giá trị khởi tạo i = 3
Hình 4: Dùng vòng lặp bằng câu lệnh for:
- Với i là số nguyên và bằng 0, i nhỏ hơn 3
- Nếu đúng thì in Meow
- Sau đó giá trị i tăng 1 đơn vị, i =1 và lặp lạiThậm chí có thể cho lặp tới vô tận bằng cách dùng While (true): khi nào đúng thì in meow và do khai báo là true = luôn đúng và không có điều kiện khác so sánh để “break - dừng” nên sẽ in ra meow vô số lần.
Chú ý là nên bắt đầu từ 0 để không phải sử dụng tới việc so sánh bé hơn băng “<=”.
Dòng Lệnh - Comand Line
Một vài dòng lệnh thường gặp để dùng trong terminal như:
cd
: thay đổi thư mục hiện tại của bạn thành đích đến một thư mục kháccp
: copy file và directoryls
: liệt kê file trong directorymkdir
: tạo directory mớimv
: đổi tên hoặc chuyển file và directoryrm
: xóa filermdir
: xóa directorycd .. để trở về
Xem thêm tại đây.
Vậy là mình đã tự tổng hợp lại những kiến thức mình đã học được trong tuần này từ CS50, sau đó mình sẽ đọc lại notes và làm bài tập của tuần 1 gồm: lab 1 và problem 1.
Mình là GÀ VND, cùng đồng hành laptrinhtuZERO với mình nhé!