Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: muhittin_kaplan - 06 Ekim 2013, 10:46:36

Başlık: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 06 Ekim 2013, 10:46:36
Bakıyorum da Sanki Doğrudan kod yazıyoruz yani oturup düşünmüyoruz, veri yapısı nedir, en uygun ne olmalı, bu fonksiyon en optimize nasıl çalışır ?
Evet Dökülelim Bakalım, Zekat Vakti.

"Algoritma bir işin yapılması için gerekli adımların belirlenmesidir" tanımıyla başlayıp programlamada kullanılan iki yaklaşımı yazarak "araştırmak" üzere vereyim.
Algoritmik ve Heuristik.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: FxDev - 06 Ekim 2013, 11:54:43
Muhittin hocam selamlar,

Genellikle Güç elektroniği ile uğraştığımdan ADC/PWM birimlerinin cycle cycle kesme gecikmeleri benim için çok kritik olduğundan daha ortada donanım yokken ben algoritmayı ortaya koyarım. Özellikle bu kontrol (PID - Vector) fonksiyonlarında kritik bir öneme sahip.

Bundan sonra ise donanım uyumlulukları göz önüne alırım. Özellikle işlemciyi ona göre seçerim: ADC biriminin sample işlemi, PWM ile tetiklenebilir olması vb. Buna göre Init. ayarlarını da yaparım.

Daha sonrası ise OKUNABİLİR kod yazımıdır ki burada struct union vb. kavramları önemli bir hal alır.

Mottom şudur, benden başka bir adam da benim projemi ele aldığında commentsiz dahi benim yazılımımı okuyabilmeli.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 06 Ekim 2013, 13:23:26
Bir problemin cozum yolunu adim adim aciklamaya algoritma diyebiliriz.
Algoritma bu haliyle cok yalindir bilimsel tekniklerle (matematik/sayi teorisi/fizik vs) optimize edilir ve ortaya optimize edilmis algoritmalar cikar.
Burada adi gecen problem kuskusuz ciddi problemlerdir. Herkesin cozebilecegi turden problemlerin cozumunu kodlamak basit algoritma yazimidir ve bu cogu zaman heuristik yaklasimla yapilir.

Algoritma yalin haliyle anlasilirdir fakat optimize edilmis algorimalar anlasilirliktan cok uzaktir.  Oyle uzaktirki program kodlarinin yanina isterseniz sayfalar dolusu aciklama yapin gene de isin derinlerinde olmayanlar anlayamaz.

Optimize algoritma gelistirmek dahilerin isidir. Akademik calisanlarin adlarini literature gecirdigi turden calismalardir.

Isin icinde hiz varsa algoritma kutuphanelerinde arastirma yapip mevcut algoritmalari kullanmak gerekir. Aksi takdirde ayni isi yapan kodlari yazabilirsiniz fakat hiz acisindan yavas olacaktir.

Heuristik yaklasim acemilerin lojik devre tasariminda izledikleri yaklasima benzer. Sezgiler onplandadir. Sonucta yari senkron yari asenkron bir tasarim ortaya cikar.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: kantirici - 06 Ekim 2013, 17:37:49
Optimizasyon denince aklıma bu geliyor.  http://en.wikipedia.org/wiki/Fast_inverse_square_root (http://en.wikipedia.org/wiki/Fast_inverse_square_root)

Tabi bu @z hocanın dedigi gibi üzerinde çalışılarak geliştirilmiş. Bu denli olmasada günlük hayattaki kodları optimize yazmak için donanımı ve programlama dili hakimiyeti ve tecrübe ön plana çıkıyor. Ustadlar burada günlük kod yazımında kullanabilecegimiz basit optimizasyonlardan bashsederlerse faydalı olacaktır.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: MC_Skywalker - 06 Ekim 2013, 19:48:25
Kod optimizasyounu ile ilgili göz attığım bazı yazılarda "volatie" karşıma çıkmakta.  Nedir bu volatile?

Başlık: Ynt: Algoritma Nedir ?
Gönderen: Klein - 06 Ekim 2013, 19:54:16
Volatile belirtecini kullanarak,  derleyiciye " Sen bu değişkenin değerinin değişmediğini veya değişmeyeceğini zannediyorsun. Ama bu değişkenin değeri senin bilmediğin başka bir yerden değiştiriliyor. Bu yüzden bu değişkeni optimize etmeye çalışma. Gördüğün gibi derle" diyoruz. 
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 06 Ekim 2013, 20:01:51
Aslinda derleyici biraz akilli olsa kimin volatile olmasi gerektigine kendisi karar verebilir. Butun ipuclari zaten kodlarin icinde var.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: mistek - 06 Ekim 2013, 20:55:15
Derleyeci kodları hex koduna çevirirken kodu çalıştırıyor mu? Mesela kodda çalışma zamanlı sıfıra bölme hatası varsa derleyici bunu bilecek kabiliyete sahip olabilir mi? En basit durumu


while(1)
{
i--
bolum /= i;
}
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Tagli - 06 Ekim 2013, 21:50:52
Hayır, bu hata derleme sırasında farkedilemez.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Burak B - 06 Ekim 2013, 22:08:25
İşlemcilerdeki Divison by Zero bayrağı, kesmesi, registeri de işte buna hizmet eder.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 06 Ekim 2013, 23:20:59
Doğru, DZ bayrağı o iş içindir.

volatile derleme esnasında yaptığınız tanımlı bölgeyi "burayı optimize etme, elleşme kardeşim ne görüyorsan öyle compile et" anlamına gelir. Bir adresi değişkene bağlamış olabilirsiniz, konuyla alakalı güzel bir yazı http://ozgurmurat.blogspot.com/2009/05/c-dilinde-volatile-anahtar-kelimesi.html (http://ozgurmurat.blogspot.com/2009/05/c-dilinde-volatile-anahtar-kelimesi.html)


Neyse Devam Edelim.

Algoritmik Yaklaşım: Daha önce test edilip kullanılmış, doğru çalıştığı bilinen çözümlerden herhangi biri seçilerek Probleme Çözüm Bulmaya Algoritmik yaklaşım denir. Tüm Adımların çok kecin ve net bir şekilde ortada olması gerekir.

Heuristik yaklaşım: Problem algoritmik olarak çözülmemiştir. problem tam olarak tanımlanmamıştır da diyebiliriz. problemin çözümü tam olarak ortada değildir.
bir programcı algoritmik olarak çözümlemediği bir problemi farkında olmadan Heuristik olarak çözüyordur. aslında Heuristik olarak çözdüğü anda artık algoritmik olarak da çözebilir.

algoritmik çözüm Heuristik den daha hızlı sonuca ulaştırır.
--------------------------------0---------------------------------0--------------------------------0----------------------------------0-----------------------------------0------------------------------------0---------

Algoritmik Çözüm yöntemini kullanarak ilk yaptığınız nedir Üstadlar ? Ben ilk önce pseudo code yazarım siz ? Sonrasında ister PBP,CCS, C yada Vb.net yada C# fark eder mi ? bundanrır ki arkdşlra "dil üzrnde fzl durmyn bnlr brr arç dyrm (burayı bilerek böyle yadzım çoğunluk anlamıştır. dil-iletişim aracıdır.)
merak edenler için http://tr.wikipedia.org/wiki/S%C3%B6zde_kod (http://tr.wikipedia.org/wiki/S%C3%B6zde_kod)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 06 Ekim 2013, 23:30:59
Alıntı yapılan: gerbay - 06 Ekim 2013, 20:52:13
Hayir, bunu asla bilemez...  örnegin bir degisken "memory mapped io" bölgesinde tanimli olabilir. Pci karti taktiniz sisteme, uygun bir base adresten itibaren yerleşti kart. Kartin registerlarini okuyacaksiniz, bunu derleyici asla bilemez. Hatta verdigim senaryoda hem volatile kullanmalisiniz hem de islemciye/isletim sistemine bu alani 'keşleme' demelisiniz. yani memory mapped io bölgelerinin keşlenmemesi de gerekir.

Volatile in optimize edilmemesi disinda bir özelliği daha var. Dereyici volatile tanimli degiskenler icin mümkün oldugunca atomik islem yapmaya çalisir.

Hocam bastan asagi kendimizin yazacagi kodlardan bahsediyorum.

Derleyici nasil bilir?

Adresleri Ram alani disindaki degiskenler volatile tanimli olmalidir. Heleki I/O port alaninda olanlarin alayi kafadan volatile yapilailir.

Interrupt rutinleri icinde kullanilan degiskenler ayni zamanda diger rutinlerde de kullaniliyorsa volatile degiskendir.

Bunlarin icinden volatile olmamasi gereken degiskenler cikabilir. Olsa ne olur ki? 

Mesela Ram alani icinde olmayan bos yerlerden birisine harici Ram takildi diyelim. Bu alanin bastan sona volatile olmasi gerekmez. Bunun da cozumu var. Kardesim volatile degiskenleri benim Ram alanindan sec denebilir.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 06 Ekim 2013, 23:56:25
Ram alani: Belli.
Haricten Map edilen Alan da tanimlanacak.

Bu alanlar Keil'deki gibi tanimlandiginda is bitiyor. Task ve Threadler icin bir sey diyemeyecegim ama bunlarin da C derleyici tarafindan anlasilacagi ipuclari (anahtar kelimeler ne bileyin Init Task vs) olmasi lazim.

Belki bu akillilik C derleyiciye değil de oncu derleyiciye devredilebilir. Keilde bile var bu ozellik. 
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 07 Ekim 2013, 00:25:23
Simdi Ram alanina map edilen I/O alani vs deyince isler karisiyor detaylari bilmedigim icin fazla eselemek istemiyorum.

PCI vs ile calismadim ama hala sunu iddia ediyorum.

RTOS dahil isletim sistemi yapisi icermeyen klasik usulde yazilmis icinde bilincli sekilde volatile on eki kullanilmadan hatali yazilmis bir C programini oncu yorumlayicidan gecirerek surada surada surada kullandiginiz degiskenler volatile olmaliydi dedirtebilirim.

Bu o kadar da zor değil.



Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 07 Ekim 2013, 00:43:53
Interrupt rutinlerini diger rutinlerden ayirmak  ARM islemcilerde cok kolay degil ama imkansiz da degil (vektor tablosundan yola cikilabilir). Cevre birimlerini okuyup/yazan okuduklarini degiskene aktaran noktalar, bu degiskenden yeni verileri turetip bir baska degiskene aktaran noktalar volatile degiskenler icin hayati ipuclari olacaktir.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 07 Ekim 2013, 00:58:28
Hocam laf olsun diye geyik yapiyoruz. Ama elin oglu rom kodlarindan source kod uretecek kodlara kafa yoruyor. Cok ciddi bir durum olsa gorev verilse usenmem bir iki core icin abuk sabuk kodlar yazarim.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 07 Ekim 2013, 12:54:50
algoritmanın şekilsel gösterimi ne akış diagramı diyoruz.
çoğunluğun bildiği UML şemaları
http://en.wikipedia.org/wiki/Unified_Modeling_Language (http://en.wikipedia.org/wiki/Unified_Modeling_Language)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: kralsam - 09 Ekim 2013, 00:26:37
Alıntı yapılan: muhittin_kaplan - 07 Ekim 2013, 12:54:50
algoritmanın şekilsel gösterimi ne akış diagramı diyoruz.
çoğunluğun bildiği UML şemaları
http://en.wikipedia.org/wiki/Unified_Modeling_Language (http://en.wikipedia.org/wiki/Unified_Modeling_Language)

Çok büyük çaplı uygulama yapmadım. En fazla bir kaç bin satırdan ibaret işlerle ilgilenme fırsatım oldu.
Bu projelerde şu yolları izledim.

- Kafadan düşünerek bir kaç kısmı modüler şekilde hayal edip yapabiliyorsam ve modüller 3-5 tane ise direk kodlamaya başladım.

- Sistemi tam olarak kavrayamadıysam önce istenenleri, olması gereken durumları ve bunları bölebileceğim parçaları oluşturdum.
- Bu parçaları ufak ufak ele alarak tabiri caizse böl parçala yönet mantığı ile ele alarak Akış Diyagramı çizdim.
- Modülleri parça parça yazdım.
- Sonrasında bunları bir top module ile birleştirdim.
- Debug yapıp eksikleri giderdim.

Hangisi doğru - yanlış ? Emin değilim. Ama genellikle yaz-çiz yaptığım işlerde, işler daha kolay oluyor. Sanırım anlaması, kavraması ve hatırlaması daha kolay oluyor.

Düzeltme: Eğer yapılan işlem belirli bir matematiksel fonksiyonsa tabiki ilk yaptığım işlem kritik durumları hesaplamak.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 24 Ekim 2013, 13:54:36
Veri Modeli Nedir ?
veri modeli, bilgiler arasındaki bağlantının şeklidir diyebiliriz. Genelde Veri yapısı (byte, int vs vs) ile karıştırılır.

konuyla ilgili güzel bir yazı.
http://www.bilgius.com/veri-modelleri/ (http://www.bilgius.com/veri-modelleri/)

lütfen veri modellerini araştırınız..
Başlık: Ynt: Algoritma Nedir ?
Gönderen: salih18200 - 24 Ekim 2013, 14:06:56
https://www.youtube.com/watch?v=kPRA0W1kECg#t=34 (https://www.youtube.com/watch?v=kPRA0W1kECg#t=34)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 24 Ekim 2013, 14:14:53
salih nedir bu ?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: yamak - 24 Ekim 2013, 22:25:27
Alıntı yapılan: muhittin_kaplan - 06 Ekim 2013, 23:20:59
Doğru, DZ bayrağı o iş içindir.

volatile derleme esnasında yaptığınız tanımlı bölgeyi "burayı optimize etme, elleşme kardeşim ne görüyorsan öyle compile et" anlamına gelir. Bir adresi değişkene bağlamış olabilirsiniz, konuyla alakalı güzel bir yazı http://ozgurmurat.blogspot.com/2009/05/c-dilinde-volatile-anahtar-kelimesi.html (http://ozgurmurat.blogspot.com/2009/05/c-dilinde-volatile-anahtar-kelimesi.html)


Neyse Devam Edelim.

Algoritmik Yaklaşım: Daha önce test edilip kullanılmış, doğru çalıştığı bilinen çözümlerden herhangi biri seçilerek Probleme Çözüm Bulmaya Algoritmik yaklaşım denir. Tüm Adımların çok kecin ve net bir şekilde ortada olması gerekir.

Heuristik yaklaşım: Problem algoritmik olarak çözülmemiştir. problem tam olarak tanımlanmamıştır da diyebiliriz. problemin çözümü tam olarak ortada değildir.
bir programcı algoritmik olarak çözümlemediği bir problemi farkında olmadan Heuristik olarak çözüyordur. aslında Heuristik olarak çözdüğü anda artık algoritmik olarak da çözebilir.

algoritmik çözüm Heuristik den daha hızlı sonuca ulaştırır.
--------------------------------0---------------------------------0--------------------------------0----------------------------------0-----------------------------------0------------------------------------0---------

Algoritmik Çözüm yöntemini kullanarak ilk yaptığınız nedir Üstadlar ? Ben ilk önce pseudo code yazarım siz ? Sonrasında ister PBP,CCS, C yada Vb.net yada C# fark eder mi ? bundanrır ki arkdşlra "dil üzrnde fzl durmyn bnlr brr arç dyrm (burayı bilerek böyle yadzım çoğunluk anlamıştır. dil-iletişim aracıdır.)
merak edenler için http://tr.wikipedia.org/wiki/S%C3%B6zde_kod (http://tr.wikipedia.org/wiki/S%C3%B6zde_kod)
Hocam aşağıdaki cümlenin tam olarak açıklaması nedir?
Alıntı YapInterrupt servis rutinleri içerisinde değiştirilen bir alan kesme dışındaki kodda okunuyorsa (ya da tam tersi) söz konusu alanın değeri programın çalışması süresince her an değişebilir. Derleyici bundan haberdar olmadığı için bir kere değeri okuyup/yazdıktan sonra tekrar aynı işlemi yapmayabilir. Bu tip alanların bu yüzden volatile olarak tanımlanması gerekir (ve haliyle atomik olarak okunup/yazılabilmesi gerekir).
Şimdi aşağıdaki gibi kodum olsun

char a;
int main(void)
{
    send_char(a);
}

void UART1_IRQHandler(void)
{
    a=get_char();
}

burada a yı volatile tanımlamazsam ne olur?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 24 Ekim 2013, 22:46:45
hocam fonksiyona parametre vermiş ve dönen değer olarak a yı göstermişsiniz. derleyicinin ürettiği kodu görmek gerekir (optimizasyonda önemlidir). ama ben düzgün derleyeceğini düşünüyorum.

yani send char(0) gibi bir durum olur bilgi alana kadar (bilgi aldığımız anda durum değişir.)

ama

int rutini içerisinde usartın RX reg ın bilgisini aldığımız yerdeki değişken volatile olmalı. Çünki reg içeriğini "0" kabul edebilir.
void rx_int{
char RxValue;
RxValue=RX_reg;
Return RxValue;
}
Burayı RxValue=0 olarak derleyebilir.


dolayısıyla a da devamlı 0 görülür.

(Yanlışım varsa lütfen düzeltin. Emin değilim. Yorum Yaptım Sadece)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: yamak - 24 Ekim 2013, 23:01:07
Hocam dediğiniz doğru olabilir ama adamın anlattığından benim anladığım şu:
Eğer bi değişiken intterrup servis rutininin içinde değeri değişiyo ve daha sonra programın başka yerlerinde kullanılıyorsa bu değişken volatile tanımlanmalı.Bu durumda böyle bi değişkenin global olarak tanımlanmış olması gerekir.Ama bence sizin yazdığınız kodda da RxValue volatile tanımlanması gerekir çünkü derleyici o değişkenin programın çalışması esnasında değişeceğini bilemez.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 24 Ekim 2013, 23:11:26
aslında ben
Duğrudan işlemcinin Registerleriyle ile bilgi alışverişi yapan değişkenlerimi VOLATILE tanımlıyorum.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: 1nsane - 24 Ekim 2013, 23:29:20
Kabaca http://tr.wikipedia.org/wiki/Ak%C4%B1%C5%9F_%C5%9Femas%C4%B1 (http://tr.wikipedia.org/wiki/Ak%C4%B1%C5%9F_%C5%9Femas%C4%B1) budur :)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: yamak - 24 Ekim 2013, 23:40:59
Alıntı yapılan: muhittin_kaplan - 24 Ekim 2013, 23:11:26
aslında ben
Duğrudan işlemcinin Registerleriyle ile bilgi alışverişi yapan değişkenlerimi VOLATILE tanımlıyorum.
Hocam aslında derleyici optimizasyonlarını detaylı bi şekilde açıklayan bi döküman bulsak daha iyi anlaşılabilir.Kaan Arslan sitesinde açıklamış bazılarını ama açıklamdıkları da var galiba.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 25 Ekim 2013, 00:36:26
hocam global değişkenlerde mi kullanılır bu volatile ?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: yamak - 25 Ekim 2013, 10:48:22
Hocam atomic erişimden kastettiğiniz tam olarak nedir?Biraz açıklayabilir misiniz?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: mufitsozen - 25 Ekim 2013, 11:19:37
atom maddenin bolunemiyen en kucuk parcasidir tarif olarak.

atomic erisimide (turkcesi biraz icat bir terim oldugu icin uzun uzun aciklamak lazim gelebilir) cok basit olarak,  kesintiye ugramadan bir hamlede (1 instruction) yapilan erisim denebilir.

ornegin i++;

  i degiskenini registira al,
  registiri bir arttir
  registiri i degiskenine yaz olarakda yapilabilir
yada
inc i

diyede yapilabilir. tabiiki, i degiskenin oldugu yere hw olarak (ornegin dma ile) erisim varsa vede buda cycle stealing gibi instruction fetch cycleda yapiliyorsa (yada uniprocessor degilde multi processor/cekirdek yada shared memory yada ... filan falan diye konu uzaaar gider)

daha iyi anlamak icin en azindan "critical section" aciklamalarini okumaniz tavsiye edilir
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Tagli - 25 Ekim 2013, 11:25:27
Erişimin dışarıdan bozulamaması anlamına geliyor. Örneğin 8 bitlik bir işlemci ile x = x + 1 işlemini yapacağımızı varsayalım. Eğer x 8 bitlik bir sayı ise (mesela char türünden) bu erişim atomiktir çünkü tek komutla yapılır. Ama x 16 bitlik bir sayı ise bu iş tek seferde yapılamaz. Önce küçük byte 1 arttırılır, ardından taşma biti kontrol edilir. Eğer taşma biti 1 ise büyük byte da 1 arttırılır. Bu da fazladan birkaç komut daha olacağı anlamına gelir. Diyelim ki 16 bitlik x'in küçük byte'ını bir attırdık ama taşma olacak (mesela x = 255 iken x = x + 1 dedik). Taşma olduğu için büyüğü de arttıracağız ama tam o sırada kesme geldi, ve kesme kodu x'i okudu. Bu noktada işler karışıyor. Kesme kodu okuduğunda küçük byte sıfırlandı ama büyük byte arttırılmadı. Bu durumda kesme kodu x'i 255 veya 256 değil, 0 olarak okur.

Not: Ben yazarken mufitsozen hocam da cevaplamış.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 25 Ekim 2013, 11:27:05
Mufit hocam ben birsey anlamadim taniminizdan,
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 25 Ekim 2013, 11:31:29
Atomic
Baska bir komut yada donanim isteginden dolayi kesilemeyen islemdir. dersek yanlis yapmis olmayiz sanirim
Başlık: Ynt: Algoritma Nedir ?
Gönderen: mufitsozen - 25 Ekim 2013, 11:32:42
Alıntı yapılan: muhittin_kaplan - 25 Ekim 2013, 11:27:05
Mufit hocam ben birsey anlamadim taniminizdan,

maalesef tanim benim değil. Keske  o kadar alim olsaydim  :(

Herhangi bir isletim sistemi ile ilgili kitaba bakilirsa daha dogru olur (turkceye cevirirken anlam kaybi cok fazla oluyor)

Ben sahsen tanenbaum'un kitaplarini tercih ederim.



mesaj birleştirme:: 25 Ekim 2013, 11:34:13

Alıntı yapılan: muhittin_kaplan - 25 Ekim 2013, 11:31:29
Atomic
Baska bir komut yada donanim isteginden dolayi kesilemeyen islemdir. dersek yanlis yapmis olmayiz sanirim

prensip olarak dogru kabul edilebilir. Zaten picprojeyi ilgilendirecek mimarilerde bu tanim dogru kabul edilebilir.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 25 Ekim 2013, 11:45:12
aslında başlığı açmamdaki sebep bunları konuşmak değildi.
programlamanın ne olduğunu bilmeden kod yazmaya başlıyoruz onu biraz sıraya sokmaktı.
böylede güzel oldu.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: mufitsozen - 25 Ekim 2013, 12:25:56
Alıntı yapılan: muhittin_kaplan - 25 Ekim 2013, 11:45:12
...............
programlamanın ne olduğunu bilmeden kod yazmaya başlıyoruz onu biraz sıraya sokmaktı.
böylede güzel oldu.

cok haklisiniz, +100

Aslinda delik o kadar buyuk ki, neresinden baksak (yaklassak) hep icine dusuyoruz.
  :D

Tabii yinede su kitapi oku filan demekten hala imtina ediyorum. nedense hic kimsenin okumaya/arastirmaya vakti yok, ama herseyide hap gibi bilmek istiyorlar (ogrenmeden/uygulamadan)

Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 25 Ekim 2013, 12:44:16
O kodumu kullansam boylemi yapsam dan ziyade programlamayi bilmek gerek gerisi
İhtiyac duydugumda ogrenecegim komutlar dile ait kisitlar. Bugun float kullanamiyorken yarin kullanabiliyor oluyorum.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: kantirici - 25 Ekim 2013, 13:31:40
Şimdi ustadlar kafam karıştı. @tagli hocam sizin verdiginiz örneği ele alalım. x=255 ve x++; komutu icara edilirken low byte 0 oldu high byte arttırılamadan kesme geldi. Bu durum olumsuzluğundan kurutulmak için değişkeni volatile mi tanımlamamız lazım??

Yoksa zaten bu durum derleyici tarafından algılanarak atomik olarak işlem görüp işlemi bitirp mi kesmeye gidiliyor? 8 bitlik bir mcu da yukarıdaki işin bitip bitmediği nasıl anlaşılıyor?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: yamak - 25 Ekim 2013, 13:41:05
Alıntı yapılan: mufitsozen - 25 Ekim 2013, 11:19:37
atom maddenin bolunemiyen en kucuk parcasidir tarif olarak.

atomic erisimide (turkcesi biraz icat bir terim oldugu icin uzun uzun aciklamak lazim gelebilir) cok basit olarak,  kesintiye ugramadan bir hamlede (1 instruction) yapilan erisim denebilir.

ornegin i++;

  i degiskenini registira al,
  registiri bir arttir
  registiri i degiskenine yaz olarakda yapilabilir
yada
inc i

diyede yapilabilir. tabiiki, i degiskenin oldugu yere hw olarak (ornegin dma ile) erisim varsa vede buda cycle stealing gibi instruction fetch cycleda yapiliyorsa (yada uniprocessor değilde multi processor/cekirdek yada shared memory yada ... filan falan diye konu uzaaar gider)

daha iyi anlamak icin en azindan "critical section" aciklamalarini okumaniz tavsiye edilir
Hocam bu durumda değişkeni volatile olarak tanımladığımızda değişken direkt işlmecinin genel amaçlı registerlarından birinde mi saklanmış oluyo.Doğru anlamış mıyım?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Tagli - 25 Ekim 2013, 13:51:49
PIC için konuşursak, ++x'ten önce kesmeleri kapatıp, arttırımdan sonra kesmeleri tekrar açmak gerekir. volatile tek başına yeterli olmaz.

Bilgisayarda multi-thread uygulama yazarken ise mutex kullanımı gerekir. Arka planda süreç nasıl işliyor bilmiyorum. Araştırılırsa internetten yeterli bilgi bulunabilir sanırım.

Volatile bildiğim kadarıyla sadece bazı optimizasyonları kapatıyor. Yani değişkenin saklanma yeriyle ilgisi yok. Pek gerçekçi değilse de şöyle bir örnek verebiliriz: Örneğin arka arkaya b = a + b ve c = a + c işlemleri yapılacak olsun. Bu işi PIC ile yaparsak ASM kullanarak, a'yı bir kez W'ye atarız, ardından W'yi önce b ile toplayarak kendi üzerine yazarız, sonra da aynısını c için yaparız (a zaten W içinde olduğundan ikinci bir kez a'yı okumayız yani). Bu arada bir kesme gelip a'yı güncellerse, c = a + c işlemi a'nın eski değeri ile yapılmış olur. Veya a dediğimiz şey belki de PORTB register'ı ve biz girişlerin en güncel değerine göre işlem yapmak istiyor olabiliriz ve bu iki komut arasında fiziksel ortamdaki bir değişiklik sebebiyle a değişmiş olabilir. Volatile kullanılırsa a iki kez W'ye kopyalanır. Bunları örnek olarak yazdım, süreç daha farklı işliyor olabilir.

Bu arada pek çok register adı (Yoksa hepsi miydi? Unuttum) ilgili header dosyasında volatile olarak tanımlıdır.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 25 Ekim 2013, 16:09:17
İlişkisel veritabanında VERI MODELI nedir ?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Tagli - 25 Ekim 2013, 16:14:24
Wikipedia'da böyle yazmış:
Alıntı YapVeritabanında asıl önemli kavram, kayıt yığını ya da bilgi parçalarının tanımlanmasıdır. Bu tanıma Şema adı verilir. Şema veritabanında kullanılacak bilgi tanımlarının nasıl modelleneceğini gösterir. Buna Veri Modeli (Data Model) yapılan işleme de Veri modelleme denir. En yaygın olanı, İlişkisel Model' dir (relational model), bu modelde veriler tablolarda saklanır. Tablolarda bulunan satırlar (row) kayıtların kendisini, sütunlar (column) ise bu kayıtları oluşturan bilgi parçalarının ne türden olduklarını belirtir. Başka modeller (Sistem Modeli ya da Ağ Modeli gibi) daha belirgin ilişkiler kurarlar.

Veritabanlarını az çok biliyorum ama terimlere çok aşina değilim. Ben veritabanı şemasına "Entity - Relationship (E-R) Diagram" deniyor diye öğrenmiştim.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 25 Ekim 2013, 16:38:14
evet ilişkisel dir - eğer veritabanı diyebiliyorsak en azından onu desteklemelidir-.

nedir bu ilişkisel veri yapısı ? genelde duyulur ama pek bilinmez. örnek üzerinden açıklamaya çalışayım.

bir cihaz yapacaksınız ve (yada PC de program) personel bilgisi gibi birşey.
kaydetmemiz gereken bilgiler;
adı,soyadı,kimlik no, eşinin adı, çocuklarının adı ve araçlarının plakası olsun.

nasıl yaparız ?

bir tabloda hepsini kaydederiz değilmi ?
eğer öyle yaparsak kendini tekrarlayan bilgilerden dolayı (5 çocuğu olan personel için her çocuk kaydında diğer bilgileride yazmanız gerekir.)ya veritabanımız gereksiz şişer yada, bir araba için açtığınız alan 2. arabası olan için yetersiz kalır.

bunu aşmanın yolu her çoklu kayıt olabilecek alan için tablo oluşturup bunları birbirleriyle (kimlik no) ilişkilendirmektir.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: mufitsozen - 25 Ekim 2013, 16:39:44
Alıntı yapılan: muhittin_kaplan - 25 Ekim 2013, 16:38:14
evet ilişkisel dir - eğer veritabanı diyebiliyorsak en azından onu desteklemelidir-.

nedir bu ilişkisel veri yapısı ? genelde duyulur ama pek bilinmez. örnek üzerinden açıklamaya çalışayım.

bir cihaz yapacaksınız ve (yada PC de program) personel bilgisi gibi birşey.
kaydetmemiz gereken bilgiler;
adı,soyadı,kimlik no, eşinin adı, çocuklarının adı ve araçlarının plakası olsun.

nasıl yaparız ?

bir tabloda hepsini kaydederiz değilmi ?


HAYIR!  ;)

Hemen uygulamamiza SQLite ekleriz!  ;D
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 25 Ekim 2013, 16:46:37
SqlLite,SqlServer yada MySql Nasıl Çalışıyor ki Hocam ?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Mr.Java - 25 Ekim 2013, 17:31:16
Fakat kod optimasyonunda eğer pointerler havada uçuşuyorsa ilk aklıma gelen yapı Restrict'tir.Sonrasında uygun değişkenler,en az kod ve en az koddur en iyi çalışan program.Bunuda algoritmada ki yalancı kod kavramıyla akıcı şekilde yazınca algoritma kendiliğinden çıkıyor ortalığa.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: mufitsozen - 25 Ekim 2013, 18:00:27
Alıntı yapılan: muhittin_kaplan - 25 Ekim 2013, 16:46:37
SqlLite,SqlServer yada MySql Nasıl Çalışıyor ki Hocam ?

