c programlama dersleri 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 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
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
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
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
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
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