Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

Programlama ve Veri Yapılarına Giriş JAVA, C, C++ dilleri ile
Programlama ve Veri Yapılarına Giriş JAVA, C, C++ dilleri ile
Programlama ve Veri Yapılarına Giriş JAVA, C, C++ dilleri ile
Ebook399 pages2 hours

Programlama ve Veri Yapılarına Giriş JAVA, C, C++ dilleri ile

Rating: 5 out of 5 stars

5/5

()

Read preview

About this ebook

Bu kitabın amacı programlama bilgisi olmayan giriş seviyesindeki bir kişiye bilgisayar mühendisliğinin iki temel dersi olan “programlamaya giriş” ve “veri yapılarına giriş” derslerinin bilgisini kazandırmaktır.

LanguageTürkçe
Release dateJun 9, 2016
ISBN9789944627825
Programlama ve Veri Yapılarına Giriş JAVA, C, C++ dilleri ile
Author

Sadi Evren SEKER

2000 ylında, Yeditepe Üniversitesi Bilgisayar Mühendisliği bölümünü tek mezunu olarak tamamladım. Mezuniyetimin ardından yine aynı bölümde yüksek lisansıma ve araştırma görevlisi olarak çalışmaya başladım. 2003 yılındaki mezuniyetimden önce Istanbul Teknik Üniversitesinde benim için ikinci bir yüksek lisans programı olan, Bilim Teknoloji ve Toplum programına kayıt yaptırdım ve 2004 yılında da ikinci yüksek lisansımı tamamladım. 2004-2005 yılları arasında genel kurmayda internet subayı olarak askerlik görevimi tamamladım. 2005- 2010 yılları arasında Yıldız Teknik Üniversitesi’nde doktoramı tamamladım ve bu sürede çeşitli üniveristelerde ders verdim. Doktora sonrası araştırma için bulunduğum UT Dallas’ta Yönetim Bilişim Sistemleri alanına geçiş yaptım ve doçentliğimi bu alanda aldım. Akademik çalışmalarım akan veri madenciliği, büyük veri yönetimi ve bilgi yönetimi konularındadır.

Read more from Sadi Evren Seker

Related to Programlama ve Veri Yapılarına Giriş JAVA, C, C++ dilleri ile

Related ebooks

Reviews for Programlama ve Veri Yapılarına Giriş JAVA, C, C++ dilleri ile

Rating: 5 out of 5 stars
5/5

1 rating1 review

What did you think?

Tap to rate

Review must be at least 10 words

  • Rating: 5 out of 5 stars
    5/5
    Sadi hocamın udemy eğitim setlerini ve harici paylaşımlarını severek takip ediyorum. Oldukça anlaşılır bir dille konunun tüm noktalarına temas eden bir anlatım metodu var. Ülkemiz için önemli bir değer kendisi. Bu kaynak da kaleminin tüm ustalıklarını kullandığı bir diğer cevher. Çok teşekkür ederim hocam.

Book preview

Programlama ve Veri Yapılarına Giriş JAVA, C, C++ dilleri ile - Sadi Evren SEKER

1  Giriş ve Kitabın Kullanılışı

Bu kitabın amacı programlama bilgisi olmayan giriş seviyesindeki bir kişiye bilgisayar mühendisliğinin iki temel dersi olan programlamaya giriş ve veri yapılarına giriş derslerinin bilgisini kazandırmaktır. Bahsi geçen bu dersler, sonuca yönelik ve yapılan işlerin gerçek hayatta birebir kullanımı olan konulardan ziyade teorik ve diğer konulara temel teşkil eden içeriktedir. Dolayısıyla bu kitabın okuyucusu kitaptan edindiği bilgileri olmazsa olmaz birer kazanım olarak görmeli ve herhangi bir programlama konusunda uzmanlaşmadan önce bu konularda kendisini yeterli hale getirmelidir.

1.1  Kitabın konulara göre bölüm ve alt bölümlere ayrılışı

Bu kitap, bütün konuları üç ayrı programlama dilinde ele almaktadır. Dolayısıyla her bölümün en az dört alt bölümü bulunmaktadır. Bunlar aşağıdaki şekilde sıralanabilir:

Konunun açıklandığı ve teorik anlatımın bulunduğu ilk alt bölüm

C dilinde örneklerle anlatıldığı ikinci alt bölüm.

C++ dilinde anlatılan üçüncü alt bölüm.

JAVA dilinde anlatılan dördüncü alt bölüm.

Genel olarak her bölümde yukarıdaki yapı izlenmesine karşılık bazı giriş seviyesi bölümlerde üç dilde de aynı özellikler bulunduğu için birleştirilmiş olan alt bölümler bulunmaktadır. Ayrıca kullanılan dile özel olarak hazır teknoloji var olduğunda bu teknolojiyi açıklayan özel alt bölümler bulunmaktadır. Örneğin bağlı liste (linked list) konusunu JAVA dilinde sıfırdan yazmak mümkündür. Aynı zamanda JAVA dili içerisindeki collection sınıfında (class) hazır olarak yazılmış bir bağlı liste bulunmaktadır ve okuyucu ihtiyaç duyduğunda bu sınıfı kullanabilir. Bu durumda sıfırdan yazılışı açıklayan bir alt bölüm ile birlikte hazır sınıfların kullanılmasını açıklayan ikinci bir alt bölüm bu konuya eklenecektir.

Kitabın üç farklı dil ile programlamayı anlatıyor olmasından dolayı okuyucunun tek dile yoğunlaşma ihtimali düşünülerek her dilin ayrı ayrı okunduğunda da anlaşılabilmesi hedeflenmiştir. Bu yüzden kitapta bazı konular her dil için tekrar edilmektedir. Ancak kitabın üç farklı dilde programlamayı anlatıyor oluşu, programlamayı öğrenmenin yanında bu üç dili karşılaştırma imkanı doğurması da okuyucu için bir avantajdır ve okuyucunun kitabı üç dil için de okuması tavsiye edilir.

1.2  Kitabın dili ve terminoloji

Kitap şimdiye kadar anlaşılacağı üzere Türkçe olarak neşredilmiştir. Ancak gelişen iletişim teknolojileri ve bilhassa İnternet sayesinde bilgisayar teknolojilerindeki İngilizcenin rolü Türk dilinde de hissedilmektedir. Okuyucunun araştırma yapabilmesi ve aynı terimin Türkçeye farklı şekillerde çevrilmesinden kaynaklanan karmaşanın giderilmesi için bu kitapta Türkçe terminolojinin yanında İngilizce terimler parantez içersinde verilecektir. Örneğin:

Bağlı liste (linked list) şeklinde

Kitapta bulunan terminoloji hakkında ansiklopedik bilgiye ihtiyaç duyulması halinde yine kitabın yazarı Şadi Evren ŞEKER tarafından hazırlanan www.bilgisayarkavramlari.com adresinden yararlanılabilir. Kitap konusu dışında kalan kavramlara kitapta değinilmeyecektir dolayısıyla okuyucu bu konudaki araştırmalarını verilen bu adresten karşılayabilir.

Ayrıca bu kitapta konusu geldikçe önemli olan noktalar aşağıdaki şekilde:

Uyarı kutularında anlatılacaktır. Bu anlatılanlar ya yaşanan bir tecrübeye dayalı uyarılar olacak ya da konu için büyük öneme sahip noktalar olacaktır. Okuyucunun bu uyarı kutularını dikkate alması tavsiye edilir.

Ayrıca bilgilendirme kutuları da aşağıdaki şekilde kitap içerisinde yer bulmaktadır.

Bu kutların içerisinde genel olarak anlatılan konuyu açıklayan bilgiler bulunmaktadır.

1.3  Kitaptaki örnek ve kodların kullanılması

Kitapta bulunan örnek kodların kullanılması için öncelikle bu kodların kullanılabildiği bir programlama ortamına (programming environment) ihtiyaç duyulmaktadır. Kitabın EK1 ekinde ilgili programlama ortamının kurulumu ile ilgili resimli anlatım bulunmaktadır. Okuyucu bu bölümden faydalanarak istediği programlama dilinin ortamını kurabilir.

Programlama ortamı kurulduktan sonra kitaptaki örnekleri www.sadievrenseker.com/kitap adresinden indirebilir ve denemeye başlayabilirsiniz. Buradaki örneklerin hepsi kitapta açıklanan programlama ortamlarında test edilmiş ve çalışan örneklerdir. Bu programlama ortamları:

C dili için    Dev-CPP (C dili olarak kullanılacak)

C++ dili için    Dev-CPP (C++ dili olarak kullanılacak)

JAVA dili için     JDK

Şeklinde sıralanabilir. Okuyucu bu ortamlar dışında ortamları da kullanabilir ancak özellikle C dili için ortamlara göre farklılıklar olduğu bilinmelidir.

Kitapta bulunan kodlar anlatımın yazı tipinden farklı olarak verilmiş bu sayede okuyucunun kodu anlatımdan kolaylıkla ayırması hedeflenmiştir. Örneğin:

printf(Merhaba Dünya);

satırında olduğu gibi.

Ayrıca çalışan kodların ekran çıktıları aşağıdaki şekilde gösterilecektir:

Örnek program çıktısı satırı

1.4  Konu sonu alıştırmaları

Kitabın sonunda bulunan çalışma soruları, kitabın bir ders kitabı olarak kullanılması hedeflendiği için eklenmiştir. Okuyucu konuları okuyarak öğrendiği bilgileri bu alıştırmalar ile pekiştirerek geliştirebilir. Ayrıca ders kitabı olarak okutulduğu ortamlarda ödev olarak da bu sorulardan istifade edilebilir. Konu sonunda bulunan soruların çözümleri kitabı okutmaya karar veren hocalara talep edilmesi durumunda verilecektir. Bunun için www.sadievrenseker.com/kitap adresinde bulunan hoca formunun doldurulması gerekmektedir.

Konu sonu sorularının yanlarında bulunan işaretlerin anlamları şu şekilde sıralanabilir:

* Diğer sorulara göre zor sorular

A Okuyucunun kitaptaki bilgilere ilave olarak araştırma yapması gereken sorular

J Java dilinde kodlanabilir sorular

C C dilinde kodlanabilir sorular

CPP C++ dilinde kodlanabilir sorular

Okuyucu bu soruları karar verdiği dile göre veya vakit durumuna göre seçerek çözebilir.

2. PROGRAMLAMAYA GİRİŞ

––––––––

Kitabın anlatıldığı diller, C, C++ ve JAVA’dır.

Bu bölümde bu dillere giriş yapılacaktır.

Basit birer örnek kod ile kullanımları açıklanacaktır.

2  Programlamaya giriş

Programlamaya giriş konusunda öncelikle programlamanın ne olduğu ve bir programın kısa tanımı yapılacak ardından basit birer program ile konuya başlanacaktır. Okuyucunun teorik konularda bilgisi varsa 2.1 ve 2.2 alt bölümlerini atlayarak ilgili dildeki giriş kısmına geçebilir.

2.1  Program nedir?

Program kelimesi Türkçeye yabancı dilden girmiş olup modern Türkçede izlence gibi bir kelime ile karşılanmaya çalışılsa da bu kelime çok kabul görmemiştir. Anlam olarak yapılacak işlerin tasarlanması anlamına gelen kelime günlük hayatta kullanıldığı bu anlamla bilgisayar bilimlerinde de kullanılmaktadır. Kısaca bir bilgisayarın yapacağı işlerin önceden tasarlanması ve bilgisayara bu tasarının bir dil ile anlatılmasına programlama ismi verilebilir.

Bu anlatım sırasında kullanılan dile de programlama dili ismi verilmektedir. Yani kitabın içeriğinde kullanılan C, C++ veya JAVA gibi diller aslında bir insanın bir bilgisayara neyi nasıl yapacağını kesin ve belirli bir şekilde (deterministic) anlattığı dillerdir. Buradaki kesin ve belirli kelimeleri önemlidir çünkü bilgisayarlar için belirsizlik gibi bir şey söz konusu olamaz.

Bilgisayarlar sonuç itibariyle taştan topraktan insanlar tarafından yapılmış aletlerdir ve yapabildikleri insanlığın ulaştığı matematik bilinci ile sınırlıdır (bazı durumlarda matematikte ulaştığımız her şeyi yapamadıkları da bir gerçektir). Dolayısıyla bilgisayar dünyasında programlama olarak görülen her şey aslında birer matematiksel ifadeden ibarettir. Bu konu ilerleyen bölümlerde örneklerle açıklanacaktır. Ancak şu seviyede bilgisayarlarda yapılan bütün işlemlerin dört işlem seviyesine indirildiğini okuyucunun bilmesi yeterlidir.

2.2  Bilgisayarda programlar nasıl çalışır?

Bir bilgisayarın bir programı nasıl çalıştırdığını anlamadan önce bilgisayarın yapısını (mimarisini) tanımakta yarar vardır. Oldukça detaylı bir konu olmasına karşılık bu alt bölümde bilgisayar mimarisinin sadece programlama için gereken yüzeysel yapısından bahsedilecektir.

Bilgisayarların donanımını tanırken şu parçaları tanımakta yarar vardır:

Klavye Bilgisayarın standart girdi ünitesidir ve temel olarak insanların veri girmesini sağlar

Monitör (Ekran) Bilgisayarın standart çıktı ünitesidir ve yazılan programların sonuçları genelde burada belirir.

RAM(rastgele erişiliebilir bellek, Random Access Memory) Bilgisayarın ana hafızası , birincil belleği (primary memory) adı ile de anılan ve programlama açısından oldukça önemli olan, çalışan her programın ihtiyaç duyduğu ve diske göre nispeten daha hızlı ve genellikle geçici bilgi tutmaya yarayan (elektrik kesintilerinde bilginin silindiği (bilgisayarı kapatıp açmak gibi)) parçadır.

CPU (merkezi işlem birimi, Central Processing Unit) Bir anlamda bilgisayarın düşünen ve karar veren ünitesidir. Basit anlamda dört işlem seviyesinde matematiksel işlemler yaparak bilgisayardaki her programı çalıştıran ve bilgisayarın en kıymetli kaynağı olarak değerlendirilebilecek parçasıdır.

HDD (sabit disk, hard disk driver) Bilgisayarın veri deposudur. Bilgiler ve yazılan programlar ve bilgileri saklamak için kullanılan dosyalar burada tutulur.  RAM’in tersine veriler kapatılıp açılma ile buradan silinmezler.

Yukarıdaki donanım üniteleri bu kitaptaki ilerleyen konularda daha net açıklanacaktır ancak bu seviyede bir programın nasıl çalıştığını anlatmadan hemen önce biraz da bilgisayarda çalışan işletim sistemini tanıyalım.

İşletim sistemi bir anlamda bilgisayarın ruhu olarak görülebilir. Donanımın kontrolü ve bizimde yazacağımız programların çalıştırılmasından işletim sistemi sorumludur. Program yazan birisinin gözünde işletim sisteminin rolü yazılmış olan programı diskten alarak hafızaya yükleyen ve yeri geldiğinde işlemcide çalıştırarak gerekli sonuçları işleyen program olmasıdır.

Basitçe bir program öncelikle bir dosya olarak yazılır ve kaydedilir. Yani yazılan her program aslında önce bir dosyadır. C dilinde bu dosyanın uzantısı genelde .c olurken C++ dilinde .cpp ve JAVA dilinde .java olmaktadır.

Yazılan bu program insanların anladığı C, C++ veya JAVA gibi dildedir. Bu programı bilgisayarın anlaması ise imkansızdır çünkü bilgisayarlar 0 ve 1 lerden oluşan sinyaller ile işlemektedir.

İnsanların anladığı C, C++ veya JAVA gibi dillerden bilgisayarın anladığı makine diline çevirme işlemine derleme (compile) ismi verilir.

Derleyiciler basitçe bir dilde yazılmış olan kodu (kaynak kodu yada source code) istenilen başka bir kod haline dönüştüren programdır. Genelde üretilen bu kod ortama göre çalıştırılabilir kod (executable code) olarak üretilmektedir. Ancak bir derleyicinin daha doğru tanımı bir dildeki kodu başka dile çeviren program olarak yapılabilir. Örneğin C dilinde yazılan bir programı PASCAL diline çeviren programlara derleyici adı verilebilir.

Derleyicinin diğer bir tanımı ise daha üst seviye bir dilden daha alt seviyeli bir dile tercüme olarak kabul edilebilir. Buna göre örneğin C dilinden Assembly veya makine dili gibi daha alt dillere tercüme ile derleyici kavramı daha da sınırlandırılmış olarak kabul edilebilir.

Derleyiciler günümüzde daha çok bir dilde yazılmış koddan, işletim sistemi ve donanım bağımlı kodların üretilmesinde kulllanılmaktadırlar.

Bu üretim sırasında ya doğrudan işletim sisteminin anlayacağı ve çalıştıracağı kodları üretirler ya da işletim sisteminde bulunan veya yine dil bağımlı olarak çalışan bağlayıcı (linker) programların anlayacağı ara kodları üretirler.

Derleyiciler bu kod üretmesi sırasında, üretilen kodun en verimli şekilde üretilmesi için kod iyileştirmesi (optimisation) da yapmaktadırlar. Yani hedef dildeki çalışma süresi ve hafıza ihtiyacı en az olan kodu üretmek bir derleyicinin daha başarılı olma kriterlerinden birisidir.

Aynı zamanda kaynak kodda (source code) bulunan hataların yakalanması bu hataların programcıya bildirilmesi de derleyicilerin diğer görevlerinden birisidir.

Derleyiciler (compiler) ile Yorumlayıcılar (Interpreter) arasındaki farklar:

Basitçe, bir kaynak kodu hedef koda çevirdikten sonra çalıştıran ve dolayısıyla koddaki hataları yakalama işlemini ve kodun iyileştirilmesini daha kod çalıştırmadan yapan çeviricilere derleyici, kodu satır satır veya bloklar halinde çalıştırıp sırası gelmeyen satırları hiç çalıştırmayan bu satırlardaki hataları hiçbir zaman göremeyen ve kodun bütününe ait iyileştirmeleri yapamayan çeviricilere de yorumlayıcı (interpreter) adı verilmektedir.

Genel kanının tersine bir dilin derleyici veya yorumlayıcı özelliği yoktur. Yani C dili için sadece derleyicisi bulunan bir dildir demek yanlış olur. Bu durum bütün diller için geçerlidir. Her dil için bir derleyici veya yorumlayıcı tasarlanabilir. Ama daha genel bir bakışla, her dilin aslında yorumlayıcı (interpreter) yapısında bir çalışması olduğunu söylemek yanlış olmaz. Sonuçta bilgisayarın işlemcisinde anlık olarak tek bir işlem yapılabilmektedir ve çalışması istenen kod, işlemciye sırayla verilecek ve satır satır çalıştırılacaktır.

Genelde bir ortam yazılan dilin çalıştırılmasına kadar geçen sürede ya bir derleyici yada bir yorumlayıcı kullanılmaktadır. Gelişmekte olan teknolojiyle iki programı birden kullanan diller de türemiştir. Örneğin JAVA dilinde kod önce derlenerek byte code adı verilen ve sadece java sanal makinelarında (java virtual machine) çalıştırlabilen bir kod üretilmektedir. Bu üretilen ara kod daha sonra java sanal makinasında bir yorumlayıcı yapısına uygun olarak çalıştırılmaktadır.

Derlenme işlemi tamamlandıktan sonra makine diline çevrilen kodun işletim sistemi tarafından çalıştırılmak üzere hafızaya yüklenmesi gerekir. Burada devreye yükleyici (loader) girer.

Yükleyiciler basitçe bir programı diskten alıp hafızaya yüklemekle sorumlu programlardır.

http://www.bilgisayarkavramlari.com/wp-content/uploads/2008/12/yukleyici_loader.jpg

Bir program yazıldıktan ve derlendikten (compile) sonra programın makine dilindeki karşılığı elde

Enjoying the preview?
Page 1 of 1