Bilişim Teknolojileri - 18 - Yapısal Programlama Temelleri

Embed Size (px)

Citation preview

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    1/54

    T.C.

    MLL ETM BAKANLII

    MEGEP(MESLEK ETM VE RETM SSTEMNN

    GLENDRLMES PROJES)

    BLM TEKNOLOJLER

    YAPISAL PROGRAMLAMA TEMELLER

    ANKARA 2007

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    2/54

    Milli Eitim Bakanl tarafndan gelitirilen modller;

    Talim ve Terbiye Kurulu Bakanlnn 02.06.2006 tarih ve 269 sayl Karar ileonaylanan, Mesleki ve Teknik Eitim Okul ve Kurumlar nda kademeli olarakyaygnlatrlan 42 alan ve 192 dala ait ereve retim programlarndaamalanan mesleki yeterlikleri kazandrmaya ynelik gelitirilmi retimmateryalleridir (Ders Notlardr).

    Modller, bireylere mesleki yeterlik kazandrmak ve bireysel renmeyerehberlik etmek amacyla renme materyali olarak hazrlanm, denenmek vegelitirilmek zere Mesleki ve Teknik Eitim Okul ve Kurumlarndauygulanmaya balanmtr.

    Modller teknolojik gelimelere paralel olarak, amalanan yeterliikazandrmak koulu ile eitim retim srasnda gelitirilebilir ve yaplmasnerilen deiiklikler Bakanlkta ilgili birime bildirilir.

    rgn ve yaygn eitim kurumlar, iletmeler ve kendi kendine mesleki yeterlikkazanmak isteyen bireyler modllere internet zerinden ulalabilirler.

    Baslm modller, eitim kurumlarnda rencilere cretsiz olarak datlr.

    Modller hibir ekilde ticari amala kullanlamaz ve cret karlndasatlamaz.

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    3/54

    i

    AIKLAMALAR ....................................................................................................................iiGR .......................................................................................................................................1RENME FAALYET - 1 ...................................................................................................31. ALT PROGRAMLAR .........................................................................................................3

    1.1. Modller Halinde Programlama ...............................................................................31.2. Alt Program Tanmlama ...........................................................................................71.3. Alt Program Kesmek ve Deer Gndermek ............................................................81.4. Deer Aktarm ....................................................................................................... 10UYGULAMA FAALYET .......................................................................................... 12LME VE DEERLENDRME ................................................................................13

    RENME FAALYET - 2 ................................................................................................. 142. KULLANICI ARABRM ................................................................................................ 14

    2.1. Kullanc Arabiriminde Pencere Tasarm .............................................................. 152.2. rnek Uygulama.....................................................................................................15UYGULAMA FAALYET .......................................................................................... 20LME VE DEERLENDRME ................................................................................21

    RENME FAALYET - 3 ................................................................................................. 223. HATA GDERME..............................................................................................................22

    3.1. Kod Bcei Nedir? ................................................................................................. 223.2. Yazm Hatalar ........................................................................................................233.3. alma Zaman Hatalar ........................................................................................ 24

    3.4. Mantk Hatalar....................................................................................................... 243.5. Admlamak .............................................................................................................25UYGULAMA FAALYET .......................................................................................... 29LME VE DEERLENDRME ................................................................................30

    RENME FAALYET - 4 ................................................................................................. 314. DOSYALAMA ..................................................................................................................31

    4.1. Metin Dosyalar ....................................................................................................... 314.2. Rasgele Eriimli Dosyalar ...................................................................................... 334.3. kilik Dosyalar ........................................................................................................35UYGULAMA FAALYET .......................................................................................... 37LME VE DEERLENDRME ................................................................................38

    MODL DEERLENDRME ..............................................................................................39CEVAP ANAHTARLARI .....................................................................................................40SZLK ................................................................................................................................ 41KOD RNEKLER................................................................................................................42NERLEN KAYNAKLAR..................................................................................................49KAYNAKA .........................................................................................................................50

    NDEKLER

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    4/54

    ii

    AIKLAMALARKOD 481BB0026

    ALAN Biliim Teknolojileri

    DAL/MESLEK Alan Ortak

    MODLN ADI Yapsal Programlama Temelleri

    MODLN TANIMIProgramlama dilinde alt program yazm , hata dzeltme vedosyalama ile ilgili retim materyalidir.

    SRE 40/16

    N KOUL Ak Diyagramlar modln alm olmak.

    YETERLK Alt programlar ve dosyalarla almaya hazrlk yapmak

    MODLN AMACI

    Genel AmaGerekli ortam salandnda, alt program

    yazabilecek, kullanc dostu arabirimleri yapabilecek vehata dzeltme yntemleri ile hatalar dzeltebileceksiniz.Amalar

    1. Alt program yazabileceksiniz.2. Kullanc arabirimi yapabileceksiniz.3. Program test edip, hatalarn dzeltebileceksiniz.4. Dosyaya bilgi yazmay ve okumay yapabileceksiniz.

    ETM RETMORTAMLARI VEDONANIMLARI

    Bilgisayar laboratuvar ve bu ortamda bulunanbilgisayar, lisansl iletim sistemi program ve akdiyagram sembolleri ile ilgili panolar.

    LME VEDEERLENDRME

    Her faaliyet sonrasnda o faaliyetle ilgili

    deerlendirme sorular ile kendi kendinizideerlendireceksiniz. Modl iinde ve sonunda verilenretici sorularla edindiiniz bilgileri pekitirecek,uygulama rneklerini ve testleri gerekli sre iindetamamlayarak etkili renmeyi gerekletireceksiniz.Srasyla aratrma yaparak, grup almalarna katlarak veen son aamada alan retmenlerine danarak lme vedeerlendirme uygulamalarn gerekletiriniz.

    AIKLAMALAR

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    5/54

    1

    GR

    Sevgili renci,

    Her eyden nce herkes bir programlama dilini renebilir. Bilgisayar programlamayksek bir zek ve matematik bilgisi gerektirmez. Sadece asla vazgememe sabr verenme istei yeterlidir.

    Programlama bir hnerdir. Baz insanlar doal olarak dierlerinden daha iyidir, amaherkes pratik yaparak iyi olabilir. Baaramamaktan korkmak yerine, kendinizi bu maharetevererek, renmek iin uran. Programlama elencelidir, fakat sinir bozucu olabilir vezamannzn da boa gemesine neden olabilir. Bu sebeple bu modlleri takip ederek, en azsknt ve en yksek memnuniyet ile programlamay reneceiz.

    Bu modl ile kazanacanz konular alt program yazmak, kullanc dostu arabirimyapmak, hata dzeltme yntemleri ile hatalar dzeltme ve dosyalamadr. Modlbitirdiinizde anlamadnz yerleri tekrar okuyup uygulaynz.

    Konular kapsaml olarak, derinlemesine anlatlmamtr. Buzdann sadece stngryorsunuz. Ne kadar ok uygulama ve aratrma yaparsanz kendinizi o kadargelitirirsiniz, ilerletirsiniz.

    Her programlama dilinin kendine has kurallar bulunmaktadr. Bu kurallar kimi zamanbirbirine benzerken kimi zaman farkllklar gstermektedir. Kurallarn anlalr olmas herzaman programc lar tarafndan istenen bir zelliktir. Siz de bu modlde eitli programlamadillerinden rnekler grerek i in zn kavramanz salanacaktr.

    Belli yerlerde geen aratrma konular iin nerilen Kaynaklar ksmndan yardmalmay unutmaynz.

    GR

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    6/54

    2

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    7/54

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    8/54

    4

    Sral komutlar u ana kadar yaptmz programlarda ifade ettik. Bu tip komutlar

    alt alta yazlr, en sonunda program sonlandrlr.

    Tabii ki bir program, deien durumlara gre baka ilemler de yaplabilmelidir. BunuEer komutu ile yapabiliriz.

    Program ierisinde belli ilemlerin devaml tekrar edilerek ilenmesi gerekebilir.Bunlar Dng, ken komutlar ile yapabiliriz.

    Dier programclar sizin programnz anlayabilir ise, kendileri de deitirebilirler vegelitirebilirler. Tabi bu kural sizin iin daha ok geerlidir. Tek kme hlinde tm programyazmak kumdan kale yapmak gibidir. Eninde sonunda bir yerden kecektir.

    Byk programlar genellikle kk programlarn (alt program da denir) birlemesiile yaplr. Alt programlar baka programclar yazabilir. En sonunda altndan eminolunan kk programlar kopyala yaptr ile birletirilir. Bunu bir evin tulalarnabenzetebiliriz. Birine bir ey olunca tm ev kp gitmez. Bozuk ksm tekrar yazlarakyerine konur. Bu yntem ile programmza olan gvenirlii artrrz.

    Pozitif dilinde sral komut rnei

    BALAAd:metin;yazstb("lk Pozitif Programmz");Ad=bilgigirii("sminizi giriniz ");

    yazstb("Selam, "+Ad);SON

    Pozitif dilinde dallanma komut rnei

    BALAAd:metin;yazstb("Eer kullanm");Ad=bilgigirii("sminizi giriniz ");

    Eer(Ad="Ali");{yazstb("Selam, "+Ad);}

    deilse(Ad"Ali");

    {yazstb(Ad+" sen de kimsin?");}

    SON

    Pozitif dilinde dng komut rnei

    BALAi:say;yazstb("Dng komutu, ift saylar geriye doru sral");dng(i=10,i>=0,-2);

    {yazstb(i);}

    SON

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    9/54

    5

    Alt programlara modl diyebiliriz. Alt programlar hlinde yaz larak yaplan

    programlamaya modler programlama denir.imdiye kadar yaplan programlar tek para halindeki ana programdan oluuyordu.

    Sadece bir eit i, grev yapabilir hlde idi.

    Sk kullanlan komut kmelerini alt program hline getirebiliriz. Bu alt programlarkod yazmnda genellikle ana programn st ksmna yazlr. Deiken adlandrmas ileayn kurallar erevesinde isimlendirilir ve alt programa neler yollanaca, alt programdanneler dnecei belirlenir. Aklama satrlar ile nemli noktalar belirtebilir, alt programlarnne i e yaradn anlatabiliriz.

    ekil 1.1: Alt program yazmak

    1. Bala (Ana Program)2. Oku; a, b3. Hesapla4. Yaz; sonuc5. Bitir

    rneklerdeki gibi alt programlar aslnda ana programda olduu gibi, belli birbalang ve geri dn blou iinde olan programlardr. Alt programlar arlmadklarsrece alt rlamazlar.

    Bala

    Bitir

    2 saygiriniz: a, b

    Sonucugster

    Hesapla

    Hesapla

    Geri Dn

    sonuc = a^4 2*a*b

    1. Hesapla2. sonuc = a ^ 4 2 * a * b3. Geri Dn

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    10/54

    6

    Alt programn ismini gerektii yerlere yazp, ardmzda program ak o program

    ksmna ynelir. Alt programda ilemler tamamlannca ana program kald yerden devameder.Alt programlar ayr dosya olarak kaydetmeyiz. Hl tek dosya hlinde, ana program

    ve alt programlarmzdan oluan bir programmz vardr.

    deal olarak bir alt program ekrana sacak kadar uzun olmaldr. Bylece anlalr,okunakl ve hata ayklamas kolay programlar yazabiliriz. Hatal olan satrlarn tespiti busayede kolaylar.

    Not:ekillerdeki siyah olmayan dier mavi ve krmz renklerdeki oklar ema izerken sizinyapmanza gerek yoktur. Alt programa gidi ve dn belirtmek iin yaplmtr.

    ekil 1.2: Crocodile Technology program ile alt program yapm

    Baz dillerde alt program kelime olarak fonksiyon ile ayn anlamdadr. C dilindesadece fonksiyon yazabilirsiniz. Basic dilinde ise prosedr ve fonksiyon yapm benzermantkla yazlr. Terimler deiik olsa da temel ayndr.

    Prosedr: Bir ilem blou altrl r, ama deer dndrmez. Fonksiyon: ine deer yollanr, ilenir ve kendi adna bir sonu deeri

    dndrr.

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    11/54

    7

    1.2. Alt Program Tanmlama

    Her alt programn yapt ii ksaca ifade eden uygun bir ismi olmaldr. inde en azbir satr komut bulunan bu alt programlara kendi tanmladmz komutlar diyebiliriz.nceki derslerde grdmz matematik ve metin komutlar ise programlama dilindetanml hazr alt programlardr.

    Yazdmz mini programlarda baz n deerlerin girilmesi gerekebilir. Bunu bayrakyarndaki atletlerin birbirlerine bayraklar vermelerine benzetebiliriz. Genellikle gnderilenbilgileri parantez iine alrz.

    Bir alt programa birden fazla parametre yollanabilir. Parametreler aslnda bildiimizdeikenlerdir. simlendirme ve tr seimini dzgn yapmamz gereklidir.

    Klasik programlama rnei:

    Oku; "rencinin adn giriniz ", rAd

    Oku; "rencinin soyadn giriniz ", rSoyadOku; "rencinin dier bilgilerini giriniz", rDetayYaz; rAd & rSoyad & rDetayOku; "Velinin adn giriniz ", veliAdOku; "Velinin soyadn giriniz ", veliSoyad

    Oku; "Velinin dier bilgilerini giriniz", veliDetayYaz; veliAd & veliSoyad & veliDetay

    Tekrar eden ksmlar modler (prosedr) hle getirelim:

    Prosedr VeriGirii

    Oku; "Kiinin adn giriniz ", kiiAdOku; "Kiinin soyadn giriniz ", kiiSoyadOku; "Kiinin dier bilgilerini giriniz", kiiDetayYaz; kiiAd & kiiSoyad & kiiDetay

    Prosedr Bitti

    BalaYaz; "renci iin"

    VeriGiriiYaz; "Veli iin"VeriGirii

    Bitir

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    12/54

    8

    1.3. Alt Program Kesmek ve Deer Gndermek

    Dnglerde olduu gibi, baz artlar meydana geldiinde alt programn sonlanp, anaprograma dnmesi gerekebilir. Genellikle "k exit" komutu ile alt programlar istenilenyerden bitirilebilir.

    ekil 1.3: Alt programdan istenmeyen ihtimalde kmak

    ekil 1.3deki rnekte acaba b deikeni, 0 olunca ekrana ne sonu yazlr?Alt program iine deer gnderme (parametreli prosedr) rnei:

    Prosedr VeriGirii(Metin mesaj)

    Oku; mesaj & " adn giriniz ", kiiAdOku; mesaj & " soyadn giriniz ", kiiSoyadOku; mesaj & " dier bilgilerini giriniz ", kiiDetayYaz; kiiAd & kiiSoyad & kiiDetay

    Prosedr Bitti

    BalaVeriGirii("rencinin")VeriGirii("Velininin")

    Bitir

    Alt programdan ana programa deer gnderme (fonksiyon) rnei:

    Bala

    Bitir

    2 saygiriniz: a, b

    sonucdeerini

    ster

    Hesapla

    Hesapla

    Geri Dn

    sonuc = a / b

    b = 00a blnemez

    hata mesajn

    gster

    Evet

    Hayr

    k

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    13/54

    9

    rnek 1:

    Fonksiyon VeriGirii(Metin mesaj)Oku; mesaj & " adn giriniz ", kiiAd

    Oku; mesaj & " soyadn giriniz ", kiiSoyadOku; mesaj & " dier bilgilerini giriniz ", kiiDetayVeriGirii = k iiAd & kiiSoyad & kiiDetay

    Fonksiyon Bitti

    BalaYaz; VeriGirii("rencin")Yaz; VeriGirii("Velinin")

    Bitir

    rnek 2:

    Fonksiyon Toplama(Saysal say1, say2)Toplama = say1 + s a y2

    Fonksiyon Bitti

    Fonksiyon Blme(Saysal say1, say2)Eer say2 = 0 se

    Blme = "Hata"k //alttaki blme ilemi yaplmamaldr

    Eer BittiBlme = say1 / say2

    Fonksiyon Bitti

    Bala

    Yaz; Toplama(2, 4) //Ekrana 6 yazarYaz; Blme(3, 0) //Ekrana "Hata" yazar

    Bitir

    rnek 3:

    Prosedr Onaylama(Saysal Giri)Eer Giri

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    14/54

    10

    rnek 4:

    Fonksiyon Onaylama(Metin a, b)Eer (a = "Ynetici") V e ( b = "qweasd_123") se

    Onaylama = "Tamam" //Eer ynetici ise onay verilirEer Bitti

    Fonksiyon Bitti

    Bala

    Metin isim, ifre, sonuOku; "Kullanc isminizi giriniz ", isimOku; "ifrenizi giriniz ", ifresonu = Onayla(isim, ifre)Eer sonu = "Tamam" se

    Yaz; "Kaytlara ulaabilirsiniz"

    DeilseYaz; "Kaytlara ulaamazsnz!"

    Eer BittiBitir

    1.4. Deer Aktarm

    Alt programa veri ya deer ya da referans olarak aktarlr. Parametreler anaprogram ile alt program arasnda veri akn salayan bir kpr kurulmasn salar.

    Deer olarak aktarmak demek, veriyi gnderen deiken ile veriyi alan deikeninhafzada farkl yerlerde olmasdr. Aralarnda bir yaltm vardr. Ana program ile alt program

    arasnda tek ynde veri ak vardr.Not: ki deikenin ayn deikenmi gibi deerinin gncellenmesi istenir ise Basic dilinde ByRef,ByVal veya Pascal Var gibi terimleri kullanlr. C dilinde ise iaretiler ile deerleri gnceltutabiliriz. Ana program ile alt program arasnda ift ynl veri alverii iin dildeki uygun yntemikullanmanz gerekir.

    ekil 1.4: Alt programlar ve ana programn emas

    Alt programda tanmlanan deikenlere yerel deikenler; kod ksmnda en sttetanml, tm programda geerli deikenlere global deikenler denir. Alt programlar ileglobal deikenler ile de haberleme salanabilir. Fakat program bydke, ok saydadeiken tanmlamak zorunda kalnaca iin, bu daha karmak bir yntem haline gelir.

    Parametrelerde tanmlanan deikenler, yerel deikenler ile ayn mre sahiptir. Altprogram bitince, hafzadan silinirler. Global deikenler ise program kapannca, hafzadan

    silinirler. Aadaki rnekte global deikenler ile alt program ve ana programnhaberlemesi vardr.

    Ana Program

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    15/54

    11

    rnek:

    Saysal notuMetin derece

    Prosedr KademeHesab

    Eer notu > 80 sederece = "A"k //deer aktarm bitince prosedrden klr

    Eer BittiEer notu > 60 se

    derece = "B"

    kEer BittiEer notu > 40 se

    derece = "C"k

    Eer BittiEer notu > 20 se //Son ihtimalde zaten prosedrden klr

    derece = "D"Deilse

    derece = "E"

    Eer BittiProsedr Bitti

    BalaOku; "renci notunu giriniz", notu

    KademeHesab

    Yaz; dereceBitir

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    16/54

    12

    UYGULAMA FAALYET

    lem Basamaklar neriler1. Sral olarak program komutlarn akemasn yapnz.

    Mesela, kullancdan doum yln isteyipekrana yan bulan program yapabilirsiniz

    2. Dallanan programlama yntemi ileprogram yaznz.

    Mesela, kullancya sevdii spor trsorulup ekrana ka kii ile oynandngsteren program yapabilirsiniz.

    3. Dng komutlar ile program yaznz. Kullancdan 5 adet not girii istenir veekrana bu saylarn ortalamas gsterilebilir.

    4. Programda sk altrlan komutbloklarn bir alt programa toplaynz.

    Hangi saynn arpm tablosu ekranakacan alt program hlindeyapabilirsiniz.

    5. Alt programlara uygun bir tekil isimveriniz.

    sim seiminde programlama dilininkomutlarn (File, Not) kullanmamalyz.

    6. Bir alt programa deer yollaynz vedeer dndrnz.

    Girilen bir il plaka deerinin uygun olupolmad (1 ile 81 aras) deerini kontroleden program yapnz.

    UYGULAMA FAALYET

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    17/54

    13

    LME VE DEERLENDRME

    OBJEKTF TESTLER (LME SORULARI)

    Aadaki sorulardan, sonunda parantez olanlar doru / yanl sorulardr. Verilenifadeye gre parantez iine doru ise D, yanl ise Y yaznz. kl sorularda uygun kkiaretleyiniz.

    1. Bir programn bir balangc vardr, birok kere sonlandrlmas olabilir. ( )

    2. Dier programclarn yaptmz programlarmz anlamasna gerek yoktur. ( )

    3. Her programn bir ana program ksm vardr. ( )

    4. Hangisi ile deer dndren bir alt program yapabiliriz?A) ProsedrB)Fonksiyon

    5. ie komut yazmnda ne yapmamalyz?A) Tm komutlar ayn hizada yazlmaldrB) Blok balang ve biti komutlarn yapmalyzC) lk kapatlmas gereken blok, en son yaplan blok olmaldr.

    D) Blok ama ve kapatma saylar birbirine eit olmaldr.

    6. Hangisi yapsal bir programlama komutu olarak kabul edilmez?A) DndrB) EerC) GitD) Durum

    LME VE DEERLENDRME

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    18/54

    14

    RENME FAALYET - 2

    Programnza kullanc dostu (user friendly) arabirim yapabileceksiniz.

    Bu faaliyet ncesinde hazrlk amal aada belirtilen aratrmafaaliyetlerini yapmalsnz.

    Bilgisayarnzda kurulu programlardan hangisinin arabirimi size daha kullanlgeliyor? MS-DOS pencereleri, Windows pencereleri ve web sayfalarnn ara yzlerini

    karlatrnz, farklarn belirleyiniz. Oyunlarda, oyuncu ile dier nesneler (para ekme makinesi, bilgisayar, el

    bilgisayar, ifreli kaplar) arasnda nas l iletiim kuruluyor, rnek aratrnz.

    2. KULLANICI ARABRM

    Kullanc ile program arasnda iletiim kurulmasn salayan ara yze kullancarabirimi denir. Genellikle programn arabiriminde bilgilendirme nesneleri ve bilgi giriiiin gerekli olan nesneler bulunur. evremizdeki birok ara da bir arabirime sahiptir.Mesela asansr dme ve gsterge ksm, merdiven otomatii, mzik seti, televizyon,fotokopi makinesi Bazlar ok kullanl ve kullanc dostu iken, bazlar ok karmakolabilir.

    AMA

    ARATIRMA

    RENME FAALYET2

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    19/54

    15

    2.1. Kullanc Arabiriminde Pencere Tasarm

    letim sisteminizdeki pencereleri incelediyseniz, baz kullanl noktalar dikkatiniziekmitir.

    Pencereler olabildiince sade ve anlalr bir yazm dili ile tasarlanr. Her pencerenin balk ubuunda programn ismi ve yardmc bilgiler yaz ldr. Kapat veya simge durumuna kltmek iin dmeler vardr. Pencereye smayan nesneleri kaydrma ubuklar ile denetleyebiliriz. Durum ubuu ile kullancya ekstra bilgilendirme salanr. Benzer grevli dmeler sa tarafta veya pencerenin altnda yan yana hizaldr. Menler sol st kenardan seilebilir

    Belli yerlerde sa tu menleri ile hzl ilemler yaplabilir. Klavye ksayollar ile fare kullanmadan hzl ilem yaplabilir. Klavye ve fare birlikte kullanlarak kolay ilem yaplabilir. Kritik anlarda kullancdan onay istenir. Hata mesajlar kullancy rahatsz etmeyecek ekilde sunulur. Fare simgeleri ile programn ne tr ilem yapt belirtilir. Kullancnn dikkatini ekmesi iin uygun renkler ve yaz tipi seilmitir. Kullancnn uygulamay zelletirebilmesi iin seenekler salanr.

    Pencerenizin (form da denir) boyutlar ve ilk alyeri gz rahatsz etmemelidir. Kullanc en az hareket veya

    aba ile istediini hzl bir ekilde elde etmelidir. Fitts*

    kanunu bunu belirlemitir.

    imdiye kadar yaplan grsel programlama rneklerinde genellikle Visual Basic veYunus dili kullanlmtr. Birok programlama dili grsel arabirim yapabilmemize imknsalar. Sk kullanlan programlama dillerine dier rnekler Delphi ve Visual Cdir.

    letim sisteminden bamsz yazlm yapmak isterseniz, Java, Python ve webprogramcl ile ilgilenebilirsiniz. imdilik burada Visual Basic ile arabirim oluturmadenemesi yapacaz.

    2.2. rnek Uygulama

    Yeni bir Windows Uygulamas aalm. lk admda projenizin ad sorulur. Varsaylanisimle brakabilirsiniz.

    imdilik iinde program kodu olmayan, sadece grnt olarak alan bir programyapalm. u ana kadar kod yazm ile ilgili birok rnek yaptk, grnt ile ilgilenmemitik.

    * Paul Fitts, 1954 y lnda yaymlad ergonomi ile ilgili kitabnda, bir ilemi tamamlamak iin gereklihareketleri forml hlinde belirlemitir.

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    20/54

    16

    lk dneceimiz konu, ne ile ilgili program yapacamzdr. rnein dosya, dzen

    ve yardm mens olan basit bir not defteri tasarlayalm. Bo formu uygun bir boyutagetirdikten sonra gerekli nesneleri Toolbox penceresinden alyoruz.

    Nesnelerimiz: Button1: Kapat dmesi Combobox1: Dosya tr semek iin (iinde metin ve zengin metin yazyor) Label1: Dosya tr yaz s RichEdit1: Not defterinin asl nesnesidir, iine yaz yazlacak ksmdr StatusStrip1: lk programmz yazl MenuStrip1: Ana meny bununla hazrlayacaz ContextMenuStrip1: RichEdit1e sa tu mens ekleyeceiz

    Resim 2.1: Yeni bir proje amak

    Nesneler ve zellikleri ok sayda olduu iin burada tek tek zelliklerinianlatamayacaz. Deneme yan lma ile ok gzel zellikler kefedebilirsiniz.

    Basit bir not defterinde ne ok nesne varm deil mi? Kim bilir kod ksm ka satrdr,ya da programc ka saat program ile uramtr. Saatlerce uraan programc, programeer kendi istei ile cretsiz olarak yaynlyor ise abalarn takdir etmek, maddi ve maneviolarak destek vermek gereklidir.

    Programc , ticari olarak program yazyor, ama yazlm kaakyollardan, kanuni olmayan yollar ile oaltlyor ise, hem programc hemde kullanc zarar grr. Yaz lmlarn da dier rnlerdeki gibi, garantisi,destek ve ykseltme seenekleri vardr. Kaak olarak kullanlanyazlmda bu hizmetler yoktur. Ayn haklar mzik, kitap, resim ve film

    gibi zerinde emek harcanm rnlerde de geerlidir.

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    21/54

    17

    Resim 2.2: te programnzn ilk hli olan bo bir form

    Resim 2.3: Programn tasarm hli

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    22/54

    18

    Resim 2.4: Programmzn altrld an

    Grnt olarak hazr hle gelince artk programlama ksmna geilebilir. Tmnesneleri, tm komutlar kullanmanz gerekmez, zaten nemli olan bu deildir. ok sevilenprogramlar incelerseniz baz larnn ok sade olduunu grrsnz. Mesela Biliim

    Szl gibi. Sadece aranacak kelime giriliyor ve anlam elde ediliyor.

    Metin kutusu, dme, etiket, resim, onay kutusu, alr kutu, liste kutusu, radyodmesi, menler, grup kutusu web siteleri dhil her programda genelde vardr.

    Resim 2.5: Sk kullanlan nesneler

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    23/54

    19

    Resim 2.6: Bir alarm ve stc sistemi arabirimi yapm; ak emasn ve resmini inceleyiniz

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    24/54

    20

    UYGULAMA FAALYET

    lem Basamaklar neriler1.Yeni bir proje anz. Proje ilk aldnda bo bir form vardr.2.Pencerenin boyut ve koordinatlarnuygun hale getiriniz.

    ok byk veya ok kk olmamaldr. Ekrann tuhaf bir yerinde a lmamaldr. Dier ekran znrlklerinde nasl

    grndn kontrol ediniz.3.Pencere ve iindeki nesneleri uygunbir ekilde renklendiriniz.

    Zt renkler kullannz. Siyah ile turuncu, sarile kahverengi gibi

    Siyah ile gri, yeil ile mavi ok okunakszolabilir.

    4.Kullancya yardmc ksa yolmenleri tasarlaynz.

    Baka bir programdaki mennn benzeriniyapmay deneyebilirsiniz.

    5.Pencere zerine temel kontrolleriekleyiniz.

    Nesneleri form zerine ekleyerek deneyiniz.

    6.Kontrollere program yaznz. Bir dmeye basit bir komut ekleyiniz.

    UYGULAMA FAALYET

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    25/54

    21

    LME VE DEERLENDRME

    OBJEKTF TESTLER (LME SORULARI)

    Aadaki sorulardan, sonunda parantez olanlar doru / yanl sorulardr. Verilenifadeye gre parantez iine doru ise D, yanl ise Y yaznz. kl sorularda uygun kkiaretleyiniz.

    1. MS-DOS uygulamalarnda kullanc arabirimi yoktur. ( )

    2. Kullanc arabirimi herkesin anlayaca ekilde sade olmaldr. ( )

    3. Ergonomik program olmaz, istediimiz biimde form tasarlayabiliriz. ( )

    4. Kullanc arabirimi yapmnda hangisi yaplmamaldr?A) Kullanc hatalar mesajlarn grmemelidir.B) Kullancya devaml, mesaj kutular ile soru sormamaldr.C) Kullanc uygulamay zelletirebilmelidir.D) Gizli ksayollar yaparak kullanll artrmalyz.

    5. Hangi dilin grsel programlama srm yoktur?A) C

    B) PascalC) BasicD) Tupol

    6. Hangi nesne ile yaz olarak giri yaplamaz?A) Metin kutusuB) Al r kutuC) Yaz kutusuD) Liste kutusu

    LME VE DEERLENDRME

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    26/54

    22

    RENME FAALYET - 3

    Programda oluan hatalar giderme yollarn reneceksiniz.

    Sevgili renci, bu faaliyet ncesinde hazrlk amal aadabelirtilen aratrma faaliyetlerini yapmalsnz.

    Sadece yazlmda m hatalar vardr? imdiye kadar meydanagelen donanm hatalarn aratrnz. Mesela, 1994 ylnda intel Pentium

    ilemcilerde FDIV blme hatas bulunmutu. Bilgisayarda oluan ilgin hata mesajlarn aratrnz. Mesela, ken bir iletim

    sisteminde (mavi ekran) neler yazyor olabilir?

    3. HATA GDERME

    Programda bir komut yanl yazlabilir, yanl yere yazlabilir, bir satr yanllkla iptaledilmi olabilir. Bilgisayar bu durumda ne yapacan bilemez ve program ker. Problemliprogramlara, bcekli program da denir.

    3.1. Kod Bcei Nedir?

    Birok bcek zararsz grnen kk problemlere sebep olabilirler. Asl sorun olanbcekler, tm programn almasna engel olanlardr. Bu bcekler programn son hlininsat (piyasaya kma) tarihini erteleyebilir.

    Bir bcein olumasnn birok sebebi olabilir:

    Yazm hatalar: Komutun yanl yaz lmas, unutulan noktalama iaretleri gibiderleyicinin hemen bulduu, kolay dzeltilebilen hatalardr.

    alma an hatalar: Program hatasz derlendikten ve altrldktan sonrameydana gelen hatalardr. Genellikle kullancnn istenmeyen veri girmesisonucu oluur. Programc nlemini nceden almaldr.

    Mantk hatalar: Program normalde alyor gzkr, ama istenmeyen sonu

    retir. Hatay dzeltmek veya olumasn engellemek, programcnnprogramlama yeteneine baldr.

    AMA

    ARATIRMA

    RENME FAALYET3

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    27/54

    23

    3.2. Yazm Hatalar

    Yazm hatalarn, dikkatle kodlar gzden geirerek ve program derlenirken verdiihata mesajn iyi inceleyerek zebilirsiniz.

    Resim 3.1: Pascal derleyicisi neden hata mesaj vermitir?

    Derleyici genellikle hatal yere imleci getirerek, dzeltmenizi bekler. Resim 3.1deki

    gibi hatann kodu ve trn belirtir. Ama hata mesaj verilmeyen hatalarda ne olacak?Aadaki hikyeyi okuyunuz.

    Yazm Hatas1962 ylnda NASA, Vens gezegenini incelemek iin Mariner 1 adl uydu

    gnderdi. Uyduyu tayan roket hatal rota izlemeye balamas zerine, patlatlmak zorundakalnd.

    Bir hikyeye gre, bu bir Dngden kaynaklanmt. Normalde 3 kere dnmesigereken dng, basit bir yazm hatas sebebi ile hataya yol amt.

    FOR I = 1.3 'I deikenine 1.3 deerini atar

    FOR I = 1,3 'I dng deikenidir, 1den 3e kadar dng yaplr

    Bu muhtemel hatal komut kullanm NASAnn milyon dolarlk roketi kaybetmesinesebep olmutu.

    Sk yaplan bir hata da deiken isimlendirmesinde yaplr. Program bydke, stsatrlarda kullanlan deiken ad, yanllkla dier yerlerde farkl kullanlabilir. Garipdeerlerle karlarsanz deiken isimlerini kontrol ediniz. Aslnda ksa ve ifreli gibideiken ad vermemek en iyisidir.

    SalkTherac25, radyasyon ile tedavi makinesi olarak tasarlamt. Hastalara yava yava

    radyasyon veriyordu. Ar radyasyon verilmemesi iin yazlm ile denetlenen bir gvenlikmekanizmas vard. Ama yazlmda lmcl bir hatavard.

    Makinenin 2 durumlu alma prensibi vard: Xn ve elektron n. X n durumu, yksek seviyeenerji seviyesine sahipti. Yksek seviye enerji,elektron durumu ile dengelenmeye alyordu.Yanllkla X n durumunda kalnnca, hastalara arradyasyon verilerek yanklar ve ardndan lme sebepolunabiliyordu.

    Sonunda hata bulundu, ama birok hasta iin artk ok geti!

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    28/54

    24

    3.3. alma Zaman Hatalar

    alma zaman hatalar ok sinsidir. Programc program iyi test etmemi ise, hataykullancnn kefetmesine frsat vermi demektir. Test etmek iin kendimizi kullancnnyerine koyup, her deiiklikten sonra bol bol denemeler yapmamz gereklidir. U deerlerdenenmelidir.

    Ya bilgisinin girilmesi iin 203 bin gibi bir say, bir de sfr rakamn deneyin. Hattanegatif ve ondalkl say lar deneyin. Bakalm ne sonular veriliyor:

    Resim 3.2: Program test deerleri ile deniyoruz

    3.4. Mantk Hatalar

    Mantk hatalarnn tespiti ok zordur. Parantez hatas, unutulan karakterleri bulmakdaha kolaydr. Hatta programnz test edip alma zaman hatalar rahatlkla bulunabilir.

    Program yazarken doru kabul ettiiniz komutlar, aslnda baka ekilde alyorolabilir. Bu hatalar gidermek iin Admlama ve iz srme teknikleri ile hatalar

    yakalanmaya allr.

    Visual Basic dilinde rnek

    Private Sub Button2_Click

    Dim yas As Byte 'Byte deiken 0-255 aras deer alryas = TextBox1.TextMessageBox.Show("Yanz " & Val(yas))

    End Sub

    Hata sebebi

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    29/54

    25

    3.5. Admlamak

    Satr olarak admlamak programn daha iyi anlalmasn salar. Admlama sayesindenormalde ok hzl alan program, yava yava ya da duraklatlarak izleyebiliriz.

    Basic dilinde admlama komutlar:

    Run: altr Break All: altrmaya ara ver veya kr Stop: Program tamamen durdur

    Step Into: Adm adm altr Step Over: Alt programlara girmeden admla Step Out: Alt programdan kp, hzlca ana

    programa dnlr, admlamaya devam edilir

    Admlarken ve deikenleri izlerken genellikle hatann gzden kamas mmknolmaz. Admlama srasnda nerede olduunuzu renklendirilen satrdan anlayabilirsiniz, uanda 9. satrda program donmu bir ekilde bekliyor:

    Resim 3.3: Admlama ve deikenleri izleme

    ok uzun programlarda ise hatann olduu tahmin edilen satra kadar admlamakyerine durak noktalar kullanlr.

    Stratejik Hata1982 ylnda ngiltere ile Arjantin arasnda yap lan

    Falkland adalar savanda, 37 ylda ilk kez ngilizler gemikaybetmilerdi.

    Her iki taraf Fransz rn olan Exocet fzelerikullanyordu. H.M.S. Sheffield isimli gemi, zerine gelendman fzelerini dost sanarak, hava savunma sisteminigemelerine izin verdi. Gemi birok ynden gelen fzelerlevuruldu. Kontrol odasnda yangn kt. Mrettebattan 20 askerld, 27 asker yaraland.

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    30/54

    26

    Hatann olduu tahmin edilen yere yakn durak noktas eklenir.

    Program normal altrlr.

    Durak noktasna gelindiinde, programlama diline otomatik olarak dnlr veo satr renklendirilir.

    Bundan sonras size kalyor, ister admlamaya devam edin, ister altrkomutu ile tekrar programn almasna devam edin.

    Resim 3.4: Krmz renkli ksm durak noktas olan bir satrdr

    Resim 3.5: Command Window kullanm

    Not: sterseniz alma annda Run Time, deikenler zerinde oynama yapabilirsiniz.

    Eer programlama dilinde bcek ayklama imkn bu kadar kolay deil ise, daha basityntemler deneyebilirsiniz. Mesela hatal yere yakn, ekrana deiken deerini bir mesaj ilegsteren komut eklenebilir. Programdaki hata giderildikten sonra bu satrlarn temizlenmesiunutulmamaldr.

    Programnzdaki hatalar gidermeye almazsanz, yazlmnzn kalitesi der.Yazlm yazan ekip kadar, test ekibinin de ok sorumluluu vardr. Ama programdaki hataybulamad diye test ekibi sulanmamaldr. Programc hatalar otomatik olarak yakalayankodlar yazabilir. Kullancnn hatalar kefetmesi firma iin daha ktdr.

    Debug*Toggle Breakpoint F9 ile yapabilirsiniz View*Other Windows*Command Window Ctrl+Alt+A ile pencereyi aabilirsiniz

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    31/54

    27

    Resim 3.6: Kullancya yardmc olunuz, doru bilgi vererek ynlendiriniz

    Resim 3.7: Programc kendisi iin yapt basit hata ve ayrntl hata mesaj rnekleri

    Bir program yazarken aadaki neriler iinize yarayabilir:

    Yazlmnz ne kadar byrse o kadar iinde bcekbulunma ihtimali artar. Bcek olumasn nasl nleyebileceinizi, otomatik olarak nasl

    yakalayabileceinizi dnmelisiniz. Algoritmanz olutururken, kullanacanz dili tam olarak renerek

    koullarnz tamamlaynz. Birden fazla yol gz nne alarak alternatifler ekleyiniz. alma annda beliren bcek sinyallerini gz ard etmeyiniz. Kendi kendilerine

    kaybolmazlar. Kaybolmasn beklerseniz daha da byrler. Deikenlerinizin deerlerini takip ediniz ve aykr deerler almalar ne zaman

    ve nerede oluuyor bcek ayklama ile grnz.

    Kullancnnkafasn kart ranmesajlarolmamaldr

    Kullancnn hatalgiri yapmamasiin ksaaklamalar

    yazlmaldr

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    32/54

    28

    Eer programnz kontrol amac ile adm adm ilemekten ekinirseniz, tahmin

    etmediiniz hatalarla kullanc muhatap olmak zorunda kalr. Denetlenmesi kolay adlandrmalar ve algoritmalar oluturunuz. Hzl alan program yapmak iin dayanksz kodlar oluturmaynz. Kestirme ve pratik programlama risklidir. Kendi ihtiyacnza gre zm

    retiniz. Ara sra temizlik yaparak, artk yani artan kodlarnzn bcee sebep

    olmamalarn salaynz. Yaptnz deiiklik ok kk olabilir, ama hata oluturabileceini

    unutmaynz. Srmler oluturarak ilerleyiniz. Son ticari halinden hata ayklama kodlarnz

    kararak klterek ilgililere teslim ediniz.

    Program iine yerletirdiiniz aklama satrlar az ve z olmal ya da hiyazmaynz. mknsz olan bir girdi olabilir mi? Kullanc her zaman sizin gibi dnmez.

    Bu ihtimallere nlem almalsnz. Sorunlar sessizce zen kodlar yazabilirsiniz. Bcei gizlemekten ok onu yok etmeye al nz. Farkl algoritma yntemleri kullanarak bceklerin sebebini zebilirsiniz. Devaml hata mesajlar ile kullancy telalandrmaynz. Bcei aa karmann yntemi, onu bulduunuz anda ortadan kaldrmaktr.

    Bcekleri tekrar kmaya zorlaynz. ok az sayda programc kodlara durak no ktalar ekleyerek, kod iinde adm

    adm ilerleme ve girdilerin ktya dnt yerlere bakma alkanlna sahip.

    Bu ilemler angarya deildir. Kodunuzda adm adm ilerlerken veri akna odaklannz. Arabiriminizdeki aksaklklar bulup yok ediniz. Kaybolan bir bcei gz ard etmeyin, gizleniyor olabilir. Zamannda bulunan bcek daha fazla bcek olumasna engel olur. Belirtiyi deil, oluum nedenini dzeltiniz. Aptal bcek yoktur. Asl sorun programcnn onu bulamam olmasdr. Ayn bcein sizi iki kere sokmasna izin vermeyiniz!

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    33/54

    29

    UYGULAMA FAALYET

    lem Basamaklar neriler1.Bir programlama dilinde programyazp denerken, karmza kan yazmhatalarn inceleyiniz.

    lk kez karlatnz hatalar ve zmyollarn defterinizin arkasna yaznz,bylece ayn hatayla karlancabocalamazsnz.

    2.Programdaki yazm hatalarndzeltiniz.

    Arkadalarnzn yapt programlardakiyazm hatalarna yardm ediniz. En oknerede hata yapldn, sebebini tartnz.

    3.Program altrldktan sonradenemek iin veri giriniz.

    Yaptnz programlar dier insanlarn naslkullandn gzlemleyiniz. Nasl verigirdiklerini inceleyiniz. Sizin istemediinizdeerleri girerlerse ekrana nasl bir hatamesaj geliyor?

    4.Adm adm program altrarak,programn akn kontrol ediniz.

    Admlama komutu ile programnzinceleyiniz.

    UYGULAMA FAALYET

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    34/54

    30

    LME VE DEERLENDRME

    OBJEKTF TESTLER (LME SORULARI)

    Aadaki sorulardan; sonunda parantez olanlar doru / yanl sorulardr. Verilenifadeye gre parantez iine doru ise D, yanl ise Y yaznz. kl sorularda uygun kkiaretleyiniz.

    1. Kod bcekleri ok aklldr. ( )

    2. Derleyici tm hatalar yakalar, bize hatann yerini gsterir. ( )

    3. Basit bir deiiklik yaplnca, program test edilmese de olur. ( )

    4. 1.500,45 bir say girii olabilir. ( )

    5. Hangi komut ile program admlayabiliriz?A) altr - RunB) Dur - StopC) Admla - Step IntoD) Kr - Break All

    6. Hangi hatann tespiti ve giderilmesi ok kolaydr?A) Yazm hatalarB) alma an hatalarC) Mantk hatalarD) lmcl hatalar (disk, bellek hatalar gibi)

    LME VE DEERLENDRME

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    35/54

    31

    RENME FAALYET - 4

    Programda saklanmas gereken bilgileri dosyalara saklayabilecek ve tekrarokuyabileceksiniz.

    Bu faaliyet ncesinde hazrlk amal aada belirtilen aratrmafaaliyetlerini yapmalsnz.

    Birok program deiik dosya trlerini altrabilir vedeitirebilir. Programlarn kulland dosya trlerini aratrnz. Mesela ofisprogramlarnda *.doc, *.xls dosya uzantlar vardr.

    Windows iletim sisteminde altrlabilen bir dosya (*.exe gibi) dier iletimsistemlerinde de altrlabilir mi? Ya da tam tersi, Linuxta kurulabilen birprogram Windowsa kurulabilir mi?

    4. DOSYALAMA

    Bir nceki derste deikenlerin mrleri bitince hafzadan silindiinden bahsettik.Zaten byle olmasayd, ana bellek birok program altrmaya yetmezdi. Ya bize kalc, herprogram a ldnda, nceden saklanan bilginin gsterilmesi gibi bir durum gerekirse neyapabiliriz? Oyunlardaki rekor bilgileri gibi d nebiliriz. Bilgiler ounlukla ayr bir veridosyasnda saklanr.

    4.1. Metin Dosyalar

    sminden de anlalaca gibi, metin dosyalarn iinde sadece yaz vardr.Biimlendirilmemi metin dosyalarn tm iletim sistemleri tanr, deitirebilir.

    Metin dosyalara sral dosyalar diyebiliriz. Bir metin dosyasn kullanabilmemiziin nce onu oluturmamz gereklidir. Daha sonra da sra ile satr satr metin dosyasnokuyabilir, deitirebiliriz.

    AMA

    ARATIRMA

    RENME FAALYET4

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    36/54

    32

    Sral dosya olduu iin dosyaya bilgileri sra ile yazp, yine sra ile okuyoruz. Pe

    pee bilgi ilemi yapld iin For - Dndr komutu ile daha az komut yazarak, ok sat rlbilgileri alabilir, yazabiliriz. 3 satr bilgi iin basit olarak aadaki gibi bir rneimiz var.

    Resim 4.1: Metin dosyaya bilgi yazma

    1. Bala2. DosyaAdi = dosya.txt3. Eer DosyaAdi mevcut se Git 94. yazar = DosyaA (DosyaAdi)5. yazar.SatrYaz 1. satr6. yazar.SatrYaz 2. satr7. yazar.SatrYaz 3. satr8. yazar.DosyaKapat9. Bitir

    Okuma veya yazma ilemi yapldktan sonra dosya kapatlmaldr. Eer kapatmay

    unutursak, programda hatalar meydana gelebilir. Ak kalan dosyay zerinde baka ilemyapmak iin tekrar aamayz. Aadakine benzer bir hata mesaj oluabilir:

    "lem, baka bir ilem tarafndan kullanldndan'C:\ornekler3\vb\metinDosyalama\dosya.txt'

    dosyasna eriemiyor."

    Metin dosyasn kendi programmz haricinde, not defterini kullanarakgrntleyebilirsiniz. Test etmek iin satrlar deitirip, programnzda tekrar okumaydeneyebilirsiniz.

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    37/54

    33

    Resim 4.2: Metin dosya ilemleri ekran grnts

    Programlarnz piyasada yaygn olarak kullanlan programlar ile uyumlu yapmayadikkat ediniz. Eer kendi dosya trnz oluturursanz, sadece sizin programnza bamlhle gelir. Mesela programnz hesap tablosu halinde verilerini kaydedebiliyor ise, hesaptablosunu kullanarak ilem yapan kullancya destek salam olursunuz. Programnznkalitesi daha artar.

    Siz de programa daha fazla satr bilgi kaydetme imkn salaynz. Dnglerkullanarak daha az kod nas l yazlabilir?

    4.2. Rasgele Eriimli Dosyalar

    Metin dosyalarda satrlar tek tek okumak kk dosyalar iin hz problemioluturmaz iken, byk dosyalarda belli bir satra gidip ilem yapmak byk problemdir.Son sat r okumak iin tm dosyay taramanz gerekir.

    Rasgele eriimli dosyalar sabit boyutlu kk paralar halinde kayt ismindeblmlerden oluur. Kayt iinde bir veri kmesi saklanr. Her kayt iinde alan ismindedaha kk paralar vardr.

    Kayt uzunluklarnn belirli olmas sayesinde istenen bilgiye rahatlkla gidilebilir. Budaha etkin veri ileme anlamna gelmektedir. Veritaban konusuna bu sayede girmi

    oluyoruz.

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    38/54

    34

    Resim 4.3: Rasgele dosyalamada kaydetme ilemi

    BirKayt

    li Can2344224T10C

    Mehmet Demirci2323434T11Cdris Kvan

    2323443T11C

    Metin Dosyalarn yaps Rasgele Eriimli Dosyalarn yaps

    li Can

    2344224T10C

    Mehmet Demirci2323434T11C

    dris Kvan2323443

    T11C

    BirAlan

    1.Kayt

    2.Kayt

    3.Kayt

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    39/54

    35

    Rasgele eriimli dosyada kayt hazrlarken, ne tr verileri saklayacanz, ka adet

    alana sahip olacan kararlatrmalsnz. Alanlarn ka karakter bykle sahip olacanplanlamalsnz. Daha sonradan deitiririm derseniz, yeni alan boyutlar eskisi ileuymayaca iin veri kayb ile karlaabilirsiniz.

    Silme ve isim ile arama ilemlerini tasarlaynz.

    Ya ksmna yanllkla yaz veya ok byk bir say girilirse ne olur? Hatal verigiriini nlemek iin ne yapabilirsiniz?

    Resim 4.4: Rasgele dosya ilemleri

    4.3. kilik Dosyalar

    Rasgele dosyalamada her kayd yapsal olarak kullanma zorluu,programclarn yeni bir yol aramasna sebep olmutur. Hem hzleriimli, hem de uzun metinleri saklayacak ekilde ikilik (binary)sistemde yaplan dosyalamay kullanabiliriz. Metin uzunluklar sabit

    olmak zorunda olmadndan, bu yntem dosya boyutu olarak tasarrufsalar.

    kilik dosyalar; *.pdf dosya oluturma, kayt bilgileri saklama (*.log dosyalar),program ayarlarn saklama (*.bin dosyalar), internette dosya aktarm srasnda (FTP,eposta), veritaban iine resim, ses dosyas eklemek istendiinde kullanlyor.

    Basit bir i iin bu kadar uzun program yazmak gereksiz grnebilir. Zaten genellikleMicrosoft Access gibi veritaban programlar bizim veri saklamamza yardm ederler.Daha karmak ve youn veri saklama ve okuma ilemleri gereken yerlerde veritabanprogramlar yksek performans salarlar.

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    40/54

    36

    Baz durumlarda ise metin dosyasna kaydetmek daha pratiktir. Mesela, sitenizin

    ziyareti saysn saklamak, programnzn pencerelerinin en son boyutlarn saklamak iinbu yntemi kullanabilirsiniz. ok az bilgi tutulaca iin gidip bir veritabanna balantyapmaya gerek yoktur. Gvenliin nemli olmad ve hz gerektiren yerlerde metindosyalama ile veri saklayabilirsiniz.

    Dosyalara dardan eriilebildiine gre, eer ok gizli bilgiler saklanmasgerekiyor ise ne gibi nlemler almamz gerekir? Mesela evinize tek kapdan deil de bakayerlerden girilebiliyor ise, hrszlara kar nasl nlemler alrsnz?

    Programlar veritaban kullanmadan baka hangi yntemler ile ayarlarn saklar?Mesela, Windowsun kayt defterini (registry) kullanmak gibi

    Yap KisiMetin AdSaysal Yas

    Yap Bitti

    BaslabirKisi KisidosyaAdi = "dosya.txt"

    binDosya DosyaAc (dosyaAdi, AveyaKaydet)yazici kilikYazar (binDosya)

    Oku; birKisi.AdOku; birKisi.Yas

    yazici.DosyaBasinaGityazici.Yaz birKisi.Adyazici.Yaz birKisi.Yas

    yazici.DosyaKapatBitir

    Balat*altr*regedit ile kayt defterini grntleyebilirsiniz.

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    41/54

    37

    UYGULAMA FAALYET

    lem Basamaklar neriler1.DosyaA komutu ile dosyaoluturunuz.

    Veri dosyasn metin, rasgele veya ikilikyntemi ile oluturunuz.

    2.SatrYaz, SatrOku komutu iledosyaya veri giriniz veya ekrana verininkts alnz.

    Bilgi yazma ve okuma iin uygun komutuseiniz.

    3.Structure Yap iinde alanlarnboyutunu, trn belirtiniz.

    Belirleyeceiniz alanlar yap hlinegetiriniz.

    4.DosyaKaydet ve DosyaGetir ilebelli bir kayda ulanz.

    Kaydolmu bilgileri ekrana listeleyiniz.

    5.Dng iinde verileri ekranalisteleyiniz.

    Pe pee ilemleri dng komutlar ile kolayprogramlanabilir hle getiriniz.

    6.DosyaKapat komutu ile dosyaykapatnz.

    Her alt programn sonunda dosyaykapatnz.

    UYGULAMA FAALYET

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    42/54

    38

    LME VE DEERLENDRME

    OBJEKTF TESTLER (LME SORULARI)

    Aadaki sorulardan, sonunda parantez olanlar doru / yanl sorulardr. Verilenifadeye gre parantez iine doru ise D, yanl ise Y yaznz. kl sorularda uygun kkiaretleyiniz.

    1. Programmz tm dosya trlerini ap okuyabilmelidir. ( )

    2. Tm dosyalar not defteri veya edit ile alabilir. ( )

    3. Dosya iine kod saklayp, programmzdan kodlar altrabiliriz. ( )

    4. ki program ayn anda bir metin dosyay kullanabilir. ( )

    5. Hangisi ile en kolay veritaban hazrlanabilir?A) WordB) ExcelC) AccessD) Powepoint

    6. Hangisini dosyalamada bir dosya uzant s olarak sememeliyiz?A) *.txtB) *.datC) *.binD) *.doc

    LME VE DEERLENDRME

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    43/54

    39

    MODL DEERLENDRMEPERFORMANS TEST (YETERLK LME)

    Modl ile kazandnz yeterlii, retmeniniz ilem basamaklarna gre 0 ile 6 puanarasnda olacak eklinde deerlendirecektir.

    DEERLENDRME KRTERLER Puan

    Sral olarak program komutlarn yazma, dallanan programlama yntemi ileprogram yazma, dng komutlar ile program yazma

    ok tekrar eden komut bloklarn bir alt programa toplamaAlt programlara uygun bir tekil isim vermeBir alt programa deer yollaynz ve deer dndrmePrograma pencere eklemePencerenin boyut ve koordinatlarn uygun hle getirmePencere ve iindeki nesneleri uygun bir ekilde renklendirmeKullancya yardmc ksa yol menleri tasarlama, pencere zerine temelkontrolleri ekleme, kontrollere program yazmaBir program denerken karmza kan yazm hatalarn grme, programdakiyazm hatalarn dzeltmeProgram altrldktan sonra denemek iin veri girmeAdm adm program altrarak, programn akn kontrol etmeDosyaA komutu ile dosya oluturmaSatrYaz, SatrOku komutu ile dosyaya veri girip, ekrana verinin kts almaStructure Yap iinde alanlarn boyutunu belirtmeDosyaKaydet ve DosyaGetir ile belli bir kayda ulatrmaDng iinde verileri ekrana listeleme, DosyaKapat komutu ile dosyaykapatma

    Toplam (en fazla 96 puan olabilir)

    DEERLENDRME

    Yaptnz deerlendirme sonucunda eksikleriniz varsa renme faaliyetlerinitekrarlaynz.

    Modl tamamladnz, tebrik ederiz. retmeniniz size eitli lme aralaruygulayacaktr. retmeninizle iletiime geiniz.

    MODL DEERLENDRME

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    44/54

    40

    CEVAP ANAHTARLARIRENME FAALYET-1 CEVAP ANAHTARI

    1 D2 Y3 D4 B5 A6 C

    RENME FAALYET-2 CEVAP ANAHTARI

    1 Y2 D3 Y4 A5 D6 D

    RENME FAALYET-3 CEVAP ANAHTARI

    1 Y2 Y3 Y4 Y5 C6 A

    RENME FAALYET-4 CEVAP ANAHTARI

    1 Y

    2 D3 Y4 Y5 B6 D

    Cevaplarnz cevap anahtarlar ile karlatrarak kendinizi deerlendiriniz.

    CEVAP ANAHTARLARI

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    45/54

    41

    SZLKsim Okunu Anlam

    install instol kurmak, installation kurulum

    instruction instrakn komut

    instrument instrumnt enstrman, ara

    integer intecr tamsay

    introduction introdakn tantm, intro

    item aytm nesne, e

    kernel kernl ekirdek

    log log kayt tutmak, dkm yapmak

    logical locikl mantksal, boolean

    match me uymak, oyun, birbir ini tutmak

    message mesic mesaj, ileti

    minimize minimayz en kk yapmak, simge durumuna klt

    missing mising eksik, karmak

    multimedia maltimedya oklu ortam

    network netwrk a

    object bcekt nesne

    OCR ou si ar Optical Character Recognition Optik karakter tanma, yazlm

    tarayclarn yannda veriliroptimize optimayz en iyi hale getirmek, optimize

    optional op nl istee bal, opsiyonel

    page pey sayfa

    parameter permitr parametre, argman, anahtar

    parity perti parite, elik

    partition partin disk blm (c: gibi)

    path pet yol, izlek, patika

    pattern pet rn doku, dizi

    perform prform gerekletirmek

    peripheral perifirl evresel birim

    pin pin giri k iin kullanlan port veriyolu inesi

    pixel piksl Ekrandaki yazlmla elde edilebilen nokta (picture element/picturecell)

    pointer pointr iareti, fare imleci

    port port kap, iletiim hatt

    present preznt var olmak

    previous privi s nceki

    primary praymri birincil

    SZLK

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    46/54

    42

    KOD RNEKLERTupol dilinde alt program rnei

    PROGRAM altProgProgrami;TANIM

    TANIMSONUALTPROGRAMLAR{Alt Programimiz}

    paletCiz();TANIM

    Sayi i,j;TANIMSONUBaslaDongu j> 199

    Blok

    Dongu i> 319Blok

    Pixel(i,j,j);Son;

    Son;

    Bitti;ALTPROGRAMLARSONU

    Basla{Ana Programimiz}

    Grafikekran();paletCiz();Okugh();Yaziekran();

    Bitti.

    Yunus dilinde alt program, fonksiyon (prosedr ile ayn amal) yazmak

    KOD RNEKLER

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    47/54

    43

    Fonksiyon, parametre olarak deer alp, ona gre hesap yapp, sonu reten alt

    programdr. Genellikle "return" komutu ile deer geri aktarlr.

    Visual Basicte metin dosyalarna eriim iin StreamWriter ve StreamReadernesneleri kullan labilir. Genellikle oluturulan dosyann uzantsn *.txt seiyoruz.

    C dilinde fonksiyon rnei

    #include float kupAl(float a)

    {return a*a*a;

    }main(){float sayi = 0;printf("Kp alinacak sayiyi giriniz\n");

    scanf("%f",sayi);printf("Sonuc: %f",kupAl(sayi));

    getch();}

    PHP dilinde alt program rnei

    Pascal dilinde fonksiyon rnei

    uses crt;

    var x,y:integer; (* global deikenler *)procedure degistir(var xx:integer;var yy:integer);var zz: integer; (* yerel deiken *)

    Begin (* kova yntemi ile deitir *)zz:=xx; xx:=yy; yy:=zz;

    end;

    beginclrscr; (* ekran sil *)x:=10;y:=20;

    writeln(x,y); (* ilk deerler *)degistir(x,y); (* yerlerini deitir *)writeln(x,y); (* yeni deerlerimiz *)

    end.

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    48/54

    44

    Visual Basic dilinde sral dosya rnei

    Imports SystemImports System.IO

    Dim DosyaAdi As String = "dosya.txt"'*.exe ile ayn klasrde oluacaktr

    Private Sub Button1_ClickIf File.Exists(DosyaAdi) = False Then

    Dim yazar As StreamWriter = File.CreateText(DosyaAdi)'ilk dosya oluturma

    yazar.WriteLine(TextBox1.Text) 'ilk satr yazyoruzyazar.WriteLine(TextBox2.Text) 'ikinci satr yazyoruzyazar.WriteLine(TextBox3.Text) 'nc satr yazyoruz

    yazar.Flush()yazar.Close() 'dosyay kapat

    End If

    End Sub

    Private Sub Button2_ClickIf File.Exists(DosyaAdi) = True Then

    Dim okur As StreamReader = File.OpenText(DosyaAdi)'okumak iin dosyay ayoruzTextBox1.Text = okur.ReadLine()

    'ilk satr dosyadan alyoruzTextBox2.Text = okur.ReadLine()'ikinci satr dosyadan alyoruzTextBox3.Text = okur.ReadLine()'nc satr dosyadan alyoruz

    okur.Close() 'dosyay kapatEnd If

    End Sub

    Private Sub Button3_Click

    File.Delete(DosyaAdi)'tekrar oluturabilmek iin dosyay silme

    End Sub

    Private Sub Button4_Click

    End 'program kapatrEnd Sub

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    49/54

    45

    isual Basic dilinde rasgele dosyalama rnei

    Structure Kisi

    Public Ad As StringPublic Yas As Short

    End Structure

    Private Sub Button6_Click

    EndEnd Sub

    Private Sub Button5_Click'kaydet dmesi

    Dim birKisi As New KisiDim dosyaNo As Integer = FreeFile()Dim kayNo As Integer

    FileOpen(dosyaNo, "dosya.txt", OpenMode.Random, _

    OpenAccess.Write, OpenShare.Default, Len(birKisi))

    birKisi.Ad = TextBox1.TextbirKisi.Yas = TextBox2.TextIf TextBox3.Text = "*" Then

    TextBox3.Text = LOF(dosyaNo) \ Len(birKisi) + 1End IfkayNo = TextBox3.TextFilePut(dosyaNo, birKisi, kayNo)

    FileClose(dosyaNo)End Sub

    Private Sub Button1_Click'ilk kayt dmesi

    Dim birKisi As New KisiDim dosyaNo As Integer = FreeFile()

    FileOpen(dosyaNo, "dosya.txt", OpenMode.Random, _OpenAccess.Read, OpenShare.Default, Len(birKisi))

    FileGet(dosyaNo, birKisi, 1)

    TextBox1.Text = birKisi.AdTextBox2.Text = birKisi.Yas

    TextBox3.Text = 1

    FileClose(dosyaNo)End Sub

    Private Sub Form1_Load

    Button1_Click(sender, e)End Sub

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    50/54

    46

    Private Sub Button5_Click_1TextBox1.Text = ""TextBox2.Text = ""TextBox3.Text = "*"

    End Sub

    Private Sub Button4_Click'son kayt dmesiDim birKisi As New KisiDim dosyaNo As Integer = FreeFile()

    FileOpen(dosyaNo, "dosya.txt", OpenMode.Random, _OpenAccess.Read, OpenShare.Default, Len(birKisi))

    FileGet(dosyaNo, birKisi, LOF(dosyaNo) \ Len(birKisi))

    TextBox1.Text = birKisi.AdTextBox2.Text = birKisi.YasTextBox3.Text = LOF(dosyaNo) \ Len(birKisi)

    FileClose(dosyaNo)

    End Sub

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    51/54

    47

    isual Basic dilinde ikilik dosyalama rnei

    Imports SystemImports System.IO

    Structure KisiPublic Ad As String

    Public Yas As ShortEnd StructureDim birKisi As New KisiDim dosyaAdi As String = "dosya.txt"

    Private Sub Button6_ClickEnd

    End Sub

    Private Sub Form1_Load

    Button1_Click(sender, e)End Sub

    Private Sub Button8_Click'kaydet dmesi

    Dim binDosya As New FileStream(dosyaAdi, _FileMode.OpenOrCreate, FileAccess.ReadWrite)

    Dim yazici As New BinaryWriter(binDosya)Dim okuyucu As New BinaryReader(binDosya)Dim kno As IntegerDim Ad As String

    Dim Yas As Short

    birKisi.Ad = TextBox1.Text

    birKisi.Yas = TextBox2.Text

    If TextBox3.Text = "*" Thenyazici.BaseStream.Seek(0, SeekOrigin.End)

    Elsek n o = 1While okuyucu.PeekChar() > -1

    If TextBox3.Text = kno Then Exit WhileAd = okuyucu.ReadStringYas = okuyucu.ReadInt16kno += 1

    End While

    End If

    yazici.Write(birKisi.Ad)yazici.Write(birKisi.Yas)yazici.Close()

    okuyucu.Close()

    If TextBox3.Text = "*" Then Button4_Click(sender, e)'kayt no gncelleniyor

    End Sub

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    52/54

    48

    Private Sub Button1_Click'ilk kayt dmesi

    If File.Exists(dosyaAdi) ThenDim binDosya As New FileStream(dosyaAdi, _

    FileMode.Open, FileAccess.Read)Dim okuyucu As New BinaryReader(binDosya)okuyucu.BaseStream.Seek(0, SeekOrigin.Begin)TextBox1.Text = okuyucu.ReadString

    TextBox2.Text = okuyucu.ReadInt16TextBox3.Text = 1okuyucu.Close()

    End IfEnd Sub

    Private Sub Button4_Click

    'son kayt dmesiDim kno As IntegerIf File.Exists(dosyaAdi) Then

    Dim binDosya As New FileStream(dosyaAdi,_FileMode.Open, FileAccess.Read)

    Dim okuyucu As New BinaryReader(binDosya)k n o = 0Do While okuyucu.PeekChar() > -1

    TextBox1.Text = okuyucu.ReadStringTextBox2.Text = okuyucu.ReadInt16kno += 1TextBox3.Text = kno

    Loop

    okuyucu.Close()

    End IfEnd Sub

    Private Sub Button5_Click

    TextBox1.Text = "" : TextBox2.Text = ""TextBox3.Text = "*"

    End Sub

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    53/54

    49

    NERLEN KAYNAKLAR en.wikipedia.org/wiki/Fitts'_law

    en.wikipedia.org/wiki/Pentium_FDIV_bug

    msdn2.microsoft.com

    news.bbc.co.uk/onthisday/hi/dates/stories/may/4/newsid_2504000/2504155.stm

    samples.gotdotnet.com

    www.eecs.tufts.edu/~jacob/171/slides/therac.butler.html

    www.sourgeforge.net

    www.wikipedia.org

    www.yunus.projesi.com

    NERLEN KAYNAKLAR

  • 8/9/2019 Biliim Teknolojileri - 18 - Yapsal Programlama Temelleri

    54/54

    KAYNAKA AYFER Can Uur, Kim Gler Bilgisayarlara?, Pusula Yaynevi, stanbul,

    1998

    BARIYANIK Tark, Programlama Ders Notlar ve Uygulamal GenelProgramlama Kitab (www.yunus.projesi.com)

    NIIT Global Learning Solutions, Fundamentals of Programming

    WALLACE Wang, Beginning Programming for Dummies, Wiley Basmevi,Indianapolis, 2004

    KAYNAKA