/i/Yazılım

Umuyoruz ki geleceğin yazılımcıları bu altinciden çıkacak!
    başlık yok! burası bom boş!
  1. 1.
    +26
    burada arkadaslar degigib yontemlerle programciligi anlatti, cok guzel de anlattilar. ben de bu islere uzun yillar once girmis ve gotunun killari kadayif olmus bir abiniz olarak kendimce programciligi anlatayim dedim.

    bu arada ben burada belli bir dili ve teknolojiyi anlatmayacagim, onu belirteyim. ama hangi dil, platform, teknoloji kullanirsaniz kullanin, temel prensip aynidir.

    programcilik nedir?


    programcilik insan beyni ile bilgisayarin islemcisi arasinda bir iletisim kurarak, ona istedigimizi yaptirmaktir. bunu basarmak icin bilgisayarin beynine, onun anlayacagi sekilde konusmayi ogrenmeliyiz. iste derdimizi bilgisayara anlatmaya, programcilik diyoruz. bunun icin bilgisayarin islem yapma, yani dusunme seklini anlamamiz gerekir.

    bilgisayar ve beynin farki nedir?


    insan beyni yuksek bir muhakeme yetenegine sahiptir. ornegin yaninizda calisan bir ciraga, sadece bakkaldan sut al gel demeniz yeterlidir. yaninizdaki cirak, sutu bakkalda bulacagini, almak icin para verecegini, para ustunu getirecegini ve nasil yuruyeceginden sutu nasil dusurmeden getirecegine kadar herseyi muhakeme eder. ama para ustunu aldiginda miktarin dogru oldugunu anlamak icin saymasi zaman alacaktir. belki ne kadar sut veya hangi markaoldugunu unutacaktir.

    bilgisayara sut al gel dediginizde, ona sut alma islemini ayrintilarina kadar anlatmaniz gerekmektedir. yuru demek yetmez, once sag ayagini, sonra sol ayagini at. bu islemi otuz kere yapinca sola don oradaki kapidan don ve masanin basindaki adama "sut almak istiyorum" diye butun ayrintilari ile anlatmaniz gerekmektedir. ama bilgisayarin para ustunu saymasi saniyenin binde biri (milisecond) surmeyecektir ve ne istediginizi asla unutmayacaktir. eger bakkal bilgisayara "o sutten kalmadi baskasini vereyim mi?" diye sordugu anda ise calismasi duracaktir. cunku boyle bi durumda ne yapacagi ona anlatilmamistir. muhakeme yetenegini kullanarak "o zaman su marka sutten ver" diyemez.

    iste bastan gercek hayatta cikabilecek butun ayrintilari dusunup, bu durumda ne yapacagini soylemek, programcinin isidir.
    ···
  2. 2.
    +6
    karmagib olmasin diye basitlestiriyorum, java bilenler ziplamasin. once alisveris ile ilgili mantigi ogretiyoruz.

    public Alisveris{

    alisverisListesi;
    para = 0;
    fiyat = 0;
    alinanUrun;

    paraAl(miktar){
    para = miktar;
    }

    alisverisListesineEkle(urun){
    alisverisListesi. ekle(malzeme);
    }

    satinAl(){
    fiyat = bakkalaFiyatiSor();
    bakkalaParayiVer(para);
    alinanUrun = bakkaldanUrunAl();
    para = bakkaldanParaUstunuAl();
    }

    }

    gordugunuz gibi bakkalaFiyatiSor(); bakkalaParayiVer(para); bakkaldanUrunAl(); bakkaldanParaUstunuAl(); mantiklari programimizin icerisinde tanimli degil cunku ona biz karar veremeyiz. bu programimizin gercek hayatla iliskisini tasvir ediyor. bu websitesine giren bir kullanici da olabilir, bir sensor, elektronik devre de olabilir, bir veritabani da olabilir, baska bir program da olabilir.
    ···
  3. 3.
    +4
    bilgisayarla iletisim kurmanin zorluklari oldugu gibi kolayliklari da vardir. mesela muhakeme yetenegi olmadigindan siz ne dersiniz onu yapacaktir. ayrica hafizasina yazdigi birseyi asla unutmayacak ve binlerce kere hatasiz yapacaktir. simdi giderek daha teknik konulara giricem.

    class, function ve degiskenler


    bilgisayarla iletisim kurdugumuz dile programlama dili diyoruz. her dil genelde, class, sinif ve degiskenler uzerine insa edilmistir. bunun amaci bilgisayara bir kere ogrettigimiz seyi, tekrar tekrar kullanabilmemiz ve ogretmek istedigimiz butunu hiyerargib bir sekilde duzenlememizi saglamaktir. simdi ciragin sut alma konusuna donelim ve bir program yazalim. dedigim gibi ciraga sut al demeden once ona sut almak icin gereken hersey ogretmemiz gerekir. oncelikle programimizi temel islevsellikleri aciklayan class lara bolelim. son olarak da ogrettiklerimizi kullanacak bir class a ihtiyacimiz olacak.

    SutAlanCirak programi

    Class Alisveris
    Class BakkalaGitmek
    Class Cirak

    temel olarak ciragin yapacagi isleri ve cikari olusturduk. daha sonra her class in icine programlamak istedigimiz mantigi ve saklamamiz gereken degerleri ekleyelim. ben okunabilirlik acisindan java dilini kullanicam. bu kucuk ornekten sonra da sizinle sohbet eden kucuk ornek bir program yazicaz.
    ···
    1. 1.
      +1
      güzel anlatıyorsun panpa.
      ···
  4. 4.
    +3
    public BakkalaGitmek{
    bakkalinAdresi;
    isyerininAdresi;

    bakkalinAdresiniAl(adres){
    bakkalinAdresi = adres;
    }

    isyerininAdresiniAl(adres){
    isyerininAdresi = adres;
    }

    bakkalaGit(){
    git(bakkalinAdresi);
    }

    isyerineDon(){
    git(isyerininAdresi);
    }

    }

    son olarak bu iki mantik demetini ciragin kullanmasi gerekiyor. Ama ciragin da ihtiyaci olan mantik sekillerini duzenli olarak kullanabilecegi bi tanima ihtiyac var. dikkat edin, programcilikta bu mantik demetleri arasinda bir hiyerarsi vardir. simdi programlayacagimiz cirak hem bakkala gitmeyi hem de alisveris yapmayi daha once tanimladigimiz mantiklar sayesinde kullanacak.

    public Cirak{
    alisveris = new Alisveris();
    bakkal = new BakkalaGitmek();
    alisverisYapGel(){
    bakkal. bakkalaGit();
    alisveris. satinAl();
    bakkal. isyerineDon();
    return alisveris. alinanUrun();
    }
    }

    simdi ciragi bakkala sut almaya gonderiyoruz

    cirak = new Cirak();
    //yuz lira verdik
    cirak. alisveris.paraAl(100);
    //ne alacagini soyledik
    cirak. alisveris.alisverisListesineEkle(süt);
    //bakkalin adresini verdik
    cirak. bakkal.bakkalinAdresiniAl("kosebasindaki kohne dukkan");
    //isyerinin adresin ver calistigi yeri bile bilmiyo mal
    cirak. bakkal.isyerininAdresiniAl("hergun calistigin yer iste amk");
    //ve gonderiyoruz elemani
    süt = cirak. alisverisYapGel();

    simdi burada dikkat ederseniz, cirak bakkala gidip alisveris yapip dondukten sonra "return" kisminda alinan urunu geri verdi. yani cirak. alisverisYapGel(); fonksiyonu bize sonunda almak istedigimiz urun olarak dondu.
    ···
  5. 5.
    +2
    Cmd color b
    ···
  6. 6.
    +2
    simdi yavas yavas orneklerden gercek programciliga girelim. bunun icin java kullanicaz ama her dil aynidir. nasil ingilizce, almanca, turkce, cince bir dilse, zor veya koay, kullanisli veya degil, gecerli veya degil, her dil assagi yukari herseyi anlatmaya yeter. programciligi da boyle dusunun. kitabi hangi dilde yazdiginiz onemli degil, onemli olan en iyi konustugunuz dilde ve iyi yazmanizdir.
    ···
  7. 7.
    +2
    Okumayin bilgisayar oldum
    ···
  8. 8.
    +1
    Algoritma...
    Bu arada cp bu daha önce bir sitede okumuştum bunu
    ···
    1. 1.
      +5
      bul nerede okuduysan koy buraya, sana paypaldan 500€ hemen cikartiyorum. cikartmayan en adi huur cocugudur.
      ···
      1. 1.
        -3
        Tam bu olmayabilir emin değilim ama çok benziyordu c# anlatıyor du
        ···
      2. 2.
        -5
        Ve şimdi onla uğraşacak zamanım yok yatıp uyumak istiyorum yarın okul var :-)
        ···
  9. 9.
    +1

    degiskenler (variables)


    degiskenler, bizim programin icinde kullandigimiz her turlu deger veya mantigi temsil edebilirler.

    var a = 3; //sayi (integer) olabilirler
    var b = "3"; //yazi (string) olabilirler
    var c = true; //bir hukmun dogru veya yanlis oldugunu belirleyebilirler

    sizin de daha kolay deneyebilmeniz icin javascript ile devam edecegim. javascript de diger diller gibi programciligin temel prensiplerini icinde barindirir. simdi f12 ye basip console yazan kisma su kodlari yazin (her satirdan sonra enter'a basin);

    var a = 3;
    var b = "3";
    a+a;

    console size 6 degerini verecektir. simdi diger degiskene bakalim.

    b+b;

    burada ise console size 33 degerini verecektir. bunun sebebi iki degiskenin tipinin ayri olmasidir. degisken a bir sayi oldugu icin onunla matematiksel islemleri yapabilirsiniz ama b degerinin cevresindeki " ler sayesinde bir yazi oldugu icin bilgisayar sadece iki yaziyi yanyana getirecektir ve size yine " ile cevrelenmis sekilde "33" degerini verecektir.
    ···
  10. 10.
    0
    reserved. güzel anlatım
    ···
  11. 11.
    0
    Rezervasyon
    ···
  12. 12.
    0
    degiskenlerden devam edelim. yukarda verdigim orneklere biraz aciklama getirmek istiyorum. yukaridaki orneklerde "var" kelimesini kullandik, bunun sebebi sudur. bir degiskenin degerini atamadan once olusturmamiz lazim. bunu da kullandigimiz dil javascript oldugu icin var ile yapiyoruz. daha sonra da ilk degerini veriyoruz. istersek once degiskeni olusturup sonra degerini de verebiliriz. acalim console u f12 ile;

    var a;
    a = "foo";
    a;

    gordugunuz gibi a nin degeri olusturulduktan sonra belirlendi. degiskeni var ile olusturmadan deger atarsak hata verir. bu var def vs gibi baska dillerde baska kelimeler ile olusturulabilir ama temel mantigi aynidir.

    degiskenlerin degerini atarken mutlaka kendimiz belirlemek zorunda degiliz. bu degeri bilgisayara da hesaplatabiliriz ki ilerde genelde bu degerleri bilgisayar hesaplayacak. bu arada a ve b degiskenleri hala hafizada saklandigi icin, yeni isimler verelim. acalim f12 ile console lari:

    var c = 3;
    var d = c+1;
    d;
    c = c-1;
    c;
    d;

    gordugunuz gibi d nin degeri 4 olarak belirlendi ve daha sonra yaptigimiz islemle c nin degeri 2 oldu. su onemli noktayi unutmayalim, d nin degerini atarken c yi kullandik, daha sonra c nin degerini degistirdik fakat d nin degeri degismedi. cunku degiskenin degeri atandigi anda hesaplandi. eger d nin degerinin her zaman c nin degerinden bir fazla olmasini istersek bunun icin degeri bir mantik tanimlayarak atamaliyiz. bu is icin de fonksiyonlari kullanmamiz gerekir. simdi ayni ornegi basit bir fonksiyonla yapicam, yarin da fonksiyonlar konusuna giricez. acalim simdi console u f12 ile:

    var e = 5;
    function yeniDeger(deger){
    return deger+1;
    }
    var f = yeniDeger(e);
    f;
    e = e-1;
    f;

    e nin degeri basta 5 olarak atandi ama f nin degerini bir mantik belirleyerek atadik. dogal olarak f nin degerini her istedigimizde bilgisayar f nin degerini yeniden hesaplayacaktir. o yuzden f nin degeri once 6 e nin degeri 5 ken e nin degerini bir eksiltip f yi tekrar istedigimizde f nin degeri de bir eksilip 5 oldu. simdi bir sonraki bolumde fonksiyonlari anlaticam. simdi kullandigim function(deger) kismina kafa yormayin. hepsini anlaticam.
    ···
  13. 13.
    0
    rezervasyon
    ···
  14. 14.
    0
    bilgisayara komut verdiğin dili bilgisayar nerden biliyor. o dili de mi programlamayla öğretiyorlar.
    ···
    1. 1.
      0
      guzel bir soru. direk bilgisayarin islemcisi uzerinde calisan diller vardir. mesela MASM, assembly, machine code. bunlara low level programming languages denir. bizim kullandigimiz diller sonucta yazdigimiz kodu islemcinin okuyabildigi dile cevirir. ayrica islemler tamamen byte degerleri uzerinden gerceklesir. yani yazi da olsa, rakam da olsa boolean (true false) da olsa islemcide hepsi byte olarak okunur yazilir.
      ···
      1. 1.
        0
        güzel cevap, teşekkürler. yazılımı hiç bilmeyen biri için hangi kaynağı önerirsin. kitap ya da site olabilir. ama hiç bir şey bilmiyor.
        ···
      2. 2.
        0
        google playda bi uygulama vardı c# öğreten
        ···
  15. 15.
    0
    reserve
    ···
  16. 16.
    0
    hocam çok iyi devam et
    ···
  17. 17.
    0
    =

    functions (fonksiyonlar)


    evet simdi fonksiyonlara bir giris yapalim. fonksiyonlar mantiksal parcalari tanimlar. javascriptte fonksiyonlari tanimlamak icin iki yontem vardir. tipki degiskenler gibi tanimlandiktan sonra hafizada kalirlar ve ihtiyaciniz oldugu zaman kullanirsiniz. tipki degiskeni tanimlamak icin var kelimesini kullandigimiz gibi, fonksiyonu tanimlamak icin de function kelimesini kullaniriz. acalim simdi f12 ile consolu. artik fonksiyonlara gectigimiz icin console u cok satirli haline getirirsek daha rahat olur. aslinda fonksiyon tek satirda da yazilabilir ama okunabilirlik acisindan cok satirli olmasi daha rahattir. evet console a iki ayri yontemle iki fonksiyon tanimlayalim ve calistiralim.

    function kopek(){
    alert("hav");
    }

    var kedi = function(){
    alert("miyav");
    }

    kopek();
    kedi();

    birincisinde fonksiyona isim vererek tanimladik, ikincisinde de fonksiyonu kedi degiskenine deger olarak atadik. degiskenlere fonksiyonu bir deger olarak atayabildigimizi daha once anlatmistik. gordugunuz gibi iki fonksiyon da calisti, kopek fonksiyonu hav dedi, kedi fonksiyonu da miyav dedi. aslinda kopek'de fonksiyonu dogal haliyle tanimladik, kedi fonksiyonunda da anonymous denen sekilde

    bu arada onemli biseye degineyim tekrar "yazi" eger bir yaziyi " isaretleri ile cevrelerseniz, bilgisayar onun bir yazi oldugunu anlar. eger cevrelemezseniz onun bir degisken oldugunu zanneder ve o degisken tanimli olmadigi icin hata verir. gordugunuz gibi bir fonksiyon su parcalardan olusur;
    ···
  18. 18.
    0
    hay amk boyle isin yazdigimin beste biri cikti, gerisi kesilmis. yarin devam ediyoruz gencler bu amk sitesini boyle abidik gubidik yazan arkadas da takip etsin bu yazi dizisini.
    ···
  19. 19.
    0
    Bu adam bu isi biliyor
    ···
  20. 20.
    0
    function selamVer(isim){
    alert("selam "+isim);
    };

    function: fonksiyonu olusturmak icin kullaniyoruz
    selamVer: fonksiyonun ismi
    (): fonksiyonda kullanilan parametrelerin virgulle ayrilarak kondugu bolum
    {}: fonksiyonun calistirmasi gereken mantigi tanimladigimiz bolum

    fonksiyon tanimlandiktan sonra (); kullanarak o fonksiyonu tekrar tekrar calistirabiliriz;

    function inci(){
    alert("inci");
    };

    inci();

    bu sekilde tanimladigimiz programlari calistiriyoruz.

    fonksiyonlar programciligin en onemli temelidir, hatta bir program ic ice gecmis fonksiyonlardan olusur bile diyebiliriz. ayrica karmagib bir fonksiyonu daha ufak fonksiyonlara ayirip birbirinin icinde de kullanabiliriz. simdi acalim yine console lari ve su satirlari yazalim;

    function cik(){
    alert("cik cik");
    }

    function kus(){
    cik();
    }
    kus();

    burada cik isimli fonksiyonu kus isimlli fonksiyonun icinde cagirdik. daha onceki bolumde bir degiskenin degerini return sozcugunu kullanarak fonksiyonla atamistik. fonksiyonlar bir islem, bir mantigi calistirdigi gibi bazi degerleri de geri verebilirler ayni zamanda degiskenlerin degerini de degistirebilir. ama degiskenlerin degeri de bir fonksiyon olabilir. simdi her ikisine de bakalim. acin bakim console u f12 ile;

    function sesVer(){
    return "do";
    }
    var x = sesVer();
    console.log(x);

    gordugunuz gibi fonksiyonun verdigi degeri bir degiskene atadik yani degiskenin degerini simdi return kullanmadan ayni isi yapalim. dikkat edin, islem yapacagimiz degiskeni fonksiyondan once tanimlamamiz lazim. aciyoruz consolelari:

    var x = "re";
    function degistir(){
    x = "mi";
    }

    console.log(x);

    spora gidiyorum, donuste devam edelim gencler. bugun fonksiyonlar konusunu iyibi isleyelim, temelimiz saglam olsun ondan sonra if else while for gibi statement lere giricez.
    ···