วิธีการตั้งโปรแกรมใน Fortran (พร้อมรูปภาพ)

สารบัญ:

วิธีการตั้งโปรแกรมใน Fortran (พร้อมรูปภาพ)
วิธีการตั้งโปรแกรมใน Fortran (พร้อมรูปภาพ)

วีดีโอ: วิธีการตั้งโปรแกรมใน Fortran (พร้อมรูปภาพ)

วีดีโอ: วิธีการตั้งโปรแกรมใน Fortran (พร้อมรูปภาพ)
วีดีโอ: 8 เทคนิคแอปโน้ต (Note) สำหรับ iPhone, iPad รู้ไว้ใช้อย่างเซียน! | How to | iMoD 2024, เมษายน
Anonim

หลายคนมองว่า Fortran เป็นภาษาการเขียนโปรแกรมที่ล้าสมัยและ "ตายแล้ว" อย่างไรก็ตาม รหัสทางวิทยาศาสตร์และวิศวกรรมส่วนใหญ่เขียนด้วย Fortran ดังนั้น การเขียนโปรแกรมใน F77 และ F90 ยังคงเป็นทักษะที่จำเป็นสำหรับโปรแกรมเมอร์ด้านเทคนิคส่วนใหญ่ นอกจากนี้ มาตรฐานล่าสุดของ Fortran (2003, 2008, 2015) ช่วยให้โปรแกรมเมอร์สามารถเขียนโค้ดที่มีประสิทธิภาพสูงโดยใช้ความพยายามน้อยที่สุด ในขณะที่ใช้คุณลักษณะภาษาสมัยใหม่ทั้งหมด เช่น OOP (การเขียนโปรแกรมเชิงวัตถุ) FORTRAN เป็นตัวย่อสำหรับ "FORmula TRANslation" และเหมาะที่สุดสำหรับแอปพลิเคชันทางคณิตศาสตร์และตัวเลข มากกว่าแอปพลิเคชันกราฟิกหรือฐานข้อมูล รหัส fortran ส่วนใหญ่ใช้การป้อนข้อความจากไฟล์หรือบรรทัดคำสั่งแทนที่จะใช้จากเมนูหรืออินเทอร์เฟซ GUI

ขั้นตอน

ส่วนที่ 1 ของ 4: การเขียนและคอมไพล์โปรแกรมอย่างง่าย

โปรแกรม Fortran สวัสดีชาวโลกเขียน Corrected
โปรแกรม Fortran สวัสดีชาวโลกเขียน Corrected

ขั้นตอนที่ 1. เขียนโปรแกรม "Hello World"

โดยปกติจะเป็นโปรแกรมแรกที่เขียนในภาษาใดก็ได้ และเพียงพิมพ์ "Hello world" ไปที่หน้าจอ เขียนโค้ดต่อไปนี้ในโปรแกรมแก้ไขข้อความและบันทึกเป็น helloworld.f สังเกตว่าต้องมีเว้นวรรค 6 แถวหน้าทุกบรรทัดพอดี

โปรแกรม helloworld โดยปริยาย none character*13 hello_string hello_string = "สวัสดีชาวโลก!" เขียน (*, *) hello_string จบโปรแกรม helloworld

เคล็ดลับ: ช่องว่างจำเป็นในเวอร์ชันของ Fortran จนถึง FORTRAN 77 เท่านั้น หากคุณใช้เวอร์ชันที่ใหม่กว่า คุณสามารถวางช่องว่างได้ รวบรวมโปรแกรมจากเวอร์ชันใหม่กว่าด้วย f95 ไม่ใช่ f77 ใช้.f95 เป็นนามสกุลไฟล์แทน.f

ขั้นตอนที่ 2. รวบรวมโปรแกรม

เมื่อต้องการทำเช่นนี้ พิมพ์ f77 helloworld.f ลงในบรรทัดคำสั่ง หากเกิดข้อผิดพลาด คุณอาจยังไม่ได้ติดตั้งคอมไพเลอร์ Fortran เช่น gfortran

Fortran สวัสดีชาวโลกคอมไพล์ run
Fortran สวัสดีชาวโลกคอมไพล์ run

ขั้นตอนที่ 3 เรียกใช้โปรแกรมของคุณ

