Lr03 Tutorial ОП II (ПЛ)

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 25

Лабораторна робота № 3 ( продовження л.р.

№ 2 )

Створення програми для аналізу


текстів з використанням фреимворку
.NET
Мета роботи.

Здобути навики використання засобів фреймворку .NET командних інструкцій та


додаткових пакетів NuGet при створенні програми аналізу текстів за допомогою
середовища розробки Microsoft Visual Studio та мови програмування C#.

Короткі теоретичні відомості до роботи.

Функціонал застосунку

Програма міститиме графічний інтерфейс GUI з елементами керування процесом аналізу текстових
файлів формату .docx і .pdf та можливістю збереження результату аналізу.

1. ЗАВДАННЯ 1 – Доопрацювання GUI

1.1. На Form1 доповнюємо стрічку меню

1.2. На Form1 скоректуйте область посилання на файл

1.3. На Form1 скоректуйте першу вкладку TabPage1, для цього

У вікні Properties обрати потрібний TabPage1

і змінювати потрібні властивості, відповідно рисунку нижче


1.4. Перевірити присутність невидимих компонентів на Form

(додайте за потреби)

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


1.6. Покажіть у звіті скоректовані елементи GUI.

2. ЗАВДАННЯ 2 – Встановлення додаткових програмних пакетів

2.1. Інсталюємо в проект open-source NuGet ( «New Get» ) пакет для роботи з файлами .docx, для
цього

. головне меню Visual Studio →

. прописємо DocX у вкладці Browse для пошуку


. виділяємо мишкою знайдений пакет

. відмічаємо наш проект

. клікаємо

. при появі License Acceptance, обираємо звичайно

2.2. Аналогічно спробувати встановити NuGet пакет itext7 для роботи з файлами .pdf з
нескладною структурою.
2.3. Показати у звіті вміст вкладки Installed

3. Завдання 3 – Підготовка файлу-модуля для функцій користувача

3.1. У Solution Explorer додати новий елемент так

. у випадаючому меню Add → New Item


. далі обрати Code File

. підтвердити додавання

. у Solution Explorer для нового файлу CodeFile1.cs через випадаюче меню змінити назву на
більш зрозумілу, наприклад, MyFunctions.cs, для цього

3.2. Відобразити у звіті вигляд Solution Explorer з усіма елементами проекту

3.3. Підготувати файл MyFunctions.cs для занесення туди коду функцій, для цього

. Розміщуємо виклик системних просторів імен

using System.IO;
using System.Text;

. Розміщуємо виклик просторів імен пакету DocX

using Xceed.Document.NET;
using Xceed.Words.NET;
. Розміщуємо виклик просторів імен пакету itext7

using iText.Kernel.Font;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Data;
using iText.Kernel.Pdf.Canvas.Parser.Filter;
using iText.Kernel.Pdf.Canvas.Parser.Listener;

. Нижче у MyFunctions.cs створюємо продовження простору імен проекту, його можна


скопіювати з файлу Form1.cs

. ! не забути закрити простір імен проекту

. Розмістити «тіло» опису Form1 у «тілі» простору імен проекту

public partial class Form1 : Form


{

(це буде ніби продовження опису, який є у файлі Form1.cs)

. Далі всі функції писатимемо в «тіло» опису Form1 у модулі MyFunctions.cs

. В «тілі» опису Form1 підготуйте поки пусті описи функцій, які пізніше будуть призначені
кнопкам

Функції:

MyDocXOpen – для відкриття .doc


- функція не повертає нічого (void)
- функція не має параметрів
MyPDFOpen – для відкриття .pdf
- функція не повертає нічого (void)
- функція не має параметрів

MyTextParagraphs – для лічби параграфів


- функція повертатиме ціле число
( тимчасово остання команда функції
return 0; )
- функція не має параметрів

MyTextSentences – для лічби речень


- функція повертатиме ціле число
( тимчасово остання команда функції
return 0; )
- функція не має параметрів

MyTextWords – для лічби слів


- функція повертатиме ціле число
( тимчасово остання команда функції
return 0; )
- функція не має параметрів

MyTextSymbols - для лічби символів


- функція повертатиме ціле число
( тимчасово остання команда функції
return 0; )
- функція не має параметрів

MyTextLetters - для лічби алфавітних літер


- функція повертатиме ціле число
( тимчасово остання команда функції
return 0; )
- функція не має параметрів

MyBaseReportSave - для лічби алфавітних літер


- функція повертатиме ціле число
( тимчасово остання команда функції
return 0; )
- функція не має параметрів

3.4. Зберегти зміни

3.5. Показати у звіті результуючий вигляд файлу MyFunctions.cs


4. ЗАВДАННЯ 4 – Визначення елементів виведення інформації

4.1. Проглянути верхню частину GUI

4.2. Проглянути нижню частину GUI

4.3. Позначити у звіті, в який RichTextBox буде завантажено текст файлу, а в який RichTextBox
буде виводитись report за пунктами аналізу.

5. ЗАВДАННЯ 5 – Опис функції завантаження .docx файлу

5.1. Повернутися до файлу опису функцій MyFunctions.cs

5.2. Знайти функцію MyDocXOpen()

5.3. Виконувати опис команд для MyDocXOpen()

///// ВИКЛИК ВІКНА ВІДКРИТТЯ ФАЙЛУ

. Повернутись тимчасово до Form1.cs[Design] і проглянути невидимі елементи Form (одразу під


Form1)

. Згадати елемент, що є діалоговим ВікномВідкриттяФайлу

. У функції MyDocXOpen() прописати ім’я (звернення до) до цього елементу

. Поставити крапку після імені елементу для вибору його методів


. Обрати метод, що показує ВікноВідкриттяФайлу користувачу ( не забути крапку з комою в кінці
команди )

. Запустити програму, перевірити чи працює виклик ВікнаВідкриттяФайлу

. Закрити програму та продовжити опис функції MyDocXOpen()

///// ВИВЕДЕННЯ ШЛЯХУ ДО ОБРАНОГО ФАЙЛУ

. Проглянути інформацію нижче

Якщо користувач не обрав файл для відкриття, то

ВікноВідкриттяФайлу.FileName буде == імені елементу ВікноВідкриттяФайлу

Якщо користувач обрав файл для відкриття, то

ВікноВідкриттяФайлу.FileName буде == шляху до файлу

. Далі за допомогою команди if

if ( умова )
{
//команди;
}
//наступні команди;

викликати команду return; ( вихід з MyDocXOpen() ) , за умови, якщо користувач не обрав файлу
для відкриття (це убереже від помилок при виконанні програми).

. Якщо описаний if не спрацює, то будуть виконуватись команди, які описані далі

. Прописати наступні команди

. викликати команду присвоєння ВікнаВідкриттяФайлу.FileName у властивість .Text елементу


TextBox, який прямо під MenuStrip на Form.

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

. Перевірити виведення шляху до обраного файлу у TextBox на Form

. Зупинити програму. Продовжити опис MyDocXOpen()

///// ЗАВАНТАЖЕННЯ ТЕКСТУ З ФАЙЛУ .DOCX


. Створити змінну my_doc типу DocX ( для прив’язування файлу .docx )

. Присвоїти my_doc результат функції DocX.Load( ) ,


.. як параметр функції .Load( ) використати команду,
яка повертає шлях до обраного файлу.

. Створити змінну my_text типу String ( для збереження тексту з файлу .docx )

. Присвоїти змінній my_text результат функції " \n".PadLeft(100, ' ') , яка формує
великий пустий рядок ( необхідно для полегшення подальшого аналізу тексту )

. Далі потрібно сформувати загальний текст з файлу з урахуванням абзаців.


Розглянути приклад формування тексту у змінній a з окремих текстових шматочків

foreach ( String s in new[] { "one" , "two", "three", "four" } )


{
a += s + "\n";
}

тут за допомогою змінної s типу String з масиву new[] { …. } по черзі виконується вибір по одному елементу і
кожен додається до змінної а, як окремий абзац.

. Переробити цикл для формування змінної my_text, враховуючи, що


.. масив абзаців у файлі my_doc.Paragraphs
.. вибір абзаців по черзі можливо здійснювати у змінну типу Paragraph
.. отримати текст кожного абзацу змінна_параграф.Text
.. при додаванні тексту абзацу, як і в прикладі потрібно також додавати "\n"

. Після опису «тіла» циклу додати до my_text пустий рядок ,


" \n".PadLeft(100, ' ') ( необхідно для полегшення подальшого аналізу тексту )
. Вивести сформований my_text у властивість .Text елементу RichTextBox, який призначений
для відображення тексту з файлу на Form ( перший RichTextBox ).

. Очистити за допомогою властивості .Clear() інший RichTextBox, який призначений для


виведення результатів аналізу ( другий RichTextBox ).

5.4. Призначити функцію MyDocXOpen() для кліку по пункту головного меню Open DOCX

5.5. Зберегти зміни та запустити програму.

5.6. Показати у звіті зображення ВікнаВідкриттяФайлу

5.7. Показати у звіті Form з виведеним текстом з файлу.

5.8. Показати у звіті повний текст функції MyDocXOpen()


6. ЗАВДАННЯ 6 – Опис функції завантаження .pdf файлу

6.1. Повернутися до файлу опису функцій MyFunctions.cs

6.2. Знайти функцію MyPDFOpen()

6.3. Виконувати опис команд для MyPDFOpen()

///// ВИКЛИК ВІКНА ВІДКРИТТЯ ФАЙЛУ

. Виконати як у попередній функції

///// ВИВЕДЕННЯ ШЛЯХУ ДО ОБРАНОГО ФАЙЛУ

. Виконати як у попередній функції

///// ЗАВАНТАЖЕННЯ ТЕКСТУ З ФАЙЛУ .PDF

. Створити змінну my_pdf типу PdfDocument ( для прив’язування файлу .pdf )

. Присвоїти my_pdf результат функції

new PdfDocument(new PdfReader( ));

.. як параметр функції .PdfReader( ) використати команду,


яка повертає шлях до обраного файлу ( як у попередній функції ).

. Створити змінну my_text типу String ( для збереження тексту з файлу .pdf )

. Присвоїти змінній my_text результат функції " \n".PadLeft(100, ' ') , яка формує
великий пустий рядок ( необхідно для полегшення подальшого аналізу тексту )

. Далі необхідно отримати текст з .pdf файлу.


Бібліотека itext7 може читати .pdf лише по сторінкам.

. Створити змінну типу ціле число для кількості сторінок .pdf

. Задати цикл перебору номерів сторінок ( рекомендується цикл for )

. В «тілі» циклу додавати за допомогою += в змінну my_text додавати текст з поточної


сторінки .pdf, який можна отримати та декодувати, підставляючи поточний номер_сторінки
за прикладом:

String currentText = iText.Kernel.Pdf.Canvas.Parser.PdfTextExtractor.GetTextFromPage(


pdfDoc.GetPage( номер_сторінки ),
new Text.Kernel.Pdf.Canvas.Parser.Listener.SimpleTextExtractionStrategy()
);
currentText = Encoding.UTF8.GetString(
ASCIIEncoding.Convert(
Encoding.Default,
Encoding.UTF8,
Encoding.Default.GetBytes(currentText)
)
);

. Після опису «тіла» циклу закрити зв’язок з файлом

pdfDoc.Close();

. Вивести сформований my_text у властивість .Text елементу RichTextBox, який призначений


для відображення тексту з файлу на Form ( перший RichTextBox ).

. Очистити за допомогою властивості .Clear() інший RichTextBox, який призначений для


виведення результатів аналізу ( другий RichTextBox ).

6.4. Призначити функцію MyPDFOpen() для кліку по пункту головного меню Open PDF

6.5. Зберегти зміни та запустити програму.

6.6. Показати у звіті зображення вікна відкриття файлу та Form з виведеним текстом з файлу.

6.7. Спробувати різні .pdf файли, прості – лише з текстом, складні – з текстом та картинками,
маленькі файли та великі. У звіті розмістити інформацію про успішність відкриття різних типів
.pdf файлів.

6.8. Показати у звіті повний текст функції MyPDFOpen()

Далі аналізуватимемо текст, який завантажено у RichTextBox на Form ( перший RichTextBox )

Підготуємо текстові фрагменти результатів аналізу, які виводитимуться в report

7. ЗАВДАННЯ 7 - Виведення у report інформації про файл

7.1. Перейти до Form1.cs [Design]

. Клікнути подвійно на кнопку на Form

7.2. У вікні Form1.cs редагувати функцію обробки кліка на

. Для того, щоб у report було виведено


у функцію обробки кліку на вписати команди

ім'я_richTextBox.AppendText("\t - Результати аналізу тексту з файлу:\n" );


ім'я_richTextBox.AppendText("\t " + шлях_до_файлу + "\n" );
try{
ім'я_richTextBox.AppendText("\t\t розміром: " + new FileInfo( шлях_до_файлу ).Length + " Bytes\n");
ім'я_richTextBox.AppendText("\t\t створеного: " + new FileInfo( шлях_до_файлу ).CreationTime );
}
catch { }
ім'я_richTextBox.AppendText("\n\n");

.. замінити ім'я_richTextBox правильним зверненням до правильного RichTextBox

.. замінити шлях_до_файлу правильною інструкцією, яка дає шлях до файлу

7.3. Зберегти результати. Запустити програму.

7.4. Показати у звіті результати натиснення на кнопку після відкриття


.doc та .pdf файлів через MenuStrip.

7.5. Закрити програму.

7.6. Показати у звіті повний текст функції обробки кліка кнопки

7.7. Знайти у відкритих інформаційних джерелах та подати у звіті коротке пояснення


застосування у цьому випадку інструкції:
try{ … }
catch { }

8. ЗАВДАННЯ 8 - Виведення у report інформації про абзаци тексту

8.1. Перейти до Form1.cs [Design]

. Клікнути подвійно на кнопку на Form

8.2. У вікні Form1.cs редагувати функцію обробки кліка


. Для того, щоб у report було виведено

у функцію обробки кліку на вписати команди

ім'я_richTextBox.AppendText("\t - Кількість абзаців у тексті:\n");


ім'я_richTextBox.AppendText("\t " + виклик_функції );
ім'я_richTextBox.AppendText("\n\n");

.. замінити ім'я_richTextBox правильним зверненням до правильного RichTextBox

.. замінити виклик_функції правильною інструкцією, яка викликає потрібну функцію


( ! буде виведено 0 абзаців, але пізніше буде написано функцію визначення реальної кількості ).

8.3. Зберегти результати. Запустити програму.

8.4. Показати у звіті результати натиснення на кнопку

8.5. Закрити програму.

8.6. Показати у звіті повний текст функції обробки кліка кнопки

9. ЗАВДАННЯ 9 - Виведення у report інформації про речення тексту

9.1. Перейти до Form1.cs [Design]

. Клікнути подвійно на кнопку на Form

9.2. У вікні Form1.cs редагувати функцію обробки кліка

. Для того, щоб у report було виведено


у функцію обробки кліку на вписати самостійно команди, по прикладу
попереднього пункту, але не забути

.. замінити ім'я_richTextBox правильним зверненням до правильного RichTextBox

.. замінити виклик_функції правильною інструкцією, яка викликає потрібну функцію


( ! буде виведено 0 речень, але пізніше буде написано функцію визначення реальної кількості ).

9.3. Зберегти результати. Запустити програму.

9.4. Показати у звіті результати натиснення на кнопку

9.5. Закрити програму.

9.6. Показати у звіті повний текст функції обробки кліка кнопки

10. ЗАВДАННЯ 10 - Виведення у report інформації про слова тексту

10.1. Перейти до Form1.cs [Design]

. Клікнути подвійно на кнопку на Form

10.2. У вікні Form1.cs редагувати функцію обробки кліка

. Для того, щоб у report було виведено

у функцію обробки кліку на вписати самостійно команди, по прикладу


попереднього пункту, але не забути

.. замінити ім'я_richTextBox правильним зверненням до правильного RichTextBox

.. замінити виклик_функції правильною інструкцією, яка викликає потрібну функцію


( ! буде виведено 0 слів, але пізніше буде написано функцію визначення реальної кількості ).

10.3. Зберегти результати. Запустити програму.


10.4. Показати у звіті результати натиснення на кнопку

10.5. Закрити програму.

10.6. Показати у звіті повний текст функції обробки кліка кнопки

11. ЗАВДАННЯ 11 - Виведення у report інформації про символи тексту

11.1. Перейти до Form1.cs [Design]

. Клікнути подвійно на кнопку на Form

11.2. У вікні Form1.cs редагувати функцію обробки кліка

. Для того, щоб у report було виведено

у функцію обробки кліку на вписати самостійно команди, по прикладу


попереднього пункту, але не забути

.. замінити ім'я_richTextBox правильним зверненням до правильного RichTextBox

.. замінити виклик_функції правильною інструкцією, яка викликає потрібну функцію


( ! буде виведено 0 символів, але пізніше буде написано функцію визначення реальної кількості ).

11.3. Зберегти результати. Запустити програму.

11.4. Показати у звіті результати натиснення на кнопку

11.5. Закрити програму.

11.6. Показати у звіті повний текст функції обробки кліка кнопки


12. ЗАВДАННЯ 12 - Виведення у report інформації про літери тексту

12.1. Перейти до Form1.cs [Design]

. Клікнути подвійно на кнопку на Form

12.2. У вікні Form1.cs редагувати функцію обробки кліка

. Для того, щоб у report було виведено

у функцію обробки кліку на вписати самостійно команди, по прикладу


попереднього пункту, але не забути

.. замінити ім'я_richTextBox правильним зверненням до правильного RichTextBox

.. замінити виклик_функції правильною інструкцією, яка викликає потрібну функцію


( ! буде виведено 0 літер, але пізніше буде написано функцію визначення реальної кількості ).

12.3. Зберегти результати. Запустити програму.

12.4. Показати у звіті результати натиснення на кнопку

12.5. Закрити програму.

12.6. Показати у звіті повний текст функції обробки кліка кнопки

13. ЗАВДАННЯ 13 – Очищення інформації в report

13.1. Перейти до Form1.cs [Design]

. Клікнути подвійно на кнопку на Form

13.2. У вікні Form1.cs редагувати функцію обробки кліка


. Для того, щоб очистити report у вікні RichTextBox , можна скористатися методом

.Clear() , застосувавши його до відповідного RichTextBox.

13.3. Зберегти результати. Запустити програму.

13.4. Створити пробний звіт, застосувавши


для виведення фрагментів report.
Перевірити результативність натиснення на кнопку

13.5. Закрити програму.

13.6. Показати у звіті повний текст функції обробки кліка кнопки

14. ЗАВДАННЯ 14 – Збереження report у файл

14.1. Перейти до Form1.cs [Design]

. Клікнути подвійно на кнопку на Form

14.2. У вікні Form1.cs редагувати функцію обробки кліка

. Прописати інструкцію виклику функції MyBaseReportSave();

14.3. Повернутися до файлу опису функцій MyFunctions.cs

14.4. Знайти пусту функцію MyBaseReportSave()

14.5. Виконувати опис команд для MyBaseReportSave()

///// ВИКЛИК ВІКНА ВІДКРИТТЯ ФАЙЛУ

. Повернутись тимчасово до Form1.cs[Design] і проглянути невидимі елементи Form (одразу під


Form1)

. Згадати елемент, що є діалоговим ВікномЗбереженняФайлу


. У функції MyBaseReportSave() прописати ім’я (звернення до) до цього елементу

. Поставити крапку після імені елементу для вибору його методів

. Обрати метод, що показує ВікноЗбереженняФайлу користувачу ( не забути крапку з комою в кінці


команди )

. Запустити програму, перевірити чи працює виклик ВікнаЗбереженняФайлу

. Закрити програму та продовжити опис функції MyBaseReportSave()

. Показати у звіті, в якій змінній буде збережено ім’я файлу, введеного користувачем в
ВікніЗбереженняФайлу

///// ЗБЕРЕЖЕННЯ REPORT У ФАЙЛ

. Показати у звіті до л.р., в якій змінній буде збережено ім’я файлу, введеного користувачем в
ВікніЗбереженняФайлу

Якщо користувач не прописав ім’я файлу для збереження, то

ВікноЗбереженняФайлу.FileName буде == ""

Якщо користувач обрав папку та прописав ім’я файлу для збереження, то

ВікноЗбереженняФайлу.FileName буде == шляху до файлу

. Далі за допомогою команди if

if ( умова )
{
//команди;
}
//наступні команди;

викликати команду return; ( вихід з MyBaseReportSave() ) , за умови, якщо користувач не обрав


файлу для збереження .

. Якщо описаний if не спрацює, то значить ім’я файлу обрано і будуть виконуватись команди,
які описані далі

. Прописати наступні команди

. Переглянути приклад створення та збереження файлу .docx засобами DocX

DocX my_report = DocX.Create( змінна_шляху_файлу );


doc.InsertParagraph().Append( змінна_текст );
doc.Save();
.. «витягнути» змінну_шляху_файлу з ВікнаЗбереженняФайлу

.. «витягнути» змінну_текст з відповідного RichTextBox

14.6. Зберегти зміни та запустити програму.

14.7. Створити тестовий report, натискаючи


для виведення фрагментів report.
Перевірити результативність інструменту збереження

14.8. Показати у звіті вигляд ВікноЗбереженняФайлу

14.9. Показати у звіті повний опис функції MyBaseReportSave()

14.10. Показати у звіті тестовий report

14.11. Показати у звіті сформований report у вигляді .docx файлу

15. ЗАВДАННЯ 15 – Опис функції визначення кількості параграфів

15.1. Повернутися до файлу опису функцій MyFunctions.cs

15.2. Знайти пусту функцію MyTextParagraphs()

15.3. Виконувати опис команд для MyTextParagraphs()

. Залишати тимчасово команду return 0, як останню команду в MyTextParagraphs()

Опис інструкцій, які передують return

. створити змінну_кількості_параграфів цілого типу

. Ознайомтесь з інформацією

Кількість параграфів можна отримати, як результат накладання на текст кількох функцій –


каскад функцій
.Text – виклик тексту, наприклад, з RichTextBox
.Split( ) – розділення тексту на масив фрагментів, які є текстами абзаців
.Length – отримання довжини масиву текстових фрагментів, тобто кількості абзаців
і ці функції можна поєднати каскадом так

ім’я_RichTextBox.Text.Split( separators , options ).Length

.. separators – розділювачі між параграфами, можуть бути задані як

new String[] { "\r\n", "\n", "\n\r" }

де
\r - команда повернення каретки ( курсору друку )
\n - команда створення нового рядка

.. options – опції розділення тексту можуть бути 3 варіантів – оберіть відповідну

StringSplitOptions.RemoveEmptyEntries
StringSplitOptions.TrimEntries
StringSplitOptions.RemoveEmptyEntries|StringSplitOptions.TrimEntries

де
RemoveEmptyEntries – видалення пустих абзаців
TrimEntries – видалення абзаців, які лише з пробілів
або їх поєднання

. Присвоїти створеній змінній результат виклику описаного каскаду функцій ( не переймайтесь,


якщо вийде дуже довга команда )

. Повертати, як результат функції, через останню команду

return змінна_кількості_параграфів

15.4. Зберегти все.

15.5. Запустити програму. Завантажити невеликий тестовий текст з файлу.


Перевірити інструмент

15.6. Закрити програму.

15.7. Показати у звіті повний опис функції MyTextParagraphs()

15.8. Показати у звіті завантажений тестовий текст та фрагмент report про кількість
параграфів
16. ЗАВДАННЯ 16 – Опис функції визначення кількості речень

16.1. Повернутися до файлу опису функцій MyFunctions.cs

16.2. Знайти пусту функцію MyTextSentences()

16.3. Виконувати опис команд для MyTextSentences()

. Виконувати всі ті ж дії, як і для попереднього пункту з параграфами, але розділювачі тут
позначають останні символи в реченнях:

new String[] { ".", "!", "?", "...", "…" }

. Повертати, як результат функції, через останню команду

return змінна_кількості_речень

16.4. Зберегти все.

16.5. Запустити програму. Завантажити невеликий тестовий текст з файлу.


Перевірити інструмент

16.6. Закрити програму.

16.7. Показати у звіті повний опис функції MyTextSentences()

16.8. Показати у звіті завантажений тестовий текст та фрагмент report про кількість речень.

17. ЗАВДАННЯ 17 – Опис функції визначення кількості слів

17.1. Повернутися до файлу опису функцій MyFunctions.cs

17.2. Знайти пусту функцію MyTextWords()

17.3. Виконувати опис команд для MyTextWords()


. Виконувати всі ті ж дії, як і для попереднього пункту з параграфами та реченнями, але
розділювачі тут символи, які між словами, або після слів, це певне об’єднання закінчень
параграфів, речень, проміжків між словами

Тому потрібно об’єднати

new String[] { ".", "!", "?", "...", "…" }

new String[] { "\r\n", "\n", "\n\r" }

new String[] { " ", ".", ",", ":", "-", "\"" }

. Повертати , як результат функції, через останню команду

return змінна_кількості_слів

17.4. Зберегти все.

17.5. Запустити програму. Завантажити невеликий тестовий текст з файлу.


Перевірити інструмент

17.6. Закрити програму.

17.7. Показати у звіті повний опис функції MyTextWords()

17.8. Показати у звіті завантажений тестовий текст та фрагмент report про кількість слів.

18. ЗАВДАННЯ 18 – Опис функції визначення кількості символів

18.1. Повернутися до файлу опису функцій MyFunctions.cs

18.2. Знайти пусту функцію MyTextSymbols()

18.3. Виконувати опис команд для MyTextSymbols()

. Залишати тимчасово команду return 0, як останню команду в MyTextSymbols()

Опис інструкцій, які передують return

. Cтворити змінну_кількості_символів цілого типу


. Ознайомтесь з інформацією

Кількість символів без пробілів та спецсимволів керування текстом можна отримати, як


результат накладання на текст кількох функцій – каскад функцій
.Text – виклик тексту, наприклад, з RichTextBox
.Replace( ) – заміна пробілів " " пустими символами ""
.Replace( ) – заміна символів нового рядку "\n" пустими символами ""
.Replace( ) – заміна символів повернення каретки "\r" пустими символами ""
.Replace( ) – заміна символів повернення каретки "\t" пустими символами ""
.Length – отримання довжини масиву кожен елемент якого є окремим символом

!! приклад з одним Replace() заміна символа "к" на "*"

текстова_змінна.Replace("к", "*")

і ці функції можна викликати та поєднати каскадом так, як це виконувалось для попередніх


випадків.

. Присвоїти створеній змінній результат виклику описаного каскаду функцій ( не переймайтесь,


якщо вийде дуже довга команда )

. Повертати, як результат функції, через останню команду

return змінна_кількості_символів

18.4. Зберегти все.

18.5. Запустити програму. Завантажити невеликий тестовий текст з одним, двома словами
з файлу.
Перевірити інструмент

18.6. Закрити програму.

18.7. Показати у звіті повний опис функції MyTextSymbols()

18.8. Показати у звіті завантажений тестовий текст та фрагмент report про кількість символів
19. ЗАВДАННЯ 19 – Опис функції визначення кількості алфавітних символів - літер

19.1. Повернутися до файлу опису функцій MyFunctions.cs

19.2. Знайти пусту функцію MyTextLetters()

19.3. Виконувати опис команд для MyTextLetters()

. Залишати тимчасово команду return 0, як останню команду в MyTextLetters()

Опис інструкцій, які передують return

. Cтворити змінну_кількості_літер цілого типу

. Присвоїти цій змінній нуль

. Ознайомитись з прикладом та замінити підсвічені змінні відповідними змінними з


програми:

! потрібно в циклі перебрати всі елементи ( символи ) тексту і перевірити їх на належність до алфавітних

змінна типу символ змінна_текст, з неї на кожному повторі


циклу вибирається почергово
1 символ і передається у
змінну_символ

foreach (тип змінна_символ in джерело_тексту )


{
if ( умова )
{
змінна_кількості_літер++;
}
}

використати функцію,
яка повертає true,
якщо символ є алфавітним

Char.IsLetter(змінна_символ)

. Повертати, як результат функції MyTextLetters(), через останню команду

return змінна_кількості_літер

19.4. Зберегти все.


19.5. Запустити програму. Завантажити невеликий тестовий текст з одним, двома словами
з файлу.
Перевірити інструмент

19.6. Закрити програму.

19.7. Показати у звіті повний опис функції MyTextLetters()

19.8. Показати у звіті завантажений тестовий текст та фрагмент report про кількість літер

20. ЗАВДАННЯ 20 – тестування програми

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


20.2. Завантажити повноцінний текст з довільного .docx файлу
20.3. Сформувати report за доступними параметрами
20.4. Показати в звіті скрін запущеної програми із завантаженим текстом та результатами в
report
20.5. Виконати ті ж дії для файлу .pdf

Продовження в наступній л.р.

You might also like