Защо ни е това
В предишния урок изброихме инструментите на програмиста. Сега ги отваряме — всичките наведнъж, събрани в средата Visual Studio на Microsoft. Оттук нататък ще я наричаме просто средата.
Ключово
Всичко, което правиш в средата, живее в проект. От проекта се получава решение — това, което накрая се изпълнява.
Проект и решение
Проект (project)
Съвкупността от всички файлове, нужни за създаването на една компютърна програма — както писаните от програмиста, така и служебните файлове, създавани от средата.
Решение (solution)
Резултатът, който се получава от файловете на проекта след подходяща обработка. Може да е изпълнима програма, обектен код на подпрограма или цяла библиотека от подпрограми.
Едно решение може да е съставено от няколко различни проекта. Ние започваме с най-простото решение — изпълнима програма с буквено-цифров интерфейс, наричана конзолно приложение (англ. console application).
Конзола
Общото име на клавиатурата, откъдето конзолното приложение чете данни (стандартен вход), и прозореца на командния интерпретатор, където програмата извежда резултата (стандартен изход).
Създаване на конзолно приложение
Стартирай средата. В десния край на стартовия прозорец има бутон Create a new project — оттам започва нов проект. (Ако продължаваш вече започнат проект, той е в списъка Open recent вляво или зад бутона Open a project or solution.)
- Щракни
Create a new project. - От трите текстови кутии горе избери език
C#, ОСWindowsи типConsole. - Избери
Console Applicationот списъка. - В прозореца
Configure your new project, полеProject name, въведи името на проекта — напримерHello. - В
Locationзадай папката, в която ще се съхранява проектът. Запомни пълния път — ще ти трябва. - Натисни
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.
- Компилирай с
Build/Build SolutionилиCtrl+Shift+B. Под прозореца с програмата се появява отчет на компилатора, който завършва сBuild: 1 succeeded. - Стартирай с
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сочи реда и описва грешката. - Стандартният вход и изход не са задължително клавиатурата и екранът — с
<и>в командна процедура се пренасочват към файлове.