31 Aralık 2017 Pazar

Labirent Algoritmaları Görselleri

Breadth First Search : Aynı anda farklı yolları yol listesine (bir dizi veya arraylist) ekleyerek yolu bulan algoritmadır. En yavaş fakat en kolay programlanabilen yöntemdir.

Depth First Search: Tek yol üzerinden sonuca ulaşmaya çalışan algoritmadır. Her zaman en iyi sonucu vermeyebilir.

A* Search : Greedy arama algoritmasıdır. Her yol denenir eğer bir yolun uzunluğu diğer yolun uzunluğunu geçerse arama diğer yoldan devam eder ve en kısa yol listelenir.


images created from : http://bryukh.com/labyrinth-algorithms/

18 Aralık 2017 Pazartesi

Algoritma Soruları 039 - Labirent Oyunu

Seviye : İleri

Bir labirent oyununda duvarlar ve duvarlar X ve boşluklar O ile belirtilmektedir.

O O O O O X O
X X O X O O X
O X O O X X X
X X X O O X O
X X X X O O X
O O O O O O O
 X X O X X X O 

Yukarda 7x7 bir matris haritasi verilmiştir. Çözüm her zaman sol üst köşeden başlayacak ve sağ alt köşede bitecektir. Çözümde cursor sağa-sola/aşağı-yukarı birer birer hareket edecek.

Labirentin oluşturulması : Labirent matrisi rastgele oluşturulacak, (en az 10x10 matris). Oluşturulan matris "labirent.txt" isimli dosyaya kaydedilecek. Ayrıca elle oluşturulmuş labirent dosyası da kullanılabilir.

Labirent çözümü bulunduğunda yola (yukarıda kırmızı işaretlenmiş O karakterleri) 1 yazılacak ve "labirent_cozum.txt" dosyasına kaydedilecek.

1 1 1 O O X O
X X 1 X O O X
O X 1 1 X X X
X X X 1 1 X O
X X X X 1 O X
O O O O 1 1 1
  X X O X X X 1  

Eğer çözüm bulunamazsa ekrana "labirentin çözümü yoktur" yazılacak.

Açıklama; (Bonus puanlı ödev)
2.Sınıf 2.öğretimler için son tarih 25 Aralık 2017 23:59
2.Sınıf 1.öğretimler için son tarih 28 Aralık 2017 23:59

Kopya ödevler değerlendirilmez ve gönderme formatı önceki ödevlerdeki gibi olacaktır.

17 Aralık 2017 Pazar

Java Dosya İşlemleri

Java programı ile harici (txt) dosya yazma ve okuma işlemleri aşağıdaki gibi yapılır;


 public static void main(String[] args) {  
           String str = "Bunu dosyaya yazdir2";  
           File file = new File("dosya.txt");  
           //yazma işlemi  
           try {                 
          if (!file.exists()) {  
            file.createNewFile();  
          }  
          FileWriter fileWriter = new FileWriter(file, false);  
          BufferedWriter bWriter = new BufferedWriter(fileWriter);  
          bWriter.write(str);           
          bWriter.close();  
           } catch (IOException e) {  
                System.out.println(e.getMessage());  
           }  
           // okuma işlemi  
           try {  
                FileReader fileReader = new FileReader(file);  
                String line;  
                BufferedReader br = new BufferedReader(fileReader);  
                while ((line = br.readLine()) != null) {  
                  System.out.println(line);  
                }  
                br.close();  
           } catch (Exception e) {  
                System.out.println(e.getMessage());  
           }   
      }  

Oluşan dosya

5 Aralık 2017 Salı

Algoritma Soruları 038 - Collision Detection

Seviye : Orta

Form ekranında belirli hızda hareket eden en az 3 top tasarlayınız. Bu toplar form sınırlarına ve birbirlerine çarptıklarında yön değiştirsinler.


Nesne Tabanlı Final Ödevi - Ek Açıklama

1- Ekranda en az 3 top bulunacak ve timer kullanılarak hareket ettirilecek. Hız işlemci gücüne göre değişkenlik gösterebilir. 

2. Topları oluşturmak için jlabel nesnesi içine top resimlerini ekleyebilirsiniz. Aşağıdaki resimleri kaydederek kullanabilirsiniz. Yada kendiniz yeni resimler ekleyebilirsiniz, resim arka planlarını transparan yapmayı unutmayın.

 3. Çarpışma testi (collision detection, hittest) için ipuçu; Rectangle nesnesinin intersects komutunu araştırınız.

4. Proje dosyaları Eclipse'den File/Export seçeneği ardından Archieve File seçeneği ile sıkıştırılacaktır.

5. Dosya ismi "numaranız.zip" olarak adlandırılacaktır. Formata uymayan dosyalar incelenmez.

6. Ödevinizi 29.Aralık.2017 Cuma 23:59'a kadar, myasinozsaglam@gmail.com adresine gönderiniz. Konu kısmına "Final Ödev - Numaranız" yazınız. 

7. Puantaj;
Topların form içinde hareket etmesi +5
Topların birbirine çarpması +10
Nesnellik +5

8. ÇOK ÖNEMLİ : Ödevleriniz "Code compare" programları ile karşılaştırılacaktır. %70'den fazla benzerlik bulunan ödevlere puan verilmez. O yüzden yapan arkadaşların kodları kimse ile paylaşmamaları gerekmektedir. 

4 Aralık 2017 Pazartesi

Try-Cath ve hata yakalama örnekleri

//Sıfıra bölme hatasını yakalamak
public class Main {
    public static void main(String[] args) {
        try {
            int a = 19 / 0;
        } catch (ArithmeticException MatematikselHata) {
            System.out.println(" İşlem yapılırken matematiksel bir hata oluştu :" + MatematikselHata.getMessage());
        }
    }
}




//Tür hatasını yakalamak
public static void main(String[] args) {
             try {
                    Scanner sc=new Scanner(System.in);
                    System.out.println("1.sayıyı girin:");
                    doublebolunen=sc.nextDouble();
                    System.out.println("2.sayıyı girin:");
                    doublebolen=sc.nextDouble();
                    doublesonuc=bolunen/bolen;
                    System.out.println("Sonuç="+sonuc);
             } catch (InputMismatchException e) {
                    System.out.println("Lütfen sadece sayı giriniz.");
             }
             finally{                 
                    System.out.println("İşlem sonlandı.");
             }         
       }


Hata türleri tablosu

27 Kasım 2017 Pazartesi

Algoritma Soruları 037 - Üçlü Toplam

Seviye : İleri

Kullanıcıdan dizi boyutu bilgisi ve toplam bilgisi alındıktan sonra -10 ile +10 arasında random sayılardan oluşan diziyi oluşturunuz. Ardından dizi elemanlarından herhangi 3'ü istenen toplama eşitse onları aşağıya yazınız?

Açıklama: Kullanıcıdan boyut ve toplam bilgisini alalım,
Boyutu giriniz : 20
Toplam kaça eşit olsun : 0

Çıktı
[9 -6 -5 9 8 3 -4 8 1 7 -4 9 -9 1 9 -9 9 4 -6 -8]  //20 elemanlı dizi

Toplamları 0'a eşit olan 3'lüler

-9  1  8
-8  1  7
-5 -4  9
-5  1  4
-4  1  3
-4 -4  8

16 Kasım 2017 Perşembe

Basit UML sorusu

Aşağıdaki UML diagramındaki sınıfları(class) ve değişkenleri tanımlayınız. Müşteri sınıfı hesap sınıfından extend edilecektir. Müşteri ve hesap sınıflarının constructorları olduğu varsayılacaktır. Banka sınıfının içindeki hesap bilgileri metodu parametre olarak müşteri ve hesap nesnelerini alacak ve ekrana müşteri ad, soyad, hesabın para cinsi (tl,dolar,euro vs.) ve miktarını yazacaktır.


Çözüm;


Class Hesap{
       public int hesap_id;
       public String  para_cinsi;
       public int niktar
     
       Hesap(){   //varsayılan constructor
       .......
      }
}

Class Musteri extends Hesap{
        public int id;
        public String ad;
        public String soyad;

        Musteri(){   //varsayılan constructor
       .......
      }}

Class Banka{
       public String banka_ad;
       Hesap hesap;
       Musteri musteri;

       Banka(){   //bankanın constructorı
            hesap = new Hesap();
            musteri = new  Musteri();
       }

       public void hesap_bilgileri(String banka_ad, Hesap hesap, Musteri musteri){
            System.out.println("Banka : " + banka_ad);
            System.out.println("Musteri : " + musteri.ad +" "+musteri.soyad);
            System.out.println("Hesap : " + hesap.para_cinsi);
            System.out.println("Banka : " + hesap.miktar);
       }
}

5 Kasım 2017 Pazar

Algoritma Soruları 036 - Saat dönüşümü

Seviye - Orta

Girilen saati yazıyla yazdırmak. Saat 24 saat formatında ve SS:DD  (saat ve dakika) şeklinde girilecek. Yazı ile yazdırıldıktan sonra; öğleden önce ÖÖ ve öğleden sonra ÖS şeklinde ek yazdırılacak.

Açıklama:
Kullanıcı saati aşağıdaki formatta girecek;
03:21
çıktı şu şekilde olacaktır;
üç yirmibir ÖÖ
----------------------

Öğleden sonra için girilen bir örnek;
21:45
Çıktı:
dokuz kırkbeş ÖS
 ----------------------
Bir örnek daha;
00:00
Çıktı;
oniki ÖÖ

-----------------------
Bir örnek daha;
12:00
Çıktı;
oniki ÖS


Algoritmaya giriş 1 dersi Vize ödevi :
1-  Öncelikle yukarıdaki açıklamaları iyi okuyarak soruyu iyi anlayınız. Aşağıdaki GIF soruyu anlamanıza yardımcı olacaktır.

2- Sadece java dosyasını göndereceksiniz. Dosya ismini "numaranız.java" olarak adlandırın.

3- Ödevinizi 26.Kasım.2017 Pazar 23:59'a kadar, myasinozsaglam@gmail.com adresine gönderiniz. Konu kısmına "Vize Ödev - Numaranız" yazınız. Formata uymayan ödevlere bakılmaz. Dersi alttan alan öğrencilerde ödevi yapabilirler.

4-ÇOK ÖNEMLİ : Ödevleriniz "Code compare" programları ile karşılaştırılacaktır. %70'den fazla benzerlik bulunan ödevlere puan verilmez. O yüzden yapan arkadaşların kodları kimse ile paylaşmamaları gerekmektedir.

5. Vizeye +20 puan olarak eklenecektir. Yapmayan arkadaşların vizesi yine 100 üzerinden değerlendirilecektir.


Algoritma Soruları 035 - Matris içindeki en büyük 4'lüyü bulmak.

Seviye : İleri

Amaç: Kullanıcıdan alınan rastgele bir sayının boyutunda kare array (2D) yaratılacak. Bu array’in içerisindeki tüm 2x2’lük küçük karelerin toplamı bulunup değeri en büyük olan karenin sol üst köşedeki indisi ve toplamı ekrana yazdırılacak.

Açıklama:
Kullanıcıdan bir sayı alınacak ve o sayı ölçüsünde kare matris oluşturulacak. Örneğin kullanıcıdan 6 alınmışsa 6x6 matris oluşturulacak.

Bir sayı giriniz:
6

Oluşturulan matris:
0 9 8 7 5 8
4 2 5 3 9 6
2 8 6 4 7 1
8 7 9 7 7 0
2 7 8 6 3 9
1 6 5 4 7 6

En büyük toplam: 31
Indis: 3, 1

 
Nesne Tabanlı Programlama 1. Ödevi Ek açıklama
Öncelikle yukarıdaki açıklamaları iyice okuyup soruyu anlayınız. Program görsel olarak yazılacaktır. Aşağıdaki GIF ile görsel arayüz ve programın çalışma şeklini inceleyiniz.

1) Matris boyutu kullanıcıdan alınacak. Matris boyutu en az 3, en fazla 10 girilebilecek. Bu sayı aralığında olmadığında kullanıcı uyarılacak yada giriş izni verilmeyecek. Matris içindeki sayılar 10-99 aralığında rastgele oluşturulacaktır.


// Eski ödev için geçerli
2) Matris oluşturma ve hesaplama işlemi "matris" isimli ayrı bir class ile nesnel yapılacak. Dosyanızda form için bir java ve matris.java dosyası olacak.

3)Matris.java içinde içerisinde Olustur ve MaksimumBul adında iki fonksiyon olacaktır. Form sınıfı (frm1.java) üzerinden nesnel olarak çağrılacaktır.

4) Bulunan maksimum dörtlünün arka planı turuncu veya başka bir renk ile boyanmalıdır.(Bkz. Yukarıdaki GIF)

5) Proje dosyaları Eclipse'den File/Export seçeneği ardından Archieve File seçeneği ile sıkıştırılacaktır.

6) Dosya ismi "numaranız.zip" olarak adlandırılacaktır. Formata uymayan dosyalar incelenmez.

7) Ödevinizi 26.Kasım.2017 Pazar 23:59'a kadar, myasinozsaglam@gmail.com adresine gönderiniz. Konu kısmına "Vize Ödev - Numaranız" yazınız.

8) ÇOK ÖNEMLİ : Ödevleriniz "Code compare" programları ile karşılaştırılacaktır. %70'den fazla benzerlik bulunan ödevlere puan verilmez. O yüzden yapan arkadaşların kodları kimse ile paylaşmamaları gerekmektedir.

9) Puantaj
    -Matris oluşturma +5 puan
    -Nesnellik +5
    -Maksmimumu ve adresi bulma +5 puan
    -Bulunan 4'lünün arka planının renklendirilmesi +5 puan
olmak üzere vizeye toplam +20 puan olarak eklenecektir. Ödev yapmak istemeyen arkadaşların vizesi yine 100 üzerinden olacaktır.

17 Ekim 2017 Salı

Anahtar ile Şifreleme Yöntemleri

Belirlenen bir anahtar sözcük kullanılarak yapılan şifreleme yöntemidir. Genellikle bitwise operatörlerin kullanılması ile gerçekleştirilir. Metin ile anahtar kelimenin harfleri karlılıklı olarak OR, AND veya XOR işlemi ile şifrelenir.

Sifrelenecek metin : "Ali ata bak"
Key: "okul"

Şifreleme işlemi için;
a     l     i    a    t      a     b     a     k
o     k    u   l     o     k     u     l     o

okul kelimesinin her harfi sıra ile metnin harfi ile bitwise işleme tutulur.


burada "a" karakteri ile "o" karakterini and işlemine tabi tutalım;

a = ascii code 97 = binary  01100001
o = ascii code 111 = binary  01101111

şimdi her iki harfi AND işlemine tutalım;

01100001
01101111 AND
01100001

a and o = 01100001 = 97 = a olarak şifrelenecektir.

AND ve OR işlemlerinde benzer harflerin çıkması olası iken, XOR işlemi ile çok farklı karakterlerin çıkması şsağlanabilir.

a XOR o işlemi için sonuç = 00001110 = 13 olarak çıkacaktır ascii kodu ise CR olacaktır.


9 Ağustos 2017 Çarşamba

Algoritma Soruları 034 - En yakın asal sayıyı bulmak

Seviye : Orta

Kullanıcıdan alınan sayıdan küçük ve büyük olan en yakın asal sayıyı bulan programı yazınız?

Açıklama;

Kullanıcı 12 sayısını girmiş olsun, çıktı;
11 < 12 < 13    şeklinde olacaktır.

Kullanıcı 48 sayısını girmiş olsun, çıktı;
47 < 48 < 53   şeklinde olacaktır.

18 Temmuz 2017 Salı

Sezar Şifreleme (Java ile görsel parogramlama)

Sezar şifreleme dünya tarihinin en eski ve en basit şifreleme yöntemlerinden bir tanesidir. Bu şifreleme yönteminde harfler belirlenen sayıda kaydırılarak metinler şifrelenir. (Ayrıntılı bilgi için önceki yazımıza bakınız.)

Eclipse editör ile Java kullanarak görsel bir program geliştireceğiz. Öncelikle Eclipse editöre Window Builder eklentisini kurduğunuzu ve temel Java bilgisine sahip olduğunuzu varsayalım. (Window Builder Kurulumu)

Programlama işlemi iki farklı youtube videosunda anlatıldı. Dinleyici sıkmamak için 2 parça olarak hazırlandı.

Birinci bölüm Youtube Linki
İkinci bölüm Youtube Linki

 


15 Temmuz 2017 Cumartesi

Algoritma Soruları 033 - İkiz asal sayıları bulmak

Seviye : İleri

Sadece 1 ve kendine bölünen sayılara asal sayılar denir. Eğer ardışık iki asal sayı arasındaki fark 2 ise bu asal sayı çiftlerine "İkiz Asal Sayı" denmektedir.

Örnek olarak aşağıdaki asallara bakalım;
(3,5)
(5,7)
(11,13)
(17,19)
.....
....

Kullanıcıdan alınan sayıya kadar olan ikiz asal çiftlerini bulan programı yazınız?

 

Açıklama: Kullanıcı 10 sayısını girmiş olsun, bu durumda çıktı aşağıdaki gibi olacaktır;
(3,5) - (5,7)

13 Temmuz 2017 Perşembe

Robotlar, İnsan İşçileri Nasıl Etkileyecek?

Yakın gelecekteki endüstriyel devrim (Endüstri 4.0) önceki sanayi devrimlerinden daha farklı olacak. Önceki devrimlerde de insanların büyük bir kısmının işsiz kalacağı uzun süre tartışılmış. Her seferinde yeni sektörlerin gelişmesi ile bir şekilde istşhdam sağlanmış. Fakat son devrim biraz daha farklı olacak. Bu devrimde makinaları gelişmesi değil, direk insanın yerini alması öngörülüyor. 40 yıl önce sürücüsüz otomobilleri hayal etmek bile imkansızdı. Şu an sürücüsüz otomobiller ve hatta tırlar kullanılmaya başlandı. Tır şoförlerinin ABD' de bu konudan rahatsız oldukları ve başkan ile görüştükleri de mevcut. Sadece otonom araçların geliştirilmesi bile dünya çapında milyonlarca kişinin işsiz kalması ile sonuçlanacak. 

1979 yılından bu yana ABD'de otomosyan kullanımı ile birlikte 7 milyon kişi işsiz kalırken, üretimin 2 kat büyüdüğü görülmüş. Yeni robot teknolojileri ile birlikte artık insanlara olan ihtiyaç daha da azalacak. Önümüzdeki yıllarda ABD'de ki toplam üretimin %59'unun robotlar ile üretileceği tahmin edilmektedir bu da 7.25 milyon kişinin işini kaybetmesi demek.


Ototmotiv sektörü robot kullanımına en erken başlayan sektör. Son yıllarda dünyanın dört bir tarafında ototmotiv fabrikalarından çıkarılan işçi haberlerini duymaktayız. Şirketler üretim miktarlarını ve karlarını katlarken neden işçi çıkarıyorlar? Sebebi tabi ki gelişen robot teknolojisi.

Robot kullanımının insana en çok ihtiyaç duyulan sektörlere hızla girdiği görülmektedir. Tarımsal üretimde hızla otomasyon kullanımı, topraksız üretim, otomatize edilmiş sulama, vb. gelişmeler bu alanda da insan gücüne olan ihtiyacı azaltacak gibi.Tekstil benzeri ince işçilik gerektiren alanlarada robot eli değmeye başladı. Tekstil üretiminde önemli payı olan ülkemiz içinde gelecek on yıllarda işten çıkarmaların artacağı kesin gibi görünüyor.


Tüm dünyadaki insan iş gücünün katma değerinin 1.2 Katrilyon dolar olduğu tahmin ediliyor. Bunun dünyadaki maddi kapitalin 2 katı olduğu belirtiliyor. Bir insanın iş gücüne katılması ise dünya gelirine 11 dolar civarında bir katkı sağlıyor.

İlerleyen yıllarda market çalışanları olmayacak, garsonlarda, büfede satış yapan bir insan olmayacak. Banka veznelerinde robotlarla muhatap olacağız. Nitelikli ve iyi eğitilmiş insanların iş bulabildiği bir dünya olacak. Belki mesai saatleri 8 saatten 4 saate düşebilir.

Kaynaklar :  http://www.talenteconomy.io/2017/06/28/robots-change-role-human-workers/
http://gizmodo.com/robots-are-already-replacing-human-workers-at-an-alarmi-1793718198


11 Temmuz 2017 Salı

IoT ( Internet of Things - Nesnelerin İnterneti)


Önümüzdeki yıllarda gerçekleşmesi beklenen bir yenilikte Nesnelerin İnterneti (IoT - Internet of Things). Bu yenilikle birlikte kullandığımız cihazların internete bağlanıp hem veri göndermesi hemde uzaktan yönetilmesi hedeflenmektedir.  Evlerde kullanılan buzdolabı, çamaşır makinasından tutunda, ampule, su vanasına kadar tüm cihazlar internete bağlanacak. Ev kullanıcıları için büyük kolaylıklar sağlayacağı gibi elde edilen verilerle daha verimli kullanım optimizasyonları gerçekleştirilecektir.

Tabiki burada sadece ev kullanıcılarını düşünmemek gerekli, bir fabrikadaki üretim bandınıni robotların kullanımı. Bir oteldeki havalandırma, ısıtma sistemlerindeki kullanımı. Yollardaki araçlardan, trafik ışıklarına tüm cihazlar internete bağlanabilecek. Her bir cihaz için bir IP adresi alıcağı için standart IPv4 artık tamamen yetersiz olacak ve IPv6'ya geçiş mecburi olacaktır.


IoT ile gelecekte hedeflenen yenilikler aşağıdaki olacaktır;

  • Akıllı şehirler; ışıklandırma, atık yönetimi, toplu ulaşım, park yönetimi
  • Çevre koruma; ormanlık alanların korunması, yağış oranlarının ve barajların korunması
  • Akıllı ev uygulamaları; enerji tüketimini optimize etmek, cihazların uzaktan yönetilebilmesi
  • Ticaret; tedarik uygulamaları, e-ticaret, kargo işlerinin daha düzenli olması
  • Tarım; akıllı zirai sulama, hayvancılık, sera kontrolü
  • Endüstri; üretim bandlarının kontrolü, üretim sahasındaki robot ve makinaların kontrolü
IoT ile dünya üzerinde üretilen veri miktarı katlanarak artacak. elde edilen veriler ile daha verimli bir üretim ve senkronizasyon sağlanacak. İnsan gücüne olan ihtiyaç azalacak. Sensörler ile alınan anlık veriler üzerinde analizler yapılabilecek.

9 Temmuz 2017 Pazar

Endüstri 4.0

İlk olarak 2011 yılında Almanya Hannover Fuarı'nda kullanıldı. Ertesi yıl Bosch Firması ve Henning Kagermann çalışma grubu Alman hükümetine konuyla ilgili bir rapor sundu. 2013 yılındaki Hannover fuarında ise "4. Endüstri Devrimi" yada yaygın kullanımı ile "Endüstri 4.0" tanıtıldı ve genel olarak kabul gördü. 

 Tarih boyunca yaşanan 4 büyük endüstri devrimi şu şekildedir;
1. Su buharının üretim tezgahlarında kullanılması
2. Üretim bandının geliştirilmesi ve elektriğin üretimde kullanılması
3. 1970'lerde başlayan ve programlanabilir makinaların kullanılmaya başlaması
4. Tüm teknolojilerin (yazılım, donanım, yapay zeka) üretim bandında insanın yerini almasını hedefleyen Endüstri 4.0

Tüm endüstri devrimlerinde olduğu gibi Endüstri devriminde de insanların büyük çoğunluğunun işsiz kalacağı kaygısı yaygın. Endüstri 4.0 Yapay zeka ve robot teknolojilerini destekleyerek insanı üretimde çok daha az kullanmak istiyor. Peki bu nelere neden olabilir, daha çok insan üretimden hizmet sektörüne kayacaktır. Yeni sektörlerin önü açılabilir veya oluşabilir. Kimbilir belkide günde 8 saat çalışmak yerine 4 saat çalışmaya başlayacağız. Nüfusu kalabalık olan ülkeler için potansiyel bir tehlike olduğu açık fakat zamanla bu sorunun aşılacağı da kesin gibi görünüyor.

Endüstri 4.0 temel olarak Bilişim Teknolojileri ile Endüstriyi bir araya getirmeyi hedefliyor. Ana bileşenlerinden ilki Yeni Nesil Yazılım ve Donanım, yani bugünün klâsik donanımlarından farklı olarak düşük maliyetli, az yer kaplayan, az enerji harcayan, az ısı üreten, ancak bir o kadar da yüksek güvenilirlikte çalışan donanımlar ve bu donanımları çalıştıracak işletim ve yazılım sistemlerinin kaynak ve bellek kullanımı açısından tutumlu olması hedefidir. 

Endüstri 4.0 için en önemli 10 adım aşağıdaki görseldeki gibidir;


İleri Seviye Materyaller : Daha hafif, daha dayanıklı, daha çevreci materyallerin üretimi.

Bulut Sistemi ve Big Data : İnternet üzerinde üzerinde daha fazla veri ve uygulama dağıtımı ihtiyacını daha az masrafla yerine getirmek için son yıllarda yaygın kullanılmakta. ayrıca big data ile ticaretten, güvenliğe tüm sosyal trendleri ölçme ve bilgi edinme.

Otonom araçlar : Herhangi bir sürücüye ühtüyaç duymadan gidebilen araçlar ve makinalar geliştirme.

Sentetik Bioloji : İnsan organlarından, enerji üreten bakterilere geniş bir alanı kapsıyor.

Sanal gerçeklik : Bilgisayar destekli 3D yazılımlarla artırılmış sanal gerçeklik. Oyunlardan endüstriyel üretime bir çok alanda kullanılıyor.

Yapay Zeka : Endüstri 4.0 'ın ana hedeflerinden biri, insanın karar alma süreçlerini tamamen yerine getirecek yazılımlar. Otonom araçlardan, üretim bandıkdaki robotlara geniş bir alanı kapsıyor.

Robot : Üretimde insana olan ihtiyacı azaltmak için en önemli değişken. Çin ve Hindistan gibi ülkeleri ilerde zor durumda bırakabilir.

BlockChain : Sanal para ağı, geleceğin parası olarak görülüyor. Değeri pazar etklerinin haricinde hiç bir şeye bağlı değil.

3D Printing : Kalıplardan, araçlara hatta insan organlarına bir çok şeyi basabilcek büyük bir teknoloji.

Internet Of Things(IoT) : Buzdolabı, çamaşır makinası, su sayacı, bütün nesneler ilerde internete bağlanacak ve daha verimli kullanımları hedeflenecek.


22 Haziran 2017 Perşembe

Algoritma Soruları 032 - Spiral iki boyutlu dizi oluşturma

Seviye : Zor

Kullanıcıdan alınan sayı ile 2 boyutlu dizi oluşturunuz ve içeriğini spiral olarak artan sayılarla doldurunuz?

Açıklama : Kullanıcı 5 sayısını girmiş olsun, çıkıtısı 5x5 matris olarak aşağıdaki gibi olacaktır.

 
 

14 Haziran 2017 Çarşamba

Algoritma Soruları 031 - Death man's hand

Seviye : orta

"Death man's hand" iskambil kağıtlarında Sinek As, Maça As, Sinek 8 ve Maça 8 kartlarının aynı elde çekilmesi durumudur.


İskambil destesi için dört adet rastgele kart çekme programı tasarlayınız?

Ardından,
♠A, ♣A, ♠8, ♣8

kartları çekilinceye sonsuz döngü kurunuz, kartları çekilinde döngüden çıkıp, kaçıncı denemede kartların çekildiğini ekrana yazınız?

Açıklama :

Her bir deste için 13 elemanlı bir dizi oluşturup, (2 tane jokeri de düşünüp random seçime dahil edin)
aralarından 4 kart çekin.

Death man's hand varyasyonunu tek elde çekme ihtimali;
1/54 * 1/53 * 1/52 * 1/51 = 1 / 7 590 024 ' dür.

 

10 Mayıs 2017 Çarşamba

Algoritma Soruları 030 - İsimde geçen harflerin matrise rastgele yerleşimi

Seviye : Orta

Kullanıcıdan alınan isim ve soyisim içinden rastgele alınan harfleri 3X3 matrise yazdıran programı yazınız?

Açıklama: Kullanıcı ismini "yasinsağlam" olarak girsin

a  l   m
y  y  s
ğ  n  i

Algoritma Soruları 029 - İsmi matrix şeklinde yazmak

Seviye : orta

Kullanıcıdan alınan isim ve soyisim bilgisini 3X3 matrise yazdıran programı yazınız?

Açıklama: Kullanıcı ismini "yasinsağlam" olarak girsin

y  a   s
i   n   s 
a  ğ   l

Algoritma Soruları 028 - Şifre oluşturma 2

Seviye : Orta

Bir işletme kullanıcıları için 5 haneli ve {1,2,3,4,5,6,7,8,9} rakamlarından oluşacak bir şifre üretmek istemektedir. Bu şifre rastgele oluşturulurken aşağıdaki şu kurala uymak zorundadır;

-Şifrede aynı rakamdan 2 tane olmayacaktır. (örnek iki adet 8 rakamı içermeyecek)

Şifreyi oluşturan programı yazınız?

Açklama: Aşağıda rastgele oluşturulan şifrelerin geçerlilik durumu gösterilmiştir;

34931 --> geçersiz 3 rakamı iki kere kullanılmış
35426 --> Geçerli şifre
96851 --> Geçerli şifre
62129 --> geçersiz 2 rakamı iki kere kullanılmış

Algoritma Soruları 027 - Şifre oluşturma 1

Seviye : Orta

Bir işletme kullanıcıları için 5 haneli ve {1,2,3,4,5,6,7,8,9} rakamlarından oluşacak bir şifre üretmek istemektedir. Bu şifre rastgele oluşturulurken aşağıdaki şu kurala uymak zorundadır;

-Şifrede ardışık rakam olmayacaktır. (örnek 5 ten sonra 6 gelmeyecek)

Şifreyi oluşturan programı yazınız?

Açklama: Aşağıda rastgele oluşturulan şifrelerin geçerlilik durumu gösterilmiştir;

34951 --> geçersiz 3 ve 4 ardışık sayı
35426 --> Geçerli şifre
96851 --> Geçerli şifre
62129 --> geçersiz 12 şeklinde ardışık sayı var

7 Mayıs 2017 Pazar

Algoritma Soruları 026 - Rakam değiştirerek daha büyük sayı üretmek.

Seviye : orta

Kullanıcıdan alınan veya rastgele üretilen 5 basamaklı sayının, birler basamağındaki sayı diğer basamaklardaki sayılarla yer değiştirecek. Fakat oşuşan yeni sayının eskisinden daha büyük olması beklenmektedir. Herhangi 5 basamaklı sayı için kaç adet büyük sayı üretilebileceğini bulan programı yazınız?

Açıklama :Örnek olarak kullanıcıdan alınan 78267 sayısını ele alamım.

Bu sayının birler basamağı 7 dir.  78267

Bu yedi rakamı onlar basamağındaki 6 ile yerdeğiştirdiğinde --> 78276 > 78267

Yine yüzler basamağındaki 2 ile yer değiştirdiğinde --> 78762 >78267

şartını sağlar, diğer basamaklar için yeni sayı büyük olmaz. Dolayısı ile sadece 2 tane büyük sayı üretilebilir.


Algoritma Soruları 025 - Dizi içi mutlak eşit sayıları bulma

Seviye : Başlangıç

-10 000 ve +10 000 aralığında rastgele sayılardan oluşan 250 elemanlı bir dizi oluşturunuz. Dizi içinde negatif ve pozitif olarak aynı sayılarından kaç adet olduğunu bulunuz?

Açıklama : Diyelim ki oluşan dizi şu şekilde olsun
{-567, 3456,-45, -789, 245, ...., 567,..........}  böyle bir dizide hem -567 hemde +567 olduğu için sonuç 1 olarak döndürülecek.

ipucu Math.abs komutu sayıların mutlak değerini alır. Yada -567+567=0 şeklinde çözüme gidiniz?

Android Studio Quickly - Gif kullanımı

Android içinde GIF resimleri gösterebilmenin çeşitli yolları mevcuttur. Şu an akullandığım en iyi GIF eklentisi Glide diyebilirim.

Glide uygulamasının GitHub sayfası --> https://github.com/bumptech/glide

Öncelikle uygulamanın gradle sayfasında şu değişiklikleri yapın;

repositories {
  mavenCentral() 
}

dependencies {
  compile 'com.github.bumptech.glide:glide:3.7.0'
  compile 'com.android.support:support-v4:19.1.0'
}
  
Ardından forma bir ImageView ekleyin ve   

@Override public void onCreate(Bundle savedInstanceState) {
  ...
  ImageView imageView = (ImageView) findViewById(R.id.my_image_view);

  Glide.with(this).load("http://goo.gl/gEgYUd").into(imageView);
}


2 Mart 2017 Perşembe

Algoritma Soruları 024 - İki tarih arasındaki fark

Seviye : Orta

Kullanıcıdan alınan iki tarih arasındaki hafta ve gün sayısını bulan programı yazınız?

Açıklama :

Başlangıç tarihi 6.10.2016
Bitiş tarihi  13.01.2017

İki tarih arasında 98 gün vardır = 14 hafta 0 gün

23 Şubat 2017 Perşembe

Android Studio Quickly - Sayaç Yapımı

Ekrana button ve textview ekleyin. Properties ekranından boyutlarını ve textlerini değiştirin.


Amacımız her 10 adımda bir rakamı (10,20,30,......) Butona yazmak. Sayac ve sayac10 diye iki değişken tanımlayalım. Butonun onclick olayında sayacı, her 10 adımda bir de sayac10'nu güncelleyip yazalım.


Sonuç;



20 Şubat 2017 Pazartesi

Algoritma Soruları 023 - String Sadeleştirme

Seviye : Orta

Kullanıcıdan alınan iki adet string içerisindeki benzer harfleri silerek sadeleştiriniz?

Açıklama : Kullanıcıdan alınan stringler şöyle olsun

genellik
eklemeli    birbirinin aynı olan ve birbirini götüren harfler kırmızı ile işaretlenmiştir. Burada dikkat edilmesi gereken, ilk stringte 2 adet "e" varken ikincisinde 3 adet "e" var. Dolayısı ile alttan gidecek e sayısı iki adet olacak.

19 Şubat 2017 Pazar

Algoritma Soruları 022 - Kare Yazma

Seviye : İleri

Kullanıcıdan alınan bir stringi kare olarak yazan programı yazınız?

Açıklama : Kullanıcı "KARE" girerse ekrana

KARE
A     R
R     A
ERAK

basılsın.

Eğer DORTGEN girerse

DORTGEN
O              E
R              G
T              T
G              R
E              O
NEGTROD

basılsın.


Algoritma Soruları 021 - String dizisini iki boyutlu olarak sıralamak

Seviye : İleri

Kullanıcıdan alınan bir sayı ile kare matris oluşturup, önce içini rastgele karakterlerle(alfabenin büyük harfleri olsun) doldurunuz. Ardından Karakterleri alfabetik olarak sıralayınız?

Açıklama : Kullanıcı 3 sayısını girmiş olsun. Ekrana basılacak son matris 3X3 kare matris olacağı için 9 adet random karakter üretmeniz gerekli. Sıralama işlemi bittikten sonra 9 elemanlı diziyi 3X3 matrise yerleştiriniz.

ilk üretilen random dizi 9 elemanlı {F,C,Z,Z,E,A,Y,L,K} olsun. Önce bunu sıralayınız {A,C,E,F,K,LY,Z,Z} olacaktır. Sonra bu tek boyutlu diziyi iki boyutlu olarak 3X3 matrise aktarıp yazdırınız.

A, C, E
F, K, L
Y, Z, Z

Ascii tablosu

18 Şubat 2017 Cumartesi

Algoritma Soruları 020 - Rastgele karakter üretmek ve sıralamak

Seviye : Başlangıç

Kullanıcının istediği sayıda rastgele karakter (alfabedeki büyük harfler olsun) üreterek bunları bir dizi içinde hizalayan programı yazınız?

Açıklama : Kullanıcı dizi boyutunu 6 olarak belirlemiş olsun.

Random üretilen karakterler {B,T,Z,E,F,E} olsun, sıralandığında ekrana {B,E,E,F,T,Z} olarak yazdırılır.

Aşağıdaki ascii tablosundan yararlanınız.


17 Şubat 2017 Cuma

Algoritma Soruları 019 - Kullanıcıdan alınan string dizisini alfabetik olarak sıralamak

Seviye : Orta

Kullanıcıdan alınan string dizisini alfabetik olarak sıralayan programı yazınız?

Açıklama : Kullanıcıdan alınan stringler bir dizide tutulsun örnek olarak

String dizi = {bal, keçi, ağaç, armut, bidon, zeki} gibi

bunları alfabetik olarak sıralayıp ekrana

ağaç, armut, bal, bidon, keçi, zeki olarak yazdırınız.

16 Şubat 2017 Perşembe

Algoritma Soruları 018 - String ayıklama

Seviye : Orta

Kullanıcıdan bir string veri alıncaktır, veri çindeki sayısal bilgiler virgüllerle ayrılmış olsun. Virgülleri atarak sayıları bir diziye aktaran programı yazınız?

Açıklama: Kullanıcıdan alınan string : "3,14,7,21,105,13,8" olsun, aradaki virgülleri atlayarak veriyi [3,14,7,21,105,13,8] şeklinde bir diziye aktarınız.

15 Şubat 2017 Çarşamba

Algoritma Soruları 017 - Shannon entropy

Seviye : Orta

Shannon entropisi bilgi analizinde kullanılan önemli bir ölçüm yöntemidir. Rastgele dağılımlı veride bulunan belirsizliği ölçemeye yarar. 1948 yılında Claude E. Shannon tarafından "İletişimdeki Matematik" adlı makale ile duyurulmuş ve bir çok alanda kullanılmıştır. 
Bu yöntem bir string veri içindeki karakterlerin minimum kaç bit ile kodlanması gerektiğini ölçer. Bir string veri içindeki harflerin yüzdelik dağılımlarının istenen logaritma tabanındaki tersi değer ile çarpılması ile bulunur;  
 
 
Daha fazla açıklama için Shannon Entropy 
 
