aofsorular.com
YBS201U

Fonksiyonlar

8. Ünite 20 Soru
S

Fonksiyon nedir?

C Programlama dilinde, fonksiyonlar önemli bir yapıya sahip alt program kodlarıdır. Fonksiyonlar, yazılan program kodlarının daha modüler bir şekilde yapılandırılmasını sağlarlar. Fonksiyonların kullanımı sayesinde program kodları daha küçük alt bölümlere ayrılabilmektedir.

S

main() fonksiyonunun diğer fonksiyonlardan farkı nedir?

İçerisine ana program kodlarının yazıldığı main() fonksiyonu da bir fonksiyondur. Ancak main() fonksiyonu mutlaka olması gerekli ana fonksiyondur. Kodlar çok uzun satırlar hâlinde, yalnızca main fonksiyonunun içerisine yazılabildikleri gibi modüler bir tasarımla fonksiyonlar hâlinde yazılıp main() fonksiyonunun içinden çağrılabilmektedirler. main() fonksiyonun içerisinde yalnızca fonksiyonun çağrılma işlemi gerçekleştirilecek, gerçekte o fonksiyonun yapması gerekli işlem, main() dışında yer alan ilgili fonksiyon bloğu içerisinde gerçekleştirilecektir. Böylece main()’in kontrolü dâhilinde diğer fonksiyonlara görev paylaşımı yaptırılmaktadır.

S

C programlama dilinde fonksiyon hangi satırda tanımlanmalıdır?

Fonksiyon tanımlama satırı, main() öncesinde, “#include” ifadesini içeren önişlemci bölümünün hemen altında yapılabilir. Böylece, main() fonksiyonu içerisinde fonksiyonu kullanabilme yetkisi oluşturulmuş olur. Çağrılacak fonksiyon main()’den önce tanımlanmaz ise derleme hatası verecektir.

S

Fonksiyon tanımlama nasıl yapılır?

Bir fonksiyonu kullanmadan önce, değişken tanımlamada olduğu gibi fonksiyonu tanımlamak gerekmektedir. Tanımlama aşamasında fonksiyonun giriş ve çıkış değerlerinin sayısı ve türü belirtilir. Yapılacak işlemler ise fonksiyon bloğunun içindeki kod satırları ile sağlanır. Fonksiyon tanımında genel bir kural olmamakla birlikte, fonksiyon adını amacına uygun bir şekilde belirlemek daha uygun olacaktır. 

Fonksiyon tanımı;

fonksiyon_tipi fonksiyon_adı(tip1 arguman1, tip2 arguman2);
veya
fonksiyon_tipi fonksiyon_adı(tip1, tip2);
şeklinde yapılır. Tanımlama satırında argüman değişkenlerinin adını(arguman1, ar- guman2) yazma zorunluluğu yoktur.

S

Fonksiyon tanımlarken hangi durumlarda void ifadesi kullanılır?

Fonksiyon yaptığı işlemin ardından, main() ortamına herhangi bir değer geri döndürmüyor ise fonksiyon_tipi bölümüne void ifadesi yazılır. Geri değer döndürmeyen fonksiyonlara, main()’den fonksiyona gönderilen değerleri printf fonksiyonu kullanarak ekrana yazdıran fonksiyonlar örnek olarak gösterilebilir.

S

Fonksiyon tanımlanmasından sonra “;” (noktalı virgül) kullanılmazsa ne olur?

Fonksiyon tanımlamasından sonra “;” (noktalı virgül) işaretinin unutulması derleme hatası verecektir.

S

Fonksiyona değer yöntemiyle nasıl argüman geçirilir?

Değer yöntemi ile çağırma işlemi, Fonksiyona iletilen değişkenlerin(argümanların) yalnızca sayısı kadar tip bildirimi iletilmekte olup, fonksi-yon bloğu aktif olduğu anda, fonksiyonun kendi içerisinde, gönderilen argümanların birer kopyası oluşturulmaktadır. Bir diğer ifade ile, fonksiyon içerisindeki işlemlerde, main() fonksiyonunda ilk anda oluşturulan orijinal veri yerine kopyası ile işlem yapılmaktadır. Böylece fonksiyon içerisinde orijinal değerler değiştirilememektedir.

S

Fonksiyona referans yöntemi ile argüman geçirme nasıl yapılır?

Değer yöntemi ile fonksiyonlara argüman geçirildiğinde fonksiyondaki değişiklikler orijinal değeri değiştirmemesine rağmen, fonksiyona referans yöntemi ile argüman geçirildiğinde orijinal değer değişebilmektedir. Çünkü referans yöntemi, orijinal değişkenin adres değerini kullanmaktadır. Bellekteki adreslerle işlem yapılabilmesi için önceki ünitede anlatılan gösterici (pointer) yapıları kullanılmaktadır. Fonksiyona geçirilen argüman bir gösterici-değişken olarak kullanılmaktadır.

S

Referans yöntemi ile argüman geçirildiğinde neden return ifadesi çok fazla kullanılmaz?

