Инструкции к выполнению

Пошаговое руководство по разработке линейных алгоритмов и программ

📋 Подготовка к работе

  1. Убедитесь, что Visual Studio установлена

    Должна быть выполнена лабораторная работа №1

  2. Создайте новый проект

    File → New → Project → Console App (.NET)

  3. Назовите проект

    Используйте имя "Lab2_LinearAlgorithms"

  4. Подготовьте рабочее пространство

    Откройте Solution Explorer и редактор кода

🎯 Этап 1: Изучение теории линейных алгоритмов

Основные понятия

Алгоритм — это точная последовательность действий, приводящая к решению задачи за конечное число шагов.

Свойства алгоритма:

  • Дискретность — алгоритм состоит из отдельных шагов
  • Детерминированность — однозначность выполнения каждого шага
  • Конечность — алгоритм завершается за конечное число шагов
  • Массовость — применимость к классу однотипных задач
  • Результативность — получение результата после выполнения

Линейный алгоритм

Алгоритм, в котором все действия выполняются последовательно, один раз, в порядке их записи.

📝 Этап 2: Базовая структура линейной программы

Создайте программу с базовой структурой линейного алгоритма:

using System;

namespace Lab2_LinearAlgorithms
{
    class Program
    {
        static void Main(string[] args)
        {
            // Настройка консоли для русского языка
            Console.OutputEncoding = System.Text.Encoding.UTF8;
            Console.Title = "Лабораторная работа №2 - Линейные алгоритмы";
            
            // Приветствие
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("========================================");
            Console.WriteLine("    ЛИНЕЙНЫЕ АЛГОРИТМЫ В C#");
            Console.WriteLine("========================================");
            Console.ResetColor();
            
            // Основной код программы будет здесь
            
            // Завершение программы
            Console.WriteLine("\nНажмите любую клавишу для выхода...");
            Console.ReadKey();
        }
    }
}

🔢 Этап 3: Задание 1 - Арифметические вычисления

Задача: Вычисление среднего арифметического трех чисел

Напишите программу, которая:

  1. Запрашивает у пользователя три числа
  2. Вычисляет их среднее арифметическое
  3. Выводит результат с точностью до 2 знаков
// Задание 1: Среднее арифметическое
Console.WriteLine("\n--- Задание 1: Среднее арифметическое ---");

// Объявление переменных
double num1, num2, num3, average;

// Ввод данных
Console.Write("Введите первое число: ");
num1 = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите второе число: ");
num2 = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите третье число: ");
num3 = Convert.ToDouble(Console.ReadLine());

// Вычисление среднего арифметического
average = (num1 + num2 + num3) / 3;

// Вывод результата
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"\nСреднее арифметическое чисел {num1}, {num2}, {num3} = {average:F2}");
Console.ResetColor();

📐 Этап 4: Задание 2 - Геометрические вычисления

Задача: Вычисление площади и периметра прямоугольника

Создайте программу для расчета площади и периметра прямоугольника по введенным сторонам.

// Задание 2: Площадь и периметр прямоугольника
Console.WriteLine("\n--- Задание 2: Прямоугольник ---");

// Объявление переменных
double width, height, area, perimeter;

// Ввод данных
Console.Write("Введите ширину прямоугольника: ");
width = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите высоту прямоугольника: ");
height = Convert.ToDouble(Console.ReadLine());

// Вычисления
area = width * height;
perimeter = 2 * (width + height);

// Вывод результатов
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine($"\nРезультаты для прямоугольника {width} x {height}:");
Console.WriteLine($"Площадь: {area} кв.ед.");
Console.WriteLine($"Периметр: {perimeter} ед.");
Console.ResetColor();

🌡️ Этап 5: Задание 3 - Преобразование величин

Задача: Конвертер температур

Напишите программу для преобразования температуры из градусов Цельсия в Фаренгейты и Кельвины.

Формулы:

  • Фаренгейт = Цельсий × 9/5 + 32
  • Кельвин = Цельсий + 273.15
// Задание 3: Конвертер температур
Console.WriteLine("\n--- Задание 3: Конвертер температур ---");

// Объявление переменных
double celsius, fahrenheit, kelvin;

// Ввод температуры в Цельсиях
Console.Write("Введите температуру в градусах Цельсия: ");
celsius = Convert.ToDouble(Console.ReadLine());

