Menu
Coddy logo textTech

Использование typedef для псевдонимов типов

Часть раздела Logic & Flow путешествия по C на Coddy. Урок 58 из 63.

Иногда в программировании на C вы будете сталкиваться с ситуациями, когда существующие имена типов данных либо слишком многословны, либо нечетко выражают намерения вашей программы. Ключевое слово typedef предлагает решение, позволяя создавать новые имена для существующих типов данных.

Представьте, что typedef — это создание псевдонима или сокращенного имени для типа данных. Базовый синтаксис прост:

typedef existing_type new_name;

Например, вы можете создать более описательное имя для типа данных int:

typedef int Integer;

После этого объявления вы можете использовать Integer везде, где вы обычно используете int. Как int count = 5;, так и Integer count = 5; выполняют абсолютно одно и то же, но вторая версия может быть более осмысленной в определенных контекстах.

Эта возможность становится особенно ценной при работе со сложными типами данных или когда вы хотите сделать свой код более самодокументированным и простым в поддержке.

challenge icon

Задание

Легко

Создайте программу на языке C, которая демонстрирует использование typedef для создания осмысленных псевдонимов типов для системы мониторинга температуры. Ваша программа должна:

  1. Создать следующие псевдонимы типов с помощью typedef:
    • Создать псевдоним типа Temperature для float
    • Создать псевдоним типа SensorID для int
    • Создать псевдоним типа Status для int
  2. В функции main:
    • Объявить переменную типа SensorID с именем sensor
    • Объявить переменную типа Temperature с именем currentTemp
    • Объявить переменную типа Temperature с именем threshold
    • Объявить переменную типа Status с именем alertStatus
    • Считать четыре значения из входных данных в следующем порядке: ID датчика, текущая температура, пороговая температура и статус оповещения
    • Присвоить эти входные значения соответствующим переменным
    • Вывести информацию о датчике в точно таком формате:
      • Sensor ID: [sensor_id]
      • Current Temperature: [current_temp]
      • Threshold: [threshold_temp]
      • Alert Status: [alert_status]
    • Выполнить анализ температуры и вывести результаты:
      • Вычислить разницу температур (текущая температура минус пороговая) и сохранить ее в переменной типа Temperature с именем difference
      • Вывести разницу в точно таком формате: Temperature Difference: [difference]
      • Определить категорию температуры на основе текущей температуры:
        • Если температура ниже 0.0: вывести Category: Freezing
        • Если температура находится в диапазоне от 0.0 до 25.0 (включительно): вывести Category: Normal
        • Если температура выше 25.0: вывести Category: Hot
      • Проверить, должно ли быть срабатывание оповещения:
        • Если текущая температура больше пороговой И статус оповещения равен 1: вывести Alert: Temperature exceeded threshold!
        • В противном случае: вывести Alert: No alert triggered

Эта задача демонстрирует, как typedef делает код более самодокументированным и понятным. Вместо использования общих типов, таких как int и float, во всей программе, вы будете использовать осмысленные имена, такие как SensorID, Temperature и Status, которые четко указывают на назначение каждой переменной. Такой подход улучшает читаемость кода и облегчает его поддержку и модификацию.

Попробуйте сами

#include <stdio.h>

// TODO: Создайте здесь псевдонимы typedef

int main() {
    // TODO: Объявите переменные, используя псевдонимы typedef
    
    // Чтение входных значений
    scanf("%d", &sensor);
    scanf("%f", &currentTemp);
    scanf("%f", &threshold);
    scanf("%d", &alertStatus);
    
    // TODO: Напишите ниже свой код для вывода информации о датчике и выполнения анализа
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Logic & Flow

Потренируйтесь самостоятельно: Онлайн-компилятор C