คอมไพเลอร์ได้สร้างไฟล์ชื่อ a.out เรียกใช้ไฟล์นี้โดยพิมพ์./a.out

ขั้นตอนที่ 4 ทำความเข้าใจกับสิ่งที่คุณเพิ่งเขียน

  • โปรแกรม helloworld

    หมายถึงการเริ่มต้นของโปรแกรม "helloworld" ในทำนองเดียวกัน

    จบโปรแกรม helloworld

  • บ่งบอกถึงจุดจบของมัน
  • ตามค่าเริ่มต้น ถ้าคุณไม่ประกาศประเภทตัวแปร Fortran จะถือว่าตัวแปรที่มีชื่อขึ้นต้นด้วยตัวอักษรจาก i ถึง n เป็นจำนวนเต็ม และตัวอื่นๆ ทั้งหมดเป็นจำนวนจริง แนะนำให้ใช้

    โดยนัยไม่มี

  • ถ้าคุณไม่ต้องการพฤติกรรมนั้น
  • ตัวอักษร*13 hello_string

  • ประกาศอาร์เรย์ของอักขระที่เรียกว่า hello_string
  • hello_string = "สวัสดีชาวโลก!"

  • กำหนดค่า "สวัสดีชาวโลก!" ไปยังอาร์เรย์ที่ประกาศ ไม่เหมือนกับภาษาอื่นๆ เช่น C ซึ่งไม่สามารถทำได้ในบรรทัดเดียวกับการประกาศอาร์เรย์
  • เขียน (*, *) hello_string

  • พิมพ์ค่าของ hello_string ไปยังเอาต์พุตมาตรฐาน * ตัวแรกหมายถึงการเขียนไปยังเอาต์พุตมาตรฐาน ซึ่งต่างจากไฟล์บางไฟล์ * ตัวที่สองหมายถึงไม่ใช้การจัดรูปแบบพิเศษใดๆ
Fortran comments
Fortran comments

ขั้นตอนที่ 5. เพิ่มความคิดเห็น

สิ่งนี้ไม่จำเป็นในโปรแกรมง่ายๆ แต่จะมีประโยชน์เมื่อคุณเขียนบางสิ่งที่ซับซ้อนกว่านี้ ดังนั้นคุณควรรู้วิธีเพิ่มมัน มีสองวิธีในการเพิ่มความคิดเห็น

  • หากต้องการเพิ่มความคิดเห็นที่มีทั้งบรรทัดเอง ให้เขียน c ลงในบรรทัดใหม่โดยตรง โดยไม่เว้นวรรค 6 หลังจากนั้นเขียนความคิดเห็นของคุณ คุณควรเว้นช่องว่างระหว่าง c และความคิดเห็นของคุณเพื่อให้อ่านง่ายขึ้น แต่ไม่จำเป็น โปรดทราบว่าคุณต้องใช้ ! แทนที่จะเป็น c ใน Fortran 95 และใหม่กว่า
  • หากต้องการเพิ่มความคิดเห็นในบรรทัดเดียวกับโค้ด ให้เพิ่ม ! ที่คุณต้องการให้ความคิดเห็นของคุณเริ่มต้น อีกครั้ง ไม่จำเป็นต้องเว้นวรรค แต่ช่วยให้อ่านง่ายขึ้น

ส่วนที่ 2 ของ 4: การใช้ Input และ If-Constructions

ประเภทข้อมูล Fortran
ประเภทข้อมูล Fortran

ขั้นตอนที่ 1 ทำความเข้าใจประเภทข้อมูลต่างๆ

  • INTEGER ใช้สำหรับจำนวนเต็ม เช่น 1, 3 หรือ -3
  • REAL ยังสามารถประกอบด้วยตัวเลขที่ไม่เต็มจำนวน เช่น 2.5
  • COMPLEX ใช้สำหรับเก็บจำนวนเชิงซ้อน ตัวเลขแรกคือจำนวนจริงและส่วนจินตภาพที่สอง
  • CHARACTER ใช้สำหรับอักขระ เช่น ตัวอักษรหรือเครื่องหมายวรรคตอน
  • LOGICAL สามารถเป็นได้ทั้ง.true หรือ.false.. นี่เป็นเหมือนประเภทบูลีนในภาษาโปรแกรมอื่นๆ

ขั้นตอนที่ 2 รับข้อมูลของผู้ใช้

ในโปรแกรม "Hello world" ที่คุณเคยเขียนไว้ก่อนหน้านี้ การรับข้อมูลจากผู้ใช้จะไม่มีประโยชน์ เปิดไฟล์ใหม่และตั้งชื่อเป็น compnum.f เมื่อคุณทำเสร็จแล้ว มันจะบอกผู้ใช้ว่าตัวเลขที่พวกเขาป้อนนั้นเป็นบวก ลบ หรือเท่ากับศูนย์

  • ป้อนบรรทัดโปรแกรม compnum และสิ้นสุดโปรแกรม compnum
  • จากนั้นประกาศตัวแปรประเภท REAL ตรวจสอบให้แน่ใจว่าการประกาศของคุณอยู่ระหว่างจุดเริ่มต้นและจุดสิ้นสุดของโปรแกรม
  • อธิบายให้ผู้ใช้ทราบว่าควรทำอย่างไร เขียนข้อความด้วยฟังก์ชันเขียน
  • อ่านอินพุตของผู้ใช้ในตัวแปรที่คุณประกาศด้วยฟังก์ชันอ่าน

โปรแกรม compnum จริง r เขียน (*, *) "ป้อนจำนวนจริง:" อ่าน (*, *) r จบโปรแกรม

Fortran ถ้า construction
Fortran ถ้า construction

ขั้นตอนที่ 3 ประมวลผลอินพุตของผู้ใช้ด้วย if-construction

วางไว้ระหว่าง

อ่าน (*, *) r

และ

จบโปรแกรม

  • การเปรียบเทียบเสร็จสิ้นด้วย.gt (มากกว่า),.lt. (น้อยกว่า) และ.eq (เท่ากับ) ใน Fortran
  • Fortran สนับสนุน if, else if, และ else
  • Fortran if-construction จบลงด้วย if เสมอ

ถ้า (r.gt. 0) ให้เขียน (*, *) "ตัวเลขนั้นเป็นบวก" else if (r.lt. 0) แล้วเขียน (*, *) "ตัวเลขนั้นเป็นค่าลบ" อื่นเขียน (*, *) "ตัวเลขนั้นเป็น 0" สิ้นสุด if

เคล็ดลับ: คุณไม่จำเป็นต้องเยื้องโค้ดภายใน if-constructions ที่มีช่องว่างมากขึ้น แต่จะช่วยให้อ่านง่ายขึ้น

โปรแกรมตรวจสอบหมายเลข Fortran test
โปรแกรมตรวจสอบหมายเลข Fortran test

ขั้นตอนที่ 4 รวบรวมและเรียกใช้โปรแกรมของคุณ

ใส่ตัวเลขเพื่อทดสอบ หากคุณป้อนตัวอักษร จะทำให้เกิดข้อผิดพลาด แต่ไม่เป็นไร เพราะโปรแกรมไม่ตรวจสอบว่าข้อมูลที่ป้อนนั้นเป็นตัวอักษร ตัวเลข หรืออย่างอื่น

ส่วนที่ 3 จาก 4: การใช้ลูปและอาร์เรย์

ขั้นตอนที่ 1. เปิดไฟล์ใหม่

เนื่องจากแนวคิดนี้แตกต่างออกไป คุณจะต้องเขียนโปรแกรมใหม่อีกครั้ง ตั้งชื่อไฟล์ addman.f. แทรกโปรแกรมที่เกี่ยวข้องและคำสั่งสิ้นสุดโปรแกรม รวมทั้งไม่มีโดยปริยาย เมื่อเสร็จแล้ว โปรแกรมนี้จะอ่านตัวเลข 10 ตัวและพิมพ์ผลรวมออกมา

ขั้นตอนที่ 2 ประกาศอาร์เรย์ที่มีความยาว 10

นี่คือที่ที่คุณจะเก็บตัวเลข เนื่องจากคุณอาจต้องการผลรวมของจำนวนจริง คุณควรประกาศอาร์เรย์เป็นจำนวนจริง คุณประกาศอาร์เรย์ดังกล่าวด้วย

ตัวเลขจริง(50)

(ตัวเลขคือชื่อของอาร์เรย์ ไม่ใช่นิพจน์)

ขั้นตอนที่ 3 ประกาศตัวแปรบางตัว

ประกาศ numSum เป็นจำนวนจริง คุณจะใช้มันเพื่อเก็บผลรวมในภายหลัง แต่เนื่องจากผลรวมถูกใช้โดยนิพจน์ Fortran คุณจึงต้องใช้ชื่อเช่น numSum ตั้งค่าเป็น 0 ประกาศ i เป็นจำนวนเต็ม และไม่ต้องกำหนดค่าใดๆ ให้กับมัน ที่จะทำใน do-loop

ขั้นตอนที่ 4 สร้าง do-loop

เทียบเท่าในภาษาโปรแกรมอื่น ๆ จะเป็น for-loop

  • do-loop เริ่มต้นด้วย do เสมอ
  • ในบรรทัดเดียวกับ do ซึ่งคั่นด้วยการเว้นวรรคคือป้ายกำกับที่โปรแกรมจะไปเมื่อเสร็จสิ้น สำหรับตอนนี้ แค่เขียน 1 คุณจะตั้งค่าป้ายกำกับในภายหลัง
  • หลังจากนั้นให้เว้นวรรคอีกครั้งเท่านั้น พิมพ์

    ผม = 1, 10

    . สิ่งนี้จะทำให้ตัวแปร i ซึ่งคุณประกาศก่อนลูปไปจาก 1 ถึง 10 ในขั้นตอนที่ 1 ขั้นตอนไม่ได้กล่าวถึงในนิพจน์นี้ ดังนั้น Fortran จึงใช้ค่าเริ่มต้นเป็น 1 คุณยังสามารถเขียนได้

    ผม = 1, 10, 1

  • ใส่โค้ดบางส่วนในลูป (เว้นวรรคเพื่อให้อ่านง่ายขึ้น) สำหรับโปรแกรมนี้ คุณควรเพิ่มตัวแปร numSum ด้วยอิลิเมนต์ที่ i ของตัวเลขอาร์เรย์ จบด้วยนิพจน์

    numSum = numSum + ตัวเลข (i)

  • จบลูปด้วยคำสั่ง continue ที่มีเลเบล พิมพ์เพียง 4 ช่องว่าง. หลังจากนั้น ให้พิมพ์ a 1 นั่นคือป้ายกำกับที่คุณบอกให้ do-loop ไปที่หลังจากเสร็จสิ้น จากนั้นพิมพ์ช่องว่างและดำเนินการต่อ นิพจน์ดำเนินการต่อไม่ได้ช่วยอะไร แต่ให้จุดที่ดีในการวางป้ายกำกับ และแสดงว่า do-loop สิ้นสุดแล้ว

do loop ของคุณควรมีลักษณะดังนี้:

ทำ 1 i = 1, 10 numSum = numSum + ตัวเลข (i) 1 ต่อ

เคล็ดลับ: ใน Fortran 95 และใหม่กว่า คุณไม่จำเป็นต้องใช้ป้ายกำกับ อย่าใส่มันลงในคำสั่ง do และจบลูปด้วย "end do" แทนที่จะเป็น "continue"

Fortran ทำลูป code
Fortran ทำลูป code

ขั้นตอนที่ 5. พิมพ์ numSum

นอกจากนี้ ควรให้บริบทบางอย่าง เช่น "ผลรวมของตัวเลขคือ:" ใช้ฟังก์ชันเขียนสำหรับทั้งสองอย่าง รหัสทั้งหมดของคุณควรมีลักษณะดังนี้:

โปรแกรม addmany โดยปริยาย ไม่มี จำนวนจริง(10) จำนวนเต็มจำนวนจริง numSum i numSum = 0 เขียน (*, *) "ป้อน 10 หมายเลข:" อ่าน (*, *) ตัวเลข ทำ 1 i = 1, 10 numSum = numSum + ตัวเลข (i) 1 เขียนต่อ (*, *) "ผลรวมของพวกเขาคือ:" เขียน (*, *) numSum สิ้นสุดโปรแกรมเสริม

Fortran เพิ่มรหัสตัวเลข test
Fortran เพิ่มรหัสตัวเลข test

