instagram twitter linkedin github youtube

8.11.17

JAVA DERSLERİ 6: Döngüler

Tekrar edilen bir işlemlerin uzun uzun yazmak yerine belirli komutlarla işleme alınır

While Döngüsü

While (koşul)
{
s1;
s2;
}

import java.util.*;
public class JavaApplication1 {
public static void main(String[] args){
int i=1;
while(i<=7){
    System.out.println("i="+i);
    i++;
}

 }

    } 

çıktı
i=1
i=2
i=3
i=4
i=5
i=6
i=7

Do-While Döngüsü

do{
...;
...;
}while (koşul)

ornek
birkaç sayının ortalamasını bulma

import java.util.*;
public class JavaApplication1 {

    public static void main(String[] args) {
        Scanner klavye=new Scanner(System.in);
        int sayac=0,sayi;
        double orta=0.0;
        do{
            System.out.println("Bir sonraki sayi");
             sayi=klavye.nextInt();
             if(sayi !=-999);
             {
                 orta=orta+sayi;
                 sayac++;
             }
        }while (sayi!=-999);
       
             if (sayac>0){
                 orta=orta/sayac;
                 System.out.println("Ortalama"+orta);
             }
             else
                System.out.println("Ortalama için veri eksik");

 }

    }   

 çıktı
Bir sonraki sayi
5
Bir sonraki sayi
7
Bir sonraki sayi
-999
Ortalama-329.0

For Döngüsü

for(Başlangıç ifadesi;koşul;yenileme ifadesi)
döngü gövdesi


örnek

import java.util.*;
public class JavaApplication1 {

    public static void main(String[] args) {
        int sayac;
        for(sayac=5;sayac>=1;sayac--)
            System.out.println(sayac);

 }

    }
çıktı
5
4
3
2
1

baklava

import java.util.*;
public class JavaApplication1 {

    public static void main(String[] args) {
        Scanner klavye=new Scanner(System.in);
        int i,j,k,m;
        System.out.print("sıra sayısını giriniz");
        m=klavye.nextInt();
        // kare
        for(i=1;i<=m;i++){
            for(j=1;j<=m;j++)
                System.out.print("*");
                System.out.println();
        }
        //alt üçgen
        for(i=1;i<=m;i++){
            for(j=1;j<=i;j++)
                System.out.print("*");
                System.out.println();
        }
            //baklava üstü
            for(i=1;i<=m;i++){
                for(k=1;k<=20;k++)
                    System.out.print(" ");
                for(j=1;j<=2*i-1;j++)
                    System.out.print("*");
                System.out.println();
            }
            //baklava altı
               for(i=m-1;i=>1;i--){
                   for(k=1;k<=20-i;k++;)
                   System.out.print(" ");
                   for(j=1;j<=2*i-1;j++)
                       System.out.print("*");
                   System.out.println();
               }

 }

    }   
çıktı
sıra sayısını giriniz:7
*******
*******
*******
*******
*******
*******
*******
*
**
***
****
*****
******
*******
                                                *
                                              ***
                                            *****
                                          *******
                                        *********
                                      ***********
                                     ************
                                      ***********
                                       *********
                                        *******
                                          *****
                                           ***
                                             *


                             













JAVA DERSLERİ 5: Akış Denetimi

Programda bir çok karar verme yapısı vardır bunları karşılaştırırken bir komut kullanmak gerekir bunun içinde if-else yapısı kullanılır.

IF-ELSE

İf komutu kendi başına kullanıldığı gibi else ile de kullanılır eğer tek koşul varsa tek başına kullanılır eğer birçok koşul varsa else kullanılır

if(koşul)
      deyim;

yada
if(koşul)
{
      deyim1;
      deyim2;
}

yada

if(koşul)
deyim1;
else
deyim2;

if(ifade1)
    Deyim1;
else if (ifade2)
    Deyim2;
else if (ifade3)
    Deyim3;
....
....
else

kısa bir örnek;

import java.util.*;
public class JavaApplication1 {

    public static void main(String[] args) {
        Scanner klavye=new Scanner(System.in);
        String ileti="FIRAT ÜNİVERSİTE BİLGİSAYAR MÜHENDİSLİĞİ";
        int uzunluk=ileti.length();
        if(uzunluk<=40) {
            System.out.println("Cümle uygundur");
        }
            else
            System.out.println("cümle uygun değildir");
       
           
    }   
}

Karşılaştırma ifadeleri ;

Matemetiksel İfade     Java gösterimi
 eşittir                             ==
 eşit değildir                   !=
 küçük eşittir                  <=
 büyük eşittir                 >=
 küçük                           <
 büyüktür                      >

javada mantık işlemleri

&& ve (and)
|| veya (or)
! değil (not)

Switch-case komutu

switch (denetim ifadesi) {
case case etiketi1:
...;
...;
break;
case case etiketi2;
...;
...;
break;
default:
...;
...;
break;


Örnekler

ikinci dereceden bir denklemin köklerini bulan Java ;

import java.util.Scanner;

public class IkinciDerece{
    public static void main(String args[]){
        Scanner giris = new Scanner(System.in);
        double a, b, c, x1, x2, delta;

        System.out.println("a: ");
        a=giris.nextDouble();

        System.out.println("b: ");
        b=giris.nextDouble();

        System.out.println("c: ");
        c=giris.nextDouble();

        delta = b * b - 4 * a * c;

        if (delta < 0) {
            System.out.println("Gercek kok yoktur. \n");
        }
        else if (delta == 0) {
            x1 = -b / (2 * a);
            System.out.println("x1=x2=" + x1);
        }
        else {
            x1 = (-b + Math.sqrt(delta)) / (2 * a);
            x2 = (-b - Math.sqrt(delta)) / (2 * a);

            System.out.println("x1=" + x1);
            System.out.println("x2=" + x2);
        }
    }

}

Öğrencinin aldığı nota göre hangi harf notunu aldığını gösteren programı yazınız.
(Şartlar : 50 ve altı FF , 50-60 arası CC , 60-80 arası BB , 80 üstü AA olarak al) 
import java.util.*;
public class JavaApplication1 {

    public static void main(String[] args) {
 Scanner klavye=new Scanner(System.in);
int not=klavye.nextInt();
if(not>0 && not<50) {
System.out.println("FF");
}else if(not>50 && not<60)
{
System.out.println("CC");
}
else if(not>60 && not<80) {
System.out.println("BB");
}else if(not>80) {
System.out.println("AA aldınız tebrikler");
}else {
System.out.println("Geçerli aralıkta değerler giriniz.");
}

 }

    }   










6.11.17

Simulink

 Simulink bize karmaşık sistemleri tasarlama ve similasyon yapma olanağı vermektedir. Mühendislik sistemlerinde simulasyonun önemi gün geçtikçe  artmaktadır.Sistemlerin tasarımında büyük oranda bilgisayar similasyonlarından faydalanmakta, mümkün olduğunda tasarımın test aşamaları da bilgisayarlar yardımıyla yapılmaktadır.Bu da prototiplere olan ihtiyacı azaltarak maliyetlerin büyük oranda düşmesini sağlamaktadır.
    Günümüzde mühendislik alanında en çok kullanılan programlardan birisi MATLAB'dir.MATLAB'in tanıtımı için MATLAB'e giriş adlı yazıma bakabilirsiniz.Simulink, MATLAB ile birlikte bütünleşik olarak çalışan bir similasyon ortamıdır.Sürekli zamanlı ve ayrık zamanlı sistemleri ,veya her ikisini de içeren hibrit sistemleri desteklemektedir. İçinde birçok altsistemi blok olarak  barındırdığından sürükle-bırak yöntemiyle birçok sistemi bir-kaç dakikada kurarak simule edebilir,değişik durumlardaki cevabını test edebilirsiniz.Bunun için Simulink bizlere zengin bir blok kütüphanesi sunmaktadır.Electronics Workbench gibi programları kullanarak devre simulasyonu yapmış arkadaşlar Simulink'i kullanmak konusunda pek zorluk çekmeyeceklerdir.Çünkü kullanımı benzer şekilde blokların yerleştirilip birbirine bağlanması şeklindedir.
    Öncelikle Simulink ile ilgili temel kavramları tanıyalım:

    Simulink Kütüphanesi:
    Simulink'i çalıştırdığınızda karşınıza Simulink kütüphanesi gelecektir.Simulasyon yaparken kullanacağımız bloklar kategorilere ayrılmış biçimde burada bulunmaktadır.


    Blok Diyagramlar
    Her bir blok sürekli zamanda ya da ayrık zamanda çıkış veren temel bir dinamik sistemi ifade eder.Hatlar blokların giriş ve çıkışları arasındaki bağlantıları gösterir.Blok diyagramdaki her bir blok belirli bir tip bloğun örneğidir.Bloğun tipi ,bloğun giriş ve çıkışları, durumları ve zaman arasındaki bağıntıyı belirler.


    Bloklar
    Bloklar Simulink’in nasıl simule edileceğini bildiği temel dinamik sistemleri temsil eder.Blokları programlama dillerinde kullanılan fonksiyonlara benzetebiliriz.Her bir dinamik sistem için yazılmış hazır fonksiyonlardır.Bize kalan sadece bu hazır fonksiyonları kullanarak sistemimizi kurmaktır.Bir blok şu bileşenlerin birinden veya birkaçından oluşur:Giriş kümesi,durum kümesi ve çıkış kümesi.


    Durumlar:
    Bloklar durumlara sahip olabilirler.Durum, bloğun çıkışını belirleyen ve şimdiki değeri, bloğun önceki durumları ve/veya girişlerinin fonksiyonu olan bir değişkendir.Duruma sahip olan bir blok şimdiki durumunu belirlemek için geçmiş değerlerini kaydetmek zorundadır......Duruma sahip olan bloklara , hafızalı blok denilir.Çünkü bu bloklar o anki değerlerini belirlemek için geçmiş değerlerini kaydetmek zorundadırlar.

    Simulink İntegral alıcı (integrator) bloğu duruma sahip bloklara bir örnektir.İntegrator bloğu similasyonun başlangıcından o anki zamana kadar giriş sinyalinin integralini çıkış olarak verir.O anki zaman adımındaki integral değeri, integrator bloğunun geçmişteki giriş değerlerine bağlıdır.Dolayısıyla integral,integrator bloğunun durumudur.Durumlu bloklara bir başka örnek de Simulink Hafıza (memory) bloğudur.Hafıza bloğu girişlerindeki değerleri o anda kaydedip ileriki bir zamanda çıkışına verir.Hafıza bloğunun durumları önceki giriş değerleridir.

    Simulink Kazanç bloğu (Gain) durumsuz bloklara bir örnektir.Kazanç bloğu girişindeki değeri kazanç adı verilen bir sabitle çarparak çıkışına verir.Kazanç bloğunun çıkışı tamamiyle o anki giriş değeri ve sabit olan kazanç ile belirlenir.Dolayısıla Kazanç bloğunun durumu yoktur.Diğer bazı durumsuz bloklar Toplam (Sum) ve Çarpım (product) bloklarıdır.Bu blokların çıkışları tamamiyle girişlerinin bir fonkiyonudur.(İlki için toplam,ikincisi için çarpımdır)Dolayısıyla bu blokların durumları yoktur.

    Blok Parametreleri:
    Birçok standart bloğun anahtar özellikleri parametrik hale getirilmiştir.Örneğin, Kazanç Bloğunun (Gain) kazancı bir parametredir.Her bir parametrik blok size blok parametrelerini  belirleyebileceğiniz bir diyalog kutusu sunar.Blok parametrelerini belirlemek için MATLAB ifadeleri kullanabilirsiniz.Simulink bu ifadeleri simulasyonu çalıştırmadan önce hesaplar.Parametrelerin değerlerini simulasyon esnasında değiştirebilirsiniz.Bu  parametrenin en uygun değerini interaktif bir şekilde belirlemenize olanak sunar.
     Parametrik bloklar etkili bir biçimde benzer blok ailelerini temsil ederler.Örneğin, bir model oluşutururken modeldeki her bir Kazanç (Gain) blokunun kazanç değerlerini ayrı ayrı belirleyerek her bir Kazanç Bloğunun farklı davranmasını sağlayabilirsiniz.Blokların parametrik hale getirilmesi , her bir standart bloğun bir blok ailesini temsil etmesini sağlayarak, Simulink’in modelleme gücünü artırmaktadır.

     Değiştirilebilir Parametreler:
    Birçok blok parametresi değiştirilebilirdir.Simulasyon yapılırken değeri değiştirilebilen parametreler değiştirilebilir parametrelerdir.Örneğin Kazanç bloğunun kazanç parametresi değiştirilebilir parametredir.Simulasyon çalışırken bloğun kazancını değiştirebilirsiniz.Bir parametre değiştirilebilir değilse ve similasyon çalışıyorsa Simulink parametreyi ayarlayan diyalog kutusunu engeller.Simulink belirledikleriniz dışında bütün parametreleri değiştirilemez olarak belirlemenize izin verir.Bu  büyük modellerin çalıştırılmasını hızlandırı ve modelinizden daha hızlı bir şekilde kod üretilmesini sağlar...


    Altsistemler:
    Simulink bize, kompleks sistemleri ,blok diyagramları ile temsil edilen birbirine bağlı altsistemler şeklinde modellemenize izin verir.Altsistemleri Simulink altsistem(subsysytem) bloğuyla ve model editörüyle oluşturabilirsiniz.Alt sistemleri  ana sistemlere istediğiniz derinliğe kadar gömerek hiyeraiş modeller yaratabilirsiniz.Bir geçiş durumu olduğunda,bir tetikleme veya yetkilendirme girişi geldiğinde çalıştırılan şarta bağlı çalışan alt sistemler oluşturabilirsiniz.
 

   Sinyaller:
    Simulink sinyal terimini blokların çıkış değerlerini belirtmekte kullanır.Simulink size sinyal ismi,veri tipi( örn: 8-bit,16-bit veya 32-bit tamsayı) ,numerik tip (Reel veya kompleks), ve boyutluluk(tek boyutlu veya 2-boyutlu dizi)  gibi sinyal özelliklerini belirlemenize olanak verir.Birçok blok herhangi bir veri veya numerik tipte ve boyutta çıkışı kabul edebilir.Diğerleri de kabul edebildikleri sinyal özellikleri ile ilgili kısıtlamalar taşırlar.

Veri Tipleri:
Veri tipi, verinin bilgisayardaki temsiline verilen addır.Simulink MATLAB’te desteklenen int8,double ve boolean gibi herhangi bir dahili veri tipini kullanabilir.Bunlara ek olarak  Simulink kendine özgü iki veri tipi daha tanımlar:

    •Simulink.Parameter
    •Simulink.Signal

    Bu Simulink ‘e özgü veri tipleri diğer genel veri tipleri ile tutulamayan Simulink’e özgü bazı bilgilerin tutulmasında kullanılırlar.Simulink size Simulin veri objeleri denilen Simulink veri tiplerini kullanarak parametre değerleri ve sinyal olarak kullanılmak üzere yeni veri tipleri yaratmanıza imkan verir.Her iki Simulink veri tipini de kullanarak kendi modellerinize özgü bilgileri saklayabilen yeni ver tipleri yaratabilirsiniz.

Internet Hızı Hesaplama Hakkında Bilinmesi Gerekenler!

Byte : Büyük (B) ile gösterilir. 1024 Byte 1 Kilobyte'tır.
Bit : Küçük (b) ile gösterilir. 8 Bit 1 Byte yapar.


Çoğumuzun internet hızı 8 Mbps. Ben de bu hızın üstünden örnekler verecem.
Önce 8 Megabit hızını kilobit'e dönüştürelim. 8 İle çarpıyoruz : 8 Mbps x 1024 = |8192 Kbps|

İlk olarak Kbps ne demektir ;

Kbps açılımı : Kilo bit per second ( saniye başına kilobit )
Çoğu arkadaşım bunu şöyle sanardı : Kilobyte per second , yani : Saniye başına 1 Kilobyte (dağlar kadar fark var )


Arkadaşlarımın düşüncesine göre, internet hızlarının indirme esnasında 8192 Kbps'ye kadar çıkabileceğini sanmaktadırlar.
Ama asıl olan hesaplama şu şekildedir ;

Kilobit'i Kilobyte'a dönüştürmemiz gerekiyor ki çıkabileceğimiz en yüksek hızı doğru bir şekilde bulalım.

Bunu yapmak için Kbps değerini 8'e bölerek KBps'ye çevirmiş oluruz. (Unutmayın b= Bit B= Byte)

8192 Kbps / 8Bit = 1024 KBps. Yani internet hızı 8 Megabit olan arkadaşlar en yüksek bu hızı göreceklerdir.
(Konami serverlarından 1000KBps'yi gördüm şahsen )


7.36 Mbps x 1024 = 7536 Kbps.. Bunu da Kilobyte'A dönüştürürsek : 7536 Kbps / 8 Bit = 942 KBps. en yüksek indirme hızı bu sayıyı geçmeyecektir.

4096 Kbps / 8 Bit = Görecekleri en yüksek hız 512 KBps.
2048 Kbps / 8 bit = Görecekleri en yüksek hız 256 KBps

{alt}

Bu her kimse neredeyse saniyede 4 Megabyte ile indirme yapıyor. Bizim insanlarımız ise neden 8192'ye çıkmıyo bu diye yanıyolar  ::D
Şimdi gelelim upload hızını hesaplamaya. Ne kadar yavaş olduğumuzu göreceğiz..


SpeedTest.Net sonuçlarıma göre, standart olarak aynı sonucu alıyorum. Yani : 0.67 Mbps..
Kbps'ye dönüştürelim. 0.67 Mbps x 1024 = 686 Kbps ve bunu da Kilobyte'a çevirirsek : 686 Kbps / 8 Bit = 85 Kilobyte'cık.

Kbps nedir?

Data geçiş hızını ölçmek için kullanılan ölçüm birimine verilen addır ve bir saniye içerisinde gerçekleşen veri akış hızını temsil eder. Bu ifadeye genellikle adsl hızları belirtilirken rastlarız.
1 Kbps, 1 saniyede gerçekleştirilen Kilobit değerinden veri aktarımıdır (Kbit per second).  Bir çok web sitesinde bu ifade yanlış olarak anlatılmaktadır. 1 Kbps' nin saniyede 1 KB (1024 byte) veri aktarımı anlamına geldiği söylenir fakat bu doğru değildir.
KiloByte ve KiloBit ifadelerinin kısaltmalarının aynı harflerden oluşmasıyla bu karışıklık meydana gelmektedir. Oysaki resmi bir kullanımdan tam olarak bahsedemesek de KiloByte "KB" ile KiloBit "Kb" ile gösterilmektedir.
Kbps olarak gördüğümüz ifade ise 1 saniyede yapılan Kilobit'lik veri aktarımıdır, Kilobyte değildir! Bilgisayar kullanıcıları KiloBit deyimine pek aşina olmadığından bunu KiloByte olarak değerlendirip bu yanlış anlaşılmanın büyümesine neden olmuştur.
Bilgisayarlarda veri aktarımı sinyallerle olur ve spesifik bir zaman aralığında aktarılan her sinyal 1 Bit' tir. Ama en basitinden ekranda latin alfabesinden bir harf oluşturmak için 8 defa bu sinyalden gönderilmesi gerekir.
Unicode karakter olmayan dillerde örneğin latin alfabelerinde her karakter 1 byte yani 8 bit' dir.
Dolayısı ile bir ADSL hattının hızı size max 20Mbs olarak ifade edildiyse, bu saniyede maksimum 20Mbit / 8bit = 250 KiloByte veri aktarabileceği anlamına gelir ki bu maksimum çıkabileceği değerdir. Bu değeri etkileyen bir çok faktör mevcuttur. Bulunduğunuz yerin alt yapısından tutun da dosya indirdiğiniz server'ın band genişliğine kadar. Örneğin bir websitesinden indirdiğiniz programı bulunduğu sunucu size saniyede 10MB olarak gönderiyorsa sizin veri transferi hızınız 50MB da olsa saniyede 10MB' dan daha fazla alamazsınız.