30/09/2018, 16:02

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!

Nguyễn Minh Dũng viết 18:16 ngày 30/09/2018

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.

BaoLe viết 18:04 ngày 30/09/2018

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

Nguyễn Minh Dũng viết 18:10 ngày 30/09/2018

@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

DinhZB viết 18:12 ngày 30/09/2018

The C Programming Language

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 ạ

Maskma viết 18:13 ngày 30/09/2018

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
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”

Văn Dương viết 18:06 ngày 30/09/2018

Mới viết được code C cho chip nhúng.
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

Pham Van Hai viết 18:12 ngày 30/09/2018

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

en.wikipedia.org

Category:Free software programmed in C

Free software programmed in C. This category has the following 4 subcategories, out of 4 total. The following 200 pages are in this category, out of approximately 522 total. This list may not reflect recent changes (learn more).

Interns viết 18:11 ngày 30/09/2018

học thuật toán

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

Đức Cường viết 18:17 ngày 30/09/2018

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 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.

ntd viết 18:08 ngày 30/09/2018

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

cs.rit.edu

ooc.pdf

1224.27 KB

Pika viết 18:07 ngày 30/09/2018

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ả.

taplamhacker viết 18:15 ngày 30/09/2018

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

Pham Van Hai viết 18:11 ngày 30/09/2018

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:

stackoverflow.com
Dinah

Can you write object-oriented code in C?

c, oop, object
asked by Dinah on 04:02AM - 09 Dec 08

taplamhacker viết 18:15 ngày 30/09/2018

đừ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

Pham Van Hai viết 18:09 ngày 30/09/2018

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é.

taplamhacker viết 18:04 ngày 30/09/2018

=)) 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 ???

taplamhacker viết 18:03 ngày 30/09/2018

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ụ

Pham Van Hai viết 18:14 ngày 30/09/2018

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;
taplamhacker viết 18:13 ngày 30/09/2018

=)) 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

vi.wikipedia.org

Lập trình hướng đối tượng

Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) là một mẫu hình lập trình dựa trên khái niệm "công nghệ đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu, trên các trường, thường được gọi là các thuộc tính; và mã nguồn, được tổ chức thành các phương thức. Phương thức giúp cho đối tượng có thể truy xuất và hiệu chỉnh các trường dữ liệu của đối tượng khác, mà đối tượng hiện tại có tương tác (đối tượng được hỗ trợ các phương thức "this" hoặc "self"). Trong lậ...


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

bau nguyen viết 18:08 ngày 30/09/2018

theo mình biết thì C chỉ có lập trình hướng cấu trúc thôi. Còn C++ mới có lập trình hướng đối tượng. Từ ngôn ngữ lập trình assembly (lập trình tuyến tính) —> ngôn ngữ C (lập trình cấu trúc) --> ngôn ngữ C ++ (oop). Nếu C cũng có class thì người ta không phát triển C++ làm gì bởi 2 cái này chủ yếu khác nhau ở class đó. hoặc nếu có thể dùng C để biểu diễn class thì sẽ khó khăn và ko thực dụng.
ps: có gì sai xót mong mọi người góp ý

Bài liên quan
0