Lập trình C: Bài 1 – Hello World
Cập nhật ngày 09/01/2018
Nội dung
1. Giới thiệu về lập trình
Chắc hẳn bạn đã được tiếp xúc với máy tính, điện thoại dù ít hay nhiều và dùng các ứng dụng hoặc trò chơi trên đó ví như Word, Excel để làm việc văn phòng hoặc dùng Chrome, Firefox để vào Facebook, Google hay chính Facebook và Google là các phầm mềm.
Bạn tưởng tượng lập trình là quá trình bạn tạo ra các phần mềm, ứng dụng như thế. Bạn tạo ra ứng dụng cho người khác dùng, làm việc; bạn tạo ra game cho người khác chơi, làm ra website cho người khác truy cập vào. Nghĩ đến đây đã thấy hứng thú rồi 🙂
Để làm ra được phần mềm (hoặc game, website) thì chúng ta phải dạy cho máy tính cách làm việc hay nói cách khác là đưa các quy tắc mà chúng ta mong muốn để máy tính thực hiện như là khi ấn nút lên trên thì nhân vật phải nhảy lên, ấn nút sang trái thì nhân vật sẽ đi sang trái.
Giống như dạy cho ai đó phải làm gì thì bạn phải nói cho họ nghe hoặc viết chữ để đưa cho họ đọc và từ đó họ mới hiểu được bạn nói gì. Việc đưa các quy tắc này vào máy tính để nó hiểu được bạn muốn làm gì mà thực hiện theo cũng vậy, bạn cần viết các yêu cầu đó theo một cú pháp cụ thể mà cái đó gọi là ngôn ngữ lập trình.
Ngôn ngữ lập trình cũng giống như tiếng Việt để người Việt giao tiếp và hiểu, tiếng Anh dùng cho người Anh, Mỹ và nhiều nước khác, … ngôn ngữ lập trình nó là ngôn ngữ để người nói cho máy tính hiểu. Hiện nay có nhiều ngôn ngữ lập trình khác nhau như C, C++, Java, C#, PHP, python,… mỗi ngôn ngữ có ưu nhược điểm riêng và có ứng dụng trong các lĩnh vực nhất định.
2. Lập trình C
Lập trình C đơn giản là các bạn dùng Ngôn ngữ lập trình C để tạo ra các phần mềm.
Mỗi phần mềm hay gọi là chương trình (chương trình máy tính) sẽ được viết bởi ngôn ngữ C bằng một hay nhiền file với những quy tắc nhất định của ngôn ngữ mà chúng ta sẽ dần tìm hiểu.
3. Cài đặt công cụ
3.1 Cài đặt
Để có thể lập trình C thì các bạn cần cài bộ dịch gcc hoặc g++. Tuy nhiên để dễ dàng thì hiện tại có nhiều phần mềm tích hợp (hay gọi là môi trường phát triển – IDE) để chúng ta có thể dễ dàng.
- Đối với các bạn dùng Windows có thể download Dev-C++ hoặc Code::Blocks về cài đặt và chúng ta có thể dùng ngay để viết các chương trình đơn giản.
-
Đối với các bạn dùng Linux (ubuntu, Linux Mint,…) có thể cài bằng cách mở terminal lên và chạy lệnh cài đặt sau:
sudo apt-get install build-essential
Sau khi chạy lệnh trên, các bạn có thể mở bất cứ trình soạn thảo nào để code (như gedit, vim, hay sublime-text,…) sau đó dịch, chạy chương trình bằng terminal.
Hoặc các bạn cũng hoàn toàn có thể download và cài Code::Blocks trên Linux để dùng rất tiện, hoặc dùng lệnh cài:sudo apt-get install codeblocks
Các bạn có thể xem thêm chi tiết về Lập trình C/C++ trên Ubuntu (Linux) tại blog của mình
Để dễ và thống nhất trong quá trình làm, mình sẽ dùng Dev-C++ nhé.
3.2 Giới thiệu cơ bản về Dev-C++
Để tiện hình dung, các bạn mở Dev-C++ lên sẽ thấy giao diện như hình sau (Hiện tại bản mình đang dùng là 5.11, các bạn dùng bản khác có thể sẽ có một chút khác nhưng sẽ không đáng kể).
Trong hình trên, có một số phần chính mình đánh dấu bằng các số với ý nghĩa sau:
1. Nút tạo file mới
2. Nút mở một file đã có
3. Nút biên dịch và chạy chương trình
4. Vùng soạn thảo code (mã chương trình)
5. Vùng hiển thị lỗi nếu có.
4. Tạo chương trình đầu tiên
Bây giờ các bạn có thể viết chương trình phần mềm đầu tiên để thử nghiệm.
B1: Tạo 1 file mới.
B2: Gõ hoặc chép đoạn code sau vào vùng soạn thảo.
#include <stdio.h> int main() { printf("Welcome"); return 0; }
B3: Lưu lại với tên file là Test.c hoặc Test.cpp
B4: Click nút chạy chương trình và bạn sẽ thấy một màn hình màu đen hiện lên như sau:
Trong đó các bạn có thể thấy chữ Welcome hiện lên, đó chính là dòng chữ được in ra khi dùng lệnh printf. Phần dưới đường kẻ ngang là do Dev-C tự sinh ra.
Mình giải thích một chút về code:
- Dòng 1: Chứa phát biểu tiền xử lý
#include <stdio.h>
. Vì trong chương trình này ta sử dụng các lệnh trong thư viện của C là printf, do đó bạn cần phải có khai báo của hàm thư viện này để báo cho trình biên dịch C biết. Nếu không khai báo chương trình sẽ báo lỗi. Thư viện stdio.h viết tắt của standard input output (std – i – o) là thư viện nhập xuất chuẩn). -
Dòng 3: **
int main()
là thành phần chính của mọi chương trình C. Mọi chương trình C đều bắt đầu thi hành từ hàm **main. Cặp dấu ngoặc()
cho biết đây là khối hàm (function). Hàm main() có từ khóaint
đầu tiên cho biết hàm này trả về giá trị kiểu nguyên (int). -
Dòng 4 và 7: cặp dấu ngoặc móc
{}
giới hạn thân của hàm. Thân hàm bắt đầu bằng dấu { và kết thúc bằng dấu }. -
Dòng 5:
printf ("Welcome");
, chỉ thị cho máy in ra chuỗi ký tự nằm trong nháy kép""
. Hàng này được gọi là một câu lệnh, kết thúc một câu lệnh trong C phải là dấu chấm phẩy( ; ). -
Dòng 6:
return 0;
Trả về giá trị kiểu nguyên là 0 theo như đúng ban đầu là khai báo int main().
Lưu ý:
- Trong chương trình này mình không dùng thư viện conio.h vì trong chuẩn C không có thư viện này, và từ đó cũng không dùng được getch() để dừng màn hình mà mình đã thay bằng lệnh
system("pause");
trong thư viện stdlib.h - Khi dùng
return
để trả về giá trị của hàm thì các bạn có thể bỏ qua lệnh này chương trình vẫn chạy nhưng về chuẩn là sai, trả về 1 cũng sai, tóm lại là trả về 0. Nếu trả về 1 số khác không thì hệ thống máy tính sẽ hiểu là chương trình này của bạn sau khi chạy phát sinh ra cần đó lỗi.
Bây giờ các bạn mở folder chứa file Test.c mà bạn vừa tạo ra, các bạn sẽ nhìn thấy một file có tên Test.exe (gọi tắt là file exe), đây chính là file chạy chương trình. Bây giờ nếu muốn bạn có thể click chuột vào file exe này là chạy được chương trình trên hoặc bạn có thể copy file exe này sang máy tính khác thì vẫn có thể chạy được, nó giống như bạn copy game từ máy này sang máy khác vậy.
Từ đây ta có:
- File Test.c là file chúng ta tạo ra và viết các lệnh để máy tính hiểu, file này gọi là file mã nguồn.
- File Test.exe là file sinh ra khi chúng ta ấn nút Chạy chương trình, file này gọi là file thực thi.
Lưu ý: Các chương trình sau này chúng ta làm sẽ chủ yếu chạy trên màn hình đen như trên (gọi là màn hình console – đọc là ‘con sâu’), tuy không có giao diện đẹp mắt nhưng đây là phần lõi của lập trình, học tốt phần này chúng ta mới có thể làm được các chương trình có giao diện đồ họa và các ngôn ngữ khác cũng hầu hết dựa vào phần lõi này.
Bài tập: Hãy viết chương trình in ra tên của bạn, của bố mẹ bạn hoặc người yêu nếu có. Đừng quên khoe với bạn bè nữa.
a ơi làm s để chạy chương trình?
Bận ấn F9 hoặc cái nút thứ 3 (4 màu liền nhau) ở thanh công cụ nhé.
Nhưng e dùng máy tính Dell F9 là chỉnh độ sáng thì chạy bằng nút nào ạ
Ở bên trên có hình chỉ rõ nút chạy đó em. Chính là nút số (3)
bạn ấn đồng thời shift + F11 ấy là đc
F11 nó vừa dịch vừa chạy chương trình luôn
Bấm ctrl+F9 đó e
g++.exe has stopped working là sao v anh ?
em bấm f9 nó bị v
Cái này có thể chương trình bị lỗi hoặc bộ cài của bạn có vấn đề.
Ban oi cho Minh hoi , mình cần tạo ra sơ đồ 30×30
Tuỳ theo input mà sơ đồ sẽ khác nhau
Input là:
Int. Ỉnt. Chảr
21 12 @A
22 14 @c
……………..
Nó giống như đồ thị graph (x,y)
Sau đo thì print ra nếu chỗ nào hok có chảr thì in *, còn nếu có thì print A
Output:
***********
**********A
****c******
Mình viết như thế này:
1. Đầu tiên loạt ra nếu x30 same to y
2. For (row=0, row<=30, row++)
For (col =0, col<=30, col++);
For ( row=x,
If row =x && row=y
Printf(char)
Else printf(*)
Nhung sau khi in ra, moi input là bản đồ khác nhau,
Vậy là loop bị lỗi phải họk
Anh ơi ! Tại sao trong Visual Stu. 2013 Ultimate em sử dụng hàm “getch” để dừng chương trình là nó báo lỗi “error C4996: ‘getch’: The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details. ” thế ? Làm sao để khắc phụ ạ ?
Instead, use the ISO C++ conformant name: _getch
Cho mình hỏi main() với int main() có gì khác biệt không ?
Ah, không có main nhé. Chỉ có void main hoặc int main. Và hiện nay thì int main là chuẩn viết nhé bạn.
Theo anh thì một người mới nên học C hay C++ trước ạ ?
Mình thấy nếu mới học lập trình thì bạn nên học Java trước.
Trước đây em cũng có tìm vài Tut hoặc Slide về Java rồi, nhưng đa phần nó viết khá mơ hồ xem ko hiểu :3 Nhưng khi xem bài về C của anh thì em thấy dễ hiểu hơn rất nhiều :3 Cảm ơn anh ! =)))))
anh ơi cho em hỏi kết quả in ra phải có giá trị chính xác đến chữ số thứ hai phần thập phân thì phải làm như thế nào anh
Bạn dùng %0.2f
Tại sao mới học lại phải học Java trước ạ? -_-“??
Vì java là ngôn ngữ huoqngs đối tượng. Nó gần với thực tế hơn
a ơi em là sinh viên bưu chính, năm nhất mới thi xong ngôn ngữ c, nhưng thực sự em ko biết gì cả, như số 0, vì từ lớp 1-12 em ko đụng đến máy tính, anh có thể tư vấn cho em cách học thế nào để tiếp cận dể hiểu và học được ngôn ngữ c này ko ạ, cảm ơn a
Cách dễ học là cứ học, mắc đâu hỏi đó.
ít nhỉ, lập trình cơ bản nhìn củng dễ thặc :3, cố lên việt nam
anh ơi, dev C và visual C khác nhau như nào
sao khi em cài Dev C khoảng cách các chữ lại to hơn vs cách nhau quá rộng
tại em mới học về lập trình và muốn học C++ luôn nên mong anh chỉ cho ạ
Nó chỉ là trình soạn thảo thôi, còn bên trong nó khác một chút về thư viện. Tùy bạn muốn học theo Dev-c hay Visual C cũng được.
ad cho em hỏi giỏi lập trình thì mình có thể làm nghề gì ?
Làm lập trình viên, làm các phần mềm cho máy tính, điện thoại chạy nhé.
Lập trình có hồi nào nạp vào dt chết may luôn ko a – e daq Sưa ĐT va Tinh hoc them lap Trinh a
Không chết máy được đâu 🙂
Bạn cho mình hỏi làm sao mỗi lần bấm vào chuyên mục nào là nó sẽ hiện ở thanh slidebar với dưới bài viết danh sách bài học vậy bạn. Mình cảm ơn nhiều.
Cái này mình code thêm để có. Bạn có thể tìm một số plugin của wordpress để làm việc này 🙂
bạn cho mình xin đoạn code với dc ko ạ. Mình tìm plugin nhưng ko tìm ra bạn
Code của mình nó có sự tùy biến và lọc theo chuyên mục. Đoạn code này nằm trong file single.php, đặt sau bài viết. Mình có cho nó vào id=”sidebar” để nó được định dạng như sidebar của blog. Bạn xem code tại đây
copy đoạn này bỏ vào single.php là dc hả bạn. Bạn biết plugin nào làm dc như v ko bạn.
Bạn thử xem cái này
khi nhập số bất kì để ra kết quả a2,a3,a4 ko biết nhập thế nào để bình phương, ko lẽ cứ nhân a*a*a à
Nhập xong thì in ra kết quả thôi mà. a^2 = a*a. ^^
Anh cho em hỏi void main () khác với int main () ở chỗ nào mà thầy em toàn dùng void main()?
Là 2 cách viết khác nhau thôi, ngày xưa các IDE hay dùng void nhưng giờ chuyển sang int.
Sao e xuất file .c mà k có file exe kèm theo nhỉ hix :'(
Bạn phải chạy chương trình thì nó mới ra file exe nhé.
int main() và void main() nó khác nhau ở đâu hả anh
cHO TÔI HỎI PHẦN MỀM NÀY NẾU THÀNH THÃO CÁC CHƯƠNG TRÌNH RỒI THÌ CÓ THỂ DÙNG NÓ ĐIỀU KHIỂN MÁY TÍNH HOẶC TẠO PHẦN MỀM RIÊNG CỦA BẢN THÂN ĐƯỢC KHÔNG, KỂ CẢ HACK NỮA.
Cái này tùy vào khả năng của bạn.
Như e mù hoàn toàn về lập trình thì đây chính là bắt đầu và kiến thức căn bản phải không ạ??
Đúng rồi.
sao em chạy mà nó lại lỗi là sao anh ??
Hỏi thế thì a chịu.
Em nhờ gửi code chút ạ. Hihi
#include #define _CRT_SECURE_NO_WARNINGS using namespace std; int n, m, choChoi[21], goiUuDai[32][21], k, l, linhKien[21], visited[32], sum, minCost, daCo[21]; void deQuy(int step){ if (step==m+1) { for (int i = 1; i <= l; i++) { if (daCo[linhKien[i]]==0) { sum+=choChoi[linhKien[i]]; } } if (sum<minCost) { minCost = sum; } else { for (int i = 1; i <= l; i++) { if (daCo[linhKien[i]]==0) { sum-=choChoi[linhKien[i]]; } } } return; } for (int chon = 0; chon minCost) { visited[step] = 1; sum-=goiUuDai[step][0]; deQuy(step+1); } else { for (int i = 2; i <= goiUuDai[step][1]+1; i++) { for (int j = 1; j <= l; j++) { if (goiUuDai[step][i]==linhKien[j]) { daCo[goiUuDai[step][i]]++; } } } deQuy(step+1); for (int i = 2; i <= goiUuDai[step][1]+1; i++) { for (int j = 1; j >T; for (int testCase = 1; testCase <= T; testCase++) { minCost = 0; for (int i = 0; i < 32; i++) { for (int j = 0; j >n; for (int i = 1; i >choChoi[i]; } cin>>m; for (int i = 1; i >goiUuDai[i][0]; cin>>k; goiUuDai[i][1] = k; for (int j = 2; j >goiUuDai[i][j]; } } cin>>l; for (int i = 1; i >linhKien[i]; minCost+=choChoi[linhKien[i]]; } sum = 0; deQuy(1); cout<<"#"<<testCase<<" "<<minCost<<endl; } return 0; }
Anh ơi anh có bài dạy về lập trình hướng đối tượng ( C++) không ạ ??
Mình không nhé.
Cho em hỏi tại sao khi em vào thư mục mở file .exe lên thì nó vừa chớp lên rồi tắt mất ạ. Em dùng lệnh dừng màn hình vẫn không được
thế là nó ko dừng được rồi. em thử xem lại lệnh dừng đúng chưa?
Ad ơi mình bấm F5 để chạy mà nó hiện màn hình được 1s cái tắt liền là sao vậy?
Bạn đọc bài thứ 2 nhé.