Fortran (hay FORTRAN) là một ngôn ngữ lập trình biên dịch, tĩnh, kiểu mệnh lệnh được phát triển từ thập niên 1950 và vẫn được dùng nhiều trong tính toán khoa học hay phương pháp số cho đến hơn nửa thế kỷ sau đó. Tên gọi này ghép lại từ tiếng Anh _Formula Translator/Translation_ nghĩa là dịch công thức. Các phiên bản đầu có tên chính thức là FORTRAN, nhưng chữ hoa được chuyển sang chữ thường từ phiên bản Fortran 90. Tiêu chuẩn quốc tế cho tên gọi này ngày nay là "Fortran".
Fortran được phát triển ban đầu như là một ngôn ngữ thủ tục. Tuy nhiên các phiên bản mới của Fortran (từ Fortran 90) đã có các tính năng hỗ trợ lập trình hướng đối tượng.
Lịch sử
Một số phiên bản Fortran tiêu biểu:
- Fortran IV
- Fortran 77
- Fortran 90
- Fortran 95
- Fortran 2003
Cú pháp
Các phiên bản cũ hơn cho đến Fortran 77 có sử dụng định dạng theo cột (fixed column) theo quy định:
- Cột thứ 7 đến 72 dành cho các câu lệnh
- Cột thứ 1 đến 5 dành cho nhãn lệnh. Nhãn lệnh là những số nguyên đứng đầu dòng lệnh, và trong Fortran không nhất thiết phải theo thứ tự tăng dần.
- Cột thứ 6 dành cho ký tự nối dòng (nếu cần thiết).
Các phiên bản mới hơn (từ Fortran 90 trở đi) cho phép dùng định dạng tự do (free-form), không có ràng buộc về vị trí các cột trong chương trình. Dưới đây sẽ trình bày một số ví dụ cú pháp theo định dạng tự do này.
Lệnh gán
Dạng của lệnh gán tương tự như ngôn ngữ lập trình BASIC:
! Tên_biến = Giá_trị
A = 5
LoiChao = "Hello"
Lệnh gọi chương trình con
Các chương trình con được gọi bằng lệnh CALL
:
! CALL tenCTC tham_so1, tham_so2,...
Các cấu trúc
;Rẽ nhánh:
IF T > 1.0 THEN
W = 23.7 * T
ELSE
W = 23.7 * (T ** 0.75)
END IF
;Lặp:
DO I = 1, N
B(I) = 2.8 * (I - 0.3)
END DO
Ví dụ
Chương trình "Hello world"
Chương trình "Hello world" có thể chạy được sau khi dịch bằng bất cứ trình dịch nào kể từ Fortran 90 trở đi.
program helloworld
print*,"Hello world"
end program helloworld
Chương trình tìm diện tích hình trụ
Chương trình này, tính diện tích của hình trụ, chạy khi được dịch bởi bất cứ trình dịch nào kể từ Fortran 90 trở đi. Các chữ đứng sau dấu !
trên cùng dòng sẽ không được dịch, và coi như chú thích của người viết chương trình, để giúp người đọc dễ hiểu hơn.
program HinhTru
! Tinh dien tich Hinh tru.
!
! Khai bao bien.
implicit none ! Yeu cau moi bien can duoc khai bao -- danh cho Fortran 90.
integer:: Loi
real:: BanKinh,ChieuCao,DienTich
real, parameter:: Pi = 3.14159
do
! Nhac nguoi dung nhap Ban kinh va Chieu cao.
write (*,*) "Nhap Ban kinh va Chieu cao, nhan 't' de thoat."
read (*,*,iostat=Loi) BanKinh,ChieuCao
!
! Neu khong nhap duoc, thoat.
if (Loi /= 0) stop "thoat"
!
! Tinh dien tich. Ky hieu ** nghia la "luy thua".
DienTich = 2*Pi*(BanKinh**2 + BanKinh*ChieuCao)
!
! Viet (BanKinh, ChieuCao) va (DienTich) ra man hinh.
write (*,"(1x,'BanKinh=',f6.2,5x,'ChieuCao=',f6.2,5x,'DienTich=',f6.2)") BanKinh,ChieuCao,DienTich
end do
end program HinhTru
Chú ý: câu lệnh
write (*,"(1x,'BanKinh=',f6.2,5x,'ChieuCao=',f6.2,5x,'DienTich=',f6.2)") BanKinh,ChieuCao,DienTich
có sử dụng khai báo định dạng trong Fortran. Có thể giải thích sơ lược như sau:
1x
nghĩa là một ký tự trống. Số ký tự trống cần in ra đi trước chữx
.
f6.2
tương ứng với số thực có 6 chữ số, trong đó 2 chữ số trong phần thập phân.
Kiểu định dạng chuỗi này của riêng Fortran, nó rất khác so với chuẩn định dạng printf
của ngôn ngữ lập trình C vốn được sử dụng rộng rãi.
👁️
0 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Fortran** (hay **FORTRAN**) là một ngôn ngữ lập trình biên dịch, tĩnh, kiểu mệnh lệnh được phát triển từ thập niên 1950 và vẫn được dùng nhiều trong tính toán khoa học hay phương pháp
**9548 Fortran** (1985 CN) là một tiểu hành tinh vành đai chính được phát hiện ngày 13 tháng 2 năm 1985 bởi Spacewatch ở Kitt Peak.
**F** là một ngôn ngữ lập trình số mô đun, biên dịch và số, được thiết kế cho lập trình khoa học và tính toán khoa học. F được phát triển như một phiển bản
thumb|Minh họa mã nguồn [[Java (programming language)|Java với comment **mở đầu** được biểu thị bằng màu **đỏ** và comment **nội dòng** bằng màu **lục**. **Mã chương trình** là bằng màu **lam**.]]Trong lập
**Phần mềm xử lý bảng tính** hay **Bảng tính** (tiếng Anh**: Spreadsheet**) là một phần mềm ứng dụng dùng để tổ chức, phân tích và lưu trữ dữ liệu thông qua các bảng tính (gọi
thumb|right|Sơ đồ luồng vòng lặp Do While Trong hầu hết ngôn ngữ lập trình máy tính, một **vòng lặp do while** (tiếng Anh: _do while loop_) là một câu lệnh luồng điều khiển để thực
**MATLAB** là phần mềm cung cấp môi trường tính toán số và lập trình, do công ty MathWorks thiết kế. MATLAB cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay
phải|nhỏ|277x277px| Minh họa của một ứng dụng sử dụng libvorbisfile để phát file Ogg Vorbis Trong khoa học máy tính, **thư viện** là tập hợp các tài nguyên không biến động được sử dụng bởi
phải|Biểu đồ hoạt động của một trình biên dịch lý tưởng. **Trình biên dịch** () hay **phần mềm biên dịch** là một chương trình máy tính làm công việc dịch một chuỗi các câu lệnh
**Bộ trình dịch GNU** ( - thường được viết tắt thành **GCC**) là một tập hợp các trình biên dịch được thiết kế cho nhiều ngôn ngữ lập trình khác nhau. GCC là một thành
**ALGOL** (viết tắt từ **ALGO**rithmic **L**anguage) là một họ các ngôn ngữ lập trình máy tính bắt buộc được phát triển vào năm 1958. ALGOL ảnh hưởng lớn đến nhiều ngôn ngữ khác và là
nhỏ|Cbmain Trong khoa học máy tính, một **ngôn ngữ lập trình bậc cao** (tiếng Anh: _high-level programming language_) là một ngôn ngữ lập trình có sự trừu tượng hóa mạnh mẽ khỏi các chi tiết
John Warner Backus (3 tháng 12 năm 1924 - 17 tháng 3 năm 2007) là một nhà khoa học máy tính người Mỹ. Ông đã chỉ đạo nhóm phát minh và triển khai FORTRAN, ngôn
**Pascal** là một ngôn ngữ lập trình cho máy tính thuộc dạng mệnh lệnh và thủ tục, được Niklaus Wirth phát triển vào năm 1970. Pascal là ngôn ngữ lập trình đặc biệt thích hợp
**Lập trình hướng đối tượng** () là một mẫu hình lập trình dựa trên khái niệm "đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu trong các trường, thường được gọi là
**C** là một ngôn ngữ mệnh lệnh được phát triển từ đầu thập niên 1970 bởi Dennis Ritchie để dùng trong hệ điều hành UNIX. Từ đó, ngôn ngữ này đã lan rộng ra nhiều
Họ máy tính lớn **_Minsk_** được phát triển và sản xuất tại Byelorussia từ năm 1959 đến 1975. Tiến trình phát triển của nó sau này đã được ngừng lại để giải quyết vấn đề
Trong lập trình máy tính, **Hợp ngữ** (hay **assembly**) thường được viết tắt là **asm** là bất kỳ ngôn ngữ lập trình cấp thấp nào có sự tương ứng rất mạnh giữa các tập lệnh
thumb|**[[Phép tính lambda** là một hệ thống hình thức để định nghĩa hàm, ứng dụng hàm và đệ quy được Alonzo Church đề xuất vào những năm 193x.]] **Lý thuyết ngôn ngữ lập trình** (thường
Trong tin học, **dấu phẩy động** được dùng để chỉ một hệ thống biểu diễn số mà trong đó sử dụng một chuỗi chữ số (hay bit) để biểu diễn một số hữu tỉ. Thuật
**Cleve Barry Moler** là một nhà toán học và lập trình viên máy tính chuyên ngành phân tích số. Nữa cuối thập niên 1970, ông là một trong những tác giả của thư viện LINPACK
Nguồn gốc của video game nằm trong quá trình phát triển với ống phóng tia âm cực -dựa trên hệ thống phòng thủ tên lửa vào cuối những năm 1940. Các chương trình này sau
**Mô hình tài chính **là nhiệm vụ xây dựng một mô hình trừu tượng (một mô hình) về tình hình tài chính trong thế giới thực. Đây là một mô hình toán học được thiết
Đây là danh sách các ngôn ngữ lập trình đáng chú ý, được nhóm theo loại. Vì không có sơ đồ phân loại bao quát cho các ngôn ngữ lập trình, nên trong nhiều trường
Trong khoa học máy tính, **luồng điều khiển** (tiếng Anh: _control flow_ hay _flow of control_) là thứ tự các câu lệnh, tập lệnh hay lời gọi hàm riêng biệt của một chương trình mệnh
**Định dạng dấu phẩy động độ chính xác đơn** (đôi khi còn gọi là **FP32** hoặc **float32**) là một định dạng số máy tính, thường chiếm 32 bit trong bộ nhớ máy tính; nó có
nhỏ|Mã spaghetti **Mã spaghetti** (Spaghetti code) là một cụm từ mang tính cho mã nguồn có tính phi cấu trúc và khó bảo trì. Mã spaghetti có thể được gây ra bởi vài yếu tố,
**NetBeans** là một môi trường phát triển tích hợp (IDE) cho Java. NetBeans cho phép các ứng dụng được phát triển từ một tập hợp các thành phần phần mềm được gọi là _modules_. NetBeans
right|thumb|Một ma trận thưa thớt thu được khi giải một [[phương pháp phần tử hữu hạn trong 2 chiều. Các phần tử không có giá trị bằng 0 được hiển thị bằng màu đen.]] Trong
Thuật ngữ **foobar** (), **foo**, **bar**, **baz** và các thuật ngữ khác được sử dụng làm biến siêu cú pháp và tên giữ chỗ trong lập trình máy tính hoặc tài liệu liên quan đến
**Cú pháp ngôn ngữ (lập trình) C** là tập hợp các quy tắc nhằm xác định cách thức để viết và dịch trong ngôn ngữ lập trình C. :Thí dụ:
// Dòng này sẽ
**William Henry** **Gates III** (sinh ngày 28 tháng 10 năm 1955), thường được biết tới với tên **Bill Gates**, là một nam doanh nhân, nhà từ thiện kiêm tác giả người Mỹ. Ông được biết
nhỏ|Hình ảnh sử dụng các hiệu ứng của CAD **Computer-aided design**, viết tắt là CAD trong tiếng Anh (thiết kế được sự hỗ trợ của máy tính), được dùng rộng rãi trong các thiết bị
nhỏ|[[VirtualBox]] Trong khoa học máy tính, một **máy ảo** (**VM**) là một trình giả lập một hệ thống máy tính. Máy ảo dựa trên kiến trúc máy tính và cung cấp chức năng của máy
**Unix** (; được đăng ký nhãn hiệu là **UNIX**) là một họ hệ điều hành máy tính đa nhiệm, đa người dùng được viết vào những năm 1960 và 1970 do một số nhân viên
**Thư viện chuẩn C** ngày nay là một tập hợp của các tập tin tiêu đề và thư viện các thủ tục được tiêu chuẩn hóa dùng để thiết lập các pháp toán tổng quát,
Trong khoa học máy tính, **reflection** (có thể dịch là "phản tỉnh", "tự xét mình") là việc tiến trình có khả năng xem xét, nội quan, và sửa đổi kết cấu cùng với hành trạng
phải|nhỏ|402x402px|[[Mã nguồn của một chương trình máy tính đơn giản được viết bằng ngôn ngữ lập trình C. Khi được biên dịch và chạy, nó sẽ cho kết quả "Hello, world!".]] **Ngôn ngữ lập trình**
Ngày **20 tháng 9** là ngày thứ 263 (264 trong năm nhuận) trong lịch Gregory. Còn 102 ngày trong năm. ## Sự kiện * 471 – Hiến Văn Đế Thác Bạt Hoằng nhượng lại hoàng
thumb|Một ví dụ về lấy dữ liệu đầu ra từ truy vấn cơ sở dữ liệu SQL. **Cơ sở dữ liệu** () là một tập hợp các dữ liệu có tổ chức liên quan đến
**Lập trình máy tính** hay **lập chương trình máy tính,** thường gọi tắt là **lập trình** (, hay _programming_), là việc lập ra chương trình làm việc cho máy có bộ xử lý, nói riêng
Môi trường phát triển tích hợp Eclipse phiên bản 3.1.2 trên nền Windows XP. **Eclipse** là một môi trường phát triển tích hợp dùng cho lập trình máy tính., Nó chứa một không gian làm
**BASIC** là một ngôn ngữ lập trình bậc cao, đơn giản, dễ sử dụng, nhằm đơn giản hóa quá trình lập trình. BASIC được phát minh vào năm 1963 bởi các giáo sư John George
**IDL**, viết tắt của _Interactive Data Language_ (ngôn ngữ tương tác dữ liệu) là một ngôn ngữ lập trình thiết kế dành riêng cho mục đích xử lý các số liệu trong khoa học kĩ
**Địa thống kê** là một nhánh của địa chất học, liên quan đến việc phân tích các quá trình khai thác mỏ bằng các mô hình toán học. Địa thống kê liên quan đến việc
**CUDA** (_Compute Unified Device Architecture_ - Kiến trúc thiết bị tính toán hợp nhất) là một kiến trúc tính toán song song do NVIDIA phát triển. Nói một cách ngắn gọn, CUDA là động cơ
**ETABS** là một phần mềm thiết kế nhà cao tầng của hãng CSI. Vào những thập niên 90, khi máy tính để bàn chưa xuất hiện, một số nhà khoa học ở Đại học US
**Swan**, hay **SWAN** (tên đầy đủ _Simulating WAve Nearshore_ - mô phỏng sóng vùng ven bờ) là mô hình toán được phát triển bởi trường Đại học công nghệ Delft. Mô hình nhằm mục đích
trong Linux. Thuộc tính của từng đối tượng trên mạng lưới thủy lực đều có thể được lựa chọn thuận tiện với các hộp thoại.]] **SWMM**, tên đầy đủ là **Storm Water Management Model** là
Đây là danh sách **Phần mềm mã nguồn mở**: là phần mềm máy tính được cấp phép giấy phép mã nguồn mở. Bài viết này không có tham vọng liệt kê tất cả những phần