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

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

Проблем

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

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

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

Main.java
public class Main {
public static void main(String[] args) {
System.out.println("Добре дошъл!");
System.out.println("Това е първата ти програма.");
}
}
Изход
Добре дошъл!
Това е първата ти програма.

Изглежда много код за два реда текст. Повечето от него е обвивка, която пишеш във всяка програма. Твоите команди са само двата реда в средата.

Идеята

Какво има в програмата

  • public static void main(String[] args) е мястото, откъдето програмата тръгва. Наричаме го main. Компютърът изпълнява редовете в него отгоре надолу.
  • System.out.println(...) отпечатва текста в скобите и минава на нов ред.
  • Текстът е в двойни кавички: "Добре дошъл!". Кавичките не се печатат.
  • Всяка команда завършва с ;.
  • Къдравите скоби { и } събират редовете, които са заедно.

public class Main е обвивката на всяка програма. Какво значи, ще разберем в модул „Класове и обекти“. Засега я копираш и пишеш своя код вътре в main. По-нататък в уроците показваме само редовете от main.

По-точно, за любопитните
  • Главните и малките букви имат значение. system.out.println не е същото като System.out.println и програмата няма да се компилира.
  • Файлът се казва като класа: public class Main е във файл Main.java.
  • От Java 25 нататък малка програма може да се напише и по-кратко, без класа. Тук пишем пълната форма, защото работи с всяка версия и защото така ще я срещаш в чужд код.

Идеята

Печат с нов ред и без

Понякога искаш няколко парчета текст на един ред. За това има втора команда: System.out.print. Тя отпечатва текста и остава на същия ред.

System.out.print("Поръчка ");
System.out.print("№1024");
System.out.println(" е приета.");
System.out.println("Доставка: утре");
Изход
Поръчка №1024 е приета.
Доставка: утре

Първите два реда в кода са с print, затова „Поръчка“, „№1024“ и „е приета.“ излизат заедно. След println следващият текст започва на нов ред.

Обърни внимание на интервалите. Те са вътре в кавичките, защото компютърът не слага интервал сам.

Следи курсора: текстът излиза винаги там, където е той.

System.out.print("Поръчка ");
System.out.print("№1024");
System.out.println(" е приета.");
System.out.println("Доставка: утре");
Стъпка по стъпка, с думи
  1. print печата „Поръчка “ и курсорът остава на същия ред.
  2. print печата „№1024“ и курсорът остава на същия ред.
  3. println печата „ е приета.“ и курсорът минава на нов ред.
  4. println печата „Доставка: утре“ и курсорът минава на нов ред.
  5. Интервалите са вътре в кавичките: компютърът не слага интервал сам.

Пробвай

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

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

System.out.print("Влак ");
System.out.println("8:15");
System.out.print("Перон ");
System.out.print("3");
System.out.println();
Отговор

Идеята

Коментари: бележки за хората

Понякога искаш да оставиш бележка в кода: защо е така или какво предстои. Пишеш я като коментар. Компютърът пропуска коментарите.

  • // започва коментар до края на реда.
  • /* и */ ограждат коментар на няколко реда.
/* Бележката на кафенето.
Цените са в евро. */
System.out.println("Кафе 2,50 €");
// System.out.println("Кроасан 1,80 €");
System.out.println("Общо 2,50 €"); // кроасаните свършиха
Изход
Кафе 2,50 €
Общо 2,50 €

Редът с кроасана е код, но е зад //, затова не се изпълнява. Така временно изключваш ред, без да го триеш.

Добрият коментар казва защо, не какво. Кодът сам показва какво прави.

Пробвай

Кое ще излезе?

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

System.out.println("9:00 Математика");
// System.out.println("10:00 Физика");
System.out.println("11:00 История"); // после е обяд
Отговор

Проблем

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

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

Main.java
public class Main {
public static void main(String[] args) {
System.out.println("Добре дошъл в курса!")
System.out.println("Започваме.");
}
}
Съобщение от компилатора
Main.java:3: error: ';' expected
System.out.println("Добре дошъл в курса!")
^
1 error

Преди да се изпълни, програмата минава през компилатора. Той превежда кода за компютъра и проверява дали е написан по правилата. Ако не е, спира и не пуска нищо. Това се казва грешка при компилиране (compile error).

Идеята

Как се чете съобщението

Съобщението казва три неща: файла, реда и какво не е наред.

Main.java:3 значи файлът Main.java, ред 3. ';' expected значи „очаквах ;“. Знакът ^ под кода сочи мястото, където компилаторът е забелязал проблема.

Най-честите грешки в началото:

  • липсва ; в края на командата;
  • кавичка или скоба е отворена, но не е затворена;
  • малка буква вместо главна: system.out.println.

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

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

Пробвай

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

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

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

Упражнение

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

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

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

Изход
Hello, World!

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

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

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

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

Още задачи

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

Тест

Провери се

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

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