Danh mục

Các kiểu dữ liệu

Số trang: 66      Loại file: doc      Dung lượng: 279.50 KB      Lượt xem: 17      Lượt tải: 0    
Hoai.2512

Hỗ trợ phí lưu trữ khi tải xuống: 21,000 VND Tải xuống file đầy đủ (66 trang) 0
Xem trước 7 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Sự tiến hóa của những ngôn ngữ lập trình hiện đại được kết hợp chặt chẽ với sự phát triển (và chính thức hóa) của các khái niệm về kiểu dữ liệu. Ở cấp độ ngôn ngữ máy, tất cả các giá trị không định kiểu (có nghĩa là, chỉ là các mẫu bit).
Nội dung trích xuất từ tài liệu:
Các kiểu dữ liệu Các kiểu dữ liệu Sự tiến hóa của những ngôn ngữ lập trình hiện đại được kết hợpchặt chẽ với sự phát triển (và chính thức hóa) của các khái ni ệm v ề ki ểudữ liệu. Ở cấp độ ngôn ngữ máy, tất cả các giá trị không định kiểu (cónghĩa là, chỉ là các mẫu bit). Tuy nhiên, những lập trình viên ngôn ng ữAssembler, thường nhận ra sự khác biệt cơ bản giữa các địa chỉ (xem làđịnh vị) và dữ liệu (được coi là tuyệt đối).Do đó, họ nhận ra rằng s ự k ếthợp một số các địa chỉ và dữ liệu (ví dụ, tổng của hai địa chỉ) được định đầy đủ.nghĩa Tuy nhiên ,quan điểm về kiểu của ngôn ngữ Assembler là khônghoàn thiện, bởi vì nó xem kiểu như là một thuộc tính của một dữ liêu thayvì một thuộc tính của ô có chứa dữ liệu. Đó là, có hay không một thao tácluôn có ý nghĩa có thể được xác định chỉ trong thời gian chạy khi các giátrị toán hạng thực tế là có sẵn. Trình tiện ích Assembler có thể sẽ nhận rasự vô hiệu của một biểu thức mà khi cộng hai nhãn, trong khi nó sẽ chấpnhận một chuỗi mã mà tính toán chính xác phép cộng đó! Điểm y ếu nàyđã dẫn đến sự ra đời của cấu trúc được gán th ẻ bao gồm (trong th ời gianchạy) thông tin kiểu với dữ liệu. Cấu trúc này có th ể phát hiện lỗi cácnhãn được thêm, do sự thêm các lệnh có thể phát hiện ra các toán h ạngcủa nó là hai địa chỉ. Thật không may, các thông tin ki ểu bao g ồm d ữ li ệuthường giới hạn bởi kiến trúc của máy. Lập trình viên- các kiểu dữ liệuđược khai báo không thể nhận được sự kiểm tra chính xác tự động như làcác kiểu dữ liệu có sẵn. FORTRAN và sau đó là ngôn ngữ bậc cao được phát triển trên ngônngữ assaembler bằng cách kết hợp các thông tin về kiểu với các vị trí đangnắm giữ dữ liệu hơn là bản thân dữ liệu. Nói chung, ngôn ngữ lập trìnhkết hợp thông tin về kiểu với tên kiểu nó có th ể là bi ến ho ặc các tham s ốhình thức. Khi một thuộc tính như kiểu được kết hợp với một tên ki ểu,chúng tôi nói rằng các tên kiểu ràng buộc với thuộc tính. Xác định ki ểudiễn ra tại thời gian biên dịch thường được gọi là kiểu tĩnh, và di ễn ratrong thời gian chạy chương trình được gọi là kiểu động. Ngôn ngữ kiểutĩnh là những ràng buộc để xác định các kiểu tại thời gian biên dịch. Kểtừ khi các kiểu được biết đến tại thời gian biên dịch, trình biên dịch có thểphát hiện một loạt các lỗi kiểu (ví dụ, một nỗ lực để nhân hai bi ếnBoolean). Ngôn ngữ bậc cao trước Pascal thường bị giới hạn khái niệm vềcác kiểu dữ liệu vì chúng bị giới hạn bởi phần cứng của máy (s ố nguyên,số thực, gấp đôi chính xác số nguyên và số thực, và ngăn chặn các vị trítiếp giáp nhau). Hai đối tượng đã có kiểu khác nhau nếu có các đoạn mãkhác nhau thao tác chúng. Pascal và các ngôn ngữ sau đó đã lấy một cáchtiếp cận khá khác nhau, dựa trên khái niệm của các kiểu dữ liệu trừutượng. Trong Pascal, các lập trình viên có thể tạo ra hai đối t ượng có ki ểukhác nhau ngay cả khi chúng có cùng một cách biểu diễn và sử d ụng cùngmột đoạn mã. Các quy tắc về kiểu đã chuyển từ tập trung vào những gìcó ý nghĩa vào các máy tính để có ý nghĩa với các lập trình viên.Khái niệm về kiểu dữ liệu : kiểu dữ liệu không chỉ là một tập hợp cácđối tượng dữ liệu mà còn là một tập hợp các phép toán có thể thao tác trêncác đối tượng dữ liệu này. Ngày nay, khi ta nói đến kiểu dữ liệu thực chất là nói đến kiểu dữliệu trừu tượng. Kiểu dữ liệu trừu tượng là một tập hợp các đối tượngdữ liệu và tập hợp các phép toán, thao tác trên các đối tượng dữ liệu đó.. Kiểu dữ liệu trừu tượng có thể được định nghĩa bởi ngôn ngữ hoặcdo người lập trình định nghĩa. Ví dụ: kiểu dữ liệu trừu tượng do ngôn ngữ định nghĩa: kiểu integertrong pascal: tập các đối tượng dữ liệu là tập các số nguyên từ -32768 đến32767; tập hợp các phép toán bao gồm các phép toán một ngôi (+,-), cácphép toán 2 ngôi (+, -,*, div, mod), các phép toán quan hệ ( Nó có thể bỏ qua ràng buộc xác định kiểu cho đến khi ch ạychương trình, dẫn tới ngôn ngữ có kiểu động. Biên dịch các ngôn ngữ(như SNOBOL, APL, và awk) thường chỉ gán các ki ểu t ại th ời gian ch ạy.Những ngôn ngữ này không khai báo kiểu; định danh kiểu có th ể tự đ ộngthay đổi. Đây điểm khác nhau của ngôn ngữ bậc cao với các ngôn ng ữ cóít kiểu, như Bliss hay BCPL, mà chỉ có một loại kiểu dữ liệu, ô hoặc từ. Bỏ qua ràng buộc về định danh một kiểu để có ý nghĩa với chiphí hiệu quả,! trong khi chạy mã chương trình phải xác định kiểu củabiến để thao tác giá trị thích hợp. Ví dụ, trong ngôn ngữ kiểu động, cácmảng không cần phải đồng nhất. Như một ví dụ về mất hiệu quả, ngaycả trong ngôn ngữ có kiểu tĩnh, các giá trị của các kiểu lựa chọn yêu c ầumột số thời gian chạy kiểm tra để đảm bảo rằng các biến thức dự kiếnsẽ có mặt 2. Kiểu mạnh Một trong những thành tựu chủ yếu của Pascal là sự nhấn mạnh nódựa vào định nghĩa các kiểu dữ liệu. Nó đã xem việc tạo các kiểu của cáclập t ...

Tài liệu được xem nhiều: