BİLGİSAYAR PROGRAMLAMA YRD. DOÇ. DR. YAKUP EMÜL CUMHURIYET ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ BÖLÜMÜ Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) 1 B01. Bilgisayar Programlamaya Giriş
B01. Bilgisayar Programlamaya Giriş 2 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) 1.0 Notlandırma 1.1 Kaynak Materyaller 1.2 Bilgisayar Nedir? 1.3 Bilgisayarın Organizayon Yapısı 1.4 İşletim Sistemlerinin Gelişimi 1.5 Kişisel Kullanim, Çoklu Kullanim, İstemci/Sunucu Kullanimi 1.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 1.7 C Programlama Diline Dair 1.8 Standart C Kütüphanesi 1.9 Yazılımda Nesne Kavramı 1.10 C++ Programlama Dili 1.11 Diğer Yüksek Seviyeli Programlama Dilleri 1.12 Yapısal Programlama Kavramı 1.13 C nin Önemine Dair 1.14 Çalışan Bir C Programı Üretim Süreci 1.15 Etkileşimli Geliştirme Ortamı (IDE) 1.16 DevC++ IDE 1.17 İlk Program 1.18 C de Değişken Tipleri 1.Ek Özet ve Bazı Notlar
B01.0 Notlandırma 3 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Notlandırma : Öğrencinin yıl içindeki çalışmaları, aşağıdaki notlandırma tablosuna göre değerlendirilecektir. (*) Ödevlerin arasınav notuna katkısı %10 dur (ilk 4 Ödev). (**) Ödevlerin final notuna katkısı %10 dur (son 4 Ödev). (***) Projenin final notuna ekstra 10 puana kadar katkısı vardır. Sınav ve Ödevler Adet % Katkı Ödevler 6-8 (*) Ara Sınav 1 40* Yıl Sonu Sınavı 1 60** Arduino Projesi 1 (***)
B01.1 Kaynak Materyaller 4 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Diğer bütün programlama dillerinde olduğu gibi C/C++ programlama dilide öğrenme aşamasında birçok tekrar ve uygulamayı gerektirir, yani çeşitli program yazma egzersizlerini. Öğrencilerin sınıfta tartışılan/yazılan programların benzerlerini bireysel çalışma zamanlarında geliştirmeleri önemsenmektedir. Bu nedenle sınıfta tartışılan programlar ve program yazma tekniklerinin öğrenci tarafından uygulanması için ayrıca bir dizi ödev verilecektir. Ders Kitabı : Internet ortamında gerek Türkçe gerekse İngilizce olarak birçok kaynak bulmak mümkündür. Öğrencilerin bu kaynakları incelemesi/kullanması teşvik edilmektedir. Bu kaynakların yanında aşağıdaki Türkçe kaynaklar da öğrencinin ilgisine sunulmaktadır. İleri C Programlama, G. Murat TAŞBAŞI, altaş yayıncılık ve elektronik C Programlama Dili, Selçuk ALP Arzu KİLİTÇİ, Umuttepe Yayınları C Programlamanın Temelleri, Timur Karaçar, Abaküs yayınları C How to program, 6th Ed., Paul Deitel and Harvey Deitel Programming in C, 3 rd Ed., S. Kochan.
B01.1 Kaynak Materyaller 5 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bu derste, mühendislik öğrencileri için C/C++ programlama dilinde temel programcılık esaslarının kavranması ve C/C++ uygulamaları için deneyim kazandırılması amaçlanmaktadır. Bu derste C programlama dilinin aşağıdaki temel sintaksları verilerek temel seviyede bir programcılık altyapısı oluşturulması amaçlanmaktadır. Data tipleri ve değişkenler (Data types and variables) Diziler (arrays) Yapılar (structures) Dizgiler (strings) İmleçler (pointers) Koşullu deyimler (conditional statements) Döngüler, fonksiyonlar ve (loops, functions) Girdi/çıktı dosyaları (file input / output)
B01.2 Bilgisayar Nedir? 6 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bilgisayarlar, hesaplamaları ve mantıksal kararlar vermeyi insanlardan milyonlarca hatta milyarlarca kez hızlı yapabilme yeteneğine sahip cihazlardır. Örneğin, bugünkü çoğu kişisel bilgisayar, saniyede milyonlarca toplama işlemini gerçekleştirebilir. Aynı işlemi, hesap makinesiyle yapmak yıllar alabilir. ( Dikkat edilmesi gereken bir başka nokta da, kişinin sayıları hesap makinesine hatasız giremeyeceği gerçeğidir. ) Bugünkü en hızlı bilgisayarlar ise saniyede milyarlarca toplama işlemini gerçekleştirebilir. Bunların daha da ötesinde bazı araştırma laboratuarlarında trilyonlarca toplama işleminin yapılabildiğinide söylemeden geçemeyeceğiz.
B01.2 Bilgisayar Nedir? 7 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bilgisayarlar, bilgisayar programı adı verilen bir dizi komutla verileri işlerler. Bilgisayar programlarcıları tarafından yazılan bu programlar, bilgisayarın işlemler yapabilmesini sağlatır. Bir bilgisayar, donanım olarak adlandırılan bir çok parçadan ( klavye, ekran, fare, CD-ROM, hafıza, sabit diskler ve işlemciler ) oluşur. Bilgisayarda kullandığımız programlara yazılım denir.
B01.2 Bilgisayar Nedir? 8 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Donanım maliyetleri son yıllarda büyük bir düşüş gösterirken, yazılım maliyetleri, programcılar daha güçlü ve karmaşık işlemleri gerçekleştirebilen programlar yazdıkça artmaktadır. Bu ders boyunca yazılım maliyetlerini azalttığı kanıtlanmış yazılım geliştirme yöntemlerini öğreneceksiniz. Bu yöntemler yapısal programlama, yukarıdan aşağıya adımsal iyileştirme, fonksiyonellik, nesne tabanlı programlama, nesneye yönelik programlama, event driven ve generic programlamadır.
B01.3 Bilgisayar Organizasyon Yapısı 9 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Fiziksel görünümlerindeki farklılıklara rağmen genellikle bilgisayarlar altı mantıksal kısma ayrılabilir. Bunlar aşağıda özetlenmiştir: 1-Giriş ünitesi. Bu kısım, bilgisayarın dış dünyayla haberleştiği kısımdır. Giriş ünitesi, çeşitli giriş cihazlarından veri ve bilgisayar programlarını alır ve diğer birimlerin kullanımına sunar. Böylece bilgi işlenmeye hazır hale gelir. Bugünlerde bilgisayarlara bilgiler, klavyeler ve fareler sayesinde yüklenmektedir. Ayrıca bilgiler konuşarak ya da görüntülerin taranmasıyla da bilgisayarlara girilebilir.
B01.3 Bilgisayar Organizasyon Yapısı 10 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Fiziksel görünümlerindeki farklılıklara rağmen genellikle bilgisayarlar altı mantıksal kısma ayrılabilir. Bunlar aşağıda özetlenmiştir: 2-Çıkış Ünitesi. Çıkış ünitesi, bilgisayardan bilgilerin alındığı kısımdır. Bu ünite, işlenmiş bilgiyi bilgisayardan alır ve kullanıcıya uygun bir hale getirerek çıkış cihazlarına gönderir. Çıktı, ekranda gösterilerek, kağıtlara yazdırılarak ya da diğer cihazları kontrol etmek için kullanılarak alınır.
B01.3 Bilgisayar Organizasyon Yapısı 11 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Fiziksel görünümlerindeki farklılıklara rağmen genellikle bilgisayarlar altı mantıksal kısma ayrılabilir. Bunlar aşağıda özetlenmiştir: 3-Hafıza Ünitesi. Bu kısım, bilgisayarın düşük kapasiteli ancak hızlı erişimli depolama kısmıdır. Giriş birimlerinden girilen bilgiyi saklayarak, işleme sırasında ihtiyaç duyulduğunda bu bilgilerin hızlı bir şekilde kullanıma hazırlanmasını sağlar. Hafıza ünitesi ayrıca, işlenmiş bilgiyi çıkış cihazlarına gönderene kadar saklamakla görevlidir. Hafıza kısmı genellikle hafıza ya da birincil hafıza olarak adlandırılır.
B01.3 Bilgisayar Organizasyon Yapısı 12 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Fiziksel görünümlerindeki farklılıklara rağmen genellikle bilgisayarlar altı mantıksal kısma ayrılabilir. Bunlar aşağıda özetlenmiştir: 4-Aritmetik Mantık Ünitesi(ALU). Bu kısım bilgisayarın üretim kısmıdır. Toplama, çıkartma çarpma ve bölme gibi işlemlerin yapılmasından sorumludur. Hafıza ünitesinden iki elemanı karşılaştırma ve bu elemanların eşit olup olmadıklarına karar verme gibi görevleri de yapmakla sorumludur.
B01.3 Bilgisayar Organizasyon Yapısı 13 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Fiziksel görünümlerindeki farklılıklara rağmen genellikle bilgisayarlar altı mantıksal kısma ayrılabilir. Bunlar aşağıda özetlenmiştir: 5-Merkezi İşleme Ünitesi(CPU). Bilgisayarın yönetici kısmıdır. Bilgisayarın koordinasyonundan ve diğer kısımlarının çalışmasının denetlenmesinden sorumludur. CPU, giriş ünitesine bilgilerin hafızaya aktarılacağını, ALU 'ya hafızadaki bilgilerin işlemlerde kullanılacağını, çıkış ünitesine hafızadaki bilgilerin belirli çıkış cihazlarına gönderileceğini söyler.
B01.3 Bilgisayar Organizasyon Yapısı 14 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Fiziksel görünümlerindeki farklılıklara rağmen genellikle bilgisayarlar altı mantıksal kısma ayrılabilir. Bunlar aşağıda özetlenmiştir: 6-İkincil Depolama Ünitesi. Bu kısım yüksek kapasiteli depolama kısmıdır ve bilgiler burada daha uzun süreyle tutulurlar. Programlar ya da diğer üniteler tarafından faal olarak kullanılmayan veriler, normal olarak ikincil depolama cihazlarında (diskler ) saklanırlar. Böylece bilgiler saatler, günler, aylar ya da yıllar sonra yeniden ihtiyaç duyulduklarında kullanılabilirler. İkincil depolama ünitesindeki bilgilere ulaşma zamanı, birincil depolama ünitesindeki bilgilere ulaşma zamanından daha fazladır. İkincil depolama ünitelerinin birim maliyeti, birincil depolama ünitelerinin birim maliyetinden daha ucuzdur.
B01.4 İşletim Sistemlerinin Gelişimi 15 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Önceleri, bilgisayarlar belli bir anda yalnızca bir işi ya da görevi yapabiliyorlardı. Bu formda bir bilgisayar işletimi genellikle, tek kullanıcılı yığın işleme (batch processing) olarak adlandırılır. Bu formdaki bilgisayarlar, bir anda tek bir program çalıştırırken, verileri gruplar ya da yığınlar halinde kullanırdı. O zamanki sistemlerde kullanıcılar, işlerini bilgisayara delikli kartlar sayesinde yaptırırlardı. Kullanıcıların, işlemlerin sonucunu alabilmeleri saatler ya da günler sürebilirdi.
B01.4 İşletim Sistemlerinin Gelişimi 16 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) İşletim sistemi olarak adlandırılan yazılımlar, bilgisayarları daha rahat kullanabilmek için geliştirilmiştir. İlk işletim sistemleri, işler arasındaki geçişleri yönetebiliyordu. Bu, kullanıcıların işler arasında geçişler yapabilme zamanını azaltarak, yapılacak iş sayısını yani throughput u arttırmıştı. Bilgisayarlar daha güçlü hale geldiklerinde, tek kullanıcılı yığın işlemenin bilgisayarın kaynaklarını verimli kullanamadığı anlaşıldı. Çünkü, zamanın çoğu yavaş çalışan giriş/çıkış cihazlarının görevlerini tamamlamalarını beklemekle geçiyordu. Bunun yerine, işlerin ya da görevlerin bilgisayarın kaynaklarını paylaşabilecekleri düşünüldü.
B01.4 İşletim Sistemlerinin Gelişimi 17 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bu, çoklu programlama ( multiprogramming ) olarak adlandırılır. Çoklu programlama, bilgisayarda birden çok işin eş zamanlı olarak yapılmasını sağlar. İlk çoklu programlama işletim sistemlerinde, kullanıcılar hala delikli kartlar kullanıyordu ve işlemlerin sonuçlanması saatler ya da günler alıyordu. 1960'larda sanayide ve üniversitelerde çeşitli gruplar, zaman paylaşımlı işletim sistemlerine öncülük ettiler. Zaman paylaşımı, kullanıcıların bilgisayara klavye ve ekran gibi cihazlardan oluşan terminallerden erişmelerini sağlayan, bir çoklu programlama biçimidir.
B01.4 İşletim Sistemlerinin Gelişimi 18 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Tipik bir zaman paylaşımlı bilgisayar sisteminde onlarca ya da yüzlerce kullanıcı, bilgisayarı kullanabilir. Aslında bilgisayar, bütün kullanıcıların isteklerini aynı anda yapmaz. Bunun yerine, bir kullanıcının işinin bir kısmını yapar ve diğer kullanıcın işine geçer. Bilgisayar, bu işlemi o kadar hızlı yapar ki her kullanıcının işlemine bir saniye içinde birkaç kez servis sağlayabilir. Bu yüzden, kullanıcıların programları eş zamanlı çalışıyormuş gibi görünür. Zaman paylaşımının avantajı, kullanıcıların isteklerine neredeyse anında cevap almalarıdır. Bu, eski yöntemlerle daha uzun bir zaman gerektirirdi.
B01.5 Kişisel Kullanim, Çoklu Kullanim, İstemci/Sunucu Kullanimi 19 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) 1977 senesinde APPLE COMPUTER, kişisel kullanım kavramını yaygınlaştırdı. Bu ilk başta,bilgisayarla hobi olarak uğraşan birinin hayali gibi görünüyordu. Bilgisayarlar, insanların kişisel ya da işleriyle ilgili kullanımları amacıyla satın alabilecekleri kadar ekonomik bir hale geldi. 1981'de dünyanın en büyük bilgisayar üreticisi IBM, IBM kişisel bilgisayarı tanıttı. ( IBM-PC )
B01.5 Kişisel Kullanim, Çoklu Kullanim, İstemci/Sunucu Kullanimi 20 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Fakat bu bilgisayarlar standalone birimlerdi ve insanlar işlerini yaptıktan sonra bilgileri paylaşmak için disklerini taşıyorlardı. ( Buna genelde sneakernet denir.) Bu ilk kişisel bilgisayarlar, birden fazla kullanıcının zaman paylaşımı yapması için yeterince güçlü olmamasına rağmen, bilgisayar ağları oluşturmak amacıyla birbirlerine bağlanıyorlardı. Böylece telefon ağları kullanarak yerel ağ ( LAN ) oluşturuluyordu. Bu, çoklu kullanım ( distibuted computing ) kavramını ortaya çıkarttı.
B01.5 Kişisel Kullanim, Çoklu Kullanim, İstemci/Sunucu Kullanimi 21 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Çoklu kullanımda, bir organizasyonun hesaplamaları için merkezi bir bilgisayar yerine, ağ üzerinden bu organizasyonla ilgili kişilere iş dağıtılıyordu. Kişisel bilgisayarlar her kullanıcının kendi hesaplamalarını yapabilecek kadar güçlü olmanın yanında, bilgileri elektronik olarak göndermek ve almak gibi temel haberleşme görevlerini de yapabiliyorlardı. Bugünün en güçlü kişisel bilgisayarları, on ya da yirmi yıl öncenin milyon dolarlık bilgisayarları kadar güçlüdür. En güçlü masa üstü makineler ( iş istasyonları ), kullanıcılara muazzam yetenekler sunmaktadır.
B01.5 Kişisel Kullanim, Çoklu Kullanim, İstemci/Sunucu Kullanimi 22 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Ağ üzerinde bulunan istemciler tarafından kullanılması muhtemel program ve verilere, bilgisayar ağları üzerinden dosya sunucularına (file server) erişilerek ulaşılır. Buna, istemci/sunucu (client/server) kullanımı denir. C ve C++ işletim sistemleri, bilgisayar ağları ve çoklu kullanım istemci/sunucu uygulamaları için en uygun seçimdir. Bugünkü en popüler işletim sistemleri: UNIX, LINUX ve Microsoft'un Windows tabanlı sistemleri bu kısımda anlatılan yeteneklere sahiptirler.
B01.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 23 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Programcılar değişik programlama dillerini kullanarak komutlar yazarlar. Bunlardan bazıları bilgisayar tarafından doğrudan anlaşılabilirken, bazıları ise çevirme (translation) işlemlerinetabi tutulmak zorundadır. Günümüzde yüzlerce bilgisayar dili vardır. Bunlar üç genel tipe ayrılabilirler. 1-Makine dilleri 2-Assembly dilleri 3-Yüksek seviyeli diller
B01.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 24 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Herhangi bir bilgisayar, doğrudan yalnızca kendi makine dilini anlayabilir. Makine dili bilgisayarın doğal dilidir ve o bilgisayarın donanım tasarımına bağlıdır. Makine dilleri, belirli sayıların özel dizilimler ile bilgisayarın temel işlevlerini yaptırtmalarını sağlarlar (bu sayılar genellikle 1 ve 0'lara indirgenirler.) Makine dilleri her makinede farklılık gösterebilir. Bu yüzdende, makine bağımlı (machine dependent) olarak adlandırılırlar. Makine dilleri insanlar için oldukça zordur.
B01.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 25 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Makine dillerini kullanmak insanlar için oldukça zordur. Aşağıda, makine diliyle yazılmış bir programı görebilirsiniz. Bu program parçacığında iki sayı toplanıp (bir baza göre), sonuç hafızada saklanmıştır.
B01.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 26 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bilgisayarlar popüler hale geldikçe, makine dilleriyle programlamanın oldukça yavaş, zahmetli ve hata yapma oranının yüksek olduğu görüldü. Bilgisayarların doğrudan anlayabileceği belli sayı dizilişleri kullanmak yerine, programcılar İngilizce ye yakın kısaltmalar kullanmaya başladılar. Bu kısaltmalar, assembly dillerinin temelini oluşturur. Assembler olarak adlandırılan çevirici programlar, assembly dilinde yazılmış programları makine diline çevirmek için geliştirilmiştir. Şimdi, makine diliyle yazdığımız programın assembly diliyle yazılmış halini göreceksiniz.
B01.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 27 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Şimdi, makine diliyle yazdığımız programın assembly diliyle yazılmış halini göreceksiniz.
B01.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 28 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Şimdi, makine diliyle yazdığımız programın assembly diliyle yazılmış halini göreceksiniz. Makine Dili Assembly Dili
B01.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 29 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Şimdi, makine diliyle yazdığımız programın assembly diliyle yazılmış halini göreceksiniz. Makine Dili Assembly Dili Bu kod, insanlara oldukça yakın gelse de makine diline çevirmediği sürece bilgisayarlara birşey ifade etmez.
B01.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 30 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bilgisayar kullanımı, assembly dillerinin ortaya çıkmasıyla hızlıca artmıştı fakat hala bazı basit görevleri yapmak için birçok kod yazmak zorunda kalınıyordu. Programlama sürecini hızlandırabilmek amacıyla yüksek seviyeli diller geliştirildi. Bu dillerde, tek bir ifadeyle birden çok görevi yerine getirmek mümkün oluyordu. Derleyici ( compiler ) olarak adlandırılan çevirici programlar, yüksek seviyeli dilleri makine dillerine çevirirler. Yüksekseviyeli diller, programcılara günlük İngilizce ye oldukça yakın kodlar yazma imkanı sunar.
B01.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 31 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Ayrıca, genellikle kullanılan matematik ifadeleri de yüksek seviyeli dillerde kullanılabilir. Şimdi de yukarıda önce makine diliyle daha sonra assembly dilleriyle yazılmış program parçacığını, yüksek seviyeli dillerle yazalım. Açıkça görüleceği üzere, yüksek seviyeli diller makine dilleri ya da assembly dillerine göre programcılar tarafından daha çok tercih edilirler.
B01.6 Makine Dilleri, Assembly Dilleri Ve Yüksek Seviyeli Diller 32 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C ve C++, yüksek seviyeli diller arasında en güçlü ve en çok kullanılanlarıdır. Yüksek seviyeli dillerle yazılmış bir programın makine diline çevrilme süreci, bilgisayarda bir müddet süre alabilir. Bu problem, yüksek seviyeli dillerle yazılmış programları, makine diline derleme ihtiyacı duymadan çalıştırabilen yorumlayıcı ( interpreter ) programlar sayesinde çözülmüştür. Derlenmiş programlar, yorumlanmış programlara göre daha hızlı çalışmalarına rağmen, program geliştirme ortamlarında programlara yeni özellikler eklenirken ve hatalar düzeltilirken yorumlayıcılar daha yaygın bir şekilde kullanılmaktadır. Bir program geliştirildikten sonra bu programın derlenmiş versiyonu daha verimli çalışabilir.
B01.7 C Programlama Diline Dair 33 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C Programlama Dili: Bu gün kullandığımız yazılıma dayalı teknolojilerin büyük oranda temelini oluştura programlama dilidir. C, temelde iki eski dile dayanır : BCPL ve B. BCPL, 1967 yılında Martin Richards tarafından işletim sistemleri ve derleyiciler yazmak için geliştirilmiştir. Ken Thompson, BCPL çalışmalarının ardından kendi yarattığı dil olan B'yi geliştirmiştir ve B ile UNIX'in ilk versiyonları üzerinde, Bell Laboratuarlarında, DEC PDP-7 bilgisayarı ile çalışmıştır. Bu iki dilde de, her veri hafızada bir word ( 16 bit ) alan kaplamaktaydı ve değişkenlerin yazımı programcıya ağır bir yük getiriyordu.
B01.7 C Programlama Diline Dair 34 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C dili, 1972'de bu çalışmaların izinde yine Bell Laboratuarlarında Dennis Ritchie tarafından DEC PDP-11 bilgisayarlarında geliştirilmiştir. C, BCPL ve B dillerinin önemli bir çok kavramını kullanırken, veri yazımı ve daha bir çok güçlü özellikleri de içerir. C, genel anlamda bir işletim sistemi olan UNIX' in geliştirilmesinde kullanılmasıyla ün kazanmıştır. Bugün, bütün yeni işletim sistemleri C ve/veya C++ ile yazılmaktadır.
B01.7 C Programlama Diline Dair 35 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Geçen yirmi yıl içinde C, bütün bilgisayarlar için uygun hale getirilmiştir. C, donanımdan bağımsızdır. Bu yüzden C'de dikkatli bir biçimde yazılmış bir program her bilgisayara taşınabilir. 1970'lerin sonunda C, şu anda geleneksel C olarak bilinen haline geldi. 1978 yılında Kernighan ve Ritchie tarafından yazılan, The C Programming Language adlı kitabın yayınlanmasından sonra, C'ye olan ilgi artmıştır. Bu yayın, bütün zamanların en iyi bilgisayar kitaplarından biridir.
B01.7 C Programlama Diline Dair 36 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C'in değişik tipte bilgisayarlarda ( donanım platformlarında ) yayılması, birbirine benzer ama genellikle uyumsuz bir çok çeşidinin ortaya çıkmasına sebep olmuştur. Bu, değişik platformlarda çalışacak kodlar yazan program geliştiricileri için ciddi bir problem haline gelmişti. Bu sebeplerden dolayı, C'nin standart bir versiyonuna ihtiyaç duyulduğu anlaşıldı. 1983 yılında, American National Standards Committee'nin bilgisayar ve bilgi işlem komitesinde ( X3 ), X3J11 adı altında teknik bir komite oluşturuldu ve C'nin sistem bağımsız bir tanımı yaptırıldı.
B01.7 C Programlama Diline Dair 37 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) 1989 yılında bu standart onaylandı ve 1999 yılında da tekrar gözden geçirildi. Bu standart, ISO/IEC 9899:1999 olarak adlandırıldı ve ISO tarafından onaylandı.
B01.8 Standart C Kütüphanesi 38 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) İlerleyen bölümlerde göreceğimiz gibi, C programları fonksiyon adı verilen parçalardan ya da modüllerden oluşur. Elbette kendi fonksiyonlarınızı yazmanız mümkündür ama çoğu programcı, C standart kütüphanesindeki hazır fonksiyonları kullanır. Bu sebepten, C öğrenmede aslında iki kısım vardır. İlk kısım, C dilinin kendisini ikinci kısım ise C standart kütüphanesindeki fonksiyonlarının nasıl kullanılacağını öğrenmekten oluşur. Bu derste, bu fonksiyonların önemli bir kısmını inceleyeceğiz. Kütüphane fonksiyonları hakkında daha detaylı bir araştırma yaparak bu fonksiyonların nasıl kullanılacağını öğrenmek ve bu fonksiyonları kullanarak taşınabilir kodlar yazmak için P.J.Plauger'ın The Standard C Library adlı kitabını incelenebilir.
B01.8 Standart C Kütüphanesi 39 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bu ders boyunca yapacağınız çalışmalarda tekerleği yeniden icat etmekten kaçının, daha önceden hazırlanmışprogram parçalarını kullanarak, daima nesneye yönelik programlamanın temelini oluşturan yeniden kullanılabilirlik kavramını aklınızda tutun. C ile çalışırken genellikle aşağıdaki blokları kullanacaksınız. C standart kütüphane fonksiyonları. Kendi yazdığınız fonksiyonlar. Diğer programcıların yazdığı fonksiyonlar.
B01.8 Standart C Kütüphanesi 40 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Kendi fonksiyonlarınızı yazmanın avantajı, bu fonksiyonların nasıl çalışacaklarını tam olarak bilmenizdir. Böylece, bu C kodlarını kolaylıkla inceleyebilirsiniz. Olumsuz taraf ise yeni fonksiyonlar yazmanın ve geliştirmenin oldukça zaman almasıdır. Eğer daha önceden yazılmış fonksiyonları kullanırsanız, böylelikle tekerleği yeniden icat etmekten kurtulabilirsiniz. ANSI standart fonksiyonlarını kullanırken, bunların oldukça özenli bir biçimde yazıldığını ve ANSI C koşullarına uyan tüm sistemlerde çalışabileceğine emin olabilirsiniz. Böylelikle programlarınız daha taşınabilir olacaktır.
B01.9 Yazılımda Nesne Kavramı 41 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Donanım maliyetleri son yıllarda, kişisel bilgisayarlar bir eşya haline gelene kadar hızlı bir düşüş gösterdi. Fakat yazılım geliştirme maliyetleri, programcılar yazılım geliştirme teknolojilerinin temellerinde önemli bir iyileştirme yapmadan daha güçlü ve karmaşık uygulamalar gerçekleştirdikçe, sabit bir şekilde arttı. Bu derste yazılım geliştirme maliyetlerini azaltacak bir çok yöntem öğreneceksiniz. Yazılım toplumunda bir devrim başlıyor. Yeni ve daha güçlü yazılımların yerinde saydığı bir anda hızlı, ekonomik, doğru yazılımı geliştirmek hala ulaşılamaz bir hedef olarak duruyor.
B01.9 Yazılımda Nesne Kavramı 42 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Nesneler, gerçek hayattaki parçaları modelleyen ve yazılım içinde tekrar tekrar kullanabilen parçalardır. Yazılım geliştirenler ; modüler, nesneye yönelik tasarımlar ve yerine koyma yaklaşımıyla, yazılım geliştirme gruplarının eski programlama tekniklerini kullanarak yazabilecekleri programlardan daha yaratıcı olabileceklerini keşfetmeye başlamışlardır. Nesne yönelimli programlar genellikle daha kolay anlaşılır, düzeltilir ve değiştirilir.
B01.9 Yazılımda Nesne Kavramı 43 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Yazılım teknolojisindeki değişim, 1970'lerde, yapısal programlamanın (ve yapısal system analizi ve tasarımı ile konuların) yararlarının fark edilmesiyle başlamıştır. Ancak nesneye yönelik programlamanın, 1980'lerde yaygınlaşmaya başlaması ve 1990'larda iyice yaygınlaşmasıyla, yazılım geliştirenler yazılım geliştirme sürecinin iyileştirilmesinde büyük adımlar atmak için gerekli tüm malzemeyi bulduklarını düşündüler. Aslında nesne teknolojisinin geçmişi 1960'ların ortalarına rastlar. C++ programlama dili 1980'lerde AT&T'de Bjarne Stroustrup tarafından geliştirildi.
B01.9 Yazılımda Nesne Kavramı 44 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C++ aslında iki dile dayanır. AT&T tarafından UNIX işletim sistemini geliştirmek için kullanılan C ve 1967'de Avrupa da geliştirilen Simula67. C++, C'nin tüm özelliklerini alıp Simula'nın nesne yaratma ve işletme özelliklerini bünyesine eklemiştir. C ya da C++ 'nın AT&T laboratuarları dışında kullanılması düşünülmemişse de ikisinin de yayılması çok hızlı olmuştur. Peki nesne nedir ve nesneler neden özeldir? Nesne teknolojisi, belirli uygulama alanlarında büyük ve odaklanmış anlamlı yazılım birimleri oluşturmamıza yardımcı olan paketleme şemasıdır. Her isim, bir nesne olarak gösterilebilir. Örneğin, tarih nesneleri, zaman nesneleri, ses nesneleri, video nesneleri, dosya nesneleri, kayıt nesneleri.
B01.9 Yazılımda Nesne Kavramı 45 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Nesnelerle dolu bir dünyada yaşıyoruz. Etrafınıza bir bakın bir çok nesne göreceksiniz ; arabalar, uçaklar, insanlar, hayvanlar, binalar, trafik ışıkları, anahtarlar ve benzerleri. Nesne yönelimli dillerden önce, programlama dilleri ( FORTRAN, PASCAL, BASIC ve C gibi ) nesneler yerine eylemlere odaklanmıştı. Nesnelerle dolu bir dünyada yaşayan programcılar, bilgisayarların başına geçince eylemlerle uğraşıyorlardı. Bu numune değişimi, program yazmayı hantal hale getiriyordu. Şimdi ise Java, C++ ve bir çok diğer nesneye yönelik programlama dilleri sayesinde programcılar, normal yaşamlarında olduğu gibi bilgisayarlarının karşısında da nesnelerle uğraşmaya devam ederler. Bu, onların programlarını dünyayı gördükleri biçimde yazmaları anlamına gelir.
B01.9 Yazılımda Nesne Kavramı 46 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Şimdi ise Java, C++ ve bir çok diğer nesneye yönelik programlama dilleri sayesinde programcılar, normal yaşamlarında olduğu gibi bilgisayarlarının karşısında da nesnelerle uğraşmaya devam ederler. Bu, onların programlarını dünyayı gördükleri biçimde yazmaları anlamına gelir. Bu, Procedural programlamadan daha doğal bir yoldur ve verimliliğin artmasına önemli katkılarda bulunmuştur. Kendi kodlarınızı yazmanın avantajı, bu kodun nasıl çalışacağını bilmenizdir ve inceleyebilmenizdir. Olumsuz tarafı ise zaman alması ve yeni bir kod tasarlamak ve yazmanın oldukça fazla uğraş gerektirmesidir.
B01.10 C++ Programlama Dili 47 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C++ programlama dili, C'nin, BELL laboratuarlarında Bjarne Stroustrup tarafından geliştirilmiş halidir. C++, C'yi daha güçlü hale getiren bir çok özellik sunar ve daha önemlisi C++, nesneye yönelik programlama yeteneklerine sahiptir. Nesneler, gerçek hayattaki araçları modelleyen ve yeniden kullanılabilir yazılım parçalarıdır. Yazılım toplumlarında bir devrim gerçekleşmektedir. Yeni ve daha güçlü yazılımların yerinde saydığı bir zamanda hızlı, ekonomik ve doğru yazılımı gerçekleştirmek hala ulaşılamaz bir hedef olarak duruyor.
B01.10 C++ Programlama Dili 48 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Yazılım geliştirenler modüler, nesneye dayalı tasarımlar ve yerine koyma yaklaşımıyla, yazılım geliştirme gruplarının, eski programlama teknikleriyle mümkün olandan on ile yüz kat arasında daha yaratıcı olduklarını keşfettiler. C++, hem endüstride hem de üniversitelerde en önemli dil haline geldi. Çoğu insan, en iyi eğitim taktiğinin önce C'yi tam anlamıyla öğrenip daha sonra C++ ı çalışmanın olduğunu düşünmektedir. Bu yüzden, temel C konularının ardından C++ konularıda bu dersin ilerleyen bölümlerinde değinilecektir.
B01.11 Diğer Yüksek seviyeli Programlama Dilleri 49 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bugüne kadar yüzlerce yüksek seviyeli dil geliştirilmiştir ancak bunlardan yalnızca birkaçı şu an kullanımdadır. FORTRAN ( Formula translator ), IBM tarafından 1954 ile 1957 yılları arasında bilimsel uygulamalarda ve mühendislik uygulamalarında kullanılan matematik hesaplamalarını yapmak için geliştirilmiştir. Fortran, özellikle mühendislik uygulamalarında hala yaygın bir biçimde kullanılmaktadır.
B01.11 Diğer Yüksek seviyeli Programlama Dilleri 50 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) COBOL ( Common Bussiness Oriented Language ) 1959'da, bilgisayar üreticileri, devlet ve endüstriyel bilgisayar kullanıcıları tarafından geliştirilmiştir. COBOL, büyük verilerin kullanılmasını gerektiren ticari uygulamalarda kullanılmaktadır. Bugün iş yazılımlarının yarıdan fazlası COBOL ile programlanmaktadır. Pascal ise C ile aynı zamanlarda, Profesör Niklaus Wirth tarafından akademik kullanım amacıyla geliştirilmiştir.
B01.12 Yapısal Programlama Kavramı 51 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) 1960'larda yazılım geliştirme çabaları ciddi zorluklarla karşılaştı. Yazılım takvimleri genellikle geç kalıyordu, maliyetler yatırımları aşıyordu ve bitirilmiş projeler yeterince iyi değildi. İnsanlar, yazılım geliştirmenin düşünülenden çok daha zor bir iş olduğunun farkına vardılar. 1960'lardaki araştırma çalışmaları, yapısal programlamanın ortaya çıkmasına sebep olmuştu. Yapısal programlama ile programları daha açık, daha doğru ve değiştirilmesi daha kolay yazabilmek için bir disiplin oluşturulmuştu. İlerleyen bölümlerde yapısal C programları geliştirme üzerine olacaktır.
B01.13 C nin Önemine Dair 52 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Pascal, Basic, Java gibi diler kendi amaçları doğrultusunda çok önemli işler başarmış olsalarda C dilinin vazgeçilemezliği ortadadır. Bunun başlıca nedenleri Yapısallık: C kaynak programı fonksiyon ve kod bloklarından oluşan bir yapıdadır. Onu sadece yazan değil okuyan kişide ne yaptığını anlar ve gerekli düzenlemeleri, hata ayıklamalarını kolaylıkla yapabilir. Modüler Yapı: Fonksiyonlar ve kod blokları bir araya getirilerek modüller oluşturulabilir. Modüller başka programlarca çağrılabilir ve güncellenebilir. Tekrar kullanılabilme: modüller ve programlar başka programlarca tekrar be tekrar kullanılabilir. Etkinlik: C dili makine dili ile üst düzey diller arasında bir yerde konumlanır. Bu nedenle hem sistemle ilgili hemde üst düzey işlerle ilgili problemleri çözebilir.
B01.13 C nin Önemine Dair 53 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Hız: Makine diline yakın olduğu için çok hızlı çalışır. Esneklik: işletim sistemi, ağ, web, grafik, hesap tabloları, derleyici yazmak, başka bir dil yazmak gibi çok geniş uygulama alanları vardır. Taşınabilirlik: C dilinde yazılan herhangi bir program farklı işletim (bazen küçük değişiklikler gerekebilir) sistemlerinde de çalışır. Genişleyebilme: Makine diline yakın olması sebebiyle programcılar, standart C dilinde olmayan kodlar yazarak yeni kodlar oluşturabilir ve C dilinin parçasıymış gibi çalıştırabilirler. Zengin Kütüphane: C dili standartlaşmış fonksiyonlardan oluşan ve çok farklı işlerde kullanılabilen zengin bir kütüphaneye sahiptir. Bu fonksiyonlar #include deyimiyle çağrılır ve istendiği kadar sıklıkla kulanılabilir.
B01.13 C nin Önemine Dair 54 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Neden C? Her türlü emeğe değecek kadar iyi ve güçlü bir dildir. İşletim sistemleri, sürücüler, derleyiciler gibi bugün kullandığımız teknolojinin klasikleşmiş bir enstrümanıdır. Bugün geliştirilen modern diller çoğunlukla C tabanlıdır. Temel programcılık esaslarının kavranması için vazgeçilmezdir. C öğrendikten sonra C++, C# yada diğer dillere geçerken bir temel oluşturur.
B01.14 Çalışan Bir C Programı Üretim Süreci 55 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Program düzenlemesi/yazımı Kaynak Kodu Derleyici Nesne/Ob ject Kodu Kütüphane Dosyaları Nesne Kodu ile Bağlantı Executable Kode (Yürütücü Kod)
B01.15 Etkileşimli Geliştirme Ortamı (IDE) 56 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Geliştirme Ortamı : Bu ders boyunca Dev C++ IDE (Integrated Development Environment) ortamını program derleme aracı olarak kullanacağız. Öğrenciler bu programlama ortamını ücretsiz olarak: http://orwelldevcpp.blogspot.com.tr/ Adresinden indirerek bilgisayarlarına kurabilirler.
B01.16 DevC++ IDE 57 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C programı geliştirme ortamı olarak DevC++ IDE (Integrated Development Environment) I kullanacağız. http://orwelldevcpp.blogspot.com.tr/ GNU General Public License altında ücretsiz kullanıma sunulmuş bir C programlama ortamıdır. Buradan ilgili programın kurulum dosyasını indirmek için ayrıca bir Sourceforge bağlantısı mevcuttur. Default kurulum özelliklerini kullanınız. (diğer bir deyişle yes, yes, yes gibi) Sadece windows makinelerde çalışmaktadır. Programlarınızı.c uzantılı olarak kaydedin,.cpp DEĞİL!!!
B01.16 DevC++ IDE 58 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş)
B01.17 İlk Program 59 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş)
B01.17 İlk Program 60 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Burası yorum/bilgilendirme amaçlandır. Derleyici /* ve */ arasındaki hiçbirşeyi dikkate almaz, bu kısım yokmuş gibi davranır. Okuyucuya kod içinde ne olduğu hakkında bilgi verir. Programlamanın hayati bir parçasıdır.
B01.17 İlk Program 61 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bu kısım bir öncü-işlemci (pre-processor) emridir. öncü-işlemci emri, herzaman # işareti ile başlar. Derleyiciye, stdio.h isimli bir kütüphane dosyasını içermesini söyler. Bu dosyayı içerdikten sonra, stdio.h dosyasının tüm fonksiyonlarından/özelliklerinden dilediğimiz ölçüde faydalanabiliriz. # ve include arasında hiçbir boşluk bulunmaması gerektiğine dikkat etmemiz gerekir.
B01.17 İlk Program 62 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) main fonksiyonunun standart tanımı; Tüm C programlarının main diye isimlendirilen bir fonksiyonu olmak zorundadır. Bir program çalışmaya, main fonksiyonu ile başlar. Fonsiyonar mutlaka bir değere atanmalıdırlar.
B01.17 İlk Program 63 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bizim programımızda int, main fonksiyonunun atanma türünü verir. void yazılması, fonksiyonun herhangi bir değere atanmayacağını gösterir. (), birbirinden virgülle ayrılmış bir dizi parametreyi içerir. Bizim programımız içinse parametre listesi yoktur.
B01.17 İlk Program 64 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Parantez içine void yazabileceğimiz gibi boş da bırakabilirdik. Boş (), parametreyi void olarak otomatik algılar.
B01.17 İlk Program 65 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Dalgalı parantez işaretleri, main fonksiyonunun başlangıç ve bitiş yerlerini göstermektedir. Bütün fonksiyon tanımları için zorunlu Bu dalgalı parantezler aynı zamanda ilerde inceleyeceğimiz diğer kod bloklarının ayrılması için kullanılır.
B01.17 İlk Program 66 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bu satır, Stdio.h içinde tanımlanmış ve printf olarak isimlendirilen fonksiyonu çağrır. printf fonksiyonu, çift tırnak içinde yazılmış olan bütün dizgiyi (string) ekrana yazar. \n karakterleri, ekranda görünmezler. Bu karakterler kaçış dizisi (escape sequences) olarak isimlendirilirler. \n, bilgisayara yeni bir satıra geçmesini söyler. Kaçış dizileri hakkında ilerde daha fazla konuşacağız.
B01.17 İlk Program 67 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) system fonksiyonuda stdio.h dosyası içinde tanımlanmıştır. pause kelimesi, bilgisayara bu satırdan itibaren klavyede herhangi bir tuşa basılıncaya kadar çalışmasını durdurmasını söyler.
B01.17 İlk Program 68 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bu ifade bilgisayara main fonsiyonundan çıkmasını söyler. 0 a dönme, main fonksiyonundan başarılı bir şekilde çıkmayı gerektirir.. Bir fonksiyonun Return yapılan değeri, return çeşidi ile aynı olmalıdır. Eğer return yapılan değer bir int dan farklı ise, SelamDunya.c programında bir derleme hatasına neden olacaktır.
B01.17 İlk Program 69 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş)
B01.17 İlk Program 70 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) /* B01_Uygulama01.c Ekrana 3 arkadaşınızı alt alta yazan bir program yazınız. 1. ve 2. arasında 1 satır, 2. ve 3. arasında 4 satır boşluk bulunsun. */
B01.17 İlk Program 71 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) /* B01_Uygulama02.c Ekrana 5 tane arkadaşınıza ait bilgileri aşağıdaki formata uygun olacak şekilde ekrana yazdıran bir program yazın */
B01.18 C de Değişken Tipleri 72 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Hemen hemen tüm programlar bir takım değişkenler üzerinde işlem yaparlar. Bunu gerçekleştirebilmek için, bir programın dataları saklaması ve gerektiğinde çağırması gerekir. Farklı tipteki değişkenler farklı tipteki dataarın saklanmasına olanak verir: Data Types yada Data tipleri Örneğin 445 ve 810.56 gibi iki sayıyı saklamak zorunda iseniz, C programlama dili farklı türde iki data tipine ihtiyacınız olduğunu söyler.
B01.18 C de Değişken Tipleri 73 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Tüm değişkenler üç bileşenden oluşur. Bir isim Bir adres Ve Bir tutulan değer Örneğin, bir değişken atadığımızda int hiz; Derleyici bir tamsayı değişkeni için bir alan açar (4 bytes) Bu hafıza alanıprogramınız içinde ulaşılabilir bir adrese sahiptir. Bu değişkene şu şekilde bir başlangıç değeri atarsak hiz = 65; Derleyici 65 tam sayısını, hiz değişkeni için hafıza uzayında ilgili adreste saklar. Burada =, değerleri değişkenlere atayan bir atama operatörüdür.
B01.18 C de Değişken Tipleri 74 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Biribirine benzer sembollerden oluşan isimlendirmelerden kaçının: 1 ve l, O ve 0 gibi İsimlendirmelerde standart kütüphane isimlerini kullanmaktan kaçının stdio gibi
B01.18 C de Değişken Tipleri 75 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Değişken isimleri harflerden, sayılardan ve altçizgi işaretlerinden oluşabilir. İlk karakter bir harf yada alt çizgi işareti olmalıdır. Alt çizgi işareti, ilk karakter olabilir fakar bu tip isimlendirmelerden kaçınmakta fayda vardır. Büyük harf küçük harf farkeder! int hiz komutu, int HiZ yada int Hiz ile aynı değildir. Türkçe karakterlerden (ö,ğ,ş,ç,i,ü gibi) kaçınmak gerekir.
B01.18 C de Değişken Tipleri 76 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C anahtar sözcükleri, değişken ismi olarak kullanılamaz. arabaismi, selam, xc45a,... /* UYGUN */ _2013_vergi_odemesi /* UYGUN fakat kaçınmakta fayda var*/ Selam#C_programcisi /* UYGUN DEĞİL */ float, double, int /* çalışmaz */ 2kere2kaceder /* UYGUN DEĞİL */ önder2 /* çalışmaz */
B01.18 C de Değişken Tipleri 77 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş)
B01.18 C de Değişken Tipleri 78 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C de sadece birkaç tür data tipi vardır. char: bir tek byte tır, sadece tek bir karakter saklar, örneğin a, bununla beraber bu datalar tam sayı değerli ASCII sayıları gibi standartlandırılmış tam sayı değerli olarak saklanır. int: sabit uzunlukta, bir tamsayı, genellikle 4 bytes / 32 bits. Örneğin 10 tam sayısı int tipindeki bir değişkenle saklanır. float: rasyonel sayılar, tek hassasiyetli, örneğin 10.67 double: float ile aynı hassasiyette fakat float ın iki katı hassasiyette
B01.Ek Özet ve Bazı Notlar 79 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Yazılım (bilgisayarın işlemler yapması ve karar vermesi için yazılan emirler), bilgisayarı kontrol eder (genellikle donanım olarak adlandırılır). ANSI C, C programlama dilinin, 1989 yılında Amerika'da American National Standards Instute(ANSI) ve tüm dünyada Internationals Standards Orgranization(ISO) tarafından standart hale getirilmiş sürümüdür. 25 yıl önce büyük odaları dolduran ve milyonlarca dolara mal olan bilgisayarlar bugün tırnağımızdan daha küçük silikon çipler üzerinde yalnızca bir kaç dolara mal edilmektedir.
B01.Ek Özet ve Bazı Notlar 80 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Dünya çapında, insanlara iş, endüstri, hükümet ve kendi kişisel yaşamlarında yardımcı olan genel amaçlı 150 milyon bilgisayar bulunmaktadır. Bir kaç yıl içinde bu sayı ikiye katlanacaktır. Bilgisayar, insandan milyonlarca ve hatta milyarlarca kez hızlı bir biçimde karar verme ve işlem yapma yeteneğine sahip cihazlardır. Bilgisayarlar, verileri bilgisayar programları kontrolünde işlerler. Donanım olarak bilinen çeşitli cihazlar (klavye, ekran, disk, hafıza, işlemci üniteleri) bir araya gelerek bir bilgisayar sistemi oluştururlar. Bilgisayarda çalışan programlar yazılım olarak adlandırılır.
B01.Ek Özet ve Bazı Notlar 81 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Giriş ünitesi, bilgisayarın bilgileri aldığı kısımdır. Bugünkü bilgisayarlarda bilgi genellikle klavye sayesinde girilir. Çıkış ünitesi, bilgisayarın bilgi çıkışının alındığı kısmıdır. Günümüzde bilgiler genellikle ekranda ya da kağıt üzerinde alınır. Hafıza, bilgisayarın verileri depoladığı kısımdır ve genellikle hafıza yada birincil hafıza olarak adlandırılır. Aritmetik Mantık Ünitesi (ALU), işlemler yapar ve kararlar verir. Merkezi İşlemci Ünitesi (CPU), bilgisayarın koordinasyonundan ve diğer kısımları kontrolünden sorumludur.
B01.Ek Özet ve Bazı Notlar 82 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Diğer üniteler tarafından kullanılmayan programlar ya da veriler yeniden kullanılana kadar genellikle ikincil hafıza araçlarına (disk) kaydedilir. Tek kullanıcılı yığın işlemede, bilgisayar, verileri gruplar yada yığınlar halinde işlerken yalnızca bir program çalıştırır. İşletim sistemleri, bilgisayarlardan en iyi performansı almak ve bilgisayarları en uygun biçimde kullanabilmeyi sağlamak için yazılmış yazılım sistemleridir. Çoklu programlama kullanım sistemleri, bilgisayarda birden fazla işi eş zamanlı olarak yapabilmemizi sağlar. (Bilgisayar, kaynaklarını işler arasında paylaştırır.)
B01.Ek Özet ve Bazı Notlar 83 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Zaman paylaşımı, çoklu programlamanın kullanıcının bilgisayara terminaller sayesinde ulaştığı özel bir halidir. Kullanıcılar eş zamanlı olarak çalışıyormuş gibi görünür. Çoklu kullanımda bir organizasyonun bütün hesap işleri, işlemlerin yapıldığı sitelere ağ sayesinde dağıtılır. Sunucular, çoklu kullanım sırasında istemcilerin ihtiyaç duyabileceği program ve verileri depolar. Buna, istemci/sunucu sistemler denir.
B01.Ek Özet ve Bazı Notlar 84 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bir bilgisayar yalnızca kendine ait makine dilini anlayabilir. Makine dilleri genellikle bilgisayara işlemler yaptırabilmek için sayıların belirli dizilerini içerir. (Çoğunlukla bu sayılar 1 ve 0'lara indirgenir.) Makine dilleri her makinede farklılık gösterebilir. İngilizce ye yakın kısaltmalar assembly dillerinin temelini oluşturmuştur. Assembler adı verilen programlar bu dilde yazılmış programları makine diline çevirir. Derleyiciler, yüksek seviyeli dillerle yazılmış programları makine diline çevirir. Yüksek seviyeli diller İngilizce kelimeler ve geleneksel matematik gösterimlerini içerir.
B01.Ek Özet ve Bazı Notlar 85 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Yorumlayıcı programlar, yüksek seviyeli dillerle yazılmış programları derlemeden çalıştırabilir. Derlenmiş programlar, yorumlanmış programlardan daha hızlı çalışmalarına rağmen, yeni özelliklerin ekleneceği ve hataların düzeltileceği program geliştirme ortamlarında yorumlayıcılar daha çok kullanılırlar. Bir program geliştirildikten sonra derlenmiş sürümü oluşturularak daha verimli çalışması sağlanır. C, UNIX işletim sisteminin geliştirme dili olarak bilinir. C ile çoğu bilgisayarda çalışabilecek programlar yazmak mümkündür.
B01.Ek Özet ve Bazı Notlar 86 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) ANSI C standardı, 1989 yılında onaylanmış, 1999 yılında gözden geçirilmiştir. FORTRAN matematik işlemleri için, COBOL ticari uygulamalar için kullanılır. Yapısal programlama, daha açık, test etmesi, hata ayıklaması ve değiştirilmesi dahakolay programlar yazmak için geliştirilmiş bir yaklaşımdır. PASCAL, yapısal programlamayı akademik çevrelerde öğretmek için geliştirilmiştir. Çoklu görev, programcıların paralel işler yapabilmesini sağlar.
B01.Ek Özet ve Bazı Notlar 87 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bütün C sistemleri üç kısım içerir: Ortam, dil ve standart kütüphaneler. Kütüphane fonksiyonları C dilinin kendisinin parçası değildir. Bu fonksiyonlar, giriş/çıkış ve matematik hesaplamaları gibi işlemleri gerçekleştirir. C programları çalıştırılana kadar altı safhadan geçer: Yazım, önişleme, derleme, bağlama, yükleme ve çalıştırma. Bir programcı, programını ve gerekli düzeltmeleri editör adı verilen programlarla yapar. C dosya isimleri, UNIX tabanlı sistemlerde.c uzantısı ile biter. Derleyici, C programını makine dili koduna (nesne kodu) çevirir.
B01.Ek Özet ve Bazı Notlar 88 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) C önişlemcisi, derlenecek dosyanın içine bazı özel işaretler yerleştirmek ve dosyalar eklemek gibi önişlemci komutlarını yerine getirir. Yükleyici, çalıştırılabilir programı diskten alıp hafızaya gönderir. Sıfıra bölme gibi hatalar program çalışırken ortaya çıkar. Bu sebepten, çalışma zamanı hataları olarak adlandırılır. Sıfıra bölmek genellikle ölümcül bir hatadır. Ölümcül hatalar programın, hiçbir çıktı üretmeden aniden sonlanmasına sebep olur. Ölümcül olmayan hatalar, programın yanlış çıktı oluşturmasına sebep olur.
B01.Ek Özet ve Bazı Notlar 89 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B01. Bilgisayar Programlamaya Giriş) Bir bilgisayar, CPU kontrolü altında programın her emrini bir anda çalıştırır. C++ nesneye yönelik programlama yeteneklerini içerir. Nesneler, gerçek dünyadaki araçları modelleyen yeniden kullanılabilir yazılım parçalarıdır.