Вы находитесь на странице: 1из 35

Частное учреждение образования

«Колледж бизнеса и права»

ОТЧЕТ ПО УЧЕБНОЙ ПРАКТИКЕ ПО ПРОГРАММИРОВАНИЮ

ОП Т.795.011

Руководитель практики В.Ю.Михалевич

Учащийся А.А.Гром

2020
Содержание

Введение 3
1 Объектно-ориентированное программирование с использованием языка C# 4
1.1 Организация циклов 4
1.2 Массивы 5
1.3 Базовые операции над строками 6
1.4 Регулярные выражения 7
1.5 Структуры 8
1.6 Простейшие классы 11
1.7 Классы и операции 13
1.8 Наследование 14
1.9 Делегаты, события, лямбда-выражения 14
1.10 Коллекции 23
1.11 Интерфейсы 24
1.12 Обобщения 25
1.13 LINQ 26
1.14 Работа с объектами файловой системы 28
2 Разработка приложений средствами библиотеки классов MicrosoftNETFramework
30
3 Программирование быстродействующих информационных систем 34
Заключение 39
Список информационных источников 40

ОП Т.795011
Изм. Лист № докум. Подпись Дата
Разраб. Гром А.А. Лит. Лист Листов
Провер. Михалевич 2 40
Отчет по учебной практике по
Т. контр. В.Ю. 2
программированию
Н. контр. КБП
Утверд.
Введение

Целью учебной практики по программированию является формирование и закрепление


навыков разработки объектно-ориентированных программ.
Задачами практики являются:
- усиление взаимосвязи теоретического обучения с будущей профессиональной
деятельностью;
- углубление знаний учащихся по дисциплине «Конструирование программ и языки
программирования»;
- формирование первичных умений и навыков по специальности.

3
1 Объектно-ориентированное программирование с использованием
языка C#

1.1 Организация циклов

public static int Task3(int num , int i)

