PROGRAMLAMAYA GİRİŞ FONKSİYONLAR
Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur. Bu özellik bütün yapısal dillerin (C, Fortran, Pascal,...) temelini oluşturur. Yapısal dillere hakim olmak için fonksiyon oluşturmayı ve kullanmayı iyi öğrenmek gerekir
Fonksiyonlar Fonksiyon, programcı tarafından seçilen bir kod bloğuna isim vermek için kullanılan araçtır. Fonksiyon ismi program içerisinde çağrıldığında fonksiyonun temsil ettiği kod çalıştırılır Örneğin bir sayının faktöriyelini hesaplayan aşağıdaki kod parçasını program içerisinde birçok defa yazmak yerine aynı işlemi gerçekleştiren bir fonksiyon tasarlayıp faktöriyel hesabına ihtiyaç duyulduğunda sadece bu fonksiyonun ismini yazmak çok daha pratik olacaktır
Fonksiyon Tanımlama
Değer döndüren fonksiyonlar
void fonksiyonlar
Math kütüphanesi fonksiyonları
Math kütüphanesi fonksiyonları
C Programının Genel Yapısı / Fonksiyonun Çağırılması
Fonksiyon İçerisindeki Değişkenler Fonksiyon ismi ile aynı isme sahip değişken tanımlanmamalıdır. Örneğin aşağıdaki kodda, faktoriyel ismi öncelikle bir fonksiyon olarak tanımlanırken daha sonra bir tam sayı değişkeni için kullanılmıştır. Bu işlemin ardından faktoriyel ismi ile bir fonksiyon çağrısı yapılmıştır. Fakat derleyici isim ezme kurallarını dikkate aldığı için faktoriyel ismini bir tam sayı değişken olarak algılar ve fonksiyon çağrısı yapılamayacağını belirten bir hata verir. İkinci durumda ise tam sayı değişkeni fonksiyon çağrısından sonra tanımlandığı için derleyici faktoriyel isminin bir fonksiyona ait olduğunu bilir ve bir hata görmez ve kodu derler. Sağdaki kod çalışmasına rağmen pratik açıdan büyük problemler doğurabilir. Fonksiyon isimleri ile değişken isimleri asla karıştırılmamalıdır.
return
Örnek
Parametreler Fonksiyonlar yapacakları işlemler için kullanıcıdan bilgi isteyebilirler. Örneğin faktöriyel fonksiyonu hangi sayının faktöriyelinin alınacağını çağırandan(yani programcıdan) parametre olarak beklemektedir. Fonksiyon tanımlanırken dışarıdan beklenen değerler göz önünde bulundurulmalı ve parametreler buna göre yazılmalıdır. Örneğin bir sayının üstünü alan fonksiyon tasarlamak istersek kullanıcıdan iki değer almamız gerekir. İlk parametre üstü alınacak sayı iken diğer parametre üst değeri olmalıdır
Parametreler Aşağıda üst alan bir fonksiyon verilmiştir. Fonksiyon iki parametre alacak şekilde tasarlanmıştır. Eğer dikkat ederseniz fonksiyonun gövdesinde alınan parametreler kullanılmaktadır. Fonksiyonu çağıran kişi iki parametre değeri girmek zorundadır yoksa derleyici hata verecektir. Çağrı yapılırken arka planda derleyici fonksiyonun tasarımına bakar ve fonksiyon çağırmak için gereken makine kodlarını oluşturur. Eğer fonksiyonu çağırırken eksik parametre girerseniz iki parametre almak üzere yazılmış olan makine kodları da yanlış sonuçlar verecektir. Bu yüzden derleyici parametre sayısı konusunda hata kabul etmez.
Parametreler
Fonksiyon Değişken Parametre ÖRNEK1!
Fonksiyon Değişken Parametre ÖRNEK2!
Örnek
Fonksiyon Prototipi
Blok Yapısı
Fonksiyon Dizi Örnek int toplam_hesapla(int n, int A[]) prototipinde bir dizinin elemanlarının toplamını hesaplayan bir fonksiyon yazınız.
Fonksiyon Dizi Örnek (Devam) #include <stdio.h> #include <conio.h> int toplam_hesapla(int n,int a[]) { int toplam=0; for(int i=0;i<n;i++) { toplam=toplam+a[i]; } } return toplam; int main() { int i,n,dizi[50]; printf("gireceginiz eleman sayisini belirtiniz(1 to 50): "); scanf("%d",&n); printf("\n"); for(i=0;i<n;i++) { scanf("%d",&dizi[i]); } printf("girdiginiz elemanlarin toplam = %d\n",toplam_hesapla(n,dizi)); getch(); return 0; }
Statik Değişkenler
rand() fonksiyonu C dilinde, stdlib.h dosyası içine konulan rand() fonksiyonu rasgele sayı üretir. Farklı C derleyicileri farklı algoritmalar kullanabilir. Ama, genellikle, her rand() fonksiyonu 0 ile RAND_MAX arasında bir sayı üretir. RAND_MAX, çoğu derleyicide 32767 olarak belirlenir ve RAND_MAX sabiti stdlib.h dosyası içine konulur Yazı-tura Oyunu: Yazı-tura oyununda tura== 0, yazı== 1 olmak üzere yalnızca 0 ile 1 sayılarından birisini rasgele üretmek için: rand() % 2
rand() fonksiyonu 1-100 aralığında 10 tane rasgele sayı üretmek için Her seferinde farklı rasgele sayılar elde edebilmenin bir yolu: srand(time(null))