enum tip_ismi{değer_1, değer_2,, değer_n} değişken_adı;

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "enum tip_ismi{değer_1, değer_2,, değer_n} değişken_adı;"

Transkript

1 Enum Yapısı Kendi veri tipimizi tanımlamada kullandığımız enum, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı daha okunabilir hale getirmek için kullanılır. Genel yazım biçimi: enum tip_ismi{değer_1, değer_2,, değer_n} değişken_adı; şeklindedir. tip_ismi programcı tarafından verilen bir isimdir. değişken_adı ise program içinde kullanılacak olan değişkenin adıdır. Eğer kullanılmazsa program içinde daha sonra enum ile birlikte kullanılır. Örneğin: [crayon-59f /] tanımı ile derleyici ram için, monitör için 1, ekran_karti için 2 ve hard_disk için 3 değerini kabul ederek atamaları buna göre yapar. Değişken adı bildirilirse daha sonra enum kullanmaya

2 gerek kalmaz. Örneğin: [crayon-59f /] gibi yapılan sabit tanımlamaları kullanılabilir. program içinde Ekran çıktısı ; dort_mevsim ve bilgisayar_parcalari için bir değişken adı tanımlanmadığından program içerisinde şu şekilde bir tanımlama yapılması gerekmektedir: [crayon-59f /] Ekran çıktısı : Hazırlayan: Muhammed Şamil Özer Kaynakça: ERDİNÇ Fahrettin, Mühendislik Öğrencileri İçin Temel Kılavuz C / C++, Abaküs Kitap, İstanbul,

3 Switch Case Yapısı Bir programda çok sayıda koşul kontrolü ve bunların sonucuna göre gerçekleştirilmesi gereken işlemler varsa, ifelse yapıları ile akışın izlenmesi zorlaşabilir. Böyle durumlar genellikle switch deyiminin kullanılmasının gerekli olacağı durumlardır. switch deyimi, tek bir ifadenin değerine göre sınırsız sayıda çalıştırma yolu belirlemeyi sağlayan bir komuttur.çalışma prensibi oldukça kolaydır.switch parantezinin içindeki değerle uyuşan hangi case varsa ona gider,eğer ki hiç bir case değeri switchle uyuşmazsa default seçeneği çalışır.bunu bir örnekle anlatınca aslında kolay olduğunu göreceksiniz. [crayon-59f d /] Burada switch parantezi içindeki değer 8 olduğu için,case 8 değeri hangisi ise onu çalıştıracaktır.bu örnekte Case 8 ise Ağustos tur.burada sadece sabit değerler olmaz,kullanıcıdan bir tamsayı değeri alarak da yaptırabilirsiniz. Yazar : Ahmet Burak Tektaş Kaynaklar: itim/android-101/switch-case-yapisi s/switch.html

4 Linux Platformunda Kurulumu Java Java kütüphaneleri, Java gereksinimi olan bazı internet sitelerinin düzgün görüntülenmesi ve bazı yazılımların çalışması için gerekli bir yazılımdır.jdk yani Java Geliştirici Kiti OpenJDK ve Oracle JDK olarak 2 farklı sürümü vardır. 1-OpenJDK Kurulumu Terminal aracılığıyla sırasıyla şu şekilde kurulum yapıyoruz: [crayon-59f ebc /] [crayon-59f ec /] Kurulum bitti,şimdi kontrol etmek için java -version yazarak görebilirsiniz. 2- Oracle JDK Kurulumu Burada da bizi 2 farklı kurulum yöntemi bekliyor.ilki Oracle ın kendi sitesinden JDK yı indirip kurmak,öbürü ise WEBUPD8 takımının desteklediği ve terminalden kurulan hali vardır.oracle ın temel olarak destekleyememesinin temel sebebi lisans sorunları yüzündendir. 2.1 Oracle sitesinden indirip kurmak Alttaki linke tıklayarak indirme kısmına geliyoruz ve şartları kabul ettiğimize dair onayı verip indiriyoruz. html* Arşivden çıkardıktan sonra terminali açıp sudo nautilus yazıp şifreyi girdikten sonra sırasıyla /usr/lib klasörü içinde jvm klasörü oluşturup arşivden çıkan klasörü oraya

5 kopyalıyoruz.daha sonra kullandığımız IDE uygulamasında Java için SDK olarak /usr/lib/jvm klasörünü seçmemiz yeterli oluyor. *Güncel sürüm bu linkten daima görünebilir. 2.2 Terminalden kurmak Öncelikle kullandığımız işletim sisteminin kullandığı depoların arasına WEBUPD8 ninkini eklememiz lazım: [crayon-59f ed /] Daha sonra depo listesini güncelliyoruz: [crayon-59f eda /] Şimdi indirme ve kurulumu gerçekleştirebiliriz* : [crayon-59f ee /] Kurulumun başarılı olup olmadığını ise yine aynı OPENJDK da olduğu gibi terminale java -version yazıp görülebilir. * = Şuan güncel sürüm 8 olduğu için 8 olarak yazılmıştır.güncel sürümü öğrenmek için Oracle ın sitesine bakabilirsiniz. Yazar : Ahmet Burak Tektaş Kaynaklar: itim/android-101/linux-ortaminda-java-gelistirme-paketijdk-kurulumu stall/install_overview.html

6 c++ derleyici hataları C++ YAPILAN HATALAR Merhaba arkadaşlar ben Mehmet Akif Ersoy üniversitesinde 1.sınıf bilgisayar mühendisliği öğrencisi İsmail Acaboğa ve sizlere c++ da başlangıçta yapılan hatalardan bahsedeceğim. ve aynı zamanda benimde yaptığım hatalar var bunların içlerinde basit zor demeden aklıma gelen tüm yapılan hataları yazacağım. KÜTÜPHANELERDEN KAYNAKLANAN HATALAR Kütüphaneler giriş/çıkış işlemleri bazı işlemleri derleyiciye tanıtmak için kullanırız.kütüphanelerde yapılan hatalara geçecek olursak ; 1- Yetersiz kütüphane kullanımı #include <iostream> using namespace std ; int main (){ double a; cout<< Sayi girin: <<endl; cin>>a; cout<<pow(a,2);

7 //yukarda karesini alan bir kod sistemi var fakat cmath kütüphanesi tanımlamadığımız için pow işlemi yapamayacak } 2- std fonksiyonların eksikleri //using namespace std ; kullanmamız kütüpanenin içindeki fonksiyonları işlevli hale getirir. //yada kullancağımız fonksiyonları tek tek tanımlamamız lazım alttaki gibi ben using namespace önerrim. #include <iostream> using namespace std; yada #include <iostream> using std :: cout; using std :: cin; 3-Kütüphaneler hakkında az bilgi Bu hataya çok düşen yoktur. ama yinede belirtmek istedim bazı kütüphanelerde bazı işlemler yoktur mesela climits : İntegral limitlerini içerir.eğer integral hesabı yapacaksanız bu kütüphane lazım kullanmadığımız için hata verir. Ve siz bu hatayı yapmamak için biraz araştırma lazım kütüphanelerin hepsini tek tek hiç kimse anlatmaz. Eğer c/c++ öğrenmek isterseniz biraz da sizin üstüne düşmeniz lazım bu zor olduğunu göstermez sadece istemek gerekli bu yüzden isteksizlikten gelen bir hata direk yapmaya çalışmayın biraz bakın bilginiz olsun.

8 YAZIM YANLIŞLARI VE EKSiKLERİ 1- Noktalı virgül(;) yanlış kullanımı Noktalı virgül derleyicide satır sonuna geldiğimiz yeri belirtir. Bir çok fonksiyonları yazdıktan sonra noktalı virgül kullanmak lazım bazı fonksiyonlarda da kulanmak hata verir. #include <iostream> using namespace std ; int main () { int i; cout<< lütfen puanınızı giriniz ; cin>>i; if (i<=40) ; //burada ; kullanılması yanlıştır. { cout<< basarisiz <<endl; } 2-Dikkatsizlikten kaynaklanan ; eksikliği Hepimizin çoğunlukla yaptığı hata olduğu için bence bunu çok iyi biliyorum diyen yapmıştır ama önemli bir hata değil bazen kafamızda devamını kurarken ; kullanmayı unutuyoruz derlediğimizde hata oluşuyor. 3- Değişkenlerde türkçe karakter hatası ve boşluk hatası Değişkenler türkçe karakter içermez ve boşluk tuşu kullanmak yanlıştır bu yüzden hata alırız ve eğer yeni başlıyorsak bunu fark etmek biraz zor olabilir. #include <iostream>

9 using namespace std ; int main ( ) { int sayı (sayi), birinci degisken (birinci_degisken); 4- Switch case yapılan hatalar #include <iostream> main() { int i; cout<< 1 ile 4 arasi sir sayi giriniz: ; cin>>i; switch(i) { case 1 :cout<< 1 Girdiniz break; //bu satır yanlıştır cout fonksiyonunda ; olması lazımdır aşağıdakiler gibi olması lazımdır case 2 :cout<< 2 Girdiniz ; break; case 3 :cout<< 3 Girdiniz ; break; case 4 :cout<< 4 Girdiniz ; break; default:cout<< 1 ile 4 ten farkli ; } Atama operatörünün (=) yanlış kullanımı Atama operatörü eşittir anlamına gelmez ve işlem sağdan başlar soldaki değere atanır. örneğin #include <iostream> using namespace std; int main ( ) { int a;

10 2=a+1; //bu ifade yanlıştır atama operatörü eşittir değildir. 2==a+1 //bu ifade size hata vermez ama DEVC++ da a nın değerini sıfır olarak çıkartır. Son olarak bilgi eksikliğine deyinmek istiyorum Ben bugüne kadar bilgi eksikliği yüzünden yapamıyormuşum ve bir çok hata ile karşılaşıyordum yukarıdaki hataların çoğunu gördüm kendimde ya da arkadaşlarımda ama çoğunluğunda bilgi eksikliği ve kendimizi vermemizden kaynaklandığını kendimize itiraf etmeliyiz çünkü bunlar yapılacak hatalar değil bilgi eksikliğinden kaynaklı hocayı özenle takip edip tekrar etmek yeterli oluyor. Öğrenceksek eğer en azından hakkını verelim. Günde bir iki saat yeterli olur ama benim önerim azla başlamamak çünkü çok çalışmaya bünyeyi alıştırmalıyız. tahminimce benim gibi çok çalışmayı sevmeyen insanlar için bu sözüm tabi. İsim(gerekli) E-Posta(gerekli) Web Sitesi Yorum(gerekli) Gönder»

11 Map Arayüzü (HashMap TreeMap sınıfı) ve Java dilinde oluşturulan nesneleri saklamak için kullanılabilecek bir çok yapı bulunur. En basit örnek olarak dizileri gösterebiliriz. Fakat dizi kullanımındaki dezavantaj ; dizilerde saklanacak nesne sayısının kapasitesi program çalıştıktan sonra değiştirilemez. Bu sebeple daha esnek bir yapıya ihtiyaç duyulur ve burada devreye Java koleksiyonları(collections) girer. Java koleksiyonları nesneleri saklama özelliğine sahiptir ve avantaj olarak bazı hazır veri yapıları ve algoritmalar içerir böylece bunları kendimiz yazmak zorunda kalmayız. Ayrıca bu veri yapıları ve algoritmalar programlarda yüksek performans elde etmemize yardımcı olur. Bu yazıda ve bir sonraki yazıda Java koleksiyonlarındaki arayüzlerden olan Set ve Map arayüzlerinden bahsedeceğiz. Map arayüzünü diğerlerinden ayıran temel fark verilerin bir anahtar-değer mantığına göre saklanmasıdır.bir değeri elde etmek istediğimizde o değere ait anahtarı girmemiz yeterli olacaktır. HashMap Örnek kodumuzda HashMap kullanımı ve Collections a ait bazı metodların kullanımı görülmektedir. package hashmapornek; import java.util.hashmap; import java.util.iterator; import java.util.map.entry; public class HashMapOrnek {

12 public static void main(string[] args) { HashMap <String,String> hashmap = new HashMap <>();//Sadece rakamsal anahtar istiyorsak <Integer,String> olarak tanımlamalıyız. hashmap.put("1", "Java");//Önce anahtar sonra değer girilir. hashmap.put("2", "C++"); hashmap.put("3", "C#"); hashmap.put("4", "Phyton"); hashmap.put("anahtar", "değer"); hashmap.put(" ", "hbakarsu@hotmail.com"); Iterator <Entry <String,String> > iterator = hashmap.entryset().iterator(); //Iterator Collection üzerinde dolaşarak elemanları elde etmemizi sağlar. System.out.println("Toplam ikili: "+hashmap.size());//toplam anahtar-değer sayısını verir. while(iterator.hasnext()){ Entry <String,String> kayit = iterator.next(); System.out.println("Anahtar: "+kayit.getkey()+", Değer: "+kayit.getvalue()); } //Tüm anahtar-değer ikilileri görüntülenir. hashmap.remove("4"); //4 anahtar değerine sahip değeri siler. System.out.println("4 numaralı anahtarın değeri : "+ hashmap.get("4")); //Silindikten sonra değer null olur. System.out.println("Toplam ikili: "+hashmap.size());//değer silindikten sonra boyut azalır. } } HashMap Kod çıktımız aşağıdaki gibidir.

13 Görüldüğü üzere HashMap sınıfında veriler genellikle girilen sırayla görüntülenir fakat garantisi yoktur ve hem anahtar hem de değer null değerler içerebilir. Dikkat edilmesi gereken nokta ise birden fazla null değer girildiğinde sadece son girilen null değer dikkate alınır. TreeMap TreeMap i HashMap ten ayıran temel nokta TreeMap girilen anahtarların otomatik olarak doğal sıralamasını yapar.bu karakterler için alfabetik sıralama,sayılar için küçükten büyüğe sıralamadır.programcının kendi tanımladığı nesneler için ise Comparator arayüzünü gerçekleştirerek tanımlanan mantığa göre düzenlenir. Şimdi örnek kodumuzu inceleyelim. package treemapornek; import java.util.iterator; import java.util.map.entry; import java.util.treemap; public class TreeMapOrnek { public static void main(string args[]) { TreeMap <String,String> liste = new TreeMap <>();//TreeMap tanımlaması liste.put("b","ascii Değeri=66");//Sırasıyla anahtar ve değer girilir. liste.put("3", "ASCII Değeri=51"); liste.put("2", "ASCII Değeri=50"); liste.put("c","ascii Değeri=67"); liste.put("1", "ASCII Değeri=49"); liste.put("4", "ASCII Değeri=52"); liste.put("a","ascii Değeri=65"); Iterator <Entry <String,String> > iterator =

14 liste.entryset().iterator(); //Collection üzerinde dolaşıp elemanları elde etmemizi sağlar. while(iterator.hasnext()){ Entry <String,String> kayit = iterator.next(); System.out.println("Anahtar : "+kayit.getkey()+",değer : "+kayit.getvalue()); }//while döngüsüyle birlikte tüm anahtar değer ikililerini yazdırır. } } TreeMap Kod çıktısı: Çıktımızda görüldüğü üzere karışık girilen değerler ASCII değerlerine göre TreeMap sınıfı tarafından otomatik olarak sıralanmıştır. TreeMap sınıfının en büyük özelliği budur. Bu konu Set Arayüzü ile ilişkilidir.ayrıntılı bilgi için tıklayınız. Referanslar: tm 3. rfaces/map.html

15 Set Arayüzü (HashSet TreeSet sınıfı) ve Java koleksiyonlarındaki Set arayüzü birbirinden farklı elemanları barındıran topluluktur.set arayüzünü List arayüzünden ayıran temel fark aynı elemanları barındıramıyor oluşudur. Null değerli elemanlar içerebilir. Ayrıca Set arayüzü eklenen elemanları aynı sıra ile erişimi garanti etmez.özetle sırası önemsiz eşsiz elemanlar üretmek istiyorsak Set arayüzü bizim için mantıklı bir seçim olacaktır. HashSet HashSet alt yapı olarak HashMap sınıfını kullanır ve elemanları anahtar-değer şeklinde saklar. HashSet yapısının çalışma mantığı hashing olarak tanımlanır. Hashing prensibi bir set üzerindeki elemanlara hash fonksiyonu uygulayarak eşsiz anahtarlar atamaktır. Böylece aynı elemanlarda aynı anahtar olacağından bu elemanlar teke indirgenir ve arama performansı arttırılmış olur. Set içerisinde eleman araması, eleman ekleme, eleman çıkarma gibi metodlar mevcuttur. Örnek kodumuzu inceleyelim; package hashsetornek; import import import import java.util.arrays; java.util.hashset; java.util.list; java.util.set; public class HashSetOrnek { public static void main(string args[]) { List<Integer> liste = Arrays.asList(3, 9, 1, 4, 7, 2, 5, 3, 8, 9, 1, 3, 8, 6);//List arayüzüne bir dizi tanımladık.

16 System.out.println("Dizinin elemanları :"+liste);//elemanları görüntüledik. Set<Integer> set = new HashSet<>(liste);//HashSet tanımı. System.out.println("Set arayüzü ile dizinin elemanları: "+set+"\n\n"); HashSet <String> set2 = new HashSet <>();//Yeni bir HashSet tanımladık. set2.add("değer 1"); set2.add("değer 2"); set2.add("değer 3"); set2.add("değer 4"); set2.add("değer 5"); set2.add(null); System.out.println("Eleman sayısı= "+set2.size()); System.out.println("Sette 'değer 1' var mı : "+set2.contains("değer 1")); //contain elemanı kontrol eder true ya da false döndürür. System.out.println("Sette 'Bilinmeyen eleman' var mı : "+set2.contains("bilinmeyen eleman")); set2.remove("değer 4");//değer 4 ü setten silme. System.out.println("Yeni eleman sayısı= "+set2.size()); set2.clear();//tüm elemanları silme. System.out.println("Son durumdaki eleman sayısı= "+set2.size()); } } HashSet Kodumuzun çıktısı aşağıdaki gibidir. Görüldüğü üzere dizideki elemanları hem sıraladı hem de birden fazla olan elemanları teke indirgedi.

17 TreeSet TreeSet sınıfı elemanlarını, karakterler için alfabetik sıralama,sayılar için küçükten büyüğe sıralamadır.programcının kendi tanımladığı nesneler için ise Comparator arayüzünü gerçekleştirerek tanımlanan mantığa göre düzenlenir. Set arayüzünün diğer sınıfları gibi, bu yapı da aynı değeri taşıyan iki elemanı barındırmaz. Tree ismini dengeli ağaç ( balanced tree ) veri yapısını kullanmasından alır.dengeli ağaç yapısı hakkında bilgi için tıklayınız. Kod örneğimizi inceleyelim. package treesetornek; import java.util.iterator; import java.util.set; import java.util.treeset; public class TreeSetOrnek { public static void main(string args[]) { Set set = new TreeSet();//TreeSet tanımlaması set.add("hayri");//değer tanımlaması set.add("bora"); set.add("akarsu"); set.add("2"); set.add("1"); set.add("3"); set.add("bora"); set.add("3"); Iterator iterator = set.iterator();//collection elemanlarında gezinerek elde etme while (iterator.hasnext()) {//Sırayla tüm elemanları elde etme

18 String str = (String) iterator.next(); System.out.println("Değer :" + str);//değerleri yazdırma } } } TreeSet Kod çıktısı aşağıdaki gibidir. Görüldüğü gibi karışık girilen değerleri ASCII tablosundaki değerlerine göre alfabetik ve rakamsal olarak sıraladı.aynı zamanda birden fazla girilen değerleri yok sayarak tek değer olarak aldı. Bu konu Map Arayüzü ile ilişkilidir. Map Arayüzü ile ilgili bilgi için tıklayınız. Referanslar 1. rfaces/set.html ollection-tutorial-and-examples Ağaçlar(Trees)

19 AĞAÇ VERİ MODELİ Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyerarşik yapıya sahip bir veri modelidir; bilgisayar yazılım dünyasında, birçok problemin çözümünde programcının karşısına çıkar. Örneğin kodlama/kod çözme işlemleri, dosya sistemi, oyunların olası hamleleri, dizinli dosya uygulamasında ve verinin hızlı arama yapılacak şekilde tutulmasında ağaç veri modeli kullanılarak gerçekleştirilir. En hızlı arama şekli, eğer asosiyatif bellek veya çırpı (hash) fonksiyonu kullanılmıyorsa, agaç veri modeli ile sağlanmaktadır; bu nedenle veri tabanlarında ve benzeri uygulamalarda arama işlemi ağaç veri modeline dayanılarak yapılır. Uygulamada birçok problemin çözümü veya modellenmesi, doğası gereği ağaç veri modeline çok uygun düşmektedir. Birbirinden farklı yapıda değişik ağaç çeşitleri vardır ve herbiri farklı bir probleme çözüm sunar. XHTML ile Ağaç Modeli örneği; <html xmlns= xml:lang= en lang= en > <head> <meta http-equiv= Content-Type content= text/html; charset=utf-8 /> <title>basit</title> </head> <body> <h1>basit bir web sayfası</h1> <ul> <li>birinci değer</li> <li>ikinci değer</li> </ul> <h2><a href= >Mustafa ÖRS </a><h2> </body> </html> Bu kodlarında ağaçlardaki karşılığı bu resimdeki gibidir. Cem

20 1.AĞAÇ ÜZERİNE TEMEL KAVRAMLAR Ağaç, bir kök işaretçisi, sonlu sayıda düğümleri ve onları birbirine bağlayan dalları olan bir veri modelidir; aynı aile soyagacında olduğu gibi hiyerarşik bir yapısı vardır ve soyağacında geçen birçok kavram ağaç veri modelinde de tanımlıdır. Örneğin çocuk ve kardeş düğüm, aile ve ata gibi birçok kavram ağaç veri modelinde de kullanılır. Genel olarak, veri, ağacın düğümlerinde tutulur; dallar ise düğümlerin birbiriyle bağlantısını gösterir. Bu nedenle, veri yapısı ağacın düğümü için tanımlanır; bu veri yapısı hem düğümde tutulacak veriyi, hem de düğüme yapılacak bağlantı bilgilerini içerecek şekilde tanımlanır.

21 Her ağacın bir kök işaretçisi vardır; ağaca henüz bir düğüm eklenmemiş ise agaç boştur ve kök işaretçisi NULL değerini içerir. Kök işaretçisine bağlı olan düğüm kök olarak adlandırılır; ağaç bunun etrafında serpilir. Kendisine hiçbir bağlantı yapılmayan düğümler yaprak(leaf) olarak adlandırılır. Kök ve yaprak dışındaki düğümlere ara düğüm denir. Ağacın herhangi bir dalı kesildiğinde ortaya alt ağaç çıkar; bir ağaç veya alt-ağaç birçok alt-ağacın birleşmesinden oluşabilir; alt-ağacın kendisi de ağaç özelliğindedir. Dolayısıyla ağaç veri modeli algoritmaları rekürsif programlama uygun olurlar.

22

23 Ağaç üzerine bazı tanımlar aşağıda verilmiştir. Çocuk(Child): Bir düğüme doğrudan bağlı olan düğümlere o düğümün çocukları denilir. Bir düğüme bağlı alt-ağaçların kökleri o düğümün çocuklarıdır. Yaprak düğümler çocuksuz düğümlerdir. Derece(Degree): Bir düğümden alt hiyerarşiye yapılan bağlantıların sayısıdır; yani çocuk veya alt-ağaç sayısıdır. Yaprak düğümlerin derecesi 0 (sıfır) olur. Tüm dürümlerin derecesi eşit olan ağaçlara homojen ağaç denilir. Kardeş(Sibling): Aynı düğüme bağlı olan düğümlere kardeş düğüm veya kısaca kardeş denilir. Bir düğümün kardeş sayısı bağlı olduğu düğümün derecesine eşittir.

24 Aile(Parent): Düğümlerin üst düğüme doğrudan bağlı oldukları düğüm aile olarak adlandırılır; diğer bir deyişle aile, kardeşlerin bağlı olduğu düğümdür. Ata(Ancestor) Torun(Descendant): Aile düğümünün daha üstünde kalan düğümlere ata denilir; çocuk düğüm ile ata düğüm arasında en az 2 uzunlukta yol olur. Torun, bir düğümün çocuğuna bağlı düğümlere denir. Orman(Forest): Ağaçlar kümesi orman olarak adlandırılır. Örneğin alfabedeki herbir karakter için oluşturulan sözlük ağaçları biraraya gelerek bir orman oluşturur. Yol(Path): Bir düğümden aşağıya doğru bir başka düğüme gidebilmek için üzerinden geçilmesi gereken düğümlerin listesidir; bir düğümden ancak kendi silsilesinde olan düğümlere yol olabilir. Yol uzunluğu ise, başlangıç ve bitiş düğümleri arasındaki dal sayısıdır; bu yol üzerindeki düğüm sayısının bir eksiğidir. Yaprakların yol uzunluğu 0 dır; yani yapraklardan herhangi bir düğüme yol yoktur. Kökten her yaprak düğüme birer yol vardır. Düzey(Level): İki düğüm arasındaki yolun üzerinde bulunan düğümlerin sayısıdır. Kök düğümün düzeyi 1, doğrudan köke bağlı düğümlerin düzeyi 2 dir. Derinlik(Depth): Bir düğümün köke olan uzaklığıdır; yani düzeyidir. Kök düğümün derinliği 1 dir. Bir ağacın derinliği de en uzak mesafede bulunan yaprak düğümün derinliğidir.

25 Yükseklik(Height): Bir düğümün kendi silsilesinde en uzak mesafedeki yaprak düğüme olan düzey sayısı yükseklik olarak adlandırılır. Ağacın yüksekliği kökün yüksekliğidir. 2.AĞAÇ TÜRLERİ İkili Arama Ağacı(Binary Search Tree): İkili arama ağacında bir düğüm en fazla iki tane çocuğa sahip olabilir ve alt/çocuk bağlantıları belirli bir sırada yapılır. Örneğin, küçük veya alfabetik olarak önce olanlar sola, büyük veya eşit olanlar sağ tarafa bağlanır. İkili arama ağaçlarında anahtar sözcük arama işlemi karmaşıklığını eğer ağaç dengeli ise 0(logN) olmasıdır. Rastgele verilerin girildiği uygulamalarda ağacın dengeli olmasa da dengeli olmaya yakın olduğu istatiksel olarak görülmüştür. Kodlama Ağacı(Coding Tree): Kodlama ağacı bir alfabdeki veya daha genel olarak bir kümedeki karakterlere kod atanması için kurulan ağaç şeklidir. Bu tür ağaçlarda kökten başlanıp yapraklara kadar olan yol üzerindeki bağlantı değerleri kodu verir. Kodlama ağacı denildiğinde ilk akla gelen Huffman kodlaması olmasına karşın çok çeşitli kodlama ağaçları kurulabilir. Sözlük Ağacı(Dictionary Tree): Sözlük ağacı bir sözlükte bulunan sözcüklerin tutulması için kurulan bir ağaç şeklidir. Amaç. arama işleminin en performanslı bir şekilde yapılması ve belleğin optimum kullanılmasıdır. Sözlük ağaçları biraraya gelip sözlük ormanını oluşturur. Bu ormanda alfabedeki karakter sayısı kadar ağaç vardır ve herbir ağacın kökü farklı karakterlerle başlar. Örneğin baba sözcüğü b ile başladığı için b ile başlayan sözlük ağacında aranır veya oraya eklenir.

26 Kümeleme Ağacı(Heap Tree): Kümeleme bir çeşit sıralama ağacıdır; aslında ikili arama ağacı da sıralama ağacıdır. Ancak kümeleme ağacında çocuk düğümler her zaman için aile düğümünden daha küçük değerlere sahip olur. Dolayısıyla kök düğüm en büyük değere sahip olurken yaprak düğümler kendi silsilesi içerisinde en küçük değerlere sahip olurlar. Bu tür ağaçların kullanımı için en iyi örnek öncelikli kuyruk uygulamasıdır. Bağıntı Ağacı(Expressin Tree): Bağıntı ağaçları bir matematiksel bağıntının ağaç şeklinde tutulması için tanımlanmış bir ikili ağaç uygulamasıdır. Bağıntı ağacının yapraklarda değişkenler veya sabit değerler bulunurken, kök ve ara düğümlerde de işlem değeri olan simgeler bulunur. Verilen denklemden bağıntı ağacı kurulması veya verilen ağaçtan denklemin çıkarılması için iç-takı, öntakı ve son-takı olarak adlandırılan üç değişik yöntem vardır. 3.AĞAÇLARIN TUTULMASI BELLEK ÜZERİNDE Ağacın bilgisayar belleğinde tutulması için indis-bağlantısı veya düğüm-bağlantısı yöntemleri kullanılmaktadır. İndis bağlantısı yaklaşımında ağacın düğümleri bir dizi üzerinde tutulurlar; dizinini ilk elemanı kök olup alt hiyerarşi deki diğer düğümlere bir bağlantı uyarınca erişilir. İndis bağlantısı, bir düğümün çocuklarına erişmek için gerekli indisi oandaki aile düğümün indis değerine göre hesaplamada kullanılır. Böylece hiçbir bağlantı bilgisi kullanılmadan bir düğümde onun herhangi bir çocuğuna indis hesabı yapılarak erişilebilir. Düğüm-bağlantısı olan yöntemde düğümler arası bağlantılar veri yapısı içerisine eklenmiş olan işaretçi değişkenler

27 aracılığıyla sağlanır Ağacın bellekte tutulması için iki farklı yöntem bulunur: Düğüm Bağlantısıyla Ağaç Kurulması/Veri Yapısı Bu yöntemde ilk akla gelen herbir bağlantı için birer bağlantı bilgisi tutulmasıdır; dolayısıyla veri yapısı içerisinde bilginin tutulacağı değişkenlere ek olarak m tane indis/işaretçi değişken olmalıdır. Bu yöntem, eğer ağacın derecesi, örneğin m=2, m=3 gibi, oldukça küçükse kullanılabilir; veya, eğer ağacın herbir düğüme ayrılan bağlantı bilgisi sayısı kadar bağlantı yapılmışsa uygulanabilir. Genel olarak bir ağaç düğümlerin derecesi ne olursa olsun yukarıdaki gibi veri yapısında iki tane bağlantı bilgisiyle bellekte tutulabilir. Biri, şekilde yatay olanlar, kardeş düğümleri, diğeri de, şekilde eğik olanlar çocuk düğümleri işaret eder. Kök düğümün bir tane bağlantısı var gibi görülse de diğer üç çocuk düğümüne V1 verisinin bulunduğu düğümden erişmektedir. Bu yöntem bellek alanından kazanç sağlar; ancak, programın yürütme zamanını arttırır. Çünkü, bir düğümünden onun çocuklarına doğrudan erişim ortadan kalkmış, bağlantı listede olduğu gibi ardışıl erişme ortaya çıkmıştır. struct ikili { Veri kısmı; İşaretçi Tipi sol, sağ; } AGAC2; İndis-Bağıntısıyla Ağaç Kurulması/Veri Yapısı Ağacın indis-bağıntısı yöntemine göre bellekte tutulması şekilde görüldüğü gibi düğümlerin veri kısmının bir dizi üzerinde tutulması kavramına dayanır. Dizinin ilk elamanı ağacın köküdür; daha sonraki elamanlar ağaç hiyerarşisi üzerindeki herhangi bir düğüme karşılık düşer. Ancak dizinin ikinci ve üçüncü elemanları kök düğümün çocuklarıdır; daha

28 sonraki, yani dördüncüden sonraki düğümler için ağacın derecesi bilinmelidir. Ağacın derecesine bağlı olarak bir indis bağıntısı bulunur ve düğümler arasındaki akrabalık ilişkileri bu bağıntı uyarınca belirlenir. Bu nedenle bu yöntem indis-bağıntısı olarak adlandırılır. Aşağıdaki şekilde düzeyli bir ikili ağaç olası tüm düğümleri gösterilmiştir; düğümler en üst hiyerarşiden, kök ten, başlanarak d0, d1 d14 olarak adlandırılmıştır. Düğümler b) de görüldüğü gibi yerleştirilirse bir bağıntı uyarınca herhangi bir düğümün çocuklarına doğrudan ulaşılabilir. İndis Bağıntısı Yönteminin Olumsuz Yanı Bu yöntem seyrek özellikte ağaçlar için fazla bellek alanı harcar. Çünkü, bu yöntemde ağacın olması gereken ama o andaki gelen verilere göre henüz olmayan düğümleri için de yer ayrılır. Dolayısıyla ağaç seyrek özellikte ise veya bazı alt ağaçları bağlantılı liste gibi tek bir yönde uzayıp giderse, eklemelerde ağacın düğümleri fazla artmadığı halde düzeyi artarsa bellek sarfiyatı oldukça artar. Şekilde böylesi durumlar bir ikili ağaç için gösterilmiştir; a) da olmayan 4 ve b) de de 11 tane düğümün yeri denklem 10.1 ve yi sağlaması için boş bırakılmıştır. İndis Bağıntısı Yönteminin Olumlu Yanı Dolu veya dengeli ağaçların tutulmasında kullanışlıdır.

29 Özellikle, kendisi de özel bir dengeli ağaç olan kümeleme ağaçlarının (heap trees) tutulması için çok elverişlidir. 4.HUFF MAN KODLAMA AĞACI Kodlama ağacına dayanılarak değişken uzunlukta kod atanması, özellikle, veri sıkıştırma algoritmalarında başvurulan bir yöntemdir.

30 Kodlama tablosunda kod uzunluğu log2n bağıntısından hesaplanır. N=4 için log24=2 bulunur. Genişletilmiş ASCII tablosu için (256karakter) log2256=8elde edilir Bu amaçla Huffman, ShannonFano gibi birçok kodlama ağacı şekli geliştirilmiştir. Bunlar dışında, uygulamaya dönük özel kodlama ağaçları da oluşturulabilir. Huffman ile elde edilen sonuçlara göz atalım: Kodlama ağacı karakterlerin sıklığına göre oluşturulur. Kodlama ağacına göre BABACABA sözcüğünü kodlayıp kaç bit yer işgal ettiğini bulmak istersek; A harfine 0, B harfine 10, C harfine 110, D harfine 111 kodları atanmıştır. Buna göre BABACABA sözcüğü olarak kodlanır ve toplam 13 bit işgal eder. 5.İKİLİ AĞACI AĞAÇLAR VE İKİLİ ARAMA İkili Ağaç (Binary Tree) Agaçların özel bir hali olan ikili ağaçlarda her düğümün çocuklarının sayısı azami 2 olabilir. Bir düğümün daha az çocuğu bulunması durumunda ( 0 veya 1) ağacın yapısı bozulmaz.

31 Yapraklar hariç bütün düğümlerin ikişer çocuğu bulunması ve yaprakların aynı derinlikte bulunması durumunda bu ağaca dengeli ağaç (balanced tree) denilir. Aşağıda bir dengeli ikili ağaç örneği tasvir edilmiştir: Bu ağacı değişik sıralarda yeniden oluşturabiliriz. Örneğin aşağıdaki ağaç da yukarıdaki verilerin aynılarını taşıyan bir ikili ağaç örneğidir. Yukarıdaki bu ağacın ilk örnekten farkı dengesiz olması ve

32 özel olarak her düğümün çocuk sayısının 1 olmasıdır. Tanım hatırlanacak olursa yukarıdaki bu ağaç da bir ikili ağaç olarak kabul edilebilir. C dilinde bir ikili ağacı ifade edecek struct aşağıdaki şekilde yazılabilir: [crayon-59f ec /] [crayon-59f a0a /] [crayon-59f a /] [crayon-59f a1f /] [crayon-59f a /] Yukarıdaki kodda bir düğümün taşıması gereken bilgiler tanımlanmıştır. Buna göre düğümün sağındaki ve solundaki çocukları gösteren birer gösterici (pointer) ve düğümün içindeki veriyi tutan bir veri değişkeni bulunmaktadır. Benzer durum java dilinde aşağıdaki şekilde ifade edilebilir: [crayon-59f a2f /] [crayon-59f a /] [crayon-59f a /] [crayon-59f a /] [crayon-59f a4e /] Yukarıdaki kodda ise nesne göstericisi (object referrer) kullanılarak bir nevi gösterici (pointer) yapısı kullanılmıştır. Buna göre her düğümün sol ve sağında gene düğüm cinsinden birer nesne bulunabilecektir. İkili ağaçlarda bir düğümün derecesi en fazla iki olabilir, yani en fazla iki tane çocuk bağlantısı olabilir. İkili arama ağacına bir düğüm eklenirken ağacın solunamı, sağınamı ekleme yapılacağı düğümün verialanı içerisindeki anahtar sözcüğe bakılarak yapılır. Bu konudaki genel yaklaşım, anahtar veri aile düğümünden küçük ise soluna büyük ise sağına eklemektir. Eğer anahtar veri sözce(string) ise alfabetik olarak önce geliyorsa soluna, sonra geliyorsa sağına eklenir. Bağıntı ağaçlarıda ikili ağaç şeklindedir; bağıntı ağacında amaç bir matematiksel bağıntıya ait operatör, değişken ve sabitleri bağıntıyı ifade edecek şekilde ikili ağaç üzerinde tutmaktır.ikili ağaçtaki bir düğüme ait veri yapısında veriye

33 ek olarak iki tane işaretçi tutulur; biri sol diğeri sağ olarak adlandırılan bu işaretçilere düğümün çocukları bağlanır. struct DUGUM2 { Veri kısmı; struct DUGUM2 *sol; struct DUGUM2 *sag; };

34 İkili ağaç üzerinde dolaşma İkili ağaç üzerinde önce -kök(preorder), ortada -kök(inorder) ve sonra-kök(postorder) olmak üzere üç farklı dolaşma şekli uygulamalara çözüm olmaktadır. Önce-Kök(preorder): Kök,Sol,Sağ Ortada Kök(inorder): Sol,Kök,Sağ Sonra-Kök(postorder):Sol,Sağ,Kök Önce kök yaklaşımda önce ağacın kökü, sonra sol altağaç ve ardından sağ altağaç Ortada kökta ise, önce sol altağaç, kök ve sağ altağaç Sonra kökte ise, önce sol altağaç, sonra sağ altağaç ve kök dolaşılır. Bağıntı Ağaçları Bir matematiksel bağıntının ağaç şeklinde tutulması için tanımlanmış bir ikili ağaç uygulamasıdır. Birçok derleyici, program içerisindeki denklemleri, bağıntı ağacı aracılığıyla ayrıştırır ve karşılığı olan kodları üretir. Bağıntı ağacı üç farklı yöntem ile çıkarılabilir: iç-takı, ön-takı ve sontakı. İç-takı (İnfix) Bağıntı ağacının iç-takı yöntemine göre değerlendirilmesi, bir önceki sayfada verilen örneklerde

35 görüldüğü gibi, matematikte alışılagelen şekilde, operatörlerin ortada, değişken veya sabit değerlerin operatörün kenarlarında bulunması şeklinde yapılır. Değerlendirmeye iki çocuğu da yaprak (yani parametreleri hazır; işleme hazır) olan en soldaki altağaçtan başlanır ve sağa doğru, sırasıyla, yine çocukları yaprak olan altağaçlar ele alınarak bağıntı değerlendirilir. Ön-takı (Prefix) ve Polonyalı Notasyonu Ön-takı yönteminde operatörler kendilerine karşı düşen parametrelerin (değişken veya sabit değerler) önündedir. Ön-takı yöntemi ikili ağaç üzerinde önce-kök dolaşması gibidir. Son-takı (Postfix) Son-takı yöntemi ters Polonyalı notasyonu (reverse Polish notation) olarak da adlandırılır ve operatörler kendi parametrelerinin arkasından gelir. Ön-takı ve sontakı yönteminin en önemli özelliği bağıntıların parantez kullanılmadan gösterilebilmesidir. İkili arama ağaçları arama işleminin yoğun olduğu uygulamalarda ilk başvurulan veri modelleridir; arama işleminde kullanılacak anahtar sözcüğe bağlı olarak bir veya birden fazla ikili arama ağacı kurularak arama işlemi logn mertebesinde yapılır.

36 İkili Arama Ağacı Uygulaması Ağacın herhangi bir düğümünde bir tamsayı ve bir de 100 karakterlik bir mesaj tutulacaktır, bunlara ek olarak biri sağ diğeri sol olmak üzere iki adet işaretçiye de sahip olmalıdır. Böyle bir düğümün veri yapısı;

37 struct topluluk{ AGAC2 int bilgi; bilgi, mesaj, sol, sag char mesaj[100]; struct topluluk *sol,*sag; }AGAC2; AGAC2 *kok=null; Bu aşamada bir ikili ağaç oluşmuş olur. Ancak içerisinde hiçbir düğüm yoktur. İlk yapılacak işlem ağaca düğüm ekleyecek algoritmanın tasarlanmasıdır. Bunun içinde her şeyden önce sıralamada kullanılacak olan anahtar sözcüğün belirlenmesidir. Bu örnekte, türü tamsayı olan bilgi adlı değişken anahtar veri olarak seçilmiştir. Dolayısıyla ikili ağaç üzerindeki ekleme, silme, arama gibi işlemler bu anahtar sözcük üzerinden gerçekleştirilecektir. /* Düğüm Ekleme Fonksiyonu */ void ekle(agac2 *agackok, AGAC2 *eklenen) { if(agackok==null) kok=eklenen; else{ if(eklenen->bilgi <= agackok->bilgi) { if(agackok->sol==null) agackok->sol=eklenen;

38 else ekle(agackok->sol, eklenen); } else { if(agackok->sag==null) agackok->sag=eklenen; elseekle(agackok->sag, eklenen); } } } /* Listedeki tüm kayıtları listeleme */ void listele(agac2 *agackok) { if(agackok=!null) { listele(agackok->sol); yazekrana(agackok); listele(agackok->sag); } } /* Ağaç üzerinde bir kayıt arama */ AGAC2 *ara(agac2 *agackok, int aranan) { while(agackok!=null && agackok->bilgi!=aranan) { if(aranan <= agackok->bilgi) agackok=agackok->sol;

39 else agackok=agackok->sag; } return agackok; } /* İkili ağaç üzerindeki düğüm sayısını sayar*/ int sayagacdugum(agac2 *agackok, int miktar) { if(agackok==null) return miktar; miktar++; miktar=sayagacdugum(agackok->sol, miktar); miktar=sayagacdugum(agackok->sag, miktar); return miktar; } İkili arama ağacı uygulamasının tam kodu [crayon-59f a /] Yazar: Mustafa Cem ÖRS Kaynak: Algoritma Geliştirme ve Veri Yapıları Üniversite Yayıncılık.

40 DEĞİŞKEN ÖMRÜ VE KAPSAMI Yerel(local) ve küresel(global) olmak üzere iki türde değişken vardır.açıklamalarıyla basit bir giriş yapalım. Yerel(local) Değişken:Blok içinde tanımlanan değişkenler yalnız o blok içinde kullanılabilir ve işlem tamamlandıktan sonra bellekten silinir.bu türde değişkenlere yerel değişken denir. Küresel(global) Değişken:Bu tür değişkenler blokların dışında, genelde programın en üst satırlarında tanımlanır.bu sayede bu değişkenler tüm bloklar tarafından tanınmış olur ve tüm bloklarda kullanılabilir.bu tür değişkenlere küresel değişken denir. Genel bir örnek verecek olursak değişkenler main fonksiyonunda tanımlanırsa tanımlanan değişkenlerin değerleri yalnızca main() fonksiyonu içinde çalışır.tanımlanan diğer fonksiyonlar vb. bu değişkenleri ve değerlerini tanıyamaz. Eğer bir değişken için tek bir değer atamak istiyorsak bu değişkeni en üst satırlarda tanımlamak işimize gelir ve bu sayede daha fazla kod yazmaktan kurtulmuş oluruz.hadi bu anlatılanları daha detaylı inceleyelim. [crayon-59f /] Bu örnektede görüldüğü gibi değişkenler sadece main() fonksiyonu içinde tanımlanmıştır,yani bu değişkenler yerel

41 değişkenlerdir ve sadece main() fonksiyonu içinde tanınmış olur.diğer fonksiyonlar bu değişkenleri tanımaz. [crayon-59f b /] Bu örnektede görüldüğü gibi değişkenler en üst satırlarda tanımlanmıştır (main fonksiyonu ve hesapla fonksiyonu dışında). Bu sayede değişken değerleri tüm program için aynıdır. [crayon-59f /] Bu örnektede olduğu gibi küresel değişkenlere farklı bloklarda farklı değerler vermekte mümkündür.bu sayede blok içindeki değişken değerleri değişmiş olur. [crayon-59f d /] Eğer küresel değişkenlerin blokların içinde aldığı yeni değerlerin saklanmasını istiyorsanız bu değişkenleri static olarak tanımlamalısınız.örnekte olduğu gibi sayi1,sayi2 ve toplam değişkenleri global değişkendir.main fonksiyonu içinde bu değişkenlere değer verilmiştir ve bu değerler fonksiyon içindede kullanılmıştır.

42 C++ DA MANTIKSAL OPERATÖRLER C++ da kullanılan mantıksal operatörler!= > eşit değildir; > veya operatörü && > ve operatörü <= > küçük eşit operatörü >= > büyük eşit operatörü == > eşittir operatörü + > toplama operatörü > çıkarma operatörü * > çarpma operatörü / > bölme operatörü % > mod alma operatörü. ÖRNEK: [crayon-59f fc /] EKRAN ÇIKTISI:

43 KAYNAK: %C3%B6rler HAZIRLAYAN: GÜLBEYAZ BAYRAM BREAK VE KOMUTLARI CONTİNUE,RETURN BREAK VE CONTINUE KOMUTLARI Break ve continue komutları kontrol ve döngü komutlarının akışını kontrol etmek için kullanılır.kısaca açıklamak gerekirse break komutu yapıları sonlandırırken continue komutu ise döngüde belli şarta uyan adımın atlanmasını saglar. BREAK KOMUTU Break ifadesini switch ifadeleri ile görmüş olsanız da, diğer

44 döngü türleri ile de kullanılabileceğinden, daha kapsamlı bir işleme sahiptir.break komutu do, for, switch veya while deyiminin sonlanmasına neden olur. ÖRNEK KOD: Bu örnegimizde 1-10 arası sayıların toplamı hesaplanır.ancak sayi=4 ise break komutundan dolayı döngü sona erer.bu durumda toplama 4 dahil edilmez.sonuçta 1, 2 ve 3 degerlerinin toplamı bulunur. [crayon-59f /] EKRAN ÇIKTISI: ÖRNEK KOD2: Aşagıdaki örnekte switch komutunda her işlem sonunda break komutu çalıştırılır. Böylece işlem bittikten sonra yapı dışına çıkılır ve sıradaki komut çalıştırılır. [crayon-59f /] EKRAN ÇIKTISI:

45 CONTINUE KOMUTU Continue komutu da, aynı break gibi, sadece bir döngü içinde ve bir if şartı altında anlam ifade eder. continue döngü bloğunun işlemesini yarıda keser ve başa döner. break den farkı, programın döngünün dışına çıkmaması, ama döngünün başına dönmesi ve tekrar başlatmasıdır. Bu arada döngü şartının doğru olup olmadığı da kontrol edilir. ÖRNEK KOD: Bu örnegimizde 1-10 arası sayıların toplamı hesaplanır.ancak sayi=4 ise continue komutundan dolayı döngü sonraki degere geçer.bu durumda toplama 4 dahil edilmez. Sonuçta 1,2,3,5,6,7,8,9 degerlerinin toplamı bulunur. [crayon-59f /] EKRAN ÇIKTISI:

46 KAYNAK: eak-continue/ MÜHENDİSLİK ÖĞRENCİLERİ İÇİN TEMEL KILAVUZ C++/C ERDİNÇ HAZIRLAYAN: GÜLBEYAZ BAYRAM -FAHRETTİN

Ağaçlar(Trees) AĞAÇ VERİ MODELİ

Ağaçlar(Trees) AĞAÇ VERİ MODELİ Ağaçlar(Trees) AĞAÇ VERİ MODELİ Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyerarşik yapıya sahip bir veri modelidir; bilgisayar yazılım

Detaylı

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

Detaylı

Main() Fonksiyonu. Main () Fonksiyonu. int main() İfadeler. Return ;

Main() Fonksiyonu. Main () Fonksiyonu. int main() İfadeler. Return ; Main() Fonksiyonu Main () Fonksiyonu int main() { İfadeler Return ; } int main() fonksiyon başlığıdır. Bu fonksiyonun { ile gövdesi oluşturulur. Bu ifadelerin her birinin sonunda noktalı virgül(;) işareti

Detaylı

Ağaç (Tree) Veri Modeli

Ağaç (Tree) Veri Modeli Ağaç (Tree) Veri Modeli 1 2 Ağaç Veri Modeli Temel Kavramları Ağaç, bir kök işaretçisi, sonlu sayıda düğümleri ve onları birbirine bağlayan dalları olan bir veri modelidir; aynı aile soyağacında olduğu

Detaylı

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli

Veri Modelleri. Ağaç Veri Modeli. Ağaç Veri Modeli Veri Modelleri Ağaç Veri Modeli Ağaç Veri Modeli Verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen bir veri modelidir. Ağaç veri modeli daha fazla bellek

Detaylı

Main() Fonksiyonu. Main () Fonksiyonu. int main() İfadeler. Return ;

Main() Fonksiyonu. Main () Fonksiyonu. int main() İfadeler. Return ; Main() Fonksiyonu Main () Fonksiyonu int main() { İfadeler Return ; } int main() fonksiyon başlığıdır. Bu fonksiyonun { ile gövdesi oluşturulur. Bu ifadelerin her birinin sonunda noktalı virgül(;) işareti

Detaylı

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 2 Veri Modelleri Veri modelleri, veriler arasında ilişkisel ve sırasal düzeni gösteren kavramsal tanımlardır. Her program en azından bir veri modeline dayanır. Uygun

Detaylı

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, C++ İÇİN UFAK HATIRLATMALAR Değişken adları bir harf ile başlamalıdır. (a-z, A-Z). Değişken adı numara içerebilir.

Detaylı

Veri Yapıları. Ağaçlar

Veri Yapıları. Ağaçlar Veri Yapıları Ağaçlar 1 Ağaç Veri Modeli Temel Kavramları 2 Ağaç, bir kök işaretçisi, sonlu sayıda düğümleri ve onları birbirine bağlayan dalları olan bir veri modelidir. Aile soyağacında olduğu gibi hiyerarşik

Detaylı

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin

Detaylı

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1

Görsel Programlama DERS 04. Görsel Programlama - Ders04/ 1 Görsel Programlama DERS 04 Görsel Programlama - Ders04/ 1 Diziler ve Kolleksiyonlar(Collections) Diziler aynı tipli değişkenleri tutmak için kullanılan veri yapılarıdır. Diziler sabit uzunlukludur. Birkez

Detaylı

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

enum bolumler{elektronik, insaat, bilgisayar, makine, gida}; BÖLÜM 12: Giriş C programlama dilinde programcı kendi veri tipini tanımlayabilir. enum Deyimi (Enumeration Constants) Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi

Detaylı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 ELN1002 BİLGİSAYAR PROGRAMLAMA 2 VERİ YAPILARI Sunu Planı Kendini-gösteren Yapılar Dinamik Bellek Tahsisi Bağlı Listeler Yığınlar Kuyruklar Ağaçlar 1 Veri Yapıları Şu ana kadar, diziler, matrisler ve yapılar

Detaylı

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları Veri yapısı, bilginin anlamlı sırada bellekte veya disk, çubuk bellek gibi saklama birimlerinde tutulması veya saklanması şeklini gösterir. Bilgisayar

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 7 Ağaç (Tree) Veri Yapısı Giriş Ağaç VY Temel

Detaylı

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1 Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi Dizilere Başlangıç Değeri Verme Dizilerde Arama

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Diziler Dizi Tanımlama ve İlk Değer Atama Dizi Elemanlarının Kullanılması Dizi İşlemleri Java da Diziler JAVA DA DİZİLER 4 Dizi; tek bir veri tipinde,

Detaylı

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak:  Published by Juan Soulié Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama

Detaylı

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dillerinde Kullanılan Veri Tipleri Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs

Detaylı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ C# Yazım Kuralları 1 İçindekiler C# Yazım Kuralları Veritipleri Değişkenler Operatörler Sınıflar Nesneler, Özellik, Metot ve Olay Bileşenler 2 C# yazım kuralları Deyimlerde büyük küçük harf yazıma uyulmalı

Detaylı

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN TEMEL AMAÇLAR Bir dairenin yarıçapını kullanıcıdan alarak dairenin alanını hesaplamak istediğimizi düşünelim. Eğer girilen değer

Detaylı

Lambda İfadeleri (Lambda Expressions)

Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki

Detaylı

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir: Programın Akışının Denetimi Bir program komutların yazıldığı sırada akar. Ama çoğunlukla, bu akışı yönlendirmek gerekir. Bu iş için denetim yapılarını kullanırız. Bunlar iki gruba ayrılabilir: Yönlendiriciler

Detaylı

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ 2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 7 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Java Programlama Dili ve Algoritmadan Kodlamaya Geçiş) Yrd. Doç. Dr. İbrahim Küçükkoç

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 2 (Denetim Yapıları, Diziler) Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Denetim Yapıları 1 if else Seçme yapısı, mantıksal

Detaylı

BIL222 Veri Yapıları ve Algoritmalar

BIL222 Veri Yapıları ve Algoritmalar BIL222 Veri Yapıları ve Algoritmalar 1. ĠKĠLĠ AĞAÇLAR (BIARY TREES) Bütün düğümlerinin derecesi en fazla iki olan ağaca ikili ağaç denir. Yani bir düğüme en fazla iki tane düğüm bağlanabilir ( çocuk sayısı

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Koşul Karşılaştırma Operatörleri Mantıksal

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Genel Bilgiler Ders konuları 1. Programlamaya Giriş 2. Program Denetimi ve Operatörler 3. Nesnelerin

Detaylı

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Algoritma ve Programlama: Karar Yapıları ve Döngüler Algoritma ve Programlama: Karar Yapıları ve Döngüler Bir algoritma, herhangi bir programlama dili (C, C++, Pascal, Visual Basic, Java gibi) ile kodlandığında program haline gelir. Algoritmada yer alan

Detaylı

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) { Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel

Detaylı

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ VERİ YAPILARI LİSTELER Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ Bağlı Listeler Aynı kümeye ait veri parçalarının birbirlerine bellek üzerinde, sanal olarak bağlanmasıyla

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi 5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını

Detaylı

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6 ix Yazılım Nedir? 2 Yazılımın Tarihçesi 3 Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5 Yazılımın Önemi 6 Yazılımcı (Programcı) Kimdir? 8 Yazılımcı Olmak 9 Adım Adım Yazılımcılık 9 Uzman

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Bellek ve Adresleme İşaretçi Kavramı

Detaylı

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü Final Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :09.01.2013, 60 dak. Dikkat!!! Soru kitapçığında ve

Detaylı

Algoritma ve Programlamaya Giriş

Algoritma ve Programlamaya Giriş Algoritma ve Programlamaya Giriş Algoritma Bir sorunu çözebilmek için gerekli olan sıralı ve mantıksal adımların tümüne Algoritma denir. Doğal dil ile yazılabilir. Fazlaca formal değildir. Bir algoritmada

Detaylı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir DİZİLER (ARRAYS) Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir değişken tanımlamak gereklidir. string gun1,

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 2 C# Programlama Dili Elemanları Bu bölümde;

Detaylı

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır stringh floath Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır 32 Sorgulama İfadesi - if Deyimi (5 Hafta) Bu deyim sorgulamanın tek basamakta yapılacağı yerlerde

Detaylı

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler C# Programlama Dili İlk programımız Tür dönüşümü Yorum ekleme Operatörler 1 İlk Programımız Bu program konsol ekranına Merhaba dünya! yazıp kapanır. Programı geçen derste anlatıldığı gibi derleyin, sonra

Detaylı

Class LinkedHashMap. Class LinkedHashMap java.lang.object java.util.abstractmap java.util.hashmap java.util.linkedhashmap. Kılgıladığı arayüzler:

Class LinkedHashMap. Class LinkedHashMap java.lang.object java.util.abstractmap java.util.hashmap java.util.linkedhashmap. Kılgıladığı arayüzler: Class LinkedHashMap java.util Class LinkedHashMap java.lang.object java.util.abstractmap java.util.hashmap java.util.linkedhashmap Kılgıladığı arayüzler: Cloneable, Map, Serializable Bildirimi: public

Detaylı

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır. GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.

Detaylı

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama İçerik Java da İşleçler, Kontrol Akış ve Döngü Deyimleri Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu ders: Java da işleçler ( operators ) Java da kontrol-akış

Detaylı

The Big O Notation. The Big O Notation

The Big O Notation. The Big O Notation The Big O Notation The Big O Notation Yazdığımız bir algoritmanın doğru çalıştığından emin olmakla birlikte bu algoritmayı, daha önce yazılmış ve aynı sonucu veren başka algoritmalarla karşılaştırmak isteyebilirsiniz.

Detaylı

Java da İşleçler, Ders #3 (4 Kasım 2009)

Java da İşleçler, Ders #3 (4 Kasım 2009) Java da İşleçler, Kontrol Akış ve Döngü Deyimleri BS-515 Nesneye Yönelik Programlama Ders #3 (4 Kasım 2009) İçerikç Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu

Detaylı

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b. Diziler Dizi Nedir Ortak özelliğe sahip birden fazla bilginin oluşturduğu bütün bilgi kümelerine veya hafızada art arda sıralanmış aynı türden verilerin oluşturduğu yapıya dizi denir. Kısaca; Bellekte

Detaylı

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ TBIL-303-01 Veri Yapıları ve Algoritmalar İki Yönlü Bağlantılı Liste Uygulaması HAZIRLAYAN

Detaylı

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

if (ad == Sabri) Console.WriteLine(Merhaba Sabri. Ne zamandır gözükmüyodun...); Koşul İfadeleri ve Akış Kontrolü Koşul ifadeleri ve akış kontrolleri programlama dillerinde her zaman en önemli yeri tutmaktadır. Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir

Detaylı

BİLG Dr. Mustafa T. Babagil 1

BİLG Dr. Mustafa T. Babagil 1 BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)

Detaylı

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R Atamalar int a ; a=4 ; // doğru bir atama 4=a ; // yanlış bir atama! Temel Tiplerde Atama Atama işlemi, temel (primitive) tipler için

Detaylı

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu. Javascript Html sayfalarının içine yazılarak, sayfayı daha etkileşimli hale getirir. click olayları, uyarı mesajları gibi hareketlerle sayfayı daha dinamik hale getirir. Javascript olmadan yazılan html

Detaylı

public static int Toplam int x, int y

public static int Toplam int x, int y static Kavramı 1 İçinde bulunduğu sınıftan nesne oluşturulmadan veya hiç bir nesneye referans olmadan kullanılabilen üyeler static olarak nitelendirilir. Metotlar ve alanlar static olarak tanımlanabilir.

Detaylı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 ELN1002 BİLGİSAYAR PROGRAMLAMA 2 DOSYALAMA Sunu Planı Veri Hiyerarşisi Dosyalar ve Akımlar(streams) Sıralı Erişim (Sequential Access) dosyalarının oluşturulması Sıralı Erişim Dosyalarından Veri Okuma Rasgele

Detaylı

BIP116-H14-1 BTP104-H014-1

BIP116-H14-1 BTP104-H014-1 VERİ YAPILARI VE PROGRAMLAMA (BIP116) Yazar: Doç.Dr.İ.Hakkı.Cedimoğlu SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir.

Detaylı

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler: Veri Yapıları Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz İçindekiler: Giriş Temel Veri Yapıları Tanımlamalı Veri Yapıları Veri Modeli ve Türleri

Detaylı

// hataları işaret eden referans

// hataları işaret eden referans System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)

Detaylı

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI C programlama dilinde, diğer programlama dillerinde olduğu gibi, işlemler, ilk satırdan başlamak üzere sırayla çalışır. Program kontrol yapıları ise, programın

Detaylı

Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap

Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap Map Arayu zu java.util Interface Map Altarayüzleri: SortedMap Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap Map, Java Collections

Detaylı

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0 Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Bitirme Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 01.06.2017 Süre : 60 dak. 1. t değişkeni hakkında aşağıdakilerden

Detaylı

Bölüm 10: PHP ile Veritabanı Uygulamaları

Bölüm 10: PHP ile Veritabanı Uygulamaları Bölüm 10: PHP ile Veritabanı Uygulamaları -231- Öğr.Gör. Serkan DİŞLİTAŞ 10.1. PHP PHP, platformdan bağımsız sunucu taraflı çalışan betik bir web programlama dilidir. PHP programlama dili ile MySQL, MSSQL,

Detaylı

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf İçindekiler 1. Giriş... 1 1.2. c++ Programı Yapısı... 2 1.3.Using Direktifi... 5 Bölüm 2. Veri türleri, değişken kavramı, sabit ve değişken bildirimleri ve c++ da kullanımı 7 2.1. Temel veri türleri...

Detaylı

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra

Detaylı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

PROGRAMLAMA DİLLERİ I

PROGRAMLAMA DİLLERİ I PROGRAMLAMA DİLLERİ I Öğr. Gör. M. Mutlu YAPICI Ankara Üniversitesi Elmadağ Meslek Yüksekokulu Ders İzlencesi Öğr. Gör. M. Mutlu YAPICI Hafta 1. Hafta 2. Hafta 3. Hafta 4. Hafta 5. Hafta 6. Hafta 7. Hafta

Detaylı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.

Detaylı

Fonksiyonlar (Altprogram)

Fonksiyonlar (Altprogram) Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.

Detaylı

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN GİRİŞ Ekrana «Merhaba Java» şeklinde bir mesajı 100 defa yazmak istediğinizi düşünelim. Aşağıdaki komut satırını 100 kez yazmak sıkıcı

Detaylı

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO while(), do-while(), for() Döngü (loop) : Bir koşul sağlandığı (true olduğu) sürece bir veya birden çok komutun tekrarlanması işlemidir. Java Döngüler (loops) While() do-while() for ( ) while ( koşul )

Detaylı

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI BİR BOYUTLU DİZİLER Amaçlar: 1. 1 BOYUTLU DİZİLERİ TANIMLAMAK 2. 1 BOYUTLU DİZİ UYGULAMALARI YAPMAK Örnek 5-1 Aşağıdaki program öğrenci notlarını bularak en iyi notu hesaplar. Harf notu şu şekilde hesaplanır:

Detaylı

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır. GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.

Detaylı

C++ Operatörler (Operators)

C++ Operatörler (Operators) C++ Operatörler (Operators) Konular Operatörler o Aritmetiksel (Matematiksel) Operatörler o Karşılaştırma Operatörleri o Mantıksal Operatörler o Atama Operatörleri o Bit Düzeyinde Operatörler o Özel Amaçlı

Detaylı

Pointer Kavramı. Veri Yapıları

Pointer Kavramı. Veri Yapıları Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Kodlarına Yorum Satırı Eklemek Java Paket Kavramı Java Kütüphane Kavramı Konsoldan Veri Çıkışı ve JOPtionPane Kütüphanesi JOptionPane Kütüphanesi Kullanarak

Detaylı

Programlama Dilleri 3

Programlama Dilleri 3 Diziler (Arrays) 1 Dizi Kavramı Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların

Detaylı

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları

Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları Max - Min Heap Tree (Max ve Min Yığıt Ağaçları) Veri Yapıları ve Algoritmalar 2 - Mustafa EGE Ders Notları Max - Min Heap Öncelikli kuyruk konusunu hatırlayın. Kuyruğa sonradan eklenmesine rağmen öncelik

Detaylı

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler Veri Tanımları ve Mantıksal Đşlemler Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Kullanılacak bütün değişkenlerin kullanılmadan önce C derleyicisine bildirilmeleri gerekir.

Detaylı

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 11. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Fonksiyonlar Yük. Müh. Köksal Gündoğdu 2 C++ Hazır Fonksiyonlar Yük. Müh. Köksal Gündoğdu 3 C++ Hazır Fonksiyonlar 1. Matematiksel

Detaylı

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 JAVA DA PROGRAM DENETİMİ VE OPERATÖRLER Java programlama dilinde temel tipleri ve nesneleri yönlendirmek ve değiştirmek için operatörler kullanılır. Atamalar sağ taraftaki

Detaylı

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu BBS515 Nesneye Yönelik Programlama Ders 3 Zümra Kavafoğlu https://zumrakavafoglu.github.io/ Bağıntısal Operatörler operatör tanımı < küçüktür > büyüktür = büyük eşittir eşittir!= eşit

Detaylı

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. 1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

C#(Sharp) Programlama Dili

C#(Sharp) Programlama Dili Değişkenler C#(Sharp) Programlama Dili Program yazarken her zaman sabit verilerle çalışmayız, çoğu zaman programımızda bir verinin kullanıcının davranışına göre değişmesi gerekir. Kullanıcıdan bir metin

Detaylı

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu SORU 1 Dünyanın en uzun beş nehrini öğeleri olarak kabul eden bir yığıt (stack) yaratınız. Yığıtın üçüncü öğesini bulunuz. Yığıtın üstündeki öğeyi bulunuz ve

Detaylı