- GitHub Depo:https://github.com/wavebitscientific/functional-fortran
- Fortran (FORTRAN), özellikle sayısal hesaplama ve bilimsel hesaplama için uygun olan genel amaçlı, yordamsal, zorunlu programlama dilidir.
Fortran
1954'de IBM tarafından üretilen IBM 704 için ilk sürümü John Backus ve ekibi tarafından geliştirilmiştir. Backus ve ekibi Kasım 1954'de "The IBM Mathematical FORmula TRANslating System: Fortran" isimli raporu yayınlamışlardır.
What Will I Learn?
I will try to give you information about the use of Fortran Programming Language. This series will proceed step by step. At the end of our project, we will have learned the Fortran Programming and Calculus Language. I will strive to give you a useful education.
Ne Öğreneceğim?
Bu seride sizlere Fortran Programlama Dili kullanımı hakkında bilgiler vermeye çalışacağım. Bu seri adım adım ilerleyecektir. Projemizin sonunda Fortran Programlama ve Hesaplama Dilini öğrenmiş olacağız. Sizlere faydalı bir eğitim serisi vermek için çabalayacağım.
Requirements
- To develop and examine the concept of problem solving
- Thinking and developing other things while solving problems
- Force 2.0
Gereksinimler
- Problem çözme kavramını geliştirmek ve incelemek
- Problem çözerken başka yollar düşünmek ve geliştirmek
- Force 2.0
Difficulty / Zorluk
- Intermediate / Orta Düzey
Curriculum / Müfredat
Daha işlevsel: ''map, filter, fold,unfold''
- map: saf elemental işlevlerle aynı işlevselliğe sahiptir, ama dizilere tekrarlı işlevler uygulamak için de kullanılabilir, örneğin:
pure recursive integer function fibonacci(n) result(fib)
integer,intent(in) :: n
if(n == 0)then
fib = 0
elseif(n == 1)then
fib = 1
else
fib = fibonacci(n-1)+fibonacci(n-2)
endif
endfunction fibonacci
write(* , *)map(fibonacci,[17,5,13,22])
1597 5 233 17711
- filter: Mantıksal bir filtreleme işlevini yerine getiren dizi öğelerine döndürür. Örneğin, ''.true'' işlemini döndüren bir işlev tanımlayabiliriz. Giriş bir çift sayı olduğunda ve bir diziyi filtrelemek için bu işlevi kullanabilirsiniz:
pure logical function even(x)
integer,intent(in) :: x
even = .false.
if(mod(x,2) == 0)even = .true.
endfunction even
write(* , *)filter(even,[1,2,3,4,5])
2 4
- Fonksiyonlar tek tek zincirlenebilir:
write(* , *)filter(even,map(fibonacci,arange(1,10)))
2 8 34
- Fonksiyonel Fortran da sol sağ ve ağaçlandırma fonksiyonları sağlar ''foldl-foldr-foldt'' sırasıyla. Bu işlevler, kullanıcı tanımlı bir işlev kullanarak bir diziyi yinelemeli olarak küçültür ve elde edilen skalaya döndürür. Kıvrımları kullanan basit örnekler ''sum'' ve ''product'' işlevler için skalar hesaplama üzerinde çalışanlara aşağıdaki gibi ekleme ve çarpma işlevlerini tanımlayabiliriz:
pure real function add(x,y)
real,intent(in) :: x,y
add = x+y
endfunction add
pure real function mult(x,y)
real,intent(in) :: x,y
mult = x*y
endfunction mult
- Sonra ise, yukarıdaki tanımlı fonksiyonları ve bir başlangıç değerini kullanarak hesaplamayı "folding" yoluyla bir dizinin ''sum'' ve ''product'' dizisini hesaplayabiliriz.
! left-fold an array using add to compute array sum
write(* , *)foldl(add,0.,arange(1.,5.))
15.0000000
! left-fold an array using mult to compute array product
write(* , *)foldl(mult,1.,arange(1.,5.))
120.000000
Yukarıdaki, Fortran intrinsik bileşenini kavramın bir kanıtı olarak yeniden yaratan örnektir. Tabii ki iç işlevler mümkün olduğunca kullanılmalıdır.
''foldl- foldr- foldt'' kullanıcı tanımlı işlev yapılandırılmışsa aynı sonucu gösterir.
Katlayabilmek için ''fold'' ve ''unfold'' bir başlangıç değerine göre bir dizi oluşturmak için kullanılabilir 'x' ve bir işlev 'f' de üretilen diziye eşittir. [x, f(x), f(f(x)), f(f(f(x))), ... ]. Örnek verirsek;
pure real function multpt1(x)
real,intent(in) :: x
multpt1 = 1.1*x
endfunction multpt1
write(* , *)unfold(multpt1,[1.],5)
1.00000000 1.10000002 1.21000004 1.33100009 1.46410012
Set fonksiyonları: ''set, union, intersection, complement''
- İşlev ''set'', bir giriş dizisinin benzersiz öğelerini döndürür:
write(* , *)set([1,1,2,2,3])
1 2 3
Kümeler üzerinde işlem Ortak fonksiyonlar, ''union, intersection, ve complement'' ile mevcuttur:
! unique elements that are found in either array
write(* , *)union([1,2,2],[2,3,3,4])
1 2 3 4
! unique elements that are found in both arrays
write(* , *)intersection([1,2,2],[2,3,3,4])
2
! unique elements that are found first but not in second array
write(* , *)complement([1,2,2],[2,3,3,4])
1
Posted on Utopian.io - Rewarding Open Source Contributors
Merhaba dostum, içeriğini beğendim. Biz türkler şu zamanlar sitede parmakla sayılabilecek kadar az kişiyiz. Bu nedenle birbirimizden haberdar ve destek olmak için seni takibe aldım. sende alırsan sevinirim :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
tabiki hemen alıyorum :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thank you for the contribution. It has been approved.
You can contact us on Discord.
[utopian-moderator]
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
thank you :) @sedatyildiz
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Hey @canburaksimsek I am @utopian-io. I have just upvoted you!
Achievements
Suggestions
Get Noticed!
Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!
Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Congratulations! This post has been upvoted from the communal account, @minnowsupport, by canburaksimsek from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, theprophet0, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.
If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit