tag:blogger.com,1999:blog-6217282759569861582024-03-13T15:48:57.867-07:00EnjoyneeringAndroid Design & Dev BlogCüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.comBlogger23125tag:blogger.com,1999:blog-621728275956986158.post-71540729498682586762016-11-04T14:54:00.000-07:002016-11-04T14:56:33.636-07:00Android Material Transition Animation<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Bu proje bir arkadaşımın çook güzel bir tasarımından ilham alınarak yapıldı.<br />
Arkadaşım: <a href="https://twitter.com/ebruhu">https://twitter.com/ebruhu</a><br />
Tasarım: <a href="https://material.uplabs.com/posts/material-transition-animation">https://material.uplabs.com/posts/material-transition-animation</a><br />
<br />
Kaynak Kod: <a href="https://github.com/Cutta/MaterialTransitionAnimation">https://github.com/Cutta/MaterialTransitionAnimation</a><br />
Kodlarken yardımcı olan arkadaşım: <a href="https://github.com/andanicalik">https://github.com/andanicalik</a><br />
(Sol: Tasarım, Sağ: Uygulama)<br />
<br />
<a href="https://raw.githubusercontent.com/Cutta/MaterialTransitionAnimation/master/design.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="240" src="https://raw.githubusercontent.com/Cutta/MaterialTransitionAnimation/master/design.gif" width="320" /></a><a href="https://raw.githubusercontent.com/Cutta/MaterialTransitionAnimation/master/code.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="320" src="https://raw.githubusercontent.com/Cutta/MaterialTransitionAnimation/master/code.gif" width="180" /></a><br />
Söz konusu tasarım sol tarafta ve sağ taraftaki de ilham alınarak yapılmaya çalışılmış mobil uygulaması.İlk bakışta göze çarpan farklılıklar elbette mevcut ancak yaparken amacım, %100 aynısını yapmak olmadı. Kendimce yapılmasını zor gördüğüm kısımlara daha çok odaklandım.<br />
Başlama motivasyonum tamamen tasarımın çok güzel olması ve uygulamaya çalışırken beni zorlayacak olmasıydı. Tam da öyle oldu. Özellikle listenin scroll durumunda liste elemanlarının arasındaki boşluğun açılması ne daha önce bir uygulamada gördüğüm ne de uygulama fırsatı bulabildiğim bir şeydi. Tasarımı hoş kılan en önemli özellik de buydu.<br />
<b>1. Ekran:</b> - Yukarı yönde scroll olmaya başladığı anda üst kısımda bulunan başlık ve edittext <a href="https://github.com/Cutta/MaterialTransitionAnimation/blob/master/app/src/main/res/anim/grow_from_center.xml">animasyon</a> ile kaybolmalı<br />
- Aşağı yönde scroll olurken listenin sonuna geldiysek ve listemiz ilk pozisyonunu aldıysa üst kısım <a href="https://github.com/Cutta/MaterialTransitionAnimation/blob/master/app/src/main/res/anim/shring_to_center.xml">animasyon</a> ile geri açılmalı<br />
<br />
- Scroll durumunu yakalanmalı<br />
- Ekranda görünen liste elemanları(item) na bu durumu iletilmeli<br />
- Liste elemanlarının bu durum karşısında aralarındaki boşluk (margin) yavaşça açılmalı<br />
- Scroll durunca margin azaltılarak boşluk yavaşça kapatılmalı.<br />
<br />
<b> Scroll durumunu yakalanmalı</b><br />
Listeyi oluşturmak için <a href="https://developer.android.com/reference/android/support/v7/widget/RecyclerView.html">RecyclerView</a> yapısını kullandığımız için <a href="https://developer.android.com/reference/android/support/v7/widget/RecyclerView.OnScrollListener.html">RecyclerView.OnScrollListener</a> abstract class'ı ile listenin scroll durumundan haberdar oluyoruz.<br />
<br />
<b> Ekranda görünen liste elemanları(item) na bu durumu iletilmeli</b><br />
OnScrollListener sayesinde yakaladığımız bu durumu listenin elemanlarına <a href="https://github.com/greenrobot/EventBus">EventBus</a> ile haber ediyoruz. Liste elemanları RelativeLayout' tan extend edilen bir bir <a href="https://github.com/Cutta/MaterialTransitionAnimation/blob/master/app/src/main/java/com/cunoraz/mta/MyCardView.java">class</a> ile oluşturuluyor.<br />
<br />
<b> Liste elemanlarının bu durum karşısında aralarındaki boşluk (margin) yavaşça açılmalı<br />Scroll durunca margin azaltılarak boşluk yavaşça kapatılmalı.</b><br />
Burda da yardımımıza <a href="https://developer.android.com/reference/android/animation/ValueAnimator.html">ValueAnimator</a> yetişiyor. Çok hoş bir kullanımı mevcut. <b>x</b> değerinden <b>y</b> değerine şu kadar milisaniyede geçiş yap deyip geçiş yaparken şu işlemi yap diyebiliyoruz.<br />
Anlatımımın eksik kaldığına eminim <a href="https://github.com/Cutta/MaterialTransitionAnimation/blob/master/app/src/main/java/com/cunoraz/mta/MyCardView.java">kodu</a> görerek bu açıklamamdan daha çok şey anlayabilirsiniz.<br />
<br />
<b> 1. Ekrandan 2. Ekrana Geçiş</b>Activity geçişlerinde animasyon verebilmek için android bizim için işi çok kolay bir hale getiriyor.<br />
<a href="https://android.jlelse.eu/easy-android-shared-element-transition-ac36952a4a4#.qhvqe1c58">https://android.jlelse.eu/easy-android-shared-element-transition-ac36952a4a4#.qhvqe1c58</a> burada oldukça güzel açıklanmış. Bir kaç adımda güzel bir animasyon katabilmeniz mümkün.<br />
<br />
Bunlar dışında kalan özellikler standart işlemler olduğu için açıklayıp yazıyı uzatmak istemedim.<br />
<br />
Kodu incelemek isteyenler buradan yaksın: <a href="https://github.com/Cutta/MaterialTransitionAnimation">https://github.com/Cutta/MaterialTransitionAnimation</a><br />
Herkese kolay gelsin.Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-33388048072467730382016-08-24T14:08:00.001-07:002016-10-14T13:52:38.204-07:00Android Reveal Animation Kullanımı<div class="separator" style="clear: both; text-align: center;">
<a href="https://s15.postimg.org/nz3v1dnor/ezgif_com_video_to_gif.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://s15.postimg.org/nz3v1dnor/ezgif_com_video_to_gif.gif" width="180" /></a></div>
<br />
Bu animasyonu en çok WhatsApp dan hatırlayacaksınız diye düşünüyorum. Konuşma esnasında bir şey göndermek istediğimizde sağ üst köşeden ataç simgesine dokunuyoruz ve o sihirli seçim ekranı oluşuyor. Özellikle dokunulan yerden oluşmaya başlaması kullanıcıya güzel bir görüntü sunuyor. UI, UX bu konular benlik değil abi koda gel, ben nasıl yapıldığına bakarım diyorsan hemen seni dinliyorum ve işin teknik kısmına değinmeye çalışıyorum. :)<br />
Öncelikle bu iş için kullandığım kütüphane : <a href="https://github.com/ozodrukh/CircularReveal">https://github.com/ozodrukh/CircularReveal</a><br />
Github sayfasında da belirttiği gibi bu kütüphane sayesinde api level 14+ herkese ulaşabiliyoruz.<br />
<br />
Bu animasyon işlemini yapabilmek için Android'in bize sunduğu sunduğu <a href="https://developer.android.com/reference/android/view/ViewAnimationUtils.html">ViewAnimationUtils</a> sınıfını kullanıyoruz. Bu sınıfta da bir tane <a href="https://developer.android.com/reference/android/view/ViewAnimationUtils.html#createCircularReveal(android.view.View, int, int, float, float)">createCircularReveal</a> adında static metodumuz mevcut.<br />
Parametreleri şöyle:<br />
<br />
<pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Menlo'; font-size: 9.0pt;">Animator createCircularReveal (
View view<span style="color: #cc7832;">,
</span><span style="color: #cc7832;">int </span>centerX<span style="color: #cc7832;">,
</span><span style="color: #cc7832;">int </span>centerY<span style="color: #cc7832;">,
</span><span style="color: #cc7832;">float </span>startRadius<span style="color: #cc7832;">,
</span><span style="color: #cc7832;">float </span>endRadius)<span style="color: #cc7832;">;</span></pre>
<br />
Yani diyorki :<br />
"Hangi view' e bu işlemi uygulayacağım?",<br />
"X ekseninde merkezi kaç olacak?",<br />
"X ekseninde merkezi kaç olacak?",<br />
"Başlangıç için çapım ne olacak",(Circular olduğunu unutmayalım)<br />
"Bitiş için çapım ne olacak".<br />
Başlangıç ve bitiş çaplarını gösterip, kaybederken kullanacağız.<br />
Animasyon ile başlatırken startRadius = 0,<br />
animasyon ile kapatırken endRadius = 0 değerini veriyoruz.<br />
<br />
"startRadius = 0" diyerek circular animasyonumuz için merkezden(0 noktasından) başla demiş oluyoruz.<br />
aynı şekilde "endRadius = 0" diyerek kapanan animasyona merkeze (0 noktasına) gelene kadar küçül diyoruz.<br />
<br />
Kodu görmek isteyenler, üstünde oynama yapacaklar için github linki:<br />
<a href="https://github.com/Cutta/RevealAnimation">https://github.com/Cutta/RevealAnimation</a><br />
<br />
Herkese kolay gelsin.Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-47136743015889409452015-12-29T08:32:00.000-08:002015-12-29T08:32:08.386-08:00Android GifViewÖncelikli github linkini vereyim sonra biraz açıklamaya çalışayım. <div>
<a href="https://github.com/Cutta/GifView">https://github.com/Cutta/GifView</a><br /><div class="separator" style="clear: both; text-align: center;">
<a href="https://camo.githubusercontent.com/19b4e43298746358948ac05ce184fa4d99029159/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f3236745073594c356841344945474166752f67697068792e676966" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"><br /></a><a href="https://camo.githubusercontent.com/19b4e43298746358948ac05ce184fa4d99029159/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f3236745073594c356841344945474166752f67697068792e676966" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: left;"><img border="0" height="400" src="https://camo.githubusercontent.com/19b4e43298746358948ac05ce184fa4d99029159/68747470733a2f2f6d656469612e67697068792e636f6d2f6d656469612f3236745073594c356841344945474166752f67697068792e676966" width="222" /></a></div>
<div style="text-align: left;">
Android için gif oynatmanın bir kaç yolu mevcut ancak en sağlıklı bulduğum bu yöntemi biraz sadeleştirerek sunmak istedim. Bu yöntemde gif lerimizi androidin bize sağladığı <a href="http://developer.android.com/reference/android/graphics/Movie.html">Movie</a> class ının yardımıyla oynatacağız.<br />GifView.java classından biraz bahsetmem gerekirse. Asıl işin burada döndüğünü kodlara bakınca da anlayacaksınız. Gif oynatma, durdurma, kaynağını belirleme, boyutlandırma gibi işlemlerin hepsi bu sınıfta meydana geliyor.Bu sınıf ise View classından extend ediliyor.<br /> Gifleri frame frame gösterebilmek için çalıştığımız class ise yine androidin bize sunduğu <a href="http://developer.android.com/reference/android/graphics/Canvas.html">Canvas</a> classı. Aslında yaptığımız şey Movie classına gifin her sahnesini canvas vasıtası ile iletmek ve oluşan görüntüyü View classından extend ettiğimiz için override edebildiğimiz onDraw metodunda "al bunu göster" diyebilek olarak özetlenebilir.<br />Umarım işinize yarar.</div>
<br /><br /><br /><br /></div>
Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-56925891580930892392015-12-17T12:23:00.000-08:002015-12-17T12:23:11.115-08:00Android EventBus Nedir?<br />
EventBus proje içerisinde olayları(event) rahatlıkla yakalayabilmemiz için geliştirilmiş bir kütüphane.<br />
Fragment, Activity, Thread, Service vb sınıflar arasında kolayca parametre akışı sağlamamıza yardımcı olur. Eski usül yöntem ile, Java' nın bize sağladığı interface ile bunu yapmak mümkün evet. Yani bir fragmentte tetiklenen bir olay başka bi event ya da activityde interface'ı implement ettiğimiz taktirde yakalanabilir. Ancak bunun olumsuz yanı kodu okunabilirlikten çok uzak kılıyor ve yeni bir şeyler yapmak istediğinizde iş gerçekten karışıyor. Böyle düşünen yalnızca ben değilmişim ki 7 bin üzerinde star alan <a href="https://github.com/greenrobot/EventBus">GreenRobot EventBu</a>s kütüphanesi ve tabi ki olmazsa olmaz Square şirketinin <a href="https://github.com/square/otto">Otto </a>kütüphanesi epey popüler.<br />
Kullanım açısından ikisi neredeyse aynı diyebiliriz ancak aşağıdaki karşılaştırma tablosunun bize söyleyecekleri var :)<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheU7BSrgv9P868YyrgZ0ttlDHlZ45JP_O4zpZZUnUNmtMSoQ2WUA7sz12L_bgdy7hfC9kwntdsTKDr5QIffEG9K2LG76AHYl-Hn66cIWZx_lC_P5J-5ljyGgWvhSveepIPg4p7rqI6pJU-/s1600/Ekran+Al%25C4%25B1nt%25C4%25B1s%25C4%25B1.PNG" imageanchor="1"><img border="0" height="177" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheU7BSrgv9P868YyrgZ0ttlDHlZ45JP_O4zpZZUnUNmtMSoQ2WUA7sz12L_bgdy7hfC9kwntdsTKDr5QIffEG9K2LG76AHYl-Hn66cIWZx_lC_P5J-5ljyGgWvhSveepIPg4p7rqI6pJU-/s400/Ekran+Al%25C4%25B1nt%25C4%25B1s%25C4%25B1.PNG" width="400" /></a><br />
<br />
Kullanımından da biraz bahsedecek olursam.<br />
Her olaya özgü Event classları oluşturuyoruz. Bu classları özel kılan bi durum yok. Normal değişkenler ve setter getter methodları olan bir class düşünebiliriz.<br />
Olayın meydana geldiği fragment ya da activity de olayın meydana geldiğini tek satırda söylüyoruz.<br /><br />
<span style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New';">EventBus.getDefault().post(new </span><span style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New';">ActivityEvent(</span><span style="background-color: #2b2b2b; color: #6a8759; font-family: 'Courier New';">"Event sent by MainActivity</span><span style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New';">"</span><span style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New';">))</span><span style="color: #cc7832; font-family: 'Courier New';">;</span><br />
<span style="color: #cc7832; font-family: 'Courier New';"><br /></span>
Bu satırda anlatılmak istenen gelinen satırda ActivityEvent olayının meydana geldiği.<br />
Bu olayı başka bi sınıfta yakalamak istiyorsak öncelikle olayları yakalamak istediğimizi söylüyoruz. Yani register işlemi. Bu işlemi fragment, activity ya da service sınıflarında onCreate methodlarında yerine getiriyoruz. Bu işlem de yalnızca tek satır.<br /><br />
<span style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New';">EventBus.getDefault().register(</span><span style="background-color: #2b2b2b; color: #cc7832; font-family: 'Courier New';">this</span><span style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New';">)</span><span style="color: #cc7832; font-family: 'Courier New';">;</span><br />
<span style="color: #cc7832; font-family: 'Courier New';"><br /></span>
Aynı şekilde işimizin bittiğini ve artık olaylardan haberdar olmak istemediğimizi de söylememiz gerekiyor. Bunu da onDestroy methodunda yerine getiriyoruz.<br />
<pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"><span style="color: #bbb529;">@Override</span><span style="color: #cc7832;">protected void </span><span style="color: #ffc66d;">onDestroy</span>() {
EventBus.<span style="font-style: italic;">getDefault</span>().unregister(<span style="color: #cc7832;">this</span>)<span style="color: #cc7832;">;</span><span style="color: #cc7832;"> super</span>.onDestroy()<span style="color: #cc7832;">;</span>}</pre>
Şimdi gelelim olayı yakaladığımız yere. Bunun için olayı yakalamak istediğimiz yerde onEvent adlı methodlar oluşturmamız gerekiyor ve bu methodlara hangi olaylarla ilgileniyorsak onu parametre olarak vermemiz gerekiyor. Yani birden fazla olaylı yakalayabiliriz.<br />
<pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: 'Courier New'; font-size: 9,0pt;"><span style="color: #cc7832;">public void </span><span style="color: #ffc66d;">onEvent</span>(ActivityEvent event) {
...
}</pre>
Kullanımı gerçekten çok çok kolay.<br />
Buradaki anlatım eksik ya da karışık gelmiş olabilir. Örnek proje Github' da mevcut. Oradan clonelayıp inceleyebilirsiniz.<br />
<a href="https://github.com/Cutta/EventBusSample"> https://github.com/Cutta/EventBusSample</a><br />
Kolay gelsin.<br />
<div>
<br /></div>
Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-44953489168778515672015-09-27T01:31:00.000-07:002015-09-27T01:31:08.234-07:00Adroid TagView<div class="separator" style="clear: both; text-align: center;">
<span style="text-align: start;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://i.giphy.com/26BkMXiVxhwYknst2.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://i.giphy.com/26BkMXiVxhwYknst2.gif" height="240" width="320" /></a></div>
<br />
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
<span style="text-align: start;">Öncelikle github linkini vereyim sonra hemen konuya başlayalım.</span></div>
<span style="text-align: start;"><div style="text-align: justify;">
<a href="https://github.com/Cutta/TagView">https://github.com/Cutta/TagView</a></div>
</span><div style="text-align: justify;">
<br /></div>
<span style="text-align: start;"><div style="text-align: justify;">
Android için tag görünümü gereken bir uygulama üzerinde çalışırken bazı benzer kütüphaneleri harmanlayarak yeni bir repo oluşturdum. Harmanlama ihtiyacım şu yüzden oldu.</div>
</span><span style="text-align: start;"><div style="text-align: justify;">
Taglerin silinebilmeleri gerekiyordu ve benim ilk kullandığım kütüphanede bu özellik mevcut değildi. Bu özelliğin mevcut olduğu kütüphanede de onaylama mekanızması yoktu yani silmeye yanlışlıkla basınca geri dönüşü olmuyordu.</div>
</span><span style="text-align: start;"><div style="text-align: justify;">
Biraz araştırınca işime yarar görünüme ve işleve kavuşturabildim. Umarım sizlerin de işine yarar.</div>
</span><br />
<br />Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-36888438199042327402015-06-25T15:48:00.003-07:002015-09-20T23:43:40.152-07:00Android Double Tap To Like (Çift Dokunma-Beğnme)<div class="separator" style="clear: both; text-align: center;">
<a href="https://camo.githubusercontent.com/51a8e03562759bb5cabeeb25dd67324113cc7835/687474703a2f2f692e696d6775722e636f6d2f7566486f4b4e432e706e67" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="352" src="https://camo.githubusercontent.com/51a8e03562759bb5cabeeb25dd67324113cc7835/687474703a2f2f692e696d6775722e636f6d2f7566486f4b4e432e706e67" width="640" /></a></div>
<br />
Öncelikle github linkine buradan ulaşabilirsiniz: <a href="https://github.com/Cutta/Double-Tap-To-Like">https://github.com/Cutta/Double-Tap-To-Like</a><br />Türkçe olarak tam karşılığını bulamasam da "beğenmek için çift dokuma" demek istiyorum.<br />
Instagram'dan sonra ondan etkilenen uygulamalarda da görebileceğimiz üzere iki kere artarda tıklama ve beğeni aksiyonunun android için uyarlanmış basit bir örnek kodunu yazdım.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Üzerinde çalıştığımız bir projede gereken bu durum için önce iki defa tıklama durumunu tespit ettik.<br />
Bu durumu Android' in bize sağladığı <a href="http://developer.android.com/reference/android/view/GestureDetector.html">GestureDetector</a> sınıfı ile çözdük. Bundan sonraki aşama da Instagram' daki gibi kalp animasyonu ile kullanıcıya beğendiğini anlatabilmekti.<br />
Bunu da yine Androidin bize sağladığı <a href="http://developer.android.com/reference/android/animation/package-summary.html">Animation</a> sınıfı ile çözüme kavuşturduk.<br />
Senaryoya göre kullanıcı resime iki defa tıklayacak ve animasyonumuz ekranda oynayarak kullanıcıya beğendiğini anlatacak. Instagram kullananlar zaten yakından bilir, kullanmayanlar da aşinadır eminim, zira ben kullanmıyorum ama biliyorum =)<br />
<br />
Bu özellik diğer uygulamlarda da karşımıza çıkıyor ve standartlaşmak üzere bir yolda ilerliyor. Eskiden iki tıkla resim yaklaştırılırdı ama artık insanlar diğer uygulamalar da dahi temkinli oluyorlar "iki defa tıklarsam beğenir mi acaba?" diye kafalarında soru oluşabiliyor.<br />
<br />
Bu durumu özetleyen, içinde basit bir resim galerisi barındıran bir yardımcı proje oluşturdum.<br />
Projeye aşağıdaki linkten ulaşabilirsiniz. İndirdikten sonra <a href="https://www.youtube.com/watch?v=nUuFuFLQ2bE">import</a> ederek çalıştırabilirsiniz<br />
<a href="https://github.com/Cutta/Double-Tap-To-Like">https://github.com/Cutta/Double-Tap-To-Like</a>Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com1tag:blogger.com,1999:blog-621728275956986158.post-18636118190938805242015-05-13T14:05:00.000-07:002015-05-18T08:52:40.617-07:00Android Blur Resim Oluşturma (blur - image)<div class="separator" style="clear: both; text-align: center;">
<a href="https://camo.githubusercontent.com/ea83422d9f8c65edf207782d67d93bca03bcbcb2/687474703a2f2f692e696d6775722e636f6d2f694f763761456f2e706e67" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="335" src="https://camo.githubusercontent.com/ea83422d9f8c65edf207782d67d93bca03bcbcb2/687474703a2f2f692e696d6775722e636f6d2f694f763761456f2e706e67" width="400" /></a></div>
<div style="text-align: left;">
Şimdiye kadar üzerinde çalıştığım projeler arasında bir kaç kere blur görüntülerle uğraşmak zorunda kaldım. Bir çok metodunu buldum aslında ama kulağı ters taraftan tutmak vardır ya öyle yapmışlar gibi geldi bana =) Özellikle ilk defa blurlama işlemi ile uğraştığımda android geliştirmede yeniydim ve epey zorlanmıştım açıkçası. İkinci sefer karşılaştığımda o kadar zorlanmadım ama yine de uzun bir metoddu, Kod düzenime uymuyordu ve hakim olamıyordum kodlara tam manasıyla. Uğraşırken farklı örneklerde aslında özde aynı şeylerin yapıldığını gördüm bunları biraz derledim açıkçası ben de.<br />
Androidde var olan şu kütüphaneleri kullanarak işlemlerimi gerçekleştiriyorum.</div>
<br />
<div>
android.renderscript.RenderScript ,<br />
android.renderscript.ScriptIntrinsicBlur.<br />
Kullandığım iki metodda blurluğun seviyesini blur.setRadius(20.0f); satırında belirliyorum. Bu float değer 0 ile 25 değeri arasında kabul ediliyor sadece buna dikkat etmek lazım. Kodları indirmek istemeyen olursa kısaca burda örnek kodu yazayım.<br />İndirmek isteyenelr için link: <a href="https://github.com/Cutta/Simple-Image-Blur">https://github.com/Cutta/Simple-Image-Blur</a><br />
<br />
<table class="highlight tab-size-8 js-file-line-container" style="background-color: white; border-collapse: collapse; border-spacing: 0px; box-sizing: border-box; color: #333333; font-family: Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 13px; line-height: 18.2000007629395px; tab-size: 8;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><td class="blob-code blob-code-inner js-file-line" id="LC57" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre; word-wrap: normal;">imageview <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">=</span> (<span class="pl-smi" style="box-sizing: border-box;">ImageView</span>) itemView<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>findViewById(<span class="pl-smi" style="box-sizing: border-box;">R</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>id<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>imageView);
<span class="pl-smi" style="box-sizing: border-box; line-height: 16.7999992370605px;">BitmapDrawable</span><span style="line-height: 16.7999992370605px;"> drawable </span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 16.7999992370605px;">=</span><span style="line-height: 16.7999992370605px;"> (</span><span class="pl-smi" style="box-sizing: border-box; line-height: 16.7999992370605px;">BitmapDrawable</span><span style="line-height: 16.7999992370605px;">) imageview</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 16.7999992370605px;">.</span><span style="line-height: 16.7999992370605px;">getDrawable();// var olan resmimizi bitmape ceviriyoruz
</span><span class="pl-smi" style="box-sizing: border-box; line-height: 16.7999992370605px;">Bitmap</span><span style="line-height: 16.7999992370605px;"> bitmap </span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 16.7999992370605px;">=</span><span style="line-height: 16.7999992370605px;"> drawable</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 16.7999992370605px;">.</span><span style="line-height: 16.7999992370605px;">getBitmap();
</span><span class="pl-smi" style="box-sizing: border-box; line-height: 16.7999992370605px;">Bitmap</span><span style="line-height: 16.7999992370605px;"> blurred </span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 16.7999992370605px;">=</span><span style="line-height: 16.7999992370605px;"> blurRenderScript(bitmap, 20);//blurlanacak resmi ve, blur miktarini yolluyoruz
</span><span style="line-height: 16.7999992370605px;"> imageview</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 16.7999992370605px;">.</span><span style="line-height: 16.7999992370605px;">setImageBitmap(blurred);// donen blur resmi ekranda gosteriyoruzz
</span><span style="line-height: 16.7999992370605px;">
</span><br />
<table class="highlight tab-size-8 js-file-line-container" style="border-collapse: collapse; border-spacing: 0px; box-sizing: border-box; color: #333333; font-family: Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 13px; line-height: 18.2000007629395px; tab-size: 8;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><td class="blob-code blob-code-inner js-file-line" id="LC72" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">@SuppressLint</span>(<span class="pl-s" style="box-sizing: border-box; color: #183691;"><span class="pl-pds" style="box-sizing: border-box;">"</span>NewApi<span class="pl-pds" style="box-sizing: border-box;">"</span></span>)</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="73" id="L73" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC73" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">private</span> <span class="pl-smi" style="box-sizing: border-box;">Bitmap</span> <span class="pl-en" style="box-sizing: border-box; color: #795da3;">blurRenderScript</span>(<span class="pl-smi" style="box-sizing: border-box;">Bitmap</span> <span class="pl-v" style="box-sizing: border-box; color: #ed6a43;">smallBitmap</span>, <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">int</span> <span class="pl-v" style="box-sizing: border-box; color: #ed6a43;">radius</span>) {</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="75" id="L75" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC75" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">try</span> {</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="76" id="L76" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC76" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">smallBitmap <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">=</span> RGB565toARGB888(smallBitmap);</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="77" id="L77" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC77" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">} <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">catch</span> (<span class="pl-smi" style="box-sizing: border-box;">Exception</span> e) {</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="78" id="L78" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC78" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">e<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>printStackTrace();</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="79" id="L79" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC79" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">}</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="82" id="L82" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC82" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-smi" style="box-sizing: border-box;">Bitmap</span> bitmap <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">=</span> <span class="pl-smi" style="box-sizing: border-box;">Bitmap</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>createBitmap(</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="83" id="L83" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC83" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">smallBitmap<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>getWidth(), smallBitmap<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>getHeight(),</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="84" id="L84" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC84" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-smi" style="box-sizing: border-box;">Bitmap</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span><span class="pl-smi" style="box-sizing: border-box;">Config</span><span class="pl-c1" style="box-sizing: border-box; color: #0086b3;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>ARGB_8888</span>);</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="86" id="L86" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC86" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-smi" style="box-sizing: border-box;">RenderScript</span> renderScript <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">=</span> <span class="pl-smi" style="box-sizing: border-box;">RenderScript</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>create(context);</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="88" id="L88" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC88" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-smi" style="box-sizing: border-box;">Allocation</span> blurInput <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">=</span> <span class="pl-smi" style="box-sizing: border-box;">Allocation</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>createFromBitmap(renderScript, smallBitmap);</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="89" id="L89" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC89" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-smi" style="box-sizing: border-box;">Allocation</span> blurOutput <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">=</span> <span class="pl-smi" style="box-sizing: border-box;">Allocation</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>createFromBitmap(renderScript, bitmap);</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="91" id="L91" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC91" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-smi" style="box-sizing: border-box;">ScriptIntrinsicBlur</span> blur <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">=</span> <span class="pl-smi" style="box-sizing: border-box;">ScriptIntrinsicBlur</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>create(renderScript,</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="92" id="L92" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC92" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-smi" style="box-sizing: border-box;">Element</span><span class="pl-c1" style="box-sizing: border-box; color: #0086b3;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>U8_4</span>(renderScript));</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="93" id="L93" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC93" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">blur<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>setInput(blurInput);</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="94" id="L94" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC94" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">blur<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>setRadius(radius); <span class="pl-c" style="box-sizing: border-box; color: #969896;">// radius must be 0 < r <= 25</span></td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="95" id="L95" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC95" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">blur<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>forEach(blurOutput);</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="97" id="L97" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC97" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">blurOutput<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>copyTo(bitmap);</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="98" id="L98" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC98" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">renderScript<span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>destroy();</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="100" id="L100" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC100" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">return</span> bitmap;</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="102" id="L102" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: left; vertical-align: top; white-space: nowrap; width: 50px;"></td><td class="blob-code blob-code-inner js-file-line" id="LC102" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; text-align: left; vertical-align: top; white-space: pre; word-wrap: normal;">}
<br />
<table class="highlight tab-size-8 js-file-line-container" style="border-collapse: collapse; border-spacing: 0px; box-sizing: border-box; color: #333333; font-family: Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 13px; line-height: 18.2000007629395px; tab-size: 8;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><td class="blob-code blob-code-inner js-file-line" id="LC104" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">private</span> <span class="pl-smi" style="box-sizing: border-box;">Bitmap</span> <span class="pl-en" style="box-sizing: border-box; color: #795da3;">RGB565toARGB888</span>(<span class="pl-smi" style="box-sizing: border-box;">Bitmap</span> <span class="pl-v" style="box-sizing: border-box; color: #ed6a43;">img</span>) <span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">throws</span> <span class="pl-smi" style="box-sizing: border-box;">Exception</span> {
<span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">int</span><span style="line-height: 18.2000007629395px;"> numPixels </span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">=</span><span style="line-height: 18.2000007629395px;"> img</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="line-height: 18.2000007629395px;">getWidth() </span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">*</span><span style="line-height: 18.2000007629395px;"> img</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="line-height: 18.2000007629395px;">getHeight();
</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">int</span><span style="line-height: 18.2000007629395px;">[] pixels </span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">=</span><span style="line-height: 18.2000007629395px;"> </span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">new</span><span style="line-height: 18.2000007629395px;"> </span><span class="pl-smi" style="box-sizing: border-box; line-height: 18.2000007629395px;">int</span><span style="line-height: 18.2000007629395px;">[numPixels];
</span><br />
<table class="highlight tab-size-8 js-file-line-container" style="border-collapse: collapse; border-spacing: 0px; box-sizing: border-box; color: #333333; font-family: Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, 'Segoe UI Emoji', 'Segoe UI Symbol'; font-size: 13px; line-height: 18.2000007629395px; tab-size: 8;"><tbody style="box-sizing: border-box;">
<tr style="box-sizing: border-box;"><td class="blob-code blob-code-inner js-file-line" id="LC108" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre; word-wrap: normal;"><span class="pl-c" style="box-sizing: border-box; color: #969896;">//Get JPEG pixels. Each int is the color values for one pixel.
<span style="color: #333333; line-height: 18.2000007629395px;"> img</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">getPixels(pixels, </span><span class="pl-c1" style="box-sizing: border-box; color: #0086b3; line-height: 18.2000007629395px;">0</span><span style="color: #333333; line-height: 18.2000007629395px;">, img</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">getWidth(), </span><span class="pl-c1" style="box-sizing: border-box; color: #0086b3; line-height: 18.2000007629395px;">0</span><span style="color: #333333; line-height: 18.2000007629395px;">, </span><span class="pl-c1" style="box-sizing: border-box; color: #0086b3; line-height: 18.2000007629395px;">0</span><span style="color: #333333; line-height: 18.2000007629395px;">, img</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">getWidth(), img</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">getHeight());
</span><span style="line-height: 18.2000007629395px;">//Create a Bitmap of the appropriate format.
</span><span class="pl-smi" style="box-sizing: border-box; color: #333333; line-height: 18.2000007629395px;">Bitmap</span><span style="color: #333333; line-height: 18.2000007629395px;"> result </span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">=</span><span style="color: #333333; line-height: 18.2000007629395px;"> </span><span class="pl-smi" style="box-sizing: border-box; color: #333333; line-height: 18.2000007629395px;">Bitmap</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">createBitmap(img</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">getWidth(), img</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">getHeight(), </span><span class="pl-smi" style="box-sizing: border-box; color: #333333; line-height: 18.2000007629395px;">Bitmap</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span class="pl-smi" style="box-sizing: border-box; color: #333333; line-height: 18.2000007629395px;">Config</span><span class="pl-c1" style="box-sizing: border-box; color: #0086b3; line-height: 18.2000007629395px;"><span class="pl-k" style="box-sizing: border-box; color: #a71d5d;">.</span>ARGB_8888</span><span style="color: #333333; line-height: 18.2000007629395px;">);
</span><span style="line-height: 18.2000007629395px;">//Set RGB pixels.
</span><span style="color: #333333; line-height: 18.2000007629395px;">result</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">setPixels(pixels, </span><span class="pl-c1" style="box-sizing: border-box; color: #0086b3; line-height: 18.2000007629395px;">0</span><span style="color: #333333; line-height: 18.2000007629395px;">, result</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">getWidth(), </span><span class="pl-c1" style="box-sizing: border-box; color: #0086b3; line-height: 18.2000007629395px;">0</span><span style="color: #333333; line-height: 18.2000007629395px;">, </span><span class="pl-c1" style="box-sizing: border-box; color: #0086b3; line-height: 18.2000007629395px;">0</span><span style="color: #333333; line-height: 18.2000007629395px;">, result</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">getWidth(), result</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">.</span><span style="color: #333333; line-height: 18.2000007629395px;">getHeight());
</span><span class="pl-k" style="box-sizing: border-box; color: #a71d5d; line-height: 18.2000007629395px;">return</span><span style="color: #333333; line-height: 18.2000007629395px;"> result;
</span><span style="color: #333333; line-height: 18.2000007629395px;">}</span></span></td></tr>
</tbody></table>
</td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="105" id="L105" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"><br /></td><td class="blob-code blob-code-inner js-file-line" id="LC105" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre; word-wrap: normal;"><br /></td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="116" id="L116" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"><br /></td><td class="blob-code blob-code-inner js-file-line" id="LC116" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre; word-wrap: normal;"><br /></td></tr>
<tr style="box-sizing: border-box;"><td class="blob-num js-line-number" data-line-number="117" id="L117" style="-webkit-user-select: none; border-color: rgb(238, 238, 238); border-style: solid; border-width: 0px 1px 0px 0px; box-sizing: border-box; color: rgba(0, 0, 0, 0.298039); cursor: pointer; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; line-height: 18px; min-width: 50px; padding: 0px 10px; text-align: right; vertical-align: top; white-space: nowrap; width: 50px;"><br /></td><td class="blob-code blob-code-inner js-file-line" id="LC117" style="box-sizing: border-box; font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; font-size: 12px; overflow: visible; padding: 0px 10px; position: relative; vertical-align: top; white-space: pre; word-wrap: normal;"><br /></td></tr>
</tbody></table>
</td></tr>
</tbody></table>
<span style="line-height: 16.7999992370605px;">
</span></td></tr>
</tbody></table>
</div>
Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-78274927218399965212015-02-19T06:43:00.000-08:002015-02-19T06:43:03.675-08:00Android Çoklu Resim Seçme<img nbsp="" src="https://camo.githubusercontent.com/86897570ef96d2e927a8ab15f9a03b87eddc1f50/687474703a2f2f692e696d6775722e636f6d2f414a52367544382e706e67" width="640" /><br />
Bu sıralar üzerinde çalıştığım projede çoklu resim seçme gibi bir özelliğin olması gündeme geldi. Android' de galeriden ya da kameradan seçenekleriyle kullanıcıya resim seçtirebiliyoruz evet ama bu işlemin sonucu bize tek bir resim dönüyor. Galeriden tek seferde bir çok resim seçebilmek için şu şekilde bir çözüm düşündüm:<br /> Telefon hafızasındaki tüm resimleri çekip kendi oluşturduğum gridview gömerek kullanıcıya bu resimleri gösterebilmeliydim.<br />GridView' in her elemanına bir checkBox koyarak kullanıcının seçeceği resimleri işaretlemesini sağlamalıydım.<br />Seçtiğim resimlerden dönen yolları (paths) Universal Image Loader kütüphanesi sayesinde imageviewlere verip ekranda seçilen resimleri göstermeliydim.<br /><br />Tüm resimleri hafızadan alabilmek için READ_EXTERNAL_STORAGE iznine gerek duyuyoruz.<br />
Manifestte isteklerimize cevap alabilmek için oluşturduğumuz özel Activity' i intent filter özelliği ile filtreden geçiriyoruz.<br /><br />
<br />
<intent-filter><br />
<!-- For recognation our request type--><br />
<action android:name="cunoraz.ACTION_PICK" /><br />
<action android:name="cunoraz.ACTION_MULTIPLE_PICK" /><br />
<br />
<category android:name="android.intent.category.DEFAULT" /><br />
</intent-filter><br />
<br />
Activity' mizi tek resim seçmek üzere çağırırken<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Intent i = new Intent(Action.ACTION_PICK);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>startActivityForResult(i, 100);<br />
<br />
çoklu resim seçmek için çağırırken<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Intent i = new Intent(Action.ACTION_MULTIPLE_PICK);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>startActivityForResult(i, 200);<br />
<br />
şeklinde kullanmamız yeterli olacaktır. Dönen resimlerin üzerlerine tıklayarak dosya dizinlerini de görebilirsiniz. <br />Projenin detaylarına buradan ulaşabilirsiniz.<br /><a href="https://github.com/Cutta/MultipleImagePicker">https://github.com/Cutta/MultipleImagePicker</a><br />Herkese kolay gelsin.Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-28749194683513132112015-02-14T15:22:00.000-08:002015-02-14T15:22:45.195-08:00Android FusedLocationApi Kullanımı<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"> Google' ın cihaz kordinatlarını daha keskin belirleyebilmek üzere sunduğu yeni servisi: FusedLocationApi. Bu servis GoogleApiClient ile bağlanarak mümkün olan en iyi lokasyon bilgisini veriyor. Örneğe geçecek olursak.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">1. Google Play Services indirme ve import etme</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b><span style="color: #3d85c6;">FusedLocationApi</span> </b>çalışabilmek için <b>Google Play Services</b> hizmetlerine ihtiyaç duyuyor. Eğer daha önce indirmediysek:</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"><b>1</b>. SDK Manager sekmesini açın ve <b><span style="color: #3d85c6;">Extras </span></b>kısmından Google Play services' i indirin.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><b>2. <span style="color: #3d85c6;">Eclipse' te File => Import </span></b></span><span style="color: #3d85c6;"><b><span style="font-family: Arial, Helvetica, sans-serif;">=></span><span style="font-family: Arial, Helvetica, sans-serif;"> Android </span><span style="font-family: Arial, Helvetica, sans-serif;">=></span></b><span style="font-family: Arial, Helvetica, sans-serif;"><b> Existing Android Code Into Workspace</b> </span></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">olunu izleyerek </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="color: #3d85c6;"><b>android-sdk-windows\extras\google\google_play_services\libproject\google-play-services_lib</b> </span> dizinindeki projeyi Eclipse' e dahil ediyoruz.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><b>3</b>. Projemizin play services hizmetlerinden faydalanabilmesi için Google Play services' i projemize göstermemiz gerekiyor. Projeye sağ tıklayıp <b><span style="color: #3d85c6;">proporties </span></b>ardından <b><span style="color: #3d85c6;">Android</span> </b>sekmesinde <span style="color: #3d85c6;"><b>Add</b>..</span> butonuna tıkladığımızda <b><span style="color: #3d85c6;">google-play-services_lib</span></b> projesine tıklayıp onaylayarak projemize Google Play hizmetlerini dahil ediyoruz.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Projenin kodlarına bu adresten ulaşabilirsiniz.<br /><a href="https://github.com/Cutta/FusedLocationApi_Example">https://github.com/Cutta/FusedLocationApi_Example</a></span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span></div>
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaDr0gQjHa37VkruMkOCvttfQmG80dmHYs8hGj8ggIuS2Lyw5i25HAI1wFkLPDbIx6V29qRk5o4M1gZl9JcMwPKaP6sivQHjAk7Z9UaRKYRg025uc1QpKTrUgZxfTcs9a_jNdAWccdavwz/s1600/Screenshot_2015-02-15-00-14-17.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaDr0gQjHa37VkruMkOCvttfQmG80dmHYs8hGj8ggIuS2Lyw5i25HAI1wFkLPDbIx6V29qRk5o4M1gZl9JcMwPKaP6sivQHjAk7Z9UaRKYRg025uc1QpKTrUgZxfTcs9a_jNdAWccdavwz/s1600/Screenshot_2015-02-15-00-14-17.png" height="400" width="240" /></a></div>
<span style="background-color: white; color: #383838; font-family: 'Open Sans', sans-serif; font-size: 15px; line-height: 25px; text-align: justify;"><br /></span></div>
Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-21618920823714006642015-01-11T16:24:00.001-08:002016-09-19T00:41:11.196-07:00Ruby PDF OluşturmaRuby de dosya işlemleri ile txt oluşturmak, yazmak, okumak oldukça kolay. Pdf oluşturabilmenin bir yolu var mı diyerek bir soruyla yola çıktım ve <a href="https://github.com/prawnpdf/prawn">prawn</a> kütüphanesini keşfettim. Bu kütüphane bu işi layıkıyla yerine getiriyor. <a href="http://prawnpdf.org/manual.pdf">Dökümanı</a> incelediğimizde pdf ortamında olması gereken bir çok özellik bize sunuluyor. Örneğin pdf' te resim gösterme, tablolar oluşturma, şekiller çizme (kare,üçgen, yıldız gibi), grafikler çizme işlemleri prawn sayesinde mümkün.<br />
Ben bir kaç özelliği harmanlayıp basit bir Cv oluşturan Ruby kodu yazdım.<br />
Kodlara ve açıklamalara bu linkten ulaşabilirsiniz.<br />
<br />
<a href="https://github.com/Cutta/RubyPdfCv">https://github.com/Cutta/RubyPdfCv</a><br />
<br />
Bu da ekran görüntüsüdür. Kolay gelsin herkese.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxjI7a62VHCAf1JCyD_SeFb9gIUfeNdIeoqbcRRdIbh2kw8SIPy1t86I_-uMMR8xn-NNmU1bgQvYsdkD4cd-XRGUxGmQX_EdWHuawSKZDTjzceZEJ2qK1cgq5frmE1yxN5gmF9nT2oN2Ds/s1600/cv.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="355" src="https://camo.githubusercontent.com/5d6d2b3c4fa8fdc2fff603354acdf41736401752/687474703a2f2f692e696d6775722e636f6d2f316832345477552e706e67" width="640" /></a></div>
<br />Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-44641416482960876032014-12-01T13:19:00.000-08:002014-12-01T13:19:20.438-08:00Ruby HTML parse örneğiİnternetsizlik bu ara başımın en büyük belası. E sürekli de okumak bir şeyler öğrenmek isteği içerisindeyim. Hal böyle olunca bir bilgisayar mühendisi adayı olarak bu işe bir el attım :)<br />Ekşisözlükteki en sevdiğim başlıklardan biri olan <a href="https://eksisozluk.com/ogrenildiginde-ufku-iki-katina-cikaran-seyler--2593151?p=1">öğrenildiğinde ufku iki katına çıkaran şeyler</a> başlığı altındaki girileri 1 kereliğine çekip yerelde kaydedip internetsizken de okumak geldi aklıma.<br />Ruby diline yeni başladım ve bunu Ruby de yapmaya karar verdim. Bi amaç olmayınca sadece tutorial takip edince öğrenemediğimi iyi biliyorum.<br />Velhasıl kelam<br />kodlara buradan ulaşabilirsiniz. Yorum satırları düşmeye çalıştım. Umarım açıklayıcı olmuştur.<div>
<br /><a href="https://github.com/Cutta/EksiSozlukInRuby">https://github.com/Cutta/EksiSozlukInRuby</a><br /><br />Bu da ekran görüntüsü <div class="separator" style="clear: both; text-align: center;">
<a href="http://i.imgur.com/WqmFCGL.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://i.imgur.com/WqmFCGL.png" height="480" width="640" /></a></div>
</div>
Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-67531015882544254032014-03-16T13:57:00.001-07:002014-03-16T13:57:46.722-07:00Yolcu Yolunda Uzun zamandır <a href="http://www.develoser.com/">develoser</a> olarak inandığımız ve uğraştığımız bir proje YOLCU. <b>Yolcu: </b>aynı zamanda aynı yöne giden insanları ortak bir araçta buluşturan çevre ve ulaşıma katkı sağlayabilecek mobil ortamda çalışacak uygulama ve web sitesi.<br />
Şehir içi ayağından bahsedeyim ve Ankara'dan örnek vereyim hemen. Keçiören' de oturuyorsunuz ve işiniz dolayısıyla her sabah Kızılay' a gitmek zorundasınız. Sizin gibi binlercesi olduğunu siz de biliyorsunuz. Kimisi aracıyla, kimisi otobüsle yanınızdan geçip gidiyor. Bireysel giden çoğu kişinin arabasında yalnızca kendisi oluyor bu da gereksiz yere trafiği arttırıyor. <b>Yolcu </b>ile gideceğiniz yönü saati belirtebiliyorsunuz ve yakınınızda <b>Yolcu</b>yu kullanan insanlar bunu görebiliyor. Tabi siz de onları. Sonra iletişime geçiyor, bir araçta buluşup beraber gidiyorsunuz. İletişim de uygulama üzerinden gerçekleşecek ve mahremiyet korunacak tabi.<br />
Şehirler arası kısmını ilan panolarından takip edebileceğiz. Mesela 31.08.2014 tarihinde İstanbul'a gideceğim deyip sürücü ya da otostopçu olduğunuzu da belirtebilecek ilan bırakabileceksiniz. İlanınıza cevabı da yine uygulama üzerinden alabilecek ve otobüse vereceğiniz paranın yarısını verip belki hiç vermeyip rahat bir yolculuk yapabileceksiniz :)<br />
Objektif bakmaya çalışırsam düşünce olarak güzel ama uygulanabilirlik kısmında aksaklıklar olacaktır. Çünkü <b>güven </b>ciddi bir problem. Bunu aşmak için de bir kaç fikrimiz mevcut.<br />
Google play linkini de buraya koymak kısa zamanda nasip olur inş :)<br />
Uygulamadan bir kaç resim de paylaşayım havada kalmasın.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-yEfyh_xPduc/UyYPDFz-OjI/AAAAAAAAALw/nTUD2DhjBsc/s1600/Screenshot_2014-02-21-02-03-28.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-yEfyh_xPduc/UyYPDFz-OjI/AAAAAAAAALw/nTUD2DhjBsc/s1600/Screenshot_2014-02-21-02-03-28.png" height="320" width="192" /></a><a href="http://2.bp.blogspot.com/-Exi_ALcJjxk/UyYPNrpHaII/AAAAAAAAAL4/HvArx4khOfQ/s1600/Screenshot_2014-03-16-22-31-02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://2.bp.blogspot.com/-Exi_ALcJjxk/UyYPNrpHaII/AAAAAAAAAL4/HvArx4khOfQ/s1600/Screenshot_2014-03-16-22-31-02.png" height="320" width="192" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br /><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-KfUQgMKoY1Q/UyYPg1OxpXI/AAAAAAAAAMA/wFkLUIUUU84/s1600/Screenshot_2014-03-16-22-31-19.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-KfUQgMKoY1Q/UyYPg1OxpXI/AAAAAAAAAMA/wFkLUIUUU84/s1600/Screenshot_2014-03-16-22-31-19.png" height="320" width="192" /></a><a href="http://4.bp.blogspot.com/-gDnJpyhXD2g/UyYPmR8Z_dI/AAAAAAAAAMI/oTmDTKPqHRM/s1600/yolcu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-gDnJpyhXD2g/UyYPmR8Z_dI/AAAAAAAAAMI/oTmDTKPqHRM/s1600/yolcu.png" height="320" width="211" /></a></div>
Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-20272018183387393652014-01-13T14:18:00.001-08:002014-01-13T14:18:51.762-08:00Android İçin Reversi (Othello) Eski mi eski bir zeka oyun reversi. Satranç ve dama gibi iki kişi ile oynanan bir oyun. Her hamlenizin amacı tahtadaki taşları sizin renginize çevirmek olmalı. Sizin renklerinizin arasına aldığınız tüm taşlar sizin renginize dönecek. Ne kadar çok taş o kadar puan. Oyun sonunda iki farklı renge sahip taşlar sayılacak ve fazla olan kazanacak.<br />
Biz iki kişilik değil de telefona karşı oynanabilecek hale getirmeye çalıştık bunu. Yani biraz yapay zekalı oldu :) 2. Sınıf java projesi olarak sunmuştuk. (İlk defa recursive fonksiyon kullandığımız bir proje :))<br />
<br />
Telefona mantıklı hamle yaptırma işi zordu ve bi o kadar eğlenceliydi. Çok zeki olduğu söylenemez ama oyunu biraz bilen birini yenebilir :) Baştan beni çok hızlı hamle yapma sıkıntısı vardı. Sonradan nasıl halledebileceğimizi bulduysak da heyecanı yitirdiğimizden olsa gerek uğraşmadık.<br /><a href="http://www.dosya.tc/server22/tkvjwy/othello1.rar.html">Buradan</a> indirebilir oynayabilirsiniz. Tüm telefon ekranlarını desteklemediğini söylemeliyim tabi.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAYGNlEbwIZMy5GDVPZkxpJwhlCzNRxH2s_I_fqsl6COP45a2iRV9uwLpznGHtDa06JRNQgq-IN3mTWLUnrA5cVGatqTaI_ZQIqDQFXpS5RkDtGIPdRCHm1fOw-udH3kXoHdtnC1Jf0iRr/s1600/Screenshot_2014-01-14-00-10-22.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAYGNlEbwIZMy5GDVPZkxpJwhlCzNRxH2s_I_fqsl6COP45a2iRV9uwLpznGHtDa06JRNQgq-IN3mTWLUnrA5cVGatqTaI_ZQIqDQFXpS5RkDtGIPdRCHm1fOw-udH3kXoHdtnC1Jf0iRr/s400/Screenshot_2014-01-14-00-10-22.png" width="240" /></a></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqzz1uyaAwXRBwIV0gR11vFU6MDh5Q2N_VXMbRdzwD4N6XFZ4dEmpuU_xRxVpNnFvcDc-jkaugjjMgVEr-9d260s-U6tLY0yTbjUXL-AdkgFDhrJiEJWhytYpiRbRLwc3Uu9HLpH75NbMt/s1600/Screenshot_2014-01-14-00-10-27.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqzz1uyaAwXRBwIV0gR11vFU6MDh5Q2N_VXMbRdzwD4N6XFZ4dEmpuU_xRxVpNnFvcDc-jkaugjjMgVEr-9d260s-U6tLY0yTbjUXL-AdkgFDhrJiEJWhytYpiRbRLwc3Uu9HLpH75NbMt/s400/Screenshot_2014-01-14-00-10-27.png" width="240" /></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiniX3G0ZRz0weZtuabHOR9G6Ep9Gp6NzadAkTEE4vQRDeMTxrlOiCeC_UE16JB0B_o9pLmqkoqOwuOSM3qqWtA0fBTVCcP_vwjHIB_MdNE7N6D79Jn0A7o0upZ4MfV4bY2ADI8vBKYHCh6/s1600/Screenshot_2014-01-14-00-10-40.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiniX3G0ZRz0weZtuabHOR9G6Ep9Gp6NzadAkTEE4vQRDeMTxrlOiCeC_UE16JB0B_o9pLmqkoqOwuOSM3qqWtA0fBTVCcP_vwjHIB_MdNE7N6D79Jn0A7o0upZ4MfV4bY2ADI8vBKYHCh6/s400/Screenshot_2014-01-14-00-10-40.png" width="240" /></a></div>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsw8KfexqsfNyVcSLJw0F5ZadnEIDTwMPa3Ufe31AUXP6rZ07rnNxzKEUsnGwa24nkxbW-KiEHkFRtCJ87Vj28tG_o1zVigWbKw51ondQue-Gxu4F43Q3q4xcWywHahf1WXNyv7pbcru8l/s1600/Screenshot_2014-01-14-00-11-07.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsw8KfexqsfNyVcSLJw0F5ZadnEIDTwMPa3Ufe31AUXP6rZ07rnNxzKEUsnGwa24nkxbW-KiEHkFRtCJ87Vj28tG_o1zVigWbKw51ondQue-Gxu4F43Q3q4xcWywHahf1WXNyv7pbcru8l/s400/Screenshot_2014-01-14-00-11-07.png" width="240" /></a><br /><br />Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-48991972520420396992013-12-31T07:39:00.000-08:002013-12-31T07:39:14.609-08:00Çocuklar İçin Hayvan Sesleri<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
<span style="text-align: start;">Hayvan resimlerine basınca o hayvana ait sesi çocuklara duyurmak, hem resmini hem sesini aynı anda ulaştırabileceği için mantıklı ufak bir proje gibi geldi başta. Ama sonra ne yaptık ettik oyun yapalım bunu dedik :) Yine imdadıma yetişen andEngine oldu. Yürüyen kahramanımızı belirli aralıklarla sürpriz kutular bekliyor olacak. Bu kutulardan gelen soruları bildiğinde ilerleyebilecek ve bazı sorulardan ip ucu toplayacak. Bölüm sonunda bu ip uçları doğrultusunda cevap verebileceği bir soru sorulacak. Bilirse puan, yıldız tebrik elimden ne gelirse yaparım :) Çocuk oynayacak bunu :)</span></div>
<span style="text-align: start;"><div style="text-align: justify;">
Yine yarım tabi bitirmek nasip olmuyor bu aralar.</div>
</span><span style="text-align: start;"><div style="text-align: justify;">
Bi kaç ekran görüntüsü vereyim. Sonra apksını koymak da nasip olur inş. :)</div>
</span><br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIMzpwImmpecq-zCjtuZHMfRL8gHnXgpkC23uQTYAUUgYoEKmQECTuhf-fpwu2X66s6JJMiLE4tXohqjz5KTELNySxIOdrbvR6RfMrWXN50DeM-pEMX022Yf8_Nu8lWeCyFByefkY9ehW0/s1600/Screenshot_2013-12-28-00-55-16.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIMzpwImmpecq-zCjtuZHMfRL8gHnXgpkC23uQTYAUUgYoEKmQECTuhf-fpwu2X66s6JJMiLE4tXohqjz5KTELNySxIOdrbvR6RfMrWXN50DeM-pEMX022Yf8_Nu8lWeCyFByefkY9ehW0/s320/Screenshot_2013-12-28-00-55-16.png" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTCL7m07DWsYIt9pegr2lmx6avKucsJXd8CU54VFpto2a0aPhnO3o_ctuyIn1zKW-7Fxf8IhPz_hkf5Q-tO8uVV-cFDZoq8pQ4RuPQkK9MbT3LO3M6w2ehLl1MeGhsW4fHsKTYT-e6UiAY/s1600/Screenshot_2013-12-28-00-57-49.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="192" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTCL7m07DWsYIt9pegr2lmx6avKucsJXd8CU54VFpto2a0aPhnO3o_ctuyIn1zKW-7Fxf8IhPz_hkf5Q-tO8uVV-cFDZoq8pQ4RuPQkK9MbT3LO3M6w2ehLl1MeGhsW4fHsKTYT-e6UiAY/s320/Screenshot_2013-12-28-00-57-49.png" width="320" /></a></div>
<br /><br />Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-50345186275873701432013-04-19T10:15:00.002-07:002013-04-19T10:17:36.757-07:00Linear QuotientBugün bağlantı olmadan çakışmaları çözme algoritmaları (collision resolution algorithms without links) üstünde duralım hadi. Uğraştıracak bir lab'ımız var bilmeden olmaz dedim, öğrendim sonra blogum vardı lan oraya da yazıyım dedim. :)</br>
Klasik örneğimiz 27-18-29-28-39-13-16-42-17 sayıları.Her tarafta bunlar var diye şikayet etmiyoruz bu sayılar biraz özel çünkü. Kendimiz belirlesek sayılar bazı durumları test etmeyi atlarız o yüzden bu sayılar iyi neyse çok uzattım :)</br>
<b>Linear Quotient</b> de ilk seferde sayılarımızın modunu alıyoruz yerleştirmeye çalısıyoruz. Peki yerleştireceğimiz yer doluysa?</br>
İşte o zaman ikinci fonksiyonumuz devreye giriyor. O da şu işi görüyor: kayıt doluysa az uzağına bi yere yerleştiriyor kaydımızı. Bu uzaklık rastgele değil tabi.Fonksiyonlar geliyoorr.</br>
</br>
<span style="color: #00cc00;">hash1=key modP </br>
hash2=Quotient(key/P) modP</span>
</br>
</br>
Burada P gireceğimiz kayıt sayısından büyük ilk asal sayı.Asal sayı olması çakışmayı azaltması açısından çok mantıklı.
</br>
Hadi sayıları link olmadan tablomuza yerleştirelim.
ÇÖZÜM:<br />
hash(27)=5 mod11<br />
Tablomuz boş, sorunsuz yerleştiriyoruz.<br />
<br />
<table border="1" cellpadding="10"><tbody>
<tr><td>Sıra</td><td>Anahtar Değeri</td></tr>
<tr><td>0</td><td></td></tr>
<tr><td>1</td><td></td></tr>
<tr><td>2</td><td></td></tr>
<tr><td>3</td><td></td></tr>
<tr><td>4</td><td></td></tr>
<tr><td>5</td><td>27</td></tr>
<tr><td>6</td><td></td></tr>
<tr><td>7</td><td></td></tr>
<tr><td>8</td><td></td></tr>
<tr><td>9</td><td></td></tr>
<tr><td>10</td><td></td></tr>
</tbody></table>
<br />
<br />
<br />
İkinci kayıt için hash(18)=7 mod11<br />
7 numaralı alan boş olduğundan, 18'i de sorunsuzca yerleştiririz.<br />
<br />
<table border="1" cellpadding="10"><tbody>
<tr><td>Sıra</td><td>Anahtar Değeri</td></tr>
<tr><td>0</td><td></td></tr>
<tr><td>1</td><td></td></tr>
<tr><td>2</td><td></td></tr>
<tr><td>3</td><td></td></tr>
<tr><td>4</td><td></td></tr>
<tr><td>5</td><td>27</td></tr>
<tr><td>6</td><td></td></tr>
<tr><td>7</td><td>18</td></tr>
<tr><td>8</td><td></td></tr>
<tr><td>9</td><td></td></tr>
<tr><td>10</td><td></td></tr>
</tbody></table>
<br />
<br />
hash(29)=7 mod11<br />
Biz masum masum ilerlerken ahan da collision oldu. Ne yapcaz şimdi?
Linear Quotient'te şöyle yapıyoruz: Sonradan geleni istediğimiz yere yazamayacaksak nereye yazacağımızı ikinci fonksiyona danışıyoruz.O da şöyledir: 29/11=2. Yani 29'u, mod 11'e göre yaptığımızdan dolayı, 11'e böldük. Bölen 2 çıktı. Bu bizim arttırım miktarımız.Yani home adress'ini 7 bulduk e dolu o zaman 7+2=9 a bak boşsa yaz.Baktık boş hemen yazalıım :)
<br />
<table border="1" cellpadding="10"><tbody>
<tr><td>Sıra</td><td>Anahtar Değeri</td></tr>
<tr><td>0</td><td></td></tr>
<tr><td>1</td><td></td></tr>
<tr><td>2</td><td></td></tr>
<tr><td>3</td><td></td></tr>
<tr><td>4</td><td></td></tr>
<tr><td>5</td><td>27</td></tr>
<tr><td>6</td><td></td></tr>
<tr><td>7</td><td>18</td></tr>
<tr><td>8</td><td></td></tr>
<tr><td>9</td><td>29</td></tr>
<tr><td>10</td><td></td></tr>
</tbody></table>
<br />
<br />
Devam edelim.<br />
hash(28)=6 mod11<br />
6 numaralı adres boş olduğundan sorunsuzca yerleştiririz.<br />
<br />
<table border="1" cellpadding="10"><tbody>
<tr><td>Sıra</td><td>Anahtar Değeri</td></tr>
<tr><td>0</td><td></td></tr>
<tr><td>1</td><td></td></tr>
<tr><td>2</td><td></td></tr>
<tr><td>3</td><td></td></tr>
<tr><td>4</td><td></td></tr>
<tr><td>5</td><td>27</td></tr>
<tr><td>6</td><td>28</td></tr>
<tr><td>7</td><td>18</td></tr>
<tr><td>8</td><td></td></tr>
<tr><td>9</td><td>29</td></tr>
<tr><td>10</td><td></td></tr>
</tbody></table>
<br />
Sırada 39 var.<br />
hash(39)=6 mod 11<br />
Yine collision oluştu. 6 numaralı adrese az önce 28'i yerleştirmiştik. O zaman ikinci fonksiyonumuza danışalım ne diyor?<br />
39/11=3.
6 numaralı home adress e yerleştiremedik. Artım miktarı 3 çıktığından, 3 birim sonrasına gideriz: 6+3=9 numaralı adres. Ancak 9 numaralı adreste de 29 değeri var."Aha o zaman ne yapcaz? Bize denmedi, kimse dolu olur demedi?" :) O zaman bir 3 birim daha gitmeliyiz. Ta ki boş alan bulana dek gideriz. (Ancak sonsuza kadar gidilmez değil mi? Baktık ki 6 numaralı adrese geldik tekrar, bu işlemi sonlandırmalıyız,patladı.). 9 numaralı adresten, 3 birim daha gidersek, 1 numaralı adrese gideriz. Orası boş, o halde 39'u yerleştirebiliriz.<br />
<br />
<table border="1" cellpadding="10"><tbody>
<tr><td>Sıra</td><td>Anahtar Değeri</td></tr>
<tr><td>0</td><td></td></tr>
<tr><td>1</td><td>39</td></tr>
<tr><td>2</td><td></td></tr>
<tr><td>3</td><td></td></tr>
<tr><td>4</td><td></td></tr>
<tr><td>5</td><td>27</td></tr>
<tr><td>6</td><td>28</td></tr>
<tr><td>7</td><td>18</td></tr>
<tr><td>8</td><td></td></tr>
<tr><td>9</td><td>29</td></tr>
<tr><td>10</td><td></td></tr>
</tbody></table>
<br />
Sırada 13 var.<br />
hash(13)=2 mod11<br />
2 numaralı alan boş, sorunsuzca yerleştiririz.<br />
<br />
<br />
<table border="1" cellpadding="10"><tbody>
<tr><td>Sıra</td><td>Anahtar Değeri</td></tr>
<tr><td>0</td><td></td></tr>
<tr><td>1</td><td>39</td></tr>
<tr><td>2</td><td>13</td></tr>
<tr><td>3</td><td></td></tr>
<tr><td>4</td><td></td></tr>
<tr><td>5</td><td>27</td></tr>
<tr><td>6</td><td>28</td></tr>
<tr><td>7</td><td>18</td></tr>
<tr><td>8</td><td></td></tr>
<tr><td>9</td><td>29</td></tr>
<tr><td>10</td><td></td></tr>
</tbody></table>
<br />
Sırada 16 var.<br />
hash(16)=5 mod11<br />
5 numaralı alan dolu.<br />
16/11=1.<br />
Yani 1 birim öteleyerek uygun/boş adresi bulacağız. 5 numaralı adres dolu idi. 1 birim sonrası:6 numara e burası da dolu. 1 birim daha ötelersek:7 numaralı yuhh bura da dolu. 1 birim daha ötelersek:8 numaralı alan boş heh:). 16 değerini 8 numaralı alana yerleştirebiliriz.<br />
<br />
<br />
<br />
<table border="1" cellpadding="10"><tbody>
<tr><td>Sıra</td><td>Anahtar Değeri</td></tr>
<tr><td>0</td><td></td></tr>
<tr><td>1</td><td>39</td></tr>
<tr><td>2</td><td>13</td></tr>
<tr><td>3</td><td></td></tr>
<tr><td>4</td><td></td></tr>
<tr><td>5</td><td>27</td></tr>
<tr><td>6</td><td>28</td></tr>
<tr><td>7</td><td>18</td></tr>
<tr><td>8</td><td>16</td></tr>
<tr><td>9</td><td>29</td></tr>
<tr><td>10</td><td></td></tr>
</tbody></table>
<br />
Sırada 42 var.<br />
hash(42)=9 mod11<br />
9 dolu!<br />
42/11=3 Arttırım miktarı.<br />
9 numaralı alandan 3 birim öteye gittik:1 numaralı göz de dolu. Yine 3 birim öeteye gittik:4 numaralı göz boş. O halde 42'yi buraya yerleştiririz. <br />
<br />
<br />
<br />
<br />
<table border="1" cellpadding="10"><tbody>
<tr><td>Sıra</td><td>Anahtar Değeri</td></tr>
<tr><td>0</td><td></td></tr>
<tr><td>1</td><td>39</td></tr>
<tr><td>2</td><td>13</td></tr>
<tr><td>3</td><td></td></tr>
<tr><td>4</td><td>42</td></tr>
<tr><td>5</td><td>27</td></tr>
<tr><td>6</td><td>28</td></tr>
<tr><td>7</td><td>18</td></tr>
<tr><td>8</td><td>16</td></tr>
<tr><td>9</td><td>29</td></tr>
<tr><td>10</td><td></td></tr>
</tbody></table>
<br />
Son olarak 17.<br />
hash(17)=6 mod11<br />
6 numaralı adres dolu olduğundan, hemen ikinci hash fonksiyonumuza danışıyoruz.<br />
17/11=1 arttırım miktarını verdi.<br />
6 numaralı göz doluydu. 1 birim gittik:7 numaralı alan da dolu. Yine 1 birim ötelersek, 8 numaralı alan da dolu. Hadi birkez daha öteleyelim:9 numaralı alan da dolu. Pes etmek yookk.. 10 numaralı göz boş. O halde hemen 17'yi hemen yerleştiriyoruz.<br />
<br />
<br />
<br />
<br />
<br />
<table border="1" cellpadding="10"><tbody>
<tr><td>Sıra</td><td>Anahtar Değeri</td></tr>
<tr><td>0</td><td></td></tr>
<tr><td>1</td><td>39</td></tr>
<tr><td>2</td><td>13</td></tr>
<tr><td>3</td><td></td></tr>
<tr><td>4</td><td>42</td></tr>
<tr><td>5</td><td>27</td></tr>
<tr><td>6</td><td>28</td></tr>
<tr><td>7</td><td>18</td></tr>
<tr><td>8</td><td>16</td></tr>
<tr><td>9</td><td>29</td></tr>
<tr><td>10</td><td>17</td></tr>
</tbody></table>
<br />
Average probe yaklaşık 1.9 çıkmakta imiş.Bundan önceki lab da EISCH ile uğraşmıştık.EISCH de average probe 1.3 - 1.4 civarlaradında ama onun da problemi link verdiği için fazladan hafıza işte.Zaten bir şey bi yerden iyiyse bir yerden kötü hep. Karamsar oldu o cümle ama öyle hep bi kulp buluyolar yesin hafızayı kurban olsun nedir :D
He bu arada bi anlatımında tablo yapısı hoşuma gittiği için tablolar alıntıdır.Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com1tag:blogger.com,1999:blog-621728275956986158.post-74803911448910592692012-10-19T16:12:00.004-07:002012-10-19T16:12:42.763-07:00Bağlı Listeler (Linked List)<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQJ0Mewg3c45PieyZuxmxfGipdGYYYTzGaE85WRN-V637ep2KLbdsihjuwxZihpy-fWdL_C0krpoY5SPUjMMJQgKwOZ7Fkex0yOtvn6i-K3soitGnRefzlkacXk_3oOoI27Wd5-qFD9Mnp/s1600/linked-list.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="32" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQJ0Mewg3c45PieyZuxmxfGipdGYYYTzGaE85WRN-V637ep2KLbdsihjuwxZihpy-fWdL_C0krpoY5SPUjMMJQgKwOZ7Fkex0yOtvn6i-K3soitGnRefzlkacXk_3oOoI27Wd5-qFD9Mnp/s320/linked-list.jpg" width="320" /></a></div>
C de<b> linked list</b> (bağlı liste )kullanarak küçükten büyüğe sıralı liste kullanıma ufakcana bi örnek :)Üstteki resmi linked list deyince gözümüz kapalı çizeriz de nedir ne yapıyoruz la burda deseler az bi zorlanırız heralde:)İlk sınıflar için bu lafım tabi. Bi kere neden ihtiyaç duyulmuş bunu bilmek gerek.Kafadan dinamik bellek kullanıyo ki bu da <b>memory management</b> diye üstüne düştüğümüz probleme bir çözüm.Bir şeyler eklemek ve silmek de normal arrayde yaptığımız işlemlerden çok daha kolay.Yani zamandan da kazanıyoruz.<i>Şu bizim bayram ödevinin ilk sorusuna da temel olsun</i>, uzatmayım kodları vereyim :) <b><a href="http://www.upload.gen.tr/d.php/www/xk9rh6t3/lab21.cpp.html">Buradan</a> </b>indirin kolay gelsin.İndirmek istemeyen de buyursun:<br />
<br style="font-family: 'courier new', monospace; font-size: small; line-height: 16.883333206176758px;" />
<stdio .h=".h"><stdlib .h=".h"></stdlib></stdio><br />
#include < stdio.h > <br />
#include <stdlib.h ><br />
#include < conio.h ><br />
struct node<br />
{<br />
int value;<br />
struct node *next;<br />
};<br />
<br />
typedef struct node node;<br />
void initialization();//listeye ilk deðer verme islemleri<br />
void add(int,node**);//eleman eklemek icin fonk<br />
<br />
<br />
int main () {<br />
initialization();<br />
<br />
getch();<br />
return 0;<br />
}<br />
<br />
void initialization(){<br />
node *current ,*head;<br />
head=NULL;<br />
int added=1;<br />
printf("Listenizin elemanlarini girin\nbitirmek icin 0 basin :\n");<br />
while(added!=0){<br />
scanf("%d",&added); //her seferinde elemanlar alýnýyor<br />
add(added,&head);//her seferinde eklenmek üzere fonksiyona gönderiliyor<br />
printf("\n");<br />
<br />
}<br />
printf("Bagli listenizin elemanlari sirasiyla :\n");<br />
current=head;<br />
while (current) { //NULL görene kadar devam<br />
printf("%d\n",current->value);<br />
current=current->next;<br />
}<br />
}<br />
void add(int a,node** head){ //sýralý eklemek yapmak icin<br />
node *previous=NULL,*added,*current;<br />
<br />
added=(node*)malloc(sizeof(node));//ihtiyac oldukca belek ayýrýyor<br />
added->value=a;//gelen deðeri value kýsmýna atýyor<br />
added->next=NULL;// göstericisini sýfýrlýyor<br />
<br />
current=*head;<br />
<br />
while (current!=NULL && (added->value)>current->value){ //sýralý ekleme yapmak icin<br />
previous=current;<br />
current=current->next;<br />
}<br />
if(previous==NULL)<br />
*head=added;<br />
else{<br />
previous->next=added;<br />
}<br />
added->next=current;<br />
}<br />
<br />
<div>
<br /></div>
<br />
<br />
<br />
<br />Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-27151203581233392872012-10-06T04:38:00.000-07:002017-05-15T03:41:11.896-07:00BCD (Binary Coded Decimal) muhabbeti nedir?<span style="background-color: #444444;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSJDVrRjPl5WfNjaOXGVMZWeeG0gUI3_OqWUvYyEncgrw97kkPfR9KIBP2nPuoIQmhQuJEPRVIeKj3Bz-TsFAMgtQBo5nqMtgV5WuiMM1s42FzWc8OFt3UYMIZz4Mh7rDu2PCf6nfRqN_z/s1600/img00056.gif" imageanchor="1" style="background-color: #444444; margin-left: 1em; margin-right: 1em;"><img border="0" height="194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSJDVrRjPl5WfNjaOXGVMZWeeG0gUI3_OqWUvYyEncgrw97kkPfR9KIBP2nPuoIQmhQuJEPRVIeKj3Bz-TsFAMgtQBo5nqMtgV5WuiMM1s42FzWc8OFt3UYMIZz4Mh7rDu2PCf6nfRqN_z/s320/img00056.gif" width="320" /></a></div>
<div style="border: 0px; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 10px; margin-top: 10px; padding: 0px; text-align: justify;">
<span style="background-color: #444444;"><br /></span></div>
<div style="border: 0px; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 10px; margin-top: 10px; padding: 0px; text-align: justify;">
<span style="background-color: #444444;">Genel olarak kodlama, görülebilen, okunabilen, yazı ve sayı işaretlerin değiştirilmesidir. Bu değiştirme şekli, metodlarla yapılır. Bu metodlara kodlama denir.</span><br />
<span style="background-color: #444444;">Bir çok kodlama sistemi vardır. Sayısal kodlamanın yanında normlandırılmış (mors alfabesinde olduğu gibi) kodlamada vardır. Bu sistemde harfler, rakamlar ve cümle parçaları başka başka kodlandırılır.</span></div>
<span style="background-color: #444444; font-family: "arial" , "helvetica" , sans-serif; font-size: 12px; line-height: 18px;">Decimal İçin Binary Kodlaması - (BCD) </span><br />
<div style="border: 0px; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 10px; margin-top: 10px; padding: 0px; text-align: justify;">
<span style="background-color: #444444;">En basit kod sistemi "<span id="BABID_Results" style="border: 0px; margin: 0px; padding: 0px;"><b style="border: 0px; margin: 0px; padding: 0px;">B</b>inary <b style="border: 0px; margin: 0px; padding: 0px;">C</b>ode <b style="border: 0px; margin: 0px; padding: 0px;">D</b>ecimal" kısaca ifade edildiği gibi "BCD" kodudur. Bu kod 'da 0 - 9 decimal sayılarının ifadesi için, binary sayı sistemi kullanılır. BCD sayıları 0 ve 1 ile ifade edilirler.</span></span></div>
<table border="1" style="border: 0px; font-family: arial, helvetica, sans-serif; font-size: 12px; line-height: 18px; margin: 0px; padding: 0px; width: 397px;"><tbody style="border: 0px; margin: 0px; padding: 0px;">
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<strong style="background-color: #444444; border: 0px; font-style: inherit; margin: 0px; padding: 0px;">Decimal Sayıları</strong></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<strong style="background-color: #444444; border: 0px; font-style: inherit; margin: 0px; padding: 0px;"> Binary Sayıları için Binary Kodu</strong></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td height="218" scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<table border="0" style="border: 0px; margin: 0px; padding: 0px; width: 0px;"><tbody style="border: 0px; margin: 0px; padding: 0px;">
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">1</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">2</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">3</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">4</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">5</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">6</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">7</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">8</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">9</span></div>
</td></tr>
</tbody></table>
</div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<table border="0" style="border: 0px; margin: 0px; padding: 0px; width: 0px;"><tbody style="border: 0px; margin: 0px; padding: 0px;">
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;" width="0"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0000</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0001</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0010</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0011</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0100</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0101</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0110</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0111</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">1000</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">1001</span></div>
</td></tr>
</tbody></table>
</div>
</td></tr>
</tbody></table>
<div style="border: 0px; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 10px; margin-top: 10px; padding: 0px; text-align: justify;">
<span style="background-color: #444444;">Bu kod sisteminde her decimal sayı karakteri için, dört bitli binary karakteri kullanılır.</span></div>
<table border="1" style="border: 0px; font-family: arial, helvetica, sans-serif; font-size: 12px; line-height: 18px; margin: 0px; padding: 0px; width: 361px;"><tbody style="border: 0px; margin: 0px; padding: 0px;">
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;" width="0"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<strong style="background-color: #444444; border: 0px; font-style: inherit; margin: 0px; padding: 0px;">Decimal</strong></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<strong style="background-color: #444444; border: 0px; font-style: inherit; margin: 0px; padding: 0px;"> BCD</strong></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<table border="0" style="border: 0px; margin: 0px; padding: 0px; width: 200px;"><tbody style="border: 0px; margin: 0px; padding: 0px;">
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;"> 25(Erzurum:)</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">32</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">679</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">2571</span></div>
</td></tr>
</tbody></table>
</div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<table border="0" style="border: 0px; margin: 0px; padding: 0px; width: 200px;"><tbody style="border: 0px; margin: 0px; padding: 0px;">
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><span style="background-color: #444444;"><br style="border: 0px; margin: 0px; padding: 0px;" /></span></td><td style="border: 0px; margin: 0px; padding: 0px;"><span style="background-color: #444444;"><br style="border: 0px; margin: 0px; padding: 0px;" /></span></td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0010</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0101</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><span style="background-color: #444444;"><br style="border: 0px; margin: 0px; padding: 0px;" /></span></td><td style="border: 0px; margin: 0px; padding: 0px;"><span style="background-color: #444444;"><br style="border: 0px; margin: 0px; padding: 0px;" /></span></td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0011</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0010</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><span style="background-color: #444444;"><br style="border: 0px; margin: 0px; padding: 0px;" /></span></td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0110</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0111</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">1001</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0010</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0101</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0111</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0001</span></div>
</td></tr>
</tbody></table>
</div>
</td></tr>
</tbody></table>
<div style="border: 0px; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 10px; margin-top: 10px; padding: 0px; text-align: justify;">
<span style="background-color: #444444;">Burada görüldüğü gibi, her decimal sayısı, dört bitli bir binary kod 'u ile ifade edilmiştir. </span></div>
<div style="border: 0px; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 10px; margin-top: 10px; padding: 0px; text-align: justify;">
<span style="background-color: #444444;">Binary için 10 decimal sayısı 1010 dır. BCD kodu ile, 10 sayısı 0001 0000 olarak yazılır.<b> <u>yani her basamak kendi içinde binary 'e çevrilir.</u></b></span></div>
<table border="1" style="border: 0px; font-family: arial, helvetica, sans-serif; font-size: 12px; line-height: 18px; margin: 0px; padding: 0px;"><tbody style="border: 0px; margin: 0px; padding: 0px;">
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;" width="0"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<strong style="background-color: #444444; border: 0px; font-style: inherit; margin: 0px; padding: 0px;">Decimal</strong></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<strong style="background-color: #444444; border: 0px; font-style: inherit; margin: 0px; padding: 0px;">Binary</strong></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<strong style="background-color: #444444; border: 0px; font-style: inherit; margin: 0px; padding: 0px;">BCD</strong></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<table border="0" style="border: 0px; margin: 0px; padding: 0px; width: 0px;"><tbody style="border: 0px; margin: 0px; padding: 0px;">
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;" width="0"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">141</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">2179</span></div>
</td></tr>
</tbody></table>
</div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<table border="0" style="border: 0px; margin: 0px; padding: 0px; width: 0px;"><tbody style="border: 0px; margin: 0px; padding: 0px;">
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">10001101</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">100010000011</span></div>
</td></tr>
</tbody></table>
</div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<table border="0" style="border: 0px; margin: 0px; padding: 0px; width: 0px;"><tbody style="border: 0px; margin: 0px; padding: 0px;">
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><span style="background-color: #444444;"><br style="border: 0px; margin: 0px; padding: 0px;" /></span></td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0001</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0100</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0001</span></div>
</td></tr>
<tr style="border: 0px; margin: 0px; padding: 0px;"><td scope="row" style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0010</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0001</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">0111</span></div>
</td><td style="border: 0px; margin: 0px; padding: 0px;"><div align="center" style="border: 0px; margin: 0px; padding: 0px;">
<span style="background-color: #444444;">1001</span></div>
</td></tr>
</tbody></table>
</div>
</td></tr>
</tbody></table>
<div style="border: 0px; font-family: arial, helvetica, sans-serif; font-size: 13px; line-height: 18px; margin-bottom: 10px; margin-top: 10px; padding: 0px; text-align: justify;">
<span style="background-color: #444444;">Herhangi bir aritmetik işlem varsa önce çözüm bulunur sonra BCD kodlamasına geçilirmiş bu da bi bilgi :)</span></div>
Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com3tag:blogger.com,1999:blog-621728275956986158.post-56724637284393750822012-08-06T06:37:00.001-07:002012-08-06T06:38:08.683-07:00Bildiğimiz bi ateri oyunun C hali (alıntıdır)<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_wyZSvR83-fzlfz9FsnCNdO0Ezd9NJnjtj-BCPgJAI_dcQf2Am6d74-aKz7x2AJ2FNROLHgXkpK4r612TzLZhrMsRIyBuvuTFY65lScKnNq57rotqchOPE0LqBzyq_8FZ6K3pkrRHS7nb/s1600/pasla%C5%9F.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_wyZSvR83-fzlfz9FsnCNdO0Ezd9NJnjtj-BCPgJAI_dcQf2Am6d74-aKz7x2AJ2FNROLHgXkpK4r612TzLZhrMsRIyBuvuTFY65lScKnNq57rotqchOPE0LqBzyq_8FZ6K3pkrRHS7nb/s320/pasla%C5%9F.jpg" width="320" /></a></div>
<br />
<br />
Alıntı çünkü hep yazmak taraftarı değilim oturup incelemek,anlamak da lazım birilerinin kodlarını.Ben mesela sabit görüntüyü nasıl yakalarım diye çok soruyordum kendime buradan öğrendim, renklendirme de aynı şekilde umarım işinize yarar incelemeye değer bence.Kodları <a href="http://www.upload.gen.tr/d.php/www/sqqyr6f8/game1.cpp.html">buradan</a> indirebilirsiniz kolay gelsin :)Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-2395187176975775182012-05-19T04:54:00.000-07:002012-05-19T04:54:09.770-07:00C++ Yılan Oyunu(snake)<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtZ0_iyTZzZX7oIK9Lmalk3vDiFDTWDdMD2Nw4rXNx4CPV6gEq1zZFJGOw8lZDHMJv6CiIxKzYl8bA8r9psGnZPXlB6gN8NoR8mdPQ45cpXmYYIB4Nxj2aqwFprxgB8G9ove6_WnqNOp-X/s1600/snake-nokia.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtZ0_iyTZzZX7oIK9Lmalk3vDiFDTWDdMD2Nw4rXNx4CPV6gEq1zZFJGOw8lZDHMJv6CiIxKzYl8bA8r9psGnZPXlB6gN8NoR8mdPQ45cpXmYYIB4Nxj2aqwFprxgB8G9ove6_WnqNOp-X/s320/snake-nokia.jpg" width="320" /></a></div>
C++ ile yazılmış yılan oyunu(Snake) eski günlerinize bir an için dönebilirsiniz:)Yine exe sini koyuyorum<br />proje olarak alıcaklar kesinlkile olucaktır uğraşın yine de yapamazsanız bana ulaşın:) <a href="http://www.upload.gen.tr/d.php/www/js75vt4c/Snake.exe.html">buradan</a> indirebilirsiniz.<br />İyi eğlenceler ,kolay gelsin:)Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-47558202836941320122012-05-15T12:56:00.001-07:002012-05-19T15:30:25.572-07:00C++ Projeleri(sudoku,pişti,black jack,futbol ligi simulasyonu...)<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0iymdXMKZF0LfYvgFb1DZo8qVAzy0fFrWYg0Pumua1nGJ3bzmPBx6480I38F5_bXht-8TV71dTNVA6M-3J0UrTd6oqGzz2VP9HrJDIKmiouYapbwu0HiOsg68efF2k4SVC1Kb8TZlBBck/s1600/images.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="256" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0iymdXMKZF0LfYvgFb1DZo8qVAzy0fFrWYg0Pumua1nGJ3bzmPBx6480I38F5_bXht-8TV71dTNVA6M-3J0UrTd6oqGzz2VP9HrJDIKmiouYapbwu0HiOsg68efF2k4SVC1Kb8TZlBBck/s320/images.jpg" width="320" /></a></div>
<br />
<br />
<br />
Devamını getiriceğim bu yazıyı farklı projelerle renklendiricem daha inş. Arkadaşlarımdan aldıkca burda exe dosyalarna ulaşmanızı saglıycam, size verilecek projelerde yardımcı olması için. Kesinlikle uğraşın kendiniz yapmaya çalışın projelerinizi ama olur da yapamazsanız çabanıza , emeğinize rağmen bana <span style="color: blue;">cuneyt.carikci@gmail.com</span> adresinden ulaşabilirseniz yardımcı olmaya çalışırım.C++ ile sudoku,pişti,black jack,futbol ligi simulasyonu,mayın tarlası... gibi projelerin exelerine kısa bi zaman da buraya koycam exeleri çünkü kodları koysam kimse uğraşmayacaktır :).Sudokuya <a href="http://www.upload.gen.tr/d.php/www/if8c4ovi/sudoku.exe.html">buradan</a> ulaşablirsiniz. Kolay gelsin..<br />
Piştiye <a href="http://www.upload.gen.tr/d.php/www/jmkf71mw/PROJECT.exe.html">buradan</a> ulaşabilirsiniz az ingilizce lazım halledersiniz bence:)Kartların dikine dikine olması biraz gıcık ediyor evet ama biz daha iyisini yapana kadar en iyisi bu :PCüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com2tag:blogger.com,1999:blog-621728275956986158.post-22357196849923492552012-04-26T16:37:00.000-07:002012-04-27T11:41:30.759-07:00C++ Virtual(sanal) Fonksiyonlar Örneği<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX1LxA-xU4Pyca4Kp8JoM1aKClCj4eyEzqZFP0os4FgA3egN8Joj11bqpB-ZrK5PSDyyzJ163a-H2R4_UO0NrGN1LVUew8qOiLYzh76_sQYHmHqgEyIEZXrDIPUQXUtC15nnTSWX-Z1GgB/s1600/400px-ClassDiagram_for_VirtualFunction.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="186" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX1LxA-xU4Pyca4Kp8JoM1aKClCj4eyEzqZFP0os4FgA3egN8Joj11bqpB-ZrK5PSDyyzJ163a-H2R4_UO0NrGN1LVUew8qOiLYzh76_sQYHmHqgEyIEZXrDIPUQXUtC15nnTSWX-Z1GgB/s320/400px-ClassDiagram_for_VirtualFunction.png" width="320" /></a></div>
Kod kısmına geçmeden önce ufak bir açıklama yapmak istedim virtual fonksiyon hakkında.<br />
Üstteki resimden yola çıkacak olursak Animal sınıfı Base class , Wolf, OtherAnimal ve Fish sınıfları da<br />
bu Base class tan türetilmiş sınıflar GoldFish de Fish den türetilmiş.Tüm türetilmiş sınıfların ortak özelliği<br />
"yemek" üzerine düşünün.Animal sınıfı eat() fonksiyon içeriyor,diğer sınıflar da öyle, yalnız türetilmiş sınıfları<br />
pointer arrayına attığımızda Animal *Ptr[3]; ve bu arrayın elemanlarının eat() fonksiyonunu <u>Ptr[0]->eat();</u> komutuyla her cagırısımızda beklediğimiz şey her nesnenin kendi özelliğini ekrana yazması ama bu çağırım<br />
Base class daki eat() fonksiyonunu çağırmaktan başka bişey değildir.Amacımıza uygun çıktı için Base class'da<br />
eat() fonksiyonunun başına <i>virtual </i> anahtar kelimesini getirmeliyiz.Kodları <span style="color: lime;"> <span style="color: lime;"><a href="http://www.upload.gen.tr/d.php/www/dn3ac598/test.cpp.html">buradan</a> </span></span>indirip üstünde oynamalar yapabilirsiniz,öğrenmeniz için daha iyi olacaktır.Aynı zaman da aşşağıda da inceleyebilirsiniz. Kolay gelsin..<br />
<br />
<br />
/*<br />
Cüneyt Çarıkçi 27-04-2012<br />
cuno_carikci@windowslive.com<br />
*/<br />
<br />
#include <iostream></iostream><br />
using namespace std;<br />
<br />
class Animal {<br />
public:<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>virtual void eat() {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<"??!!..!!??\n";<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<br />
/* Saf sanal sınıf icin<br />
bir alt satır aktiflestirilmeli<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span> virtual void eat()=0;*/ <br />
<br />
~Animal() {}//unutulmamalı<br />
};<br />
<br />
class Wolf : public Animal {<br />
public:<br />
void eat() {<br />
cout << "Kurt: Ceylan yer!\n";<br />
}<br />
};<br />
<br />
class Fish : public Animal<br />
{<br />
public:<br />
void eat() {<br />
cout << "Balik: Balik yer!\n";<br />
}<br />
};<br />
<br />
class GoldFish : public Fish {<br />
public:<br />
void eat() {<br />
cout << "Akvaryum Baligi: Balik yemi yer!\n";<br />
}<br />
};<br />
<br />
class OtherAnimal : public Animal {<br />
};<br />
<br />
int main() {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Wolf w;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Fish f;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>GoldFish g;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Animal *Ptr[3];<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Ptr[0]=&w;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Ptr[1]=&f;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Ptr[2]=&g;<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<" ------HAYVANLARIN BESLENME SEKILLARI------\n";<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>for ( int i = 0; i < 3; i++ ){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Ptr[i]->eat();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/*<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Base class da eat() fonksiyonunu<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>virtual (sanal) yapmasaydık<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>her cagirilista Base class'taki<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>eat() cagirilacaktı ki bu da istedigimiz<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>bir şey degil.Ortak bir payda altında<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>Her nesne kendine ozgu<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>özellikler barındırabilir ve bizim<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>bunlara ulaşmamız gerekebilir.<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>*/<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>system("PAUSE");<br />
}<br />
<br />
<br />Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com4tag:blogger.com,1999:blog-621728275956986158.post-78858341071596620782012-04-10T13:39:00.001-07:002012-06-06T14:33:21.813-07:00C++ Inheritane(kalıtım) Örneği 2<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTWMkm_CxB8p4fIldXh1WilFSEW2G8n045q6YjlMF0B3Ut8cD-8DPXwXhsOFmnKcjMzn2CCgASSxunk3u3kk1zZ3P2d7fuHxpCh4eY9jP_FaZear6_p5AX31dUThYNTQrh3hee3E0EWD31/s1600/shapes.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="color: blue;"></span></a></div>
<blockquote class="tr_bq">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTWMkm_CxB8p4fIldXh1WilFSEW2G8n045q6YjlMF0B3Ut8cD-8DPXwXhsOFmnKcjMzn2CCgASSxunk3u3kk1zZ3P2d7fuHxpCh4eY9jP_FaZear6_p5AX31dUThYNTQrh3hee3E0EWD31/s1600/shapes.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span style="color: black;"><br /><img border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTWMkm_CxB8p4fIldXh1WilFSEW2G8n045q6YjlMF0B3Ut8cD-8DPXwXhsOFmnKcjMzn2CCgASSxunk3u3kk1zZ3P2d7fuHxpCh4eY9jP_FaZear6_p5AX31dUThYNTQrh3hee3E0EWD31/s320/shapes.jpg" width="320" /></span></span></a></div>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<blockquote class="tr_bq">
<br /></blockquote>
<br />
#include<iostream></iostream><br />
#define pi 3.14<br />
using namespace std;<br />
class point {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>friend ostream& operator<<(ostream& yaz,point p){ //<< operatorunu asırı yukledik<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>yaz<<"("<<p.x<<","<<p.y<<")"; < font=""></p.x<<","<<p.y<<")"; <><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>return yaz;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
private:<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int x,y;<br />
public:<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
point(int a=0,int b=0)<br />
{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>setPoint(a,b);<br />
}<br />
void setPoint(int a,int b)<br />
{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>x=a;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>y=b;<br />
}<br />
~point(){}//test amaclı bi seyler yazılabilir<br />
};<br />
class cember:public point{ //point'ten cember turettık //:public eristigimiz icin<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int yaricap; //public fonksiyonlara ulasabilirz<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>float alan;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>float cevre;<br />
public:<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cember(int x=0,int y=0,int r=0){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>setPoint(x,y);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>setYaricap(r);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>setAlan();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>setCevre();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>void setYaricap(int a) {yaricap=a;}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>int getYaricap() { return yaricap;}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>void setAlan(){<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>alan=pi*getYaricap()*getYaricap();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>float getAlan() {return alan;}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>void setCevre(){<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cevre=2*pi*yaricap;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>float getCevre() {return cevre;}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>void printInfo(cember t){ // tüm bilgileri goster<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<"Cemberin merkezi: "<<t<<endl;< font=""></t<<endl;<><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<"Cemberin yaricapi: "<<yaricap<<endl;< font=""></yaricap<<endl;<><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<"Cemberin alani: "<<t.getalan()<<endl;< font=""></t.getalan()<<endl;<><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<"Cemberin cevresi: "<<t.getcevre()<<endl;< font=""></t.getcevre()<<endl;<><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<br />
};<br />
class kure:public cember {<br />
<br />
public:<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>kure(int a=0,int b=0,int c=0){<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>setYaricap(c);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>setPoint(a,b);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>hacim=(4/3)*pi*getYaricap()*getYaricap()*getYaricap(); //sayisal degerler<br />
//dogru cıkmayabilir<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>} //int-float donusumunu ihmal ettigim icin<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>void setHacim(kure c){ //ugrasmak istemedim :)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>hacim=(4/3)*pi*getYaricap()*getYaricap()*getYaricap();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>float getHacim() {return hacim;}<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>void printKure(kure t) {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<"Kurenin merkezi: "<<t<<endl;< font=""></t<<endl;<><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<"Kurenin yaricapi: "<<getyaricap()<<endl;< font=""></getyaricap()<<endl;<><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<"Kurenin hacmi: "<<gethacim()<<endl;< font=""></gethacim()<<endl;<><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
private:<br />
float hacim;<br />
<br />
};<br />
<br />
int main () {<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>point p;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<p<<"-->Pointe ait bilgiler"<<endl;< font=""></endl;<></p<<"--><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<"\n";<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cember test(3,4,5);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>test.printInfo(test);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cout<<"\n";<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>kure deneme(0,0,10); <br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>deneme.printKure(deneme); <br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>//deneme.printInfo(deneme);<br />
<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>/*cember sınıfına ozelmis gibi dusunulse de kure sınıfı<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>cemberden turedigi icin problem olmayacaktır<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>gerekli ortak bilgilere erisip bilgileri yazabilir*/<br />
<br />
system("PAUSE");<br />
return 0;<br />
}</blockquote>
Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0tag:blogger.com,1999:blog-621728275956986158.post-7285680643136053942012-04-09T11:57:00.000-07:002014-06-01T02:12:12.620-07:00C++ Inheritance(kalıtım) örneği<span style="background-color: #444444;"><span style="color: white;"><span class="Apple-style-span" style="font-family: Georgia, serif; font-size: 13px; line-height: 20px;"></span><br /></span></span>
<pre><pre style="margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; width: 410px;"><span style="font-family: consolas, 'Courier New', courier, monospace;"><span style="background-color: #444444; color: white; font-size: 12px;">
</span></span></pre>
<span style="background-color: #444444;"><span style="color: white;">
<span class="Apple-style-span">
</span></span></span><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLgtn5DkVuNSHCLfttkuH5HwUfYp_X5bXVun402HpMkrparDB5uLYVS6fRqXhRGzcyLDga5PrFEx_Xmj96M4ZnDl2YoMzHHuiMl9D3sP3KGkcDLZWS5lfERW283mbBb0OVOAkDzNefrrJU/s1600/jpg1.jpe" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><span class="Apple-style-span" style="background-color: #444444; color: white;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjLgtn5DkVuNSHCLfttkuH5HwUfYp_X5bXVun402HpMkrparDB5uLYVS6fRqXhRGzcyLDga5PrFEx_Xmj96M4ZnDl2YoMzHHuiMl9D3sP3KGkcDLZWS5lfERW283mbBb0OVOAkDzNefrrJU/s320/jpg1.jpe" height="238" width="320" /></span></a></div>
<span style="background-color: #444444;"><span style="color: white;">
<span class="Apple-style-span">
</span></span></span><div class="separator" style="clear: both; text-align: center;">
</div>
<span style="background-color: #444444;"><span style="color: white;">
<span class="Apple-style-span">
</span></span></span><pre style="margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; width: 410px;"><span class="Apple-style-span" style="background-color: #444444; color: white;"><span class="Apple-style-span" style="font-family: consolas, 'Courier New', courier, monospace;"><span class="Apple-style-span" style="font-size: 12px;">/* Cüneyt Çarıkçi 09/04/12</span></span><span class="Apple-style-span" style="font-family: consolas, 'Courier New', courier, monospace; font-size: 12px;">*/ // Basit kalıtım örneği</span></span></pre>
<span style="background-color: #444444;"><span style="color: white;">
<span class="Apple-style-span">
</span></span></span><pre style="margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; width: 410px;"><span class="Apple-style-span" style="font-family: consolas, 'Courier New', courier, monospace;"><span class="Apple-style-span" style="background-color: #444444; color: white; font-size: 12px;"><span class="Apple-style-span">#include<iostream><iostream><iostream>
using namespace std;
</iostream></iostream></iostream></span><span class="Apple-style-span">class</span><span class="Apple-style-span"> </span><span class="Apple-style-span">Calisan{</span></span></span></pre>
<span style="background-color: #444444;"><span style="color: white;">
<span class="Apple-style-span">
</span></span></span><pre style="margin-bottom: 0em; margin-left: 0em; margin-right: 0em; margin-top: 0em; width: 410px;"><span class="Apple-style-span" style="background-color: #444444; color: white;"><span class="Apple-style-span" style="font-family: consolas, 'Courier New', courier, monospace;"><span class="Apple-style-span" style="font-size: 12px;">char<span class="Apple-style-span"> isim[30];
</span>int<span class="Apple-style-span"> yas;
</span>public<span class="Apple-style-span">:
Calisan(char ad[]="isim_yok",int y=0){
strcpy(isim,ad);
yas=y;
}
~Calisan(){}
</span>void<span class="Apple-style-span"> setIsim (char b[]){
strcpy(isim,b);
}
</span>char*<span class="Apple-style-span"> getIsim(){return isim;}
</span>int<span class="Apple-style-span"> getYas(){return yas;}
</span>void<span class="Apple-style-span"> setYas(int a) {
</span>yas<span class="Apple-style-span">=a;
}
};
</span>class<span class="Apple-style-span"> memur:public Calisan{// Calisan snıfndan memur türet
</span><span class="Apple-style-span">public</span><span class="Apple-style-span">:
</span></span></span><span class="Apple-style-span" style="font-family: consolas, 'Courier New', courier, monospace;"><span class="Apple-style-span"><span class="Apple-style-span"><span class="Apple-style-span" style="font-size: xx-small;">memur(char ad[]="isim_yok",int y=0,char yer[]="gorev_yeri_girilmemis"){</span></span></span></span>
<span class="Apple-style-span" style="font-family: consolas, 'Courier New', courier, monospace;"><span class="Apple-style-span" style="font-size: 12px;"><span class="Apple-style-span"> setIsim(ad);
setYas(y);
strcpy(gorevYeri,yer);
}
~memur(){}
char* getGorevYeri(){return gorevYeri;}
private:
char gorevYeri[30];
};
int main () {
memur cuno("Cuneyt Carikci",20,"Erzurum");
cout<<"Calisanin adi: "<<cuno .getisim="" calisanin="" class="Apple-style-span" color="#00ff00" cout="" cuno.getgorevyeri="" cuno.getyas="" endl="" font="" gorev="" pause="" system="" yasi:="" yeri:="">return</cuno></span> 0;
}</span></span><span class="Apple-style-span" style="font-family: consolas, 'Courier New', courier, monospace; font-size: 12px;">
</span></span></pre>
<span style="background-color: #444444;"><span style="color: white;">
<span class="Apple-style-span">
</span></span></span><div>
</div>
</pre>
<blockquote>
</blockquote>
Cüneyt Çarıkçihttp://www.blogger.com/profile/08457371527315576846noreply@blogger.com0