Java da Dizi Tanımlama DİZİLER Dizi, içerisinde aynı tip verilerin tutulduğu bir yapıdır. Diziler ile verilere daha kolay erişim sağlanır. Java daki diziler, diğer dillerden farklı olarak birer nesnedir. Bu özelliği sayesinde yüksek performans ve güvenlik sağlar. Java da Dizi Tanımlama Şekilleri Dizi tanımlanırken ilk olarak dizide olacak elemanların veri tipi belirtilir. (int, String ) Dizini tipini belirledikten sonra köşeli parantezler koyulur. Bu da değişkenimizin bir dizi olduğunu belirler. [crayon-5b8deb74892a1064942820/] Diziyi tanımlayıp içine veri yerleştirmek için kullanacağımız yapı: [crayon-5b8deb74892af909309970/] Yeni bir dizi tanımlayıp bu dizinin eleman sayısını belirlemek için new anahtar kelimesini kullanmak zorundayız. [crayon-5b8deb74892b7060734476/] C++ Örnek Soru Çözümleri
Bu soruyu çözmeye başlamadan önce soruyu anlamamız ve algoritma üretmemiz gerekiyor. Bu soru için izleyeceğimiz adımlar sırasıyla şöyledir; Öncelikle bizden istenene odaklanırız ve o sonuca nasıl ulaşabileceğimizi hesaplamalıyız. Anlaşıldığı üzere p(100) ve f(100) bulunursa problemimiz çözülecektir 1-p(100) bulunur. p(100) = 1+2+3+..100
[crayon-5b8deb748a366217416416/] gibi basit bir işlemle çözülür. 2-f(100) bulunur. f(100) [crayon-5b8deb748a372720812676/] Kod dünyasının paylaştığı bu sorunun çözümü: [crayon-5b8deb748a379060281091/] şeklindedir. Soru 2
[crayon-5b8deb748a382850065620/] şekilde çözüme ulaşılabilir. Pointer Dönüşlü Fonksiyonlar
Bu konuyu incelemeden önce pointerlerin ne olduğunu bilmelisiniz ve Call by Value&Call by Reference konularını gözden geçirmiş olmalısınız, bu konunun anlaşılırlığı bakımından daha sağlıklı olacaktır. Geri dönüşlü fonksiyonların parametre değerleri ve bir dönüş değeri olduğunu biliyoruz. Bu parametrelerin pointer bir değer olabileceği gibi dönüş tipimiz de bir pointer olabilir. Aşağıdaki kodumuzda bu konuyu inceleyelim. [crayon-5b8deb748aa51915576945/] Main fonksiyonumuzda gördüğümüz gibi dizi[] arrayimizi tanımladık [crayon-5b8deb748aa5b799209830/] Ardından *p pointeri adresdegistir(char *p, int index) fonksiyonunun (dizi,fazlalik) parametreleriyle return u olarak tanımlanmıştır. [crayon-5b8deb748aa64936284558/] Fonksiyonumuzun parametrelerinin aldığı değerler *p ve index sırasıyla dizi string arrayi ve index yani 2 olmuştur. [crayon-5b8deb748aa6b449627002/] Fonksiyonun başındaki * işareti ile de fonksiyonumuzun dönüş tipi pointer olmuştur [crayon-5b8deb748aa72879027838/] uzunluk ise strlen komutuyla p stringinin uzunluğu olarak tanımlanmıştır.
[crayon-5b8deb748aa79936923237/] Fonksiyonumuzun içindeki bu koşul ile stringimizin uzunluğu index(2) ten büyük olduğu müddetçe dönüşümüz (p+index) kadar olacatır.aksi halde NULL (boş) bir değer olacaktır. Bunun anlamı ise mesela p stringimizin adresinin 2 birim ilerlemiş olması ve main fonksiyonuna dönüşün pointer biçiminde olmasıyla main fonksiyonundaki [crayon-5b8deb748aa80661229383/] çıktısının sonucu ise zilimagiris olacaktır. Hazırlayan Gürkan Aktaş. C++ Dilinde Ctype Kütüphanesi Bu yazının amacı C kütüphanelerinden ctype.h kütüphanesini açıklamaktır. Kütüphane kabaca C dilinde bulunan karakterler (char) üzerinde işlem yapmaya imkan sağlar. Kütüphane ismi de buradan gelmektedir ( char + type = ctype). Amacı bir karakterin tipini algılama veya değiştirmektir. Kütüphane herhangi bir C kodunda aşağıdaki şekilde eklenir. #include <ctype.h> Örnek olarak klavyeden bir dizgi (string) alan ve bu dizgi içerisindeki büyük harfleri küçüğe ve küçük harfleri büyüğe
çeviren kodu aşağıdaki şekilde kodlayabiliriz: [crayon-5b8deb748b29d981693020/] Kodun örnek çıktısı aşağıda verilmiştir: bir yazı girinizali BABA ve Kirk Haramiler ali baba VE kirk haramiler C Dilinde Limit Kütüphanesi limits.h başlığı char, short, int, long gibi değişken tiplerinin en fazla ve en az değer aralıklarını belirleyen standart C++ kütüphanesidir. Örneğin işaretsiz bir karakteri 255 maksimum değere kadar saklayabilirsiniz. Aşağıdaki örneğe bakalım : [crayon-5b8deb748b750703085586/] bu örneğin çıktısı şu şekildedir : 1 byte ın bit sayısı = 8 Maximum SIGNED CHAR = -126 Maximum SIGNED CHAR = 127 Maximum UNSIGNED CHAR = 255 Maximum SHORT INT = -32766 Maximum SHORT INT = 32767 Maximum INT = -2147483648 Maximum INT = 2147483647 Maximum CHAR = -128 Maximum CHAR =127 Maximum LONG = -2147483648 Maximum LONG = 2147483647
İnsertion Sort (Eklemeli Sıralama) C++ İnsertion Sort bir dizideki verileri sıralama algoritmasıdır. Bu algoritmada kısaca yapılan işlem dizinin solundaki elaman ile sağındaki elamanı karşılaştırıp küçük olanı sola atmaktır. Dizinin tüm elamanları sırayla tek tek kontrol edilir ve yer değiştirilir böylece dizi küçükten büyüğe sıralanmış olur. Örnek olarak 5 elamanlı bir diziyi küçükten büyüğe sırayalım : #include <iostream> using namespace std; int main() { int indis,i,key,k; int dizi[5]={3,2,4,1,5; for(indis=0;indis<5;indis++){ key=dizi[indis]; i=indis-1; while(i>=0 && dizi[i]>key) { dizi[i+1]=dizi[i]; i=i-1; dizi[i+1]=key; for(k=0;k<5;k++){ cout<<dizi[k]<< \n ; return 0; program çıktısı :
1 2 3 4 5 şeklinde olacaktır. Selection Sort (Seçerek Sıralama) C++ Bir dizideki verilerin küçükten büyüğe veya büyükten küçüğe doğru sıralanmasında kullanılan bir sıralama algoritmasıdır. Bu algoritma da dizinin ilk elemanı en küçük olarak kabul edilebilir, sonra dizi içerisindeki en küçük eleman aranır, bulunduğu zaman ilk eleman ile yer değiştirilir, daha sonra kalan elemanlar arasında ikinci en küçük eleman aranır ve ikinci elemanla yer değiştirilir. Bu işlem dizinin son elemanına kadar tekrar edildiğinde dizi küçükten, büyüğe doğru sıralanmış olur. örnek olarak 6 elamanlı bir dizinin sıralanışı: #include <iostream> using namespace std; int main() { int dizi[6]=(4,1,5,3,6,2); int gecici,enkucuk,indis,i; int k; for(indis=0;indis<5;indis++) {
enkucuk=indis; for(i=indis;i<6;i++){ if(dizi[i]<dizi[enkucuk])enkucuk=i; gecici=dizi[indis];//dizinin elamanları yer değişiyor dizi[indis]=dizi[enkucuk];//dizinin elamanları yer değişiyor dizi[enkucuk]=gecici;//dizinin elamanları yer değişiyor //diziyi yazdıralım for(k=0;k<6;k++){ cout<<dizi[k]<< \n ; return 0; Örnekte olduğu gibi dizinin ilk elamanı göz önüne alıp kıyaslayarak sırasıyla en küçük değerler bulunur ve bu değerler sırasıyla yer değiştirir.böylece dizi küçükten büyüğe sıralanmış olur. C dilinde if-else yapısı Merhaba arkadaşlar, bu başlık altında sizlere koşullu ifadelerden bahsedeceğim. Peki nedir bu koşullu ifadeler(if, else if, else)? Bunu bir koşulun gerçekleşmesine bağlı olarak gerçekleşen olaylar olarak açıklayabiliriz. Örneğin; bugün arkadaşımla buluşacağım bu yüzden sinemaya gideceğiz. Arkadaşımla buluşmam koşul, olayın gerçekleşmesi ise sinemaya gitmemiz aksi durumda sinemaya gitmeyeceğiz. Bu ve buna benzer yapıları oluşturmak için if, else if, else komutları mevcut ve bugün bunlardan bahsedeceğim.
Öncelikle if, else kullanımından bahsedelim 1. 2. 3. 4. 5. #include <stdio.h> İnt main() { if(koşul) İlk olarak küme parantezi içerisinde if yazıp parantez içerisinde koşulumuzu belirtiyoruz 1. 2. 3. 4. 5. 6. 7. #include <stdio.h> İnt main() { if(koşul) { işlemler Tekrar küme parantezi açarak gerçekleşecek işlemlerimizi yazıyoruz Koşul gerçekleştiğinde eğer koşul gerçekleşirse, parantez içerisindeki işlemler gerçekleşecek Aksi durumda olacak iş ise else yapısıyla sağlanır;
1. #include <stdio.h> 2. İnt main() 3. { 4. if(koşul) 5. { işlemler 6. 7. else 8. {işlemler 9. 10. İf, else yapısının en basit hali bu şekildedir.koşul gerçekleşirse ilk blok, gerçekleşmezse ikinci blok çalışacaktır Bir koşulu etkileyecek birden fazla durumda meydana gelebilir, bu esnada bu blokların nasıl kullanıldığına dair örneklerde vereceğim ama önce en basit haline bir örnek verelim. 1. #include<stdio.h> 2. int main( void ) 3. { 4. int s1; 5. printf( Lütfen bir tam sayı giriniz: ); 6. scanf( %d,&s1); 7. if( s1 > 100 ) 8. printf( Girilen sayı 100 den büyüktür\n ); 9. else 10. printf( Girilen sayı 100 den küçüktür\n ); 11. return 0; 12.
Örnekte görüldüğü gibi, bir koşulun doğruluğunun if ile kontrolünü yaptırıp koşul karşılanıyorsa bir sonraki komut satırı devreye giriyor ve Girilen sayı 100 den büyüktür ekrana yazdırılıyor. Şayet verilen koşul yanlışsa, o zaman else satırı dikkate alınıyor ve ekrana Girilen sayı 100 den küçüktür yazdırılıyor. Ancak ikisini de yapması gibi bir durum söz konusu değildir. Birden fazla durum söz konusu olduğunda else if yapısını kullanabiliriz, ne kadar durum gerçekleşebilirse if yapısından sonra o kadar else if ekleyabiliriz; Örneğin aynı boyda 4 kişiyi seçebiliriz ve bunları zayıf, normal, kilolu, aşırı kilolu olarak değerlendirebiliriz ve bu olayda 4 duruma sahip oluruz. Bunun gibi birden fazla gerçekleşebilecek durumlarda else if yapısını kullanırız Bunu alttaki örnekte görebilirsiniz 1. #include<stdio.h> 2. int main( void ) 3. { 4. int k; 5. printf( kilonuzu giriniz: ); 6. scanf( %d,&k); 7. if( 50<k< 60 ) 8. printf( zayifsiniz\n ); 9. else if( 60<k<70 ) 10. printf( normalsiniz\n ); 11. else if( 70<k<80 ) 12. printf( kilolusunuz\n ); 13. else if( 80<k<90 ) 14. printf( asiri kilolusunuz\n );
15. return 0; 16. İç İçe if ve else deyimleri C dilinde, bir if veya else deyimine bağlı olarak çalıştırılan işlem satırında yeni bir if deyimi yer alabilir. Yine bir if veya else deyimine bağlı olarak çalıştırılan kod bloğu içinde yer alan işlem satırlarından birisinde yeni bir if deyimi yer alabilir. Başka bir ifade ile, bir if deyimi başka bir if veya else deyiminin içinde kullanılabilir. İçte kalan if deyimi dıştaki if deyimine ait ifadenin doğru olması halinde programın çalıştırdığı tek bir satır olabileceği gibi, dıştaki if deyimine ait bir kod bloğunun işlem satırlarından biri de olabilir. 1. if(ifade) 2. if(ifade) işlem-satırı; 3. if(ifade) { 4. if(ifade) { işlem-satırı; işlem-satırı; 5. 6. else { 7. işlem-satırı; 8. if(ifade) işlem-satırı; 9. else işlem-satırı; 10. 11.
İf, if else, else if örnekleri; Örnek if kullanımı : Örnek programımızda klavyeden, bir tam sayı girilmesi istenmektedir. Ve bizde girilen sayı, 100 den büyükse koşulunu vererek ekrana Girilen sayı 100 den büyüktür yazdırmaktayız. 1. 2. 3. 4. 5. 6. 7. 8. 9. #include<stdio.h> int main( void ) { int s1; //girilen sayimiz// printf( Lütfen bir tam sayı giriniz: ); scanf( %d,&s1); if( s1 > 100 ) printf( Girilen sayı 100 den büyüktür\n ); return 0; Örnek if else kullanımı : Klavyeden girilen sayının tek mi çift mi olduğunu ekrana yazdıran program 1. #include <stdio.h> 2. #include <conio.h> 3. int main() 4. { 5. int a; 6. printf( Sayiyi giriniz= ); 7. scanf( %d,&a); 8. if(a%2==0)
9. printf( Girilen sayi cifttir. ); 10. else 11. printf( Girilen sayi tektir. ); 12. getch(); 13. return 0; 14. Örnek else if kullanımı; Kullanıcıyı yasına göre çocuk, genç ve yaslı olarak sınıflandırma 1. #include <stdio.h>#include <conio.h> int main() { int yas; printf( yasinizi giriniz: ); scanf( %d,&yas); if(yas<=17) {printf( cocuk ); else if(yas==18) { printf( genc ); else
{ printf( yasli ); Hazırlayan Çağrı KONCA C de giriş-çıkış komutları Tüm programlama dillerinde belirli bir formata göre ya da formatsız olarak programda kullanmak için giriş çıkış deyimleri kullanılır C de kullanılan giriş çıkış komutları şunlardır; PRİNTF() KOMUTU Programda kullandığımız değişken veya yazıcıya yazdırmak için kullanılan komuttur.bu komut stido.h kütüphanesinde bulunmaktadır. Kullanım Şekli; Printf( [mesaj] format_string,değişken); Mesaj: kullanılması zorunlu olmayan ama yapılan işlemle ilgili mesajları ekrana yazdıran kısımdır. Format_string: yazdırlmak istenilen değişken ve sabitlerin veri türlerini belilemek için kullanılan karakter topluluğudur.bilgini ekrana ne şekilde yazılacağını belirtir.
Format_string üç kısımdan oluşmaktadır: Düz metin (literal string): yazdırılmak istenen ileti. Örneğin: printf( MERHABA DÜNYA )gibi. Konrol karakterleri (escape squence): değişkenlerin ve sabitlerin nasıl yazılacağını belirtmek veya imlecin alt satıra geçirilmesi gibi bazı işlemlerin gerçekleştirilmesi için kullanılır. Bu karakterler Tablo 4.1 de listelenmiştir. Örneğin: printf( MERHEBE\n DÜNYA ); gibi. Tablo 4.1: Kontrol karakterleri Karakter Anlamı \a Ses üretir (alert) \b imleci bir sola kaydır (backspace) \f Sayfa atla. Bir sonraki sayfanın başına geç (formfeed) \n Bir alt satıra geç (newline) \r Satır başı yap (carriage return) \t Yatay TAB (horizontal TAB) \v Dikey TAB (vertical TAB) \ Çift tırnak karakterini ekrana yaz \ Tek tırnak karakterini ekrana yaz \\ \ karakterini ekrana yaz %% % karakterini ekrana yaz Tip belirleyici (conversion specifier): % işareti ile başlar ve bir veya iki karakterden oluşur (%d gibi). Ekrana yazdırılmak istenen değişkenin tipi, % işaretinden sonra belirtilir Örneğin: printf( x in değeri %d dir ); gibi. Tablo 4.2: Tip karakterleri
Tip Karakteri %c %s %d %ld %u %lu Anlamı tek bir karakter karakter dizisi (string) işaretli ondalık tamsayı uzun işaretli ondalık tamsayı işaretsiz ondalık tamsayı işaretsiz uzun tamsayı Yazdırılacak veri tipi Char Char int, short Long unsigned int, unsigned short unsigned long %f Gerçel sayı Float %lf Çift duayarlı gerçel sayı Double Scanf() KOMUTU Değişkenlerin bellekteki alanlarına klavyeden değer girmek için kullanılır.stdio.h kütüphanesinde bulunur. Kullanım şekli; Scanf( format_string,değişken); Örnekler:,
01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: ÇIKTI /* 04prg03.c scanf() fonksiyonu ile int ve float tipindeki verilerin okunması */ #include <stdio.h> main() { int t; float g; printf( Bir gercel sayi girin: ); scanf( %f,&g); printf( Bir tamsayi girin : ); scanf( %d,&t); printf( \n ); printf( \t %f * %f = %f\n,g,g,g*g); printf( \t %d * %d = %d\n,t,t,t*t); return 0; Bir gercel sayi girin: 1.34 Bir tamsayi girin : 12 1.340000 * 1.340000 = 1.795600 12 * 12 = 144
C dilinde For döngüsü ve örnekleri Döngü (loop) deyimleri, bir kümenin belli bir koşul altında tekrar edilmesi için kullanılır. C programlama dilinde, while, do while ve for olmak üzere üç tip döngü deyimi vardır. Diğer programlama dillerinde olduğu gibi, bu deyimlerle istenildiği kadar iç-içe döngü yapısı kullanılabilir. Ben sizlere sadece for döngüsünden bahsedeceğim, sitedeki paylaşımlar içerisinde diğer döngülere de ulaşabilirsiniz For dögüsü For döngüsün kalıbı şu şekildedir; for (int i=0;i<=10;i++) { printf( %d-yazilimagiris.com\n,i); //Belirlediğimiz i değişkenini sıfırdan başlatıyoruz ve istediğimiz değere(10) ulaşana kadar parantez içerisindeki işlem tekrar ediliyor
Koşulu ve işlemi gördüğünüz gibi tek satırda halledebiliyoruz, bu yüzden kullanımı daha kolay ve pratiktir bu sebeple while döngüsüne göre daha fazla kullanılır. Şimdi 10 a kadar olan pozitif sayıların toplamını hesaplayan bir program yazarak for döngüsünün mantığını daha iyi anlamaya çalışalım. 1. #include <stdio.h> 2. int main() 3. { 4. int i,toplam; 5. toplam=0; 6. for(i=1;i<=10;i++){ 7. toplam+=i; // Her adımda i değeri toplam değişkenine ekleniyor. 8. 9. printf( Toplam = %d,toplam); 10. return 0; 11.
Kodlamayı açıklamak gerekirse, for döngüsüne girdiğimizde i değişkenine 1 değerini atıyoruz ve her adımda i++ operatörü ile birer birer artmasını sağlayarak son değer olarak belirlediğimiz 10 a kadar gitmesini sağlıyoruz, i değeri 11 olduğu zaman i<=10 koşulunu sağlamayacağı için döngüye devam etmeyecektir. Döngünün içerisinde ki işlemlerde ise her i değerini daha önce belirlediğimiz toplam isminde ki değişkenine ekliyor (burada toplam+=i; yerine toplam=toplam+i; de yazılabilirdi.) ve 10 a kadar olan sayıların toplamını hesaplamış oluyor. İç içe for döngüsü C de döngüleri tek başına kullanabileceğiniz gibi, birbiri içinde de kullanabilirsiniz. Eğer bir döngüyü, başka bir döngünün kod bloğu içinde tanımlarsanız, iç içe döngü oluşturulmuş olur. ANSI C standartlarına göre en az 15 adet döngü birbiri içinde tanımlanabilmelidir. Şimdi basit bir örnek üzerinde bu özelliği inceleyelim: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. #include <stdio.h> #include <conio.h> main() { int id1, id2; for (id1=0; id1<5; id1++ ) { for (id2=0; id2<10; id2++) printf( %d, id2); printf( \n ); Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar: 0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 Program, önce ilk for döngüsünde id1 değişkenine 0 değerini atar. Koşul bölümünde doğru bir sonuç elde ettiği için ilk for döngüsü ile ilgili kod bloğunu çalıştırır. Kod bloğu içindeki for döngüsüne ait id2 değişkenine 0 değerini atar. Koşul bölümünde doğru bir sonuç elde ettiği için ikinci for döngüsü ile ilgili işlem satırını çalıştırır ve ekrana 0 değerini yazar. İkinci döngü, daha önce gördüğümüz gibi, id2 değişken değeri 10 dan küçük olduğu sürece çalışmasına devam eder ve ekrana aşağıdaki satırı yazar: 0 1 2 3 4 5 6 7 8 9 İkinci for döngüsü sona erdiğinde program kod bloğu içinde yer alan ikinci satır ile satır başı yapar. Daha sonra program ilk for döngüsünde id1 değişkeninin değerini 1 artırarak tekrar kod bloğunu çalıştırır. İlk for döngüsü de id1 değişken değeri 5 den küçük olduğu sürece çalışmasına devam eder. İlk for döngüsünün her tekrarında kod bloğunda yer alan ikinci for döngüsü 10 defa tekrar eder. Örnekler; 1-Üs alma oyunu
Bu örnekte, program sizden 1 den 10 a kadar olan sayıların karelerini sıra ile girmenizi ister. Sonra, doğru ve yanlış cevap sayısını kaydederek ekrana yazar. 1. 3. 4. 5. 7. 8. 9. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. #include <stdio.h> main() { int id1, id2, id3=0, id4=0; for (id1=1; id1<10; id1++) { printf( %d sayisinin karesi kac eder?, id1); scanf( %d, &id2); if(id2 == id1 * id1) { printf( Cevabiniz dogrudur!\n ); id3++; else { printf( Cevabiniz yanlistir!\n\a ); printf( Dogru cevap %d sayisidir!\n, id1 * id1); id4++; printf( \ndogru cevap sayisi : %d yanlis cevap say : %d, id3, id4); 23. Örnek 2
Program, bir for döngüsü içinde 1 den 10 a kadar olan sayıların kendinden küçük sayıların toplamını fonk1() fonksiyonu içindeki bir döngüyü kullanarak ekrana yazar. Burada, fonk1() fonksiyonunun direk olarak printf() fonksiyonunun bir argümanı olarak aynı satırda tanımlandığına dikkat ediniz. 1. 3. 4. 5. 7. 8. 9. 10. 12. 13. 14. 16. 18. 19. #include <stdio.h> main() { int id1; for (id1=1; id1<10; id1++) { printf( %d sayısı altındaki sayılar toplamı: %d\n, id1, fonk1(id1)); fonk1(int id1) { int id2, id3=0; for (id2=1; id2<id1; id2++) id3 = id3 + id2; return id3; Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar: 1 sayısı altındaki sayılar toplamı: 0 2 sayısı altındaki sayılar toplamı: 1 3 sayısı altındaki sayılar toplamı: 3 4 sayısı altındaki sayılar toplamı: 6 5 sayısı altındaki sayılar toplamı: 10 6 sayısı altındaki sayılar toplamı: 15
7 sayısı altındaki sayılar toplamı: 21 8 sayısı altındaki sayılar toplamı: 28 9 sayısı altındaki sayılar toplamı: 36 Hazırlayan Çağrı KONCA