Trang chủ   Sản phẩm   Phần mềm Dành cho nhà trường   Phần mềm Hỗ trợ học tập   Kho phần mềm   Liên hệ   Đăng nhập | Đăng ký

Tìm kiếm

School@net
Bảng giá phần mềm
Educations Software

Đại Lý - Chi Nhánh

Bản tin điện tử
 
Đăng nhập/Đăng ký
Bí danh
Mật khẩu
Mã kiểm traMã kiểm tra
Lặp lại mã kiểm tra
Ghi nhớ
 
Quên mật khẩu | Đăng ký mới

 
Giỏ hàng

Xem giỏ hàng


Giỏ hàng chưa có sản phẩm

 
Xem bài viết theo các chủ đề hiện có
  • Hoạt động của công ty (701 bài viết)
  • Sản phẩm mới (217 bài viết)
  • Dành cho Giáo viên (552 bài viết)
  • Lập trình Scratch (3 bài viết)
  • Mô hình & Giải pháp (155 bài viết)
  • IQB và mô hình Ngân hàng đề kiểm tra (126 bài viết)
  • Hỗ trợ khách hàng (482 bài viết)
  • TKB và bài toán xếp Thời khóa biểu (242 bài viết)
  • Học tiếng Việt (182 bài viết)
  • Thông tin khuyến mại (80 bài viết)
  • Download - Archive- Update (289 bài viết)
  • Các Website hữu ích (71 bài viết)
  • Cùng Học (98 bài viết)
  • Learning Math: Tin học hỗ trợ học Toán trong nhà trường (74 bài viết)
  • Thông tin tuyển dụng (55 bài viết)
  • School@net 15 năm (153 bài viết)
  • Mỗi ngày một phần mềm (7 bài viết)
  • Dành cho cha mẹ học sinh (123 bài viết)
  • Khám phá phần mềm (122 bài viết)
  • GeoMath: Giải pháp hỗ trợ học dạy môn Toán trong trường phổ thông (36 bài viết)
  • Phần mềm cho em (13 bài viết)
  • ĐỐ VUI - THƯ GIÃN (360 bài viết)
  • Các vấn đề giáo dục (1209 bài viết)
  • Bài học trực tuyến (1033 bài viết)
  • Hoàng Sa - Trường Sa (17 bài viết)
  • Vui học đường (276 bài viết)
  • Tin học và Toán học (220 bài viết)
  • Truyện cổ tích - Truyện thiếu nhi (181 bài viết)
  • Việt Nam - 4000 năm lịch sử (97 bài viết)
  • Xem toàn bộ bài viết (8179 bài viết)
  •  
    Thành viên có mặt
    Khách: 2
    Thành viên: 0
    Tổng cộng: 2
     
    Số người truy cập
    Hiện đã có 54824708 lượt người đến thăm trang Web của chúng tôi.

    Lỗi số lớn và kiểu String trong TP

    Ngày gửi bài: 09/04/2010
    Số lượt đọc: 2554

    I. Giới thiệu.

    Trong mỗi ngôn ngữ lập trình thường có một số kiểu dữ liệu chuẩn cho biết phạm vi giá trị có thể lưu trữ, dung lượng bộ nhớ cần thiết để lưu trữ và xác định các phép toán có thể tác động lên dữ liệu.

    Và trong TP, một số kiểu dữ liệu dạng số như kiểu số nguyên (bao gồm kiểu: byte, integer, word, login) trong đó kiểu logint (có phạm vi lớn nhất): mỗi giá trị lưu giữ trong 4 byte, giá trị biến kiểu này nằm trong phạm vi từ - 231 đến 231-1 tức là từ (-2147483648 đến 2147483647) nên chỉ cho phép biến lưu giữ số tối đa có 10 chữ số.

    Chính vì vậy khi có sự tác động của các toán tử (+,-, *, /)lên 2 hay nhiều biến kiểu nguyên có giá trị lớn thì kết quả của phép toán là không chính xác do lỗi tràn số (lỗi do số quá lớn)

    Để khắc phục điều này, thay vì dùng các biến kiểu nguyên, ta dùng các biến kiểu String. Chẳng hạn để thực hiện phép nhân 2 số, (mỗi số có nhiều hơn 10 chữ số) ta dùng 2 biến S1 và S2 kiểu String dùng để lưu 2 xâu số nhập vào (mỗi chữ số trong xâu là một kí tự) và dùng biến S để lưu kết quả phép nhân.

    Việc nhân 2 xâu số có thể minh hoạ nhưsau (như phép nhân trong SGK môn Toán tiểu học)


    Nên theo ý đó, ta chia bài này toán thành các modul sau:

    Modul 1: FunctionTích1 (S1, S2:String) : String, có giá trị trả về là tích 2 xâu S1, S2 (trong đó xâu số S2 chỉ có 1 chữ số)

    Modul 2:Function Tong (S1, S2:String) :String, có giá trị trả về là tổng 2 xâu S1, S2.

    Modul 3: FunctionTích (S1, S2:String) : String, có giá trị trả về là tích 2 xâu S1, S2 (trong đó S1, S2 là 2 xâu số nguyên độ dài tối đa 255 kí tự).

    Để chi tiết hơn, ta minh họa Modul 2 theo sơ đồ sau:


    Trong ví dụ trên, ta giả sử ( S1: = 12345678909, S2: = 4567893).

    - Nếu 2 xâu có độ dài khác nhau, ta thêm các kí tự ‘0’vào trước xâu có độ dài ngắn hơn ( số kí tự ‘0’ cần thêm bằng hiệu độ dài 2 xâu).

    - Duyệt từng vị trí từ cuối xâu cho đến vị trí đầu tiên của xâu qua biến chỉ số i (ban đầu i:= length(S1)). Với mỗi i ta thực hiện một số thao tác được minh họa như trên hình vẽ ( sau mỗi lần thực hiện những thao tác đó, gán i:=i-1) cho đến khi i=1. Song cần lưu ý khi cộng 2 chữ số cuối cùng (2 kí tự đầu tiên của S1 và S2). Nếu tổng của 2 số này và biến nhớ trước đó (nếu có) >=10 thì cần thêm kí tự ‘1’ vào đầu xâu tổng S.

    Như vậy, thông qua một số thao tác trên cho đến khi i = 0, ta có biến S lưu giữ giá trị tổng của 2 xâu số nguyên ( độ dài tối đa 255 kí tự). Lúc này, ý tưởng đã rõ ràng, xin đi vào phần cài đặt cụ thể.

    II. Cài đặt chương trình.

    Trong Modul3, việc tính các tích thành phần và tính tổng của các tích đó, ta chỉ việc thực hiện lời gọi hàm đã được xây dựng ở các Modul1Modul2.

    Hi vọng rằng, bài viết này sẽ phần nào giúp các em HS THPThiểu thêm các thao tác trên xâu, và có thể thực hiện được một số phép toán đơn giản trên một số đối tượng mà không hoàn toàn phụ thuộc vào các kiểu dữ liệu định trước. Chúc các em thành công !

    ( Trần Hữu Anh – anh_tinhue@yahoo.com)

    School@net



     Bản để in  Lưu dạng file  Gửi tin qua email


    Những bài viết khác:



    Lên đầu trang

     
    CÔNG TY CÔNG NGHỆ TIN HỌC NHÀ TRƯỜNG
     
    Phòng 1407 - Nhà 17T2 - Khu Trung Hoà Nhân Chính - Quận Cầu Giấy - Hà Nội
    Điện thoại: (024) 62511017 - Fax: (024) 62511081
    Email: school.net@hn.vnn.vn / thukhachhang@yahoo.com


    Bản quyền thông tin trên trang điện tử này thuộc về công ty School@net
    Ghi rõ nguồn www.vnschool.net khi bạn phát hành lại thông tin từ website này
    Site xây dựng trên cơ sở hệ thống NukeViet - phát triển từ PHP-Nuke, lưu hành theo giấy phép của GNU/GPL.