Cách lập trình trong Fortran (có Hình ảnh)

Mục lục:

Cách lập trình trong Fortran (có Hình ảnh)
Cách lập trình trong Fortran (có Hình ảnh)

Video: Cách lập trình trong Fortran (có Hình ảnh)

Video: Cách lập trình trong Fortran (có Hình ảnh)
Video: Evernote: Hướng dẫn sử dụng và áp dụng Evernote để tạo ghi chú 2024, Tháng tư
Anonim

Nhiều người coi Fortran là một ngôn ngữ lập trình cổ xưa và "chết". Tuy nhiên, hầu hết mã khoa học và kỹ thuật được viết bằng Fortran. Do đó, lập trình trong F77 và F90 vẫn là một kỹ năng cần thiết đối với hầu hết các lập trình viên kỹ thuật. Hơn nữa, các tiêu chuẩn Fortran mới nhất (2003, 2008, 2015) cho phép lập trình viên viết mã hiệu quả cao với nỗ lực tối thiểu, đồng thời sử dụng tất cả các tính năng của ngôn ngữ hiện đại, chẳng hạn như OOP (lập trình hướng đối tượng). FORTRAN là từ viết tắt của "FORmula TRANslation", và phù hợp nhất cho các ứng dụng toán học và số hơn là các ứng dụng đồ họa hoặc cơ sở dữ liệu. Hầu hết các mã fortran lấy đầu vào văn bản từ tệp hoặc dòng lệnh chứ không phải từ menu hoặc giao diện GUI.

Các bước

Phần 1/4: Viết và Biên soạn một chương trình đơn giản

Chương trình xin chào thế giới Fortran viết đã sửa chữa
Chương trình xin chào thế giới Fortran viết đã sửa chữa

Bước 1. Viết chương trình "Hello World"

Đây thường là chương trình đầu tiên viết bằng bất kỳ ngôn ngữ nào và nó chỉ in dòng chữ "Hello world" ra màn hình. Viết mã sau trong bất kỳ trình soạn thảo văn bản nào và lưu nó dưới dạng helloworld.f. Chú ý rằng phải có chính xác 6 khoảng trắng phía trước mỗi dòng.

chương trình helloworld ẩn không có ký tự nào * 13 hello_string hello_string = "Hello, world!" write (*, *) hello_string end chương trình helloworld

Mẹo: Khoảng trắng chỉ cần thiết trong các phiên bản Fortran lên đến FORTRAN 77. Nếu bạn đang sử dụng phiên bản mới hơn, bạn có thể bỏ khoảng trắng. Biên dịch chương trình từ phiên bản mới hơn với f95, không phải f77; sử dụng.f95 làm phần mở rộng tệp thay vì chỉ.f.

Bước 2. Biên dịch chương trình

Để thực hiện việc này, hãy nhập f77 helloworld.f vào dòng lệnh. Nếu điều này xảy ra lỗi, có thể bạn chưa cài đặt trình biên dịch Fortran như gfortran chẳng hạn.

Fortran xin chào thế giới biên dịch run
Fortran xin chào thế giới biên dịch run

Bước 3. Chạy chương trình của bạn

Trình biên dịch đã tạo ra một tệp có tên là a.out. Chạy tệp này bằng cách nhập./a.out.

Bước 4. Hiểu những gì bạn vừa viết

  • chương trình helloworld

    cho biết sự bắt đầu của chương trình "helloworld". Tương tự,

    kết thúc chương trình helloworld

  • cho biết sự kết thúc của nó.
  • Theo mặc định, nếu bạn không khai báo kiểu biến, Fortran sẽ coi một biến có tên bắt đầu bằng chữ cái từ i đến n là số nguyên và tất cả các biến khác là số thực. Nó được khuyến khích sử dụng

    ngầm hiểu là không có

  • nếu bạn không cần hành vi đó.
  • ký tự * 13 hello_string

  • khai báo một mảng các ký tự được gọi là hello_string.
  • hello_string = "Xin chào, thế giới!"

  • chỉ định giá trị "Hello, world!" vào mảng đã khai báo. Không giống như trong các ngôn ngữ khác như C, điều này không thể được thực hiện trên cùng một dòng với khai báo mảng.
  • ghi (*, *) hello_string

  • in giá trị của hello_string ra đầu ra tiêu chuẩn. Dấu * đầu tiên có nghĩa là ghi vào đầu ra tiêu chuẩn, trái ngược với một số tệp. Dấu * thứ hai có nghĩa là không sử dụng bất kỳ định dạng đặc biệt nào.
Fortran comments
Fortran comments

Bước 5. Thêm nhận xét

Điều này không cần thiết trong một chương trình đơn giản như vậy, nhưng nó sẽ hữu ích khi bạn viết một cái gì đó phức tạp hơn, vì vậy bạn nên biết cách thêm chúng. Có hai cách để thêm nhận xét.

  • Để thêm nhận xét có toàn bộ dòng, hãy viết c trực tiếp vào một dòng mới, không có 6 dấu cách. Sau đó, viết bình luận của bạn. Bạn nên để một khoảng trống giữa chữ c và bình luận của bạn để dễ đọc hơn, nhưng điều này không bắt buộc. Lưu ý rằng bạn phải sử dụng a! thay vì chữ c trong Fortran 95 và mới hơn.
  • Để thêm nhận xét trong cùng dòng với mã, hãy thêm dấu! nơi bạn muốn bình luận của bạn bắt đầu. Một lần nữa, không cần phải có khoảng trắng, nhưng cải thiện khả năng đọc.

Phần 2/4: Sử dụng cấu trúc đầu vào và nếu-cấu trúc

Các kiểu dữ liệu Fortran
Các kiểu dữ liệu Fortran

Bước 1. Hiểu các kiểu dữ liệu khác nhau

  • INTEGER được sử dụng cho các số nguyên, như 1, 3 hoặc -3.
  • REAL cũng có thể chứa một số không phải là toàn bộ, như 2,5.
  • COMPLEX được sử dụng để lưu trữ số phức. Số đầu tiên là phần thực và số thứ hai là phần ảo.
  • CHARACTER được sử dụng cho các ký tự, như chữ cái hoặc dấu câu.
  • LOGICAL có thể là.true. hoặc.false.. Đây giống như kiểu boolean trong các ngôn ngữ lập trình khác.

Bước 2. Lấy thông tin đầu vào của người dùng

Trong chương trình "Hello world" mà bạn đã viết trước đây, việc nhận được thông tin đầu vào của người dùng sẽ là vô ích. Vì vậy, hãy mở một tệp mới và đặt tên là compnum.f. Khi bạn hoàn thành, nó sẽ cho người dùng biết liệu số họ đã nhập là số dương, âm hay bằng 0.

  • Nhập compnum chương trình dòng và compnum chương trình kết thúc.
  • Sau đó, khai báo một biến kiểu REAL. Đảm bảo rằng phần khai báo của bạn nằm giữa phần đầu và phần cuối của chương trình.
  • Giải thích cho người dùng những gì họ phải làm. Viết một số văn bản với chức năng viết.
  • Đọc đầu vào của người dùng vào biến mà bạn đã khai báo với hàm đọc.

chương trình compnum thực r ghi (*, *) "Nhập một số thực:" đọc (*, *) r kết thúc chương trình

Fortran nếu xây dựng
Fortran nếu xây dựng

Bước 3. Xử lý đầu vào của người dùng bằng cấu trúc if

Đặt nó giữa

đọc (*, *) r

kết thúc chương trình

  • So sánh được thực hiện với.gt. (lớn hơn),.lt. (nhỏ hơn) và.eq. (bằng) ở Fortran.
  • Fortran hỗ trợ if, else if và else
  • Việc xây dựng if trong Fortran luôn kết thúc bằng kết thúc if.

if (r.gt. 0) then write (*, *) "Đó là số dương." else if (r.lt. 0) then write (*, *) "Số đó là số âm." else write (*, *) "Số đó là 0." kết thúc nếu

Mẹo: Bạn không phải thụt lề mã bên trong cấu trúc if với nhiều khoảng trắng hơn, nhưng nó cải thiện khả năng đọc.

Chương trình kiểm tra số Fortran test
Chương trình kiểm tra số Fortran test

Bước 4. Biên dịch và chạy chương trình của bạn

Nhập một số số để kiểm tra nó. Nếu bạn nhập một chữ cái, nó sẽ phát sinh lỗi, nhưng điều đó không sao vì chương trình không kiểm tra xem đầu vào là một chữ cái, một số hay cái gì khác.

Phần 3/4: Sử dụng vòng lặp và mảng

Bước 1. Mở một tệp mới

Vì khái niệm này khác, bạn sẽ phải viết lại một chương trình mới. Đặt tên tệp là addmany.f. Chèn chương trình tương ứng và câu lệnh kết thúc chương trình, cũng như không có câu lệnh ngầm nào. Khi bạn hoàn tất, chương trình này sẽ đọc 10 số và in ra tổng của chúng.

Bước 2. Khai báo một mảng có độ dài 10

Đây là nơi bạn sẽ lưu trữ các con số. Vì bạn có thể muốn tổng các số thực, bạn nên khai báo mảng là thực. Bạn khai báo một mảng như vậy với

số thực (50)

(số là tên của mảng, không phải là biểu thức).

Bước 3. Khai báo một số biến

