660 likes | 1.22k Views
Bilgisayar Programlamaya Giriş. Yrd. Doç.Dr. Nilgün GÜLER BAYAZIT e-mail:guler@yildiz.edu.tr. Dersin Amacı. Karşılaştıkları problemleri bilgisayar ortamında çözebilme becerisi Algoritma analiz etme becerisi. Ders Konuları. Programlamaya giriş: C Dili Veri tipleri
E N D
Bilgisayar Programlamaya Giriş Yrd. Doç.Dr. Nilgün GÜLER BAYAZIT e-mail:guler@yildiz.edu.tr
Dersin Amacı • Karşılaştıkları problemleri bilgisayar ortamında çözebilme becerisi • Algoritma analiz etme becerisi
Ders Konuları • Programlamaya giriş: C Dili • Veri tipleri • Ekran Giriş/Çıkış komutları • Program kontrol ifadeleri • Döngüler • Fonksiyonlar • Pointer’lar • Stringler
Kaynaklar • Ders Notları • C How TO Program, Deitel & Deitel, 4th edition.
Puanlama • 1. Vize (%20) • 2.Vize (%25) • Ödevler (%15) • Final (%40)
Genel Kavramlar Bilgisayarın Temel Birimleri Bilgi Saklama Bilgisayara İstediğimiz İşleri Nasıl Yaptırırız C Programlama Dili Nedir? C Programının Derlenmesi TOC
Bilgisayar Bilgisayar Donanım (Hardware) Yazılım (Software)
Bilgisayarda Bilgilerin Kodlanması • Bilgisayarda bilgiler, iki farklı durumun belirlenmesi ile kodlanır. • Bu iki farklı durum: • Bir telden akım geçip geçmemesi, • Bir kartın delinip delinmemesi • Manyetik şerit üzerinde bir bölgenin N veya S kutup • Matematiksel olarak bu iki farklı durum 0(sıfır) ve 1 (bir) ile gösterilir.
Bilgi Saklama Bir Bit Bilgi Saklama Bir Bayt Bilgi Saklama Bir bayt alanı içinde 256 (28) farklı bilginin saklanması mümkündür.
Bilgi Saklama (101)2 = (1 x 22) + (0 x21) + (1 x 20) (101)2 = (1 x 4) + (0 x 2) + (1 x 1) = (5)10
Bilgi Saklama ASCII Karakter Seti
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 ayrılmalıdır.
“Discourse on Methods” Descartes • Doğruluğu kesin olarak kanıtlanmadıkça, hiç birşeyi doğru olarak kabul etmeyin; tahmin ve önyargılardan kaçının • Karşılaştığınız her güçlüğü mümkün olduğu kadar küçük parçalara bölün • Düzenli bir şekilde düşünün; anlaşılması en kolay olan şeylerle başlayıp yavaş yavaş daha zor ve karmaşık olanlara doğru ilerleyiniz • 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
Bilgisayara İstediğimiz İşlemleri Nasıl Yaptırırız? • Algoritmalar: • Belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.
Her algoritma aşağıdaki kriterleri sağlamalıdır. • 1.Girdi: sıfır veya daha fazla değer dışarıdan verilmelidir. • 2. Çıktı: En azından bir değer üretmeli • 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 veya kağıt ile yürütebileceği kadar basit olmalı
Bilgisayara İstediğimiz İşlemleri Nasıl Yaptırırız? Algoritma Örnek: Telefon Etmek • Başla • Ahizeyi kaldır • Sinyali kontrol et, sinyal yoksa arızaya haber ver ve 9. adım’a git • Eğer telefon numarası yurt dışında ise iki kere sıfır tuşuna bas ve ülke ve alan kodunu tuşla, 6. adıma git • Eğer telefon numarası şehir dışında ise bir kere sıfır tuşuna bas ve alan kodunu tuşla • Telefon numarasını tuşla • Eğer hat meşgul ise ya da cevap vermiyorsa 9. adıma git • Telefon konuşmasını gerçekleştir • Telefonu kapat • Bitiş
Bilgisayara İstediğimiz İşlemleri Nasıl Yaptırırız? Komut Koşul Veri A Akış Şeması İşlem(Process): Yapılması istenen işlemle ilgili tanımlamalar Karar (Decision):Bir karara bağlı olarak farklı yolların izlenmesi Veri (Data):Her farklı veri grubu için farklı isim verilmelidir. Doküman Doküman:Çıktı olarak gösterilmek istenen veriler ve işlemler Bağlantı:Büyük yazılımlarda bir sonraki sayfadaki işlemlerin hangi noktadan devam edeceğini göstermesi Başla/Bitir:Akış şemasının başlangıç ve bitiş noktaları Başla/Bitir
Bilgisayara İstediğimiz İşlemleri Nasıl Yaptırırız? Başla Ahizeyikaldır Arızayahaber ver Sinyal var mı? Hayır Evet Bir kere sıfıra bas ve şehir kodunu tuşla İki kere sıfıra bas ve ülke , alan kodunu tuşla Evet Şehir dışı mı? Hayır Yurt dışı mı? Evet Hayır Telefon numarasını tuşla Telefon konuşmasını gerçekleştir Telefonu kapat Hayır Meşgul/ cevap yok? Evet Bitir Örnek: Telefon Etmek
Yazılım(Software) • İşletim Sistemi (MS Windows xx, Unix, IBM –OS, etc) • Database Programları (Oracle, Sybase, MS SQL Server, etc.) • Office programları (Word, Excel, Powepoint) • Programlama dilleri (QBasic, Fotran, Pascal, C, C++, .Net etc.)
Programlama Dilleri Tarihçesi(Sembolik kodlar) • Assembly (makina kodu) • FORTRAN (FORmula TRANslation –1954) (matematiksel işlem ağırlıklı, bilgisayara bağımlılık göstermeyen bilimsel çalışmalarda kullanılmak üzere) • COBOL (Common Business-Oriented Language) (Bilgi depolamak ve işlemek) • Yüksek seviyeli diller (PL/I, Algol, Pascal, Basic,...)
Dillerin Karşılaştırması • Düşük seviyeli Diller • Hızlıdır • Yüksek Seviyeli Diller • Kolay anlaşılır • Kolay yazılabilir • Her bilgisayarda uygulanabilir • Çok hızlı programlar yazmak mümkün olmamıştır
Programlama Dilleri Türleri • Sırasal diller (Q basic) • Yapısal Diller (pascal, C) • Nesne Yönelimli Diller (C++, Java, EIFELL, .Net)
C’nin Kısa Öyküsü • 1970 AT&T Bell Lab. Dennis M.Ritchie • B dili üzerine kurulu bir yapı • Unix işletim sisteminin yazımı için yaratıldı • Bell Lab., Akademik çevre, askeri proje • 1975 yılından itibaren her yerde...
C’nin avantajları • C’de yazılan programlar Assembler’a göre daha kısa zamanda yazılabilir, daha anlaşılabilir ve daha hızlıdır • C derleyicileri sahip oldukları geniş fonksiyon kütüphaneleri ve zengin işlemci grubu sayesinde esnek bir yapıya sahiptir. • İfadelerden tasarruf sağlar:normal matematiksel ifadeler, C’nin zengin operatörleri vasıtasıyla çok daha kısa ve basit bir biçime getirilebilir. • Diğer sistemlere adapte edilebilen büyük programlar hızlı bir şekilde kolayca yazılabildiği için özellikle sistem programlamalarında tercih edilir.
C Programlama Dili Nedir? Makine diliyle iki sayıyı toplamak: 01000011100011010000111000... • Assembly diliyle iki sayıyı toplamak: • LOAD X • ADD Y • STORE Z • C derleyicisi bir çok farklı donanım üzerinde çalışabilir. • C ile sistem üzerinde en alt düzeydeki fonksiyonlara erişilebilir • C ile yazılmış olan programlar oldukça hızlı çalışabilmektedir.
C Programının Derlenmesi • Programın yazılması • Yazım kuralları kontrolü • Ön işlemcinin çalışması ve programın derlenmesi • Programın kütüphaneden kullanılan fonksiyonlar ile bağlanması (Birleştirme) • Çalışabilen program kodunun elde edilmesi • Programın çalıştırılması
Önişlemci program kodu işler Compilerobject code yaratır ve hardiskte saklar Compiler Linker object code libraries’e linkler Primary Memory Loader Loader programı memori’ye yükler. Primary Memory CPU her bir Instruction’ı alır ve execute eder CPU Preprocessor Linker Editor Disk Disk Disk Disk Disk . . . . . . . . . . . . • C Programın fazları: • Edit • Preprocess • Compile • Link • Load • Execute Program editör yazılır ve harddiskte saklanır
C’nin Program Yapısı Preprocessor Direktifleri Global değişken bildirileri Fonksiyon Prototipleri Fonksiyon tanımlamaları main() { İfade_1; İfade_2; İfade_3; İfade_N; } Programın başlangıcı İfade Bloğu (Programın ana gövdesi) : . Programın sonu
C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler
Genel Kavramlar Ana Fonksiyon: main( ) int main(void) { program_komutları return(0); }
Genel Kavramlar return( ):Fonksiyonun çağrıldığı yere geri dönmesini sağlar. main( ) fonksiyonu içinde kullanılan return() komutu programın sonlandırılarak işletim sistemine geri dönülmesini sağlar.
Genel Kavramlar Örnek Program #include <stdio.h> int main (void) { printf("Merhaba Dunya"); return(0); } Çıktı: Çıktı:
Genel Kavramlar printf():çıktı fonksiyonu ekrana çeşitli çıktıların yazılması printf(“format_dizgisi”); Bu fonksiyonun programımız tarafından kullanılması için <stdio.h> kütüphanesinin program başında tanımlanması gerekir. #include <stdio.h>
Genel Kavramlar • Örnek Program • Ekranda “Bu benim ilk programim.” cümlesini görüntüleyecek programı yazınız. • #include <stdio.h> • int main(void) • { • printf(“Bu benim ilk programim. “); • return(0); • } • Çıktı: • Bu benim ilk programim.
Yazım ve Noktalama Kuralları Noktalı Virgül: Her komutun bittiği yer ‘;’ işareti ile belirtilir. Ayraç İşaretleri: C dili bloklardan oluşur. Bloklar ‘{‘ ve ‘}’ ayraç işaretleri içinde belirtilen komutların bir araya gelmesi ile oluşur. Açıklama Satırları: Program içindeki açıklamanın başlangıç ve bitiş noktaları “/*” ve “*/” işaretleri ile belirlenmelidir. • #include <stdio.h> • int main(void) • { • printf(“Ilk program“); • return(0); • }
Yazım ve Noktalama Kuralları • include <stdio.h> • int main (void) • { • /*Bu program bilgisayarinizin ekranina Merhaba Dunya kelimelerini yazar.*/ • printf(“Merhaba Dunya”); • return(0); • /*Burasi programin sonudur*/ • }
Yazım ve Noktalama Kuralları • Bir bloğu oluşturan tüm komutlar ve açıklama satırları ayraç işaretlerine göre daha içeride yazılır. • Böylece blokların birbirinden ayrılması ve yazılan program kodunun daha anlaşılır bir hale gelmesi sağlanır. • include <stdio.h> • int main (void) • { • /*Bu program ekrana Merhaba kelimesini yazar.*/ • printf(“Merhaba”); • return(0); • /*Burasi programin sonudur*/ • }
C Kütüphaneleri • Yapılan işin özelliğine göre programa dahil edilir. • Kodu daha önce yazılmış, programcının kullanımına hazır fonksiyonları içerir. • Bu fonksiyonların her defasında tekrar tekrar yazılması engellenmiş olur ve daha standart bir yapıda yaygın olarak kullanımı sağlanır. Standart girdi/çıktı: <stdio.h> Matematiksel işlemler: <math.h> Dizgiler: <string.h>
C Dilindeki Sözcükler Özel amaçlı sözcükler Tanıtıcı isimleri (değişken) Tanıtıcı isimleri (fonksiyon)
C Dilindeki Sözcükler Özel Amaçlı Sözcükler
C Dilindeki Sözcükler Tanıtıcılar: Özel amaçlı sözcüklerin dışında yapılan tanımlamalardır. Tanıtıcı isimleri • içinde harf (a ..z, A.. Z), sayı (0..9) veya alt çizgi (underscore ‘_’) bulunabilir. • bir harf ya da alt çizgi ‘_’ işareti ile başlamalıdır. • içinde özel karakterler ( #, $, &, ö, ş “ v.b. ) bulunamaz. • C dilindeki özel amaçlı sözcüklerden biri olamaz. • büyük-küçük harfler farklı (case-sensitive) algılanır. Örnek: ogrenci_yasi _06_yili_ucreti ucret Short
Değer Sabitleri Tamsayılar:0-9 rakamlarından oluşan, ondalık değerleri olmayan sayılardır. Örnek:3 5 Reel Sayılar:tam ve ondalık kısımları olan sabitlerdir. Örnek:5.7 4.2 Karakterler:tek tırnak işareti arasında bulunur. Örnek:‘A’ ‘k’ Dizgiler:Çift tırnak işareti “ ” ile tanımlanırlar ve birden fazla karakterin bir araya gelmesinden oluşurlar. Örnek:“Merhaba” “2” “aa12aa”
Değişkenler • Program içinde kullanılan temel nesnelerdir. • Farklı tipteki verilerin (int, double, char) bellekte tutulması için kullanılır. • Bu isimler ile bellek hücrelerine veri aktarabilir ve bu hücrelerde saklanan veriler program içinde kullanılabilir. toplam Bellek görüntüsü Örnek:char cinsiyet; double maas; int x,y;
Başka bir basit program: İki tamsayının toplanması #include <stdio.h> main() { int sayi1, sayi2, topla; printf("İlk tamsayıyı giriniz\n"); scanf("%d",&sayi1); printf("İkinci tamsayıyı giriniz\n"); scanf("%d",&sayi2); topla=sayi1+sayi2; printf("Toplam = %d\n",topla); return 0; }
Değişken Kavramı • Bilginin bellekte belli bir adresten başlıyarak belli bir uzunluğu işgal etmesi, bilginin varlığını gösterir ve bu bilginin isimlendirilmesine değişken denir
Değişken tanımlama veri_tipi <değişken_adı>; örneğin: int x; char ch, ch1; float y;
printf ÇIKIŞ Fonksiyonu Printf (Format Stringi, Değer Listesi); • Çıkış Format Stringi: “ ” • Açıklama kısımları • Çıkış formatının belirtildiği kısımlar: % • Escape düzeninin verildiği kısımlar: \