Tür Takma Adları için typedef Kullanımı
Coddy'nin C Journey'sinin Logic & Flow bölümünün bir parçası. Ders 58 / 63.
C programlamada bazen, mevcut veri tipi adlarının ya çok uzun olduğu ya da programınızın amacını net bir şekilde ifade etmediği durumlarla karşılaşırsınız. typedef anahtar kelimesi, mevcut veri tipleri için yeni adlar oluşturmanıza olanak tanıyarak bir çözüm sunar.
typedef'i bir veri tipi için takma ad veya rumuz oluşturmak gibi düşünün. Temel sözdizimi basittir:
typedef existing_type new_name;Örneğin, int veri tipi için daha açıklayıcı bir isim oluşturabilirsiniz:
typedef int Integer;Bu bildirimden sonra, normalde int kullanacağınız her yerde Integer kullanabilirsiniz. Hem int count = 5; hem de Integer count = 5; tam olarak aynı şeyi gerçekleştirir, ancak ikinci sürüm belirli bağlamlarda daha anlamlı olabilir.
Bu özellik, karmaşık veri tipleriyle çalışırken veya kodunuzu daha fazla kendi kendini belgeleyen ve bakımı daha kolay hale getirmek istediğinizde özellikle değerli hale gelir.
Görev
KolayBir sıcaklık izleme sistemi için anlamlı tür takma adları oluşturmak üzere typedef kullanımını gösteren bir C programı oluşturun. Programınız şunları yapmalıdır:
typedefkullanarak aşağıdaki tür takma adlarını oluşturun:floatiçinTemperatureadında bir tür takma adı oluşturunintiçinSensorIDadında bir tür takma adı oluşturunintiçinStatusadında bir tür takma adı oluşturun
- Ana fonksiyonda (main function):
SensorIDtüründesensoradında bir değişken tanımlayınTemperaturetüründecurrentTempadında bir değişken tanımlayınTemperaturetüründethresholdadında bir değişken tanımlayınStatustüründealertStatusadında bir değişken tanımlayın- Girdiden şu sırayla dört değer okuyun: sensör ID, mevcut sıcaklık, eşik sıcaklığı ve uyarı durumu
- Bu girdi değerlerini ilgili değişkenlere atayın
- Sensör bilgilerini tam olarak şu formatta yazdırın:
Sensor ID: [sensor_id]Current Temperature: [current_temp]Threshold: [threshold_temp]Alert Status: [alert_status]
- Sıcaklık analizini gerçekleştirin ve sonuçları yazdırın:
- Sıcaklık farkını (mevcut sıcaklık eksi eşik) hesaplayın ve bunu
differenceadında birTemperaturedeğişkeninde saklayın - Farkı tam olarak şu formatta yazdırın:
Temperature Difference: [difference] - Mevcut sıcaklığa göre sıcaklık kategorisini belirleyin:
- Sıcaklık 0.0'ın altındaysa:
Category: Freezingyazdırın - Sıcaklık 0.0 ile 25.0 arasındaysa (dahil):
Category: Normalyazdırın - Sıcaklık 25.0'ın üzerindeyse:
Category: Hotyazdırın
- Sıcaklık 0.0'ın altındaysa:
- Bir uyarının tetiklenip tetiklenmeyeceğini kontrol edin:
- Mevcut sıcaklık eşikten büyükse VE uyarı durumu 1 ise:
Alert: Temperature exceeded threshold!yazdırın - Aksi takdirde:
Alert: No alert triggeredyazdırın
- Mevcut sıcaklık eşikten büyükse VE uyarı durumu 1 ise:
- Sıcaklık farkını (mevcut sıcaklık eksi eşik) hesaplayın ve bunu
Bu zorluk, typedef kullanımının kodu nasıl daha fazla kendi kendini belgeleyen ve anlaşılması daha kolay hale getirdiğini göstermektedir. Programınız boyunca int ve float gibi genel türler kullanmak yerine, her bir değişkenin amacını açıkça belirten SensorID, Temperature ve Status gibi anlamlı isimler kullanacaksınız. Bu yaklaşım kodun okunabilirliğini artırır ve programlarınızın bakımını ve değiştirilmesini kolaylaştırır.
Kendin dene
#include <stdio.h>
// TODO: Burada typedef takma adları oluşturun
int main() {
// TODO: Typedef takma adlarını kullanarak değişkenleri tanımlayın
// Giriş değerlerini oku
scanf("%d", &sensor);
scanf("%f", ¤tTemp);
scanf("%f", &threshold);
scanf("%d", &alertStatus);
// TODO: Sensör bilgilerini yazdırmak ve analiz yapmak için kodunuzu aşağıya yazın
return 0;
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Logic & Flow bölümündeki tüm dersler
1Pointer Temelleri
Pointer Nedir?Pointer TanımlamaAdres Operatörü (&)Dereference Operatörü (*)NULL Pointer'larÖzet: Pointer Temelleri4Proje: Basit Metin Aracı
Projeye Genel BakışKarakter Sayma7Yapılar (structs)
Struct Nedir?Struct TanımlamaStruct Değişkenleri OluşturmaStruct Üyelerine ErişmeStruct BaşlatmaÖzet: Öğrenci Verisi Struct'ı10Enum'lar ve Typedef
İsimlendirilmiş Sabitler için enumEnum Tanımlama ve KullanmaSwitch İfadelerinde Enum KullanımıTür Takma Adları için typedef KullanımıStruct'lar ile typedef KullanımıÖzet: Typedef ve Enum Pratiği2İşaretçiler ve Diziler
İşaretçi Olarak Dizi İsimleriDizi Elemanları - İşaretçilerİşaretçi Aritmetiğiİşaretçilerin KarşılaştırılmasıÖzet: İşaretçi ile Dizi Gezinme5İşaretçiler ve Fonksiyonlar
Değer ile GeçmeFonksiyonlara İşaretçi Göndermeİşaretçiler ile Değişkenleri DeğiştirmeKlasik Bir Örnek: SwapFonksiyonlara Dizi GöndermeÖzet: Fonksiyon İşaretçi Argümanları8Yapılar ve İşaretçiler
Yapılara İşaretçilerOk Operatörü (->)Yapıları Değer ile AktarmaYapı İşaretçilerini AktarmaYapıların Dinamik TahsisiÖzet: Yapıyı Değiştirme - Ptr11Son Tekrar Görevleri
Tekrar: Dinamik String BirleştirmeTekrar: Struct DizisiTekrar: Kelime Frekans Sayacı3Karakter Dizileri ve Stringler
char Dizisi Olarak StringlerNull Sonlandırıcıscanf ile String Girişistrlen() Kullanımıstrcpy() Kullanımıstrcat() Kullanımıstrcmp() KullanımıÖzet: Temel String FonksiyonlarıKendi başına pratik yap: Online C derleyicisi