Bilgisayar Ve Programlamaya Giriş Dersi 7. Ünite Sorularla Öğrenelim

Diziler, Göstericiler Ve Dizgiler

1. Soru

C programlamada dizileri tanımlayınız?

Cevap

C programlamada diziler, aynı tipte olan birbirleri ile ilişkili verilerin veya değişkenlerin belli bir indis sırasına göre tek bir değişken adı altında bir arada tutulmasını sağlayan yapılardır.


2. Soru

Dizi tanımlamanın genel ifadesi nasıl olmalıdır? Açıklayınız

Cevap

Dizi tanımlanırken genel ifade, tip dizi_adı[ BOYUT] ; şeklindedir. tip ifadesi int, char, float, double vb. değişken türlerinden herhangi birisi olabilir. Köşeli parantez [ ] ifadesi içerisinde belirtilen, BOYUT ise dizi içerisinde saklanacak, işlem yapılacak olan toplam veri sayısı olup, tanımlanan dizinin genel kapasitesini-boyutunu ifade eder.


3. Soru

Dizilerde dikkat edilmesi gereken önemli nokta nedir?

Cevap

Dizilerde dikkat edilmesi gereken önemli bir nokta, BOYUT kadar elemana sahip bir dizinin ilk elemanının indisi 0 (sıfır) ile başlamasından dolayı, dizinin son elemanının indis değeri sayısal olarak BOYUT-1 olmaktadır.


4. Soru

Yalnızca isim ve kapasite olarak tanımlanan dizilere nasıl değer atanır?

Cevap

Dizinin kapasitesine göre içindeki verilerin sıfırlanması veya atanacak değeri belirlemek amacıyla ilave olarak kodlamaya gereksinim duyulmaktadır. Daha sonraki satırlarda hataya sebep olmaması açısından, genellikle, dizi tanımlanmasının hemen ardından değer sıfırlama ya da yeni değer atama işlemini mutlaka yapmak gerekir.


5. Soru

Program kodlarında ilgili satır açıklaması nasıl yapılmaktadır?

Cevap

Program kodlarındaki satırların bitiminden sonra /* ve */ işaretleri arasında yer alan metinler derleyici tarafından program satırı olarak dikkate alınmaz ve derlenmez. Bu işaretler arasına yazılan metinler ilgili satırı açıklamak amacıyla yazılmıştır.


6. Soru

5 elemana sahip k dizisinin ilk olarak int k[5]; şeklinde tanımlanmasından hemen sonra, değer atama öncesinde, sayısal olarak hangi değerlere sahip olduğu ile ilgili olarak bir kod yazınız?

Cevap

Bu kodlama; for ( i = 0; i < 5; i++ ) /* k dizisinin elemanlarını ekrana yazan yineleme*/ { printf (“ k[%d] = %d\n “, i, k[i ] ); } şeklindedir.


7. Soru

Yukarıdaki kodun devamında k dizisinin elemanlarının her biri sıra ile sıfırlayıp, yalnızca değer ataması yapılmak istenip ekrana yazdırma istenmediğinde nasıl bir kod yazılmalıdır?

Cevap

Bu durumda; for ( i = 0; i < 5; i++ ) /*0 dan 4’ e kadar toplam 5 adet yineleme indisi*/ { k[ i ] = 0; } /* Sıfırlama*/ şeklinde bir kodlama yazılmalıdır.


8. Soru

 Yukarıdaki kodun devamında sıfırlama işlemi sonrasında k dizisinin içeriği tekrar ekrana yazdırmak için hangi kodlama yazılmalıdır?

Cevap

Bu durumda; for ( i = 0; i < 5; i++ ) /*k dizisinin elemanlarını ekrana yazar*/ { printf(“k[%d] = %d\n”, i, k[i]); } şeklinde bir kodlama yazılır.


9. Soru

Dizilerin boyut bilgilerinde kullanılabilecek ve programlamada büyük esneklik sağlayan ifade nedir?

Cevap

Bu ifade # define ifadesidir. Main fonksiyonundan önce önişlemci tanımları bölümünde kullanılan bu yapı önişlemci komutudur.


10. Soru

#define BOYUT 5 ifadesini tanımlayınız?

Cevap

#define BOYUT 5 ifadesi, sembolik sabit olan BOYUT’un değerinin 5 olduğunu belirtir. Önişlemci tarafından, kodun derleme işleminden önce dikkate alınarak BOYUT yazan her yere 5 ifadesini yerleştiren bir tanımdır.


11. Soru

Kod ilk yazıldığında ve çalıştırıldığında, içinde tanımlanan dizinin 100 elemana sahip olması yeterli iken, daha sonraki kod güncellemelerinde dizi elemanının kapasitesinin 1000’e çıkarılması gerekirse ne yapmak gerekmektedir?

Cevap

