اسلایدهای فصل ششم
Download
Report
Transcript اسلایدهای فصل ششم
عملیات با رشتهها
موسوی ندوشنی
ویراست 1389
1
دانشگاه صنعت اب و برق
توابع کتابخانهای
تابع )Len(s
• آرگومان آن رشته است.
• خروجی عددی است که طول رشته را نشان میدهد.
مثال:
Character(Len=15) :: str
i=Len(str) ! returns 15
2
دانشگاه صنعت اب و برق
دنباله توابع کتابخانهای
تابع Trim
• آرگومان آن رشته است.
• خروجی همان رشته ورودی است با این تفاوت که فواصل
خالی راست حذف میشود.
مثال:
)' Print*, Trim('Fortran90
Ans: Fortran90
3
دانشگاه صنعت اب و برق
دنباله توابع کتابخانهای
تابع )Len_trim(s
• آرگومان آن رشته است.
• خروجی عددی است که طول رشته را (بدون احتساب فواصل
خالی راست آن) نشان میدهد.
مثال:
INTEGER :: L1, L2
L1 = LEN_TRIM ('GOODDAY') ! returns 9
L2 = LEN_TRIM ('') ! returns 0
4
دانشگاه صنعت اب و برق
دنباله توابع کتابخانهای
تابع AdjustL
• آرگومان آن رشته است.
• خروجی همان رشته ورودی است با این تفاوت که فواصل خالی
چپ به راست منتقل میشود.
مثال
)' print*, AdjustL('Fortran 90
Ans: Fortran90
اکنون میتوان با تابع Trimفواصل خالی جلوی رشته را
حذف نمود.
))' Print*, Trim(AdjustL('Fortran 90
Ans: Fortran90
5
دانشگاه صنعت اب و برق
دنباله توابع کتابخانهای
تابع AdjustR
• آرگومان آن رشته است.
• خروجی همان رشته ورودی است با این تفاوت که فواصل
خالی راست به چپ منتقل میشود.
مثال:
)' print*, AdjustR('Fortran90
Ans: Fortran90
6
دانشگاه صنعت اب و برق
دنباله توابع کتابخانهای
تابع verify
این تابع دارای دو آرگومان رشتهای است .اگر کلیه کاراکترهای آرگومان
اول در آرگومان دوم موجود باشد ،خروجی تابع صفر است .مثال:
print*, verify('banana', 'abn') ! return 0
print*, verify('banana','cabn') ! return 0
اگر از چپ به راست ،اولین کاراکتر آرگومان اول در بین کاراکترهای
آرگومان دوم وجود نداشته باشد .محل آن کاراکتر در آرگومان اول توسط
تابع فوق مشخص میشود .مثال:
print*, verify('fbanana','cabn') ! return 1
print*, verify('bafnana','cabn') ! return 3
print*, verify('bafneana','cabn') ! return 3
print*, verify('bafneafna','cabn') ! return 3
print*, verify('banAna','cabn') ! return 4
7
دانشگاه صنعت اب و برق
دنباله توابع کتابخانهای
تابع scan
اگر از چپ به راست ،اولین کاراکتر آرگومان اول در
بین کاراکترهای آرگومان دوم موجود باشد .محل آن
کاراکتر در آرگومان اول توسط تابع فوق مشخص
میشود .مثال:
print*, scan('banana','cabn') ! return 1
print*, scan('banana','can') ! return 2
print*, scan('fortran', 'tr') ! return 3
print*, scan('fortran', 'gha') ! return 6
print*, scan('fortran', 'ghA') ! return 0
8
دانشگاه صنعت اب و برق
فایلهای داخلی
تاکنون شما چگونگی کار با دادههای عددی و کاراکتری را
آموختهاید .اکنون به این مساله پرداخته میشود که چگونه
میتوان دادههای عددی را به دادههای کاراکتری و یا بالعکس
تبدیل نمود .مکانیزمی که در فرترن این کار را انجام میدهد،
فایلهای داخلی نامیده میشود.
برای دستور Readبه صورت عمل میشود.
Read(buffer, format) arg1, arg2, ...
که در آن bufferکاراکتر ورودی است و به جای شماره
پرونده (فایل) قرار میگیرد و formatنیز قالبی برای
خواندن است و arg1,arg2نیز مانند متغیرهایی هستند که
مقادیرشان از bufferخوانده میشود.
9
دانشگاه صنعت اب و برق
دنباله فایلهای داخلی
فرم عمومی دستور Writeاز فایل داخلی به صورت
زیر است.
… Write(buffer, format) arg1, arg2,
که در آن bufferکاراکتر خروجی است و به جای
شماره پرونده (فایل) قرار میگیرد و formatنیز قالبی
برای نوشتن است و arg1,arg2نیز مانند متغیرهایی
هستند که مقادیرشان روی bufferنوشته میشود.
10
دانشگاه صنعت اب و برق
مثال فایلهای داخلی
implicit none
Character(Len=5) :: text ='135.4'
Character(Len=10) :: str ='_567',
string
Real :: value
integer :: val
Print '(A\)', 'Enter the integer
value:'
Read*, val
Read(text,*) value
value=2.*value
Print*, value
Write(string, '(I10)') val
Print*, string // str
End
1234 ورودی برنامه عدد
است و خروجی به صورت
.زیر است
270.8000
1234_567
دانشگاه صنعت اب و برق
11