Kurz: Vytvoření jednoduché konzolové aplikace v jazyce C# Visual Studio (část 1 ze 2)
V tomto kurzu použijete Visual Studio a spustíte konzolovou aplikaci v jazyce C# a prozkoumáte některé funkce integrovaného vývojového Visual Studio (IDE). Tento kurz je první částí dvousekunové série kurzů.
V tomto kurzu jste:
- Vytvořte Visual Studio projekt.
- Vytvořte konzolovou aplikaci v jazyce C#.
- Ladění aplikace
- Zavřete aplikaci.
- Prohlédněte si celý kód.
V části 2 tutoaplikaci rozšíříte o další projekty, naučíte se triky ladění a budete odkazovat na balíčky třetích stran.
Požadavky
Musíte mít nainstalované Visual Studio.
Pokud jste si ještě nenainstalujete Visual Studio, přejděte na stránku Visual Studio stahování a nainstalujte si ji zdarma.
Pokud jste si ještě nenainstalujete Visual Studio, přejděte na stránku Visual Studio stahování a nainstalujte si ji zdarma.
Vytvoření projektu
Začněte tím, že vytvoříte projekt aplikace v jazyce C#. Typ projektu obsahuje všechny soubory šablony, které potřebujete.
Otevřete sadu Visual Studio 2017.
V horním řádku nabídek zvolte Soubor > Nový > Project. (Případně stiskněte Ctrl. + Shift + N).
V levém podokně dialogového okna Nový Project rozbalte C# a pak zvolte .NET Core. V prostředním podokně zvolte Konzolová aplikace (.NET Core). Pak soubor pojmnováte Calculator (Kalkulačka).

Přidání úlohy (volitelné)
Pokud šablonu projektu Konzolová aplikace (.NET Core) nevidíte, můžete ji získat přidáním úlohy vývoj pro různé platformy v .NET Core. Jak na to:
Možnost 1: Použití dialogového okna Project nový název
V levém Instalační program pro Visual Studio dialogového okna Nový Project nový odkaz Otevřít.

Spustí se instalační program pro Visual Studio. Zvolte úlohu vývoj pro různé platformy v .NET Core a pak zvolte Upravit.

Možnost 2: Použití řádku nabídek Nástroje
Zrušte zaškrtnutí políčka Nový Project a v horním řádku nabídek zvolte Nástroje Získat nástroje a > funkce.
Spustí se instalační program pro Visual Studio. Zvolte úlohu vývoj pro různé platformy v .NET Core a pak zvolte Upravit.
Otevřete Visual Studio a v okně Start zvolte Vytvořit nový projekt.

V okně Vytvořit nový projekt zvolte v seznamu Jazyk možnost C#. V dalším kroku Windows ze seznamu Platforma a ze seznamu typů projektů zvolte Konzola.
Po použití filtrů jazyka, platformy a typu projektu zvolte šablonu Konzolová aplikace a pak vyberte Další.
Poznámka
Pokud šablonu Konzolová aplikace nevidíte, vyberte Nainstalovat další nástroje a funkce.

Potom v části Instalační program pro Visual Studio úlohy vývoj pro různé platformy .NET Core.

Potom v okně klikněte na tlačítko Instalační program pro Visual Studio. Může se zobrazit výzva k uložení práce. Pokud ano, proveďte to. Potom zvolte Pokračovat a nainstalujte úlohu. Pak se vraťte ke kroku 2 v tétoproceduře "Vytvořeníprojektu".
V okně Configure your new project (Konfigurace nového projektu) zadejte nebo zadejte Calculator do Project name (Název projektu). Pak zvolte Další.
V okně Další informace by už mělo být pro cílovou rozhraní vybrané rozhraní .NET Core 3.1. Pokud ne, vyberte .NET Core 3.1. Pak zvolte Vytvořit.
Visual Studio nový projekt, který obsahuje výchozí kód "Hello World".
Otevřete Visual Studio a v okně Start zvolte Vytvořit nový projekt.

