TEMEL BİLGİSAYAR BİLİMLERİ Yrd. Doç. Dr. Bahattin ERDOĞAN ([email protected]) Kaynaklar Busch R, (1985), Basic für Einsteiger Uzunoğlu vd.
Download ReportTranscript TEMEL BİLGİSAYAR BİLİMLERİ Yrd. Doç. Dr. Bahattin ERDOĞAN ([email protected]) Kaynaklar Busch R, (1985), Basic für Einsteiger Uzunoğlu vd.
TEMEL BİLGİSAYAR BİLİMLERİ Yrd. Doç. Dr. Bahattin ERDOĞAN ([email protected]) Kaynaklar Busch R, (1985), Basic für Einsteiger Uzunoğlu vd. (2002), Matlab 6.0-6.5, Türkmen Kitabevi, İstanbul www.mathworks.com The Mathworks Inc., (2003), Statistic Toolbox for use in Matlab’s User’s Guide Doğan, U, (2006), Temel Bilgisayar Bilimleri, YTÜ Ders Notları, İstanbul 07.11.2015 2 İçindekiler Giriş Programlama Dilleri İşlemler Algoritma Hazırlama Akış Diyagramları Matlab 07.11.2015 3 1. GİRİŞ Verilen bilgileri saklayan, gerektiğinde bu bilgileri hızlı bir şekilde istenilen amaca uygun kullanmayı sağlayan/işleyen, mantıksal ve aritmetiksel işlemleri çok hızlı biçimde yapan bir makinedir. Bilgisayar terimi İngilizce “computer” kelimesinin dilimize çevrilmiş halidir. Bu terim de Latince “compurate” kelimesinden gelmektedir. 07.11.2015 4 1. GİRİŞ Bundan 25 sene kadar önce, bilgisayarlara bakış açısını aktarması bakımından Buch (1985)’den şu alıntıya bakmak faydalı olacaktır: “Bazıları bu cihazları işyerlerindeki insan gücünü yok eden aletler (jobkiller) olarak tanımlar. Diğer bir grup ise, elektroniğin yarattığı bu modern elemanlar ve cihazlar olmadan geleceğin problemlerine hakim olunamayacağını zanneder. Bu cevaplar, düşünceleri, hisleri, hatta korkuları yansıtmaktadır. Ve bütün bunlar-tam bilememekten kaynaklanmaktadır.” Bugün (kişisel) bilgisayarlarımız, hayatımızın o kadar içine girmiştir ki, onlarsız (ve tabii cep telefonsuz!) bir plan yapabilmek, günlük işleri halledebilmek imkansızlaşmaya başlamıştır. 07.11.2015 5 1. GİRİŞ 15 yıl öncesine kadar PC kullanmak (fareye çift kez tıklayabiliyor olmak!), uygulama yazılımlarını (MS-DOS, MSWord) kullanabilir olmak bir seçilme nedeniydi. Bilgisayar kullanmak, Windows’un da katkılarıyla(?), artık oldukça sıradan bir olaydır. “Bilgisayar kullanabilir misin?” şeklindeki yaygın soru, “şu programı (aslında soranın bununla “bir uygulama yazılımını” kastettiği) kullanabilir misin?” e dönüşmüştür. CV’lerimize her yazdığımız –İLGİLİ- bir uygulama yazılımı bilgisi bizlere birer puan kazandırmaktadır. 07.11.2015 6 1. GİRİŞ Artık, yurtdışındaki tüm üniversiteler ve mühendislik firmaları (LEICA, Trimble, LaCoste-Romberg, vb.) bir programlama dilini bilip bilmediğinizi soracaklardır. Yurtdışını düşünmesek bile, “Hesap yapan kişi” anlamındaki “mühendis” in kendi mühendislik hesaplarını programlayamaması, ne yazık ki, onu bir teknikerden öteye taşımayacaktır. 07.11.2015 7 1. GİRİŞ Daha öncede belirttiğimiz gibi, PC kullanmak ve uygulama yazılımlarını çalıştırmak sıradan bir olaydır. Günümüzdeki işletim sistemlerine (Windows, MS-DOS, Mac OS, Linux) alışık bir PC kullanıcısı bu işletim sistemlerine göre oluşturulmuş uygulama yazılımlarının hemen hemen hepsini kolaylıkla çözebilmekte ve kısa bir zamanda kullanabilmektedir. (Çünkü bu yazılımlar, standart bir arayüze (Graphical User Interface) sahiptirler). Aynı biçimde, bir mühendislik CAD yazılımına (NETCAD, AutoCAD, vb.) aşina olan bir mühendis diğer bir CAD yazılımını kolaylıkla öğrenebilir. Yine bir CBS (Coğrafi Bilgi Sistemi) yazılımını (örneğin, Global Mapper) bilen biri, ikinci bir CBS yazılımı karşısında zorluk yaşamaz. 07.11.2015 8 1. GİRİŞ Özetle, bizlerin PC yazılımlarını kolaylıkla öğrenebiliyor olması, PC’lerin yaygınlaşmış olmasına paralel, yazılımların standart arayüz modellerine sahip olmasından kaynaklanmaktadır. Peki, “bir programlama dilini öğrenmek” ile diğer dillere aşina olmak arasında da böyle bir ilinti var mıdır? Eski dilleri düşünmezsek, bu sorunun cevabı “EVET” olacaktır. 07.11.2015 9 1. GİRİŞ ATARI 800XL, Commadore64 gibi ilk PC örneklerindeki BASIC (Beginners All Purpose Symbolic Instruction Code yeni başlayanlar için öğrenmesi kolay bir dil) ile başlayan benim çağdaşlarımın, benden önceki delikli kartlarla çalışanların veya C, C++, Delphi gibi dilleri bilenlerin ortak olacağı tek nokta, “Bir programlama dilinden çok, “ALGORİTMA” nın önemli olduğudur. “ 07.11.2015 10 1. GİRİŞ Programlama dili, bir yabancı dile, algoritma da insanın düşüncesine benzetilebilir. Önemli olan düşüncedir. Dil, düşüncelerimizi aktarmanın yoludur. Öyleyse, algoritma yazabiliyorsak, programlama için büyük bir aşamayı da geçmiş oluruz. 07.11.2015 11 1. GİRİŞ /Temel Kavramlar 1) Bilgisayar: Belirli komutlara göre veri işleyen ve depolayan bir aygıttır. Donanım (hardware) ve yazılım (software) olmak üzere iki yapıdan oluşur. 2) Donanım: Bir bilgisayarı oluşturan fiziksel parçaların genel adıdır. Giriş Donanımı: Fare, Klavye, Tarayıcı (scanner) vb. Çıkış Donanımı: Monitör, Yazıcı, Plotter Hem giriş hem de çıkış donanımı: Sabit Disk (Hard-disk), harici diskler (External hard disk), CD&DVD reader/writer, USB, Hafıza kartları 07.11.2015 12 1. GİRİŞ /Temel Kavramlar 3) Yazılım: Bir bilgisayarda donanıma hayat veren ve bilgi işlemde kullanılan programlar, programlama dilleri ve belgelemelerin tümüne verilen isimdir. Bilgisayar yazılımları, İşletim Sistemleri, Kullanıcı Arayüzleri, Uygulama Yazılımları ve Programlama Dilleri olarak dört ana grup altında incelenebilir. 07.11.2015 13 1. GİRİŞ /Temel Kavramlar İşletim sistemi (Operating System): Bilgisayar donanımının doğrudan denetimi ve yönetiminden, temel sistem işlemlerinden ve uygulama yazılımlarını çalıştırmaktan sorumlu olan sistemlerdir. Örnek: UNIX, Linux, Microsoft Windows, DOS, Mac OS vb. Kullanıcı Arayüzü (User Interface): Microsoft Windows gibi bilgisayar programı ile etkileşimi sağlayan yöntemlerin bileşkesidir. 07.11.2015 14 1. GİRİŞ /Temel Kavramlar Uygulamalar (Applications): PC kullanıcısının, Kelime İşlem (OpenOffice, Microsoft Office vb.) Veri tabanı yönetimi (Access vb.) Hesap çizelgeleri (Excel) E-posta atma ve alma (Outlook Express) Web sayfalarına erişim (Explorer, Modzilla vb.) Ses ve görüntü oynatma (Media Player, BS Player vb.) Oyun oynama.. gibi kişisel ihtiyaçlarına yönelik olarak, genellikle kullanıcı arayüzüyle sunulan yazılımlardır. 07.11.2015 15 1. GİRİŞ /Temel Kavramlar Programlama Dili: Bilgisayarın ilgili donanımlarının çalıştırılarak belirli bir görevi yapmasını sağlayan, yazı ve karakterlerin kullanıldığı bir araçtır. Makine dili (düşük düzey) Assembly dili (orta düzey) Yüksek düzeyli diller: Örneğin, BASIC, Delphi, C, C++, COBOL, Fortran, Java, Lisp, Pascal, Flash gibi diller. 07.11.2015 16 1. GİRİŞ /Temel Kavramlar Yüksek düzeyli dillerin çıkış amacı, programcının bilgisayar sistemine bağımlılığını ortadan kaldırmaktır. Alt düzeyli dillere göre öğrenmesi ve program yazılımı daha kolaydır. Bu diller kendi yapısı ve dilbilgisi kuralları olan ve insanlar için anlaşılması kolay diller olarak ifade edilmektedir. Bilgisayarlar sadece ana dili olan makina dilini anladığı için yüksek düzeyli programlama dilinde yazılan bir program derleyici (compiler) olarak adlandırılan yazılımlar tarafından makina dilindeki denk bir programa dönüştürülür (Örneğin, Compaq Fortran Compiler) 07.11.2015 17 1. GİRİŞ /Temel Kavramlar 4) Anakart (Mainboard): Bilgisayar gibi karmaşık bir elektronik sistemin birincil ve en merkezi baskılı devre kartıdır. Fiziksel yapı olarak anakartlar özel alaşımlı bir blok üzerine yerleştirilmiş ve üzerinde çeşitli donanımların eklenebileceği yerler bulunan dört köşe şeklinde bir plakadır. Bu plaka çalışma sistemini organize eder. 5) İşlemci: (Central Process Unit-CPU): Bir bilgisayarın en önemli parçasıdır. Bilgisayarın veri işleyen ve program komutlarını gerçekleştiren bölümüdür. Aritmetik ve mantıksal işlem yapma yeteğine sahiptir. İşlemci, makine dili (0 ve 1’den oluşan basit dil) ile çalışır. 07.11.2015 18 1. GİRİŞ /Temel Kavramlar 6) Bellek: İşlemcinin çalıştırdığı programlar ve programa ait bilgiler bellek üzerinde saklanır.Bellek geçici bir depolama alanıdır. Bellek üzerindeki bilgiler güç kesildiği anda kaybolur. Belleğe genellikle, RAM (Random Access Memory, Rasgele Erişimli Bellek) adı verilir. RAM’de sadece işlemcide çalışan program parçaları tutulur ve elektrik kesildiği anda RAM bilgileri silinir. Bilgilerin kalıcı olarak saklandığı yer sabit disklerdir (ÇALIŞMA DOLABI: Sabit Disk, ÇALIŞMA MASASI: RAM) 7) BIOS (Basic Input-Output System): Bilgisayar açıldığı anda işlemciye tüm diğer donanımları sırasıyla tanıtan bir yazılımdır. İşletim sistemi çalışırken donanım ve işletim sistemi arasındaki ilişkileri düzenler 07.11.2015 19 1. GİRİŞ /Temel Kavramlar 6) Chipset: (Yonga Seti): Anakart üzerindeki temel ve bütünleşik arabirimleri yöneten ve bunlar arasındaki veri akışını sağlayan bir çeşit işlemci (INTEL, AMD vb.) 7) Görüntü Kartı (Ekran kartı): Bilgisayarın görüntü vermesini sağlayan donanım. Harici, dahili kart veya anakartta chipset içerisinde yerleşik olarak bulunmaktadır. 8) Ses Kartı : Analog ve dijital ses işlevlerini yerine getiren elektronik birimdir. 9) Ethernet Kartı : Bilgisayarın ağa bağlanıp veri alışverişinde, iletişimde olmasını sağlayan elektronik devredir. 07.11.2015 20 1. GİRİŞ /Temel Kavramlar 10) Bit (Bİnary DigiT): Bilgi depolama, haberleşme ve iletişimde en küçük birimdir. Bilgi yalnızca 2 farklı biçimde bulunabilir (İkili Sayı Sistemi): 0 veya 1. Bilginin içeriği bu iki işaretin çeşitli biçimlerde peşpeşe dizilmesiyle belirlenir. 11) Bayt (Byte): Bilgisayarlarda bir veri kelimesi genellikle 8 bit uzunluğundadır. Bu 8 bitlik kelimeye BAYT adı verilir. Onluk düzende 167’nin ikilik düzendeki hali şöyledir: 10100111. 8 Bit=1 bayt 1 Kilobayt = 1 KB= 210 bayt=1024 bayt 1 Megabayt= 1 MB=220 bayt=(1024*1024) bayt 1 Gigabayt = 1 GB=240 bayt=(1024*1024*1024) bayt 1 Terabayt = 1 TB=280 bayt =(1024*1024*1024*1024) bayt Örneğin, 49451 KB’lık bir dosya 49451/1024=48,3 MB veya 49451*1024=50637824 byte’dir. 07.11.2015 21 1. GİRİŞ /Temel Problem Çözme Teknikleri 1. 2. 3. 4. Problem Çözme Tekniği (Descartes’e göre): Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak kabul etmeyin; tahmin ve önyargılardan kaçının. Karşılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bölün. Düzenli bir biçimde düşünün; anlaşılması en kolay olan şeylerle başlayıp yavaş yavaş daha zor ve karmaşık olanlara doğru ilerleyin. Olaya bakışınız çok genel, hazırladığınız ayrıntılı liste ise hiçbir şeyi dışarıda bırakmayacak kadar kusursuz ve eksiksiz olsun. 07.11.2015 22 1. GİRİŞ /Temel Problem Çözme Teknikleri 1) Problemi anlama Bir problemi dikkatle inceleyip tüm değişik yönlerini ve kabul edilebilecek bir çözümün nasıl olacağını anlamaya çalışmak gereklidir. Problemin çözümünde neler beklendiği ve yaratacağı çözümün girdi ve çıktılarının neler olacağı kesin olarak belirlenmelidir. 2) Problemi parçalara ayırma Problem, daha basit ve birbirinden bağımsız parçalara ayrılır. Bu problemlerin birbiri ardınca çözümünün ana problem çözümüne eşdeğer olup olmadığı kontrol edilir. Eğer problem, tekrar tekrar yapılan işlemler içeriyorsa, tekrarlanan işi tekrarlama olgusundan ayrı düşünmek gerekir. 07.11.2015 23 1. GİRİŞ /Temel Problem Çözme Teknikleri 3) Problem çözümü Bir problemi daha basit parçalara bölerken, bölme işi birçok aşamada yavaş yavaş gerçekleştirilmeli ve genel kriterler önce kullanılmalı, daha detaylı kriterler ise sonraya bırakılmalıdır. Bulunan çözüm tekrar tekrar gözden geçirerek doğru ve eksiksiz olduğuna emin olunmalıdır. 4) Tasarım Bu aşamada problemi çözmek için kullanılacak çözüm adımlarını gösteren bir liste, yani, algoritma, hazırlanır. Bu algoritma ile akış diyagramı (flowchart) çizilir. 5) Kodlama Bu adımda, kağıt üzerinde geliştirilen algoritma bir programlama diline çevirilir. 07.11.2015 24 1. GİRİŞ /Temel Problem Çözme Teknikleri 6) Kanıtlama Geliştirilen programın doğruluğu kontrol edilerek; istenildiği gibi çalışıp çalışmadığı görülmelidir. Bu amaçla program üzerinde değişik denemeler yaparak programın o denemelere nasıl karşılık verdiği kontrol edilir. 07.11.2015 25 2. PROGRAMLAMA DİLLERİ Programlama dili, programcı ile bilgisayar arasındaki iletişimi sağlayan bir araçtır. Programların yazımında kullanılan bir notasyondur. Programlama dillerindeki komutlar genel olarak İngilizce’deki günlük konuşma dilindeki kelimelerden türetilmiştir. “Yaz” Komutu “Gir” Komutu Basic Pascal C / C++ MATLAB Basic Pascal C / C++ MATLAB Print Writeln Printf fprintf input Readln Scanf input, read 07.11.2015 26 2. PROGRAMLAMA DİLLERİ Kodlanmış bir program örneği 07.11.2015 27 2. PROGRAMLAMA DİLLERİ Programlama dilleri üç gruba ayrılır: Düşük seviyeli diller : Makine dillerini içerir Orta seviyeli diller : Makine dilinden biraz daha gelişmiş diller Yüksek seviyeli diller : Konuşma dillerine yakın diller Amaç program Kaynak program Yüksek seviyeli dil Derleyici Düşük seviyeli dil Yüksek-düşük seviyeli dillerdeki program dönüşümü 07.11.2015 28 3. İŞLEMLER Bilgisayar programları ile gerçekleştirilen işlemler genel olarak üç gruba ayrılır: Matematiksel (aritmetik) işlemler Karşılaştırma (karar) işlemleri Mantıksal (lojik) işlemler 07.11.2015 29 3. İŞLEMLER /Matematiksel İşlemler - Temel aritmetik işlemler (toplama, çıkarma, çarpma ve bölme) - Matematiksel fonksiyonlar (üstel, logaritmik, trigonometrik, hiperbolik vb) Ondalıklı sayıların tam ve ondalıklı kısımlarını ayırmak için; Sayıların önünde Ondalık sayı Pozitif : İşaret yok Matematik (,) 125,865 07.11.2015 Bilgisayar (.) 125.865 Negatif : 30 3. İŞLEMLER / Matematiksel İşlemler Matematiksel işlemler ve bilgisayar dilindeki karşılıkları 07.11.2015 İşlem Matematik Bilgisayar Toplama a+b a+b Çıkarma a–b a–b Çarpma a.b a*b Bölme ab a/b Üs alma ab a^b 31 3. İŞLEMLER / Matematiksel İşlemler Matematiksel işlemler, programlarda bilgisayar mantığına göre yeniden düzenlenmelidir. Bilgisayar dilinde yazılmış matematiksel ifadelerde işlem öncelik sırası bulunmaktadır. Matematiksel işlemler bilgisayar diline aktarılırken yapılacak olan küçük bir hata işlem sonucunun yanlış çıkmasına neden olur. Bu nedenle, matematiksel işlemlerin bu öncelik sırasına dikkat edilmelidir. 07.11.2015 32 3. İŞLEMLER / Matematiksel İşlemler Matematiksel işlem öncelik sıraları Sıra İşlem Bilgisayar dili 1 Parantezler ((.....)) 2 Üs alma a^b 3 Çarpma ve bölme a*b ve a / b 4 Toplama ve çıkarma a+b ve a-b Eğer bilgisayar diline kodlanmış bir matematiksel ifadede, aynı önceliğe sahip İşlemler mevcut ise, bilgisayarın bu işlemleri gerçekleştirme sırası soldan sağa (baştan sona) doğrudur. 07.11.2015 33 3. İŞLEMLER / Matematiksel İşlemler Örneğin, Y=A*B/C denkleminde, aynı öncelik sırasına sahip çarpma ve bölme işlemleri bulunmaktadır. Bu durumda bilgisayar; A * B işlemini yapıp bulunan sonucu C’ye bölerek işlemi gerçekleştirecektir. Y=A^B^C işleminde ise önce A’nın B’inci kuvveti alınır; çıkan sayının C’inci kuvveti hesaplanır. 07.11.2015 34 3. İŞLEMLER / Matematiksel İşlemler Bazı matematiksel ifadelerin bilgisayar diline kodlanması Matematiksel yazılım Bilgisayara kodlanması a + b – c + 2abc - 7 a + b – c + 2 * a *b *c-7 a + b 2 - c3 a + b^2 – c^3 ab A 07.11.2015 2ab b 2 4ac B.C E.F D sqrt(a+b)-2*a*b/(b^2-4*a*c) A+B*C/D-E*F 35 3. İŞLEMLER / Matematiksel İşlemler Örnek 1: a = 4, b = 6, c = 8 ve d = 10 değerleri için bilgisayar dilinde kodlanmış üç denklemin sonuçlarını inceleyiniz. 1. Denklem c * d / (a*d) + b + c *d / a = 28 2. Denklem c * d / a*d + b + c *d / a = 226 3. Denklem c * d / a*d + (b + c) *d / a =235 07.11.2015 36 3. İŞLEMLER / Matematiksel İşlemler Örnek 2: A = 9, B = 16 değerleri için aşağıdaki ifadelerin sonuçlarını bulunuz. İfade A + B^1/2 A + B^(1/2) (A + B)^1/2 (A + B)^(1/2) 07.11.2015 Matematiksel eşdeğeri B1 A 2 A B (A B)1 2 AB = 17 = 13 = 12.5 =5 37 3. İŞLEMLER / Karşılaştırma İşlemleri Bilgisayar, temel matematiksel işlemlerin yanında karar modelleri de üretebilir. Örneğin, • İki büyüklükten hangisinin büyük veya küçük olduğunu, • İki değişkenin eşit olup olmadığı gibi konularda karar verebilir. Karşılaştırma işlemleri, sayısal ve sayısal olmayan bilgilere uygulanabilmektedir. 07.11.2015 38 3. İŞLEMLER / Karşılaştırma İşlemleri Karşılaştırma işlemleri 07.11.2015 İşlem Sembolü Anlamı == Eşittir ~= Eşit değildir > Büyüktür < Küçüktür >= Büyük eşittir <= Küçük eşittir 39 3. İŞLEMLER / Karşılaştırma İşlemleri Örnek 3: x=0 , y=sin(pi) olsun. Bilgisayarda, x==y dendiğinde sonuç, ans = 0 olur. Çünkü bilgisayarda sin(pi)=1.22410-16 değerine sahiptir ve 0’a eşit değildir. 07.11.2015 40 3. İŞLEMLER / Mantıksal İşlemler Mantıksal işlem operatörleri hem karar ifadelerinde hem de matematiksel İşlemlerde kullanılır. Programlardaki karşılaştırma ifadelerinde birden fazla koşulun belirli bir özellikte sağlanması istenir. Bu durumda araya mantıksal işlem operatörleri konulur. Mantıksal işlem karşılıkları 07.11.2015 Mantıksal işlem Komut VE and (&) VEYA or ( | ) DEĞİL not (~) 41 3. İŞLEMLER / Mantıksal İşlemler VE (&) Operatörü: Bütün koşullar doğru ise sonuç doğrudur.Bütün şartların sağlatılması isteniyorsa koşullar arasına (VE) mantıksal operatörü kullanılır. 07.11.2015 A B A &B , and(A,B) 0 0 0 0 1 0 1 0 0 1 1 1 42 3. İŞLEMLER / Mantıksal İşlemler VEYA (|) Operatörü: Koşullardan herhangi birisi doğru ise sonuç doğrudur. 07.11.2015 A B A|B, or(A,B) 0 0 0 0 1 1 1 0 1 1 1 1 43 3. İŞLEMLER / Mantıksal İşlemler Mantıksal işlemlerde öncelik sırası şöyledir: 1. Her zaman parantez içindeki mantıksal işlemler ilk önce yapılır. 2. Değil, yani (~) işleminin diğer mantıksal işlemlere göre önceliği vardır. 3. Son olarak, Ve (&) ve or (|) işlemleri gerçekleştirilir. 07.11.2015 44 3. İŞLEMLER / Mantıksal İşlemler Örnek 1 : Bir işyerinde çalışan işçiler arasında yalnızca yaşı 23’ün üzerinde olup maaş olarak 600 TL alanların isimleri istenmektedir. Eğer Yaş > 23 & maaş == 600 ise Yaz isim 1. koşul 2. koşul Yaş Maaş 1. koşul 2. koşul Sonuç Yaz 20 440 0 0 0 Çalışmaz 19 600 0 1 0 Çalışmaz 25 445 1 0 0 Çalışmaz 30 600 1 1 1 Çalışır 07.11.2015 45 3. İŞLEMLER / Mantıksal İşlemler Örnek 2 : Açıklık açısı problemini düşünelim: (A-B)=atan((YB-YA)/(XB-XA)). İkinci bölge için, X dY=YB-YA; dX=XB-XA olsun (A-B) Eger (dY>0) & (dX<0) (A-B)=(A-B)*200/pi+200 (Tüm hesaplayıcılar RADYAN ile çalışır!) 07.11.2015 A Y Hesaplanan B 46 3. İŞLEMLER / Mantıksal Fonksiyonlar Sayılar, numeric array (dizi) , karakterler (örneğin, kişi isimleri), character array olarak tutulurlar: a=1000 (Numeric array) b=‘Yildiz’ (Character array) Bu gibi diziler için bazı mantıksal fonksiyonlar bulunur: Örneğin, ischar(a) : a’nın bir karakter olup olmadığını sorgular. Karakterse 1, aksi halde 0 isnumeric(a): a’nın bir sayı olup olmadığını sorgular. Sayı ise 1, aksi halde 0 isempty(a) : a’nın boş dizi olup olmadığını sorgular. Boşsa 1, aksi halde 0 üretir. 07.11.2015 47 4. ALGORİTMA HAZIRLAMA Algoritma, adımlar halinde probleme çözüm getirecek işlemler dizisidir. Bu işlemler dizisinin tasarımı da “yukarıdan aşağıya tasarım” olarak bilinir. Tasarımcı, programa yön verebilecek mantıksal deyim ve ifadeleri tespit eder ve programı, bu deyimlerin ayırdığı kısımlar halinde alt programlara böler. Algoritmada, 1. Hangi veri (input) kullanılacak? Bu veriler nereden alınacak? 2. Bunlarla hangi işlemler, nasıl yapılacak? 3. Ne tür sonuçlar (output) üretilecek? 4. Sonuçlar nerede gösterilecek? Nerede saklanacak? Sorularına açıklık getirilir. 07.11.2015 48 4. ALGORİTMA/ Kullanılan operatörler Matematiksel işlem operatörleri ^ Üs alma * Çarpma / Bölme + Toplama - Çıkarma . Ondalık kısımları ayırma Mantıksal işlem operatörleri ‘ DEĞİL . VE + VEYA Karşılaştırma operatörleri == Eşittir <> Eşit değildir < Küçüktür > Büyüktür >= Büyük eşittir <= Küçük eşittir Genel işlem operatörleri = Aktarma operatörü ( ) Parantez operatörü 07.11.2015 49 4. ALGORİTMA/ Kullanılan terimler 1. Tanımlayıcı : Programı yazan kişi tarafından düşünülüp oluşturulan ve programdaki - değişkenleri - sabitleri - paragrafları - kayıt alanlarını - özel bilgi tiplerini - alt programları vb. adlandırmak için kullanılan kelimelere denir. Programdaki tanımlayıcı kelimelerin yerini tuttukları ifadelere çağrışım yapacak şekilde seçilmesi daha uygundur. Örneğin, “karekök” 07.11.2015 50 4. ALGORİTMA/ Kullanılan terimler Tanımlayıcılarda İsimlendirme kuralları; - İngiliz alfabesindeki A-Z arası 26 harf kullanılabilir. - 0-9 arası rakamlar kullanılabilir. - tanımlayıcı isimler harf ile başlayabilir. - tanımlayıcı ismi, rakamla başlayamaz veya sadece rakamlardan oluşamaz . Bununla birlikte, tanımlayıcının, programın kendisinin veya kullanılan bir başka alt programın isminde olmamasına dikkat edilmelidir. 07.11.2015 51 4. ALGORİTMA/ Kullanılan terimler 2. Değişken : Programın her çalıştırılmasında farklı değerler alabilen veya aktarılabilen bilgi alanları değişken olarak ifade edilir. 3. Aktarma: Herhangi bir bilgi alanına, veri yazma, herhangi bir ifadenin sonucunu başka bir değişkende gösterme gibi görevlerde aktarma operatörü kullanılır. değişken = ifade Herhangi bir değişkenin ismi Aktarma operatörü Matematiksel, mantıksal veya sayısal olmayan ifade 2. AKTAR değişken = ifade 1. İşlemi yap 07.11.2015 52 4. ALGORİTMA HAZIRLAMA Örnek: 1. Başla 2. T = 0 3. Bir sayı (A) gir 4. T = T + A işlemini yap 5. Başka bir sayı gir (B) 6. T = T + B işlemini yap 7. Başka bir sayı gir (C) 8. T = T + C 9. Yaz T Örnek için çalıştırma sonuçları İşlem sırası A B C Eski T Yeni T 1 3 - - 0 0+3=3 2 - 4 - 3 3+7=7 3 - - 5 7 7 + 5 = 12 T = 12 10. Dur 07.11.2015 53 4. ALGORİTMA/ Kullanılan terimler 4. Sayaç: Programlarda bazı işlemlerin belirli sayıda yaptırılması veya işlenen değerlerin sayılması gerekebilir. say = say + 1 Şeklindeki işlemde sağdaki ifadede değişkenin eski değerine (1) eklenmekte; bulunan sonuç yine kendisine yeni değer olarak aktarılmaktadır. Bu tür sayma işlemlerine algoritmada sayaç veya sayıcı denir. Sayaç işlem akışı kendisine her geldiğinde belirtilen adım değeri kadar değeri artan veya azalan değişkendir. Sayaç değişkeni = sayaç değişkeni sayacın yeni değeri 07.11.2015 sayacın eski değeri adım artma veya azalma miktarı 54 4. ALGORİTMA/ Kullanılan terimler 5. Şartlı deyimler (koşullar): Belirli bir işlemin belirli koşullar altında yapılmasını sağlayan ifadelere denir. “Eğer” karşılığının program dilindeki ifadesi olan “if” deyimi böylesi bir şartlı deyime örnektir. Örneğin, bir A değişkeninin B değişkenine eşit olması durumunda, A’nın C/2 olarak değiştirilmesini sağlayan bir algoritmayı ele alalım. 1. 2. 3. 4. 5. 6. 7. Başla A=99 B=(A+1)*A/100 C=50 Eğer A==B A=C/2 YAZ A Dur 07.11.2015 A=C/2=25 olacaktır. Çünkü A=B koşulu sağlanmıştır. 55 4. ALGORİTMA/ Kullanılan terimler 5. Döngü: Programlardaki belirli işlem bloklarını verilen sayıda gerçekleştiren işlem akış çevrimlerine döngü denir. Döngüler, programların belli ifadelerinin istenilen sayıda tekrarını sağlarlar. Örnek : 1- 10 arasındaki tek sayıların toplamını yapan bir algoritma düşünelim. 1. 2. 3. 4. 5. 6. 7. 8. 9. Başla T=0 J=1 Eğer J > 10 ise git 8 T=T+J J=J+2 Git 4 döngü Yaz T Dur 07.11.2015 döngünün çalışması Eski J Eski T Yeni T Yeni J 1 0 0 + 1= 1 3 3 1 1+3=4 5 5 4 4+5=9 7 7 9 9 + 7 = 16 9 9 16 16 + 9 = 25 11 11 - - 56 4. ALGORİTMA / Avantajları I. Program yazmayı kolaylaştırır II. Hatalı kodlama oranını azaltır III. Program yazımı için geçen süreyi kısaltır IV. İşlem akışını açık bir şekilde gösterdiğinden program kontrolünü kolaylaştırır V. 07.11.2015 Sonradan yapılacak düzenlemelerde kolaylıklar sağlar. 57 5. AKIŞ DİYAGRAMLARI Algoritmanın özel geometrik şekillerle çizilmiş haline akış diyagramı denir. I. Başla / Dur Başla II. Bilgi Girişi Dur Bilgisayara dışarıdan veri girişini temsil eden şekildir. Bu şeklin içine klavyeden girilen bilginin aktarılacağı değişkenin ismi yazılır. A, B, C Programın III. İşlem C = (a^2 + b^2)^ 1/2 07.11.2015 çalışması sırasında yapılacak işlemleri ifade etmek için kullanılan şekildir. İçine işlem cümleleri/ifadeleri aynen yazılır. Program akışı buraya geldiğinde, şeklin içerisindeki yazılı işlem gerçekleştirilir. Birden fazla işlem; aynı şekil içinde, aralarına virgül konularak veya alt alta yazılarak gösterilebilir. 58 5. AKIŞ DİYAGRAMLARI IV. Döngü Kontrol değişkeni = başlangıç değeri, bitiş değeri, adım I = 1, 20 ,3 Artan döngü J = 30, 4 ,-2 Azalan döngü k = 1, 99 1’er artan döngü Tek döngü I = 1, N, 1 07.11.2015 işlem A 59 5. AKIŞ DİYAGRAMLARI İç içe döngü İç döngü I = 1, N, 1 J = 1, N, 1 işlem B Dış döngü 07.11.2015 60 5. AKIŞ DİYAGRAMLARI Örnek: 1’den N’e kadar olan sayıların toplamını hesaplayan programın akış diyagramını çiziniz. N = 5 girilirse sonuçlar = 07.11.2015 61 5. AKIŞ DİYAGRAMLARI Örnek: Aşağıdaki akış diyagramının N = 3 için verecegi sonuçları bulunuz. 07.11.2015 62 5. AKIŞ DİYAGRAMLARI Örnek: Aşağıdaki akış diyagramının sonucunu bulunuz. 07.11.2015 63 5. AKIŞ DİYAGRAMLARI V. Karar (Karşılaştırma) algoritmada bir kararın verilmesini ve bu karara göre iki seçenekten birinin uygulanmasını sağlayan şekildir. burada eşkenar dörtgen içerisine kontrol edilecek mantıksal koşul yazılır. Program akışı sırasında koşulun doğru olması durumunda "Evet" yazılan kısma Yanlış olması durumunda "Hayır" yazılan kısma sapılır. Tek Bir girişli ve çift çıkışlı bir şekildir. koşul H E İşlem 1 Bağlantı noktası İşlem 2 Karşılaştırma işlem şekli 07.11.2015 64 5. AKIŞ DİYAGRAMLARI VI. Bağlantı Bağlantı şekli genel anlamda birleştirici bir noktadır. Aşağıdaki amaçlar için kullanılır: a) Farklı yerlere dallanan işlem akışlarını tekrar toplamak, b) Akış diyagramı bir sayfaya sığmadığı zaman diğer sayfadaki akış diyagramı ile bağlantı kurmak, c) Parça parça çizilen akış diyagramları arasında bağlantı yapmaktır. VII. Yazdır / Çıktı Ekrana veya yazıcıya bilgi yazdırmak için kullanılır. VIII. İşlem Akış Yönleri Akış diyagramında işlem akışının hangi yönde olduğunu gösteren oklardır. 07.11.2015 65 5. AKIŞ DİYAGRAMLARI Bu yapıyı art arda birden çok kez kullanıp aşağıdaki gibi bir karşılaştırma dizisi oluşturulabilir. 07.11.2015 66 5. AKIŞ DİYAGRAMLARI ax2+ bx + c = 0 şeklindeki ikinci dereceden bir denklemin köklerini bulan algoritmayı tasarlayıp akış şeması ile gösteriniz. Örnek: E H E 07.11.2015 H 67 5. AKIŞ DİYAGRAMLARI Döngü Yapısı Bu yapı kullanılırken, döngü sayacı, koşul bilgisi ve sayacın artım bilgisi verilmelidir. Döngü sayacı kullanılmıyorsa sadece döngüye devam edebilmek için gerekli olan koşul bilgisi verilmelidir. Genel olarak çoğu programlama dilinin döngü deyimleri ; •While •Do-while •For gibi yapılar üzerine kurulmuştur. Farklı dillerde bu yapılara farklı alternatifler olsa da döngülerin çalışma mantığı genel olarak benzerdir. 07.11.2015 68 5. AKIŞ DİYAGRAMLARI 1. Durum (While) Koşul daha çevrim içerisine girmeden sınanır. Koşul olumsuz olduğunda çevrime hiç girilmez ve döngü içerisinde yapılması gerekenler atlanır. 07.11.2015 69 5. AKIŞ DİYAGRAMLARI 2. Durum (Do-While) Bu döngü deyiminde, çevrim en az bir defa olmak üzere gerçekleşir. Çünkü koşul sınaması döngü sonunda yapılmaktadır. Eğer koşul sonucu olumsuz ise bir sonraki çevrime geçilmeden döngüden çıkılır. Çevrimin devam edebilmesi için her döngü sonunda yapılan koşul testinin olumlu sonuçlanması gerekir. 07.11.2015 70 5. AKIŞ DİYAGRAMLARI 3. Durum (For) Diğer deyimlerden farklı olarak, döngü sayacı doğrudan koşul parametreleri düzeyinde verilir. Döngü girmeden önce sayaç değişkenine başlangıç değeri atanmakta ve daha sonra koşula bakılmaktadır. Döngü içerisinde belirtilen işlemler yapıldıktan sonra sayaç değişkeni arttırılmaktadır. 07.11.2015 71 5. AKIŞ DİYAGRAMLARI İç içe Döngülerin Kullanılması İçiçe döngü kurulurken en önemli unsur, içteki döngü sonlanmadan bir dıştaki döngüye geçilmemesidir. Diğer bir deyişle döngüler birbirlerini kesmemelidir. En içteki döngü bir dıştaki döngünün her adımında N kez tekrarlanır. 07.11.2015 72 5. AKIŞ DİYAGRAMLARI Örnek: Klavyeden girilen N sayısının faktöriyelini alan algoritmanın akış diyagramını çiziniz. N ile hangi sayının faktöriyelin hesaplanacağı belirlenir ve N çevrimlik bir döngü kurulur. İlk çevrimde 1!, ikinci çevrimde 2! ve sırayla N’inci çevrim sonucunda da N! değeri hesaplanmış olur. koşulu oluştuğunda döngüden çıkılır ve elde edilen sonuç dış ortama aktarılır. Sayac>N 07.11.2015 73