C Programlama Dili'ne Giriş

  Dersler
* Önsöz

* Giriş
* Veri Tipleri, Değişkenler
* Operatörler
* Temel G/Ç Fonksiyonları
* Temel Kütüphane Fonksiyonları
* Karşılaştırma Deyimleri
* Döngüler
* Fonksiyonlar I
* Fonksiyonlar II
* Diziler
* Gösterici (Pointer) Kavramı
* Katarlar (Stringler)
* Dinamik Bellek Yönetimi
* Gösterici Uygulamaları
* Yapılar ve Birlikler
* Dosya Yönetimi
* Bit Düzeyinde Çalışmak
* Port Denetimi
* Grafik Kullanımı
* C Makroları

* Kısaca C++
* Derleme Seçenekleri
* Tarih-Saat Fonksiyonları
* Monte-Carlo Yöntemleri
* Fortran ve C

* Yararlanılan Kaynaklar

  C/C++ Derleyicileri
* Dev-C++
* Salford (silversoft FTN95)
* GCC
* Turbo C
* Eclipse IDE
* NetBeans IDE

  Dış Bağlantılar
* programlama.com
* C Programcıları Derneği

* C (wikipedia)
* C++ (wikipedia)
* cplusplus.com
* koders.com
* Hot scripts

 

Ders 25: Fortran ve C

###############----- (%75)

En son güncelleme: Wed, 30 Nov 2011 13:22:02 +0200

Giriş

Programlama dillerine ait derleyiciler kendi çalıştırılabilir kodlarını üretebildikleri halde, bazen diller arası bir köprü oluşturulup, bir dilde halihazırda yazılmış olan bir kodun başka bir dil tarafından kullanılması gerekebilir. Örneğin Pascal programlama dili ile yazılmış olan bir alt programın, C dili içerisinde çağırılması gibi.

Bu kısımda, daha çok Linux işletim sisteminde ihtiyaç duyulan, GCC, G77 ve G95 derleyicileri kullanılarak C ve Fortran programları birbiri içerisinde nasıl kullanılacağı anlatılacaktır. G77, Fortran 77 programları ve G95, Fortran 90/95 programları için Linux ve Windows ortamında çalışabilen (GCC gibi) bir komut satırı derleyicisidir ve derleme seçenekleri GCC'ye oldukça benzerdir, bkz: g95.org. Benzer bağlantılar (eğer derleyici izin veriyorsa) başka diller arasında da kurulabilir.


25.1   Fortran ve C Karşılaştırılması

FORTRAN (FORmula TRANslation), ilk olarak 1954'de IBM tarafından geliştirilmiş ve geniş kitleler tarafından kullanılmış ilk yüksek düzey derlenebilir dildir. Günümüze kadar, sayısal hesaplamalar içeren bilimsel ve mühendislik uygulamalarında yoğun olarak kullanılmış ve gelecekte de kullanılacaktır. Daha sonra geliştirilen C/C++ veya Java gibi programlama dilleri özellikle mühendisler tarafından Fortran'a nazaran daha fazla rağbet görmüştür. Fakat bu, C/C++ veya Java Fortran'dan üstündür anlamına gelmez.


25.2   Fortran ve C'yi Birlikte Kullanmak için İki Sebep

Fortran ve C/C++ dillerini birbiri içerisinde kullanmak için en az iki sebep vardır.

  1. Özellikle Fizik ve Matematik alanında, C programları içerisinde Fortran kullanmak gerekebilir. Çünkü, günümüze kadar sayısal analiz yöntemlerin bir çoğu Fortran 77 kodları ile yazılmıştır. Bu kodların C'ye çevrilmesi bazen çok zaman alabilir. Bunun yerine burada anlatılan metotlarla Fortran kodları değiştirilmeksizin C içerisinde kullanılır.
  2. Fortran içinde C kullanmak bazen kaçınılmaz olur. Fortran derleyicilerinde, bir bilgisayarın portlarına erişim için bir fonksiyon veya yöntem tanımlanmamıştır. Ancak, C derleyicilerinin bünyesinde bulunan port erişim fonksiyonları, burada anlatılan yöntemler izlenerek, Fortran programları içerisinde kullanılabilir.

25.3   Fortran Programlarının C'de Kullanılması

Aşağıdaki Fortran 95 fonksiyonunun topla.f95 adlı bir dosyada, ve C progamının ana.c adlı bir saklandığını varsayalım.

 ! topla.f95: iki sayının toplamını gönderir  
 INTEGER FUNCTION topla(a,b)
 INTEGER, INTENT(IN) :: a,b
  topla = a + b
 END FUNCTION
 /* ana.c: Fortran fonksiyonunun çağırır */
 #include <stdio.h>

 int topla(int *,int *);

 main()
 {
   int x =1,y=2, z;

   z = topla(&x,&y);

   printf("Toplam = %d\n",z);
 }

C programı içerisinde, topla fonksiyonu kullanılırken, fonksiyona değişkenlerin değerleri değil adreslerinin geçirildiğine dikkat edin.

Öncelikle topla.o dosyası (G95 derleyicisi ile) aşağıdaki komutla üretilir:

 $ g95 -fno-underscoring -c topla.f95

 NOT
Buradaki -fno-underscoring seçeneği kullanılmasaydı,
Fortran fonksiyonun adı aşağıdaki gibi alt çizgi karakteri '_' ile bitirilmesi gerekirdi:
 ! topla.f95: iki sayının toplamını gönderir
 INTEGER FUNCTION topla_(a,b)
 INTEGER, INTENT(IN) :: a,b
  topla_ = a + b
 END FUNCTION

Artık üretilen topla.o kodu ile ana.c programı GCC ile birlikte derlenebilir:
 $ gcc ana.c topla.o -o ana
 $ ./ana
 Toplam = 3
Fortran fonksiyonun C içinde kullanımı Şekil 25.1 de gösterilmiştir.



Şekil 25.1: Bir Fortran programı ile C programının GCC ve G95 derleyicileri kullanılarak birleştirilmesi.


25.4   C Programlarının Fortran'da Kullanılması

Aşağıdaki dosyalara sahip olduğumuzu düşünelim:

/* topla.c: iki sayının toplamını göderir */   
int topla(int *a,int *b)
{
   int c;
   c = *a + *b;
   return c;
}
! ana.f95: C fonksiyonunun çağırır   
PROGRAM Main
INTEGER :: x=1, y=2, z, topla

  z = topla(x,y)

  PRINT *,"Toplam = ",z

END PROGRAM
İlk olarak topla.c GCC ile aşağıdaki gibi derlenerek topla.o dosyası oluşturulur:
 $ gcc -c topla.c
Daha sonra ana.f95 ve topla.o beraber derlenir:
 $ g95 -fno-underscoring ana.f95 topla.o -o ana
Bu işlemin sonucunda çalıştırılabilir ana* dosyası üretilir. Bu dosya çalıştırıldığında program çıktısı aşağıdaki gibi olur:
 $ ./ana
 Toplam = 3


Powered by PHP