if (num >= 2) {

for (i = 2; i <= num; ++i)

if (i % 2 != 0)

if (i % 3 != 0)

if (i % 5 == 0)

Console.WriteLine("\n" + i);

else Console.WriteLine(i);

return i;

return num;

public static int Task6(int k, int count)

int num = 0;
4
for(int i = 0; k != 0 && i < count; k /= 10, ++i)

num = k % 10;

return num;

public static int Task6(int k, int count)

int num = 0;

for(int i = 0; k != 0 && i < count; k /= 10, ++i)

num = k % 10;

return num;

Результат работы программы представлен на рисунке 2

1.2 Массивы

public static int[] Variant_11_Negative(int[] arr) 

int[] result = new int[arr.Length - CalculatePositive(arr)]; 

5
for (int i = 0, j = 0; i != arr.Length; ++i) 

if (arr[i] < 0) 

result[j++] = arr[i]; 

return result; 

public static int sum_of11(int[,] matrix) { 


int minus = matrix.GetLength(1)-1; 
int half = matrix.GetLength(1)/2; 
int temp = 0; 
for(int i = 0; i < matrix.GetLength(0); ++i) { 
for(int k = 0; k != minus; ++k) { 
temp += matrix[i,k]; 

—minus; 

return temp; 
}

1.3 Базовые операции над строками

public static void Delete_Spaces()


{
string a = "Hello Beautiful World!";
Console.WriteLine(a.Remove(5, 10));
}

1.4 Регулярные выражения

public static void ThreeUsless()


{
Regex first = new Regex(@"c[a|e]l[a|e]nd[a|e]r");
6
Regex second = new Regex(@"\d{16}");
Regex third = new Regex(@"[\d|\w]{[!16]}");
}
public static void PhoneNote()
{
Regex note = new Regex(@"\d{7}\s[1-31]/.[1-12]/.[0-2020]\s[0-23]/:[0-59]\s[0-
23]/:[0-59]\s\d*/$");
}
1.5 Структуры

struct MARSH
{

public readonly string start;


public readonly string finish;
public readonly int num;

public override string ToString()


{
return (string.Format(@"
Начальный пункт назначения: {0}
Конечный пункт назначения: {1}
Номер маршрута: {2}", start, finish, num));
}

public MARSH(string StartPoint, string FinalPoint, int Number)


{
this.start = StartPoint;
this.finish = FinalPoint;
this.num = Number;
}

}
class Program
{
private static string InputValue(string message)
{
Console.WriteLine(message);
return Console.ReadLine();
}

static void Main(string[] args)


{
MARSH[] Routes = new MARSH[8];
7
for (int i = 0; i < Routes.Length; i++)
{
Routes[i] = (new MARSH(InputValue("Введите начальную точку
маршрута"), InputValue("Введите конечную точку маршрута"),
int.Parse(InputValue("Введите номер маршрута"))));
}
Array.Sort(Routes, new Comparison<MARSH>((x, a) =>
a.num.CompareTo(x.num)));

Console.WriteLine("\nИнформация в базе:");

Routes.ToList().ForEach(x => Console.WriteLine(x.ToString())); // Вывод


всех маршрутов

int CurrentNumber = int.Parse(InputValue("Введите номер маршрута"));

foreach (var Route in Routes)


{
if (Route.num.Equals(CurrentNumber))
{
Console.WriteLine(Route.ToString());
break;
}

}
Console.ReadKey();
}
}
1.6 Простейшие классы

using System;
using System.Collections.Generic;
using System.Linq;

namespace Practica
{
class Program
{
public class Book {
private string name;
private int price;
private string genre;
private int quantity;
8
public string Name
{
get
{
return name;
}

set
{
if (value.Length < 0)
{
throw new Exception("Error");
}
name = value;
}
}

public int Price


{
get
{
return price;
}

set
{
if (value < 0)
{
throw new Exception("Error");
}
price = value;
}
}

public string Genre


{
get
{
return genre;
}

set
{
if(value.Length < 0)
9
{
throw new Exception("Error");
}

genre = value;
}
}

public int Quantity


{
get
{
return quantity;
}
set
{
if(value < 0)
{
throw new Exception("Error");
}
}
}

public List<Book> Array { get; }


public Book()
{
Array = new List<Book>();
}

public Book(string name)


{
Name = name;
}

public Book(int price, string genre)


{
Price = price;
Genre = genre;
}

public Book(int price, string name, string genre)


{
Price = price;
Genre = genre;
Name = name;
10
}

public Book(int quantity, string name, string genre, int price)


{
Price = price;
Name = name;
Quantity = quantity;
Genre = genre;
}

public void sortByPrice()


{
Array.Sort((a, b) => a.Price.CompareTo(b.Price));
foreach (Book el in Array)
Console.WriteLine(el);
}

public void sortByName()


{
Array.Sort((a, b) => String.Compare(a.Name, b.Name,
StringComparison.Ordinal));
foreach (Book el in Array)
Console.WriteLine(el);
}
public void sortByQuantity()
{
Array.Sort((a, b) => a.Quantity.CompareTo(b.Quantity));
foreach (Book el in Array)
Console.WriteLine(el);
}
public override string ToString()
{
return String.Format("Quantity: {0}, Quantity: {1}, Name: {2}, Genre: {3},
Price: {4}", Quantity, Calories, Name, Weight, Price);}
}
}
}
1.7 Классы и операции

public class Rectangle


{
public Rectangle()
{
X1 = 0;
X2 = 0;
11
Y1 = 0;
Y2 = 0;
}
public Rectangle(double x1, double x2, double y1, double y2)
{
this.X1 = x1;
this.X2 = x2;
this.Y1 = y1;
this.Y2 = y2;
}

public double X1 { get; set; }

public double X2 { get; set; }

public double Y1 { get; set; }

public double Y2 { get; set; }

~Rectangle()
{
Console.WriteLine("Уничтожен");
}

public double GetSquare()


{
return Math.Abs(X2 - X1) * Math.Abs(Y2 - Y1);
}

public bool Square()


{
return Math.Abs(X2 - X1) == Math.Abs(Y2 - Y1);
}

}
}
1.8 Наследование

class Item
{
protected int invNumber;
protected bool taken;
12
public virtual void show()
{
Console.WriteLine($"Инвертарный номер {invNumber}");
Console.WriteLine($"Взята: {taken}");
}
public bool isAvaliable()
{
return taken == false;
}
public int getInvNumber()
{
return invNumber;
}
public void takeBook()
{
if (taken == false)
{
taken = true;
Console.WriteLine($"Книга с инвертарным номером {invNumber}
была взята");
}
else
{
Console.WriteLine($"Книга с инвертарным номером {invNumber}
уже взята!");
}
}
public void returnBook()
{
taken = false;
Console.WriteLine("Книга с инвертарным номером успешно
возвращена!");
}
public Item(int invNumber, bool taken)
{
this.invNumber = invNumber;
this.taken = taken;
}
}
class Book : Item, IShowInfo, ISort<Book>, IPolezniy
{
protected string author;
protected string title;
protected string publisher;
public int year;
13
public string getAuthor()
{
return author;
}
public string getTitle()
{
return title;
}
public string getPublisher()
{
return publisher;
}
public int getYear()
{
return year;
}
public void AddYear(int year)
{
this.year = year;
}
public static int CompareYear(Book a, Book b)
{
//Book b = (Book)obj;
return a.year.CompareTo(b.year);
}
public void SortByYear(Book[] array)
{
for (int i = 1; i < array.Length; i++)
{
Book cur = array[i];
int j = i;
while (j > 0 && cur.year < array[j - 1].year)
{
array[j] = array[j - 1];
j--;
}
array[j] = cur;
}
}
public override void show()
{
Console.WriteLine($"Автор {author}");
Console.WriteLine($"Название: {title}");
Console.WriteLine($"Издатель {publisher}");
Console.WriteLine($"Год издания: {year}");
14
Console.WriteLine($"Взята: {taken}");
}
public void AlertYear()
{
Console.WriteLine(year);
}
public void AlertBookInfo()
{
Console.WriteLine("");
Console.WriteLine("{title} - {author}. Издано в {year} году");
Console.WriteLine("");
}
public void TakenInfo()
{
if (taken)
Console.WriteLine($"Книга {title} взята");
else
Console.WriteLine($"Книга {title} не взята");
}
public Book(string author, string title, string publisher, int year, int
invNumber, bool taken) : base(invNumber, taken)
{
this.author = author;
this.title = title;
this.publisher = publisher;
this.year = year;
}
}
class Shop : Item
{
protected int volume;
protected string title;
protected int number;
protected int year;
private int getVolume()
{
return volume;
}
private string getTitle()
{
return title;
}
private int getNumber()
{
return number;
15
}
private int getYear()
{
return year;
}
public Shop(int volume, string title, int number, int year, int invNumber,
bool taken) : base(invNumber, taken)
{
this.volume = volume;
this.title = title;
this.number = number;
this.year = year;
}
}

Рисунок 1

1.9 Делегаты, события, лямбда-выражения

using System;
using System.Text.RegularExpressions;
namespace _15._1_ПП
{
delegate double Result(double x);
public delegate void Comp(int x, int y);
delegate int Operation(int x, int y);
class Program
{
class BookShielfEventArgs
{
public string Message { get; }
public int BooksNew { get; }
16
public BookShielfEventArgs(string mes, int bk)
{
Message = mes;
BooksNew = bk;
}
public BookShielfEventArgs(string mes)
{
Message = mes;
}
private static void DisplayMessage(string message)
{
Console.WriteLine(message);
}
}
class BookShielf
{
public delegate void BookHandler(object sender, BookShielfEventArgs
e);
public event BookHandler Notify;
private int books;
public int Books
{
get
{
return books;
}
set
{
if(value <= 0)
{
throw new Exception("Количество книг не может быть
меньше или равно 0!");
}
else if (books + value <= maxBooks)
{
books += value;
Notify?.Invoke(this, new BookShielfEventArgs($"{value} книг
были успешно добавлены. Теперь в шкафу {books} книг", value));
}
else if(books + value > maxBooks)
{
Console.WriteLine($"\n Максимально можно положить
{maxBooks - books} книг, а вы кладете {value}!\n");
throw new Exception("ERROR: Количество книг
недопустимо");
17
}
}
}
private int maxBooks;
public int MaxBooks
{
get
{
return maxBooks;
}
set
{
maxBooks = value;
}
}
public BookShielf(int Books, int MaxBooks)
{
this.Books = Books;
this.MaxBooks = MaxBooks;
Notify?.Invoke(this, new BookShielfEventArgs($"Класс был
успешно создан", 0));
}
public BookShielf() { Notify?.Invoke(this, new
BookShielfEventArgs($"Класс был успешно создан")); }
public void ShowInfo()
{
Console.WriteLine("");
Console.WriteLine($"В шкафу лежит {books} книг из {maxBooks}
возможных");
Console.WriteLine("");
}
public void AddBooks(int bookss)
{
this.Books = bookss;
}
}
static void Main(string[] args)
{
// Задание 1
string[] arrayString = new string[5] { "Helfow32", "grferf",
"rgrwer4", "GSEKFJ", "bekrgke42" };
string[] numStringArray = new string[CountNums(arrayString)];
int counter = 0;
for (int i = 0; i < arrayString.Length; i++)
{
18
for (int j = 0; j < arrayString[i].Length; j++)
{
if (arrayString[i][j] == '1' || arrayString[i][j] == '2' ||
arrayString[i][j] == '3' || arrayString[i][j] == '4' || arrayString[i][j] == '5' ||
arrayString[i][j] == '6' || arrayString[i][j] == '7' || arrayString[i][j] == '8' ||
arrayString[i][j] == '9' || arrayString[i][j] == '0')
{
numStringArray[counter] = arrayString[i];
j = arrayString[i].Length;
counter++;
}
}
}
counter = 0;
for (int i = 0; i < arrayString.Length; i++)
{
string now = arrayString[i];
for (int j = 0; j < now.Length; j++)
{
if (now[j] == '1' || now[j] == '2' || now[j] == '3' || now[j] ==
'4' || now[j] == '5' || now[j] == '6' || now[j] == '7' || now[j] == '8' || now[j] == '9' ||
now[j] == '0')
{
j = now.Length - 1;
numStringArray[counter] = arrayString[i];
counter++;
}
}
}
string[] noRegist = new string[CountWords(arrayString)];
Regex regex = new Regex(@"\b([a-z])+\b");
for (int i = 0; i < arrayString.Length; i++)
{
MatchCollection matches = regex.Matches(arrayString[i]);
for (int j = 0; j < matches.Count; j++)
{
noRegist[j] = Convert.ToString(matches[j]);
}
}
string[] result = new string[CountWords(arrayString) +
CountNums(arrayString)];
SetResultArray(result, numStringArray, noRegist);
WriteArray(result);
bool isEnd = false;
while (!isEnd)
19
{
Console.WriteLine("Выберите действие:");
Console.WriteLine("1 - Вывести массив");
Console.WriteLine("2 - Отсортировать массив");
Console.WriteLine("0 - Выйти из меню");
string userInput = Console.ReadLine();
switch (userInput)
{
case "1": WriteArray(result); break;
case "2": Array.Sort(result); break;
case "0": isEnd = true; break;
}
}
Comp comp;
comp = CompateNums;
Console.WriteLine("Введите два числа");
string a = Console.ReadLine();
string b = Console.ReadLine();
Regex regex = new Regex(@",");
MatchCollection matches = regex.Matches(a);
MatchCollection matches_2 = regex.Matches(b);
if (matches.Count >= 1 || matches_2.Count >= 1)
Console.WriteLine("Одно из чисел - составное");
else
comp(Convert.ToInt32(a), Convert.ToInt32(b));*/

/* Console.WriteLine("===== RESULT =====");


MathematicAction(Math.Atan);*/

BookShielf bookShielf = new BookShielf();


bookShielf.Notify += DisplayCreate;
bookShielf.Notify += DisplayMessage;
bookShielf.MaxBooks = 50;
bookShielf.AddBooks(10);
bookShielf.Notify -= DisplayCreate;
bookShielf.AddBooks(20);
bookShielf.AddBooks(5);
bookShielf.AddBooks(5);
bookShielf.AddBooks(5);
bookShielf.AddBooks(20);
bookShielf.ShowInfo();
}
private static void DisplayMessage(object sender, BookShielfEventArgs e)
{
Console.WriteLine($"Запрос на добавление: {e.BooksNew}-ти книг");
20
Console.WriteLine(e.Message);
}
private static void DisplayCreate(object sender, BookShielfEventArgs e)
{
Console.WriteLine("Класс создан");
}
public static void MathematicAction(Result finish)
{
for (double i = -7; i < 11; i += 0.4)
{
Console.WriteLine(finish(i));
}
Console.WriteLine("");
}
public static void WriteArray(string[] array)
{
Console.WriteLine("Ваш массив:");
foreach(string a in array)
{
Console.WriteLine(a);
}
Console.WriteLine("=== Конец массива ===");
}
public static int CountNums(string[] array)
{
int counter = 0;
for(int i = 0; i < array.Length; i++)
{
string now = array[i];
for(int j = 0; j < now.Length; j++)
{
if(now[j] == '1' || now[j] == '2' || now[j] == '3' || now[j] == '4' ||
now[j] == '5' || now[j] == '6' || now[j] == '7' || now[j] == '8' || now[j] == '9' ||
now[j] == '0')
{
counter++;
j = now.Length;
}
}
}
return counter;
}
public static int CountWords(string[] array)
{
Regex regex = new Regex(@"\b([A-Z])+\b");
21
int r = 0;
for (int i = 0; i < array.Length; i++)
{
MatchCollection matches = regex.Matches(array[i]);
r += matches.Count;
}
return r;
}
public static void SetResultArray(string[] array, string[] array_2, string[]
array_3)
{
int counter = 0;
for (int i = 0; i < array_2.Length; i++)
{
array[counter] = array_2[i];
counter++;
}
for (int i = 0; i < array_3.Length; i++)
{
array[counter] = array_3[i];
counter++;
}
}
public static void CompateNums(int a, int b)
{
if (a < b)
Console.WriteLine($"A < B на {b - a}");
else if (b < a)
Console.WriteLine($"B < A на {a - b}");
else
Console.WriteLine($"A = B");
}
}
}

1.10 Коллекции

List<Student> students = new List<Student>(2);


for (int i = 0; i < 2; i++)
{
Console.WriteLine($"Заполните студента №{i + 1} из {2}");
Console.WriteLine("ФИО: ");
string fio = Console.ReadLine();
Console.WriteLine("Введите 3 оценки: (математика, русский,
физика)");
22
int[] arrMark = new int[3];
int inp = 0;
for (int j = 0; j < 3; j++)
{
try
{
inp = Convert.ToInt32(Console.ReadLine());
}
catch (Exception exp)
{
Console.WriteLine(exp.Message);
}
arrMark[j] = inp;
}
students.Add(new Student(fio, arrMark));
}
Console.WriteLine($"Размер листа равен {students.Count}");
foreach (Student i in students)
{
Console.WriteLine($"ФИО студента: {i.FIO}");
Console.WriteLine($"Математика: {i.marks[0]}, Русский:
{i.marks[1]}, Физика: {i.marks[2]}");
}
Console.WriteLine("\nДобавляем Ивасика...\n");
students.Add(new Student("Зубов Ивасик Анатольевич", new int[] {
5, 5, 9 }));
foreach (Student i in students)
{
Console.WriteLine($"ФИО студента: {i.FIO}");
Console.WriteLine($"Математика: {i.marks[0]}, Русский:
{i.marks[1]}, Физика: {i.marks[2]}");
}
Console.WriteLine($"Размер листа {students.Count}");
Console.WriteLine("\nЧистим лист (одна из оценок ниже 4)\n");
for (int i = 0; i < students.Count; i++)
{
if (students[i].marks[0] < 4 || students[i].marks[1] < 4 ||
students[i].marks[2] < 4)
students.RemoveAt(i);
}
foreach (Student i in students)
{
Console.WriteLine($"ФИО студента: {i.FIO}");
Console.WriteLine($"Математика: {i.marks[0]}, Русский:
{i.marks[1]}, Физика: {i.marks[2]}");
23
}

1.11 Интерфейсы

interface ISquare
{
void Square();
int HalfP();
int P();
int HalfLine(int a);
}
class Triangle : ISquare
{
private int a;
private int b;
private int c;
public void Square()
{
Console.WriteLine($"Площадь равна {HalfP() * (HalfP() - a) *
(HalfP() - b) * (HalfP() - c)}");
}
public int HalfP()
{
return (a + b + c) / 2;
}
public int P()
{
return HalfP() + HalfP();
}
public int HalfLine(int a)
{
return a / 2;
}
public Triangle (int a, int b, int c)
{
this.a = a;
this.b = b;
this.c = c;
}
}

24
1.12 Обобщения

Queue<int> numbers_1 = new Queue<int>();


numbers_1.Enqueue(1);
numbers_1.Enqueue(2);
numbers_1.Enqueue(3);
Console.WriteLine("Очередь 1");
foreach (int a in numbers_1)
Console.WriteLine(a);
Queue<int> numbers_2 = new Queue<int>();
numbers_2.Enqueue(10);
numbers_2.Enqueue(11);
numbers_2.Enqueue(12);
Console.WriteLine("Очередь 2");
foreach (int a in numbers_2)
Console.WriteLine(a);
Queue<int> result = new Queue<int>();
for (int i = 0; i < 3; i++)
{
result.Enqueue(numbers_1.Dequeue());
}
for (int i = 0; i < 3; i++)
{
result.Enqueue(numbers_2.Dequeue());
}
Console.WriteLine("Полученная очередь из двух:");
foreach (int a in result)
Console.WriteLine(a);

25
2 Разработка приложений средствами библиотеки классов
Microsoft .NET Framework

interface IShowInfo
{
void show();
}
interface IAdd
{
int AddYear(int year);
}
interface ISort<T>
{
void SortByYear(T[] array);
}
class Item
{
protected int invNumber;
protected bool taken;
public virtual void show()
{
Console.WriteLine($"Инвертарный номер {invNumber}");
Console.WriteLine($"Взята: {taken}");
}
public bool isAvaliable()
{
return taken == false;
}
public int getInvNumber()
{
return invNumber;
}
public void takeBook()
{
if (taken == false)
{
taken = true;
Console.WriteLine($"Книга с инвертарным номером {invNumber}
была взята");
}
else
{
Console.WriteLine($"Книга с инвертарным номером {invNumber}
уже взята!");
}

26
}

public void returnBook()


{
taken = false;
Console.WriteLine($"Книга с инвертарным номером {invNumber}
успешно возвращена!");
}
public Item(int invNumber, bool taken)
{
this.invNumber = invNumber;
this.taken = taken;
}
}
class Book : Item, IShowInfo, ISort<Book>, IPolezniy
{
protected string author;
protected string title;
protected string publisher;
public int year;
public string getAuthor()
{
return author;
}
public string getTitle()
{
return title;
}
public string getPublisher()
{
return publisher;
}
public int getYear()
{
return year;
}
public void AddYear(int year)
{
this.year = year;
}
public static int CompareYear(Book a, Book b)
{
//Book b = (Book)obj;
return a.year.CompareTo(b.year);
}
27
public void SortByYear(Book[] array)
{
for (int i = 1; i < array.Length; i++)
{
Book cur = array[i];
int j = i;
while (j > 0 && cur.year < array[j - 1].year)
{
array[j] = array[j - 1];
j--;
}
array[j] = cur;
}
}
public override void show()
{
Console.WriteLine($"Автор {author}");
Console.WriteLine($"Название: {title}");
Console.WriteLine($"Издатель {publisher}");
Console.WriteLine($"Год издания: {year}");
Console.WriteLine($"Взята: {taken}");
}
public void AlertYear()
{
Console.WriteLine(year);
}
public void AlertBookInfo()
{
Console.WriteLine("");
Console.WriteLine($"{title} - {author}. Издано в {year} году");
Console.WriteLine("");
}
public void TakenInfo()
{
if (taken)
Console.WriteLine($"Книга {title} взята");
else
Console.WriteLine($"Книга {title} не взята");
}
public Book(string author, string title, string publisher, int year, int
invNumber, bool taken) : base(invNumber, taken)
{
this.author = author;
this.title = title;
this.publisher = publisher;
28
this.year = year;
}
}
class Shop : Item
{
protected int volume;
protected string title;
protected int number;
protected int year;
private int getVolume()
{
return volume;
}
private string getTitle()
{
return title;
}
private int getNumber()
{
return number;
}
private int getYear()
{
return year;
}
public Shop(int volume, string title, int number, int year, int invNumber,
bool taken) : base(invNumber, taken)
{
this.volume = volume;
this.title = title;
this.number = number;
this.year = year;
}
}

29
3 Программирование быстродействующих информационных систем

Задание 1. Сериализовать все объекты имеющихся классов в иерархии с помощью


классов BinaryFormatter, SoapFormatter, XmlFormatter.

using System;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;

namespace XmlFormat
{
[Serializable]

class Array
{
public Array(int[] numbers)
{
array = numbers;
}
public int countNegatives()
{
return array.Count((x) => x > 0);
}
public int sumElemsOnEvenPos()
{
return array.Where((x, idx) => idx % 2 == 0).Sum();
}
private int[] array;
}

class DoubleArray
{
public DoubleArray(int[,] numbers)
{
this.numbers = numbers;
}

public int[,] numbers { get; private set; }

public int CountNegatives()


{
int count = 0;

30
for (int i = 0; i < numbers.GetLength(0); ++i)
{
for (int j = 0; j < numbers.GetLength(1); ++j)
{
if (numbers[i, j] < 0)
{
++count;
}
}
}
return count;
}

public int SumElemsOnEvenPos()


{
int sum = 0;

for (int i = 0; i < numbers.GetLength(0); ++i)


{
if (numbers[i, i] > 0)
{
sum += numbers[i, i];
}
}
return sum;
}

public int SumElemsOnEvenPosPoboch()


{
int sum = 0;
for (int i = 0; i < numbers.GetLength(0); ++i)
{
for (int j = 0; j < numbers.GetLength(0); ++j)
{
if (i + j == numbers.GetLength(0))
{
sum += numbers[i, j];
}
}
}
return sum;
}
}

31
class Program
{
static void Main(string[] args)
{
Array array = new Array(new int[] { 1,2,3,10,22,15,6,4});
Console.WriteLine("Объект создан");
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = new FileStream("./XmlFormat.dat",
FileMode.OpenOrCreate))
{
formatter.Serialize(fs, array);

Console.WriteLine("Объект сериализован");
}

using (FileStream fs = new FileStream("./XmlFormat.dat",


FileMode.OpenOrCreate))
{
Array newArray = (Array)formatter.Deserialize(fs);

Console.WriteLine("Объект десериализован");
Console.WriteLine();
}

Console.ReadLine();

}
}
}
using System;
using System.Xml;

namespace XmlFormatter
{
class Program
{
static void Main(string[] args)
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load("./array.xml");
// получим корневой элемент
XmlElement xRoot = xDoc.DocumentElement;
// обход всех узлов в корневом элементе
foreach (XmlNode xnode in xRoot)
32
{
// получаем атрибут name
if (xnode.Attributes.Count > 0)
{
XmlNode attr = xnode.Attributes.GetNamedItem("name");
if (attr != null)
Console.WriteLine(attr.Value);
}
// обходим все дочерние узлы элемента user
foreach (XmlNode childnode in xnode.ChildNodes)
{
// если узел - company
if (childnode.Name == "company")
{
Console.WriteLine($"Компания: {childnode.InnerText}");
}
// если узел age
if (childnode.Name == "age")
{
Console.WriteLine($"Возраст: {childnode.InnerText}");
}
}
Console.WriteLine();
}
Console.Read();
}
}
}

33
Заключение

За время прохождения учебной практики по программированию были закреплены


навыки разработки программ с использованием принципов объектно-ориентированного
программирования, продемонстрирована работа с такими элементами как классы,
интерфейсы, делегаты, события, коллекции, исследован механизм наследования,
продемонстрировано умение создавать LINQ-запросы.
Во время практики удалось накопить неоценимый опыт разработки приложений в
среде Microsoft Visual Studio на языке C#, развить умения самостоятельно находить
оптимальный метод решения задачи.
Во время практики были закреплены умения
- разрабатывать приложения с использованием объектно-ориентированного подхода
к программированию на платформе .NET Framework;
- разрабатывать приложения средствами библиотеки классов Microsoft .NET
Framework;
- программировать быстродействующие информационные системы;
- демонстрировать свои проекты.

34
Список информационных источников

1 Албахари, Дж. C#6.0. Справочник. Полное описание языка / Дж. Албахари, Б.


Албахари. – 6-е изд. – М. : ООО «И.Д. Вильямс», 2016. – 1040 с.: ил.

2 Албахари, Дж. LINQ. Карманный справочник / Дж. Албахари, Б. Албахари. –


СПб. : БХВ-Петербург, 2009. – 240 с.: ил.

3 Багласова, Т.Г. Методические указания по оформлению курсовых работ,


дипломных проектов и отчетов для учащихся по специальности 2-40 01 01 «Программное
обеспечение технологий» / Т.Г. Багласова. – Минск : КБП, 2013. – 29 с.: ил.

4 Гойвертс, Я. Регулярные выражения. Сборник рецептов / Я. Гойвертс, Ст. Левитан.


– 2-е изд. – СПб.: Символ-Плюс, 2015. – 704 с.: ил.

5 Дейтел, П. Как программировать на Visual C# 2012 / П. Дейтел, Х. Дейтел. – 5-е


изд. – СПб.: Питер, 2014. – 864 с.: ил.

6 Дэвис, А. Асинхронное программирование в C# 5.0 / А. Дэвис. – М.: ДМК Пресс,


2013. – 120 с.: ил.

7 Зиборов, В.В. Visual C# 2012 на примерах / В.В Зиборов. – СПб.: БХВ-Петербург,


2013. – 480 с.: ил.

8 Рихтер, Дж. CLR via C#. Программирование на платформе Microsoft .NET


Framework 4.5 на языке C# / Дж. Рихтер. – 4-е изд. – СПб.: Питер, 2013. – 896 с.: ил.

9 Стиллмен, Э. Изучаем C# / Э. Стиллмен, Дж. Грин. – 3-е изд. – СПб.: Питер, 2014.
– 816 с.: ил.

10 Троелсен, Э. Язык программирования C# 5.0 и платформа .NET 4.5 / Э. Троелсен. –


6-е изд. – М.: ООО «И.Д. Вильямс», 2013. – 1312 с.: ил.

11 Фицджеральд, М. Регулярные выражения: основы / М. Фицджеральд. – М.: ООО


«И.Д. Вильямс», 2015. – 144 с.: ил.

12 Шарп, Джон. Microsoft Visual C#. Подробное руководство / Джон Шарп. – 8-е изд.
– – СПб.: Питер, 2017. – 848 с.: ил.

13 Полное руководство по языку программирования С# 8.0 и платформе .NET Core 3


[Электронный ресурс] / METANIT.COM.Сайт о программировании. – metanit.com, 2012-2019.
– Режим доступа: http://metanit.com/sharp/tutorial. – Дата доступа: 20.09.2019.

14 Уроки по С# и платформе .NET Framework [Электронный ресурс]/ ProfessorWeb. –


Режим доступа: http://professorweb.ru. – Дата доступа: 20.12.2019.

15 Руководство по программированию на языке C# [Электронный ресурс]. –


Microsoft.NET, 2019. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/csharp/
programming-guide/. – Дата доступа: 10.10.2019.

35