Sqlserver yada MySQL icin OS lazim, PC lazim, disk lazim lazim oglu lazim.
Halbuki Sqlite embedded, duzgun bir arm cortex m3/m4e applicationa ekleyebilirsin.

neyse yine acilmaya basladikmi nedir?  :)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 27 Ekim 2013, 16:15:21
Devam edelim soruyla...
Mesela sayi(99999) adinda bir dizimiz olsun. Bu diziden istedigim sayinin indexini bana donduren fonksiyonu nasil yaparsiniz?
Not dizi icindeki sayilar karisiktir ama  siralanmistir.(orng 0-3-6-11-12-15-22 gibi)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Tagli - 27 Ekim 2013, 17:16:08
Aklımdan bir sayı tuttum, 0 ile 128 arasında. Her tahminden sonra tahmin edilen sayının, tuttuğum sayıdan büyük mü yoksa küçük mü olduğunu söyleyeceğim. En fazla 8 tahminde bu sayıyı bulabilir misiniz?

Bu sorunun cevabı muhittin_kaplan'ın sorusunun da cevabı.

Bu arada, böyle şeyler için genelde diziler değil ikili ağaçlar kullanılıyor.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: mufitsozen - 27 Ekim 2013, 17:17:21
Alıntı yapılan: muhittin_kaplan - 27 Ekim 2013, 16:15:21
Devam edelim soruyla...
Mesela sayi(99999) adinda bir dizimiz olsun. Bu diziden istedigim sayinin indexini bana donduren fonksiyonu nasil yaparsiniz?
Not dizi icindeki sayilar karisiktir ama  siralanmistir.(orng 0-3-6-11-12-15-22 gibi)

binary-search

mesaj birleştirme:: 27 Ekim 2013, 17:20:12

Alıntı yapılan: Tagli - 27 Ekim 2013, 17:16:08
Aklımdan bir sayı tuttum, 0 ile 128 arasında. Her tahminden sonra tahmin edilen sayının, tuttuğum sayıdan büyük mü yoksa küçük mü olduğunu söyleyeceğim. En fazla 8 tahminde bu sayıyı bulabilir misiniz?

Bu sorunun cevabı muhittin_kaplan'ın sorusunun da cevabı.

Bu arada, böyle şeyler için genelde diziler değil ikili ağaçlar kullanılıyor.

8 degil 7 tahmin olacak.....mi acaba? :)

eger sayilar sirali ise ekleme ckarma yapilmiyorsa agac yapmaya gerek yok
Başlık: Ynt: Algoritma Nedir ?
Gönderen: metaltrrocker - 27 Ekim 2013, 17:22:17
Alıntı yapılan: mufitsozen - 27 Ekim 2013, 17:17:21
binary-search

mesaj birleştirme:: 27 Ekim 2013, 17:20:12

8 değil 7 tahmin olacak.....mi acaba? :)