Referans yöntemi ile argüman geçirildiğinde, çoğunlukla fonksiyondan bir geri dönüş değerine ihtiyaç kalmamaktadır. Bu nedenle fonksiyonun son bölümünde de return ifadesi yer almamaktadır.

S

Diziler fonksiyona argüman olarak nasıl geçirilir?

Diziler, göstericilerle karşılıklı olarak birbirleri yerine kullanılabilen değişken küme yapılarıdır. Bir dizinin elemanları fonksiyona argüman olarak geçirilmek istendiğinde her bir elemanın ayrı ayrı gönderilmesi gerekir. Ancak bu şekildeki kullanım çok pratik değildir. Bu nedenle dizinin tüm elemanlarını geçirebilmek için dizinin ilk elemanının adresi yani başlangıç adresini geçirmek daha uygun olacaktır. Dizinin başlangıç adresinin geçirilmesi aslında diziyi gösterici olarak kullanmak anlamına da gelir.

S

C programlama dilinde, hazır kütüphane fonksiyonları nasıl çağrılır?

C programlama dilinde birçok hazır kütüphane bulunmaktadır. Bu kütüphane fonksiyonlarını kullanıp, gereksiz yere zaman harcayarak, yeniden fonksiyon oluşturmaya gerek kalmamaktadır. Yalnızca önişlemci bölümüne ilgili fonksiyonun içerildiği “*.h” uzantılı kütüphane dosyalarını dâhil etmek yeterlidir.

S

#include <math.h> adlı başlık fonksiyonunun görevi nedir?

Hazır matematiksel fonksiyonları kullanabilmek için önişlemci tanımları bölümüne #include <math.h> adlı başlık dosyası eklenmelidir.

S

Başlıca matematiksel kütüphane fonksiyonları nelerdir?

Başlıca matematiksel fonksiyonlar acos(), asin(), atan(), ceil(), cos(), cosh(), exp(), flo- or(), log(), log10(), pow(), sin(), sqrt(), tan(), tanh(), ceil() olarak sıralanabilir.

S

Karakterleri veya dizgileri kullanarak işlem yapan hazır kütüphane fonksiyonları hangi başlık dosyaları tarafından içebilirler?

Karakterleri veya dizgileri kullanarak işlem yapan hazır kütüphane fonksiyonları string.h ve ctype.h başlık dosyaları tarafından içerilirler.

S

strcpy fonksiyonunun işlevi nedir?

Zaman zaman farklı karakter dizgilerini bir arada kullanarak işlem yapmak gereke- bilir. Bu durumdaki fonksiyonlara örnek olarak strcpy verilebilir. strcpy(birinci, ikinci) fonksiyonu, parantezler arasında iki parametre(veri-değişken) alır. Bunlardan ikincisini birinciye kopyalar.

S

strcmp() fonksiyonunun işlevi nedir?

strcmp() fonksiyonu ile karakter dizilerinin sayısal olarak karşılaştırılması sağlanmaktadır. Karakterlerin her birinin ASCII olarak sayısal bir karşılığı bulunmaktadır. strcmp() ile bu harflerin sayısal karşılıkları kullanılarak dizilim sırası karşılaştırılmaktadır.

S

strcat( birinci, ikinci) fonksiyonunun işlevi nedir?

strcat( birinci, ikinci) fonksiyonu, aldığı iki adet giriş dizgilerinden ikincisini birincisinin sonuna boşluk bırakmadan ekler.

S

Bellek ayırma için hangi kütüphane fonksiyonları kullanılabilir?

Bellek ayırma için;
void *malloc(n);
void *calloc(n, tip_uzunluğu);
fonksiyonları kullanılabilir. malloc ve calloc fonksiyonlarının kullanımları farklı olsa
da yaptıkları işlem aynıdır. malloc argüman olarak doğrudan verinin byte türünden bü- yüklüğünü alırken, calloc fonksiyonu iki argüman alır. Bunlardan ilki kaç adet veri oldu- ğu, ikincisi ise bu verinin veri tipinin byte olarak değerini gösterir. pinin byte olarak değerini gösterir.,
malloc veya calloc ile tahsis edilen bellek alanının kullanımı bittiğinde, free fonksiyonu ile ilgili bellek alanı serbest bırakılır. Bellek ayırma işlemlerinde bir diğer fonksiyon ise realloc fonksiyonudur. Bu fonksi- yon ise malloc veya calloc ile ayrılan bellek alanı programın ilerleyen satırlarında, yetersiz kalma veya azaltılması gereken durumlarda mevcut ayrılan alana ilave bellek alanı ekleme veya çıkarma amacıyla kullanılır. realloc fonksiyonunun kullanılabilmesi için daha önceden malloc veya calloc fonksiyonu ile bellek tahsis edilmiş olmalıdır.

S

int isdigit(int c) fonksiyonunu görevi nedir?

c bir rakam ise 0’dan farklı, diğer durumda 0 gönderir. int isalpha(int c); c bir harf ise 0’dan farklı, diğer durumda 0 gönderir.

S

int tolower(int c) fonksiyonunun işlevi nedir?

Giriş argümanını küçük harfe çevirir.