1. Trang chủ
  2. » Công Nghệ Thông Tin

Các bước giải bài toán tin học

6 450 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Cấu trúc

  • Các bước cơ bản để giải một bài toán tin học.

Nội dung

← Sự khác biệt main(), void main(), int main(), int main(void), int main(int argc, char *argv[]) Phân tích thời gian thực giải thuật → Các bước để giải toán tin học Posted on 14/01/2011by thanhcuong1990 Hạt nhân chương trình máy tính lưu trữ xử lý thông tin Việc tổ chức liệu có ảnh hưởng lớn đến cách thức xử lý liệu đó, tốc độ thực thi chiếm dụng nhớ chương trình Do mục đích viết cung cấp hiểu biết tảng việc thiết kế chương trình máy tính để thấy rõ cần thiết việc phân tích, lựa chọn cấu trúc liệu phù hợp cho toán cụ thể Xác định toán: Input -> Process –> Output (Dữ liệu vào –> Xử lý –> Kết ra) - Việc xác định toán tức xác định xem ta phải giải vấn đề gì?, với giả thiết cho lới giải cần đạt yêu cầu Khác với toán túy toán học cần xác định rõ giả thiết kết luận không cần xác định yêu cầu lời giải, toán tin học thực tế cần tìm lời giải tốt tới mức đó, chí mức chấp nhận (nếu lời giải tốt đòi hỏi nhiều thời gian chi phí) Ví dụ: Bài toán: Một dự án có n người tham gia thảo luận, họ muốn chia thành nhóm nhóm thảo luận riêng phần dự án Nhóm có người trình lên nhiêu ý kiến Nếu lấy nhóm ý kiến đem ghép lại ý kiến triển khai dự án Hãy tìm cách chi để số ý kiến cuối thu lớn + Xác định toán: Cho số nguyên dương n, tìm cách phân tích n thành tổng số nguyên dương cho tích số lớn - Trong thực tế, ta nên xét vài trường hợp cụ thể, thông qua hiểu toán rõ thấy thao tác cần phải tiến hành Đối với toán đơn giản, cần qua ví dụ ta đưa toán quen thuộc để giải Tìm cấu trúc liệu biểu diễn thuật toán - Khi giải toán, ta cần phải định nghĩa tập hợp liệu để biểu diễn tình trạng cụ thể Việc lựa chọn tùy thuộc vào vấn đề cần giải thao tác tiến hành liệu vào Có thuật toán thích ứng với cách tổ chức liệu định, cách tổ chức liệu khác hiệu thực Chính nên bước xây dựng cấu trúc liệu tách rời bước tìm kiếm thuật toán giải vấn đề - Các tiêu chuẩn lựa chọn cấu trúc liệu:  Cấu trúc liệu trước hết phải biểu diễn đầy đủ thông tin nhập  xuất toán Cấu trúc liệu phải phù hợp với thao tác thuật toán mà ta lựa  chọn để giải toán Cấu trúc liệu phải cài đặt máy tính với ngôn ngữ lập trình sử dụng - Đối với số toán, trước tổ chức liệu ta phải viết đoạn chương trình nhỏ để khảo sát xem liệu cần lưu trữ lớn tới mức độ Tìm Thuật Toán Thuật toán hệ thống chặt chẽ rõ ràng quy tắc nhằm xác định dãy thao tác cấu trúc liệu cho: với liệu vào, sau số hữu hạn bước thực thao tác ra, ta đạt mục tiêu định Thuật toán thông thường có đặc trưng sau: 3.1 Tính đơn nghĩa - Ở bước thuật toán, thao tác phải rõ ràng, không gây nên nhập nhằng, lộn xộn, tùy tiện, đa nghĩa 3.2 Tính dừng: - Thuật toán không rơi vào trình vô hạn, phải dừng lại cho kết sau số hữu hạn bước 3.3 Tính đúng: - Sau thực tất bước thuật toán theo trình định, ta phải kết mong muốn với liệu đầu vào Kết kiểm chứng yêu cầu toán 3.4 Tính khả dụng - Thuật toán phải dễ sửa lỗi để thích ứng với toán lớp toán làm việc liệu khác 3.5 Tính khả thi - Kích thước phải đủ nhỏ: Ví dụ: thuật toán có tính hiệu lượng nhớ mà yêu cầu vượt khả lưu trữ hệ thông máy tính - Thuật toán phải chuyển thành chương trình: Ví dụ thuật toán yêu cầu phải biểu diễn số vô tỷ với độ xác tuyệt đối thực với hệ thống máy tính - Thuật toán phải máy tính thực thời gian cho phép, điều khác với lời giải toán(chỉ cần chứng minh kết thúc sau số hữu hạn bước) Ví dụ: chương trình xếp thời khóa biểu cho học kỳ cho máy tính chạy tới học kỳ sau có kết Ví dụ: - Input: số tự nhiên a, b không đồng thời - Output: ước số chung lớn a, b Thuật toán tiến hành mô tả sau (thuật toán Euclide):  Bước 1: (Input): Nhập số tự nhiên a, b  Bước 2: Nếu b != chuyển sang bước  3, không bỏ qua bước 3, chuyển sang bước Bước 3: Đặt r = a % b , đặt a = b , b =  r; quay trở lại bước Bước 4: (Output): kết luận ước số chung lớn phải tìm giá trị a Kết thúc thuật toán Lập Trình (Programming) - Sau có thuật toán ta phải lập trình để thực thuật toán Muốn lập trình đạt hiệu cao, cần phải có kỹ thuật lập trình tốt Kỹ thuật lập trình tốt thể kỹ viết chương trình, khả gỡ rối thao tác nhanh - Lập trình tốt không nắm vững ngôn ngữ lập trình đủ, mà phải biết cách viết chương trình cách uyển chuyển, khôn khéo phát triển để chuyển ý tưởng thành chương trình hoàn chỉnh - Kinh nghiệm cho thấy thuật toán hay cài đặt vụng nên chạy lại cho kết sai tốc độ chậm - Thông thường, ta không nên cụ thể hóa toàn chương trình mà nên tiến hành theo phương pháp tinh chế bước(Stepwise refinement)  Ban đầu chương trình thể ngôn ngữ tự  nhiên, thể thuật toán với bước tổng thể, bước nêu lên công việc phải thực Một công việc đơn giản, đoạn chương trình học thuộc  ta tiến hành viết mã lệnh ngôn ngữ lập trình Một công việc phức tạp phải chia thành công việc nhỏ để tiếp tục với công việc nhỏ - Trong trình tinh chế bước ta phải đưa biểu diễn liệu, với tinh chế công việc, liệu tinh chế dần, có cấu trúc hơn, thể rõ mối liên hệ liệu - Phương pháp tinh chế bước thể tư giải vấn đề từ xuống, giúp cho người lập trình có định hướng thể phong cách viết chương trình Tránh việc mò mẫm, xóa viết lại nhiều lần, biến chương trình thành tờ giấy nháp Kiểm thử chương trình (Testing program) Chạy thử tìm lỗi - Chương trình người viết ra, khó tránh khỏi nhầm lẫn Một chương trình viết xong chưa chạy máy tính kết mong muốn Kỹ tìm lỗi, sửa lỗi, điều chỉnh lại chương trình kỹ quan trọng người lập trình Kỹ có kinh nghiệm tìm sửa lỗi - Có loại lỗi thường gặp lập trình:  Lỗi cú pháp: lỗi hay gặp lỗi dễ sửa Chỉ cần nắm vững ngôn ngữ lập trình đủ Một người coi lập trình sửa lỗi cú pháp  Lỗi cài đặt: Việc cài đặt thể không thuật toán định,  lỗi phải xem lại tổng thể chương trình Kết hợp với chức gỡ rối để sửa lại cho Lỗi thuật toán: Lỗi gặp nguy hiểm Nếu nhẹ phải điều chỉnh lại thuật toán, nặng có phải viết lại thuật toán từ đầu 5.2 Xây dựng test - Có nhiều chương trình khó kiểm tra tính đắn Nhất ta kết nào? Vì vậy, chương trình chạy kết (không biết sai nào) việc tìm lỗi khó khăn Khi ta nên làm test để thử chương trình - Các test nên đặt file văn bản, việc tạo file văn (txt) nhanh, lần chạy thử cần thay tên file liệu vào xong, không cần gõ lại test từ bàn phím Kinh nghiệm làm test là: + Bắt đầu với test nhỏ, đơn giản, làm tay, có đáp số để so sánh với kết chương trình chạy + Tiếp theo test nhỏ chứa giá trị đặc biệt tầm thường Theo kinh nghiệm cho thấy test dễ sai + Các test phải đa dạng, tránh lặp lặp lại test tương tự + Nên có vài test lớn để kiểm tra tính chịu đựng chương trình Kết hay không đa số trường hợp, ta kiểm chứng với test - Lưu ý rằng, chương trình bạn chạy qua hết test có nghĩa chương trình Bởi bạn chưa xây dựng test làm cho chương trình bị sai Vì vậy, có thể, ta nên tìm cách chứng minh tính đắn thuật toán chương trình Điều thương khó Tối ưu chương trình (optimization program) - Một chương trình chạy nghĩa việc lập trình xong Ta phải sửa đổi lại vài chi tiết để chương trình chạy nhanh hơn, hiệu - Thông thường trước kiểm thừ ta nên đặt mục tiêu viết chương trình cho đơn giản (miễn chạy kết được), sau tối ưu chương trình, ta xem lại chỗ viết chưa tốt tối ưu lại mã lệnh để chương trình ngắn gọn hơn, chạy nhanh - Không nên viết tới đâu tối ưu mã đến (bởi chương trình có mã tối ưu thường phức tạp khó kiểm soát) - Việc tối ưu chương trình nên dựa theo tiêu chuẩn sau: 6.1 Tính tin cậy - Chương trình phải chạy dự định, mô tả giải thuật Thông thường viết chương trình, ta có thoái quen kiểm tra tính đắn bước Tính uyển chuyển - Chương trình phải dễ sửa lỗi Vì chương trình viết mã hoàn hảo mà cần phải sửa đổi lại Chương trình viết dễ sửa đổi làm giảm bớt công sức lập trình viên phát triển chương trình Tính sáng - Chương trình viết đễ đọc, dễ hiểu Để sau thời gian dài đọc lại hiểu làm gì? Để có điều kiện sửa sai (nếu phát lỗi mới), cải tiến hay biến đổi để chương trình giả toán khác Tính sáng chương trình phụ thuộc nhiều vào công cụ lập trình phong cách lập trình 6.4 Tính hữu hiệu - Chương trình phải chạy nhanh tốn nhớ (tiết kiệm không gian thời gian).Để có chương trình hữu hiệu, cần phải có giải thuật tốt tiểu xảo lập trình Tuy nhiên, việc áp dụng nhiều tiểu xảo khiến chương trình trở nên rối rắm, khó hiểu sửa đổi Tiêu chuẩn hữu hiệu nên dừng mức chấp nhận được, không quan trọng tiêu chuẩn Vì phần cứng phát triển nhanh, yêu cầu hữu hiệu đặt gánh nặng => Từ phân tích trên, thấy việt làm chương trình phải trải qua nhiều công đoạn tiêu tốn nhiều công sức Chỉ công đoạn không hợp lý tăng chi phí viết chương trình  Lời khuyên: Đừng viết chương trình mà chưa suy xét kỹ giải thuật liệu cần thao tác (Theo A.K.A DSAP Textbook) ... công việc nhỏ - Trong trình tinh chế bước ta phải đưa biểu diễn liệu, với tinh chế công việc, liệu tinh chế dần, có cấu trúc hơn, thể rõ mối liên hệ liệu - Phương pháp tinh chế bước thể tư giải... thuật toán thích ứng với cách tổ chức liệu định, cách tổ chức liệu khác hiệu thực Chính nên bước xây dựng cấu trúc liệu tách rời bước tìm kiếm thuật toán giải vấn đề - Các tiêu chuẩn lựa chọn... rối thao tác nhanh - Lập trình tốt không nắm vững ngôn ngữ lập trình đủ, mà phải biết cách viết chương trình cách uyển chuyển, khôn khéo phát triển để chuyển ý tưởng thành chương trình hoàn chỉnh

Ngày đăng: 07/07/2017, 13:16

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w