Интерактивные примеры

Практические демонстрации работы разветвляющихся алгоритмов

🔢 Пример 1: Определение четности числа

function checkParity(number) {
    if (number % 2 === 0) {
        return "Число " + number + " - четное";
    } else {
        return "Число " + number + " - нечетное";
    }
}

📊 Пример 2: Калькулятор оценок

function calculateGrade(score) {
    let grade, comment;
    
    if (score < 0 || score > 100) {
        return "Ошибка: некорректные баллы";
    } else if (score >= 90) {
        grade = "5 (отлично)";
        comment = "Превосходный результат!";
    } else if (score >= 75) {
        grade = "4 (хорошо)";
        comment = "Хороший результат!";
    } else if (score >= 60) {
        grade = "3 (удовлетворительно)";
        comment = "Удовлетворительный результат";
    } else {
        grade = "2 (неудовлетворительно)";
        comment = "Требуется дополнительная подготовка";
    }
    
    return `Оценка: ${grade}\n${comment}`;
}

🔀 Пример 3: Определение возрастной категории

function determineAgeCategory(age) {
    if (age < 0) {
        return "Ошибка: возраст не может быть отрицательным";
    } else if (age <= 12) {
        return "Ребенок (0-12 лет)";
    } else if (age <= 17) {
        return "Подросток (13-17 лет)";
    } else if (age <= 25) {
        return "Молодой человек (18-25 лет)";
    } else if (age <= 60) {
        return "Взрослый (26-60 лет)";
    } else {
        return "Пожилой человек (60+ лет)";
    }
}

📐 Пример 4: Проверка треугольника

function checkTriangle(a, b, c) {
    // Проверка на положительность сторон
    if (a <= 0 || b <= 0 || c <= 0) {
        return "Стороны должны быть положительными!";
    }
    
    // Проверка существования треугольника
    if (a + b > c && a + c > b && b + c > a) {
        let type = "";
        
        // Определение типа треугольника
        if (a === b && b === c) {
            type = "Равносторонний";
        } else if (a === b || b === c || a === c) {
            type = "Равнобедренный";
        } else {
            type = "Разносторонний";
        }
        
        // Проверка на прямоугольный треугольник
        let sides = [a, b, c].sort((x, y) => x - y);
        if (Math.abs(sides[2]**2 - (sides[0]**2 + sides[1]**2)) < 0.01) {
            type += " прямоугольный";
        }
        
        return `Треугольник существует! Тип: ${type}`;
    } else {
        return "Треугольник не существует!";
    }
}

🎮 Пример 5: Камень-Ножницы-Бумага

function playGame(playerChoice) {
    const choices = ["", "Камень", "Ножницы", "Бумага"];
    const computerChoice = Math.floor(Math.random() * 3) + 1;
    
    let result = `Вы: ${choices[playerChoice]}\n`;
    result += `Компьютер: ${choices[computerChoice]}\n\n`;
    
    if (playerChoice === computerChoice) {
        result += "Результат: НИЧЬЯ!";
    } else if (
        (playerChoice === 1 && computerChoice === 2) ||
        (playerChoice === 2 && computerChoice === 3) ||
        (playerChoice === 3 && computerChoice === 1)
    ) {
        result += "Результат: ВЫ ПОБЕДИЛИ! 🎉";
    } else {
        result += "Результат: ВЫ ПРОИГРАЛИ! 😢";
    }
    
    return result;
}

💰 Пример 6: Налоговый калькулятор

function calculateTax(income) {
    let tax = 0;
    let bracket = "";
    
    if (income <= 0) {
        return "Доход должен быть положительным!";
    } else if (income <= 500000) {
        tax = income * 0.13;
        bracket = "13% (базовая ставка)";
    } else if (income <= 1000000) {
        tax = 500000 * 0.13 + (income - 500000) * 0.15;
        bracket = "13% до 500к + 15% свыше";
    } else if (income <= 5000000) {
        tax = 500000 * 0.13 + 500000 * 0.15 + (income - 1000000) * 0.20;
        bracket = "Прогрессивная шкала до 20%";
    } else {
        tax = 500000 * 0.13 + 500000 * 0.15 + 4000000 * 0.20 + (income - 5000000) * 0.25;
        bracket = "Максимальная ставка 25%";
    }
    
    const effectiveRate = (tax / income * 100).toFixed(2);
    const afterTax = income - tax;
    
    return `Налоговая категория: ${bracket}
Сумма налога: ${tax.toLocaleString()} руб.
Эффективная ставка: ${effectiveRate}%
Доход после налогов: ${afterTax.toLocaleString()} руб.`;
}

🔐 Пример 7: Система контроля доступа

function checkAccess(age, hasTicket, isStudent, isVIP, hour) {
    let accessGranted = false;
    let reason = "";
    
    if (isVIP) {
        accessGranted = true;
        reason = "VIP доступ разрешен в любое время";
    } else if (age < 18 && !hasTicket) {
        accessGranted = false;
        reason = "Несовершеннолетним требуется билет";
    } else if (age < 18 && hasTicket && hour >= 22) {
        accessGranted = false;
        reason = "Несовершеннолетним запрещен доступ после 22:00";
    } else if (hasTicket || (isStudent && hour >= 18 && hour < 21)) {
        accessGranted = true;
        reason = hasTicket ? "Доступ по билету" : "Студенческий доступ";
    } else if (age >= 65 && hour >= 9 && hour < 17) {
        accessGranted = true;
        reason = "Льготный доступ для пенсионеров";
    } else {
        accessGranted = false;
        reason = "Не выполнены условия доступа";
    }
    
    return {
        granted: accessGranted,
        reason: reason
    };
}

🌡️ Пример 8: Определение времени года

function determineSeason(month) {
    let season, emoji, description;
    
    switch(parseInt(month)) {
        case 12:
        case 1:
        case 2:
            season = "Зима";
            emoji = "❄️";
            description = "Холодное время года";
            break;
        case 3:
        case 4:
        case 5:
            season = "Весна";
            emoji = "🌸";
            description = "Время пробуждения природы";
            break;
        case 6:
        case 7:
        case 8:
            season = "Лето";
            emoji = "☀️";
            description = "Теплое время года";
            break;
        case 9:
        case 10:
        case 11:
            season = "Осень";
            emoji = "🍂";
            description = "Время листопада";
            break;
        default:
            return "Неверный месяц";
    }
    
    return `${emoji} ${season}\n${description}`;
}

🔢 Пример 9: Определение квадранта точки

function determineQuadrant(x, y) {
    if (x === 0 && y === 0) {
        return "Точка находится в начале координат";
    } else if (x === 0) {
        return "Точка находится на оси Y";
    } else if (y === 0) {
        return "Точка находится на оси X";
    } else if (x > 0 && y > 0) {
        return "I квадрант (x > 0, y > 0)";
    } else if (x < 0 && y > 0) {
        return "II квадрант (x < 0, y > 0)";
    } else if (x < 0 && y < 0) {
        return "III квадрант (x < 0, y < 0)";
    } else {
        return "IV квадрант (x > 0, y < 0)";
    }
}

📅 Пример 10: Определение дня недели

function determineDayType(dayNumber) {
    let dayName, dayType, emoji;
    
    switch(parseInt(dayNumber)) {
        case 1:
            dayName = "Понедельник";
            dayType = "Рабочий день";
            emoji = "💼";
            break;
        case 2:
            dayName = "Вторник";
            dayType = "Рабочий день";
            emoji = "💼";
            break;
        case 3:
            dayName = "Среда";
            dayType = "Рабочий день";
            emoji = "💼";
            break;
        case 4:
            dayName = "Четверг";
            dayType = "Рабочий день";
            emoji = "💼";
            break;
        case 5:
            dayName = "Пятница";
            dayType = "Рабочий день";
            emoji = "💼";
            break;
        case 6:
            dayName = "Суббота";
            dayType = "Выходной";
            emoji = "🎉";
            break;
        case 7:
            dayName = "Воскресенье";
            dayType = "Выходной";
            emoji = "🎉";
            break;
        default:
            return "Неверный номер дня!";
    }
    
    // Использование тернарного оператора
    const workHours = dayType === "Рабочий день" ? "9:00 - 18:00" : "Отдых";
    
    return `${emoji} ${dayName}\n${dayType}\nРежим: ${workHours}`;
}

💡 Советы по работе с примерами

Экспериментируйте

Попробуйте разные значения в каждом примере, включая граничные случаи

Изучайте код

Обратите внимание на структуру условий и логические операторы

Модифицируйте

Попробуйте изменить условия и посмотрите, как изменится результат

Отладка

Используйте консоль браузера для отладки JavaScript кода