Към съдържанието
wannacode

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

Проблем

Компютърът прави точно каквото пише

Компютърът не се досеща какво искаш. Изпълнява команди, една след друга, точно както са написани. Поредицата от такива команди е програма.

Ето цяла програма. Тя отпечатва два реда на екрана:

Program.cs
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("Доставка: утре");
Стъпка по стъпка, с думи
  1. Write печата „Поръчка “ и курсорът остава на същия ред.
  2. Write печата „№1024“ и курсорът остава на същия ред.
  3. WriteLine печата „ е приета.“ и курсорът минава на нов ред.
  4. WriteLine печата „Доставка: утре“ и курсорът минава на нов ред.
  5. Интервалите са вътре в кавичките: компютърът не слага интервал сам.

Пробвай

На колко реда?

Какво ще отпечата програмата?

Console.Write("Влак ");
Console.WriteLine("8:15");
Console.Write("Перон ");
Console.Write("3");
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 История"); // после е обяд
Отговор

Проблем

Програмата не тръгва

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

Program.cs
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.

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

По-точно, за любопитните
  • Компилаторът казва къде е забелязал проблема. Понякога грешката е малко по-нагоре: ако си забравил да затвориш }, той го разбира чак в края на файла.
  • Има и грешки, които никой не хваща: програмата тръгва, но прави друго, не каквото искаш. Тях ще ловим в почти всеки урок.

Пробвай

Намери грешката

Програмата трябва да отпечата разписанието на изпита. Тя не се компилира. На кой ред е грешката?

Избери реда с грешката.

Упражнение

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

Реши задачите в редактора си. Всяка е отделна програма. Сравни изхода си с примерния, знак по знак.

1. Hello World. Традиционната първа програма. Отпечатай:

Изход
Hello, World!

2. Визитка. Отпечатай визитка от три реда: име, професия и имейл. Може и твоите.

Примерен изход
Мария Иванова
уеб разработчик
maria@example.com

3. Рамка. Отпечатай днешното меню на столовата в рамка от звездички. Внимавай с интервалите, за да излезе дясната страна права.

Изход
**************
* Днес: супа *
* 5,40 € *
**************

Още задачи

  • Едно изречение на три части. С три команди Write и една WriteLine отпечатай на един ред „Магазинът работи от 9:00 до 19:00.“
  • Разписание с коментар. Отпечатай разписание от четири часа. После изключи третия ред с //, без да го триеш, и добави коментар защо.
  • Нарочна грешка. Махни ; от някой ред в задача 1, после махни и кавичка. Прочети какво казва компилаторът всеки път.

Тест

Провери се

1. Откъде започва изпълнението на програмата?
2. Каква е разликата между Write и WriteLine?
3. Какво прави компютърът с коментара?
4. Компилаторът казва, че на ред 3 липсва ;. Какво значи това?
5. Кое ще се компилира?

Създаден от Иво Гергов като част от кампанията на Evo Tech за достъпно обучение по програмиране ·