1. BÖLÜM : programlama




Yüklə 174.55 Kb.
tarix25.04.2016
ölçüsü174.55 Kb.

1 . BÖLÜM : PROGRAMLAMA



Yazılım (software): programlama ve programlama ile ilgili konuların geneline verilen isimdir. Yazılım denince ilk olarak akla programlama dilleri, bu diller kullanılarak yazılmış kaynak programlar ve çeşitli amaçlar için oluşturulmuş dosyalar gelmektedir.
Donanım (hardware): Bilgisayarın elektronik kısmına verilen isimdir.

1.1. Yazılımın Sınıflandırılması


Yazılım uygulama alanlarına göre 5 gruba ayrılabilir:


  1. Bilimsel ve mühendislik yazılımları (scientific & engineering software): Bilimsel ve mühendislik konularındaki problemlerin çözülmesinde kullanılan programlardır. Elektronik devrelerin çözümünü yapan programlar, istatistik analiz paketleri bu tür programlara örnek olarak verilebilir.




  1. Mesleki yazılımlar (Business software): Veri tabanı ağırlıklı yazılımlardır. Bu tür programlara örnek olarak stok kontrol programları, müşteri takip programları, muhasebe programları verilebilir.




  1. Yapay zeka yazılımları (Artificial intelligence software): İnsan davranışlarını taklit etmeyi amaçlayan yazılımlardır. Örnek olarak robot yazılımları, satranç ya da briç oynatan programlar vs. verilebilir.




  1. Görüntüsel yazılımlar: Görüntüsel işlemlerin ve algoritmaların çok yoğun olarak kullanıldığı programlardır. Örnek olarak oyun ve animasyon yazılımları verilebilir.




  1. Sistem yazılımları (system software): Bilgisayarın elektronik yapısını yöneten yazılımlardır. Derleyiciler, haberleşme programları, işletim sistemi birer sistem yazılımıdır. Örneğin text editörü de bir sistem yazılımıdır.

1.2. Programlama Dili: Kişi ile bilgisayar arasında iletişimi sağlayan bir araçtır.

Programlama Dillerinin Sınıflandırılması


Programlama dillerini çeşitli açılardan sınıflandırılabilir. En sık kullanılan sınıflandırmalar:


  1. Seviyelerine göre sınıflandırma.

  2. Uygulama alanlarına göre sınıflandırma.

1.2.1. Bilgisayar Dillerinin Seviyelerine Göre Sınıflandırması ve Seviyelerine Göre Bilgisayar Dillerinin Gelişimi

Bir programlama dilinin seviyesi deyince o programlama dilinin insan algısına olan yakınlığının derecesi anlaşılmaktadır. Bir programlama dili insan algısına ne kadar yakınsa o kadar yüksek seviyeli demektir (high level). Yine bir programlama dili bilgisayarın elektronik yapısına ve çalışma biçimine ne kadar yakınsa o kadar düşük seviyeli (low level) demektir. Yüksek seviyeli dillerle çalışmak programcı açısından kolaydır. Programlama dilleri seviyelerine göre 5 ana gruba ayrılabilir:




  1. Çok yüksek seviyeli diller ya da görsel diller (visual languages): Access, Foxpro, Paradox, Xbase, Visual Basic, Oracle Forms.




  1. Yüksek seviyeli diller (Bunlara algoritmik diller de denir): Fortran, Pascal, Basic, Cobol.

  2. Orta seviyeli programlama dilleri: Ada, C. Orta seviyeli diller daha az kayıpla makine diline çevrilebildiğinden daha hızlı çalışır.




  1. Alçak seviyeli programlama dilleri: Sembolik makine dili (Assembly language).




  1. Makine dili: En aşağı seviyeli programlama dili. (Saf makine dili tamamen 1 ve 0 lardan oluşuyor.)

1.2.2.Uygulama Alanlarına Göre Sınıflandırma:





  1. Bilimsel ve mühendislik uygulama dilleri: Pascal, C (C programlama dili üniversitelerdeki akademik çalışmalarda da yoğun olarak kullanılıyor.), FORTRAN




  1. Veri tabanı dilleri: XBASE, (Foxpro, Dbase, CA-Clipper), Oracle Forms, Visual Foxpro.




  1. Genel amaçlı programlama dilleri: Pascal, C, Basic.




  1. Yapay zeka dilleri: Prolog, Lisp.




  1. Simulasyon dilleri: GPSS, Simula 67.




  1. Makro Dilleri (Scripting languages): awk, Perl, Python, Tcl, JavaScript.




  1. Sistem programlama dilleri: Sembolik makine dilleri, BCPL, C, C++, occam. Günümüzde sistem yazılımların neredeyse tamamının C dili ile yazıldığı söylenebilir. Örnek vermek gerekirse UNIX işletim sisteminin % 80'i C dili ile geri kalanı ise sembolik makine dili ile yazılmıştır. Bu işletim sistemi ilk olarak BELL laboratuarlarında oluşturulmuştur. Kaynak kodları gizli tutulmamış, böylece çeşitli kollardan geliştirilmesi mümkün olmuştur. Daha sonra geliştirilen UNIX bazlı işletim sistemi uygulamalarına değişik isimler verilmiştir. C bilimsel ve mühendislik alanlarında kullanılabilen genel amaçlı bir sistem programlama dilidir.

1.3. PROGRAM NEDİR? PROGRAMLAMA DİLİ NEDİR?



Program, yapılmasını istediğiniz işlemleri bilgisayara bildirdiğiniz adım adım komutlar kümesidir. Bilgisayara istediğiniz işlemleri bildirme yolunu sağlayan kurallar kümesi bir programlama dilini oluşturmaktadır. Pek çok programlama dili vardır.
1.4. PROGRAMLAMA SÜRECİ
Bir program geliştirmenin ilk adımları herhangi bir problem çözme işinin adımlarına benzer. Öncelikle problem tanımlanmalı ve sonra çözüm planlanmalıdır. Daha sonra programın işe uygun bir dille kodlanması, sınanması ve belgelenmesi gerekir.


  1. Problemin tanımlanması: Programı talep eden / kullanacak olan kişilerle görüşerek, ne istediklerinin, giriş ve çıkış aygıtlarının, istedikleri rapor formatlarının belirlenmesi ve bunlar üzerinde yazılı anlaşmaya varılması aşamasıdır.




  1. Çözümün planlanması: Çözümün planlanmasında akış şeması (flowchart) çizilebilir veya günlük dille adımlar yazılabilir (pseudocode) veya her ikisi birden yapılabilir.
    Akış şeması, düşünülen çözümün adım adım ve görsel ifadesidir. En basit şekliyle dikdörtgen kutulardan ve oklardan oluşur.




  1. Programın kodlanması: Çözümün bir programlama diliyle ifade edilmesi akış şeması ve/veya pseudocode ile ifade ettiğiniz mantığın (algoritmanın) programlama diline tercüme edilme işidir. Kullanılacak dilin tüm kurallarını doğru olarak takip etmek gerekir. Hiçbir yazım hatası yapmadan programın kodlanması programın hatasız yani istenilen sonucu verecek biçimde çalışmasını gerektirmez. Dil doğru kullanılsa da mantık hataları (logic errors) yapılabilir.




  1. Programın sınanması (testing the program): Genellikle, program ne kadar dikkatli kodlanırsa kodlansın, ilk çalıştırmada bir takım derleme hataları (compilation errors) alınması kaçınılmaz olabilir. Derleme aşaması hatasız geçilmeden çalıştırma (run) aşamasına geçilemez. Alınması olası hataları mümkün olduğunca azaltmak ya da yok etmek için program kodlandıktan sonra kontrol edilmelidir.



  • Masa başı kontrol: Yazdığımız kodun masa başında izlenmesi, kontrolu. Diğer bir deyişle, programdaki her cümlede değişkenlere örnek değerler verilerek koşul cümlelerinin, döngülerin vb. sınanması)




  • Programın derlenmesi (compilation): Programcı ne kadar deneyimli olursa olsun bu adımda genellikle hatalar alınır / alınabilir. Bunları anlayıp düzeltmek gereklidir.



  • Programın çalıştırılması (run aşaması): Derleme hatalarından arınmış programı çalıştırıp istediğimiz/beklediğimiz sonuçları alıp almadığımızın kontrolü.




  1. Programın belgelenmesi (documentation): Genellikle ihmal edilen ancak ÇOK önemli bir aşamadır. Programın doğru olarak çalıştığından emin olduktan sonra




  • programın amacını,

  • nasıl çalıştığını / mantığını, akış şemasını,

  • kullanıcı tarafından nasıl kullanılacağını,

  • giriş bilgilerini (nasıl nereden verilecek, vb.),

  • çıkış bilgilerini, raporlama formatlarını,

ifade eden, ayrıca program listesini ve örnek çıktıları içeren bir doküman hazırlanmalıdır.


Bu doküman, programı talep etmiş kullanıcı grubuna verileceği gibi, ilerde değişiklik yapılacağı zaman çok yardımcı olacaktır. Programcıların en çok, hiçbir dokümantasyonu olmayan mevcut bir programı değiştirmeleri istendiğinde çok zorlanırlar.

2 . BÖLÜM : ALGORİTMA VE AKIŞ ŞEMALARI



2.1. ALGORİTMA

Belli bir problemi çözmek veya belli bir amaca ulaşmak için geliştirilmiş sisteme algoritma denir.

Bilgisayar yardımıyla çözülecek bir problemin, yazılacak bir programın aşağıdaki aşamalardan geçmesi gerekir.

 1. Problemin tanımı


 2. Çözüm yolunun tespiti
 3. Algoritmanın hazırlanması
 4. Akış diyagramının çizilmesi
 5. Programın hazırlanması
 6. Hazırlanan programın test edilmesi
 7. Uygulama

  1. Problemin Tanımı: Öncelikle sorunun ne olduğunu anlamak, bunu tanımlamak gerekir. Programın temeli, izlenecek yol burada genel hatlarıyla belirlenir. Burada programdan ne istendiği, ne verip ne alınacağı belirlenir.

  2. Çözüm Yolunun Tespiti: Çözüm yolunun genel hatları ortaya çıkarılmaktadır.

  3. Algoritmanın Hazırlanması: Bu kısımda programın yolu çizilmektedir. Ne şekilde çalışacağının genel hatları belirlenerek konuşma diline çevrilmektedir. Algoritmalarda işlem yukarıdan aşağıya doğru, baştan sona doğru yürütülmektedir. 

Örnek: Girilen iki sayının toplamını hesaplayan algoritma
    C=A + B

Başla;


1. Sayının girilmesi(A);
2. Sayının girilmesi(B);
    Toplama işleminin yapılması(C=A+B);
    Toplama sonucunun görüntülenmesi(C);
Son.

Örnek: Bir öğrenciye ait iki farklı not bilgisini alarak, not ortalamasını hesaplayan algoritma.
 
 Öncelikle değişkenler belirlenir.
 Not1     = N1;
 Not2     = N2;
 ORTALAMA = ORT;
 
 Başla;
 1. Notun girilmesi (N1);
 2. Notun girilmesi (N2);
    Not ortalamasının hesaplanması (ORT=(N1+N2)/2)
    Ortalama sonucunun görüntülenmesi(ORT)
 Son.

Örnek: Girilen bir sayının Negatif, Pozitif veya Sıfır olduğunu bulan algoritma.
Bir sayının pozitif, negatif veya sıfır olduğunu bulmak için sıfır(0) ile test edilmesi gerekir.

 Başla
 Sayının girilmesi(X);


 Eğer X 0' dan büyük ise 'POZITIF' yaz
 Eğer X 0' dan küçük ise 'NEGATİF' yaz
 Eğer X 0' a eşit ise 'SIFIR' yaz.
 Son.

Örnek: 1'den 100'e kadar olan sayıların toplamını veren algoritma.

1. Toplam T, sayılar da i diye çağırılsın.


2. Başlangıçta T'nin değeri 0 ve i'nin değeri 1 olsun.
3. i'nin değerini T'ye ekle.
4. i'nin değerini 1 arttır.
5. Eğer i'nin değeri 100'den büyük değil ise 3. adıma git.
6. T'nin değerini yaz.

Algoritmaların yazım dili değişik olabilir. Günlük konuşma diline yakın bir dil olabileceği gibi simgelere dayalı da olabilir.  Akış şeması eskiden beri kullanıla gelen bir yapıdır. Algoritmayı yazarken farklı anlamlar taşıyan değişik şekildeki kutulardan yararlanılır.  Yine aynı amaç için kullanılan programlama diline yakın bir (sözde kod = pseudo code) dil, bu kendimize özgü de olabilir, kullanılabilir.

Aynı algoritmayı aşağıdaki gibi yazabiliriz.

1. T=0 ve i=0


2. i'nin değerini T'ye ekle.
3. i'yi 1 arttır.
4. i<101  ise  2.adıma git.
5. T'nin değerini yaz.

Örnek: İki tamsayının çarpma işlemini sadece toplama işlemi kullanarak gerçekleyin.

Girdi: iki tamsayı

Çıktı: sayıların çarpımı


  1. a ve b sayılarını oku

  2. c =0

  3. b>0 olduğu sürece tekrarla

3.1. c=c + a
3.2. b = b-1

  1. c değerini yaz ve dur

Algoritmaya dikkat edildiğinde işlemlerin sıralanmasında, işlem önceliklerinin göz önünde bulundurulduğu görülmektedir. Ayrıca algoritma yazımı sorun çözümünün başladığını gösteren "BAŞLA" ifadesi ile başlamakta ve işlemlerin bittiğini belirten "DUR" ifadesi ile sona ermektedir.

2.2. AKIŞ ŞEMALARI(DİYAGRAMLARI)


Herhangi bir sorunun çözümü için izlenmesi gerekli olan aritmetik ve mantıksal adımların söz veya yazı ile anlatıldığı algoritmanın, görsel olarak simge ya da sembollerle ifade edilmiş şekline "akış şemaları" veya FLOWCHART adı verilir. Akış şemalarının algoritmadan farkı, adımların simgeler şeklinde kutular içine yazılmış olması ve adımlar arasındaki ilişkilerin ve yönünün oklar ile gösterilmesidir.

Programın saklanacak esas belgeleri olan akış şemalarının hazırlanmasına, sorun çözümlenmesi sürecinin daha kolay anlaşılır biçime getirilmesi, iş akışının kontrol edilmesi ve programın kodlanmasının kolaylaştırılması gibi nedenlerle başvurulur. Uygulamada çoğunlukla, yazılacak programlar için önce programın ana adımlarını(bölümlerini) gösteren genel bir bakış akış şeması hazırlanır. Daha sonra her adım için ayrıntılı akış şemalarının çizimi yapılır. Aşağıda en çok kullanılan akış diyagramları şekilleri verilmiştir.






Algoritmanın başladığını ya da sona erdiğini belirtmek için kullanılır.




Klavye aracılığı ile giriş ya da okuma yapılacağını gösterir.



Yazıcı(printer) aracılığı ile çıkış yapılacağını gösterir.




Kart okuyucu aracılığıyla giriş yapılacağını gösterir.



Araç belirtmeden giriş ya da çıkış yapılacağını gösterir.



Hesaplama ya da değerlerin değişkenlere aktarımını gösterir.




Aritmetik ve mantıksal ifadeler için karar verme ya da karşılaştırma durumunu gösterir.




Diskten okuma ya da diskete yazmayı gösterir.




Disketten okuma ya da diskete yazmayı gösterir.



Teyp kütüğünü gösterir.



Yapılacak işler birden fazla sayıda yinelenecek ise diğer bir deyişle iş akışında çevrim(döngü) var ise bu sembol kullanılır.




Oklar işin akış yönünü gösterir.


Akış şemaları içerik ve biçimlerine göre genel olarak üç grupta sınıflandırılabilirler.

2.2.1. DOĞRUSAL AKIŞ ŞEMALARI


Sıralı yapı, hazırlanacak programdaki her işlemin mantık sırasına göre nerede yer alması gerektiğini vurgular. Bu yapı sona erinceye kadar ikinci bir işlem başlayamaz.

Şekil. Sıralı Yapı

İş akışları, giriş, hesaplama, çıkış biçiminde olan akış şemaları bu grup kapsamına girer.

ÖRNEK: İki sayının çarpımının bulunmasıyla ilgili algoritma şöyledir.

Değişkenler:

A: Birinci sayıyı

B: İkinci sayıyı

C: İki sayının çarpımını (A*B) göstersin


Algoritma:

Adım 1- Başla

Adım 2- A’yı oku

Adım 3- B’yi oku

Adım 4- C=A*B yi hesapla

Adım 5- C’yi yaz

Adım 6- Dur

Akış şeması:

Algoritma adımlarında kullanılması gereken semboller yukarıdaki şekilde görülmektedir. Örneğin "DUR" ve "BAŞLA" işlemleri için aynı sembol kullanılmaktadır. Adım 2 ve 3 için kullanılan sembol, bilgisayara değerlerin dışarıdan girildiğini göstermekte, oklar da işin akış yönünü göstermektedir. Adım 4'te kullanılan sembol C=A*B gibi aritmetik işlemler için kullanılmaktadır.



ÖRNEK: İki sayının farkını ve bölümünü bulup yazıcı ile yazan algoritma ve akış şeması şöyledir.

Değişkenler:

A: Birinci sayıyı

B: İkinci sayıyı

D: İki sayının farkını (A-B)

E: İki sayının bölümünü (A/B) göstersin
Algoritma:

Adım 1- Başla

Adım 2- A’yı oku

Adım 3- B’yi oku

Adım 4- D=A-B yi hesapla

Adım 5- D=A/B yi hesapla

Adım 6- D’yi yaz

Adım 7- E’yi yaz

Adım 8- Dur

Akış şeması:



ÖRNEK: İki sayının toplamlarının karesini ve küpünü hesaplayıp yazan akış şeması şöyledir.

Değişkenler:

BIRSA: Birinci sayıyı

IKISA: İkinci sayıyı

TO: Toplamı

TOKA: Toplamın karesini

TO3: Toplamın küpünü göstersin


Algoritma:

Adım 1- Başla

Adım 2- BIRSA ve IKISA’yı oku

Adım 3- TO=BIRSA+IKISA

TOKA=TOKA^2

TO3=TO^3


Adım 4- TOKA, TO’^ü yaz

Adım 5- Dur


Akış şeması:



ÖRNEK: Terminalden okunan bir sayının 10 fazla ve 10 eksiğini bulup yazan programın algoritma ve akış şeması şöyledir.

Değişkenler:

SAYI: Okunacak sayı

F10: Sayının 10 fazlası

E10: Sayının 10 eksiğini göstersin.


Algoritma:

Adım 1- Başla

Adım 2- Terminalden SAYI oku

Adım 3- F10=SAYI+10

Adım 4- E10=SAYI-10

Adım 5- Dur


Akış şeması:



2.2.2. MANTIKSAL AKIŞ ŞEMALARI


Geniş ölçüde mantıksal kararlar içeren akış şemalarıdır. Hesap düzenleri genellikle basittir. Programlama sırasında If...Then... Else (Eğer…. <şart> ….İse….)yapısı ile tanınan bu mantıksal yapılar, birden fazla sıralı yapı seçeneğini kapsayan modüllerde, hangi şartlarda hangi sıralı yapının seçileceğini belirler.

Şekil. Karar Verme Yapısı



ÖRNEK: A ve B gibi iki sayıdan büyüğünü printerle yazdıran algoritma ve akış şeması şöyledir.

Değişkenler:

A: Birinci sayı

B: İkinci sayı

Algoritma:

Adım 1- Başla

Adım 2- A,B'yi oku

Adım 3- A=B ise Adım 7'ye git

Adım 4- A>B ise Adım 6'ya git

Adım 5- B'yi yaz Adım 8'e git

Adım 6- A'yı yaz Adım 8'e git

Adım 7- "A ve B eşit"mesajını yaz

Adım 8- Dur
Akış şeması:


ÖRNEK: 100 kişilik bir sınıfta 18–22 arası her yaş grubunda kaç öğrencinin bulunduğunu belirleyip yazan programın akış çizelgesi şöyledir.
Değişkenler:

OSA: Öğrenci sayısını,

I18: 18 yaşında olan öğrencilerin sayısını

I19: 19 yaşında olan öğrencilerin sayısını

I20: 20 yaşında olan öğrencilerin sayısını

I21: 21 yaşında olan öğrencilerin sayısını

I22: 22 yaşında olan öğrencilerin sayısını

IYOS: İşlem yapılan öğrenci sayısını göstersin.


Algoritma:

Adım 1- Başla

Adım 2- I18=0 I19=0 I20=0 I21=0 I22=0 IYOS=0

Adım 3- OSA oku

Adım 4- OSA=18 ise I18'i arttır, Adım 9'a git

Adım 5- OSA=19 ise I19'u arttır, Adım 9'a git

Adım 6- OSA=20 ise I20'yi arttır,Adım 9'a git

Adım 7- OSA=21 ise I21'i arttır,ADım 9'a git

Adım 8- OSA=22 ise I22'Yİ arttır,Adım 9'a git

Adım 9- IYOS<100 ise Adım 3'e git

Adım 10- I18, I19, I20, I21, I22’yi yaz

Adım 11- Dur


Akış şeması:


2.2.3. YİNELİ (İTERATİF, ÇEVRİMLİ, DÖNGÜLÜ)AKIŞ ŞEMALARI


Sorunun çözümü için, çözümde yer alan herhangi bir adım ya da aşamanın birden fazla kullanıldığı akış şemalarına denir. İş akışları genel olarak giriş ya da başlangıç değeri verme, hesaplama, kontrol biçiminde olmaktadır. Yani döngü oluşturmak için kullanılan yapıdır. Döngüler aynı işlemin birçok kez yapılmasını sağlar. Söz konusu üç değişik yapı, değişik kombinezonlarda kullanılarak istenilen işlevleri yerine getirecek programlar hazırlanabilir. Programların bu üç basit yapı ile sınırlandırılması program parçalarının daha kolay tasarlanmasını sağlar.









Şekil. Karar Verme Yapısı

ÖRNEK: 100 kişilik bir sınıfta 18–22 arası her yaş grubunda kaç öğrencinin bulunduğunu belirleyip yazan programın akış çizelgesi şöyledir.

Değişkenler:

ONOT: Öğrencinin notunu

INOT: Notların toplamını

NORT: Notların ortalamasını

ISAYI: Öğrenci sayısını göstersin

Algoritma:

Adım 1- Başla

Adım 2- INOT=0

Adım 3- ISAYI=0

Adım 4- ONOT oku

Adım 5- INOT=INOT+ONOT

Adım 6- ISAYI=ISAIY+1

Adım 7- ISAYI<3ise Adım 4'e git

Adım 8- NORT=INOT/3

Adım 9- NORT YAZ

Adım 10- Dur
Görüldüğü gibi, Adım 2 ve 3'te INOT ve ISAYI ismi ile iki değişken için bellekte yer ayrılmış, ayrılan yerlere de ilk değer olarak sıfır atanmıştır.

Adım 4'te herhangi bir öğrencinin sınavdan almış olduğu notun değeri okutulmaktadır.

Adım 5'tenotların toplamının bulunması işlemi yer almaktadır. İşlemde ONOT, INOT ile toplanmakta ve bulunan toplamda INOT’ aktarılmaktadır.

Adım 6'da öğrenci sayısını gösteren ISAYI değişkeninin değeri, "bir öğrenci için işlem yapıldı" anlamında 1 arttırılmaktadır.

Adım 7'de ISAYI'nın değeri 3(toplam öğrenci sayısı) ile karşılaştırılmaktadır. Eğer sayı<3 ise Adım 4'e dönülmektedir. Eğer işlem 3 öğrenci içinde yapılmışsa yani ISAYI=3 ise ya da ISAYI>3 ise ortalamanın hesaplandığı Adım 8'e geçilmektedir. Adım 9 da, bulunan ortalamanın yazılması ile ilgilidir.

Akış şeması:

Akış şeması incelendiğinde not okuma, toplam hesaplama ve öğrenci sayısını 1 arttırma işlemlerinin 3 kez tekrarlandığı anlaşılmaktadır. Eğer program 500 öğrenci için yapılmış olsaydı, sözü edilen işlemler 500 kez tekrarlanacaktı. Üç öğrencinin notlarının, sırası ile 50, 60 ve 70 olduğu varsayılsın. Bu durumda akış şemasının işlemesi şöyle olacaktır



Akış şeması:

Başlangıçta INOT ve ISAYI "0" değerini alırlar. Bilgisayara ilk not olarak 50 okutulur. Başlangıçta INOT=0 olduğu için INOT ile 50 toplanır ve sonuç INOT'a aktarılır. Dolayısıyla INOT'un yeni değeri 50 olur. Daha sonra ISAYI'nın değeri INOT'ta olduğu gibi 1 arttırılır. ISAYI=1 olduğu için 3 ile karşılaştırma yapıldığında tekrar okuma işlemine geri dönülür ve ikinci not olarak 60 okutulur. İşlemler bu şekilde devam eder. ISAYI=3 olunca ortalamanın hesaplamasına geçilir. Son olarak bulunan ortalama yazılır ve durulur.

Aynı örnek yineleme sembolü kullanılarak şöyle yazılabilir.

Akış şeması:



ÖRNEK: N sayısını ekrandan okutarak faktöriyelini hesaplayan ve yazan akış şeması şöyledir.
Değişkenler:

NFAK: N faktöriyel (N!) değerini,

ISAYI: 1'den N'e kadar sayıları göstersin,

NFAK: 1*2*......*N


Algoritma:

Adım 1- Başla

Adım 2- N'i ekrandan oku

Adım 3- NFAK=1

Adım 4- ISAYI=1

Adım 5- ISAYI=ISAYI+1

Adım 6- NFAK=NFAK*ISAYI

Adım 7- Eğer ISAYI>=N Adım 8’e git değilse Adım 5’e git

Adım 8-NFAK yaz

Adım 9-Dur


Akış şeması:



ÖRNEK: Klavyeden bir öğrencinin numarasını, ismini ve bilgisayar programlama dersinin 3 vize sınavından aldığı notları girip, bu notların aritmetik ortalamasını bulan, eğer ortalaması 50'ye eşit veya 50'den büyükse yazıcıya numara, isim, notlar ve vize notlarının ortalamasını, küçükse numara, isim ve "tekrar" mesajı yazan programın algoritma ve akış şeması şu şekildedir.

Değişkenler:

INO: Öğrencinin numarasını,

AD: Öğrencinin ismini,

VIZE1: 1.vize sınavını,

VIZE2:2.vize sınavını,

VIZE3: 3.vize sınavını,

VIZORT: Üç vize sınavının aritmetik ortalamasını,

VIZTO: Üç vizenin toplamını göstersin.


Algoritma:

Adım 1- Başla

Adım 2- INO,AD,VIZE1,VIZE2,VIZE3,oku

Adım 3- VIZTO=(VIZE1+VIZE2+VIZE3) ve VIZORT=VIZTO/3 bul

Adım 4- Eğer VIZORT>=50 ise Adım 6'ya git

Adım 5- INO,AD ve "TEKRAR" yaz ve Adım 7'ye git

Adım 6- INO,AD,VIZE1,VIZE2,VIZE3,VIZORT yaz

Adım 7- Dur


Akış şeması:



ÖRNEK: Bir okulda bulunan 10 sınıftaki 30'ar öğrencinin her birinin 12 şer dersten aldıkları notların ortalamasını bulan ve öğrenci ismi ile not ortalamasını yazan programın, algoritması ve akış şeması şöyledir:

Değişkenler:

ISS: Sınıf sayacı

IOS: Öğrenci sayacı

DN: Ders notu

DNS: Ders notu sayacı

DNT: Ders notlarının toplamı

DNO: Ders notlarının ortalaması

OGAD: Öğrencinin adı



Algoritma:

Adım 1- Başla

Adım 2- SS=0

Adım 3- IOS=0

Adım 4- DNS=DNT=0

Adım 5- OGAD oku

