Arkadaşlar seneye algoritma dersi görecem.Ben meslek çıkışlı olmadığım için ve hocanın sıfırdan ders anlatmadığı için çok zorlanacağımı biliyorum.Algoritmada c# da zorlanmamam için özellikler algoritma ön hazırlık olarak nereden başlamalıyım yada nelere çalışmalıyım.
Algoritma Öğrenmek?
Cevaplar
Algoritmanın kodlama ile alakası yoktur. Yani demek istediğim programın basit cümlelerle adım adım yönergesinin çıkarılmasıdır. Eğer günlük hayatında yapacağın herhangi bir işin her adımını tek tek yazabilmeyi başarabiliyorsan algoritma da çıkarabilirsin elbette. Ha bunun için programlama bilgisi gerekir mi? Evet gerekir, çünkü elinde neyin olduğunu bilmelisin ki elindekiler ile ne yapabileceğini bilesin...
Şimdi ben ne yapmalıyım,nereden başlamalıyım ? Sıfırdan başlayacam resmen.Bölümümde çoğu meslek liseli.Yönergeler ile ilgili bir örnek verebilir misiniz?
Bunu bir robot tasarlamak gibi düşünebilirsin aslında. Mesela ne dersin robota "10 adım ilerle, eğil, yerdeli kutuyu kavra, havaya kaldır, 180 derece dön, 10 adım ilerle, masaya bırak" gibi...
Programın algoritması da aynen bu şekilde çıkarılır. Sözlü algoritmalar ve şekilli algoritmalar (flowchart) vardır. Flowchartlarda belirli şekiller belirli şeyleri temsil eder. Yapılacak adımları şekiller ve kelimeler yardımı ile anlatırsın.
Programın algoritması da aynen bu şekilde çıkarılır. Sözlü algoritmalar ve şekilli algoritmalar (flowchart) vardır. Flowchartlarda belirli şekiller belirli şeyleri temsil eder. Yapılacak adımları şekiller ve kelimeler yardımı ile anlatırsın.
Yani adım adım herşey ayrıntısıyla olacak.Peki benim yararlanabileceğim yada izleyebileceğim dökümünlar ne olmalı ?
Daha önceki çıkartılmış algoritmaları inceleyebilirsin. Zaten kolay bir şey :)
Çağrı'nında dediği gibi programlama dillerinden bağımsızdır. Programın nasıl davranacağını belirlemek için kod yazma öncesi yapılan bir etkinliktir. Akış diyagramları (flowchart) veya günlük dil ile yazılabilirler. Örnek üzerinden açıklarsam daha iyi olur gibi.
Mesela bizden girilen bir sayının tek mi yoksa çift mi olduğunu program vasıtasıyla belirlememiz isteniyor.
--------------------------------------
İlk adım : input-outputları belirlemek
input(lar): girilen sayı
output(lar): bilgi mesajı
ikinci kısım: programın mantığını belirlemek
/* bir sayının tek mi yoksa çift mi olduğunu nasıl anlarız? En basitinden mod unu alarak yaparız eğer sayı%2=0 sa bu sayı çift demektir. işte algoritmaya dökmemiz gereken kısım bu*/
sayıyı oku
eğer (sayı%2==0)
yazdır "girilen sayı çift sayıdır"
değilse
yazdır "girilen sayı tek sayıdır"
------------------------------------------------------
algoritma kısmı bu kadardı. Şimdi bunu kodlayalım mesela c dilinde:
#include <stdio.h>
int main()
{
int sayi;
scanf("%d", &sayi); // algoritmada yazdığımız sayıyı okuma işlemi
if(sayi%2==0)
printf("girilen sayi çift sayıdır");
else
printf("girilen sayi tek sayıdır");
return 0;
}
---------------------------------------
Tüm işlem bu kadar acele ile yazdığım için hatalar olabilir veya daha güzel bir algoritma yazılabilirdi. Fikrin olsun diye hemen basit bişey hazırladım.Çok zor birşey değil sadece işin mantığını çözmeye çalışacaksın. Ben bu işi nasıl yaparım diye sorucaksın. Cevap alırsan bu soruya iş bitmiştir.
Mesela bizden girilen bir sayının tek mi yoksa çift mi olduğunu program vasıtasıyla belirlememiz isteniyor.
--------------------------------------
İlk adım : input-outputları belirlemek
input(lar): girilen sayı
output(lar): bilgi mesajı
ikinci kısım: programın mantığını belirlemek
/* bir sayının tek mi yoksa çift mi olduğunu nasıl anlarız? En basitinden mod unu alarak yaparız eğer sayı%2=0 sa bu sayı çift demektir. işte algoritmaya dökmemiz gereken kısım bu*/
sayıyı oku
eğer (sayı%2==0)
yazdır "girilen sayı çift sayıdır"
değilse
yazdır "girilen sayı tek sayıdır"
------------------------------------------------------
algoritma kısmı bu kadardı. Şimdi bunu kodlayalım mesela c dilinde:
#include <stdio.h>
int main()
{
int sayi;
scanf("%d", &sayi); // algoritmada yazdığımız sayıyı okuma işlemi
if(sayi%2==0)
printf("girilen sayi çift sayıdır");
else
printf("girilen sayi tek sayıdır");
return 0;
}
---------------------------------------
Tüm işlem bu kadar acele ile yazdığım için hatalar olabilir veya daha güzel bir algoritma yazılabilirdi. Fikrin olsun diye hemen basit bişey hazırladım.Çok zor birşey değil sadece işin mantığını çözmeye çalışacaksın. Ben bu işi nasıl yaparım diye sorucaksın. Cevap alırsan bu soruya iş bitmiştir.
kalfaoglu.com'daki c derslerine çalışırsan senin için güzel bir ön hazırlık olmuş olur. :)
temeli almadığım için anlamakta zorlanıyorum şimdi.Yazın ders almaktan başka çarem yok.
Algoritmanın temeli düşünmektir. Karşına bir soru çıktığında bu sorunu nasıl çözebilirim sorusunu sormaktır. Bunun için ders almana gerek yok. Sonra bulduğun cevabı istersen komposizyon yazar gibi yaz sorun değil. Sorun bir problemin nasıl çözüleceği hakkında düşünmek. Mesela algoritma dersi vere hocamız bize şöyle bir soru sormuştu: "elinizde rengi, şekli, ebatı yani görünüş olarak hepsi birbirinin aynı 12 tane top var. Fakat bunlardan bir tanesinin ağırlığı diğerlerinden fazla. Bu topları 3 kere tartma hakkınız var. Ve bu 3 tartımdan sonra ağır topu bulmalısınız. Nasıl bulursunuz?" demişti. İşte algoritma burda başlıyo "Nasıl?". Bu ve bunun gibi mantık sorularına bakarsan algoritmayı kavrarsın. oturup öğrenilecek birşey değil tamamen düşünmekle alakalı.
vasıf vagifoğlu ( nabiyev)'in yapay zeka ve de algoritmalar adlı kitapları vardır. algortmalar kitabını edinip okuyabilirsin.
kendisi hocam'dı üniversitedeyken.
kendisi hocam'dı üniversitedeyken.
Arkadaşlar matematik bilgimin nekadar olması lazım bu algoritmada ?
Değerli kardeşim...
Problem ettiğin konu öğretim sürecin içerisinde en az problem yaşayacağın konulardan birisidir. Ben bu güne kadar konuyu gördükten sonra algoritma konusunda sıkıntı yaşıyorum diyen bir kimseyle karşılaşmadım. Senin de sorun yaşayacağını zannetmiyorum. :rolleyes:
Problem ettiğin konu öğretim sürecin içerisinde en az problem yaşayacağın konulardan birisidir. Ben bu güne kadar konuyu gördükten sonra algoritma konusunda sıkıntı yaşıyorum diyen bir kimseyle karşılaşmadım. Senin de sorun yaşayacağını zannetmiyorum. :rolleyes:
Hocam bende lisede teknik bilgisayar bölümü okuyorum algoritma tarzında dersi lise2 de görmüştük Algoritmasını kurabiliyodum fakat programlamasını yapamıyodum acemilikten dolayı :) Önemli olan algoritmada o mantığı kurmak.Eğer algoritmanla programlama bilgini birleştirirsen bu iş tamam demektir :) Ama algoritmada zorlanmassın emin ol.
Algortimada zorlanmazsın.Eğer algoritmada zorlanırsan bil ki yanlış yerdesindir...cheleby dedi: ↑Arkadaşlar seneye algoritma dersi görecem.Ben meslek çıkışlı olmadığım için ve hocanın sıfırdan ders anlatmadığı için çok zorlanacağımı biliyorum.Algoritmada c# da zorlanmamam için özellikler algoritma ön hazırlık olarak nereden başlamalıyım yada nelere çalışmalıyım.
Benim tek korkum hocanın sıfırdan anlatmaması.Sıfırdan dediğim mantığını felan.Direk işleme geçerse ben nasıl anlayayım :)
Bence hiç bu kadar sıkıntı yapma :)cheleby dedi: ↑Benim tek korkum hocanın sıfırdan anlatmaması.Sıfırdan dediğim mantığını felan.Direk işleme geçerse ben nasıl anlayayım :)
Algoritmanın sıfırı mıfırı yok.Algoritme algoritmadır.Büyütülecek birşey değil.Altı üstü mantık.cheleby dedi: ↑Benim tek korkum hocanın sıfırdan anlatmaması.Sıfırdan dediğim mantığını felan.Direk işleme geçerse ben nasıl anlayayım :)
Algoritmada çok büyütülecek bişey yok. Üniversitede hoca bize 2-3 hafta bişey anlattı o kadar :D Hemen arkasından java programlamaya geçtik.
sana tavsiyem algoritma ornekleri coz , ornek cozerek mantigini kavrarsin