Kullanıcıdan alınan bir stringi log 2 tabanına göre hesaplayıp, 2 bitlik veriler şeklinde kodlayınız? (Bkz. Üstteki link açıklaması)

14 Şubat 2017 Salı

Algoritma Soruları 016 - Reverse Polish Notation

Seviye : İleri

Bir matematik işlem sırasında operatörlerin sağa alınması işlemine Polish notation denir.

3+4 = 34+ gibi

(3+4)x7 ise 34+7x şeklinde yazılır
3+(4x7) ise  3+47x olarak parantez durumuna göre oparöter işaretleri sayılar arasına da yazılabilir.

Reverse Polish notation hakkında daha fazla bilgi için REVERSE POLISH NOTATION

Kullanıcıdan string olaran alınan işlem satırını (Örnek : 3+12-4 x (3+5) gibi ) Reverse Polish notation'a dönüştüren fonksiyon tasarlayınız? 

13 Şubat 2017 Pazartesi

Algoritma soruları 015 - Polish Notation

Seviye : İleri

Bir matematik işlem sırasında operatörlerin sola alınması işlemine Polish notation denir.

3+4 = +34 gibi

(3+4)x7 ise x+347 şeklinde yazılır
3+(4x7) ise  +3x47 olarak parantez durumuna göre oparöter işaretleri sayılar arasına da yazılabilir.

Polish notation hakkında daha fazla bilgi için POLISH NOTATION

Kullanıcıdan string olaran alınan işlem satırını (Örnek : 3+12-4 x (3+5) gibi ) Polish notation'a dönüştüren fonksiyon tasarlayınız?

12 Şubat 2017 Pazar

Algoritma Soruları 014 - Matris içeriği oluşturmak (Ters üçgen)

Seviye : Başlangıç

Kullanıcıdan tek olan bir sayı alın ve bir kare matris (AxA) oluşturun. Bu matrisin içeriğini 0 ve 1 ler ile ters üçgen oluşturacak şekilde doldurun?

Açıklama : Kullanıcıdan 7 sayısını (girilen sayı her zaman tek olacak) aldığınızı düşünün. 7x7 boyutlarında bir matris oluşturun ve görünümü şu şekilde ters üçgen olsun?

1 1 1 1 1 1 1
0 1 1 1 1 1 0
0 0 1 1 1 0 0
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0

11 Şubat 2017 Cumartesi

Algoritma Soruları 013 - Sesli harfleri öne almak

Seviye : İleri

Kullanıcıdan alınan bir string içindeki sesli harfler aşağıdaki kurallara göre öne alınmak isteniyor;
  • Rastlanan ilk sesli harf en önde olacak şekilde diğer sesli harfler ardında olacak şekilde öne çekilecek
  • Eğer sesli harften sonra aynı sesli harf gelirse, kaç adet geldiği ve harf yazılacak.
Açıklama :  Kullanıcıdan alınan kelimeler ve dönüşümleri şöyle

konum -> ouknm

etiket ->  eietkt

