<?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>System Enginarı &#187; Yazılım</title>
	<atom:link href="http://www.systemenginari.net/category/enginar-isi/yazilim/feed" rel="self" type="application/rss+xml" />
	<link>http://www.systemenginari.net</link>
	<description>System&#039;deki 0 ve 1&#039;lerin zeytinyağlı servisi</description>
	<lastBuildDate>Sat, 21 Jan 2012 19:32:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>C &#8211; Akış diyagramları</title>
		<link>http://www.systemenginari.net/c-akis-diyagramlari.html</link>
		<comments>http://www.systemenginari.net/c-akis-diyagramlari.html#comments</comments>
		<pubDate>Sat, 20 Feb 2010 10:43:33 +0000</pubDate>
		<dc:creator>Hakan AKSÜZEK</dc:creator>
				<category><![CDATA[Enginar işi]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[akış diyagramı]]></category>
		<category><![CDATA[algoritma]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[programlama]]></category>

		<guid isPermaLink="false">http://www.systemenginari.net/?p=898</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><div id='stb-box-2836' class='stb-grey_box' >C programlama da <span style="text-decoration: underline;"><strong>Algoritma Hazırlama</strong></span>&#8216;dan sonra değinilmesi gereken bir diğer önemli konu Akış diyagramlarıdır. <span style="text-decoration: underline;"><strong>Akış diyagramları</strong></span> problemin şekiller ile ifade edilmesidir, çözülmesi gereken problem için izlenen her bir adımı belirli şekiller ile ifade ederek daha okunaklı hale getirmek için uygulanır. Standart akış diyagramı şekilleri olsa da, akış diyagramı hazırlayan kişi kendi isteği üzerine aynı işi yapan şekiller de kullanabilir. Önemli olan programcılık mantığını anlayabilmek olduğu için kullanılan şekillerin amacına yönelik olması yeterlidir.</p>
