Аналізатор речень - Методичка

Windows Forms додаток для аналізу тексту з демонстрацією на JavaScript

Опис програми

Програма "Аналізатор речень" - це Windows Forms додаток для аналізу тексту, який дозволяє:

  • Знаходити слова, що містять задану літеру
  • Знаходити слова, що не містять задану літеру
  • Очищати всі поля вводу
  • Автоматичне оновлення результатів
  • Робота з українськими літерами

Архітектура програми

Основні компоненти:

  • Form1.cs - головна логіка програми
  • Form1.Designer.cs - код дизайну інтерфейсу
  • 4 вкладки для різного функціоналу
  • Обробники подій для автоматизації

Ключові методи:

  • ShowWordsWithLetter() - пошук слів з літерою
  • ShowWordsWithoutLetter() - пошук слів без літери
  • ResetAll() - очищення даних
  • ValidateInput() - перевірка введених даних

Демонстрація роботи програми

Спробуйте функціонал програми прямо в браузері (реалізовано на JavaScript):

Код C# - Основна логіка

Оголошення та ініціалізація

public partial class Form1 : Form
{
    private readonly char[] _wordSeparators = { 
        ' ', ',', '.', '!', '?', ';', ':', 
        '\t', '\n', '\r', '(', ')', '[', ']', 
        '{', '}', '"', '\'' 
    };

    public Form1()
    {
        InitializeComponent();
        tabControl1.SelectedIndexChanged += tabControl1_SelectedIndexChanged;
        txtSentence.TextChanged += TextBox_TextChanged;
        txtLetter.TextChanged += TextBox_TextChanged;
    }
}

Метод пошуку слів з літерою

private void ShowWordsWithLetter()
{
    string sentence = txtSentence.Text;
    string letter = txtLetter.Text;

    if (string.IsNullOrEmpty(sentence) || 
        string.IsNullOrEmpty(letter))
    {
        txtResult1.Text = "Будь ласка, введіть речення та літеру!";
        return;
    }

    string[] words = sentence.Split(_wordSeparators, 
        StringSplitOptions.RemoveEmptyEntries);

    var result = words
        .Where(w => w.IndexOf(letter, 
            StringComparison.OrdinalIgnoreCase) >= 0)
        .ToArray();

    txtResult1.Text = result.Length > 0
        ? string.Join(" ", result)
        : "Немає слів із такою літерою.";
}

JavaScript Демо - Логіка

Еквівалентна реалізація на JavaScript

const wordSeparators = [' ', ',', '.', '!', '?', 
                      ';', ':', '\t', '\n', '\r'];

function showWordsWithLetter() {
    const sentence = document.getElementById('sentenceInput').value;
    const letter = document.getElementById('letterInput').value;
    
    if (!sentence || !letter) {
        showResult('With', 'Будь ласка, введіть речення та літеру!');
        return;
    }
    
    const words = splitSentence(sentence);
    const result = words.filter(word => 
        word.toLowerCase().includes(letter.toLowerCase()));
    
    const resultText = result.length > 0
        ? `Слова з літерою '${letter}':\n${result.join(', ')}\n\nВсього: ${result.length} слово(в)`
        : `Слів з літерою '${letter}' не знайдено`;
    
    showResult('With', resultText);
    switchTab('wordsWith');
}

Допоміжні функції JavaScript

function splitSentence(sentence) {
    let words = sentence;
    wordSeparators.forEach(separator => {
        words = words.split(separator).join('|');
    });
    return words.split('|')
        .filter(word => word.length > 0);
}

function showResult(type, text) {
    document.getElementById('result' + type).textContent = text;
}

function switchTab(tabName) {
    // Видаляємо активний клас з усіх вкладок
    document.querySelectorAll('.tab').forEach(tab => {
        tab.classList.remove('active');
    });
    document.querySelectorAll('.tab-content').forEach(content => {
        content.classList.remove('active');
    });
    
    // Додаємо активний клас до обраної вкладки
    document.querySelector(`[onclick="switchTab('${tabName}')"]`).classList.add('active');
    document.getElementById(tabName).classList.add('active');
}

Інструкція користувача

Кроки роботи:

  • Введіть речення у текстове поле
  • Введіть одну літеру для пошуку
  • Натисніть "Слова з літерою" для пошуку слів, що містять літеру
  • Натисніть "Слова без літери" для пошуку слів, що не містять літеру
  • Використовуйте "Тестові дані" для швидкого тесту
  • Натисніть "Очистити все" для скидання

Особливості:

  • Пошук не залежить від регістру
  • Підтримка українських літер
  • Автоматичне розпізнавання розділових знаків
  • Валідація введених даних
  • Зручний інтерфейс з вкладками