Cấu trúc điều khiển ban đầu của Fortran không đủ như thế nào?


8

Trong lớp Khái niệm ngôn ngữ lập trình của tôi, nó đã được đề cập khi thông qua rằng các cấu trúc điều khiển ban đầu của Fortran là không đủ. Nó đã được ám chỉ rằng chúng quá giống với hướng dẫn máy cho IBM 704. Đây có phải là trường hợp không? Điều gì chính xác làm cho họ không đủ?


Số học IF của FORTRAN về cơ bản là tối ưu hóa hoạt động bỏ qua của IBM 704.
yannis

Câu trả lời:


10

Vâng, hãy xem các phiên bản đầu tiên của Fortran đã IF GOTODO.

Có một số biến thể trên IF và GOTO bao gồm GOTO được gán và GOTO được tính toán giống như một tuyên bố CASE.

Vì vậy, ngoài các vòng lặp DO, tất cả các câu lệnh điều khiển là các biến thể của IF và GOTO liên quan đến các số câu lệnh được mã hóa cứng. Kết quả là bún nhiều hơn mì spaghetti.

Bản thân vòng lặp DO đã có vấn đề ở chỗ nó hoàn toàn "làm cho đến khi" với bài kiểm tra ở dưới cùng của vòng lặp, vì vậy không có cách nào để bỏ qua lần lặp đầu tiên ngoài việc lặp lại với "IF (cond) GOTO 9999" khác .

Vì vậy, vì hầu hết các cấu trúc điều khiển là "vải lanh GOTO", bất kỳ thay đổi đáng kể nào đối với mã sẽ liên quan đến nhiều thay đổi dễ bị lỗi đối với số dòng đích.

Vòng lặp DO cần được bổ sung bằng GOTO để biến nó thành DO WHILE.

Fotrans sớm nhất có "GOTO" của mẫu.

IF (VAR) 100,200,300

Điều đó có nghĩa là nếu VAR là <0 thì chuyển đến câu lệnh 100. If = 0 thì câu lệnh 200, nếu> 0 thì câu lệnh 300.

Nhìn chung, đó không phải là một nỗ lực quá tệ. Thực tế là bạn có thể viết các công thức trông giống như những gì giáo sư bạn đã viết trên bảng đen là tính năng giết người của FORTRAN, dòng chương trình phải chờ vài năm để bắt kịp.


-1

Điều tồi tệ về FORTRAN IV là tất cả các "cấu trúc" điều khiển (bao gồm cả các vòng lặp) phụ thuộc vào nhãn. Vì vậy, họ cung cấp kiểm soát phi cấu trúc. Họ đã quá mạnh mẽ. Làm thế nào về, ví dụ, phân nhánh vào một nhãn trong một vòng lặp và sau đó, sau đó, phân nhánh lại ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.