Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar...

13
2012 Bilgisayar Programlamaya Giriş I İST 105 DERS NOTLARI Abdullah YALÇINKAYA

Transcript of Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar...

Page 1: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

2012

Bilgisayar Programlamaya

Giriş I İST 105 DERS NOTLARI

Abdullah YALÇINKAYA

Page 2: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

2 Abdullah YALÇINKAYA

İST 105 – Bilgisayar Programlamaya Giriş

Amaç:

1. Bilgisayar donanımı ve bilgisayar yazılımlarının tanıtılması

2. Programlama dilleri ve program geliştirme tekniklerinin tanıtılması

3. Temel problem çözme tekniklerinden olan yukarıdan aşağı tasarım

tekniğinin tanıtılması ve bu teknikle algoritmaların yazılması.

Bilgisayar Nedir?

Bilgisayar, mantıksal ve aritmetik işlemleri çok hızlı biçimde yapan bir araçtır.

Günümüzün bilgisayarları, saniyede milyonlarca aritmetik işlem yapabilecek

kapasitededir.

İlk üretilen bilgisayarlar, oldukça büyük ve yavaştı. Ama gün geçtikçe küçüldüler

ve güçleri de hızla arttı. Örneğin, yirmi-otuz yıl önce bir odaya sığabilecek bir

bilgisayarın yaptığı işlerden çok daha fazlasını, bugünkü kişisel bilgisayarlar, daha

hızlı bir şekilde yapabilmektedir. Bu yüzden, bilgisayarlar günümüzde çok değişik

alanlarda ve ortamlarda kullanılmaktadır. Hemen-hemen her evde ve işyerinde

artık bilgisayar görmek mümkündür.

Bir bilgisayar sisteminin fiziksel yapısını oluşturan fare, klavye, ekran, işlemci,

disk, bellek gibi parçaların hepsi birden bilgisayar donanımı olarak

adlandırılmaktadır. Bilgisayarın çalışmasını denetleyen birer komutlar kümesi

olan programlar da bilgisayar yazılımı olarak adlandırılır. Bir bilgisayar sisteminin,

bu iki parçaya da ihtiyacı vardır. Her biri, diğeri olmadan hiçbir işe yaramaz.

Günümüzde, donanım fiyatları hızla düşmekte, ama yazılım maliyetleri tam

tersine artmaktadır. Bu dersteki amacımız bilgisayar yazılımı geliştirmek

olduğundan, biz yalnızca bilgisayar yazılımı ile ilgileneceğiz. Ancak kısaca

bilgisayar donanımından da söz etmek yararlı olacaktır.

Page 3: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

3 Abdullah YALÇINKAYA

Bilgisayar Donanımı

Gördüğümüz ve dokunabildiğimiz bütün parçalar bilgisayar donanımını oluşturur.

Modern bir bilgisayar donanımı, aşağıdaki beş ana parçadan oluşur.

CPU (Central Processing Unit - Merkezi İşlem Birimi):

Bu birim, bilgisayarın çalışmasını düzenleyen ve programlardaki komutları tek tek

işleyen birimdir. İşlem hızına göre çeşitli modelleri vardır. Örneğin, Pentium

işlemci, 486 işlemci ya da Sparc işlemci dediğimizde, bilgisayarın Merkezi İşlem

Birimi (MİB - İşlemci) anlaşılmalıdır.

RAM (Random Access Memory – Rastgele Erişimli Bellek veya Ana

Bellek):

RAM, bir giriş cihazından veya bir ikincil depolama cihazından okunan veri ve

programların, çalıştırılan programlardan elde edilen sonuçların ve bir ikincil

depolama cihazına veya bir çıkış cihazına gönderilmeye hazır olan çıktıların

tutulduğu yerdir. Kısaca, programların ve verilerin kullanıldığı zaman depolandığı

yerdir. MİB işlemlerini, ana bellekte saklanan bu verilere ulaşarak yapar.

Buradaki “rastgele erişim” ifadesi bilgisayarın bellek içerisindeki herhangi bir

adrese doğrudan gidip bilgileri okuyabileceği veya yazabileceği anlamında

kullanılmaktadır. Ana bellekte veriler geçici olarak tutulur; başka bir deyişle

bilgisayar kapatıldığında bu veriler silinir. Çok kullanıcılı sistemlerde bilgisayar bir

kullanıcı için herhangi bir işi yapmayı bitirdiğinde, ana bellekteki aynı kısma diğer

kullanıcılar için işlenmesi gereken veri ve programlar yerleşir. Ana bellek diğer

bilgi saklama araçlarına oranla biraz daha pahalıdır.

Ana belleğin temel görevleri şöyle özetlenebilir.

1. Hali hazırda çalışan programların program deyimleri ve bu programların ihtiyaç

duyduğu verileri tutmak.

2. İşletim sistemi yüklendikten sonra ana bellekte sürekli olarak kalması gereken

işletim sistemi bileşenlerini tutmak.

Page 4: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

4 Abdullah YALÇINKAYA

3. Programlar tarafından üretilen sonuçları tutmak.

4. Sabit disklere veya harici bir cihaza gönderilmeye hazır olan çıkış bilgilerini

tutmak.

Bellekte yerleşik olan veri ve programlara ihtiyaç halinde tekrar ulaşabilmek için

ana bellekteki her bölgenin bir adresi vardır.

Ana belleğin büyüklüğü; aynı anda çalışabilecek program sayısını ve programların

çalışma hızını etkiler.

Dış Bellek Birimleri (Secondary Memory Devices):

Ana bellekteki bilgiler (elektrik gücüne bağlı olarak), geçici süre saklanabildiği

için, uzun süre kalıcı olarak saklamak istediğimiz bilgileri dış bellek birimlerinde

depolarız. Bu araçlardan bazıları: CD (Compact Disc – Yoğun Disk), DVD (Digital

Versatile Disk – Çok Yönlü Sayısal Disk), Harici diskler ve sabit disklerdir. Burada

saklanan bilgiler, elektrik kesilmesinden etkilenmez. Tipik bir kişisel bilgisayarın

sabit diski, gigabyte (GB) cinsinden ölçülen milyarlarca harfe denk gelen verileri

saklayabilir.

Girdi Birimleri (Input Devices):

Kullanıcı, bu birimler aracılığıyla, bilgisayara verileri girer. Girdi birimlerinden

bazıları, klavye, fare ve oyun konsoludur.

Çıktı Birimleri (Output Devices):

Bilgisayarın kullanıcıya ileteceği sonuçları göstermek için kullandığı birimlerdir.

Bunlardan bazıları ekran ve yazıcıdır.

Bilgisayar Yazılımı

Bilgisayar yazılımı (program), bilgisayara bir işi yaptırmak için verdiğimiz

komutlar kümesidir. Yazılımları genel olarak iki kategoride sınıflandırabiliriz:

Page 5: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

5 Abdullah YALÇINKAYA

İşletim sistemleri:

Kullanıcı ile bilgisayar arasındaki iletişimi sağlayan programlardır. Bilgisayar

sisteminin bütün hareketlerini denetler ve sistemdeki MİB ve ana bellek gibi

kaynakların yönetimi ile ilgilenirler. Örneğin, sizin kullandığınız Windows XP ya da

Windows 7 birer işletim sistemidir. Diğer bazı işletim sistemleri şunlardır:

PARDUS, UNIX, DOS, SOLARIS, MACINTOS.

Uygulama Programları:

İşletim sistemi dışında kalan diğer programlara verilen genel bir addır. Örneğin,

Word, havayolları rezervasyon sistemi, bilgisayar oyunları, programlama dillerinin

derleyicileri, birer uygulama programıdır.

Programlama Dilleri

Bir problemi çözmek için gerekli olan komutlar çok değişik programlama dilleri

kullanılarak yazılabilir. Bazı programlama dillerinde yazılan programlar, doğrudan

bilgisayarda MİB tarafından anlaşılabilir. Diğer bazı dillerde yazılan programlar ise

o dilin derleyicisi tarafından işlemcinin anlayacağı dile çevrilir.

Programlama dillerini üç genel kategoriye ayırabiliriz:

Makine dilleri

Assembly dilleri

Yüksek seviyeli programlama dilleri

Makine dili:

Her bilgisayarın işlemcisinin anlayacağı kendi makine dili vardır. Örneğin,

Pentium işlemcinin makine dili, Sparc işlemciden farklıdır.

Makine dilindeki bir komut, bit (0 ya da 1) gruplarından oluşur. Örneğin, makine

dilinin bir komutu iki değerin toplanması ya da bir değerin ana belleğin bir

bölgesinde saklanması gibi basit işlemleri içerir. İnsanların makine dilinde

program yazması hemen hemen olanaksızdır.

Örneğin, makine dilinde iki sayının toplanması,

01000110011101000111101010000010010101101000010

biçiminde ifade edilir.

Page 6: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

6 Abdullah YALÇINKAYA

Assembly dili:

Bir assembly dili, makine dilindeki komutları ingilizce benzeri bir dille ifade eder.

Genelde assembly dilindeki her komut makine dilindeki bir komuta denk düşer.

Assembly dilindeki bir program ASSEMBLER diye bilinen bir yazılım tarafından

makine diline çevrilir. Assembly dilinde program yazmak da makine dilinde

olduğu gibi zor ve zaman alıcıdır.

Assembly dilinde iki sayının toplanması,

LOAD A

ADD B

STORE C

biçiminde ifade edilir.

Yüksek Seviyeli Programlama Dilleri ( YSPD ):

Makine dilinde çok sayıda komutla yapılabilecek bir iş, yüksek seviyeli

programlama dilinin bir komutu ile yapılabilir. Bu yüksek seviyeli diller, İngilizce

ya da Türkçe gibi doğal bir dil değil, kendi yapısı ve dilbilgisi kuralları olan,

insanlar için anlaşılması kolay olan dillerdir.

Yüksek seviyeli programlama dilinde yazılan bir program, derleyici (Compiler)

dediğimiz yazılımlar tarafından, makine dilindeki denk bir programa dönüştürülür.

Bilgisayar tarafından çalıştırılacak olan program, makine dilindeki programdır.

Bazı yüksek seviyeli programlama dilleri arasında PASCAL, DELPHI, FORTRAN,

BASIC, C, C++, COBOL, LISP ve PROLOG sayılabilir.

Bu dillerin birkaçında, iki sayının toplanması şöyle ifade edilir:

C:=A+B; (PASCAL)

C=A+B; (C)

C=A+B (FORTRAN)

Page 7: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

7 Abdullah YALÇINKAYA

Bazen yüksek seviyeli programlama dilinde yazılmış bir program, makine diline

çevrilmek yerine başka bir ara dile çevrilebilir. Bu ara dildeki komutlar, hiçbir

makineye bağımlı değildir. Bu ara dildeki programlar, o dilin yorumlayıcısı

(interpreter) olarak bilinen yazılımlar tarafından çalıştırılır. Bunun amacı, ara

dildeki programların değişik bilgisayarlarda hiçbir değişikliğe uğramadan

kullanılabilmesidir.

Yazılım Geliştirme

Bir program, bir problemi çözmek için yazılan komutlar kümesidir. Bu komutlar,

İngilizce ya da Türkçe gibi dillerde değil, bilgisayar sisteminin anlayacağı bir

dildedir.

Bir program yazmadan önce, ilk yapacağımız iş, o problemi nasıl çözeceğimize

karar vermek ve çözümün adımlarını belirlemek olmalıdır. Bu işte bize yardımcı

olabilecek çeşitli problem çözme teknikleri vardır. Bu tekniklerden

yararlandığımızda, yarattığımız çözümü bir programa dönüştürmek kolay

olacaktır. En temel problem çözme tekniği, yukarıdan-aşağı tasarım yöntemidir.

Bu yöntemde ilk verilen problem, küçük alt problemlere bölünür. Bu alt

problemler, gerekirse, daha küçük (basit) alt problemlere bölünürler. En sonunda

elde edilen alt problemler, ayrı ayrı çözülürler ve bu çözümler ana problemin

çözümünü elde etmek için birleştirilirler. Bu yöntem, algoritma yazımından söz

ederken örneklerle açıklanacaktır.

Bir problemi çözmek için yazacağımız programı oluştururken, genelde, aşağıdaki

yazılım geliştirme aşamalarından geçmek zorundayız:

1. Problemin Anlaşılması ve Çözümlenmesi:

İlk yapacağımız iş, problemin tam olarak ne olduğunu anlamaktır. Bu

nedenle, problemin çözümünden neler beklediğimizi ve yaratacağımız

çözümün girdi ve çıktılarının neler olacağını kesin olarak belirlemeliyiz.

Page 8: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

8 Abdullah YALÇINKAYA

2. Tasarım (Design):

Bu aşamada, problemi çözmek için kullanılacak çözüm adımlarını gösteren

bir liste yapmamız gerekir. Bir problemin çözüm adımlarını gösteren bu

listeye algoritma denir. Böyle bir liste tasarlarken, yukarıdan-aşağı tasarım

tekniğini kullanırız: Önce problemin ana adımları çıkarılır; daha sonra, her

adım için, gerekiyorsa, daha detaylı bir çözüm tasarlanır. Böylece bir

problem için bir algoritma geliştirmiş oluruz. Bir programlama diline

çevirmeden önce, bu algoritmanın doğru bir çözüm olduğu kanısında

olmalıyız. Bu aşamayı atlayarak doğrudan programlamaya geçmek, büyük

programlar yazarken işimizi çok zorlaştıracaktır.

3. Kodlama (Coding):

Bu safhada kâğıt üzerinde geliştirdiğimiz algoritmayı bir programlama

diline çeviririz. Bizim durumumuzda bu dil xxx olacaktır. Bu yüzden, xxx

programlama dilinin yapısını bilmemiz gerekecektir. Algoritmamızın her

adımı, ona karşılık gelen xxx program parçasına çevrilecektir.

4. Sınama ve Kanıtlama (Testing and Verifying):

Geliştirdiğimiz programın doğruluğunu sınayarak istediğimiz gibi çalışıp

çalışmadığını görmek zorundayız. Bu amaçla, program üzerinde çeşitli

testler yaparak, programın o testlere nasıl karşılık verdiğine bakarız: Bunu

sağlamak için program değişik girdilerle çalıştırılır ve ürettiği sonuçlara

bakılır. Sonuçlar beklendiği gibiyse, programın doğru çalıştığı kanıtlanmış

olur; değilse doğru çalışmayan parçaları bularak düzeltmemiz gerekir.

5. Algoritmalar

Algoritma, bir problemin çözümünün adımlarını gösteren formal bir dilde

yazılmış tasarımdır. Kullanılan dil Türkçe ve İngilizce gibi doğal bir dildir

ama sınırlı bir yapısı vardır. Bir algoritmada bulunması gereken temel

öğeler şunlardır: sıra, karar verme yapıları ve yineleme.

Sıra:

Çözüm adımları bir sıraya dizilmiş olarak verilmelidir. Bu sıra çözüm

adımlarının hangi sırayla uygulanacağını gösterir. Bir adımın içerdiği alt

adımlar numaralama düzeniyle açıkça belirlenir.

Page 9: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

9 Abdullah YALÇINKAYA

Karar Verme Yapıları:

Bazı çözüm adımları seçeneğe bağlı olarak uygulanır. Her adımın hangi

koşulla uygulanacağı açıkça belli olmalıdır. Adım numaralarından seçeneğe

bağlı olarak uygulanacak adımın konulan koşulun sağlanması ya da

sağlanmaması durumunda mı uygulanacağı belli olmalıdır.

Yineleme:

Bazı adımların birkaç kez yinelenmesi gerekebilir. Bu amaçla yinelenecek

adımlar yineleme adımının alt adımları olmak zorundadır. Yineleme adımı

alt adımların hangi koşullarda yineleneceğini gösteren bir mantıksal ifade

kullanmalıdır. Yineleme adımının yapısından yinelenecek adımların hangi

koşullarda yineleneceği ve yineleme işleminin ne zaman duracağı belli

olmalıdır.

Algoritmaların Numaralanması:

Yukarıdaki temel öğeler aşağıdaki gibi algoritma adımlarını numaralama

yöntemi ile başarılabilir: Sırayla çözülecek adımlara, birbirini izleyen sıra

numaraları verilebilir. Örneğin, a, b ve c adımlarının sırayla uygulanacağını

gösterir. Eğer bir adım, alt adımları kapsayacaksa, alt adımlar, o adımın

numarasını da kapsayacak şekilde numaralanır. Örneğin, a, b, b1,b2 ve c

adımlarının sırayla uygulanacağını gösterir.

Seçeneğe bağlı uygulanacak adımlar aşağıdaki gibi numaralanabilir. Bu yapı,

seçeneğe bağlı olarak, N adımının alt adımlarının uygulanacağını gösteren bir

yapıdır. Bu adımı uygulamak için, N adımındaki mantıksal-ifade'nin doğru olup

olmadığı bulunur. Eğer mantıksal-ifade doğruysa N.T. adımı uygulanır; doğru

değilse N.F. adımı uygulanır. Bazı karar verme yapılarında N.F. adımı

bulunmayabilir, bu durumda N adımındaki mantıksal-ifade yanlış ise uygulamak

için N’den sonraki (N+1) adımına gidilir ve adımların uygulanması oradan devam

eder. Bazen N.T. (veya N.F.) birden fazla adım içerebilir, bu durumda bu adımları

N.T.1, N.T.2, ... gibi numaralandırırız.

Page 10: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

10 Abdullah YALÇINKAYA

Yineleme:

Yineleme adımı için aşağıdaki gibi bir yapı kullanabiliriz. Bu yapıda mantıksal-

ifade doğru olduğu sürece N.1, N.2, ..., N.m adımları sırayla yinelenir. Her

yinelemeden sonra mantıksal-ifade kontrol edilir ve eğer doğru ise yineleme

işlemi devam eder; doğru değilse bir sonraki (N+1) adıma gidilir.

Şimdi, açıkladığımız yazılım geliştirme aşamalarının en önemlileri olan ilk üç

adımı birkaç örnekle göstereceğiz. Verilen bir problemi nasıl çözümlediğimizi,

tasarım aşamasını ve en sonunda algoritma yazılımını anlatacağız.

Örnek 1:

Problem: Verilen üç sayının ortalamasının bulunması.

Problemin Anlaşılması ve Çözümlenmesi:

Bu problemde bize üç doğal sayı verilecek ve biz üç sayının ortalamasını

bulacağız. Bulduğumuz sayıyı kullanıcıya bildireceğiz.

Girdiler: üç doğal sayı S1, S2 ve S3

Çıktılar: bu üç doğal sayının ortalaması

Tasarım: Bu problemi yukarıdan-aşağı tasarım yöntemini kullanarak çözeceğiz.

Çözüm adımlarını bir algoritma gibi göstereceğiz. İlk önce problemimizi aşağıdaki

üç ana adıma ayıracağız.

1. doğal sayıları oku

2. ortalamayı bul

3. ortalamayı kullanıcıya bildir

Birinci adımı biraz daha ayrıntılı vermemiz gerekir. Yani bu durumda alt

problemimiz üç doğal sayının okunması olmuştur. Bu adımdaki problemi

aşağıdaki gibi çözebiliriz:

Page 11: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

11 Abdullah YALÇINKAYA

1. doğal sayıları oku

1.1. ilk doğal sayı S1’i oku

1.2. ikinci doğal sayı S2’ yi oku

1.3. üçüncü doğal sayı S3’ ü oku

İkinci adımda ortalamayı nasıl bulacağımızı belirterek aşağıdaki gibi

detaylandırabiliriz:

2. ortalamayı bul

2.1. ortalamayı ortalama = (S1 + S2 + S3) / 3 formülü ile hesapla

Eğer üçüncü adımının yeterince basit olduğunu kabul edersek, sonuç

algoritmamız aşağıdaki gibi olacaktır:

1. doğal sayıları oku

1.1. ilk doğal sayı S1’i oku

1.2. ikinci doğal sayı S2’yi oku

1.3. üçüncü doğal sayı S3’ü oku

2. ortalamayı bul

2.1. ortalamayı ortalama = (S1 + S2 + S3) / 3 formülü ile hesapla

3. ortalamayı kullanıcıya bildir

Örnek 2:

Problem: Verilen üç sayının en büyüğünün bulunması

Problemin Anlaşılması ve Çözümlenmesi:

Bu problemde üç doğal sayı okuyacağız ve bu üç sayının en büyüğünü bulacağız.

Bulduğumuz en büyük değeri kullanıcıya bildireceğiz.

Girdiler: üç doğal sayı S1, S2 ve S3

Çıktılar: bu üç doğal sayının en büyüğü

Tasarım: İlk önce aşağıdaki algoritmanın üç ana adımını yazar ve sonra birinci

adımı ve ikinci adımı onların alt adımlarındaki gibi çözeriz. Çözüm olarak

aşağıdaki algoritmayı elde ederiz.

Page 12: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

12 Abdullah YALÇINKAYA

1. doğal sayıları oku

2. en büyük sayıyı bul

3. en büyük sayıyı kullanıcıya bildir

Alt adımlarla birlikte aşağıdaki gibi algoritma genişletilir.

1. doğal sayıları oku

1.1. ilk doğal sayı S1’i oku

1.2. ikinci doğal sayı S2’yi oku

1.3. üçüncü doğal sayı S3’ü oku

2. en büyük sayıyı bul

2.1. eğer S1 < S2

2.1.T. eğer S2 < S3

2.1.T.T. en büyük sayı S3’tür

2.1.T.F. en büyük sayı S2’dir

2.1.F. eğer S1 < S3

2.1.F.T. en büyük sayı S3’tür

2.1.F.F. en büyük sayı S1’dir

3. en büyük sayıyı kullanıcıya bildir

Örnek 3:

Problem: Verilen bir pozitif doğal sayının faktöriyelinin bulunması

Problemin Anlaşılması ve Çözümlenmesi:

Bu problemde bir pozitif doğal sayı okuyacağız ve bu sayının faktöriyelini

kullanıcıya bildireceğiz.

Girdiler: bir pozitif doğal sayı S

Çıktılar: S!

Page 13: Bilgisayar Programlamaya Giriş I · İST 105 DERS NOTLARI Abdullah YALÇINKAYA . Bilgisayar Programlamaya Giriş I 2012 2 Abdullah YALÇINKAYA İST 105 – Bilgisayar Programlamaya

Bilgisayar Programlamaya Giriş I 2012

13 Abdullah YALÇINKAYA

Tasarım:

Bir sayının faktöriyeli (S!), birden o sayıya kadar olan bütün doğal sayıların

çarpımına eşittir. Yani,

S! = 1 x 2 x .... x (S-1) x S

Bu kısa anımsatmadan sonra algoritmamızı tasarlamaya başlayalım. İlk ana

adımlar:

1. Sayıyı oku, S

2. S! hesapla

3. S! kullanıcıya bildir

Birinci ve üçüncü adımlar yeterince basit, ancak ikinci adımın detaylandırılması

gerekiyor. Yukarıdaki formülü, yineleme yapısını kullanarak hesaplayabiliriz. Buna

göre, ikinci adım aşağıdaki alt adımlara bölünebilir. Bu çözüm için, iki değişken

kullanıyoruz. İlki S! değerini tutacak (SFakt), diğeri ise (Sayaç), 1’den S’ye kadar

sayıların değerini tek tek alacak.

2. S! hesapla

2.1. SFakt’i 1’e eşitle

2.2. Sayacı 2’ye eşitle

2.3. Sayaç <= S olduğu sürece

2.3.1. SFakt’ı Sayaç ile çarp ve sonucu SFakt’ın yeni değeri yap

2.3.2. Sayacı bir arttır

Burada, 2.3.1 ve 2.3.2 adımları, 2’den S’e kadar tekrarlanacaktır. Sonunda,

sayaç S’den bir büyük olacağı için tekrarı kontrol eden mantıksal ifade yanlış

olacaktır ve bu adımlar bir daha yinelenmeyecektir.