📋 Подготовка к работе
-
Убедитесь, что Visual Studio установлена
Должна быть выполнена лабораторная работа №1
-
Создайте новый проект
File → New → Project → Console App (.NET)
-
Назовите проект
Используйте имя "Lab2_LinearAlgorithms"
-
Подготовьте рабочее пространство
Откройте 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 - Арифметические вычисления
Задача: Вычисление среднего арифметического трех чисел
Напишите программу, которая:
- Запрашивает у пользователя три числа
- Вычисляет их среднее арифметическое
- Выводит результат с точностью до 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: Тестирование программы
-
Запустите программу
Нажмите F5 или Ctrl+F5 в Visual Studio
-
Проверьте каждое задание
Введите различные тестовые данные
-
Проверьте граничные случаи
- Нулевые значения
- Отрицательные числа (где применимо)
- Очень большие числа
- Дробные значения
-
Убедитесь в корректности вычислений
Проверьте результаты вручную или калькулятором
🐛 Отладка линейных программ
Основные приемы отладки:
-
Точки останова (Breakpoints)
Установите точку останова (F9) после каждого вычисления
-
Пошаговое выполнение
Используйте F10 для выполнения строка за строкой
-
Просмотр переменных
Наведите курсор на переменную или используйте окно Locals
-
Окно 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)
- Проверяйте граничные случаи и особые значения
- Группируйте связанные операции для лучшей читаемости кода
📝 Требования к отчету
Отчет должен содержать:
- Титульный лист с названием работы
- Цель и задачи работы
- Теоретическую часть (определение линейного алгоритма)
- Блок-схемы для каждого задания
- Листинги программ с комментариями
- Скриншоты выполнения программ
- Тестовые примеры с результатами
- Выводы по работе