ALGORİTMA VE PROGRAMLAMA Öğr. Gör. Dr. Umut Engin AYTEN Dersin İçeriği Temel Kavramlar ve Tanımlar Problem Çözme ve Algoritmalar Sözde Kod ve Akış Diyagramı Uygulamarı(Sıralama, arama, ..) Programlama Dillerine Giriş, Temel Kavramlar MATLAB Programı Temel Komutlar, Koşul ve Döngü Komutları, Vektör İşlemleri Grafik Komutları, Dosya İşlemleri MATLAB Programı ile GUI Hazırlama MATLAB Toolbox’lar ve İçerikleri MATLAB Simulink’i Kullanma MATLAB’te Çeşitli Uygulamalar Algoritma ve Programlama 2 1.BÖLÜM Temel Kavramlar ve Tanımlar Bilgisayar 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. Algoritma ve Programlama 4 Bilgisayarların Gelişimi Mekanik Çağ Blaise Pascal () Vites tabanlı toplama makinası Gottfried Wilhelm von Leibniz () Toplama, çıkarma, çarpma, bölme Mekanik olarak sık sık arızalanırdı. Algoritma ve Programlama 5 Bilgisayarların Gelişimi Delikli Kart (Punch Card) Joseph Jacquard () Bilgisayar tabanlı halı dokuma makinesi Algoritma ve Programlama 6 Bilgisayarların Gelişimi The Analytical Engine Punch card’lar üzerinde yazılan The Difference Engine () programları işleyebiliyordu Charles Babbage Bilgiyi belleğinde saklayabiliyordu Algoritma ve Programlama 7 Bilgisayarların Gelişimi Elektro-mekanik Çağ ( – ) Hermann Hollerith ( 19’uncu yüzyılın sonları) Amerikan oy sayımlarına kullanıldı. Elektrik ile çalışıyor. Bilgi punch card ile veriliyor. Nüfus: 63 milyon; 6 hafta International Business Machines (IBM)’in ilk ürünü Algoritma ve Programlama 8 Bilgisayarların Gelişimi Howard Aiken + IBM + Harvard () Veri depolama: Mekanik röle telefon anahtarları (switch) 40m. uzunluğunda Girdi: Punch Card 5 ton , parça Mark I Bir bilgisayar ile bir hesap makinesi arasında ne fark var? Algoritma ve Programlama 9 Bilgisayarların Gelişimi İlk yazılım Bug’ı Grace Hopper ( – ) Mark I’in ilk programcılarından. Derleyicinin mucidi. Algoritma ve Programlama 10 Bilgisayarların Gelişimi Elektronik Çağ ( – Bugün) Elektronik ile ilgili ilk deneylerin vakum tüplerinde yapılan çalışmalar olduğu kabul edilir. Heinrich Geissler (), cam tüpün içinden havanın çoğunu çıkartmış ve bu tüpün içinden elektrik akımı geçirildiğinde tüpün parıldadığını görmüştür. Sir William Crookes () havası alınmış cam tüp’ün (vakum tüp) içinden akım geçirdiğinde, geçen akımın parçacıklardan oluştuğunu görmüştür. Sir Joseph Thompson () bu parçacıkları ölçmeyi başarmıştır ve bu parçacıklara daha sonra elektron denilmiştir. John Ambrose Fleming, yılında, vakum tüpünü kullanarak akımın tek yönlü olarak akmasına izin veren vakum tüp diode’u geliştirmiştir. Bu cihaza “Fleming valve” veya radio tube’de denir. Algoritma ve Programlama 11 Bilgisayarların Gelişimi yıllarında, elektronik dünyasında bir çok gelişme olmuştur. Bu yıllarda ilk elektronik hesap makineleri geliştirilmeye başlanmıştır. John Atanasoff ve lisansüstü öğrencisi Clifford Berry, yılında, ABC (Atanasoff-Berry Computer) olarak adlandırılan ilk ikili sayı sisteminde çalışan makineyi icat geliştirmişlerdir. Bu makinada lojik işlemler için vakum tüpleri ve hafıza için kondansatörler kullanılmıştır. Algoritma ve Programlama 12 Bilgisayarların Gelişimi Savaş sırasında bilgisayar konusundaki çalışmalar çok daha hızlı bir şekilde geliştirilmiştir. John von Neumann, yılında, ilk bilgisayar olarak kabul edilen Eniac’ı geliştirmiştir. Algoritma ve Programlama 13 Bilgisayarların Gelişimi Electronic Numerical Integration and Calculator (ENIAC) John Mauchly and J. Presper Eckert (’da tamamlandı) İlk olarak 2’inci dünya savaşında gizli bir proje olarak başladı. University of Pennsylvania Algoritma ve Programlama 14 Bilgisayarların Gelişimi metre kare alan 30 tons vacuum tüpleri kullanıyordu - >17, Karar verebiliyordu: ilk gerçek bilgisayar Programlama kablo temasları ve switch ayarları ile yapılıyordu. ENIAC Algoritma ve Programlama 15 Bilgisayarların Gelişimi yılında Bell laboratuarlarında bir araştırma grubu kurulmuştur. Grubun amacı: iletkenler, yarıiletkenler, yalıtkanlar, piezoelektrik malzemeler ve manyetik malzemeler üzerinde temel araştırmalar yapmak, olarak tanımlanmıştır. Burada yapılan yarıiletkenler konusundaki çalışmalar sonucunda, Walter Brattain, John Bardeen ve William Shockley tarafından tranzistör icat edilmiştir. yılında bu yeni devre elemanının patenti alınmış ve yılında da Allentown Pennsylvania’da ticari olarak üretilmeye başlanmıştır. Tranzistörün icadı elektronikte devrim niteliğindedir. Algoritma ve Programlama 16 Bilgisayarların Gelişimi Algoritma ve Programlama 17 Bilgisayarların Gelişimi ’li yıllarda yapılan araştırmalar sonucunda çok sayıda tranzistör, diyot ve kapasiteden oluşan devrelerin bir bütün olarak gerçekleştirilmesi yolu bulunmuştur. Böylece ortaya tümdevreler veya entegre devreler (integrated circuit) çıkmıştır. Jack Kilby, yılında, Texas Instruments firmasında ilk tümdevreyi gerçekleştirmiştir. Algoritma ve Programlama 18 Bilgisayarların Gelişimi ve yılında yapılan çalışmalarda tümdevre teknolojisine BJT’lere göre daha uygun olan Metal-oksit-yarıiletken alan etkili tranzistör (metal-oxide-semiconductor field effect transistor- MOSFET) geliştirilmiştir (Kahng ve Atalla, ), (Hofstein ve Heinman, ). MOSFET transistorlerin gelişmesi ile birlikte tümdevre içine çok daha fazla sayıda transistor yerleştirilebilmiştir. Bir tümleşik devredeki eleman sayısı ’te 40’a ve ’de ’e yükselmiştir. ’li yıllarda VLSI (Very Large-Scale Integration) olarak isimlendirilen sistemlerde ,’ler mertebesinde eleman içeren tümleşik devreler gerçekleştirilmiştir. Günümüzde bu elaman sayıları çok daha büyük değerlere ulaşmıştır. Algoritma ve Programlama 19 Bilgisayarların Gelişimi Intel 8-bit mikrokontroller. İşlemci hızı 12 MHz, bytes Ram, bytes EPROM, giriş çıkış uçları. Hepsi Milyon tranzistör bir tümdevrede bir tümdevrenin içinde Algoritma ve Programlama 20 Bilgisayarların Gelişimi Microprocessor: CPU içeren tek bir chip İlk olarak yılında Marcian Hoff (Intel Corporation) tarafından tasarlandı Microcomputer: masaüstü boyutlarında bilgisayar ALTAIR () Apple (Stephen Wozniak ve Steven Jobs; ) Algoritma ve Programlama 21 Bilgisayarların Gelişimi Her ayda bir işlemci gücü ikiye katlanıyor. From the BBC Algoritma ve Programlama 22 Bilgisayarlar Mimarileri Temel Bilgisayar Mimarileri •Von - Neumannmimarisi •Harvard Mimarisi Algoritma ve Programlama 23 Bilgisayarlar Mimarileri Harvard Mimarisi Günümüz tipik bilgisayarları Von- Neumann Mimarisine sahip Mikroişlemciler kullanırken (Intel x86, Pentium, AMD Athlon..) , Özellikle Görüntü, ses işleme, yüksek hız gerektiren uygulamalarda Harward mimarisine sahip mikroişlemlerciler (DSP’ler, ARM Cortex..) Algoritma ve Programlama 24 Bilgisayar Sistemi 1. Donanım fiziksel aygıtlardır. 2. Yazılım ise yapılması gereken işleri yapabilmek için donanıma komutlar veren programlar topluluğudur. Algoritma ve Programlama 25 Donanım CPU Control ALU Birimi Giriş Çıkış Cihazları Registers Cihazları Bellek Veri Depolama Algoritma ve Programlama 26 Donanım Görevleri yapabilmek için komutları işleyen mikroişlemciye CPU denir. CPU nelerden oluşur: Kontrol Ünitesi Aritmetik mantık ünitesi (Arithmetic Logic Unit) Register Algoritma ve Programlama 27 Donanım CPU’daki Komut Döngüsü Kontrol Ünitesi 2. Komutu çözümler 1. Bellekten komut ALU alınır 3. Aritmetik işlemler ve karşılaştırma yapar 4. sonuç bellekte saklanır Bellek Algoritma ve Programlama 28 Donanım Veri Depolama Üniteleri CPU Control ALU Giriş Unit Çıkış Cihazları Registers Cihazları Bellek Veri depolama Algoritma ve Programlama 29 Donanım Bellek Türleri Registers – CPU’nun bir parçası; çok hızlı; sınırlı büyüklük Cache Memory – CPU’nun bir parçası; RAM’den daha hızlı Read-only Memory (ROM) – Bilgisayarın sürekli ihtiyaç duyduğu sistem komutlarını barındıran chip Random Access Memory (RAM) – Ana karta eklenen bellek; program komutları ve veriler için birincil depo Algoritma ve Programlama 30 Donanım Diğer Bilgisayar Bileşenleri Veri depolama sistemi Hard disk, tape, floppy, DVD vs. Geniş alan, ucuz, yavaş, manyetik ve optik Input Cihazları Klavye, Fare, Dokunmatik ekran, Tarayıcı, Webcam,Joystick,Mikrofon Output Cihazları Monitör, Yazıcı, Plotter, Hoparlör Algoritma ve Programlama 31 Yazılım Sistem Yazılımı: Uygulama yazılımı: 1. Aygıt Yazılımı (Firmware) 1. Genel Amaçlı (BIOS). 2. İşletim Sistemi 2. Uygulamaya Özel 3. Sistem destek yazılımı 4. Sistem Geliştirme Yazılımı Algoritma ve Programlama 32 Yazılım Sistem Yazılımı •Aygıt Yazılımı: Sistemi oluşturan donanımların çalışması için gerekli olan yazılımlardır. •İşletim sistemi: Kullanıcı arayüzü, ağ bağlantı arayüzleri, Dosya erişimi ve organizasyonu, Çoklu çalışma gibi hizmetleri sağlayan yazılımlardır. Örneğin: DOS, Windows, Linux, PARDUS, Unixvs.. •Sistem destek yazılımları: Sistemle ilişkili faydalı yazılımlardır. Örneğin,Disk formatlayıcı, hesap makinesi, test ve iletişim yazılımları, Hyperterminal, Telnet vs.. •Sistem Geliştirme Yazılımları: Bunlar, çeşitli kütüphaneler, Uygulama Programı arayüzü(API) (Winsock, setupapi, mmtools, SAPI, DDK..), Derleyiciler, Debugger’lar.. Algoritma ve Programlama 33 Yazılım Uygulama Yazılımları •Genel Amaçlı •Kelime işlem programları: MS-Word, Word-Pro, … •Veri tabanı yönetim programları: Oracle, Access, SQL, … •Hesap Tablosu programları: MS-Excel, Lotus, … •Grafik ve çizim programları: AutoCAD, 3D MAX, Photoshop, Corel Draw, … •Matematik tabanlı programlar: MATLAB, MatCAD, Mathematica, … •… •Özel yazılımlar Algoritma ve Programlama 34 Program ve Yazılımın Tanımı Program: belirli bir işi gerçekleştirmek için gerekli komutlar dizisi olarak tanımlanabilir. Programlama: Bir programı oluşturabilmek için gerekli komutların belirlenmesi ve uygun biçimde kullanılmasıdır. Programlama Dilleri: Bir programın oluşturulmasında kullanılan komutlar, tanımlar ve kuralların belirtildiği programlama araçlarıdır. Yazılım: Belirli bir amacı sağlayan, program yada programlar ve ilgili dokümantasyonlardır. Algoritma ve Programlama 35 Programlama Dilleri Bilgisayarlara ne yapmaları gerektiğini söylememizi sağlayan özel bir dil Tüm yazılımlar programlama dilleri ile yazılır. Algoritma ve Programlama 36 Programlama Dilleri Makine dili (birinci seviye) Bilgisayarın ana dilidir. İkicil (binary) kodlardan oluşur (0’lar ve 1’ler) Örn. Bilgisayarın anlayabildiği tek dildir. Assembly Dili (ikinci seviye) Makine diline birebir çevrilebilir Makine dilinden daha kolay anlaşılabilir (ama çok da değil) Örn. ADD X Y Z Assembler – assembly dilini makine diline çeviren program Algoritma ve Programlama 37 Programlama Dilleri Procedural diller (üçüncü seviye) Bir komut pek çok makine dili komutuna karşılık gelir Programlarda bilgisayarın işlem akışını adım adım tasarlayabilirsiniz. İnsan diline daha çok benzer; bilinen kelimeleri kullanır Örnek: C, C++, Java, Fortran, QuickBasic Derleyici (compiler) – programın tümünü assembly veya makine diline çevirir (C++, Pascal, Ada). Interpreter – program çalıştırıldığında adım adım programı makine koduna çevirir (Basic, Javascript, LISP) Algoritma ve Programlama 38 Programlama Dilleri Nonprocedural Diller (dördüncü seviye) Kullanıcının sadece gerekli sorguyu göndermesi sonuca ulaşması için yeterlidir. Örnek: – veritabanı sorgulama dili- SQL Teknik olmayan insanlar tarafından da kullanılabilir. Natural Language Programming Languages (beşinci seviye (akıllı diller)) İnsandilini programlama diline çevirir. Oldukça karmaşık ve yenidir. Algoritma ve Programlama 39 Programlama Dilleri Dilden dile çevrim Programlama dili Çevirici program Makine diline ile yazılan program Çevrilmiş kod (object (kaynak code) kodu)(source Ì Assembler code) Ì Compiler Ì Interpreter CPU tarafından işlenir Algoritma ve Programlama 40 Programlama Dilleri Makine Dilinde Çarpma İşlemi Algoritma ve Programlama 41 Programlama Dilleri Bir Assembly programı Örneği: LDI temp,0x80 ; Analog Comparator disabled OUT ACSR,temp LDI temp,0x00 OUT DDRB,temp ; PORTB giriş LDI temp,0b ; PD0,PD1,PD2,PD3 inputdiğerleri output OUT DDRD,temp LDI temp,0b ; initPORTD OUT PORTD,temp CLR hat1_time_out ;ilk değerleri atama bölümü CLR hat2_time_out CLR temp LDI ZH,0 ;hat1 temp buffer'ı boşalt LDI ZL,hat1_temp_adres ST Z,temp LDI YH,0 ;hat2 temp buffer'ı boşalt LDI YL,hat2_temp_adres ST Y,temp LDI XH,0 Algoritma ve Programlama 42 Programlama Dillerinin Tarihçesi İlk programın, Ada Lovelacetarafından Charles Babbage’ın tanımlamış olduğu “Analytical Engine” i ile Bernoullisayılarının hesaplanmasına ilişkin makalesinde olduğu söylenmektedir. Bu nedenle ilk gerçek anlamdaki programlama dillerinden birinin adı Ada Lovelace anısına ADA olarak isimlendirilmiştir larda ilk modern bilgisayar ortaya çıktığında, programcılar yalnızca assembly dili kullanarak yazılım yapabiliyorlardı. – •FORTRAN (), the"FORmula TRANslator •LISP, the"LISt Processor", •COBOL, the COmmon Business Oriented Language •ALGOL Algorithmic Language Algoritma ve Programlama 43 Programlama Dillerinin Tarihçesi Algoritma ve Programlama 44 Yazılım Geliştirme Araçları •Editörler-Tümleşik geliştirme ortamları(IDE) •Derleyicilerle birlikte kullanılır •Derleyiciler-Bağlayıcılar (Compilers–Linkers) •Yorumlayıcılar (Interpreter) Editörler Program kodlarını yazmak için kullanılan, metin düzenleyicilerdir. Program kodları saf metin biçiminde yazıldığından, herhangi bir metin düzenleyicisi, program yazılımı için kullanılabilir. •Kodlamadaki hatalar görülmez. •Anahtar kelimeler, fonksiyonlar ve parametreleri, vb.. Tanımlar ayrı renklendirilmediğinden kod yazmak daha zordur. •Breakpoint, yada watch gibi, hata ayıklama unsurları yoktur. •Notepad, Wordpad.. editör olarak kullanılabilir. •Program derleme ve bağlama işlemi editör dışında genellikle komut satırı üzerinde yapılır. Algoritma ve Programlama 45 Yazılım Geliştirme Araçları IDE (Tümleşik geliştirme ortamı) Tümleşik geliştirme ortamları, Genellikle derleyicileri –bağlayıcıları ortam içinden kullanabilmeyi yada derleyici ve bağlayıcıya ortam içinden erişme yollarını sağlarlar (Makefilevs..). Bunun yanı sıra; •Derleyici ve bağlayıcı tümleşik olan yapılarda Hata ayıklama, Gözlem penceresi gibi bileşenler mevcuttur. •Yazım işlemini kolaylaştıracak vurgulamalar ve uyarılar mevcuttur. •Derleyici ve bağlayıcı parametreleri menülerden ayarlanabilir. •Yardımlar mevcuttur. •Her yazılım dilinin kendi IDE si mevcuttur. Ancak bazı IDE’ler birden fazla yazılım dili için ortam sağlayabilir. Algoritma ve Programlama 46 Yazılım Geliştirme Araçları Algoritma ve Programlama 47 Yazılım Geliştirme Araçları Gömülü sistem programlaması için Keil uVision3 IDE Algoritma ve Programlama 48 Yazılım Geliştirme Araçları Windows Ortamındaki geliştirmeler için MS VS C++ Algoritma ve Programlama 49 Yazılım Geliştirme Araçları Derleyiciler:Bir derleyici, bir metin editörü yada IDE üzerinde yazılan program kodlarını, makinenin anlayabileceği OBJ kodlara dönüştüren bir uygulama yazılımıdır. Derleyicilerin birçoğu, Program dilinin yanısıra makine dilinin(assembly) de kullanılmasına izin verir. Bağlayıcılar:Bir bağlayıcı, derleyici tarafından derlenmiş olan OBJ program kodlarını uygun bellek bölgelerine yerleştirerek, değişkenlerin ve sabitlerin bellek atamalarını ve ilklemelerini gerçekleyerek tek bir çalıştırılabilir program elde eden bir uygulama yazılımıdır (windows için exe dosya). Örnek derleyiciler ve bağlayıcılar: MS VC++ için funduszeue.info derleyici, funduszeue.info bağlayıcı Keil uVision için cexe derleyici, Ldexe bağlayıcı funduszeue.info açık kaynaklı ücretsiz bir derleyici ve bağlayıcı Algoritma ve Programlama 50 Yazılım Geliştirme Araçları Algoritma ve Programlama 51 Yazılım Geliştirme Araçları YORUMLAYICILAR (INTERPRETERS) Yorumlayıcılar, program kodunu bir bütün olarak değerlendirmez. Program kodunu satır, satır yorumlayarak çalıştırırlar. Bu nedenle günümüzde derleyicilere göre daha kısıtlı uygulamalara sahiptirler, internet uygulamaları ve bilimsel alanda yaygın kullanılmaktadırlar. •Bazı yorumlayıcılar, yazılan program satırını, daha etkin bir biçime çevirip, hemen uygularlar. Bunlar arasında: Perl, Phyton, Matlab, Mathcad gibi yorumlayıcılar sayılabilir. •Bazı yorumlayıcılar ise, yorumlayıcı sistemin bir parçası olan bir derleyici tarafından önceden derlenip saklanmış kodları uygularlar. Java bunlar arasında sayılabilir. Algoritma ve Programlama 52 Sayı Sistemleri Günlük yaşantımızda 10 luk sayı sistemi kullanılır. Ancak, bilgisayar sistemleri 2 lik sayı sistemini kullanılırlar. 10 luk sistemde taban 10, ikilik sistemde taban 2 dir. Sayı sistemlerinde sayıyı oluşturan her bir rakam digit olarak adlandırılır. Onluk sayı sistemlerinde her bir rakam decimal digit yada sadece digitken, ikilik sistemde binary digit yada kısaca bit olarak adlandırılır. 6 digitlik onlu sayı 6 bitlik ikili sayı Sayı sembolleri 0 .. (Taban–1) arasındadır. Onluk düzende rakamlar , ikilik düzende rakamlar 0 , 1 den oluşur. Sayıların oluşturulması = 1*+ 2*+ 3*+ 4*+ 5*+ 6* = 1*25+ 0*24+ 0*23+ 1*22+ 0*21+ 1*20 Algoritma ve Programlama 53 Sayı Sistemleri Sekiz bitlik ikili sayılara bir byte lık sayılar denir 8 bit yada bir bytedır. 16 bit uzunluklu sayılara 1 word luk sayılar sayılar denmesine rağmen, bu kavram bazen işlemcinin veri yolu uzunluğu kadar bit sayısı ile de eşleştirilmektedir. 2 byte lık yada 1 wordluk sayı. Ayrıca her 4 bit, bir Nibbleolarak adlandırılır. Algoritma ve Programlama 54 Sayı Sistemleri POZİTİF VE NEGATİF SAYILAR Bir byte’lık en küçük ve en büyük pozitif sayılara bakalım (decimal 0) (decimal ) Buradaki tüm sayılar, pozitiftir. Bir başka deyişle sayı işaretsizdir. Negatif sayılar söz konusu olduğunda bu sayıların yarısının pozitif, yarısının negatif olduğu söylenebilir. Örneğin 1 byte’lıksayı ile + arasında değişecektir. İkilik sistemde negatif sayılar, çıkarma işleminin toplama aracılığıyla yapılabilmesini sağlamak amacıyla tümleyen sayılarla gösterilir. Tümleyen sayı, verilen sayıyı, o bit sayısı için temsil edilen en büyük sayıya tamamlayan sayıdır. (Pratikte bit evirerek yapılır.) Örneğin ın tümleyeni dir. ( –10). Bu türden tümleyene 1’e tümleyensayı denir. Dikkat edilirse en ağırlıklı (en soldaki) bit negatif sayılar için 1 olmaktadır. Pratikte pek kullanılmaz, çünkü burada iki tane 0 söz konusudur ( ve ) ve işlemcinin doğrudan toplamasıyla çıkarma elde edilemez. Algoritma ve Programlama 55 Sayı Sistemleri İkiye Tümleyen (2’s Complement) Algoritma ve Programlama 56 Sayı Sistemleri Hexadecimal sayılar (Hex) Bilgisayar sistemlerinde uzun bit dizilerini temsil etmek zor olacağı için yazım biçimi olarak hexadecimal sayılar tercih edilmektedir. Hex sayılar 16 lık sayılardır. Herbir Nibble bir Hex sayı ile temsil edilebilir. Böylelikle ikili sayının yazım uzunluğu 4 te bir digite düşecektir. Hex sistemde sayılar 16 sembolden oluşur ve aşağıdaki gibidir. Örnek: = 3A Hex, = E5 Hex =5DC Hex Algoritma ve Programlama 57 Kod Sistemleri Bilgisayarlar yalnızca sayılarla çalışırlar, oysa bizim harflere ve diğer sembollere de gereksinimimiz vardır. Bu semboller de sayılara karşılık düşürülecek biçimde kodlanırlar. Program örneğin bu sayı ile karşılaşırsa ekrana karşılık düşen sembolü basar, yada klavyeden gelen sayının sembolik karşılığını , yazıcıdan çıkarır. Bir çok kodlama türü olmasına karşın dünyada bilgisayar ortamlarında ANSI tarafından yılında standartlaştırılan ASCII(American NationalCode for Information Interchange) kodlaması yoğun olarak kullanılmaktadır. Ancak günümüzde , ASCII kodları çok dilliği sağlayabilmek için yetersiz kaldığından UNICODE kodlaması yaygınlaşmaktadır. Ancak pek çok uygulamada ASCII kodlaması hala geçerliliğini korumaktadır. ASCII temel olarak 7 bit’ tir. karakterden oluşur. Ama Extended kısmıyla birlikte 8 bit kullanılmaktadır. Ancak genişletilmiş kısımdaki semboller yazılım ortamına göre değişebilmektedir. Algoritma ve Programlama 58 ASCII ilk Sembol Algoritma ve Programlama 59 ASCII genişletilmiş kısım Algoritma ve Programlama 60 İşlemler Bilgisayar programları ile gerçekleştirilen işlemler; 1) Matematiksel İşlemler 2) Karşılaştırma(karar) İşlemleri 3) Mantıksal(lojik) İşlemler Matematiksel İşlemler Temel aritmetik işlemler toplama,çıkarma,çarpma,bölme Matematiksel fonksiyonlar Üstel,logaritmik,trigonometrik, hiperbolik ) vb Algoritma ve Programlama 61 Matematiksel İşlemler İşlem Matematik Bilgisayar Toplama a+b a+b Çıkarma a-b a-b Çarpma a.b a*b Bölme a:b a/b Üs alma ab a^b Matematiksel işlemlerin öncelik sırası ? Sıra İşlem Bilgisayar dili NOT: Bilgisayar diline kodlanmış bir matematiksel ifadede, aynı önceliğe 1 Parantezler ((…………….)) sahip işlemler mevcut ise bilgisayarın bu 2 Üs alma a^b işlemleri gerçekleştirme sırası soldan sağa(baştan sona) doğrudur. 3 Çarpma ve bölme a*b ve a/b 4 Toplama ve çıkarma a+b ve a-b Örneğin ; Y=A*B/C Önce A*B işlemi yapılacak, ardından bulunan sonuç C ye bölünecektir. Algoritma ve Programlama 62 Matematiksel İşlemler Matematiksel Bilgisayara Kodlanması Yazılım a+b-c+2abc-7 a+b-c+2*a*b*c-7 a+b2-c3 a+b^2-c^3 b 2 a − + 2ac − a-b/c+2*a*c-2/(a+b) c a+b 2ab (a+b)^(1/2)-2*a*b/(b^2- a+b − b 2 − 4ac 4*a*c) a2 + b2 (a^2+b^2)/(2*a*b) 2ab Algoritma ve Programlama 63 Karşılaştırma (Karar) İşlemleri İki büyüklükten hangisinin büyük veya küçük olduğu, İki değişkenin birbirine eşit olup olmadığı gibi konularda karar verebilir. İşlem sembolü Anlamı = Eşittir <> Eşit değil > Büyüktür < Küçüktür >= veya => Büyük eşittir <= veya =< Küçük eşittir Algoritma ve Programlama 64 Mantıksal İşlemler Mantıksal işlem Matematiksel sembol Komut “ve,veya,değil “ operatörleri Ve . And hem matematiksel Veya + Or işlemlerde hem de karar ifadelerinde kullanılırlar. değil ‘ Not Bütün şartların sağlatılması isteniyorsa koşullar arasına VE Herhangi birinin sağlatılması isteniyorsa koşullar arasına VEYA Koşulu sağlamayanlar isteniyorsa DEĞİL mantıksal operatörü kullanılır. Algoritma ve Programlama 65 Mantıksal İşlemler Örnek; Bir işyerinde çalışan işçiler arasından yalnızca yaşı 23 üzerinde olup, maaş olarak asgari ücret alanların isimleri istenebilir. Burada iki koşul vardır ve bu iki koşulun da doğru olması gerekir. Yani; Eğer Yaş>23 VE maaş=asgari ücret ise ismi Yaz funduszeue.infoŞUL funduszeue.infoŞUL Yaz komutu 1. ve funduszeue.infoşulun her ikisi de sağlanıyorsa çalışır. Örnek; Bir sınıfta Bilgisayar dersinden 65 in üzerinde not alıp, Türk Dili veya Yabancı Dil derslerinin herhangi birinden 65 in üzerinde not alanların isimleri istenmektedir. Burada 3 koşul vardır ve Bilgisayar dersinden 65 in üzerinde not almış olmak temel koşuldur. Diğer iki dersin notlarının herhangi birinin 65 in üzerinde olması gerekir. Eğer ; funduszeue.info>65 ve (TDili not>65 veya YDil not>65) ismi Yaz Algoritma ve Programlama 66 2. BÖLÜM Problem Çözme ve Algoritmalar Problem Çözme 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ş 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. Problem çözme sırası 1. Problemi anlama (Understanding, Analyzing), 2. Bir çözüm yolu geliştirme (Designing), 3. Algoritma ve program yazma (Writing), 4. Tekrar tekrar test etme (Reviewing) Algoritma ve Programlama 68 Problem Çözme Bir problemi çözmek için yazılacak programda, genel olarak, aşağıdaki yazılım geliştirme aşamaları uygulanmalıdır. Yazılım Geliştirme Aşamaları 1. Problemin Analizi: Problemin tam olarak ne olduğunun anlaşılmasıdır. Bu nedenle, problemin çözümünden neler beklendiği ve yaratacağı çözümün girdi ve çıktılarının neler olacağı kesin olarak belirlenmelidir. 2. Tasarım: Problemi çözmek için kullanılacak çözüm adımlarını gösteren bir liste yapılması gereklidir. Bir problemin çözüm adımlarını gösteren bu listeye algoritma denir. Böyle bir liste tasarlanırken, ilk önce problemin ana adımları çıkarılır; daha sonra her adım için, gerekiyorsa, daha ayrıntılı bir çözüm tasarlanır. 3. Kodlama: Kağıt üzerinde geliştirilen algoritma, programcının tercih ettiği bir programlama diline çevrilir. Algoritma ve Programlama 69 Problem Çözme 4. Test etme: Program değişik girdiler ile çalıştırılarak ürettiği sonuçlar kontrol edilerek test işlemi gerçekleştirilir. Sonuçlar beklendiği gibi ise , programın doğru çalıştığı kanıtlanmış olunur; değilse doğru çalışmayan kısımları tespit edilerek düzeltilir. 5. Belgeleme: Bütün bu çalışmaların belli bir dosyalama sistemi içinde belgeler halinde saklanmasının sağlandığı aşamadır. 6. Bakım: Programın güncel koşullara göre yeniden düzenlenmesini içeren bir konudur. Oluşan hataların giderilmesi,, yeni eklemeler yapılması ya da programın teknolojisinin yenilenmesi gibi işlemlerdir. Algoritma ve Programlama 70 Algoritma ve Programlama 71 Problem Çözme Bir problem çözülürken biri algoritmik, diğeri herustic(sezgisel) olarak adlandırılan iki yaklaşım vardır. Algoritmik yaklaşımda, çözüm için olası yöntemlerden en uygun olanı seçilir ve yapılması gerekenler adım adım ortaya konulur. Herustic yaklaşımda ise, çözüm açıkça ortada değildir. Tasarımcının deneyimi, birikimi ve o andaki düşüncesine göre problemi çözecek bir şeylerin şekillendirilmesiyle yapılır. Program tasarımcısı, algoritmik yaklaşımla çözemediği, ancak çözmek zorunda olduğu problemler için bu yaklaşımı kullanır. Algoritma ve Programlama 72 Algoritmik Yaklaşım Algoritma, herhangi bir sorunun çözümü için izlenecek yol anlamına gelmektedir. Çözüm için yapılması gereken işlemler hiçbir alternatif yoruma izin vermeksizin sözel olarak ifade edilir. Diğer bir deyişle algoritma, verilerin, bilgisayara hangi çevre biriminden girileceğinin, problemin nasıl çözüleceğinin, hangi basamaklardan geçirilerek sonuç alınacağının, sonucun nasıl ve nereye yazılacağının sözel olarak ifade edilmesi biçiminde tanımlanabilir. Algoritma hazırlanırken, çözüm için yapılması gerekli işlemler, öncelik sıraları gözönünde bulundurularak ayrıntılı bir biçimde tanımlanmalıdırlar. Örnek 1: Verilen iki sayının toplamının bulunmasının algoritması aşağıdaki gibi yazılır. Adım 1 – Başla Adım 2 – Birinci Sayıyı Oku Adım 3 – İkinci Sayıyı Oku Adım 4 – İki Sayıyı Topla Adım 5 – Dur Algoritma ve Programlama 73 Algoritmik Yaklaşım Algoritmalar iki farklı şekilde kağıt üzerinde ifade edilebilirler; 1. Pseudo Code (Kaba Kod veya Yalancı Kod veya Sözde Kod), bir algoritmanın yarı programlama dili kuralı, yarı konuşma diline dönük olarak ortaya koyulması/ tanımlanmasıdır. Bu şekilde gösterim algoritmayı genel hatlarıyla yansıtır. 2. Akış şeması, algoritmanın görsel/şekilsel olarak ortaya koyulmasıdır. Problemin çözümü için yapılması gerekenleri, başından sonuna kadar, geometrik şekillerden oluşan simgelerle gösterir. Algoritma ve Programlama 74 Sözde (Pseudo) Kod Sözde programlar, doğrudan konuşma dilinde ve programlama mantığı altında, eğer, iken gibi koşul kelimeleri ve > = < gibi ifadeler ile beraber yazılır. İyi bir biçimde yazılmış, sözde koddan, programlama diline kolaylıkla geçilebilir. Örnek: Verilen bir sıcaklık derecesine göre suyun durumunu belirten bir sözde program yazınız. •Örnek Giriş/Çıkış –Bu Program, Sıcaklığa göre suyun durumunu gösterir –Su, Buz, Buhar – –Lütfen derece cinsinden sıcaklığı giriniz: –BUHAR elde edeceksiniz. Algoritma ve Programlama 75 Sözde (Pseudo) Kod İstenilen programın Pseudo Kodu: 1. Program açıklama mesajı yaz. 2. Kullanıcın sıcaklığı girmesi için bir uyarı mesajı yaz. 3. Girilen Sıcaklığı Oku. 5. Eğer Sıcaklık < 0 ise Durum=“Buz” 6. Eğer Sıcaklık>= ise Durum=“Buhar” 7. Değilse Durum =“Su” 8. Sonucu Yaz. Algoritma ve Programlama 76 Akış Diyagramları (Şemaları) Algoritmanın, görsel olarak simge ya da sembollerle ifade edilmiş şekline “akış şemaları” veya FLOWCHART adı verilir. Akış şemalarının algoritmadan farkı, adımların simgeler şeklinde kutular içine yazılmış olması ve adımlar arasındaki ilişkilerin ve yönünün oklar ile gösterilmesidir. Programın saklanacak esas belgeleri olan akış şemalarının hazırlanmasına, sorun çözümlenmesi sürecinin daha kolay anlaşılır biçime getirilmesi, iş akışının kontrol edilmesi ve programın kodlanmasının kolaylaştırılması gibi nedenlerle başvurulur. Uygulamada çoğunlukla, yazılacak programlar için önce programın ana adımlarını (bölümlerini) gösteren genel bir bakış akış şeması hazırlanır. Daha sonra her adım için ayrıntılı akış şemalarının çizimi vardır. En basit şekliyle dikdörtgen kutulardan ve oklardan oluşur. Akış şeması sembolleri ANSI (American National Standards Institute) standardı olarak belirlenmiş ve tüm dünyada kullanılmaktadır. Algoritma ve Programlama 77 Akış Diyagramları (Şemaları) Her simge, yapılacak bir işi veya komutu gösterir. Akış şemalarının hazırlanmasında aşağıda yer alan simgeler kullanılır. Bir algoritmanın başladığı konumu göstermektedir. Tek çıkışlı bir şekildir. Bir algoritmanın bittiği konumu göstermektedir. Tek girişli bir şekildir. Bir algoritmada aritmetik işlem yapılmasını sağlayan şekildir. Bu dörtgen kutu içerisine yapılmak istenen işlem yazılır. Tek girişli ve tek çıkışlı bir şekildir. Algoritma ve Programlama 78 Akış Diyagramları (Şemaları) Algoritmada bir bilginin ekrana yazılacağı konumu gösteren şekildir. Ekrana yazılacak ifade ya da değişken bu şekil içerisine yazılır. Bir algoritmada başka bir yerde tanımlanmış bloğun yerleştiği konumu gösteren şekildir. Kutu içerisine bloğun adı yazılabilir. Klavyeden Bilgisayara bilgi girilecek konumu belirten şekildir. Girilecek bilginin hangi değişkene okunacağını kutu içerisine yazabilirsiniz. Giriş Çıkış komutunun kullanılacağı yeri belirler ve kutu içerisine hangi değişkeni ve OKUma mı YAZ mı yapılacağını belirtmeniz gerekir. Algoritma ve Programlama 79 Akış Diyagramları (Şemaları) Bilginin Yazıcıya yazılacağı konumu gösteren şekildir. Bir algoritmanın birden fazla alana yayılması durumunda bağlantı noktalarını gösteren şekildir. Tek girişli veya tek çıkışlı olarak kullanılırlar. Birçok programda; belirli işlem blokları ardışık değerlerle veya bazı koşullar sağlanıncaya kadar tekrarlanır. Bu tekrarlamalı işlemler döngü olarak isimlendirilir. Döngü şeklinin içine; döngü (çevrim, kontrol) değişkeni, başlangıç değeri, bitiş değeri ve adımı yazılır. Algoritma ve Programlama 80 Akış Diyagramları (Şemaları) 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. Akış Çubuğu Programın bittiği yer ya da yerleri gösteren bir şekildir. Algoritma ve Programlama 81 Akış Diyagramları (Şemaları) Klavyeden girilen İki sayının toplamını hesaplayıp yazan pseudo kod ve akış şemasını hazırlayınız. BAŞLA OKU X (X: Birinci sayı, Y: İkinci sayı, Z: toplam) A1 : Başla A2 : Klavyeden oku X OKU Y A3 : Klavyeden oku Y A4 : Hesapla Z = X + Y A5 : Yaz Z Z=X+Y A6 : Dur YAZ Z DUR Algoritma ve Programlama 82 Algoritmalarda Kullanılan Operatörler İşlemleri belirten sembollere bilgisayar dilinde “operatör” denir. Algoritmada kullanılan operatörler Tabloda verilmiştir. Matematiksel İşlem oper Karşılaştırma Operatörleri Üs alma ^ Eşittir = Çarpma * Eşit değildir <> Bölme / Küçüktür < Toplama + Büyüktür > Çıkarma - Büyük eşittir >= Tam ve onda ayırma . Küçük eşittir <= Mantıksal İşlem Operatörleri Genel İşlem Operatörleri Değil ‘ Aktarma = Ve . Parantez () Veya + Algoritma ve Programlama 83 Algoritmalarda Kullanılan Terimler Tanımlayıcı Değişken Sabit Aktarma Sayaç Döngü Ardışık Toplama Ardışık Çarpma Tanımlayıcı Programcı tarafından oluşturulur. Programdaki değişkenleri,sabitleri, kayıt alanlarını, özel bilgi tiplerini vb adlandırmak için kullanılan kelimeler Tanımlayıcılar, yerini tuttukları ifadelere çağrışım yapacak şekilde seçilmelidir. İngiliz alfabesindeki A-Z veya a-z arası 26 harften arası rakamlar kullanılabilir Sembollerden sadece alt çizgi (_) kullanılabilir. Tanımlayıcı isimleri harfle veya alt çizgiyle başlayabilir. Tanımlayıcı ismi,rakamla başlayamaz veya sadece rakamlardan oluşamaz. Algoritma ve Programlama 84 Algoritmalarda Kullanılan Terimler Değişken Programın her çalıştırılmasında, farklı değerler alan bilgi/bellek alanlarıdır. Değişken isimlendirilmeleri, yukarıda sayılan tanımlayıcı kurallarına uygun biçimde yapılmalıdır. Örneğin ; Bir ismin aktarıldığı değişken ; ad Bir isim ve soy ismin aktarıldığı değişken; adsoyad Ev telefon no sunun aktarıldığı değişken; evtel Ev adresinin aktarıldığı değişken; evadres İş adresinin aktarıldığı değişken; isadres Sabit Programdaki değeri değişmeyen ifadelere “sabit” denir. “İsimlendirme kuralları”na uygun olarak oluşturulan sabitlere, sayısal veriler doğrudan; alfa sayısal veriler ise tek/çift tırnak içinde aktarılır. Algoritma ve Programlama 85 Algoritmalarda Kullanılan Terimler Örnek Algoritma Başla Bir isim giriniz(A) “İlk algoritmama Hoş geldin” mesajı (B) B VE A yı Yaz Dur Yukarıdaki algoritma, dışarıdan girilen bir A değişkeni ile B sabitini birleştirip ekrana yazar. A değişkeni B sabiti Sonuç Onur İlk Algoritmama Hoş geldin İlk Algoritmama Hoş geldin Onur Emre İlk Algoritmama Hoş geldin İlk Algoritmama Hoş geldin Emre Algoritma ve Programlama 86 Algoritmalarda Kullanılan Terimler Aktarma Herhangi bir bilgi alanına, veri yazma; herhangi bir ifadenin sonucunu başka bir değişkende gösterme vb görevlerde “aktarma” operatörü kullanılır. değişken=ifade Değişken yazan kısım herhangi bir değişken ismidir. İfade yazan kısımda ise matematiksel,mantıksal veya alfa sayısal ifade olabilir. = sembolü, aktarma operatörüdür ve sağdaki ifadenin/işlemin sonucunu soldaki değişkene aktarır. Bu durumda değişkenin eğer varsa bir önceki değeri silinir. Değişken = İfade AKTAR 1.işlem: sağdaki ifadeyi gerçekleştir veya sağdaki işlemi yap 2.işlem: Bulunan sonucu soldaki değişkene aktar. Algoritma ve Programlama 87 Algoritmalarda Kullanılan Terimler Sayaç Programlarda bazı işlemlerin belirli sayıda yaptırılması veya işlenen/üretilen değerlerin sayılması gerekebilir. say=say+1 Bu 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ç adı verilir. Sayacın genel formülü; Sayaç değişkeni=sayaç değişkeni+adım Örnek; X=X+3 Örnek; S=S-5 Algoritma ve Programlama 88 Algoritmalarda Kullanılan Terimler Örnek Aşağıdaki algoritmada arası sayılar, ekrana yazdırılmaktadır. arası sayıları oluşturmak için sayaç(s=s+1) kullanılmıştır. 1. Başla Eski S Yeni S Ekrana 2. S=0 Yazılan 3. Eğer s>4 ise git 7 0 0+1=1 1 4. S=S+1 5. Yaz S 1 1+1=2 2 6. Git 3 2 2+1=3 3 7. Dur 3 3+1=4 4 4 4+1=5 5 Algoritma ve Programlama 89 Algoritmalarda Kullanılan Terimler Döngü Bir çok programda bazı işlemler, belirli ardışık değerlerle gerçekleştirilmekte veya belirli sayıda yaptırılmaktadır. Programlardaki belirli işlem bloklarını, verilen sayıda gerçekleştiren işlem akış çevrimlerine “döngü” denir. Örneğin 1 ile arasındaki tek sayıların toplamını hesaplayan programda T=1+3+5 …. yerine 1 ile arasında ikişer artan bir döngü açılır ve döngü değişkeni ardışık toplanır. Algoritma ve Programlama 90 Algoritmalarda Kullanılan Terimler Örnek Aşağıdaki algoritmada, 1 ile 10 arası tek sayıların toplamı hesaplanmaktadır. Eski J Eski T Yeni Yeni J 1. Başla T 2. T=0 1 0 0+1=1 3 3. J=1 4. Eğer j>10 ise git 8 3 1 1+3=4 5 5. T=T+J 6. J=J+2 DÖNGÜ 5 4 4+5=9 7 7. Git4 8. Dur 7 9 9+7=16 9 9 16 16+9=25 11 11 - - - Algoritma ve Programlama 91 Algoritmalarda Kullanılan Terimler Ardışık Toplama Programlarda, aynı değerin üzerine yeni değerler eklemek için kullanılır. Toplam değişkeni=Toplam değişkeni + Sayı Örnek: Klavyeden girilen 5 sayısının ortalamasını bulan programın algoritması. 1. Başla 2. T=0 3. S=0 4. Eğer S>4 ise git 9 5. S=S+1 6. Sayıyı (A) gir 7. T=T+A 8. Git 4 9. Ortalama=T/5 Yaz Ortalama Dur Algoritma ve Programlama 92 Algoritmalarda Kullanılan Terimler Ardışık Çarpma Ardışık veya ardışıl çarpma işleminde; aynı değer, yeni değerlerle çarpılarak eskisinin üzerine aktarılmaktadır. Çarpım değişkeni=Çarpım değişkeni * Sayı Örnek: Klavyeden girilen N sayısının faktöriyelini hesaplayan programın algoritmasını yazınız. 1. Başla 2. N sayısını gir 3. Fak=1 4. S=0 5. Eğer S>N-1 ise git 9 6. S=S+1 7. Fak=Fak*S 8. Git 5 9. Yaz Fak Dur Algoritma ve Programlama 93 Akış Diyagramlarında Kullanılan Temel Şekiller 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. Örnek: İşlem akışı bu şekle gelince, program c = a + b 2 2 C=(a^2+b^2)^(1/2) işlemini yapar. İfadedeki ‘a’ ve ‘b’ daha önceki adımlarda girilmiş olan değerlerdir. Algoritma ve Programlama 94 Akış Diyagramlarında Kullanılan Temel Şekiller Karar Verme 2. Durum: 1. Durum: b) Olumsuz koşulda yapılacak a) Koşulun durumuna bağlı olarak 2 işlem yoktur; olumlu olması farklı işlem vardır. durumunda ise N adet işlem yapılacaktır. Algoritma ve Programlama 95 Akış Diyagramlarında Kullanılan Temel Şekiller Bu yapıyı art arda birden çok kez kullanıp aşağıdaki gibi bir kaşılaştırma dizisi oluşturulabilir. Algoritma ve Programlama 96 Akış Diyagramlarında Kullanılan Temel Şekiller Örnek: ax2+ bx + c = 0 şeklindeki ikinci dereceden bir denklemin köklerini bulan algoritmayı tasarlayıp akış şeması ile gösteriniz. Evet Hayır Evet Hayır Algoritma ve Programlama 97 Akış Diyagramlarında Kullanılan Temel Şekiller 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. Algoritma ve Programlama 98 Akış Diyagramlarında Kullanılan Temel Şekiller 1. Durum (While) Koşul daha çevrim içerisine girmeden sınanır. Koşul olumsuz olduğunda çerime hiç girilmez ve döngü içerisinde yapılması gerekenler atlanır. Algoritma ve Programlama 99 Akış Diyagramlarında Kullanılan Temel Şekiller 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. Algoritma ve Programlama Akış Diyagramlarında Kullanılan Temel Şekiller 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. Algoritma ve Programlama Akış Diyagramlarında Kullanılan Temel Şekiller İç 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. Algoritma ve Programlama Akış Diyagramlarında Kullanılan Temel Şekiller Ö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. Algoritma ve Programlama UYGULAMALAR Algoritma ve Programlama KAYNAKLAR 1. Rifat Çölkesen, "Veri yapıları ve algoritmalar", Papatya Yayınları, İstanbul, 2. Fahri Vatansever, "Algoritma geliştirme ve programlamaya giriş", Seçkin Yayınları, Ankara, 3. Aslan İnan, "MATLAB ve programlama", Papatya Yayınları, İstanbul, 4. funduszeue.info~kunal/funduszeue.info, “Temel Bilgisayar Bilimleri Ders Notları-Ünal Küçük”. 5. Soner Çelikkol, "Programlamaya giriş ve algoritmalar", Akademi Yayınları, İstanbul, 6. Feridun Karakoç, “Algoritma geliştirme ve programlamaya giriş”, Temel Bilgisayar Bilimleri Ders Notları. 7. Maltepe Üniversitesi, “Programlamanın Temelleri Ders Notları”. 8. funduszeue.info, “Feza Buzluca Bilgisayar Mimarisi Ders Notları”. Algoritma ve Programlama
Bir bilgisayar sistemi donanım ve yazılım olmak üzere iki bölümden oluşur.
Donanım
Bellek Birimleri
Giriş Çıkış
Birimleri Birimleri
Yazılım
İşletim Sistemi
(MS-DOS, Windows, Unix, Linux vs.)
Programlama Dilleri
(BASIC, Fortran, C, Pascal, Java vs.)
Uygulama Programları
(Word, Excel, Autocad vs.)
1
Veri ve Bilgi Kavramları
Veri, bir konuda gözlemler veya faaliyetler sonucu ortaya çıkan gerçeklerdir.
Örneğin, hava sıcaklığının gözlenmesi sonucu elde edilen değerler, sıcaklık
verileridir veya bir sınıftaki öğrencilerin herhangi bir dersten aldıkları notlar, not
verileridir.
Bilgi, verilerin işlenmesi sonucu ortaya çıkan toplam değere veya faydaya denir.
Örneğin, sıcaklık verilerinin ortalaması alınarak o bölgenin ortalama sıcaklığı
hesaplanır veya sıcaklık verileri daha başka işlemlere tabi tutularak o bölgenin
iklimi hakkında bilgi sahibi olunur. Benzer şekilde not verilerinin işlenmesi
sonucu sınıfın başarısı hakkında bilgi sahibi olunur.
2
ALGORİTMA GELİŞTİRME
VE
BASIC PROGRAMLAMA DİLİ
A – Programlamaya Giriş
1- Program
2- Programlama dilleri
Yüksek düzeyli dillerde yazılan bir program derleyici (compiler) adı verilen bir
program ile makine diline çevrilir. Bu işleme derleme (compile) adı verilir.
3
3- İşlemler
4
5
a−b 1
+
3 c 1 ((a - b) ^ (1 / 5)/(a + b – c / (a * b)) ^ (1 / 4)) ^ 1 / 3)
4 a+b− 1+
ab 1 +1 / (1 + 1/ (1 + 1 / (a * b * c)) ^ (1 / 2)) ^ (1 / 2)
1+
abc
(a + b) ^ 1 / 2
2
(a + b) ^ (1 / 2) a +b
5
“VE” işleminde bütün koşullar doğru ise sonuç doğrudur. “VEYA”
işleminde koşullardan biri doğru ise sonuç doğrudur. Bütün şartların sağlanması
isteniyorsa “VE”, şartların herhangi birinin sağlanması isteniyorsa “VEYA” ve
koşulu sağlamayanlar isteniyorsa “DEĞİL” operatörü kullanılır.
ALGORİTMA GELİŞTİRME
6
b. Algoritma, herhangi bir programlama diliyle yazılır. (Kodlama)
Değişken İsimlerinde:
a. İngiliz alfabesinin harfleri kullanılır.
b. 0 – 9 arası rakamlar kullanılabilir.
c. Alt çizgi ( _ ) karakteri dışında özel işaretler kullanılmaz.
d. Değişken isimleri mutlaka harf ile başlamalıdır.
Örneğin öğrencilerin 1. vize notu için “funduszeue.info” hatalı bir değişken ismidir,
doğrusu “VIZE_1” olabilir.
7
Eşitliğin sağ tarafındaki “değer” matematiksel, mantıksal veya karakter bir ifade
olabilir. Aktarma operatörü “ = “ ile ifadenin değeri değişkene aktarılır. Eğer
değişkene yeni bir değer aktarılırsa eski değer silinir.
Örnek:
X = X + 3 (üçer üçer artan bir sayaç)
S = S – 5 (beşer beşer azalan bir sayaç)
8
3 3+1=4 4 4 4+1=5 5
Ardışık Toplama: Başlangıç değeri 0 ve artım değeri düzensiz olan bir sayaçtır.
1. Başla 5. S = S + 1
2. Faktor = 1 6. Faktor = Faktor * S
3. S = 0 7. GİT 4
9
9. DUR
10
AKIŞ DİYAGRAMLARI
İşlem Şekil
Başla / Dur
Veri girişi
Atama
Döngü
Karar
11
Çıktı, Yazdırma
Bağlantı
BASIC dilinde tamsayılar ile arasında bir değer alır. Tek ve çift
duyarlıklı ondalık sayılar E38 ve E38 aralığında olabilirler. Tek
duyarlıklı sayı da anlamlı basamak sayısı 7 veya daha az; çift duyarlıklı sayıda
12
ise anlamlı basamak sayısı 8 ile 18 arasındadır. Aşağıda tek ve çift duyarlıklı
sayılara örnekler verilmiştir.
1. INPUT
Örnek:
……..
INPUT a
INPUT “b ve c sayılarını giriniz”, b, c
d=a+b+c
…….
INPUT komutundan sonra girilen değişken değeri ile istenen değişken türü aynı
olmalıdır.
13
Örnek:
………
INPUT “bir sayı giriniz”, a
PRINT “girilen sayının karesi=”; a^2
……..
Örnek:
……..
INPUT “iki sayı giriniz”, a$,b$
PRINT “girilen sayıların toplamı=”;a$+b$
…………
2. READ-DATA VE RESTORE
READ deyimleri ile istenen veri sayısı ile DATA deyimleri ile girilen veri sayısı
eşit olmalıdır.
READ A, B
RESTORE 50
READ C, D
PRINT A, B, C, D
50 DATA 3, 11
14
BASIC’teki Çıkış/Yazdırma Komutları
1. PRINT
PRINT değişken
PRINT “mesaj” değişken
2. PRINT USING
15
# : Sayının basamaklarının yerini tanımlar. Eğer tanımlanan alan değerden
büyükse değer sağa dayalı olarak yazılır. Tanımlanan alan değerden küçükse
değerin önüne % işareti belirir.
, : Tam kısım ile ondalıklı kısmı ayıran noktanın hemen önünde yer alan ( , )
işareti yazdırılacak rakamların üçer hane virgülle ayrılmasını sağlar.
^^^^ : Yazdırılacak sayının üstel formda yazılmasını sağlar. Alan
tanımlayıcısından sonra yazılır.
1. FOR-NEXT
Eğer artım 1’er 1’er olacaksa STEP komutuna gerek yoktur. NEXT deyiminden
sonra kontrol değişkeni yazılmayabilir. İç içe açılan döngüler birbirini
kesmemelidir.
2. WHILE-WEND
WHILE … koşul….
……………………
……………………
WEND
16
Koşul sağlandığı sürece döngü devam eder.
IF’ den sonra yazılan koşul doğru ise THEN’ den sonraki işlem yapılır.
IF …koşul…THEN ….işlem…
Örnek:
2. IF – THEN – ELSE
Örnek:
Örnek:
17
INPUT “iki sayı giriniz”, a, b
IF a > b THEN PRINT “a > b” ELSE IF a = b THEN PRINT “a = b” ELSE
PRINT “a < b”
END
18
Arcsinh(x) LOG(x + SQR(x * x + 1))
Arccosh(x) LOG(x + SQR(x * x - 1))
Arctanh(x) LOG((1 + x) / (1 – x)) / 2
Arccotanh(x) LOG((1 + x) / (x – 1)) / 2
x sayısını en yakın küçük tam INT(x)
sayıya yuvarlar INT() = 2
INT() = -4
x sayısını en yakın tam sayıya CINT(x)
yuvarlar CINT() = 3
CINT() = -3
X sayısının ondalık kısmını atar FIX(x)
FIX() = 2
FIX() = -3
0 ile 1 arasında rasgele bir sayı RND(x)
üretir
19
karakteri x’inci kolona
gelecek şekilde
basılmasını veya kayıt
yapılmasını sağlar.
SPC(x) PRINT deyimi ile birlikte PRINT “A”; SPC(5);”B”
kullanılır, yazımı istenen =A B
iki değişken arasında x
boşluk bırakır.
DATE$ Sistem tarihini verir PRINT DATE$=
TIME$ Sistem saatini verir PRINT TIME$=
ASC(A$) A$ karakterinin ASCII ASC(“P”)
kodunu verir = 80
CHR$(x) ASCII kodu x olan CHR$(80)
karakteri verir = “P”
20
ALT SIRALI (İNDİSLİ) DEĞİŞKENLER
Bir değişkene değer atandığında, bu değer ilgili değişken ismi altında bellekte
saklanmakta ve program içinde işlem görmektedir. Aynı değişkene başka bir
değer atandığında eski değer silinmektedir. Aynı değişkenin önceki değerlerini
saklamanın yolu değişkeni alt sıralı tanımlamaktır.
DIM DEYİMİ
DIM vize(20)
Burada vize değişkenine 0'dan başlayarak 21 tane yer ayrılır. Ancak indisler
genellikle 1 den başladığı için
OPTION BASE 1
komutu ile 1'den başlar ve 20 yer ayrılır. Option Base komutu unutulursa
bellekte indisli değişkenler için 1 yer fazladan ayrılmış olur.
21
Basic’te DIM ifadesi tanımlanmadan altsıralı değişken kullanılırsa indisin
alabileceği maksimum değer 10'dur.
Bir değişkene DIM deyimiyle atanandan daha büyük indis kullanılırsa indis sınır
dışı" (subscript out of range) hata mesajıyla karşılaşılır.
DIM deyimiyle değişken için ayrılan yer eleman sayısından fazla ise hata olmaz
ancak bellekte gereksiz yer işgal edilmiş olur.
OPTION BASE 1
DIM x(8) X(1) X(2) X(3) X(4) X(5) X(6) X(7) X(8)
x(1)=5 5 8 12 20
x(2)=8
x(3)=12
x(4)=20
PRINT x(2)
END
Ekranda 8 görülür.
KURALLAR:
22
BASIC programlama dilinde, kullanıcı tarafından DEF FN deyimiyle
tanımlanmış fonksiyonlar ve GOSUB deyimiyle çağrılan alt programlar bu
amaçla kullanılır.
Örnek:
………….
GOSUB n
………….
………….
END
n ……….
…………
…………
RETURN
Ana program için geçerli olan tüm kurallar alt program için de geçerlidir.
Değişkenler ortak olarak kullanılmaktadır. Yani bir değişkenin değeri hem ana
hem de alt programda aynıdır. Bir ana programda birden fazla alt program
olabileceği gibi bir alt programın içinde de başka bir alt program olabilir.
23
QBASIC'te program listesi dışında da alt program yazılabilmektedir. Edit
menüsünden New Sub komutu seçilerek yeni bir alt program oluşturulabilir.
CALL Komutu:
Ayrı yazılan alt programları program içinde çağırmak için kullanılır. DECLARE
komutunda belirtilen değişkenlerin tamamı CALL komutunda bulunmalıdır.
Ayrı yazılan bir alt program END SUB komutuyla sona eriyordu ve ana
program CALL komutunun altından devam ediyordu. EXIT SUB komutuyla alt
program tamamlanmadan ana programa dönülebilir.
24
verilerin daha önceden açılmış dosyalardan okutulup, elde edilen sonuçların da
yine başka dosyalara yazdırılması daha uygun olmaktadır.
Formatlı yazdırmada
Örnek:
OPEN “funduszeue.info” FOR INPUT AS #1 OPEN "I", #1, "funduszeue.info"
OPEN “sonuc.cık” FOR OUTPUT AS #2 OPEN "O", #2, "sonuc.cık"
INPUT #1, a,b
c=a+b
PRINT #2, c
Kütüklerin Kapatılması
25
CLOSE #kütük no, #kütük no, ……
Bir kütüğün durumu hakkında, yani bir okuma işlemi sırasında kütüğün sonuna
gelinip gelinmediğinin veya program içerisinde açılan kütüklerden kaç kayıt
okunduğunun veya kaç kayıt yazıldığının veya kütüğün kaç kayıttan
oluştuğunun bilinmesi isteniyorsa
SCREEN Komutu:
SCREEN Mod
26
Mod Tanım
0 Yazı modu, grafik çizilemez
1 x piksel, 4 renk, 25 satır 40 kolon
2 x piksel, 2 renk (siyah, beyaz), 25 satır 80 kolon
7 x piksel, 16 renk, 25 satır 40 kolon
8 x piksel, 16 renk, 25 satır 80 kolon
9 x piksel, 16 renk
10 x piksel, 9 gri ton
11 x piksel, 2 renk
12 x piksel, 16 renk
13 x piksel, renk, 25 satır 40 kolon
(x)
(0,0) (,0)
(y)
Screen 13
(0,) (,)
27
LINE Komutu:
Çizgi çizmek için kullanılır. (x1,y1) ve (x2,y2) noktaları arasında bir çizgi
çizmek için
CIRCLE Komutu:
Çember çizmek için kullanılır. Merkezi (x,y) yarıçapı R olan bir çemberi
çizdirmek için
Bir çemberin tamamını değil de bir kısmını çizdirmek için renk parametresinden
sonra -2π ve 2π arasında değişen başlangıç ve bitiş parametreleri kullanılır.
PAINT Komutu:
Ekran üzerinde belirtilen bir noktadan başlayarak ekranı belirtilen renge boyar.
Kapalı bir alanla karşılaşıncaya kadar bu işlem sürer.
28
PAINT(,),4 (Çemberin dışını boyar)
BEEP Komutu:
SOUND Komutu:
BEEP komutu hep aynı sesi çıkardığı için farklı uyarı mesajları için yeterli
olmayabilir. SOUND komutu iki parametreyle kullanılır. Birincisi frekansı,
ikincisi ise uzunluğu verir.
SLEEP Komutu:
Programın belirtilen sürede veya bir tuşa basılıncaya kadar durmasını sağlar.
SLEEP Zaman
Burada zaman saniye cinsinden bir tamsayıdır. Zaman belirtilmezse bir tuşa
basılıncaya kadar bekler.
29
com
Programlamaya Giriş
Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler
dizisi.
Önceki bölümde bir problemin çözümü ile ilgili teknikler sunmuştuk. Bir problemi
bilgisayar ile çözmek için geliştireceğimiz programın yazımında izleyeceğimiz adımlar:
i) Problemin ne olduğunu kavra. Çözüm için gereksinimleri belirle.
ii) Problemin girdilerini, çıktılarını ve diğer kısıtlama ve gereksinimleri belirle ( bilgilerin
giriş ve çıkış biçimlerinin nasıl olacağına kadar).
iii) Problemin çözümünü veren algoritmayı yaz.
iv) Algoritmayı bir programla dili ile yaz.
v) Programın doğru çalışıp çalışmadığını test et. Bu testi değişik veriler (girdiler) için
tekrarla.
Problem çözmede, soruna hemen girişmek yerine, dikkatli ve sistematik yaklaşım ilke
olmalıdır. Problem iyice anlaşılmalı ve mümkün olduğu kadar küçük parçalara
ayırılmaladır.
Descartes tarafından "Discourse on Method" isimli kitabında anlatılan problem çözme
teknikleri;[2]
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ş yavaş
daha zor ve karmaşık olanlara doğru ilerleyiniz.
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.
Algoritmalar
Not: Bir program için 4. özellik geçerli değil. işletim sistemleri gibi program sonsuza dek
çalışırlar .
1
BERKCAN BİLGİSAYAR funduszeue.info
funduszeue.info : 20'den 50'ye kadar olan sayıların toplamını bulan algoritma yazınız.
Çözüm
A0 --> Başla
A1 --> S=20 : T=0 (Sayı 20 T değeri 0 ile başla)
A2 --> TßT+S (T'ye sayıyı ekle T'yi göster.)
A3 --> S=S+1 (Sayıyı bir artır.)
A4 --> S<50 ise A2'ye git. (Eğer sayı 50'den küçük ise Adım 2'ye git)
A5 --> T'yi göster. (T'nin değerini göster.)
A6 --> Dur
funduszeue.info : Klavyeden girilen 10 adet sayıdan çift sayıların toplamının tek sayıların
toplamına oranını bulan algoritma yazınız.
Çözüm:
A0 --> Başla
A1 --> S=0 : T=0 : Ç=0 (Sayı, tek ve çift sayılar 0 değerini alsın)
A2 --> Sayı? (Sayıyı giriniz)
A3 --> (-1)sayı=1 ise Ç=Ç+Sayı (Eğer -1'in sayı üssü 1 sayısına eşitse sayıyı çift sayıya
ekle ve çift sayıyı bul.)
A4 --> (-1)sayı=+1 ise T=T+Sayı (Eğer -1'in sayı üssü +1 sayısına eşitse sayıyı tek
sayıya ekle ve tek sayıyı bul.)
A5 --> S=S+1 (Sayaça 1 ekle ve sayacı göster)
A6 --> S<10 ise A2'ye git. (Eğer Sayaç 10'dan küçük ise Adım 2'ye git.)
A7 --> V ß Ç/T (Çift sayıların toplamını tek sayıların toplamına böl.)
A8 --> V'yi göster. (Bölme sonucunu göster.)
A9 --> Dur
2
BERKCAN BİLGİSAYAR funduszeue.info
funduszeue.info : Klavyeden girilen iki sayıdan en büyüğünü bulup gösteren algoritmayı yazınız.
Çözüm :
A0 --> Başla
A1 --> S1=? : S2=? (İlk sayıyı gir ; ;İkinci sayıyı gir.)
A2 --> S1>S2 ise git A4 (Sayı 1 sayı 2'den küçükse Adım 4'e git.)
A3 --> S2>S1 ise git A5 (Sayı 2 sayı 1'den küçükse Adım 5'e git.)
A4 --> S1'i göster git A6 (sayı 1 değerini göster ve işlemi durdur)
A5 --> S2'yi göster. (Sayı 2 değerini göster)
A6 --> Dur
9. Soru: Bilgisayara girilen bir sayıya kadar olan çift sayıların ortalamasını veren
programın algoritmasını döngü kullanarak yazın.
1. Başla
2. ÇS = 0
3. ÇT = 0
4. Oku S
5. D = 2, S, 2
6. ÇT = ÇT +D, ÇS = ÇS + 1
3
BERKCAN BİLGİSAYAR funduszeue.info
7. DS
8. ÇORT = ÇT/ÇS
9. Yaz ÇORT
Dur
Soru: Bilgisayara sayı girilmekte. Bu sayı içerisinde – arasında
bulunan sayıların adedini bulan programın algoritmasını döngü kullanarak yazın.
1. Başla
2. I = 0
3. D = 1,
4. Oku S
5. Eğer S < ise git 8
6. Eğer S > ise git 8
7. I = I + 1
8. DS
9. Yaz I
Dur
Soru: 1’den 10’a kadar olan sayıların çarpım tablosunu yazan programın
algoritmasını döngüyle yazın.
1. Başla
2. D1 = 1, 10
3. D2 = 1, 10
4. Ç = D1 X D2
5. Yaz Ç
6. D2S
7. D1S
8. DUR
Boyutlu Değişkenler
Boyutlu değişken bilgisayarda indisi olan değişkendir. Boyutlu değişken indisi kullanarak
numaralandırır ve değişkenin bütün değerlerini bellekte tutar.
Örnek:
S (I)
S (1) = 7
S (2) = 8
S (3) = 9
Soru: bilgisayara 10 elemanlı bir dizi girilmektedir. Elemanların ortalamasını bulan
programın algoritmasını yazın.
1. Başla
2. Aç boyut D (10)
3. Dön = 1, 10
4. Oku D (Dön)
5. Dön S
6. Top = 0
7. Dön = 1, 10
8. Top = Top + D (Dön)
9. Dön S
Ort = Top / 10
Yaz ORT
Dur
4
BERKCAN BİLGİSAYAR funduszeue.info
Soru: Bilgisayara girilen sayılı dizi içerisinde en büyük, en küçük sayıları bulan
ve dizideki satır numaralarını veren programın algoritmasını yazın.
1. Başla
2. Aç boyut D ()
3. Dön = 1,
4. Oku D (Dön)
5. Dön S
6. EB = 0, EK =
7. Dön = 1,
8. Eğer D(Dön) < EK ise, EK = D (Dön), EKS = Dön
9. Eğer D(Dön) > EB ise, EB = D (Dön), EBS = Dön
Dön S
Yaz EK, EB, EKS, EBS
Dur
Sıralama (Sorting)
Sıralama yapabilmek için değişkenin boyutlu olması gerekir. Ancak değişken tek boyutlu
olmalıdır.
Soru: Bilgisayara girilen 10 sayıyı küçükten büyüğe sıralayan programın
algoritmasını yazın.
1. Başla
2. Aç boyut D (10)
3. I = 1, 10
4. Oku D (I)
5. IS
6. I = 1, 9
7. J = I + 1, 10
8. Eğer D(I) > d(J) ise,
BOŞ = D (I)
D (I) = D (J)
D(J) = BOŞ
9. JS
IS
I = 1, 10
Yaz D (I)
IS
DUR
Soru: Bilgisayara girilen bir sayı hem dizinin boyutunu belirler, hem de dizinin ilk
elemanını oluşturur. Bu diziyi oluşturan ve yazan programın algoritmasını yazın.
1. Başla
2. Oku S
3. Aç boyut D (S)
4. D (1) = S
5. I = 2, S
6. Oku D (I)
7. IS
8. I = 1, S
9. Yaz D (I)
Dur
5
BERKCAN BİLGİSAYAR funduszeue.info
6
BERKCAN BİLGİSAYAR funduszeue.info
7
BERKCAN BİLGİSAYAR funduszeue.info
Değişkenler
A:Birinci sayıyı,
B:İkinci sayıyı,
Algoritma
Adım 1-Başla
Adım 6-Dur
Akış Şeması
8
BERKCAN BİLGİSAYAR funduszeue.info
Örnek 3:İki sayının farkını ve bölümünü bulup yazıcı ile yazan algoritma ve akış şeması
şöyledir.
Değişkenler
A:Birinci sayı
B:İkinci sayı
Algoritma
Adım 1-Başla
9
BERKCAN BİLGİSAYAR funduszeue.info
Adım 4-D=A-B
Adım 5-E=A/B
Adım 8-Dur
Akış Şeması
ÖRNEK 4:İki sayının toplamlarının karesini ve küpününü hesaplayıp yazan akış şeması
şöyledir.
10
BERKCAN BİLGİSAYAR funduszeue.info
Değişkenler
BIRSA:Birinci sayıyı,
IKISA:İkinci sayıyı,
TO:Toplamı,
TOKA:Toplamın karesini,
Algoritma
Adım 1-Başla
Adım 3-TO=BIRSA+IKISA
TOKA=TO^2
TO^3
Adım 5-DUR
Akış Şeması
11
BERKCAN BİLGİSAYAR funduszeue.info
ÖRNEK 5:Terminalden okunan bir sayının 10 fazla ve 10 eksiğini bulup yazan programın
algoritma ve akış şeması şöyledir.
Değişkenler
SAYI=Okunacak sayı
F10=Sayının 10 fazlası
Algoritma
Adım 1-Başla
Adım 3-F10=SAYI+10
12
BERKCAN BİLGİSAYAR funduszeue.info
Adım 4-E10=SAYI
Adım 5-DUR
Akış Şeması
ÖRNEK 6:A ve B gibi iki sayıdan büyüğünü printerle yazdıran algoritma ve akış şeması
şöyledir.
Algoritma
Adım 1-Başla
13
BERKCAN BİLGİSAYAR funduszeue.info
Adım 8-DUR
Akış Şeması
ÖRNEK kişilik bir sınıfta arası her yaş grubunda kaç öğrencinin
bulunduğunu belirleyip yazan programın akış çizelgesi şöyledir.
Değişkenler
OSA:Öğrenci sayısını,
14
BERKCAN BİLGİSAYAR funduszeue.info
Algoritma
Adım 1-Başla
Adım I18,I19,I20,I21,I22,yaz
Adım DUR
Akış Şeması
15
BERKCAN BİLGİSAYAR funduszeue.info
ÖRNEK kişilik bir sınıfta arası her yaş grubunda kaç öğrencinin
bulunduğunu belirleyip yazan programın akış çizelgesi şöyledir.
Değişkenler
ONOT:Öğrencinin notunu,
INOT:Notların toplamını,
NORT:Notların ortalamasını,
Algoritma
Adım 1-Başla
16
BERKCAN BİLGİSAYAR funduszeue.info
Adım 2-INOT=0
Adım 3-ISAYI=0
Adım 5-INOT=INOT+ONOT
Adım 6-ISAYI=ISAIY+1
Adım 8-NORT=INOT/3
Adım DUR
Görüldüğü gibi, Adım 2 ve 3'te INOT ve ISAYI ismi ile iki değişken için bellekte yer
ayrılmış,ayrılan yerlerede ilk değer olarak sıfır atanmıştır.
Adım 4'te herhangi bir öğrencinin sınavdan almış olduğu notun değeri okutulmaktadır.
Adım 5'tenotların toplamının bulunması işlemi yer almaktadır.İşlemde ONOT,INOT ile
toplanmakta ve bulunantoplamda INOT'a aktarılmaktadır.
Adım 6'da öğrenci sayısını gösteren ISAYI değişkeninin değeri,"bir öğrenci için işlem
yapıldı"anlamında 1 arttırılmaktadır.
Adım 7'de ISAYI'nın değeri 3(toplam öğrenci sayısı) ile karşılaştırılmaktadır.Eğer sayı<3
ise Adım 4'e dönülmektedir.Eğer işlem 3 öğrenci içinde yapılmışsa yani ISAYI=3 ise ya
da ISAYI>3 ise ortalamanın hesaplandığı Adım 8'e geçfunduszeue.infoım 9 da,bulunan
ortalamanın yazılması ile ilgilidir.
Akış Şeması
17
BERKCAN BİLGİSAYAR funduszeue.info
Akış şeması incelendiğinde not okuma, toplam hesaplama ve öğrenci sayısını 1 arttırma
işlemlerinin 3 kez tekrarlandığı anlaşılmaktadır.Eğer program öğrenci için yapılmış
olsaydı,sözü edilen işlemler kez tekrarlanacaktı. Üç öğrencinin notlarının, sırası ile
50,60 ve 70 olduğunu varsayalıfunduszeue.info durumda akış şemasının işlemesi şöyle olacaktır
Akış Şeması
18
BERKCAN BİLGİSAYAR funduszeue.info
Akış Şeması
ÖRNEK 9:
N sayısını ekrandan okutarak faktöriyelini hesaplayan ve yazan akış şeması şöyledir.
Değişkenler
NFAK=1*2**N
Algoritma
Adım 1-Başla
Adım 3-NFAK=1
Adım 4-ISAYI=1
Adım 5-ISAYI=ISAYI+1
19
BERKCAN BİLGİSAYAR funduszeue.info
Adım 6-NFAK=NFAK*ISAYI
Adım 9-Dur
Değişkenler
INO:öğrencinin numarasını,
AD:öğrencinin ismini,
VIZEvize sınavını,
VIZEvize sınavını,
VIZEvize sınavını,
20
BERKCAN BİLGİSAYAR funduszeue.info
Algoritma
Adım 1-Başla
Adım 2-INO,AD,VIZE1,VIZE2,VIZE3,oku
Adım 7-DUR
ÖRNEK Bir okulda bulunan 10 sınıftaki 30'ar öğrencinin herbirinin 12 şer dersten
aldıkları notların ortalamasını bulan ve öğrenci ismi ile not ortalamasını yazan
programın,algoritması ve akış şeması şöyledir:
21
BERKCAN BİLGİSAYAR funduszeue.info
Değişkenler
ISS:Sınıf sayacı,
IOS:Öğrenci sayacı,
DN:Ders notu,
OGAD:Öğrencinin adı
Algoritma
Adım 1-Başla
Adım 2-SS=0
Adım 3-IOS=0
Adım 4-DNS=DNT=0
22
BERKCAN BİLGİSAYAR funduszeue.info
Adım Dur
ÖRNEK elemanlı bir veri grubunda bulunan pozitif,sıfır ve negatif değerlerin
sayısını bulup yazan programın algoritması ve akış şeması şöyledir:
23
BERKCAN BİLGİSAYAR funduszeue.info
Değişkenler
Algoritma
Adım 1-Başla
Adım 2-SS=PSS=NSS=SSS=0
Adım 4-SS=SS+1
24
BERKCAN BİLGİSAYAR funduszeue.info
Değişkenler
JNO:Öğrencinin numarası
AD:Öğrencinin adı
SAD:Öğrencinin soyadı
25
BERKCAN BİLGİSAYAR funduszeue.info
Algoritma
Adım 1-Başla
Adım 6-Dur
26
çamaşır makinesi ses çıkarması topuz modelleri kapalı huawei hoparlör cızırtı hususi otomobil fiat doblo kurbağalıdere parkı ecele sitem melih gokcek jelibon 9 sınıf 2 dönem 2 yazılı almanca 150 rakı fiyatı 2020 parkour 2d en iyi uçlu kalem markası hangisi doğduğun gün ayın görüntüsü hey ram vasundhara das istanbul anadolu 20 icra dairesi iletişim silifke anamur otobüs grinin 50 tonu türkçe altyazılı bir peri masalı 6. bölüm izle sarayönü imsakiye hamile birinin ruyada bebek emzirdigini gormek eşkiya dünyaya hükümdar olmaz 29 bölüm atv emirgan sahili bordo bereli vs sat akbulut inşaat pendik satılık daire atlas park avm mağazalar bursa erenler hava durumu galleria avm kuaför bandırma edirne arası kaç km prof dr ali akyüz kimdir venom zehirli öfke türkçe dublaj izle 2018 indir a101 cafex kahve beyazlatıcı rize 3 asliye hukuk mahkemesi münazara hakkında bilgi 120 milyon doz diyanet mahrem açıklaması honda cr v modifiye aksesuarları ören örtur evleri iyi akşamlar elle abiye ayakkabı ekmek paparası nasıl yapılır tekirdağ çerkezköy 3 zırhlı tugay dört elle sarılmak anlamı sarayhan çiftehan otel bolu ocakbaşı iletişim kumaş ne ile yapışır başak kar maydonoz destesiyem mp3 indir eklips 3 in 1 fırça seti prof cüneyt özek istanbul kütahya yol güzergahı aski memnu soundtrack selçuk psikoloji taban puanları senfonilerle ilahiler adana mut otobüs gülben ergen hürrem rüyada sakız görmek diyanet pupui petek dinçöz mat ruj tenvin harfleri istanbul kocaeli haritası kolay starbucks kurabiyesi 10 sınıf polinom test pdf arçelik tezgah üstü su arıtma cihazı fiyatları şafi mezhebi cuma namazı nasıl kılınır ruhsal bozukluk için dua pvc iç kapı fiyatları işcep kartsız para çekme vga scart çevirici duyarsızlık sözleri samsung whatsapp konuşarak yazma palio şanzıman arızası