Öncelikle kendimi tanıtayım Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği öğrencisiyim. C dilinde yazılım geliştiriyorum. Öğrendiklerimi yazdığım bir blogum var ve burada c programlama dili dersleri de yayınlıyorum.
Biliyorum internette çok fazla ders setleri yayınlandı. Bunlardan farklı olmak için yayınladığım c programlama dili derslerine 1 konu anlatımı 1 örnek şeklinde gidip yazdığım örneklerin kaynak kodlarını, kod analizini(adım adım) ekran görüntülerini ve çoğu konu anlatım dersim için video eklemeye çalışıyorum. Ayrıca derslerle ilgili veya c diliyle ilgili herhangi bir sorunuz yorum attığınız takdirde aynı gün içerisinde cevap verme garantisi veriyorum. :p
Son olarak ta en son yayınladığım c dilinde fonksiyonları anlattığım 3 dersin son dersini burada paylaşıyorum ve ders anlatımı hakkında yorumlarınızı bekliyorum arkadaşlar.
Şimdiden teşekkürler...
C Dili Dersleri Fonksiyonlar
C dili dersleri serisinin bu dersinde fonksiyonlara kaldığımız yerden devam edeceğiz. Bundan önceki 2 fonksiyon dersimizde fonksiyon tiplerinden, fonksiyonlara matrislerin ve dizilerin nasıl yollanacağından bahsetmiştik.
C dilinde fonksiyonlarda birden fazla değeri return edebilir miyim ? Fonksiyonlarda birden fazla return kullanabilir miyim ? Fonksiyonların bu dersinde bu sorulara yanıt arayacağız.
C Dilinde Return Nedir? Return Nasıl Kullanılır?
Void olmayan tipe bir fonksiyonun sonunda herhangi bir değişkeni return değişken ismi; şeklinde kullandığımızda return edilen değer fonksiyonun çıktısı olduğunu geçen derslerden biliyoruz.
Peki bir fonksiyonda birden fazla return kullanabilir miyiz? Fonksiyon içerisinde birden fazla return kullandığımızda, fonksiyon ilk return den sonra sonlanır.
Bu anlattığımıza en güzel örnek ="http://www.pubtekno.com/2016/05/c-dilinde-fibonacci-saylarn-bulan.html"]"C Dilinde Fibonacci Sayılarını Bulan Program" adlı makalemizde fonksiyon kullanarak istediğimiz sıradaki fibonacci sayılarını bulan program konuyu anlamaya yardımcı olacaktır.
Kaynak Kod:
int fonksiyon(int x)
{
int sonuc=0;
if(x==1)
{
return 0;
}
if(x==2)
{
return 1;
}
if(x>2)
{
sonuc=fonksiyon(x-1)+fonksiyon(x-2);
}
}
Kod Analiz:
- Yukarıdaki örnekte fonksiyona gelen x değeri 1 ise fonksiyon 0 değerini döndürecek. Daha sonra gelen durumlara bakılmadan fonksiyon sonlanacak.
- Eğer gelen sayı 1 değil 2 ise fonksiyon 1 değerini döndürecek ve daha sonraki duruma bakılmadan program sonlanacak.
- Fonksiyona gelen sayı 2 den büyük olduğu durumda örnek olarak 4 verelim fonksiyon 3 ve 2 değeri için tekrar dönücek. 2 değeri için sonuç 1, 3 değeri için ise sonuç 0 ve 1 olacak. Toplamda ise 1+0+1' den sonucu 2 bulmuş olacağız. Yani fibonacci serisinin 4. elemanı 2 dir.
Bu örnekte de gördüğümüz gibi birden fazla return kullandığımızda ilk return den sonra fonksiyon sonlanır.
Peki fonksiyonlarda aynı anda 2 değeri return edebilir miyiz?
Fonksiyonlarda aynı anda 2 değeri return edemeyiz. İki değeri return etmeye çalıştığımızda yani return a virgül b dersek, a değeri return edilir ve program sonlanır.
C dilinde fonksiyonlarda return komutunun kullanımı temel olarak bu şekildedir. Şimdi fonksiyonlarla ilgili bir örnek çözerek devam edelim.
Örnek: Bir dizideki en büyük değeri bulan fonksiyon
Kaynak Kod:
#include
#include
#include
int fonksiyon(int dizi[],int x)
{
static int i,j,temp,max;
max=0;
for(i=1;i {
if(dizi[max] {
max=i;
}
}
return max;
}
int main()
{
static int dizi[100],boyut,i,enbuyuk;
printf("Dizinin boyutunu giriniz :"); scanf("%d",&boyut);
for(i=0;i {
printf("Dizinin %d. elemanini giriniz :",i); scanf("%d",&dizi[i]);
}
enbuyuk=dizi[fonksiyon(dizi,boyut)];
printf("Dizinin en buyuk elemani : %d",enbuyuk);
return 0;
}
Kod Analiz
- Main fonksiyonu içerisinde kullanıcıdan dizinin boyutunu ve dizinin kendisini aldık.
- Daha sonra diziyi ve boyutu fonksiyona gönderdik.
- Fonksiyon içerisinde en büyük elemanın yerini bulduk ve en büyük elemanın yerini return komutuyla döndürdük.
- Böylece fonksiyon(dizi,boyut) komutu en büyük elemanın yerine eşit olmuş oldu.
- Dizi[fonksiyon(dizi,boyut)] diyerek en büyük elemanı ekrana yazdırdık.
Ekran Görüntüsü:
Örnek: C dilinde bir metinde en çok tekrar eden harfi bulan program
Kaynak Kod:
#include
#include
#include
int fonksiyon(char metin[],int uzunluk)
{
static int max,i,dizi[1000];
for(i=0;i {
dizi[metin[i]]++;
}
for(i='a';i<'z';i++)
{
if(dizi[max] {
max=i;
}
}
return max;
}
int main()
{
static char metin[1000],uzunluk;
static int dizi[100],boyut,i,enbuyuk;
printf("Bir metin giriniz :"); gets(metin);
while(metin[uzunluk]!='\0')
{
uzunluk++;
}
printf("Girdiginiz metin %d karakterden olusmaktadir.",uzunluk);
printf("\nEn cok tekrar eden karakter : %c",fonksiyon(metin,uzunluk));
}
Kod Analiz:
- Kullanıcıdan bir metin alarak gets komutuyla metin adlı dizi ye kayıt ettik.
- Daha sonra metin dizisinin elemanları null karakterine eşit olmadığı sürece uzunluk değişkenini 1 arttırarak metnin uzunluğunu bulduk.
- Sonrasında ise metnin uzunluğunu ekrana yazdırarak metnimizi fonksiyonumuza gönderdik.
- Fonksiyon içerisinde oluşturduğumuz dizinin metin[i] elemanını yani metindeki karakterlerin ascii tablosundaki karşılık gelen sayıdaki elemanını bir arttırdık.
- Bu şekilde bütün metni taradıktan sonra dizinin küçük a ve küçük z nin ascii tablosundaki değerleri arasındaki kısmı için en büyük değeri bulduk.
- Bulduğumuz değer en çok tekrar eden karakterin ascii tablosundaki karşılığı olmuş oldu.
- Bulduğumuz değeri return edip en çok tekrar eden karakteri ekrana yazdırdık.
Ekran Görüntüsü:
C dili dersleri serisinin bu dersinde "C dilinde fonksiyonlarda birden fazla değeri return edebilir miyim ?" ve "Fonksiyonlarda birden fazla return kullanabilir miyim ?" sorularına yanıt aradık ve fonksiyonlarla ilgili örnekler çözdük.
Ayrıca "C Dili Dersleri Fonksiyonlar (1/3)" için buraya ve "C Dili Dersleri Fonksiyonlar (2/3)" için buraya tıklayın.
"C Dili Dersleri Fonksiyonlar" adlı bu makaleyi beğendiyseniz yorum yapmayı ve paylaşmayı unutmayın.
Kaynak: Pubtekno