ขั้นตอนที่ 6 รวบรวมและเรียกใช้รหัสของคุณ

อย่าลืมที่จะทดสอบมัน คุณสามารถกด ↵ Enter หลังแต่ละหมายเลขที่คุณป้อน หรือป้อนตัวเลขจำนวนมากในบรรทัดเดียวกันแล้วคั่นด้วยการเว้นวรรค

ส่วนที่ 4 ของ 4: การทำความเข้าใจแนวคิดขั้นสูง

โปรแกรมใน Fortran ขั้นตอนที่ 13
โปรแกรมใน Fortran ขั้นตอนที่ 13

ขั้นตอนที่ 1 มีความคิดที่ดีว่าโปรแกรมของคุณจะทำอะไร

ลองนึกถึงประเภทข้อมูลที่ต้องการเป็นอินพุต วิธีจัดโครงสร้างเอาต์พุต และรวมเอาท์พุตกลางบางส่วนไว้ด้วย เพื่อให้คุณสามารถตรวจสอบความคืบหน้าของการคำนวณได้ ซึ่งจะมีประโยชน์มากหากคุณรู้ว่าการคำนวณของคุณจะทำงานเป็นเวลานานหรือเกี่ยวข้องกับขั้นตอนที่ซับซ้อนหลายขั้นตอน

เว็บไซต์อ้างอิง Fortran screenshot
เว็บไซต์อ้างอิง Fortran screenshot

ขั้นตอนที่ 2 ค้นหาข้อมูลอ้างอิงของ Fortran ที่ดี

Fortran มีฟังก์ชันมากกว่าที่อธิบายไว้ในบทความนี้ และอาจเป็นประโยชน์สำหรับโปรแกรมที่คุณต้องการเขียน การอ้างอิงแสดงรายการฟังก์ชันทั้งหมดที่ภาษาโปรแกรมมี นี่คือหนึ่งสำหรับ Fortran 77 และนี่คือหนึ่งสำหรับ Fortran 90/95

รูทีนย่อย Fortran example
รูทีนย่อย Fortran example

ขั้นตอนที่ 3 เรียนรู้เกี่ยวกับรูทีนย่อยและฟังก์ชัน

สตริงรูปแบบ Fortran example
สตริงรูปแบบ Fortran example

ขั้นตอนที่ 4 เรียนรู้วิธีอ่านและเขียนจาก/ไปยังไฟล์

เรียนรู้วิธีจัดรูปแบบอินพุต/เอาต์พุตของคุณด้วย

ตัวอย่าง fortran สมัยใหม่ screenshot
ตัวอย่าง fortran สมัยใหม่ screenshot

ขั้นตอนที่ 5. เรียนรู้เกี่ยวกับคุณสมบัติใหม่ของ Fortran 90/95 และใหม่กว่า

ข้ามขั้นตอนนี้หากคุณรู้ว่าคุณจะเขียน/บำรุงรักษาโค้ด Fortran 77 เท่านั้น

โปรดจำไว้ว่า Fortran 90 ได้แนะนำซอร์สโค้ด "Free Form" ซึ่งช่วยให้สามารถเขียนโค้ดได้โดยไม่มีช่องว่างและไม่จำกัดอักขระ 72 ตัว

Fortran หนังสือออนไลน์ screenshot
Fortran หนังสือออนไลน์ screenshot

ขั้นตอนที่ 6 อ่านหรือค้นหาหนังสือเกี่ยวกับการเขียนโปรแกรมทางวิทยาศาสตร์

ตัวอย่างเช่น หนังสือ "Numerical Recipes in Fortran" เป็นทั้งข้อความที่ดีเกี่ยวกับอัลกอริธึมการเขียนโปรแกรมทางวิทยาศาสตร์และเป็นคำแนะนำที่ดีในการรวมโค้ดเข้าด้วยกัน ฉบับล่าสุดประกอบด้วยบทเกี่ยวกับวิธีการตั้งโปรแกรมในสภาพแวดล้อมภาษาผสมและการเขียนโปรแกรมแบบคู่ขนาน อีกตัวอย่างหนึ่งคือ "Modern Fortran in Practice" เขียนโดย Arjen Markus หนังสือเล่มนี้ให้ข้อมูลเชิงลึกเกี่ยวกับวิธีการเขียนโปรแกรม Fortran ในสไตล์ศตวรรษที่ 21 ตามมาตรฐาน Fortran ล่าสุด

