Trang 1 / 7 12346 ... LastLast
Hiển thị kết quả từ 1 đến 10 / 67

Chủ đề: Vui cùng tin học

  1. #1
    Tham gia
    16-05-2006
    Bài viết
    121
    Like
    0
    Thanked 0 Times in 0 Posts

    Tệ thật ! Vui cùng tin học

    Hỡi các tín đồ C và Linux các bạn biết gì về tiền sử lý (Preprocessor) của GNU chưa? nếu bạn chưa biết gì về nó thì đó là một điều đáng tiếc. Ngày ngay GNU đã phát triển đến phiên bản 3.2 với tiền sử lý trong GNU bạn có thao tác trên nhiều ngôn ngữ như C, C Object, C++, ADA, Java...Bạn có tin không?
    Tại sao tôi lại nói như vậy?
    Với GNU tiền sử lý sẽ được thực hiện trước khi tất cả các trình biên dịch của ngôn ngữ. Do đó bạn có thể định hướng biên dịch chương trình của bạn.
    Tôi nói vậy chắc mấy bạn cũng không tin phải không? Mình sẽ cung cấp sách nói về vấn đề này liên lạc với mình qua địa chỉ
    mail: makefriend_everybody_2006@yahoo.com

    A Quên mất mình rất thích các môn lập trình đặc biệt là C và giải thuật nên rất muốn các bạn và mình cùng trao đổi về vấn đề này rất mong các bạn tham gia.

    shinichi_haha (thám tử thích cười).

    Để mở đầu tiếp mục đây là chương trình hello luôn là chương trình mở đầu cho các ngôn ngữ lập trình mình viết code C nếu bạn thích hãy thử xem coi nó có chạy không nha.

    //Begin
    #include<stdio.h>

    #define HELLO printf("Hello everybody!\n")

    int main(){
    HELLO;
    return 0;
    }
    Được sửa bởi Shinichi_haha lúc 20:16 ngày 02-06-2006 Reason: Automerged Doublepost
    Quote Quote

  2. #2
    Tham gia
    29-03-2005
    Bài viết
    616
    Like
    0
    Thanked 2 Times in 1 Post
    Nghe hay đấy nhưng có ví dụ nào thuyết phục hơn không
    Chứ cái #define HELLO trên C này thấy nhiều rùi mà.

  3. #3
    Tham gia
    06-05-2006
    Location
    Bốn bể là nhà
    Bài viết
    83
    Like
    0
    Thanked 1 Time in 1 Post
    vụ #define trên C là chỉ thị thay thế chứ có j lạ đâu

  4. #4
    Tham gia
    21-11-2002
    Location
    Hồ Chí Minh
    Bài viết
    3,422
    Like
    17
    Thanked 206 Times in 121 Posts
    Uhm, nhưng theo tớ được biết bên java không hề có vụ chỉ thị tiền xử lý này, có lẽ bạn nhầm chăng.

    À, ai nói cho tớ biết vụ C Object là sao thế ? Tớ thì chỉ biết C là một ngôn ngữ lập trình hướng cấu trúc, chỉ khi c++ ra đời, thì nó mới có vụ hướng đối tượng, nhưng không phải là thuần C nữa.

  5. #5
    Tham gia
    29-03-2005
    Bài viết
    616
    Like
    0
    Thanked 2 Times in 1 Post
    Với lại mình chỉ biết người tiền sử, còn tiền sử lý là cái giống gì thì chịu, không biết ở đây có ai là khảo cổ học hoặc nhân chủng học không.

    Đùa thôi, kỹ thuật sử dụng tiền xử lý trong C/C++ cũng có nhiều kỹ thuật hay, Shinichi_haha có kỹ thuật hay nào muốn chia sẻ thì xin mời chia sẻ trên diễn đàn này, không cần phải qua mail đâu.

  6. #6
    Tham gia
    16-05-2006
    Bài viết
    121
    Like
    0
    Thanked 0 Times in 0 Posts

    Bai nhap mon ma cau

    Quote Được gửi bởi fibonacci1
    vụ #define trên C là chỉ thị thay thế chứ có j lạ đâu
    Thì mở đâu một ngôn ngữ lập trình nào cũng có một chương trình nhập môn mà cậu: Các cậu đã biết nhiều về chương trình nổi tiếng cho hầu hết cuốn sách nói về lập trình thì mình cũng viết chương trình đầu tiên để giới thiệu với các cậu mà.
    Do đó các chương trình sao do các cậu và mình trao đổi ngày càng đồ sộ hơn.

    Quote Được gửi bởi ngocquang19877
    Uhm, nhưng theo tớ được biết bên java không hề có vụ chỉ thị tiền xử lý này, có lẽ bạn nhầm chăng.

    À, ai nói cho tớ biết vụ C Object là sao thế ? Tớ thì chỉ biết C là một ngôn ngữ lập trình hướng cấu trúc, chỉ khi c++ ra đời, thì nó mới có vụ hướng đối tượng, nhưng không phải là thuần C nữa.
    Trong GNU của Unix,linux có rất nhiều sự hổ trợ cho việc biên dịch các ngôn ngữ lập trình như C chuẩn, Java, C++, ADA, Fortran. Để biên dịch các ngôn ngữ này ta có cú pháp sau:
    Đối với C ta gõ lệnh: gcc FileName để tiến hành biên dịch.
    Đối với Java ta gõ lệnh gcj FileName để tiến hành biên dịch.
    Đối với C++ ta gõ lệnh g++ FileName để tiến hành biên dịch.
    Đối với fortran ta gõ lệnh g77 FileName để tiến hành biên dịch.
    ...Và rất nhiều lệnh khác để biên dịch ADA và C Object thông qua lệnh gcc cộng với các option của dònh lệnh các bạn có thể nghiên cứu thêm trong cuốn sách:The Complete referce GCC của tác giả Griffith.

    Tại sao tôi lại nói về tiến sử lý:
    Trong GNU tiền sử lý sẽ được thực hiện trước trình biên dịch chúng biến đổi code chương trình thành các token sau đó trình biên dịch sẽ nhận các token này như là một thông tin đầu vào để biên dịch chương trình.

    VD: các chú thích của bạn trong /* */ sẽ được tiền sử lý biến đổi thành ký tự trắng. Và trong lúc biên dịch trình biên dịch sẽ không thấy các dòng chú thích của bạn.

    Như vậy các trình biên dịch chỉ thấy được token và sử lý các token nếu chương trình biên dịch của bạn sai chính là các token của bạn có vấn đề.

    Vậy bạn đã hiểu tại sao cú pháp tiền sử lý có thể được viết trong code của java.

    Mà quên mất cú pháp tiền sử lý GNU lại rất giống cú pháp của tiền sử lý ngôn ngữ C chuẩn tuy nhiên GNU lại được hổ trợ thêm một số cải tiến mới với một tham vọng lớn (mình nghĩa là hợp nhất các ngôn ngữ). Tuy nhiên mình chỉ nghiên cứu về C nên chỉ có khả năng trao đổi về C và tiền sử lý của nó. Một số chương trình mình post lên có thể chỉ chạy được với GNU của UNIX hoặc linux.
    Để minh họa vấn đề trên mình sẽ viết đoạn code này bạn chạy trên trình biên dịch C để thấy được:
    Đoạn mã vô hiệu hóa từ khóa int của trình biên dịch C.

    #define int 1024

    int main(){
    int a;//chuong trinh bao loi o day xoa int a chuong trinh se chay.
    return 0;
    }

    chương trình trên chứng tỏ được tiền sử lý chạy trước trình biên dịch.
    bạn thử viết lại hàm main như sau thay cho ham main trên nha.

    int main(){
    printf("%d",int);
    return 0;
    }
    rồi chạy lại chương trình coi thử. Rất mong được sự trao đổi của các bạn. Có thể bạn cho mình địa chỉ mail để gởi bạn tài liệu về vấn đề này.

    Quote Được gửi bởi mtt333
    Nghe hay đấy nhưng có ví dụ nào thuyết phục hơn không
    Chứ cái #define HELLO trên C này thấy nhiều rùi mà.
    Bạn nói như vậy là bạn đã biết What.
    Nhưng bạn đã biết Why chưa?
    và chúng ta cùng bàn luận để thấy được HOW.
    Được sửa bởi Shinichi_haha lúc 18:08 ngày 03-06-2006 Reason: Automerged Doublepost

  7. #7
    Tham gia
    16-05-2006
    Bài viết
    121
    Like
    0
    Thanked 0 Times in 0 Posts
    Các bạn có thể tham khảo tại trang này ở đây có rất nhiều vấn đề về Unix và linux tôi thấy nó khá hay đó.
    http://www.delorie.com/gnu/docs/gcc/gcc_toc.html

  8. #8
    Tham gia
    14-04-2005
    Bài viết
    1,870
    Like
    2
    Thanked 12 Times in 11 Posts
    Cứ tưởng cuộc thi gì /

  9. #9
    Tham gia
    29-03-2005
    Bài viết
    616
    Like
    0
    Thanked 2 Times in 1 Post
    Quote Được gửi bởi Shinichi_haha
    Bạn nói như vậy là bạn đã biết What.
    Nhưng bạn đã biết Why chưa?
    và chúng ta cùng bàn luận để thấy được HOW.
    Uhu, mới học C nên cũng ngu ngơ lắm, mình chưa biết gì???
    WHY là sao mà HOW là cái gì???
    Nên bạn biết gì cứ trao đổi public trên diễn đàn này luôn, úp mở quá.

    Shinichi_haha tạm dịch ra tiếng Tàu có phải là "Tiếu ngạo giang hồ" không nhẩy.

    Nói chung rất cảm kích trước nhiệt huyết của "Tiếu ngạo giang hồ". Chỉ có điều những gì bạn đưa ra chưa đủ thuyết phục vì vẫn chỉ là WHAT, ai cũng biết. Tại sao bạn không thẳng thắn đưa ra các ý kiến trên diễn đàn này và cũng mọi người trao đổi ngay tại đây mà phải qua thư điện tử.
    Được sửa bởi mtt333 lúc 21:41 ngày 06-06-2006

  10. #10
    Tham gia
    16-05-2006
    Bài viết
    121
    Like
    0
    Thanked 0 Times in 0 Posts
    Uhm vậy từ nay mình sẽ post bài tại đây và chúng ta cùng trao đổi về vấn đề này.Mong các bạn cùng tham gia cho vui nha.
    Một số bài mình post lên có thể không chạy được với một số trình biên dịch trên window(tuy nhiên có một số lại chạy được)do đó nếu các bạn muốn chạy cho chính xác hãy dùng GNU C trên linux để chạy cách chạy chương trình các bạn biết chua?
    đầu tiên các bạn phải đăng nhập vào linux và dùng trình soạn thảo vi để soạn thảo code chương trình.
    #vi Hello.c
    bạn gõ vào đoạn code chương trình Hello của tôi ở trên rồi save lại .
    Cách biên dịch chương trình :
    Có hai cách :
    Biên dịch trong trình soạn thảo vi:
    Để biên dịch trong trình soạn thảo vi đầu tiên bạn phải chuyển qua chế độ dòng lệnh của vi sau đó bạn gõ lệnh chuyển thư mục hiện hành chính là thư mục chứa code Hello.c bằng lệnh
    :!cd [đường dẫn tới thư mục hiện hành](! cho biết ta thực hiện lệnh shell của linux trong vi)
    vd: thư mục chứa code Hello.c là nằm ở trong thư mục Home trong thư mục gốc tôi chuyển tới home bằng cách dùng lệnh :!cd \Home sau đó ta tiến hành biên dịch bằng lệnh:
    :!gcc Hello.c[hay đường dẫn tuyệt đối đến code Hello nếu thư mục hiện hành của ta không có chứa code Hello.c]
    Sau lệnh này nếu thành công thì ta sẽ tạo được một chương trình thực thi có tên là a.out
    Để chạy chương trình này trong vi ta gõ lệnh :!.\a.out(chú ý bắt buộc phải có .\ trước a.out)
    Nếu chương trình bạn lỗi thì debug của GNU sẽ báo cụ thể lỗi xuất hiện ở đâu.

    Còn chạy chương trình ngoài vi ta tiến hành như sau:
    chuyển thư mục hiện hành tới thư mục chứa code Hello.c
    Sau đó gõ lệnh gcc Hello.c để biên dịch chương trình.
    Sau đó gõ lệnh .\a.out để chạy chương trình.
    Nếu biên dịch sai debug sẽ báo chi tiết lỗi sai (tên tập tin, hàm nào và dòng thứ mấy).

    Lưu ý rằng khi bạn soạn thảo code để dể dàng thao tác bạn hãy đặt tên code trước khi ấy vi sẽ biết và đánh màu những từ khóa trong C hay một ngôn ngữ bất kỳ dựa vào code của bạn có chấm .c,.cpp hay .java ...
    Và khi bạn biên dịch ngay trong vi nếu chương trình có lỗi bạn sẽ tiến hành sửa ngay.

    Quote Được gửi bởi mtt333
    Uhu, mới học C nên cũng ngu ngơ lắm, mình chưa biết gì???
    WHY là sao mà HOW là cái gì???
    Nên bạn biết gì cứ trao đổi public trên diễn đàn này luôn, úp mở quá.

    Shinichi_haha tạm dịch ra tiếng Tàu có phải là "Tiếu ngạo giang hồ" không nhẩy.

    Nói chung rất cảm kích trước nhiệt huyết của "Tiếu ngạo giang hồ". Chỉ có điều những gì bạn đưa ra chưa đủ thuyết phục vì vẫn chỉ là WHAT, ai cũng biết. Tại sao bạn không thẳng thắn đưa ra các ý kiến trên diễn đàn này và cũng mọi người trao đổi ngay tại đây mà phải qua thư điện tử.
    Một chương trình đúng với What là một chương trình đúng với yêu cầu của bài toán một chương trình đúng How là một chương trình phải đúng what và đẹp(tính hiệu quả)Tôi rất đề cao câu hỏi của bạn những câu hỏi này luôn là một trở ngại đối với tôi nếu tôi còn thiết xót gì mong bạn chỉ bảo thêm.(Đúng với câu những câu hỏi của con nít luôn đòi hỏi chúng ta phải giải thích mệnh đề HOW) và tôi mong rằng chúng ta cùng trao đổi để tìm ra câu trả lời đó.
    Shinichi_haha
    Được sửa bởi Shinichi_haha lúc 23:18 ngày 06-06-2006 Reason: Automerged Doublepost

Trang 1 / 7 12346 ... LastLast

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •