1 / 20

Birlikler ( Union )

Birlikler ( Union ). Birlikler Türetilmiş veri tipleridir.(Yapılar( struct ) gibi) Elemanları aynı depolama alanını kullanır. Kullanımı ile değişkenler için hafızayı boş yere işgal etmek yerine ayrılan alanı kullanır. Elemanları her tip olabilir.

mea
Download Presentation

Birlikler ( Union )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Birlikler (Union) • Birlikler • Türetilmiş veri tipleridir.(Yapılar(struct) gibi) • Elemanları aynı depolama alanını kullanır. • Kullanımı ile değişkenler için hafızayı boş yere işgal etmek yerine ayrılan alanı kullanır. • Elemanları her tip olabilir. • Depolayabilmek için en az ,birliğin en büyük elemanın byte sayısı kadar byte kullanılmalıdır. • Bir anda yalnız bir eleman bu sebeple de yalnızca bir veri tipi kullanılabilir. union sayi{ int x; double y; };

  2. Birlikler (Union) • Birliklerde yapılabilen işlemler • Aynı tipte başka bir birliğe atama • Adres alma(&) • Elemanlarına yapı elemanı operatörü ve yapı gösterici operatörü ile erişme • == ve != operatörleri ile karşılaştırılamaz.

  3. #include <stdio.h> #include <conio.h> union sayi { int x; double y; }; int main() { union sayi value; value.x = 100; printf( "%s\n%s\n%s%d\n%s%f\n\n", "Tamsayiuyesinebirsayikoyunn", "veikisinideyazdirin.", "int: ", value.x, "double:\n", value.y ); value.y = 100.0; printf( "%s\n%s\n%s%d\n%s%f\n", "Ondaliksayiuyesinebirsayikoyun", "veikisinideyazdirin.", "int: ", value.x, "double:\n", value.y ); getch(); return 0; }

  4. Bit Operatörleri

  5. Bit Operatörleri AND OR EXCLUSİVE OR

  6. Bit Operatörleri Şimdiye kadar görülen operatörlerin öncelikleri ve işleyişleri

  7. #include <stdio.h> #include <conio.h> void displayBits( unsigned ); int main() { unsigned x; printf( "Birtamsayigiriniz: " ); scanf( "%d", &x ); displayBits( x ); return 0; } void displayBits( unsigned value ) { unsigned c, displayMask = 1 << 31; printf( "%7u = ", value ); for ( c = 1; c <= 32; c++ ) { putchar( value & displayMask ? '1' : '0' ); displayMask >>= 1;} getch(); putchar( '\n' ); }

  8. #include <stdio.h> #include <conio.h> void displayBits( unsigned ); int main() { unsigned number1, number2, mask, setBits; number1 = 65535; mask = 1; printf( "Asagidakilerinbirlesmesisonucu:\n" ); displayBits( number1 ); displayBits( mask ); printf( "AND & kullanildiginda\n" ); displayBits( number1 & mask ); number1 = 15; setBits = 241; printf( "\nAsagidakilerinbirlesmesisonucu:\n" ); displayBits( number1 ); displayBits( setBits ); printf( "OR | kullanildiginda\n" ); displayBits( number1 | setBits ); number1 = 139; number2 = 199; printf( "\nAsagidakilerinbirlesmesisonucu\n" ); displayBits( number1 ); displayBits( number2 ); printf( "EXCLUSİVE OR ^ kullanildiginda\n" ); displayBits( number1 ^ number2 ); number1 = 21845; printf( "\nAsagidakininbitlerinegöretumleyeni\n" ); displayBits( number1 ); printf( "=\n" ); displayBits( ~number1 ); getch(); return 0; } void displayBits( unsigned value ) { unsigned c, displayMask = 1 << 31; printf( "%7u = ", value ); for ( c = 1; c <= 32; c++ ) { putchar( value & displayMask ? '1' : '0' ); displayMask >>= 1; if ( c % 8 == 0 ) putchar( ' ' ); } getch(); putchar( '\n' ); }

  9. #include <stdio.h> #include <conio.h> void displayBits( unsigned ); int main() { unsigned number1 = 960; printf( "\nAsagidakisayiyi\n" ); displayBits( number1 ); printf( "8 bit sola kaydirirsak\n " ); displayBits( number1 << 8 ); printf( "\nAsagidakisayiyi\n" ); displayBits( number1 ); printf( "8 bit saga kaydirirsak\n " ); displayBits( number1 >> 8 ); getch(); return 0; } void displayBits( unsigned value ) { unsigned c, displayMask = 1 << 31; printf( "%7u = ", value ); for ( c = 1; c <= 32; c++ ) { putchar( value & displayMask ? '1' : '0' ); displayMask >>= 1; if ( c % 8 == 0 ) putchar( ' ' ); } getch(); putchar( '\n' ); }

  10. Genel Programlama Hataları • OR operatörü yerine (|) mantıksal VEYA (||) operatörünü kullanmak • AND operatörü yerine (&) mantıksal VE(&&) operatörünü kullanmak • Bir değer kaydırırken eğer sağdaki operand negatif ise ya da sağdaki operandın soldaki operandın bit sayısından büyükse, kaydırma tanımsızdır.

  11. Bit Alanları C, bir birliğin ya da yapının unsignedya da intelemanlarının kaç bit içinde ( bit alanı olarak bilinir) depolanacağını belirlememize imkan tanır. Bit alanları, verileri gerekli en az sayıda bit içinde tutarak daha iyi bir hafıza kullanımı sağlar. Bit alanları intya da unsignedolarak bildirilir. structbitKart{ unsigned taraf :4; unsigned takim:2; unsigned renk :1; }; Bu tanımlama 52 kartlık bir desteyi temsil etmek için, 3 unsignedbit alanı ( taraf,takimve renk) içerir. Bir bit alanı, unsignedya da intbir eleman isminden sonra iki nokta üst üste( : ) ve alanın genişliğini belirten bir tamsayı sabiti ile (elemanın depolanacağı bit sayısını belirten bir sabit ile) bildirilir. Genişliği belirten sabit, 0 ile sisteminizde intdepolamak için kullanılan toplam bit sayısı arasında bir tamsayı olmak zorundadır.

  12. Sayma Sabitleri (Enumarations) • C, kullanıcı tarafından tanımlanabilen son veri tipi olan sayma tipini sunar. Bir sayma, enumanahtar kelimesiyle tanıtılır ve tanıtıcılar ile temsil edilen tamsayı sabitlerinin kümesidir. Bu sayma sabitleri, değerleri otomatik olarak belirlenen sembolik sabitlerdir. enumiçindeki değerler aksi belirtilmedikçe 0 ile başlar ve 1 arttırılır. enumaylar{OCA, SUB, MAR, NIS, MAY, HAZ, TEM, AGU, EYL, EKI, KAS, ARA}; • Bu sayma, tanıtıcıları 0 ile 11 arasında tamsayılar yapar. Ayları 1‘den 12‘ye kadar saydırmak için enum aylar{OCA = 1, SUB, MAR, NIS, MAY, HAZ, TEM, AGU,EYL, EKI, KAS, ARA};

  13. #include <stdio.h> #include <conio.h> enumaylar { OCA = 1, SUB, MAR, NIS, MAY, HAZ, TEM, AGU, EYL, EKI, KAS, ARA }; int main() { enumaylar ay; const char *ayisim[] = { "", "Ocak", "Subat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık" }; printf("Kacinciaydasiniz?"); scanf("%d",&ay); if(ay>=MAR && ay<=MAY) { printf("Ilkbaharmevsimindesiniz"); } else{ if(ay>=HAZ && ay<=AGU) { printf("Yazmevsimindesiniz"); } else { if(ay>=EYL && ay<=KAS) { printf("Sonbaharmevsimindesiniz"); } else printf("Kismevsimidir"); } } getch(); return 0; }

  14. Dosya İşlemeye Giriş • Veri dosyaları • C programları ile yaratılabilir, yenilenebilir ve işlenebilir. • Büyük miktarda veriyi kalıcı olarak tutmak için kullanılır. • Diziler ve değişkenlerde tutulan veriler geçicidir.

  15. Veri Hiyerarşisi • Bit (BinaryDigit - En küçük veri parçası • 0 veya 1 değeri alır. • Byte - 8 bit • Karakterler bitlerin değişik biçimde dizilişleri ile temsil edilir. (bu dizilişe byte denir.) Rakamlar, harfler ve özel semboller karakter olarak bilinir. • Alan - Karakterlerin anlam içerek şekilde dizilişidir. • Örneğin; yalnızca küçük ve büyük harflerden oluşan bir alan bir kişinin adının temsilinde kullanılabilir. • Kayıt - İlgili alanlar topluluğu • Struct(yapı) ile temsil edilir.(C’de) • Örneğin, bir bordro sisteminde bir işçi için tutulan kayıt şu alanları içerebilir: 1. Sosyal Güvenlik Numarası 2. İsim 3. Adres 4. Saatlik Ücret 5. Muaf olduğu haklar 6. Yıllık kazancı 7. Vergi miktarı • Dosya -İlgili kayıtlar topluluğu • Veri Tabanı - İlgili dosyalar topluluğu

  16. Veri Hiyerarşisi

  17. Veri Hiyerarşisi • Veri dosyaları • Kayıt Anahtarı • Bir kaydın bir kişiye ya da varlığa ait olduğunu belirler. • Sıralı Dosyalar • Kayıt anahtarının sırasına göre sıralanır.

  18. Dosya ve Akışlar (Stream) • C++ her dosyayıbyte serileri olarak görür. • Her dosya, bir dosya sonu işaretçisi (end-of-file marker) ile sonlanır. • Ya da dosya özel bir byte ile sonlanır. • Bir dosya açıldığında, bir nesne oluşturulur ve akış bu nesneyle ilişkilendirilir. • Bu nesneyle ilişkilendirilen akış (stream) program ile dosya veya cihaz arasında bir iletişim kanalı oluşturur. • Bir dosya açmak, dosyayı işlemek için gerekli FILE yapısını gösteren bir gösterici oluşturur. • Örneğin; • stdin– Standart Giriş (keyboard) • stdoutStandart Çıkış (screen) • stderr- Standart Hata (screen)

  19. Dosya ve Akışlar (Stream) • FILE yapısı • Dosya belirteci (file descriptor) • Açık dosya tablosu denilen işletim sistemi dizisi için dizin gösterir. • Dosya kontrol bloğu( file controlblock(FCB)) • İşletim sisteminin bir dosyayı yönetebilmesi için gereklidir. Her açık dosya tablosu dizi elemanı içerir. • C’nin n byte’lık bir dosyayı ele alışı.

  20. Dosya ve Akışlar (Stream) • Standart kütüphanede ki okuma/yazma fonksiyonları • fgetc • Dosyadan bir karakter okur. • FILE göstericisini bir argüman olarak alır. • fgetc( stdin),getchar() ile eşdeğerdir. • fputc • Dosyaya bir karakter yazar. • FILE göstericisini ve yazacağı karakteri argüman olarak alır. • fputc( 'a', stdout ),putchar( 'a' ) ile eşdeğerdir. • fgets • Dosyadan bir satır okur. • fputs • Dosyaya bir satır yazdırır. • fscanf / fprintf • f scanfveprintf’in dosya işleyen eşdeğerleridir.

More Related