<?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>Furkan Işıkdoğan - Kişisel Site, Portfolyo, Blog...</title>
	<atom:link href="http://www.isikdogan.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.isikdogan.com</link>
	<description>Bilgisayar Bilimleri, Programlama, Fotoğrafçılık, Dijital Sanatlar, İnsan ve Hayvan Hakları, Teknoloji, Mühendislik... Çeşitli konularda çalışmalar v.s.</description>
	<lastBuildDate>Mon, 23 Aug 2010 14:32:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Microsoft Yaz Okulu 2010 &#8211; İstanbul</title>
		<link>http://www.isikdogan.com/2010/08/microsoft-yaz-okulu-2010-istanbul/</link>
		<comments>http://www.isikdogan.com/2010/08/microsoft-yaz-okulu-2010-istanbul/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 09:12:25 +0000</pubDate>
		<dc:creator>Furkan IŞIKDOĞAN</dc:creator>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[staj]]></category>
		<category><![CDATA[yaz okulu]]></category>

		<guid isPermaLink="false">http://www.isikdogan.com/?p=375</guid>
		<description><![CDATA[Merhabalar, bu yıl benim de katılımcı olarak yer aldığım Microsoft Yaz Okulu programının ardından yorumlarımı paylaşmak istedim. Programdan önce benim de merak ettiğim, sıkça sorulan sorular hakkında kendi fikirlerimi belirtmek istiyorum. Microsoft Yaz Okulu bir staj programı mıdır? Hem evet, hem hayır diyebilirim. Uygulamalı eğitimler ve staj projesinden oluşan Microsoft Yaz Okulu programı bir stajda [...]]]></description>
			<content:encoded><![CDATA[<p>Merhabalar, bu yıl benim de katılımcı olarak yer aldığım Microsoft Yaz Okulu programının ardından yorumlarımı paylaşmak istedim. Programdan önce benim de merak ettiğim, sıkça sorulan sorular hakkında kendi fikirlerimi belirtmek istiyorum.</p>
<p><a rel="attachment wp-att-377" href="http://www.isikdogan.com/2010/08/microsoft-yaz-okulu-2010-istanbul/istanbul_yazokulu/"><img class="size-full wp-image-377 aligncenter" title="Istanbul_YazOkulu" src="http://www.isikdogan.com/wp-content/uploads/2010/08/Istanbul_YazOkulu.jpg" alt="" width="600" height="347" /></a></p>
<p><strong>Microsoft Yaz Okulu bir staj programı mıdır?</strong></p>
<p>Hem evet, hem hayır diyebilirim. Uygulamalı eğitimler ve staj projesinden oluşan Microsoft Yaz Okulu programı bir stajda edinilebilecek deneyimden fazlasının elde edilebileceği bir yerdir ve çoğu üniversitede staj olarak sayılmaktadır.</p>
<p><strong>Katılım ücretli mi, kabul edilmek zor mu?</strong></p>
<p>Katılım ücretsiz. Bunun dışında öğlen yemekleri de oldukça güzel ve ücretsiz. Çay, kahve, ice tea, kola gibi içecekler de ücretsiz. Ayrıca usb bellek, cd çantası ve çok sayıda kitap gibi hediyeler de bulunmakta. Kabul edilme oranı ise bu sene %5 civarı.</p>
<p><strong>Microsoft Yaz Okulu kimlere hitap ediyor?</strong></p>
<p>Katılımcılar genel olarak bilgisayar mühendisliği öğrencilerinden oluşmakta. Bunun dışında diğer bölümlerden katılımcılar da var. Eğitimler genelde giriş seviyesinde oluyor ancak konular hızlandırılmış olarak işlendiğinden biraz ön bilgisi olan katılımcılar için daha faydalı bir program diyebilirim.</p>
<p><strong>Microsoft Yaz Okulunun katılımcılara ne gibi katkıları oluyor?</strong></p>
<p>Microsoft Yaz Okulu, teknik anlamda gelişme fırsatı sağlamanın yanı sıra sosyal gelişime de katkıda bulunan bir program diyebilirim. Farklı üniversitelerden katılımcıların bulunduğu bu program güzel arkadaşlıkların kurulabileceği bir çalışma ortamı sağlıyor. Değerli kazanımların elde edildiği programda, Microsoft&#8217;un Most Valuable Professional ünvanını verdiği, alanında uzman kişiler ile tanışma imkanı elde ediliyor. Microsoft Yaz Okulu genel olarak öğrenciler için verimli ve keyifli bir staj dönemi olarak geçiyor ve program sonunda öğrencilere Yaz Okulu Katılım Belgesi veriliyor.</p>
<p><strong>Eğitimlerde hangi konular işleniyor?</strong></p>
<p>Bu seneki programda ana başlıklar:</p>
<p>26-27 Temmuz: Windows Server 2008 R2 &#8211; Muammer Benzeş<br />
28-30 Temmuz: SQL Server 2008 R2 &#8211; Hakan Ulagan<br />
2-3 Ağustos : C# &#8211; Sefer Algan<br />
4 -6 Ağustos: ASP.NET &amp; Silverlight &#8211; Daron Yöndem<br />
9 -10 Ağustos : XNA GS &#8211; Engin Yıldız<br />
11 Ağustos: Sharepoint &#8211; Evren Ayan<br />
12-13 Ağustos: Windows Embedded -Umut Yeşilmen<br />
16 Ağustos: Windows Phone &#8211; Ekin Özçiçekçiler<br />
17-20 Ağustos: Staj Bitirme Projesi</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isikdogan.com/2010/08/microsoft-yaz-okulu-2010-istanbul/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web’den Bilgi Çıkarımı ile Emlak Arama: Emlak Defteri</title>
		<link>http://www.isikdogan.com/2010/06/webden-bilgi-cikarimi-ile-emlak-arama-emlak-defteri/</link>
		<comments>http://www.isikdogan.com/2010/06/webden-bilgi-cikarimi-ile-emlak-arama-emlak-defteri/#comments</comments>
		<pubDate>Fri, 18 Jun 2010 19:29:31 +0000</pubDate>
		<dc:creator>Furkan IŞIKDOĞAN</dc:creator>
				<category><![CDATA[Teknoloji]]></category>
		<category><![CDATA[Çalışmalarım ve Kaynak Kodlar]]></category>
		<category><![CDATA[arama motoru]]></category>
		<category><![CDATA[bilgi çıkarımı]]></category>
		<category><![CDATA[doğal dil işleme]]></category>
		<category><![CDATA[emlak]]></category>
		<category><![CDATA[proje]]></category>
		<category><![CDATA[ytü]]></category>

		<guid isPermaLink="false">http://www.isikdogan.com/?p=356</guid>
		<description><![CDATA[Günümüzde, fiziksel ortamda gerçekleşen her işlemin internet dünyasına taşınması ile internet oldukça önemli bir yapı olarak karşımıza çıkmıştır. Artık insanlar her işlerini internet üzerinden yapabilir, yönetebilir hale gelmiştir. Hızla büyüyen internet ağı dünyanın en büyük veritabanı olarak düşünülebilir. İnternetin bir bilgi okyanusu haline gelmesi insanlara birçok alanda kolaylık sağlamaktadır. Ancak bu durum insanların istediği bilgiye [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;"><a rel="attachment wp-att-363" href="http://www.isikdogan.com/2010/06/webden-bilgi-cikarimi-ile-emlak-arama-emlak-defteri/emlak_defteri/"><img class="size-full wp-image-363 alignleft" title="emlak_defteri" src="http://www.isikdogan.com/wp-content/uploads/2010/06/emlak_defteri.png" alt="" width="175" height="55" /></a>Günümüzde, fiziksel ortamda gerçekleşen her işlemin internet dünyasına taşınması ile internet oldukça önemli bir yapı olarak karşımıza çıkmıştır. Artık insanlar her işlerini internet üzerinden yapabilir, yönetebilir hale gelmiştir.</p>
<p style="text-align: justify;">Hızla büyüyen internet ağı dünyanın en büyük veritabanı olarak düşünülebilir. İnternetin bir bilgi okyanusu haline gelmesi insanlara birçok alanda kolaylık sağlamaktadır. Ancak bu durum insanların istediği bilgiye kısa sürede ulaşmasını zorlaştırmakta ve istenmeyen bilginin ayıklanması kullanıcı için problem oluşturmaktadır. İnternette bilgiye ulaşma aşamasında insanların zamanının büyük bir bölümü istenilen bilginin aranması ve gereksiz bilginin ayıklanmasıyla geçmektedir. Bu çalışmada bilgi çıkarımı ve doğal dil işleme yöntemlerinden faydalanılarak insanların istenilen bilgiye erişme sürelerinin kısaltılması hedeflenmiş ve bilgi çıkarımının kaynağı olarak internet seçilmiştir.</p>
<p style="text-align: justify;">Emlak aramanın gerek yatırımcılar gerek bireysel müşteriler için genellikle oldukça vakit alan bir iş olması genel amaçlı arama motorlarının yanı sıra emlak aramaya özel geliştirilmiş bir arama motoru ihtiyacını doğurmaktadır. İnsanların üzerindeki bu yükü hafifletmek, istenilen sonuca ulaşmak için harcanan zamanı kısaltmak için internette emlak aramanın tek çatı altında toplanması bu çalışmanın temelini oluşturmaktadır.</p>
<p><span id="more-356"></span></p>
<h3 style="text-align: justify;">ABSTRACT</h3>
<p style="text-align: justify;">The Internet has become one of the most important structures in the Information Era where the majority of the processes on the physical world moved into the digital environment. And now we are enabled to perform and manage many actions by using the Internet.</p>
<p style="text-align: justify;">The Internet can be assumed as the major database on the world. As the Internet became an ocean of information the people are enabled to access a huge amount of data. However, as much as the growth rate of the internet increased, the access time to precise and accurate information has been also increased proportionally. On many cases the elimination of unwanted data and the process of searching take more time than the processing the information. In this study the Internet has been determined as the source of the information and the main idea is reducing the time of search by using information extraction and natural language processing methods.</p>
<p style="text-align: justify;">Real estate searching process usually takes long time for both investors and individual customers. Consequently a specific need-based real estate search engine is required for reducing access time to accurate data. This work is mainly based on creating a common real estate database by using the data that extracted from the major real estate advertisement websites.</p>
<h3 style="text-align: justify;">1. GİRİŞ</h3>
<p style="text-align: justify;">Bilgi çağında teknolojinin gelişmesi ve dünyanın küreselleşmesi ile birlikte bilginin artış hızı üstel olarak artmaktadır. Artan bilgi ile birlikte bilginin seçilmesi, ayıklanması ve sınıflandırılmasına olan ihtiyaç artmıştır. Bilgi çıkarımı teknikleri bu noktada yapısal olmayan verileri işleyip belirli yapılara oturtarak insan müdahalesini en aza indirmeyi amaçlar.</p>
<p style="text-align: justify;">Bu çalışmada bilginin kaynağı olarak emlak ilan siteleri seçilmiş ve insanların emlak ararken harcadıkları süreyi en aza indirmek hedeflenmiştir. Sitelerin yarı yapısal veya yapısal olmayan HTML kodlarından bilgi çıkarımı ile yapısal ilanlar elde edilmiştir. Bilgi çıkarımı süreci gelişme bölümünde detaylı olarak incelenmiştir.</p>
<p style="text-align: justify;">Elde edilen yapısal veri üzerinde arama söz konusu olduğunda doğal dil ile yazılmış metinler bilgi çıkarımının kaynağı haline gelmektedir. Doğal dil ile yazılmış arama metinlerinin yapısal bir arama sorgusuna dönüştürülme süreci gelişme bölümünde detaylı olarak incelenmiştir.</p>
<h3 style="text-align: justify;">1.1 Mevcut Sistemler</h3>
<p style="text-align: justify;">Mevcut emlak arama sistemlerini incelediğimizde bu sistemlerin üyelik sistemiyle çalıştığını ve aramanın üyelerin eklediği ilanlar üzerinde yapıldığını görüyoruz. Özellikle yeni geliştirilen sitelerde bu yöntem tercih edildiğinde veritabanının arama yapılabilecek büyüklüğe ulaşması oldukça zaman almaktadır. Mevcut sistemlerin aksine Emlak Defteri ilan ekleme odaklı olmayıp bilgi çıkarımı ve doğal dil işleme teknikleri kullanılarak oluşturulan emlak dizini üzerinde arama yapma üzerine yoğunlaşmış bir sistemdir.</p>
<h3 style="text-align: justify;">1.2 Literatür Taraması</h3>
<p style="text-align: justify;">Bu bölümde doğal dil işleme uygulamalarından biri olan bilgi çıkarımı ve genel anlamda doğal dil işleme hakkında literatür taramasına yer verilmiştir.</p>
<h4 style="text-align: justify;">1.2.1 Doğal Dil İşleme</h4>
<p style="text-align: justify;">Doğal dil işleme, ana işlevi doğal bir dili çözümleme, anlama ve yorumlama olan bilgisayar sistemlerinin tasarımını ve gerçekleştirilmesini konu alan bir bilim ve mühendislik alanıdır<sup>[1]</sup>. Günümüzde doğal dil işleme uygulamaları çeşitli amaçlarla kullanılmaktadır. Metinlerin otomatik olarak özetlenmesi, başka bir dile çevrilmesi, doğal dil ile yazılan komutların yapısal bir dile çevrilmesi ve yazılı kaynaklardan ön tanımlı şablonlara uygun veri çıkarımı doğal dil işleme uygulamalarına örnek olarak verilebilir. Bu çalışmada ağırlıklı olarak yapısal şablonlara uygun veri bulma ve doğal dil ile yazılan metnin yapısal sorgu diline dönüştürülmesi üzerinde durulmuştur.</p>
<h4 style="text-align: justify;">1.2.2 Bilgi Çıkarımı</h4>
<p style="text-align: justify;">Bilgi çıkarımı genel anlamda önceden belirlenmiş bir formata uygun bilgilerin büyük metin dosyaları arasından bulunup çıkartılmasıdır<sup>[2]</sup>. Bilgi çıkarımı ile yapısal olmayan herhangi bir veri kaynağından istenilen şablona uyan veri elde edilmesi ile bu veri kaynağının bir veritabanı gibi kullanılabilmesi mümkün olmaktadır. Bu çalışmada emlak ilan sitelerinin HTML kaynak kodları veri kaynağı olarak kullanılmıştır.</p>
<p style="text-align: justify;">Bilgi çıkarım sistemlerinde temel olarak 3 tür metot kullanılmaktadır. İçinden bilgi çıkarılacak sayfanın HTML kodunun üretiliş şekline göre kullanılacak metot değiştirilir<sup>[2]</sup>. Bu metotlar yazım dilindeki şablonları kullanmak, öğelerine ayrılmış metinleri kullanmak ve sayfalardaki tekrarlanan HTML kodlarını kullanmak şeklinde sıralanabilir. Bu çalışmada dinamik içerikli web sayfaları bilgi çıkarımının kaynağı olarak kullanıldığından sayfalardaki tekrarlanan HTML kodlarından faydalanılmıştır.</p>
<h3 style="text-align: justify;">2. GELİŞİM SÜREÇLERİ</h3>
<p style="text-align: justify;">Emlak sitelerinden bilgi çıkarımı kapsamındaki “Emlak Defteri” adını verdiğimiz projemiz kapsamında öncelikle sistemin genel işleyişi, oluşturulacak metotlar, sınıflar ve veritabanının tasarımı gibi konularda bir yol haritası çıkarılmıştır. Veritabanı tasarım sürecinde ileride hangi veri alanları üzerinden arama veya sıralama gibi işlemler yapılabileceği de göz önünde bulundurulmuştur.</p>
<h3 style="text-align: justify;">2.1 Bilgi Çıkarımı Süreci</h3>
<p style="text-align: justify;">Bağlantı URL’lerinin elde edilmesi, bağlanılan sayfaların kaynak kodlarının ayrıştırılması ve çıkarılan verinin uygun biçimde veritabanına kaydedilmesi bu çalışmanın temel basamağını oluşturmaktadır. Bu bölümde bilgi çıkarımı sürecinde karşılaşılan sorunlar ve sunulan çözümler ele alınmıştır.</p>
<p style="text-align: justify;">Sayfalardan bilgi çıkarılması aşamasında karşılaşılan başlıca sorunlardan biri sitelerin yapılarının çok farklı olmasıyla birlikte sitelerin kendi içinde de tam anlamıyla bir yapı bütünlüğü olmaması olmuştur. Sitelerin HTML kodlarında farklı çeşit ilanlar için (örneğin paralı/parasız/vitrin ilan) farklı etiketler kullanılması ve her ilanın bütün bilgilerinin tam olmaması (örn resim yüklenmemiş) çıkarılan ilanlarda verilerin kaymasına, ilanların bilgilerinin birbirine karışmasına yol açabilmektedir. Site içindeki bu farklılık sorununa, string biçiminde alınan HTML kaynak kodunun sitenin yapısına göre satırlara bölünmesi ile çözüm getirilmiştir. Bu şekilde ilanların birbirinden bağımsız olarak işlenmesi ve eksik verilerin yalnızca o ilanda boş kalması sağlanabilmektedir. Sayfa kaynağından satır bazında bilgi çıkarımı, genelleştirilmiş bir örnek ile Şekil 2.3 te gösterilmiştir.</p>
<p style="text-align: justify;"><a rel="attachment wp-att-358" href="http://www.isikdogan.com/2010/06/webden-bilgi-cikarimi-ile-emlak-arama-emlak-defteri/sekil2_3/"><img class="size-full wp-image-358 alignleft" title="sekil2_3" src="http://www.isikdogan.com/wp-content/uploads/2010/06/sekil2_3.gif" alt="" width="300" height="298" /></a></p>
<p style="text-align: justify;">İlk satırın işlenmesi sonunda genelleştirilmiş ilan nesnesinin üye alanları:</p>
<p style="text-align: justify;">Resim Kaynağı: “resim1.jpg”,</p>
<p style="text-align: justify;">URL: “#”,</p>
<p style="text-align: justify;">Başlık: “Deneme İlan 1”,</p>
<p style="text-align: justify;">Durum ID: 1 (Kiralık),</p>
<p style="text-align: justify;">Fiyat: 1500Para Birimi ID: 1 (TL),</p>
<p style="text-align: justify;">Alan: 140,</p>
<p style="text-align: justify;">Emlak Tipi: “Daire”,</p>
<p style="text-align: justify;">Şehir: “İstanbul”,</p>
<p style="text-align: justify;">Semt: “Beşiktaş”</p>
<p style="text-align: justify;">Siteler arasındaki yapı farklılık sorununun çözümü ise ayrıştırma metotlarının mümkün olduğunca modüler yazılması ile mümkün olmuştur. Her sitede farklılık gösteren etiketleri girdi olarak alan, bir sonraki satırı ve bir sonraki veriyi getirmek için tasarlanan metotlar bütün siteler için ortak kullanılmaktadır. Ayrıştırma metotlarının geri döndürdüğü değerler ortak kullanılan bir nesnenin üye alanlarına yazılmakta ve uygun bir biçimde veritabanına yeni satır olarak eklenmektedir. Bu şekilde sisteme yeni bir site eklemek istenildiğinde sitenin HTML kaynak kodundaki siteye özel etiketleri girdi olarak alan bir metot yazılması ve gerekli ise veri tipi dönüşüm metotlarında ufak düzenlemeler yapılması yeterli olacaktır. Bu yapı başlıca sorunlardan biri olan kullanılan kaynak sitelerin yapısının değişmesi durumunda da kolay çözüm üretebilmemizi sağlamaktadır. Bilgi çıkarımı ve verilerin ayrıştırılma sürecinin genel akış diyagramı Şekil 2.4 deki gibidir.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><a rel="attachment wp-att-360" href="http://www.isikdogan.com/2010/06/webden-bilgi-cikarimi-ile-emlak-arama-emlak-defteri/sekil2_4/"><img class="alignright size-full wp-image-360" title="sekil2_4" src="http://www.isikdogan.com/wp-content/uploads/2010/06/sekil2_4.gif" alt="" width="350" height="321" /></a>Sayfaların kaynak kodlarının ayrıştırılabilmesi için öncelikle bağlanılacak URL’lerin bilinmesi gerekmektedir. Kaynak sitelerde tüm ilanları listeleme gibi bir seçenek olmaması ve bir arama sonucunda genellikle en fazla 1000 ilan döndürülmesi sitelerin bütün emlak ilan kategorilerini gezecek bir robot koda olan ihtiyacı doğurmaktadır. Ayrıştırılacak sayfaların URL’lerini üreten bu kodların yazılması arama detaylarının kodlanmamış bir biçimde URL’de yer aldığı siteler için birkaç basit döngü ile gerçeklenebilmektedir. Bununla birlikte kodlanmış URL içeren sitelerde arama özelliklerinin bağlantı adresinden anlaşılması göreceli olarak daha karmaşık bir yapıya sahiptir. Bu sitelerde de otomatik arama yapılabilmesi için arama özellikleri ile kullanılan ID numaralarını eşleştiren diziler kullanılarak bu problem büyük ölçüde çözülmüştür.</p>
<p style="text-align: justify;">Bir başka problem ise veritabanını güncellemek istediğimizde bütün veritabanının silinip tekrar oluşturulmasının hem performans açısından maliyetli olması, hem de hem de kaynak sitelere çok fazla sorgu gönderdiğimizden ip adresimizin engellenme olasılığını artırması olmuştur. Bu sorunu çözülmesi için veritabanının her seferinde yeniden oluşturması yerine yeni eklenen ilanların veritabanına eklenmesi düşünülmüştür. Gayrimenkuller araç, cep telefonu gibi çok hızlı alınıp satılan değerler olmadıkları için silinen ilanların veritabanından çıkarılması probleminin kullanıcılara kırık link bildirme seçeneği sunularak çözülmesi öngörülmüştür. Ancak kullanıcının ilan silme yetkisine sahip olmasının istismar edilebilecek bir özellik olması sistemde bir güvenlik açığı oluşturduğundan ilanların silinmeden önce otomatik kontrolünün yapılması gerekmektedir. Bununla birlikte saldırıya yönelik yapılan çok sayıda kırık link bildirme talebinin işlenmesinin sisteme yükleyeceği işlem yükü sistemin hizmet dışı kalmasına yol açabilmektedir. Sonuç olarak kullanıcıya bu seçeneği sunmak yerine yeni eklenen ilanları günlük olarak veritabanına eklenmesine ve silinen ilanların birikmemesi için belirli zaman aralıkları ile veritabanını yeniden oluşturulmasına karar verilmiştir.</p>
<p style="text-align: justify;">Veritabanımızı çok sayıda siteden ayrıştırdığımız verilerden oluşturmamız kullanıcının bir arama ile ulaşabileceği veriyi zenginleştirmektedir. Ancak kaynak site sayısı arttıkça farklı sitelere verilmiş aynı veya çok benzer ilanların da artması kullanıcının istediği ilana ulaşma süresini uzatabilmektedir. Aynı veya çok benzer ilanların saptanmasında kaynak adres ve resim kaynağı dışındaki özelliklerden faydalanılmıştır. Seçilen özellikleri aynı olan ilanlardan birinin silinmesi hem veritabanının gereksiz büyümesini engellemesi hem de kullanıcının bilgiye ulaşma hızını artırması açısından başarımda artış sağlamıştır. Bununla birlikte yönetim panelinden ayarlanabilen belli bir tarihten önceki ilanların silinmesi, benzer ilanların bir tanesi dışındakilerin silinmesi gibi özellikler de başarımı artıran etkenler arasındadır.</p>
<h3 style="text-align: justify;">2.2 Doğal Dil İşleme Süreci</h3>
<p style="text-align: justify;">Bilgi çıkarımı teknikleri ile oluşturulan veritabanındaki veriye kullanıcının ulaşması aşamasında doğal dil işleme önem kazanmaktadır. Arama metninin SQL sorgusuna dönüştürülmesi sırasında NLP tekniklerinden faydalanılmıştır. Doğal dil işleme sürecinde sistemin genel akışı Şekil 2.6’da gösterildiği gibidir.</p>
<p style="text-align: justify;">Doğal dil işleme sürecinde karşılaştığımız başlıca sorunlardan biri anahtar kelimelerin nasıl ayırt edileceği olmuştur. Genellikle rakamsal ifadelerin tanımlayıcıları kendilerinden sonra geldiği için kelimelerin sondan başa doğru işlenmesi tercih edilmiştir. Örneğin “1000 – 1200 TL” metnini işlerken önce “TL” kelimesini işlememiz “1000” ve “1200” elemanlarının para kategorisine ait olduğunu anlamaya yardımcı olmaktadır. Rakamsal veri veya herhangi bir tanımlayıcı içermeyen kelimeler ise veritabanında ilgili tablolarla eşleşip eşleşmediği kontrol edilerek sınıflanmıştır. Örneğin “İstanbul” kelimesi hiçbir anahtar kelime içermediğinden veritabanındaki tablolarla eşleşip eşleşmediği kontrol edilmekte ve şehirler tablosunda yer aldığından arama sorgusuna bulunduğu tabloya uygun bir şekilde dâhil edilmektedir. Bütün kelimeler kategorilere ayrıldıktan sonra geriye kalan anlamlı kelimeler ise ilan başlıklarında aranmaktadır.</p>
<p style="text-align: justify;"><a rel="attachment wp-att-361" href="http://www.isikdogan.com/2010/06/webden-bilgi-cikarimi-ile-emlak-arama-emlak-defteri/sekil2_6/"><img class="alignright size-full wp-image-361" title="sekil2_6" src="http://www.isikdogan.com/wp-content/uploads/2010/06/sekil2_6.gif" alt="" width="300" height="654" /></a><br />
Giriş metninin ayrıştırılması sırasında karşılaşılan sorunlardan birini de büyük harf – küçük harf duyarlılığı ve ekler oluşturmaktadır. Bu çalışmada giriş metninin bütün karakterlerinin küçük harfe dönüştürülmesi, ek ve bağlaçların silinmesi ile arama sonuçlarının iyileştirilmesi hedeflenmiştir. Ancak eklerin silinmesi işlemi “Etiler”, “Şile”, “Levent” gibi bazı anahtar kelimelerin boş sonuç döndürmesi gibi bir yan etkiye yol açmıştır. Kelimelerde “ile”, “ve” gibi bağlaçlarla benzerlik gösteren harf dizilimleri yer aldığından bu bağlaçlar silindiğinde kelimeler deforme olmaktadır. Bu sorun kelimelerden yalnızca “de”, “da”, “te”, “ta” gibi bulunma ekleri çıkarılarak, bağlaçların ise bir kelimenin içinde değil ayrı bir kelime olarak arama metninde yer alması durumunda silinmesi ile çözülebilir. Bununla birlikte “Niğde” gibi adının sonunda bulunma ekleri ile karışabilecek harfler bulunan il ve ilçeler ise yapısal sorgu oluşturulurken birebir eşleme yerine benzerlik kıyaslaması yapıldığından çoğunlukla sorun oluşturmamaktadır. “Niğ” ile başlayan başka şehir bulunmadığından harfler eksik olmasına rağmen doğru sonuçlar dönecektir.</p>
<p style="text-align: justify;">Emlak Defteri arama modülü genel anlamda doğal dil ile yazılmış arama metni ile arama yapabilme yetisine sahip olmakla birlikte harf düzeltme veya anlamsal çıkarımda bulunma özelliklerine sahip değildir. Örneğin “<em>Beşkitaş</em>” şeklinde yazılan metinde yazılmak istenenin “<em>Beşiktaş</em>” olduğu veya “<em>Tekirdağ’ın doğusundaki şehir</em>” yazıldığında anlatılmak istenenin “<em>İstanbul</em>” olduğunun tespiti mevcut sistemde mümkün olmamaktadır.</p>
<p style="text-align: justify;">Arama sonuçlarının iyileştirilebilmesi için kullanıcı arayüzüne kullanıcının isteğe bağlı olarak kullanabildiği detaylı arama seçenekleri eklenmiştir. Detaylı arama seçenekleri doğal dil ile arama modülü ile birlikte de kullanılabilmektedir.</p>
<p style="text-align: justify;">Genel bir örnek olarak “<em>İstanbul Beşiktaş’ta 100-150 metrekare 2 oda 1 salon 1000 1200tl arası kiralık daire</em>” şeklinde bir arama metninin işlenmesini inceleyecek olursak; ön işlemden sonra elde edilen kelimeler: “istanbul”, “beşiktaş”, “100”, “150”, “metrekare”, “2”, “oda”, “1”, “salon”, “1000”, “1200tl”,  “kiralık”, “daire” olacaktır. Son kelimeden ilk kelimeye doğru işlemeye başladığımızda “tl”, “metrekare”, “salon” ve “oda” anahtar kelimeleri algılanmakta ve kendilerinden önce gelen rakamsal değerler uygun kategorilere atanmaktadır. Anahtar kelime içermeyen şehir ve semt adları olan “istanbul” ve “beşiktaş” kelimeleri ise veritabanında ilgili tablolarda aranarak sorguya uygun bir biçimde eklenmektedir. Arama alanlarından hiçbiri ile eşleşmeyen kelimeler ise ilan başlığında aranmak üzere sorguya eklenmektedir. Bütün kelimeler işlendikten sonra kategorilerine ayrılan kelimeler de uygun şekilde sorguya dâhil edilmektedir. Örnek arama metinleri ve SQL sorgularıyla ilgili bazı örnekler Tablo 2.4’te verilmiştir.</p>
<p style="text-align: justify;"><strong>Tablo 2.4 </strong>Arama metni işleme örnekleri</p>
<table style="text-align: justify;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="286" valign="top">Arama   Metni</td>
<td width="289" valign="top">Oluşturulan   SQL Sorgusu</td>
</tr>
<tr>
<td width="286" valign="top">Bursa   Nilüfer’de Satılık 3+1 daire</td>
<td width="289" valign="top">SELECT   * FROM getAdv WHERE [Type] like &#8216;%daire%&#8217; AND [Ad_Status] like &#8216;%satılık%&#8217;   AND [Region] like &#8216;%nilüfer%&#8217; AND [City] like &#8216;%bursa%&#8217; AND NumRoom=&#8217;3+1&#8242;</td>
</tr>
<tr>
<td width="286" valign="top">selenium   twins residence beşiktaş kiralık 2000-3000tl arası</td>
<td width="289" valign="top">SELECT   * FROM getAdv WHERE [Ad_Status] like &#8216;%kiralık%&#8217; AND [Region] like   &#8216;%beşiktaş%&#8217; AND [Type] like &#8216;%residence%&#8217; AND Price&gt;=&#8217;2000&#8242; AND   Price&lt;=&#8217;3000&#8242; AND [Title] like &#8216;%selenium twins%&#8217;</td>
</tr>
<tr>
<td width="286" valign="top">2   oda 1 salon kiralık 100-150m2 daire</td>
<td width="289" valign="top">SELECT   * FROM getAdv WHERE [Type] like &#8216;%daire%&#8217; AND [Ad_Status] like &#8216;%kiralık%&#8217;   AND Area&gt;=&#8217;100&#8242; AND Area&lt;=&#8217;150&#8242; AND NumRoom=&#8217;2+1&#8242;</td>
</tr>
<tr>
<td width="286" valign="top">şilede   satılık yazlık 120000tl &#8211; 150000 tl</td>
<td width="289" valign="top">SELECT   * FROM getAdv WHERE [Type] like &#8216;%yazlık%&#8217; AND [Ad_Status] like &#8216;%satılık%&#8217;   AND [Region] like &#8216;%şile%&#8217; AND Price&gt;=&#8217;120000&#8242; AND Price&lt;=&#8217;150000&#8242;</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">Sonuç olarak bilgi çıkarımı ve doğal dil işlemlerinin sonucunda kullanıcı sistemin web arayüzünü kullanarak kolaylıkla arama yapabilmekte ve sonuçlara hızlı bir şekilde ulaşabilmektedir. Kullanıcı arayüzünün ekran görüntüsü Şekil 2.8’deki gibidir.</p>
<p style="text-align: justify;"><a rel="attachment wp-att-362" href="http://www.isikdogan.com/2010/06/webden-bilgi-cikarimi-ile-emlak-arama-emlak-defteri/sekil2_8/"><img class="aligncenter size-full wp-image-362" title="sekil2_8" src="http://www.isikdogan.com/wp-content/uploads/2010/06/sekil2_8.jpg" alt="" width="400" height="305" /></a></p>
<h3 style="text-align: justify;">3. SONUÇ</h3>
<p style="text-align: justify;">Günümüzde bilgi çıkarımı ve doğal dil işleme uygulamaları insanlara birçok alanda kolaylık sağlamaktadır. Yapısal olmayan veri kaynaklarından faydalanarak yapısal veri elde edilmesi; verinin işlenmesinde kolaylık sağlamakta, insanların üzerine düşen işlem yükünün yazılımlar tarafından gerçekleştirilebilmesini mümkün kılmaktadır.</p>
<p style="text-align: justify;">Bu çalışmada kaynağı çeşitli emlak ilan web siteleri olan yapısal olmayan veya yarı yapısal veri işlenerek yapısal bir kalıp elde edilmiştir. Bilgi çıkarımı ile elde edilen veritabanında arama yapma söz konusu olduğunda doğal dil ile yazılmış bir arama metni yapısal olmayan bir veri kaynağı olarak karşımıza çıkmaktadır. Algoritması temel anlamda gelişme bölümünde ele alınan Emlak Defteri arama modülü, kullanıcının girdiği arama metnini basit anlamda yapısal bir veritabanı sorgusuna dönüştürerek doğal dil ile aramaya olanak sağlamaktadır. Şehir ve ilçe adı gibi özel isimlerin yanlış yazılması durumu dışında kesme işareti, virgül, kısa ve uzun çizgilerde yapılan yazım yanlışları, ekler ve bağlaçların yanlış kullanımı gibi durumlarda da sistem başarılı sonuçlar üretebilmektedir.</p>
<p style="text-align: justify;">Bilgi çıkarımı ile ortak bir veritabanı oluşturulması, farklı sitelerde veya aynı site içerisinde yer alan aynı veya yüksek oranda benzerlik gösteren kayıtların silinebilmesine olanak sağlamaktadır. Bu şekilde kullanıcının tekrarlanan veriler ile zaman kaybı azaltılarak birim zamanda elde edilen faydanın en yüksek seviyede olması hedeflenmiştir.</p>
<p style="text-align: justify;">Sonuç olarak Emlak Defteri projesi ile emlak arama sürecinin birçok açıdan hızlandırılması ile zaman kaybının en aza indirilmesi hedeflenmiştir.   Kullanılan yöntemler hem sistemin çalışma hızının iyileştirilmesini hem de kullanıcının arama sürecinin önemli ölçüde hızlandırılmasını sağlamıştır.</p>
<h3 style="text-align: justify;">Kaynaklar</h3>
<p style="text-align: justify;"><strong>Işıkdoğan, Furkan</strong>, ve Emrah Mete. &#8220;Web’den Bilgi Çıkarımı İle Emlak Arama: Emlak Defteri&#8221;,  Bilgisayar Projesi. Yıldız Teknik Üniversitesi Bilgisayar Mühendisliği Bölümü, 2010.</p>
<p style="text-align: justify;">[1] Oflazer, K. ve Bozşahin, C. (2006) “Türkçe Doğal Dil İşleme”, Web. &lt;http://turkoloji.cu.edu.tr/DILBILIM/turkce_dogal_dil_isleme.pdf&gt;.</p>
<p style="text-align: justify;">[2] Amasyalı, M. F. “İnternet&#8217;ten Bilgi Çıkarımı” Web. &lt;http://www.ce.yildiz.edu.tr/mygetfile.php?id=365&gt;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isikdogan.com/2010/06/webden-bilgi-cikarimi-ile-emlak-arama-emlak-defteri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu’da bir kaç ipucu</title>
		<link>http://www.isikdogan.com/2010/06/ubuntuda-bir-kac-ipucu/</link>
		<comments>http://www.isikdogan.com/2010/06/ubuntuda-bir-kac-ipucu/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 18:05:40 +0000</pubDate>
		<dc:creator>Furkan IŞIKDOĞAN</dc:creator>
				<category><![CDATA[Teknoloji]]></category>
		<category><![CDATA[asp.net]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mono project]]></category>
		<category><![CDATA[programlama]]></category>
		<category><![CDATA[staj]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wine]]></category>
		<category><![CDATA[wubi]]></category>

		<guid isPermaLink="false">http://www.isikdogan.com/?p=353</guid>
		<description><![CDATA[Bu güne kadar genellikle Linux ortamına hep uzak kalmıştım, staj bahanesiyle Ubuntu ile biraz haşır neşir olmaya başladım. Öncelikle Ubuntu 10.04 LTS sürümünün yeni logosunu ve kullanıcı arayüzünü beğendim, patlıcan rengi yeni tema oldukça modern ve estetik olmuş. Özellikle benim gibi yıllarca Windows üzerinde çalışmış Linux dağıtımlarıyla pek alakası olmamış kişilerin işine yarayabilecek bir kaç [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-366" href="http://www.isikdogan.com/2010/06/ubuntuda-bir-kac-ipucu/ubuntu/"><img class="size-full wp-image-366 alignleft" title="ubuntu" src="http://www.isikdogan.com/wp-content/uploads/2010/06/ubuntu.gif" alt="" width="150" height="63" /></a>Bu güne kadar genellikle Linux ortamına hep uzak kalmıştım, staj bahanesiyle Ubuntu ile biraz haşır neşir olmaya başladım. Öncelikle Ubuntu 10.04 LTS sürümünün yeni logosunu ve kullanıcı arayüzünü beğendim, patlıcan rengi yeni tema oldukça modern ve estetik olmuş.</p>
<p>Özellikle benim gibi yıllarca Windows üzerinde çalışmış Linux dağıtımlarıyla pek alakası olmamış kişilerin işine yarayabilecek bir kaç uygulamadan bahsetmek istiyorum:</p>
<h4>WUBI: Windows UBuntu Installer</h4>
<p>Windows ve Ubuntu&#8217;yu birlikte kullanmak istediğimizde çeşitli disk bölümleme veya başlangıç ayarlama sorunları ile karşılaşabiliyorduk. WUBI ile Ubuntu kurulumu sıradan bir yazılım kurulumu basitliğine indirgenmiş. Kurulum sihirbazını indirip çalıştırdıktan sonra disk bölümleme veya boot dosyalarını düzenleme gibi işlemlere gerek kalmadan Ubuntu&#8217;nun son sürümü kuruluyor.</p>
<p><a href="http://wubi-installer.org/" target="_blank">http://wubi-installer.org</a></p>
<h4>Mono Project: Linux üzerinde .NET uygulamalarınızı çalıştırın</h4>
<p>C#  ve Asp.NET&#8217;in kullanım rahatlığından vazgeçemeyenler için oldukça faydalı bir proje. Microsoft yazılım geliştirme ortamlarında geliştirilen uygulamaların diğer platformlarda çalışmaması, MS Visual Studio&#8217;nun kullanım rahatlığına gölge düşürüyordu. Ancak Mono Project sayesinde uygulamalarımızı diğer platformlarda da çalıştırabilmekteyiz. MS Visual Studio ile oldukça benzerlik gösteren Mono ile Ubuntu üzerinde yaptığım denemelerin çoğu başarılı oldu. C# konsol uygulamalarını derlediğimde sorunsuz çalıştılar. Ancak MS SQL bağlantısı içeren Asp.NET projemi Ubuntu&#8217;da MS SQL Server kurulu olmadığı için doğal olarak çalıştıramadım. Sorunsuz bir sistem olduğunu söyleyemem ancak oldukça başarılı.</p>
<p><a href="http://www.mono-project.com " target="_blank">http://www.mono-project.com</a></p>
<h4>Wine Development HQ: Windows uygulamaları Linux&#8217;ta</h4>
<p>Wine için her ne kadar &#8220;Wine Is Not an Emulator&#8221; denilse de, gözlemlediğim kadarıyla Wine, Windows&#8217;un kütüphanelerini taklit eden bir Windows emulatörü. Wine sayesinde Windows&#8217;ta çalışan çoğu uygulamayı Linux ortamında çalıştırabilmekteyiz. Ayrıca Wine&#8217;ın Uygulama Veritabanında (AppDB) birçok programın incelemesi, düzgün çalışıp çalışmadığı ve nasıl kurulacağı hakkında detaylı bilgi mevcut.</p>
<p><a href="http://www.winehq.org/" target="_blank">http://www.winehq.org </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.isikdogan.com/2010/06/ubuntuda-bir-kac-ipucu/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Data Yapıları Ödev 6: Graf Boyama Yöntemi İle Ders Programı Hazırlama</title>
		<link>http://www.isikdogan.com/2010/06/data-yapilari-odev-6-graf-boyama-yontemi-ile-ders-programi-hazirlama/</link>
		<comments>http://www.isikdogan.com/2010/06/data-yapilari-odev-6-graf-boyama-yontemi-ile-ders-programi-hazirlama/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 12:34:44 +0000</pubDate>
		<dc:creator>Furkan IŞIKDOĞAN</dc:creator>
				<category><![CDATA[Çalışmalarım ve Kaynak Kodlar]]></category>
		<category><![CDATA[graf boyama]]></category>
		<category><![CDATA[kaynak kod]]></category>
		<category><![CDATA[veri yapıları]]></category>

		<guid isPermaLink="false">http://www.isikdogan.com/?p=352</guid>
		<description><![CDATA[Paylaşılamayan ortak kaynakları graf boyama yöntemi ile kaynağı kullanmak isteyen birimlere atayabiliriz. Bu çalışmada bir graf boyama örneği olan çakışmayan ders programı oluşturma gerçeklenmiştir. Aynı dersi alan öğrencilerin bulunduğu derslerin ders programında aynı zaman dilimine konması önlenmiş ve zaman mümkün olan en efektif biçimde kullanılmıştır. Kaynak Kodlar: #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #define MAX 50 int [...]]]></description>
			<content:encoded><![CDATA[<p>Paylaşılamayan ortak kaynakları graf boyama yöntemi ile kaynağı kullanmak isteyen birimlere atayabiliriz. Bu çalışmada bir graf boyama örneği olan çakışmayan ders programı oluşturma gerçeklenmiştir. Aynı dersi alan öğrencilerin bulunduğu derslerin ders programında aynı zaman dilimine konması önlenmiş ve zaman mümkün olan en efektif biçimde kullanılmıştır.</p>
<p><strong>Kaynak Kodlar:</strong><br />
<span id="more-352"></span></p>
<pre class="brush: c++">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#define MAX 50

int main(){
	int numOfCourses, i, j, key, adj1, adj2, currentColor;
	int adjacencyMatrix[MAX][MAX];
	char courseNames[MAX][MAX];
	printf("Ders Sayisini Girin: "); scanf("%d",&amp;numOfCourses);
	fflush(stdin);
	for(i=0;i&lt;numOfCourses;i++){
		printf("\n%d. Ders Adi: ",i+1); gets(courseNames[i]);
	}
	printf("\nKomsuluk Matrisini Girin:\n");
	printf("\nDers Numaralari:\n");
	for(i=0;i&lt;numOfCourses;i++){
		printf("%d. %s\n",i+1,courseNames[i]);
		for(j=0;j&lt;numOfCourses;j++)
			adjacencyMatrix[i][j]=0;
	}

	while(1){
		printf("\n1.Komsuluk Ekle\n2.Tamamla\n");
		scanf("%d",&amp;key);
		if(key==1){
				printf("DersNumarasi:");
				scanf("%d",&amp;adj1);
				printf("KomsuDersNumarasi:");
				scanf("%d",&amp;adj2);
				adjacencyMatrix[adj1-1][adj2-1] = 1;
				adjacencyMatrix[adj2-1][adj1-1] = 1;
		}
		else break;
	}

	for(i=0;i&lt;numOfCourses;i++){
		currentColor=1;
		for(j=i;j&gt;=0;j--){
			if(adjacencyMatrix[i][j]==1 &amp;&amp; adjacencyMatrix[j][j]==currentColor)
				currentColor++;
		}
		adjacencyMatrix[i][i] = currentColor;
		printf("\nDers: %s, Zaman Dilimi (renk): %d\n",courseNames[i],adjacencyMatrix[i][i]);
	}

system("pause");
return 0;
}
</pre>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;">#include &lt;stdio.h&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;">#include &lt;stdlib.h&gt;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;">#define MAX 50</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;">int main(){</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>int numOfCourses, i, j, key, adj1, adj2, currentColor;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>int adjacencyMatrix[MAX][MAX];</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>char courseNames[MAX][MAX];</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>printf(&#8220;Ders Sayisini Girin: &#8220;); scanf(&#8220;%d&#8221;,&amp;numOfCourses);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>fflush(stdin);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>for(i=0;i&lt;numOfCourses;i++){</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>printf(&#8220;\n%d. Ders Adi: &#8220;,i+1); gets(courseNames[i]);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>printf(&#8220;\nKomsuluk Matrisini Girin:\n&#8221;);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>printf(&#8220;\nDers Numaralari:\n&#8221;);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>for(i=0;i&lt;numOfCourses;i++){</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>printf(&#8220;%d. %s\n&#8221;,i+1,courseNames[i]);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>for(j=0;j&lt;numOfCourses;j++)</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 3;"> </span>adjacencyMatrix[i][j]=0;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>while(1){</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>printf(&#8220;\n1.Komsuluk Ekle\n2.Tamamla\n&#8221;);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>scanf(&#8220;%d&#8221;,&amp;key);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>if(key==1){</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 4;"> </span>printf(&#8220;DersNumarasi:&#8221;);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 4;"> </span>scanf(&#8220;%d&#8221;,&amp;adj1);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 4;"> </span>printf(&#8220;KomsuDersNumarasi:&#8221;);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 4;"> </span>scanf(&#8220;%d&#8221;,&amp;adj2);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 4;"> </span>adjacencyMatrix[adj1-1][adj2-1] = 1;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 4;"> </span>adjacencyMatrix[adj2-1][adj1-1] = 1;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>else break;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>for(i=0;i&lt;numOfCourses;i++){</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>currentColor=1;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>for(j=i;j&gt;=0;j&#8211;){</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 3;"> </span>if(adjacencyMatrix[i][j]==1 &amp;&amp; adjacencyMatrix[j][j]==currentColor)</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 4;"> </span>currentColor++;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>adjacencyMatrix[i][i] = currentColor;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 2;"> </span>printf(&#8220;\nDers: %s, Zaman Dilimi (renk): %d\n&#8221;,courseNames[i],adjacencyMatrix[i][i]);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"><span style="mso-tab-count: 1;"> </span>}</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;"> </span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;">system(&#8220;pause&#8221;);</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;">return 0;</span></p>
<p class="MsoNormal" style="margin-bottom: .0001pt; line-height: normal; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10.0pt; font-family: &quot;Courier New&quot;; color: black; mso-themecolor: text1; mso-no-proof: yes;">}</span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.isikdogan.com/2010/06/data-yapilari-odev-6-graf-boyama-yontemi-ile-ders-programi-hazirlama/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Yapıları Ödev 5: Kuyruk Yapısı (banka örneği)</title>
		<link>http://www.isikdogan.com/2010/05/350/</link>
		<comments>http://www.isikdogan.com/2010/05/350/#comments</comments>
		<pubDate>Fri, 21 May 2010 22:30:28 +0000</pubDate>
		<dc:creator>Furkan IŞIKDOĞAN</dc:creator>
				<category><![CDATA[Çalışmalarım ve Kaynak Kodlar]]></category>
		<category><![CDATA[kaynak kod]]></category>
		<category><![CDATA[kuyruk]]></category>
		<category><![CDATA[queue]]></category>
		<category><![CDATA[veri yapıları]]></category>

		<guid isPermaLink="false">http://www.isikdogan.com/?p=350</guid>
		<description><![CDATA[Bu çalışmada ilk giren ilk çıkar (FIFO) mantığı ile çalışan kuyruk veri yapısının basit bir uygulaması yer almaktadır. Bankada kuyruklar bulunmaktadır ve sıranın en önündekine her birim zamanda hizmet edilir. Hizmet süresi sıfır olan eleman sıradan çıkar. Yeni gelen müşteriler bekleme süresi en kısa olan kuyruğa eklenir. Kaynak Kodlar: #include &#60;stdio.h&#62; #include &#60;stdlib.h&#62; #include &#60;time.h&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>Bu çalışmada ilk giren ilk çıkar (FIFO) mantığı ile çalışan kuyruk veri yapısının basit bir uygulaması yer almaktadır. Bankada kuyruklar bulunmaktadır ve sıranın en önündekine her birim zamanda hizmet edilir. Hizmet süresi sıfır olan eleman sıradan çıkar. Yeni gelen müşteriler bekleme süresi en kısa olan kuyruğa eklenir.</p>
<p><strong>Kaynak Kodlar:</strong><br />
<span id="more-350"></span></p>
<pre class="brush: c++">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;time.h&gt;

int N;
int MAX;

struct queue{
int front, rear, count, weight;
int *values;
};
typedef queue * vezne;

vezne createQueue(){
vezne myQueue = (vezne) malloc(sizeof(struct queue));
myQueue-&gt;values = (int *) malloc(sizeof(int)*MAX);
myQueue-&gt;front = 0;
myQueue-&gt;rear = -1;
myQueue-&gt;count = 0;
myQueue-&gt;weight=0;
return myQueue;
}

int isFull(vezne myQueue){
 if(myQueue-&gt;count==MAX)
 return 1;
 else
 return 0;
}

int isEmpty(vezne myQueue){
 if(myQueue-&gt;count==0)
 return 1;
 else
 return 0;
}

void append(int newElement,vezne myQueue){
 if(isFull(myQueue)){
 printf("Ekleme Yapilamaz\n");
 return;
 }
 else{
 myQueue-&gt;count++;
 myQueue-&gt;rear = ( (myQueue-&gt;rear + 1) % MAX );
 myQueue-&gt;values[myQueue-&gt;rear] = newElement;
 myQueue-&gt;weight+= newElement;
 }
}

int serve(vezne myQueue){
 int serve;
 if(isEmpty(myQueue)){
 printf("Eleman Yok\n");
 return -1;
 }
 else{
 myQueue-&gt;count--;
 serve = myQueue-&gt;values[myQueue-&gt;front];
 myQueue-&gt;front = ( (myQueue-&gt;front + 1) % MAX);
 return serve;
 }
}

int getMinQueue(vezne *banka){
 int min=0;
 for(int i=N-1;i&gt;=0;i--)
 if(!isFull(banka[i]))
 min=i;
 for(int i=0;i&lt;N;i++)
 if(banka[i]-&gt;weight &lt; banka[min]-&gt;weight &amp;&amp; !isFull(banka[i]))
 min=i;
 return min;
}

void timeElapse(vezne *banka){
 int timeLeft;
 for(int i=0;i&lt;N;i++){
 if(banka[i]-&gt;count == 0) continue;
 timeLeft = banka[i]-&gt;values[banka[i]-&gt;front]-1;
 banka[i]-&gt;weight--;
 if(timeLeft&gt;0){
 banka[i]-&gt;values[banka[i]-&gt;front] = timeLeft;}
 else{
 serve(banka[i]);}
 }
}

void printQueues(vezne *banka){
 for(int i=0; i&lt;N; i++){
 int cnt=0;
 printf("\nSira %d: ",i);
 for(int j=banka[i]-&gt;front; cnt&lt;banka[i]-&gt;count;j=(j+1)%MAX){
 printf("%5d",banka[i]-&gt;values[j]);
 cnt++;
 }
 }
 printf("\n");

}

int main(){

 vezne *banka;
 int m=5;
 int x=20;
 int toplamIslem = 0;
 int yeniMusteri;
 int minQueue;
 int zaman = 0;
 srand(time(NULL));

 printf("Max islem suresi m= ");scanf("%d",&amp;m);
 printf("Max islem yuku x= ");scanf("%d",&amp;x);
 printf("Max kuyruk uzunlugu t= ");scanf("%d",&amp;MAX);
 printf("Vezne Sayisi N= ");scanf("%d",&amp;N);
 banka = (vezne *) malloc(sizeof(vezne)*N);

 for(int i=0; i&lt;N; i++)
 banka[i]=createQueue();

 while(toplamIslem&lt;x){
 yeniMusteri = rand()%(m+1);
 printf("\n---\nYeni Musteri: %d \n",yeniMusteri);
 if(yeniMusteri!=0)
 {
 if(toplamIslem+yeniMusteri&gt;x) break;
 toplamIslem+=yeniMusteri;
 minQueue = getMinQueue(banka);
 append(yeniMusteri,banka[minQueue]);
 }
 printf("\nZaman: t+%d\n",zaman);
 printQueues(banka);
 printf("\nToplam Islem: %d\n\n",toplamIslem);
 system("pause");
 timeElapse(banka);
 zaman++;
 }
 printf("\nYeni musteri girisi kapanmistir.\n");

 system("pause");
 return 0;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.isikdogan.com/2010/05/350/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Yapıları Ödev 4.2: Shell Sort</title>
		<link>http://www.isikdogan.com/2010/05/data-yapilari-odev-4-2-shell-sort/</link>
		<comments>http://www.isikdogan.com/2010/05/data-yapilari-odev-4-2-shell-sort/#comments</comments>
		<pubDate>Fri, 14 May 2010 22:27:26 +0000</pubDate>
		<dc:creator>Furkan IŞIKDOĞAN</dc:creator>
				<category><![CDATA[Çalışmalarım ve Kaynak Kodlar]]></category>
		<category><![CDATA[kaynak kod]]></category>
		<category><![CDATA[shell sort]]></category>
		<category><![CDATA[veri yapıları]]></category>

		<guid isPermaLink="false">http://www.isikdogan.com/?p=349</guid>
		<description><![CDATA[Shell sort algoritması insertion sort’un üzerine kurulu bir algoritmadır. Neredeyse sıralı olan dizileri sıralamada tercih edilir. Eleman sayısının yarısı kadar bir ofset değeri atanır ve elemanlar ofset aralıklarıyla insertion sort ile sıralanır ve bu işlem artan adım değerleri için yapılır. Daha sonra ofset yarılanır. Ofset değeri 1 den küçük olduğunda algoritma durur. Kaynak Kodlar: #include [...]]]></description>
			<content:encoded><![CDATA[<p>Shell sort algoritması insertion sort’un üzerine kurulu bir algoritmadır. Neredeyse sıralı olan dizileri sıralamada tercih edilir. Eleman sayısının yarısı kadar bir ofset değeri atanır ve elemanlar ofset aralıklarıyla insertion sort ile sıralanır ve bu işlem artan adım değerleri için yapılır. Daha sonra ofset yarılanır. Ofset değeri 1 den küçük olduğunda algoritma durur.</p>
<p><strong>Kaynak Kodlar:</strong><br />
<span id="more-349"></span></p>
<pre class="brush: c++">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#define size 50

int main()
{
 int a[size];
 int step,i,offset ,temp, n;
 printf("Enter the number of elements: ");
 scanf("%d",&amp;n);
 printf("\nEnter the array: ");
 for(i=0;i&lt;n;i++){
 printf("\n%d. :",i);
 scanf("%d",&amp;a[i]);
 }

 offset = n/2;
 while(offset&gt;0)
 {
 for(step = offset; step&lt; n; step++)
 {
 i=step-offset;
 while(i&gt;=0 &amp;&amp; a[i]&gt;a[i+offset])
 {
 temp = a[i];
 a[i] = a[i+offset];
 a[i+offset] = temp;
 i-=offset;
 }
 }
 offset/=2;
 }

 printf("\nSorted Array: ");
 for(i=0;i&lt;n;i++)
 printf("%d ",a[i]);

 system("pause");
 return 0;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.isikdogan.com/2010/05/data-yapilari-odev-4-2-shell-sort/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Yapıları Ödev 4.1: Huffman Decoding</title>
		<link>http://www.isikdogan.com/2010/05/data-yapilari-odev-4-1-huffman-decoding/</link>
		<comments>http://www.isikdogan.com/2010/05/data-yapilari-odev-4-1-huffman-decoding/#comments</comments>
		<pubDate>Fri, 14 May 2010 22:02:54 +0000</pubDate>
		<dc:creator>Furkan IŞIKDOĞAN</dc:creator>
				<category><![CDATA[Çalışmalarım ve Kaynak Kodlar]]></category>
		<category><![CDATA[huffman]]></category>
		<category><![CDATA[kaynak kod]]></category>
		<category><![CDATA[veri yapıları]]></category>

		<guid isPermaLink="false">http://www.isikdogan.com/?p=346</guid>
		<description><![CDATA[Huffman algoritması ayrık durumları bulunma yüzdelerine göre değişken uzunlukta kodlama esasına dayanır. Gerçek hayattaki veriler çoğunlukla heterojen yapıdadır, ayrık durumların bulunma oranlarının birbirine yakın olmadığı durumlarda bu algoritma ile ortalama kod uzunluğu kısalarak yerden kazanç sağlanabilir. Bu çalışmada yapılan Huffman algoritmasının basit bir simülasyonu olmakla birlikte herhangi bir sıkıştırma veya ağaç oluşturma söz konusu değildir. [...]]]></description>
			<content:encoded><![CDATA[<p>Huffman algoritması ayrık durumları bulunma yüzdelerine göre değişken uzunlukta kodlama esasına dayanır. Gerçek hayattaki veriler çoğunlukla heterojen yapıdadır, ayrık durumların bulunma oranlarının birbirine yakın olmadığı durumlarda bu algoritma ile ortalama kod uzunluğu kısalarak yerden kazanç sağlanabilir.<br />
Bu çalışmada yapılan Huffman algoritmasının basit bir simülasyonu olmakla birlikte herhangi bir sıkıştırma veya ağaç oluşturma söz konusu değildir. Verilen Huffman ağacına bakılarak girilen kod çözümlenmiştir.</p>
<p><strong>Akış Diyagramı: </strong><br />

<a href='http://www.isikdogan.com/2010/05/data-yapilari-odev-4-1-huffman-decoding/akis_huffman/' title='akis_huffman'><img width="180" height="135" src="http://www.isikdogan.com/wp-content/uploads/2010/06/akis_huffman-180x135.gif" class="attachment-thumbnail" alt="akis_huffman" title="akis_huffman" /></a>
<br />
<strong>Kaynak Kodlar:</strong><br />
<span id="more-346"></span></p>
<pre class="brush: c++">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#define maxSize 50
#define maxCodeLen 50

struct treeNode{
char code;
int number;
};

int main(){
 int i, lastIndex, treeSeeker;
 char isLeaf;
 char codeWord[maxCodeLen];
 struct treeNode huffman[maxSize];
 printf("Enter the last index of the tree:");
 scanf("%d",&amp;lastIndex);
 printf("\nEnter the tree: [enter -1 for null nodes]\n");
 for(i=1;i&lt;=lastIndex;i++)
 {
 printf("\nNumber value at %dth index:",i); scanf("%d",&amp;huffman[i].number);
 if(huffman[i].number==-1) continue;
 printf("Is Leaf?: [y/n] "); fflush(stdin); scanf("%c",&amp;isLeaf);
 if(isLeaf=='y'){
 printf("\nEnter the encoded character: "); fflush(stdin); scanf("%c",&amp;huffman[i].code);
 }
 }

 fflush(stdin);
 printf("\nEnter codeword: "); gets(codeWord);
 treeSeeker=1;
 printf("\n");
 for(i=0;codeWord[i]!='\0';i++){
 if(codeWord[i]=='0'){
 treeSeeker=treeSeeker*2;
 if(huffman[treeSeeker*2].number==-1 || treeSeeker*2&gt;lastIndex){
 printf("%c",huffman[treeSeeker].code);
 treeSeeker=1;
 }
 }
 else if(codeWord[i]=='1'){
 treeSeeker=treeSeeker*2+1;
 if(huffman[treeSeeker*2+1].number==-1 || (treeSeeker*2+1)&gt;lastIndex){
 printf("%c",huffman[treeSeeker].code);
 treeSeeker=1;
 }
 }
 else printf("\nInvalid Character!\n");

 }
 printf("\n"); system("pause");
 return 0;
 }</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.isikdogan.com/2010/05/data-yapilari-odev-4-1-huffman-decoding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Yapıları Ödev 3: Minimum Spanning Tree</title>
		<link>http://www.isikdogan.com/2010/04/data-yapilari-odev-3-minimum-spanning-tree/</link>
		<comments>http://www.isikdogan.com/2010/04/data-yapilari-odev-3-minimum-spanning-tree/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 22:15:40 +0000</pubDate>
		<dc:creator>Furkan IŞIKDOĞAN</dc:creator>
				<category><![CDATA[Çalışmalarım ve Kaynak Kodlar]]></category>
		<category><![CDATA[kaynak kod]]></category>
		<category><![CDATA[minimum spanning tree]]></category>
		<category><![CDATA[veri yapıları]]></category>

		<guid isPermaLink="false">http://www.isikdogan.com/?p=343</guid>
		<description><![CDATA[Verilen bir grafın minimum spanning tree’sinin bulunması en düşük maliyet ile bütün noktaların kapsanması açısından özellikle istasyonlar arasında ağ kurulumunda önem taşır. Bu çalışmada Kruskal’ın algoritmasını kullanarak basit bir minimum spanning tree implementasyonu yapılmıştır. Kaynaktaki graf n tane edge’den(u,v ve ağırlık değeri içeren bir struct) oluşan bir dizi şeklinde gösterilmiştir. MST bulma aşamasında hangi noktaların [...]]]></description>
			<content:encoded><![CDATA[<p>Verilen bir grafın minimum spanning tree’sinin bulunması en düşük maliyet ile bütün noktaların kapsanması açısından özellikle istasyonlar arasında ağ kurulumunda önem taşır. Bu çalışmada Kruskal’ın algoritmasını kullanarak basit bir minimum spanning tree implementasyonu yapılmıştır. Kaynaktaki graf n tane edge’den(u,v ve ağırlık değeri içeren bir struct) oluşan bir dizi şeklinde gösterilmiştir. MST bulma aşamasında hangi noktaların hangi alt graflara bağlandığını takip edebilmek için label[] adlı bir dizi kullanılmıştır. Derste de gördüğümüz bu algoritma ile graf üzerindeki bir MST’yi kolaylıkla bulabilmekteyiz.</p>
<p><strong>Akış Diyagramı: </strong><br />

<a href='http://www.isikdogan.com/2010/04/data-yapilari-odev-3-minimum-spanning-tree/akis_mst/' title='akis_mst'><img width="180" height="135" src="http://www.isikdogan.com/wp-content/uploads/2010/06/akis_mst-180x135.gif" class="attachment-thumbnail" alt="akis_mst" title="akis_mst" /></a>
<br />
<strong>Kaynak Kodlar:</strong><br />
<span id="more-343"></span></p>
<pre class="brush: c++">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#define size 50

struct graphNode{
       int u,v,weight;
       };

int main(){
    int label[size], numOfEdges, numOfNodes, i, k, u, v, temp, edgeCount=0, totalWeight=0;
    struct graphNode graph[size], tempNode;

    printf("Enter the number of the edges: "); scanf("%d",&amp;numOfEdges);
	printf("Enter the number of the nodes: "); scanf("%d",&amp;numOfNodes);
    for(i=0;i&lt;numOfEdges;i++){
                              printf("u: "); scanf("%d",&amp;graph[i].u);
                              printf("v: "); scanf("%d",&amp;graph[i].v);
                              printf("weight: "); scanf("%d",&amp;graph[i].weight);
                              printf("\n");
                              }

	for(k=0;k&lt;numOfEdges-1;k++)
		for(i=0;i&lt;numOfEdges-1;i++)
			if(graph[i].weight&gt;graph[i+1].weight){
				tempNode=graph[i];
				graph[i]=graph[i+1];
				graph[i+1]=tempNode;
			}

    for(i=0;i&lt;size;i++) label[i]=0;

    i=0;
    while(edgeCount&lt;numOfNodes-1){
                                  u=graph[i].u;
                                  v=graph[i].v;
                                  if((label[u]+label[v])==0){
															 edgeCount++;
                                                             label[u]=label[v]=edgeCount;
                                                             totalWeight+=graph[i].weight;
                                                             printf("u:%d, v:%d, weight:%d\n",u,v,graph[i].weight);
                                                             }
                                  else if((label[u]*label[v])==0){
                                       edgeCount++;
                                       label[u]=label[v]=(label[u]+label[v]);
                                       totalWeight+=graph[i].weight;
                                       printf("u:%d, v:%d, weight:%d\n",u,v,graph[i].weight);
                                       }
                                  else if(label[u]!=label[v]){
                                       edgeCount++;
									   temp=label[v];
                                       for(k=1;k&lt;=numOfNodes;k++)
										if(label[k]==temp) label[k]=label[u];

                                       totalWeight+=graph[i].weight;
                                       printf("u:%d, v:%d, weight:%d\n",u,v,graph[i].weight);
                                       }
                                  i++;
                                  }

    printf("\nTotal Weight: %d\n",totalWeight);
    system("pause");
    return 0;
    }</pre>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 2px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;">#include &lt;stdio.h&gt;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;">#include &lt;stdlib.h&gt;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;">#define size 50</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"> </span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;">struct graphEdge{</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>int u,v,weight;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>};</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;">int main(){</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>int label[size], numOfEdges, numOfNodes, i, k, u, v, temp, edgeCount=0, totalWeight=0;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>struct graphEdge graph[size], tempNode;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;Enter the number of the edges: &#8220;); scanf(&#8220;%d&#8221;,&amp;numOfEdges);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-tab-count: 1;"> </span>printf(&#8220;Enter the number of the nodes: &#8220;); scanf(&#8220;%d&#8221;,&amp;numOfNodes);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>for(i=0;i&lt;numOfEdges;i++){</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;u: &#8220;); scanf(&#8220;%d&#8221;,&amp;graph[i].u);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;v: &#8220;); scanf(&#8220;%d&#8221;,&amp;graph[i].v);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;weight: &#8220;); scanf(&#8220;%d&#8221;,&amp;graph[i].weight);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;\n&#8221;);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"> </span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-tab-count: 1;"> </span>for(k=0;k&lt;numOfEdges-1;k++)</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-tab-count: 2;"> </span>for(i=0;i&lt;numOfEdges-1;i++)</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-tab-count: 3;"> </span>if(graph[i].weight&gt;graph[i+1].weight){</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-tab-count: 4;"> </span>tempNode=graph[i];</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-tab-count: 4;"> </span>graph[i]=graph[i+1];</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-tab-count: 4;"> </span>graph[i+1]=tempNode; }</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-tab-count: 7;"> </span></span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>for(i=0;i&lt;size;i++) label[i]=0;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>i=0;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>while(edgeCount&lt;numOfNodes-1){</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>u=graph[i].u;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>v=graph[i].v;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>if((label[u]+label[v])==0){</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span><span style="mso-tab-count: 5;"> </span><span style="mso-spacerun: yes;"> </span>edgeCount++;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>label[u]=label[v]=edgeCount;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>totalWeight+=graph[i].weight;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;u:%d, v:%d, weight:%d\n&#8221;,u,v,graph[i].weight);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>else if((label[u]*label[v])==0){</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>edgeCount++;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>label[u]=label[v]=(label[u]+label[v]);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>totalWeight+=graph[i].weight;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;u:%d, v:%d, weight:%d\n&#8221;,u,v,graph[i].weight);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>else if(label[u]!=label[v]){</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>edgeCount++;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-tab-count: 2;"> </span><span style="mso-spacerun: yes;"> </span>temp=label[v];</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>for(k=1;k&lt;=numOfNodes;k++)</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-tab-count: 4;"> </span>if(label[k]==temp) label[k]=label[u];</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>totalWeight+=graph[i].weight;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;u:%d, v:%d, weight:%d\n&#8221;,u,v,graph[i].weight);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>i++;</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"> </span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;\nTotal Weight: %d\n&#8221;,totalWeight);</span></p>
<p class="MsoNoSpacing" style="text-indent: 35.4pt;"><span style="font-size: 10.5pt; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-spacerun: yes;"> </span>system(&#8220;pause&#8221;);</span></p>
<p><span style="font-size: 10.5pt; line-height: 115%; font-family: &amp;amp;quot; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ansi-language: TR; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;"><span style="mso-spacerun: yes;"> </span>return 0; }</span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.isikdogan.com/2010/04/data-yapilari-odev-3-minimum-spanning-tree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data Yapıları Ödev 2: Binary Search Tree</title>
		<link>http://www.isikdogan.com/2010/04/data-yapilari-odev-2-binary-search-tree/</link>
		<comments>http://www.isikdogan.com/2010/04/data-yapilari-odev-2-binary-search-tree/#comments</comments>
		<pubDate>Thu, 08 Apr 2010 11:10:58 +0000</pubDate>
		<dc:creator>Furkan IŞIKDOĞAN</dc:creator>
				<category><![CDATA[Çalışmalarım ve Kaynak Kodlar]]></category>
		<category><![CDATA[binary search tree]]></category>
		<category><![CDATA[kaynak kod]]></category>
		<category><![CDATA[veri yapıları]]></category>

		<guid isPermaLink="false">http://www.isikdogan.com/?p=334</guid>
		<description><![CDATA[Bağlı liste yapısını kullandığımızda eleman aramak başarım açısından oldukça maliyetli oluyordu. N tane eleman olması durumunda teorik olarak N tane elemanı kontrol etmek durumunda kalıyorduk. Binary search tree yapısı bize arama yapma ve eleman eklemede oldukça hızlı bir çözüm sağlıyor. log2(N+1)-1 tane karşılaştırma işlemi ile sonuca ulaşabiliyoruz. Bu çalışmada ağaç yapısını gerçeklerken elemanların indislerinin daha [...]]]></description>
			<content:encoded><![CDATA[<p>Bağlı liste yapısını kullandığımızda eleman aramak başarım açısından oldukça maliyetli oluyordu. N tane eleman olması durumunda teorik olarak N tane elemanı kontrol etmek durumunda kalıyorduk. Binary search tree yapısı bize arama yapma ve eleman eklemede oldukça hızlı bir çözüm sağlıyor. log2(N+1)-1 tane karşılaştırma işlemi ile sonuca ulaşabiliyoruz.</p>
<p>Bu çalışmada ağaç yapısını gerçeklerken elemanların indislerinin daha kolay gözlenebilmesi ve algoritma takibinin daha kolay olması için dizi gösterimi kullanıldı. Dengeli olmayan ağaçlarda dizi yapısını kullanmak hafıza alanı açısından maliyetli olabilir.  Bu yüzden bu örnekler oluşturma aşamasında uygun sıra ile dengeli olarak yerleştirildi. Ancak kullandığımız yapı self-balancing olmadığından zaman içerisinde yapılacak modifikasyonların bu dengeyi bozması olasıdır. Ayrıca elemanları sıralamak da bize ek işlem yükü getiriyor.</p>
<p>Daha geniş kapsamlı uygulamalarda struct yapısı kullanılarak işaretçiler yardımıyla yapılacak bir gerçekleme hafıza alanını daha etkili kullanma adına daha mantıklı olacaktır. Eğer bizim için en önemli ölçüt arama hızı ise self balancing tree yapısı alternatif olarak düşünülebilir.</p>
<p><strong>Akış Diyagramları:</strong><br />

<a href='http://www.isikdogan.com/2010/04/data-yapilari-odev-2-binary-search-tree/akis_bst/' title='akis_bst'><img width="180" height="135" src="http://www.isikdogan.com/wp-content/uploads/2010/06/akis_bst-180x135.gif" class="attachment-thumbnail" alt="akis_bst" title="akis_bst" /></a>
</p>
<p><strong>Kaynak Kodlar:</strong><br />
<span id="more-334"></span></p>
<pre class="brush: c++">#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#define isNull -99
#define size 200

void insert2tree(int tree[],int z)
{
     int i=1;
     int x=tree[i];

     while(x!=isNull){
                      if(z&lt;x) i=2*i;
                      else i=2*i+1;

                      x=tree[i];
                      }
     tree[i]=z;
}

int searchTree(int tree[],int i,int key)
{
     if(tree[i]==isNull)
     return isNull;

     else if(tree[i]==key)
     return i;

     else if(key&lt;tree[i])
     return searchTree(tree,i*2,key);
     else
     return searchTree(tree,i*2+1,key);
}

void balancedInsert(int tree[],int values[],int low,int hi){
     if(hi&lt;low) return;
     int middle=(hi+low)/2;
     insert2tree(tree,values[middle]);
     balancedInsert(tree,values,low,middle-1);
     balancedInsert(tree,values,middle+1,hi);
     }

void buildTree(int tree[],int values[],int numOfElements)
{
     int i,j,temp;
     for(i=0;i&lt;size;i++)
     tree[i]=isNull;

     for(j=0;j&lt;numOfElements-1;j++)
     for(i=0;i&lt;numOfElements-1;i++)
     if(values[i]&gt;values[i+1]){
                               temp=values[i];
                               values[i]=values[i+1];
                               values[i+1]=temp;
                               }

     balancedInsert(tree,values,0,numOfElements-1);
}

void printTree(int tree[],int i)
{
     if(tree[i]!=isNull){
                            printf("Value: %d, Index: %d\n",tree[i],i);
                            printTree(tree,i*2);
                            printTree(tree,i*2+1);
                            }

}

int main()
{
    int tree[size],values[size],i,choice,z,numOfElements;
    printf("Enter of number of elements: ");
    scanf("%d",&amp;numOfElements);

    for(i=0;i&lt;numOfElements;i++)
    scanf("%d",&amp;values[i]);

    buildTree(tree,values,numOfElements);

    while(1)
    {
    printf("&lt;&lt;MENU&gt;&gt;\n1.Insert New Node\n2.Search\n3.Print Tree\n4.Exit");
    scanf("%d",&amp;choice);

    switch(choice){
                   case 1:
                        printf("\nElement: "); scanf("%d",&amp;z);
                        insert2tree(tree,z);
                        break;
                   case 2:
                        printf("\nElement: "); scanf("%d",&amp;z);
                        i=searchTree(tree,1,z);
                        if(i==isNull) printf("\nNot Found\n");
                        else printf("\nFound on index: %d\n",i);
                        break;
                   case 3:
                        printTree(tree,1);
                        break;
                   case 4:
                        return 0;
                   }
    }
}
</pre>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 186px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">#include &lt;stdio.h&gt;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">#include &lt;stdlib.h&gt;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">#define isNull -99</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">#define size 200</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"> </span></p>
<p class="MsoNoSpacing"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10.5pt;">void insert2tree(int tree[],int z)</span></strong></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">{</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>int i=1;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>int x=tree[i];</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>while(x!=isNull){</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>if(z&lt;x) i=2*i;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>else i=2*i+1;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>x=tree[i];<span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>tree[i]=z;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">}</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"> </span></p>
<p class="MsoNoSpacing"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10.5pt;">int searchTree(int tree[],int i,int key)</span></strong></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">{</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>if(tree[i]==isNull)</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>return isNull;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>else if(tree[i]==key)</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>return i;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>else if(key&lt;tree[i])</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>return searchTree(tree,i*2,key);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>else</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>return searchTree(tree,i*2+1,key);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">}</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"> </span></p>
<p class="MsoNoSpacing"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10.5pt;">void balancedInsert(int tree[],int values[],int low,int hi){</span></strong></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>if(hi&lt;low) return;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>int middle=(hi+low)/2;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>insert2tree(tree,values[middle]);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>balancedInsert(tree,values,low,middle-1);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>balancedInsert(tree,values,middle+1,hi);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10.5pt;">void buildTree(int tree[],int values[],int numOfElements)</span></strong></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">{</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>int i,j,temp;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>for(i=0;i&lt;size;i++)</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>tree[i]=isNull;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>for(j=0;j&lt;numOfElements-1;j++)</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>for(i=0;i&lt;numOfElements-1;i++)</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>if(values[i]&gt;values[i+1]){</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>temp=values[i];</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>values[i]=values[i+1];</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>values[i+1]=temp;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>balancedInsert(tree,values,0,numOfElements-1);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">}</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"> </span></p>
<p class="MsoNoSpacing"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10.5pt;">void printTree(int tree[],int i)</span></strong></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">{</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>if(tree[i]!=isNull){</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;Value: %d, Index: %d\n&#8221;,tree[i],i);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>printTree(tree,i*2);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>printTree(tree,i*2+1);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">}</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"> </span></p>
<p class="MsoNoSpacing"><strong style="mso-bidi-font-weight: normal;"><span style="font-size: 10.5pt;">int main()</span></strong></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">{</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>int tree[size],values[size],i,choice,z,numOfElements;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;Enter of number of elements: &#8220;);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>scanf(&#8220;%d&#8221;,&amp;numOfElements);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>for(i=0;i&lt;numOfElements;i++)</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>scanf(&#8220;%d&#8221;,&amp;values[i]);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>buildTree(tree,values,numOfElements);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>while(1)</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>{</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;&lt;&lt;MENU&gt;&gt;\n1.Insert New Node\n2.Search\n3.Print Tree\n4.Exit&#8221;);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>scanf(&#8220;%d&#8221;,&amp;choice);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span></span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>switch(choice){</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>case 1:</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;\nElement: &#8220;); scanf(&#8220;%d&#8221;,&amp;z);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>insert2tree(tree,z);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>break;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>case 2:</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>printf(&#8220;\nElement: &#8220;); scanf(&#8220;%d&#8221;,&amp;z);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>i=searchTree(tree,1,z);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>if(i==isNull) printf(&#8220;\nNot Found\n&#8221;);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>else printf(&#8220;\nFound on index: %d\n&#8221;,i);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>break;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>case 3:</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>printTree(tree,1);</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>break;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>case 4:</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>return 0;</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNoSpacing"><span style="font-size: 10.5pt;">}</span></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.isikdogan.com/2010/04/data-yapilari-odev-2-binary-search-tree/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hayvanları neden yiyorum</title>
		<link>http://www.isikdogan.com/2010/03/hayvanlari-neden-yiyorum/</link>
		<comments>http://www.isikdogan.com/2010/03/hayvanlari-neden-yiyorum/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 21:04:00 +0000</pubDate>
		<dc:creator>Furkan IŞIKDOĞAN</dc:creator>
				<category><![CDATA[Denemeler]]></category>
		<category><![CDATA[İnsan ve Hayvan Hakları]]></category>
		<category><![CDATA[ekonomi]]></category>
		<category><![CDATA[hayvan]]></category>
		<category><![CDATA[hayvansal besin]]></category>
		<category><![CDATA[insan]]></category>
		<category><![CDATA[vejetaryen]]></category>

		<guid isPermaLink="false">http://www.isikdogan.com/?p=67</guid>
		<description><![CDATA[Son zamanlarda hayvan hakları hakkında konuştuğumda &#8220;Ne yani et yemeyelim mi şimdi, öyle ise sen neden yiyorsun?” gibi geribildirimler alıyorum. Evet, vejetaryen değilim et de yiyorum süt de içiyorum ve bunu, hayvansal besin tüketmenin günümüz şartlarında hayvanlar için de en iyisi olduğunu düşündüğüm için yapıyorum. Öncelikle günümüzde ev hayvanları dışında beslenen hayvanlar çoğunlukla gelir elde [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="attachment wp-att-369" href="http://www.isikdogan.com/2010/03/hayvanlari-neden-yiyorum/tavuk/"><img class="alignleft size-full wp-image-369" title="tavuk" src="http://www.isikdogan.com/wp-content/uploads/2010/03/tavuk.png" alt="" width="80" height="80" /></a>Son zamanlarda hayvan hakları hakkında konuştuğumda <em>&#8220;Ne yani et yemeyelim mi şimdi, öyle ise sen neden yiyorsun?”</em> gibi geribildirimler alıyorum. Evet, vejetaryen değilim et de yiyorum süt de içiyorum ve bunu, hayvansal besin tüketmenin günümüz şartlarında hayvanlar için de en iyisi olduğunu düşündüğüm için yapıyorum.</p>
<p>Öncelikle günümüzde ev hayvanları dışında beslenen hayvanlar çoğunlukla gelir elde etmek için yetiştiriliyor. Ne yazık ki kimse koşup oynasınlar diye kuzu, dana, tavuk beslemiyor. Durum bu olunca hayvansal besin tüketmemek bu sektörün zayıflamasına, dolayısıyla yetiştirilen hayvan sayısının azalmasına yol açıyor. Hepimizin vejetaryen olması ne yazık ki hayvanları özgürleştirmez, talep azaldığında zamanla üretim de azalır ve bugün her yerde görebildiğimiz bazı hayvanlar çocuklarımızın yalnızca hayvanat bahçelerinde görebildiği hayvanlar haline gelebilir. İleride insanlar hayvan hakları bilinci kazandıklarında sadece koşup oynasınlar diye hayvan yetiştirmek istediklerinde bile soyu azalıp hayvanat bahçesine düşen bu hayvanları bulmakta zorluk çekebilirler. Şu anda hayvanların iyi kötü bir yaşamları var; annesini göremeyen civcivlerin, gökyüzünü göremeyen danaların keşke daha iyi şartlarda bir yaşamları olsa, ama dünyaya hiç gelmemeleri yenilmek için gelmelerinden ve sadece bir üretim birimi olarak görülmelerinden daha kötü.</p>
<p>Hayvansal besin tüketmemin sebeplerinden bazıları bunlar ve günümüzde hayvansal besin tüketmenin en azından toplumsal bir hayvan sevgisi, hayvan hakları bilinci kazanılana kadar, soylarının devamı için hayvanların yararına olduğunu düşünüyorum.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.isikdogan.com/2010/03/hayvanlari-neden-yiyorum/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