V okně Vytvořit nový projekt vyberte Všechny jazyky a pak v rozevíracím seznamu zvolte C#. Zvolte Windows ze seznamu Všechny platformy a v seznamu Všechny typy projektů zvolte Konzola.
Po použití filtrů jazyka, platformy a typu projektu zvolte šablonu Konzolová aplikace a pak vyberte Další.
Poznámka
Pokud šablonu Konzolová aplikace nevidíte, vyberte Nainstalovat další nástroje a funkce.

V Instalační program pro Visual Studio úlohy Vývoj desktopových aplikací .NET a pak vyberte Upravit.

V okně Configure your new project (Konfigurovat nový projekt) zadejte nebo zadejte Calculator (Kalkulačka) do Project name (Název projektu) a pak vyberte Next (Další).

V okně Další informace by už mělo být pro cílovou rozhraní vybrané rozhraní .NET 6.0. Vyberte Vytvořit.

Visual Studio nový projekt, který obsahuje výchozí kód "Hello World".
Vytvoření aplikace
V této části:
- Prozkoumejte základní celočíselnou matematiku v jazyce C#.
- Přidejte kód pro vytvoření aplikace základní kalkulačky.
- Laděním aplikace vyhledejte a opravte chyby.
- Upřesněte kód, aby byl efektivnější.
Seznámení s matematikou celých čísel
Začněte základní celočíselnou matematikou v jazyce C#.
V editoru kódu odstraňte výchozí kód "Hello World".

Konkrétně odstraňte řádek , který říká
Console.WriteLine("Hello World!");.Na jeho místo zadejte následující kód:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();Všimněte si, že funkce IntelliSense v Visual Studio nabízí možnost automatického dokončování položky.
Poznámka
Následující animace nemá duplikovat předchozí kód. Jeho účelem je jenom ukázat, jak funkce automatického dokončování funguje.

Vyberte zelené tlačítko Start vedle kalkulačky a sestavte a spusťte program, nebo stiskněte klávesu F5.

Otevře se okno konzoly, ve kterém se zobrazí součet 42 + 119, což je 161.

(Volitelné) Pokud chcete změnit výsledek, můžete změnit operátor . Můžete například změnit operátor na řádku kódu pro odčítání, pro
+int c = a + b;násobení nebo pro-*/dělení. Když pak program spustíte, změní se také výsledek.Zavřete okno konzoly.
V Průzkumník řešení v pravém podokně vyberte Soubor Program.cs a zobrazte soubor v editoru kódu.
V editoru kódu nahraďte výchozí kód "Hello World", který říká
Console.WriteLine("Hello World!");.
Nahraďte řádek následujícím kódem:
int a = 42; int b = 119; int c = a + b; Console.WriteLine(c); Console.ReadKey();Pokud kód napíšete, Visual Studio IntelliSense nabízí možnost automatického dokončování položky.
Poznámka
Následující animace není určená k předvedení předchozího kódu, ale pouze k zobrazení toho, jak technologie IntelliSense funguje.

Aplikaci sestavíte a spustíte stisknutím klávesy F5 nebo výběrem zelené šipky vedle názvu Kalkulačka na horním panelu nástrojů.

Otevře se okno konzoly se součtem 42 + 119, což je 161.

Zavřete okno konzoly.
Volitelně můžete změnit operátor a změnit výsledek. Můžete například změnit operátor na řádku kódu pro odčítání, pro
+int c = a + b;násobení nebo pro-*/dělení. Když aplikaci spustíte, výsledek se odpovídajícím způsobem změní.
Přidání kódu pro vytvoření kalkulačky
Pokračujte přidáním složitější sady kódu kalkulačky do projektu.
V editoru kódu nahraďte veškerý kód v souboru program.cs následujícím novým kódem:
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(); } } }Aplikaci spustíte stisknutím tlačítka Kalkulačka nebo stisknutím klávesy F5.
Otevře se okno konzoly.
V okně konzoly podle pokynů sečtete čísla 42 a 119.
Vaše aplikace by měla vypadat podobně jako na následujícím snímku obrazovky:

Přidání funkce desetinných míst
Teď upravte kód a přidejte další funkce.
Aktuální aplikace kalkulačky přijímá a vrací pouze celá čísla. Pokud například spustíte aplikaci a vydělíte číslo 42 číslem 119, výsledek bude nula, což není přesné.

Pokud chcete kód opravit, abyste zlepšili přesnost zpracováním desetinných míst:
V souboru program.cs v Visual Studio editoru stiskněte Ctrl H a otevřete ovládací prvek Najít a + nahradit.
Do ovládacího prvku zadejte int a do pole Nahradit zadejte float.
Vyberte ikony pro Shoda s případy a Shoda s celým slovem v ovládacím prvku, nebo stiskněte Alt + C a Alt + W.
Vyberte ikonu Nahradit vše nebo stisknutím klávesy Alt + A spusťte hledání a nahrazení.

Znovu spusťte aplikaci kalkulačky a vydělte číslo 42 číslem 119.
Aplikace teď místo nuly vrátí desetinné číslo.

Aplikace teď může vytvořit desítkové výsledky. Vylepšete kód ještě o několik dalších vylepšení, aby aplikace také vypočítala desetinná čísla.
Pomocí ovládacího prvku Najít a nahradit změňte jednotlivé instance proměnné na a ke změně
floatjednotlivých instancí metody nadoubleConvert.ToInt32Convert.ToDouble.Spusťte aplikaci kalkulačky a vydělte číslo 42,5 číslem 119,75.
Aplikace teď přijímá desetinné hodnoty a jako výsledek vrací delší desetinná čísla.

V části Revidovat kód snížíte počet desetinných míst ve výsledcích.
Ladění aplikace
Vylepšili jste aplikaci základní kalkulačky, ale vaše aplikace ještě nezvládá výjimky, jako jsou chyby uživatelského vstupu. Pokud se například uživatelé pokusí vydělit nulou nebo zadat neočekávaný znak, může aplikace přestat fungovat, vrátit chybu nebo vrátit neočekávaný nečísný výsledek.
Pojďme si projít několik běžných chyb uživatelského vstupu, vyhledat je v ladicím programu, pokud se tam objeví, a opravit je v kódu.
Tip
Další informace o ladicím programu a o tom, jak funguje, najdete v tématu První pohled na Visual Studio ladicího programu.
Oprava chyby "vydělit nulou"
Pokud se pokusíte vydělit číslo nulou, může se konzolová aplikace zablokovat a pak vám v editoru kódu ukáže, co je špatně.

Poznámka
Někdy se aplikace nezablokuje a ladicí program neukadá chybu dělení nulou. Místo toho může aplikace vrátit neočekávaný nečísový výsledek, například symbol nekonečna. Stále platí následující oprava kódu.
Změna kódu pro zpracování této chyby:
V souboru program.cs nahraďte kód mezi a
case "d":komentářem, který říká , následujícím// Wait for the user to respond before closingkódem:// 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; }Po nahrazení kódu by část s příkazem měla
switchvypadat podobně jako na následujícím snímku obrazovky:
Když teď jakékoli číslo vydělíte nulou, aplikace požádá o další číslo a bude se ptát, dokud nezadáte nenulové číslo.

Oprava chyby "format"
Pokud zadáte abecední znak, když aplikace očekává číselný znak, aplikace se zablokuje. Visual Studio ukazuje, co je v editoru kódu špatně.


Pokud chcete této výjimce zabránit, můžete kód, který jste zadali dříve, refaktorovat.
Revize kódu
Místo toho, abyste ke zpracování veškerého kódu spoléhají na třídu , můžete aplikaci rozdělit do dvou tříd: a program Calculator Program .
Třída zpracovává většinu výpočtů a třída zpracovává uživatelské rozhraní a práci Calculator Program zpracování chyb.
Tak se do toho pusťme.
V souboru program.cs odstraňte vše v oboru názvů mezi jeho počátečními a
Calculatoruzavíracími složená závorkami:using System; namespace Calculator { }Mezi složené závorky přidejte následující novou
Calculatortřídu:class Calculator { public static double DoOperation(double num1, double num2, string op) { double result = double.NaN; // Default value is "not-a-number" 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; } }Přidejte také
Programnovou třídu následujícím způsobem: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; } }Aplikaci spustíte stisknutím tlačítka Kalkulačka nebo stisknutím klávesy F5.
Postupujte podle vý výzvy a vydělte číslo 42 číslem 119. Výsledky by měly vypadat podobně jako na následujícím snímku obrazovky:


Teď můžete zadat další rovnice, dokud se nezjistěníte zavřít konzolovou aplikaci. Ve výsledcích je také méně desetinných míst. A pokud zadáte nesprávný znak, zobrazí se odpovídající chybová odpověď.
Zavření aplikace
Pokud jste to ještě neudělali, zavřete aplikaci Kalkulačka.
Zavřete podokno Výstup v Visual Studio.

V Visual Studio stisknutím Ctrl + S aplikaci uložte.
Přidání správy zdrojového kódu Git
Teď, když jste vytvořili aplikaci, ji můžete chtít přidat do úložiště Git. Pomůžeme vám. Visual Studio usnadňuje tento proces pomocí nástrojů Gitu, které můžete použít přímo z integrovaného vývojového prostředí .NET.
Tip
Git je nejpoužívanějším moderním systémem pro řízení verzí, takže Git může být velmi užitečný, ať už jste profesionální vývojář nebo se učíte programovat. Pokud s Gitem začínáte, https://git-scm.com/ je web dobrým místem, kde začít. Najdete tam tahák, oblíbenou online knihu a videa Git Basics.
Pokud chcete ke Gitu přidružit svůj kód, začněte vytvořením nového úložiště Git, ve kterém se váš kód nachází. Jak na to:
Ve stavovém řádku v pravém dolním rohu okna Visual Studio Přidat do správy zdrojového kódu a pak vyberte Git.
V dialogovém okně Create a Git repository (Vytvořit úložiště Git) se přihlaste GitHub.
Název úložiště se automaticky vyplní podle umístění vaší složky. Ve výchozím nastavení je nové úložiště soukromé, což znamená, že jste jediným, kdo k ní má přístup.
Tip
Ať už je vaše úložiště veřejné nebo soukromé, je nejlepší mít bezpečně uloženou vzdálenou zálohu kódu na GitHub. I když nepracujete s týmem, vzdálené úložiště vám váš kód zpracuje z libovolného počítače.
Vyberte Create and Push (Vytvořit a nasaovat).
Po vytvoření úložiště se na stavovém řádku zobrazí podrobnosti o stavu.
První ikona se šipkami ukazuje, kolik odchozích/příchozích potvrzení je ve vaší aktuální větvi. Tuto ikonu můžete použít k natažení všech příchozích potvrzení nebo k nasouání všech odchozích potvrzení. Můžete se také rozhodnout, že tato potvrzení zobrazíte jako první. Pokud to chcete udělat, vyberte ikonu a pak vyberte Zobrazit odchozí/příchozí.
Druhá ikona s tužkou zobrazuje počet nepotrzené změny kódu. Výběrem této ikony můžete tyto změny zobrazit v okně Git Changes (Změny Gitu).
Další informace o tom, jak používat Git s vaší aplikací, najdete v Visual Studio pro řízení verzí.
Recenze: Kód je dokončený.
V tomto kurzu jste provedli mnoho změn aplikace kalkulačky. Aplikace teď zpracovává výpočetní prostředky efektivněji a zpracovává většinu chyb uživatelského vstupu.
Tady je kompletní kód, vše na jednom místě:
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;
}
}
}
Další kroky
Pokračujte v dalších kurzech:
Pokračujte druhou částí tohoto kurzu: