Diziler (Arrays) Çok Boyutlu Diziler
|
|
- Levent Kunter
- 6 yıl önce
- İzleme sayısı:
Transkript
1 Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir. Bu diziler sayesinde değerler, bir tablodaki veriler gibi düşünülebilirler. Bu tip dizilerde her elemana ulaşmak için satır indisi ve sütun indisi kullanılır. C dilindeki dizilerin boyutları ikiden de fazla olabilir. Bir sınır olmamakla beraber 12 boyuta kadar destekler. Biz burada çift boyutlu dizileri ele alacağız. Tanımlama: dizinintürü dizininadı [satır sayısı][sütun sayısı]; ÖRNEK: int a[3][4]; /* 3 satırlı, 4 sütunlu int türünde değerler alabilen bir dizi */ float b[5][3]; /*5 satırlı 3 sütunlu float türünde değerler alabilen bir dizi */ Örnekte verilen ilk dizi tanımlamasındaki birinci köşeli parantez içerisinde verilen değer satır sayısı, ikinci köşeli parantez içerisinde verilen değerde sütun sayısıdır. Bu dizi 3 4 lük bir tablo gibi düşünülebilir. Ancak bellekte tutulma şeklinin ardışık olduğu unutulmamalıdır. Sütun 0 Sütun 1 Sütun 2 Sütun 3 Satır 0 a[0][0] a[0][1] a[0][2] a[0][3] Satır 1 a[1][0] a[1][1] a[1][2]
2 a[1][3] Satır 2 a[2][1] a[2][3] a[2][0] a[2][2] ÇİFT BOYUTLU DİZİLERE İLK DEĞER ATANMASI Tıpkı tek boyutlu dizilerde olduğu gibi ilk değer ataması aşağıdaki şekilde yapılır. int a[3][4]={ {4, 5, 3, 1}, {0, 4, 3, 1}, {1, 9, 7, 2 } }; Yine tek boyutlu dizilerde olduğu gibi eleman sayısından daha az değer girilirse, diğer elemanların ilk değerleri sıfır yada boş olur. İçteki küme işaretleri kullanılmadan yapıları bir ilk atamada, elemanlar ilk hücreden itibaren sırası ile yerleştirilirler. ÖRNEK: 3 4 lük çift boyutlu bir dizi içerisine klavyeden girilen değerleri, tablo halinde ekrana yazdıran programı yazınız. 1. /*Tablo halinde ekrana yazdıran program */ 2. #include <stdio.h> 3. int main() 4. { 5. int a[3][4], satir, sutun; 6. for( satir = 0 ; satir < 3 ; satir++ ) { 7. printf( %d. satirindaki elemanlar:, satir ); 8. /* satırdaki elemanlar */ 9. for ( sutun = 0 ; sutun < 4 ; sutun++ ) 10. /* bir seferde girilmiş olacak */ 11. scanf( %d, &a[satir][sutun]) ; 12. } 13. printf( \n TABLO \n ); 14. for ( satir = 0 ; satir <3 ; satir++ ) {
3 printf( %d. satır:, satir ) ; for( sutun = 0 ; sutun < 4 ; sutun++ ) printf( %d, a[satir][sutun] ); printf( \n ); /*bir alt satıra geçmek için*/ } return 0; } ÖRNEK: Elemanları klavyeden girilen 4 6 lık bir dizinin sütun toplamlarını ekrana yazan programı yazınız. 1. /* iki boyutlu dizinin sütun toplamları */ 2. #include <stdio.h> 4. #define N 4 /* Satır sayısı sabiti */ 5. #define M 5 /* Sütun sayısı sabiti */ 6. int main() 7. { 8. int a[n][m]; 9. int sutun[m] = ( 0 ); /* İlk 10. değerleri 0 ata */ int i, j; 11. for( i = 0 ; i < N ; i++ ) { 12. printf( %d. satır, i); 13. /* satırdaki elemanlar */ 14. for ( j = 0 ; j < M ; j++ ) 15. /* bir seferde girilmiş olacak */ 16. scanf( %d, &a[i][j] ); 17. } 18. for ( i = 0 ; i < N ; i++ ) 19. for( j = 0 ; j < M ; j++ ) 20. sutun[j] = sutun[j] + a[i][j]; /* sütun 21. toplamı */ printf( \n \n 22. ); for( j = 0 ; j < 6 ; j++) 23. printf( %d, sutun[j] );
4 } return 0; ÇOK BOYUTLU DİZİLERİN FONKSİYONLARA PARAMETRE OLARAK GÖNDERİLMESİ Çok boyutlu bir dizi, fonksiyona parametre olarak gönderilecekse, tek boyutlularda olduğu gibi sadece adı yazılır. Gönderilen dizi değişkeni karşılayan tanımlamada ise gönderilen dizinin boyutu kadar köşeli parantez açılır ve kapatılır. İlk köşeli parantez içerisine eleman sayısını ifade eden değer yazılmaz. Fakat diğerlerine eleman sayıları verilmek zorundadır. Derleyici bu değerleri elemanların hafızaya yerleşimlerini tanımlamak için kullanılır. Dizi kaç boyutlu olursa olsun bellek ardışık tek boyutlu hücrelerden oluşur. Dolayısıyla indis numaraları ne olursa olsun bütün dizi elemanları bellekte ardışık olarak saklanmak zorundadır. Örneğin; }; int a[2][3] = { {13, 12, 8}, {10, 50, 2} gibi bir dizi tanımlandığında elemanları bellekte tutulur. Yani çift boyutlu diziler tablo halinde bellekte tutulmaz. Her bir satır verilen sütun sayısı kadar sonraki hücreler içerisinde tutulur. Zaten her bir satır tek boyutlu bir dizi gibi düşünülebilir. Bütün satırlar uç uca eklenerek belleğe yerleşir. Derleyici bir sonraki satırın başlangıçtan kaç eleman sonra başladığını sütun sayısından anlar. Bu nedenle ilk satır sayısı haricindeki diğer değerler fonksiyonda karşılayan değişkenin ikinci ve daha sonraki köşeli parantezleri içerisine yazılmalıdır.
5 ÖRNEK: Kendisine gönderilen 3 4 lük bir diziyi ekrana tablo halinde yazan fonksiyonu main() fonksiyonu ile beraber yazınız. 1. #include <stdio.h> 3. #define N 3 /* Satır sayısı sabiti */ 4. #define M 4 /* Sütun sayısı sabiti */ 6. void diziyaz ( int [] [M] ); /*prototip tanımlaması */ 8. int main() 9. { int a[n][m] = { {4, 5, 3, 1}, 12. {0, 4, 3, 1}, 13. {1, 9, 7, 2} }; 14. diziyaz ( a ); 15. return 0; 16. } 17. void diziyaz ( int b[] [M] ) 18. { 19. int sutun; 20. int satir; for( satir = 0 ; satir < N ; satir++) { 23. printf( %d. satırdaki elemanlar:, satir ); 24. for( sutun = 0 ; sutun < M ; sutun++) 25. printf( %d, b[satir][sutun] ); 26. printf( \n ) ; /* bir alt satıra geçmek için */ 27. } 28. }
6 Diziler (Arrays) Tek Boyutlu Diziler TEK BOYUTLU DİZİLER Tek boyutta dizileri tanımlamanın genel kullanımı aşağıdaki biçimdedir. C99 öncesi, C Dili standartlarına göre; dizinin eleman sayısı, ya belli bir sayı ya da önceden #define önişlemci direktifi ile tanımlanmış sembolik bir sabit olmalıdır. Değişken olamaz. C99 standardı ile birlikte dizinin eleman sayısı değişkende olabilmektedir. Genel kullanımdaki köşeli parantez isteğe bağlı anlamında değildir. Köşeli parantez sembolü dizi tanımlamalarında mutlaka yazılmalıdır. GK: dizinintürü dizininadı [ ElemanSayısı ] ; ÖRNEK: int sayilar[6]; /* 6 elemanlı, her elemanı int olan dizi*/ char kodlar[15]; /*15 elemanlı, her elemanı char olan dizi*/ float boylar[5]; /*5 elemanlı, her elemanı float olan dizi*/ double notlar[7]; /*7 elemanlı, her elemanı double olan dizi*/ Derleyici ilk örnekteki gibi bir komutla karşılaştığında 6 adet sayının saklanacağı bellek alanı ayırır. Bir tam sayı 2 byte (DOS ta) uzunluğunda olduğuna göre dizinin bellekte kaplayacağı alan 2*6=12 byte olacaktır. Bu alanın başlangıç adresini, dizi adına aktarır. TEK BOYUTLU DİZİLERE DEĞER ATAMASI Dizinin elemanlarına ulaşmak için dizinin ismi ve köşeli
7 parantez içerisinde indis numarası yazmak yeterlidir. Aşağıdaki örnekleri inceleyelim; sayilar[0] = -12; /* 0 numaralı elemanına -12 değerini ata */ sayilar[2] = sayilar[4] + 3; /*dizinin 2 numaralı elemanına 4 numaralı elemanının 3 fazlasını ata */ for( i=0 ; i<6 ; i++) /*0 dan 6 ya kadar. 6 Dahil değil */ sayilar[i] = 0 /* dizinin elemanlarına 0 değerini ata */ Yukarıda döngü değişkeni ile dizi elemanlarına erişim yöntemi gösterilmiştir. Bu örnekten sonra aşağıdaki ifadelerin birbirlerinden farkını vurgulamak yerinde olacaktır. sayilar[i] + 1 ve sayilar[i+1] İlk gösterim dizinin i numaralı indisindeki elemanın bir fazlası anlamına gelir. İkinci gösterim ise dizinin i nin bir fazlası indisindeki elemanı anlamına gelir. Dolayısıyla; sayilar[i] + 1 =/= sayilar[i +1] (Eşit değildir) TEK BOYUTLU DİZİLERE İLK DEĞER ATANMASI Bir önceki konuda dizinin elemanlarına nasıl değer atandığı belirtilmiştir. Tanımlandıkları anda ilk değer ataması ise aşağıdaki şekilde yapılır; int puanlar[5] = {4, 6, 3, 1, 8}; İlk değer atama işleminde küme parantezi (brace) kullanılır. Küme işaretinden sonra (;) kullanılmasına dikkat ediniz. Böyle bir ilk değer atamasından sonra dizinin elemanları şöyle yerleşir; puanlar[0] = 4 puanlar[1] = 5 puanlar[2] = 3 puanlar[3] = 1
8 puanlar[4] = 8 Küme işaretleri içerisine dizinin eleman sayısından daha fazla eleman yazıldığında, bir yazım hatası ortaya çıkar. Eleman sayısından daha az eleman yazıldığında ise, diğer elemanlar otomatik olarak sıfır değerini alırlar. İlk değer ataması yapılmayan dizilerin elemanları bellekteki rastgele değerlerden oluşur. Ancak dizi static yada global tanımlanmış ise ilk değer ataması yapılmasa dahi elemanlarının değerleri sıfır ya da boştur. Ayrıca ilk değer ataması yapıldığında eleman sayısını yazma zorunluluğu yoktur. Ne kadar eleman yazılmışsa eleman sayısı o olur. ÖRNEK /*Klavyeden girilen 5 adet sayısı tersinden yazar*/ #include <stdio.h> int main() { int sayilar[5]; /* Beş elemanlı tamsayı dizi*/ int indis; printf( 5 adet sayi giriniz: \n ); for( indis = 0 ; indis < 5 ; indis++ ) scanf( %d, &sayilar[indis] ); printf( Girilen sayilar(sondan basa) : \n ); for( indis = 4 ; indis >= 0 ; indis ) printf( %d\n, sayilar[indis]); return 0; } ÖRNEK: Klavyeden girilen 20 adet nottan, ortalamadan büyük olanları yazan program. 1. #include <stdio.h> 2. int main()
9 3. { } int notlar[20]; int i; double toplam = 0; double ortalama; printf( 20 adet notu giriniz: \n ) ; for( i = 0 ; i < 20 ; i++) { scanf( %d, ¬lar[i] ); toplam = toplam + notlar[i]; } ortalama = toplam / 20 ; printf( Sinifin ortalamasi = %.2f\n, ortalama); printf ( Ortalamadan yuksek olan notlar\n ); for ( i = 0 ; i < 20 ; i++) if( notlar[i] > ortalama) printf( %d \n, notlar[i] ); return 0 ; Unsigned Char Veri Tipi RAM bellekte 8 bit yani 1 byte yer kaplar.eğer 8 bitin hepsi sıfır ise onlu sayı sistemindeki karşılığı sıfır, hepsi bir ise onlu sayı sistemindeki karşılığı 255 tir. Yani bu veri tipi 0:255 arasında değerler alır > >255 Char kelimesinin önündeki unsigned kelimesi işaretsiz anlamına gelir. Bu da bu veri tipinin sadece pozitif (+) tamsayı barındırabileceği anlamına gelir.
10 Eğer yazdığımız programda 0:255 arası küçük tamsayı değerler arasında çalışacaksak en mantıklı şey bu veri tipini kullanmaktır. Örneğin arası öğrenci notları ile çalışacaksak short veya int veri tipi yerine bu veri tipi kullanılmalıdır çünkü int RAM bellekte 4 byte yer kaplarken char veri tipi 1 byte yer kaplar. Sonuçta daha az bellek isteyen ve kaynakları daha iyi kullanan bir program yazmış oluruz. Kaynak: C++/C Fahrettin Erdinç Döngü yapıları, (for, do while, while), Döngü Kavramı Programlama konusunda -hangi dil olursa olsun- en kritik yapılardan biri döngülerdir. Döngüler, bir işi, belirlediğiniz sayıda yapan kod blokları olarak düşünülebilir. Ekrana 10 kere Merhaba Dünya yazan bir programda, Merhaba Dünya yazdıran kodu aslında tek bir defa yazarsınız, döngü burada devreye girip, sizin için bu kodu istediğiniz sayıda tekrarlar. Döngüleri bu kadar kritik yapan unsur; iyi yazılıp, optimize edilmediği takdirde, bilgisayarınızın işlem gücünü gereksiz yere tüketmesi ve harcanan zamanı arttırmasıdır. Benzer şekilde, iyi yazılmış bir döngü, programınızı hızlı çalıştıracaktır. Bütün döngüler temelde iki aşamayla özetlenebilir. Aşamalardan
11 biri, döngünün devam edip etmeyeceğine karar verilen mantıksal sorgu kısmıdır. Örneğin, ekrana 10 kere Merhaba Dünya yazdıracaksanız, kaçıncı seferde olduğunu, koşul kısmında kontrol edersiniz. Diğer aşama, döngünün ne yapacağını yazdığınız kısımdır. Yani ekrana Merhaba Dünya yazılması döngünün yapacağı iştir. Döngünün devam edip etmeyeceğine karar verilen aşamada, hatalı bir mantık sınaması koyarsanız, ya programınız hiç çalışmaz ya da sonsuza kadar çalışabilir. C programlama diline ait bazı döngüler; while, do while, for yapılarıdır. Bunlar dışında, goto döngü elemanı olmasına rağmen, kullanılması pek tavsiye edilmemektedir. while Döngüsü while döngüsü, en temel döngü tipimizdir. Bir kontrol ifadesiyle döngünün devam edilip edilmeyeceği kontrol edilirken, scope içinde ( yani ayraç işaretleri arasında ) kalan bütün alan işleme sokulur. İşleme sokulan kod kısmı döngü yapılacak adet kadar tekrar eder. while döngüsünün genel yapısını ve akış şemasını aşağıda görebilirsiniz: while Yapısı [crayon-59e68e /] while Akış Diyagramı
12
13 Yukarda 10 kere ekrana Merhaba Dünya yazan programdan bahsettik. Gelin bir anlaşma yapalım ve döngülerle alakalı bütün ilk örneklerimiz bu programın nasıl yazılacağını göstersin. while döngüsü kullanarak, ekrana 10 kere Merhaba Dünya yazan program aşağıdaki gibidir: [crayon-59e68e /] Yukardaki program aslında son derece basit. i değişkenine ilk değer olarak 0 atıyoruz. Daha sonra, while döngüsüne başlıyoruz. İfadenin doğruluğu ( yani i nin 10 dan küçük olup olmadığı) kontrol ediliyor. Eğer doğruysa, döngü içindeki kodların çalışması başlatılıyor. Elbette kodların başlamasından bir önceki adımda, i değişkeni arttırılıyor. Bu yapı toplamda 10 kere tekrar ediyor ve en sonunda i nin değeri 10 a eşit olunca, döngü sonlandırılıyor. Yandaki işlem basit bir toplama ifadesidir. Yanda gördüğümüz ifade de, n değerini kullanıcıdan alacağımızı düşünerek bir program yazalım. Bu program, alacağı n değerine göre, kendisine kadar olan sayıların karelerinin toplamını gösterecektir. Bu programı yazarsak: [crayon-59e68e189074b /] do while Döngüsü Göreceğimiz ikinci döngü çeşidi, do while döngüsüdür. Yaptığı iş, while ile hemen hemen aynıdır; verilen işi, döngü koşulu bozulana kadar sürdürür. Ancak while a göre önemli bir farkı vardır. while döngülerinde, döngü içersindeki işlem yapılmadan önce, sunulan koşul kontrol edilir. Şayet koşul sağlanmıyorsa, o
14 while döngüsünün hiç çalışmama ihtimali de bulunmaktadır. do while döngülerindeyse, durum böyle değildir. İlk çalışmada koşul kontrolü yapılmaz. Dolayısıyla, her ne şartta olursa olsun, döngünüz -en azından bir kere- çalışacaktır. Bazı durumlarda, döngü bloğu içersindeki kodların en azından bir kere çalışması gerektiğinden, do while yapısı kullanılır. do while ile ilgili genel yapıyı ve akış şemasını aşağıda bulabilirsiniz: do while Yapısı [crayon-59e68e /] do while Akış Diyagramı
15 Önce Merhaba Dünya örneğimizi yapalım: [crayon-59e68e189075d /] Gördüğünüz gibi, bir önceki örneğimize oldukça benzer bir yapıda, yazıldı. Tek fark i nin değeri 0 da olsa, 1000 de olsa, en azından bir kez Merhaba Dünya nın yazılacak olmasıdır. Ancak while de kontrol önce yapıldığı için, hiçbir şey ekrana yazılmaz. Şimdi do while in kullanılmasının daha mantıklı olacağı bir program yapalım. Kullanıcıdan iki sayı alınsın. Bu iki sayı toplandıktan sonra, sonucu ekrana yazdırılsın. Yazdırma sonunda Devam etmek istiyor musunuz? sorusu sorulsun ve klavyeden E veya e karakterlerinden birisi girilirse, program devam etsin. Yok farklı birşey girilirse, program sonlandırılsın. Örnek programımızı aşağıda bulabilirsiniz: [crayon-59e68e /] Program, kullanıcıdan iki sayı alıp, toplamını ekrana bastıktan sonra, yeniden işlem yapıp yapmak istemediğimizi sormaktadır. Bu programı while ile de yazabilirdik. Ancak while ile yazabilmek için, devam_mi değişkenine önceden E değerini atamamız gerekmekteydi. do while döngüsündeyse, bu zorunluluğa gerek kalmamıştır. Not: Yukardaki programda, farketmiş olduğunuz gibi karakter okumayı biraz farklı yaptık. Normalde, scanf( ) fonksiyonunu kullanmak yeterliyken, burada, işin içine bir de, do while girdi. Açıklayacak olursak, C de karakter okumaları, biraz sıkıntılıdır. Eğer giriş tampon belleğinde (Buffer) veri bulunuyorsa, bu direkt karaktere atanır. Bundan kurtulmak için
16 birçok yöntem olduğu gibi, uygulanabilecek bir yöntem de, yukarda yazılmış olan döngü şeklinde değer almaktır. Çünkü siz daha bir şey girmeden, ilk değer \n geleceğinden, döngünün ikinci çalışmasında, doğru değer atanacaktır. İlerki konularda, daha detaylı ele alacağımız bir problem olarak şimdilik önemsemeyelim. Sadece karakter okuyacağınız zaman problem çıkarsa, yukardaki gibi bir yöntem uygulanabileceğini bilmeniz -şimdilik- yeterli. for Döngüsü while ve do while dışında, üçüncü bir döngü tipi olarak, for yapısı bulunmaktadır. Diğer iki döngüden farklı olarak, for yapısı, yenilemeli-tekrarlamalı (İngilizce iterative) yapılarda kullanıma daha uygundur. Bunu performans anlamında söylemiyorum. Demek istediğim yazım tekniği olarak, for döngüsünün daha kullanışlı olmasıdır. Örneğin birbirini, sürekli tekrar eden işlemlerin yapıldığı Nümerik Analiz gibi alanlar, for döngüsü için iyi bir örnek olabilir. Ancak bu dediklerim sizi yanıltmasın; for döngüsü sadece soyut alanlarda çalışsın diye yaratılmış bir şey değildir. Programlarda, diğer iki döngüden çok daha fazla for kullanırsınız. Çünkü for sadece matematiksel hesaplama işlemlerinde değil, diziler ( array ) gibi konularda sürekli kullanılan bir yapıdır. Yazımı diğerlerine nazaran daha sade olduğundan, iteratif işlemlerde kullanılması elbette ki tesadüf olarak düşünülemez. Aşağıda for döngüsünün genel yazımını ve akış diyagramını göreceksiniz: for Yapısı [crayon-59e68e /] for Akış Diyagramı
17 İlk atacağımız adım; elbette ki ekrana 10 kere Merhaba Dünya yazdırmak olacak. ( Umarım bu Merhaba Dünya larla sizi fazla sıkıp, programlama işinden vazgeçirmemişimdir. Programlama mantığını kaptıktan sonra, dünyayı daha farklı görmeye başlayacak ve Merhaba Dünyalar ın sebebini daha iyi anlayacaksınız. Ve inanın bütün bu eziyete değer ) Buyrun programımız: [crayon-59e68e189077a /] Gördüğünüz gibi çok daha sade ve açık gözükür bir kod oldu. for altında tek satır komut olduğundan, küme parantezleri koymamız opsiyoneldi ama ne yaptığınızı karıştırmamak için, her zaman koymanızı öneririm. for döngüleriyle ilgili bazı özel durumlarda vardır. for döngüsü içersine yazdığınız ilk değer atama, kontrol ve arttırma işlemlerini tanımlama esnasında yapmanız gerekmez. Aşağıda verilen kod, yukardakiyle tamamen aynı işi yapar. Farkı, i nin daha önce tanımlanmış olması ve arttırma/azaltma işinin döngü içinde yapılmasıdır.
18 [crayon-59e68e /] break Komutu Bazı durumlarda, döngüyü aniden sonlandırmak isteriz. Bunun için break komutunu kullanırız. Döngüyü aniden sonlandırmak veya döngüyü kırmak işlemini, zaten daha önce switch case lerde kullanmıştık. Bahsetmediğimiz şey, bunun her döngü içersinde kullanılabileceğiydi. Aşağıdaki programı inceleyelim: [crayon-59e68e189078a /] Program için koyulmuş açıklamalar ( comment ) zaten neyin n olduğunu açıklıyor. Kısaca bir şeyler eklemek gerekirse, bitişinin nerede olacağını bilmediğimiz bir döngüyü ancak, break komutuyla sonlandırabiliriz. Şartlar sağlandığında, break komutu devreye girer ve döngü sonlandırılır. Bunun gibi bir çok örnek yaratmak mümkündür. continue Komutu break komutunun, döngüyü kırmak için olduğundan bahsetmiştik. Bunun dışında işlem yapmadan döngüyü devam ettirmek gibi durumlara da ihtiyacımız vardır. Bunun içinde continue ( Türkçe: devam ) komutunu kullanırız. [crayon-59e68e /] 0 ile 10 arasındaki tek sayıları gösteren program örneğini yukarda görebilirsiniz. Elbette ki bu işi daha farklı ve daha iyi yapan bir program yazabilirdik. Ama şimdilik continue komutunun nasıl kullanıldığını inceleyelim. Program bir for döngüsü çalıştırmaktadır. Her defasında i değişkenin 2 ye göre modu alınır. Eğer sonuç 0 sa, bu sayının çift olduğunu gösterir. Dolayısıyla, bunun ekrana yazdırılmaması gerekir. Bu yüzden, döngü içersindeki işlemleri sürdürmek yerine, altta kalan kodları atlarız. Burada continue
19 komutu kullanılır ve kullanıldığı noktadan itibaren olan işlemler yapılmaz. Döngü başa döner, aynı işlemleri yapar. Bu sefer i tek sayı olacağından continue komutu çalışmaz ve sayıyı ekrana bastırırız. Yazar: Oğuzhan YILMAZ Karar yapıları, (if else, switch) Karar Yapıları Karar yapıları adından da anlaşılacağı gibi program akışında belirli şart(lar) doğrultusunda hangi kod bloklarının çalışacağına karar vermemize olanak tanır. C dili gibi bir çok dilde 2 farklı karar yapısı vardır. Biri if diğeri ise switch (veya case) ismiyle anılır. if Yapısı Bilgisayarda yapılan bütün mantıksal işlemler kaba bir temele dayanır. Şartlar sağlandığı halde yapılacak işlem belirlenir. Ve şartlar sağlandığında, bu işlemler yapılır. Şartların kontrol edilmesini, C (ve daha birçok) programlama dilinde if operatörünü kullanarak yaparız. if operatörünün genel kullanım yapısı şu şekildedir:
20 [crayon-59e68e /] Eğer if in altında birden çok komut varsa, ayraç işareti (veya küme parantezi) koymamız gerekir. Şayet if ten sonra, tek komut bulunuyorsa, ayraç koyup-koymamak size kalmıştır. Zorunluluğu yoktur. Örnek bir program yazalım. Bu programda kullanıcının klavyeden, bir tam sayı girsin. Ve bizde girilen sayı, 100 den büyükse, ekrana yazdıralım: [crayon-59e68e189208c /] if-else Yapısı Bazı durumlarda, bir koşulun doğruluğuna göre sonuç yazdırmak yetmez. Aksi durumda da ne yapacağımızı belirtmek isteriz. Bunun için if-else yapısını kullanırız. if-else yapısı şu şekildedir: [crayon-59e68e /] Önceki yazdığımız programı düşünelim; 100 den büyük olduğunda, ekrana çıktı alıyorduk. Bu programa bir özellik daha ekleyelim ve 100 den küçükse, bunu da söyleyen bir yapıyı oluşturalım: [crayon-59e68e189209d /] Örnekte gördüğünüz gibi, bir koşulun doğruluğunu program kontrol ediyor ve buna doğru olursa, bazı işlemler yapıyor. Şayet verilen koşul yanlışsa, o zaman daha başka bir işlem yapıyor. Ancak ikisini de yapması gibi bir durum söz konusu değil.aşağıdaki akış diyagramlarında (flowchart) her iki durumu da görebilirsiniz. Yapısı: if-else Yapısı: if
21 İlişkisel (Relational) Operatörler Koşullu operatörlerde, koşulun doğruluğunu kontrol ederken kullandığımız ilişkisel operatörler, aşağıda verilmiştir: < Küçüktür > Büyüktür == Eşittir <= Küçük eşittir >= Büyük eşittir!= Eşit değildir Birleşik (Compound) Operatörler Bazı durumlarda, kontrol edeceğimiz koşul, tek bir parametreye bağlı değildir. Örneğin, bir kişinin yaşının 65 den küçük olup olmadığına bakabiliriz. Ama 65 den küçük ve 18 yaşından büyük
22 olup olmadığına karar vermek istersek, o zaman Birleşik/Birleştirici Operatörler i kullanmamız uygun olacaktır. Compound operator ler aşağıdaki gibidir: && and ve or veya! not tersi Bu operatörlerin mantıksal (logical) doğruluk tablosu da şu şekildedir: p q p&&q p q!p İçiçe geçmiş (Nested) İfadeler if ile bir ifadeyi kontrol ediyor ve doğruysa, buna göre işlemler yapıyorduk. Bir de if else yapısı vardı. if else yapısında da, koşulu gene kontrol ediyor, doğruysa if bloğunun altında kalanları yapıyorduk; yanlışsa, else bloğunda olan kodlar işleme alınıyordu. Son derece basit bir mantık üzerine kurulmuş bu yapıyla, yapılamayacak kontrol yoktur. Ancak öyle durumlar vardır ki, if else yapısı yeterli verimliliği sunamaz. Diyelim ki, birden fazla kontrol yapmanız gereken bir durum oluştu. Hatta örnek vererek konuyu daha da somutlaştıralım. İstenilen bir programda, klavyeden size yaş bilgisi veriliyor.
23 Siz de bu bilgiye göre, şayet yaş 18 den küçükse çocuk; yaş arasında genç; yaş arasında ortayaş diye bir mesaj bastırıyorsunuz. Basit bir program. Şimdi bunu sadece if yapısıyla kuruyor olsaydık, her seferinde yaşın uygun aralıklara düşüp düşmediğini kontrol eder ve ona göre sonucu ekrana bastırırdık. Ama bu son derece verimsiz bir yöntem olurdu. Çünkü zaten yaş bilgisinin genç olduğuna dair bir karar vermişsek, sonrasında tutup bunun yaşlı olup olmadığını kontrol etmenin bir esprisi olmayacaktır. Verilebilecek en kötü cevabı aşağıda bulabilirsiniz: [crayon-59e68e18920b /] Yukarda ki kodu if else kullanarak daha efektif hale getirebiliriz: [crayon-59e68e18920bc /] Yukardaki program daha efektif bir yapı sunmuş olmasına rağmen, eğer kontrol ettiğimiz aralıkların sayısı çok fazla olsaydı, tam bir başbelası olacaktı! Çünkü if else içinde, bir başka if else bloğu ve onun içinde bir başkası bu böyle sürüp gidecekti. Kısacası performans olarak çok bir şey değişmese de, kodu yazan ve/veya okuyacak olan için tam bir eziyete dönüşecekti. İşte bu nedenlerle daha efektif yapılara ihtiyaç duyuyoruz. if else if Merdiveni if else if merdiveni yukarda verdiğimiz örnekler için biçilmiş kaftandır. if else if merdiveni, doğru bir şey bulduğu zaman kontrolu orada keser ve diğer koşulları kontrol etmeden blok sonlandırılır. Aşağıda if else if yapısını ve akış diyagramını bulabilirsiniz: if else if Yapısı
24 [crayon-59e68e18920c /] if else if Akış Diyagramı if else if ile söylenebilecek son bir şey sonunda ki else tir. else koymak zorunlu değildir. Ancak hiçbir koşula uymayan bir durumla karşılaştığınızda, else devreye girer. Örneğin yukarda anlatıp, kodunu vermiş olduğumuz programda, belirtilen yaş aralıklarında değer girilmezse, hiçbir şey ekrana bastırılmayacaktır. Çünkü programa tanınmayan yaş aralığında ne yapılacağı öğretilmemiştir. Şimdi bu durumu da içerecek şekilde, programamımızı if else if yapısıyla tekrar yazalım: [crayon-59e68e18920cf /] swicth case ifadesi
25 switch case, if else if yapısına oldukça benzer bir ifadedir. Ancak aralarında iki fark vardır. Birincisi, switch case yapısında, aralık değeri girmezsiniz. Direkt olarak ifadelerin bir şeylere eşit olup olmadığına bakarsınız. İkinci farksa, switch case yapılarında, illa ki uygun koşulun sağlanmasıyla yapının kesilmek zorunda olmayışıdır. break komutu kullanmadığınız takdirde, diğer şartların içindeki işlemleri de yapma imkanınız olabilir. switch case en tepeden başlayarak şartları tek tek kontrol eder. Uygun şart yakalanırsa, bundan sonra ki ifadeleri kontrol etmeden doğru kabul eder. Ve şayet siz break koymamışsanız, eşitlik uygun olsun olmasın, alt tarafta kalan case lere ait komutlarda çalıştırılacaktır. if else if ise daha önce söylemiş olduğumuz gibi böyle değildir. Uygun koşul sağlandığında, yapı dışarsına çıkılır. switch case yapısında ki durumu, aşağıdaki tabloda görebilirsiniz: switch case Yapısı [crayon-59e68e18920d /] switch case Akış Diyagramı
26 Sanırım gözünüze biraz farklı gözüktü. Yapı olarak şimdiye kadar görmüş olduğunuz if else gibi gözükmese de, bir örnekten sonra arasında pek bir fark olmadığını göreceksiniz. Her komut sonunda koyduğum break komutu, zorunlu değildir ve o nedenle köşeli parantezle belirtilmiştir. break koyduğuz takdirde, uygun koşul sağlandıktan sonra, daha fazla kontrol yapılmayacak ve aynen if else if yapısında olduğu gibi program orada kesilecektir. Ama break koymazsanız, altında kalan bütün işlemler -bir daha ki break e kadar- yapılacaktır. Kodun sonunda gördüğünüz default komutu, if else if yapısında ki sonuncu else gibidir. Uygun hiçbir şart bulunamazsa, default komutu çalışır. Öğrendiğimiz bilginin pekişmesi için biraz pratik yapalım. Bir not değerlendirme sistemi olsun arası A, arası B, arası C, arası D, 59 ve altıysa F olsun. Eğer 100 den büyük veya negatif bir sayı girilirse, o
27 zaman program hatalı bir giriş yapıldığını konusunda bizleri uyarsın. Bunu şimdiye kadar öğrendiğiniz bilgilerle, if else if yapısını kullanarak rahatlıkla yanıtlayabilirsiniz. Ama şu an konumuz switch case olduğundan, cevabını öyle verelim: [crayon-59e68e18920e /] Algoritmaya bakalım: Önce sayıyı alıyor ve 10 a bölüyoruz. Yani girilen not, 57 ise 5.7 sonucunu elde ediyoruz. Ancak iki tam sayının sonucu bir virgüllü sayı veremez, tıpkı işleme giren değişkenler gibi tam sayı olarak döner. Dolayısıyla bilgisayarın elde edeceği sonuç, 5.7 değil, sadece 5 tir. switch case yapısında koşullar yukardan başlayarak kontrol ediliyor. case 5 e gelindiğinde eşitlik sağlanıyor. Ama break konmadığı için, switch case ten çıkılmıyor. Ve altında kalan işlemlerde yapılıyor. Altında herhangi bir işlem veya break olmadığından case 0 a kadar bu böyle sürüyor. Ve case 0 da ekrana bir çıktı alıp switch case yapısı break ile sonlandırılmaktadır. Arttırma (Increment) ve azaltma (decrement) işlemleri Daha önceki derslerimizde, aritmetik işlemlerden bahsetmiştik. Bunların dışında yapabileceğimiz başka şeylerde bulunmaktadır. Bunlardan biri de, arttırma ve azaltma işlemleridir. Eğer i adında bir değişkenin değerini 1 arttırmak isterseniz, i = i + 1 olarak yazarsınız. Veya 1 azaltmak isterseniz, benzer şekilde i = i 1 de yazabilirsiniz. Arttırma ve azaltma işlemleri bu olayı daha basit bir forma sokmaktadır. i = i + 1 yazmak yerine i++ veya i = i 1 yazmak yerine i yazabilirsiniz. Arttırma ve azaltma işlemleri temelde iki çeşittir. Birinci yöntemde yukarda yazdığımız gibi, arttırma/azaltma sonradan yapılır. İkinci yöntemdeyse arttırma/azaltma ilk başta yapılır. Aşağıdaki örneklere bakalım.
28 [crayon-59e68e18920f /] Yukardaki programı yazar ve çalıştırısanız elde edeceğiniz çıktı şu şekilde görünecektir: i = 11 ve j = 59 Çünkü arttırma ve azaltma işlemleri ekrana bastırmadan önce yapılmış ve i ile j nin değerleri değiştirilmiştir. Şimdi programı değiştirip şöyle yazalım: [crayon-59e68e18920fd /] Bu sefer program çıktısı şöyle olacaktır: i = 10 ve j = 60 Farkettiğiniz üzere hiçbir değişiklik yapılmamış gibi duruyor. Aslında değişiklik yapıldı ve program sonlanmadan önce i 10 olurken, j de 59 oldu. Ama arttırma ve azaltma işlemleri printf komutu çalıştırıldıktan sonra yapıldığı için, biz bir değişiklik göremedik. Kısacası önce arttırma (pre-increment) veya önce azaltma (predecrement) kullandığınızda, ilgili komut satırında çalışacak ilk şey bu komutlar olur. Ancak sonra arttırma (post increment) veya sonra azaltma kullanırsanız, o zaman bu işlemlerin etkileri ilgili komut satırından sonra geçerli olacaktır. Aşağıdaki özel tabloya bakabilirsiniz: Form Tip İsim Açıklama i++ postfix post-increment İşlem sonrası arttırma ++i prefix pre-increment İşlem öncesi arttırma i postfix post-decrement İşlem sonrası azaltma i prefix pre-decrement İşlem öncesi azaltma Gelişmiş atama (Advanced Assignment) yöntemleri C de yazım kolaylığı amacıyla sunulmuş bir başka konu da,
29 gelişmiş aşama yöntemleridir. Biraz daha uzun yazacağınız kodu, kısaltmanıza yaramaktadır. degisken_1 = degisken_1 (operator) degisken_2 şeklinde yazacağınız ifadeleri, daha kısa yazabilmeniz için, degisken_1 (operator) = degisken_2 şeklinde ifade edebilirsiniz. Gelişmiş atamalarda sunulan genel formlar şu şekildedir: [crayon-59e68e /] Sanırım aşağıdaki örneklere bakarsanız, konuyu çok daha net anlayacaksınız: [crayon-59e68e189210f /] Conditional Operator (? ) Conditional Operator, if-else ile tamamen aynı yapıdadır. Hiçbir farkı yoktur. Tek farkı koda bakıldığında anlaşılmasının biraz daha zor oluşudur. Bir de if else gibi yazıyla ifade edilmez. Onun yerine soru işareti (?) ve iki nokta üst üste ( : ) kullanarak yazarız. Aşağıdaki tabloda if else yapısıyla karşılaştırılmalı olarak, Conditional Operator verilmiştir: if-else Yapısı [crayon-59e68e189211a /] Conditional Operator (? ) Yapısı [crayon-59e68e /] Conditional Operator (? ) Akış Diyagramı
30 Şimdi de aynı programı, hem if-else, hem de conditional operator kullanarak yazalım: [crayon-59e68e /] Şimdi de aynı programı conditional operator kullanarak yazalım: [crayon-59e68e /] Program gördüğünüz gibi biraz daha kısaldı. Yazar: Oğuzhan YILMAZ Akış Şeması (Flowchart) Nedir
31 ? Bir problemle karşılaştığımızda çözümüne ulaşmak için zihnimizde bir takım hesaplar yaparız. Bu noktada yardımına başvurduğumuz bazı yöntemler vardır. Örneğin; Flowchart, bize yardımcı olacak tekniklerden biri. İster bilgisayarla ister bilgisayarsız bir sorunu çözmek için belirli bir yol vardır ve ancak bu yol ile sağlıklı bir çözüme ulaşılabilir. Çözüme ulaşırken kullanılan bu yola algoritma denir. Yani algoritma, mevcut bilgilerden istenilene erişme yöntemidir. Bilişim alanı için algoritmayı tanımlayacak olursak, verilerin bilgisayara hangi çevre biriminden girileceğinin, problemin nasıl çözüleceğinin, hangi basamaklardan geçirilerek sonuç alınacağının ve sonucunun nasıl/nereye yazılacağının sözel olarak ifade edilmesi diyebiliriz. Bahsettiğimiz gibi söz ve yazı ile anlatılan algoritmanın görsel olarak simge veya sembollerle ifade
32 edilmiş şekline Flowchart yani Akış diyagramları diyoruz. Flowchartların algoritmalardan farkı, adımların simgeler şeklinde kutular içine yazılmış olması ve adımlar arasındaki ilişkilerin oklar ile gösterilmesidir. Bu açıdan flowchartlar bir harita olarak düşünülebilir. Bu harita sayesinde mevcut algoritmanın anlaşılırlığı artarak bize process aşamasında yardımcı olur. Flowchart bir processin işlem basamaklarını diyagramsal gösterir. Böylece bir prosedürü başından sonuna kadar incelemeyi kolaylaştırır. Bir problemin çözüm aşamalarını kağıt üzerinde görmek hataları veya eksiklikleri daha rahat fark edip düzeltmeyi sağlar. Flowchartlar içerik ve biçimlerine göre genel olarak 3 grupta sınıflandırılabilirler; 1- Doğrusal Akış Diyagramları: İş akışları input-processingoutput biçiminde olan diyagramlardır. 2. Mantıksal Akış Diyagramları: Geniş ölçüde mantıksal kararları içeren diyagramlardır.
33 3. Döngüsel Akış Diyagramları: Sorunun çözümü için, çözümde yer alan herhangi bir adım veya aşamanın birden fazla kullanıldığı diyagramlardır. KAYNAK: Yazar : Berat DAĞTEKİN
34 Değişken kavramı, veri türleri, (int, float, char ) DEĞİŞKEN VE SABİTLER Çoğu programda çıkış değerleri üretilmeden önce bir dizi hesaplamalar yapılır. Bu hesaplamalar esnasında verilerin geçici olarak saklanacağı alanların olması gerekir. C dilinde bu saklama alanlarına değişkenler denir. Veriler program içerisinde değişken ve sabit biçimlerinde kaydedilir. Değişkenler değerleri değiştirilebilen verilerdir. Sabitler ise değişkenlerin aksine atama yapıldıktan sonra değeri değiştirilemeyen verilerdir. Değişken ve sabitler faklı boyut ve biçimde program belleğine kaydedilirler. Veri çeşitleri ve Veri Çeşidi Değiştiricileri C de aşağıda gösterilen 5 temel veri çeşidi vardır: char : Karakter int : Tamsayı float : Kayan noktalı sayı double : Çift duyarlıklı kayan noktalı sayı void : Değersiz Veri çeşidi değiştiricilerini kullandığınız zaman, printf() ve scanf() fonksiyonları farklı format tanımlayıcıları kullanır. Yukarıdaki tabloda gösterilen bütün değişken türlerine göre printf() ve scanf() fonksiyonları ile kullanılan format tanımlayıcıları aşağıdaki tabloda gösterilmektedir:
35 Burada bahsi geçen format tanımlayıcılarının nasıl kullanıldığını anlamak için konumuza devam etmeden önce printf() ve scanf() fonksiyonlarına kısaca değinelim. printf() Fonksiyonu printf() fonksiyonu C nin genel amaçlı çıktı alma fonksiyonudur. Başka bir deyişle, ekrana istediğimiz verileri yazmak içim kullanılan bir fonksiyondur. printf() fonksiyonu karakter dizisinden oluşan tek bir değeri veya farklı değişken ve sabitlerden oluşan birden fazla değeri ekrana yazdırmak için kullanılabilir. Tek bir karakter dizisini ekrana yazdırmak için aşağıdaki yapı kullanılır: printf( Karakter-Dizisi ); Herhangi bir fonksiyona aktarılan değere argüman adı verilir. Biz bir fonksiyona argüman aktardığımızda, fonksiyonunun bu argüman ile geçirilen değeri kullanarak gerekli işlemi yapmasını istemiş oluruz. Buradaki argüman tırnak işaretleri ( ) arasında yer alan karakter dizisidir. C de tırnak işaretleri arasında yer alan bir veya daha fazla karaktere Karakter Dizisi (String) adı verilir. [crayon-59e68e18933a /] Yukarıdaki örnek program derlenip çalıştırıldığında aşağıdaki satırı ekrana yazar:
36 makucoders Şimdi de, farklı değişken ve sabitlerden oluşan bir veya birden fazla değeri ekrana yazdırmak için printf() fonksiyonunun çalışmasını bir örnek üzerinde incelemeye çalışalım: printf() fonksiyonunu kullanarak her veri türündeki değişken ve sabit değerlerini ekrana yazdırabiliriz. Aşağıdaki işlem satırı, bir int sabit değeri olan 25 sayısını ekrana yazar: [crayon-59e68e18933b /] Yukarıdaki işlem satırı ekrana aşağıdaki satırı yazar: Sayinin değeri : 25 Dikkat ederseniz, burada printf() fonksiyonu içinde yukarıda format tanımlayıcısı olarak verdiğimiz %d ifadesini kullandık. Bir önceki örneğimizde printf() fonksiyonu sadece ( ) işaretleri içinde kalan karakter dizisini ekrana yazmıştı. Ancak bu defa, printf() fonksiyonunun bir virgül ile ayrılmış 2 argümanı vardır. Bunlardan biri ( ) işaretleri arasında yer alan karakter dizisi, diğeri ise bir int sabiti olan 25 sayısıdır. printf() fonksiyonu ilk argüman içinde yer alan normal karakterleri ekrana yazar, format tanımlayıcısının yerine de ikinci argüman olan değeri olan 25 sayısını yazar. printf() fonksiyonunun ilk argümanı ( ) işaretleriyle sınırlandırılmış olan bir karakter dizisidir. Bu karakter dizisinin içinde hem normal karakterler hem de (%) işareti ile başlayan Format Tanımlayıcıları adı verilen ifadeler yer alabilir. printf() fonksiyonu ( ) işaretleri arasında yer alan normal karakterleri sıra ile ekrana yazar. Format tanımlayıcıları ile karşılaştığında ise ekrana farklı bir veri yazacağını ve bu verinin printf() fonksiyonu çağrılırken karakter dizisinden sonra tanımlanmış olan argüman değerlerinden alınacağını anlar. Konunun daha kolay anlaşılması için aşağıda yer alan örneği incelemeye çalışalım:
37 [crayon-59e68e18933bc /] Yukarıdaki program ekrana aşağıdaki satırı yazar: YazilimaGiris.com a hos geldiniz. 1,2,3 Burada printf() fonksiyonu için 3 argüman tanımlanmıştır. printf() fonksiyonu ( ) işaretleri içindeki karakter dizisini taramaya başlar. İlk %s format tanımlayıcısı ile karşılaştığında buraya bir karakter dizisinin geleceğini anlar ve karakter dizisinden sonraki ilk argüman değerini okuyarak (YazilimaGiris.com) ekrana yazar. Sonra ikinci format tanımlayıcısıyla karşılaşana kadar karakter dizisi içindeki normal karakterleri ekrana yazar (öğrenirken). İlk %d format tanımlayıcısı ile karşılaştığında yine buraya bir int sabitinin geleceğini anlar ve karakter dizisinden sonraki ikinci argüman değerini okuyarak (2) ekrana yazar. Daha sonra, karakter dizisinde yer alan bölümü ( farklı kitap ve ) ekrana yazar. İkinci %d format tanımlayıcısı ile karşılaştığında yine buraya bir int sabitinin geleceğini anlar ve karakter dizisinden sonraki üçüncü argüman değerini okuyarak (3) ekrana yazar. Son olarak, karakter dizisinin geriye kalan bölümünü ekrana yazar ( farklı derleyici kullandım). printf() fonksiyonunda kullanılan format tanımlayıcıları yerine sadece sabit değerler değil aynı zamanda değişkenlerin değerleri de konabilir. Yukarıdaki örneğin 2 argümanını sabit değerler yerine değişkenler yoluyla aktaralım: [crayon-59e68e18933c /] Yukarıdaki program ekrana aşağıdaki satırı yazar: YazilimaGiris.com a hos geldiniz 10, 20 Program bu defa format tanımlayıcıları yerine koyacağı değerleri değişkenlerden alır. Farklı örneklerle konuyu pekiştirmeye çalışalım: [crayon-59e68e18933cf /]
38 Yukarıdaki örnekte, program aşağıdaki satırı ekran yazar: sayi1 değişkeninin değeri 100 dir. Program, 1 sayısı ile gösterilen işlem satırında sayi1 adlı int bir değişken oluşturur. 2 sayısı ile gösterilen işlem satırında id1 değişkenine 100 sayısını atar. printf() fonksiyonu ise değişken değerini ekrana yazar. [crayon-59e68e18933d /] Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar: 25 ve M Program sayi1 adlı int ve harf1 adlı char değişkenlerine atadığı 25 ve C sabit değerlerini printf() fonksiyonu ile ekrana yazar. [crayon-59e68e18933df /] Yukarıdaki örnekte, program aşağıdaki satırı ekrana yazar: A dir Program, iki adet int, bir adet char ve bir adet float değişken olmak üzere toplam dört adet değişken bildirimi yapar. Sonra değişkenlere atanan değerleri printf() fonksiyonu ile ekrana yazar. Scanf() Fonksiyonu Şimdi de klavyeden giriş yapılan değeri almak için kullandığımız scanf() fonksiyonuna kısaca değinelim. Klavyeden girilen sayısal bir değeri bellekteki bir değişkene atamak için scanf() standart kütüphane fonksiyonunu kullanabiliriz. Daha ilerideki bölümlerde görülebileceği gibi scanf() fonksiyonunun çok geniş kullanım alanı olmasına rağmen burada sadece klavyeden girilen değerlerin bir değişkene
39 atanması için kullanılmasını inceleyeceğiz. scanf() fonksiyonunu kullanarak klavyeden girilen bir int değeri bellekte yer alan bir değişkene atamak için aşağıda gösterilen genel yapıyı kullanabiliriz: scanf( %d, &değişken-adı); scanf() fonsiyonunun kullanılması printf() fonksiyonuna benzer. Yapı olarak tek fark ikinci argüman olarak verilen değişkenin başına (&) işaretini almış olmasıdır. Bu işaretin neden kullanıldığı daha sonra ele alınacaktır. Yukarıdaki satırda scanf() fonksiyonu için 2 argümandan ilki ( ) işaretleri içinde yer alan bir karakter dizisidir. Bu dizi scanf() fonksiyonu için kullanılan format tanımlayıcılarından oluşmaktadır. scanf() fonksiyonu %d format tanımlayıcısını gördüğünde klavyeden bir int değerin okunacağını anlar. Bunun üzerine hemen ikinci argümanı olan değişken adına bakarak, klavyeden okuyacağı değeri atayacağı değişken adını tespit etmiş olur. Siz scanf() fonksiyonunu kullanarak klavyeden bir sayı okutmak istediğinizde, yazdığınız sayı bir rakamdan fazla olabileceğinden, siz ENTER tuşuna basana kadar scanf() fonksiyonu işlem yapmadan bekler. [crayon-59e68e18933ea /] Yukarıdaki ilk işlem satırında, sayi1 adlı bir int değişken bildirimi yapılmakta, ikinci işlem satırında ise klavyeden girilen int değer sayi1 değişkenine atanmaktadır. Şimdi, bu özelliği bir örnek üzerinde incelemeye çalışalım: [crayon-59e68e18933f /] Yukarıdaki örnekte, program klavyeden bir int değer girmenizi ister. Girdiğiniz değeri sayi1 adlı int değişkene atar. Daha sonra değişken değerini ekrana yazar. scanf() fonksiyonunu kullanarak klavyeden girilen float bir değeri bellekteki bir değişkene atamak için aşağıda gösterilen genel yapıyı kullanabilirsiniz: scanf( %f, &değişken-adı);
40 Yukarıdaki satırda yer alan %f format tanımlayıcısı float sayılar için kullanılmaktadır. double sayılar için kullanılan format tanımlayıcısı ise %lf dir. Şimdi vereceğimiz örneklerle öğrendiklerimizi pekiştirelim: [crayon-59e68e18933fa /] Yukarıdaki örnekte, program kullanıcıdan bir int ve bir float değeri klavyeden girmenizi ister. Sonra, girilen her iki değeri ekrana yazar. İlk printf() fonksiyon satırında yer alan \n ifadesi dikkatinizi çekmiş olabilir. Bu ifade program içinden bir sonraki satıra geçme olanağı sağlar. [crayon-59e68e /] Yukarıdaki örnekte, program kullanıcıdan 2 adet int ve 2 adet float sayı değerini klavyeden girmenizi ister. Sonra int değerlerin çarpımını ve float değerlerin toplamını ekrana yazar. [crayon-59e68e189340a /] Yukarıdaki örnekte, program sizden 2 int değer girmenizi ister ve bu değerlerin karelerinin toplamını ekrana yazar. Yazar: Oğuzhan YILMAZ C Programlamaya giriş için yol haritası C programlamaya başlangıç için tavsiye edilen yol haritası aşağıdaki şekilde verilmiştir. 1. Temel kavramlar, 2. Akış şeması, (flowchart), 3. Değişken kavramı, veri türleri, (int, float, char ), 4. Operatörler (mantıksal, aritmetik), 5. Karar yapıları, (if else, switch),
41 6. Döngü yapıları, (for, do while, while), 7. Diziler (arrays), 8. Fonksiyonlar (fonksiyon tanımlama, çağırma), 9. Kütüphane kullanımı (stdio.h, stdlib.h), 10. Dosya işlemleri (dosya oluşturma, okuma, yazma, silme), 11. String ve karakter fonksiyonları, 12. Tarih ve zaman fonksiyonları, 13. Veri modelleri, 14. Hata ayıklama (debug), 15. Program örnekleri. Artık yıl hesabı yapan program Bu C kodu artık yıl hesabı yapmaktadır. [crayon-59e68e /] C Diline Giriş C Tarihi AT&T Bell laboratuvarlarında, Ken Thompson ve Dennis Ritchie tarafından UNIX İşletim Sistemi ni geliştirebilmek amacıyla B dilinden türetilmiş yapısal bir programlama dilidir. Geliştirilme tarihi 1972 olmasına rağmen yayılıp yaygınlaşması Brian Kernighan ve Dennis M. Ritchie tarafından
42 yayımlanan C Programlama Dili kitabından sonra hızlanmıştır. Günümüzde neredeyse tüm işletim sistemlerinin (Microsoft Windows, GNU/Linux, *BSD, Minix) yapımında %95 lere varan oranda kullanılmış, halen daha sistem, sürücü yazılımı, işletim sistemi modülleri ve hız gereken her yerde kullanılan oldukça yaygın ve sınırları belirsiz oldukça keskin bir dildir. Keskinliği, programcıya sonsuz özgürlüğün yanında çok büyük hatalar yapabilme olanağı sağlamasıdır. Programlamanın gelişim süreciyle beraber programlamanın karmaşıklaşması, gereksinimlerin artması ile uygulama programlarında nesne yönelimliliğin ortaya çıkmasından sonra C programcıları büyük ölçüde nesne yönelimliliği destekleyen C++ diline geçmişlerdir. C Diline Giriş C diline geçmeden önce algoritma ve akış şemalarını tam anlamıyla bilmemiz gerekir. Öncelikle C diline başlarken ilk ihtiyacımız olan şey editörlerdir. Tavsiye edilen editörler ; Windows için; -DEV C/C++ -Codeblocks -Visual Studio Linux için; -Netbeans -Codeblocks -Geany Bahsedilen editörlerden işletim sisteminize uygun olanını seçip yükleyiniz. Açıkçası Windows için DEV C/C++ ya da Linux için Netbeans ı tercih ederim.
43 İlk başta kütüphanelerden başlayalım ve programlama dünyasına kocaman bir merhaba diyerek ilk programımızı yazalım. [crayon-59e68e189474b /] Hadi yaptığımız programı ele alalım. İlk başta kullanacağımız kütüphanelerden bahsedelim. Bu yazmış olduğumuz programda stdio.h kütüphanesi kullandık. Bu kütüphane standart giriş çıkış fonksiyonları için kullanılır. Eğer kütüphane yazmadan programı derlemeye çalışırsak programımız kütüphanemiz olmadığı için hata verecektir bu yüzden tanımlamamız gerekecektir. Yazacağımız programlarda int main() adında ana bir fonksiyon tanımlarız ve programımızı bu fonksiyonun içerisine yazarız. İlerideki fonksiyonlar dersimiz de bu konuyu daha detaylı ele alacağız. int main() ana fonksiyonumuzu tanımlarken { } programımızın başlangıç ve bitişine koymamız gerekir aksi halde programımız çalışmayacaktır. Ana fonksiyonumuzu tanımladıktan sonra printf komutu kullanıp ekrana Merhaba Dünya çıkışı verecektir ve return(0) komutu ile programımız sonlanacaktır. C de komutların sonuna ( ; ) işareti getirilir. Ancak bu konu hakkında istisnalar da vardır.bu istisnalardan bazıları; bazı döngü yapıları, karar yapısı vs. İlk programımızda dikkat etmemiz gereken önemli noktalar vardır. Şöyle ki noktalı virgül( ; ), süslü parantez( { } ), kütüphane ekleme gibi durumları unutmamamız gerekir. C de yazacağımız programın ihtiyacı doğrultusunda kütüphane seçimi yapılır. Öncelikle C de kütüphane tanımlarken çalışmamızın başına #include<kütüphane ismi> yazılır ve tanımlanır. Başlarken genellikle kullanacağımız kütüphanelerden bahsedeyim;
44 stdio.h conio.h math.h stdlib.h graphics.h dos.h Standart giriş/çıkış fonksiyonları DOS destekli giriş/çıkış fonksiyonları Matematiksel fonksiyonlar Dönüşüm sıralama fonksiyonları Grafik fonksiyonları DOS Fonksiyonları ctype.h Karakter dönüşüm ve sınıflandırma string.h Alfa sayısal Genellikle bu kütüphaneler üzerinden işlemler yapacağız. İlerideki derslerde yavaş yavaş ilk basit hesap makinesini operatörler dersimizde yapacağız. Sonraki derse görüşmek üzere Yazar : Ömer Can Eskicioğlu
Karar yapıları, (if else, switch)
Karar yapıları, (if else, switch) Karar Yapıları Karar yapıları adından da anlaşılacağı gibi program akışında belirli şart(lar) doğrultusunda hangi kod bloklarının çalışacağına karar vermemize olanak tanır.
DetaylıDöngü yapıları, (for, do while, while),
Döngü yapıları, (for, do while, while), Döngü Kavramı Programlama konusunda -hangi dil olursa olsun- en kritik yapılardan biri döngülerdir. Döngüler, bir işi, belirlediğiniz sayıda yapan kod blokları olarak
DetaylıKarar yapıları, (if else,
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
DetaylıDiziler (Arrays) Çok Boyutlu Diziler
Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.
Detaylı2. Dereceden Denklemin Köklerini Bulan Program
2. Dereceden Denklemin Köklerini Bulan Program [crayon-5bb74e5b18b15225541464/] C++ 2.dereceden denklemin köklerini bulan program [crayon-5bb74e5b18b25989362529/] ÇIKTI; C++ 2. dereceden denklemin köklerini
DetaylıUnsigned Char Veri Tipi
Unsigned Char Veri Tipi RAM bellekte 8 bit yani 1 byte yer kaplar.eğer 8 bitin hepsi sıfır ise onlu sayı sistemindeki karşılığı sıfır, hepsi bir ise onlu sayı sistemindeki karşılığı 255 tir. Yani bu veri
DetaylıUnsigned Char Veri Tipi
Unsigned Char Veri Tipi RAM bellekte 8 bit yani 1 byte yer kaplar.eğer 8 bitin hepsi sıfır ise onlu sayı sistemindeki karşılığı sıfır, hepsi bir ise onlu sayı sistemindeki karşılığı 255 tir. Yani bu veri
DetaylıUnsigned Char Veri Tipi
Unsigned Char Veri Tipi RAM bellekte 8 bit yani 1 byte yer kaplar.eğer 8 bitin hepsi sıfır ise onlu sayı sistemindeki karşılığı sıfır, hepsi bir ise onlu sayı sistemindeki karşılığı 255 tir. Yani bu veri
DetaylıAkış Şeması (Flowchart) nedir? C Programlamaya giriş için yol haritası
Akış Şeması (Flowchart) nedir? Akış Şeması (Flowchart) nedir? Algoritma nedir? Algoritma nedir? C Programlamaya giriş için yol haritası C programlamaya başlangıç için tavsiye edilen yol haritası aşağıdaki
DetaylıPROGRAMLAMAYA GİRİŞ DERS 2
PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı
DetaylıÖ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ıGiriş. ENF102 Jeoloji
DİZİLER Arrays Giriş Aynı isim altında, aynı türde birden fazla değer tutmak için kullanılan veri yapılarıdır (Data Structure). Dizi bir kümedir; aynı türde verilere tek bir isimle erişmek için kullanılır.
DetaylıDİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek
Giriş DİZİLER Arrays Aynı isim altında, aynı türde birden fazla değer tutmak için kullanılan veri yapılarıdır (Data Structure). Dizi bir kümedir; aynı türde verilere tek bir isimle erişmek için kullanılır.
Detaylı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ı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ıGenel Programlama II
Genel Programlama II 15.02.2011 1 Genel Programlama Tekrar Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Önceki bölümde bir problemin çözümü ile
DetaylıBASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN
BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN Basit C Programları: Bir Metni Yazdırmak #include /* program çalışmaya main fonksiyonundan başlar*/ int main() { printf( "C diline hoşgeldiniz!\n"
Detaylı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ıC PROGRAMLAMA DİLİNE GİRİŞ
C PROGRAMLAMA DİLİNE GİRİŞ C Dilinin Tarihçesi 1972 de Dennis Ritchie tarafından AT&T Bell Laboratuarlarında B dilinden geliştirildi. C dili konusundaki ilk kitap 1978 de Dennis Ritchie ve Brain Kernighan
DetaylıBölüm 2 - C ile Programlamaya Giriş
1 Bölüm 2 - C ile Programlamaya Giriş Başlıklar 2.1 Giriş 2.2 Basit C Programları: Bir Metni Yazdırmak 2.3 Basit C Programları: İki Tam Sayıyı Toplamak 2.4 Hafıza Konuları 2.5 C de Aritmetik 2.6 Karar
DetaylıC Programlama Dilininin Basit Yapıları
Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade
DetaylıBİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ
BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ Yrd.Doç.Dr. Emel ARSLAN earslan@istanbul.edu.tr C Program Akış Kontrol Yapıları Kontrol Komutları Normal şartlarda C dilinde bir programın çalışması, komutların
Detaylı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ıAkış Kontrol Mekanizmaları
Akış Kontrol Mekanizmaları 1 Akış Kontrol Mekanizmaları if else switch for döngüsü for döngüsünün çalışma prensibi for döngüsüyle ilgili örnekler for döngüsüyle ilgili kurallar while döngüsü while döngüsünün
DetaylıGenel Programlama II
Genel Programlama II 22.03.2011 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri
DetaylıMAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya
MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ Prof. Dr. Necmettin Kaya C PROGRAMLAMA DİLİ ÖZELLİKLERİ C programlama dili, 1972 yılında Bell Labortuvarı nda Dennis Ritchie tarafından geliştirilmiştir.
Detaylı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ı/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.
Selçuk Üniversitesi Mühendislik-Mimarlık Fakültesi Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :26.11.2012, 60 dak. Dikkat!!! Soru kitapçığında
DetaylıBLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri
BLM-111 PROGRAMLAMA DİLLERİ I Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Temel Veri Tipleri C dilinde
DetaylıGenel Programlama II
Genel Programlama II 08.03.2011 1 Çok Boyutlu Diziler Önceki derslerimizde dizileri görmüştük. Kısaca özetleyecek olursak, belirlediğimiz sayıda değişkeni bir sıra içinde tutmamız, diziler sayesinde gerçekleşiyordu.
DetaylıAlgoritmalar ve Programlama. Algoritma
Algoritmalar ve Programlama Algoritma Algoritma Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Algoritma bir sorunun çözümü
Detaylı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ı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ıÇ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ı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ıBİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları
BİLGİSAYAR PROGRAMLAMA Algoritma ve Akış Şemaları Algoritma tanımı Algoritma özellikleri Algoritma tasarımı Akış şemaları Dallanma simgeleri Döngü simgeleri Akış şeması tasarımı Akış şeması örnekleri Konu
DetaylıBLM 111 ALGORİTMA VE PROGRAMLAMA I
1 BLM 111 ALGORİTMA VE PROGRAMLAMA I DİZİLER (ARRAYS) Kullanıcıdan N tane tamsayı, xi, alalım ve 1. Bu sayıların ortalamasını hesaplamak isteyelim ort = 0; for (i=0; i
Detaylı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ı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ı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ıBir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.
C# da Diziler Diziler için aynı tipteki verilerin tutulduğu bir koleksiyon diyebiliriz. Örneğin integer verinin bir yığın şeklinde tutulması için dizileri kullanırız. C# da diziler referans tipinde değişkenlerdendir.
Detaylı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ıC de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma
C de Detaylı Üs Alma Programı Bu uygulama yazısında C de pow() fonksiyonunu kullanmadan üs hesabı yapan programı yazmaya çalıştım. Başta tanımladığım float tipinde 2 fonksiyon sayesinde + lı ve li üs değerleriyle
Detaylı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ıAlgoritmanın Hazırlanması
Algoritmanın Hazırlanması Algoritma, herhangi bir sorunun çözümü için izlenecek yol anlamına gelmektedir. Çözüm için yapılması gereken işlemler hiçbir alternatif yoruma izin vermeksizin sözel olarak ifade
DetaylıBLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA
BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı
Detaylı/ 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ıİstanbul Teknik Üniversitesi IEEE Öğrenci Kolu
PROGRAM AKIŞ DENETİMİ Program akış denetimi konusu temel olarak 2 e ayrılır. Bunlar; 1)Koşul Deyimleri 2)Döngü Deyimleri KOŞUL DEYİMLERİ Koşul deyimleri temel olarak programı kontrol etmeye yararlar. Bunlara
DetaylıC Programlama Dilinde Değişkenler
C Programlama Dilinde Değişkenler Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına
DetaylıB02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri
B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri 49 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Çalıştırılabilir C ifadeleri ya bir işlem gerçekleştirir ( girilen verilerin toplanması
Detaylı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ıHafta 13 Fonksiyonlar
BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar.
DetaylıBLM-111 PROGRAMLAMA DİLLERİ I. Ders-7 C Programlama Diline Giriş
BLM-111 PROGRAMLAMA DİLLERİ I Ders-7 C Programlama Diline Giriş Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ C Programlama Dili Tarihçesi C programlama dili 1972
Detaylı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ıDeğişken nedir? Tanımı nasıl yapılır?
Değişken nedir? Tanımı nasıl yapılır? Değişkenler, girdiğimiz değerleri alan veya programın çalışmasıyla bazı değerlerin atandığı, veri tutucularıdır. Değişken tanımlamaysa, gelecek veya girilecek verilerin
Detaylı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ıEastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ
Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ DÖNEM SONU SINAVI GÜZ 2009-2010 13 Ocak 2010, Sınav Süresi: 120 dakika. İsim
DetaylıHÜPP PYTHON I.HAFTA ALGORİTMA MANTIĞI, AKIŞ DİYAGRAMLARI VE PYTHON'A GİRİŞ
HÜPP PYTHON I.HAFTA ALGORİTMA MANTIĞI, AKIŞ DİYAGRAMLARI VE PYTHON'A GİRİŞ PROGRAMLAMAYA GİRİŞ Herhangi bir program yazabilmemiz için öncelikle önümüzde bir problem, soru olması gerekir. Problemi belirledikten
Detaylı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ıALGORİTMALAR. Turbo C Bilgisayarda Problem Çözme Adımları. Bilgisayarda Problem Çözme Adımları.
Turbo C ++ 3.0 ALGORİTMALAR http://vaibhavweb.tripod.com/others/tc3.zip http://www.top4download.com/turbo-c- /aklqwuba.html 1 2 Bilgisayarda Problem Çözme Adımları Bilgisayarda Problem Çözme Adımları 1-Problemi
DetaylıDizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.
DİZİLER/ARRAY: Dizi yi çeşitli şekillerde tanımlamak mümkün. Dizi içlerinde birden fazla değer saklayabilen veri kümeleridir diye tanımlarsak uygun olur sanırım. Diziler yan yana dizilmiş kutucuklar olarak
DetaylıBölüm 4 C de Program Kontrolü
1 Bölüm 4 C de Program Kontrolü Outline 4.1 Giriş 4.2 Döngülerin Temelleri 4.3 Sayıcı Kontrollü Döngüler 4.4 for Döngü Yapısı 4.5 for Döngü Yapısıyla İlgili Notlar ve Gözlemler 4.6 for Yapısıyla İlgili
Detaylı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ıGenel Programlama II
Genel Programlama II 22.02.2011 1 C de döngüler Döngü Kavramı Programlama konusunda en kritik yapılardan biri döngülerdir. Döngüler, bir işi, belirlediğiniz sayıda yapan kod blokları olarak düşünülebilir.
DetaylıTemel Giriş/Çıkış Fonksiyonları
Temel Giriş/Çıkış Fonksiyonları Temel giriş/çıkış fonksiyonları, bütün programla dillerinde mevcuttur. Bu tür fonksiyonlar, kullanıcıya ekrana veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden
Detaylı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ıİstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER
DİZİLER Dizi Nedir? Aynı türden nesnelerin oluşturduğu, bellekte bitişik bir biçimde bulunan veri yapısına dizi denir.mesela alfabe diye bir dizi tanımlarız, harfleri a,b,c,d... diye sıralarız.dizinin
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, 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ıMTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu https://zumrakavafoglu.github.io/
MTK467 Nesneye Yönelik Programlama Hafta 4 - Döngüler Zümra Kavafoğlu https://zumrakavafoglu.github.io/ while döngüsü while(koşul){ } döngü ifadeleri Koşul boolean değerli olmalıdır. Koşulun değeri true
DetaylıESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN
ESM-361 Mikroişlemciler 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN Bit operatörleri Bit operatörleri bit düzeyinde işlem yapan operatörlerdir; yani sayıları bir bütün olarak değil, bit bit
Detaylı2 ALGORİTMA VE AKIŞ DİYAGRAMLARI
İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ
DetaylıDöngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar
Bölüm 5 Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar İçindekiler 5.1 Formatlı Yazdırma............................ 34 5.2 Döngü Deyimleri............................. 34 5.2.1
DetaylıEBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA
6. HAFTA EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA Öğr. Gör. S. M. Fatih APAYDIN apaydin@beun.edu.tr EMYO Bülent Ecevit Üniversitesi Kdz. Ereğli Meslek Yüksekokulu ALGORİTMA ÖRNEK1: İki sayının toplamı
Detaylı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ıEM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar
EM205 26/9/2014 Programlamaya giriş Algoritmalar Temel kavramlar Algoritmalar Amaçlar Algoritma kavramını öğrenmek, Algoritmaları ifade edebilmek, Temel matematiksel algoritmaları yazabilmek C programlama
DetaylıC Dersleri Bölüm 3 : Program akışı
İzmir Ekonomi Üniversitesi Bilgisayar Topluluğu www.ieubt.org C Dersleri Bölüm 3 : Program akışı Sorularınız için : programlama@ieubt.org Hazırlayan : Görkem PAÇACI (gorkem.pacaci@std.ieu.edu.tr) C Program
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 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ıHSancak Nesne Tabanlı Programlama I Ders Notları
SABİTLER VE DEĞİŞKENLER Değişken, verilerin bellekte geçici olarak kaydedilmesini ve gerektiğinde kullanılmasını sağlayan değerdir. Nesne tabanlı programlama dilinde değişken kullanımı diğer programlama
DetaylıDöngüler - Loops 4/9/2010. ENF-102 Jeoloji Giriş. Sayaç kontrollü bir döngüdeki temel öğeler. Sayaç (counter) Kontrollü Döngüler.
Giriş Döngüler - Loops Bir ifade kümesinin tekrarlanması, yani birden fazla çalıştırılması işlemine döngü (loop) dendiğiğ programlamaya giriş ş kısmında belirtilmişti. Bu derste döngülerin C programlama
DetaylıBilgisayar Programlama. 1.Hafta
Bilgisayar Programlama 1.Hafta Ders Planı 1. Bilgisayar Programlamaya Giriş 2. C Derleyicileri 3. GCC Kullanımı 4. Veri Tipleri ve Operatörler 5. Kontrol Yapıları 6. Döngüler 7. Döngüler 2. Hafta 8. Fonksiyonlar
Detaylı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ıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri
DetaylıDiziler İndisli Değişkenler
Diziler İndisli Değişkenler Aynı tür bilgileri (öğrenci isimleri, şehir isimleri, kapı numaraları, fakülteler vbg.) bellekte tutmak için kullanabileceğimiz listelere dizi adı verilir. Dizi kullanmanın
DetaylıGENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf
Giriş GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI printf Fonksiyonu scanf Fonksiyonu Verilerin kaybolmaması için hafızada değişkenler içine yerleştirilmeleri gerekir. Bu veriler iki şekilde yerleştirilebilir. Değişkene
DetaylıBİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2
PROGRAMLAMA Bir problemin çözümü için belirli kurallar ve adımlar çerçevesinde bilgisayar ortamında hazırlanan komutlar dizisine programlama denir. Programlama Dili: Bir programın yazılabilmesi için kendine
DetaylıJAVA DÖNGÜ DEYİMLERİ. For Döngüsü
JAVA DÖNGÜ DEYİMLERİ Belirli bir iş bir çok kez tekrarlanacaksa, programda bu iş bir kez yazılır ve döngü deyimleriyle istenildiği kadar tekrarlanabilir. Java da bu işi yapan üç ayrı deyim vardır: while
DetaylıC dilinde if-else yapısı
C dilinde if- yapısı Merhaba arkadaşlar, bu başlık altında sizlere koşullu ifadelerden bahsedeceğim. Peki nedir bu koşullu ifadeler(if, if, )? Bunu bir koşulun gerçekleşmesine bağlı olarak gerçekleşen
DetaylıProgramlama Dilleri 1. Ders 4: Diziler
Programlama Dilleri 1 Ders 4: Diziler Genel Bakış Tanım Dizilerin tanımlanması Dizilere ilk değer verilmesi Yerel ve Global diziler Dizilerin birbirine atanması Diziler ile ilgili örnekler Çalışma soruları
DetaylıAdı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.
Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :13.04.2017 60 dak. Dikkat!!! Soru kitapçığında ve cevap
Detaylı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ı3/3/2011. ENF-102 Jeoloji 1. Akış Diyagramı. Akış Diyagramı Şekilleri
Akış Diyagramı Akış Diyagramı Algoritma adımlarını şekillerle ifade etme işine akış diyagramı adı verilir. Standartlaşmış şekillerle ifade edilirler. Akış Diyagramı Şekilleri Akış Diyagramı Şekilleri başla
Detaylı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ı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ıDöngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları
Döngüler Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut for Komutu do-while Komutu İçiçe Döngüler break ve continue Komutları while Komutu Döngü komutları komutların bir çok kez yeniden yürülmesini
Detaylı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ı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ı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ı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ı