TEMEL BLGSAYAR BLMLER Do Dr Mehmet ALKAN alkanyildiz
TEMEL BİLGİSAYAR BİLİMLERİ Doç. Dr. Mehmet ALKAN (alkan@yildiz. edu. tr) (http: //www. yarbis. yildiz. edu. tr/alkan) v İstanbul, 2014
Kaynaklar n Busch R, (1985), Basic für Einsteiger n Uzunoğlu vd. (2002), Matlab 6. 0 -6. 5, Türkmen Kitabevi, İstanbul n www. mathworks. com n The Mathworks Inc. , (2003), Statistic Toolbox for use in Matlab’s User’s Guide n Doğan, U, (2006), Temel Bilgisayar Bilimleri, YTÜ Ders Notları, İstanbul 2
İçindekiler n Giriş n Programlama Dilleri n İşlemler n Algoritma Hazırlama n Akış Diyagramları n Matlab 3
1. GİRİŞ n 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. n Bilgisayar terimi İngilizce “computer” kelimesinin dilimize çevrilmiş halidir. Bu terim de Latince “compurate” kelimesinden gelmektedir. 9. 11. 2020 4
1. GİRİŞ n 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. ” n 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. 5
1. GİRİŞ n 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. n Bilgisayar kullanmak, Windows’un da katkılarıyla(? ), artık oldukça sıradan bir olaydır. n “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. n CV’lerimize her yazdığımız –İLGİLİ- bir uygulama yazılımı bilgisi bizlere birer puan kazandırmaktadır. 6
İlk bilgisayarlardan…… 7
İlk bilgisayarlardan…… 8
İlk bilgisayarlardan…… 9
1. GİRİŞ n Artık, yurtdışındaki tüm üniversiteler ve mühendislik firmaları (LEICA, Trimble, La. Coste-Romberg, vb. ) bir programlama dilini bilip bilmediğinizi soracaklardır. n 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. 10
1. GİRİŞ n Daha öncede belirttiğimiz gibi, PC kullanmak ve uygulama yazılımlarını çalıştırmak sıradan bir olaydır. n 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 hepsini kolaylıkla çözebilmekte ve kısa bir zamanda kullanabilmektedir. (Çünkü bu yazılımlar, standart bir arayüze (Graphical User Interface) sahiptirler). n Aynı biçimde, bir mühendislik CAD yazılımına (NETCAD, Auto. CAD, vb. ) aşina olan bir mühendis diğer bir CAD yazılımını kolaylıkla öğrenebilir. n Yine bir CBS (Coğrafi Bilgi Sistemi) yazılımını (örneğin, Arc. GIS, Map. Info) bilen biri, ikinci bir CBS yazılımı karşısında zorluk yaşamaz. 11
1. GİRİŞ n Ö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. n Peki, “bir programlama dilini öğrenmek” ile diğer dillere aşina olmak arasında da böyle bir ilinti var mıdır? n Eski dilleri düşünmezsek, bu sorunun cevabı “EVET” olacaktır. 12
1. GİRİŞ n ATARI 800 XL, Commadore 64 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. “ 13
1. GİRİŞ n Programlama dili, bir yabancı dile, algoritma da insanın düşüncesine benzetilebilir. n Ö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. n Eğer yazamıyorsak, bu dersi işlemede zorluklar çekeceğimiz ortadadır! 14
1. GİRİŞ /Temel Kavramlar n 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. n 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ı 15
1. GİRİŞ /Temel Kavramlar 16
1. GİRİŞ /Temel Kavramlar n 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 üç ana grup altında incelenebilir. 17
1. GİRİŞ /Temel Kavramlar n İş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. n Kullanıcı Arayüzü (User Interface): Microsoft Windows gibi bilgisayar programı ile etkileşimi sağlayan yöntemlerin bileşkesidir. 18
1. GİRİŞ /Temel Kavramlar n Uygulamalar (Applications): PC kullanıcısının, q q q q Kelime İşlem (Open. Office, 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. 19
1. GİRİŞ /Temel Kavramlar n 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. q Makine dili (düşük düzey) q Assembly dili (orta düzey) q Yüksek düzeyli diller: Örneğin, BASIC, Delphi, C, C++, COBOL, Fortran, Java, Lisp, Pascal, Flash gibi diller. 20
1. GİRİŞ /Temel Kavramlar n 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. n Bu diller kendi yapısı ve dilbilgisi kuralları olan ve insanlar için anlaşılması kolay diller olarak ifade edilmektedir. n 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) 21
1. GİRİŞ /Temel Kavramlar n 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. n 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. 22
1. GİRİŞ /Temel Kavramlar n 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) n 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 23
1. GİRİŞ /Temel Kavramlar n 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. ) n 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. n 8) Ses Kartı : Analog ve dijital ses işlevlerini yerine getiren elektronik birimdir. n 9) Ethernet Kartı : Bilgisayarın ağa bağlanıp veri alışverişinde, iletişimde olmasını sağlayan elektronik devredir. 24
1. GİRİŞ /Temel Kavramlar n 10) Bit (Bİnary Digi. T): 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. n 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) bayt 1 Terabayt = 1 TB=280 bayt =(1024*1024*1024) bayt Örneğin, 49451 KB’lık bir dosya 49451/1024=48, 3 MB veya 49451*1024=50637824 byte’dir. 25
1. GİRİŞ /Temel Problem Çözme Teknikleri n Problem Çözme Tekniği (Descartes’e göre): 1. Doğruluğu kesin olarak kanıtlanmadıkça, hiçbir şeyi doğru olarak kabul etmeyin; tahmin ve önyargılardan kaçının. 2. Karşılaştığınız her güçlüğü mümkün olduğu kadar çok parçaya bölün. 3. Düzenli bir biçimde düşünün; anlaşılması en kolay olan şeylerle başlayıp yavaş daha zor ve karmaşık olanlara doğru ilerleyin. 4. 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. 9. 11. 2020 26
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 yapılan işlemler içeriyorsa, tekrarlanan işi tekrarlama olgusundan ayrı düşünmek gerekir. 27
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ş gerçekleştirilmeli ve genel kriterler önce kullanılmalı, daha detaylı kriterler ise sonraya bırakılmalıdır. Bulunan çözüm 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. 28
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. 29
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 Print Writeln Printf fprintf input Readln Scanf input, read 30
2. PROGRAMLAMA DİLLERİ Kodlanmış bir program örneği 31
2. PROGRAMLAMA DİLLERİ Programlama dilleri üç gruba ayrılır: v Düşük seviyeli diller : Makine dillerini içerir v Orta seviyeli diller : Makine dilinden biraz daha gelişmiş diller v 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ü 32
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 33
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 (, ) Bilgisayar (. ) 125, 865 125. 865 Negatif : 34
3. İŞLEMLER / Matematiksel İşlemler Matematiksel işlemler ve bilgisayar dilindeki karşılıkları İşlem Matematik Bilgisayar Toplama a+b Çıkarma a–b Çarpma a. b a*b Bölme a b a/b Üs alma ab a^b 35
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. 36
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. 37
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. 38
3. İŞLEMLER / Matematiksel İşlemler Bazı matematiksel ifadelerin bilgisayar diline kodlanması Matematiksel yazılım Bilgisayara kodlanması a + b – c + 2 abc - 7 a + b – c + 2 * a *b *c-7 a + b 2 - c 3 a + b^2 – c^3 Sqrt(a+b)-2*a*b/(b^2 -4*a*c) A+B*C/D-E*F 39
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 40
3. İŞLEMLER / Matematiksel İşlemler Örnek 2: A = 9, B = 16 değerleri için aşağıdaki ifadelerin sonuçlarını bulunuz. İfade Matematiksel eşdeğeri A + B^1/2 = 17 A + B^(1/2) = 13 (A + B)^1/2 = 12. 5 (A + B)^(1/2) =5 41
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. 42
3. İŞLEMLER / Karşılaştırma İşlemleri Karşılaştırma işlemleri İş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 43
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. 224 10 -16 değerine sahiptir ve 0’a eşit değildir. 44
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ı Mantıksal işlem Komut VE and (&) VEYA or ( | ) DEĞİL not (~) 45
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. A B A &B , and(A, B) 0 0 1 1 1 46
3. İŞLEMLER / Mantıksal İşlemler VEYA (|) Operatörü: Koşullardan herhangi birisi doğru ise sonuç doğrudur. A B A|B, or(A, B) 0 0 1 1 1 0 1 1 47
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. 48
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 asgari ücret alanların isimleri istenmektedir. Eger Yaş > 23 & maaş == asgari ücret ise Yaz isim 1. koşul 2. koşul Yaş Maaş 1. koşul 2. koşul Sonuç Yaz 20 440 0 Çalışmaz 19 600 0 1 0 Çalışmaz 25 445 1 0 0 Çalışmaz 30 600 1 1 1 Çalışır 49
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 d. Y=YB-YA; d. X=XB-XA olsun (A-B) Eger (d. Y>0) & (d. X<0) (A-B)=(A-B)*200/pi+200 (Tüm hesaplayıcılar RADYAN ile çalışır!) A Y Hesaplanan B 50
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. 51
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. 52
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ü 53
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, “karakök” 54
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. 55
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 56
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 Örnek için çalıştırma sonuçları İşlem sırası A B C Eski T Yeni T 7. Başka bir sayı gir (C) 1 3 - - 0 0+3=3 8. T = T + C 2 - 4 - 3 3+7=7 3 - - 5 7 7 + 5 = 12 9. Yaz T T = 12 10. Dur 57
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 sayacın eski değeri adım artma veya azalma miktarı 58
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 A=C/2=25 olacaktır. Çünkü A=B koşulu sağlanmıştır. 59
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 döngünün çalışması Eski J Eski 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 - - 60
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. Sonradan yapılacak düzenlemelerde kolaylıklar sağlar. 61
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 III. İşlem C = (a^2 + b^2)^ 1/2 9. 11. 2020 Programın ç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 alta yazılarak gösterilebilir. 62
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 işlem A 63
5. AKIŞ DİYAGRAMLARI İç içe döngü İç döngü I = 1, N, 1 J = 1, N, 1 işlem B Dış döngü 64
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 = 65
5. AKIŞ DİYAGRAMLARI Örnek: Aşağıdaki akış diyagramının N = 3 için verecegi sonuçları bulunuz. 66
5. AKIŞ DİYAGRAMLARI Örnek: Aşağıdaki akış diyagramının sonucunu bulunuz. 67
5. AKIŞ DİYAGRAMLARI V. Karar (Karşılaştırma) Bir 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 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 9. 11. 2020 68
5. AKIŞ DİYAGRAMLARI VI. 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. 69
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. 9. 11. 2020 70
5. AKIŞ DİYAGRAMLARI Örnek: ax 2+ bx + c = 0 şeklindeki ikinci dereceden bir denklemin köklerini bulan algoritmayı tasarlayıp akış şeması ile gösteriniz. E H E 9. 11. 2020 H 71
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. 9. 11. 2020 72
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. 9. 11. 2020 73
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. 9. 11. 2020 74
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. 9. 11. 2020 75
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. 9. 11. 2020 76
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. §Sayac>N koşulu oluştuğunda döngüden çıkılır ve elde edilen sonuç dış ortama aktarılır. 9. 11. 2020 77
6. MATLAB (MATrix LABoratuary) http: //www. mathworks. com/matlabcentral/ MATLAB, yüksek performanslı bir programlama dilidir. MATLAB’in temelindeki yapı, boyutlandırma gerektirmeyen matrislerdir. Yaptığımız tüm girdi ve çıktılar, diğer programlama dillerindeki gibi belirteç gerektirmeksizin bir matris tanımlar. İlk olarak Fortran dili ile yazılan MATLAB, daha sonra C ile yazılmıştır. 78
6. MATLAB (MATrix LABoratuary) Avantajları: Kullanım kolaylığı İşletim sistemi uyumluluğu, Sayısal analiz işlemlerindeki kolaylıklar, Hazır fonksiyonlar (function files) Görüntüleme (visualization) kolaylığı (grafik çizim) GUI geliştirme kolaylığı, MATLAB derleyicisi (exe: executable dosya ile win 32 uygulamaları) Toolboxes (Araç kutuları) : hazır programlar! 79
6. MATLAB/Command window (komut penceresi) Current directory (çalışma klasörü) Dinamik komut satırı n n M-file editörü Her türlü mat. işlem, Demo, program çalıştırma vb. Programların yazıldığı editör 80
6. MATLAB/Workspace (İş alanı) Atanan değişken Workspace penceresini açmanın “komut” bir yolu Workspace ilgili oturumda kullanılan tüm değişkenlerin tutulduğu alandır. 81
6. MATLAB/Array Editor (Dizi editörü) Matris, vektör ve sayılar için excel özelliğindeki editördür. İki farklı biçimde görüntülenir: >>open(‘a’) workspace penceresinde ilgili değişken iki kez tıklanır. Daha önce atanan bir değişkenin boyutları istenildiği gibi değiştirilebilir! 82
- Slides: 82