26.09.2013
4.63 / 16 oy

Programlamada Sayaç Mantığı

Sayaç Nedir?

Problem: Klavyeden girilecek 100 tane sayının toplamını bulup yazdıran algoritmayı tasarlayın.

Nasıl Çözeriz? Önceki çözümlerden yola çıkarsak her sayı için bir değişken ayırmamız gerekecek. Eyvah! 100 tane sayı için 100 tane değişken kullanmamız gerekiyor! Bu işin daha pratik bir yolu olmalı...

100 bardak suyu bir kovada toplamak için 100 farklı bardak kullanmamız gerekmez. Bu çok saçma olur değil mi! insanlar bu sorunu bir bardak ile çözebilirler. Bilmemiz gereken tek şey bu bardağı kaç kere kullandığımıdır. Bunun için bir çetele işimizi görür.

Çetele sistemi bilinen en eski sayı sayma yöntemidir. Çetele sisteminde sayılar çizgilerle ifade edilirler. Arkeolojik kalıntılarda, mağara duvarla-nnda çetele izlerine rasdanmaktadır. Çetele sistemi günümüzde de kullanılmaktadır. Örneğin, genç arkadaşlarımızın vakit geçirdikleri kafelerde adisyon olarak bilinen hesap kağıdan, çetele sistemiyle tasarlanmıştır.

Çetele sisteminden algoritmamızda nasıl yararlanacağız? Bir bardağın yeterli olduğunu biliyoruz. Bardak (toplanacak sayılar) için bir "A" değişkeni kullanalım. Bir de kova (yani toplam) için "T" değişkeni. Çetele amacıyla kullanacağımız bir değişken daha lazım. Programcılıkta çetele (sayma) amaçlı değişkenlere sayaç denir. "S" değişkeni de sayaç olsun.

Çözmemiz gereken basit bir sorun var. O da sayacın kontrol edilmesi. Bardağı her boşalttığımızda sayacın değerini 1 artırırsak sayaç işlem adımını saymış olur. O halde sayacın değerinin 100 olup olmadığını soralım. Eğer sayacın değeri 100 olmuşsa 100 sayı toplanmış demektir, toplamı yazdırıp programı sonlandıralım.

A değişkenini bir bardak gibi kullanıyoruz. Toplamak için her defasında yeni bir sayı alıyoruz. Eski değer doğal olarak siliniyor.

S değişkenini ise çetele gibi kullanıyoruz. İşlemin her tekrannda S değişkeninin değerini 1 artırıyoruz. Bir sayısal değişkenin ilk değen herhangi bir atama yapılana kadar sıfırdır.

S=S+1

Bu satır, S değişkeninin değerinin bir fazlasını eski değerin üzerine yazar. Eski değer silineceği için S'nin değeri 1 artmış olur.

A değişkenin değerini her defasında T değişkenine aktanyoruz. Eğer

T=A

deseydik, sayılan toplayamayacak ve T'nin üzerine son gelen sayıyı yani A değerini yazıyor olacaktık. Eski T değerinin silinmesini önlemek ve yeni gelen sayıyı toplama ilave etmek için

T=T+A

İfadesini kullanıyoruz. Yeni gelen A sayısı önceki T ile toplanıyor ve yeni toplam eski değer silinerek T'ye yazılıyor.

Sayaç kontrolü yaparak işlemi yönlendiriyoruz. Çetelemiz 100'e gelene kadar başa göndererek yeni sayı okuyor ve "kovaya boşaltıyoruz". Sayacımız 100 olunca 100 tane sayı toplanmış oluyor. T değeri yazılıyor. İşlem bitiyor.

Bu işlemin adımlı testini inceleyelim, (satır algoritmada kullandığımız EĞER ve GİT komutlarını daha sonra inceleyeceğiz.)

Satır algoritmada dikkatimizi ilk çeken nokta,

EĞER S<> 100 İSE GİT 2

satırı oluyor. Bu satır, S (sayaç) değeri 100'den farklı ise 2. Satıra git anlamına geliyor. Algoritmamızda "S=100 mü?" sorusu vardı. Cevabın hayır olması S'nin 100'den farklı olması demektir. Peki bu satın niye böyle yazdık?

EĞER S=100 ise GlT 6 DEĞİLSE GlT 2

denilebilirdi ancak EĞER komutunu örnekteki gibi detaylı olarak kullanmayı henüz öğrenmediğimiz için bu değişikliği yaptık. Matematikten biraz arılıyorsak,

"S=100 DEĞİLSE...." ile "S<>100 İSE...."

ifadelerinin aynı anlama geldiğini biliriz.

Dikkatimizi çeken bir başka nokta ise satır sayılan. Sol taraftaki satır algoritması toplam 7 satır uzunluğunda. Bununla birlikte işlemi devam ettirecek olursa sağ taraf 102 satır uzunluğunda olacak gibi görünüyor. Program satır şayısı 7 ama tekrar eden işlemler var. Sayaç kontrolü ile işlemi başa döndürüyoruz. Sayacımız 100 olana kadar bu işlem devam edecek. O zaman sağ tarafta test adımlan 100'ü geçecektir. Testi sonuna kadar sürdürmek gerekmeyebilir. Bazen birkaç satırlık bir test, programın doğru çalışıp çalışmadığını anlamak için yeterli olacaktır. Örneğimizde 9 tane sayı girdik. S değişkeninin değerine bakarsak sırayla birer birer arttığını ve son olarak 9 değerini aldığını görüyoruz. Her defasında eski T değerini yeni gelen sayı ile toplayarak tekrar kendisine yazıyoruz. Parantez içinde bu işlemi de gösterdik. Bizim örneğimizde T'nin 9 adım sonunda aldığı son değer 41'dir. Yani 9 sayı girilmiş ve bunların toplamı 41 sayısı imiş. İşlemimizde bir hata yok. 100 tane sayı da girsek toplamı doğru bulacağız. Programımız çalışıyor.

Test satırlannın tekrar eden işlemler ve yönlendirmeler yüzünden program satırlarından çok daha fazla olabileceğini de öğrenmiş olduk.

Yeri gelmişken mantıksal işlemlerin karşıtlıklarını inceleyelim:

Mantıksal işlemlerin karşıtlık tablosu

=

<>

>=

<=

<=

>=

<> 

=

Örnek: T=50 T'nin 50 olduğunu, T<>50 T'nin 50'den farklı bir değer olduğunu belirtir.

T>50, T'nin 50'den büyük bir değer olduğunu, tersi olan T<=50 ise T'nin 50 veya 50'den düşük bir değer olduğunu belirtir.

Karşıt ifadelerden biri tersi (değili) olarak kullanılırsa iki ifade aynı anlama gelir

Örnek: T= 50 DEĞİLSE, T<>50'DİR.

T<50 İSE T>=50 DEĞİLDİR.

T<=50 DEĞİLSE T>50'DİR.

Bu bölümde son olarak değişken adlannı nasıl ve neye göre belirlememiz gerektiğini tartışalım.

DEĞİŞKEN ADLARI NASIL VE NEYE GÖRE BELİRLENMELİDİR?

Programlama dillerinin özel yazım kurallanna uyulduğu sürece bir değişkenin adının pek bir önemi yoktur. "S=S+1" yerine "SAYAÇ=SAYAÇ+1" ya da "SOSİS=SOSİS+l" demek hiçbir şeyi değiştirmez. Değişkenin adı değil içindeki değer, kullanıldığı yer ve yapağı iş önemlidir. Bir değişkene ne ad verdiğiniz -programlama dillerinin özel yazım kurallannın dışına çıkmamak şartıyla- hiç önemli değildir. Değişken adlarını belirlemekte alabildiğine özgürüz ama bu özgürlüğü rasgele değil, teknik bazı aynntılan bilerek kullanmak daha yararlı olacaktır.

Programlama tekniği açısından değişken adlan belirlenirken iki önemli konuya dikkat edilmelidir.

