Archive for fonksiyon

Programlama dillerini kolaylaştıran en önemli unsurlardan bir tanesi de döngülerdir. For döngüsü ve while döngüsü en çok kullanılan döngülerdendir. Peki bu döngülerle her türlü problem çözülebilir mi? Cevap belki “evet”. Çünkü ben henüz “hayır” diyebileceğim bir sonuçla karşılaşmadım. Ama bazı durumlar vardır ki başka bir yolla daha kısa kod kullanarak, daha yüksek performans alarak problemler çözülebilir. Bu yazımda ben de bu diğer yollardan biri olan recursive(özyinelemeli) fonksiyonları anlatacağım.

Recursive fonksiyonlar, kendi kendini çağıran fonksiyondur. Bir kontrol ile sınırlandırılmazsa read more »

Uzun zamandır c# hakkında yazı yazmamam, java vizesinden bir gün önce bu yazıyı yazmama sebep oldu diyebilirim. Belki zamansız bir yazı oldu benim için ama bir matris çarpımı programının sitede bulunması da gerekiyordu.

Aslında matris çarpımı klasik bir çok boyutlu dizi örneğidir. Bildiğiniz üzere matrisler iki boyutlu dizilerde tutulur. Ben de doğal olarak programda iki boyutlu dizi kullandım. Matris çarpım programının çarpım aşamasındaki indislerini, işlemin matematiksel boyutunu göz önüne alarak kolaylıkla oluşturabilirsiniz. Üç boyutlu iki kare matrisin çarpımını düşünün, a ve b matrisi olsun bunlar. Rastgele bir satırın sonucu şu şekilde olur:

sonuc32=a31*b12+a32*b22+a33*b32

gördüğünüz gibi üstteki ifade 3. satır, 2. sütundaki sonucun hesaplanma aşamasını read more »

Bu gün farkettim, uzun zamandır sitede kod yayınlanmamış. Bu yüzden C dilinde bir program yazmaya karar verdim. Programı özetlemek gerekirse, bir pozitif tamsayının asal çarpanlarını bulan programı yazacağım. Program, asal çarpanlarını bulacağı sayıyı kullanıcıdan alacak.

Asal çarpanları anlatmama gerek yoktur galiba. Bu yüzden hemen programın anlatımına geçiyorum. Örneğin 120 sayısının asal çarpanları 2 x 2 x 2 x 3 x 5 ‘ dir.Bu programda 2 fonksiyon kullanacağız. Fonksiyonlardan biri sayının asal olup olmadığını kontrol etmelidir. Dolayısıyla, bu fonksiyon bir pozitif sayıyı parametre olarak almalı ve asal ise 1; değilse 0 değerini döndürmelidir. Diğer fonksiyon ise, bir sayının bir başka sayıya bölünüp bölünmediğini belirlemelidir. Dolayısıyla bu fonksiyon iki sayıyı parametre olarak almalı ve ikinci sayı birincisini bölüyorsa 1; bölmüyorsa 0 değerini döndürmelidir.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include "stdio.h"
int asal(int);
int bol(int,int);
/*Sayinin asal carpanlarini bulur*/
int main(void)
{
    int sayi,i;
    printf("Bir pozitif sayi giriniz: ");
    scanf("%d",&sayi);
    printf("%d sayisinin asal carpanlari: ",sayi);
    for(i=2;sayi>0;i++)
    {
        if(asal(i)&&bol(sayi,i))
        {
            printf("%3d",i);
            sayi=sayi/i;
            i--;
        }
    }
    return(0);
}
/* s’nin asal olup olmadigini kontrol eder*/
int asal(int s)
{
    int i;
    for (i=s-1;i>1;i--)
    {
        if(s%i==0)
        return(0);
    }
    return(1);
}
/*x’in y’ye bolunurlugunu kontrol eder*/
int bol(int x, int y)
{
    if(x%y==0)
        return(1);
    else
        return(0);
}

Dün C dilinde struct yapısını örneklerle anlattım. Bu gün de struct ile fonksiyon kullanımını anlatacağım. Bu yazıda, struct içinde tanımlanan değişkenler nasıl fonksiyona gönderilir, fonksiyon içinde bu değişkenler nasıl kullanılır, gibi soruların cevabını bulabileceksiniz. Bu konuyu açıklamak için tarih bilgilerini ekrana yazdıran bir örnek hazırladım. Önce örnek programı verip ardından gerekli açıklamalarda bulunacağım.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include
//Tarih struct'ı
struct tarih
{
    int gun;
    int ay;
    int yil;
};
//yaz fonksiyonunun prototipi
void yaz(struct tarih);

void main()
{
    struct tarih trh;
    trh.gun=8;
    trh.ay=1;
    trh.yil=2010;
    yaz(trh);
    printf("%dn",trh.yil);
}

void yaz(struct tarih trh)
{
    printf("%d.%d.%dn",trh.gun,trh.ay,trh.yil);
    trh.yil=2011;
}

Bu örnekte de tarih adında bir struct tanımladım. Tarihe ait olan gün, ay, yıl gibi değişkenleri de read more »

Aralarında mantıksal bir ilişki bulunan farklı türden veriler “struct” lar içerisinde bir bütün olarak tanımlanabilirler. Bir örnek verecek olursak: Öğrencilere ait ad, soyad, vize notu, final notu gibi değişkenleri her öğrenci için ayrı ayrı tanımlaycağımızı düşünürsek iş, içinden çıkılmaz bir hal alır. C dilinde struct anahtar kelimesi ile programcılar kendi değişken tiplerini oluşturabilirler. Bunun için de struct vardır  “Struct” lar diziler gibi bellekte sürekli kalırlar fakat dizilerin aksine değer tipindedirler ve

struct yapı-adı
{
tip adı değişken adı;
tip adı değişken adı;
};

şeklinde tanımlanırlar.Struct kullanarak öğrenci bilgilerini tutan örnek bir program yazalım.

 

#include
struct kayit
{
char ad[20];
int vize;
int final;
float ort;
};
void main()
{
struct kayit ogr;
printf(“ogrencinin adi:”);
gets(ogr.ad);
printf(“ogr vize-final gir :”);
scanf(“%d%d”,&ogr.vize;,&ogr.final;);
ogr.ort=ogr.vize*0.6+ogr.final*0.4;
printf(“ogr adi: %sn”,ogr.ad);
printf(“ogr vize: %d    final:%dn”,ogr.vize,ogr.final);
printf(“ogr ort: %fn”,ogr.ort);
}

Gördüğünüz gibi programda struct yapısı içinde read more »

Bu yazımda yine C programlama dilinde bir program yazacağım. Programı yazmak için yapılması gerekenleri (bir nevi sözde kodları) anlattıktan sonra programa geçeceğim. İlk olarak girilecek metni bünyesinde tutacak bir char dizisi tanımlayacağım. Klavyeden metni aldıktan sonra, metni tutan char dizisini fonksiyona göndereceğim. Bu  fonksiyon uzunluğu sayısal bir değer olarak geri döndürecek. Fonksiyon içinde uzunluğu for döngüsü yardımıyla bulup read more »