sıfırdan başlayarak algoritma ve programlama öğrenme · pdf filesekizinci...

Download Sıfırdan başlayarak algoritma ve programlama öğrenme · PDF fileSekizinci bölüm, birçok programlama dili tarafından ortak kullanılan mimarileri ve yapıları anlatmaktadır

If you can't read please download the document

Upload: lamnhan

Post on 05-Feb-2018

275 views

Category:

Documents


21 download

TRANSCRIPT

  • Sfrdan balayarak algoritma ve programlama renme

    Emre YAZICIYapay Zeka Mhendisi

    Programlama Uzman - MCP2008

    1

  • Ltfen, kitabn herhangi bir sayfasn ap okumaya balamaynz. Bunun yerine, aklamalar blmn okuyunuz.

    nsz Programlama artk dnyann vazgeilmezi haline geldi. Nereye gidersek gidelim, hangi ii yapacak olursak olalm bilgisayarsz ve bilgisayarlar yneten programlarsz bir sistemle karlaamyoruz. Tabi, lkemiz iin bu durum sz konusu deildir. lkemiz daha tam olarak, biliim sektrne girememitir. lkemiz, biliim sektrn, biliim sektrndeki deiiklikleri, yaklak olarak 5-6 yl geriden izlemektetir. Bilime nem veremediimiz iin bilimi kullanan deil bilimin kulland bir toplum haline geliyoruz ve bilime sonradan sahip olmak iin ok byk bedeller dyoruz. Sonu olarak bilim, bize, olduundan ok pahalya satlyor, stelik bu rnleri gelitirebilecek kapasiteye sahip olmamza ramen...

    Yurtdnda gelitirilen sistemlerin (sadece) bazlar Trkler tarafndan gelitiriliyor olsa da, hemen hemen hepsi Trkler tarafndan gelitirilebilir. te beyin gn nleyip, teknolojileri Trkiyede gelitirebilmek iin, mmkn olabilecek en yksek bilgi ve donanmlara sahip olmalyz.

    Trkiye'de hemen hemen hibir ( yabanc ) byk irketin, byk bir Aratrma - Gelitirme ekibi yoktur. Yabanc byk irketlerin bazlar, Trkiye'yi sadece rnleri satabilecekleri bir pazar olarak grmektedirler. Ayn Osmanl mparatorluuna uygulanan kapitilasyonlarda olduu gibi...

    Dnyada ki en zeki milletler arasnda; Trkler, Hindular, Ruslar bulunur. Ancak malesef en alkanlar arasnda ok gerideyiz. te burada, dmanmz, "almamazlk - tembellik" olarak belirlemeli ve ona kar savamalyz...

    2

  • Hedef Kitle

    Bu kitabn hedef kitlesinde bir limitleme - kstlama bulunmamaktadr. Ancak, kitab okuyacak kiilerin, bilgisayar kullanmay (bilgisayar ap kapamay, ofis programlamarn kulllanmay, baz ayarlar ve dosya ilemlerini yapabilmeyi) bildiklerini varsayyorum. Eer, niversitede bu blm (programlama - yazlm mhendislii) okuyacaksanz, tavsiyem bu kitab okuyarak, niversiteye gitmenizdir. Eer ikinci bir meslek sahibi olmak istiyorsanz veya daha sonra programlamay okumay planlyorsanz, bu kitap sizin iin en uygun olandr.

    Ayrca, bu kitab okuyacaklarn, matematik konusunda bilgili olmas sorun yaamyor olmas gerekmektedir. Aslnda, matematikte bilgili olunmas bu kitabn deil programlamann artdr. Matematikte bilinmesi gereken konular; Saylar, Kmeler , Drt Ilem, ss ifadeler , Mantk, Fonksiyonlar , Say tabanlar, Toplam sembol, arpm sembol, Matris, Diziler - Seriler .... Eer bu konularda ok ciddi probleminiz var ise, size bu konular zerinde gz gezdirmenizi tavsiye ederim. nemli olan o konu zerinde soru zmeniz deil, konuyu anlam olmanzdr.

    Yazlm Mhendisi: Normalde, bir projeyi tasarlayan, algoritmik (mantk ura gerektiren) kodlar yazan, veritabann tasarlayan, sistemin ak emasn hazrlayan, test ilemlerini gerekletiren benzeri planlama ilemlerini gerekletiren

    kiiye verilen nvandr.

    Kodcu: Tasarlanm olan programn kodunu yazan Hazrlanm emaya ve tasarm yapan Veri girii kontrl yapan

    kiiye verilen isimdir.

    Programlamac: Yazlm mhendisi ile kodcu arasnda olan ve her ikisininde yapm olduu ilemleri gerekletiren kiiye verilen isimdir. Bu kitap, yukarda belirtilen kategorideki kii iin tasarlanmtr.

    3

  • Yazar Hakknda

    Uzun sredir programlama yapmaktaym. Benim, lisede balayan programlama akm imdiye kadar hi snmedi. Liseden sonra, ngiltere'de Yapay Zeka zerine lisans renimi aldm. Bu srada beynin alma yaps ile ilgili rendiklerimi gelitirdim. Daha sonra, bu kitab bir okuyucunun nasl daha kolay reneceini hesaplayarak, planlayarak tasarladm.

    Birok farkl dilde, yzlerce, proje gelitirdim. Hep farkl sistemler zerinde altm iin, ok iyi tecrbeye sahip oldum. Tecrbe, ayn konu, ayn program, ayn i stnde yllarca almak deildir. Bu yllarca alma esnasnda, ayn kategoride, farkl konular ilemek, farkl programlar yazmak ve farkl iler zerinde almaktr.

    Uzun sre, baz programlama ile alakal forumlarda moderatrlk, bazlarnda yazarlk yaptm. Ancak bu sre zarfnda grdm ki, insanlarn birou programlamay bilmiyorlar. MSNimi her gn biri ekliyor, soru soruyordu. Sorunun cevabn versem bile, ben bunu yapamam, siz yapp gnderebilir misiniz diyenler oluyordu. Programlamay mantksal olarak deil yzeysel olarak rendiklerinden dolay, bir sistem kurabilmek onlar iin zor oluyordu. Benim amacm, in ataszndeki gibi, balk tutmay retmektir.

    Trkiyeye, hem bilgisayarn, hemde alanm olan yapay zekann faydalarn, nemlerini anlatmak iin ok uratm. Hla da urayorum. Bunun iin yaptklarmn, yazdm makalelerin haricinde sonunda bir kitap yazmaya karar verdim.

    nl yazar Balzac'n dedii gibi, "bilginin efendisi olmak iin, almann klesi olmak gerekir". Ama ben sizi, kle olmaktan, bu kitab yazarak kurtaryorum. Sayfa saysnn az olmas bu kitabn iinde ok fazla bilgi olmadn dndrr. Ancak kitapta, ok fazla rnek bulunmad iin sayfa says azdr. Birok kitapta yzlerce sayfa bulunur ama ou rnektir. Size bir konuyu tam anlatamadklar iin bol bol rnek sunarlarki aradaki fark kapansn, ayrca, kitap kaln olunca, okuyucular da, "bu iyi bir yazar" ifadesi olusun.

    Emre YAZICI

    4

  • Kitap Hakknda

    Size garanti edebilirim ki, eer bu ii yapabilecekseniz, en iyisi, bu kitab okuyarak balamaktr. Daha nceden renenlerin de, rendiklerini, unutmasn ve batan salam bir ekilde tekrar anlamalarn neririm, tabi eer yeterli olmadklarn dnyor iseler.

    Teknolojinin ayaklarmzn altnda, bize hizmet iin bekledii bir ada, onu en iyi ekilde kullanabilmek, en byk gereksinimlerden biridir. Unutmayalm ki, hereyi - her bilgiyi bilemeyiz ama her grdmz (konumuzla alakal) anlayabiliyorsak, o zaman her konuya adapte olabiliriz ve her ii yapabiliriz demektir.

    Kitabn, teorik arlkl olduunu syleyebilirim ve hadi hemen kod yazmaya balayalm eklinde dncelere sahip olan okurlarn olacan tahmin edebiliyorum. Ancak, eer pratik tabanl renmeye balarsanz, sistem kuramazsnz. Bu nedenle, teori + pratik eklinde yaplacak olan ilerleme ile birlikte, en iyi sonuca ularsnz.

    5

  • indekiler Blm 1: Algoritma

    Birinci blm, programlama ve birok mhendislik sisteminin taban olan, algoritmann ne olduunu, yapsn, nasl ve ne amala kullanldn, nasl algoritma kurulabildiini, programlamann ne olduunu nasl yapabileceini anlatmaktadr.

    Anahtar szckler: algoritma, programlama, program, programlayabilme, programlanabilme, programlama emas, analiz, lowest limitation, operatr, analiz, planlama, WBS, AND, flow chart, pseudo kod

    Blm 2: Programlama ilkeleri

    kinci blm, temel programlama ilkelerini, (yle ki bu temel programlama ilkeleri; deikenler, matematiksel ifadeler, koul ifadeleri, parantezler, dng, toplam sembol, arpm sembol, fonksiyonlar, nermeleri iermektedir) anlatmaktadr.

    Anahtar szckler: matematik, deiken parantez, toplam sembol, arpm sembol, dng, mantk, nermeler, koul ifadeleri, fonksyionlar

    Blm 3: Beyin ve programlama

    nc blm, beynin alma yapsn, bu alma yapsna gre programlamann nasl mmkn olabileceini, snf ve nesne kavramn, inheritance sub super class ifadelerini anlatmaktadr.

    Anahtar szckler: beyin, class, object, snf, nesne, inheritance, super class, sub class

    Blm 4: Bilgisayar sistemleri

    Drdnc blm, bilgisayar sistemlerini; bit, byte, 1-0, boolean mantn, ilemcinin alma yapsn, programlama dillerinin kategorilerini zelliklerini, programlama dili aalarn, programlama dili yapsn anlatmaktadr.

    Anahtar szckler: ilemci, byte, bit, boolean, dil, hafza, ram, rom, hex

    Blm 5: Programlama iin gerekli dier bilgiler

    Beinci blm, programlama iin gerekli dier bilgiler olan; veri trlerini, programsal bloklar, syntax, operatrleri, prosedrleri, argmanlar, fonksyionlar, iaretleri, deiken tanmlamay anlatmaktadr.

    Anahtar szckler: syntax, veri trleri, blok, operatr, prosedr, argman, fonksiyon, iaret, deiken, enum, structure, interface

    Blm 6: Veritaban

    Altnc blm, veritaban yapsn, veritaban ynetim sistemlerini, tablo alan ilikisini anlatmaktadr.

    Anahtar szckler: sql, tablo, alan, kolon, e-r, entity, relation, dbms

    Blm 7: Test ve Hata ayklama

    6

  • Yedinci blm, programlarn test edilmesini, test yntemlerini, test ileminde dikkat edilmesi gereken hususlar, hata ayklamay anlatmaktadr.

    Anahtar szckler: blackbox, whitebox, debug

    Blm 8: Mimari

    Sekizinci blm, birok programlama dili tarafndan ortak kullanlan mimarileri ve yaplar anlatmaktadr.

    Anahtar szckler: threading, oklu ilem, sockets

    7

  • 1 Algoritmaerik1 Algoritma1.1 Programlam retimi1.2 Algoritma1.2.1 Algoritmaya giri1.2.2 Kimler algoritma kurabilir?1.3 Programlama1.3.1 Programlama Program1.3.3 Programlar ne ie yarar?1.3.4 Programlanabilme & Programlayabilme1.3.5 Programlama iin gerekenler1.3.6 Programlama nasl mmkndr?1.4 Programlama emas1.4.1 lem emas1.4.2 Analiz1.4.3 Operatr1.4.4 Lowest Limitation1.4.5 Anlama1.4.6 Kod yazm1.5 Planlama1.5.1 Geni ve kapsaml sistemler1.5.2 WBS1.5.3 AND1.5.4 Flow chart1.5.5 Pseudo Kod1.6 Programlama ksa tarihi ve yaps1.7 Efektif Programlama1.8 rnek Programlama

    Amalar Birinci blm, programlama ve birok mhendislik sisteminin

    taban olan, algoritmann ne olduunu, yapsn, nasl ve ne amala kullanldn, nasl algoritma kurulabilindiini,

    programlamann ne olduunu, nasl yapabileceini programlamada kullanlan tasarm elemanlarn anlatmaktadr.

    Anahtar szckleralgoritma, programlama, program, programlayabilme, programlanabilme, programlama emas, analiz, lowest

    8

  • limitation, operatr, analiz, planlama, WBS, AND, flow chart, pseudo kod

    9

  • 1.1 Programlama retimin bilgi

    Ltfen, herhangi bir blm, s