Programlama -Temel Kavramlar

Download Report

Transcript Programlama -Temel Kavramlar

PROGRAMLAMA
Temel Kavramlar
PROF.DR.YALÇIN ÇEBİ
Dokuz Eylül Üniversitesi Bilgisayar Mühendisliği Bölümü
Buca/İzmir
E-posta: [email protected]
PROGRAM
 Bilgisayarın veriyi bilgiye çevirebilmesi için
takip etmesi gereken deyimler grubu
(Instruction Set).
 Herhangi bir programlama dilinin deyimleri
kullanılarak yazılmış olabilir.
 Programlama: Program geliştirme sürecinin
tümü.
 Bu süreç “Yazılım Geliştirme (Software
Development)” olarak da adlandırılmaktadır.
Prof.Dr.Yalçın ÇEBİ
2
Program Standartları (1)
 Günümüzde, bilgisayarların hayatın hemen
her alanında kullanılır olması, değişik
ortamlarda çalışabilecek programların
hazırlanması gerekliliğini de beraberinde
getirmektedir.
 Eğitimli eleman azlığı, programlama
maliyetlerini arttırmaktadır.
 Daha yüksek programcı verimi sağlamak
amacıyla programlama standartlarının
düşürülmekte, standart dışı programlar ortaya
çıkmaktadır.
Prof.Dr.Yalçın ÇEBİ
3
Program Standartları (1)
 Bu programlar bir bilgisayar ortamından
diğerine taşınırken sorunlar ortaya çıkmakta
ve hatalar oluşmaktadır.
 Sorun ve hataların giderilmesi için daha fazla
işgücü ve kaynak ayırılmaktadır.
 Programların geliştirilmesindeki gereklilikler:


Belirli standartların konulması ve bunlara
uyulması.
Nitelikli elemanlarla çalışılması.
Prof.Dr.Yalçın ÇEBİ
4
İyi Program- Düşük Maliyet ?
 İyi kalitedeki bir programa her zaman gereksinim
duyulmakta, ancak programlama maliyetlerinin de
düşürülmesi gerekmektedir.
 Maliyetleri düşürmek için:


Kötü tasarlanmış bir programı çalıştırmak için
uğraşmamalı,
Program tasarlama süreçlerine daha fazla özen
gösterilerek tasarlanmış programların yazılmasını
sağlamalıdır.
 Program geliştirme sürecinde program tasarım
aşaması daha da önem kazanmaktadır.
Prof.Dr.Yalçın ÇEBİ
5
Program Tasarım Hedefleri
 Güvenilirlik (Reliability): Program her zaman için kendisinden





beklenen işlemi gerçekleştirmelidir.
Bakım yapılabilirlik (Maintainability): Gerek duyulduğunda
program kolaylıkla değiştirilebilinmeli ve düzeltilebilinmelidir.
Taşınabilirlik (Portability): Program başka bir bilgisayar
sistemine en az değişiklikle taşınabilmelidir.
Okunabilirlik (Readability): Program, başka bir programcı
tarafından da okunabilir ve anlaşılabilir olmalıdır.
Verim (Performance): Programın yerine getirmesi gereken
işlemler çabuk ve verimli olarak gerçekleşmelidir.
Kaynak tasarrufu (Storage Saving): Program gereksiz ölçüde
uzun ve kaynak harcayıcı olmamalıdır.
Prof.Dr.Yalçın ÇEBİ
6
“Doğru” Program
 Bir program hazırlanırken, kendisinden
beklenen hedefler doğrultusunda geliştirmeler
yapılmakta ve program düzenlenmektedir.
 Program, hedeflenen özellikleri sağlıyorsa
“doğru” olarak nitelendirilmekte ve
kullanılmaktadır.
Prof.Dr.Yalçın ÇEBİ
7
“Doğru” Program =“Uygun” Program?
 Bazen,
 Program özelliklerinde programdan gerçekten
istenilenler tam olarak belirtilmemektedir.
 Bu özelliklere göre geliştirilen program “doğru”, ancak
“uygun” olmamaktadır.
 Bazen;
 Program özelliklerinin tanımlanması doğru olarak
yapılmaktadır.
 Program geliştirme yöntemlerinden kaynaklanan
hatalar nedeniyle program yanlış olabilmektedir.
 Program geliştirme sürecinin çok dikkatli ve ayrıntılı
olarak hazırlanması ve takip edilmesi gerekmektedir.
Prof.Dr.Yalçın ÇEBİ
8
Program Yaşam Döngüsü (1)
(Program Life Cycle)
 Altı ana aşamadan oluşmaktadır.
 Bu aşamalardan yalnızca bir tanesi
programın bilgisayara kaydedilmesidir.
 Diğerleri ise bilgi toplama, programı
tasarlama, deneme, belgeleme ve bakım gibi
işlemleri içermektedir.
 Bir programın bilgisayara bir programlama
dilinde aktarılması toplam işin yalnızca
%20’sidir.
Prof.Dr.Yalçın ÇEBİ
9
Program Yaşam Döngüsü (2)
 Program Özellikleri (Program Specification):
Programın hedefleri, girdiler, çıktılar ve işlem
gereksinimleri belirlenmektedir.
 Program Tasarımı (Program Design): Çeşitli
programlama teknikleri kullanılarak program
için çözümler geliştirilmektedir.
Prof.Dr.Yalçın ÇEBİ
10
Program Yaşam Döngüsü (3)
 Program Yazımı (Program Coding): Bir veya
bir’den fazla programlama dilinde program
yazılmaktadır.
 Program Deneme (Program Testing):
Program, yazım veya mantık hataları
açısından kontrol edilmektedir.
Prof.Dr.Yalçın ÇEBİ
11
Program Yaşam Döngüsü (4)
 Program Belgeleme (Program
Documentation):


Programın geliştirilmesine başlandığı andan
itibaren devam eden ve etmesi gereken bir
süreçtir.
Programın geliştirilmesi sırasındaki her
aşama belgelenmektedir.
Prof.Dr.Yalçın ÇEBİ
12
Program Yaşam Döngüsü (4)

Program Bakımı (Program Maintenance):


Tamamlanmış olan programlar, belirli aralıklarla
duyarlılık, verimlilik, standartlaştırma ve kullanım
kolaylığı sağlama yönlerinden gözden
geçirilmektedirler.
Gerekli görüldüğü anda programda değişiklikler
yapılmaktadır.
Prof.Dr.Yalçın ÇEBİ
13
Yazılım Ekibi
 Program yaşam döngüsünü yazılım
mühendisleri (Software Engineer) veya
programcılar (programmer)
uygulamaktadırlar.
 Yaşam döngüsünün dördüncü aşamasında,


Programcılar sistem çözümleyicilerle (System
Analyst) birlikte çalışmaktadır.
Bilgi sistemleri için gereken yazılımı
hazırlamaktadırlar.
Prof.Dr.Yalçın ÇEBİ
14
Program Özellikleri (1)
 Program yaşam döngüsünün ilk aşaması
 Programın tanımlanması veya programın incelenmesi
 Problemin anlaşılması olarak da
tanımlanabilmektedir.
 Programcı veya çözümleyiciden beklenenler:





Programın hedefleri,
İstenen çıktı,
Gerekli olan girdiler,
İşlem gereksinimleri,
Belgeleme.
Prof.Dr.Yalçın ÇEBİ
15
Program Özellikleri (2)
 Bir programın hedefleri belirlenirken
gerçekleştirilen çalışmalar da gündelik
hayattaki çalışmalardan farklı değildir.
 Çözümlenecek olan problemin net bir tanımı
yapılmalı, problemin ne olduğu açıkça ortaya
konulmalıdır.
 Daha sonra problemin çözümü için gereken
diğer aşamalara geçilebilmektedir.
Prof.Dr.Yalçın ÇEBİ
16
Program Özellikleri (3)
 Bir problemin çözümüne başlarken,
 Problemi çözmek için hazırlanacak olan programdan
hangi çıktıların isteneceği belirtilmelidir.
 Belirlenen çıktıların elde edilmesi için hangi girdilerin
olması gerektiği belirlenmektedir.
 Programın kullanıcısı olan kişilerin, programdan
bekledikleri çıktıyı kağıt üzerinde yazarak veya
çizerek ifade etmeleri gerekmektedir.
 Bu sayede programcılar hangi hedefe erişmeleri
gerektiğini rahatlıkla anlayabilmektedirler.
Prof.Dr.Yalçın ÇEBİ
17
Program Özellikleri (4)
 Çıktılar tanımlandıktan sonra, gerekli verilerin ve bu verilerin
hangi kaynaktan girileceğinin belirlenmesi gerekmektedir.
 Verilerin
 türleri,
 yapıları,
 hangi ortamdan toparlanacağı,
 nasıl toparlanacağı,
 bilgisayar sistemine nasıl girileceği
gibi soruların cevaplandırılacağı çalışmalar bu aşamada
gerçekleştirilmektedir.
 Girilen verilerin, istenilen çıktıyı verebilecek şekilde nasıl
işleneceğinin belirlenmesi de bu aşamada gerçekleştirilen
işlerden birisidir.
Prof.Dr.Yalçın ÇEBİ
18
Program Özellikleri (5)
 Program geliştirmenin her aşamasında
belgeleme (dokümantasyon)
gerçekleştirilmelidir.
 Belgelemenin, bu aşamadan başlayarak her
aşamayı ayrıntılı olarak kapsayan bir şekilde
hazırlanması gerekmektedir.
 Bu aşamada programın özelliklerini, girdi,
çıktı ve gereken işlemleri içeren bir belge
hazırlanmaktadır.
Prof.Dr.Yalçın ÇEBİ
19
Program Tasarımı (1)
 Problemin çözüm yöntemini ve bu yöntemin
geliştirilme işlemlerini içermektedir.
 Program yaşam döngüsünün en önemli
aşamasıdır.
 Bu aşamada;


Bir çözüm yöntemi planlanmakta,
Bu çözüm yöntemi uygun çözüm, program
geliştirme yöntem ve araçları ile
geliştirilmektedir.
Prof.Dr.Yalçın ÇEBİ
20
Program Tasarımı (2)
 Hazırlanan çözüm içinde;




Programın nasıl geliştirileceği,
Programın nasıl bölümlendirileceği,
Programın hangi bölümünde hangi
programlama dilinin kullanılacağı,
Programın hangi bölümünün kim tarafından
kodlanacağı (seçilen programlama dilinde
bilgisayara aktarılacağı)
ayrıntılı olarak belirtilmelidir.
Prof.Dr.Yalçın ÇEBİ
21
Program Tasarımı (3)
 Özellikle büyük programlarda, program
“parça” veya “modül” olarak adlandırılan
bölümlere ayrılmaktadır.
 Her parça ayrı programcılar tarafından ve
bazen de ayrı programlama dillerinde
yazılmaktadır.
 Birbirinden bağımsız olarak hazırlanan ve
denenen bu modüllerin, bütünleştirme
sürecinde birbirleri ile birleştirilmeleri ve bir
bütün olarak denenmeleri gerekmektedir.
Prof.Dr.Yalçın ÇEBİ
22
Yapısal Programlama Teknikleri
 Yukarıdan Aşağıya (Top-down) yöntemi
 Aşağıdan Yukarıya (Bottom-up) yöntemi
 Sözde kod (Pseudocode)
 Akım Şeması (Flowchart)
 Mantıksal Yapılar (Logic Structures)
Prof.Dr.Yalçın ÇEBİ
23
Aşağıdan-Yukarı Yöntemi (1)
 Programlama ve sistem tasarımında karşılaşılan
problemler, hep bir arada çözülemeyecek kadar
büyük olabilmektedirler.
 Nereden başlanacağı konusunda bir soru işareti
doğmaktadır.
 Eğer karşılaşılan problem, daha önce karşılaşılan
türden bir problem değilse;
Problemin anlaşılan bir bölümünü çözmek,
 Böylece problemin diğer bir tarafının anlaşılmasını
kolaylaştırmak,
 Daha sonra o parçayı çözmek
ve
 Sırasıyla tüm parçaları çözüme kavuşturmak
gerekebilir.

Prof.Dr.Yalçın ÇEBİ
24
Aşağıdan-Yukarı Yöntemi (2)
 Her bir parça ayrı ayrı çözümlendiği için daha sonra
birleştirilmeleri ve birlikte düzgün çalışıp
çalışmadıklarının denenmesi gerekmektedir.
 Bu yönteme “Aşağıdan Yukarıya (Bottom-up)” adı
verilmektedir.
 Bu yöntemin en büyük sorunu:


Problemin çözüm aşamasında her bir parça ayrı ayrı
çözüme kavuşturulmakta,
Program parçaları arasındaki ilişki kısmen de olsa
gözardı edilmektedir.
 Bunun sonucunda program içinde bütünlük sağlamak
için yeniden düzenlemeler gerekmekte, programın
bütünleştirilmesi sırasında yoğun bir ek çalışmaya
gereksinim duyulmaktadır.
Prof.Dr.Yalçın ÇEBİ
25
Yukarıdan-Aşağı Yöntemi (1)
 Karmaşık problemler
 Parçalara ayrılarak
 Aşama aşama çözümlenebilecek bölümler
halinde ele alınarak
çok daha kolay çözümlenebilirler.
 Programlamada geliştirilen modern yöntemler
bunu öngörmektedir.
 Her aşamada problem küçük parçalara
bölünmekte ve ayrıntılardan mümkün
olduğunca kaçınılmaktadır.
Prof.Dr.Yalçın ÇEBİ
26
Yukarıdan-Aşağı Yöntemi (2)
 Bu yaklaşımda, programın tüm parçaları
arasındaki ilişkiler çözüme başlanmadan
önce ayrıntılı olarak tanımlanmakta, böylece
parçaların birleştirilme aşaması kolaylıkla
geçilebilmekte ve istendiği gibi çalışan bir
program elde edilmektedir.
 Bu genel yaklaşım, Yukarıdan Aşağıya
Yöntemi (Top-down Method) olarak
adlandırılmaktadır.
Prof.Dr.Yalçın ÇEBİ
27
Sözde Kod (Pseudocode)
 Yazılacak olan programın mantıksal akışının yazı ile
ifade edilmesidir.
 Programın yazılmasından önce bir özetinin
yapılmasına benzemektedir.
 Örneğin;

Ekrandan girilen “n” tane sayının okutulması,
toplatılması, aritmetik ortalamasının alınması ve
sonucun yazdırılması:
 Sözde kodda, yapılacak olan işlem genel hatları ile
tariflenmektedir.
 Bu koda bakarak istenilen bir programlama dilinde bu
işlemi gerçekleştiren bir program geliştirmek
mümkündür.
Prof.Dr.Yalçın ÇEBİ
28
Örnek Sözde Kod
İşleme Başla
n değerini oku
adet’e ve toplam’a sıfır değerini ata
a sayısını oku
a sayısını toplam ile topla ve sonucu toplam’a
ata
6. adet’in değerini 1 arttır.
7. Eğer adet’in değeri n’den küçükse yeni sayıyı
okumak üzere 4.aşamaya git.
8. toplam değerini adet değerine bölerek
aritmetik ortalamayı bul ve bu değeri
ortalama’ya aktar
9. toplam, adet ve ortalama değerlerini yazdır
10. İşlemi bitir
1.
2.
3.
4.
5.
Prof.Dr.Yalçın ÇEBİ
29
Akım Şeması (Flowchart)
 Bir programlama probleminin çözümü için
gerekli ayrıntılı aşamaları grafiksel olarak
gösteren bir çizimdir.
 Akım şemalarında her simge belirli bir işlemi
ifade etmektedir.
Prof.Dr.Yalçın ÇEBİ
30
Akım Şeması Simgeleri
Prof.Dr.Yalçın ÇEBİ
31
Programın Parçalar Halinde Gösterimi
 Ancak, büyük çaplı programlarda akım
şeması hazırlanması oldukça zor olmaktadır.
 Yukarıdan aşağıya programlama yöntemi
sayesinde programın parçalara ayrılması
yarar sağlamaktadır.
 Böylece her program parçasının akım şeması
ayrı hazırlanmakta, hazırlanan bu akım
şemaları ise daha üst seviyeli bir akım
şeması ile gösterilebilmektedir.
Prof.Dr.Yalçın ÇEBİ
32
Örnek Program Akım Şeması
Prof.Dr.Yalçın ÇEBİ
33
Akım Şeması TürleriÇerçeve Akım Şeması
 Çerçeve akım şeması ve ayrıntılı akım
şeması farklı seviyelerdeki ayrıntıları
vermektedir.
 Çerçeve akım şemalarında, programcı
programı genel hatları ile anlayabilmektedir.
 Sistem akım şemasının program akım
şemasına çevrilmiş hali bulunmaktadır.
 Bu akım şemasında gerçekleştirilecek
işlemlerin ana hatları bulunmaktadır.
Prof.Dr.Yalçın ÇEBİ
34
Akım Şeması TürleriAyrıntılı Akım Şeması
 Ayrıntılı akım şemaları çerçeve akım şemaları
temel alınarak hazırlanmakta ve özel
işlemlerin yapılabilmesi için gerekli ayrıntıları
içermektedirler.
 Bu akım şemasından yararlanarak programcı
program kodlama sayfalarını hazırlama
imkanını bulabilmektedir. Bu akım şemaları
genellikle değişik programcılar tarafından
hazırlanabilmektedir.
Prof.Dr.Yalçın ÇEBİ
35
Çerçeve ve Ayrıntılı Akım Şeması
Prof.Dr.Yalçın ÇEBİ
36
Günümüzde Akım Şemaları
 Akım şemaları, orijinalinde problemleri
çözümleme ve bilgisayar destekli çözümler
üretilmesine yardımcı olmak amacıyla
geliştirilmişlerdir.
 Yazılım teknolojisinin gelişimi ile birlikte, akım
şemaları can sıkıcı ve yetersiz araçlar olarak
algılanmaya başlamışlardır.
 Daha yeni seçenekler geliştirilmiş ve
uygulamaya konmuşlardır.
Prof.Dr.Yalçın ÇEBİ
37
Akım Şemalarının Zorlukları
 Farklı seviyelerdeki ayrıntılar kolaylıkla






karıştırılabilmektedirler.
Örneğin, özel bir uygulamanın ayrıntıları tasarımın ilk
başlarında verilmek zorunda kalınabilmektedir.
Bir seviyedeki akım şemasından diğer bir seviyedeki
akım şemasına açıkça geçilememektedir.
Yapılacak işin nasıl yapıldığının teknik ayrıntıları
arasında hangi işin yapıldığı gözden kaçabilmektedir.
Akım şemaları, kolay takip edilebilmektedir.
Bir dildeki yazılı anlatım kadar anlaşılır değildir.
Programcı, bu akım şemasından yararlanarak
programı geliştirememektedir.
Prof.Dr.Yalçın ÇEBİ
38
Mantıksal Yapılar
 Bir programın geliştirilmesi sırasında değişik
özelliklere sahip mantıksal yapıların (Logical
Structures) kullanımı gerekmektedir.
 En çok kullanılanları,
 sıralanma (sequence),
 seçim (selection)
 Döngü (loop).
 Bu yapıların kullanımı ile yapısal olarak
düzenlenmiş programlar yazılabilinmektedir.
Prof.Dr.Yalçın ÇEBİ
39
Sıralanmalar
 Sıralanmalarda, bir
program deyimini diğer
bir program deyimi takip
etmektedir.
 Bir deyimin işlenmesi
bittiğinde program bir
sonraki deyime geçmekte
ve işlemler sırası ile
gerçekleştirilmektedir.
Prof.Dr.Yalçın ÇEBİ
40
Seçimler
 Karar verme durumu
sözkonusu olduğunda
gündeme gelmektedir.
 Karar verme işleminin
sonucuna göre program iki
ayrı deyime yönlendirilmekte
ve o duruma uygun deyim
işlenmektedir.
 Daha sonra program bir
sonraki deyime geçmektedir.
 Bu yapı IF_THEN_ELSE
yapısı olarak da
adlandırılmaktadır.
Prof.Dr.Yalçın ÇEBİ
41
Döngüler
 Bir işlemin veya işlem grubunun belirli bir
şarta bağlı olarak tekrarlanması gerektiğinde
kullanılan yapılara ise “döngü” adı
verilmektedir.
 Bu yapılar, işlemler arka arkaya sürekli
tekrarlandıklarından aynı zamanda
“iterasyon” olarak da adlandırılabilmektedir.
Prof.Dr.Yalçın ÇEBİ
42
Döngü Türleri
 Döngüler, genel olarak


Belirli bir sayıda işlem yapılması istendiğinde
kullanılan FOR_NEXT,
Belirli bir şarta bağlı olarak kullanılan
DO_UNTIL ve DO_WHILE
döngüleri olarak gruplandırılabilir.
Prof.Dr.Yalçın ÇEBİ
43
FOR_NEXT Döngüsü
 Belirli bir sayıda tekrar edilmesi
gereken işlemler FOR ve NEXT
deyimleri arasına yazılmaktadır.
 NEXT deyimi, genellikle BASIC
programlama dilinde
kullanılmakta, diğer
programlama dillerinde ise bu
deyimin yerini başka deyim
ve/veya işaretler almaktadır.
 Bu yapı, IF_THEN yapısı ile
kurulan döngülerin daha
sadeleştirilmiş bir şeklidir.
Prof.Dr.Yalçın ÇEBİ
44
DO_UNTIL; DO_WHILE
 DO_UNTIL ve DO_WHILE
yapıları birbirlerine
benzemektedirler.
 DO_UNTIL en çok kullanılan
döngü yapısıdır.
 Yapı içinde bulunan deyim
grubu, kontrol şartı
sağlanıncaya kadar ardışık
olarak işlenmektedir.
 DO_WHILE yapısında döngü
içinde bulunan deyimler, şart
sağlandığı müddetçe
işlenmektedirler.
Prof.Dr.Yalçın ÇEBİ
45
Tasarımı Belgeleme
 Program geliştirme sürecinin her aşamasında
gerekli olan belgeleme işlemlerine bu
aşamada da devam edilmektedir.
 Bu belgeleme işlemi sırasında hazırlanacak
olan belgelerin içerisinde sözde kod, akım
şemaları ve mantıksal yapılar ayrıntılı olarak
yer almalıdır.
Prof.Dr.Yalçın ÇEBİ
46
Program Yazımı (1)
 “Kodlama” olarak da tanımlanabilen program
yazım aşamasına kadar yalnızca sistem
çözümleyiciler çalışmış, programcılar henüz
hiç bir çalışmaya başlamamışlardır.
 Bu aşamaya gelinceye kadar, programın
yazılabilmesi için gerekli bütün hazırlıklar
tamamlanmıştır.
 Artık, programın yazımına başlanabilecektir.
Prof.Dr.Yalçın ÇEBİ
47
Program Yazımı (2)
 Yanlış bir yaklaşım olmasına karşın,
“programlama” denildiğinde akla gelen tek
şey program yazım aşaması olmaktadır.
 Program yazım aşaması, program
geliştirmenin yalnızca bir bölümüdür.
 Genel olarak program geliştirme sürecinin
yaklaşık %20’lik bir bölümünü içermektedir.
Prof.Dr.Yalçın ÇEBİ
48
Program Yazımı (3)
 Geliştirilen bir program birçok yönden “iyi” olarak
kabul edilmelidir.
 Bir program :






Güvenilir olmalıdır;
Birçok şart altında çalışabilmelidir;
Açık ve genel girdi hatalarını yakalayabilmelidir;
İyi bir şekilde belgelenmelidir;
Diğer programcılar tarafından da anlaşılır olmalıdır;
Yapısal olarak düzenlenmelidir.
 Yapısal olarak hazırlanan programlar yalnız çok
amaçlı olmamakta, aynı zamanda programın doğru
çalışmasını kontrol etmek amacıyla yapılan
denemeler sırasında da kolaylık sağlamaktadırlar.
Prof.Dr.Yalçın ÇEBİ
49
Programın Sunumu
 Programın yazımı sırasında dikkat edilmesi gereken
kuralları içermektedir.
 Program sunumunda dikkat edilmesi gerekenler:





Program, altprogram, değişken ve sabitler için
yeterince uzun ve anlamlı tanımlayıcılar kullanılmalıdır.
Programda, programın yapısını yansıtacak şekilde
girintiler kullanılmalıdır.
Uygun program yapıları kullanılmalıdır.
Programdaki altprogramlar yönetilebilir uzunluklarda
düzenlenmelidir.
Program içine, ne yapıldığı ve ne için yapıldığını
anlatan açıklayıcı bilgiler yazılmalıdır.
Prof.Dr.Yalçın ÇEBİ
50
Programın Güvenilirliği (Reliability)
 Programın güvenilirliği için gerekli çalışmalar da
program kodlama aşamasında gerçekleştirilmektedir.
 Eğer bir program belirli bir süre ve belirli şartlar
altında çalışmaya devam ediyorsa o program “doğru”
olarak kabul edilmektedir.
 Güvenilirlik “Hatalar Arasında Geçen Ortalama
Zaman” (MTBF:Mean Time Between Failure) ile
belirlenmektedir.
 Bu değer, programın iki hatası arasında geçen
zaman ile belirlenmektedir.
Prof.Dr.Yalçın ÇEBİ
51
Verimlilik / Karmaşıklık ?
 Programın verimliliği (Efficiency) zaman ve depolama




birimi kullanımı ile ölçülmektedir.
Verimlilik ile karmaşıklık arasında değişik bağlantılar
bulunmaktadır.
Örneğin, bir diziyi basit bir algoritma kullanarak
sıralamak, karmaşık bir algoritma ile sıralamaktan
daha kısa sürebilmektedir.
Öncelikli olarak çalışan bir program tasarlanmalı,
verimlilik çalışmaları programın çalıştırılmasından
sonra sürdürülmelidir.
İyi tasarlanmış bir programda verimlilik çalışmalarının
sonradan gerçekleştirilmesi, kötü tasarlanmış bir
programdan daha kolay gerçekleştirilebilmektedir.
Prof.Dr.Yalçın ÇEBİ
52
Dil Seçimi ve Belgeleme
 Bütün programlama mantığı düzenlendiğinde,
program tasarım parametrelerine de dikkat
edilerek, yapılacak olan çalışmaya uygun
olarak seçilen programlama dillerinin
kullanımı ile program geliştirmeye
başlanabilmektedir.
 Program geliştirmenin bu aşamasında da
belgeleme gerçekleştirilmelidir.
Prof.Dr.Yalçın ÇEBİ
53
Program Deneme (Test)
 Bir programın yazımı sırasında ve bittikten sonra,




programın kendisinden beklenen işleri doğru olarak
yerine getirip getirmediğini belirlemek amacıyla çeşitli
denemeler yapılmaktadır.
Bu denemeler sırasında düzeltilmesi gereken hatalar
ortaya çıkmakta ve bu hatalar düzeltilmektedir.
Bir programın denenmesi ve doğruluğunun
onaylanması oldukça uzun ve pahalı bir süreçtir.
Program tasarımının önceki aşamalarında dikkatli ve
titiz bir tasarım yapılması, hataları en aza
indirgemektedir.
Programın kullanıma girme aşamasından sonra bir
hata çıkması durumunda bu hatanın giderilmesi daha
pahalı ve zor olmaktadır.
Prof.Dr.Yalçın ÇEBİ
54
Program Hataları - Yazım Hatası
 Yazım (Syntax) ve mantık (logic) hataları.
 Yazım hataları, programın, yazıldığı dildeki yazım
kurallarına uygun yazılmamasından kaynaklanan
hatalardır.
 Bu hatalar programın çalışmasını doğrudan etkileyen
ve hata giderilmedikçe programın derlenmesini
engelleyen hatalar olmaktadır.
 Örneğin, matematiksel bir işlemde toplama
işaretinden sonra herhangi bir değişkenin veya
değerin yazılmaması bir yazım hatası olmaktadır.
Prof.Dr.Yalçın ÇEBİ
55
Program Hataları - Mantık Hatası
 Mantık hataları, programın çalışmasını
etkilemeyen, ancak programın çalışması
sırasında ve sonucunda yanlış sonuçlar elde
edilmesine neden olan hatalardır.
 Örneğin, toplama işareti yerine çıkarma
işareti kullanılması bir matematiksel işlemin
yazım yönünden doğru, ancak sonucunun
yanlış olmasına neden olmaktadır.
Prof.Dr.Yalçın ÇEBİ
56
Program Deneme Türleri (1)
 Masabaşı kontrol (Desk Check)
 Çeviri sırasında kontrol (Conversion check)
 Örnek veri kullanarak el ile kontrol (Manual
testing)
 Birim kontrolü (unit testing)
 Bütünlük kontrolü (integrity testing)
 Sistem kontrolü (system testing)
 Kullanıcı kabul kontrolü (acceptance testing)
Prof.Dr.Yalçın ÇEBİ
57
Program Deneme Türleri (2)
 Masabaşı kontrol: Programın, bir programcı
tarafından kağıda yazdırılmış şeklinin gözden
geçirilmesidir. Programcı program listesini yazım ve
mantık hataları yönünden gözden geçirmektedir.
 Çeviri sırasında kontrol: Programın bir derleyici
kullanımı ile makine diline çevirilmesi sırasında
gerçekleştirilen kontroldür.


Bu kontrol işlemi derleyici yazılımı tarafından
gerçekleştirilmekte ve programdaki yazım hatalarını
denetlemektedir.
Derleyici kullanılarak geliştirilmek istenen bir program,
ancak yazım hataları tümüyle giderildikten sonra
makine diline çevrilebilinmekte ve
çalıştırılabilinmektedir.
Prof.Dr.Yalçın ÇEBİ
58
Program Deneme Türleri (3)
 Örnek veri kullanarak el ile kontrol:
 Bir programcı, örnek bir veri grubu alarak ve
programın kağıt üzerindeki çıktısından
yararlanarak, bir hesap makinesi yardımı ile
programdaki deyimleri takip etmekte ve
hesaplamaları yapmakta, böylece kontrolü
gerçekleştirmektedir.
 Birim kontrolü: Her program bileşeni, yazım
işlemi bittikten sonra denenmektedir.
Prof.Dr.Yalçın ÇEBİ
59
Program Deneme Türleri (4)
 Bütünlük kontrolü: Programın değişik bölümleri
biraraya getirilerek çalışmaları denenmektedir.
 Sistem kontrolü: Programın kullanılması öngörülen
en son ve tam şekli denenmektedir.
 Kullanıcı kabul kontrolü: Değişik seviyelerden
kullanıcılar, genellikle de programı talep eden kişi
veya kişiler programı, gereksinim ve taleplerini
karşılama yönünden denemektedirler. Bu aşama
“Beta Deneme” olarak da adlandırılabilmektedir.
Prof.Dr.Yalçın ÇEBİ
60
Diğer Deneme Süreçleri
 İşlevsel Deneme (Kara Kutu / Black BoxTesting)
 Mantıksal Deneme (Beyaz Kutu / White Box Testing)
 İşlevsel deneme: Program özelliklerinde belirtilen
normal, sıradışı ve geçersiz veri tipleri ile programın
denenmesine dayanmaktadır.
 Mantıksal deneme:



Programın içsel yapısı incelenmekte,
Mantıksal kontrol işlemlerinin hem doğru hem de yanlış
olması durumları için örnek veriler girilmekte,
Her mantıksal sürecin içindeki işlemler kontrol
edilmektedir.
Prof.Dr.Yalçın ÇEBİ
61
Programın Kabulü ve Belgeleme
 İşlevsel deneme süreci,
 Program geliştirme sürecinin sonunda