Khai báo numSum là một số thực. Bạn sẽ sử dụng nó để lưu trữ tổng sau này, nhưng vì tổng đã được lấy bởi một biểu thức Fortran, bạn phải sử dụng một tên như numSum. Đặt nó thành 0. Khai báo i là một số nguyên và chưa gán cho nó bất kỳ giá trị nào. Điều đó sẽ được thực hiện trong vòng lặp do-loop.

Bước 4. Tạo vòng lặp do-loop

Tương đương với điều đó trong các ngôn ngữ lập trình khác sẽ là vòng lặp for.

  • Vòng lặp do-loop luôn bắt đầu bằng do.
  • Trên cùng dòng với do, được ngăn cách với nó bởi một khoảng trắng, là nhãn mà chương trình sẽ chuyển đến khi nó kết thúc. Bây giờ, chỉ cần viết số 1, bạn sẽ đặt nhãn sau.
  • Sau đó, một lần nữa chỉ được phân tách bằng dấu cách, hãy nhập

    i = 1, 10

    . Điều này sẽ làm cho biến i, mà bạn đã khai báo trước vòng lặp, đi từ 1 đến 10 trong các bước của 1. Các bước không được đề cập trong biểu thức này, vì vậy Fortran sử dụng giá trị mặc định là 1. Bạn cũng có thể đã viết

    i = 1, 10, 1

  • Đặt một số mã bên trong vòng lặp (thụt lề với khoảng trắng để dễ đọc hơn). Đối với chương trình này, bạn nên tăng biến numSum với phần tử thứ i của các số mảng. Điều này được thực hiện với biểu thức

    numSum = numSum + number (i)

  • Kết thúc vòng lặp bằng câu lệnh continue có nhãn. Chỉ gõ 4 dấu cách. Sau đó, gõ 1. Đó là nhãn mà bạn đã yêu cầu vòng lặp do-loop chuyển đến sau khi nó kết thúc. Sau đó, nhập dấu cách và tiếp tục. Biểu thức continue không làm gì cả, nhưng nó cho một vị trí tốt để đặt nhãn, cũng như cho thấy rằng vòng lặp do-loop đã kết thúc.

Vòng lặp do của bạn bây giờ sẽ giống như sau:

làm 1 i = 1, 10 numSum = numSum + số (i) 1 tiếp tục

Mẹo: Trong Fortran 95 và mới hơn, bạn không cần sử dụng nhãn. Chỉ cần không đặt một vào câu lệnh do và kết thúc vòng lặp bằng "end do" thay vì "continue".

Fortran do loop code
Fortran do loop code

Bước 5. In numSum

Ngoài ra, sẽ rất hợp lý nếu đưa ra một số ngữ cảnh, ví dụ: "Tổng các số của bạn là:". Sử dụng chức năng ghi cho cả hai. Toàn bộ mã của bạn bây giờ sẽ trông như sau:

chương trình addmany ngầm định không có số thực (10) số nguyên numSum thực i numSum = 0 write (*, *) "Nhập 10 số:" đọc (*, *) các số thực hiện 1 i = 1, 10 numSum = numSum + số (i) 1 tiếp tục viết (*, *) "Tổng của chúng là:" write (*, *) numSum end chương trình addmany

Fortran thêm số mã test
Fortran thêm số mã test

Bước 6. Biên dịch và chạy mã của bạn

Đừng quên kiểm tra nó. Bạn có thể nhấn ↵ Enter sau mỗi số bạn nhập hoặc nhập nhiều số trên cùng một dòng và phân tách chúng bằng dấu cách.

Phần 4/4: Hiểu các khái niệm nâng cao

Chương trình trong Fortran Bước 13
Chương trình trong Fortran Bước 13

Bước 1. Có một ý tưởng tốt về những gì chương trình của bạn sẽ làm

Hãy nghĩ về loại dữ liệu nào cần thiết làm đầu vào, cách cấu trúc đầu ra và bao gồm một số đầu ra trung gian để bạn có thể theo dõi tiến trình tính toán của mình. Điều này sẽ rất hữu ích nếu bạn biết rằng tính toán của bạn sẽ chạy trong một thời gian dài hoặc liên quan đến nhiều bước phức tạp.

Trang web tham khảo Fortran screenshot
Trang web tham khảo Fortran screenshot

Bước 2. Tìm một tài liệu tham khảo tốt về Fortran

Fortran có nhiều chức năng hơn được giải thích trong bài viết này và chúng có thể hữu ích cho chương trình bạn muốn viết. Tham chiếu liệt kê tất cả các chức năng mà một ngôn ngữ lập trình có. Đây là một cho Fortran 77 và đây là một cho Fortran 90/95.

Các chương trình con Fortran example
Các chương trình con Fortran example

