การใช้งาน Dynamic Array ในภาษา Fortran ด้วยความเข้าใจและวิธีการที่ง่าย
โลกแห่งการเขียนโปรแกรมนั้นหลากหลายและเต็มไปด้วยภาษาที่สามารถคลี่คลายปัญหาได้หลายแง่มุม หนึ่งในภาษาที่มีประวัติศาสตร์ยาวนานและยังคงถูกใช้อย่างแพร่หลายในวงการวิทยาศาสตร์และวิศวกรรมคือ Fortran ภาษานี้ได้รับการพัฒนาต่อและมีความสามารถในการใช้งาน Dynamic Array ที่ทำให้โปรแกรมเมอร์สามารถจัดการกับข้อมูลที่มีขนาดไม่แน่นอนได้ในระหว่างที่โปรแกรมกำลังทำงาน
Dynamic Array เป็นโครงสร้างข้อมูลที่ขนาดสามารถปรับเปลี่ยนได้ ความสามารถนี้ทำให้สามารถเพิ่มหรือลดจำนวนข้อมูลใน array ได้ตามต้องการ ซึ่งเป็นคุณสมบัติที่มีประโยชน์อย่างยิ่งในการจัดการกับชุดข้อมูลที่ขนาดไม่แน่นอน
ตัวอย่างการใช้งาน Dynamic Array ใน Fortran:
ตัวอย่างที่ 1: การสร้าง Dynamic Array
program dynamic_example
implicit none
integer, allocatable :: my_array(:)
integer :: num_elements, i
write(*,*) 'Enter number of elements:'
read(*,*) num_elements
! Allocate memory for the array
allocate(my_array(num_elements))
! Initialize the array with some values
do i = 1, num_elements
my_array(i) = i**2
end do
! Print the array
do i = 1, num_elements
write(*,*) 'Element ', i, ' = ', my_array(i)
end do
! Deallocate memory when done
deallocate(my_array)
end program dynamic_example
ในตัวอย่างนี้, my_array เป็น dynamic array ที่จะขอจองพื้นที่จำนวนเท่ากับค่า num_elements ที่ผู้ใช้ป้อนเข้ามา หลังจากนั้น array จะถูกเติมด้วยกำลังสองของดัชนีและพิมพ์ออกมา
ตัวอย่างที่ 2: การปรับขนาด Dynamic Array
program resize_array
implicit none
integer, allocatable :: my_array(:)
integer :: i
! Allocate initial array
allocate(my_array(5))
my_array = (/1, 2, 3, 4, 5/)
! Resize the array to a larger size
call resize(my_array, 10)
! Print the resized array
do i = 1, 10
write(*,*) 'Element ', i, ' = ', my_array(i)
end do
deallocate(my_array)
contains
subroutine resize(arr, new_size)
integer, allocatable, intent(inout) :: arr(:)
integer, intent(in) :: new_size
integer, allocatable :: temp(:)
integer :: i
! Allocate temporary array with new size
allocate(temp(new_size))
temp = 0
! Copy old elements to the new array
do i = 1, size(arr)
temp(i) = arr(i)
end do
! Swap the arrays and deallocate the old one
call move_alloc(temp, arr)
end subroutine resize
end program resize_array
ในตัวอย่างนี้ ทำการสร้าง array ขนาดเรียบร้อย 5 ตำแหน่ง และขยายขนาดเป็น 10 ตำแหน่ง โดยมี function `resize` ที่ช่วยในการจัดการขนาดดังกล่าว
ตัวอย่างที่ 3: การลดขนาด Dynamic Array
! For this example, we will use the same 'resize' subroutine from Example 2
program shrink_array
implicit none
integer, allocatable :: my_array(:)
integer :: i
! Allocate a larger initial array
allocate(my_array(10))
my_array = (/1, 2, 3, 4, 5, 6, 7, 8, 9, 10/)
! Shrink the array to a smaller size
call resize(my_array, 5)
! Print the resized (shrunk) array
do i = 1, 5
write(*,*) 'Element ', i, ' = ', my_array(i)
end do
deallocate(my_array)
end program shrink_array
ในตัวอย่างที่ 3 แสดงวิธีการลดขนาด array จาก 10 ตำแหน่งลงไปเป็น 5 ตำแหน่ง โดยใช้ subroutine `resize` ที่เราได้สร้างไว้
Usecase ที่เกี่ยวข้องในโลกจริง:
Dynamic Array มีบทบาทสำคัญในการจัดการข้อมูลที่ไม่มีขนาดคงที่ในหลายๆ แอปพลิเคชัน เช่น การจัดการชุดข้อมูล (datasets) ทางวิทยาศาสตร์ที่อาจได้รับจากการทดลองหรือการสำรวจที่จำนวนข้อมูลอาจเปลี่ยนแปลงตามเวลา หรือในการทำงานด้านวิศวกรรมที่ต้องการปรับขนาดรายการทรัพยากรตามการใช้งานจริง
สำหรับผู้ที่สนใจในการพัฒนาซอฟต์แวร์ด้วย Fortran หรือทบทวนพื้นฐานและต้องการที่จะเก่งขึ้นในการใช้งาน Dynamic Arrays และโครงสร้างข้อมูลที่ซับซ้อนอื่นๆ, ที่ EPT (Expert-Programming-Tutor) เรามีหลักสูตรและวิทยากรที่มากพร้อมประสบการณ์ที่จะช่วยเหลือคุณในทุกขั้นตอนเพื่อให้คุณมั่นใจในทักษะการเขียนโปรแกรมของคุณและพร้อมรับมือกับงานโจทย์ที่ท้าทายในโลกแห่งการทำงานจริง!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: dynamic_array fortran_programming array_resize dynamic_data_structure fortran_examples memory_allocation programming_languages scientific_computing engineering_applications
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM