algoritma ve programlama pdf / ALGORİTMA DERS Notları | PDF

Algoritma Ve Programlama Pdf

algoritma ve programlama pdf

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

Algori̇tma Geli̇şti̇rme Ve Basic Programlama Di̇li̇

Bir bilgisayar sistemi donanım ve yazılım olmak üzere iki bölümden oluşur.

Donanım (Hardware): Bilgisayarın fiziksel ve elektronik yapısını oluşturan


ana ve çevre birimlerinin tümüne donanım denir. Donanım birimleri görev
alanlarına göre 3 gruba ayrılır. Giriş birimleri (klavye, fare vb.), çıkış birimleri
(ekran, yazıcı, çizici, hoparlör vb.) ve merkezi işlem ve bellek ünitesi (anakart,
merkezi işlemci, harddisk, RAM vb.)

Donanım

Bellek Birimleri

Giriş Çıkış
Birimleri Birimleri

İletişim Merkezi İşlem İletişim


(Uzak, yerel) Ünitesi (Uzak, Yerel)

Yazılım (Software): Donanım birimlerini istenen işlere yöneltip bir çalışma


düzeni içerisinde kullanabilmek için gerekli tüm programlardan ve veri
yapılarından oluşur.

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.

İşlem süreci Bilgi


Veriler
(Bilgi İşlem)

Bir Problemin Bilgisayarla Çözülebilmesi İçin:

• Problem iyi tanımlanabilmeli ve bütün ayrıntıları ile önceden bilinmeli


• Problemi çözebilmek için bir sayısal hesap yöntemi bilinmeli
• Problem, çözümde kullanılacak programın ve bilgisayarın özelliklerine
uymalı
• Bilgisayarla çözüm diğer çözümlerden daha güvenilir ve ekonomik
olmalıdır.
• Yukarıdaki koşulları sağlayan her problem bilgisayarla çözülebilir.

Programlamanın aşamaları şunlardır:

• Algoritma (hesap düzeni)


• Akış diyagramı
• Kodlama
• Programın kontrolü (sınama)
• Çıktılar ve yorumlanması
• Programın yeni koşullara göre geliştirilmesi (güncelleme)

2
ALGORİTMA GELİŞTİRME
VE
BASIC PROGRAMLAMA DİLİ

A – Programlamaya Giriş

1- Program

Program, belirli bir işlemi gerçekleştirmek için bilgisayara iletilen komutlar


dizisidir.

2- Programlama dilleri

Programlama dili, programcı ile bilgisayar arasındaki iletişimi sağlamaya


yarayan araçtır. Programlama dillerinin komutları İngilizce kelimelerdir.
Örneğin; ekrana yazı yazdırmak için BASIC’te Print, Pascal’da Writeln, C’de
Printf komutları kullanılır.

Programlama dilleri üç gruba ayrılır:


Düşük düzeyli diller: Makine dilleridir (ASSEMBLY)
Orta düzeyli diller: Makine dillerine yakın dillerdir (C)
Yüksek düzeyli diller: Konuşma diline yakın dillerdir. (BASIC,
FORTRAN vb.)

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

a) Matematik İşlemler: Bilgisayarda en çok kullanılan işlemlerdir.

Matematik işlemlerin bilgisayar programlarındaki karşılıkları

İşlem Matematik Bilgisayar


Toplama a+b a+b
Çıkarma a-b a-b
Çarpma a.b a*b
Bölme a÷b a/b
b
Üs alma a a^b

İşlem öncelik sıraları önemlidir ve matematiksel işlemler programa aktarılırken


öncelik sıralarına dikkat edilmelidir. İşlem sıralamasında yapılan hata derleyici
tarafından fark edilemeyeceği için sonucun yanlış çıkmasına neden olur.
Aşağıdaki tabloda işlem öncelik sıraları görülmektedir.
Öncelik
İşlem Bilgisayar
Sırası
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

Aynı önceliğe sahip işlemler soldan sağa doğru yapılır.


Matematik gösterim Programda gösterim (kodlama)
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 − 2 (a + b) ^ (1 / 2) – 2 * a * b / (b ^ 2 – 4 * a * c)
b − 4ac
a +b-c 2(ab + ac + bc) (a + b - c) / (a ^ 2 + b ^ 3) ^ (1 / 2) –

a 2 + b3 9
2 * (a * b + a * c + b * c) / 9
abc
3
a 2 + b2 +
b (a ^ 2 + b ^ 2) ^ (1 / 3) + a * b * c / (a + b / (c – b / a
a+
b ^ 3)^(1 / 2))
c−
a3

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

Örnek: a=9 ve b=6 için


İfade Matematik eşdeğeri Sonuç
b1
a+b^1/2 a+ 12
2
a + b ^ (1 / 2) a+ b
(a + b) 1

(a + b) ^ 1 / 2
2
(a + b) ^ (1 / 2) a +b

b) Karşılaştırma İşlemleri: İki değerin birbirine göre büyüklük,

küçüklük veya eşitlik durumlarını işlemlerdir.


İşlem Anlamı
sembolü
= Eşittir
< > veya > < Eşit değildir
> Büyüktür
< Küçüktür
> = veya = > Büyük eşittir
< = veya = < Küçük eşittir
c) Mantıksal İşlemler: Mantıksal işlem operatörleri, hem
karşılaştırma hem de matematik işlemlerde kullanılır. Karşılaştırma
ifadelerinde birden fazla koşulun sağlanması istenebilir.

Mantıksal İşlem Komut


VE AND
VEYA OR
DEĞİL NOT

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.

Mantıksal işlemlerde de matematiksel işlemlerde olduğu gibi işlem öncelik


sıraları vardır.

Sıra İşlem Komut


1 Parantez içindeki (…..)
işlemler
2 DEĞİL NOT
3 VE AND
4 VEYA OR

ALGORİTMA GELİŞTİRME

Bir problemin çözümünde izlenecek olan adımlar algoritma olarak adlandırılır.


Algoritmanın özel şekillerle gösterilmesine akış diyagramı denir.

Problemin algoritması hazırlanabiliyorsa bu problem bütün programlama


dillerinde yazılabilir.

Program yazarken izlenecek yol:


a. Programın algoritması hazırlanır, istenirse akış diyagramı çizilir.

6
b. Algoritma, herhangi bir programlama diliyle yazılır. (Kodlama)

c. Program çalıştırılır. (Run)

d. Derleyicinin belirttiği hatalar düzeltilir. (Syntax Error)

e. Program deneme verileriyle çalıştırılır. Böylece derleyicinin


bulamadığı hatalar yakalanmaya çalışılır. (Debug)

Algoritmalarda Kullanılan Özel Terimler

Değişken: Programın değişik aşamalarında farklı değerler alabilen bilgi


alanlarıdır. Değişken isimlendirmesinde temsil ettiği ifadeyi çağrıştıracak
şekilde olması programın anlaşılırlığını arttırır. Örneğin öğrencilerin ismi için
“ad”, “adsoyad”, “isim”; öğrencilerin aldığı notlar için “vize”, “final” gibi
değişken isimleri uygun olabilir.

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.

Aktarma: Bir değişkene değer aktarılması işlemidir.

Değişken İsmi = Değer

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.

Sayaç: Değişkene başka bir değer aktarıldığında eski değerin silinmesi


prensibine göre değişkenin değerinin düzenli olarak artması veya azalması
işlemine sayaç denir.

Yeni Sayaç Değeri = Eski Sayaç Değeri ± Artım

Örnek:
X = X + 3 (üçer üçer artan bir sayaç)
S = S – 5 (beşer beşer azalan bir sayaç)

Sayaç oluşturulurken, sayaç değişkenine bir başlangıç değeri verilir. BASIC


dilinde başlangıç değeri verilmemesi durumunda 0 olur.

Örnek: Aşağıdaki algoritmada 1 ve 5 arasındaki sayılar ekrana


yazdırılmaktadır.
7- Dur
1- Başla
2- S = 0
3- Eğer S = 5 ise git 7 Eski S Yeni Ekran
4- S = S + 1 S
0 0+1=1 1
5- Yaz S
1 1+1=2 2
6- Git 3 2 2+1=3 3

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.

Yeni Toplam Değeri = Eski Toplam Değeri + Sayı

Örnek: 5 sayıdan oluşan bir dizinin ortalaması probleminin algoritması


gösterilmektedir.

1. Başla DUR


2. Toplam = 0
3. S = 0
4. EĞER S = 5 ise GİT 9 Eski Yeni Sayı Eski Yeni
5. S = S + 1 S S Toplam Toplam
6. Sayı GİR 0 0+1=1 7 0 0+7=7
1 1+1=2 3 7 7+3=10
7. Toplam = Toplam + Sayı 2 2+1=3 45 10 10+45=55
8. GİT 4 3 3+1=4 32 55 55+32=87
4 4+1=5 8 87 87+8=95
9. Ortalama = Toplam / S
YAZ Ortalama Ortalama = 95 / 5 = 19
Ardışık Çarpma: Başlangıç değeri 1 olan çarpım sayacıdır.

Yeni Çarpım Değeri = Eski Çarpım Değeri * Sayı

Örnek: 5 faktöryeli ( 5! ) hesaplayan algoritmayı yazınız.

1. Başla 5. S = S + 1
2. Faktor = 1 6. Faktor = Faktor * S
3. S = 0 7. GİT 4

4. EĞER S = 5 ise GİT 8 8. YAZ Faktor

9
9. DUR

Eski Yeni Eski Yeni


S S Faktor Faktor
0 0+1=1 1 1*1=1
1 1+1=2 1 1*2=2
2 2+1=3 2 2*3=6
3 3+1=4 6 6*4=24
4 4+1=5 24 24*5=

10
AKIŞ DİYAGRAMLARI

Algoritmanın özel şekillerle çizilmesi “akış diyagramı” olarak adlandırılır.

İşlem Şekil

Başla / Dur

Veri girişi

Atama

Döngü

Karar

11
Çıktı, Yazdırma

Bağlantı

İşlem akış yönü

BASIC PROGRAMLAMA DİLİ

BASIC kelimesi, “Beginner’s All-Purpose Symbolic Instruction Code” (Yeni


Başlayanlar İçin Tüm Amaçlara Yönelik Sembolik Öğretim Kodu) kelimelerinin
baş harflerinden üretilmiştir. yılında geliştirilmiştir. Bilgisayarda işlenen
veriler iki çeşittir. Sayısal (nümerik) ve karakter (alfanümerik). Sayısal veriler,
sayısal bir değeri olan tamsayılar, ondalıklı sayılar vb. gibi verilerdir. Karakter
veriler ise sayısal değeri olmayan harfler, kelimeler ve diğer karakterlerdir.

BASIC Dilinde Kullanılan Değişken Türleri:

BASIC’te işlenen bilgileri temsil eden değişkenlerin yanına yazılan sembollerle


bilgi tipi belirtilir.

Değişken Türü Belirtme Sembolü


Tamsayı %
Tek duyarlıklı ondalık sayı !
Çift duyarlıklı ondalık sayı #
Karakter $

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.

Tek duyarlıklı: , , E-3, !


Çift duyarlıklı: , D, #, 56#

Tek duyarlıklı sayılar için ( ! ) belirteci kullanılmayabilir. Programın başında,


programda kullanılacak değişkenlerin türü belirtilirse her seferinde tür belirteci
kullanılmayabilir.

DEFSTR Karakter tür belirteci


DEFINT Tamsayı tür belirteci
DEFSNG Tek duyarlıklı ondalık sayı tür belirteci
DEFDBL Çift duyarlıklı ondalık sayı tür belirteci

Karakter değişkenler için değişken isminden sonra ( $ ) belirteci konur ve


karakter tırnak (“ “ ) içinde yazılır. Örneğin; isim$ = “Ali” gibi.

BASIC’teki Veri Giriş Komutları

1. INPUT

Programın çalışması sırasında klavyeden programa veri girilmesini sağlar.

INPUT değişken1, değişken2, ……..

INPUT “mesaj”, değişken1, ….

Ö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
……..

Bu örnekte eğer a için bir karakter girilirse hata mesajı alınır.

Örnek:
……..
INPUT “iki sayı giriniz”, a$,b$
PRINT “girilen sayıların toplamı=”;a$+b$
…………

Burada 5 ve 6 değerleri a$ ve b$ için girilirse program a ve b birer karakter


değişken olduğu için onları sayı olarak değil sadece karakter olarak algılar ve 11
yerine 56 sonucunu verir. Buradaki + operatörü toplama işlemi yerine
karakterleri birleştirme işlemini yapar.

2. READ-DATA VE RESTORE

Değişkenlere program içinden bilgi girilmesini sağlar. “READ” deyiminden


sonra girilen değişkenlerin değerleri “DATA” deyiminden sonra sırayla girilir.

READ değişken 1, değişken 2, …..


DATA değişken 1, değişken 2, …..

READ deyimleri ile istenen veri sayısı ile DATA deyimleri ile girilen veri sayısı
eşit olmalıdır.

Eğer READ deyiminden sonra verilen yeni değişkenlere de DATA’daki eski


değerler verilmek isteniyorsa RESTORE komutu kullanılır.

READ A, B
RESTORE 50
READ C, D
PRINT A, B, C, D
50 DATA 3, 11

Programı sonucunda elde edilen çıktı: 3 11 3 11 şeklinde olur. Böylece


READ deyimleriyle istenen veri sayısı DATA deyimiyle girilenlerden daha
fazla olduğu halde hata mesajıyla karşılaşılmaz.

14
BASIC’teki Çıkış/Yazdırma Komutları

1. PRINT

Değişken değerlerinin ekrana yazılmasını sağlar.

PRINT değişken
PRINT “mesaj” değişken

Birden fazla değişken ( , ) veya ( ; ) kullanılarak ayrılır. BASIC derleyicileri 40


veya 80 karakter genişliğindeki ekranı 14 , 15 karakterlik sütunlara böler. Ayraç
olarak ( , ) kullanılırsa değerler sütun başlarından başlayarak yazılır. Ayraç
olarak ( ; ) kullanılırsa değerler bitişik olarak yazılır.

2. PRINT USING

Ekranda veya yazıcıda düzenli (formatlı) gösterim sağlar.

PRINT USING “Alan tanımlayıcı” ; Değişken Listesi


Alan tanımlayıcıları çıktının hangi düzende olacağını belirtir. Karakter ve
sayısal değerler için farklı alan tanımlayıcıları vardır.

a) Karakter Alan Tanımlayıcıları

! : Değişken listesinde yer alan ifadelerin sadece ilk karakterlerinin yazılmasını


sağlar.

READ A$, B$, C$


PRINT USING “!”;A$, B$, C$
DATA İstanbul, Teknik, Üniversitesi

Ekranda İTÜ görünür.

\ n tane boşluk \ : Değişken listesindeki karakterlerin (n+2) kısmını yazar.

b) Sayısal Alan Tanımlayıcıları

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.

. : Yazdırılacak sayının ondalık kısmını ayırmak için kullanılır.

** : Tanımlanan alan değişken değerinden büyük ise bu boşlukların yıldızlarla


doldurulmasını sağlar. Ayrıca iki karakterlik ek alan oluşturur.

PRINT USING "**##.###";a,b

$$ : Yazdırılacak değerlerin başına ( $ ) işaretinin yazılmasını sağlar. Ayrıca iki


karakterlik ek alan oluşturur.

**$ : Sayıların başına ( $ ) işaretinin yazılmasını ve boşlukların ( * ) dolmasını


sağlar. Üç karakterlik ek alan oluşturur.

, : 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.

BASIC’teki Döngü Komutları

1. FOR-NEXT

FOR Kontrol değişkeni = Başlangıç TO Bitiş STEP Artım


……………
……………
NEXT Kontrol değişkeni

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.

BASIC’teki Karar Komutları


1. IF-THEN

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:

INPUT “İki sayı giriniz”, a , b


IF a > b THEN PRINT “a > b”
IF a = b THEN PRINT “a = b”
IF a < b THEN PRINT “a < b”
END

2. IF – THEN – ELSE

IF – THEN komutunda koşul sağlanmadığı zaman program bir alt satırdan


devam ediyordu. Ancak ELSE komutu ile koşul sağlanmadığı zaman yapılacak
işlem belirtilebilir.

IF …koşul… THEN …koşul sağlanırsa yapılacak işlem… ELSE … koşul


sağlanmayınca yapılacak işlem …

Örnek:

INPUT “iki sayı giriniz” , a , b


IF a < b THEN PRINT “a < b” ELSE PRINT “a = b veya a > b”

3. IF – THEN - ELSE IF – THEN – ELSE

Eğer ikiden fazla koşul varsa bu yapı kullanılabilir.

IF …koşul 1… THEN …koşul 1 sağlanırsa yapılacak işlem… ELSE IF …koşul


2 … THEN …koşul 2 sağlanırsa yapılacak işlem… ELSE …tüm koşullar
yanlış ise yapılacak işlem

Ö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

Bazı Matematik Fonksiyonların BASIC Karşılıkları

Matematiksel Fonksiyon BASIC Karşılığı


ABS(x)
x SQR(x)
sgn(x) SGN(x)
x > 0 ise sgn(x) = 1
x = 0 ise sgn(x) = 0
x < 0 ise sgn(x) = -1
ex EXP(x)
Ln(x) LOG(x)
Log(x) LOG(x)/LOG(10)
Sin(x) SIN(x)
Cos(x) COS(x)
Tan(x) TAN(x)
Cotan(x) 1 / TAN(x)
Arctan(x) ATN(x)
Arcsin(x) ATN(x / SQR(1 – x * x))
Arccos(x) - ATN(x / SQR(1 – x * x))
Arccotg(x) – ATN(x)
Sinh (x) (EXP(x) – EXP(-x)) / 2
Cosh(x) (EXP(x) + EXP(-x)) / 2
Tanh(x) (EXP(x) – EXP(-x)) / (EXP(x) + EXP(-x))
Coth(x) (EXP(x) + EXP(-x)) / (EXP(x) - EXP(-x))

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

BASIC’teki Bazı Karakter Fonksiyonlar


Fonksiyon İşlevi Örnekler
RIGHT$(A$,n) A$ değişkeninde sağdan RIGHT$(“pamukkale”,4)
başlayarak n karakter alır. =”kale”
LEFT$(A$,n) A$ değişkeninde soldan LEFT$(“pamukkale”,5)
başlayarak n karakter alır. =”pamuk”
MID$(A$,m,n) A$ değişkeninde m. MID$(“pamukkale”,5,2)
karakterden başlayarak m. = ”kk”
dahil n karakter alır.
LEN(A$) A$ karakter sayısını bulur. LEN(“pamukkale”) = 9
SPACE$(n) n adet boşluk koyar
STRING$(n,m) ASCII kodu m olan n STRING$(5,80) = ”PPPPP”
uzunluğunda bir karakter
dizi oluşturur.
STRING$(n,A$) A$ değişkeninin ilk STRING$(5,”inşaat”) = ”iiiii”
karakteri ile n
uzunluğunda bir dizgi
oluşturur.
UCASE$(A$) A$ değişkeninin tüm UCASE$(“Pamukkale”)
harflerini büyük harf =”PAMUKKALE”
yapar
TAB(x) PRINT deyimi ile birlikte PRINT TAB(5);”İnşaat”
kullanılır. Kendinden = İnşaat
sonra gelen bilginin ilk

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”

ASCII: American Standard Code for Information Interchange (Bilgi Değişimi


için Standart Amerikan Kodu) 0'dan 'e kadar toplam (28) karakter.

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İ

Alt sıralı değişkene bilgisayar belleğinde yer ayırmak için kullanılır.

DIM Değişken(indis1, indis2, …. indisN)

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:

1- Bir değişken en çok indisli olabilir.


2- Bir indis en çok değerini alabilir.
3- İndis değerleri ondalık veya tamsayı olabilir. Ondalık sayılar ifadeler
tamsayıya yuvarlanarak indis değeri belirlenir.

Alt sıralı/indisli Matematik İfade BASIC Karşılığı


ai,j A(I;J)
yk Y(K)
xi-k+1 X(I-K+1)
yk=xk-1+3xk+xk+1 Y(K)=X(K-1)+3*X(K)+X(K+1)

BASIC’te Alt Programlar


Bir programın sık tekrarlanan bölümleri programı sadeleştirmek için ana
programdan ayrılarak alt program adı altında program parçaları oluşturulur. Alt
programlarla çalışılması ana programın daha kısa oluşmasına neden olmaktadır.
Ayrıca, genel amaçlı hazırlanmış alt programların, başka kullanıcılar tarafından
kullanılması da mümkündür.

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.

DEF FN fonksiyon ismi (değişken listesi) = fonksiyon

Fonksiyon programın başında tanımlanır ve gerektiği zaman programın herhangi


bir yerinde sadece ismi ve gerekli değişkenleri verilerek kullanılır.

Örnek:

REM silindir hacmi


pi=
DEF FNhacim(D , H) = pi * D ^ 2 * H / 4
………………………………….
D1=…….
V1=FNhacim(D1,2)
D2=……
V2=FNhacim(D2,2)
PRINT V1, V2
……………….
Eğer tekrarlanan işlemler bir fonksiyondan daha büyük ise alt programlar
kullanılır. Alt programa GOSUB n deyimi ile gidilir. Burada n alt programın ilk
satırının numarasıdır. Alt programın sonundaki RETURN komutu ile GOSUB
komutunun altından program işleyişi devam eder.

………….
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.

DECLARE SUB Komutu:

Program listesi dışında yazılmış alt program olduğunu ve bunlarla ilgili


değişkenleri belirtir. Programcı tarafından yazılmazsa derleyici tarafından
program listesine eklenir.
DECLARE SUB Alt program ismi (değişken 1, değişken 2, …)

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.

CALL Alt program ismi (Değişken 1, Değişken 2, ……)

CALL deyimi ve parantezler kullanılmayabilir.

Alt program ismi Değişken 1, Değişken 2, …..

COMMON SHARED Komutu:

Ayrı yazılan alt programlarda kullanılan parametrelerin değerlerinin ortak


kullanıldığını belirtir. Genellikle ana programın ilk satırlarına yazılır.

COMMON SHARED Değişken 1, Değişken2, ….

EXIT SUB Komutu:

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.

BASIC’te Dosya (Kütük) İşlemleri

Veri giriş ve çıkışları için kullandığımız INPUT ve PRINT komutları klavyeden


girilen veriyi okuyup, sonuçları ekrana yazıyordu; ancak büyük hacimli veriler
söz konusu olduğunda, programın her çalışmasında bunların klavyede yazılıp
sonra da sonuçların ekrandan alınması zor olmaktadır. Böyle durumlarda

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.

OPEN “kütük ismi” FOR INPUT AS # dosya no


OUTPUT
APPEND
…………..
………….
CLOSE # dosya no

Dosyadan veriler okunurken

INPUT # dosya no, değişken1, değişken 2

Sonuçlar dosyaya yazdırılırken

PRINT #dosya no, değişken1, değişken2

Formatlı yazdırmada

PRINT # dosya no , USING “… Alan tanımlayıcı…” ; … Değişken Listesi …

Ö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

OPEN " O " , # kütük no, "kütük ismi"


"I"
"A"

Program her çalıştırıldığında çıktı kütüğü yeniden yazılır ve eski bilgiler


kaybolur bunu önlemek için OUTPUT kütüğü yerine APPEND kütüğü
açılmalıdır.

Kütüklerin Kapatılması

OPEN komutu ile açılan kütüklere ilişkin işlemler tamamlandıktan sonra


bunların program içinde kapatılmaları gerekmektedir.

25
CLOSE #kütük no, #kütük no, ……

CLOSE komutundan sonra kütük ismi ve kütük numarası arasındaki ilişki


ortadan kalkar. Bir kütük kapandıktan sonra onunla ilgili işlem yapılamaz.
Kütük daha sonra aynı veya farklı kütük numarasıyla ve farklı kütük tipiyle
açılabilir. CLOSE ifadesinde kütük numarası belirtilmezse açılan bütün kütükler
kapatılır.

Kütüklerin Durumlarının Elde Edilmesi

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

LOF fonksiyonu, çalışılan kütüğün uzunluğunu byte cinsinden verir.


LOC fonksiyonu, kütüğün açılmasından itibaren kütükten okunan veya yazılan
kayıt sayısını verir

IF LOC(1) > 30 THEN STOP (1 numaralı kütükte 30 ncu kayıt geçildiğinde


program durdurulmaktadır.)

EOF fonksiyonu, bir kütüğün sonuna erişilip erişilmediğinin kontrol


edilmesinde kullanılır.

IF EOF(1) THEN CLOSE #1 (1 numaralı kütüğün sonuna erişildiğinde kütük


kapatılmaktadır.)

BASIC' DE ÇİZİM KOMUTLARI

SCREEN Komutu:

SCREEN komutu ekran çözünürlüğünü değiştirerek çizim için uygun ortamı


sağlar. Çünkü yazı yazmak için daha az çözünürlük yeterli olmaktadır ve
QBASIC varsayılan ortam olarak metin (text) ortamını kabul eder. Ekrandaki
görüntü noktaların birleşiminden oluşur. Bu noktalara piksel denir.
Çözünürlüğün artması demek ekrandaki piksel sayısının artması demektir.

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

Grafik kartımıza uymayan SCREEN Mod'ları "Illegal Function Call" hata


mesajı verir. Bu durumda başka bir mod denenir.

(x)
(0,0) (,0)

(y)
Screen 13

(0,) (,)

PSET (Pixel Set) Komutu:

Bu komut ile ekrandaki herhangi bir yere nokta koyabiliriz.

PSET (x,y), Renk No

Renk No Renk Renk No Renk


0 Siyah 8 Koyu gri
1 Lacivert 9 Mavi
2 Yeşil 10 Parlak yeşil
3 Açık mavi 11 Parlak mavi
4 Kırmızı 12 Parlak kırmızı
5 Pembe 13 Parlak pembe
6 Kahverengi 14 Sarı
7 Açık gri 15 Beyaz

27
LINE Komutu:

Çizgi çizmek için kullanılır. (x1,y1) ve (x2,y2) noktaları arasında bir çizgi
çizmek için

LINE (x1,y1)-(x2,y2), Renk no

Köşegeni (x1,y1) ve (x2,y2) noktaları olan bir dikdörtgen çizdirmek için

LINE (x1,y1)-(x2,y2), Renk no, B (Box)

Bu kutuyu doldurmak için

LINE (x1,y1)-(x2,y2), Renk no, BF (Box Fill)

CIRCLE Komutu:

Çember çizmek için kullanılır. Merkezi (x,y) yarıçapı R olan bir çemberi
çizdirmek için

CIRCLE (x,y), R, Renk No

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.

CIRCLE (x,y), R, Renk No, Başlangıç, Bitiş

Çemberin yatay ve dikey koordinatlarının birbirine oranını belirleyerek çemberi


elips şekline dönüştürmek te mümkündür.

CIRCLE (x,y), R, Renk No, Başlangıç, Bitiş, Yatay/Düşey

Arada girilmek istenmeyen değerler boş bırakılır. Virgüller konur.

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.

PAINT (x,y), Renk No

CIRCLE (,),75,4 PAINT (,),4 (Çemberin içini boyar)

28
PAINT(,),4 (Çemberin dışını boyar)

BASIC'te SES KOMUTLARI

BEEP Komutu:

Programların gerekli yerlerinde bazen sesle uyarı vermek gerekebilir. BEEP


komutu belirli bir tonda ve standart uzunlukta zil sesi çıkarır. Komutun kullanım
parametresi yoktur.

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.

SOUND frekans, uzunluk

Frekans parametresi 37 ile arasında değişebilse de den yüksek


frekanslı sesler insan kulağı tarafından duyulamaz.

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

Footer menu

ALGORİTMA DERS Notları

com

ALGORİTMA DERS NOTLARI

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 Çözme ve Algoritmalar

Problem Çözme

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

Belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.


İ.S. funduszeue.info da İranlı Musaoğlu Horzumlu Mehmet
(Alharezmi adını araplar takmıştır) problemlerin çözümü için genel kurallar oluşturdu.
Algoritma Alharezmi'nin Latince okunuşu.
Her algoritma aşağıdaki kriterleri sağlamalıdır.
1. Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli.
2. Çıktı: En azından bir değer üretilmeli.
3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.
4. Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli.
5. Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır.

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

Örnek: İki sayının toplamını yazan algoritmayı yazınız.


Çözüm:
Adım 1 --> İlk sayıyı oku, Sembolik olarak A1 S1=?
Adım 2 --> İkinci sayıyı oku A2 S2=?
Adım 3 --> Sayıları topla A3 T S1+S2
Adım 4 --> Sonucu görüntüle. A4 T'yi göster.

funduszeue.info : Kullanıcının girdiği iki sayının karelerinin toplamını görüntüleyen algoritmayı


