<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Yusuf Mücahit</title>
	<atom:link href="https://yusufmucahit.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://yusufmucahit.com</link>
	<description>ODTÜ - Bilgisayar Mühendisliği</description>
	<lastBuildDate>Tue, 19 May 2015 19:52:21 +0000</lastBuildDate>
	<language>tr-TR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>C ile Programlamaya Giriş &#8211; Basit Alıştırmalar 1</title>
		<link>https://yusufmucahit.com/c-ile-programlamaya-giris-basit-alistirmalar-1/</link>
		<comments>https://yusufmucahit.com/c-ile-programlamaya-giris-basit-alistirmalar-1/#comments</comments>
		<pubDate>Sat, 15 Feb 2014 01:24:17 +0000</pubDate>
		<dc:creator><![CDATA[Yusuf]]></dc:creator>
				<category><![CDATA[Programlama]]></category>

		<guid isPermaLink="false">http://yusufmucahit.com/?p=82</guid>
		<description><![CDATA[1) 3 adet tam sayı (int) değişkeni oluşturun. İlkinin değeri 1, ikincisi 2, üçüncüsü 3 olsun. Ekrana a) bu sayıları ayrı ayrı bastırın, b) bu sayıların toplamını bastırın, c) bu]]></description>
				<content:encoded><![CDATA[<p>1) 3 adet tam sayı (int) değişkeni oluşturun. İlkinin değeri 1, ikincisi 2, üçüncüsü 3 olsun. Ekrana</p>
<p>a) bu sayıları ayrı ayrı bastırın,</p>
<p>b) bu sayıların toplamını bastırın,</p>
<p>c) bu sayıların çarpımını bastırın,</p>
<p>Beklenen çıktı:</p>
<pre class="brush:other">1 2 3
6
6</pre>
<p>2) Kullanıcıdan kilosunu(float) ve boyunu(int) isteyin. Ve şu formüle göre olması gereken kiloyu ve vermesi gereken kiloyu ekrana yazdırın.</p>
<pre class="brush:other">Boyu 3 ile çarp ve 250 çıkarıp 4'e böl.

(3*boy-250)/4</pre>
<p>İpucu: ekrana bastıracağınız sayı ondalık(float) veri tipinde olmalıdır. Tam sayı (integer) olursa virgülden sonrasını kaybedersiniz.</p>
<p>Örnek girdi:</p>
<pre class="brush:other">75
180</pre>
<p>Örnek çıktı:</p>
<pre class="brush:other">72,5 olman gereken
2,5 fazla</pre>
<p>Çözümler:</p>
<p>1)</p>
<pre class="brush:c">#include &lt; stdio.h &gt;

int main(){
    int a=1, b=2, c=3;
    printf("%d %d %d", a, b, c);
    printf("%d", a+b+c);
    printf("%d", a*b*c);
    return 0;
}</pre>
<p>2)</p>
<pre class="brush:c">#include &lt; stdio.h &gt;

