Hỏi về lập trình C chuyên sâu

mọi người cho em hỏi muốn đi chuyên sâu về lập trình C thì cần quan tâm đến vấn đề gì ạ?
ai có tài liệu chuyên sâu về C có thể chia sẻ cho em với được không ạ? em cám ơn!

2 Likes

Chuyên sâu của C mà muốn học không thì khó lắm, C muốn chuyên sâu thì em phải đi đôi với thực hành. Còn về C thì anh nghĩ học sâu rất tốt. Tài liệu tiếng việt chắc không có chuyên sâu C. Sách hay anh nghĩ có 2 quyển

  • The C Programming Language by Kernighan and Ritchie
  • C Primer Plus Sixth Edition by Stephen Prata

À quên note 1 cái, 2 quyển này chưa sâu lắm. Nhưng anh nghĩ em bắt đầu với 2 quyển này là ổn.

6 Likes

2 quyển này viết rất hay nhưng ngồi dịch mệt quá.

1 Like

@14520054 nói đúng rồi. Tiếng anh khá một chút thì hẵng đọc, không thì tìm mấy quyển sách tiếng Việt đọc đỡ, anh thấy ở đây có nhiều người giới thiệu sách tiếng Việt nè.

Nhưng nên đặt mục tiêu về lâu về dài mình sẽ đọc được mấy quyển này. Vì ngoài đọc mấy quyển này, mình còn đọc được nhiều quyển khác hay hơn. Đặt mục tiêu dài hạn 1-2 năm sẽ đọc được ví dụ vậy :smile:

2 Likes

Anh ơi ! anh cho em hỏi muốn học C để làm việc được như python, java, js…gia công sản phẩm ấy ! thì phải học gì ạ !
Em muốn học C nhưng toàn được tư vấn là học C chả làm được gì ! Không thực dụng bằng các ngôn ngữ khác như PHP, java có thể làm ra sản phẩm nhìn thấy được luôn.
Anh làm chuyên về C anh có thể tư vấn cho em được không ạ

ai bảo học C không làm được gì thì mình thấy bạn không cần nói chuyện với họ nữa kẻo 1 lúc sau cười không nhặt đc mồm đấy :smile:
bạn muốn học cái gì làm ra sản phẩm đc luôn à? ok, ngay cả mình cùng từng nghĩ vậy và đa số là vậy nên đừng quá lo. Mình khuyên bạn ĐỪNG làm thế! bạn có thể có vài 3 cái ứng dụng nhỏ nhỏ bắt chước theo bài học người ta dạy nhưng sau đó sẽ chả tự làm đc cái gì đâu. Chỉ phí tg thôi, mình đã từng ham hố tham gia 1 khoá học lập trình iOS nên biết. Thay vào đó bh mình đọc lại các sách về ltrinh C CƠ BẢN, và vọc vạch từng chi tiết 1 trong từng câu lệnh, cấu trúc dữ liệu và học thuật toán. Khi mình chuyển sang Python thì chỉ cần 3 ngày là bắt đầu quen tay với nó (cơ bản Python cũng dễ học). Nch bạn cứ học tốt nền tảng, hiểu được bản chất thì ngôn ngữ nào cũng chơi ngon, học lên cao vèo vèo.
nên nhớ “Ngôn ngữ chỉ là công cụ thôi”

3 Likes

Mới viết được code C cho chip nhúng. :smiley:
Viết ứng dụng trên PC vẫn chưa hình dung được làm như thế nào ra cái phần mềm :frowning:

1 Like

Phần mềm (hay chương trình) viết bằng C có nhiều lắm bạn ah nó là cả một thế giới đấy, kể cả ngày không hết và đều là mã nguồn mở nên bạn có thể xem được mã nguồn.

  • Phần mền (chương trình) console có: git - một phần mến quản lý source code rất phổ biến hiện nay, các câu lệnh trên linux như cp, mv, ls… (nằm trong bộ coreutils), wget (phần mền dowload), diff ( phần mền so sánh file), …
  • Các phần mền có GUI (giao diện) viết trên C (dùng thư viện gtk+) như: gimp (phần mền chỉnh sửa ảnh), các desktop enviroment như gnome, xfce, …

Bạn cứ lên youtube.com và search các chương trình mình nêu ở trên là biết C có thể làm được gì.

ps: danh sách các phần mền miễn phí viết bằng C

1 Like

Bạn có tài liệu để học cái này không, cho mình xin với :grin:

1 Like

Mọi người có thể cho em một vài phần mềm đơn giản viết bằng C/C++ được không :smile: Cảm ơn mọi người rất nhiều. Em đang muốn viết một phần mềm quản lí bán hàng đơn giản bằng C/C++ mà không biết bắt đầu từ đâu. Em đang sử dụng visual studio.

Mình thấy trong C cũng có OOP nè !
Mới biết thôi !
Tài liệu này :

2 Likes

bạn dùng cái OOP trong c bao giờ chưa?
mình được ghe thấy 1 lần nhưng không biết tìm nó sao cả.