Adım 6- DN oku

Adım 7- DNS=DNS+1(ders notu sayacı 1 artır.

Adım 8- DNT=DNT+DN(notları topla)

Adım 9- Eğer DNS<12 ise adım 6'ya git

Adım 10- DNO=DNT/12(ortalamayı hesapla)

Adım 11- OGAD,DNO yaz

Adım 12- IOS=IOS+1(öğrenci sayacını bir artır)

Adım 13- Eğer IOS<30 ise adım 4'e git

Adım 14- ISS=ISS+1(sınıf sayacını bir artır)

Adım 15- Eğer ISS<10 ise adım 3'e git.

Adım 16- Dur
Akış şeması:



ÖRNEK: 300 elemanlı bir veri grubunda bulunan pozitif, sıfır ve negatif değerlerin sayısını bulup yazan programın algoritması ve akış şeması şöyledir:

Değişkenler:

SS: Okunan sayı adedi

PSS: Pozitif sayı adedi

NSS: Negatif sayı adedi

SSS: Sıfır sayı adedi
Algoritma:

Adım 1- Başla

Adım 2- SS=PSS=NSS=SSS=0

Adım 3- Sayı oku

Adım 4- SS=SS+1

Adım 5- Eğer SS>300 ise dur

Adım 6- Eğer sayı<0 ise adım 9'a git

Adım 7- Eğer sayı=0 ise adım 10'a git

Adım 8- PSS=PSS+1 hesapla,adım 3'e git

Adım 9- NSS=NSS+1 hesapla,adım 3'e git

Adım 10- SSS=SSS+1 hesapla,adım 3'e git

Adım 11- Dur


Akış şeması:



ÖRNEK: Bir sınıfta bulunan belirsiz sayıdaki öğrencilerin numarasını, adını ve soyadını yazan programın algoritması ve akış şeması şöyledir.

Değişkenler:

JNO: Öğrencinin numarası

AD: Öğrencinin adı

SAD: Öğrencinin soyadı



Algoritma:

Adım 1- Başla

Adım 2- Eğer okuma bittiyse Adım 6'ya git

Adım 3- JNO,AD,SAD oku

Adım 4- JNO,AD,SAD yaz

Adım 5- Adım 2'ye git

Adım 6- Dur

Akış şeması:



ÖRNEK: f(x) fonksiyonu x'in çeşitli değerlerine göre aşağıdaki şekilde değişmektedir. x değeri sıfır ile 5 arasında 0.5 aralıkla arttığına göre her bir x değeri için f(x) fonksiyonunu hesaplayan ve x ile f(x) değerlerini yazan programın akış şeması şöyledir.

Akış şeması:


2.3.YAZILIM GELİŞTİRME


Yazılım geliştirilirken bir programcı ve yazılım gurubunun takip edeceği adımlar şu şekildedir.

Bu çizgeden anlaşılacağı gibi adımlardan birinde bir sorunla karşılaşılırsa bu sorunu çözebilmek için bir önceki adıma geri dönmek gerekecektir. Bu geri dönüş bazen bir kaç adım olabilir.



Sistem Analizi: Sorunun çözülebilmesi için tamamen anlaşılmasını sağlayan çalışmalardır.

Tasarım: İsteklerle ilgili olarak belirlenen bir takım çözümlerin tanımlanmasıdır.

Algoritma: Çözümün adımlarla ifade edilmesidir.

Akış Çizgesi: Algoritmanın şekillerle ifade edilmesidir.

Programlama Dili Seçimi: Çözümün netleşmesinden sonra yapılacak işlemleri kolay bir şekilde bilgisayar ortamına aktaracak dilin seçilmesidir. Önemli olan bu dilin özelliklerinin programcı tarafından iyi bilinmesidir.

Programın Yazılması: Seçilen Programlama dilinin kuralları kullanılarak program yazılmaya başlanır. bu amaçla çoğunlukla sade bir metin editörü kullanılır. Bazı durumlarda Syntax highlighting denilen bir özelliğe sahip olan daha akıllı editörler de kullanılabilir. Bazen de editör ile Programlama dilinin derleyicisinin, bağlayıcısının hatta hata ayıklayıcısının iç içe bulunduğu IDE (Integrated Development Environment) denilen türde derleyiciler kullanılır.

Derleme: Programlama Dili ile yazılmış programın yazım hatalarının olup olmadığının kontrol edilmesini ve ara kod olarak Obje kodun üretilmesini sağlama adımıdır.

Bağlama: Derlenmiş ara kod diğer kütüphane ve parça programlarla birleştirilerek Makine dilinde programın oluşturulması adımıdır. Ancak bazı IDE ortamlarda ve derleyicilerde Derleme ve Bağlama bir bütündür ve beraberce halledilirler. Programcının ayrıca bir bağlama işlemi yapması gerekmez.

Çalıştırma: Oluşturulan Makine dili Programının çalıştırılması adımıdır. Yukarıdaki adımların hepsi yolunda gittiyse program sorunsuz olarak çalışabilmelidir.

Test: Programın Mantıksal olarak test edilmesini sağlar ve içerik olarak her ihtimal için doğru sonuçlar üretip üretmediğini kontrol etmenizi sağlar.

Yaşam Döngüsünün Sağlanması: Yukarıdaki Akış Çizgesi dikkat edilirse aslında bir döngüdür. Hatta test aşamasında sorun çıkmazsa bile sorunun tanımında yani ihtiyaçlarda bazı değişiklikler olursa adımlar baştan aşağı tekrar incelenmek zorunda kalınır. Bu çizgiye bir Yazılımın Yaşam Döngüsü de denilebilir. Bu çizimde Yazılımın Bakım süreci göz önüne alınmamıştır.



3 . BÖLÜM : İŞLEMLER



3.1. MATEMATİKSEL İŞLEMLER
Bilgisayarda en sık kullanılan işlemler matematiksel işlemlerdir. Matematiksel işlemler; programlama mantığına göre yeniden düzenlenmelidir. Dört işlem (toplama, çıkartma, çarpma ve bölme) için kullanılan basit matematiksel ifadelerdir.

Operatör

Adı

Anlamı

+

toplama

Sol ve sağdaki değerleri birbirine ekler.

-

çıkarma

Soldaki değerden sağdaki değerleri çıkarır.

*

çarpma

Sol ve sağdaki değerleri birbiri ile çarpar.

/

bölme(Reel)

Soldaki değeri sağdaki değere böler.

^

Üs alma

Soldaki değerin sağdaki değer kada üssünü alır

div

bölme(Tamsayı)

Soldaki değeri sağdaki değere böler.

mod

kalan

Soldaki değerin sağdaki değere bölünmesinden kalan

"+","-" ve "*" işlemlerinde işlem yapılan sayı cinsi reel ise sonuç ta reel 'dir. İşlem yapılan sayılar tamsayı ise sonuçta tamsayıdır. "/" işleminde ise sonuç her zaman reel sayıdır. 


Matematiksel işlemler algoritmada aynen kullanılamaz. Bilgisayar mantığına göre matematiksel ifadelerin yeniden yazılmaları gerekir. Algoritmada parantez kullanılarak işlem öncelik sıraları değiştirilebilir. İç içe kullanılan parantezlerde öncelik en içtekindedir. Aynı işlem önceliğine sahip elemanlarda işlem soldan sağa doğru yapılmaktadır.


İşlem öncelik sırası kuralları

Sıra

Tanım

Matematik

Bilgisayar

1

Parantezler

(( ))

(( ))

2

Üs Almak

an

a^n

3

Çarpma, Bölme

ab a/b

a*b a/b

4

Toplama ve Çıkarma

a+b a-b

a+b a-b

Aritmetik işlemlerde operatörlerin önceliklerini bilmek ve doğru kullanmak doğru sonuç almak için önemlidir. Operatörlerin öncelik sırası aşağıdaki gibidir:




  1. Parantez içleri en önce hesaplanmaktadır.

  2. Sonra üs alma işlemi yapılmaktadır.

  3. Daha sonra, çarpma, bölme, kalan işlemleri yapılır. Bir aritmetik ifadede birden fazla çarpma, bölme, kalan işlemi varsa, bu işlemlerdeki operatörler SOLDAN SAĞA doğru uygulanır. Çarpma, bölme, kalan operatörlerinin önceliği aynıdır.

  4. En son toplam ve çıkarma işlemleri yapılır. Bir ifade, birden fazla toplama ve çıkarma işlemi içeriyorsa, bunlara ait operatörler SOLDAN SAĞA doğru uygulanır.


Örnek:

(C*D/(A*D))+B+C*D/A


C+B*A/A-B^C*(B-C)^B
Mod ve Div işlemlerinin sonuçları her zaman  tamsayıdır.
4 div 12 = 0,    13 div 4 = 3         3 mod 2 = 3,   4 mod 2 = 0  
12 div 4 = 3,    16 div 4 = 4         5 mod 2 = 1,   4 mod 0 = (tanımsız) 
3.2. KARŞILAŞTIRMA İŞLEMLERİ
Karşılaştırma işlemleri genellikle koşul vermek için kullanılır. Değerler koşula uygunsa sonuç DOĞRU "true", değilse YANLIŞ "false" dir.


Operatör

Adı

Anlamı

=

Eşit

Sol ve sağdaki değerler biribirlerine eşitse

<>

Eşitdeğil

Sol ve sağdaki değerler birbirlerine eşitdeğilse

<

Küçük

Soldaki değer sağdaki değerden küçükse

>

Büyük

Soldaki değer sağdaki değerden büyükse

<=

Küçük yada eşit

Soldaki değer sağdaki değere eşit yada küçükse

>=

Büyük yada eşit

Soldaki değer sağdaki değere eşit yada büyükse


Aşağıdaki operatörler dilden dile değişiklik göstermektedir:
^ veya ** üs alma

<> eşit değil ( C++’da != )

% Kalan
3.3. MANTIKSAL İŞLEMLER



 Mantıksal işlemler genelde birden fazla karşılaştırma işlemi arasında bağ kurmak içim kullanılır. Örneğin iki koşul arasında "Or" operatörü kullanıldığında sağdaki ya da soldaki koşullardan herhangi birinin sonucu "true" DOĞRU ise mantıksal işlemin sonucu da "true" dur.


Operatör

Adı

Anlamı

And

Ve

Sol ve sağdaki koşulların her ikiside doğruysa

Or

Veya

Sol ve sağdaki koşullardan herhangi biri doğruysa

Not

Değil

Verilen koşul doğru ise

Xor

Veya Değil

Verilen koşullardan herhangi biri doğru değilse


VE Bağlacı: Ve bağlacı ile söylenmek istenen her iki koşulun da sağlanmasıdır. VE bağlacı ile bağlanmış önermelerden en az birinin yanlış olması sonucu yanlış yapar.
VEYA Bağlacı: VEYA bağlacı ile bağlanan koşullardan en az birisi doğru ise sonuç doğrudur. İkiden fazla önermeler için, önermelerden en az birinin doğru olması sonucu doğru yapar.
DEĞİL Bağlacı: DEĞİL bağlacı doğruyu yanlış, yanlışı doğru yapar. DEĞİL tek bir önerme veya koşul üzerinde uygulanır. VE, VEYA ise iki önerme veya koşul üzerinde uygulanır. Doğru=1 ve Yanlış=0 tanımıyla, aşağıdaki tabloda bağlaçların X ve Y’nin alacağı değerlere göre sonuçları gösterilmiştir.


X

Y

X VE Y

X VEYA Y

Z

DEĞİL Z

0

0

0

0

0

1

0

1

0

1

1

0

1

0

0

1







1

1

1

1






4 . BÖLÜM : PROGRAMLAMA VE C

4.1. C Nasıl bir Programlama Dilidir?


C orta seviyeli bir programlama dilidir. Yapısal diğer programlama dillerine göre C dilinin seviyesi daha düşüktür. C dili hem yüksek seviyeli dillerin, kontrol deyimleri, veri yapıları gibi avantajlarını bünyesinde barındırıyor, aynı zamanda bitsel operatörler gibi makine kodu deyimlerini yansıtan operatörlere sahip. Yani hem makineye yakın hem de insan algılamasına. Zaten çok tercih edilmesinin en önemli nedenlerinden biri de bu.
C bir sistem programlama dilidir. Donanımın yönetilmesi, kontrolü ve denetimi için yazılan, doğrudan donanımla ilişkiye giren programlara sistem programı denmektedir. Örneğin, işletim sistemleri, derleyiciler, yorumlayıcılar, aygıt sürücüleri (device drivers), bilgisayarların iletişimine ilişkin programlar, otomasyon programları, sistem programlarıdır. Diğer uygulama programlarına destek veren yazılımlar da çoğunlukla sistem programları olarak ele alınırlar.
C algoritmik bir dildir. C'de program yazmak için yalnızca dilin sentaks ve sementik yapısını bilmek yetmez genel bir algoritma bilgisi de gerekir.
C diğer dillerle kıyaslandığında taşınabilirliği çok yüksek olan bir dildir. Çünkü 1989 yılından bu yana genel kabul görmüş standartlara sahiptir. İfade gücü yüksek, okunabilirlik özelliği güçlü bir dildir.
C çok esnektir. Diğer dillerde olduğu gibi programcıya kısıtlamalar getirmez.
Güçlü bir dildir. Çok iyi bir biçimde tasarlanmıştır. C'ye ilişkin operatörlerin ve yapıların birçoğu daha sonra başka programlama dilleri tarafından da benimsenmiştir.
C verimli bir dildir. Seviyesinden dolayı hızlı çalışır. Verimlilik konusunda assembly diller ile rekabet edebilir.
C doğal bir dildir. C bilgisayar sisteminin biçimiyle uyum içindedir.
C küçük bir dildir. Yeni sistemler için derleyici yazmak zor değildir.

4.2. C Programlama Dili'nin Tarihi


C dilinin tarihi incelendiğinde C dilinin UNIX işletim sisteminin bir yan ürünü olarak doğduğu söylenebilir. Zamanının diğer işletim sistemleri gibi UNIX de assembly dilinde yazılmıştı. Assembly dilinde yazılan programları geliştirmek çok zor ve zahmetli olduğundan, Thompson UNIX işletim sistemini daha geliştirebilmek için, makine dilinden daha yüksek seviyeli bir dile gereksinim duydu. Bu amaçla küçük bir programlama dili tasarladı. Kendi dilini tasarlarken Thompson, 1960 yıllarının ortalarında Martin Richards tarafından geliştirilmiş BCPL dilinden yola çıktı. (BCPL = Business Common Programming Language. Bu dil de CPL = Cambridge Programming Language'den türetilmiştir. CPL'in kaynağı da tüm zamanların en eski ve en etkili dillerinden biri olan ALGOL 60'dır. ALGOL 60 Pascal, ADA, Modula2 dillerinin de atasıdır, bu dillere bu yüzden C dilinin kuzenleri de ddenebilir.

Thompson geliştirdiği bu dilin ismini B koydu. Dennis Ritchie UNIX projesine katılınca B dilinde programlamaya başladı. B dili daha da geliştirilmişti ve artık daha yeni teknoloji olan PDP–11 bilgisayarlarda çalışıyordu. Thompson UNIX işletim sisteminin bir kısmını B dilinde tekrar yazdı. Artık 1971 yılına gelindiğinde B dilinin PDP–11 bilgisayarlar ve UNIX işletim sisteminin geliştirilmesi için çok uygun olmadığı iyice ortaya çıktı. Bu yüzden Ritchie B programlama dilinin daha ileri bir versiyonunu geliştirmeye başladı. Oluşturduğu dili ilk önce NB (new B) olarak isimlendirdi. Ama geliştirdiği dil B dilinden iyice kopmaya ve ayrı bir karakter göstermeye başlayınca dilin ismini de C olarak değiştirdi. 1973 yılında UNIX işletim sisteminin büyük bir kısmı C dili ile tekrar yazıldı.


C'nin evrimi ve gelişmesi 70'li yıllarda da devam etti. Geniş kitleler tarafından tanınması ve kullanılmaya başlaması 1978 yılında Dennis Ritchie ve Brian Kernighan tarafından yazılan "The C Programming Language" kitabı ile olmuştur. Bu kitap aynı zamanda yazılım konusunda yazılan en iyi eserlerden biri olarak değerlendirilmektedir. C'nin standardize edilmesine kadar olan dönemde bu kitap çoğunluğun benimsediği genel kabul gören gayriresmi bir standard vazifesi de görmüştür.



Ken Thompson ve Dennis Ritchie Unix İşletim Sistemi üzerinde çalışırken (Yıl: 1972)

1970'li yıllarda C programcılarının sayısı azdı ve bunlardan çoğu UNIX kullanıcılarıydı. Ama artık 80'li yıllar gelince C nin kullanımı UNIX sınırlarını aştı ve farklı işletim sistemlerinde çalışan derleyiciler piyasaya çıktı, C dili de IBM PC'lerde yoğun olarak kullanılmaya başladı.


C'nin artan popülaritesi problemleri de beraberinde getirdi. Derleyici yazan kişiler, referans olarak Ritchie ve Kernighan'ın kitabını esas alıyorlardı
C dilinin standardizasyonu neredeyse zorunlu bir hale gelmişti! C'nin standardizasyon çalışmaları 1983 yılında ANSI (American National Standards Institute) gözetiminde ve desteğinde başladı. Yapılan birçok değişiklikten sonra standart çalışmaları 1988 yılında sona erdi ve 1989 yılının Aralık ayında ANSI C standardı Jim Brodie başkanlğında X3.159 – 1989 numarasıyla resmi olarak onaylandı. 1990 yılında ise ISO/IEC 9899 – 1990 numarasıyla ISO (International Standards Organization) tarafından standardizasyonu kabul edildi. Standardizasyonu tamamlandıktan sonra C yüksek oranda taşınabilir bir sistem programlama dili haline gelmiştir. Günümüzde de sistem programlarının (derleyiciler, editörler, işletim sistemleri) çoğu C dili ile yazılmaktadır.

5 . BÖLÜM : GENEL KAVRAMLAR

5.1. ATOM KAVRAMI VE ATOM TÜRLERİ

Bir programlama dilinde yazılmış programı en küçük parçalara bölmeye çalışılsın. Öyle bir noktaya gelinir ki, artık bu parçaları daha da bölmeye çalışıldığında anlamsız parçalar oluşur. İşte bir programlama dilinde anlam taşıyan en küçük birime atom (token) denir.


Atomlar daha fazla parçaya bölünemezler.
Yazılan kaynak kod (program) derleyici tarafından ilk önce atomlarına ayrılır. (Tokenizing). Atom yalnızca C diline ilişkin bir kavram değildir. Tüm programlama dilleri için atom kavramı söz konusudur, ama farklı programlama dillerinin atomları birbirlerinden farklı olabilir.

Atomlar aşağıdaki gibi gruplara ayrılabilir.


5.1.1. Anahtar Sözcükler (keywords, reserved words)


Atomlar dil için belli bir anlam taşırlar. Değişken olarak kullanılmaları yasaklanmıştır. Yani programcı bu anahtar sözcükleri kendi tanımlayacağı değişkenlere isim olarak veremez.
Standard ANSI C dilinde 32 tane anahtar sözcük bulunmaktadır. (Derleyici yazan firmalar kendi yazdıkları derleyiciler için ilave anahtar sözcükler tanımlayabilmektedir.)
auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while
Bazı programlama dillerinde anahtar sözcüklerin küçük ya da büyük harf olması fark etmemektedir. Ama C’de bütün anahtar sözcükler küçük harf olarak tanımlanmıştır. C büyük harf küçük harf duyarlığı olan bir dildir. (case sensitive) bir dildir. Ama diğer programlama dillerinin çoğunda büyük - küçük harf duyarlığı yoktur. (case insensitive)
Örneğin, programcı olarak biz kullanacağımız bir değişkene “register” ismini vermeyiz. Çünkü bu bir anahtar sözcüktür. (C dili tarafından rezerve edilmiştir) Ama buna karşın biz istediğimiz bir değişkene REGISTER, Register, RegisTER vs. gibi isimler verebiliriz, çünkü bunlar artık anahtar sözcük sayılmazlar. Anahtar sözcük olan yalnızca tamamen küçük harf ile yazılan "register" dir.

5.1.2. İsimlendirilenler (identifiers)


Değişkenlere, fonksiyonlara, makrolara, yapı ve birliklere vs. programlama dili tarafından belirlenmiş kurallara uyulmak şartıyla, istenildiği gibi isim verilebilir. Bu atomlar genelde bellekte bir yer belirtirler.

5.1.3. Operatörler (Operators)


Operatörler önceden tanımlanmış birtakım işlemleri yapan atomlardır. Örneğin +, -, *, / , >=, <= birer operatördür.
Programlama dillerinde kullanılan operatör sembolleri birbirinden farklı olabileceği gibi, operatör tanımlamaları da birbirinden farklı olabilir. Örneğin birçok programlama dilinde üs alma operatörü tanımlanmışken C dilinde böyle bir operatör yoktur. Üs alma işlemi operatör ile değil bir fonksiyon yardımıyla yapılabilir.
C dilinde bazı operatörler iki karakterden oluşmaktadır bu iki karakter bitişik yazılmalıdır aralarına space karakteri konduğunda operatör anlamını yitirir.

5.1.4. Sabitler (Constants)


Doğrudan işleme sokulan değişken bilgi içermeyen atomlardır. Örneğin SAYAC = SON + 10 gibi bir ifadede 10 sabiti doğrudan SON değişkeni ile toplanmaktadır.

5.1.5. Stringler (String literals)


İki tırnak içindeki ifadelere string denir. Stringler programlama dillerinin çoğunda tek bir atom olarak alınırlar, daha fazla parçaya bölünemezler. “STRİNGLER DE BİRER ATOMDUR” ifadesi bir stringdir.

5.1.6. Ayıraçlar ya da noktalama işaretleri (Separators, Punctuators, Delimiters)


Yukarıda sayılan atom sınıflarının dışında kalan tüm atomları bu gruba sokabiliriz. Genellikle diğer atomları birbirinden ayırma amacıyla kullanıldıkları için ayıraç olarak isimlendirilirler.

5.1.7. Örnek bir C programının atomlarına ayrılması:


Aşağıda 1 den kullanıcının klavyeden girdiği bir tamsayıya kadar olan tamsayıları toplayan ve sonucu ekrana yazdıran bir C programı görülmekte;
#include

main()


{

int number, k, total = 0;

printf("lütfen bir sayı giriniz\n");

scanf("%d", &number);

for(k = 1; k<= number; ++k)

total += k;

printf("toplam = %d\n", toplam);

return 0;

}
Bu kaynak kod atomlarına ayırmak istendiğinde;

# include < stdio.h > main ( ) { int number , k , total = 0 ;

printf ( "lütfen bir sayı giriniz\n" ) ; scanf ( "%d" , & number ) ;

for ( k = 1 ; k <= ; ++ k ) total += k ;

printf ( "toplam = %d\n" , toplam ) ; }
programda yer alan atomlardan
anahtar sözcükler

include int for return
isimlendirilenler (identifiers / variables)

main n k toplam printf scanf
operatörler

= <= ++ +=
sabitler

0 1 0
stringler

("lütfen bir sayı giriniz\n" ) "%d" "toplam = %d\n"
ayıraçlar noktalama işaretleri

< > ( ) , ; { }

5.2. NESNE (OBJECT)


Bellekte yer kaplayan ve içeriklerine erişilebilen alanlara nesne denir. Bir ifadenin nesne olabilmesi için bellekte bir yer belirtmesi gerekir. Programlama dillerinde nesnelere isimlerini kullanarak erişilebilir.
a = b + k; örneğinde a, b ve k birer nesnedir. Bu ifadede a nesnesine b ve k nesnelerine ait değerlerin toplamı atanmaktadır.
sonuc = 100; sonuc isimli nesneye 100 sabit değeri atanmaktadır.
Nesnelerin bazı özelliklerinden söz edilebilir:

5.2.1. İsimleri (name)


Nesneyi temsil eden karakterlerdir. Nesnelere isimleri programcı tarafından verilir. Her dil için nesne isimlendirmede bazı kurallar söz konusudur.

VERGI = 20000; (Burada VERGI bir nesne ismidir.)


5.2.2. Değerleri (value)

Nesnelerin içlerinde tuttukları bilgilerdir. Başka bir deyişle nesneler için bellekte ayrılan yerlerdeki 1 ve 0 ların yorumlanış biçimi ilgili nesnenin değeridir.


5.2.3. Türleri (Type)


Nesnenin türü derleyiciye o nesnenin nasıl yorumlanacağı ve bellekteki uzunluğu hakkında da bilgi verir. Her türün bellekte ne kadar uzunlukta bir yer kapladığı programlama dillerinde önceden belirtilmiştir. Bir nesnenin türü, ayrıca o nesne üzerinde hangi işlemlerin yapılabileciği bilgisini de verir. Türler ikiye ayrılır.

5.2.3.1. Önceden tanımlanmış veri türleri (default types)


Bu türler programlama dilinin tasarımında var olan veri türleridir. Örneğin C dilinde önceden tanımlanmış 11 ayrı veri türü vardır.

5.2.3.2. Programcı tarafından tanımlanan veri türleri (user defined types)


Programlama dillerinin çoğunda programcının tür tanımlamasına izin vermektedir. Örneğin C dilinde yapılar, birlikler, bit alanları, C++ dilinde de sınıflar programcı tarafından tanımlanan veri türleridir.

5.2.4. Faaliyet alanları (scope / visibility) :


Nesnenin, dilin derleyicisi ya da yorumlayıcısı tarafından tanınabildiği program alanıdır.

5.2.5. Ömürleri (storage duration / lifespan) :


Programın çalıştırılması sırasında nesnenin varlığını sürdürdüğü zaman parçasıdır.

5.2.6. Bağlantıları (linkage)


Nesnelerin programı oluşturan diğer modüllerde tanınabilme özelliğidir. (

5.3. İFADE (Expression)


Değişken, operatör ve sabitlerin birleşimlerini ifade eder.

a + b / 2

c * 2, d = h + 34

var1
geçerli ifadelerdir.



5.4. DEYİM (statement)


Derleyicinin, bilgisayara bir iş yaptıracak şekilde kod üretmesine (yani icra edilebilecek bir kod üretmesine) yol açan ifadelere deyim denir. Örneğin C dilinde ; ile sonlandırılmış ifadelere deyim denmektedir.
sonuc = sayi1 * sayi2
bir ifadedir. Ancak
sonuc = sayi1 * sayi2;
bir deyimdir. Bu deyim derleyicinin, sayi1 ve sayi2 değişkenlerin değerlerinin çarpılarak, elde edilen değerin sonuc değişkenine atanmasını sağlayacak şekilde kod üretmesine neden olacaktır.

5.5. SOL TARAF DEĞERİ (Left Value)


Nesne gösteren ifadelere sol taraf değeri denir. Bir ifadenin sol taraf değeri olabilmesi için mutlaka bir nesne göstermesi gerekir. Bir ifadenin Sol taraf değeri olarak isimlendirilmesinin nedeni o ifadenin atama operatörünün sol tarafına getirilebilmesidir.
Örneğin a ve b nesneleri tek başına sol taraf değerleridir. Çünkü bu ifadeler atama operatörünün sol tarafına getirilebilirler. Örneğin a = 17, ya da b = c * 2 denilebilir.
Ama a + b bir sol taraf değeri değildir. Çünkü a + b = 25 denilemez.
Değişkenler her zaman sol taraf değeridirler. Sabitler sol taraf değeri olamazlar.

5.6. SAĞ TARAF DEĞERİ (Rigth Value)


Daha az kullanılan bir terimdir. Nesne göstermeyen ifadeler sağ taraf değeri olarak isimlendirilirler. Tipik olarak, atama operatörünün sol tarafında bulunamayan yalnızca sağ tarafında bulunabilen ifadelerdir. Sabitler her zaman sağ taraf değeri oluştururlar





Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azrefs.org 2016
rəhbərliyinə müraciət

    Ana səhifə