// Преобразования
fahrenheit = celsius * 9 / 5 + 32;
kelvin = celsius + 273.15;

// Вывод результатов
Console.ForegroundColor = ConsoleColor.Magenta;
Console.WriteLine($"\n{celsius}°C соответствует:");
Console.WriteLine($"• {fahrenheit:F2}°F (по Фаренгейту)");
Console.WriteLine($"• {kelvin:F2}K (по Кельвину)");
Console.ResetColor();

💰 Этап 6: Задание 4 - Финансовые расчеты

Задача: Расчет стоимости покупки со скидкой

Программа должна рассчитать итоговую стоимость товара с учетом скидки и НДС.

// Задание 4: Расчет стоимости со скидкой
Console.WriteLine("\n--- Задание 4: Расчет стоимости ---");

// Объявление переменных
double price, discountPercent, vatPercent;
double discount, priceAfterDiscount, vat, finalPrice;

// Ввод данных
Console.Write("Введите цену товара: ");
price = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите процент скидки: ");
discountPercent = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите ставку НДС (%): ");
vatPercent = Convert.ToDouble(Console.ReadLine());

// Вычисления
discount = price * discountPercent / 100;
priceAfterDiscount = price - discount;
vat = priceAfterDiscount * vatPercent / 100;
finalPrice = priceAfterDiscount + vat;

// Вывод детализированного чека
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("\n╔════════════════════════════════╗");
Console.WriteLine("║           ЧЕК ПОКУПКИ          ║");
Console.WriteLine("╚════════════════════════════════╝");
Console.ResetColor();

Console.WriteLine($"Первоначальная цена: {price:C}");
Console.WriteLine($"Скидка ({discountPercent}%): -{discount:C}");
Console.WriteLine($"Цена со скидкой: {priceAfterDiscount:C}");
Console.WriteLine($"НДС ({vatPercent}%): +{vat:C}");
Console.WriteLine("─────────────────────────────────");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"ИТОГО К ОПЛАТЕ: {finalPrice:C}");
Console.ResetColor();

🔬 Этап 7: Задание 5 - Физические формулы

Задача: Расчет пути при равноускоренном движении

Формула: S = v₀t + at²/2

где S - путь, v₀ - начальная скорость, a - ускорение, t - время

// Задание 5: Физические расчеты
Console.WriteLine("\n--- Задание 5: Равноускоренное движение ---");

// Объявление переменных
double v0, acceleration, time;
double distance, finalVelocity, averageVelocity;

// Ввод данных
Console.Write("Введите начальную скорость (м/с): ");
v0 = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите ускорение (м/с²): ");
acceleration = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите время движения (с): ");
time = Convert.ToDouble(Console.ReadLine());

// Вычисления
distance = v0 * time + acceleration * Math.Pow(time, 2) / 2;
finalVelocity = v0 + acceleration * time;
averageVelocity = (v0 + finalVelocity) / 2;

// Вывод результатов
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("\n📊 Результаты расчетов:");
Console.WriteLine($"• Пройденный путь: {distance:F2} м");
Console.WriteLine($"• Конечная скорость: {finalVelocity:F2} м/с");
Console.WriteLine($"• Средняя скорость: {averageVelocity:F2} м/с");
Console.ResetColor();

🎯 Этап 8: Комплексное задание

Задача: Калькулятор индекса массы тела (ИМТ)

Создайте программу для расчета индекса массы тела и интерпретации результата.

Формула: ИМТ = вес (кг) / рост² (м)

// Комплексное задание: Калькулятор ИМТ
Console.WriteLine("\n--- Комплексное задание: Калькулятор ИМТ ---");

// Объявление переменных
double weight, heightCm, heightM, bmi;
string category;

// Ввод данных
Console.Write("Введите ваш вес (кг): ");
weight = Convert.ToDouble(Console.ReadLine());

Console.Write("Введите ваш рост (см): ");
heightCm = Convert.ToDouble(Console.ReadLine());

// Преобразование роста в метры
heightM = heightCm / 100;

// Расчет ИМТ
bmi = weight / Math.Pow(heightM, 2);

// Определение категории (упрощенно для линейного алгоритма)
// В реальной программе здесь были бы условные операторы
category = "Рассчитано";

// Вывод результатов
Console.WriteLine("\n╔════════════════════════════════════╗");
Console.WriteLine("║     РЕЗУЛЬТАТЫ РАСЧЕТА ИМТ        ║");
Console.WriteLine("╚════════════════════════════════════╝");
Console.WriteLine($"Ваш вес: {weight} кг");
Console.WriteLine($"Ваш рост: {heightCm} см ({heightM:F2} м)");
Console.WriteLine($"Индекс массы тела: {bmi:F2}");

// Шкала ИМТ для справки
Console.WriteLine("\nШкала ИМТ:");
Console.WriteLine("• Меньше 18.5 - Недостаточный вес");
Console.WriteLine("• 18.5 - 24.9 - Нормальный вес");
Console.WriteLine("• 25.0 - 29.9 - Избыточный вес");
Console.WriteLine("• 30.0 и выше - Ожирение");

✅ Этап 9: Тестирование программы

  1. Запустите программу

    Нажмите F5 или Ctrl+F5 в Visual Studio

  2. Проверьте каждое задание

    Введите различные тестовые данные

  3. Проверьте граничные случаи
    • Нулевые значения
    • Отрицательные числа (где применимо)
    • Очень большие числа
    • Дробные значения
  4. Убедитесь в корректности вычислений

    Проверьте результаты вручную или калькулятором

🐛 Отладка линейных программ

Основные приемы отладки:

  1. Точки останова (Breakpoints)

    Установите точку останова (F9) после каждого вычисления

  2. Пошаговое выполнение

    Используйте F10 для выполнения строка за строкой

  3. Просмотр переменных

    Наведите курсор на переменную или используйте окно Locals

  4. Окно Immediate

    Выполняйте вычисления во время отладки

Частые ошибки в линейных алгоритмах:

  • Деление на ноль - проверяйте знаменатель
  • Переполнение типа - используйте подходящие типы данных
  • Неверный порядок операций - используйте скобки
  • Потеря точности - используйте double вместо float
  • Неправильное преобразование типов - проверяйте Convert операции

📊 Полная программа со всеми заданиями

using System;

namespace Lab2_LinearAlgorithms
{
    class Program
    {
        static void Main(string[] args)
        {
            // Настройка консоли
            Console.OutputEncoding = System.Text.Encoding.UTF8;
            Console.Title = "Лабораторная работа №2 - Линейные алгоритмы";
            
            // Заголовок программы
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("╔══════════════════════════════════════════╗");
            Console.WriteLine("║     ЛАБОРАТОРНАЯ РАБОТА №2              ║");
            Console.WriteLine("║       ЛИНЕЙНЫЕ АЛГОРИТМЫ                ║");
            Console.WriteLine("╚══════════════════════════════════════════╝");
            Console.ResetColor();
            
            // Меню выбора задания
            Console.WriteLine("\nДоступные задания:");
            Console.WriteLine("1. Среднее арифметическое");
            Console.WriteLine("2. Площадь и периметр прямоугольника");
            Console.WriteLine("3. Конвертер температур");
            Console.WriteLine("4. Расчет стоимости со скидкой");
            Console.WriteLine("5. Физические расчеты");
            Console.WriteLine("6. Калькулятор ИМТ");
            Console.WriteLine("0. Выполнить все задания");
            
            Console.Write("\nВыберите задание (0-6): ");
            int choice = Convert.ToInt32(Console.ReadLine());
            
            // Здесь будет выполнение заданий
            // В линейном алгоритме мы выполним все подряд
            
            Console.WriteLine("\nПрограмма завершена!");
            Console.WriteLine("Нажмите любую клавишу для выхода...");
            Console.ReadKey();
        }
    }
}

💡 Полезные советы

  • Всегда проверяйте правильность формул перед программированием
  • Используйте осмысленные имена переменных (не a, b, c, а width, height, area)
  • Добавляйте комментарии к сложным вычислениям
  • Форматируйте вывод для лучшей читаемости
  • Используйте константы для фиксированных значений (например, const double PI = 3.14159)
  • Проверяйте граничные случаи и особые значения
  • Группируйте связанные операции для лучшей читаемости кода

📝 Требования к отчету

Отчет должен содержать:

  1. Титульный лист с названием работы
  2. Цель и задачи работы
  3. Теоретическую часть (определение линейного алгоритма)
  4. Блок-схемы для каждого задания
  5. Листинги программ с комментариями
  6. Скриншоты выполнения программ
  7. Тестовые примеры с результатами
  8. Выводы по работе