Merhaba ve hoş geldiniz.
Veri türleri hakkındaki tartışmamıza devam edelim ve birkaç tanesinden daha bahsedelim.
Bu derste, enum veri türü ve char care veri türü hakkında konuşacağız.
Yani düşman öğeleri, programcının bir değişken tanımlamasına ve bu değişkende saklanabilecek geçerli değerleri belirtmesine
olanak tanıyan bir veri türüdür.
Yani bir enum çok güçlüdür.
Aslında bir veri türü belirtiyor.
Enum anahtar sözcüğüdür, ancak temel olarak yalnızca belirli değerleri içeren kendi veri türünüze sahip olabilirsiniz.
Örneğin, rengim adında bir değişken oluşturabilir ve belirli bir enum türündeyse, bunu yalnızca kırmızı,
sarı veya mavi gibi ana renkleri içerecek veya yalnızca bunlara değer atanabilecek şekilde ayarlayabilir ve
ardından başka hiçbir değer atanamaz.
Derleyici size bir hata verecektir.
Bu, oluşturabileceğinizi belirtebileceğiniz bir veri türü gibidir, ancak bu nedenle veri türünü tanımlamanız
ve ardından bu türde değişkenler oluşturmanız gerekecektir.
Yani bir enum anahtar kelimedir.
Dolayısıyla, bu enum veri türünü kullanmak istiyorsanız yapmanız gereken ilk şey, bu enum türünü
tanımlamak ve ona bir isim vermektir, sadece bir tanımlayıcı, tıpkı bir değişken adı gibi.
Bunu yapmanın yolu, enum anahtar sözcüğünü kullanmak ve enum anahtar sözcüğünden sonra bir
tanımlayıcı gibi bir ad sağlamaktır.
Tanımlayıcıdan sonra, tüm geçerli değerler listesini küme parantezlerinin içine koyacaksınız.
Ve temel olarak bu enumun yalnızca bu değerler olabileceğini söylüyorsunuz.
Ve daha sonra enumu kullanmak istediğinizde, enum türünde bir değişken oluşturduğunuzu bildirirsiniz.
Şimdi bunu iş başında görelim.
Burada, birincil renk adında bir enum türü tanımlıyorum.
Yani enum anahtar sözcüğüne sahibim ve ardından enum'umun adı olan birincil renge sahibim
ve ardından bu tür için tüm değerleri tanımlıyorum.
Sol ve sağ küme parantezlerinin küme parantezleri içine alındığını göreceksiniz.
Bu durumda, yalnızca kırmızı, sarı ve mavi değerlerini tutabilen Birincil Renk adlı bir enum türüne sahibiz.
Ve birincil renge bir değer atamaya çalışırsanız başka bir şey depolayamaz veya birincil renk veri türünü kullanmaya çalışırsanız
ve başka bir şeye değişken bir değer atamaya çalışırsanız çalışmaz.
Yani biz bunu böyle tanımlıyoruz.
Önce enumu tanımlamalıyız, sonra tekrar kullanmalıyız.
Tanım sadece bunun böyle olduğunu söylüyor.
Ve burada gördüğümüz şey, beyaz renkte bir ana renge sahip olduğumuzdur.
Kırmızı, sarı ve mavi olabilir.
Dolayısıyla, birincil renk türü olarak bildirilen değişkenlere yalnızca kırmızı, sarı ve mavi değerleri atanabilir.
Programın içinde başka hiçbir değer çalışmayacaktır.
Yani yine, onu tanımlayan ilk adım.
İkinci adım ise onu kullanmaktır.
Dolayısıyla, bunu tanımladıktan sonra, bu türden bir değişkeni birincil renk olarak bildirebiliriz.
Şimdi değişken hala enum anahtar sözcüğünü kullanıyoruz.
Bu durumda, tanımlarken belirttiğimiz enum'un adına sahip oluruz.
Ve en sonunda, bunu bir değişken listesi ile takip ediyoruz.
İşte bir örnek, enum anahtar sözcüğünü kullanıyoruz, kullanmak istediğimiz enum'un adına sahibiz, bu da
az önce oluşturduğumuz Primary Color adlı enum'dur.
Ve sonra sadece isimlerimiz var.
Yani burada ana renk türünde iki düşmanımız var.
Greg'in renginde benim rengim.
İşte yine enum kullandığımız yer burası.
Enumun ne olabileceğini zaten tanımladık, sadece kırmızı, sarı veya mavi.
Şimdi de my color ve gray color adında iki değişkenimiz olduğunu ve bu değişkenlerin yalnızca bu üç değerden birini içerebileceğini,
başka hiçbir şey içeremeyeceğini söylüyoruz.
Burada bir değişken, bir ana renk bildiriyoruz.
Ve yine bu, benim rengim ve Gray'in rengi olmak üzere iki değişkeni birincil renk türünde tanımlıyor.
Bir enum türü olan bu değişkenlere yalnızca izin verilen değerler atanabilir.
Bu iki değişken kırmızı, sarı ve mavidir.
Yani benim rengim kırmızıya eşittir diyebiliriz.
Ve bu tamamen geçerli.
Benim rengim eşittir yeşil diyemeyiz.
Bu işe yaramayacaktır çünkü bu değerler enum türü için geçerli değildir.
Benim rengim Jason'a eşittir diyemeyiz çünkü benim rengim birincil renk enum türünde yalnızca
üç değer içerebilir.
Dolayısıyla bu çok güçlü bir veri türüdür çünkü aslında yalnızca belirli değerleri içerebilen kendi veri
türlerinizi tanımlıyorsunuz.
Başka bir örnek olarak, ay türünde bir enum oluşturursak ve burada ayın yalnızca Ocak, Şubat, Mart, Nisan, Mayıs, Haziran,
Temmuz, Ağustos'a eşit olabileceğini söylersek.
Şubat, Ekim, Kasım, Aralık.
Tekrar ediyorum, tanım budur.
Burası geçerli değerlerin ne olduğunu söylediğimiz yerdir.
Eğer month kullanacak olsaydık, Enum Month adında bir değişken yaratırdık ve sonra ona ne isim vermek isterseniz
onu verirdik.
Ve sonra bu isme Ocak'tan Aralık'a kadar geçerli olan aylardan herhangi birini atayabiliriz.
Ve bir enum bu şekilde kullanılır.
Şimdi C programlama dilinde gelirlerin nasıl uygulandığına gelince, gerçekten sayılarla mı
temsil ediliyor?
Yani derleyici aslında numaralandırma tanımlayıcılarını tamsayı sabitleri olarak ele alır.
Dolayısıyla, listede tanımladığınız ilk adın değerini yazdırmaya çalışırsanız, bu sıfır
olacaktır.
Tüm bunlar nasıl tanımlandıkları sorusunu tekrar soruyor.
Çıktıyı görüntüleyecek olsaydınız, gerçek değerler ne olurdu?
Bunun anlamı, bir ayımız varsa, bu ay, enum month türünde yeni bir değişken oluşturduk ve sonra bu
ayın Şubat'a eşit olduğunu söyledik.
Bu ay aslında bir tam sayıya eşit olacak.
Ancak yine de bunu karşılaştırabilir ve Şubat ayıyla kıyaslamak için kullanabiliriz.
Ancak bu ayı konsola yazdıracak olsaydınız, bu ay aslında listede tanımlandığı zamana karşılık
gelen bir tamsayı değeri olurdu.
Yani bu durumda Şubat ayı bir olacaktır.
Çünkü bu ay enum'unda listedeki ikinci ay Şubat'tır.
Değil mi?
Eğer geriye dönersek, bunu ne zaman tanımladığımızı hatırlarsanız, ikincisi Şubat ayıdır.
Ve ikinci olmasına rağmen bir tane olduğunu fark etmelisiniz.
Çünkü bunun anlamı liste başlangıçlarının sıfır olduğudur.
Yani Ocak ayı sıfır, Şubat ayı bir, Mart ayı iki ve bu şekilde devam eder.
Ve bu önemlidir çünkü daha sonra Şubat ayı gibi gerçek değerlerle karşılaştırabilirsiniz.
Şimdi, numaralandırma tanımlayıcısıyla ilişkili belirli bir tamsayı değerine sahip olmak istiyorsanız,
atama operatörünü kullanarak açıkça bir şey atayabilirsiniz.
Türü gerçekten tanımladığınızda.
Örneğin, burada, direction türünde yeni bir enum tanımlarsak ve direction için geçerli değerlerin yukarı,
aşağı, sol ve sağ olduğunu söylersek, üçüncü değer olan left'in aslında left'in ona eşit olacağını
söyleyen bir equals değerine sahip olduğunu göreceksiniz.
Bu durumda, enum tipimiz direction yukarı, aşağı, sol ve sağ değerleriyle tanımlanır.
Bunlar atayabileceğiniz tek geçerli değerlerdir.
Bu türdeki değişkenler, liste tanımındaki ilk öğe olduğu için sıfıra eşit olacaktır.
Bir, ikinci unsur olduğu için aşağıya eşit olacaktır.
Yine sıfırdan başlar.
On, sola eşit olacak.
İkiye eşit olmayacaktır çünkü açıkça ona eşit olarak atadık.
Yani sol on olacak çünkü tanımımıza bunu koyduk.
Ve sonra sağ 11'e eşit olacak çünkü hemen ondan sonraki olacak,
bir sonraki olacak.
Yani başka bir değerimiz olsaydı 12 olacaktı.
Böylece isterseniz değerleri açıkça atayabilirsiniz.
Ancak yine de bunun önemli olmasının nedeni, karşılaştırma yaptığınızda veya değerleri yazdırdığınızda,
genomların aslında sistem içinde tam sayı olarak temsil edildiğini bilmeniz gerektiğidir.
Ancak, enum'unuzu işaretlediğinizde, bu değerleri başka bir değerle karşılaştırdığınızda,
Ocak, Şubat, Mart'ı kullanabilirsiniz, bu güzel isimleri kullanmanıza hala
izin verir.
Bu nedenle, düşmanlara biraz daha aşina olabilmeniz için küçük bir ödev veya meydan okuma
yapacağız.
Ancak burada önemli olan nokta, bir enum türünü nasıl oluşturabileceğinizdir?
Ve sonra bu türde değişkenleri nasıl oluşturabilir ve değer atayabilirsiniz?
Ve yine güzel çünkü neyin atanacağını kontrol edebiliyorsunuz.
Yön atanmasını istemiyorsanız, bilirsiniz, sağ köşe, sadece yukarı, aşağı, sol ve sağı tanımlarsınız.
Tartışmak istediğim bir diğer önemli veri türü de nasıl telaffuz ettiğinize bağlı olarak CHA veya care'dir.
Esas olarak sayısal veri türleri hakkında konuştuk.
Şimdi enum hakkında konuştuk.
Char, L a harfi gibi tek bir karakteri temsil eder.
Rakam karakteri altı veya noktalı virgül.
Ve burada gördüğünüz tek tırnak işaretidir.
Bir sayı olmasına rağmen karakterlerini bilmemizin nedeni tek tırnak içinde olmasıdır.
Dolayısıyla, bir programda tek tırnak içindeki her şey karakter veri türü olarak adlandırılır.
Ve tipik olarak karakterler ABCD, FG gibi alfanümerik karakterler olacaktır, ancak yine de gerçek
sayılar veya klavyedeki diğer karakterler olabilirler.
Ayrıca karakter değişkenlerini işaretsiz olarak da bildirebilirsiniz.
İşaretsiz olması sadece negatif olamayacakları anlamına gelir.
Bu yüzden pek bir anlam ifade etmiyor.
Ancak, işaretsiz bir karaktere sahip olduğunuzda derleyiciye söylediği şey, bunun yalnızca pozitif bir sayı olduğudur,
çünkü unutmayın, karakterler ASCII tablosunda sayı olarak da gösterilebilir.
Bu konuyu birazdan konuşacağız.
Ancak karakter veri türünü karakter dizeleriyle karıştırmak istemeyeceğinizden de bahsedeceğiz.
Bir karakter veri türü, tek tırnak içinde sadece tek bir karakterdir.
Teller hakkında konuşacağımız başka bir bölümümüz daha var.
Bu bir karakter dizisi, bir karakter sayısı olacaktır.
Bu yüzden karakter veya karakteri karakter, dize veya dize ile karıştırmayın.
Bir karakter bildirmek ve onu kullanmak istiyorsanız, veri türünü, char veya care ve ardından tanımlayıcıyı
belirtebilirsiniz.
Yani bu örnekte, kömürde kızarttık.
Bu, char türünde broiled adında bir değişken bildirmektir.
Bu değişkene atama yaptığımızda, onu koyarız.
Değeri tek tırnak içine alıyoruz.
Yani ızgara eşittir t gayet iyi.
Kaynatılmış eşittir çay demeye çalışırsak ve çay tırnak içinde değilse, bu doğru değildir çünkü çay bir değişkendir.
RT de char türünde olmadığı sürece bu geçerli olmayacaktır.
Burada kraliyet eşittir çift tırnak işaretimiz var.
T Yine, bu geçerli değildir çünkü çift tırnak ve C bunun bir dize olduğu anlamına gelir, bu konu hakkında daha fazla konuşacağız, ancak
bu geçerli değildir.
Dolayısıyla, bu tek tırnak işaretlerini atlarsanız, derleyici T'nin bir değişken adı olduğunu düşünecek
ve çalışmayacaktır.
Çift tırnak kullanırsanız, bir dize kullandığınızı düşünecektir.
Bahsettiğim gibi, karakterlere değer atamak için sayısal kodlar da kullanabilirsiniz ve o sadece ASCII
tablosunu kullanacaktır.
Yani ASCII tablosu, karakterlerin bilgisayarda sayı olarak nasıl temsil edildiğidir.
Yani bütün bu masa var.
Ve temel olarak bir karakter türüne bir sayı atarsanız, ASCII değerini atadığınızı düşünecektir.
Yani yapacağı şey, 65'e not vermek olacak.
ASCII tablosunda 65'e bakacak ve bu, hangi karakterse onun eşdeğeri olacaktır.
Ve bu karakterin ne olduğunu görmek için ASCII tablosuna bakmanız gerekir.
Ama B'nin 48 yaşında olduğunu biliyorum.
Yani yine, bilgisayarın belirli karakterleri sayılarla temsil etme şekli budur.
Yani karakterlere sayı atayamazsınız, sadece ASCII tablosunda ne olduklarına bağlı olarak tek karakterlere
dönüştürüleceklerdir.
Kaçış karakterleri.
Bu, temelde bir eylemi ve C programlama dilini temsil eden özel bir karakter olduğu hakkında
duyacağınız özel bir terimdir.
Örneğin, bir arka boşluğu temsil eden özel bir karaktere veya yeni satırı temsil eden özel bir karaktere
sahip olabilirsiniz.
Ya da Terminal Zili halkasını temsil eden özel bir karakter.
Ve bu eylemleri tek tırnak içindeki bir karakter gibi temelde garip bir sembol kullanarak temsil edebilirsiniz.
Size bazı örnekler vereceğim.
Bunlara kaçış dizileri de denir.
Bunlar eylemleri temsil eden özel karakterlerdir.
Dolayısıyla kaçış dizileri de bir karakter değişkenine atandıklarında tek tırnak içine alınır.
Bir eylemi temsil etmek için bu kaçış dizilerini dizelerin içinde de sık sık görürsünüz.
Örneğin, burada x karakteri tek tırnak ters eğik çizgi n'ye eşittir.
Ve kaçış karakterlerinin çoğunun ters eğik çizgi ile başladığını fark edeceksiniz.
Ancak ters eğik çizgi sonu tek bir karakterdir ve biraz garip görünür.
Bir programda temsil ettiği şey, yeni bir satırı temsil etmesidir.
Dolayısıyla, bu karakteri çıktı olarak yazdırmaya çalışırsanız, aslında ters bölü n'yi yazdırmaz,
yeni bir satır yazdırır.
Yeni bir çizgi göreceksiniz.
Çıktısını al.
Yani Char X bu karakteri temsil edecektir.
Ve eğer x değişkenini yazdırırsanız, bu sadece bir sonraki satırı ilerletir.
Ve bir dizi farklı kaçış dizisi var.
İşte size bir denizcilik kitabından aldığım ve eylemleri temsil eden tüm kaçış karakterlerini
gösteren küçük bir tablo.
Ters eğik çizgiden bahsetmiştik.
Bu yeni bir çizgi.
Backslash.
R Satır başıdır.
Ters eğik çizgi V dikey bir sekmedir.
Ters eğik çizgi T'nin yatay bir sekme olduğunu düşünüyorum.
Şimdi size bununla ilgili bazı örnekler vereyim ve ayrıca güzel kod blokları editörümüzün içinde Enum ile ilgili bazı örnekler
vereyim.
Burada ana metodumuz ve bir enum ile tanıdık bir programımız var.
Yine, bir enum güzeldir çünkü ona hangi değerlerin atanacağına siz karar verebilirsiniz.
Ama iki adım var.
Bir enum oluşturduğunuzda, türü tanımlamanız ve ardından bu türde bir değişken oluşturmanız
gerekir.
Ve her ikisi için de enum anahtar sözcüğünü kullanırsınız.
Dolayısıyla, yeni bir enum türü oluşturmak ve bu enumu bazı değerlere eşit olacak şekilde a olarak
adlandırmak istersem, örneğin a türünde bir enum oluşturabilirim.
Enum tipi cinsiyet, enum cinsiyetini görüyoruz.
Ve sonra tek yapacağımız şey arkayı, dalgalı braketi kullanmak.
Köşeli parantezli dalgalı parantez ile karıştırılmamalıdır.
Ve daha sonra cinsiyetin olabileceği değerlerin listesini tanımladık.
Temel olarak, sadece bir erkek olabilir ve sonra virgülle ayırırız ve sonra bir kadın ve sonra noktalı virgülle
bitiririz.
Bu da toplumsal cinsiyet adında yeni bir türümüz olduğunu gösteriyor.
Bu bir enum türüdür.
Ve bu tür değişkenlere atanabilecek tek değerler erkek ve dişidir.
Bu enumu kullanmak istiyorsak yeni bir değişken oluşturabiliriz.
Cinsiyet türünün adını enum olarak söylememiz yeterlidir.
Ve sonra sadece benim, benim cinsiyetim diyebiliriz.
Değil mi?
Ve değişkeni bu şekilde bildiriyoruz.
Cinsiyetim değişkenini bildirdik, ancak herhangi bir değer atamadık veya başlatmadık.
Ona atayabileceğimiz tek değer erkek ya da kadındır.
Yani benim cinsiyetim eşittir erkek diyebiliriz ve bu geçerlidir.
Ve eğer gidip derlersek.
Bu iyi olur.
Hiç hata yok.
Ve eğer başka bir şey atamaya çalışırsak, örneğin sadece bir dize atamak istediğimizi söyleyelim,
44 sayısını atamak istediğimizi söylemeyi deneyelim.
Şimdi, eğer bunu inşa etmeye çalışırsak.
Bir int olduğu için hatasız bir şekilde oluşturulduğunu göreceksiniz.
Ancak bunu ipe ya da başka bir şeye koymaya çalışırsak daha değerli olur.
Atama yaparken uyumsuz tipler diyecektir.
Yani burada bir hata var.
Görmek oldukça zor.
Ancak temel olarak, burada bir dize atamamıza izin verilmiyor.
Çünkü doğru tip 44 değil.
Sadece erkek veya kadın olarak imzalayabilirsiniz.
Ve yine, bunun tamsayılar cinsinden neyi temsil ettiğini görmeye çalışırsak, yazabiliriz,
erkek diyebiliriz.
Daha sonra bunu diğer değişkenlerle karşılaştırabiliriz, böylece başka bir cinsiyete ait başka bir enum cinsiyet türü oluşturabiliriz.
Burada her zaman iyi adlandırma kuralları kullanmak istersiniz.
Doğru hecelediğimizden emin ol.
İşte o zaman dişi Tanrı diyebiliriz ve sonra aslında görmek için bir boolean değeri oluştur diyebiliriz.
Doğru veya yanlış bool erkektir diyebilir ve bunun erkek eşittir dişi olacağını söyleyebiliriz.
Özür dilerim, erkek eşittir kadın değil, cinsiyetim eşittir.
Başka bir cinsiyet ve bu aslında yanlış dönecektir çünkü cinsiyetim başka bir cinsiyete eşit değildir.
Cinsiyetim erkeğe eşittir, başka bir cinsiyet başarısız kadına eşittir üzgünüm ve erkektir yanlış bir değere
veya sıfır değere ayarlanacaktır.
Düşmanların değerlerini yazdırarak da görebiliriz.
Ve fark edeceğimiz şey, enum cinsiyetinin değerini yazdıracak olsaydık, ki henüz değişkenleri nasıl yazdıracağımızı
öğrenmedik, ancak print f gibi bir şey yapabiliriz, cinsiyetin, cinsiyetimin aslında sıfıra eşit olacağını
fark ederdik çünkü bu listedeki ilk değerdir.
Başka bir cinsiyet bir cinsiyete eşit olacak.
Bu çok güzel.
Örneklerimizde karakterler hakkında da biraz konuşmak istiyorum, unutmayın.
Değişken isimleri ile tek karakterler oluşturabiliriz.
Sadece char türünü kullanırız ve sonra Char, benim karakterim gibi bir şey söyleriz ve tek tırnak içinde herhangi bir şeye eşitleyebiliriz.
Tabloda ASCII sayılarını temsil edecek değişkenleri işaretleyebileceğimiz her neyse j f olabilir.
Ancak bunun güzel yanı, ters eğik çizgi n gibi belirli eylemleri temsil eden kaçış karakterleri atayabilmenizdir.
Bunu kullanmaya ya da yazdırmaya çalışırsak, yeni bir satır beslemesi yazdırır, böylece bir
print f yapabiliriz ve print F diyebiliriz, bir sonraki dersimizde bahsedeceğimiz yüzde C gibi bir şey yapmamız
ve ardından karakterimi yazdırmamız gerekir.
Ve bu aslında ekrana yeni bir satır, sadece bir satır beslemesi gösterecektir.
Yani eğer bunu inşa edersek.
Ve bunu yürütmeliyiz.
Aslında çıktı olarak göreceğimiz şey sadece yeni satırdır.
Yani yukarıda görüyorsunuz.
Orada yeni bir hat var.
Yani belirli bir eylem.
Herhangi bir çıktı almıyorsunuz.
Ancak bununla ilgili daha fazla örnek üzerinden gideceğiz.
Burada göstermeye çalıştığım şey, bir enum ve karakterler ve kaçış dizileri, kaçış karakterleri ile ilgili bu güzel
kavramdır.
Bu tür şeylerin çoğunu öğrenmenin harika bir yolu, ID'nin içinde kod yazarak oynamak ve ne yaptığını
görmektir.
Ancak bunu tamamlamak için, değerlendirmenize de yardımcı olacak bazı zorluklar sunacağım.
Umarım yardımcı olmuştur.
Teşekkür ederim.