Fortran คอมไพล์โปรแกรมข้ามไฟล์หลายไฟล์
Fortran คอมไพล์โปรแกรมข้ามไฟล์หลายไฟล์

ขั้นตอนที่ 7 เรียนรู้วิธีคอมไพล์โปรแกรมที่กระจายอยู่ในหลายไฟล์

สมมติว่าโปรแกรม Fortran ของคุณกระจายอยู่ในไฟล์ main.f และ morestuff.f และคุณต้องการให้ไบนารีที่เป็นผลลัพธ์ได้รับการตั้งชื่อว่า allstuff จากนั้นคุณจะต้องเขียนคำสั่งต่อไปนี้ลงในบรรทัดคำสั่ง:

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

จากนั้นเรียกใช้ไฟล์โดยพิมพ์./allstuff

เคล็ดลับ: วิธีนี้ใช้ได้ผลเช่นเดียวกันกับ Fortran เวอร์ชันใหม่กว่า เพียงแทนที่.f ด้วยนามสกุลที่ถูกต้อง และ f77 ด้วยเวอร์ชันคอมไพเลอร์ที่ถูกต้อง

ขั้นตอนที่ 8 ใช้การเพิ่มประสิทธิภาพที่คอมไพเลอร์ของคุณมีให้

คอมไพเลอร์ส่วนใหญ่มีอัลกอริธึมการปรับให้เหมาะสมที่ช่วยปรับปรุงประสิทธิภาพของโค้ดของคุณ โดยทั่วไปสิ่งเหล่านี้จะเปิดใช้งานโดยรวมแฟล็ก -O, -O2 หรือ -O3 เมื่อรวบรวม (ขึ้นอยู่กับเวอร์ชันของ fortran ของคุณ)

  • โดยทั่วไป ระดับต่ำสุด -O หรือ -O2 ดีที่สุด โปรดทราบว่าการใช้ตัวเลือกการปรับให้เหมาะสมในเชิงรุกมากขึ้นอาจทำให้เกิดข้อผิดพลาดในรหัสที่ซับซ้อนและอาจทำให้ทุกอย่างช้าลง! ทดสอบรหัสของคุณ

เคล็ดลับ

  • เริ่มต้นด้วยโปรแกรมขนาดเล็ก เมื่อคุณสร้างโค้ดของคุณเอง ให้พยายามระบุส่วนที่สำคัญที่สุดของปัญหา ไม่ว่าจะเป็นการป้อนข้อมูลหรือการเรียกใช้ฟังก์ชัน โครงสร้างของลูป (เหล่านี้คือตัวอย่างเบื้องต้นบางส่วน) และเริ่มต้นจากจุดนั้น แล้วต่อยอดไปทีละน้อย
  • Fortran ไม่คำนึงถึงขนาดตัวพิมพ์ ตัวอย่างเช่น คุณสามารถประกาศตัวแปร "real Num" และเขียน "num = 1" ในบรรทัดถัดไปเพื่อกำหนดค่าให้กับตัวแปรนั้น แต่นั่นเป็นสไตล์ที่ไม่ดี ดังนั้นควรหลีกเลี่ยง ที่สำคัญกว่านั้น Fortran ไม่สนใจกรณีของฟังก์ชันและคำสั่งเช่นกัน เป็นเรื่องปกติที่จะเขียนฟังก์ชันและข้อความสั่งเป็นตัวพิมพ์ใหญ่และตัวแปรเป็นตัวพิมพ์เล็ก
  • EMACS เป็นโปรแกรมแก้ไขข้อความฟรีที่ดีที่จะใช้แทน Notepad
  • คุณอาจพบว่าใช้ IDE ออนไลน์ (สภาพแวดล้อมการพัฒนาแบบรวม) ได้ง่ายขึ้นในตอนแรก ตัวเลือกที่ดีคือ Coding Ground คุณจะพบภาษาการเขียนโปรแกรมมากมายที่นั่น รวมถึง Fortran-95 อีกทางเลือกหนึ่งคือ Ideone

แนะนำ: