Главная страница

Методические рекомендации по выполнению практических работ по междисциплинарному курсу


Скачать 2.6 Mb.
НазваниеМетодические рекомендации по выполнению практических работ по междисциплинарному курсу
Дата05.09.2022
Размер2.6 Mb.
Формат файлаpdf
Имя файлаMU_PR_MDK_01_01.pdf
ТипМетодические рекомендации
#663423
страница10 из 13
1   ...   5   6   7   8   9   10   11   12   13
Создание
проекта выберите C# в списке языков. Затем выберите Windows в списке платформ и Консоль в списке типов проектов.
Применив фильтры по языку, платформе и типу проекта, выберите шаблон Консольное
приложение и щелкните Далее.

Примечание
Если шаблон Консольное приложение отсутствует, его можно установить в окне Создание проекта. В сообщении Не нашли то, что искали? выберите ссылку Установка других средств и компонентов.
После этого в Visual Studio Installer выберите рабочую нагрузку Кроссплатформенная
разработка .NET Core.
Затем нажмите кнопку Изменить в Visual Studio Installer. Вам может быть предложено сохранить результаты работы; в таком случае сделайте это. Выберите Продолжить, чтобы установить рабочую нагрузку. После этого вернитесь к шагу 2 в процедуре Создание
проекта.
4.
В поле Имя проекта окна Настроить новый проект введите Calculator. Затем щелкните Далее.
5.
В окне Дополнительные сведения для целевой платформы должна быть указана версия .NET Core 3.1. Если это не так, выберите .NET Core 3.1. Затем нажмите Создать.

Visual Studio открывает новый проект, включающий код по умолчанию "Hello World".
Создание приложения
Во-первых, мы рассмотрим некоторые базовые расчеты для целых чисел в C#. Затем мы добавим код для создания простого калькулятора. После этого нам предстоит отладить приложение, чтобы найти и исправить ошибки. И, наконец, мы оптимизируем код для повышения эффективности.
Вычисления с целыми числами
Давайте начнем с базовых расчетов целых чисел в C#.
1.
В редакторе кода удалите созданный по умолчанию код Hello, World!.
В частности, удалите строку с текстом: Console.WriteLine("Hello World!");.
2.
Вместо нее введите следующий код:
C#Копировать int a = 42; int b = 119; int c = a + b;
Console.WriteLine(c);
Console.ReadKey();
Обратите внимание на то, что при этом функция IntelliSense в Visual Studio предлагает возможность автовыполнения записи.
Примечание

Следующая анимация не предназначена для дублирования предыдущего кода. Она предназначена только для того, чтобы продемонстрировать, как работает функция автозаполнения.
3.
Нажмите зеленую кнопку Пуск или клавишу F5 рядом с калькулятором, чтобы создать и запустить программу.
Откроется окно консоли с суммой 42 + 119, которая равна 161.
4.
(Необязательно) Можно изменить оператор, чтобы изменить результат. Например, можно изменить оператор + в строке кода int c = a + b; на - для вычитания, * для умножения или / для деления. Затем при запуске программы результат также изменится.
5.
Закройте окно консоли.
Добавление кода для создания калькулятора
Давайте продолжим, добавляя более сложный набор кода калькулятора в проект.
1.
Удалите весь код, который отображается в редакторе кода.
2.
Введите или вставьте в редактор кода следующий код:
C#Копировать using System; namespace Calculator
{ class Program
{ static void Main(string[] args)
{
// Declare variables and then initialize to zero. int num1 = 0; int num2 = 0;
// Display title as the C# console calculator app.
Console.WriteLine("Console Calculator in C#\r");
Console.WriteLine("------------------------\n");
// Ask the user to type the first number.

Console.WriteLine("Type a number, and then press Enter"); num1 = Convert.ToInt32(Console.ReadLine());
// Ask the user to type the second number.
Console.WriteLine("Type another number, and then press Enter"); num2 = Convert.ToInt32(Console.ReadLine());
// Ask the user to choose an option.
Console.WriteLine("Choose an option from the following list:");
Console.WriteLine("\ta - Add");
Console.WriteLine("\ts - Subtract");
Console.WriteLine("\tm - Multiply");
Console.WriteLine("\td - Divide");
Console.Write("Your option? ");
// Use a switch statement to do the math. switch (Console.ReadLine())
{ case "a":
Console.WriteLine($"Your result: {num1} + {num2} = " + (num1 + num2)); break; case "s":
Console.WriteLine($"Your result: {num1} - {num2} = " + (num1 - num2)); break; case "m":
Console.WriteLine($"Your result: {num1} * {num2} = " + (num1 * num2)); break; case "d":
Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2)); break;
}
// Wait for the user to respond before closing.
Console.Write("Press any key to close the Calculator console app...");
Console.ReadKey();
}
}
}
3.
Выберите Calculator, чтобы запустить программу, или нажмите клавишу F5.
Откроется окно консоли.
4.
Просмотрите приложение в окне консоли и сложите числа 42 и 119, пользуясь предложенными подсказками.
Теперь приложение должно выглядеть как на следующем снимке экрана:

Добавление функциональных возможностей в калькулятор
Давайте изменим этот код, чтобы добавить функциональные возможности.
Обработка десятичных чисел
Пока наше приложение принимает и возвращает только целые числа. Вычисления можно сделать точнее, добавив код для обработки десятичных чисел.
Как показано на следующем снимке экрана, при делении числа 42 на число 119 вы получите результат 0, что для нас недостаточно точно.
Давайте исправим код, чтобы он обрабатывал десятичные числа.
1.
Нажмите клавиши CTRL + H, чтобы открыть элемент управления Найти и
заменить.
2.
Измените каждый экземпляр переменной int на float.
Переключите Учитывать регистр (ALT+C) и Слово целиком (ALT+W) в элементе управления Найти и заменить.

3.
Еще раз запустите приложение калькулятора и разделите число 42 на число 119.
Обратите внимание, что теперь приложение возвращает не просто ноль, а десятичное число.
Но пока приложение только возвращает десятичные числа. Давайте изменим код так, чтобы приложение могло выполнять операции над десятичными числами.
1.
Используйте элемент управления Найти и заменить (CTRL + H), чтобы изменить каждый экземпляр переменной float на double и каждый экземпляр метода Convert.ToInt32 на Convert.ToDouble.
2.
Запустите приложение калькулятора и разделите число 42,5 на число 119,75.
Обратите внимание на то, что теперь приложение принимает и возвращает значения десятичные числа.

(Количество десятичных разрядов мы исправим с помощью инструкций по пересмотру кода.)
Отладка приложения
Мы уже улучшили наше простое приложение калькулятора, но пока оно не умеет обрабатывать исключения, включая ошибки во входных данных.
Например, при попытке разделить любое число на ноль или при вводе буквенного символа там, где приложение ожидает число (или наоборот), приложение может перестать работать, вернет ошибку или непредвиденный нечисловой результат.
Давайте рассмотрим несколько типичных ошибок во входных данных, найдем их с помощью отладчика, если они там есть, и исправим код, чтобы устранить их.
Совет
Дополнительные сведения об отладчике и принципах его работы см. в разделе Знакомство с отладчиком Visual Studio.
Исправление ошибки деления на ноль
При попытке деления числа на ноль консольное приложение может перестать отвечать, а затем покажет, что именно не так в редакторе кода.
Примечание
Иногда приложение не зависает, а отладчик не отображает ошибку деления на ноль. Вместо этого приложение может вернуть непредвиденный нечисловой результат, например символ бесконечности. Приведенное ниже исправление кода по-прежнему применимо.
Давайте изменим код, чтобы он обрабатывал такую ошибку.
1.
Удалите код между case "d": и комментарием с текстом // Wait for the user to respond before closing.
2.
Замените его следующим кодом.
C#Копировать
// Ask the user to enter a non-zero divisor until they do so. while (num2 == 0)
{
Console.WriteLine("Enter a non-zero divisor: "); num2 = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine($"Your result: {num1} / {num2} = " + (num1 / num2)); break;
}
Когда вы добавите новый код, раздел с оператором switch будет выглядеть так, как показано на следующем снимке экрана:

Теперь при делении любого числа на ноль приложение предложит ввести другое число. Даже лучше: Оно будет снова и снова повторять этот запрос, пока не получит значение, отличающееся от нуля.
Исправление ошибки формата
Если вы введете буквенный символ там, где приложение ожидает цифру (или наоборот), приложение консоли перестает работать. Visual Studio отображает причину проблемы в редакторе кода.

Чтобы устранить эту ошибку, мы выполним рефакторинг введенного ранее кода.
Пересмотр кода
Чтобы не делегировать всю обработку кода классу program, мы разделим приложение на два класса: Calculator и Program.
Класс Calculator выполняет основную часть работы для вычислений, а класс Program отвечает за пользовательский интерфейс и перехват ошибок.
Итак, начнем.
1.
Удалите все в пространстве имен Calculator между открывающей и закрывающей фигурными скобками:
C#Копировать using System; namespace Calculator
{
}
2.
Теперь добавьте новый класс Calculator со следующим содержимым:
C#Копировать class Calculator
{ public static double DoOperation(double num1, double num2, string op)
{ double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error.
// Use a switch statement to do the math. switch (op)
{ case "a": result = num1 + num2; break; case "s": result = num1 - num2; break; case "m": result = num1 * num2; break; case "d":
// Ask the user to enter a non-zero divisor.
if (num2 != 0)
{ result = num1 / num2;
} break;
// Return text for an incorrect option entry. default: break;
} return result;
}
}
3.
Затем добавьте новый класс Program со следующим содержимым:
C#Копировать class Program
{ static void Main(string[] args)
{ bool endApp = false;
// Display title as the C# console calculator app.
Console.WriteLine("Console Calculator in C#\r");
Console.WriteLine("------------------------\n"); while (!endApp)
{
// Declare variables and set to empty. string numInput1 = ""; string numInput2 = ""; double result = 0;
// Ask the user to type the first number.
Console.Write("Type a number, and then press Enter: "); numInput1 = Console.ReadLine(); double cleanNum1 = 0; while (!double.TryParse(numInput1, out cleanNum1))
{
Console.Write("This is not valid input. Please enter an integer value: "); numInput1 = Console.ReadLine();
}
// Ask the user to type the second number.
Console.Write("Type another number, and then press Enter: "); numInput2 = Console.ReadLine(); double cleanNum2 = 0; while (!double.TryParse(numInput2, out cleanNum2))
{
Console.Write("This is not valid input. Please enter an integer value: "); numInput2 = Console.ReadLine();
}

// Ask the user to choose an operator.
Console.WriteLine("Choose an operator from the following list:");
Console.WriteLine("\ta - Add");
Console.WriteLine("\ts - Subtract");
Console.WriteLine("\tm - Multiply");
Console.WriteLine("\td - Divide");
Console.Write("Your option? "); string op = Console.ReadLine(); try
{ result = Calculator.DoOperation(cleanNum1, cleanNum2, op); if (double.IsNaN(result))
{
Console.WriteLine("This operation will result in a mathematical error.\n");
} else Console.WriteLine("Your result: {0:0.##}\n", result);
} catch (Exception e)
{
Console.WriteLine("Oh no! An exception occurred trying to do the math.\n - Details: "
+ e.Message);
}
Console.WriteLine("------------------------\n");
// Wait for the user to respond before closing.
Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: "); if (Console.ReadLine() == "n") endApp = true;
Console.WriteLine("\n"); // Friendly linespacing.
} return;
}
}
4.
Выберите Calculator, чтобы запустить программу, или нажмите клавишу F5.
5.
Разделите число 42 на число 119, следуя подсказкам на экране. Теперь приложение должно выглядеть как на следующем снимке экрана:

Обратите внимание на то, что вы можете ввести несколько выражений, не закрывая консольное приложение. Также мы сократили количество десятичных разрядов в результате.
Закрытие приложения
1.
Закройте приложение калькулятора, если оно еще открыто.
2.
Закройте область вывода в Visual Studio.
3.
В Visual Studio нажмите клавиши CTRL+S, чтобы сохранить приложение.
4.
Закройте Visual Studio.
Полный код
В этом руководстве мы внесли много изменений в приложение "Калькулятор". Теперь оно более эффективно использует вычислительные ресурсы и обрабатывает большинство ошибок во входных данных.
Ниже мы собрали в один блок весь код:
C#Копировать using System; namespace Calculator
{ class Calculator

{ public static double DoOperation(double num1, double num2, string op)
{ double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error.
// Use a switch statement to do the math. switch (op)
{ case "a": result = num1 + num2; break; case "s": result = num1 - num2; break; case "m": result = num1 * num2; break; case "d":
// Ask the user to enter a non-zero divisor. if (num2 != 0)
{ result = num1 / num2;
} break;
// Return text for an incorrect option entry. default: break;
} return result;
}
} class Program
{ static void Main(string[] args)
{ bool endApp = false;
// Display title as the C# console calculator app.
Console.WriteLine("Console Calculator in C#\r");
Console.WriteLine("------------------------\n"); while (!endApp)
{
// Declare variables and set to empty. string numInput1 = ""; string numInput2 = ""; double result = 0;
// Ask the user to type the first number.
Console.Write("Type a number, and then press Enter: "); numInput1 = Console.ReadLine();
double cleanNum1 = 0; while (!double.TryParse(numInput1, out cleanNum1))
{
Console.Write("This is not valid input. Please enter an integer value: "); numInput1 = Console.ReadLine();
}
// Ask the user to type the second number.
Console.Write("Type another number, and then press Enter: "); numInput2 = Console.ReadLine(); double cleanNum2 = 0; while (!double.TryParse(numInput2, out cleanNum2))
{
Console.Write("This is not valid input. Please enter an integer value: "); numInput2 = Console.ReadLine();
}
// Ask the user to choose an operator.
Console.WriteLine("Choose an operator from the following list:");
Console.WriteLine("\ta - Add");
Console.WriteLine("\ts - Subtract");
Console.WriteLine("\tm - Multiply");
Console.WriteLine("\td - Divide");
Console.Write("Your option? "); string op = Console.ReadLine(); try
{ result = Calculator.DoOperation(cleanNum1, cleanNum2, op); if (double.IsNaN(result))
{
Console.WriteLine("This operation will result in a mathematical error.\n");
} else Console.WriteLine("Your result: {0:0.##}\n", result);
} catch (Exception e)
{
Console.WriteLine("Oh no! An exception occurred trying to do the math.\n -
Details: " + e.Message);
}
Console.WriteLine("------------------------\n");
// Wait for the user to respond before closing.
Console.Write("Press 'n' and Enter to close the app, or press any other key and Enter to continue: "); if (Console.ReadLine() == "n") endApp = true;
Console.WriteLine("\n"); // Friendly linespacing.

} return;
}
}
}

Практическая работа №20 Разработка приложения с несколькими формами.
Добавление нового проекта
Реальный код связан со множеством проектов, объединенных в решение. Давайте добавим еще один проект в приложение калькулятора. Это будет библиотека классов, предоставляющая некоторые функции калькулятора.
1.
В
Visual
Studio можно использовать команду меню верхнего уровня Файл > Добавить > Новый проект, чтобы добавить новый проект, но можно также щелкнуть правой кнопкой мыши имя существующего проекта ("узел проекта") и открыть контекстное меню проекта. Это контекстное меню предлагает различные варианты добавления функциональных возможностей в проекты. Щелкните правой кнопкой мыши узел проекта в обозревателе
решений и последовательно выберите Добавить > Новый проект.
2.
Выберите шаблон проекта C# Библиотека классов (.NET Standard) .


3.
Введите имя проекта CalculatorLibrary и щелкните Создать. Visual Studio создаст новый проект и добавит его в решение.
4.
Вместо Class1.cs переименуйте файл в CalculatorLibrary.cs. Можно щелкнуть имя в обозреватель решений, чтобы указать другое имя, или щелкнуть правой кнопкой мыши и выбрать Переименовать или нажать клавишу F2.
Возможно, вам будет предложено переименовать все ссылки на Class1 в файле. Вы можете выбрать любой ответ, так как вы замените код на следующем шаге.
5.
Теперь необходимо добавить ссылку на проект, чтобы первый проект мог использовать API, предоставляемые новой библиотекой классов. Щелкните правой кнопкой мыши узел Ссылки в первом проекте и выберите Добавить ссылку на проект.
Откроется диалоговое окно Диспетчер ссылок. Это диалоговое окно позволяет добавлять ссылки на другие проекты, а также сборки и библиотеки DLL COM, необходимые вашим проектам.


6.
В диалоговом окне Диспетчер
ссылок установите флажок для проекта CalculatorLibrary и выберите ОК. Ссылка на проект отображается в узле Проекты в обозревателе решений.
7.
В файле Program.cs выберите класс Calculator и весь его код и нажмите CTRL+X, чтобы вырезать его из Program.cs. Затем в CalculatorLibrary, в файле CalculatorLibrary.cs, вставьте код в пространство имен CalculatorLibrary. Затем объявите класс калькулятора как public, чтобы предоставить его за пределами библиотеки. Теперь код в CalculatorLibrary.cs должен выглядеть следующим образом:
C#Копировать using System; namespace CalculatorLibrary
{ public class Calculator
{ public static double DoOperation(double num1, double num2, string op)
{ double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error.
// Use a switch statement to do the math. switch (op)
{ case "a": result = num1 + num2; break; case "s": result = num1 - num2; break; case "m": result = num1 * num2; break; case "d":
// Ask the user to enter a non-zero divisor.
if (num2 != 0)
{ result = num1 / num2;
} break;
// Return text for an incorrect option entry. default: break;
} return result;
}
}
}
8.
Первый проект содержит ссылку, но вы увидите ошибку, так как вызов
Calculator.DoOperation не разрешается. Это связано с тем, что CalculatorLibrary находится в другом пространстве имен, поэтому добавьте пространство имен CalculatorLibrary для полной ссылки.
C#Копировать result = CalculatorLibrary.Calculator.DoOperation(cleanNum1, cleanNum2, op);
Попробуйте добавить директиву using в начало файла:
C#Копировать using CalculatorLibrary;
Это изменение позволяет удалить пространство имен CalculatorLibrary из места вызова, но это приводит к неоднозначности. Является ли Calculator классом в CalculatorLibrary или
Calculator является пространством имен? Чтобы устранить неоднозначность, переименуйте пространство имен CalculatorProgram.
C#Копировать namespace CalculatorProgram
Ссылки на библиотеки .NET: запись в журнал
1.
Предположим, что теперь нужно добавить журнал всех операций и записать его в текстовый файл. Класс .NET Trace предоставляет эти функции. (Это удобно и для основных методов отладки вывода.) Класс Trace находится в пространстве имен
System.Diagnostics. Поскольку нам понадобятся классы System.IO, такие как StreamWriter, следует начать с добавления директив using.
C#Копировать using System.IO; using System.Diagnostics;
2.
Просмотрев, как используется класс Trace, придерживайтесь ссылки на класс, связанный с файловым потоком. Это означает, что калькулятор будет работать лучше в качестве объекта, поэтому добавим конструктор.
C#Копировать public Calculator()
{
StreamWriter logFile = File.CreateText("calculator.log");
Trace.Listeners.Add(new TextWriterTraceListener(logFile));
Trace.AutoFlush = true;
Trace.WriteLine("Starting Calculator Log");
Trace.WriteLine(String.Format("Started {0}", System.DateTime.Now.ToString()));
} public double DoOperation(double num1, double num2, string op)
{

3.
И нам нужно изменить статический метод DoOperation на метод-член. Давайте также добавим выходные данные в каждый расчет для журнала, чтобы DoOperation выглядел следующим образом:
C#Копировать public double DoOperation(double num1, double num2, string op)
{ double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error.
// Use a switch statement to do the math. switch (op)
{ case "a": result = num1 + num2;
Trace.WriteLine(String.Format("{0} + {1} = {2}", num1, num2, result)); break; case "s": result = num1 - num2;
Trace.WriteLine(String.Format("{0} - {1} = {2}", num1, num2, result)); break; case "m": result = num1 * num2;
Trace.WriteLine(String.Format("{0} * {1} = {2}", num1, num2, result)); break; case "d":
// Ask the user to enter a non-zero divisor. if (num2 != 0)
{ result = num1 / num2;
Trace.WriteLine(String.Format("{0} / {1} = {2}", num1, num2, result));
} break;
// Return text for an incorrect option entry. default: break;
} return result;
}
4.
Теперь вернемся к файлу Program.cs. Статический вызов помечен красной волнистой линией. Чтобы устранить эту проблему, создайте переменную calculator, добавив следующую строку непосредственно перед циклом while:
C#Копировать
Calculator calculator = new Calculator();
Измените сайт вызова для DoOperation следующим образом:
C#Копировать result = calculator.DoOperation(cleanNum1, cleanNum2, op);
5.
Запустите программу еще раз, а затем щелкните правой кнопкой мыши узел проекта, выберите Открыть папку в проводнике файлов, перейдите к выходной папке, например bin/Debug/netcoreapp3.1, и откройте файл calculator.log.
Выходные данныеКопировать
Starting Calculator Log
Started 7/9/2020 1:58:19 PM

1 + 2 = 3 3 * 3 = 9
Добавление пакета NuGet: запись в JSON-файл
1.
Теперь предположим, что мы хотим вывести операции в формате JSON — популярном и переносимом формате для хранения данных объекта. Чтобы реализовать эту функциональность, необходимо сослаться на пакет NuGet Newtonsoft.Json. Пакеты
NuGet являются основным средством распространения библиотек классов
.NET. В обозревателе решений щелкните правой кнопкой мыши узел Ссылки для проекта CalculatorLibrary и выберите Управление пакетами NuGet.
Откроется диспетчер пакетов NuGet.


2.
Найдите пакет Newtonsoft.Json и нажмите Установить.
Пакет будет загружен и добавлен в проект, а в узле "Ссылки" в обозревателе
решений появится новая запись.
3.
Добавьте директиву using для System.IO и пакета Newtonsoft.Json в начало файла CalculatorLibrary.cs.
C#Копировать using Newtonsoft.Json;
4.
Теперь замените конструктор для калькулятора на следующий код и создайте объект члена JsonWriter:
C#Копировать
JsonWriter writer; public Calculator()
{
StreamWriter logFile = File.CreateText("calculatorlog.json"); logFile.AutoFlush = true; writer = new JsonTextWriter(logFile); writer.Formatting = Formatting.Indented; writer.WriteStartObject(); writer.WritePropertyName("Operations"); writer.WriteStartArray();
}
5.
Измените метод DoOperation, чтобы добавить код модуля записи JSON:
C#Копировать public double DoOperation(double num1, double num2, string op)
{
double result = double.NaN; // Default value is "not-a-number" which we use if an operation, such as division, could result in an error. writer.WriteStartObject(); writer.WritePropertyName("Operand1"); writer.WriteValue(num1); writer.WritePropertyName("Operand2"); writer.WriteValue(num2); writer.WritePropertyName("Operation");
// Use a switch statement to do the math. switch (op)
{ case "a": result = num1 + num2; writer.WriteValue("Add"); break; case "s": result = num1 - num2; writer.WriteValue("Subtract"); break; case "m": result = num1 * num2; writer.WriteValue("Multiply"); break; case "d":
// Ask the user to enter a non-zero divisor. if (num2 != 0)
{ result = num1 / num2; writer.WriteValue("Divide");
} break;
// Return text for an incorrect option entry. default: break;
} writer.WritePropertyName("Result"); writer.WriteValue(result); writer.WriteEndObject(); return result;
}
6.
Необходимо добавить метод для завершения синтаксиса JSON после ввода пользователем всех данных для операции.
C#Копировать public void Finish()
{ writer.WriteEndArray(); writer.WriteEndObject(); writer.Close();
}
7.
В Program.cs добавьте вызов Finish в конце.
C#Копировать

// And call to close the JSON writer before return calculator.Finish(); return;
}
8.
Выполните сборку приложения и запустите его. Попробуйте выполнить несколько операций и закройте приложение, используя команду "n". Теперь откройте файл calculatorlog.json, который будет содержать примерно следующее.
JSONКопировать
{
"Operations": [
{
"Operand1": 2.0,
"Operand2": 3.0,
"Operation": "Add",
"Result": 5.0
},
{
"Operand1": 3.0,
"Operand2": 4.0,
"Operation": "Multiply",
"Result": 12.0
}
]
}
Отладка. Установка точки останова и попадание в нее
Отладчик Visual Studio — мощное средство для пошагового выполнения кода в поисках точки, в которой вы допустили ошибку при написании программы. Таким образом, вы получите возможность проанализировать код и внести в него необходимые исправления. Visual Studio позволяет вносить временные изменения, чтобы можно было продолжить выполнение программы.
1.
В Program.cs щелкните поле слева от указанного ниже кода (или откройте контекстное меню и выберите пункт Точка останова > Вставить точку останова, либо нажмите клавишу F9):
C#Копировать result = calculator.DoOperation(cleanNum1, cleanNum2, op);
Красный кружок, который отображается, указывает на точку останова. Для приостановки приложения и проверки кода можно использовать точки останова. Вы можете установить точку останова в любой исполняемой строке кода.

2.
Выполните сборку и запустите приложение.
3.
В выполняющемся приложении введите некоторые значения для вычисления: o
Для первого числа введите 8. o
Для второго числа введите 0. o
В качестве оператора введите d.
Приложение приостанавливается в созданной точке останова, которая обозначается желтым указателем слева и выделенным кодом. Выделенный код еще не выполнен.
Теперь, когда приложение приостановлено, вы можете проверить состояние приложения.
Отладка. Просмотр переменных
1.
В выделенном коде наведите указатель мыши на переменные, такие как cleanNum1 и op. Вы увидите текущие значения этих переменных
(8 и d соответственно), которые отображаются в подсказках по данным.
При отладке очень важно выполнить проверку переменных на содержание соответствующих значений для устранения проблем.
2.
В нижней области просмотрите окно Локальные. (Если оно закрыто, выберите Отладка > Окна > Локальные, чтобы открыть его.)
В окне "Локальные" отображаются все переменные, находящиеся в области, а также их значения и типы.

3.
Взгляните на окно Видимые.
Окно "Видимые" аналогично окну Локальные, но отображает переменную непосредственно перед текущей строкой кода и после строки, в которой приостановлено приложение.
Далее можно поочередно выполнить код в отладчике по одной инструкции за раз. Это называется пошаговым выполнением.
Отладка. Пошаговое прохождение кода
1.
Нажмите клавишу F11 (или выберите Отладка > Выполнять по шагам).
С помощью команды "Выполнять по шагам" приложение выполняет текущий оператор и переходит к следующему исполняемому оператору (как правило, это следующая строка кода). Желтый указатель слева всегда указывает на текущий оператор.
Вы только что выполнили по шагам метод DoOperation в классе Calculator.
2.
Чтобы получить иерархический обзор выполнения программы, просмотрите окно Стек вызовов. (Если оно закрыто, выберите Отладка > Окна > Стек вызовов.)
В этом представлении отображается текущий метод Calculator.DoOperation, обозначенный желтым указателем, а во второй строке показана функция, которая его вызвала из
метода Main в Program.cs. В окне Стек вызовов показан порядок вызова методов и функций. Кроме того, оно предоставляет доступ ко многим функциям отладчика, таким как Перейти к исходному коду, из контекстного меню.
3.
Нажмите клавишу F10 (или выберите Отладка > Шаг с обходом) несколько раз, пока приложение не остановится в операторе switch.
C#Копировать switch (op)
{
Команда "Шаг с обходом" аналогична команде "Выполнять по шагам", за исключением того, что если текущий оператор вызывает функцию, то отладчик выполняет код в вызываемой функции и не приостанавливает выполнение до возврата функции. Команда "Шаг с обходом" — это более быстрый способ навигации по коду, если вас не интересует определенная функция.
4.
Нажмите клавишу F10 еще раз, чтобы приложение приостанавливалось на следующей строке кода.
C#Копировать if (num2 != 0)
{
Этот код проверяет деление на нуль. Если приложение продолжает работать, оно вызовет общее исключение (ошибку). Предположим, вы считаете, что это ошибка, и хотите выполнить другое действие, например просмотреть фактическое возвращаемое значение в консоли. Один из вариантов — использовать функцию отладчика "Изменить и продолжить", чтобы внести изменения в код и продолжить отладку. Тем не менее мы покажем другой метод для временного изменения потока выполнения.
Отладка. Тестирование временного изменения
1.
Выберите желтый указатель, который в данный момент приостановлен на операторе if (num2 != 0), и перетащите его в следующий оператор.
C#Копировать result = num1 / num2;
При этом приложение полностью пропускает оператор if, чтобы вы могли увидеть, что происходит при делении на ноль.
2.
Нажмите клавишу F10, чтобы выполнить строку кода.
3.
Наведите указатель мыши на переменную result, вы увидите, что она сохраняет значение Infinity.
В C# Infinity является результатом деления на ноль.
4.
Нажмите клавишу F5 (или выберите Отладка > Продолжить отладку).
Символ бесконечности отображается в консоли как результат математической операции.
5.
Закройте приложение должным образом с помощью команды n.

Практическая работа №21 Разработка приложения с не визуальными компонентами
Сначала вы создадите проект приложения на C#. Для этого типа проекта уже имеются все нужные файлы шаблонов, что избавляет вас от лишней работы.
1.
Запустите Visual Studio 2019.
2.
На начальном экране выберите Создать проект.
3.
В окне Создать проект выберите шаблон Приложение Windows Forms (.NET
Framework) для C#.
(При желании вы можете уточнить условия поиска, чтобы быстро перейти к нужному шаблону. Например, введите Приложение Windows Forms в поле поиска. Затем выберите C# в списке языков и Windows в списке платформ.)
Примечание
Если шаблон Приложение Windows Forms (.NET Framework) отсутствует, его можно установить из окна Создание
проекта. В сообщении Не
нашли
то,
что
искали? выберите ссылку Установка других средств и компонентов.

После этого в Visual Studio Installer выберите рабочую нагрузку Разработка
классических приложений .NET.
Затем нажмите кнопку Изменить в Visual Studio Installer. Вам может быть предложено сохранить результаты работы; в таком случае сделайте это. Выберите Продолжить, чтобы установить рабочую нагрузку. После этого вернитесь к шагу 2 в процедуре Создание
проекта.
4.
В поле Имя проекта окна Настроить новый проект введите HelloWorld. Затем нажмите Создать.
Новый проект открывается в Visual Studio.
Создание приложения
Когда вы выберете шаблон проекта C# и зададите имя файла, Visual Studio открывает форму. Форма является пользовательским интерфейсом Windows. Мы создадим приложение Hello World, добавив элементы управления на форму, а затем запустим его.
Добавление кнопки на форму
1.
Щелкните Панель элементов, чтобы открыть всплывающее окно "Панель элементов".

(Если параметр для всплывающего окна Панель элементов отсутствует, его можно открыть в строке меню. Для этого выберите Вид > Панель элементов. Либо нажмите клавиши CTRL+ALT+X.)
2.
Щелкните значок Закрепить, чтобы закрепить окно Панель элементов.
3.
Выберите элемент управления Кнопка и перетащите его на форму.
4.
В окне Свойства найдите элемент Текст, измените имя с Button1 на Click this, а затем нажмите клавишу ВВОД.

(Если окно Свойства не отображается, его можно открыть в строке меню.) Для этого выберите Вид > Окно свойств. Или нажмите клавишу F4.)
5.
В разделе Проектирование окна Свойства измените имя с Button1 на btnClickThis, а затем нажмите клавишу ВВОД.
Примечание
Если список был упорядочен по алфавиту в окне Свойства, Button1 появится в разделе (DataBindings) .
Добавление метки на форму
Теперь, когда мы добавили элемент управления ''Кнопка'' для создания действия, давайте добавим элемент управления "Метка", куда можно отправлять текст.
1.
Выберите элемент управления Метка в окне Панель элементов, а затем перетащите его на форму и расположите под кнопкой Нажмите это.
2.
В разделе Проект или (DataBindings) окна Свойства измените имя Label1 на lblHelloWorld и нажмите клавишу ВВОД.
Добавление кода на форму
1.
В окне Form1.cs [Проект] дважды щелкните кнопку Нажмите это, чтобы открыть окно Form1.cs.
(Кроме того, можно развернуть узел Form1.cs в обозревателе решений, а затем выбрать Form1.)
2.
В окне Form1.cs после строки private void введите lblHelloWorld.Text = "Hello
World!";, как показано на следующем снимке экрана:

Запуск приложения
1.
Нажмите кнопку Запустить, чтобы запустить приложение.
Будет выполнено несколько операций. В интегрированной среде разработки Visual Studio откроются окна Средства диагностики и Вывод. Кроме того, вне этой среды откроется диалоговое окно Form1. Оно будет содержать вашу кнопку Нажмите это и текст Label1.
2.
Нажмите кнопку Нажмите это в диалоговом окне Form1. Обратите внимание, что текст Label1 меняется на Hello World! .
3.
Закройте диалоговое окно Form1, чтобы завершить работу приложения.

Практическая работа №22 Разработка игрового приложения разработаем простую мини игру “Угадай число” на языке C#. Суть игры простой: компьютер загадывает число от 0 до 100, выдаст подсказку – больше ли это число 50 или нет, затем сравнит введенное пользователем число с загаданным. Загадывание числа будет реализовано с помощью генератора случайных чисел:
Random rand = new Random(); int i = rand.Next(100);
Число “100” можно поменять. Если задать число “50”, тогда компьютер будет загадывать от 0 до 50. Чтобы создать игру зайдите в Visual Studio, создайте проект “Консольное приложение
(.NET Framework)” на языке C# и перепишите код: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ugaday_chislo
{ class Program
{ static void Main(string[] args)
{
Console.OutputEncoding = Encoding.GetEncoding(866);
Console.InputEncoding = Encoding.GetEncoding(866); char again = 'y';
Random rand = new Random(); while (again == 'y')
{ int i = rand.Next(100);
Console.WriteLine("Компьютер загадал число от 0 до 100"); if (i < 50) Console.WriteLine("Число меньше 50"); else Console.WriteLine("Число больше или равно 50"); int x = Convert.ToInt32(Console.ReadLine()); if (i == x) Console.WriteLine("Поздравляем! Вы победили свой компьютер!"); else Console.WriteLine("Вы проиграли! Компьютер загадал число {0}", i);
Console.WriteLine("Попробовать еще? (y = Да, n = Нет)"); again = Convert.ToChar(Console.ReadLine());
}
}
}
}
Результат программы:

Внимательно изучите код и попробуйте усовершенствовать его.

Практическая работа №23 Разработка приложения с анимацией
оздание анимации в C#
В данном уроке используется среда программирования Microsoft Visual studio 2012.
Алгоритм работы аналогичен и для других сред программирования.
Перед тем, как приступить к данному уроку, следует ознакомиться с предыдущим уроком
: Как начать работать с графикой в Microsoft C#
Сначала создаем свой проект, в котором и будем работать. Разместим на форме (Form1) объекты
:
PictureBox,
Timer и
Button следующим образом:
Теперь попробуем создать какую-нибудь примитивную анимацию, при помощи
PictureBox и Timer, которая запустится после нажатия на кнопку (Button).
Следовательно для этого будем обрабатывать событие нажатия на кнопку и событие "срабатывания" таймера. Также заведем все нужные для рисования объекты и переменные.
Далее приведен код программы и скриншоты, которые содержат все необходимое пояснение реализации анимации.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Lesson_Animation
{
public
1   ...   5   6   7   8   9   10   11   12   13


написать администратору сайта