gerçekleştirilmektedir.
 Bu süreç, programın kabul veya reddi için bir temel
oluşturmaktadır.
 Ancak, işlevsel süreç tek başına doğru bir
değerlendirme süreci olmayıp, program geliştirme
sürecinde mantıksal süreçlerin de değerlendirilmesi
daha doğru bir yaklaşım olmaktadır.
 Belgeleme bu aşamada da gerekmektedir.
 Örnek veriler, program listeleri, program kodlama
sırasında karşılaşılan sorunlar, bu sorunların çözüm
önerileri gibi bilgiler bu belgelerin içinde
bulunmalıdırlar.
Prof.Dr.Yalçın ÇEBİ
62
Programın Belgelenmesi
 Bir program tasarım süreci, ilk aşamadan son
aşamaya kadar ayrıntılı bir şekilde belgelenmelidir.
 Program belgeleme, program sürecinin tüm
ayrıntılarını içermektedir.
 Programın geliştirme aşamaları tamamlandıktan
sonra değil, programın özelliklerinin belirlenmeye
başlandığı ilk aşamadan itibaren hazırlanmalıdır.
 Program belgesi, değişik seviyelerdeki kişilere
yönelik olarak hazırlanabilmektedir.
Prof.Dr.Yalçın ÇEBİ
63
Belgeleme-Kimler İçin ? (1)
 Programcı için: Program geliştirme sürecinde veya
sonrasında, programlamanın tüm aşamalarına
yardımcı olmak üzere belgeler gerekli olmaktadır.
 Diğer programcılar için:




Programlar, “yaşayan varlıklardır”.
Bir programın geliştirilme ve kullanım süreci çok uzun
sürebilmektedir.
Programın yazılmasından itibaren geçen zaman dilimi
içinde programda çeşitli değişiklik, düzenleme ve
ekleme gereksinimleri ortaya çıkabilmektedir.
Bu gereksinimlerin giderilmesi, değişik programcılar
tarafından gerçekleştirilebilmektedir.
Prof.Dr.Yalçın ÇEBİ
64
Belgeleme-Kimler İçin ? (2)
 Programın kullanıcıları için:
 Programın kullanımında değişik kademelerde
uzmanlaşmak isteyen kişiler olabilir.
 Bazı kurumlarda, hazırlanan programın kullanımı için
kurslar olabilir.
 Bazı kurumlardaki yöneticiler, program kullanıcılarının
program kullanımını yalnızca belgelerden yararlanarak
öğrenmelerini isteyebilirler.
 Bilgisayar işletmenleri için:
 Programın verdiği hata iletilerinin neler olduğunu ve
her iletinin ne anlama geldiğinin sistem işletmenleri
tarafından anlaşılabilmesi,
 Gerekli işlemlerin işletmenler tarafından
gerçekleştirilmesinin sağlanması hedeflenebilir.
Prof.Dr.Yalçın ÇEBİ
65
Program Belgesi İçeriği (1)
 Problemin tanımı, sistem ve program özellikleri.
 Girdi ve çıktıların kalıplarının bulunduğu ve verilerin
geçerliliğinin onaylandığı belgeler.
 Veri yapılarının kullanım şekillleri, veri dosyalarının
düzenlenme şekillleri, bağlantı ve güvenlik işlemleri.
 Problemin çözümü için kullanılan algoritma ve
yordamlar. Bunlar sözde kod veya akış şeması
şeklinde olabilir.
 İyi hazırlanmış örnek veriler ve bu verilerle elde
edilen sonuçlar. Bu bölüm, programın hatasız
çalıştığının belirlenmesi için kullanılmaktadır.
Prof.Dr.Yalçın ÇEBİ
66
Program Belgesi İçeriği (2)
 Programın doğru çalışması yanında, kullanıcıların
bilgi girişi ve sonuçları almaları için basit, verimli,
kesin ve hatasız yöntemler içerdiği ile ilgili belgeler.
İyi bir kullanıcı arayüzü olduğunun belirtilmesi.
 Programın kullanıcı veya kurucusuna yönelik ayrıntılı
bilgiler:




Programın sınırları,
Programın çalışması için gerekli asgari donanım ve
yazılım altyapısı,
Programın nasıl çalıştırılacağı,
Programın kullanımı ile ilgili örnekler ve açıklamalar.
Prof.Dr.Yalçın ÇEBİ
67
Program Girdilerinin İçeriği
 Hangi verilerin girileceği, bunların türleri, geçerlilik
değerleri, kullanıcı geçersiz veya yanlış bir veri
girdiğinde ne yapılacağı bilgisi bulunmalıdır;
 Verilerin hangi kalıpta girileceği tanımlanmalıdır.
Burada kullanıcının veri giriş sürecinde
kullanabileceği diyalog pencereleri ve bu
pencerelerde hangi verinin ne şekilde isteneceği
ayrıntılı olarak tanımlanmalıdır
 Ekran tasarım şekillleri belge içinde yer almalıdır. Bu
ekran tasarımlarında, veri giriş ve çıkış ekranları, ara
ekranlar ayrıntılı olarak yer almalı hangi ekranın
hangisi ile bağlantılı olduğu belirtilmelidir.
Prof.Dr.Yalçın ÇEBİ
68
Program Çıktılarının İçeriği
 Çıktıların nelerden oluşacağı, bu çıktıların
hangi verilerden yararlanılarak oluşturulacağı,
ne zaman bu çıktının üretileceği ve hangi
formun içinde sunulacağı belirtilmelidir.
 Çıktı olarak verilecek bilgilerin kalıpları
bulunmalıdır.
Prof.Dr.Yalçın ÇEBİ
69
Program Özellikleri
 Toplantı tutanakları, sözde kod, akım şeması,
program yapısı blok çizimleri, karar tabloları ve
ağaçları gibi ayrıntılar bulunmalıdır.
 Program içinde kullanılan tüm yordam ve
altyordamların ayrıntıları,
 Her altyordamın





kullanım amacı,
Girdileri,
Çıktıları,
Hangi yordam ve altyordam ile bağlantılı olduğu,
Altyordam içinde kullanılan parametreler ve işlevleri
ayrıntılı olarak program belgesi içinde yeralmalıdır.
Prof.Dr.Yalçın ÇEBİ
70
İyi Bir Program Belgesi:
 Tüm ayrıntıları içermelidir.
 Programın yalnızca geliştirilip kullanıma konulduğu zaman için