C có OPP ???
coi chừng nhầm C++ và C nha bạn

Có thể viết OOP bằng C nhé, sử dụng con trỏ hàm và struct. Linux Driver dùng cái này nhé.
Bạn tham khảo thêm ở đây:

2 Likes

đừng có nhầm lẫn nha bạn
bạn nên nhớ rõ là OPP có những tính chất gì
mình ví dụ: Tính đa hình trong OPP bạn thử miêu tả = C xem
struct ở đây là cấu trúc, mình nghĩ bạn đang nói đến class
=)) và bạn cần phải tìm hiểu thêm là con trỏ ở C và C++ nữa nha @@
cần phân biệt rõ C và C++ nha

Bạn đã đọc link mình đưa ra chưa?
Mình nhắc lại C có thể viết được OOP nhé, và Linux Kernel (Linux Driver) được viết theo mô hình OOP bằng C nhé!
Đương nhiên tructclass khác nhau, ý mình là họ dùng struct đóng vai trò như class trong C++ và con trỏ hàm làm giống như phương thức trong C++.
Bạn chưa từng nghe nói khái niệm con trỏ hàm? http://stackoverflow.com/questions/840501/how-do-function-pointers-in-c-work

PS: Mình nhắc lại là mình không nhầm lẫn C và C++ (vì nó là 2 ngôn ngữ hoàn toàn khác nhau). Bạn chưa biết thì đừng có nghĩ là nó không làm được, hãy tìm hiểu kỹ đi nhé.

=)) thử tạo 1 file .c và viết con trỏ hàm theo bạn nghĩ ??
và bạn có thể miêu tả tính đa hình giùm mình trong file .c kia
=))
à thêm cái mình có đọc hết, VÀ ĐA SỐ trong C thuần túy là 1 file .c k thể chạy được những cái bạn đưa ra để minh họa, bạn có thể code demo dc k ??? hay chỉ lấy vd người khác
thử cái này xem
swap(int *a,int *b) ?? trong C bạn nghĩ có hàm này k =))
và nếu sau khi có thêm 1 hàm swap(int *a)
theo bạn 2 hàm này có cùng tồn tại được trong C hay k ???

demo cho bạn hiểu nhé

#include<stdio.h>
void swap(int *a, int *b)
{
	int tmp = *a;
	*a=*b;
	*b=tmp;
}
void swap(int *a)
{
	printf("%d \n",a);
}
int main()
{
	

mình lưu file .c nhé
ở đây có 2 hàm swap k hỗ trợ, da hình nơi chốn nào
còn con trỏ của bạn
C nó báo lỗi đấy =)) vd đơn giản nhất đó=))
hoặc bạn chứng minh giùm mình với
đừng lấy vd của người khác, 90% bạn chưa hiểu người khác làm gì đâu mà đem ra làm ví dụ

Mình chưa hiểu rõ về OOP và C nên không dám viết lung tung.
Mình không có ý gây war ở đây, và không muốn cãi nhau ở đây (mình xin dừng ở đây).
Mình chỉ đưa ra đường link và dẫn chứng cho câu hỏi C có viết được OOP? Và câu trả lời là có. Nếu bạn muốn tìm hiểu thì vui lòng đọc link mình đưa ra:

book:
Object Orientated Programming in ANSI-C http://www.cs.rit.edu/~ats/books/ooc.pdf
http://www.linux-mag.com/id/628/
http://stackoverflow.com/questions/351733/can-you-write-object-oriented-code-in-c

Can you write object oriented code in C? Especially with regard to polymorphism.

Answer:
Since you’re talking about polymorphism then yes, you can, we were doing that sort of stuff years before C++ came about.

Basically you use a struct to hold both the data and a list of function pointers to point to the relevant functions for that data.

So, in a communications class, you would have an open, read, write and close call which would be maintained as four function pointers in the structure, alongside the data for an object, something like:

> typedef struct {
>     int (*open)(void *self, char *fspec);
>     int (*close)(void *self);
>     int (*read)(void *self, void *buff, size_t max_sz, size_t *p_act_sz);
>     int (*write)(void *self, void *buff, size_t max_sz, size_t *p_act_sz);
>     // And data goes here.
> } tCommClass;
3 Likes

=)) mình cũng k có ý định cãi với bạn đâu
mà tại bạn nói thế
bạn nên dựa vào những gì mình đã học, nếu bạn đã học hay đọc qua về hướng đối tượng
thì chắc chắc bạn sẽ biết những cái tính chất cơ bản nhất của nó
và trong C k có dc 1 số tính chất đó đâu
còn về phần con trỏ đây là ví dụ
hay nhất mà mình từng đọc
http://diendan.congdongcviet.com/threads/t42977::tim-hieu-ban-chat-cua-con-tro-tu-co-ban-den-nang-cao.cpp
1 số tính chất của OPP


bạn đọc rồi xem lại nha :v: là không khí mất vui =))

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?