1. Tuyển Mod quản lý diễn đàn. Các thành viên xem chi tiết tại đây

Các ban sinh viên yêu thích lập trình Pascal, C++ ... hãy vào đây nào

Chủ đề trong 'ĐH Dân lập Hải Phòng - DHP Club' bởi GUITAR_PLAYER, 08/05/2002.

  1. 0 người đang xem box này (Thành viên: 0, Khách: 0)
  1. GUITAR_PLAYER

    GUITAR_PLAYER Thành viên mới

    Tham gia ngày:
    13/04/2002
    Bài viết:
    47
    Đã được thích:
    0
    Các ban sinh viên yêu thích lập trình Pascal, C++ ... hãy vào đây nào

    Xin chào!

    Chúng ta hãy cùng vào đây đẻ trao đổi về lập trinh máy tính, về các thật toán, thủ thuật trong lập trình để cùng nhau học tập ngày một tốt hơn.Và cùng với thời gian biết đâu chúng ta có thể cùng với nhau hợp tác để viêt nên các phần mền ứng dụng vào thực tế cuộc sống và công việc.....để không hổ danh là sinh viên khoa công nghê thông tin


    Mong đươc sự ủng hộ của các bạn không chỉ của khoacông nghệ thông tin mà tât cả các ban yêu thich tin hoc......
    Rât mong đươc sự chỉ giáo và trong khả năng của mình tôi cũng sẵn lòng giúp đỡ các bạn
    ( Khả năng của tôi không cao lắm đâu mong các bạn thông cảm hì hì )

    trantrung
  2. GUITAR_PLAYER

    GUITAR_PLAYER Thành viên mới

    Tham gia ngày:
    13/04/2002
    Bài viết:
    47
    Đã được thích:
    0
    Câu hỏ đàu tiên dành cho các ban:
    Có bao nhiêu thuât toán để viết menu chọn trong ngôn ngữ lâp trình pascal, c++
    Tôi chưa đuợc học về cách thức để tạo menu chọn nhưng tự tôi đã tìm ra cách để thực hiện điều này, chỉ có điều không biêt nó có thục sự là một cách làm hay hay không
    Mong chúng ta cùng ban luận để đưa ra một thuât toán thật sự tối ưu
    Các bạn có thể cho ý kiến về việc tạo thực đơn chọn trong cả chế độ text mà chế độ graph......

    trantrung
  3. haanhtu

    haanhtu Thành viên quen thuộc

    Tham gia ngày:
    21/03/2002
    Bài viết:
    521
    Đã được thích:
    0
    Xin chào các bạn !
    Tôi cũng hơi bất ngờ vì thường thấy Box này có ít bài về Tin học quá mặc dù có rất nhiều sinh viên CNTT vào đây.
    Tôi xin được tham gia vào chủ đề của bạn Trần Trung :
    - Về cách tạo Menu có thể nói nếu tạo trong Pascal như thế nào thì trong C++ cũng tương tự như vậy không có nhiều thay đổi về tư tưởng, thuật toán, kỹ thuật mà chỉ thay đổi về ngôn ngữ viết.
    - Cách thông thường của tôi hay làm là : Nếu hay phải viết nhiều chương trình, hoặc có nhiều đoạn chương trình con phải sử dụng đến Menu thì tôi có thể viết một Unit My_Menu.
    - Vấn đề đặt ra là với mỗi một chương trình con khác nhau thì số mục (index count ) trong Menu là khác nhau, và tên cũng khác nhau (index name). Vì vậy phải viết một thủ tục trong Unit My_Menu để truyền tham số (index count và Index name, ...)
    - Thông thường để cho nhanh và tiện tôi làm theo cách sau (Rất dễ dàng và nhanh chóng ) :
    + Đầu tiên tôi sẽ kẻ một bảng Menu có tên các mục (kẻ bằng các kí tự ASCII) ví dụ như :
    |----------------------------------|
    | MENU SELECT |
    | ---------------------------------|
    | muc 1 |
    | muc 2 |
    | muc 3 |
    | Exit |
    ------------------------------------
    Tại các dòng muc 1, muc 2, muc 3 (bạn đã xác định được toạ độ y ).
    Công việc tiếp theo là điều khiển thanh sáng để chọn các mục. Việc này bạn chỉ việc xử lý các phím lên (#72), xuống (#82), và Enter( #13) để thay đổi toạ độ y.
    Cách đọc một phím từ bàn phím : hàm ch:=Readkey;
    Từ toạ độ y tương ứng mà có phím #13 được ấn thì có thể cho xử lý đoạn chương trình theo ý muốn. ( Có thể chọn theo câu lệnh CASE).
    Trên đây là một cách của tôi. Ngoài ra để cho Menu thêm tính chuyên nghiệp bạn có thể viết một thủ tục cho ẩn con trỏ.
    Vì điều kiện tôi không thể trình bày chi tiết được, bạn nào quan tâm đến vấn đề này có thể liên lạc với tôi để trao đổi thêm :
    E-mail : haanhtu@b2vn.com
    hoặc gặp Hiếu CT501 hỏi gặp nhóm PCFans.
    Sunlight
  4. haanhtu

    haanhtu Thành viên quen thuộc

    Tham gia ngày:
    21/03/2002
    Bài viết:
    521
    Đã được thích:
    0
    Tôi có 1bài toán này mong được trao đổi với các bạn, anh chị :
    Làm sao để viết 1 chương trình mô phỏng các thuật toán sắp xếp (Nổi bọt, Quick sort,..) bằng hình ảnh (Hiển thị đồng thời cùng lúc hình ảnh sắp xếp để người dùng hình dung ra được tốc độ sắp xếp của các thuật giải).
    + Cách xử lý của tôi (Dùng Pascal) là :
    - Viết các chương trình con (Graph) mô phỏng cho mỗi thuật toán
    - Dùng ngắt $1C để chạy tựa song song cho hai chương trình con trên.
    Cách làm của tôi gặp phải một số nhược điểm sau :
    - Viết thủ tục cho mỗi mô phỏng sắp xếp dạng Graph cồng kềnh phức tạp.
    - Cài đặt ngắt $1C cho các thủ tục trên không tính toán được lượng tử thời gian dành cho mỗi thủ tục vì thế chương trình không phản ánh được chính xác tốc độ sắp xếp của các thuật giải.
    + Nếu dùng Delphi thì có thể thay đổi lượng tử thời gian cho mỗi thủ tục một cách rất chính xác, nhưng làm đồ hoạ thì phức tạp. Nếu sử dụng Char (đồ thị) thì không làm cho các thành phần chuyển động được.
    Các bạn, anh chị có hướng giải quyết khác xin chỉ giùm. Xin cám ơn.
    haanhtu@b2vn.com PCFans Group CT501
    Sunlight
  5. haanhtu

    haanhtu Thành viên quen thuộc

    Tham gia ngày:
    21/03/2002
    Bài viết:
    521
    Đã được thích:
    0
    Không có ai cả !
    Sunlight
  6. GUITAR_PLAYER

    GUITAR_PLAYER Thành viên mới

    Tham gia ngày:
    13/04/2002
    Bài viết:
    47
    Đã được thích:
    0
    Chào bạn Hà Anh Tú
    Tôi thường viết menu chọn theo cách sau:viet mọt chương trình con tạo một cửa sổ với các tham số là toạ độ của cửa sổ đó và một tham số màu màn hình một tham số màu chữ viêt mọt tham số kiêu string để đưa vào nội dung của menu (dùng thủ tục window)
    Để thể hiên menu đang được chọn thì ta cho màu chữ và màu màn hình của thanh menu đó khác so với các thanh còn lại bằng việc thay đổi giá trị của các tham số thực sự truyền cho chương trình
    Dùng biên kiểu char để kiểm tra phim được đánh vào từ bàn phím tương tự như cách của bạn
    Một biến kiểu byte để lưu giữ số thứ tự của thanh menu được chọn trong thực đơn
    tuỳ theo giá trị của biến kiểu byte mà ta gọi chương trình tạo của sổ ỏ vị trí tương ứng (sau khi đã chuyển thanh chon trước đó về trang thái không đươc chon)
    Nếu phim nhận vào là các phím mũi tên thì thay đổi giá trị của biên kiêu byte ở trên
    Nếu phím nhạ vào la Enter thì tuỳ theo giá trị cua biến kiểu byte mà thực hiện công việc tương ứng

    Để tạo menu trong chế đọ đồ hoạ thì cung tương tự chi khác là dùng các thu tuc bar, line dể viết
    Để tạo menu nổi ta thay đổi màu của đường viền của khối menu sẻ được nổi lên khi mà màu của cạnh bên trái và cạnh bên trên có màu sáng hơn so với màu của cạnh bên phải và cạnh bên dưới
    Menu sẽ chìn xuống nếu như ta đổi màu ngược trở lại
    Và để tiện cho việc sủ dụng thì nên đưa các thủ tục trên vào một Unit
    Mong các ban cho thêm nhiều ý kến về vấn đề này và cả các vấn đề khác nữa
    trantrung
  7. ThuyLe

    ThuyLe Thành viên mới

    Tham gia ngày:
    05/04/2002
    Bài viết:
    21
    Đã được thích:
    0
    1 : Vấn đề tạo Menu :
    - Làm Menu bằng Pascal hay C thì phức tạp và tốn thời gian (Mặc dù có ưu điểm là theo ý muốn của người lập trình ). Nhưng các bạn hãy thử xem C++ : Trong C++ cung cấp 1 đối tượng là "MENU". Đối tượng này có các Phương thức, các Thuộc tính : Cho phép lập trình Menu một cách nhanh chóng ( chỉ vài dòng ).
    2 : Vấn đề mô phỏng các thuật toán sắp xếp :
    - Có rất nhiều thuật toán sắp xếp. Mình nghĩ bạn nên Mô phỏng các thuật toán đó một cách riêng biệt cũng được. Vì nếu chạy đồng thời hai thủ tục như vậy DOS không đảm bảo sự đúng đắn về thời gian thực cho bạn (do tài nguyên hạn chế).
    - Với một tập Mẫu : Dùng các thuật toán khác nhau để sắp xếp. Sau đó viết một thủ tục để xác định thời gian thực hiện sắp xếp của mỗi thuật toán. Sau đó có một bảng so sánh để người dùng thấy được sự chênh lệch về thời gian sắp xếp.
    + Chú ý :
    - Thời gian tính toán phải là thời gian thực ( real time )
    - Tập Mẫu lấy để sắp xếp phải rất lớn (để thấy được sự chênh lệch về thời gian)
    Được sửa chữa bởi - ThuyLe vào 12/05/2002 22:19
  8. GUITAR_PLAYER

    GUITAR_PLAYER Thành viên mới

    Tham gia ngày:
    13/04/2002
    Bài viết:
    47
    Đã được thích:
    0
    Chào ông bạn Lê thụy
    Tôi cũng biết ( và có lẽ ai cũng biết) việc tạo menu chọn có thể viết rất dễ dàng bàng các ngôn ngữ lập trình bậc cao nhưng làm như vậy không giúp chúng ta hiểu được bản chất của vấn đề ,mà như vậy đối với sinh viên công nghệ thông tin thì thật là đáng buồn.Bởi vì thực ra thì những dạng tiện ích như vậy chỉ là họ đã làm sãn cho mình mà thôi
    Còn về các thuât toán sắp sếp thì tôi có ý kiến thế này
    Ta có thể viết các chương trình sắp sếp khác nhau rồi cho chúng cùng thực hiện một công việc như nhau và lấy thời gian thực hiên của mỗi chương trình bằng cách lấy giờ hệ thống trước và sau khi thực hiện đối với mỗi chương trình
    Như vậy với mỗi thuật toán sắp sếp ta thu đươc một thời gian thực hiện khác nhau
    Để mô phỏng quá trình sắp xếp bằng hình ảnh cho mỗi thuật toán ta lấy thời gian để thực hiên quá trình sắp sếp của thuật toán tương ứng chia cho tổng số các phần tử cần cần sắp xếp để tìm thời gian sắp xếp cho mỗi phần tử.
    Với mỗi khoảng thời gian như trên ta cho dịch chuyển một phần tử của danh sách cần sắp xếp
    Như vầy ta sẽ mô phỏng đươc quá trình sắp xếp của môi thuật toán
    Tuy nhiên do tệp chuẩn để sắp xếp cần phải có kich thước khá lớn để thấy được sự lhác biệt thời gian , điều này khiến ta không thể thể hiện được hết các phần tủ cần sắp xếp trên màn hình. Ta co thể khắc phục bằng cách dùng phần tử tượng trưng (Ví dụ như cứ 100 phần tủ của danh sách cần sắp xêp được tương trưng bởi một khối hộp trên man hình) và thời gian để xắp xếp các phần tử tương trưng này cũng được nhân lên theo sô phần tử thực mà nó biểu diễn
    Để dễ hình dung quá trinh sắp xếp ta biễu diễn các khôi hình biểu diễn cho các thuật toán trên cùng một màn hình và cứ sau một khoảng thời gian tương ứng của mỗi thuât toán ta lại dịch chuyển một phần tử tượng trưng của thuật toán đó
    Để làm điều này thì khá phức tạp vì nều thời gian thực hiên việc dịnh chuyển là nhanh thì ta không kịp nhìn thấy các phần tử chuyên động, mà lại không được dùng thủ tục delay để làm chậm quá trình dịch chuyển
    Có một cách để khắc phục là ta nhân khoảng thời gian thực hiện của mỗi thuât toán cùng với một hệ số k khá lớn để cho khoảng cách giữa hai lần dich chuyển của một thuât toán không quá sát nhau từ đó có thể thể hiện quá trình dịch chuyển của mỗi phần tử (trong một khoảng thời gian của giờ hệ thống ta cho khối hộp tượng trưng dịch chuyển một khoảng nào đó tuỳ theo ý của bạn sao cho dễ theo dõi)
    Nói chung là xử lý rất mất thời gian

    trantrung
  9. haanhtu

    haanhtu Thành viên quen thuộc

    Tham gia ngày:
    21/03/2002
    Bài viết:
    521
    Đã được thích:
    0
    Chào các bạn
    1.
    - Hiện nay để tạo menu một cách dễ dàng cũng như thiết kế giao diện chương trình một cách nhanh chóng chúng ta có thể dùng C++ Builder (của Borland), nếu các bạn thích lập trình Pascal thì có thể dùng Delphi (Cũng của Borland). Đó là cách nhanh chóng và thuận tiện nhất -> ta sẽ dành được nhiều thời gian công sức lập trình cho các công việc khác.
    - Trong Turbo Pascal theo tôi được biết có thể sử dụng Turbo Vision để tạo giao diện, menu cũng rất nhanh chóng (Tôi không sử dụng cách này vì tôi thường lập trình với Delphi).
    2. Về vấn đề mô phỏng các thuật toán sắp xếp :
    Hình như các bạn hiểu sai "ý đồ" của tôi rồi. Bài toán của tôi là phải hiển thị hình ảnh (Dạng đồ hoạ ) minh hoạ các thuật toán sắp xếp. Từ hình ảnh của việc di chuyển các phần tử người học có thể hình dung ra thuật toán sắp xếp và độ tối ưu của thuật toán. Vấn đề tôi gặp khó khăn là xử lý chính xác cho việc hiển thị 2 hoặc 3 hình ảnh mô phỏng sắp xếp.
    - Theo cách của bạn ThuyLe tôi cũng hiểu, đó là một cách để giúp người học hình dung ra được tốc độ sắp xếp (thông qua thời gian).
    Cảm ơn các bạn đã tham gia chủ đề này.
    haanhtu@b2vn.com
    Sunlight
  10. haanhtu

    haanhtu Thành viên quen thuộc

    Tham gia ngày:
    21/03/2002
    Bài viết:
    521
    Đã được thích:
    0
    Tôi có một bài toán này cần trao đổi với các bạn :
    Phương pháp tổng quát để xây dựng các công thức Hoá học (ví dụ công thức của nước H20, tôi cũng không viết được trên đây nữa !!!!), toán học (x bình phương ...) ???. Nếu làm đồ hoạ (căn toạ độ thủ công) thì rất vất vả.
    Mong các bạn chỉ giúp phương pháp tối ưu.
    Sunlight

Chia sẻ trang này