Bilgisayar Programlamaya Giriş I

Benzer belgeler
DONANIM Bahar Dönemi TEMEL BİLİŞİM TEKNOLOJİLERİ

İşletim Sistemi. BTEP205 - İşletim Sistemleri

BİLGİSAYAR ORGANİZASYONU

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

BİLGİSAYAR KULLANMA KURSU

Doğu Akdeniz Üniversitesi Bilgisayar ve Teknoloji Yüksek Okulu Bilgi teknolojileri ve Programcılığı Bölümü DERS 1 - BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

Bilgisayarda Programlama. Temel Kavramlar

Düşünelim? Günlük hayatta bilgisayar hangi alanlarda kullanılmaktadır? Bilgisayarın farklı tip ve özellikte olmasının sebepleri neler olabilir?

Bilgisayarların Gelişimi

Kısmen insan davranışlarını veya sezgilerini gösteren, akılcı yargıya varabilen, beklenmedik durumları önceden sezerek ona göre davranabilen bir

KONU 1 BİLGİSAYAR VE ÇEVRE ÜNİTELERİ

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

Bilişim Teknolojileri

MİKROİŞLEMCİLER 1 Ders 1

DONANIM VE YAZILIM. Bilişim Teknolojileri ve Yazılım Dersi

BİLGİSAYAR MİMARİSİ. Mimariye Giriş. Özer Çelik Matematik-Bilgisayar Bölümü

Bilgi ve iletişim teknolojileri

Temel Bilgisayar Bilgisi

PROGRAMLAMA TEMELLERİ

Bilişim Teknolojilerine Giriş

Bölüm 1 Bilgisayar ve C Programlamaya Giriş

İşletim Sistemlerine Giriş

Bilgi Çağının Güçlü Araçları: Bilgisayarlar

TAM SAYILARLA İŞLEMLER

NESNEYE DAYALI PROGRAMLAMA VE C++

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

Bölüm 2 Algoritmalar. 2.1 Giriş

Kazanımlar ENF Çukurova Üniversitesi Jeoloji Müh. Böl. 1. Ders Hakkında. Ders Hakkında. Ders Hakkında. Ders Hakkında PROGRAMLAMAYA GĐRĐŞ

C++ Dersi: Nesne Tabanlı Programlama

Kazanımlar. Programlama Dili Nedir? Programlama Dili. Seviye. Çok yüksek seviyeli diller. ENF102 Jeoloji

Temel Kavramlar-2. Aşağıda depolama aygıtlarının kapasitelerini inceleyebilirsiniz.

ENF-106 C Programlama Dili Ders İçeriği. Grafik fonksiyonları C Programlama Dili Ders Notları Dr. Oğuz ÜSTÜN

5. PROGRAMLA DİLLERİ. 5.1 Giriş

KODLAMA SİSTEMLERİNİN TANIMI :

A.Ü. GAMA MYO. Elektrik ve Enerji Bölümü ALGORİTMA VE PROGRAMLAMA 1.HAFTA

Donanım Nedir? Bir bilgisayar sisteminde bulunan fiziksel aygıtların tümü

Bilgisayar (Computer) Bilgisayarın fiziksel ve elektronik yapısını oluşturan ana birimlerin ve çevre birimlerin tümüne "donanım" denir.

Temel Bilgi Teknolojileri -1

TEMEL BİLGİ TEKNOLOJİSİ KULLANIMI. Enformatik Bölümü

DONANIM. 1-Sitem birimi (kasa ) ve iç donanım bileşenleri 2-Çevre birimleri ve tanımlamaları 3-Giriş ve çıkış donanım birimleri

KADİRLİ ŞEHİT ÖĞRETMEN ORHAN GÖK ANADOLU LİSESİ BİLGİ VE İLETİŞİM TEKNOLOJİLERİ DERSİ ÇALIŞMA SORULARI Boşluklara uygun olan kelimeleri yazınız.

Yrd. Doç. Dr. İlhan AYDIN Güz Dönemi Fırat Üniversitesi Bilgisayar Mühendisliği Bölümü

Volkan Karamehmetoğlu

Dosya Yönetim Sistemi Hazırlayan : mustafa kaygısız Kaynak: megep.meb.gov.tr

MAK 1005 Bilgisayar Programlamaya Giriş. BİLGİSAYARA GİRİŞ ve ALGORİTMA KAVRAMI

t sayı tabanı ve üzere, A (abcde) sayısının basamakları: ( 2013) sayısını çözümleyelim. A (abcde) sayısının, ( 30214) sayısını çözümleyelim.

Donan m Donan m Birimleri:

1. ÜNİTE TAM SAYILAR KONULAR 1. SAYILAR

5. HAFTA KBT104 BİLGİSAYAR DONANIMI. KBUZEM Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Bilgisayar Temel kavramlar - Donanım -Yazılım Ufuk ÇAKIOĞLU

Ünite-2 Bilgisayar Organizasyonu.

İşletim Sisteminin Temel İşlemleri

C++ Programming: Program Design Including Data Structures, Third Edition. Bölüm 1: Bilgisayarlar ve Programlama Dillerine Kısa Bakış

Malzeme Gereksinim Planlaması (MRP)

C Dersi Bölüm 1. Bilgisayar Donanımı

-Bilgi ve İletişim (Bilişim) Teknolojileri -Bilgisayar -Elde Taşınan Dijital Cihazlar -Donanım -Yazılım

PORTLAR Bilgisayar: VERİ:

İşletim Sistemleri (Operating Systems)

Öğr.Gör. Mehmet Can HANAYLI

BİL1002 Bilgisayar Programlama PROF.DR.TOLGA ELBİR

Bilgisayar Donanımı. Temel Birimler ve Çevre Birimler. Öğr.Gör.Günay TEMÜR / KAYNAŞLI MESLEK YÜKSEOKULU

BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ 6. SINIF DERS NOTLARI

1 DERS İZLENCESİ 2 BİLGİSAYARA GİRİŞ Bilgisayar nedir? Bilgisayarın tarihçesi Bilgisayarın kullanıldığı alanlar Bilgisayarın kullanılmasında dikkat

BİLİŞİM TEKNOLOJİLERİ VE YAZILIM

Bir okuma/yazma kafasının görevi adından da anlaşıldığı gibi plaka üzerinde okuma/yazma işlemlerini yapmaktır.

Bilgisayar Mühendisliğine Giriş

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

Bilgisayar Donanımı Dersi BİLGİSAYARIN MİMARI YAPISI VE ÇALIŞMA MANTIĞI

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

Program Nedir?(1) Programlamaya Giriş

Ünite-3 Bilgisayar Yazılımı.

BİLGİSAYARLA İLGİLİ TEMEL KAVRAMLAR BİLGİSAYARLARIN İÇ DONANIMI, ANA BİRİMLERİ VE ÇEVRE BİRİMLERİ

Merkezi İşlem Birimi (CPU)

KÜMELER. A = {x : (x in özelliği)} Burada x : ifadesi öyle x lerden oluşur ki diye okunur. Küme oluşturur. Çünkü Kilis in üç tane ilçesi.

Ana Bellek (RAM) İşlemci (CPU) Depolama

ENF 100 Temel Bilgi Teknolojileri Kullanımı Ders Notları 2. Hafta. Öğr. Gör. Dr. Barış Doğru

Mühendislik Ekonomisi. Prof.Dr. Orhan TORKUL

ALGORİTMA İ VE PROGRAMLAMA

T E M E L K AV R A M L A R. Öğr.Gör. Günay TEMÜR / Teknoloji F. / Bilgisayar Müh.

Donanımlar Hafta 1 Donanım

Optik Sürücüler CD/CD-ROM DVD HD-DVD/BLU-RAY DİSK Disket Monitör LCD LED Projeksiyon Klavye Mouse Mikrofon Tarayıcı

Bilgisayar Programı Nedir?

BİT in Temel Bileşenleri (Yazılım-1)

BİLGİ TEKNOLOJİLERİ SMO103

BİLGİSAYAR MİMARİSİ. Komut Seti Mimarisi. Özer Çelik Matematik-Bilgisayar Bölümü

WINDOWS 7. Eğitim ID 98 2/4 (Normal Seviye Kullanıcı) Konu ID Windows 7 Hakkında Genel Bilgi Ek Bilgi -

Bilişim Teknolojilerini Kullanarak İletişim Kurma, Bilgi Paylaşma ve Kendini İfade Etme

Horton'nun (2001) belirttiği üzere web tabanlı öğretim ortamlarında genel olarak kullanılan ders yapıları aşağıdaki gibidir:

İŞLEMCİLER (CPU) İşlemciler bir cihazdaki tüm girdilerin tabii tutulduğu ve çıkış bilgilerinin üretildiği bölümdür.

Tebliğ. Kapsam Madde 2 Borçlanma maliyetlerine ilişkin Türkiye Muhasebe Standardının kapsamı ekli TMS 23 metninde yer almaktadır.

BİT İN TEMEL KAVRAMLARI. 1-BİT ÜRÜNLERİ 2-BİT ÇEŞİTLERİ 3-DONANIM ve YAZILIM TEKNOLOJİLERİ

İşletim Sistemleri. Discovering Computers Living in a Digital World

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.

Demodülasyon Algoritmaları İçin En İyilenmiş Windows İşletim Sistemi Uygulamaları

Fen ve Mühendislik Uygulamalarında MATLAB

Türev Kavramı ÜNİTE. Amaçlar. İçindekiler. Yazar Prof.Dr. Vakıf CAFEROV

CUMHURİYET MESLEKİ VE TEKNİK ANADOLU LİSESİ BİLİŞİM TEKNOLOJİLERİNİN TEMELLERİ DERSİ DERS NOTLARI BELLEKLER

matematik sayısal akıl yürütme mantıksal akıl yürütme

Donanım Nedir? Bir bilgisayar sisteminde bulunan fiziksel aygıtların tümü

Transkript:

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

İ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. 2 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. 3 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: 4 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. 5 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) 6 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. 7 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. 8 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. 9 Abdullah YALÇINKAYA

Yineleme: Yineleme adımı için aşağıdaki gibi bir yapı kullanabiliriz. Bu yapıda mantıksalifade 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: 10 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. 11 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! 12 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. 13 Abdullah YALÇINKAYA