TEMEL BİLGİSAYAR BİLİMLERİ Yrd. Doç. Dr. Bahattin ERDOĞAN (berdogan@yildiz.edu.tr)
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 17.11.2018
İçindekiler Giriş Programlama Dilleri İşlemler Algoritma Hazırlama Akış Diyagramları Matlab 17.11.2018
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. 17.11.2018
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. 17.11.2018
1. GİRİŞ 15 yıl öncesine kadar PC kullanmak (fareye çift kez tıklayabiliyor olmak!), uygulama yazılımlarını (MS-DOS, MS-Word) 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. 17.11.2018
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. 17.11.2018
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. 17.11.2018
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. 17.11.2018
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. “ 17.11.2018
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. 17.11.2018
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ı 17.11.2018
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. 17.11.2018
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. 17.11.2018
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. 17.11.2018
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. 17.11.2018
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) 17.11.2018
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. 17.11.2018
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 Sabit Disk bir çalışma dolabına, bellek yani RAM’de bir çalışma masasına benzetilebilir. Çalışma dolabımızda dolabın kapasitesi kadar dosya yer alabilir. Ancak bu dosyaları aynı anda çalışmak için bunları çalışma masasına yerleştirmek gerekir. Çalışma masası ne kadar büyükse çalışılacak dosya sayımız artar. 17.11.2018
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. 17.11.2018
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. 17.11.2018
1. GİRİŞ /Temel Problem Çözme Teknikleri 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. 17.11.2018
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. 17.11.2018
1. GİRİŞ /Temel Problem Çözme Teknikleri 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. 17.11.2018
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. 17.11.2018
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 Basic Pascal C / C++ MATLAB Print Writeln Printf fprintf “Gir” Komutu Basic Pascal C / C++ MATLAB input Readln Scanf input, read 17.11.2018
2. PROGRAMLAMA DİLLERİ Kodlanmış bir program örneği 17.11.2018
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 Kaynak program Yüksek seviyeli dil Derleyici Amaç program Düşük seviyeli Yüksek-düşük seviyeli dillerdeki program dönüşümü 17.11.2018
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 17.11.2018
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ı Matematik (,) Bilgisayar (.) 125,865 125.865 Pozitif : İşaret yok Negatif : 17.11.2018
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 17.11.2018
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. 17.11.2018
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. 17.11.2018
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. 17.11.2018
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 + b2 - c3 a + b^2 – c^3 sqrt(a+b)-2*a*b/(b^2-4*a*c) A+B*C/D-E*F 17.11.2018
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 17.11.2018
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 A + B^(1/2) (A + B)^1/2 (A + B)^(1/2) = 17 = 13 = 12.5 = 5 17.11.2018
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. 17.11.2018
3. İŞLEMLER / Karşılaştırma İş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 17.11.2018
3. İŞLEMLER / Karşılaştırma İşlemleri Örnek 3: x=0 , y=sin(pi) olsun. Bilgisayarda, x==y dendiğinde sonuç, ans = olur. Çünkü bilgisayarda sin(pi)=1.22410-16 değerine sahiptir ve 0’a eşit değildir. 17.11.2018
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 (~) 17.11.2018
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) 1 17.11.2018
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) 1 17.11.2018
3. İŞLEMLER / Mantıksal İşlemler Mantıksal işlemlerde öncelik sırası şöyledir: 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. 17.11.2018
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 Çalışmaz 19 600 1 25 445 30 Çalışır 17.11.2018
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, dY=YB-YA; dX=XB-XA olsun Eger (dY>0) & (dX<0) (A-B)=(A-B)*200/pi+200 (Tüm hesaplayıcılar RADYAN ile çalışır!) A B Y X Hesaplanan (A-B) 17.11.2018
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. 17.11.2018
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? Sonuçlar nerede gösterilecek? Nerede saklanacak? Sorularına açıklık getirilir. 17.11.2018
4. ALGORİTMA/ Kullanılan operatörler Matematiksel işlem operatörleri Mantıksal işlem operatörleri Karşılaştırma operatörleri ^ Üs alma * Çarpma / Bölme + Toplama - Çıkarma . Ondalık kısımları ayırma == Eşittir <> Eşit değildir < Küçüktür > Büyüktür >= Büyük eşittir <= Küçük eşittir ‘ DEĞİL . VE + VEYA Genel işlem operatörleri = Aktarma operatörü ( ) Parantez operatörü 17.11.2018
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” 17.11.2018
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. 17.11.2018
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 Matematiksel, mantıksal veya sayısal olmayan ifade Aktarma operatörü 2. AKTAR 1. İşlemi yap İşlem yönü 17.11.2018
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 10. Dur Örnek için çalıştırma sonuçları İşlem sırası A B C Eski T Yeni T 1 3 - 0 + 3 = 3 2 4 3 + 7 = 7 5 7 7 + 5 = 12 T = 12 17.11.2018
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 adım sayacın yeni değeri sayacın eski artma veya azalma miktarı 17.11.2018
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. 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. 17.11.2018
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. döngünün çalışması 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 Eski J Eski T Yeni T Yeni J 1 0 + 1= 1 3 1 + 3 = 4 5 4 4 + 5 = 9 7 9 9 + 7 = 16 16 16 + 9 = 25 11 - 17.11.2018
4. ALGORİTMA / Avantajları Program yazmayı kolaylaştırır Hatalı kodlama oranını azaltır Program yazımı için geçen süreyi kısaltır İş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. 17.11.2018
5. AKIŞ DİYAGRAMLARI Algoritmanın özel geometrik şekillerle çizilmiş haline akış diyagramı denir. I. Başla / Dur Başla Dur II. Bilgi Girişi 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 ç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. III. İşlem C = (a^2 + b^2)^ 1/2 17.11.2018
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ü I = 1, N, 1 işlem A Tek döngü 17.11.2018
5. AKIŞ DİYAGRAMLARI İç içe döngü İç döngü I = 1, N, 1 J = 1, N, 1 işlem B İç döngü Dış döngü İç içe döngü 17.11.2018
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 = 17.11.2018
5. AKIŞ DİYAGRAMLARI Örnek: Aşağıdaki akış diyagramının N = 3 için verecegi sonuçları bulunuz. 17.11.2018
5. AKIŞ DİYAGRAMLARI Örnek: Aşağıdaki akış diyagramının sonucunu bulunuz. 17.11.2018
5. AKIŞ DİYAGRAMLARI V. Karar (Karşılaştırma) E İşlem 1 koşul 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 E H İşlem 1 İşlem 2 Bağlantı noktası Karşılaştırma işlem şekli 17.11.2018
5. AKIŞ DİYAGRAMLARI VI. Bağlantı VII. Yazdır / Çıktı Bağlantı şekli genel anlamda birleştirici bir noktadır. Aşağıdaki amaçlar için kullanılır: Farklı yerlere dallanan işlem akışlarını tekrar toplamak, 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. 17.11.2018
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. 17.11.2018
5. AKIŞ DİYAGRAMLARI Örnek: ax2+ bx + c = 0 şeklindeki ikinci dereceden bir denklemin köklerini bulan algoritmayı tasarlayıp akış şeması ile gösteriniz. E H E H 17.11.2018
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. 17.11.2018
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. 17.11.2018
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. 17.11.2018
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. 17.11.2018
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. 17.11.2018
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. 17.11.2018