Лого на 91. НЕГ „Проф. Константин Гълъбов“

Модул 1 · Урок 4

Интегрирана среда за програмиране Visual Studio

Проект и решение, създаване на конзолно приложение, компилиране и стартиране, четене на грешките. Стандартен вход и изход и пренасочването им.

Защо ни е това

В предишния урок изброихме инструментите на програмиста. Сега ги отваряме — всичките наведнъж, събрани в средата Visual Studio на Microsoft. Оттук нататък ще я наричаме просто средата.

Ключово

Всичко, което правиш в средата, живее в проект. От проекта се получава решение — това, което накрая се изпълнява.

Проект и решение

Проект (project)

Съвкупността от всички файлове, нужни за създаването на една компютърна програма — както писаните от програмиста, така и служебните файлове, създавани от средата.

Решение (solution)

Резултатът, който се получава от файловете на проекта след подходяща обработка. Може да е изпълнима програма, обектен код на подпрограма или цяла библиотека от подпрограми.

Едно решение може да е съставено от няколко различни проекта. Ние започваме с най-простото решение — изпълнима програма с буквено-цифров интерфейс, наричана конзолно приложение (англ. console application).

Конзола

Общото име на клавиатурата, откъдето конзолното приложение чете данни (стандартен вход), и прозореца на командния интерпретатор, където програмата извежда резултата (стандартен изход).

Създаване на конзолно приложение

Стартирай средата. В десния край на стартовия прозорец има бутон Create a new project — оттам започва нов проект. (Ако продължаваш вече започнат проект, той е в списъка Open recent вляво или зад бутона Open a project or solution.)

  1. Щракни Create a new project.
  2. От трите текстови кутии горе избери език C#, ОС Windows и тип Console.
  3. Избери Console Application от списъка.
  4. В прозореца Configure your new project, поле Project name, въведи името на проекта — например Hello.
  5. В Location задай папката, в която ще се съхранява проектът. Запомни пълния път — ще ти трябва.
  6. Натисни OK. Средата отваря няколко нови прозореца и подготвя решението вместо теб.

Бележка

Същият диалог се достига и с командата File/New/Project. Наклонената черта означава преминаване през менюта: първо File, после New, после Project. Ще срещаш този запис често.

Полето Solution name е името на решението. При конзолни приложения то съвпада с името на проекта, а полученото решение се съхранява в папката на проекта заедно с всички автоматично създадени файлове. Това води до по-добра организация на твърдия диск.

Първата програма

В основния работен прозорец се отваря страница, надписана Program.cs — в нея средата вече е поставила изходния текст на малка програма. Оцветяването на текста е автоматично.

using System;
namespace Hello
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello world!");
        }
    }
}

Програмата е готова и трябва да се компилира, т.е. да се преведе на машинен език и да се свърже с необходимите подпрограми — в случая стандартната функция WriteLine.

  1. Компилирай с Build/Build Solution или Ctrl+Shift+B. Под прозореца с програмата се появява отчет на компилатора, който завършва с Build: 1 succeeded.
  2. Стартирай с Debug/Start Without Debugging или Ctrl+F5. Отваря се конзолен прозорец с текста Hello world!.

Съвет

Командата Build Solution съхранява и файла. Това обаче не те освобождава от задължението да записваш от време на време написаното. Ако след името Program.cs има звездичка — Program.cs* — файлът е променян и не е съхранен.

Когато нещо се счупи

Промени думата WriteLine на Writeline и опитай да компилираш. Компилацията няма да завърши успешно и средата ще отвори прозореца Error List със съобщение:

CS0117  'Console' does not contain a definition for 'Writeline'   Hello   Program.cs   10

Т.е. управлението на работата с конзолата не познава действието Writeline. Текстовият показалец на редактора застава върху реда, причинил грешката, а сбърканата дума се подчертава с червено.

Направи и втори опит: изтрий кавичките около текста, който искаш да изведеш. Още преди да си поискал компилиране, редакторът ще изведе съобщение в Error List — той познава синтаксиса на C# и лови много синтактични грешки, преди изобщо да си стигнал до компилатора.

Внимание

Чети съобщенията за грешки, не ги прескачай. Колоната Line сочи реда, а описанието почти винаги казва точно какво липсва. Първата грешка често е причина за следващите — оправяй отгоре надолу.

Четене от клавиатурата

Освен да пишат на конзолата, програмите могат и да четат данни от клавиатурата. Ето приложението Hello1, което подканва да въведеш името си и ти отправя поздрав:

static void Main(string[] args)
{
    Console.WriteLine("What is your name?");
    string s = Console.ReadLine();
    Console.WriteLine("Hello " + s + "!");
}
  • Console.ReadLine() чака да въведеш ред и натиснеш Enter, след което връща въведеното като низ.
  • Знакът + между низове ги слепва един за друг — "Hello " + s + "!".

Изпълнимият файл и командната процедура

Намери във файловата система папката на решението Hello, а в нея — папката на проекта. В папката на проекта има папка bin с подпапка Debug. Там е изпълнимата програма Hello.exe.

Ако я стартираш с двойно щракване, тя приключва за миг и конзолният прозорец се затваря, преди да си видял резултата. Това се оправя с командна процедура — текстов файл с разширение .bat в същата папка:

Hello
pause
  • Първият ред е команда към ОС да изпълни програмата Hello.exe от папката, в която се намира процедурата.
  • Вторият казва да не се затваря конзолният прозорец, преди да натиснеш клавиш.

Резултатът е същият като при Ctrl+F5 — сега вече знаеш откъде идва „Press any key to close this window“.

Стандартен вход и стандартен изход

Досега свързвахме конзолата с клавиатурата и монитора. Всъщност тя може да бъде свързана с произволно място:

Стандартен входСтандартен изход
По подразбиранеКлавиатуратаКонзолният прозорец
Чете/пише се сConsole.ReadLine()Console.WriteLine()
Пренасочва се с<input.txt>output.txt

Пренасочването става в командната процедура. Създай текстов файл с твоето име и го съхрани като input.txt, а после нов файл Hello1.bat със следното съдържание:

Hello1 <input.txt >output.txt
pause

Стартирай процедурата с двойно щракване. Програмата ще завърши, без да чака да въведеш името си и без да пише каквото и да е на екрана: <input.txt премества стандартния вход от клавиатурата върху файла, а >output.txt премества стандартния изход във файла. Отвори output.txt, за да видиш резултата.

Съвет

Пренасочването е безценно при тестване: слагаш тестовите данни в един файл и пускаш програмата стотици пъти, без да въвеждаш нищо на ръка.

Задачи

Въпроси и задачи

1. Посочи основни разлики между буквено-цифровия и графичния интерфейс. При кой интерфейс програмирането е по-трудоемко? Кой е по-привлекателен за потребителя и защо?

2. Създай конзолно приложение Elha, което изобразява елха от звездички. Направи и командна процедура, която извежда елхата в текстов файл вместо на екрана.

3. Напиши конзолно приложение Spravka, което въвежда данните на ученик — име, презиме, фамилия, рождена дата, място на раждане, училище, клас и номер в класа, профил — и извежда справка за него. Преди всяко въвеждане показвай подсказващо съобщение. Указание: опитай с Write вместо WriteLine. Каква е разликата?

4. Създай командна процедура a.bat, която извиква Spravka и пренасочва стандартния ѝ изход във файл spravka.txt.

5. Промени процедурата така, че данните да се четат от файл danni.txt. Подсказващите текстове вече не са нужни — можеш да ги премахнеш.

Какво трябва да запомниш

  • Проектът е съвкупността от файлове; решението е това, което се получава от тях. Едно решение може да съдържа няколко проекта.
  • Ctrl+Shift+B компилира, Ctrl+F5 стартира без дебъгване.
  • Звездичка след името на файла в редактора значи незаписани промени.
  • Редакторът лови част от синтактичните грешки още преди компилиране — прозорецът Error List сочи реда и описва грешката.
  • Стандартният вход и изход не са задължително клавиатурата и екранът — с < и > в командна процедура се пренасочват към файлове.