Bước 3. Tìm hiểu về các chương trình con và hàm

Chuỗi định dạng Fortran example
Chuỗi định dạng Fortran example

Bước 4. Tìm hiểu cách đọc và ghi từ / vào tệp

Đồng thời tìm hiểu cách định dạng đầu vào / đầu ra của bạn.

Ví dụ fortran hiện đại screenshot
Ví dụ fortran hiện đại screenshot

Bước 5. Tìm hiểu về các tính năng mới của Fortran 90/95 và mới hơn

Bỏ qua bước này nếu bạn biết rằng bạn sẽ chỉ viết / duy trì mã Fortran 77.

Hãy nhớ rằng Fortran 90 đã giới thiệu mã nguồn "Free Form", cho phép viết mã không có khoảng trắng và không có giới hạn 72 ký tự

Sách Fortran trực tuyến screenshot
Sách Fortran trực tuyến screenshot

Bước 6. Đọc hoặc tra cứu một số sách về Lập trình Khoa học

Ví dụ, cuốn sách "Công thức số ở Fortran" vừa là một văn bản hay về các thuật toán lập trình khoa học vừa là một giới thiệu hay về cách ghép các mã lại với nhau. Các phiên bản gần đây hơn bao gồm các chương về cách lập trình trong môi trường ngôn ngữ hỗn hợp và lập trình song song. Một ví dụ khác là "Modern Fortran in Practice" được viết bởi Arjen Markus. Cuốn sách cung cấp một cái nhìn sâu sắc về cách viết các chương trình Fortran theo phong cách thế kỷ XXI phù hợp với các tiêu chuẩn Fortran mới nhất.

Chương trình biên dịch Fortran trên nhiều tệp
Chương trình biên dịch Fortran trên nhiều tệp

Bước 7. Tìm hiểu cách biên dịch một chương trình trải rộng trên nhiều tệp

Giả sử rằng chương trình Fortran của bạn trải rộng trên các tệp main.f và morestuff.f, và bạn muốn tệp nhị phân kết quả được đặt tên là allstuff. Sau đó, bạn sẽ phải viết các lệnh sau vào dòng lệnh:

f77 -c morestuff.f f77 -c main.f f77 -c morestuff.f f77 -o allstuff main.o morestuff.f

Sau đó, chạy tệp bằng cách nhập./allstuff.

Mẹo: Điều này hoạt động theo cùng một cách với các phiên bản Fortran mới hơn. Chỉ cần thay thế.f bằng phần mở rộng chính xác và f77 bằng phiên bản trình biên dịch chính xác.

Bước 8. Sử dụng tối ưu hóa mà trình biên dịch của bạn cung cấp

Hầu hết các trình biên dịch đều bao gồm các thuật toán tối ưu hóa để cải thiện hiệu quả của mã của bạn. Chúng thường được bật bằng cách bao gồm cờ -O, -O2 hoặc -O3 khi biên dịch (một lần nữa tùy thuộc vào phiên bản fortran của bạn).

  • Nói chung, mức thấp nhất -O hoặc -O2 là tốt nhất. Hãy lưu ý rằng việc sử dụng tùy chọn tối ưu hóa tích cực hơn có thể gây ra lỗi trong các mã phức tạp và thậm chí có thể làm chậm mọi thứ! Kiểm tra mã của bạn.

Lời khuyên

  • Bắt đầu với các chương trình nhỏ. Khi bạn đang tạo mã của riêng mình, hãy cố gắng xác định phần quan trọng nhất của vấn đề - đó là đầu vào dữ liệu hay việc gọi các hàm, cấu trúc của vòng lặp (đây là một số ví dụ rất cơ bản) và bắt đầu từ đó. Sau đó, xây dựng dựa trên đó theo từng bước nhỏ.
  • Fortran không phân biệt chữ hoa chữ thường. Ví dụ, bạn có thể khai báo một biến "real Num" và viết "num = 1" ở dòng tiếp theo để gán giá trị cho nó. Nhưng đó là một phong cách tồi, vì vậy hãy tránh nó. Quan trọng hơn, Fortran cũng không quan tâm đến trường hợp của các hàm và câu lệnh. Việc viết các hàm và câu lệnh bằng UPPERCASE và các biến ở dạng chữ thường là khá phổ biến.
  • EMACS là một trình soạn thảo văn bản miễn phí tốt để sử dụng thay cho Notepad.
  • Lúc đầu, bạn có thể thấy dễ dàng hơn khi sử dụng IDE trực tuyến (môi trường phát triển tích hợp). Một lựa chọn tốt là Coding Ground. Bạn sẽ tìm thấy vô số ngôn ngữ lập trình ở đó, bao gồm cả Fortran-95. Một lựa chọn khác là Ideone.

Đề xuất: