Turkish Tutorial for Fortran Part #1

in utopian-io •  7 years ago  (edited)

Hi Utopians,
Hello friends, 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.

Merhaba arkadaşlar 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.

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.

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.

Fortran Kuralım:

  • Fortran.io PHP gibidir: FastCGI, HTML dizeleri çıktısı veren bir komut dosyası çalıştırır.

indirip dosyayı açarak kurabilirsiniz.

2.png

  • Aşağıda vermiş olduğum kodu çalıştırarak da Fortran kurulumunu gerçekleştirebilirsiniz.
use mod_functional

Aşağıdaki işlevler bize hesaplama yaparken lazım olacaktır. Şimdi gelin onları öğrenelim...

  • arange - düzenli olarak aralıklı bir dizi döndürür
  • complement - İki dizi içeren bir tamamlayıcı set döndürür
  • empty - boş bir dizi döndürür
  • filter - bir diziyi mantıksal giriş işlevi kullanarak filtreler
  • foldl - bir girdi işlevi kullanarak bir diziyi ardışık olarak sola katını alır
  • foldr - bir girdi işlevi kullanarak bir diziyi yinelemeli olarak sağa katını alır
  • foldt - bir girdi işlevi kullanarak bir diziyi tekrar tekrar katını alır
  • head - bir dizinin ilk öğesini döndürür
  • init - son elemandan başka her şeyi döndürür
  • insert - bir diziye bir eleman ekler, sınırdan güvenli
  • intersection - İki dizinin kesişim noktasını döndürür
  • iterfold - Bir girdi işlevi kullanarak bir diziyi tekrar tekrar azaltır
  • last - bir dizinin son öğesini döndürür
  • limit - Bir skalar veya diziyi verilen alt ve üst sınırlarla sınırlar
  • map - bir giriş fonksiyonlu bir diziyi eşler
  • set - verilen bir girdi dizisini döndürür
  • reverse - diziyi ters sırada döndürür
  • sort - İkili ağaç pivot kullanarak özyinelemeli çabukluk sağlar
  • split - Bir dizinin ilk veya ikinci yarısını döndürür
  • subscript - vektör alt simgesinin sınır dışına güvenli bir şekilde uygulanması
  • tail - İlk öğenin dışındaki her şeyi döndürür
  • unfold - bir giriş fonksiyonlu bir diziyi açar
  • union - İki diziden oluşan bir birleşimi döndürür

Yukarıdaki işlevlerin tümü standart Fortran 2008 çeşit ile uyumlu olan int8, int16, int32, int64, real32, real64, real128, complex(real32), complex(real64), ve complex(real128) geçerlidir.

Bir veya iki argüman üzerinde çalışan işlevler sırasıyla tekli veya ikili operatörler olarak mevcuttur. Bunlar şunlardır: .complement., .head., .init., .intersection., .last., .reverse., .set., .sort., .tail., ve .union..

Şimdi gelin biraz örnekler ile anlatalım;

  • ''arange'' girdi bağımsız değişkenleri olarak başlangıç ​​ve bitiş değerleri verilen, eşit aralıklı diziler oluşturmak için kullanılır:
write(*,*)arange(1,5)
           1           2           3           4           5
  • ''arange'' gerçek sayılarla da çalışır:
write(*,*)arange(1.,5.)
   1.00000000       2.00000000       3.00000000       4.00000000       5.00000000
  • Üçüncü argüman, ''arange''(isteğe bağlı), verilen değilse varsayılan olarak 1 olur;
write(*,*)arange(1,15,3)
           1           4           7          10          13
  • Negatif artışlar beklendiği gibi çalışır:
write(*,*)arange(3,1,-1)
           3           2           1 
  • Kayacak olan nokta artımlarını kullanabiliriz:
write(*,*)arange(1.,1.5,0.1)
   1.00000000       1.10000002       1.20000005       1.29999995       1.39999998       1.50000000
  • ''Start'', ''end''den büyükse ve artış olumlu ise, düzenleme şu şekilde ''arange''boş bir dizi döndürür:
write(*,*)arange(5,1)
  • Herhangi bir Fortran standart türünde sıfır uzunlukta bir dizi oluşturmak için ''empty'' kullanın:
write(*,*)size(empty(1))
           0
  • Akümülatörleri başlatmak için yararlı olabilir. Örneğin, bu kütüphanede ayarlanan ''intersection'' uygulanmasına bakın. ''head'', dizinin ilk öğesini döndürür:
write(*,*)head([1,2,3])
           1
  • ''tail'' dizinin ilk öğesinden başka her şeyi döndürür:
write( * , * ) kuyruk ([ 1 , 2 , 3 ])
            2            3
  • Benzer şekilde, ''last'' dizinin son öğesini döndürür:
write ( * , * ) son ([ 1 , 2 , 3 ])
            3
  • ''init'' dizinin son öğesinden başka her şeyi döndürür:
write ( * , * ) init ([ 1 , 2 , 3 ])
            1            2
  • Bir diziyi belirli dizinlerde alt simge haline getirin:
write ( * , * ) alt simge ([ 1 , 2 , 3 , 4 , 5 ], [ 3 , 4 ])
            3            4
  • Fortran 2008 vektör alt simgesinden farklı olarak, ''subscript'' işlev sınırın dışına çıkmamaktadır, yani sınırların altına yazılması boş bir diziyi döndürür:
write ( * , * ) alt simge ([ 1 , 2 , 3 ], [ 10 ])
  • Aşağıdakileri kullanarak bir diziye bir elemanın önüne ekleyebilir, ekleyebilir veya ekleyebiliriz ''insert'':
! insert a 5 at position 0 to prepend:
write ( * , * ) insert ( 5 , 0 , [ 1 , 2 , 3 ])
            5            1            2            3

! insert a 5 at position 4 to append:
write ( * , * ) insert ( 5 , 4 , [ 1 , 2 , 3 ])
            1            2            3            5

! insert a 2 at position 2: 
yaz ( * , * ) ekleme ( 2 , 2 , [ 1 , 3 , 4 ])
            1            2            3            4
  • ''split'' bir dizinin ilk veya ikinci yarısını döndürmek için kullanılabilir:
write ( * , * ) split (arange ( 1 , 5 ), 1 )
            1            2

! return first half of the array
write ( * , * ) split (aralık ( 1 , 5 ), 2 )
            3            4            5
  • Yukarıdakiler, özyinelemeli ikili ağaç arama veya sıralama için kullanışlıdır, örneğin, ''sort'' bu kütüphanedeki uygulamaya bakın .

''sort'' artan düzende sıralanmış bir diziyi döndürür:

real,dimension(5) :: x
call random_number(x)
 write ( * , * ) x
    0.997559547       0.566824675       0.965915322       0.747927666       0.367390871     
write ( * , * ) sort(x)
    0.367390871       0.566824675       0.747927666       0.965915322       0.997559547
  • ''reverse'' Azalan düzende sıralamak için kullanın :
write( * , * )reverse(sort(x))
    0.997559547       0.965915322       0.747927666       0.566824675       0.367390871
  • ''limit''Fonksiyon, bir skaler veya örneğin bir alt ve üst sınır, bir dizi, bir değeri sınırlamak için kullanılabilir:
! limit a scalar (5) within bounds 1 and 4
write(*,*)limit(5,1,4)
           4

! flipping the bounds works just as well
write(*,*)limit(5,4,1)
           4
  • ''limit'' Ayrıca dizilerde de çalışır:
write(*,*)limit(arange(0,4),1,3):
           1           1           2           3           3

Arkadaşlar görmüş olduğunuz üzere fonksiyonları kullanarak birçok işlem yaptık. Bu işlem, sayısal hesaplamaları hızlıca bulmamıza yarıyor. Sistemin ve işlevlerini kullanımını bol örnekler ile 2. dersimizde devam edeceğiz... Şimdilik kendinize iyi bakınız efenim... Saygılarla...



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:  

Enjoy the vote and reward!

Emeklerine sağlık başarılar. :)

teşekkür ederim :)

Eline sağlik çok iyi olmuş 👍

teşekkür ederim :)

eline sağlık, umarım devamı gelir

teşekkür ederim devamı gelecek tabiki :)

eline emeğine sağlık hocam

teşekkür ederim :)

Your contribution cannot be approved because it does not follow the Utopian Rules.

ellerine sağlık

teşekkür ederim abi :)

Thank you for the contribution. It has been approved.
utopian have new update rules... please look what is new rule for tutorial .... and give more quality next time. thank you

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

thank you :) @arie.steem

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!
  • This is your first accepted contribution here in Utopian. Welcome!

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