yazınız.
Çözüm
A0 --> Başla
A1 --> Sayaç=0 (Sayaç'ın ilk sayısı 0 olarak başlar.)
A2 --> Sayı=? : TßT+Sayı (Sayıyı giriniz. T'ye sayıyı ekle veT'yi göster.)
A3 --> Sayaç=Sayaç+1 (Sayaç'a bir ekle ve sayacı göster.)
A4 --> Sayaç<4 ise A2'ye git. (Eğer sayaç 4'ten küçükse Adım 2'ye git.)
A5 --> O=T/4 (Ortalama için T değerini 4'e böl)
A6 --> O'yu göster. (Ortalamayı göster.)
A7 --> Dur

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 : 30 ile 90 arasındaki çift sayıların toplamını bulan algoritma yazınız.


Çözüm:
A0 --> Başla
A1 --> S=0 : T=0 (Sayı 0, Toplam değeri 0 olsun)
A2 --> S=S+1 (Sayıyı bir artır, sayıyı göster.)
A3 --> T=T+2S+28 (28 sayısına çift sayı olması için sayıyı 2 ile çarp ve toplama ekle,
toplamı göster)
A4 --> 2S+28<90 ise git A2 (Eğer Çift sayı 90 değerinden küçük ise Adım 2'ye git)
A5 --> O=T/S (Toplam değeri sayıya böl ve ortalamayı bul)
A6 --> O'yu yaz. (Ortalamayı göster)
A7 --> 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

funduszeue.info : Klavyeden girilen üç sayıdan en büyüğünü bulup gösteren algoritmayı yazınız.


Çözüm :
A0 --> Başla : EB=-¥ : S=0 (Başla olabilecek EB:en küçük sayı olsun, Sayı 0 olsun)
A1 --> Sayı? (Sayıyı giriniz.)
A2 --> Sayı>EB ise EB=Sayı (Eğer Sayı EB'den küçükse EB sayıyla aynı değeri alsın.)
A3 --> S=S+1 (Sayaca 1 ekle ve sayacı göster)
A4 --> S<3 ise git A1 (Eğer sayac 3'ten küçükse adım 1'e git.)
A5 --> EB'yi göster (En büyük sayıyı göster.)
A6 --> Dur

7. Soru: Bilgisayara girilen 50 öğrencinin adını, soyadını ve sınav notunu kullanarak en


yüksek not alan öğrencinin adını, soyadını, en düşük not alan öğrencinin adını, soyadını
yazan programın algoritmasını kodlayınız. (YN=Yüksek not, DN= Düşük not)
1. Başla
2. I = 0
3. YN = 0
4. DN =
5. I = I + 1
6. Oku AD, SOY, NOTU
7. Eğer notu > YN ise YN = Notu, YAD = AD, YSOY=SOY
8. Eğer notu < DN ise DN= Notu, DAD= AD, DSOY=SOY
9. Eğer I<50 ise git adım 5
Yaz YAD, YSOY, DAD, DSOY
DUR

8. Soru: Bilgisayara girilen bir sayının faktöriyelini hesaplayan programın algoritmasını


yazın.
1. Başla
2. I = 0
3. Ç= 1
4. Oku S
5. I = I + 1
6. Ç = Ç * I
7. Eğer I < S ise git adım 5
8. Yaz Ç
9. 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

AKIŞ ŞEMALARI (DİYAGRAMLARI)

Algoritmanın başladığını ya da sona erdiğini belirtmek


için kullanılır.

Klavye aracılığı ile giriş ya da okuma yapılacağını


gösterir.

Yazıcı(printer) aracılığı ile çıkış yapılacağını gösterir.

Kart okuyucu aracılığıyla giriş yapılacağını gösterir.

Araç belirtmeden giriş ya da çıkış yapılacağını gösterir.

Hesaplama ya da değerlerin değişkenlere aktarımını


gösterir.

6
BERKCAN BİLGİSAYAR funduszeue.info

Aritmetik ve mantıksal ifadeler için karar verme ya da


karşılaştırma durumunu gösterir.

Diskten okuma ya da diskete yazmayı gösterir.

Disketten okuma ya da diskete yazmayı gösterir.

Teyp kütüğünü gösterir.

Yapılacak işler birden fazla sayıda yinelenecek ise diğer


bir deyişle iş akışında çevrim(döngü) var ise bu sembol
kullanılır.

Akış diyagramında iki nokta arası ilişkiyi gösterir.Döngü


sonunu göstermek için ya da diyagramın çizilemediği
durumlarda kullanılır. Burada i herhangi bir sembol
olabilir.

7
BERKCAN BİLGİSAYAR funduszeue.info

Oklar işin akış yönünü gösterir.

Akış şemaları içerik ve biçimlerine göre genel olarak üç grupta sınıflandırılabilirler.


DOĞRUSAL AKIŞ ŞEMALARI
İş akışları,giriş,hesaplama,çıkış biçiminde olan akış şemaları bu grup kapsamına girer.

ÖRNEK 2:İki sayının çarpımının bulunmasıyla ilgili algoritma şöyledir.

Değişkenler

A:Birinci sayıyı,

B:İkinci sayıyı,

C:İki sayının çarpımını(A*B)göstersin.

Algoritma

Adım 1-Başla

Adım 2-A'yı oku

Adım 3-B'yi oku

Adım 4-C=A*B yi hesapla

Adım 5-C'yi yaz

Adım 6-Dur

Akış Şeması

8
BERKCAN BİLGİSAYAR funduszeue.info

Algoritma adımlarında kullanılması gereken semboller yukarıdaki şekilde görülmektedir.


Örneğin "DUR" ve "BAŞLA" işlemleri için aynı sembol kullanılmaktadır. Adım 2 ve 3 için
kullanılan sembol,bilgisayara değerlerin dışarıdan girildiğini göfunduszeue.info ise işin akış
yönünü gösterir. Adım 4'te kullanılan sembol C=A*B gibi aritmetik işlemler işlemler için
kullanılır.

Ö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ı

D:İki sayının farkını (A-B)

E:İki sayının bölümünü(A-B)

Algoritma

Adım 1-Başla

Adım 2-A'yı oku

9
BERKCAN BİLGİSAYAR funduszeue.info

Adım 3-B'yi oku

Adım 4-D=A-B

Adım 5-E=A/B

Adım 6-D'yi yaz

Adım 7-E'yi yaz

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,

TO3:Toplamın küpünü gösterir.

Algoritma

Adım 1-Başla

Adım funduszeue.info IKISA'yı oku

Adım 3-TO=BIRSA+IKISA

TOKA=TO^2

TO^3

Adım 4-TOKA,TO3'ü yaz

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ı

E10=Sayının 10 eksiğini göstersin.

Algoritma

Adım 1-Başla

Adım 2-Terminalden SAYI oku

Adım 3-F10=SAYI+10

12
BERKCAN BİLGİSAYAR funduszeue.info

Adım 4-E10=SAYI

Adım 5-DUR

Akış Şeması

MANTIKSAL AKIŞ ŞEMALARI


Geniş ölçüde mantıksal kararları içeren akış şemalarıdıfunduszeue.info düzenleri genellikle
basittir.

Ö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

Adım 2-A,B'yi oku

Adım 3-A=B ise Adım 7'ye git

Adım 4-A>B ise Adım 6'ya git

13
BERKCAN BİLGİSAYAR funduszeue.info

Adım 5-B'yi yaz Adım 8'e git

Adım 6-A'yı yaz Adım 8'e git

Adım 7-"A veB eşit"mesajını yaz

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ı,

I yaşında olan öğrencilerin sayısını

I yaşında olan öğrencilerin sayısını

I yaşında olan öğrencilerin sayısını

I yaşında olan öğrencilerin sayısını

I yaşında olan öğrencilerin sayısını

14
BERKCAN BİLGİSAYAR funduszeue.info

IYOS:İşlem yapılan öğrenci sayıaını göstersin.

Algoritma

Adım 1-Başla

Adım 2-I18=0 I19=0 I20=0 I21=0 I22=0 IYOS=0

Adım 3-OSA oku

Adım 4-OSA=18 ise I18'i arttır, Adım 9'a git

Adım 5-OSA=19 ise I19'u arttır, Adım 9'a git

Adım 6-OSA=20 ise I20'yi arttır,Adım 9'a git

Adım 7-OSA=21 ise I21'i arttır,ADım 9'a git

Adım 8-OSA=22 ise I22'Yİ arttır,Adım 9'a git

Adım 9-IYOS< ise Adım 3'e git

Adım I18,I19,I20,I21,I22,yaz

Adım DUR

Akış Şeması

15
BERKCAN BİLGİSAYAR funduszeue.info

YİNELİ (İTERATİF,ÇEVRİMLİ,DÖNGÜLÜ)AKIŞ ŞEMALARI


Sorunun çözümü için,çözümde yer alan herhangi bir adım ya da aşamanın birden fazla
kullanıldığı akış şemalarına denir.İş akışları genel olarak giriş ya da başlangıç değeri
verme,hesaplama,kontrol biçiminde olmaktadır.

Ö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ı,

ISAYI:Öğrenci sayısını göstersin.

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 4-ONOT oku

Adım 5-INOT=INOT+ONOT

Adım 6-ISAYI=ISAIY+1

Adım 7-ISAYI<3ise Adım 4'e git

Adım 8-NORT=INOT/3

Adım 9-NORT YAZ

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ı

Başlangıçta INOT veISAYI "0" değerini alıfunduszeue.infoayara ilk not olarak 50


funduszeue.infoşlangıçta INOT=0 olduğu için INOT ile 50 toplanır ve sonuç INOT'a
aktarılıfunduszeue.infoısıyla INOT'un yeni değeri 50 funduszeue.info sonra ISAYI'nın değeri INOT'ta
olduğu gibi 1 arttırılıfunduszeue.info=1 olduğu için 3 ile karşılaştırma yapıldığında tekrar okuma
işlemine geri dönülür ve ikinci not olarak60 okutulur.İşlemler bu şekilde devam
funduszeue.info=3 olunca ortalamanın hesaplamasına geçfunduszeue.info olarak bulunan ortalama
yazılır ve durulur.
Aynı sorun yineleme sembolü kullanılarak şöyle yazılabilir.

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=N faktöriyel (N!) değerini,

ISAYI=1'den N'e kadarsayıları göstersin,

NFAK=1*2**N

Algoritma

Adım 1-Başla

Adım 2-N'i ekrandan oku

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 7-Eğer ISAYIAdım 8-NFAK yaz

Adım 9-Dur

Akış Şem ası

Aynı soru yineleme sembolü kullanılarak aşağıdaki gibi de çizilebilir.

ÖRNEK 9:Klavyeden girilen,bir öğrencinin numarasını,ismini ve bilgisayar programlama


dersinin 3 vize sınavından aldığı notları okuyan,bu notların aritmetik ortalamasını
bulan,eğer ortalaması 50'ye eşit veya 50'den büyükse yazıcıya numara,isim,notlar ve
vize notlarının ortalamasını,küçükse numara,isim ve "tekrar" mesajı yazan programın
algoritma ve akış şeması şu şekildedir.

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

VIZORT:üç vize sınavının aritmetik ortalamasını,

VIZTO:üç vizenin toplamını göstersin.

Algoritma

Adım 1-Başla

Adım 2-INO,AD,VIZE1,VIZE2,VIZE3,oku

Adım 3-VIZTO=(VIZE1+VIZE2+VIZE3) ve VIZORT=VIZTO/3 bul.

Adım 4-Eğer VIZORT>=50 ise Adım 6'ya git.

Adım 5-INO,AD ve "TEKRAR" yaz ve Adım 7'ye git.

Adım 6-INO,AD,VIZE1,VIZE2,VIZE3,VIZORT yaz

Adım 7-DUR

Akış Şem ası

Ö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,

DNS:Ders notu sayacı,

DNT:Ders notlarının toplamı,

DNO:Ders notlarının ortalaması,

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

Adım 5-OGAD oku

Adım 6-DN oku

Adım 7-DNS=DNS+1(ders notu sayacı 1 artır.

Adım 8-DNT=DNT+DN(notları topla)

Adım 9-Eğer DNS<12 ise adım 6'ya git

22
BERKCAN BİLGİSAYAR funduszeue.info

Adım DNO=DNT/12(ortalamayı hesapla)

Adım OGAD,DNO yaz

Adım IOS=IOS+1(öğrenci sayacını bir artır)

Adım Eğer IOS<30 ise adım 4'e git

Adım ISS=ISS+1(sınıf sayacını bir artır)

Adım Eğer ISS<10 ise adım 3'e git.

Adım Dur

Akış Şem ası

Ö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

SS:Okunan sayı adedi

PSS:pozitif sayı adedi

NSS:Negatif sayı adedi

SSS:Sıfır sayı adedi

Algoritma

Adım 1-Başla

Adım 2-SS=PSS=NSS=SSS=0

Adım 3-Sayı oku

Adım 4-SS=SS+1

Adım 5-Eğer SS> ise dur

Adım 6-Eğer sayı<0 ise adım 9'a git

Adım 7-Eğer sayı=0 ise adım 10'a git

Adım 8-PSS=PSS+1 hesapla,adım 3'e git

Adım 9-NSS=NSS+1 hesapla,adım 3'e git

Adım SSS=SSS+1 hesapla,adım 3'e git

Akış Şem ası

24
BERKCAN BİLGİSAYAR funduszeue.info

ÖRNEK Bir sınıfta bulunan belirsiz sayıdaki öğrencilerin numarasını,adını ve soyadını


yazan programın algoritması ve akış şeması şöyledir.

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 2-Eğer okuma bittiyse Adım 6'ya git

Adım 3-JNO,AD,SAD oku

Adım 4-JNO,AD,SAD yaz

Adım 5-Adım 2'ye git

Adım 6-Dur

Akış Şem ası

26

Footer menu

nest...

ç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ı