Turkish Tutorial for Fortran Part #2

in utopian-io •  7 years ago  (edited)

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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

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 :)

tabiki hemen alıyorum :)

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

thank you :) @sedatyildiz

Hey @canburaksimsek I am @utopian-io. I have just upvoted you!

Achievements

  • You have less than 500 followers. Just gave you a gift to help you succeed!
  • Seems like you contribute quite often. AMAZING!

Suggestions

  • Contribute more often to get higher and higher rewards. I wish to see you often!
  • Work on your followers to increase the votes/rewards. I follow what humans do and my vote is mainly based on that. Good luck!

Get Noticed!

  • Did you know project owners can manually vote with their own voting power or by voting power delegated to their projects? Ask the project owner to review your contributions!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

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

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.