değil, çok daha sonraları da başka programcı veya gruplar
tarafından geliştirilmesi ve “yaşamasını” sağlamalıdır
 Program belgeleme işlemi sırasında, yapılan çalışmalar gerek
kağıt üzerinde belgelenmeli, gerekse de program içinde kayıt
altına alınmalıdır.
 Özellikle program içine bilgi yazım işlemi sırasında programda
ne yapıldığı, eğer bu bir değişiklik ise hangi gerekçe ile ve kim
tarafından hangi tarihte gerçekleştirildiği, eski ve yeni program
deyimleri ayrıntılı olarak belirtilmelidir.
 Böylece programcılar, programı izleyerek de gerçekleştirilen
çalışmalar hakkında bilgi sahibi olup, sonraki işlemleri daha
sağlıklı olarak gerçekleştirebilirler.
Prof.Dr.Yalçın ÇEBİ
71
Program Bakımı
 Bir programın tüm “yaşamı” boyunca yapılan
harcamanın %75’i bakım gideri olarak
gerçekleşmektedir.
 “Bakım programcısı” adı ile anılan bir iş kolu bile
oluşmuştur.
 Program bakımının temel amacı, programın hatasız,
verimli ve etkin kullanımını sağlamaktır.
 Program bakımı:


Programın işletilmesi
Değişen şartlara uyum sağlaması.
Prof.Dr.Yalçın ÇEBİ
72
Programın İşletilmesi
 Programın işletilmesi,



İşlevsel hataların giderilmesi,
Programın kullanımını basitleştirmek
Programı yapısal programlama teknikleri ile
standart hale getirme
çalışmalarını içermektedir.
 Baştan itibaren iyi tasarlanmış programlarda
bu çalışmalar az miktarda olmaktadır.
Prof.Dr.Yalçın ÇEBİ
73
Programın Değişime Uyum Sağlaması
 Tüm kurumların gereksinimleri zaman içinde
değişiklik göstermekte, doğal olarak, kullandıkları
programların da bu değişikliklere uyum göstermeleri
gerekmektedir.
 Programlarda yeni vergi yasaları, yeni bilgi
gereksinimleri ve yeni şirket politikaları gibi
nedenlerle değişiklikler yapılmaktadır.
 Program bakım sürecinde gerçekleştirilen tüm
değişiklikler, nedenleri, nasıl gerçekleştirildikleri gibi
ayrıntılar da belirtilerek belgelenmeli ve program
dosyasına konulmalıdır.
Prof.Dr.Yalçın ÇEBİ
74
Program Geliştirme Araç ve
Yöntemleri
 Bilgisayar Destekli Yazılım Mühendisliği
(BDYM; CASE:Computer Aided Software
Engineering) yazılımları.
 Bu yazılımlar progam tasarımı, kodlanması ve
denenmesi işlemlerinde kolaylıklar
sağlamakta, yazılım geliştirme süreçlerini
kısaltmaktadırlar.
 Nesneye Dayalı Yazılım Geliştirme veya
Programlama (NDYG, NDP; OOSD:Object
Oriented Software Development; OOP:Object
Oriented Programming).
Prof.Dr.Yalçın ÇEBİ
75
Geleneksel-NDP
 Geleneksel sistem geliştirme işlemi, belirli bir hedefi
gerçekleştirmek için gerekli olan yordamlara
odaklanmayı dikkatli ve adım adım gerçekleştirmeyi
öngörmektedir.
 NDP’de ise, yordamlara odaklanmak yerine, önceden
tanımlanmış yordamlar ve nesneler arasındaki
ilişkilerin tanımlanmasına odaklanmaktadır.
 NDP, bir programın nesneler halinde tasarlanmasını
öngörmektedir.
 Her nesne, bir işin yerine getirilmesi için gerekli veri
ve işlemleri içermektedir.
Prof.Dr.Yalçın ÇEBİ
76
NDP (1)
 Programlamanın ilk dönemlerinde:
 Her program tümüyle yeni baştan tasarlanmakta,
 Daha önceden herhangi bir şekilde hazırlanmış olan
programlardaki herhangi bir bölümden yararlanmak
mümkün olamamaktaydı.
 Bu nedenle program geliştirme süreci uzun zaman ve
emek almakta, dolayısıyla da program geliştirme
maliyeti yüksek olmaktaydı.
 Bu süreç, bir evin tümüyle temelden çatıya kadar
yapımına benzemektedir.
Prof.Dr.Yalçın ÇEBİ
77
NDP (2)
 Nesneye Dayalı Programlama, önceden üretilmiş
(prefabrike) yapı elemanları ile bir bina inşa etmeye
benzemektedir.
 Programlar yazılırken, önceden hazırlanmış ve
“nesne (object)” adı verilen modüller kullanılmaktadır.
Nesneler, yeniden kullanılabilir, kendileri için
gerekenleri içlerinde bulunan bileşenlerdir.
 Bu nesnelerle oluşturulan programlarda, belirli
fonksiyonların aynı olduğu kabul edilmektedir.
 Örneğin, ekrandaki pencerelerin tasarımını yapan bir
nesne, her program tarafından kullanılabilmektedir.
Bu nesnenin her program için yeniden yazılmasına
gerek kalmamaktadır.
Prof.Dr.Yalçın ÇEBİ
78
Bilgisayar Personeli (Computer Staff)
 Bir programın geliştirilmesi sırasında değişik
konumda bulunan birçok kişi görev
almaktadır.
 Sistem çözümleyiciler (System Analyst)
 Programcılar (Programmer)
Prof.Dr.Yalçın ÇEBİ
79
Sistem Çözümleyici
 Bir yazılımın geliştirilmesinde en önemli konumda
bulunan kişi sistem çözümleyicidir.
 Sistem çözümleyicinin görevleri:



Olası bilgisayar uygulamalarının olabilirliğini
araştırmak,
Varolan sistemleri bilgisayarlaştırılma açısından
incelemek,
Bilgisayar tabanlı sistemleri tasarlamak, uygulamak ve
izlemek
‘dir.
 Sistem çözümleyiciler, proje ekiplerinde temel proje
çözümleyici olarak görev yapmaktadırlar.
Prof.Dr.Yalçın ÇEBİ
80
Programcı
 Programcılar ise sistem çözümleyiciler kadar ayrıntılı işlerle
uğraşmamaktadır.
 Programcılar;
 Çözümleyici tarafından ayrıntılı olarak kendilerine verilen
yordamları, belirlenen bilgisayar sistemine uygun bir
programlama dili ile kodlarlar.
 Çözümleyici ile birlikte çalışarak, hazırlanacak olan
programın mantıksal olarak doğru olmasını sağlarlar.
 Programcılar, proje ekiplerinin içinde de yer alarak, program
geliştrime sürecini en baştan itibaren takip etmelidirler.
 Sistem çözümleyicilerin hangi problemin çözümüne nasıl
yaklaştığını daha yakından görüp, program yazım aşamasında
daha iyi bir programı daha kısa sürede yazma imkanına sahip
olabilirler.
Prof.Dr.Yalçın ÇEBİ
81
İnsan-Bilgisayar Arayüzü (1)
 Bilgisayar kullanıcıları ile bilgisayar
arasındaki etkileşim, İnsan-Bilgisayar
Arayüzü (İBA; HCI:Human-Computer
Interface) olarak tanımlanmaktadır.
 Bu terim yalnızca donanımsal yapıları değil,
bilgisayar ile kullanıcı arasındaki tüm
etkileşimi kapsamaktadır.
 Bu etkileşimde, kullanılan arayüzlerin
kullanıcı tarafından daha rahat kullanılabilir
ve beğenilir olmasının sağlanması
hedeflenmektedir.
Prof.Dr.Yalçın ÇEBİ
82
İnsan-Bilgisayar Arayüzü (2)
 Bilgisayarların ilk geliştiği yıllarda bilgisayar
kullanıcıları, konularında ve bilgisayar kullanımında
uzman kişilerdi.
 Bilgisayarın kullanımı için ayrıntılı ve gözalıcı
arayüzlerin oluşturulması gerekmemekteydi.
 Herkesin rahatlıkla kullanabileceği bilgisayar
arayüzleri hazırlanmalıdır, çünkü:



Bilgisayarların günlük hayatta yaygın kullanılmaktadır.
Bilgisayar kullanan kişilerin sayılarının artmıştır.
Bilgisayar kullanan kişilerin eğitim düzeyleri farklıdır.
 İnsan-bilgisayar arayüzü, kullanıcı ile bilgisayar
arasında veri alışverişini kolaylaştırmayı
hedeflemektedir.
Prof.Dr.Yalçın ÇEBİ
83
Kullanıcı Dostu (1)
 İnsan-bilgisayar arayüzünden beklenen en önemli
özellik “Kullanıcı Dostu (User Friendly)” olmasıdır.
 Kullanıcı dostu bir arayüz, kullanıcının yardım
alabileceği, kolay öğrenebileceği ve kullanabileceği
bir şekilde olmalıdır.
 Çok iyi bir program yazmak, o program iyi bir
kullanıcı arayüzüne sahipse anlamlı olmaktadır.
 Kullanıcı dostu olmayan arayüzleri belirlemek kolay,
ancak kullanıcı dostu bir arayüz tasarlamak ise zor
olmaktadır.
Prof.Dr.Yalçın ÇEBİ
84
Kullanıcı Dostu Arayüz Özellikleri (1)
 Kullanıcının sistemi kullanmaya başlayabileceği
kadar kolay olmalıdır.
 Mümkün olabildiğince sistem kullanıcının gereksinim
duyabileceği yardım ve program kullanım bilgilerini
içermelidir. Kullanıcı, programın kullanımı için değişik
belgelere, kitaplara, notlara başvurmamalıdır.
 Kullanıcının sistemden istediği sonuçları alabilmesi
fazla güç ve bilgi gerektirmemelidir.
 Kullanıcı beklenmeyen veya sıradışı sistem
eylemlerinden izole edilmelidir. Sistem herhangi bir
şekilde hata verdiğinde ve kendisini kapattığında,
gerek kullanıcı gerekse de yazılım sistemi bundan
etkilenmemelidir.
Prof.Dr.Yalçın ÇEBİ
85
Kullanıcı Dostu Arayüz Özellikleri (2)
 Sistem, değişik seviyelerde bilgiye sahip olan
kullanıcılara göre hazırlanmalıdır. Program
kullanım şekli, hiç bilmeyen, bilen ve uzman
kişilere göre ayarlanabilmeli, eğer varsa
menülerde kullanıcı kendi isteğine göre
değişiklikler yapabilmelidir.
 Kullanıcı hangi işlemlerin gerçekleştiği,
nelerin yapıldığı, işlerin nasıl yürüdüğü
konusunda her an bilgilendirilmelidir.
 Sistem, mantıksal ve tutarlı bir şekilde
çalışmalıdır.
Prof.Dr.Yalçın ÇEBİ
86
Kullanıcı Arayüz Türleri
 Komut yönetimli arayüzler (Command Driven
Interface)
 Menü yönetimli arayüzler (Menu Driver
Interface)
 Doğrudan işletmeli arayüzler (Direct
Manipulation Interface)
 Kullanıcı arayüz yönetim sistemleri (User
Interface Management Systems)
 Özel amaçlı arayüzler (Special-Purpose
Interfaces)
Prof.Dr.Yalçın ÇEBİ
87
Kavram Kargaşası
 Genelde “arayüz (interface)” kelimesi ile “insan-
bilgisayar arayüzü (human-computer interface)” aynı
anlamlarda kullanılmaktadır.
 Bu nedenle birçok kaynakta “insan-bilgisayar
arayüzü” yerine “arayüz” kelimesi kullanılmasına
karşın bu tanımın kullanımında dikkatli olunması
gerekmektedir.
 Arayüz kelimesi aynı zamanda donanımsal bir yapıyı
da temsil etmektedir, ve bir aygıtın diğer bir aygıt ile
bağlantısını sağlayan donanım parçası (arabirim)
anlamında kullanılmaktadır.
Prof.Dr.Yalçın ÇEBİ
88
Kaynaklar
 BEEKMAN, G. (2005), Computer Confluence, 6th
Edition, Prentice Hall, ISBN 0-13-127313-2.
 FRENCH, C.S., (1992), Computer Science, 4/e., DP
Publications Ltd., ISBN 1-873981-19-8.
 O’LEARY, T.J., O’LEARY, L., (2000), Computing
Essentials 2000-2001, McGraw Hill,
ISBN 0-07-116610-6.
 REED, D. (2005), Computer Science, Prentice Hall,
ISBN 0-13-127774-X.
89
Sorular ?
Prof.Dr.Yalçın ÇEBİ
90