int main(){
    float kilo, idealkilo;
    int boy;
    scanf("%f %d", &amp;kilo, &amp;boy);
    idealkilo = (3*boy-250)/4;
    printf("%f olman gereken", idealkilo);
    printf("%f fazla", kilo-idealkilo);

    return 0;
}</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://yusufmucahit.com/c-ile-programlamaya-giris-basit-alistirmalar-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C ile Programlamaya Giriş &#8211; Veri Tipleri ve Değişkenler</title>
		<link>https://yusufmucahit.com/c-ile-programlamaya-giris-veri-tipleri-ve-degiskenler/</link>
		<comments>https://yusufmucahit.com/c-ile-programlamaya-giris-veri-tipleri-ve-degiskenler/#comments</comments>
		<pubDate>Mon, 10 Feb 2014 18:23:24 +0000</pubDate>
		<dc:creator><![CDATA[Yusuf]]></dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C programing]]></category>
		<category><![CDATA[C programlama]]></category>
		<category><![CDATA[C programlamaya giriş]]></category>
		<category><![CDATA[C programming]]></category>
		<category><![CDATA[Data types]]></category>
		<category><![CDATA[değişkenler]]></category>
		<category><![CDATA[introduction to programming]]></category>
		<category><![CDATA[Programlamaya giriş]]></category>
		<category><![CDATA[variables]]></category>
		<category><![CDATA[veri tipleri]]></category>

		<guid isPermaLink="false">http://yusufmucahit.com/?p=46</guid>
		<description><![CDATA[Değişkenler program içerisinde kullanacağımız sayıların, yazıların tutulduğu alanlardır. Bunlar içerisinde ne tür veri tuttuğumuza bağlı olarak farklı veri tiplerinde olurlar. Kısaca özet geçmek gerekirse C dilinde temel veri tipleri: char]]></description>
				<content:encoded><![CDATA[<p>Değişkenler program içerisinde kullanacağımız sayıların, yazıların tutulduğu alanlardır. Bunlar içerisinde ne tür veri tuttuğumuza bağlı olarak farklı veri tiplerinde olurlar. Kısaca özet geçmek gerekirse C dilinde temel veri tipleri:</p>
<pre class="brush:other">char - 1 Byte 
int - Genellikle 4 Byte
float - Genellikle 4 Byte
double - Genellikle 8 Byte</pre>
<p>Bu veri tiplerinin önüne bazı niteleyiciler koyarak, onların farklı versiyonlarını elde ederiz. Bu niteleyiciler:</p>
<pre class="brush:other">short
long
unsigned</pre>
<p>Kendi bilgisayarınızda hangi veri tipinin, kaç byte büyüklüğünde veri tutabileceğini öğrenmek çok kısa bir kodla mümkün.</p>
<pre class="brush:c">#include &lt; stdio.h &gt;

int main(){

    printf("%d byte", sizeof(int)); // int yerine double, float, long int, unsigned long int şeklinde yazabilirsiniz.
    return 0;
}</pre>
<p>Bir byte 8 bitten oluştuğu için ve her bir bit 1 veya 0 değeri alabildiği için bir byte&#8217;ın alabileceği 2^8 farklı değer vardır. Dolayısıyla int (tam sayı) veri tipi için konuşacak olursak genellikle 4 byte olduğunu söylemiştik. Bu durumda 2^(8*4) yani (2^32)-1 farklı pozitif sayı tutabilir.</p>
<p>Şimdi hangi veri tipinin ne için kullanılacağına gelirsek.</p>
<p>char: Tek bir karakter tutmak içindir. Aslında tutulan şey bir karakter değil bir sayıdır, bu sayılar ascii tablosundaki her harfe karşılık gelen sayıyı tutar. Yani char veri tipini 1 byte büyüklüğünde bir sayı tutabilecek olan veri tipi olarak düşünmek daha önemlidir. Şimdilik bunun karakter tuttuğunu bilmek yeterli.</p>
<p>int: Tam sayı tutmak içindir.</p>
<p>float: Ondalık sayı tutmak için kullanılan veri tipidir.</p>
<p>double: float&#8217;tan daha duyarlı, yani ondalık kısmında daha fazla basamak tutan ondalık sayılar içindir.</p>
<p>Bu veri tiplerinin önüne koyabileceğimiz niteleyiciler;</p>
<p>unsigned: İşaretsiz anlamına gelir. Yani bu sayıların her zaman pozitif olabileceğini söyleriz bu durumda işaret için kullanılan 1 bit de sayı için gelir ve -128, 127 arasında değer atayabileceğimiz değişkenimiz 0, 255 arasında değer atanabilecek hale gelir.</p>
<p>long: Veri tipinin daha fazla byte alması için kullanılır.</p>
<p>short: Veri tipinin daha az byte alması için kullanılır.</p>
<p>Veri tiplerine göz attıktan sonra gelelim değişkenlere. Değişkenler içerisinde sayılar tutan hafızadaki alanlara bizim verdiğimiz ve bu sayede kullanabildiğimiz(içerisine veri yazıp, okuyabildiğimiz) isimdir. Hafızadaki bilmem kaçıncı sıradaki 4 byte demek yerine , &#8220;a&#8221; ismindeki değişken diyebilmek bize kolaylık sağlar. Kullanımına baktığınızda, hiç de zor olmadığını göreceksiniz. Hemen bir kod parçacığıyla açıklamaya çalışayım.</p>
<pre class="brush:c">#include 

int main(){
    int a=3,b,c;
    long int d;
    unsigned long int e;
    float x,y,z;
    char k,l,m;
    unsigned char n;

    b=6;

    return 0;
}</pre>
<p>Değişkenler veri tipi ve ardından gelen değişken ismi ile tanımlanırlar. Bu tanımlama sırasına ister içerisine değer atayabiliriz(a değişkenine bakın), isterseniz sadece oluşturup daha sonra içerisine bir veri koyarız.(b değişkenine bakın). Bu değişkenlerin içerisindeki veriyi okumak ve veri yazmak çok kolaydır. Onu da bir kod yardımıyla gösterelim.</p>
<pre class="brush:c">#include 

int main(){
    int a,b=3;
    float c;
    char d;
    scanf("%d %f %c", &amp;a, &amp;c, &amp;d);
    printf("a: %d, b: %d, c: %f, d: %c", a,b,c,d);  
    return 0;
}</pre>
<p>Göstermediğimiz bir şey daha; scanf. printf ile ekrana bir şeyler bastırabiliyorduk. scanf ise bize kullanıcıdan bir veri almamızı sağlıyor. Yani bu program için kullanıcıdan 3 adet veri girmesini bekliyor. Bu verileri a, c ve d değişkenlerine atıyor. b değişkeninin değeri ise ilk oluşturulurken atanmış gördüğünüz gibi. Peki %d, %f, %c nedir? Bunlar kullanıcıdan hangi formatta bir veri okuduğunu veya ekrana hangi formatta değişkenleri basacağını gösterir.</p>
<p>%d tam sayı için.</p>
<p>%f ondalık sayı için.</p>
<p>%c karakter için.</p>
]]></content:encoded>
			<wfw:commentRss>https://yusufmucahit.com/c-ile-programlamaya-giris-veri-tipleri-ve-degiskenler/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C ile Programlamaya Giriş &#8211; İlk Program</title>
		<link>https://yusufmucahit.com/c-ile-programlamaya-giris-ilk-program/</link>
		<comments>https://yusufmucahit.com/c-ile-programlamaya-giris-ilk-program/#comments</comments>
		<pubDate>Sat, 25 Jan 2014 11:24:10 +0000</pubDate>
		<dc:creator><![CDATA[Yusuf]]></dc:creator>
				<category><![CDATA[C]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[C programing]]></category>
		<category><![CDATA[C programlama]]></category>
		<category><![CDATA[C programlamaya giriş]]></category>
		<category><![CDATA[C programming]]></category>
		<category><![CDATA[Hello world]]></category>
		<category><![CDATA[İlk program]]></category>
		<category><![CDATA[introduction to programming]]></category>
		<category><![CDATA[Programlamaya giriş]]></category>

		<guid isPermaLink="false">http://yusufmucahit.com/?p=48</guid>
		<description><![CDATA[Temel bir C programının genel görünümü: #include &#60; stdio.h &#62; int main(){ printf("Merhaba dünya!"); /* ekrana merhaba dünya yazısı bastırır */ return 0; } Şimdi tek tek bu satırları inceleyelim:]]></description>
				<content:encoded><![CDATA[<p>Temel bir C programının genel görünümü:</p>
<pre class="brush:c">#include &lt; stdio.h &gt;

int main(){

    printf("Merhaba dünya!");
    /* ekrana merhaba dünya yazısı bastırır */
    return 0;
}</pre>
<p>Şimdi tek tek bu satırları inceleyelim:</p>
<pre class="brush:c">#include &lt; stdio.h &gt;</pre>
<p>#include komutu ile yazacağımız programın hangi başlıklara(kütüphanelere) ihtiyacı olduğunu ve bunları dahil etmesi gerektiğini derleyiciye söyleriz. &lt; ve &gt; sembolleri arasına bu dosyanın adını yazarız. C&#8217;nin standart giriş ve çıkış fonksiyonları bu başlık dosyası(stdio.h) içindedir.</p>
<pre class="brush:c">int main()</pre>
<p>main dediğimiz şey aslında bir fonksiyondur ve programımız ilk olarak main isimli bir fonksiyon arayıp onu çalıştırır. Önündeki int ise bu fonksiyonun ne tür bir veri tipi döndüğünü belirtir. Veri tiplerini ve fonksiyonları sonraki yazılarımda açıklamaya çalışacağım. { ve } sembolleri arasında kalan satırların(kodların) bu fonksiyona ait olduğunu belirtir.</p>
<pre class="brush:c">printf("Merhaba dünya!\n");</pre>
<p>printf ekrana bir çıktı basmamızı sağlayan fonksiyondur. İçerisine tırnak işaretleri içerisinde bir yazı göndermemiz yeterli. &#8220;\n&#8221; ise alt satıra geç anlamına gelen bir karakterdir. &#8220;;&#8221; derleyiciye satırın sonuna geldiğimizi söyleyen semboldür ve zorunludur. Her satırın sonuna &#8220;;&#8221; koymamız gerek yoksa syntax error (sözdizimi hatası) alırız.</p>
<pre class="brush:c">/* ekrana merhaba dünya yazısı bastırır */</pre>
<p>/* */ sembolleri bu satırların derleyici tarafından okunmaması gerektiğini belirtir. Peki o halde bu satıra ne ihtiyacımız var. Bu semboller kodumuza açıklama(yorum) eklemek içindir. Başka bir deyişle kodumuzu başkası okurken veya daha sonra biz kodumuzu incelerken hangi kodu ne için yazdığımızı hatırlamamız için koyduğumuz açıklamaları derleyicinin gözardı etmesi için bu sembolleri kullanırız. Bu iki sembol arasındaki yazıları derleyici okumaz. Eğer açıklamamız tek satır ise // sembolünü de kullanabiliriz.</p>
<pre class="brush:c">/*
Bu
çok
satırlı
bir 
açıklama
*/
// Bu ise tek satırlı bir açıklama</pre>
<pre class="brush:c">return 0;</pre>
<p>main&#8217;in int veri türünde yani tam sayı tipinde bir değer dönen fonksiyon olduğunu söylemiştim. Bu kod fonksiyonun sona geldiğini, ve işlemlerini bitirdiği anlamına geliyor.</p>
<p>İşte bu kadar ilk C programımızı yazdık <img src="https://s.w.org/images/core/emoji/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
			<wfw:commentRss>https://yusufmucahit.com/c-ile-programlamaya-giris-ilk-program/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C ile Programlamaya Giriş</title>
		<link>https://yusufmucahit.com/c-ile-programlamaya-giris/</link>
		<comments>https://yusufmucahit.com/c-ile-programlamaya-giris/#comments</comments>
		<pubDate>Mon, 13 Jan 2014 15:20:08 +0000</pubDate>
		<dc:creator><![CDATA[Yusuf]]></dc:creator>
				<category><![CDATA[Programlama]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C programing]]></category>
		<category><![CDATA[C programlama]]></category>
		<category><![CDATA[C programlamaya giriş]]></category>
		<category><![CDATA[C programming]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[introduction to programming]]></category>
		<category><![CDATA[linker]]></category>
		<category><![CDATA[Programlamaya giriş]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://yusufmucahit.com/?p=75</guid>
		<description><![CDATA[C ile programlama yapmak için öncelikle kısa bir giriş yapalım. Bizler aynı bir kompozisyon yazar gibi kodlarımızı yazarız, ve genelde bu kodlar ingilizce terimleri içerir ve okunduğunda bir insanın hemen]]></description>
				<content:encoded><![CDATA[<p>C ile programlama yapmak için öncelikle kısa bir giriş yapalım.</p>
<p>Bizler aynı bir kompozisyon yazar gibi kodlarımızı yazarız, ve genelde bu kodlar ingilizce terimleri içerir ve okunduğunda bir insanın hemen aşina olacağı tarzdadır. Fakat bunları bilgisayarın anlayacağı sisteme çevirmek o kadar da kolay değildir, sonuçta aynı dili konuşamayız.</p>
<div style="width: 489px" class="wp-caption alignnone"><img alt="" src="http://www.aboutdebian.com/compile.gif" width="479" height="311" /><p class="wp-caption-text">Kod-Compiler-Linker</p></div>
<p>Bizim yazdığımız kodlar bir derleyici(compiler) vasıtasıyla Assembly ya da makine dili denilen daha basit kodlara çevrilirler. Bu halleri (ki siz bunları *.exe olarak biliyorsunuz) bilgisayarımızda çalıştırana kadar tutarız, hiç bir değişiklik yapmadan orada dururlar. Bu dosyayı açtığımızda bağlayıcı(linker) bu kodları gerekli kütüphaneleri kullanarak bilgisayarın anlayabileceği hale getirir.</p>
<p>Şu ana kadar anlattıklarımdan bir noktaya çıkabiliriz, bize bir compiler lazım. Ben Windows&#8217;ta <a title="Dev c++" href="http://www.gezginler.net/indir/dev-cplusplus.html" target="_blank">Dev C++</a> kullanıyorum. Linux&#8217;te ise gcc compiler. Eğer yoksa, genelde ilk kurulum esnasında gelir, terminale:</p>
<pre class="brush:other">$ sudo apt-get install gcc</pre>
<p>yazmalısınız</p>
<p>Linux dağıtımları için <a title="Geany editör" href="http://www.geany.org/" target="_blank">Geany</a> editörü çok kullanışlı. Tabii Vim ile terminalde de yazabilirsiniz.</p>
<p>C programlama dilinin kod dosyaları &#8220;.c&#8221; uzantılıdır. Windows&#8217;ta bu dosyaları açıp derlerseniz aynı dizinde &#8220;.exe&#8221; uzantılı bir dosya daha göreceksiniz.</p>
<p>İleriki derslerde yazacağımız kodları bu programlarda açıp, derledikten sonra çalıştıracağız.</p>
<p>Şimdilik bu kadar bilgi yeterli diye düşünüyorum.</p>
<p>Windows kullananlar için not: Yazdığınız kodlarınızın çalışmadığını düşünmeyin, genellikle program çalışıp hemen kapanıyor, bunun için kodunuzun sonuna;</p>
<pre class="brush:c">system("PAUSE");
veya
getch();</pre>
<p>ekleyin.</p>
]]></content:encoded>
			<wfw:commentRss>https://yusufmucahit.com/c-ile-programlamaya-giris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Makro Tanımlarken Parantezlerin Önemi</title>
		<link>https://yusufmucahit.com/makro-tanimlarken-parentezlerin-onemi/</link>
		<comments>https://yusufmucahit.com/makro-tanimlarken-parentezlerin-onemi/#comments</comments>
		<pubDate>Sun, 28 Jul 2013 14:27:38 +0000</pubDate>
		<dc:creator><![CDATA[Yusuf]]></dc:creator>
				<category><![CDATA[C]]></category>

		<guid isPermaLink="false">http://yusufmucahit.com/?p=19</guid>
		<description><![CDATA[C programlamada &#8220;#define&#8221; makrosu tanımlarken dikkat edilmesi gereken bazı noktalar var. Bunlardan birisi de parantezler; çünkü insanların hayalindeki gibi çalışmaz her zaman bu &#8220;#define&#8221; makroları. Diğer programcıların tanımladıkları makrolarda ne]]></description>
				<content:encoded><![CDATA[<p>C programlamada &#8220;#define&#8221; makrosu tanımlarken dikkat edilmesi gereken bazı noktalar var. Bunlardan birisi de parantezler; çünkü insanların hayalindeki gibi çalışmaz her zaman bu &#8220;#define&#8221; makroları. Diğer programcıların tanımladıkları makrolarda ne kadar gereksiz parantez kullanmış diyorsanız bu yazımı okuduktan sonra bir kez daha düşünün. Makrolar ne görürse aynen yapmasını söylediğiniz şeyi yapar sorgulayamaz, hesap yapamaz. Fazla uzatmadan bir kaç örnek vereyim:</p>
<pre class="brush:c">#include 
#define ABS(x) x&gt;0?x:-x

int main()
{
    printf("%d\n",ABS(3-5));
    return 0;
}</pre>
<p>Bu kod parçasında ABS ismiyle tanımladığımız makrodan, gönderdiğimiz değer eğer 0&#8217;dan küçükse başına eksi koyarak 0&#8217;dan büyükse kendisi olarak döndürmesini bekliyoruz. Kısaca mutlak değer.  Beklediğimiz değer 3-5 = -2 olduğu için +2 dönmesi. Fakat makroya giden değer -2 değil 3-5. Bunda ne fark var diyeceksiniz, fark şudur ki makrolar fonksiyonlar gibi değeri hesaplayıp o değerle işlem yapmazlar. Makrolar birer sözlük gibi çalışırlar. Derleme anında gerekli değişiklikleri yapıp işlerini sonlandırırlar. Tıpkı en basit notepad programlarında bul ve değiştir (ctrl+h) modülünün çalışma mantığındadırlar. Bunu öğrendikten sonra tekrar incelersek yazdığımız abs makrosu 3-5 in sıfırdan küçük olduğunu gördü ve başına &#8211; işareti koydu. Yani -3-5 oldu ve bu da bize -8 sonucunu verdi. Aslında o kadar da şaşıracak bir şey yokmuş değil mi? <img src="https://yusufmucahit.com/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Peki çözümü nedir?</p>
<pre class="brush:c">#define ABS(x) (x)&gt;0?(x):-(x)</pre>
<p>Eğer makromuzu böyle tanımlasaydık hiç bir problem yaşamayacaktık. Bir diğer örneğimiz ise;</p>
<pre class="brush:c">#include 
#define SQR(x) (x*x)
int main()
{
    printf("%d\n",SQR(2+3));      
    return 0;
}</pre>
<p>Aynı açıklamaları uzun uzun tekrar yapmayacağım. Bizim beklediğimiz 2+3=5. O halde 5*5=25 olmalı. Oysa ki makromuz 2+3 değerini 2+3*2+3 haline sokuyor. Bu da matematiksel olarak 2+(3*2)+3 e eşittir. Yani 11&#8217;e.</p>
<pre class="brush:c">#define SQR(x) ((x)*(x))</pre>
<p>Eğer makromuzu böyle tanımlamış olsaydık hiç bir problemle karşılaşmayacaktık. <img src="https://yusufmucahit.com/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
]]></content:encoded>
			<wfw:commentRss>https://yusufmucahit.com/makro-tanimlarken-parentezlerin-onemi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