Bu durumda dizi boyutunun kullanıldığı her yerde 100 sayısının 1000 sayısı ile ayrı ayrı değiştirilmesi gerekecektir. Bu değişikliğin yerine # define BOYUT 1000 ifadesi ile bu işlem çok daha pratik bir şekilde, tek bir satırdaki değişiklikle gerçekleştirilebilinir.


12. Soru

for ( i = 1; i <= BOYUT; i++ ) /*0 dan 4’ e kadar toplam 5 adet indis*/{ printf (“ k[%d] değerini giriniz:”,(i-1) ); scanf (“ %d “,&k[i-1] ); } Yukarıdaki kodu açıklayınız?

Cevap

Kod bölümü ile sırasıyla k dizisinin her bir elemanına klavyeden giriş sağlandığı görülmektedir. scanf (“%d”, &k[i-1] ); ifadesi klavyeden giriş yapılmasını sağlamaktadır. define işlemcisi ile BOYUT 5 olarak belirlendiği için, toplam 5 adet değer girişi için for yinelemesi ile değer atanmaktadır.


13. Soru

for ( i = 1; i <= BOYUT; i++ ) /* 0 dan 4’ e kadar toplam 5 adet indis*/{ printf( “k[%d] = %d\n”, (i-1), k[i1] ); } Yukarıdaki kodu açıklayınız?

Cevap

Bu kod bölümü dizi elemanlarını ekrana yazdırmak için kullanılır.


14. Soru

Dizi elemanlarına değer atanmasında kullanılan bir diğer yöntem nedir? Örnek vererek açıklayınız.

Cevap

Dizi elemanlarına değer atanmasında kullanılan bir diğer yöntem ise, ilk olarak dizi tanımlaması yapılırken, süslü parantezlerin {, } kullanılmasıdır. Örneğin arasınav1 adında 5 tane değere sahip bir dizinin eleman değerleri önceden biliniyorsa, doğrudan atanmak istendiğinde, int arasinav1[5]={50, 80, 60, 90, 70}; şeklinde belirtilebilir.


15. Soru

Doğrudan atama işlemli dizi tanımlaması yapılırken, {,} arasına dizinin eleman sayısından daha az değişken değeri yazılması durumunda ne olur?

Cevap

Bu durumda eksik bırakılan değerler en sondaki değerler kabul edilerek bu değerlere doğrudan 0 degeri atanır.


16. Soru

int ort[5]={ 0 }; şeklindeki tanımlamada dizi elemanları hangi değeri alırlar?

Cevap

Bu durumda tüm elemanlar 0 değerini alır. Bu tanımlamada, ilk değer ort[0]. eleman otomatik olarak 0 değerini alır, sonraki elemanlar yukarıdaki arasinav2 dizisinde olduğu gibi eksik tanımlandığı için doğrudan sıfırlanır. Diğer bir ifade ile, diziye en az bir değer atanması ile birlikte geri kalan diğer değerler de otomatik olarak sıfırlanmaktadır.


17. Soru

int final [ ]={40, 70, 50, 30, 80}; tanımlamasını açıklayınız?

Cevap

Bu tanımlamada {} parantezler içerisinde 5 adet sayı tanımlanmış olup, [ ] köşeli parantez içerisine dizinin kapasitesi ile ilgili bir değer yazılmamış olmasına rağmen { } parantezleri içerisinde 5 değer olduğu için final dizisinin boyutu derleyici tarafından 5 olarak algılanır.


18. Soru

Aynı anda, aynı türden birden fazla dizi tanımlaması durumunda nasıl bir yol izlenir?

Cevap

Bu durumla ilgili olarak, çoklu değişken tanımlamada da geçerli olan kurallar diziler için de geçerli olup her yeni dizi birbirinden virgül işareti “,” ile ayrılarak tanımlanmaktadır.


19. Soru

İki boyutlu dizilerin tek boyutlu dizilerden farkı nedir?

Cevap

İki boyutlu diziler, tek boyutlu dizilerden farklı olarak birden fazla satır ve sütunlardan oluşan tablolardır.


20. Soru

Aynı kapasite-eleman sayısına sahip, tek boyutlu ve iki boyutlu dizileri kapasite açısından karşılaştırınız?

Cevap

Aynı kapasite-eleman sayısına sahip, tek boyutlu ve iki boyutlu diziler kapasite açısından karşılaştırılırsa, tek boyutlu bir dizinin elemanlarının dizilimi 1xmxn şeklinde iken, iki boyutlu dizinin elemanlarının dizilimi ise mxn şeklindedir.


21. Soru

Tek boyutlu ve iki boyutlu dizilerde indis değeri nasıl değişmektedir?

Cevap

