Примеры программ на C#

Базовые примеры для изучения основ программирования на C# в Visual Studio

📝 Базовые программы на C#

Hello World - минимальная программа

// Минимальная программа на C# (.NET 6+)
// Одна строка кода выводит текст на экран
Console.WriteLine("Hello, World!");

// Традиционный вариант с полной структурой:
using System;  // Подключение пространства имен System

class Program  // Объявление класса Program
{
    // Точка входа в программу - метод Main
    static void Main()
    {
        // Вывод текста в консоль
        Console.WriteLine("Hello, World!");
    }
}
Hello, World!

Работа с переменными

using System;

class Program
{
    static void Main()
    {
        // Объявление переменных разных типов
        string name = "Visual Studio";  // Текстовая строка
        int version = 2022;             // Целое число
        double rating = 4.8;            // Дробное число
        bool isPopular = true;          // Логическое значение
        
        // Интерполяция строк с $ для вставки переменных
        Console.WriteLine($"IDE: {name}");
        Console.WriteLine($"Версия: {version}");
        Console.WriteLine($"Рейтинг: {rating}/5");
        Console.WriteLine($"Популярная: {isPopular}");
    }
}
IDE: Visual Studio
Версия: 2022
Рейтинг: 4.8/5
Популярная: True

🔢 Типы данных в C#

Числовые типы

using System;

class Program
{
    static void Main()
    {
        // ЦЕЛОЧИСЛЕННЫЕ ТИПЫ (для целых чисел)
        byte myByte = 255;              // От 0 до 255 (1 байт)
        short myShort = 32767;          // От -32,768 до 32,767 (2 байта)
        int myInt = 2147483647;         // От -2^31 до 2^31-1 (4 байта)
        long myLong = 9223372036854775807L; // Очень большие числа (8 байт)
                                        // L в конце означает long
        
        // ВЕЩЕСТВЕННЫЕ ТИПЫ (для дробных чисел)
        float myFloat = 3.14f;          // 7 знаков точности, f обязательна
        double myDouble = 3.14159265359;// 15-16 знаков точности
        decimal myDecimal = 79.99m;     // 28-29 знаков, для денег, m обязательна
        
        // Вывод с форматированием
        Console.WriteLine($"int: {myInt}");
        Console.WriteLine($"double: {myDouble}");
        Console.WriteLine($"decimal: {myDecimal:C}"); // :C - формат валюты
    }
}
int: 2147483647
double: 3.14159265359
decimal: 79,99 ₽

Строки и символы

using System;

class Program
{
    static void Main()
    {
        // char - один символ в одинарных кавычках
        char letter = 'A';
        
        // string - строка текста в двойных кавычках
        string text = "C# Programming";
        
        // @ перед строкой сохраняет форматирование
        string multiline = @"Многострочный
текст с сохранением
    форматирования";
        
        // $ позволяет вставлять переменные в строку
        string interpolated = $"Буква: {letter}, Текст: {text}";
        
        // Методы работы со строками
        Console.WriteLine(interpolated);
        Console.WriteLine($"Длина строки: {text.Length}");        // Свойство Length
        Console.WriteLine($"В верхнем регистре: {text.ToUpper()}");// Метод ToUpper()
        Console.WriteLine($"Содержит 'Program': {text.Contains("Program")}"); // Поиск
    }
}
Буква: A, Текст: C# Programming
Длина строки: 14
В верхнем регистре: C# PROGRAMMING
Содержит 'Program': True

📥 Ввод и вывод данных

Простой ввод-вывод

using System;

class Program
{
    static void Main()
    {
        // Write выводит без перевода строки
        Console.Write("Введите ваше имя: ");
        string name = Console.ReadLine();  // Чтение строки от пользователя
        
        Console.Write("Введите ваш возраст: ");
        // int.Parse преобразует строку в число
        int age = int.Parse(Console.ReadLine());
        
        // СПОСОБЫ ВЫВОДА:
        // 1. Конкатенация строк с +
        Console.WriteLine("Привет, " + name + "!");
        
        // 2. Форматирование с позициями {0}, {1}...
        Console.WriteLine("Вам {0} лет", age);
        
        // 3. Интерполяция строк с $ (рекомендуется)
        Console.WriteLine($"Через 5 лет вам будет {age + 5}");
        
        Console.ReadKey();  // Ожидание нажатия клавиши
    }
}
Введите ваше имя: Алексей
Введите ваш возраст: 22
Привет, Алексей!
Вам 22 лет
Через 5 лет вам будет 27

Безопасный ввод с проверкой

using System;

class Program
{
    static void Main()
    {
        Console.Write("Введите число: ");
        string input = Console.ReadLine();
        
        // TryParse пытается преобразовать и возвращает true/false
        // out int number - выходной параметр для результата
        if (int.TryParse(input, out int number))
        {
            // Если преобразование успешно
            Console.WriteLine($"Вы ввели число: {number}");
            Console.WriteLine($"Квадрат числа: {number * number}");
        }
        else
        {
            // Если введено не число
            Console.WriteLine("Ошибка: введено не число!");
        }
    }
}
Введите число: 7
Вы ввели число: 7
Квадрат числа: 49

🔀 Условные операторы

if-else конструкция

using System;

class Program
{
    static void Main()
    {
        Console.Write("Введите оценку (2-5): ");
        int grade = int.Parse(Console.ReadLine());
        
        // Проверка условий по порядку
        if (grade == 5)          // Если оценка равна 5
            Console.WriteLine("Отлично!");
        else if (grade == 4)     // Иначе если равна 4
            Console.WriteLine("Хорошо!");
        else if (grade == 3)     // И так далее...
            Console.WriteLine("Удовлетворительно");
        else if (grade == 2)
            Console.WriteLine("Неудовлетворительно");
        else                     // Если ни одно условие не подошло
            Console.WriteLine("Неверная оценка");
    }
}
Введите оценку (2-5): 4
Хорошо!

switch выражение (C# 8.0+)

using System;

class Program
{
    static void Main()
    {
        Console.Write("Введите день недели (1-7): ");
        int day = int.Parse(Console.ReadLine());
        
        string dayName = day switch
        {
            1 => "Понедельник",
            2 => "Вторник",
            3 => "Среда",
            4 => "Четверг",
            5 => "Пятница",
            6 => "Суббота",
            7 => "Воскресенье",
            _ => "Неверный день"
        };
        
        Console.WriteLine($"День: {dayName}");
    }
}
Введите день недели (1-7): 5
День: Пятница

🔁 Циклы

for и foreach циклы

using System;

class Program
{
    static void Main()
    {
        // Цикл for: (начало; условие; шаг)
        Console.WriteLine("Таблица умножения на 5:");
        for (int i = 1; i <= 10; i++)  // i от 1 до 10
        {
            Console.WriteLine($"5 × {i} = {5 * i}");
        }
        
        // Массив строк
        string[] languages = { "C#", "Python", "Java", "JavaScript" };
        
        // Цикл foreach - перебор элементов коллекции
        Console.WriteLine("\nЯзыки программирования:");
        foreach (string lang in languages)  // для каждого lang в languages
        {
            Console.WriteLine($"- {lang}");
        }
    }
}
Таблица умножения на 5:
5 × 1 = 5
5 × 2 = 10
5 × 3 = 15
...
Языки программирования:
- C#
- Python
- Java
- JavaScript

while и do-while циклы

using System;

class Program
{
    static void Main()
    {
        // Цикл while
        int count = 0;
        while (count < 3)
        {
            Console.WriteLine($"Count: {count}");
            count++;
        }
        
        // Цикл do-while
        string answer;
        do
        {
            Console.Write("Продолжить? (да/нет): ");
            answer = Console.ReadLine();
        } while (answer.ToLower() == "да");
        
        Console.WriteLine("Программа завершена");
    }
}
Count: 0
Count: 1
Count: 2
Продолжить? (да/нет): нет
Программа завершена

📦 Массивы и коллекции

Работа с массивами

using System;
using System.Linq;

class Program
{
    static void Main()
    {
        // Создание и инициализация массива
        int[] numbers = { 5, 2, 8, 1, 9, 3 };
        
        Console.WriteLine($"Массив: {string.Join(", ", numbers)}");
        Console.WriteLine($"Длина: {numbers.Length}");
        Console.WriteLine($"Максимум: {numbers.Max()}");
        Console.WriteLine($"Минимум: {numbers.Min()}");
        Console.WriteLine($"Сумма: {numbers.Sum()}");
        Console.WriteLine($"Среднее: {numbers.Average():F2}");
        
        // Сортировка
        Array.Sort(numbers);
        Console.WriteLine($"Отсортирован: {string.Join(", ", numbers)}");
    }
}
Массив: 5, 2, 8, 1, 9, 3
Длина: 6
Максимум: 9
Минимум: 1
Сумма: 28
Среднее: 4.67
Отсортирован: 1, 2, 3, 5, 8, 9

List<T> коллекция

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        List<string> cities = new List<string>();
        
        // Добавление элементов
        cities.Add("Москва");
        cities.Add("Санкт-Петербург");
        cities.Add("Новосибирск");
        
        // Вставка элемента
        cities.Insert(1, "Екатеринбург");
        
        Console.WriteLine("Города России:");
        for (int i = 0; i < cities.Count; i++)
        {
            Console.WriteLine($"{i + 1}. {cities[i]}");
        }
        
        // Удаление элемента
        cities.Remove("Новосибирск");
        Console.WriteLine($"\nВсего городов: {cities.Count}");
    }
}
Города России:
1. Москва
2. Екатеринбург
3. Санкт-Петербург
4. Новосибирск
Всего городов: 3

🎯 Методы (функции)

Создание и вызов методов

using System;

class Program
{
    static void Main()
    {
        // Вызов методов
        Greet("Студент");
        
        int result = Add(10, 20);
        Console.WriteLine($"10 + 20 = {result}");
        
        double area = CircleArea(5);
        Console.WriteLine($"Площадь круга (r=5): {area:F2}");
    }
    
    // Метод без возвращаемого значения
    static void Greet(string name)
    {
        Console.WriteLine($"Привет, {name}!");
    }
    
    // Метод с возвращаемым значением
    static int Add(int a, int b)
    {
        return a + b;
    }
    
    // Метод с вычислениями
    static double CircleArea(double radius)
    {
        return Math.PI * radius * radius;
    }
}
Привет, Студент!
10 + 20 = 30
Площадь круга (r=5): 78.54

Параметры по умолчанию и именованные

using System;

class Program
{
    static void Main()
    {
        // Обычный вызов
        PrintInfo("Иван", 25, "Москва");
        
        // С параметром по умолчанию
        PrintInfo("Анна", 22);
        
        // Именованные параметры
        PrintInfo(age: 30, name: "Петр", city: "Сочи");
    }
    
    // Метод с параметром по умолчанию
    static void PrintInfo(string name, int age, string city = "Не указан")
    {
        Console.WriteLine($"Имя: {name}, Возраст: {age}, Город: {city}");
    }
}
Имя: Иван, Возраст: 25, Город: Москва
Имя: Анна, Возраст: 22, Город: Не указан
Имя: Петр, Возраст: 30, Город: Сочи

💾 Полная программа - Калькулятор

Консольный калькулятор на C#

using System;

namespace Calculator
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Title = "Калькулятор C#";
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine("╔════════════════════════════╗");
            Console.WriteLine("║    КАЛЬКУЛЯТОР НА C#       ║");
            Console.WriteLine("╚════════════════════════════╝");
            Console.ResetColor();
            
            bool continueProgram = true;
            
            while (continueProgram)
            {
                try
                {
                    Console.Write("\nВведите первое число: ");
                    double num1 = Convert.ToDouble(Console.ReadLine());
                    
                    Console.Write("Введите второе число: ");
                    double num2 = Convert.ToDouble(Console.ReadLine());
                    
                    Console.WriteLine("\nВыберите операцию:");
                    Console.WriteLine("1. Сложение (+)");
                    Console.WriteLine("2. Вычитание (-)");
                    Console.WriteLine("3. Умножение (*)");
                    Console.WriteLine("4. Деление (/)");
                    Console.WriteLine("5. Возведение в степень (^)");
                    Console.WriteLine("6. Остаток от деления (%)");
                    
                    Console.Write("\nВаш выбор (1-6): ");
                    int choice = Convert.ToInt32(Console.ReadLine());
                    
                    double result = choice switch
                    {
                        1 => num1 + num2,
                        2 => num1 - num2,
                        3 => num1 * num2,
                        4 => num2 != 0 ? num1 / num2 : throw new DivideByZeroException(),
                        5 => Math.Pow(num1, num2),
                        6 => num1 % num2,
                        _ => throw new InvalidOperationException("Неверная операция")
                    };
                    
                    string operation = choice switch
                    {
                        1 => "+", 2 => "-", 3 => "*", 4 => "/", 5 => "^", 6 => "%", _ => "?"
                    };
                    
                    Console.ForegroundColor = ConsoleColor.Green;
                    Console.WriteLine($"\nРезультат: {num1} {operation} {num2} = {result:F4}");
                    Console.ResetColor();
                }
                catch (DivideByZeroException)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\nОшибка: Деление на ноль!");
                    Console.ResetColor();
                }
                catch (FormatException)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\nОшибка: Введено некорректное число!");
                    Console.ResetColor();
                }
                catch (Exception ex)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine($"\nОшибка: {ex.Message}");
                    Console.ResetColor();
                }
                
                Console.Write("\nПродолжить? (y/n): ");
                continueProgram = Console.ReadLine()?.ToLower() == "y";
            }
            
            Console.WriteLine("\nСпасибо за использование калькулятора!");
            Console.WriteLine("Нажмите любую клавишу для выхода...");
            Console.ReadKey();
        }
    }
}
╔════════════════════════════╗
║ КАЛЬКУЛЯТОР НА C# ║
╚════════════════════════════╝
Введите первое число: 15
Введите второе число: 3
Выберите операцию:
1. Сложение (+)
2. Вычитание (-)
3. Умножение (*)
4. Деление (/)
5. Возведение в степень (^)
6. Остаток от деления (%)
Ваш выбор (1-6): 4
Результат: 15 / 3 = 5.0000
Продолжить? (y/n): n
Спасибо за использование калькулятора!