C programlama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

C programlama - fonksiyon yazımı ve kullanımı

C de programımızın efektif olması acısından ve iş bölümü acısından fonksiyonları kullanırız arkadaslar

fonksiyonları buyuk bir programın kucuk işçi parcaları olarak dusunun ve bu işçileri ihtiyacımız oldugunda cagırdıgımız ve onlarla işimiz bittiginde geri gonderdigimizi ve bu işçilerin biz ne zaman cagırırsak gelecek olduklarını dusunun

buyuk programımızın etrafında işçilerimizi kendimiz olustururuz işçinin ne yapmasını istiyorsak onunla ilgili fonksiyonumuzu yazarız ve main fonksiyonu yani ana program fonksiyonumuz içerisinde ihtiyacımız oldugu zamanlarda cagırır ve gorevini yerine getirmesini isteriz

öncelikle fonksiyonlar yani işçilerimizi nasıl tanımlarız :

fonsiyonu tanımlarken oncelikle fonksiyonumuzun tipini belirleriz bu fonksiyon işini bitirdikten sonra bize ne tipte bir veri donecek integer,string,char,double,float bir degisken donebilecegi gibi istersek basına void ekleyerek hiçbirsy geri dondurmemesini de saglayabiliriz :)

2. dikkat edilmesi gereken husus ise işçimize kullanması için veri verip vermeyecegimizdir ana fonskyisonumuz içerisinde bir kac veriyi işçimize gonderip işlemesini isteyebiliriz yada o alanı bos bırakarak işçimizin ana fonksiyondan bagımsız bir işlem yapmasını da isteyebiliriz

gelelim fonksiyonların genel olarak nasıl tanımlandıklarına :

fonksiyonlar main fonsiyonunundan sonra ya da main fonksiyonundan once tanımlanırlar genellikle ben 2. tercihi kullanıyorum ilk tercihe gelirsek fonksiyonu main fonksiyondan sonra tanımaldıgınıdan main fonksiyonun oncesinde programa fonksiyon tanımlayacagınızı bildirmeniz gerekmektedir neyse kafanız karısmasın :) benim tercih ettigim metoddan yolumuza devam edelim

 FonksiyonTipi FonksiyonAdı(arguman listesi)
      argumanların tip bildirimleri
      {
        Yerel değişkenlerin bildirimi
        ...
        fonksiyon içindeki deyimler veya diğer fonksiyonlar
        ...
      }

seklinde tanımlanır fonksiyon tipi belirttigimiz gibi int double string char gibi degisken tiplerini alabilecegi gibi void olarak belirtirsek bize birsey dondurmeyecektir

arguman listesi ise egerki ana fonksiyonumuzdan isçimizin işlemesi için bir kac degisken gondermek istiyorsak kullanacagımız kısımdır gondermek istemiyorsak bos bırakılabilir

fonksiyon adı ise işçimize verecegimiz isim olup ana fonksiyon içerisinde bu adla cagıracagımız kısımdır


gelelim örnegimize

bir program dusunun kullanıcıdan 2 adet sayı isteyecegiz bu sayıları işçimizin toplamasını isteyecegiz sonrasında bir işçi daha olusturup bu işçinin de toplama işlemi sonucunu ekrana yazdırmasını isteyecegiz

#include <stdio.h>
int toplayici(int x,int y)
{
int toplam;
toplam=x+y;
return toplam;
}
void ekrana_yaz(int sonuc)
{
printf("toplama isleminin sonucu=%d",sonuc);
}

void main()
{
int a,b,islem_sonucu;
printf("1. sayiyi giriniz\n");
scanf("%d",&a);
printf("2. sayiyi giriniz\n");
scanf("%d",&b);
islem_sonucu=toplayici(a,b);
ekrana_yaz(islem_sonucu);
}