Tek boyutlu dizilerde indis değerleri tek bir yönde birer birer artarken, iki boyutlu dizilerde iki yönde de indis değerleri değişmektedir. Böylece, iki boyutlu bir dizideki bir elemanın içeriğine erişmek için hangi satır ve sütun değerine sahip ise, iki boyutlu bir düzlemdeki bir koordinat şeklinde; dikeyde y, yatayda x bir değişken gibi kabul edilir ise, b[y][x] şeklinde, x ve y indis değerleri ile ulaşılır.


22. Soru

İki boyutlu dizilerde ilk ve son indis değeri nedir?

Cevap

Dizinin satır ve sütun için ilk indis değeri tek boyutlu dizilerde olduğu gibi yine 0’dan başlamaktadır. m satır, n sütun sayısı olmak üzere, mxn’lik bir dizinin m*n adet farklı değere sahip eleman sayısı mevcuttur. Her
satırda, sonuncu eleman b[y][n-1]., her sütunda sonuncu eleman b[m-1][x]. elemandır.


23. Soru

İki boyutlu dizinin elemanlarına erişimde b[y][x] yerine yanlışlıkla b[y, x] şeklindeki kullanım program tarafından nasıl algılanır?

Cevap

Bu kullanım hatalı bir kullanımdır. C Programlamada derleyici tarafından b[y, x] ifadesi b[x] olarak algılanır.


24. Soru

İki boyutlu dizilerin satır elemanları nasıl belirlenir?

Cevap

Süslü parantez {, } yapıları kullanılarak, tek boyutlu dizilerde olduğu gibi iki boyutlu dizilerde de dizinin ilk tanımlanması aşamasında ilk değer atanabilmektedir. En dışarıda {} lerin içinde alt {} ler yardımıyla iki boyutlu dizinin satır elemanları belirlenebilir.


25. Soru

float matematik [5][4] = { {40, 60, 60}, {50, 80, 85}, {70, 50, 80, 0}, {90, 70, 70, 0}, {80, 50, 90} }; Şeklinde tanımlanan matematik dizisinin elemanları nelerdir

Cevap

Bu dizinin elemanları, ilk alt parantezdeki değerler {40, 60, 60}, 0. satıra, ikinci alt parantezdeki değerler {50, 80, 85}, 1. satıra, üçüncü alt parantezdeki değerler {70, 50, 80, 0}, 2. satıra, dördüncü alt parantezdeki değerler {90, 70, 70, 0}, 3.satıra, beşinci alt parantezdeki değerler {80, 50, 90}, 4. Satıra ait değerlerdir.


26. Soru

j=0;for ( i = 0; i < OGR; i++ ) { matematik[i][j+3] = (matematik[i][j] + matematik[i][j+1] + matematik[i][j+2]) /3;} Yukarıdaki kodu açıklayınız?

Cevap

Kod bölümü ile matematik dizisinin 3 indis nolu, öncesinde değer içermeyen son sütunundaki elemanlar, 3 sınavın ortalaması alınarak hesaplanmakta ve ilgili elemana atanmaktadırlar.


27. Soru

for ( i = 0; i< OGR; i++ ) /*matematik dizisinin elemanlarını ekrana yazar*/{ for( j=0; j<4; j++) { printf(“ %8.2f ”, matematik[i][j]); }printf(“\n”); } Yukarıdaki kodu açıklayınız?

Cevap

Kod bölümü ile iç içe kullanılan for yinelemeleri ile dizinin içerdiği elemanlar satır ve sütunlar üzerinde ilerleyerek ekrana yazdırılmaktadır. Bu yineleme sayesinde sırasıyla,
matematik[0][0], matematik[0][1], matematik[0][2], matematik[0][3], matematik[1][0], matematik[1][1],
matematik[1][2], matematik[1][3], matematik[2][0], matematik[2][1], matematik[2][2], matematik[2][3],
matematik[2][0], matematik[2][1], matematik[2][2],matematik[2][3], matematik[4][0], matematik[4][1],
matematik[4][2], matematik[4][3], elemanlarına ulaşılmaktadır.

İçerde yer alan j sayaç değerini kullanan for yinelemesi her sütundaki elemanları üzerinde hareket ederken, en dışarda yer alan i indisli for yinelemesi ise dizinin satırlarını üzerinde hareket etmektedir.


28. Soru

Göstericileri tanımlayınız?

Cevap

C Programlamada tanımlanan değişkenler, tiplerine göre bellekte değişik byte uzunluklarında alanlar kaplamaktadırlar. Normal değişkenler içeriklerinde programlarda kullanılacak değişkenlerin sayısal değerini içerirken, göstericiler bağlantıda olduğu değişkenlerin adreslerini içerirler. Böylece dolaylı olarak değişkenlere ulaşmayı sağlarlar. Göstericiler, programda fonksiyonlar arasında aynı anda birden fazla değişken aktarımı gibi işlemlerde oldukça büyük kolaylık sağlayan yapılardır.


29. Soru

Göstericiler kodlamada nasıl tanımlanırlar?

Cevap

Gösterici bildiriminde, normal değişken bildiriminden farklı olarak, gösterici adı önünde ‘*’ karakteri kullanılmaktadır. tip * değişken_adı; şeklinde tanımlanmaktadır. tip değişkenler için de kullanılan int, float, char vb. türlerinden herhangi birisi olabilir.


30. Soru

Gösterici tanımlanmasında dikkat edilmesi gereken husus nedir?

Cevap

Dikkat edilmesi gereken nokta, gösterici ile göstericiye bellek adresi atanacak değişkenin veri tipi aynı olmalıdır.


31. Soru

Aşağıda yer alan int k; int *Gk; Gk = &k; Satırlarını tanımlayınız?

Cevap

Bu satırlar ile k adında tam sayı türünde bir değişken tanımlanmış olup, bu k değişkeninin adresi Gk göstericisine atanmıştır. k normal bir değişken iken, Gk gösterici olarak tanımlanmıştır.


32. Soru

#include #include /*getch fonksiyonunu kullanabilmek icin*/
int main()
{int k,*Gk;
k=25;
Gk=&k;
printf(“k degiskeninin adresi :%p”,&k);
printf(“\nGk_gosterici nin icerdigi adres :%p”,Gk);
printf(“\nGk_gosterici nin adresi :%d”,Gk);
printf(“\nk degisken degeri:%d”, k);
printf(“\nGk_gosterici nin degeri:%d”, *Gk);
getch(); /*Ekran ciktisini ekranda bekletebilmek icin*/
return 0; }
Yukarıdaki kodlamanın program çıktısı nedir?

Cevap

Bu kodlamanın program çıktısı k değişkeninin adresi :0028FF44 Gk nin içerdiği adres :0028FF44 Gk nin adresi :2686788 k değişken değeri :25 Gk değeri :25. Şeklindedir.


33. Soru

Göstericilerin dizilerle birlikte kullanılmasını açıklayınız?

Cevap

Göstericiler değişkenlerin başlangıç adresini belirtmeleri dolayısı ile dizilerle benzer özellikleri içermektedirler. Dizilerin ilk elemanlarını göstericilerle belirterek, diziler-göstericiler birbirlerinin yerine kullanılabilirler.


34. Soru

Göstericilerin kullanıldığı diğer bir işlem türü nedir?

Cevap

Göstericiler bellekteki adres değerleri ile işlem yapabilme kabiliyetlerinden dolayı aritmetik işlemlerde de adresler arası işlemleri kullanırlar. Göstericilerin aritmetik işlemlerinde +, - ++, -- işlemcileri kullanılabilir.


35. Soru

Göstericilerin işlemlerdeki arttırma ve eksiltme işlemleri nasıldır?

Cevap

İşlemlerdeki arttırma ve eksiltme işlemleri sayısal olarak olmayıp, göstericinin bir arttırılması bir sonraki bellek adresine öteleme olarak sağlanır.


36. Soru

Göstericilerin arttırma eksiltme ile öteleme yapmasının önemi nedir?

Cevap

Elbette ki bu öteleme esnasında veri türü de bellekte kapladığı büyüklüğünden dolayı önemlidir. Çünkü arttırma ve eksiltme işlemleri değişkenin hafızada kapladığı int, float, char vb. kadar arttırılıp eksiltilecektir.


37. Soru

Dizilerin veya göstericilerin hafızada kapsadığı alanların analizi hangi fonksiyon ile gösterilir? 

Cevap

 Dizilerin veya göstericilerin hafızada kapsadığı alanların analizi için sizeof() fonksiyonu kullanılabilir.


38. Soru

Göstericilerle aritmetik işlem nasıl yapılır? Örnek vererek açıklayınız?

Cevap

Göstericilerle aritmetik işlem yapılabilmesi için hafızada ileri-geri hareket edilmesi gerekir. Örnek vermek gerekirse; her bir elemanı 4 byte uzunluğunda olan tam sayı türünde dizi_t[5]’in başlangıç adresi 1000 ise, bu dizinin başlangıç adresini gösteren gösterci G_t =dizi_t; tanımlandığında G_t 1000 adresini gösterirken, G_t++ ; şeklinde aritmetik olarak arttırıldığında 1004 adresini gösterecektir.


39. Soru

Dizgileri tanımlayınız?

Cevap

C programlama dilinde, dizgiler için tanımlanmış bir veri tipi bulunmamaktadır. Dizgiler karakterlerden oluşan diziler veya göstericiler olarak tanımlanabilir. Bu nedenle, dizgi tanımlarında tek boyutlu diziler tanımlanmaktadır.


40. Soru

Dizgilerin normal dizilerden farkı nedir?

Cevap

Normal dizilerden farklı olarak son elemanı NULL(0) (‘\0’) değeri ile sonlandırılmaktadır. Bu özelliklerinden dolayı karakter dizilerini, dizginin içereceği karakter sayısından bir karakter fazla kapasiteli olacak şekilde tanımlamak gerekmektedir.


41. Soru

char d[10];şeklindeki bir dizgiyi açıklayınız?

Cevap

Şeklindeki bir dizgi tanımlamasında, dizginin d[9] indis nolu elemanı NULL değere sahiptir. Bu durumda d dizgisine 9 karakterli bir kelime yazılabilir. d dizgisi içerisindeki karakterler hafızada okunurken NULL’ a kadar okunur, NULL bir sınır değeri oluşturur.


42. Soru

char ad[] = “neslihan”;dizgisini açıklayınız?

Cevap

Bu tanımlamada 8 adet karakter içerilmektedir. Dizi boyutu verilmemiştir. Bu nedenle NULL karakteri de dahil olmak üzere toplamda 9 karakter kapasitesine sahip bir karakter dizisi yani dizgi tanımlanmıştır. Sırasıyla ‘n’, ‘e’, ‘s’, ‘l’, ‘i’, ‘h’, ‘a’, ‘n’, ‘\0’ karakterlerini içeren ad dizgisinin ilk elemanı olan ad [0] ‘n’, 7 indis nolu ad[7] elemanı ise yine ‘n’ harfini içermektedir. ad[8] nolu elemanı ise kelime sonu anlamına gelen ‘ \0 ’ NULL karakterini içerir.


43. Soru

char ad[] = “neslihan” dizgisini farklı olarak nasıl yazabilirsiniz?

Cevap

Bu dizgiyi char ad [ ]={‘n’, ‘e’, ‘s’, ‘l’, ‘i’, ‘h’, ‘a’, ‘n’, ‘\0’}; şeklinde de tanımlanabilmektedir. Ancak bu tanımlama şeklinde en sonda yer alan ‘\0’ karakteri eklenmeye unutulmamalıdır.


44. Soru

Kodlamada dizgilerin içerisine metin nasıl yazılır?

Cevap

Dizgilerin içeriği kelime hâlinde yazılacak ise, “metin” şeklinde yazılırken, süslü parantez { } gösterimi ile ise, karakter karakter ifade edilir ve her karakter ‘k’ şeklinde ‘ ’ işaretleri arasına alınmaktadır.


45. Soru

Dizgilerde gets() fonksiyonunun görevi nedir?

Cevap

gets fonksiyonu giriş değeri olarak karakter dizisinin adını kullanır ve ENTER tuşuna basıp sonlandırılmadığı sürece klavyeden girilen karakterlerin ilgili diziye atamalarını yapar.


46. Soru

printf fonksiyonu kullanılarak karakter kümesi yazdırılacak ise hangi belirteç kullanılmalıdır?

Cevap

printf fonksiyonu kullanılarak karakter kümesi yazdırılacak ise %s belirteci kullanılmalıdır.


47. Soru

#include <stdio.h> #include <conio.h> /*getch fonksiyonunu kullanabilmek
icin*/ int main(void) { char ad[10], i=0; printf(“Bir isim giriniz:”); gets(ad); /*klavyeden karakter girisi saglar*/ printf(“Girdiginiz isim: %s\n”,ad); printf(girdiginiz ismin harfleri: \n”); while(ad [ i ] != ‘\0’) /*ad dizgisinin içerigi ‘\0’, NULL olmadigi surece*/ /*yineleme devam eder*/ {printf(“%c\n”,ad[i]); i++; } getch(); /*Ekranda goruntuleme icin*/ return 0; } Yukarıdaki kodlamanın program çıktısı nasıl olur?

Cevap

Bu kodlamanın program çıktısı, Bir isim giriniz: neslihan Girdiginiz isim: neslihan Girdiginiz ismin harfleri: n e s l i h a n şeklinde olur.


48. Soru

printf fonksiyonu kullanılarak yalnızca karakter yazdırılacak ise hangi belirteç kullanılmalıdır?

Cevap

printf fonksiyonu kullanılarak karakter kümesi yazdırılacak ise %c belirteci kullanılmalıdır.


49. Soru

Diziler nedir?

Cevap

C Programlamada diziler, aynı tipte olan birbirleri ile ilişkili verilerin veya değişkenlerin bellli bir indis sırasına göre tek bir değişken adı altında bir arada tutulmasını sağlayan yapılardır. Kodlama ihtiyacına göre, program kodunun çalıştırılmasından itibaren işlem yapılacak veri listesinin belli bir sıraya göre düzenli bir şekilde hafızada tutulmasını ve erişilmesini sağlarlar.


50. Soru

int k[5] şeklinde bir dizi tanımlanması neden daha  kullanışlı bir çözüm sunar?

Cevap

Veri değişken türlerini tanımlarken, tam sayı tipinde dört farklı değişkene ihtiyaç olduğunda, “int k1, k2, k3, k4,k5 ;” şeklinde tanımlama yapılabiliyordu. Ancak bu değişkenlerin hepsi aynı türde ve özellikle de bu değişkenler sırasıyla belli bir algoritmaya göre hesaplamaya tabi tutulacak ise, int k[5] ; şeklinde bir dizi tanımlanması daha kullanışlı bir çözüm sunmaktadır. Çünkü program kodlarımızda, ne kadar çok değişken olursa, kod blokları içerisinde kontrol edilmesi de bir o kadar zor olacaktır. Bu örnekte yalnızca 5 farklı değişken için bir dizi oluşturulmuş olmasına rağmen, değişken sayısının çok fazla olup. (örneğin 1000), elle tek tek tanımlanması imkânsız olan durumlarda dizilerin kullanımının önemi ortaya çıkmaktadır. Böylece yinelemeler ve daha sonraki bölümde anlatılacak olan fonksiyonlarla birlikte daha kolay ve düzenli bir veri kullanımına olanak sağladığı görülecektir.


51. Soru

Dizi tanımlanırken genel ifade nasıl yazılır?

Cevap

Dizi tanımlanırken genel ifade, tip dizi_adı[ BOYUT] ; şeklindedir. tip ifadesi int, char, float, double vb. değişken türlerinden herhangi birisi olabilir. Köşeli parantez [ ] ifadesi içerisinde belirtilen, BOYUT ise dizi içerisinde saklanacak, işlem yapılacak olan toplam veri sayısı olup, tanımlanan dizinin genel kapasitesini-boyutunu ifade eder. Buna göre, int k[5] ifadesi, tam sayı türünde 5 elemanlı k adında bir dizi tanımlar.


52. Soru

 Bir dizinin ilk elemanın indisi hangi sayı ile başlar?

Cevap

Dizilerde dikkat edilmesi gereken önemli bir nokta, BOYUT kadar elemana sahip bir dizinin ilk elemanının indisi 0 (sıfır) ile başlamasından dolayı, dizinin son elemanının indis değeri sayısal olarak BOYUT-1 olmaktadır. int k[5]; örneğimizde, ilk eleman k[0] olmakla birlikte, elemanlar k[1], k[2], k[3] şeklinde devam ederek sonuncu, yani dördüncü eleman ise k[4] nolu dizi elemanı olacaktır.


53. Soru

C program kodlarındaki satırların bitiminden sonra kullanılan /* ve */ işaretlerinin görevi nedir?

Cevap

Program kodlarındaki satırların bitiminden sonra /* ve */ işaretleri arasında yer alan metinler derleyici tarafından program satırı olarak dikkate alınmaz ve derlenmez. Bu işaretler arasına yazılan metinler ilgili satırı açıklamak amacıyla yazılmıştır.


54. Soru

C  programlama dilinde printf komutu ne ifade eder?

Cevap

printf komutu yardımıyla da her elemanın ekrana yazdırma işlemi gerçekleştirilmektedir.


55. Soru

#include <stdio.h>
#include <conio.h> /*getch fonksiyonunu kullanabilmek icin*/ /*tanimlanmistir.*/
int main( void)
{
int k[5]; /*k adinda dizi tanimlamasi*/ int i; /* sayaç-indis degeri*/
printf(“Ilk tanimlama sonrasi k dizisi elemanlari:\n”); /*Aciklama*/
for ( i = 0; i < 5; i++ ) /* k dizisinin elemanlarini ekrana yazan yineleme*/
{ printf(“k[%d] = %d\n”, i , k[i]); }
for ( i = 0; i < 5; i++ )/*0 dan 4’ e kadar toplam 5 adet yineleme indisi*/
{ k[i] = 0; } /*Sifirlama*/
printf(“Sifirlama sonrasi k dizisi elemanlari:\n”); /*Aciklama*/
for ( i = 0; i < 5; i++ )/*k dizisinin elemanlarini ekrana yazar*/ { printf(“k[%d] = %d\n”, i , k[i]); }
getch(); /*Program ciktisini ekranda bekletebilmek icin*/
return 0; }

Yukarıdaki kod bloğuna göre program çıktısı nasıl olacaktır?

Cevap

Program Çıktısı 


Tanimlama Sonrasi k dizisi elemanlari: k[0] = 0
k[1] = 0
k[2] = 2686832
k[3] = 328
k[4] = 320
Sifirlama Sonrasi k dizisi elemanları: k[0] = 0
k[1] = 0
k[2] = 0
k[3] = 0
k[4] = 0


56. Soru

Dizilerde # define ifadesinin işlevi nedir?

Cevap

Dizilerin boyut bilgilerinde kullanılabilecek ve programlamada büyük esneklik sağlayan yapılardan biri de # define ifadesidir. Main fonksiyonundan önce önişlemci tanımları bölümünde kullanılan bu yapı önişlemci komutudur.


#define BOYUT 5 ifadesi, sembolik sabit olan BOYUT’un değerinin 5 olduğunu belirtir. Önişlemci tarafından, kodun derleme işleminden önce dikkate alınarak BOYUT yazan her yere 5 ifadesini yerleştiren bir tanımdır.


57. Soru


#include <stdio.h>
#include <conio.h> /*getch fonksiyonunu kullanabilmek icin*/ #define BOYUT 5
int main(void)
{
int k [BOYU T ]; /* k adinda dizi tanimlamasi*/
int i; /*sayac-indis degeri*/
printf(“k dizisi elemanlarina %d adet deger atayiniz\n”, BOYUT );
for ( i = 1; i <= BOYUT ; i++ ) /*0 dan 4’ e kadar toplam 5 adet indis*/
{ printf(“ k[%d] degerini giriniz:”,(i-1) );
scanf (“ %d “, &k[i-1] );
}
printf(“\n k dizisine klavyeden girdiginiz %d adet sayi degerleri
:\n”, BOYU T );
for ( i = 1; i <= BOYU T ; i++ ) /* 0 dan 4’ e kadar toplam 5 adet indis*/
{ printf(“ k[%d] = %d \n”, (i-1) , k[i-1] ); }
getch(); /*Program ciktisini ekranda bekletebilmek için*/
return 0; }

yukarıdaki kod bloğunun program çıktısı nasıl olacaktır?

Cevap

Program Çıktısı 


k dizisi elemanlarina 5 adet deger atayiniz k[0] degerini giriniz: 10
k[1] degerini giriniz: 20
k[2] degerini giriniz: 30
k[3] degerini giriniz: 40
k[4] degerini giriniz: 50
k dizisine klavyeden girdiginiz 5 adet sayi degerleri : k[0] : 10
k[1] : 20
k[2] : 30
k[3] : 40
k[4] : 50


58. Soru

Aynı anda, aynı türden birden fazla dizi tanımlaması ne demektir?

Cevap

Dizi tanımlamalarında üzerinde durulması gerekli bir diğer önemli durum ise, aynı anda, aynı türden birden fazla dizi tanımlamasıdır. Bu durumla ilgili olarak, çoklu değiş- ken tanımlamada da geçerli olan kurallar diziler için de geçerli olup her yeni dizi birbirinden virgül işareti “,” ile ayrılarak tanımlanmaktadır.
Örnek olarak, “int k[5], not[50]; ” şeklindeki tanımlamada tam sayı türünden, birbirinden bağımsız içeriklere sahip, 5 elemanlı k ve 50 elemanlı not dizileri aynı satırda tanımlanabilmektedir.


59. Soru

int arasinav2[5]={60,70,80}; şeklindeki bir tanımlamada a[3]. ve a[4]. elemanlar hangi değeri alır?

Cevap

Doğrudan atama işlemli dizi tanımlaması yapılırken, {, } arasına dizinin eleman sayısından daha az değişken değeri yazılması durumunda eksik bırakılan değerler en sondaki değerler kabul edilerek bu değerlere doğrudan 0 değeri atanır. Buna göre int arasinav2[5]={60,70,80}; şeklindeki bir tanımlamada a[3]. ve a[4]. elemanlar 0 kabul edilir.


60. Soru

int final [ ]={40, 70, 50, 30, 80}; tanımlamasında final dizisinin boyutu derleyici tarafından kaç olarak algılanır?

Cevap

int final [ ]={40, 70, 50, 30, 80}; tanımlamasında {} parantezler içerisinde 5 adet sayı tanımlanmış olup, [ ] köşeli parantez içerisine dizinin kapasitesi ile ilgili bir değer yazılmamış olmasına rağmen { } parantezleri içerisinde 5 değer olduğu için final dizisinin boyutu derleyici tarafından 5 olarak algılanır.


61. Soru

İki boyutlu diziler ile tek boyutlu diziler arasında kapasite açısından ne gibi farklılıklar bulunur?

Cevap

İki boyutlu diziler, tek boyutlu dizilerden farklı olarak birden fazla satır ve sütunlardan oluşan tablolardır. Aynı kapasite-eleman sayısına sahip, tek boyutlu ve iki boyutlu diziler kapasite açısından karşılaştırılırsa, tek boyutlu bir dizinin elemanlarının dizilimi 1xmxn şeklinde iken, iki boyutlu dizinin elemanlarının dizilimi ise mxn şeklindedir.


62. Soru

İndis değerleri bakımından İki boyutlu diziler ile tek boyutlu diziler arasında ne gibi farklılıklar bulunur?

Cevap

Tek boyutlu dizilerde indis değerleri tek bir yönde birer birer artarken, iki boyutlu dizilerde iki yönde de indis değerleri değişmektedir. Böylece, iki boyutlu bir dizideki bir elemanın içeriğine erişmek için hangi satır ve sütun değerine sahip ise, iki boyutlu bir düzlemdeki bir koordinat şeklinde; dikeyde y, yatayda x bir değişken gibi kabul edilir ise, b[y][x] şeklinde, x ve y indis değerleri ile ulaşılır. Dizinin satır ve sütun için ilk indis değeri tek boyutlu dizilerde olduğu gibi yine 0’dan başlamaktadır. m satır, n sütun sayısı olmak üzere, mxn’lik bir dizinin m*n adet farklı değere sahip eleman sayısı mevcuttur. Her satırda, sonuncu eleman b[y][n-1]., her sütunda sonuncu eleman b[m-1][x]. elemandır.


63. Soru

İki boyutlu dizinin elemanlarına erişimde b[y][x] yerine b[y, x] şeklindeki kullanım mümkün müdür?

Cevap

İki boyutlu dizinin elemanlarına erişimde b[y][x] yerine yanlışlıkla b[y, x] şeklindeki kullanım hatalı bir kullanımdır. C Programlamada derleyici tarafından b[y, x] ifadesi b[x] olarak algılanır.


64. Soru

C Programlamada Göstericiler neyi ifade eder?

Cevap

C Programlamada tanımlanan değişkenler, tiplerine göre bellekte değişik byte uzunlukla- rında alanlar kaplamaktadırlar. Normal değişkenler içeriklerinde programlarda kullanılacak değişkenlerin sayısal değerini içerirken, göstericiler bağlantıda olduğu değişkenlerin adreslerini içerirler. Böylece dolaylı olarak değişkenlere ulaşmayı sağlarlar. Göstericiler, programda fonksiyonlar arasında aynı anda birden fazla değişken aktarımı gibi işlemlerde oldukça büyük kolaylık sağlayan yapılardır.


65. Soru

C programlamada göstericiler nasıl tanımlanır?

Cevap

Göstericiler (ingilizce ifadesi: pointerlar) programlarda kullanımlarından önce tanımlanmaları gerekmektedir. Gösterici bildiriminde, normal değişken bildiriminden farklı olarak, gösterici adı önünde ‘*’ karakteri kullanılmaktadır.
tip * degisken_adı;
şeklinde tanımlanmaktadır. tip değişkenler için de kullanılan int, float, char vb. türlerinden herhangi birisi olabilir. Ancak dikkat edilmesi gereken nokta, gösterici ile göstericiye bellek adresi atanacak değişkenin veri tipi aynı olmalıdır.


66. Soru

sizeof() fonksiyonunun işlevi nedir?

Cevap

Dizilerin veya göstericilerin hafızada kapsadığı alanların analizi için sizeof() fonksiyonu kullanılabilir. sizeof() fonksiyonu girdi olarak aldığı değişkenin hafızada byte olarak kapladığı alanı geri döndürecektir.


67. Soru

C programlama dilinde dizgiler neyi ifade eder?

Cevap

C programlama dilinde, dizgiler için tanımlanmış bir veri tipi bulunmamaktadır. Dizgiler karakterlerden oluşan diziler veya göstericiler olarak tanımlanabilir. Bu nedenle, dizgi tanımlarında tek boyutlu diziler tanımlanmaktadır. Normal dizilerden farklı olarak son elemanı NULL(0) (‘\0’) değeri ile sonlandırılmaktadır. Bu özelliklerinden dolayı karakter dizilerini, dizginin içereceği karakter sayısından bir karakter fazla kapasiteli olacak şekilde tanımlamak gerekmektedir.


68. Soru

char ad[] = “neslihan” tanımlamasına göre dizi boyutu kaçtır?

Cevap

char d[10];

şeklindeki bir dizgi tanımlamasında, dizginin d[9] indis nolu elemanı NULL değere sahiptir. Bu durumda d dizgisine 9 karakterli bir kelime yazılabilir. d dizgisi içerisindeki karakterler hafızada okunurken NULL’ a kadar okunur, NULL bir sınır değeri oluşturur.
char ad[] = “neslihan”;
tanımlamasında 8 adet karakter içerilmektedir. Dizi boyutu verilmemiştir. Bu nedenle NULL karakteri de dahil olmak üzere toplamda 9 karakter kapasitesine sahip bir karakter dizisi yani dizgi tanımlanmıştır. Sırasıyla ‘n’, ‘e’, ‘s’, ‘l’, ‘i’, ‘h’, ‘a’, ‘n’, ‘\0’ karakterlerini içeren ad dizgisinin ilk elemanı olan ad [0] ‘n’, 7 indis nolu ad[7] elemanı ise yine ‘n’ harfini içermektedir. ad[8] nolu elemanı ise kelime sonu anlamına gelen ‘ \0 ’ NULL karakterini içerir.


Güz Dönemi Ara Sınavı
7 Aralık 2024 Cumartesi
v