Data types Flashcards
Data type nedir
Bir değişkenin değer aralığı ile üzerine etkiyen işlemlerin çeşitliliğini belirleyen kavram
Primitive data type nedir, nelerdir?
Çoğunlukla donanımın bir yansıması olan veritipleridir.
*Numerics
—Integer -> byte short int long…
—Complex -> j = (-1)^1/2 (python)
—Decimal -> sabit sayıda ondalık değer
—Floating point -> 1 8 23, 1 11 52
*Boolean ->True/False
*Character -> ASCII’ye uygun olarak 4 Byte kadar sayı saklar
Character String nedir
Karakterlerin bir araya gelmesi ile oluşan yapıdır.
İki problemi vardır, primitive olacaklar mı? Uzunlukları sabit mi olacak?
String primitive problemi
C,C++ not primitive
Snobol4 primitive
Java, String classı ile primitive
String uzunluk problemi
Cobol, Java ->Static
C, C++ -> Limited-Dynamic. /0 eklenir sonuna. Array uzunluğu tutmaz.
Snobol, Perl, Js->Dynamic
String işlemleri
Assign
Comparision,
Concat,
Copy,
Substring,
PatternMatch
String implementationu
<static>
CompilerTime Descriptor
name - address - length
<limited>
Runtime Descriptor
name - address - maxLength - currentLength
<dynamic>
Runtime Descriptor
name - address - currentLength
</dynamic></limited></static>
User-Defined ordinal types nedir
Ordinal type -> tamsayılarla ifade edilebilir değerleri olan yapılar. Mesela boolean -> 0,1
UserDefinedler -> Enumeration, Subrange
C enum örneği var arkada
enum Color {black, white}
Color mycolor = black;
mycolor++; (şimdi beyaz oldu)
Subrange (ada) örneği var arkada
type Days is {mon, tue, wed, thu, fri, sat, sun};
subtype weekend is Days range sat…sun;
Enumlar ve subrangeler memoryde nasıl saklanır
Enumlar int
subrangeler ne tipi ise ondan
Array nedir
Aynı tipte verilerin, ilk verinin adresine rölatif olarak adreslendiği veri tipi.
Array subscript nedir, türleri nedir
Subscriptleme ile indexleme aynı şey.
Fortran, C, Java sadece int alıyor
Pascal herhangi bir ordinal
Ada integer veya enum
Static array nedir
Derleme zamanında boyutu belirlenen, lifetimeı da program olan dizi
Fixed Stack-Dynamic array nedir
Bir subprogram altında oluşan, runtimeda boyutu belirlenen ve subprogram boyunca yaşayan dizi
Stack dynamic array nedir
Bir subprogram altında oluşan, runtimeda boyutu ve lifetimeı belirlenen dizi
Fixed Heap-Dynamic array nedir
Heap’e tahsis edilen ve boyutu runtimeda belirlenen dizi
Heap-Dynamic array nedir
Heap’e tahsis edilen ve boyutu ve lifetimeı runtimeda belirlenen dizi
Array adresleme fonksiyonu nedir
address(list[k]) = address(list[altsınır]) + ((k - altsınır)* eleman boyutu)
Multidimensional array adresleme fonksiyonu nedir
location(a[i,j]) = address(a[altRow,altCol]) + ((i-altRow)n + (j - altCol))eleman boyutu
n-> dizinin sütun sayısı
Record Type nedir
Birden fazla türde veriyi aynı anda bulundurabilen veri tipi
Arraylardan en büyük farkı nedir, avantajı nedir
Indexleme yerine direkt olarak record fieldların adı ile erişim sağlamaları. Hızı arttırır.
Cobol record örneği var
01 EMPLOYEE.
02 NAME.
04 FIRST PICTURE IS X(20).
04 LAST PICTURE IS X(20).
02 HOURLYRATE PICTURE IS 99V99.
9 SAYI, V . İŞARETİ, X HERHANGİ BİR KARAKTER
ERİŞİM YOLU FIRST OF NAME OF EMPLOYEE
Pascal record örneği var
type Employee=
record
name : array[1…20] of char;
experiment : integer;
end;
C örneği var
Struct Date{
int Day;
int Month;
int Year;
char* Date;}
Union Type nedir
Bir değişkenin farklı zamanlarda farklı tipe bağlanmasını sağlayan yapılardır.
Pascalda unionlar case eklenmiş recordlardır.
Union Type tipleri nelerdir
Discriminated -> Type Checking var ise
Free -> Type Checking yok ise
Pointer nedir
Memory adresleri ve nil değeri aralığında değer alabilen bir veri tipidir.
İlk olarak PL/I’da ortaya çıkmıştır.
*ptr (C, C++) veya ptr^ (Pascal)
int j = *ptr işlemi -> ptr’nin gösterdiği adresteki değeri j’ye ata.
Pointer problemleri nelerdir
Dangling problem -> Pointer, gösterdiği değer kaybolunca boşta kaldı.
Lost Heap Dynamic Variable -> Hiçbir pointerin artık göstermediği değer nerede bulamıyoruz.
C’de pointer gösterme örneği
Struct Yapı{int sayac;};
Struct Yapı yapı1;
Struct Yapı *ptr = &yapı1;
ptr->sayac
(**ptr).sayac değerleri yapı1’in sayacını döndürür
Pointer arithmetic örneği
float stuff[100];
float *ptr = stuff;
// *(ptr + x) = stuff[x] //
Referance nedir
C ve C++’da & operatörü değişkenin adresini döndürür.
Tombstone Pointer nedir
Bir cell’i bir tombstone gösterir, diğer pointerlar ise tombstoneu. Tombstone nil olunca diğerleri de nil olur.
Referance Collector
Referans sayısını tut, 0 olunca memory celli boşalt.
Garbage Collector
Belirli aralıklarla kontrol et, ref sayısı 0 ise boşalt.
Type Checking nedir
Bir operatorün operandlarının uygun tiplerde olması.
Name type compability nedir
Birbiri ile aynı ya da dönüştürülebilir tipte elemanlar
Struct type compability nedir
Aynı sırada aynı tür elemanlar içeren structlar