Bir hafıza hücresinin adres bilgisini tutmaya yarayan değiģkenlere iģaretçi adı verilir. ĠĢaretçiler aģağıdaki gibi tanımlanırlar.
|
|
- Eren Karadag
- 7 yıl önce
- İzleme sayısı:
Transkript
1 ĠġARETÇĠLER Bir hafıza hücresinin adres bilgisini tutmaya yarayan değiģkenlere iģaretçi adı verilir. ĠĢaretçiler aģağıdaki gibi tanımlanırlar. ĠĢaretçi türü ĠĢaretçi değiģkeninin ismi int * p ĠĢaretçi sembolü Yukarıda tam sayı türünden bir işaretçi tanımlanmıştır. Bu işaretçiye adres atamak için öncelikle hafızaya yerleştirilmiş bir değişkene sahip olmanız gerekir. Örneğin aşağıdaki kod bloğunda sayi değişkeninin adresi & operatörü kullanılarak getirilmekte ve bu değer p işaretçisi içerisine atanmaktadır. 3. int sayi= 123; 4 5. int* p = &sayi; cout<<p; 8. } sayi p Temsili Hafıza Görüntüsü Program 1 Yukarıdaki kod parçasının hemen sağında temsili hafıza görüntüsü verilmiştir. Burada hafıza hücrelerine sahip olan değişkenin adı, hücrenin adresi ve hücrede bulunan sayısal değer yer almaktadır. Hafıza şeklinden sayi değişkeninin 2008 numaralı adres hücresinde bulunduğu görmekteyiz (Tam sayılar 4 byte yer kaplar yani sayi değişkeni adreslerini kaplamaktadır). Aynı şekilde p işaretçisi de bir değişken olduğu için hafızada belirli bir alan kaplamaktadır. İşaretçinin tuttuğu değere dikkat edersek sayi değişkeninin bulunduğu hafıza hücresinin adresi olduğunu görürüz. O zaman 7.satırdaki kod işletildiğinde ekrana çıkan değer aşağıdaki gibi olacaktır.
2 İşaretçi türü ĠĢaretçilerin tuttukları adrese gösterdiği veya iģaret ettiği adres adı verilmektedir. ĠĢaretçi türü, iģaretçinin hafızada kapladığı alanı belirtmek yerine iģaretçinin gösterdiği adreste bulunan verinin türünü belirtmektedir. O zaman bu bilgiye iģaretçinin türünden çok iģaretçinin gösterdiği verinin türü demek daha doğru olur. ĠĢaretçinin tuttuğu adres bilgisini ekrana çıkarma iģlemini gördük. ĠĢaretçinin gösterdiği adreste bulunan veriyi ekrana çıkarmak için * operatörü kullanılmaktadır. 3. int sayi= 123; 4 5. int* p = &sayi; cout<<p<<endl; cout<< *p; 10. } sayi p Temsili Hafıza Görüntüsü Program 2 Ekran Çıktısı Yukarıdaki kodun 7. Satırında işaretçinin tuttuğu değer ekrana çıkartılırken 9. Satırda işaretçinin gösterdiği değer ekrana çıkmaktadır. Ekran çıktısı aşağıda verilmiştir. Aynı Ģekilde * operatörü ile iģaretçinin gösterdiği adresteki içerik değiģtirilebilmektedir. Örneğin aģağıdaki kodun 9.satırında p iģaretçisinin gösterdiği adresteki 4 baytlık alana 44 değeri atamaktadır. Yani sayi değiģkeninin değerini 44 yapmaktadır. 3. int sayi= 123; 4 5. int* p = &sayi; cout<<sayi; *p = 44; cout<<sayi; 12. } Program 3 sayi p Satırın Sonundaki Temsili Hafıza Görüntüsü sayi p Satırın Sonundaki Temsili Hafıza Görüntüsü Ekran Çıktısı
3 * Operatörü * operatörü iģaretçinin gösterdiği adreste bulunan veri üzerinde iģlem yapmamızı sağlamaktadır. Bu iģlem veriyi çekmek olabileceği gibi veriye atama iģlemi de olabilir. Örneğin aģağıdaki kodu dikkate alalım. Kodumuzun 5. Satırında p iģaretçisine sayi1 değiģkeninin adresini atanmaktadır. Hemen ardından 6. satırda p iģaretçisinin gösterdiği adrese sayi2 değiģkenin değeri atanmaktadır. Bu iģlemler ile dolaylı olarak sayi1 değiģkenin değerini de değiģtirmiģ olduk. Derleyici bu iģlemi yaparken p iģaretçisinin sayi1 değiģkenini gösterdiğini bilmemektedir. Derleyici sadece p iģaretçisinin bir adres tuttuğunu ve bu adreste bir tam sayı bulunduğunu bilmektedir. ĠĢaretçinin soluna * operatörünü yerleģtirdiğimizde de derleyici p iģaretçisinin gösterdiği adrese eriģim yapacaktır. 6.Satırda yapılan eriģim iģlemi atama için kullanılmıģtır. 3. int sayi1= 123; 4. int sayi2 = 12; 5. int* p = &sayi1; 6. *p = sayi2; 7. cout<< p<<endl; 8. cout<<*p<<endl; 9. p = &sayi2; 10. *p+= 44; 11. cout<<sayi1<<endl; 12. cout<<sayi2<<endl; 13. } Program 4 sayi sayi p Satır Sonundaki Temsili Hafıza Görüntüsü sayi sayi p Satır Sonundaki Temsili Hafıza Görüntüsü sayi sayi p Satır Sonundaki Temsili Hafıza Görüntüsü Programın 7.satırında p iģaretçisinin tuttuğu değer (adres bilgisi) ekrana çıkartılmaktadır. 8. Satırda ise p iģaretçisinin gösterdiği adreste bulunan tam sayı ekrana çıkarmaktadır. Bir sonraki satırda ise p iģaretçisine atama yapılmaktadır. Diğer bir deyiģle iģaretçinin tuttuğu adres değeri değiģtirilmektedir. p iģaretçisi artık sayi2 değiģkenini göstermektedir. 10.satırda p iģaretçisinin gösterdiği veriye 44 eklenmektedir. p iģaretçisi son olarak sayi2 değiģkenini göstermekte idi bu yüzden sayi2 değiģkeni 44 arttırılarak 56 olacaktır (Derleyici * operatörünü += operatöründen daha önce iģlemektedir).
4 ĠĢaretçiler iki yönlüdür. Yani iģaretçi değiģkeni üzerinde iģlem yapılabilirken ayrıca iģaretçinin gösterdiği veri üzerine de iģlem yapılabilmektedir. Örneğin aģağıdaki Program 5 in 4. Satırında p iģaretçisine atama yapılırken, 5.satırda iģaretçinin gösterdiği yere atama yapılmaktadır. 6.satırda iģaretçinin tuttuğu adres değeri ekrana çıkartılırken 7.satırda iģaretçinin gösterdiği değer ekrana çıkartılmaktadır. Dikkat edilmesi gereken diğer bir kural da iģaretçinin tanımlandığı satırda yapılan atama iģlemi iģaretçiye yapılmaktadır. * operatörü bu durumda değiģkenin türünü belirtmektedir atama iģleminde bir etkisi yoktur. Yani * operatörü iģaretçinin tanımlandığı satırda sadece iģaretçinin türünü belirtir. Örneğin Program 5 in 4.satırında iģaretçiye atama yapılmaktadır. sayi1 değiģkeninin adresi p iģaretçisi içerisine atanmaktadır. Program 6 da ise iģaretçiye atama iģlemi 5. satırda yapılmaktadır. Burada iģaretçinin solunda * operatörünü görmemekteyiz. 3. int sayi1= 123; 4. int* p = &sayi1; 5. *p = 33; 6. cout<< p<<endl; 7. cout<<*p<<endl; 8. *p+= 44; 9. } 3. int sayi1= 123; 4. int* p; 5. p = &sayi1; 6. *p = 33; 7. cout<< p<<endl; 8. cout<<*p<<endl; 9. } Program 5 Program 6 Hafıza ĠĢaretçileri kullanmak için hafızanın nasıl kullanıldığını bilmemiz gerekir. Bu kısımda amacım sizlere C++ dilinde hafızanın kullanılmasına dair temel bazı bilgiler vermektir. Ġlerleyen bölümlerde bu konuya tekrardan değineceğiz. Ġlk olarak bir tamsayının hafızada nasıl saklandığını görelim. 3. int sayi1= ; 4. int sayi2 = 123; 5. } Program 7 sayi sayi Satır Sonundaki Temsili Hafıza Görüntüsü Program 8 deki sayi1 değiģkenine değeri atanmıģtır. Biliyoruz ki bu değeri onluk sayı sistemi formu ile hafızada saklayamayız. Bunun için derleyici onluk sistemdeki sayımızı, ikili sistemine çevirmektedir. Sonuç aģağıdaki gibi olacaktır. sayi1 1.bayt 2.bayt 3.bayt 4.bayt sayi2 1.bayt 2.bayt 3.bayt 4.bayt
5 sayısını temsil etmek için 32 bite ihtiyacımız olduğundan bütün bitleri kullandık fakat 123 sayısını temsil etmek için 7 bit gerektiğinden kalan bütün bitlere (0-25 numaralı bitler) 0 değeri atanmıģtır (32 bitlik iģlemcili sistemlerde tam sayılar 32 bit ile temsil edilmektedir). Temsili hafıza görüntüsünde sayi1 değiģkeninin 2008 ile 2011 hücreleri arasında olduğu görülmektedir. 32 bitlik değerimizin bu alana yerleģimi Ģekilde gösterilmiģtir. Dikkat edilecek olursa her bayt hafızaya ters sıra ile yerleģtirilmiģtir. Bu yerleģtirme biçimine little-endian adı verilmektedir (intel iģlemciler little-endian yöntemi ile çalıģmaktadır). sayi1 1.bayt 2.bayt 3.bayt 4.bayt Hafıza Sayi2 1.bayt 2.bayt 3.bayt 4.bayt Hafıza AĢağıdaki kodun 4. satırında p iģaretçisine sayi1 değiģkeninin adresi atanmıģtır. Bu iģlemler sonucunda hafızanın temsili görüntüsü Ģekildeki gibi olmaktadır. ġekle dikkat edecek olursak sayi1 değiģkeni dört adet bellek hücresini kaplamaktadırs. Fakat derleyici sayi1 değiģkeninin adresi olarak bize 2008 sayısını getirmektedir. Eğer p iģaretçisinin adresini isteseydik derleyici bize 2004 sayısını getirecekti. Bir değiģkenin adresi istendiğinde derleyici bizlere değiģkenin baģlangıç adresini getirir.
6 3. int sayi1= ; 4. int *p = &sayi1; 5 *p=144; 6. } Program 9 sayi1 p Satır Sonundaki Temsili Hafıza Görüntüsü 5.satırda ise p iģaretçisinin gösterdiği hafıza alanına 144 sayısı atanmaktadır. Derleyici p iģaretçisinin bir tam sayı gösterdiğini bilmektedir. Bu yüzden 144 sayısını 2008 ile 2011 numaralı hafıza hücrelerine Ģekildeki gibi yerleģtirecektir bayt 2.bayt 3.bayt 4.bayt sayi1 p 5.Satır Sonundaki Temsili Hafıza Görüntüsü İşaretçi Dönüşümü (pointer cast) DeğiĢkenler arası dönüģüm yapıldığını biliyoruz. Aynı iģlem iģaretçiler arasında da yapılabilmektedir. Fakat bu iģlem daha farklı sonuçlar üretmektedir. Öncelikle iģaretçilerin türü aslında iģaretçilerin gösterdiği verinin türünü belirtmektedir. Bütün iģaretçiler aslında yapısal olarak aynıdır. Sonuç olarak bütün iģaretçiler adres bilgisi tutmaktadır. 32
7 bitlik bir sistemde maksimum hafıza adresi arasında değerler alabildiği düģünülürse, böyle bir bilgiyi saklamak için 4 baytlık bir alan bize yeterli olacaktır. Buradan çıkartacağımız sonuç iģaretçilerin gösterdiği verinin türü ne olursa olsun iģaretçinin hafızada kapladığı alan sadece 4 bayttır ve bu alan içerisinde de arasındaki sayılar yer alır. ĠĢaretçiler ile unsigned int türündeki değiģkenler hafızada aynı Ģekilde saklanmaktadır. Ġkisi de dört baytlık alan kaplar ikisi de aralığında tam sayı değerler alabilirler. ĠĢaretçiler arasındaki dönüģüm den kastedilen aslında iģaretçilerin gösterdikleri verinin tipini değiģtirmektir. Örneğin bir iģaretçi tam sayıyı gösterirken aynı adresi karakter türünden bir iģaretçiye atabiliriz. 3. int sayi1= ; 4. char *p = (char*) &sayi1; 5 *p= 44; 6. } Program sayi1 p 4.Satır Sonundaki Temsili Hafıza Görüntüsü Yukarıdaki kodun 4. Satırında sayi1 değiģkenin adresi derleyiciden isteniyor. Derleyici adresi int* türünden bir iģaretçiye atanacak Ģekilde getirmektedir. (char*) komutu yazılarak bu adresin karakter gösteren bir iģaretçiye atanması sağlanıyor. DönüĢüm iģlemi (char*) komutu ile gerçekleģmektedir. Bu komutu kullanmadığımızda derleyici yaptığımız iģlemin tehlikeli olduğunu bildiren bir hata verecektir. DönüĢüm komutunu yerleģtirerek derleyiciye yaptığımız iģten emin olduğumuzu belirtmekteyiz. 5.Satırda p iģaretçisinin gösterdiği yere 44 sayısını atıyoruz. Derleyici bu iģlemi yaparken p iģaretçisinin türüne bakar ve karakter türünden bir veriyi gösterdiğini görür. Bu yüzden 2008 numaralı hafıza hücresine 44 sayısını yazar. Sonuç aģağıdaki gibi olur sayi1 p 5.Satır Sonundaki Temsili Hafıza Görüntüsü
8 AĢağıdaki kodu inceleyelim. 3. ve 4. satırlarda iki karakter değiģkeni oluģturulup bunlara ilk değerler atanıyor. Hemen ardından k2 değiģkeninin adresi p iģaretçisi içerisine atanıyor. ĠĢaretçimizin türü int olduğu için adres alırken dönüģtürme yapıyoruz. Programın 6.satırında p iģaretçisinin gösterdiği alana 0 değeri atanıyor. P iģaretçisini tanımlarken derleyiciye onun tam sayı gösterdiği belirtmiģtik. Bu yüzden derleyici numaralı adreslere 0 değerini atayacaktır. 3. char k1= 'A'; 4. char k2= 'B'; 5 int* p = (int*)& k2; 6. *p = 0; 7. } Program k k p 5.Satır Sonundaki Temsili Hafıza Görüntüsü k k p 6.Satır Sonundaki Temsili Hafıza Görüntüsü Dikkat edecek olursak hafızanın bize ait olmayan hücrelerine de veri ataması yaptık. ĠĢaretçiler programcıya büyük bir güç vermektedir. Onlar sayesinde hafızaya direk eriģim mümkün olmaktadır. Fakat bu güç beraberinde büyük riskleri de getirmektedir. Az önce olduğu gibi yanlıģ kullanıldığında iģaretçiler çok büyük problemlere yol açabilirler ve 2011 numaralı hücrelerde programın akıģı için önemli olan veriler olabilirdi. Bu hücrelerin değerini değiģtirmek programın iģleyiģini bozabilir. Daha da kötüsü, derleyici gramer olarak bir hata bulamadığı için program çalıģacaktır ve hatanın konumunu bulmak programcı açısından gittikçe zorlaģacaktır. ĠĢaretçilerin doğru kullanımı için pratik yapmak Ģarttır.
9 Adres Atanmamış İşaretçilerin Tehlikesi ġu ana kadar kullandığımız iģaretçilerin gösterdiği veriye eriģmeden önce iģaretçiye kullanımda olan bir adresi atadık. Bu yöntem aslında programcılık hayatımız boyunca uymamız gereken çok önemli bir kuraldır. Çünkü iģaretçiler ilk olarak tanımlandığında diğer değiģkenler gibi bilinmeyen bir değer alacaktır. Bu değeri legal bir adres kabul edip içerisindeki veriye eriģmeye çalıģırsak çok büyük problemlerle karģılaģabiliriz. Örneğin Program 12 deki p iģaretçisine bir değer atanmamıģtır. C++ dili oluģturduğu değiģkenlere ilk değer atamamaktadır. Biliyoruz ki p iģaretçisi kendisine verilen alanda( ) daha önceden bulunan veriye sahip olacaktır. Bu veri her Ģey olabilir yani güvenilmezdir. Program 12 nin 5. satırında ise içeriği bilinemeyen iģaretçinin gösterdiği alana atama yapılmaktadır. Bu iģlem birçok probleme yol açabilir çünkü p nin sahip olduğu değeri bilmiyoruz. 5.satırdaki iģlem programın sonlanmasına sebep olabileceği gibi programın hatalı bir biçimde devam etmesine de sebep olabilir. 3. int sayi1= 123; 4. int* p; 5. *p = 33; 6. } sayi p 2004 XXXXX 10.Satır Sonundaki Temsili Hafıza Görüntüsü Program 12 Bus Hatası Hafıza sistemlerinin büyük bir çoğunluğu bir baytlık hücreler Ģeklinde adreslemektedir. Günümüz 32- bit iģlemciler hafızadan bir anda 4 bayt(32 bit) veri almak üzere tasarlanmıģtır. Fakat çekilecek verinin hafızada hizalanmıģ olması gerekmektedir. Örneğin hafızadan 16 bit veri çekilecek ise verinin hafızada bulunduğu hücre adresleri 0,2,4 gibi ikinin katı sayılar ile baģlaması gerekir. Dört baytlık verilerin 0,4,8 gibi ikinin katı adreslere yerleģtirilmesi gerekir. Derleyiciler verileri bu kurala uygun Ģekilde yerleģtirmektedirler. Bu kurala uymak için kimi zaman bazı hafıza hücreleri boģ bile bırakılabilmektedir. Eğer ki iģaretçimizin gösterdiği adres tek bir sayı ise ve biz bu adresten bir tam sayı(4 bayt) çekmeye çalıģırsak iģlemci hata verecektir(trap). Bu hata iģletim sistemi tarafından fark edildiğin de programımızı sonlandıracaktır. Program 13 ün 5. Satırında p iģaretçisi k1 değiģkeninin adresini almaktadır. P iģaretçisi 2009 değerine sahip olacaktır. ĠĢaretçinin bu değere sahip olması 6.satıra kadar bir problem teģkil etmemektedir. 6.satırda 2009 numaralı adreste bulunan dört baytlık veri çekilmeye çalıģılmaktadır. Bu iģlem iģlemci tarafından gerçekleģtirilemeyeceğinden iģletim sistemi programımızı sonlandırır.
10 3. char k1= 'A'; 4. char k2= 'B'; 5 int* p = (int*)& k1; 6. *p = 0; 7. } Program k k p 5.Satır Sonundaki Temsili Hafıza Görüntüsü Bu tip hatalar program çalıģırken ortaya çıktığında (Run-Time Error)hatanın program içerisindeki yerinin bulunması oldukça zor olabilmektedir. Özellikle kod büyüdükçe bus hataları çok daha görünmez olur. Programcı olarak bu tip durumların ortaya çıkmaması için iģaretçileri kullanırken çok dikkatli olmalıyız. ĠĢaretçinin gösterdiği alana eriģim yaparken bus hatası oluģmaması için dikkat etmemiz gerekir. ĠĢaretçilere ilk değeri atanmalıdır. ĠĢaretçiler arasında dönüģüm yapılırken dikkat edilmelidir. Segmentasyon Hatası ĠĢaretçiler sayesinde hafızaya direk eriģim yapabilmemiz tümüyle özgür olduğumuz anlamına gelmiyor. Günümüz iģletim sistemleri korumalı mod üzerinde iģlem görmektedirler. Yani sistemi bizlerin yapacağı hatalardan korumak için çeģitli savunmaları mevcuttur. Bunlardan birisi de hafızanın bize ait olmayan kısımlarına eriģimi engellemektir. ĠĢletim sistemi programlarımıza değiģkenlerimiz için kullanılacak olan iki hafıza alanı tahsis etmektedir. Ġlerleyen kısımlarda bu hafıza alanlarına daha detaylı değineceğiniz. Bu hafıza alanları dıģındaki alanlara eriģimde iģletim sistemi devreye girip programımızı sonlandıracaktır. Burada amaç programımızın sistemi çökertmesini engellemektir. MS-DOS gibi gerçek mod (koruma yok) ile çalıģan iģletim sistemlerinde programcı istediği hafıza hücresine veri yazabildiği için iģletim sistemini çökertmek amatör bir programcı için bile çok kolay bir iģti. Günümüz iģletim sistemleri tasarlanırken programcılar tehlike doğurabilecek etkenler olarak görülmektedir. Program, iģletim sisteminin kendisine verdiği alanların dıģına eriģmeye çalıģırsa segmentasyon hatası ortaya çıkar ve bu hatayı ortaya çıkartan program sonlandırılır. Bu hataların temel çıkma sebepleri Ġlk değeri atanmamıģ iģaretçilerin gösterdiği hücreye eriģmeye çalıģıldığında Ġlk değer olarak 0 atanmıģ iģaretçilerin gösterdiği hücrelere eriģilmeye çalıģıldığında
11 Fonksiyonlara Parametreyi Adresi İle Geçme Fonksiyonların parametre olarak sadece değer alabileceğinden bahsetmiģtik. Bu yüzden fonksiyonlar değiģkenleri direk manipüle edemezler. Örneğin aģağıdaki degistir fonksiyonu a ve b değiģkenlerinin değerlerini değiģtirmeyecektir. 1. void degistir(int s1,int s2) 3. int temp = s1; 4. s1= s2; 5. s2 = temp; 6. } 7. int main(int argc,char** argv) 8. { 9. int a=2,b=4; 10. degistir(a,b); 11. } Program 13 ĠĢaretçiler sayesinde değiģkenlerimizin fonksiyonlar tarafından değiģtirilmesi mümkün olmaktadır. Bunun için fonksiyona değiģkenin değeri yerine adresi verilmelidir. degistir fonksiyonunu adres alacak Ģekilde değiģtirirsek fonksiyonun yeni hali Program 14 deki gibi olacaktır. Fonksiyona a ve b değiģkenlerinin adresleri verilmektedir. 3. Satırın sonundaki hafıza durumuna dikkat edecek olursak s1 iģaretçisi kullanılarak a değiģkeninin değeri temp değiģkenine atanmıģtır. 4.satırda ise s1 iģaretçisinin gösterdiği alana(ki bu a değiģkeni oluyor) s2 iģaretçisinin gösterdiği veri (b değiģkeni) atanıyor. 5.Satırda ise s2 iģaretçisinin gösterdiği alana( b değiģkeni) temp değiģkeninin tuttuğu değer atanıyor. Fonksiyonlar parametre olarak sadece değer alabilmektedir. Burada fonksiyona adres vererek dolaylı olarak değiģkenlerimizi manipüle etmeyi baģardık. 1. void degistir(int *s1,int *s2) 3. int temp = *s1; 4. *s1= *s2; 5. *s2 = temp; 6. } 7. int main(int argc,char** argv) 8. { 9. int a=2,b=4; 10. degistir(&a,&b); 11. cout<<a<<b; 12. } a b s s temp Satır Sonundaki Temsili Hafıza Görüntüsü Program 14 a b s s temp Satır Sonundaki Temsili Hafıza Görüntüsü a b s s temp Satır Sonundaki Temsili Hafıza Görüntüsü
12 İşaretçi ve Diziler Program 15 de sayilar adli beģ elemanlı bir tam sayı dizisi tanımlanmıģtır. Tanımlanan dizinin temsili hafıza görüntüsü de verilmiģtir. Dikkat edecek olursak dizinin elemanları hafızada ardıģıl olarak yerleģtirilmiģtir. Biliyoruz ki dizi isimlerini kullanarak diziye ait elemanlara eriģebiliriz. Buna ek olarak dizi isimlerini kullanarak dizilerin baģlangıç adreslerini de elde edebiliriz. Program15 in 6. satırında dizinin ismi kullanılarak dizinin baģlangıç adresi p iģaretçisine atanmıģtır. 6.Satırın sonundaki hafızanın görüntüsüde Ģekil üzerinde gösterilmiģtir. 3. int sayilar[5]; 4. for(int i=0;i<5;i++) 5. sayilar[i] = i; 6. int*p = sayilar; 7. cout<< *p <<endl; 8. *p=333; 9. } sayilar[4] sayilar[3] sayilar[2] sayilar[1] sayilar[0] Satır Sonundaki Temsili Hafıza Görüntüsü Program 15 sayilar[4] sayilar[3] sayilar[2] sayilar[1] sayilar[0] p Satır Sonundaki Temsili Hafıza Görüntüsü sayilar[4] sayilar[3] sayilar[2] sayilar[1] sayilar[0] p Satır Sonundaki Temsili Hafıza Görüntüsü Dizi ismi bir iģaretçi değildir. Derleyici dizi ismini kullandığımızda bize sadece dizinin baģlangıç adresini getirmektedir. Program 15 in 7.satırındaki *p komutu iģletildiğinde p iģaretçisinin gösterdiği hafıza alanı yani sayilar dizisinin ilk elemanı hafızadan çekilmekte ve bu değer ekrana çıkartılmaktadır. Aynı Ģekilde programın 8.satırında da *p=333 komutu ile sayilar dizisinin ilk elemanının değeri 333 yapılmaktadır.
13 İşaretçi Aritmetiği ĠĢaretçiler üzerinde de çeģitli aritmetik iģlemler yapılabilmektedir. Örneğin bir iģaretçinin tuttuğu adres değeri arttırabilmektedir. Fakat iģlemler matematik kurallarından biraz farklıdır. Program 16 nın 6.satırında p iģaretçisine sayilar dizisinin baģlangıç adresini atanmaktadır. Hafıza görüntüsü hemen sağda verilmiģtir. Programın 7.satırında ise p iģaretçisinin tuttuğu değer ekrana çıkartılmaktadır. Çıktının 1992 olacaktır. Bu iģlemin hemen ardından 8.satırda iģaretçinin tuttuğu değer bir arttırılmaktadır. 9.Satırdaki ekran çıktısının 1993 olmasını bekliyoruz fakat ekran çıktısı 1996 olacaktır. Bunun temel sebebi iģaretçi aritmetiğinin farklı çalıģmasıdır. 3. int sayilar[5]; 4. for(int i=0;i<5;i++) 5. sayilar[i] = i; 6. int*p = sayilar; 7. cout<< p <<endl; 8. p++; 9. cout<< p <<endl; 10. } sayilar[4] sayilar[3] sayilar[2] sayilar[1] sayilar[0] p Satır Sonundaki Temsili Hafıza Görüntüsü Program 16 sayilar[4] sayilar[3] sayilar[2] sayilar[1] sayilar[0] p Satır Sonundaki Temsili Hafıza Görüntüsü sayilar[4] *(p+4) sayilar[3] *(p+3) sayilar[2] *(p+2) sayilar[1] *(p+1) sayilar[0] *(p+0) p İşaretçi Aritmetiklerinin Sonuçları Program 15 in 8.satırında yapılan iģlem aslında aģağıdaki gibidir. ĠĢaretçinin değerindeki artıģ miktarı iģaretçinin gösterdiği veri türünün boyutu ile çarpılmaktadır. P iģaretçisi bir tam sayı göstermektedir. Bir sonraki tamsayının adresini bulmak için adresi bir değil dört birim arttırmamız gerekir. Derleyici bu iģlemi bizim yerimize yapmaktadır. Yukarıda p iģaretçisine yapılan aritmetik iģlemlerin sonuçları gösterilmektedir. p++ p=p+1*sizeof(int) p=1992+1*4 p=1996
14 Program 16 nın 7.satırındaki döngüyü inceleyecek olursak iģaretçinin değeri sırayla 0,1,2,3,4 değerleri ile toplanıp sonuç ekrana çıkartılmaktadır. 3. int sayilar[5]; 4. for(int i=0;i<5;i++) 5. sayilar[i] = i; 6. int* p = sayilar; 7. for(int i=0;i<5;i++) 8. cout<< (p+i)<<endl; 10. } Program 17 sayilar[4] sayilar[3] sayilar[2] sayilar[1] sayilar[0] p Satır Sonundaki Hafızanın Temsili görüntüsü Ekran Çıktısı Ekran çıktılarına dikkat edersek değerler sürekli olarak dört birim artmaktadır. ĠĢaretçinin gösterdiği adresteki verinin türü tam sayı olduğundan artıģ dört birim olmaktadır. ĠĢaretçi short olsaydı artıģ 2 birim olacaktır. AĢağıdaki programda programda bu durum gözlenebilmektedir. 3. short sayilar[5]; 4. for(int i=0;i<5;i++) 5. sayilar[i] = i; 6. short* p = sayilar; 7. for(int i=0;i<5;i++) 8. cout<< (p+i)<<endl; 10. } Program 18 sayilar[4] sayilar[3] sayilar[2] sayilar[1] sayilar[0] p Satır Sonundaki Hafızanın Temsili görüntüsü Ekran Çıktısı
Pointers (İşaretçiler)
Pointers (İşaretçiler) Pointers (İşaretçiler) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ile ilişkilidir. Donanımsal açıdan
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ıGöstericiler (Pointers)
C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi
DetaylıALGORİTMA VE PROGRAMLAMA II
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Bellek ve Adresleme İşaretçi Kavramı
DetaylıProgram AkıĢ Kontrol Yapıları
C PROGRAMLAMA Program AkıĢ Kontrol Yapıları Normal Ģartlarda C dilinde bir programın çalıģması, komutların yukarıdan aģağıya doğru ve sırasıyla iģletilmesiyle gerçekleģtirilir. Ancak bazen problemin çözümü,
DetaylıProgram akıģı sırasında belirtilen satır numaralı yere gitmek için kullanılır. Genel formu: [<satır numarası>] GOTO <satır numarası 1> GOTO n
KONTROL DEYİMLERİ Kontrol deyimleri bir programın normal akıģını değiģtirmek için kullanılır. Aksi söylenmedikçe programın komut satırları birbiri ardına çalıģtırılır. Program içindeki yapılan sorgulamalara
Detaylıint faktoriyel(int sayi) { int sonuc = 1; for(int i=sayi;i>0;i--) sonuc*=i; return sonuc; } int main() { int sayi = faktoriyel(5); }
FONKSİYONLAR Fonksiyon, programcı tarafından seçilen bir kod bloğuna isim vermek için kullanılan araçtır. Fonksiyon ismi program içerisinde çağrıldığında fonksiyonun temsil ettiği kod çalıştırılır. Örneğin
DetaylıMühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler
Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler C Programlama Dr. Serkan DİŞLİTAŞ 3.1. Sabitler Sabitler, tanımlanmasıyla birlikte program içerisinde
Detaylı8. İŞARETCİLER (POINTERS)
8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Hafıza Yapısı Bir değişken tanımlandığında arka planda bilgisayarın hafızasında bir konuma yerleştirilir. Hafıza küçük hücrelerden oluşmuş bir blok olarak düşünülebilir. Bir değişken
DetaylıBLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)
1 BLM 112- Programlama Dilleri II Hafta 4 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan İyilik insanları birbirine bağlayan altın zincirdir. ~Goethe Hafıza Yapısı 2 Bir değişken tanımlandığında arka
DetaylıDİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II
DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN Hafıza Yapısı Bir değişken tanımlandığında arka planda bilgisayarın hafızasında bir konuma yerleştirilir. Hafıza küçük hücrelerden oluşmuş bir blok olarak düşünülebilir. Bir değişken
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ı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ı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ıALGORİTMA VE PROGRAMLAMA II
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Bellek ve Adresleme Dinamik Bellek
DetaylıPROGRAMLAMAYA GİRİŞ FONKSİYONLAR
PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar 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
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ıBİLGİSAYAR PROGRAMLAMA
TAŞIT TEKNOLOJİLERİ KULÜBÜ BİLGİSAYAR PROGRAMLAMA C++ TEMEL ANLATIM 1 WWW.TASİTTEKNOLOJİLERİ.COM Bu materyal,bilgisayar programlama dersine çalışmakta sorun yaşayan arkadaşlarımız için Karabük Üniversitesi
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ıDeğişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while
Değişkenler Değişkenler bir bilginin bellekteki konumunu temsil eden sembolik isimlerdir. Bilgisayarda hemen hemen tüm işlemler bellekte yapılır. Program çalıştırıldığında değişken ve bu değişkenin türüne
DetaylıINTEGER OVERFLOW ***************************************************************/
INTEGER OVERFLOW BELGE HAKKINDA Bu belge "GNU Free Documentation Licence" ile kaynak gösterilmek ve önceden yazarından izin alınmak kaydıyla yeniden yayınlanabilir. Bu belgedeki eksik, yanlış ya da geliştirilmesi
DetaylıALGORİTMA VE PROGRAMLAMA II
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 İşaretçiler ve Diziler Fonksiyon
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ıSINIF. Program 2. Program 1
SINIF Programlama veri ile veri üzerinde yapılan iģlemden oluģur. Veri değiģken iken, veri üzerinde yapılan iģlem fonksiyon olarak düģünülebilir. ġu ana kadar bu ikisini ayrı parçalar olarak kullandık.
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ı3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler
Veri Tanımları ve Mantıksal Đşlemler Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Kullanılacak bütün değişkenlerin kullanılmadan önce C derleyicisine bildirilmeleri gerekir.
DetaylıC PROGRAMLAMA D İ L İ
C PROGRAMLAMA DİLİ C Programlama Dilinin Temelleri C Programlama Dili'ni popüler kılan önemli nedenler aşağıda listelenmiştir: C, güçlü ve esnek bir dildir. C ile işletim sistemi veya derleyici yazabilir,
DetaylıTemel Bilgisayar Bilimleri Ders Notu #4-2. kısım
Nisan 2009 9031150 - Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Referans: Bugün: 1. Ders Notları. Ders #4.1 Tekrar Dowhile ve for döngüleri Diziler Göstergeler 1. Tekrar for döngüleri Genel yazılımı
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ıProgramlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1
Programlama Dilleri C Dili Programlama Dilleri-ders02/ 1 Değişkenler, Sabitler ve Operatörler Değişkenler (variables) bellekte bilginin saklandığı gözlere verilen simgesel isimlerdir. Sabitler (constants)
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ıNESNEYE YÖNELİK PROGRAMLAMA
NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem
DetaylıProgramlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1
Programlama Dilleri C Dili Programlama Dilleri-ders08/ 1 Yapısal Veri Tipleri C dili genişletilebilen bir dildir. Var olan veri tipleri kullanılarak yeni veri tipleri tanımlanıp kullanılabilir. Programlama
DetaylıBÖLÜM 9: POINTERLER (İŞARETÇİLER)
BÖLÜM 9: POINTERLER (İŞARETÇİLER) Bilgisayarın ana belleği (RAM) her biri 1 byte olmak üzere sıralı kaydetme hücrelerinden oluşmaktadır. Her hücreye kullanılan işletim sistemi tarafından bir adres atanmıştır.
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ı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ı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ı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ıInternet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı
Internet Programming II Elbistan Meslek Yüksek Okulu 2015 2016 Bahar Yarıyılı Öğr.Gör. Murat KEÇECĠOĞLU 8 Mar. 2016 PHP de Değişken Tipleri Dizi (Array) Aynı değişken içerisinde birden fazla değer tutmak
DetaylıBMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1
BMT 101 Algoritma ve Programlama I 11. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Fonksiyonlar Yük. Müh. Köksal Gündoğdu 2 C++ Hazır Fonksiyonlar Yük. Müh. Köksal Gündoğdu 3 C++ Hazır Fonksiyonlar 1. Matematiksel
Detaylı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ıBİLG Dr. Mustafa T. Babagil 1
BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)
Detaylı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ıenum bolumler{elektronik, insaat, bilgisayar, makine, gida};
BÖLÜM 12: Giriş C programlama dilinde programcı kendi veri tipini tanımlayabilir. enum Deyimi (Enumeration Constants) Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı
Detaylı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ıMTM 305 MĠKROĠġLEMCĠLER
KARABÜK ÜNĠVERSĠTESĠ TEKNOLOJĠ FAKÜLTESĠ MEKATRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ MTM 305 MĠKROĠġLEMCĠLER ArĢ. Gör. Emel SOYLU ArĢ. Gör. Kadriye ÖZ Assembly Dili Assembly programlama dili, kullanılan bilgisayar
DetaylıELN1001 BİLGİSAYAR PROGRAMLAMA I
ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave
DetaylıÖrnek1: #include <iostream> #include <string> using namespace std;
BTEP243 Ders 5 Nesne İşaretçileri İşaretçiler, bildiğiniz gibi bir değişkenin bellekte tutuldukları yerin adresini tutarlar. Nesne işareçtileri konusundaki işaretçiler, nesnelerin bellek üzerinde bulundukları
DetaylıFortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir:
FORTRAN (FORmula TRANslation) Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir: 1 2...5 6 7...72 73...80 A B C D E A Bölgesi: (1. kolon) B Bölgesi: (2-5
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ı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ı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ıNESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 JAVA DA PROGRAM DENETİMİ VE OPERATÖRLER Java programlama dilinde temel tipleri ve nesneleri yönlendirmek ve değiştirmek için operatörler kullanılır. Atamalar sağ taraftaki
DetaylıDizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.
Diziler Dizi Nedir Ortak özelliğe sahip birden fazla bilginin oluşturduğu bütün bilgi kümelerine veya hafızada art arda sıralanmış aynı türden verilerin oluşturduğu yapıya dizi denir. Kısaca; Bellekte
DetaylıGörsel Programlama DERS 03. Görsel Programlama - Ders03/ 1
Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit
Detaylı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ıBMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1
BMT 101 Algoritma ve Programlama I 6. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Veri Tipleri Yük. Müh. Köksal Gündoğdu 2 Veri Tipleri Tam sayı ve Ondalık sayı veri tipleri Veri Tipi Alt Sınıf Üst Sınıf Duyarlı
DetaylıYrd. Doç. Dr. Caner ÖZCAN
Yrd. Doç. Dr. Caner ÖZCAN malloc Malloc fonksiyonu bir değişken için hafızadan bir blok yer ayrılması için kullanılır. Eğer hafızada yeterli alan yoksa fonksiyon NULL döndürür. int *ptr; ptr = (int *)
DetaylıC++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 6: Diziler İçerik Diziler Dizi Elemanlarına İlk Atama Diziler ve Fonksiyonlar İki Boyutlu Diziler İki Boyutlu Dizi Tanımı İki Boyutlu Dizi Elemanlarına Erişim
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ı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ı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ıC++ Göstericiler (Pointer)
C++ Göstericiler (Pointer) C++ Dilinde Gösterici(Poniter) İşlemleri Gösterici nedir? Bir değişkenin bellek adresini tutan değişkene gösterici denir. Yani, gösterici bir tür değişkendir ve başka bir değişkenin
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ıPASCAL PROGRAMLAMA DİLİ YAPISI
BÖLÜM 3 PASCAL PROGRAMLAMA DİLİ YAPISI 3.1. Giriş Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda verilmiştir. Program Başlığı; Tanımlama
DetaylıAlgoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi
Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip
DetaylıProgramlama Dilleri 1. Ders 5: Göstericiler
Programlama Dilleri 1 Ders 5: Göstericiler Değişkenlerin adresleri Bellekteki her değişkenin bir adresi ve bir de taşıdığı değeri vardır. int x=3; DEĞİŞKEN BELLEK ADRES 0 (0000) 1 2 3 4...... 65533 (FFFD)
DetaylıToplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.
www.csharpturk.net Türkiye nin C# Okulu Yazar Yunus Özen Eposta yunus@yunus.gen.tr Tarih 08.04.2006 Web http://www.yunusgen.tr ARİTMETİK OPERATÖRLER VE KULLANIM ŞEKİLLERİ Bilgisayarlar yapıları gereği,
DetaylıJAVADA DİZİ İŞLEMLERİ
JAVADA DİZİ İŞLEMLERİ Javada diziler nesnedirler, cdeki gibi hafızada yer kaplayan pointer değillerdir. Javada diziler, cye göre daha güvenilirdir. Dizilerin elemanlarına gelişigüzel değerler atayamazsınız.
DetaylıYZM 2105 Nesneye Yönelik Programlama
YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 2 C# Programlama Dili Elemanları Bu bölümde;
Detaylı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ıİNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ
İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ AD SOYAD : TESLİM TARİHİ : OKUL NO : TESLİM SÜRESİ : 2 hafta Ödev No : 7 ****(ilk 3 soru çıktı üzerinde el
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ı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ıBilgisayar Programlama MATLAB
Bilgisayar Programlama MATLAB Doç. Dr. Ġrfan KAYMAZ Matlab Ders Notları Konular: MATLAB ortamının tanıtımı Matlab sistemi (ara yüzey tanıtımı) a) Geliştirme ortamı b) Komut penceresi c) Başlatma penceresi
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ı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ıNesne Tabanlı Programlama
Nesne Tabanlı Programlama Ders Notu - 1 Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Değerler ve Değişkenler Values & Variables 2 1 Değişkenlerin Özellikleri Tipi
Detaylıİnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler
PHP de Dizi-Değişkenler, Nesneler Dizilerle ilgili örneklere geçmeden önce aşağıdaki tabloyu inceleyelim. Tabloda dizi kavramının mantığı açıklanmaktadır. Tablonun tamamını bir dizi olarak düşünün ve bu
DetaylıALGORİTMA VE PROGRAMLAMA II
ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Veri Hiyerarşisi Dosyalara Giriş
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ıNESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş
Özlem AYDIN NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü C DİLİNİN BİR ÜST-KÜMESİ OLARAK C++ Genel olarak, C de mevcut olan her şey C++ da da vardır. C dilinde
Detaylı2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI
2.2 Değişkenler Ve Sabitler 2.2.1 Değişkenler Değişkenler bir programlama dilinde verilerin depolanma alanlarını temsil eder. Tanımlanan her değişkene bellek bölgesinden bir alan ayrılır. Bu bellek bölgesine
DetaylıBTEP243 Ders 3. class Yazım Kuralı:
BTEP243 Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin
DetaylıDizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.
Diziler Dizi Nedir Ortak özelliğe sahip birden fazla bilginin oluşturduğu bütün bilgi kümelerine veya hafızada art arda sıralanmış aynı türden verilerin oluşturduğu yapıya dizi denir. Kısaca; Bellekte
DetaylıBirlik (Union) 1 Birlik (Union), enum, typedef
Birlik (Union) Union birden fazla alanı temsil eder ve o alana ait en uzun alanın büyüklüğü kadar hafızada yer ayrilir. union [birlik adi] { değişken türü ; değişken türü ;...
DetaylıEndüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları
2. Veri Tipleri Turbo Pascal bilgisayar programlama dili ile programlama yapabilmek için bilgisayara işlem yapacağımız verilerin tiplerini bildirmemiz gereklidir. Veri tipleri değişken olabileceği gibi
DetaylıNESNEYE YÖNELİK PROGRAMLAMA
NESNEYE YÖNELİK PROGRAMLAMA İŞARETÇİ ELEMANLI SINIFLAR REFERANSLAR OPERATÖRLERİN AŞIRI YÜKLENMESİ ATAMA OPERATÖRÜ Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü İşaretçi Elemanlı Sınıflar
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ıC PROGRAMLAMA D İ L İ
C PROGRAMLAMA DİLİ Diziler Dizi bir kümedir. Aynı tipteki verilere tek bir isimle erişmek için kullanılır. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe saklanır. Bu yüzden dizilere
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ıString ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü
String ve Karakter Dizileri #include Temel giriş çıkış akımları nesnelerinin tanımlandığı kütüphanedir. cin,cout,cerr,clog, wcin,wcout,wcerr,wclog nesneleri içerir. using namespace std; //std
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ıBMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler
BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin
DetaylıİLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı
İLERI MIKRODENETLEYICILER Ege Üniversitesi Ege MYO Mekatronik Programı EK-A IDE, Program Geliştirme Araçları Geliştirme Araçları Keil C51 Yazılımı Geliştirme Araçları ISIS Programı ISIS/Proteus programı:
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ıVeri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:
Veri Yapıları Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz İçindekiler: Giriş Temel Veri Yapıları Tanımlamalı Veri Yapıları Veri Modeli ve Türleri
Detaylı