Archive for C programlama

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);
}
Merhabalar bu gün c dilinde örnek bir program paylaşacağım. Program yine öğrenci bilgilerini dizide tutan bir yapıya sahip olacak. Dİğer programlardan farkı ise bu işlemleri bir menü yardımıyla, bize bir kaç seçenek sunarak yapmasıdır. Programı kısaca özetledikten sonra satır satır açıklamaya çalışacağım.

Öncelikle bilgileri tutacak dizileri tanımladım. Ben iki kişinin bilgilerini tutabilecek diziler tanımladım, siz daha fazla öğrencinin bilgilerini tutan diziler tanımlayabilirsiniz. Tüm işlemleri fonksiyonlarda yaptıracağım, her işlem için ayrı ayrı fonksiyonlar tanımladım. Gördüğünüz üzere main fonksiyonu içinde sadece “menu” fonksiyonunu çağırdım. Menü fonksiyonu ise kullanıcıya seçenekler sunarak yapılacak işlemi seçmesini sağlıyor. “bilgiler” fonksiyonu öğrenci bilgilerini diziye alırken, “listele” fonksiyonu alınan bu verilerin, tamamının listelenmesini sağlıyor. “bul” fonksiyonu ise öğrenci bilgilerinin, öğrenci numarası girilerek görüntülenmesini sağlıyor. “bul” fonksiyonu için bir nevi arama fonksiyonu da read more »

Bu gün pointer’ ın struct ile kullanımından bahsedeceğim ve bir de örnekle açıklamaya çalışacağım.  Daha önce de bahsettiğim gibi pointer, değişkenlerin adres bilgilerini tutan işaretçlerdir. Bir pointerın içeriğine ulaşmak için “*” işareti kullanılır. Pointerlar adres bilgisi üzerinden işlem yaptıkları için referans tipinde değişkenlerdir. Pointerları da kısaca hatırlattıktan sonra struct ile pointer kullanımını daha iyi anlamak için örnek programa bakalım.

 

#include
struct ogrenci
{
char ad[20];
int vize;
int final;
};
void main()
{
struct ogrenci ogr1,*ogr2;
//scanf(“%s”,ogr1.ad);
ogr1.vize=90;
ogr1.final=80;
printf(“%d %dn”,ogr1.vize,ogr1.final);
ogr2=&ogr1;
ogr2->vize=35;//-> işareti pointer ın içeriğini ifade eder
ogr2->final=40;
printf(“%d %dn”,ogr1.vize,ogr1.final);
}

 

Yine struct içinde öğrenciye ait ad, vize ve final notlarını tanımladım. Main fonksiyonu içinde “struct ogrenci” yapısından ogr1 ve pointer türündeki *ogr2 değişkenlerini türettim. ogr1 değişkenine bilgileri atadıktan sonra read more »

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 gün C dilinde karakterlerle yapılabilecek işlemler hakkında bilgi vermek istiyorum. Bu işlemleri yapabilmek için öncelikle karakter kütüphanesi olan “ctype.h” kütüphanesini eklemiş olmanız gerekiyor. bu kütüphane ile karakterler verilerini işleyebilir ve test edebilirsiniz. Bu kütüphanede ile bir çok işlemi yapabilmek mümkün ama ben metni büyük harfe dönüştüren programı yazacağım. Küçük harfi büyük harfe çeviren fonksiyon ise “toupper” fonksiyonudur.

Bu kadar ön bilgiden sonra programa geçebiliriz. Gördüğünüz gibi “ctype.h” kütüphanesini ekledim. Program, main fonksiyonu içinde metni yani read more »

Bu yazıda, programlama dillerini vazgeçilmez elemanları olan döngüleri anlatıyorum. Döngüler, bilgisayar programlamada işimizi kolaylaştıran, bizi büyük zahmetlerden kurtaran elemanlardır. Yazının devamında while, do-while ve for döngülerinin, örneklerle beraber anlatımını bulabilirsiniz.

1. While Döngüsü

While(ifade)
{
Deyimler;
}
Örnek: 

#include
void main()
{
int vize,final;
int sayac=1;
while(sayac<=3)
{
printf(“n%d. ogrencinin vize notu:    “,sayac);
scanf(“%d”,&vize;);
printf(“%d. ogrencinin final notu:   “,sayac);
scanf(“%d”,&vize;);
sayac++;
}
}

Şeklinde kullanılır. Bu ifade doğru olduğu sürece döngü çalışır. Döngünün sonuna gelindiğinde read more »

Bugünkü konu, C dilinde global ve yerel değişkenler ile static değişkenlerde genel bir sıkıntı olduğunu biliyorum. En azından öyle olduğunu bizim dönemden tahmin ediyorum. Bu yüzden bu konuyu yazmaya karar verdim. Yeni başlayanlar için ilaç gibi bir konu bence ;)


Programa geçmeden önce bu değişkenleri açıklarsam daha faydalı olacağını düşünüyorum. Global değişkenler, herhangi bir kod bloğu içinde tanımlanmazlar. Bu yüzdendir ki 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 »

Merhabalar, bu gün yine C dilinde bir örnek kod yazmayı düşünüyorum. Bu kod girilen metnin e-mail adresi olup olmadığını basitçe kontrol eden bir kod. Biraz açmak gerekirse, bu programda bir ‘pointer’ la dizinin adres içeriklerini teker teker kontrol edip, ‘@’ simgesinin olup olmadığına bakacağız. Varsa “gecerli e-mail”, yoksa “gecersiz e-mail” çıktılarını göreceksiniz. Programı sizlere sunmadan önce ‘pointer’lara kısaca değinmek istiyorum.

Pointer nedir?
Pointer‘ ın Türkçe karşılığı işaretçidir. “int *ptr;” şeklinde tanımlanır. Bellekte, değişkenler için ayrılan adres bilgilerini tutar. Aşağıdaki örneği incelediğinizde read more »