"Enter"a basıp içeriğe geçin

Algoritma Mantığını Kavramak İçin Zorlayıcı 20 Algoritma Sorusu (Python ve Flowgorithm)(Çözümleri Yakında Udemy Kursumda)

Yazılım, bilgisayara derdimizi bilgisayar dilini kullanarak yazdığımız anlamsız imgelerdir ve bu imgeler gündelik hayattakinden daha karmaşık ve rasyoneldir.

Programlamaya başlayacağınız zaman tıpkı benim gibi birçok sorunda ve progremde internete başvuracaksınız. İlerlemek istediğiniz alandan çok çok yazılar okuyacaksınız. Bunun başlıca sebebi kullandığınız sistemin detaylarına hâkim olmayışınızdır. İlerlemek  istediğiniz alan veya programlama dilinin detaylarına hâkim oldukça, problemleri daha iyi çözmeye başlayacaksınız. Hatta birçok çözüm tekniğinizde verimli bir yazılım geliştirmenize olanak sağlayacak.

Detayları öğreniyoruz demiştik. İşte bu detayları öğrenmemiz aynı bir yabancı dilde neyi nasıl söylemen gerektiğini bilmek gibi bir olay aslında. Türkçe ile İngilizceyi ele aldığımız zaman, göreceğiz ki söz dizimi, dil bilgisi ve anlam bilgisi birbirinden oldukça farklı. Bizler de bilgisayarın dillerini öğrenmek istediğimiz zaman işte bu zorlukla karşı karşıya kalıyoruz. Türkçedeki gibi daha duygusal ve edebi bir dilin yerine, İngilizce gibi rasyonel bir dili anlamaya çalışıyoruz. Belki de İngilizceyi bu yüzden hemen öğrenemiyoruz :).

Bilgisayar dilinden anlamak zordur ve bunun zor olmasının sebebi ise bilgisayara rasyonel bir şekilde konuşmamız gerektiğindendir. Bizler birbirimize ‘nasıl gidiyor?’ diye soruduğumuzda halimizi hatırımızı sorduğumuzu anlarız fakat bilgisayarlar buna, ‘ne nasıl gidiyor?’, ‘nereye gidiyor?’ şeklinde dönütler verebilir. Bu dönütler de yine, bizlerin anlayacağı şekilde olmayabiliyor. Bunun başlıca sebeplerinden birisi ise bilgisayarın 1 ve 0 ile çalışması. Bu da bizim için ya var ya da yok demek. Bilgisayar için ise gri dediğimiz ‘olabilir’ durumu yok demek. Bunu bir istatistik durumu ile ele alalım. Mesela bir ders için öğretmen 50 puan başarı barajı koymuş ve öğrencilerin birisi de 60 almıştır. İşte bilgisayar bu öğrenciyi %60 başarılı kabul etmek yerine direkt olarak başarılıdır şeklinde tanımlar. Tabi bilgisayara önceden, başarı istatistiklerini öğretmişsek, bize diğer detayları da verir. Fakat biz bilgisayara 50 üstü başarılıdır dedik. Bu yüzden 60, 70, 82 puan alan her öğrenci bilgisayar için başarılıdır. Yine, 49, 33, 35 alan öğrenciler ise bilgisayar için başarısızdır. Çünkü bilgisayar bu hesaplamayı ‘büyüktür’ veya ‘küçüktür’ operatörü ile yapar. Yine bu operatörler ise mantıksal ve rasyoneldir.

Gel gelelim programlama mantığına. Aşağıda vereceğim örnekler ile bilgisayara neyi söylemeniz gerektiği, neyi öğrenmesi gerektiği ve neyi hesaplayıp size göstermesi gerektiğini göstermeye çalışacağım. Programlama mantığını kavramanız için bu örnekleri çözmeniz size çok çok verimli gelecektir. Ha keza bu yazıdan başka bir sürü başka yazıda algoritma soruları bulabilirsiniz.

1- ax²+bx+c=0 denklemindeki köklerin sonucu ekrana veren akış diyagramını tasarlayınız.
2- X kadar fiyata alındığı söylenen ürüne KDV ve %12 kar oranı ekleyen ve sonucunu yazdıran programının akış diyagramını tasarlayınız.
3- V=I*R formülü içindeki herhangi iki değer girildiğinde, bilinmeyen diğer değeri bulan ve ekrana yazdıran programın akış diyagramını tasarlayınız.
4- Girdi olarak verilmiş olan, bir sayının pozitif veya negatif olduğunu mutlak değer komutunu kullanarak bulan fonksiyon oluşturun, çıktı komutu ile ekrana yazdıran programın akış diyagramını tasarlayınız.
5- Kullanıcının girdiği sayının tam bölenlerinin çıktısını veren programın akış diyagramını tasarlayın.
6- Bir iş veren muhasebe ekibine işçilerin durumlarına göre çeşitli zamlar yapmak istediğini söylemiştir, şartlar; işçi bekar ise %3, evli ise %5, bir çocuğu var ise ek %4, 2 veya 3 çocuğu var ise bir çocuğa ek olarak %6, daha fazla çocuk varsa eğer ek olarak %8 zam yapacaktır. Bu değerlerin girdisini alan ve zam durumunu hesaplayan programın akış diyagramını hesaplayınız.
7- Bilgisayara 10 sayı girdisi vermek koşulu ile for döngüsünü kullanarak bu sayıların toplamını çıktı veren programın akış diyagramını tasarlayınız.
8- Bir 5 haneli sayının yüzler basamağı ile bir 7 haneli sayının on binler basamağındaki rakamları toplayan programın akış diyagramını çıkartınız.
9- Bilgisayara 3 kenar uzunluğu girilmesi koşulu ile; bir üçgen çizilip çizilemeyeceğini, hangi üçgen çeşidi olabileceği (ikizkenar, çeşitkenar veya eşkenar) ve çevresini bulan programın akış diyagramını çıkartınız.
10- Bilgisayara kaç sayı girileceği bilgisi verilmesi koşuluyla, girilen sayıların en büyüğünü ve en küçüğünü ekrana yazdıran programın akış diyagramını tasarlayınız.
11- Çarpma işlemi kullanmadan bilgisayara girdi verilen sayının 5 katını çıktı olarak veren programın akış diyagramını tasarlayınız.
12- Bilgisayara girdi verilen sayının faktöriyelini hesaplayan ve çıktısını veren programın akış diyagramını tasarlayınız.
13- (ZOR) kullanıcının girdiği sayının basamaktaki sayı değerleri girdiği sayı basamağı değerine eşit olup olmadığını kontrol eden programın akış diyagramını tasarlayınız.
14- (ZOR) Babil yönetimini kullanarak, girilen sayının karekökünü hesaplayan programın akış diyagramını tasarlayınız.
15- (Mini oyun) Bilgisayarın rastgele oluşturduğu ve değişmeyen (program tekrar açılana kadar değişmeyen) sayıyı bulması için, ekrana 'rastgele sayıdan BÜYÜKTÜR' veya 'rastgele sayıdan KÜÇÜKTÜR' şeklinde çıktı veren programın akış diyagramını tasarlayınız.
16- Bilgisayara girilen 10 sayı girdisi içerisinden hangi sayıların negatif olduğunu ve kaç sayı olduğu ekrana yazdıran programın akış diyagramını tasarlayınız.
17- (ZOR)Kullanıcıdan alınan bir metnin tersten yazılışını ekrana yazdıran programın Kodunu yazınız. (Python).
18- (ZOR) ASCII tablosunu kullanarak bir şifre geliştirici tasarlayınız. 4 aşamadan oluşacak olan şifre geliştirici ilk aşamada; sadece küçük harflerden rastgele oluşacak. İkinci aşamada ise; BüyÜklÜ kÜçüKlü harflerden oluşacak. Üçüncü aşamada ise; rastgele sayı ve Büyüklü küçüklü harflerden oluşacak. Dördüncü ve son aşamada ise; rastgele sayı, işaretler ve büyüklü küçüklü sayılardan oluşacak. Kullanıcıdan Şifre uzunluğunu sormayı unutmayınız. Python ile kodlayınız.
19- (ZOR) Listeleri kullanarak, ekrana 10*10 genişliğinde kalp yazdıran programı kodlayınız.
20- (ZOR) (Python ile) Kullanıcının doğum günü, ay ve yıl bilgisini alarak ve bunu sistem tarih bilgisini okuyarak yaşını hesaplayan ve tam sayı çıktı veren programı kodlayınız. 

Burada olan örnekleri çözmek çok çok zorlayabilir sizleri. Bu konuda yapabileceğinize her zaman kani olun. Bilin ki her nerede takılıyorsanız, zafiyetiniz orada ve o zafiyeti yenmelisiniz. Bu problemleri çözüm yönteminiz her zaman sizin yöntem çözme tercihiniz olacaktır. Çözdüğünüz problem çözümlerine sonradan kez kere tekrar bakmak ve tekrardan tasarlamak ise her zaman sizler için iyi olacaktır.

Güzel ülkemde, geleceği güzel yazılımcılar görmek hayaliyle…

İlk Yorumu Siz Yapın

Yorumun Bizim İçin Çokomelli.

%d blogcu bunu beğendi: