Първата програма
Проблем
Компютърът прави точно каквото пише
Компютърът не се досеща какво искаш. Изпълнява команди, една след друга, точно както са написани. Поредицата от такива команди е програма.
Ето цяла програма. Тя отпечатва два реда на екрана:
class Program{ static void Main() { Console.WriteLine("Добре дошъл!"); Console.WriteLine("Това е първата ти програма."); }}Добре дошъл!Това е първата ти програма.Изглежда много код за два реда текст. Повечето от него е обвивка, която пишеш във всяка програма. Твоите команди са само двата реда в средата.
Идеята
Какво има в програмата
static void Main()е мястото, откъдето програмата тръгва. Наричаме го Main. Компютърът изпълнява редовете в него отгоре надолу.Console.WriteLine(...)отпечатва текста в скобите и минава на нов ред.- Текстът е в двойни кавички:
"Добре дошъл!". Кавичките не се печатат. - Всяка команда завършва с
;. - Къдравите скоби
{и}събират редовете, които са заедно.
class Program е обвивката на всяка програма. Какво значи, ще разберем в модул „Класове и обекти“. Засега я копираш и пишеш своя код вътре в Main. По-нататък в уроците показваме само редовете от Main.
По-точно, за любопитните
- Главните и малките букви имат значение.
console.writelineне е същото катоConsole.WriteLineи програмата няма да се компилира.
- Командата
dotnet new consoleсъздаваProgram.csсамо с един ред:Console.WriteLine("Hello, World!");. Това е съкратен запис на същото. Компилаторът сам добавяclass ProgramиMainоколо него. Тук пишем пълната форма, за да виждаш къде стои всичко. - В по-стар код ще видиш най-отгоре
using System;. Той казва откъде идваConsole. В новите проекти този ред се добавя сам.
Идеята
Печат с нов ред и без
Понякога искаш няколко парчета текст на един ред. За това има втора команда: Console.Write. Тя отпечатва текста и остава на същия ред.
Console.Write("Поръчка ");Console.Write("№1024");Console.WriteLine(" е приета.");Console.WriteLine("Доставка: утре");Поръчка №1024 е приета.Доставка: утреПървите два реда в кода са с Write, затова „Поръчка“, „№1024“ и „е приета.“ излизат заедно. След WriteLine следващият текст започва на нов ред.
Обърни внимание на интервалите. Те са вътре в кавичките, защото компютърът не слага интервал сам.
Следи курсора: текстът излиза винаги там, където е той.
Console.Write("Поръчка ");Console.Write("№1024");Console.WriteLine(" е приета.");Console.WriteLine("Доставка: утре");Стъпка по стъпка, с думи
- Write печата „Поръчка “ и курсорът остава на същия ред.
- Write печата „№1024“ и курсорът остава на същия ред.
- WriteLine печата „ е приета.“ и курсорът минава на нов ред.
- WriteLine печата „Доставка: утре“ и курсорът минава на нов ред.
- Интервалите са вътре в кавичките: компютърът не слага интервал сам.
Пробвай
На колко реда?
Какво ще отпечата програмата?
Console.Write("Влак ");Console.WriteLine("8:15");Console.Write("Перон ");Console.Write("3");Console.WriteLine();След „8:15“ има WriteLine, затова „Перон“ е на нов ред. Последният ред Console.WriteLine(); не печата текст, а само минава на нов ред.
Идеята
Коментари: бележки за хората
Понякога искаш да оставиш бележка в кода: защо е така или какво предстои. Пишеш я като коментар. Компютърът пропуска коментарите.
//започва коментар до края на реда./*и*/ограждат коментар на няколко реда.
/* Бележката на кафенето. Цените са в евро. */Console.WriteLine("Кафе 2,50 €");// Console.WriteLine("Кроасан 1,80 €");Console.WriteLine("Общо 2,50 €"); // кроасаните свършихаКафе 2,50 €Общо 2,50 €Редът с кроасана е код, но е зад //, затова не се изпълнява. Така временно изключваш ред, без да го триеш.
Добрият коментар казва защо, не какво. Кодът сам показва какво прави.
Пробвай
Кое ще излезе?
Какво ще отпечата програмата?
Console.WriteLine("9:00 Математика");// Console.WriteLine("10:00 Физика");Console.WriteLine("11:00 История"); // после е обядВторият ред е коментар целият, затова „Физика“ не се печата. На третия ред коментарът започва след `;`: командата се изпълнява, а бележката след // се пропуска.
Проблем
Програмата не тръгва
Написал си програмата, пускаш я, а тя дори не започва. Вместо изход получаваш съобщение:
class Program{ static void Main() { Console.WriteLine("Добре дошъл в курса!") Console.WriteLine("Започваме."); }}Program.cs(5,50): error CS1002: ; expectedПреди да се изпълни, програмата минава през компилатора. Той превежда кода за компютъра и проверява дали е написан по правилата. Ако не е, спира и не пуска нищо. Това се казва грешка при компилиране (compile error).
Идеята
Как се чете съобщението
Съобщението казва три неща: файла, реда и какво не е наред.
Program.cs(5,50) значи файлът Program.cs, ред 5, знак 50 от началото на реда. ; expected значи „очаквах ;“. CS1002 е номерът на грешката. По него можеш да я потърсиш в документацията.
Най-честите грешки в началото:
- липсва
;в края на командата; - кавичка или скоба е отворена, но не е затворена;
- малка буква вместо главна:
console.WriteLine.
Поправяй първо първата грешка в списъка. Една липсваща кавичка може да обърка компилатора и да покаже още няколко грешки по-надолу, които изчезват с нея.
По-точно, за любопитните
- Компилаторът казва къде е забелязал проблема. Понякога грешката е малко по-нагоре: ако си забравил да затвориш
}, той го разбира чак в края на файла. - Има и грешки, които никой не хваща: програмата тръгва, но прави друго, не каквото искаш. Тях ще ловим в почти всеки урок.
Пробвай
Намери грешката
Програмата трябва да отпечата разписанието на изпита. Тя не се компилира. На кой ред е грешката?
Избери реда с грешката.
); за част от текста и не намира края на командата. Поправката е Console.WriteLine("Зала: 204");.Упражнение
Първите ти програми
Реши задачите в редактора си. Всяка е отделна програма. Сравни изхода си с примерния, знак по знак.
1. Hello World. Традиционната първа програма. Отпечатай:
Hello, World!2. Визитка. Отпечатай визитка от три реда: име, професия и имейл. Може и твоите.
Мария Ивановауеб разработчикmaria@example.com3. Рамка. Отпечатай днешното меню на столовата в рамка от звездички. Внимавай с интервалите, за да излезе дясната страна права.
*************** Днес: супа ** 5,40 € ***************Още задачи
- Едно изречение на три части. С три команди
Writeи еднаWriteLineотпечатай на един ред „Магазинът работи от 9:00 до 19:00.“ - Разписание с коментар. Отпечатай разписание от четири часа. После изключи третия ред с
//, без да го триеш, и добави коментар защо.
- Нарочна грешка. Махни
;от някой ред в задача 1, после махни и кавичка. Прочети какво казва компилаторът всеки път.
Тест