cslt bai tap chuong 1
BÀI TẬP CHƯƠNG I
Câu 1: Khái niệm về thuật toán, các cách biểu diễn thuật toán. Sự liên quan giữa dữ liệu và thuật toán?
.Thuật toán là một bảng hướng dẫn để chỉ ra các công việc phải thực hiện theo một trình tự nào đó đã dược xác định để giải quyết một công việc cho trước. Nói cách khác, với những điều kiện ban đầu, một thuật toán sẽ chỉ ra hữu hạn các bước phải tiến hành theo một trình tự duy nhất để đạt được một kết quả đã định trước.
.Các cách biểu diễn thuật toán:
· Biểu diễn thuật toán bằng ngôn ngữ tự nhiên của con người:
ngôn ngữ tự nhiên là ngôn ngữ con người thường sử dụng trong giao tiếp hàng ngày do đó ngôn ngữ này dễ hiểu và đa dạng .Tuy nhiên do tính đa dạng của nó dẫn tới việc ko nhất quán và đôi khi cồng kềnh .
· Biểu diễn thuật toán bằng sơ đồ khối:
là việc sử dụng các khối theo quy tắc nhất định để thể hiện thuật toán.Ngôn ngữ này có tính nhất quán cao,rõ ràng dễ hiểu ,tuy nhiên lại rất cồng kềnh đối với 1 bài toán phức tạp.
· Biểu diễn thuật toán bằng ngôn ngữ thuậ toán:
ngôn ngữ thuật toán được lựa chọn phù hợp với các công việc cần xử lý..Pascal là ngôn ngữ khá phổ dụng được lựa chọn.
.Sự liên quan giữa dữ liệu và thuật toán:Khi giải các bài toán, thuật toán được hiểu là một bản chỉ ra tập hợp các công việc phải thực hiện theo một trình tự xác định để giải một bài toán hay một lớp bài toán cùng loại. Nó bao gồm một dãy các lệnh chặt chẽ và rõ ràng xác định trình tự các thao tác trên một đối tượng là dữ liệu của bài toán. Một thuật toán không thể tách rời thuật toán khỏi dữ liệu và cấu trúc dữ liệu.
Câu 2: Các cấu trúc cơ bản của thuật toán? Lấy ví dụ minh hoạ cho tất cả các cấu trúc trên.
Trả lời: Các cấu trúc cơ bản của thuật toán:gồm 3 kiểu cấu trúc cơ bản:
· Cấu trúc tuần tự: tất cả các bước của công việc trong thuật toán được thực hiện tuần tự.1 lần.
Ví dụ: thuật toán tính chu vi diện tích hình tròn khi biết bán kính của nó là r
Const Pi=3,1416;
Var cv,dt,r:integer;
Begin
r:=5,5;
cv:=2*pi*r;dt:=pi*r*r;
writeln(cv);
writeln(dt);
readln;
End.
· Cấu trúc điều kiện: trong thuật toán có việc kiểm tra một điều kiện để quyết định thực hiện công việc.
Ví dụ:
Var so:integer;
Begin
If so:=0 then writeln(‘so can tim:’,so) else writeln(‘so sai!’);
End.
· Cấu trúc lặp: trong thuật toán có một tập hợp các công việc được lặp đi lặp lại nhiều lần.
Ví dụ:
Var n,i,lt:integer;
Begin
n:=5;i:=1;lt:=1;
for i:=1 to n do lt:=lt*i;
writeln(‘luy thua=’,lt);
readln;
End.
Câu 3: Khái niệm chương trình và mối quan hệ giữa các ngôn ngữ lập trình?
Sau khi có thuật toán, phải mô tả thuật toán cho máy tính bằng một ngôn ngữ mà máy có thể hiểu được. Bản mô tả thuật toán đó gọi là một chương trình. Chương trình cho máy tính là một tập hợp hữu hạn các lệnh viết bằng một ngôn ngữ nào đó, mà người dùng máy có thể hiểu được. Mỗi một lệnh sẽ tương ứng với một hay một số thao tác trong thuật toán đã được xây dựng trước.
Ngôn ngữ lập trình được chia thành 3 loại: ngôn ngữ máy, ngôn ngữ kí hiệu và ngôn ngữ thuật toán. Ngôn ngữ máy là loại các nhà chế tạo đã xây dựng ngay trong máy tính. Với ngôn ngữ này máy tính có thể hiểu được ngay mà không cần có sự can thiệp trung gian của việc dịch hay thông dịch. Tuy nhiên, việc viết chương trình bằng ngôn ngữ máy là một việc làm thủ công, tẻ nhạt, mát nhiều thời gian, dễ nhầm lẫn, và chương trình lập cho máy này không dùng được cho loại máy khác. Ngôn ngữ kí hiệu là một ngôn ngữ lập trình thuộc lớp trung gian giữa ngôn ngữ máy và ngôn ngã thuật toán, gọi là ngôn ngữ trong. Ngôn ngữ thuật toán là ngôn ngữ lập trình rất dễ đọc dễ hiểu, gần gũi với ngôn ngữ tự nhiên của con người, đó là một hệ thống những quy ước không phụ thuộc vào từng máy cụ thể khắc phục những nhược điểm của viết trình bằng ngôn ngữ máy.
Câu 4:Những điểm cần nắm vững đối với một ngôn ngữ lập trình cấp cao?Chỉ ra cách tiếp cận một ngôn ngữ lập trình mới trong kĩ thuật lập trình cấu trúc?
. Những điểm cần nắm vững với một ngôn ngữ lập trình cấp cao đó là: Trong số các ngôn ngữ thuật toán có những ngôn ngữ phù hợp với phương pháp lập trình cấu trúc: ngôn ngữ C, Pascal, Portran…; có ngôn ngữ phù hợp với phương pháp lập trình hướng đối tượng: C++, JAVA, DELPHI…; có những ngôn ngữ chuyên để giải quyết các bài toán quản trị cơ sở dữ liệu: SQL, ACCES,…
Việc tiếp cận các ngôn ngữ thuật toán trong lập trình cấu trúc được tiến hành theo trình tự:
· Bước 1: tìm hiểu bộ kí tự của ngôn ngữ
· Bước 2: tìm hiểu hệ thống từ khoá (keywords), nghiên cứu các đại lượng sử dụng trong ngôn ngữ
· Bước 3:tìm hiểu các mẫu lệnh, các quy định khắt khe về cú pháp để viết 1 câu lệnh.
Câu 5: Nội dung của kĩ thuật thiết kế trên-xuống và ý nghĩa của nó?
. Nội dung kĩ thuật trên xuống:
.Trong kĩ thuật trên xuống, người ta phân tích toàn bộ bài toán một cách tổng quát, xuất phát từ dữ liệu và mục tiêu đặt ra để đề cập tới những vấn đề chủ yếu, rồi sau đó mới đi dần vào giải quyết những phần việc cụ thể một cách chi tiết theo kiểu cụ thể hoá dần dần. Khi thuật toán sử dụng kĩ thuật trên-xuống thì chương trình cũng được thiết kế theo nguyên tắc trên-xuống vì chương trình chính là ảnh của thuật toán nhờ quá trình mã hoá bằng một ngôn ngữ lập trình nào đó. Thể hiện:
· Mỗi bài toán cơ sở được định trình bằng một chương trình hay một đoạn chương trình tương đối độc lập, gọi là modul chương trình.
· Ngoài các modul chương trình được thiết kế để giải quyết và xử lí các bài toán cơ sở, trong hệ thống các chương trình con còn một số các modul khác để tạo các chức năng riêng biệt và tạo giao diện người dùng giúp cho việc thao tác với chương trình được thuận tiện.
· Sự liên kết và điều hành một số chương trình con đẻ thực hiện bài toán lớn hơn được thực hiện bằng một chương trình khác, gọi là chương trình mẹ. Một chương trình có thể là mẹ của chương trình này nhưng lại là con của chương trình khác. Trong mỗi bộ chương trình giải toán, có một chương trình mẹ không là con của một chương trình nào, gọi là chương trình chính, đó chính là chương trình điều hành tổng thể để thực hiện bài toán đặt ra.
.Ý nghĩa của kĩ thuật trên-xuống: Sử dụng kĩ thuật trên-xuống giúp cho việc giải bài toán được định hướng rõ ràng, tránh sa đà ngay vào các chi tiết vụn vặt làm rối công việc. Trong lập trình, kĩ thuật này là cơ sở cho việc lập trình có cấu trúc mạch lạc, khúc triết, dễ kiểm soát. Mặt khác tăng hiệu quả giải quyết các bài toán vì nó cho phép nhiều người cùng thực hiện 1 bài toán với các phần tương đối độc lập .Hơn nữa có thể tiết kiệm thời gian khi gặp các bài toán con đã có lời giải từ trước đó.
Câu 6:Khái niệm chương trình con và mối quan hệ với kĩ thuật trên- xuống?
. Trong lập trình, thường gặp những đoạn chương trình được lặp đi lặp lại nhiều lần ở những chỗ khác nhau. Để tránh tình trạng viết đi viết lại nhiều lần những đoạn chương trình này, ta nên chuyển những đoạn chương trình đó thành một chương trình để khi cần thì có thể gọi thay vì phải viết lại chương trình trên, chương trình đó gọi là chương trình con.
.Trong thiết kế kỹ thuật trên xuống các bài toán nhỏ chính là 1 chương trình con mà bài toán cấp cao hơn nó có thể xem như 1 bài toán mẹ .Và bài toán ở cấp cao nhất là bài toán chính .Nó sẽ gọi đến các bài toán con là các bài toán có cấp thấp hơn.Việc sử dụng kỹ thuật chương trình con giúp thuận lợi trong việc kiểm soát các dữ liệu dễ dàng hơn.
.Khi viết chương trình giải quyết các bài toán lớn, phức tạp, chương trình thường rất dài, gồm hàng nghìn hàng trăm dòng lệnh. Đọc và kiểm soát rất khó khăn. Vì vậy, để đơn giản trong quá trình gỡ rối, sửa đổi, bổ sung… chương trình, ta nên phân rã chương trình theo thiết kế trên-xuống.
Câu 7: Cấu trúc chung của chương trình con?
. Hiện nay, các ngôn ngữ lập trình thông dụng, thường sử dụng hai loại chương trình con là hàm và thủ tục. Trong các thủ tục và hàm người dùng, thường có các thành phần:
· Dấu hiệu để xác định chương trình này là chương trình con thủ tục hay hàm
· Xác định tên thủ tục/hàm. Tên này dùng để gọi nó trong chương trình mẹ nên bắt buộc phải có.
· Xác định các tham số hình thức là các biến coi là dữ liệu ban đầu để thủ tục/hàm đó xử lý. Các tham số nàycó thể có hoặc không.
· Xác định các biến cục bộ là các biến trung gian mà tủ tục/hàm đó dùng đến khi xử lí dữ liệu ban đầu. Các tham số này có thể có hoặc không và chỉ có ý nghĩa trong chính chương trình con này
· Các lệnh thủ tục hàm để xử lí dữ liệu ban đầu
· Dấu hiệu kết thúc thủ tục/hàm.
Câu 8: Khái niệm đệ quy trong chương trình, ưu và nhược của kĩ tuật đệ quy?
. Khái niệm: Một đối tượng được gọi là đệ quy nếu nó lại bao hàm chính nó hoặc được định nghĩa thông qua nó. Một thuật toán được gọi là đệ quy nếu trong thân nó có lời gọi đến chính nó.
.Trong lập trình, đệ quy là một kĩ thuật đặc biệt để chỉ hiện tượng tại một lệnh của chương trình con lại gọi đến chính chương trình con đó.
.Ưu điểm: rất ngắn gọn.
.Nhược điểm: Tốn thời gian thực hiện và tốn bộ nhớ vì việc đệ quy sẽ sử dụng bộ nhớ xếp chồng Stack để chứa kết quả trung gian. Phải rất thận trọng để lường trước việc kết thúc quá trình đệ quy. Nên trong lập trình, người ta thường không thích sử dụng kĩ thuật đệ quy. Khi đó phải khử đệ quy trong chương trình nhờ việc sử dụng kĩ thuật Stack.
Câu 9: Các bước để giải một bài toán trên máy tính và ý nghĩa của từng bước?
. Trình tự giải bài toán trên máy tính:
1. Xác định bài toán: Đối với người làm tin học, xác định bài toán là việc tìm hiểu toàn bộ nội dung bài toán, bao gồm: xác định mục tiêu bài toán và xác định dữ liệu ban đầu của bài toán; xác định yêu cầu về các thông tin kết quả sau khi giải bài toán.
2. Xác định cấu trúc dữ liệu của bài toán: Với các dữ liệu ban đầu của bài toán đã được xác định ở bước 1, phải xác định được các dữ liệu cho trước có thể tạo thành dữ liệu có cấu trúc hay không nếu có thì có thể tách thành nhóm dữ liệu sao cho mỗi nhóm sẽ tương ứng với một loại cấu trúc dữ liệu nào đó và nên sử dụng các cấu trúc nào thì hợp lí.
3. Tìm cách giải và xây dựng thuật toán: Xác định xem bài toán có lời giải hay không. Nếu có, thì chọn lấy một cách giải tốt nhất. Sau khi chọn xong cách giải bài toán, tiến hành xây dựng thuật toán theo kiểu thiết kế trên-xuống để tạo ra các modul nhỏ trên cơ sở cấu trúc dữ liệu đã lựa chọn. Đây là công việc khó khăn nhất trong quá trình giải toán vì nó mang tính kiến trúc toàn diện.
4. Viết chương trình : Căn cứ vào thuật toán đã xây dựng ở bước 3, ta tạo ra mã nguồn. Trong chương trình, nên lợi dụng tối đa khả năng của các chương trình con.
5. Chạy thử và hiệu chỉnh: Xem chương trình có lỗi hay không
6. Giải bài toán: là bước dùng chương trình sau khi đã chạy thử và hiệu chỉnh để giải bài toán với dữ liệu thực tế
7. Đánh giá kết quả: Đánh giá hiệu quả và tính hợp lí của các thông tin kết quả do chương trình cung cấp và xem nó có phù hợp với mục tiêu giải bài toán không.
8. Hướng dẫn và bảo trì: Khi chương trình được viết cho nhiều người dùng, thì người lập trình phải viết tài liệu hướng dẫn sử dụng chương trình để cung cấp cho người dùng cùng với chương trình dịch
Câu 10: Cấu trúc bộ nhớ trong của máy tính và cách lưu trữ thông tin số trong máy tính?
. Bộ nhớ trong:là những thành phần nhớ mà CPU có thể trao đổi trực tiếp: gồm ROM và RAM,CACHE MEMORY .
ROM (Read Only Memory): bộ nhớ chỉ đọc thông tin.
§ Dùng để lưu trữ các chương trình hệ thống, chương trình điều khiển việc nhập xuất cơ sở (ROM_BIOS:ROM- basic input/output system)
§ Thông tin ghi trên ROM không thể thay đổi.
§ Dữ liệu không bị mất đi ngay cả khi không có điện.
RAM (Random Access Memory): bộ nhớ truy suất ngẫu nhiên
§ Lưu trữ dữ kiện và chương trình trong quá trình thao tác và tính toán.
§ Thông tin mất đi khi mất điện hoặc tắt máy.
§ Dung lượng RAM khoảng 128MB, 256MB, 512MB,…
CACHE MEMORY:được đặt đệm giữa CPU và bộ nhớ trong nhằm làm tăng tốc trao đổi
thông tin,thuộc bộ nhớ RAM,có dung lượng nhỏ.
Các số thực kiểu float và double được lưu trữ thành hai phần: phần định trị và phần mũ. Nhưng thay vì biểu diễn số ở dạng thập phân, ta dùng hệ nhị phân để biểu diễn, vì máy tính chỉ xử lý và tính toán trêncácsốnhịphân.
Số byte cần thiết để biểu diễn một biến kiểu số thực phụ thuộc vào tầm chính xác của biến cần biểu diễn. Kiểu float dùng để mô tả biến có độ chính xác đơn, trong khi đó kiểu double dùng mô tả các biến có độ chính xác kép. Biểu diễn phần định trị và phần mũ ở những biến này tuân theo chuẩn IEEE (Institute of Electrical and Electronics Engineers) về số thực dấu chấm động. Hầu hết các trình biêndịchChiệnnayđềutheochuẩnnày.
Số thực dấu chấm động cơ số 2 được biểu diễn trong IEEE theo dạng chuẩn hóa. Sự chuẩn hóa bao gồm việc điều chỉnh phần mũ sao cho dấu chấm nhị phân (có ý nghĩa tương tự như dấu chấm thập phân) trong phần định trị luôn luôn nằm bên phải của bit lớn nhất có nghĩa khác 0. Trong hệ cơ số 2, điều này nghĩa là bit ngoài cùng bên trái của phần định trị luôn luôn là 1. Tính chất này của dạng chuẩn hóa được IEEE tận dụng triệt để khi lưu trữ phần định trị trong bộ nhớ.
Câu 11: Tìm hiểu hai bảng mã ASCII, UNICODE và cách lưu thông tin kí tự trong bộ nhớ của máy tính?
.ASCII (American Standard Code for Information Interchange - Chuẩn mã trao đổi thông tin Hoa Kì), thường được phát âm là át-xơ-ki, là bộ kí tự và bộ mã kí tự dựa trên bảng chữ cái La Tinh được dùng trong tiếng Anh hiện đại và các ngôn ngữ Tây Âu khác. Nó thường được dùng để hiển thị văn bản trong máy tính và các thiết bị thông tin khác. Nó cũng được dùng bởi các thiết bị điều khiển làm việc với văn bản.
Các chữ cái in được theo thứ tự trong ASCII là
␠!"#$%&'()*+,-./0123456789:;<=>? @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ 'abcdefghijklmnopqrstuvwxyz{|}~
với kí tự đầu tiên là khoảng trắng.
Các kí tự từ không đến ba mươi hai theo hệ thập phân có thể in ra màn hinh. Các kí tự đó chỉ có thể in được trong môi trường dos gồm một số hình như trái tim, mặt cười, hình tam giác,...Một số ký tự đặc biệt khi in ra màn hình sẽ thực hiện lệnh như: kêu tiếng bip với kí tự BEL, xuống hàng với kí tự LF,...
Trong bảng mã ASCII chuẩn có 128 kí tự. Trong bảng mã ASCII mở rộng có 256 kí tự bao gồm cả 128 kí tự trong mã ASCII chuẩn. Các kí tự sau là các phép toán, các chử có dấu và các kí tự để trang trí.
.UNICODE (hay gọi là mã thống nhất; mã đơn nhất) là bộ mã chuẩn quốc tế được thiết kế để dùng làm bộ mã duy nhất cho tất cả các ngôn ngữ khác nhau trên thế giới, kể cả các ngôn ngữ sử dụng ký tự tượng hình phức tạp như tiếng Trung Quốc, tiếng Thái vân vân. Vì những điểm ưu việt đó, Unicode đã và đang từng bước thay thế các bộ mã truyền thống, kể cả bộ mã tiêu chuẩn ISO 8859 và hiện đang được hỗ trợ trên rất nhiều phần mềm cũng như các trình ứng dụng, chẳng hạn Windows.
Unicode chiếm trước 1.114.112 (= 220+216) mã chữ, và hiện nay đã gán ký hiệu cho hơn 96000 mã chữ. 256 mã đầu tiên phù hợp với ISO 8859-1, là cách mã hóa ký tự phổ biến nhất trong "thế giới phương Tây"; do đó, 128 ký tự đầu tiên còn được định danh theo ASCII.
Không gian mã Unicode cho các ký tự được chia thành 17 mặt phẳng (plane) và mỗi mặt phẳng có 65536 code point. Mặt phẳng đầu tiên (plane 0), "Mặt phẳng đa ngôn ngữ căn bản" (Basic Multilingual Plane - BMP), là nơi mà đa số các ký hiệu được gán mã. BMP chứa các ký hiệu cho hầu hết các ngôn ngữ hiện đại, và một số lượng lớn các ký tự đặc biệt. Đa số các code point được phân bố trong BMP được dùng để mã hóa các ngôn ngữ CJKV (Hán-Nhật-Hàn-Việt).
Hai mặt phẳng tiếp theo được dùng cho các ký tự "đồ họa". Mặt phẳng 1, "Mặt phẳng đa ngôn ngữ bổ sung" (Supplementary Multilingual Plane - SMP), được dùng chủ yếu cho các loại chữ viết cổ:ví dụ Egyptian hieroglyph (chưa được mã hóa), nhưng cũng còn được dùng cho các ký hiệu âm nhac. Mặt phẳng 2, (Supplementary Ideographic Plane - SIP), được dùng cho khoảng 40000 chữ Trung Quốc ít gặp mà đa số là các ký hiệu cổ, ngoài ra cũng có một số ký hiệu hiện đại. Mặt phẳng 14 hiện chứa một số các ký tự thẻ ngôn ngữ không được khuyến khích và một số ký hiệu lựa chọn biến thể. Mặt phẳng 15 và Mặt phẳng 16 được mở cho các sử dụng cá nhân.
Vẫn còn nhiều tranh luận giữa các chuyên gia về ngôn ngữ CJK (Hoa-Nhật-Hàn), đặc biệt là các chuyên gia người Nhật, về nhu cầu và lợi ích kỹ thuật của việc "thống nhất chữ Hoa", tức là việc chuyển những bộ chữ Hoa và chữ Nhật vào trong một bộ chữ hợp nhất. (Xem thêm mã hóa chữ Hoa)
Kho ≈220 điểm mã bảo đảm sự tương thích với bộ mã UTF-16. Việc mới chỉ dùng hết có 10% kho chữ cho thấy rằng kho chữ cỡ ≈20 bit này khó bị đầy trong một tương lai gần
Biểu diễn các ký tự
Một trong các phương pháp để biểu diễn các ký tự trong máy tính là thiết kế một bộ mã. Ý nghĩa của cách thiết kế này là các ký tự khác nhau sẽ được đặc trưng bởi một nhóm bit duy nhất khác nhau, bằng cách này thông tin sẽ được mã hóa thành một chuỗi bit trong bộ nhớ hoặc ở các thiết bị lưu trữ. Tuy nhiên, sẽ có nhiều bộ mã khác nhau. Ðể giải quyết vấn đề này, Viện Chuẩn Hóa Hoa Kỳ (American National Standards Institute) đã đưa ra bộ mã chuẩn trong giao tiếp thông tin trên máy tính gọi là bộ mã ASCII (American Standard Code for Information Interchage) và đã trở thành chuẩn công nghiệp cho các nhà sản xuất máy tính. Bộ mã này dùng 8 bit để biểu diễn các ký tự, tuy vậy mỗi ký tự trong bảng mã ASCII vẫn chiếm hết một byte khi thực hiện trong bộ nhớ máy tính, bit dư ra sẽ bị bỏ qua hoặc được dùng cho biểu diễn một cho ký tự đặc biệt. Trong bảng mã ASCII sẽ bao gồm các ký tự chữ hoa, thường, ký tự số, ký tự khoảng trắng,...
Ví dụ:
0
1
0
0
0
0
0
1
dãy bit trên là biểu diễn của ký tự "A "
Câu 12: Khái niệm về số có độ chính xác hữu hạn và những hạn chế trong dữ liệu số của máy tính?
. Với tất cả các máy tính, các thông tin số đều được lưu trữ trong các trường nhớ chuẩn có độ dài xác định và cố nhiên hữu hạn. bản chất hữu hạn đó buộc máy tính chỉ có khả năng xử lí các thông tin số có chữ số cố định và giá trị nằm trong phạm vi nào đó. Đây là đặc điểm rất quan trọng cần phải lưu ý trong quá trình xử lí thông tin bằng máy tính. Trong tư duy toán học thông thường, các pháp toán tổng, hiệu và tích của hai số nguyên luôn là một số nguyên, còn trong máy tính với đặc điểm sử dụng số có độ chính xác hữu hạn. Nếu kết quả không thuộc phạm vi biểu diễn thì không thể thực hiện đúng trên máy tính. Với bản chất hữu hạn của bộ nhớ máy tính, trong quá trình xử lí dữ liệu số, phải thường xuyên quan tâm tới dữ liệu, xem có vượt quá phạm vi biểu diễn không phù hợp không. Nếu không, có thể nhận được một kết quả sai không ngờ tới.
Ví dụ:( sai bản chất cộng)
Số nguyên kiểu integer được lưu trữ ở 2 byte với mã bù 2.vậy sẽ có phạm vi biểu diễn từ -32768 đến 32767.
Chương trình:
Var i:integer;
Begin
i := 32767;
i := i+1;
writeln( ‘i1 =’,i);
i:= i+1;
writeln(‘i2 =’,i);
readln;
end.
Giá trị được đưa ra ở lệnh writeln sẽ là :i1= -32768,i2= -32767.
(do bị tràn bộ nhớ)
Câu 13: Ý nghĩa của việc nghiên cứu vấn đề số có độ chính xác hữu hạn, những điều cần lưu ý về vấn đề này với người lập trình?
.Trong khi xây dựng thuật toán, người ta thường không để ý đến các kết quả được tính toán mà chỉ để ý đến cách làm, trình tự công việc, tính tối ưu và độ phức tạp khi tính toán. Nhưng khi xây dựng chương trình để máy tính thực hiện thuật toán giúp con người thì vấn đề độ chính xác hữu hạn của số lại ảnh hưởng trực tiếp tơi kết quả tính toán của máy tính. Vì thế, trong các ngôn ngữ lập trình, người ta phải chú ý đến kiểu dữ liệu cùng phạm vi biểu diên của chúng và đánh giá trước miền kết quả của các phép tính sẽ được thực hiện khi viết trình để chọn được dữ liệu tương ứng cho phù hợp với bài toán thực tế. Với bản chất hữu hạn của bộ nhớ máy tính, trong quá trình xử lí dữ liệu số, phải thường xuyên quan tâm tới dữ liệu, xem có vượt quá phạm vi biểu diễn không phù hợp không. Nếu không, có thể nhận được một kết quả sai không ngờ tới
.
Bạn đang đọc truyện trên: AzTruyen.Top