Birincisi mümkün olduğu ölçüde değişken adlannın kısa seçılmesidir. Bir değişkenin içindeki değeri saklayabilmek için değişkenin türüne göre bellekte belirli bir alan ayrılır. Değişkenlerin adlan da -kendi uzunluklan kadar- bellekte yer kaplarlar. Büyük hacimli programlarda binlerce değişken kullanılmaktadır. Gereğinden uzun seçilen değişken adlan bu programla-nn hacimlerini teknik olarak istenmeyen ölçüde artırabilir.

İkincisi, yüzlerce satın ve binlerce değişkenleri olan büyük programlar yazılırken bir değişkenin ne amaçla kullanıldığını zamanla kanşunlabilir. Bu nedenle değişkenlere anlaşılır adlar vermekte yarar vardır. Bu adlar daha çok değişkenlerin ne amaçla kullanıldığını hattrlatacak biçimde seçilirse işiniz çok daha kolay olacaktır. Örneğin TOP (toplam), ARATOP (ara toplam), ORT (ortalama), YÜZDE (yüzde), KDV (katma değer vergisi), GVERGI (gelir vergisi), VFARK (vergi farkı), SSKPRIM (Sosyal Sigortalar Kurumu primi) , EGTKES (eğitim kesintisi) gibi değişken adlan kullanmak bizim programı anlamamız ve takip edebilmemiz için daha iyi seçilmiş adlardır. Değişkenleri bu şekilde kullanmak kendi başımıza yazdığımız küçük hacimli bir programda pek bir anlam ifade etmeyebilir ama büyük bir program yazıyorsak işler bir süre sonra kanşacaktır. Ne amaçla kullandığımızı unutmamak için değişkenlerin adlannı kullandığımız amaçlan hatırlatacak ya da çağnşnracak şekilde belirlemeliyiz. Bu profesyonellerin tercih ettiği bir yöntemdir. Onlarca programcının çalıştığı ve büyük programlann yazıldığı yazılım gruplannda bu yöntem kullanılır.

Değişken adlarıyla ilgili aşağıdaki küçük örneği inceleyelim:

BAŞLA OKUT K- T/100*18 SF=T+K YAZ SF DUR

satırlan yerine

BAŞLA

OKU TUTAR

KDV=TUTAR/100*18

SATIŞFÎYAT=TUTAR+KDV

YAZ SATIŞ FİYAT

DUR

yazılabilir ve iki program parçası da aynı işi yapar. Tek fark kullanılan değişkenlerin adlarıdır. Aynı işi yapan bu iki program parçasından birincisi bellekte daha az yer kaplarken, ikincisi çok daha anlaşılır görünür.

Sonuç olarak, değişken adlannın hem kısa hem de anlaşılır olması sağlanmalıdır. Programlama öğrencileri programlamalannı geliştirdikçe değişken adlarını belirlemekte kendilerine özgü bir tarz geliştirirler. Siz de zamanla kendi tarzını geliştirebilirsiniz.

Programlamada Sayaç Mantığı
Bu makalenin telif hakkı ve tüm sorumlulukları yazara ait olup, şikayetler için lütfen bizimle iletişime geçiniz.
URL:
Etiketler:

Bu makale 32683 kez okundu

26.09.2013 tarihinde yazıldı
Reitix

Yorumlar

  • okutay
    10.07.2020

    bence döngü kelimesinin insanlara bir şey ifade etmemesinden ya da gözlerini korkutmasından kaynaklanıyor bütün bunlar. döngü denen şeyin altı üstü gerektiği kadar tekrarlanan işlemler olduğunu anladıktan sonra tekrar sayısını yakalamak için de sayaç kullanıldığını anlamak o kadar da zor değil

  • Kati3kat
    31.10.2019

    sanılanın ve filmlerde gösterilenin aksine aslında yazılımcılar öyle her türlü yazılımın başına oturup da saniyede 10 klavye tuşuna basarak inanılmaz süratte kod yazan kapüşonlu asiler değillerdir. sıklıkla kodlarında hata alırlar, zamanlarının yarısından çoğu internetteki forumlarda ve bloglarda problemlerinin çözümünü aramakla geçer ve bu da gayet normal bir süreçtir. bu yüzden programlamaya ilk başlayan birisinin sürekli hata alması da gayet beklenen normal bir durum

  • geylani
    31.10.2019

    dinlerken hiçbir problem yok zaten, atom fiziği dinlerken de mesela duyduklarım bana çok mantıklı geliyor ve duyduğumu da anladığımı düşünüyorum ama iş uygulamaya gelince neye neresinden başlayacağını çözmek arap saçı oluyor. ilgi ve yetenek konusunda bence çok haklısınız, ama ısrar ve inat da olmalı programcı olabilmek için

  • voodoohack
    31.10.2019

    döngü konusunda iyi bir anlatıcı tarafından anlatılan bir sunuma katılırsanız anlamama ihtimaliniz yok. döngü nedir, sayaç nedir ve neden kullanılır, ne zamanlarda sayaç kullanmamız gerekir gibi soruların tümü bu felsefi anlatımın içerisinde cevaplanır zaten. ama iç içe döngüler işin içine girdiğinde insanlar biraz mavi ekran verme eğiliminde oluyorlar

  • frekans
    15.10.2019

    programlama yapmaya başlayan insanların genellikle pes ettikleri ilk engebe döngüler (loop) oluyor, ama döngü mantığını kavrayan birisi de artık bir noktaya geldiğini hissederek bir sonraki engebeyi de aşabileceğine inanmaya başlıyor ve öz güveni artıyor. sayaç için de döngü içerisinde değeri belirlenebilen herhangi bir sayı diyebiliriz bu arada

  • buket98
    31.07.2019

    bir şeyin mantığı izlerken bu kadar mantıklı ve anlaşılabilir olup da hadi bir tane de ben yapayım dediğinde neden bu kadar zor olur? özellikle sayaç içinde sayaç yapmak istediğimde sanki sağ elimi oynatmak istediğimde sol elim oynuyor da bütün kontrol elimden bitmiş gibi hissediyorum

  • umud
    08.05.2019

    merak adında yeni bir kısım açılmış gördüğüm kadarıyla, kafamda da algoritmalarla ilgili bir fikir vardı tam da üst üste geldi, birazdan fırsat bulabilirsem farklı programlama dilleri için birkaç soru açarak daha aktif algoritma tartışmalarına imkan sağlamaya çalışacağım. konudan keyif alanları beklerim

  • lews
    09.01.2019

    sayaçları anlatmak isteyen herkes hemen örnek vererek anlatmak ister çünkü döngü, tanımı yapıldığında kulağa çok zor ve anlaşılmaz gelirken bir örnek üzerinde gösterildiğinde e bu muymuş dedirtir, tek yaptığı da belirli kuralları olup tekrarlanan şeylerdir

  • yudum
    20.10.2018

    sayaç olunca sitede görünüyor ve siz de diğer siteye girenler de kaç kişinin girdiğini görebiliyor. bunun yerine sadece sizin görebildiğiniz siteler uygulamalar mevcut onları kullanırsanız daha iyi olur.

  • cuneytmertayak
    28.03.2018

    x'inci işlemde devreye girecek ya da devreden çıkacak ek işlemler için de kaçıncı tekrarda olunduğunun bilinmesi gerekiyor, bunun en pratik sayma yolu da sayaç oluyor

  • droper
    17.01.2017

    şu sitelerin altında yer alan sayaç anlamıştım ben ama yanılıyorum sanırım. hani şu sitenize kaç kişinin girdiğini gösteren bölüm.

  • derman
    20.01.2016

    iterasyonlarda belirli bir işlem için iterasyonun kaç kez döndüğünün bilinmesi gerekiyorsa sayaç burada lazım olur. örneğin her yeni sayı girildiğinde ortalamasının alınması gerekiyorsa kaç sayının girildiğini anlamak için sayaç kullanılabilir

  • kara-ejder
    16.11.2014

    Programlamada tekrar eden islemleri sayaçla degil donguyle yapariz. Sayac ise bize dongunun kac defa dondugunu soyler

  • cinali
    06.11.2014

    sayacı özetle tekrar eden işlemlerimizi gerçekleştirmek için kullanırız

  • secknakliyatci
    24.10.2014

    sayaç yapmak kolay da şu sayacı neden yaptığımızı bir türlü anlayamadım

Bu yazıya siz de yorum yapabilirsiniz

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.