Tüm Algoritma Türleri
-
Ondan önce bi yapısal ingilizce anlatılmalı algoritmalar için
i=0
while i to 10
print "bilmem ne " gibi
Mesela bubble sort :
procedure bubbleSort( A : list of sortable items )
n = length(A)
repeat
swapped = false
for i = 1 to n-1 inclusive do
if A[i-1] > A[i] then
swap(A[i-1], A[i])
swapped = true
end if
end for
n = n - 1
until not swapped
end procedure
-
x3uqm4 bunu yazdı:
-----------------------------konudan bişey anlasaydık yazardıkta.. ne istediğini anlayabilmiş değilim. örnek bişey koy bi tane.
-----------------------------Ya mesela sıralama algoritmaları dediğimiz şey sıralama yapmak için geliştirilmiş teorilerdir.
misal
http://en.wikipedia.org/wiki/Bubble_sort
Bu kabarcık sıralama. Bi başka sıralama algoritmasında farklı bi yoldan sıralama yapılır,herbirinin avantajları ve dezavantajları vardır.
Bunun gibi temel işlemlerde(arama,sıralama bunlar kullanılan şeyler) amerikayı yeniden keşfetmeye çalışmak yerine bu hazır algoritma bilgileri kullanılır. Olay kod değil algoritma olduğu için her dilde kodlamasınıda rahatça yaparsın :)
-
SinusX bunu yazdı:
-----------------------------Ondan önce bi yapısal ingilizce anlatılmalı algoritmalar için
i=0
while i to 10
print "bilmem ne " gibi
Mesela bubble sort :
procedure bubbleSort( A : list of sortable items )
n = length(A)
repeat
swapped = false
for i = 1 to n-1 inclusive do
if A[i-1] > A[i] then
swap(A[i-1], A[i])
swapped = true
end if
end for
n = n - 1
until not swapped
end procedure
-----------------------------Üstad, yapısal ingilizce felan bilmiyoruz. Biz ingilizce de bilmiyoruz zaten. Sen bizim anlayabileceğimiz şekilde anlatabilirsen çok iyi olur. Ya da yapısal ingilizce dediğin şeyi bir açıklayabilir misin?
-
tutkun bunu yazdı:
-----------------------------Üstad, yapısal ingilizce felan bilmiyoruz. Biz ingilizce de bilmiyoruz zaten. Sen bizim anlayabileceğimiz şekilde anlatabilirsen çok iyi olur. Ya da yapısal ingilizce dediğin şeyi bir açıklayabilir misin?
-----------------------------algoritamalar açıklanırken kullanılıyor bu yapısal ingilizce
işin aslı herhangi bi programlama dilini kullanmamak için uydurulan bişey genelleme gibi az çok basic diline benziyor
mesela wikipediada bi algoritma arattığında (ben binary search arattırdım)
http://en.wikipedia.org/wiki/Binary_search_algorithm
min := 1; max := N; {array size: var A : array [1..N] of integer} repeat mid := (min+max) div 2; if x > A[mid] then min := mid + 1; else max := mid - 1; until (A[mid] = x) or (min > max);
Şöyle bişey görürsün algoritmayı anlaman içinde az çok bu kelimeleri kullanman gerekiyor
şurdada açıklaması var
http://en.wikipedia.org/wiki/Structured_english
ama özeti yaklaşık olarak o adım adım burda bunu yap şurda şunu yap yerine bu kullanılıyor
-
algoritma mantık yolu değil mi ya ? bu burdan şu şurdan yani ihtiyaçtır algoritma, paylaşımı nasıl olsun ki anlamadım lan saf yapıyorum =)
-
Yapısal ingilizceden kasıt birinin pseudo code anlatması lazım diyor.İşin ucunda biri C ile kod yapıştırsa başkası Pascal olmaz.
-
sandman bunu yazdı:
-----------------------------Yapısal ingilizceden kasıt birinin pseudo code anlatması lazım diyor.İşin ucunda biri C ile kod yapıştırsa başkası Pascal olmaz.
-----------------------------Evet gidipte birisi şimdi burda pascaldan bi algoritma verirse C ile yazıcak olan adam anlayamaz belki
Onun yerine şöyle yapsak yapısal türkçe yazalım algoritmaları :))
mesela en basitinden ifade 1 se toplama 2 ise çıkarma yaptırsak
Eğer x = 1 ise
sonuc = sonuc + 1
Eğer Son
Eğer x = 2 ise
sonuc = sonuc - 1
Eğer Son
gibi bakarsın tutarda yerli yazılımcılar bunu kullanır artık :)
-
Bir sürü notum var ama o kadar el yazmasını kim yazacak buraya en fazla taratır koyarım
-
Madem anlamayacaksınız gereksiz yazmayın. Bence mükemmel bir konu,
bir örnek vermek gerekirse, Oyun yazmayı her programcı istemiştir. 2 Boyutlu Mario tarzı oyunlarda karakterin hareket etmesi için sprite denilen
resimlerden faydalanılır. Bir karakteri yürütmek Delphide çok rahat kod yazabilir burda paylaşabilirim. Ama bunu sadece delphiden anlayanlar anlayacaktır.
Fakat onun yerine;
aşağıdaki çizimi kağıt olarak düşünün,
|----|----|----|----|----|----|
| A | B | C | D | E | F |
|----|----|----|----|----|----|
Her harfi hareketin bir kısmı olarak düşünün
ÖRN : http://www.aniway.com/examples/character/Sprites.gif
resmin Genişliği 60 x Yüksekliği 10 olsun yani 60x10 her hareket için 10x10 luk bir resim birimi göstermek yeterli
o zaman hareketi yapacak koda;
----
hareket kodu başlasın
ilk 10*10'luk birimi göster,
20*10'luk birimi göster
30*10'luk birimi göster
..
..
Son olarak Hareket biteceği için
10x10luk birimi göster
----
Bunu koda dökebiliriz. ama bu şekilde her programcı kodlayabilecektir.
Lütfen konunun değerini anlayınız.
-
Merhaba müridler, konu çok güzel.
Geçen gün kodladığım asal sayı algoritmamın C++ kodunu paylaşıyorum:
Öncelikle kodun amacını açıklayayım, verdiğiniz üst limite kadar olan tüm asal sayıları bulur.
Örneğin ben bu kodu 2000000'a kadar olan bütün asal sayıları bulmak için yazdım.
Kod gerçekten çok hızlı çalışmakta, standart ve herkesin yazdığı, bir sayının asal sayı olup olmadığını tespit etmek için o sayının kendinden küçük (1 hariç) sayılara bölünebilirliğini kontrol etmiyor. Bölünebilirlik kontrol edildiği takdirde işlem süresi 5-6 dk civarlarına çıkıyor.
Benim yazdığım kodda ise sadece 1 saniye sürüyor.
Herhangi bir programlama dilini orta seviyede bilen bir kişi kodu zaten anlayacaktır ama ben yine de herkes için izah edeyim:
Öncelikle Eratosthenes Kalburu (Sieve of Eratosthenes) kavramını bilmek gerekiyor, bu kavramda asal sayıları bulmak için sırayla sayıları yazıyoruz. Ardından sırayla seçip, seçilen sayının katlarını listeden çıkartıyoruz.
Kodda yaptığım işlem aynen bu. Ek olarak yazdığım prog. gereği 2'den üst limite (2 milyon) kadar olan sayıları önce bir vector'e atıyorum. Daha sonra bu sayılara kalbur işlemini uyguluyorum ve elimde kalan sayıları topluyorum. Böylece 2 milyon'a kadar olan asal sayıların toplamını elde etmiş oluyorum.
vIntegers : 2'den 2 milyon'a kadar tüm tamsayıların bulunduğu vector.
Anlaşılmayan bir kısım varsa yine anlatabilirim.
Kolay gelsin..
void executeSieve() { for (int i = 0; i < (int)(sqrt((double)vIntegers.size()) + 1); i++) //maksimum limit'in karekökünden daha ileri sayıları denemeye gerek yok { if (vIntegers[i]) { for (int j = i + vIntegers[i]; j < vIntegers.size(); j += vIntegers[i]) { vIntegers[j] = 0; } } } }