You are on page 1of 33

Bilgisayar Programlama

Hafta 5 01/04/2021

Dr. Öğr. Üyesi Serap Karagol 1


Ders İçeriği

 Örnekler

 Diziler

 Adres Kavramı

 sizeof

 Tek boyutlu diziler

 Çok boyutlu diziler

Dr. Öğr. Üyesi Serap Karagol 2


Örnek-15
 Dışarıdan girilen bir sayının rakamları toplamını bulan C programı.

Dr. Öğr. Üyesi Serap Karagol 3


Örnek 16
 Aşağıdaki kod parçasının sonucu aşağıdakilerden hangisidir?

a) 11+22+33+44+…+nn
b) 1!+2!+3!+…+n!
c) 1+1(2+2(3+3(…….+(n-1)((n-1)))…))
d) 1*2+2*3+3*4+…+(n-1)*n
e) 1+2+3+…+(n-1+n)

Dr. Öğr. Üyesi Serap Karagol 4


Örnek-17
 Aşağıdaki kod parçasının çıktısını bulunuz.

Dr. Öğr. Üyesi Serap Karagol 5


Örnek-18
 Aşağıdaki kod parçasının çıkışını bulunuz.

Dr. Öğr. Üyesi Serap Karagol 6


Örnek-19
 Aşağıdaki kod parçasının çıkışını bulunuz.

Karakter ASCII Karşılığı


0 48
1 49
a 97
b 98
c 99
… …

Dr. Öğr. Üyesi Serap Karagol 7


Örnek-20
 Aşağıdaki kod parçasının çıkışını bulunuz.

Dr. Öğr. Üyesi Serap Karagol 8


Operatörler

Operatör Tanım
Mantıksal AND operatörü denir. Her iki işlenen de sıfır değilse,
&& koşul gerçekleşir.

Mantıksal VEYA operatörü denir. İki işlenenden herhangi biri


|| sıfır değilse, koşul gerçekleşir.

Mantıksal DEĞİL operatörü denir. İşlenenin mantıksal


! durumunu tersine çevirmek için kullanılır. Bir koşul doğruysa,
Mantıksal DEĞİL operatörü durumu yanlış yapar.

Dr. Öğr. Üyesi Serap Karagol 9


Örnek- 21

Dr. Öğr. Üyesi Serap Karagol 10


Örnek- 22

Dr. Öğr. Üyesi Serap Karagol 11


Örnek- 23

Dr. Öğr. Üyesi Serap Karagol 12


Örnek- 24

Dr. Öğr. Üyesi Serap Karagol 13


Örnek -25

A. 200
B. 30
C. 100
D. 500

Dr. Öğr. Üyesi Serap Karagol 14


Örnek -26

A. 20
B. 40
C. Hata
D. Çıkış olmaz

Dr. Öğr. Üyesi Serap Karagol 15


Diziler

 Bir dizi benzer elemanlardan oluşan bir kümedir.

 Benzer tipte çok fazla veriyi belleğe kaydetmek için dizilere


başvurulur.

 Diziler bir boyutlu veya çok boyutlu olabilirler, boyut sayısı


arttıkça işlemler biraz daha karmaşık hale gelebilir.

 C dilinde çok boyutlu dizilere “elemanları dizi olan dizi” , “dizi


dizileri” veya “matris” denir, tek boyutlu diziler ise genel olarak
“vektör” olarak adlandırılırlar.

Dr. Öğr. Üyesi Serap Karagol 16


Adres Kavramı

 Adres hem donanıma hem de yazılıma ilişkin bir kavramdır.

 Mikroişlemci bellekte bir bölgeye ancak o bölgenin adres


bilgisiyle erişebilir.

 Oysa yazılımsal olarak adres, yalnızca bellek bölgesinin yerini


gösteren bir sayıdan ibaret değildir, aynı zamanda o bellek
bölgesinde bulunan bilginin nasıl ele alınacağını belirten bir tür
bilgisini de içermektedir.

Dr. Öğr. Üyesi Serap Karagol 17


Adres Kavramı

 Bellekte her byte diğerlerinden farklı bir


adresle temsil edilir.

 Sıfırdan başlayarak her byte’a artan sırada bir


sayı karşılık getirerek elde edilen adresleme
sistemine doğrudan adresleme sistemi denir.

 Bu sistem kullanılarak elde edilen adreslere


de doğrusal adresler (linear address)
denilmektedir.

 Örneğin 64KB’lık bir belleğin doğrusal


olarak adreslenmesi yandaki biçimde yapılır.

Dr. Öğr. Üyesi Serap Karagol 18


Nesnelerin Adresleri

 Her nesne bellekte yer kapladığı yere göre bir adrese sahiptir.

 Nesnelerin adresleri, sistemlerin çoğunda derleyici ve programı


belleğe yükleyen işletim sistemi tarafından ortaklaşa olarak
belirlenir.

 Nesnelerin adresleri program yüklenmeden önce kesin olarak


bilinemez ve programcı tarafından da önceden tespit edilemez.

 Programcı, nesnelerin adreslerini ancak program çalışması


sırasında öğrenebilir.

Dr. Öğr. Üyesi Serap Karagol 19


Nesnelerin Adresleri

 Yandaki biçimde bir tanımlamayla karşılaşan


derleyici bellekte a değişkeni için 1 byte yer
ayıracaktır.

 Derleyicinin a değişkeni için nereyi ayıracağı


önceden bilinemez.

 Burada a’nın yerel bir değişken olduğuna da dikkat


etmeliyiz.

 a değişkeni ile ilgili blok icra edilmeye


başlandığında yaratılıp, bloğun icrası bittiğinde de
yok olmaktadır.

Dr. Öğr. Üyesi Serap Karagol 20


Nesnelerin Adresleri

 Tanımlanan nesne 1 byte’dan daha uzunsa, o


zaman nesnenin adresi nasıl belirleniyor?

 1 byte’tan uzun olan nesnelerin adresleri, ilk


byte’larının adresleriyle belirtilir.

 Yandaki örnekte b değişkeninin adresi


1C03’tür.

 Zaten b değişkeninin tamsayı türünden


olduğu bilindiğine göre diğer parçasının
1C04 adresinde olacağı da açıktır.
Dr. Öğr. Üyesi Serap Karagol 21
sizeof Operatörü

 sizeof bir nesnenin yada veri türünün bellekte byte cinsinden


kapladığı alanın belirlenmesini sağlayan özel amaçlı bir
operatördür.

 İki biçimde kullanılır.


 Nesli ismi ile : sizeof(<nesne ismi>)

 Tür belirten bir anahtar sözcükler ile: sizeof(<tür>)

 Nesne ya da tür isminin sizeof operatörünün parantezler


içerisine yazıldığına dikkat ediniz.

Dr. Öğr. Üyesi Serap Karagol 22


sizeof Operatörü

 sizeof operatörü ilgili türün bellekte kaç byte yer kapladığına


ilişkin bir tamsayı değeri üretir.

 Örneğin;

 Yukarı ifadede a değişkeninin bellekte kaç byte yer kapladığı


ekrana yazdırılmıştır.

Dr. Öğr. Üyesi Serap Karagol 23


sizeof Operatörü

 sizeof tür belirten anahtar sözcüklerle birlikte aşağıdaki gibi kullanılabilir.


 sizeof(int)

 sizeof(float)

 sizeof(long)

 …..

 Sizeof fonksiyon değil bir operatördür. Paranteze sahip olması sizi


yanıltmasın.

 Eğer sizeof bir fonksiyon olsaydı, programın çalışma zamanı sırasında


değerlendirilirdi.

 Oysa sizeof derleme sırasında ele alınmaktadır.

Dr. Öğr. Üyesi Serap Karagol 24


Dizi Kavramı ve Bildirimi

 Bellekte sürekli bir biçimde bulunan aynı türden nesnelerin


oluşturduğu kümeye dizi denir.

 Diziyi dizi yapan iki temel özellik vardır.


 Elemanlarının bellekte sürekli bir biçimde bulunması
 Elemanlarının aynı türden nesneler olması

 Dizi bildirim işleminin genel biçimi aşağıdaki gibidir.

 <tür> <Dizi_ismi> [<Eleman_sayisi>] ;


 Tür: Dizi elemanlarının türlerini belirtmek için kullanılan bir anahtar sözcüktür.
 Dizi_ismi: Değişken isimlendirme kurallarına uyan herhangi bir isimdir.
 Eleman_sayisi: Dizinin kaç elemana sahip olacağını gösteren bir sabit ifadedir.
Dr. Öğr. Üyesi Serap Karagol 25
Örnek Dizi İsimleri

char s[30] ; s, 30 elemanlı, her elemanı karakter olan bir dizi

float real[10]; real, 10 elemanlı, her elemanı float olan bir dizi

unsigned long xlm[15]; xlm, 15 elemanlı, her elemanı unsigned long olan bir dizi

double max[100] max, 100 elemanlı, her elemanı double olan bir dizi

Dr. Öğr. Üyesi Serap Karagol 26


Tek Boyutlu Diziler

 Örnek olarak;

int dersnotu[7] ;

 Bu örnek kullanımında dersnotu


adında integer (tamsayı) tipinde bir
dizi tanımlanmıştır.

 Bu dizinin elemanları bellekte


yandaki gibi yerleşir.

 Dizinin ilk elemanının indisi 0 dır.

Dr. Öğr. Üyesi Serap Karagol 27


Çok Boyutlu Diziler

 Çok boyutlu bilgileri veya veri tablolarını saklamak için kullanılır.

 En çok 2 boyutlu diziler kullanılırlar.

 Bellekte satır düzeninde ve art arda depolanırlar.

 Çok boyutlu dizilerin yazım biçimi aşağıdaki gibidir,

Tip dizi_adı[satır_sayısı][sütun_sayısı] ;

 Bu gösterimde ilk olarak dizi elemanlarının bellekte depolanacağı


verilerin tipi, bu elemanlara erişim yapılırken kullanılacak dizi adı, ve
son olarak köşeli parantezler içerisinde dizinin satır ve sütun eleman
sayısı belirtilir.

Dr. Öğr. Üyesi Serap Karagol 28


Çok Boyutlu Diziler

 Bu gösterim şekli matrisler için kullanılır.

 Örnek olarak;

float elemanlar[3][2] ;

 Bu örnek kullanımda elemanlar adında float (gerçel) tipinde iki


boyutlu bir dizi tanımlanmıştır.

Dr. Öğr. Üyesi Serap Karagol 29


Çok Boyutlu Diziler

Dr. Öğr. Üyesi Serap Karagol 30


Diziler Başlangıç Değeri Atanması

 Dizilere başlangıç değeri verilmesi için yazım biçimi;

 Dersnotu[2]=55 ;

 Elemanlar[1][0]=10.2;

 a[0][1][0]=12 ;

 Dizilere ilk değer tanımlama sırasında da verilebilir,

 int c[3][3]={{2,4},{1,2},{2,2}};

 int c[3][3]={2,4,1,2,2,2};

Dr. Öğr. Üyesi Serap Karagol 31


Karakter İşleme (Stringler)

 C dilinde yazılabilecek programlarda sayıların dışında


metinlerle de işlem yapılabilir. Bu tür verileri saklamak için
char veri tipi kullanılır.

 String dizilerini tanımlayabilmek için aşağıdaki yazım şekli


kullanılır;
 char string_adı;

 char string_dizi_adı[eleman sayısı];

Dr. Öğr. Üyesi Serap Karagol 32


Karakter İşleme (Stringler)

 char il;

 char a[8] = {'E','L',,'A','Z','I','Ğ'};

 char il[8]=”Elazığ”;

 Bu dizinin elemanları bellekte yandaki


gibi yerleşir.

Dr. Öğr. Üyesi Serap Karagol 33

You might also like