etekli -> 2eitkl     (burada iki "e"  harfi ard arda gelmiş e'nin başına 2 sayısı eklenir)

arama -> 3arm      (üç "a" harfi ard arda gelmiş)

açıklamalı -> aı2aıçklml     (ortadaki "a" harfleri ard arda 2 kere gelmiş)

araştırmamak -> 2aı2arştmmk (ilk iki "a" ve sondaki 2 "a" harfi ard arda gelmiş)



10 Şubat 2017 Cuma

Unicode Chessboard

Unicode satranç karakterleri ile istediğiniz özeliklerde satranç tahtasını web uygulamanıza yerleştirebilirsiniz.

Satranç Sembolleri
Name Symbol     Codepoint  HTML
white chess king U+2654 &#9812;
white chess queen U+2655 &#9813;
white chess rook U+2656 &#9814;
white chess bishop U+2657 &#9815;
white chess knight U+2658 &#9816;
white chess pawn U+2659 &#9817;
black chess king U+265A &#9818;
black chess queen U+265B &#9819;
black chess rook U+265C &#9820;
black chess bishop U+265D &#9821;
black chess knight U+265E &#9822;
black chess pawn U+265F &#9823;

Tamamen html + css ile oluşturulmuş satranç tahtası;

8
7
6
5
4
3
2
1
a b c d e f g h

 Tablo için kullanılabilecek HTML kodları;

 <table style="border-collapse: collapse; border-color: black; border-spacing: 0pt; border-style: solid; border-width: 0pt 0pt 0pt 0pt; font-family: &quot;arial unicode ms&quot;; text-align: center;">  
 <tbody>  
 <tr>  
 <td style="width: 12pt;">8</td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 1pt 0pt 0pt 1pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♜</span></td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 1pt 0pt 0pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♞</span></td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 1pt 0pt 0pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♝</span></td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 1pt 0pt 0pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♛</span></td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 1pt 0pt 0pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♚</span></td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 1pt 0pt 0pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♝</span></td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 1pt 0pt 0pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♞</span></td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 1pt 1pt 0pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♜</span></td>  
 </tr>  
 <tr>  
 <td style="width: 12pt;">7</td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 0pt 1pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♟</span></td>  
 <td style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♟</span></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♟</span></td>  
 <td style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♟</span></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♟</span></td>  
 <td style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♟</span></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♟</span></td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 1pt 0pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♟</span></td>  
 </tr>  
 <tr>  
 <td style="width: 12pt;">6</td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 0pt 1pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;"><br /></span></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 1pt 0pt 0pt; height: 24pt; width: 24pt;"></td>  
 </tr>  
 <tr>  
 <td style="width: 12pt;">5</td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 0pt 1pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;"><br /></span></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 1pt 0pt 0pt; height: 24pt; width: 24pt;"></td>  
 </tr>  
 <tr>  
 <td style="width: 12pt;">4</td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 0pt 1pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;"><br /></span></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 1pt 0pt 0pt; height: 24pt; width: 24pt;"></td>  
 </tr>  
 <tr>  
 <td style="width: 12pt;">3</td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 0pt 1pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;"><br /></span></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="height: 24pt; width: 24pt;"></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"></td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 1pt 0pt 0pt; height: 24pt; width: 24pt;"></td>  
 </tr>  
 <tr>  
 <td style="width: 12pt;">2</td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 0pt 1pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♙</span></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♙</span></td>  
 <td style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♙</span></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♙</span></td>  
 <td style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♙</span></td>  
 <td bgcolor="silver" style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♙</span></td>  
 <td style="height: 24pt; width: 24pt;"><span style="font-size: 150%;">♙</span></td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 1pt 0pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♙</span></td>  
 </tr>  
 <tr>  
 <td style="width: 12pt;">1</td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 1pt 1pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♖</span></td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 1pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♘</span></td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 1pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♗</span></td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 1pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♕</span></td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 1pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♔</span></td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 1pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♗</span></td>  
 <td bgcolor="silver" style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 0pt 1pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♘</span></td>  
 <td style="border-collapse: collapse; border-color: black; border-style: solid; border-width: 0pt 1pt 1pt 0pt; height: 24pt; width: 24pt;"><span style="font-size: 150%;">♖</span></td>  
 </tr>  
 <tr>  
 <td></td>  
 <td>a</td>  
 <td>b</td>  
 <td>c</td>  
 <td>d</td>  
 <td>e</td>  
 <td>f</td>  
 <td>g</td>  
 <td>h</td>  
 </tr>  
 </tbody></table>  

9 Şubat 2017 Perşembe

Algoritma Soruları 012 - Aritmatik taban dönüşümü

Seviye : Orta

Kullanıcıdan alınan sayıyı yine kullanıcın istediği tabana dönüştüren Class tasarlayınız?

Açıklama: Kullanıcıdan alınan sayı 12 olsun dönüştürülecek taban 2'li taban olsun.
Taban.donustur(12,2) şeklinde girilen sayı 1100 şeklinde return edilsin.

17 sayısı 5 tabınına dönüştürüleceğinde;
Taban.donustur(17,5) şeklinde girilen sayı 32 şeklinde 5 tabanında return edilsin.

8 Şubat 2017 Çarşamba

Algoritma Soruları 011 - Digital rakamlar

Seviye : Başlangıç

Dijital rakamlar gösterge üzerinde çeşitli parçalar halinde ifade edilirler. Bir rakamı 2 parça, sıfır rakamı 6 parça ile gösterilir. Tüm rakamlar aşağıdaki resimdeki gibi gösterilir.

Kullanıcıdan alınan sayıyı ifade edecek olan dijital rakamların kaç parçadan oluşacağını bulan programı yazınız?

Açıklama : Kullanıcıdan 106 rakamı alınmış olsun.  

1 rakamı 2 parçadan,
0 rakamı 6 parçadan,
6 rakamı ise 6 parçadan oluşmaktadır. toplamda ise 2 + 6 + 6 = 14 parçadan oluşacaktır.

7 Şubat 2017 Salı

Shannon Entropy

Shannon entropisi bilgi analizinde kullanılan önemli bir ölçüm yöntemidir. Rastgele dağılımlı veride bulunan belirsizliği ölçemeye yarar. 1948 yılında Claude E. Shannon tarafından "İletişimdeki Matematik" adlı makale ile duyurulmuş ve bir çok alanda kullanılmıştır. 

Bu örnekte bir string veri içindeki karakterlerin minimum kaç bit ile kodlanması gerektiğini hesaplayacağız. Bir string veri içindeki harflerin yüzdelik dağılımlarının istenen logaritma tabanındaki tersi değer ile çarpılması ile bulunur; 



Şimdi bir örnek ile açıklayalım;

Giriş verisi : "yasin" olsun. Burada hiç tekrar etmeyen 5 tane harf olduğu için tüm harflerin yüzdelik oranı %20 dir. Yani 0.2 dir.
  • 0.2 -> a
  • 0.2 -> i
  • 0.2 -> n
  • 0.2 -> s
  • 0.2 -> y
Shannon entropisi şöyle hesaplanır;

H(X) = -[(0.2log20.2)+(0.2log20.2)+(0.2log20.2)+(0.2log20.2)+(0.2log20.2)]
H(X) = -[(-0.464)+(-0.464)+(-0.464)+(-0.464)+(-0.464)]
H(X) = -[-2.32193]
H(X) = 2.32193

Burada logaritma 2 tabanında hesaplama yapılmıştır. Bunun anlamı şudur, eğer girilen string minimum bit (0,1 ikili tabanda) ile kodlanmak istenirse, entropi değeri olan 2.32193 yukarıya yuvarlanır ve 3 değeri bulunur. Beş karakterden oluşan yasin stringi minimum 15 bit ile kodlanabilir.

kodlama işlemi şu şekilde yapılabilir;
a için 000
i için 001
n için 010
s için 011
y için 100

görüldüğü gibi alfabetik sıralama ile her harfe 3 bitlik data atandı, bu işleme 0 dan başlanaral artırıldı. Sonuç stringi şöyle olacaktır;

yasin - > 100-000-011-001-010 -> 100000011001010

Metric Entropi : Shannon entropy ile ölçülen değerin karakter sayısına bölünmesi le bulunur. Yukarıdaki örnekte "yasin" stringi için

metrin entropi = 2,32193 / 5 = 0.46439 olacaktır. Metric entropi değerin 0 ile 1 arasında oluşmasını sağlar.

6 Şubat 2017 Pazartesi

Algoritma Soruları 010 - Faktöriyel sonucu rakamların toplamı

Seviye : Başlangıç

5! = 5 x 4 x 3 x 2 x 1 = 120 bu sayının rakamları toplamı -> 1 + 2 + 0 = 3

Kullanıcıdan alınan 2 sayının faktöriyel sonuclarının rakamları toplamı arasındaki farkı bulan programı yazınız?

Açıklama: Kullanıcıdan 7 ve 10 rakamları alınsın;
7! = 5040,  rakamlar toplamı = 5 + 0 + 4 + 0 = 9
10! = 3628800, rakamlar toplamı = 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27

27 - 9 = 18 olarak bulunacaktır.

5 Şubat 2017 Pazar

Algoritma Soruları 009 - 3 ve 5'in katları

Seviye : Başlangıç

Kullanıcıdan alınan sayının içinde bulanan 3 ve 5'in katları olan sayıları ve toplamları bularak ekrana basınız?

Açıklma : Kullanıcıdan 16 rakamı alınmış olsun, bu sayı içindeki;

3' ün katları : 3, 6, 9, 12, 15' dir.
5'in katları : 5, 10, 15' dir.

Tüm sayıların toplamı : 3 + 6 + 9 + 12 +15 + 5 + 10 + 15 =  75