eger sayilar sirali ise ekleme ckarma yapilmiyorsa agac yapmaya gerek yok
Ben de binary-search diyorum geçen derste gördük:)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Tagli - 27 Ekim 2013, 17:26:36
Evet dogru 7 olacak. Aslinda bana da oyle gelmisti ama bir deneme yapayim dedim ve o sirada yaptigim tahminleri yanlis saymisim. :-[
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 27 Ekim 2013, 19:28:58
müfit hocam binary i açıklarmısınız nedir ne değildir ?
Neden Teker Teker ile sormuyoruzda bu binary search i kullanayım.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Tagli - 27 Ekim 2013, 19:50:19
Teker teker sormus olsaydik daha uzun surerdi. Benim verdigim ornekte mesela aklimdan 95 tutmus olsaydim, bastan baslarsak ancak 95'inci tahminde sonuc bulunabilirdi. Ama binary search ile en fazla 7 hamlede bulunuyor.

Bilgisayar terminolojisinde O() gosterimi denen bir olay var. Bir islemin girdi sayisina bagli olarak ne kadar zaman alacagini veya karmasik oldugunu ifade etmek icin kullaniliyor. Soz konusu ornekte bastan baslayip sayilari tek tek deneseydik ifade O(n) olacakti. Yani arama suresi toplam veri sayisi ile orantili olarak artacakti. Binary search ile ise ifade O(log(n)). Yani bulma suresi veri sayisinin 2 tabaninda logaritmasiyla orantili olarak artacak.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: mufitsozen - 27 Ekim 2013, 20:19:50
Alıntı yapılan: muhittin_kaplan - 27 Ekim 2013, 19:28:58
müfit hocam binary i açıklarmısınız nedir ne değildir ?
Neden Teker Teker ile sormuyoruzda bu binary search i kullanayım.

http://video.franklin.edu/Franklin/Math/170/common/mod01/binarySearchAlg.html (http://video.franklin.edu/Franklin/Math/170/common/mod01/binarySearchAlg.html)

O(logn) kismi benden once aciklanmis.

c ile yazilmis code icin: http://www.programmingsimplified.com/c/source-code/c-program-binary-search (http://www.programmingsimplified.com/c/source-code/c-program-binary-search)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: cicjoe - 27 Ekim 2013, 22:28:43
hashtable ile O(1) de bulunabilir mesela, yani sabit zamanda.. ama hashtable'a atmak icin O(n) harcanir en basta.. Kac kere arama yapcagimiz da onemli. Coksa, 1 kere n harcamak muhim değil. Mutemelen bu sayilari array'e atarken de bi yerden okuyup atacaksiniz, yani O(n)'i harciyosunuz zaten..
Başlık: Ynt: Algoritma Nedir ?
Gönderen: yamak - 28 Ekim 2013, 09:51:55
Alıntı yapılan: gerbay - 27 Ekim 2013, 18:36:16
Logaritma 2 tabaninda 128....   

Muhittin hocam, en iyisi programlama dillerine kitaptan çalistiginiz gibi bir 'veri yapilari ve algoritmalar' kitabi bulup okuyun. Çok faydasi olacagini düşünüyorum
Hocam özellikle önerdiğiniz bir kitap var mı?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: coderun - 28 Ekim 2013, 10:28:17
Algoritma geliştirmek için kitap tavsiyesini bende bekliyorum.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Tagli - 28 Ekim 2013, 10:36:15
Wikipedia'da faydalı başlıklar var:
http://en.wikipedia.org/wiki/List_of_data_structures (http://en.wikipedia.org/wiki/List_of_data_structures)
http://en.wikibooks.org/wiki/Data_Structures (http://en.wikibooks.org/wiki/Data_Structures)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 28 Ekim 2013, 11:34:34
Alıntı yapılan: yamak - 28 Ekim 2013, 09:51:55
Hocam özellikle önerdiğiniz bir kitap var mı?
rifat çölkesen
Başlık: Ynt: Algoritma Nedir ?
Gönderen: yamak - 28 Ekim 2013, 12:09:35
Alıntı yapılan: muhittin_kaplan - 28 Ekim 2013, 11:34:34
rifat çölkesen
Hocam vasif vagifoğlu nabiyev in kitabının iyi olduğunu duymuştum.Acaba nasıl bi bilginiz var mı?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 28 Ekim 2013, 12:13:00
hocam incelemedim. ama iyi olduğunu duyduğum ve küt. almayı planladığım kitaplardan biri.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: musti463 - 28 Ekim 2013, 12:15:16
Algoritma geliştirmeyi kitapla öğrenerek bir yere kadar geliştirebilirsiniz.Bence algoritma geliştirmek zekayla orantılı oraya çözüm bulmak gerek
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 28 Ekim 2013, 12:21:19
musti,
büyükler bak nedemiş.
"Çalışmak Zekadan Daha Üstün bir Kıymettir"
"Yatan Arslandansa, Gezen Tilki makbuldür


Başlık: Ynt: Algoritma Nedir ?
Gönderen: mufitsozen - 28 Ekim 2013, 12:33:25
Alıntı yapılan: musti463 - 28 Ekim 2013, 12:15:16
Algoritma geliştirmeyi kitapla öğrenerek bir yere kadar geliştirebilirsiniz.Bence algoritma geliştirmek zekayla orantılı oraya çözüm bulmak gerek

sayin musti463, kac yasindasiniz ve egitiminiz nedir (tecrubeniz ne kadar?) yada IQnuz nedir(ne kadar zekisiniz?) bilemiyorumm bununla beraber benim tecrube, bilgim, egitimime gore her iki onermenizde dogru degil.

Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 28 Ekim 2013, 14:56:55
Hocam arkadasin tamamen haksiz oldugunu dusunmuyorum.

Kisilerin adlariyla anilan algoritmalar var. Anlamasi bile gucken boyle bir algoritmayi herkesin yazabilecegine inanmiyorum. 

Mesela mevcut olanlardan etkilenmeden yep yeni bir bolme algoritmasi yazabilirmisiniz?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 28 Ekim 2013, 15:41:15
dediğinizi yapabilmek için temel gerekli bu temel ancak "çalışmayla" olur. Zeka sadece pudra şekeridir.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 28 Ekim 2013, 15:54:08
O zaman, sadece calisarak icat yapilabiliyorsa cok unlu algoritma da gelistirebilirsin.

Bilgisayar algoritmasi gelistirebilmek icin zaten sayi teorisine hakim olmak gerekiyor. Matematik alt yapinin guclu olmasi gerekiyor. Fakat matematik profesorleri neden ha bire algoritma gelistiremiyorlar.

FFT  icin reverse cary addition yapmak nasil bir zekanin urunu acaba?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 28 Ekim 2013, 15:55:37
icat yapmak için önce ihtiyacın belirlenmesi ve orada bir boşluk olması gerekir.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 28 Ekim 2013, 16:01:56
Mesela hizli bolme islemi bilgisayar dunyasi icin hala bir ihtiyac.

Yeni bir algoritma yazabilmen icin var olan algolari zaten biliyor olman gerekiyor.

Ortada bosluk olmasina gerek yok. Herhangi bir algoritmadan daha hizlisini yapmayi dusunebilirsin mesela.

Başlık: Ynt: Algoritma Nedir ?
Gönderen: cicjoe - 28 Ekim 2013, 16:21:20
Alıntı yapılan: z - 28 Ekim 2013, 14:56:55
Kisilerin adlariyla anilan algoritmalar var. Anlamasi bile gucken boyle bir algoritmayi herkesin yazabilecegine inanmiyorum. 
+1
Alıntı yapılan: z - 28 Ekim 2013, 15:54:08
sayi teorisine hakim olmak gerekiyor. Matematik alt yapinin guclu olmasi gerekiyor.
+1

Hocam size katiliyorum.. Hali hazirda var olan bilgi birikiminin uzerine devam etmemiz gerektigini dusunuyorum.. Bizim bugun karsilastigimiz problemlerle, baskalari daha once karsilasmis ve guzel cozumler getirmisler.. Algoritmalari incelerken matematik onemli bir arac. Ornegin derste, karsilastirmaya dayali siralama algoritmalarinin (n.log n)'den daha kisa zamanda yapilamayacaginin ispatini matematiksel olarak yapmistik. Bu bilgi ile hala daha hizli bir algoritmayi ayni yontemle gelistirmeye calismaya gerek bence. Zaten bunu gorenler, karsilastirmadan yapalim o zaman diyerek O(n) zamanda siralama algoritmalar gelistirebilmisler. Newton'un hareket kanunlarini ogrenmeye gerek yok, kendimiz bir seyler uydurup cozeriz demek gibi geliyor bana. Yazilim bir bilim ve muhendislik dali olarak ele alinmali.

Algoritma yazilim ile ortaya cikmis bir kavram degil.. Matematigin var olusundan beri olan bir kavram. Euler'in zamaninda bilgisayar yoktu ama algoritmalarini suan yazilimlarimizda uyguluyoruz..

Bir de alinti yapayim:
"I like the way computer scientists think because they combine some of the best features of Mathematics, Engineering, and Natural Science. Like mathematicians, computer scientists use formal languages to denote ideas (specifically computations). Like engineers, they design things, assembling components into systems and evaluating tradeoffs among alternatives. Like scientists, they observe the behavior of complex systems, form hypotheses, and test predictions."
Alan Downey
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 28 Ekim 2013, 16:37:32
Mesela 32 bit ARM islemciler icin donanimsal bolme 1..12 clk da islem yapiyor ve eminim ki en iyi algoritmayi kullanmislardir.
Eee adamlar yapmis daha hizlisina ne gerek var denilebilir. Hatta matematiksek olarak 1..12 clkdan daha kisa surede bolme yapilamaz sonucuna da ulasilmis olabilir.

Bu sonuc bizi hic ama hic ilgilendirmiyor. Desem ki ARM islemcide 128 bitlik sayilari bolecegim bana hizli bir algoritma verin.

Bu durumda bolme algoritmalarini sular seller gibi bilmek yaninda ARM islemcinin ASM dilini de sular seller gibi bilmek gerekiyor. Olay sadece bir dili optimize etmek olayi degil.

Ayni algoritma farkli islemcilerde cok farkli performans sergileyebilir.


Başlık: Ynt: Algoritma Nedir ?
Gönderen: musti463 - 28 Ekim 2013, 17:48:57
çok zeki olduğumu iddia etmiyorum IQ da ortalama seviyede ukalalık yapmıyorum.Fakat herşeyde sadece çalışmak ile olmuyor! Bilgi birikimi tabiki olacak fakat bir sürü profumuz var nedense teknolojiyi geliştirenler değilde kopyalayanlarız.Ben şahsen ne kadar çalışsamda her sorunu çözemem.Bilgi önemli tabi ama bilgiyi anlamakta zeka ister,Siz her gördüğünüz bilgiyi anlayabiliyormusunuz?.Sizin teorinize göre gerizekalı bir insan da çok çalışarak profesör olabilir o zaman.

Benim görüşüm şu: Teorikte insan zekası, her problemi, ne kadar zor olursa çözer.Fakat muhtemelen o problemi çözebilecek kadar ömrü olmaz.Zeka seviyemize göre sorunları çözme hızımız doğru orantılıdır.Ne kadar zekiysek problemleri o derece hızlı çözeriz.Mesela Tesla icatlarına bakabiliriz! Kendisi 700 den fazla patent ile bu alandaki rekorun sahibi.Zeka seviyesi çok yukarılarda olduğu için bu kadar problemi çözebilmeyi yaşam süresi içerisine sığdırabilmiş.Benim zeka seviyem ile bu kadar çözümü hayatıma sığdırabilmem pek mümkün görünmüyor :) .
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 28 Ekim 2013, 18:06:51
musti,
Alıntı YapBilgi birikimi tabiki olacak fakat bir sürü profumuz var nedense teknolojiyi geliştirenler değilde kopyalayanlarız
ile
Alıntı YapSizin teorinize göre gerizekalı bir insan da çok çalışarak profesör olabilir o zaman.

soruyu sormuş ve cevaplamışsın.

Teknoloji, bilgi piramit gibidir. Matematik bilmezsen Fizik, dolayısıyla Astronomi yapamazsın.
Sayma Sayılarını Öğrenmeden Kesirli Sayıları Öğrenemediğin gibi.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: musti463 - 28 Ekim 2013, 18:20:21
Alıntı yapılan: muhittin_kaplan - 28 Ekim 2013, 18:06:51
musti,ile
soruyu sormuş ve cevaplamışsın.

Teknoloji, bilgi piramit gibidir. Matematik bilmezsen Fizik, dolayısıyla Astronomi yapamazsın.
Sayma Sayılarını Öğrenmeden Kesirli Sayıları Öğrenemediğin gibi.

Ben bizim profesörlerimizin gerizekalı olduğunu düşünmüyorum. Yurtdışındaki teknolojiyi okuyup anlayıp kopyalamak da zeka ister.Geliştirmek ise bambaşka bir zeka ister.Problemlere çözüm bulmak için %60 Zeka,%30 Çalışma,%10 Bilgi ister.Yüzdeleri değiştirebilirsiniz belki ama sadece birisinede bağlayamazsınız sonucu.Ben meşhur bir bilim adamı veya bir mucid olmadığımdan sözlerime itibar etmeyebilirsiniz.Size Einstein'ın şu sözünü hatırlatmak istiyorum "Hayal gücü bilgiden daha önemlidir"
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 28 Ekim 2013, 18:31:05
Musti Konumuz Bunlar Değil. Bence Konumuza Dönelim.

"Hayal gücü bilgiden daha önemlidir" demiş ama.
İnsan Bilmediği birşeyi hayal edemez.
bunuda yazın bir köşeye.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: musti463 - 29 Ekim 2013, 11:28:20
Ben bilginin önemsiz olduğunu söylemedim zaten ama sen bilginin zeka dan daha önemli olduğunu söylüyorsun.Zeki adam isterse her bilgiye ulaşabilir.Kafasını çalıştırarak!
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 29 Ekim 2013, 13:36:42
Musti tekrar söylüyorum Konuyu Dağıtmak İstemiyorum.
"çalıştırarak" demişsin. Bir adam istediği kadar zeki olsun. Yattıktan sonra ancak karpuz olur.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: mufitsozen - 29 Ekim 2013, 13:47:08
Alıntı yapılan: muhittin_kaplan - 29 Ekim 2013, 13:36:42
Musti tekrar söylüyorum Konuyu Dağıtmak İstemiyorum.
"çalıştırarak" demişsin. Bir adam istediği kadar zeki olsun. Yattıktan sonra ancak karpuz olur.

sayin muhittin hocam, cok fazla tekrar yapmaya ne gerek var, batililarin yaptigi gibi "Lets agree to disagree" der tartismayi bitiririz bence daha dogru olur.

sayin @musti463un dedigi gibi zeki olanlar hayal ederek, aklini calistirip algorithmalar icat eder, benim gibi cok akilli olmayanlar da calisarak, ogrenerek, uygulayarak.

Allah, herkesi esit yaratmamis, herhalde sayin@musit463'un bildigi bizim bilmedigimiz birsey vardir.

Belkide sayin @musit463 ben bundan sonra soru sormiyacagim, biraz hayal, biraz kafayi calistirip zaten herseyi yapiyorum demek istiyordur.

Başlık: Ynt: Algoritma Nedir ?
Gönderen: F.T - 29 Ekim 2013, 14:33:14
ortada birşey yoksa yoktur. :D
varsa herkes yorum yapar.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: atioky_216 - 29 Ekim 2013, 17:33:32
@musti
Hani aileler der ya 'bizim çocuk çok zeki ama çalışmıyor' :) Bunu nasıl anladıklarını hep merak etmişimdir. Bana göre zeka oyle test, bakış karar verilecek bir şey değil. Çözülen probleme göre düşünülmeli.
Kasabada buyudum, (oldukça yada yeterince) zeki oldugum söylendi. Ama birinin zeki olduğunu söylemesi tatmin edebilir belki bazılarını ama benim için bir şey değişmemişti dediklerinde.

Belki kara delik- solucan delikleri, ışınlanma gibi uç şeylerin çözümü 1000 seviyesinde IQ gerektiriyor ama 10-200 seviyesindeki bu konuda uğraşan insanlar mücadeleyi bıraksın mı? Ya da IQ' ya çok takıyor millet başka örnek ::)

İnsanlar arası dini, kültürel çatışma, hoşgörüsüzlük vs.. çoğaltılabilir, sorunların çözümü 1000'li seviyelerde EQ vb. türden zeka gerektiriyor diye mücadeleyi bırakalım mı?

İnsan karşı koyma cüreti gösterdiği olay kadar zekidir, sen elindeki 150lik derecenle istersen multi thread-proc. işi yap. Ona 100 yeter, demekki sen bir aptalsın ve zekanı "verimli" kullanamıyorsun demektir.

Velhasılı olay mücadele sırasında nerede pes ettiğin ile alakalı bana göre.. (Bazen sınırları zoruyorum , başım ağrıyor. Ama vazgeçmiyorum zeki değilim diye:)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: cicjoe - 29 Ekim 2013, 17:42:27
Aklima Forrest Gump geldi =) 75 IQ ile baya bir sey basariyordu.. =)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: musti463 - 29 Ekim 2013, 23:02:48
@atioky_216

Tekrar söylüyorum zeka fışkıran birisi değilim öyle algılandı galiba :) .Benim demek istediğim zeka seviyesi yüksek insanlar çözümlere daha hızlı ve kolay ulaşırlar.Benim gibi orta zekalı olanlar ise yavaş ve zorlanarak çözüme ulaşırlar.Eğer ben,yaşam sürem boyunca, zeka seviyemin, çözüme ulaşmaya yetmeyeceği bir problemle uğraşıp, çözümü anca bir yere kadar getirip sonra hakkın rahmetine kavuşursam ve benden sonrakilerde kaldığım yerden devam ediyorlarsa buna da bilim denir zaten.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 17 Kasım 2013, 17:21:08
Bir cok dilde kullanilan
Struct nedir union nedir? Aralarindaki fark, kullanim yerleri nedir ?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 17 Kasım 2013, 17:42:56
☢ Saka gibisin.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 18 Kasım 2013, 14:17:32
 :D
Evet Hocam Nedir Açıklarmısınız ?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 18 Kasım 2013, 17:31:14
Kendimce tanımlayayım;

Birden fazla değişkeni tek çatı altında toplayan yapıya structure denir.

Union ise, bir değişkeni daha alt boyuttaki değişkenlere parçalamaya yarayan yapıya denir.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: picusta - 18 Kasım 2013, 18:00:33
Alıntı yapılan: z - 17 Kasım 2013, 17:42:56
☢ Saka gibisin.
Felsefi sorular soran baslik açmak kimsenin tekelinde degildir.
Konu iyice sarpa sarmis.

Zannettim ki MIT'deki "Algoritma" veya "Intro to computer science" da islenen konular anlatilacak.
DFS, BFS , A*, heuristic, CSP, Kmin,  Bayes network vs..

Edx, de Berkeley Yapay zeka dersini tavsiye ederim.

Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 18 Kasım 2013, 18:36:51
Alıntı yapılan: z - 18 Kasım 2013, 17:31:14
Kendimce tanımlayayım;

Birden fazla değişkeni tek çatı altında toplayan yapıya structure denir.

Union ise, bir değişkeni daha alt boyuttaki değişkenlere parçalamaya yarayan yapıya denir.

Hocam Örnek Verirmisin ?

mesaj birleştirme:: 18 Kasım 2013, 18:46:02

union paylas{
                float f;
                int   i;
                char  kr;
          };


ile

  struct paylas{
     float f;
             int i;
             char kr;
          };


nin farkı nedir?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 18 Kasım 2013, 19:55:39
Struct tanımında Paylaş adındaki değişken topluluğunun 3 tane üyesi var. Üyelerin her birisi kendi başına bir değişken. Ama paylaş adındaki gruba üyeler.

Union tanımında ise Paylaş adındaki değişken öyle bir değişken ki sen bu değişkene istersen float bir değer, istersen integer bir değer istersen char bir değer yükleyebilirsin.
3 üyesi varmış gibi görünüyor ama aslında bunlar aynı değişkenin farklı isimlendirilmesinden oluşuyor.

https://www.picproje.org/index.php/topic,35908.msg257079.html#msg257079 (https://www.picproje.org/index.php/topic,35908.msg257079.html#msg257079)  Buradaki renkli anlatıma bir bak.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 18 Kasım 2013, 20:55:00
Bu arkadaşların Hafızadaki Durumu Nasıl Olur ?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: AsHeS - 18 Kasım 2013, 21:18:37

union paylas{
                float f;
                int   i;
                char  kr;
          };


Bu arkadaş hafızada 4 byte tutar en büyük elemanı int veya floattır.
(Keil C Arm Compiler:http://www.keil.com/support/man/docs/armccref/armccref_Babfcgfc.htm)
  struct paylas{
     float f;
             int i;
             char kr;
          };

Bu ise eğer packed edilmişse 4+4+1=9 byte tutmaktadır.
Arm adresleri 32-bit veri tutuyor diye biliyorum eğer öyleyse packed edilmemişse 4+4+4=12 byte olacaktır. Not:Burayı şimdilik çok kafanıza takmayın.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 18 Kasım 2013, 22:01:17
ARM işlemcide değişkenler boyutlarına göre ramda özel adreslere yerleştirilirler.

Char değişkenler için herhangi bir sınırlama yok.
Short değişkenler daima çift adreslere yerleşirler.
Integer değişkenler ise daima 0 dahil 4 ün katları adreslere yerleştirilirler.

C buna dikkat eder.

Değişkenler bu sıralamaya uymadan rama yerleştirilirse rama erişim performansı çok düşer hatta bazı cpu komutları fault ile sonuçlanır.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: AsHeS - 18 Kasım 2013, 22:36:03
Alıntı yapılan: z - 18 Kasım 2013, 22:01:17
ARM işlemcide değişkenler boyutlarına göre ramda özel adreslere yerleştirilirler.

Char değişkenler için herhangi bir sınırlama yok.
Short değişkenler daima çift adreslere yerleşirler.
Integer değişkenler ise daima 0 dahil 4 ün katları adreslere yerleştirilirler.

C buna dikkat eder.

Değişkenler bu sıralamaya uymadan rama yerleştirilirse rama erişim performansı çok düşer hatta bazı cpu komutları fault ile sonuçlanır.
O zaman struct packed etmek tehlikeli midir hocam ARM'da ?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 18 Kasım 2013, 22:44:51
Tehlikeli degil. C structure uyelerini bahsettigim kurala gore yerlestiriyor.

Bu durumda ornegin char short int siralamasi varsa

char, bos char, short, int seklinde dizilis yapiyor. Yani kurali bozan adreslere kullanilmayan char karakterler yerlestiriyor. Bu durumda structure boyu tek tek degiskenlerin uzunluklari toplamindan daha fazla yer kapliyor.

Dolayisi ile herhangi bir tehlike yok.

Bu siralamayi progma direktifi ile degistirebiliyorduk ama neydi hatirlamiyorum.

Başlık: Ynt: Algoritma Nedir ?
Gönderen: AsHeS - 18 Kasım 2013, 23:20:24
Alıntı yapılan: z - 18 Kasım 2013, 22:44:51
Tehlikeli değil. C structure uyelerini bahsettigim kurala gore yerlestiriyor.

Bu durumda ornegin char short int siralamasi varsa

char, bos char, short, int seklinde dizilis yapiyor. Yani kurali bozan adreslere kullanilmayan char karakterler yerlestiriyor. Bu durumda structure boyu tek tek degiskenlerin uzunluklari toplamindan daha fazla yer kapliyor.

Dolayisi ile herhangi bir tehlike yok.

Bu siralamayi progma direktifi ile degistirebiliyorduk ama neydi hatirlamiyorum.
#pragma pack(1)  değil anladığım kadarıyla. :)
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 18 Kasım 2013, 23:57:58
Oyle bir sey yok derken?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: AsHeS - 18 Kasım 2013, 23:59:00
Alıntı yapılan: gerbay - 18 Kasım 2013, 23:54:39
@z


Oyle birsey yok. Packed struct yapip istediginiz sirada dizip gorun..

Align etmek tüm platformlarda performans artirir. 32-bit platforma 4-byte align etmek daha uygundur, 16-bit platformda 2-byte a..
gerbay hocam sonuç olarak #pragma pack(1) structı birbirine yapıştırıyor mu ?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 19 Kasım 2013, 00:27:14
AsHes

Sanirim Gerbayin itiraz sebebini anladim.

Benim yaptigim aciklama kuru structure kurulumu yapilirsa olan duruma aitti. Aciklamamin sonunda "Bu siralamayi progma direktifi ile degistirebiliyorduk ama neydi hatirlamiyorum" dedigim kisim (aradaki fazlalik ve kullanilmayan alanlari kaldirirsaniz) bahsettiginiz paketleme durumu olusuyor.

Fakat bu durumda bu tip "structure"lara erisirken dedigim performans sorunu ortaya cikiyor. Daha da kotusu bu tip align edilmemis alanlara bazi makine kodlari ile erisemiyorsunuz.
Bu C acisindan sorun degil cunku C zaten bu durumlarda o tip komutlari kullanmaz.

Fakat  bazi ozel cpu komutlariyla bu alanlara asm ile erismek isterseniz o zaman makine fault durumuna dusecektir.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: AsHeS - 19 Kasım 2013, 00:29:56
Ne işte ne de hobi olarak ASM kullanmadığıma sevindim o zaman :).
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 19 Kasım 2013, 00:40:11
Programi C ile de yazsan ASM ile de yazsan sonucta CPU nun VDD sine - , VSS'sine + voltaj verirsek CPU bozulur. :)

"ASM"de hersey klavyeyi parmaklayanin sorumlulugunda.



Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 22 Aralık 2013, 17:34:33
Kaç kişi bir fonksiyonları yazarken Fchart kullanıyor ?
bu akış diyagramlarının kaç çeşidini biliyoruz ?
android için geliştirilmiş app inventör bir çeşit akış diyagramı yöntemini mi kullanıyor ?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: z - 22 Aralık 2013, 17:48:14
Tasarim asamasinda yazilmak istenen fonksyon karmasiksa, pek cok durum arasinda gecis yapilacaksa akis diyagrami cizmeden zaten kod yazamazsin.

Fakat gecis durumlari aklinda tutabilecegin kadar az sayida ise akis diyagrami zaten kafanda olusmus demektir.

Aslini sorarsan program yazarken beynimizdeki pencerelerden birisinde akis diyagramini olusturuyoruz. Bir diger pencerede ise bu akis diyagramina uygun dil kodlamasini yapiyoruz. Fakat proje karmasiksa beynimizdeki akis diyagram penceresinde stack overflow vs oldugu icin mecburen kagit kaleme donuyoruz.

Bilgisayar programlari kullanarak bu gune kadar hic akis diyagrami cizmedim. Dokumantasyon icin gerektiginde ise "paint"de resim cizer gibi akis diyagramlari olusturdum.

Eger bu is icin PC programi kullanirsam bana ne gibi kolayliklar saglar?
Başlık: Ynt: Algoritma Nedir ?
Gönderen: mistek - 22 Aralık 2013, 18:20:12
Normalde @z hocanın dediği gibi kafada kalıyorsa kağıt kaleme pek ihtiyaç olmuyor. Bana göre çok karmaşık gelen bir projede akış diyagramı kullandım kodlarken inanılmaz kolaylık sağladı. Bu iş için microsoft Visio kullanıyorum çok kullanışlı bir program.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: muhittin_kaplan - 22 Aralık 2013, 18:23:30
ben visio yu veritabanı tasarımı yaparken kullanıyordum. tablolar arası ilişki, wievler vb arasındaki sorgulamalar falan filan sorasında büyük kolaylık sağlıyor.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Tagli - 22 Aralık 2013, 23:06:22
Ben genelde bir program yazmadan önce kağıt üzerinde epey bir karalama yapıyorum, akış ve nesne şemaları çiziyorum. Hatta bazen kodları bile kağıda yazdığım oluyor, kafamda olay netleşince bilgisayara geçiriyorum.
Başlık: Ynt: Algoritma Nedir ?
Gönderen: Mucit23 - 22 Aralık 2013, 23:42:16
Bende genelde karışık bir işlem için algooritma yürütmem gerekirken yapılacak işlemi exel de tabloya dökerim. Sonra tablo üzerine çalışmak, mantık yürütmek ve yapılacak işlem içerisinde matematiksel bağlantılar kurmak daha kolay oluyor.