yukarıdaki ornekte goruldugu uzere ana programımızdan 2 adet degisken yolladıgımız ve bize toplama işlemini yapacak toplayici fonksiyonunu yani işçimizi olusturduk bu işçi ne yapacak ana fonsiyondan gonderdigimiz 2 integer degiskeni toplayara return ile cagırdıgımız noktaya toplama işleminin sonucu yollayacak ne yaptık burada integer 2 degisken aldık ve integer olarak toplayici fonksiyonu olusturuduk ve bu fonsiyonda bize integer bir deger geri dondurdu.

gelelim 2. işçimize ekrana_yaz fonksiyonu bu fonksiyona dikkat ettiyseniz void olarak tanımladık ekrana yazdırması gerekiyor neticesinde ana fonksiyonumuza herhangi bir deger dondurmesi istenmiyor ben fonksiyonu cagırdıgımda ekrana istedigimi yazırsın yeter :) ekrana yazıdrmak istedigim degeri de fonksiyona zaten int sonuc olarak gonderiyorum ana fonksiyonumdan degil mi :)

programı calıstırdıgınızdan alacagınız sonuc:

1. sayiyi giriniz
5
2. sayiyi giriniz
9
toplama isleminin sonucu=14

olacaktır
buradaki 5 ve 9 benim kullanıcı olarak girdigim rakamlardır

herhangi bir sorunuz olması durumunda iletisime gecmekten cekinmeyizi
iyi kodlamalar arkadaslar
c programlama - kendi degiskenimizi olusturalım
Struct yapısı

merhabalar arkadaslar
bu paylasımımızda kendi degiskenlerimizin nasıl yapılacagını ve bunun nasıl tanımlanıp nasıl kullanılacagını anlatacagım

tek bir degisken altında o degiskene baglı birden fazla degisken tanımladıgımız yapıya struct diyoruz karısık geldi degilmi ancak bir ornek ile aklınızdaki soru işaretlerini ortandan kaldıracagız

struct TipAdı{
tip deg_ismi;
tip deg_ismi;
...
};

bir sınıfın bilgilerini tutmak istiyoruz mesela ve her ogrencinin bir adet ogrenci numarası dogal olarak bir ismi ve birde soy ismi var
son olarak ise bu ogrencinin okudugu bir sınıf var

ögrenci numarasını ve kacıncı sınıfta okdugunu integer , isim ve soy isim ise bir onceki anlatımımızda olan katar yapısı ile alınabilir

struct ogrenci{
char ad[10],soyad[20];
long no;
short sinif;
};

yukarıda goruldugu uzere içerisinde ad soyad no ve sinif degiskenlerini ogrenci degiskeni altında topladık peki bu struct tipi ogrenci degiskenimizi nasıl kullanırız ?

#include <stdio.h>

struct ogrenci{
char ad[10],soyad[20];
int no;
int sinif;
}
void main(){
struct ogrenci ogr;
printf("Ogrenci nosu :");
scanf("%d",&ogr.no);
if( ogr.no == 2248 )
{
ogr.no = 2248;
ogr.ad="ahmet";
ogr.soyad="Bingul";
ogr.sinif = 1;
}
printf("\nNo : %d",ogr.no);
printf("\nAdı : %s ",ogr.ad);
printf("\nSoyadı: %s ",ogr.soyad);
printf("\nSınıfı: %d ",ogr.sinif);
}

yukarıdaki ornek programda goruldugu uzere bir adet struct ogrenci tipinde ogr degiskeni tanımlanmıs
daha sonrasında ise ogrenci numarasına 2248 adına ahmet ve soyadına bingul denilmis

programda ise eger kullanıcı ogrenci no olarak 2248 girer ise ogrenci bilgilerinin listelenmesi istenmis

egerki birden fazla struct tipinde degisken olusturmak istiyorsanız

struct ogrenci ogr1,ogr2; seklinde kullanabilirsiniz

Öte yandan unutulmaması gereken struct degisken tipimizi programımız baslamadan olusturmak durumundayız arkadaslar yukarıdaki ornekte buna dikkat edebilirsiniz

yakın zamdan videolu örneklerle gorusmek uzere
iyi kodlamalar
c programlama - stringler (katarlar)
merhabalar arkadaslar bir onceki paylasımımızda sizlere dizilerden bahsetmistik simdide dizileri kullanarak string işlemlerini gerceklestirecegiz

string nedir?
bir char tipinde bildirilen karakter dizisidir. Stringler, içeriği harfler, rakamlar, veya bazı semboller olan text bilgilerini tutmak(saklamak) için kullanılır. C dilinde string bildirimi için bir tip deyimi yoktur. Bu yüzden, bir stringe bir dizi gözüyle bakılır

daha once char degisken tipinden bahsetmistik ve char ile klavyeden sadece 1 karakter okuyabildigimizi biliyoruz ancak bundan sonra dizileri kullanarak karakter kumesi olarak textlerimizi degisken olarak programlarımızda kullanabilecegiz

nasıl tanımlanır string yani karakter kumesi ?
aslına bakarsanız diziden pek farkı yok isterseniz bir tane tanımlayalım

#include<stdio.h>
#include<string.h>

void main()
{
char isim[10]="caner";
}

burada isim adı altında ve char tipinde bir string degiskenimiz oldu indexe bakarsak bu dizide 11 adet karakter tutabildigimi goreceksiniz

dizinin içine bakarsak
isim[0]=c
isim[1]=a
isim[2]=n
isim[3]=e
isim[4]=r

olarak karsımıza cıkacaktır kullanmadıgımız indexler ise bos olarak kalacaktır arkadaslar

peki bir stringi ekrana nasıl bastırabiliriz?

#include<stdio.h>
#include<string.h>

void main()
{
char isim[10]="caner";
printf("%s",isim);
}

ekrana caner yazacaktır

daha onceden hatırlayalım karakter cekerken kullanıcıdan char için %c ile cekerken stringlerde ise char yapısında olmasına ragmen diziler ile string halini almıs olamlarından dolayı %s ile ekrana bastırıyoruz

peki stringi kullanıcıdan nasıl cekeriz?

yine %s kullanarak cekecegiz

#include<stdio.h>
#include<string.h>

void main()
{
char isim[10];
printf("bir kelime giriniz\n");
scanf("%s",isim);
}

burada dikkat etmeniz gereken string cekerken artık degisken oncesinde & kullanmıyoruz bu pointer kavramları alakalı bir durum ilerleyen zamanlarda pointer kavramlarına degindigimizde aklınızda soru isareti kalmayacaktır
c programlama - dizi örnekleri

daha onceki paylasımlarımda sizlere for dongusunden bahsetmistim arkadaslar genellikle dizilere baslangıc degerlerini vermede for donguleri kullanılır

genel olarak acıklamak gerekirse bir diziye baslangıc degeri tanımalamak isterseniz bunun 2 yolu vardır her birini tek tek acıklayalım isterseniz

1. yol dizi tanımlama sırasında baslangıc degerlerinin atılması:

integer tipinde ve içinde 3 adet sayı tutacak bir dizi tanımlayalım isterseniz

#include <stido.h>
void main()
{
int sayilar[2]={3,7,9};
}

yukarıdaki örnekte goruldugu uzere 3 adet integer tipinde sayı tutacak olan sayilar[2] dizimizi olusturduk burada unutmamamız gereken husus dizi indexi 0 dan basladıgından 2 belirtmem 3 adet dizi elemanına sahip olmam anlamını tasıyor

bu ornekte kullandıgım tanımlama ise dizinin olusur olusmaz içerisine eleman degerlerini atmam anlamını tasıyor

burada degiskenlerim su hali almıs oluyor
sayilar[0]=3
sayilar[1]=7
sayilar[2]=9

peki ben dizimi tanımladım ve bu elemanları ekrana bastırmak istiyorum bunu nasıl gerceklestirebilirim?
işte bu noktada for dongusu devreye giriyor for dongusu kullanarak rahatlıkla tum dizilerinizi ekrana bastırabilirsiniz tek tek bastırabileceginiz gibi

#include <stido.h>
void main()
{
int sayilar[2]={3,7,9};
for(int i=0;i < 3;i++)
{
printf("%d",sayilar[i]);
}
}

programı calıstırdıgımız ekrana yan yana olarak : 379 yazacaktır arkadaslar

gelelim bir diger diziye deger atma metodumuza for kullanarak dizimize degerlerimizi verelim yine baslangıctaki örnegi ele alarak

#include <stido.h>
void main()
{
int sayilar[2];
for(int i=0;i < 3;i++)
{
printf("%d. sayiyi giriniz\n",i+1);
scanf("%d",&sayilar[i]);
}
}

yukarıdaki programı calıstırdıgınızda ekran goruntusu su sekilde olacaktır:
1. sayiyi giriniz
(kullanıcının girdigi sayi)
2. sayiyi giriniz
(kullanıcının girdigi sayi)
3. sayiyi giriniz
(kullanıcının girdigi sayi)

program son bulduktan sonra sayilar dizimizin içinde kullanıcıdan almıs oldugumuz 3 deger elde edilmis olur
gelelim kullanıcıdan aldıgımız degerleri yine for ile ekrana bastırmaya kullanıcıdan sayıları yukarıdaki programla istedik ve bize 3 7 9 sayılarını girdigini farzedelim

#include <stido.h>
void main()
{
int sayilar[2];
for(int i=0;i < 3;i++)
{
printf("%d. sayiyi giriniz\n",i+1);
scanf("%d",&sayilar[i]);
}
for(int a=0;a < 3;a++)
{
printf("sayilar[%d]=%d\n",i,sayilar[i]);
}
}

program cıktısı asagıdaki gibi olur
1. sayiyi giriniz
3
2. sayiyi giriniz
7
3. sayiyi giriniz
9
sayilar[0]=3
sayilar[1]=7
sayilar[2]=9
C programlama diziler:

Merhabalar arkadaslar,
c programlama dilinde kullanılan belkide en onemli degisken tipi dizi olarak tanımladıgımız degisken tipleridir peki nedir bu diziler?

Dizi bir kümedir. Aynı tipte verilere tek bir isimle erişmek için kullanılır. Bir dizinin bütün elemanları bellekte peşpeşe saklanır.

örnek verelim : bir kullanıcıdan 100 tane deger almanız gerekiyor bunun için 100 tane farklı degisken tanımlamak mumkun ancak bu hem zaman alacagından hemde yorucu olacagından dizileri kullanıyoruz arkadaslar

diziler tek boyutlu olabildikleri gibi cok boyutlu olarak da tanımlanabilmektedirler.

peki diziler nasıl tanımlanır ?

tek boyutlu diziler:
tip ad[eleman_sayısı] örnek : int veri[10];
burada eleman sayısı 0 dan 10 a kadar 11 adet veriyi veri ismini verdiğimiz dizimizin içine alıyoruz

sunu unutmamak gerekir dizimize veri aktarırken her zaman dizimiz 0. elemandan baslamak zorundadır ne demek bu yukarıdaki örnekten yol cıkalım

ilk eleman veri[0] iken son eleman veri[10] dur ve toplamda elimizde 11 adet veri mevcut olmus olur

şimdilik cok boyutlu diziler ile kafanızı karıstırmak istemiyorum bir sonraki paylasımımızda dizileri veri nasıl girilmelidir ve bazı dizi örneklerini ele alacagız



















c programlama dersi - 3

1 Şubat 2014 Cumartesi
Posted by MC













































ELEKTRO BLOGGER A HOŞGELDINIZ

ARAMA YAP

EN COK OKUNANLAR

- Copyright © ELEKTRO-BLOGGER Blogger