<p style="text-align: left;">Akış diyagramı çizerken sık sık kullanılan şekiller şunlardır.</div><span id="more-898"></span><div id='stb-container-6852' class='stb-container'><div id='stb-caption-box-6852' class='stb-info-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Akış diyagramında kullanılan şekiller<div id="stb-tool-6852" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-6852" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-6852' class='stb-info-body_box stb_body' style="display: none; "><br />
<img class="aligncenter" src="http://img685.imageshack.us/img685/6373/baslangicvebitis.png" alt="Başlangıç ve Bitiş" /></p>
<hr />
<p style="text-align: center;"><img class="aligncenter" src="http://img28.imageshack.us/img28/6518/atamavehesaplama.png" alt="Atama ve Hesaplama" /></p>
<hr />
<p style="text-align: center;"><img class="aligncenter" src="http://img52.imageshack.us/img52/8813/verigirisi.png" alt="Veri girişi" /></p>
<hr />
<p style="text-align: center;"><img class="aligncenter" src="http://img688.imageshack.us/img688/3242/bilgicikis.png" alt="Bilgi çıkışı ve Görüntüleme" /></p>
<hr />
<p style="text-align: center;"><img class="aligncenter" src="http://img194.imageshack.us/img194/9638/karsilastirma.png" alt="Karşılaştırma" /></p>
<hr />
<img class="aligncenter" src="http://img194.imageshack.us/img194/2357/baglanti.png" alt="Bağlantı" /></p>
<p></div></div></p>
<div id='stb-box-3426' class='stb-grey_box' >Şekiller ve kullanım amaçları yukarı gördüğünüz gibi şekillerin içerisinde yazmaktadır. Şimdi bunları birkaç örnek içerisinde, birlikte kullanarak etkileşimlerini görelim&#8230;</div>
<div id='stb-container-8957' class='stb-container'><div id='stb-caption-box-8957' class='stb-info-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Girilen iki sayının toplamını hesaplayan akış diyagramı<div id="stb-tool-8957" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-8957" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-8957' class='stb-info-body_box stb_body' style="display: none; "><br />
<a href="http://img40.imageshack.us/img40/3542/ikisayitoplama.png"><img class="aligncenter" title="İki sayının toplamını gösteren akış diyagramı" src="http://img40.imageshack.us/img40/3542/ikisayitoplama.png" alt="" width="400" height="600" /></a><br />
</div></div>
<div id='stb-box-8430' class='stb-grey_box' > Şekilde de gördüğünüz gibi iki sayı girilmekte, <strong>S1</strong> ve <strong>S2</strong> değişkenlerine atanmakta bir diğer ifade ile aktarılmaktadır. Bu sayıların toplamı da<strong> T</strong> isimli değişkene aktarılmaktadır. Burada bir ipucu vermek gerekirse<strong> S1</strong> ve <strong>S2</strong> değişkenlerine sayılar şekillerdeki gibi  aktarılabilirken bu işlemin daha kolay bir yöntemi bulunmaktadır. Aşağıdaki şekilde bunun bir örneğini görebilirsiniz&#8230;<br />
<a href="http://img28.imageshack.us/img28/2341/verigiris1.png"><img class="aligncenter" title="Veri girişin bir diğer örneği..." src="http://img28.imageshack.us/img28/2341/verigiris1.png" alt="" width="200" height="100" /></a></div>
<div id='stb-box-1185' class='stb-grey_box' >Şimdi örneklerimizi biraz zorlaştırarak matematiksel işlemler üzerinden devam edelim, sıradaki örneğimizde kullanıcıdan alınan üç adet sayının ortalamasını hesaplayıp bilgi çıkışı ile ekranda görüntüleyen akış diyagramını hazırlayalım.</div>
<div id='stb-container-4783' class='stb-container'><div id='stb-caption-box-4783' class='stb-info-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Girilen üç sayının ortalamasını hesaplayan akış diyagramı<div id="stb-tool-4783" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-4783" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-4783' class='stb-info-body_box stb_body' style="display: none; "><br />
<a href="http://img197.imageshack.us/img197/9083/ucsayininortalamasi.png"><img class="aligncenter" title="3 sayının ortalamasını hesaplayan akış diyagramı" src="http://img197.imageshack.us/img197/9083/ucsayininortalamasi.png" alt="" width="195" height="500" /></a><br />
</div></div>
<div id='stb-box-2924' class='stb-grey_box' > İlk olarak kullanıcıdan üç adet sayı alınıyor ve bu sayılar direkt olarak ortalama değişkenine aktarılırken aynı zamanda aritmetik işlemler yapılıyor, burada dikkatinizi çekmesi gereken husus, matematiksel işlemlerdeki öncelik sırasının C dilinde de aynı şekilde kullanıldığıdır. Üçüncü aşama da görülen <strong>ORT=(A+B+C)/3</strong> işleminde öncelikle parantez içindeki işlem daha sonra parantez dışındaki işlem yapılıyor, dolayısıyla alınan üç sayı toplandıktan sonra sayıların adedi olan <strong>3</strong>&#8216;e bölünüyor&#8230;<br />
</div>
<div id='stb-container-8440' class='stb-container'><div id='stb-caption-box-8440' class='stb-info-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Girilen sayının Pozitif, Negatif ve ya Sıfır olduğunu bulan akış diyagramı<div id="stb-tool-8440" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-8440" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-8440' class='stb-info-body_box stb_body' style="display: none; "><br />
<img class="aligncenter" title="Girilen sayının POZİTİF, NEGATİF ve ya SIFIR olduğunu bulan akış diyagramı" src="http://img714.imageshack.us/img714/1272/poznegsifir.png" alt="" width="400" height="600" /><br />
</div></div>
<p><div id='stb-box-1816' class='stb-grey_box' > Yukarıdaki akış diyagramında, önce kullanıcıdan bir sayı alınıyor ve bu sayı ile ilgili karşılaştırmalar yapılarak doğru karşılaştırılmaya ulaşıldığı takdirde bilgi çıkışı kullanılarak sayının durumu yazdırılıyor, bu akış diyagramını aklınızdan herhangi bir sayı vererek deneyebilirsiniz, anlaşılması daha kolay olacaktır.</p>
<p><strong>Not:</strong> <span style="color: #ff0000;"><strong>Yukarıdaki akış diyagramının bir adım daha kolay şekilde hazırlanması mümkündür, bu yolu araştırıp bulmanız sizin açınızdan daha faydalı olacaktır. Bulamadığınız takdirde bana ulaşabilirsiniz&#8230;</strong></span></div> <div id='stb-container-9795' class='stb-container'><div id='stb-caption-box-9795' class='stb-info-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Girilen on sayının en büyünü bulan akış diyagramı<div id="stb-tool-9795" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-9795" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-9795' class='stb-info-body_box stb_body' style="display: none; "><br />
<a href="http://img534.imageshack.us/img534/9296/onsayininenbuyugu.png"><img class="aligncenter" title="Girilen on sayının en büyüğünü bulan akış diyagramı" src="http://img534.imageshack.us/img534/9296/onsayininenbuyugu.png" alt="" width="450" height="900" /></a><br />
</div></div> <div id='stb-box-4920' class='stb-grey_box' > Girilen on sayının en büyüğünü bulan algoritma da bir döngü kullanılmış ve bu döngünün dönüş sayısı <strong>S</strong> isimli değişkende tutulmuş, <strong>S&lt;10</strong> karşılaştırması ile de kontrol edilmiş. İlk girilen sayı <strong>EB</strong> değişkeni ile en büyük sayı olarak kabul edilmiş ve ardından gelen sayılar bu sayı ile karşılaştırılarak doğru sonuç elde edilmeye çalışılmış. Değişik bir yöntemin kullanıldığı bu akış diyagramının da daha kompleks olmayan bir yapısı bulunmaktadır, kendinizin öğrenmesi açısından bu yöntemi de araştırarak bulmanız sizin açınızdan faydalı olacağı kanısındayım&#8230;<br />
</div> <div id='stb-container-4803' class='stb-container'><div id='stb-caption-box-4803' class='stb-info-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Bölme operatörü kullanmadan sayıyı bölen akış diyagramı<div id="stb-tool-4803" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-4803" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-4803' class='stb-info-body_box stb_body' style="display: none; "><br />
<a href="http://img189.imageshack.us/img189/672/operatorsuzbolme.png"><img class="aligncenter" title="Bölme operatörü kullanmadan sayı bölen akış diyaramı..." src="http://img189.imageshack.us/img189/672/operatorsuzbolme.png" alt="" width="410" height="610" /></a></p>
<p></div></div> <div id='stb-box-4869' class='stb-grey_box' > Akış diyagramları ve C programlamayı öğrenebilmeniz için belkide en iyi örnek &#8220;<strong>Bölme operatörü kullanmadan sayıyı bölen akış diyagramı</strong>&#8220;dır. Zira bölme operatörünün nasıl çalıştığını anlamanız için birebir ve bunun gibi daha birçok algoritma hakkında karar verebilmenize olanak sağlayabilecek bir algoritma olduğunu düşünüyorum. Algoritmamıza bakacak olursak;<br />
» <strong>X</strong> ve <strong>Y</strong> isimli iki değişkene dışarıdan aktarılan sayılar sırası ile bölme işlemlerinde kullanılan Bölünen ve Bölen sayıları olarak kabul ediliyor.<br />
» İlk olarak <strong>Bölünen</strong>&#8216;in <strong>Bölen</strong>&#8216;den büyük olup olmadığı kontrol ediliyor.<br />
» Eğer büyük ise, bölünen sayıdan bölen sayı çıkartılıyor ve sayaç bir arttırılıyor, bu işlem bölünen sayı bölen sayıdan küçük olana kadar devam ediyor.<br />
» Sonuç olarak, <strong>X </strong>yani Bölünen sayı her defasında eksildiği için Bölen sayıdan küçük olduğu durumda <strong>Kalan </strong>oluyor, <strong>S</strong> değişkeni ise her seferinde arttığı için <strong>Bölüm </strong>oluyor&#8230;<br />
</div></p>
]]></content:encoded>
			<wfw:commentRss>http://www.systemenginari.net/c-akis-diyagramlari.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C &#8211; Problem Çözme ve Algoritma hazırlama</title>
		<link>http://www.systemenginari.net/c-problem-cozme-ve-algoritma-hazirlama.html</link>
		<comments>http://www.systemenginari.net/c-problem-cozme-ve-algoritma-hazirlama.html#comments</comments>
		<pubDate>Thu, 13 Aug 2009 14:25:51 +0000</pubDate>
		<dc:creator>Hakan AKSÜZEK</dc:creator>
				<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[algoritma]]></category>
		<category><![CDATA[BMYO]]></category>
		<category><![CDATA[c programlama]]></category>
		<category><![CDATA[değişken]]></category>
		<category><![CDATA[döngü]]></category>
		<category><![CDATA[hazırlama]]></category>
		<category><![CDATA[problem çözme]]></category>
		<category><![CDATA[yemek]]></category>

		<guid isPermaLink="false">http://www.systemenginari.net/?p=714</guid>
		<description><![CDATA[C programlama hakkında geçenler de bir yazı yazmıştım. Giriş yazısı olarak basit ve açıklayıcı olan yazıdan sonra ilk dersimiz olan Problem Çözme ve Algoritma hazırlama işlemlerine değineceğiz. Bilgisayarlar, işlemciler, çekirdekler -Hiyerarşik olarak-, bilindiği kadarıyla insanlardan daha hızlı işlem yapabilme gücüne sahip olsalar dahi, yapılan işin arkasında her zaman bir insan gücünün bulunduğu inkar edilmez. En [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>C programlama hakkında geçenler de bir <a href="http://www.systemenginari.net/c-programlama/" target="_blank">yazı</a> yazmıştım. Giriş yazısı olarak basit ve açıklayıcı olan yazıdan sonra ilk dersimiz olan <strong>Problem Çözme</strong> ve<strong> Algoritma hazırlama </strong>işlemlerine<strong> </strong> değineceğiz.</p></blockquote>
<blockquote><p>Bilgisayarlar, işlemciler, çekirdekler -<em>Hiyerarşik olarak</em>-, bilindiği kadarıyla insanlardan daha hızlı işlem yapabilme gücüne sahip olsalar dahi, yapılan işin arkasında her zaman bir insan gücünün bulunduğu inkar edilmez. En basitinden bilgisayarın zeka&#8217;sı dahilinden kendisinden herhangi bir aritmetik işlem yapmasını istememiz komik bir durumdan öteye gitmeyecektir. Zira bilgisayarların zekalarından sözetmemiz mümkün değildir -<em>Son dönemdeki &#8220;<strong>Yapay Zeka</strong>&#8221; projeleri haricinde</em>-.</p>
<p>Bilgisayardan herhangi bir işlem için istekte bulunmadan önce yapılması gereken işlemin ayrıntılarının tarafımızdan hazırlanması ve bilgisayarı bu işlem için uyarmamız, bilgilendirmemiz, en yaygın anlamıyla <strong>Programlama</strong>&#8216;mız gerekmektedir. &#8220;<strong>Problem Çözme</strong>&#8221; bu aşama da devreye girmektedir.<span id="more-714"></span></p></blockquote>
<div id='stb-container-1770' class='stb-container'><div id='stb-caption-box-1770' class='stb-info-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Problem Çözme esasları<div id="stb-tool-1770" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-1770" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-1770' class='stb-info-body_box stb_body' style="display: none; "> Herhangi bir işlem öncesi, işlemin ayrıntılarının belirlenmesi ve düzgün bir şekilde bilgisayara aktarılması için izlenmesi muhtemel yollar sırası ile;</p>
<p>» Problemin tanımı,<br />
» Çözüm yollarının tespit edilmesi,<br />
» Algoritmasının hazırlanması,<br />
» Akış diyagramının çizilmesi,<br />
» Uygun bir programlama diliye bilgisayar diline çevrilmesi,<br />
» Hazırlanan programın test edilmesi,<br />
» Uygulama (Pratik). </div></div>
<blockquote><p>Problem çözme esasları ile ilgili olarak izlenmesi gereken yollara biraz değinecek olursak,</p>
<p><strong>» Problemin tanımı:</strong> Yapılması istenen işlemin adımlarında öncelikle problemin açık bir şekilde belirlenmesi gerekir, Tanımlanması gereken problem en ince ayrıntılarıyla anlaşılmalıdır ki sonrasında çıkacak ufak bir detayın büyük sorunlara yolaçmasının önüne geçebilmek ancak bu şekilde mümkün olabilir. Daha sonra da çözülecek problemin hangi aşamalardan geçmesi gerektiğine karar verilir.</p></blockquote>
<div id='stb-container-4776' class='stb-container'><div id='stb-caption-box-4776' class='stb-alert-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Problem tanımının önemi!<div id="stb-tool-4776" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-4776" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-4776' class='stb-alert-body_box stb_body' style="display: none; "> En basitinden <strong>2 sayının toplanması</strong> için hazırlanan programda, kişinin sayı yerine harf girmesi büyük problemlere yol açmayabilir fakat hazırlanan herhangi bir <strong>Stok takip programı</strong>&#8216;nda aynı işlem geri dönülemez sonuçlar doğurabilir .</div></div>
<blockquote><p><strong>» Çözüm yollarının tespiti: </strong>Problem çoğu zaman tek bir çözüm yolu izlenerek çözülebiliyor olsa da bazen birden fazla çözüm yolu ortaya çıkabilir, bu gibi durumlar da en iyi, en sade, en anlaşılır çözüm yolunun seçilmesi;</p>
<ul>
<li> Bilgisayarın yükünü hafifletir,</li>
<li> Programcının yükünü hafifletir,</li>
<li> Çözüm yolunda çıkacak olan problemlerin onarılmasını kolaylaştırır.</li>
</ul>
</blockquote>
<div id='stb-container-7967' class='stb-container'><div id='stb-caption-box-7967' class='stb-info-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Bir problemin çözüm yolu tespit edilirken;<div id="stb-tool-7967" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-7967" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-7967' class='stb-info-body_box stb_body' style="display: none; "> » Problemin amacı hakkında bilgiler belirlenir.<br />
» İstenilecek olan bilgiler belirlenir -<em>Veri girişleri</em>-,<br />
» Kullanılacak olan tipler, veri yapıları, formlar belirlenir,<br />
» Program sonunda çıkabilecek sonuçlar belirlenir -<em>Veri çıkışları</em>-,<br />
» Sonuçların kullanıcıya nasıl aksettirileceği belirlenir -<em>Ekran&#8217;a, yazıcıya, vb</em>-. </div></div>
<blockquote><p><strong>» Algoritmanın hazırlanması: </strong>Algoritma hazırlamak, program yazmanın sadece <strong>kalem-kağıt</strong> kullanılarak yapılması işlemidir. Algoritmasını hazırladıktan problemin %51&#8242;inin bittiğini rahatlıkla söyliyebiliriz, bundan sonrası sadece istenilen programlama diliyle hazırlanan algoritmanın bilgisayarın anlayacağı dile çevrilmesi ile ibarettir.</p></blockquote>
<div id='stb-container-2731' class='stb-container'><div id='stb-caption-box-2731' class='stb-info-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Algoritma hazırlama aşamaları;<div id="stb-tool-2731" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-2731" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-2731' class='stb-info-body_box stb_body' style="display: none; "> » İşlem akışının belirlenmesi,<br />
» Ortaya çıkacak durumlara göre kullanılacak şartların belirlenmesi,<br />
» Belirlenen şartlara göre yapılacak işlemlerin ifade edilmesi<br />
Şeklinde özetleyebiliriz&#8230; </div></div>
<blockquote><p>Algoritma uygulamalarında işlem akışı yukarıdan aşağıya doğru adım adım ilerlenmesi ile sonuçlanır. Eğer akış içerisinden birden fazla kullanılacak adımlar var ise, bu adımlara <strong>Geri dönüş</strong>&#8216;ler yapılabilir. Akış diyagramlarında her adımın bir numara ile belirtilmesi gerekmektedir.</p></blockquote>
<p><div id='stb-container-3151' class='stb-container'><div id='stb-caption-box-3151' class='stb-warning-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Örnek bir algoritma - İki sayının toplamını hesaplayan algoritma<div id="stb-tool-3151" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-3151" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-3151' class='stb-warning-body_box stb_body' style="display: none; "> Adım adım ilerleyecek olursak;</p>
<p><strong>» Problemin tanımı:</strong> Kullanıcıdan iki sayı istenerek bu iki sayının toplamını tekrar kullanıcıya geri verecektir.</p>
<p><strong>» Çözüm yolunun tespiti:</strong></p>
<ul>
<li>Başlangıçta iki sayı girilmelidir,</li>
<li>Girilen sayıların toplamı hesaplanlamalıdır,</li>
<li>Sonuç görüntülenmelidir.</li>
</ul>
<p><strong>» Algoritmanın hazırlanması:</strong></p>
<ol>
<li>Başla</li>
<li>Birinci Sayının girilmesi ( A )</li>
<li>İkinci Sayının girilmesi ( B )</li>
<li>Toplama işlemi ( T=A+B )</li>
<li>Sonucun görüntülenmesi ( T )</li>
<li>Son </div></div></li>
</ol>
<blockquote><p>Basit bir algoritma olduğu için çok fazla ayrıntıya girilmesine gerek duyulmadan, kısa bir şekilde <strong>Problemin tanımı</strong>,<strong> Çözüm yolunun tespiti </strong>ve <strong>Algoritmanın hazırlanması</strong>&#8216;nı yapmış bulunuyoruz. Burada dikkatinizi çekebilecek olan parantez içlerinde bulunan <strong>A</strong>,<strong> B</strong>,<strong> T=A+B</strong>, gibi ifadeler olabilir. Programlama dillerinde dışarıdan alınan veya program içerisinde kullanılacak veriler ya da değerler için belirli atamalar yapılmaktadır. Bu atama işlemlerinde verilerin ya da değerlerin atandığı ifadeler <strong>Değişken </strong>adını alır.Yani yukarıdaki algoritma da kullanıcıdan istendiği varsayılan 2. işlem basamağındaki <strong>Birinci sayı</strong>, program içerisinde <strong>A </strong>değişkenine atanmıştır. Değişkenler ile ilgili detaylı bilgiye ileriki bölümlerde değineceğiz. Şimdi aynı şekilde bir de içerisinde <strong>Geri Dönüş</strong> aşaması bulunduran algoritma hazırlayalım.</p></blockquote>
<p><div id='stb-container-2315' class='stb-container'><div id='stb-caption-box-2315' class='stb-warning-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Örnek bir algoritma - Girilen 10 sayının toplam ve ortalamasını hesaplayan algoritma<div id="stb-tool-2315" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-2315" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-2315' class='stb-warning-body_box stb_body' style="display: none; "> Adım adım ilerleyecek olursak;</p>
<p><strong>» Problemin tanımı:</strong> Rastgele 10 adet sayı girilecektir, bu sayıların toplamı ve ortalamalarını hesaplanıp tekrar geri verecektir.</p>
<p><strong>» Çözüm yolunun tespiti:</strong></p>
<ul>
<li>Bir döngü sistemi ile 10 adet sayı girilir,</li>
<li>Her sayı girildiğinde toplam değere dahil edilir,</li>
<li>10 adet sayı girildiğinde ortalama hesaplanır,</li>
<li>Toplam ve ortalama değerleri gösterilir.</li>
</ul>
<p><strong>» Algoritmanın hazırlanması:</strong></p>
<ol>
<li>Başla</li>
<li>S=0, T=0</li>
<li>Sayıyı gir ( X )</li>
<li>T=T+X</li>
<li>S=S+1</li>
<li>Eğer S&lt;10 ise 3 no&#8217;lu adıma git</li>
<li>ORT=T/S yada ORT=T/10</li>
<li>Ortalama= ( ORT )</li>
<li>Toplam=( T )</li>
<li>Son</div></div></li>
</ol>
<blockquote><p>Önceki algoritmadan biraz daha detaylı bir algoritma hazırlamış olduk, burada da dikkatinizi çekecek bir iki nokta olabilir. Bunlardan ilki<strong> ikinci aşama</strong>&#8216;daki yapılan işlem yukarıda bahsetitiğimiz <strong>Değişken </strong>kavramında, <strong>değişkene değer atama işlemi</strong>&#8216;dir. Sağdaki değer, soldaki ise değişkendir. Diğer bir değişle sağdaki değer soldaki değişkene atanır. Bazı programlama dillerinde değişkenler tanımlandığında atama yapılmaması dahilinde programlama dili otomatik atamalar yapabilmektedir, bu şekilde çıkabilecek karışıklıklara yol açmamak için değer atamaları kesinlikle atlanılmaması gereken bir konudur. Bir diğer nokta ise <strong>altıncı adım</strong>&#8216;da yapılan işlem basamağı olan <strong>Döngü sistemi</strong>&#8216;dir. Algoritmayı ilk başta gördüğünüzde çözüm yolu için girilecek her sayı için bir adet değişken yani toplamda on adet ayrı değişken tanımlamak bir çözüm yolu olabilir. Fakat çözüm yolu belirlenirken bahsettiğimiz bir diğer konu ise en etkili ve kısa olan çözüm yolunun benimsenmesi olduğunu da unutmamak gerekir. Burada da programlama dillerinde vazgeçilmez bir unsur olan<strong> Döngü sistemi</strong> devreye girmektedir.</p></blockquote>
<div id='stb-box-5785' class='stb-info_box' ><strong>Döngü sistemi</strong> program içerisinde birden fazla yapılacak işlemlerin tekrar tekrar ifade edilmesi yerine, bir sefer ifade edilip daha sonra<strong> Geri dönüş</strong> ile aynı ifadenin tekrar işlemden geçmesi işlemine dayanan bir sistemdir. Programlama dili ifadesi ile; Birden fazla kullanılacak kod satırları bir defa yazılıp daha sonra bir döngü içerisinde tekrar ettirilerek istenilen miktarda aynı kod satırı üzerinde işlem yapılabilmesi işlemidir. </div>
<blockquote><p>İşte yukarıdaki algoritmamızda kullandığımız döngü sistemi bu işlemlerden ibarettir. Döngü sistemini inceleyecek olursak, ikinci adımda 0 (sıfır) değerini atadığımız ( S ) değişkenine, beşinci adımda bir arttıma işlemi uyguluyoruz -<em>Değişkene değer atama</em>-. 0=0+1 şeklinde atanan işlem sonucunda S değişkenini değeri <strong>1</strong> oluyor, bir sonraki işlemde 1=1+1&#8242;den S değişkenini değeri <strong>2</strong> oluyor ve bu şekilde artarak devam ediyor ta ki altıncı adımdaki <strong>Eğer S&lt;10 ise 3 no&#8217;lu adıma git</strong> şartına kadar bu adımda neler olduğuna biraz daha ayrıntılı bir şekilde bakalım;</p>
<p>» S değişkeni 9 olduğunda 3 no&#8217;lu adıma gidiyor,<br />
» Tekrar bir sayı alıyor,<br />
» Alınan sayı toplam değerine dahil ediliyor,<br />
» S değişkeni bir arttırılıyor,<br />
» Altıncı adımda <strong>S&lt;10</strong> ifadesi doğru olmadığından yani <strong>10&lt;10</strong> yanlış olduğundan -<em>10, 10&#8242;dan küçük müdür ?</em>- altıncı adımdan yedinci adıma geçiliyor ve döngü sona ermiş oluyor. Daha sonra da<br />
» Ortalama değeri hesaplanıyor,<br />
» Toplam değeri ile ortalama değeri çıktı olarak veriliyor.</p>
<p>Döngü sistemlerine daha sonraki konularımızda detaylı olarak değineceğiz&#8230;</p></blockquote>
<div id='stb-container-6960' class='stb-container'><div id='stb-caption-box-6960' class='stb-black-caption_box stb_caption' style="-webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; ">Cystem Enginarı'nın notu<div id="stb-tool-6960" class="stb-tool" style="float:right; padding:0px; margin:0px auto"><img id="stb-toolimg-6960" style="border: none; background-color: transparent; padding: 0px; margin: 0px auto;" src="http://www.systemenginari.net/wp-content/plugins/wp-special-textboxes/images/show.png" title="Göster" /></div></div><div id='stb-body-box-6960' class='stb-black-body_box stb_body' style="display: none; "> <strong>Problem çözme</strong> ve <strong>Algoritma hazırlama</strong> işlemleri<strong> C programlama</strong> ile bütünleştirilmemesi gereken kavramlardır. Bütün programlama dillerinde varolan bir kavramdır, programcı -<em>Coder</em>- için vazgeçilmezler arasında  olması gerekmektedir, program yazmada büyük kolaylık sağlamaktadır. Ufak programlarda faydası gözardı edilsede büyük çaplı programlarda çok gerekli işlemlerdir. Algoritmalar oldukça zevklidir. Yemek hazırlamaya benzer <img src='http://www.systemenginari.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ;</p>
<ol>
<li>Ocağı yak,</li>
<li>Tencereyi ocağa koy,</li>
<li>Tencerenin içine su koy,</li>
<li>Suyun ısınmasını bekle,</li>
<li>Eğer su ısındıysa, içine malzemeleri koy 7. adıma git,</li>
<li>Isınmadıysa 4. adıma git,</li>
<li>30 dakika sonra ocağı kapat -<em>tahmini bir değer</em>-</li>
</ol>
<p>Komik gibi görünsede, mantıklı düşünmeniz sonucunda algoritmanın, günlük hayatta yaptığımız planlı işlerin bir diğer adı olduğunu inkar edemeyiz <img src='http://www.systemenginari.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Hatta programlama işini ilerlettiğiniz takdirde, kendinizi geliştirmeniz sonucu, kendi algoritmalarınızı yazabilir ve etrafa hava atabilirsiniz <img src='http://www.systemenginari.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , </div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.systemenginari.net/c-problem-cozme-ve-algoritma-hazirlama.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C programlama</title>
		<link>http://www.systemenginari.net/c-programlama.html</link>
		<comments>http://www.systemenginari.net/c-programlama.html#comments</comments>
		<pubDate>Thu, 16 Jul 2009 12:13:58 +0000</pubDate>
		<dc:creator>Hakan AKSÜZEK</dc:creator>
				<category><![CDATA[Enginar işi]]></category>
		<category><![CDATA[Yazılım]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[c programlama]]></category>
		<category><![CDATA[coder]]></category>
		<category><![CDATA[k.t.ü.]]></category>
		<category><![CDATA[pascal]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[systemenginari]]></category>
		<category><![CDATA[turbo]]></category>

		<guid isPermaLink="false">http://www.systemenginari.net/?p=536</guid>
		<description><![CDATA[Programlama dilleri içerisinde C adından bir programlama dili mevcut imiş, öğrenim gördüğüm Karadeniz Teknik Üniversitesi&#8216;nde bu sene aldığım bir ders olarak yeni öğrendim. Mükemmel ötesi bir program zaten ayrıntılı bir araştırma yapıldığında ilk programlama dilleri arasında yer alıyor hatta ilk programlama dili de diyebiliriz. O kadar detaycı ve profesyonel bir programlama dili ki, ufacık bir [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Programlama dilleri içerisinde <strong>C </strong>adından bir <strong>programlama dili</strong> mevcut imiş, öğrenim gördüğüm <strong>Karadeniz Teknik Üniversitesi</strong>&#8216;nde bu sene aldığım bir ders olarak yeni öğrendim. Mükemmel ötesi bir program zaten ayrıntılı bir araştırma yapıldığında ilk programlama dilleri arasında yer alıyor hatta <strong><em>ilk programlama dili</em></strong> de diyebiliriz. O kadar detaycı ve profesyonel bir programlama dili ki, ufacık bir hatadan dolayı bütün programı coder&#8217;a zehir edebiliyor <img src='http://www.systemenginari.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  -<em>Coder: Programlamacı</em>-. Lisede <strong>Turbo Pascal</strong> gördüğüm için program kullanış açısından biraz aşina gelebiliyor fakat yinede <strong>Pascal </strong>programlama dilinden kat kat profesyonel ve detaylı bir dil oluyor. Aldığım dersler üzerine ve <strong>C programlama</strong> dersinin not&#8217;u çok iyi gelmesi kanısından yola çıkarar<strong> C programlama</strong> üzerine yoğunlaşmak istedim. Bu yoğunlaşma isteğimi de <strong>systemenginari.net</strong>&#8216;te çeşitli paylaşımlar da bulunarak ne kadar cana yakın, özverili bir programlamacı olduğumu gözler önüne sermeyi kendime bir vazife edindim <img src='http://www.systemenginari.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Hatta ilk olarak standart bir C kodu ile başlayabiliriz</p></blockquote>
<pre class="brush: cpp; title: ; notranslate"> #include &lt;stdio.h&gt;
#include &lt;conio.h&gt;

void main(){
  clrscr(); // Ekran temizleniyor clear screnn
  printf(&quot;Merhaba C&quot;); //Ekrana &quot;Merhaba C&quot; yazısını yazıyor
}</pre>
<blockquote><p><strong>C</strong>&#8216;nin en güzel yanı bilgisayarınızda herhangi bir kelime işlemci yazılımı ile -<em>Notepad,Word v.b.</em>- kodları yazabiliyor olmanız, fakat tek zorunlu olan şey bu kodları derlemeniz için kullanmanız gereken program olması gerekiyor. Bu programlar benim bildiğim kadarıyla 2 tane, birincisi <strong>Turbo C++</strong> diğeri ise Microsoft&#8217;un programı olan <strong>Microsoft C++</strong>.<strong> Turbo C++</strong> dos ortamında çalışmanıza olanak sağlıyor, ben çok sevdiğim için bu derleyici kullanıyorum. <strong>Microsoft C++</strong> ise dizayn ve görünüş açısından <strong>Visul Basic</strong> platformuna benziyor, görsellik açısından gayet hoş ama benim hoşuma gitmiyor <img src='http://www.systemenginari.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .  <div id='stb-box-6275' class='stb-download_box' > Ben kendi kullandığım <strong>Turbo C++</strong> derleyicisin <a href="http://www.box.net/shared/kf7vrhx01b" target="_blank">buradan</a> indirebilirsiniz&#8230; </div></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.systemenginari.net/c-programlama.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

