Уроци по програмиране · Java, C#, Python, JavaScript
Виж как работи кодът.
Не само какво пише, а какво става: къде отива стойността, накъде сочи стрелката, кой ред върви сега. Кратки уроци от карти, с 3D сцена до кода.
Започни с
- 6590 програми, пуснати и сверени
- 132 3D сцени
- без регистрация

coffee сочи същия обект, затова печата 8.0.
Product coffee = new Product();
coffee.price = 10;
Product sale = coffee;
sale.price = 8;
System.out.println(coffee.price); // 8.0Стъпките с думи
- new прави обекта: полетата му са с начални стойности. В coffee отива стрелка към него.
- По стрелката от coffee: цената на обекта става 10.
- sale = coffee копира стрелката, не обекта. Две стрелки, един обект.
- По стрелката от sale: цената в същия обект става 8.
- coffee сочи същия обект, затова печата 8.0.

coffee сочи същия обект, затова печата 8.
Product coffee = new Product();
coffee.Price = 10;
Product sale = coffee;
sale.Price = 8;
Console.WriteLine(coffee.Price); // 8Стъпките с думи
- new прави обекта: полетата му са с начални стойности. В coffee отива стрелка към него.
- По стрелката от coffee: цената на обекта става 10.
- sale = coffee копира стрелката, не обекта. Две стрелки, един обект.
- По стрелката от sale: цената в същия обект става 8.
- coffee сочи същия обект, затова печата 8.

coffee сочи същия обект, затова печата 8.
coffee = Product()
coffee.price = 10
sale = coffee
sale.price = 8
print(coffee.price) # 8Стъпките с думи
- Product() прави обекта: __init__ дава начални стойности на полетата. В coffee отива стрелка към него.
- По стрелката от coffee: цената на обекта става 10.
- sale = coffee копира стрелката, не обекта. Две стрелки, един обект.
- По стрелката от sale: цената в същия обект става 8.
- coffee сочи същия обект, затова печата 8.

coffee сочи същия обект, затова печата 8.
const coffee = new Product();
coffee.price = 10;
const sale = coffee;
sale.price = 8;
console.log(coffee.price); // 8Стъпките с думи
- new прави обекта: полетата му още са undefined. В coffee отива стрелка към него.
- По стрелката от coffee: цената на обекта става 10.
- sale = coffee копира стрелката, не обекта. Две стрелки, един обект.
- По стрелката от sale: цената в същия обект става 8.
- coffee сочи същия обект, затова печата 8.
Една идея, четири езика
Понятието е едно. Синтаксисът е различен.
Един и същ клас на Java, C#, Python и JavaScript. Натисни „Пусни“ и гледай програмата ред по ред: кой ред върви, какво има в обекта, какво излиза накрая.
Dog.javaпроверен
class Dog {
private final String name;
Dog(String name) { this.name = name; }
String speak() { return name + ": Бау!"; }
public static void main(String[] args) {
System.out.println(new Dog("Шаро").speak());
}
}class Dog
{
private readonly string name;
public Dog(string name) => this.name = name;
public string Speak() => $"{name}: Бау!";
static void Main() =>
Console.WriteLine(new Dog("Шаро").Speak());
}class Dog:
def __init__(self, name):
self.name = name
def speak(self):
return f"{self.name}: Бау!"
print(Dog("Шаро").speak())class Dog {
#name;
constructor(name) { this.#name = name; }
speak() { return `${this.#name}: Бау!`; }
}
console.log(new Dog("Шаро").speak());Натисни „Пусни“
Как се учи
Урок от карти, една по една
На екрана е една карта. Първо проблем, който познаваш, после идеята и сцената, после малки задачи с ръцете. Никаква стена от текст. Напредъкът се пази в браузъра ти.
Урок „Защо методи“, Java
- ПроблемЕдна промяна, три места
Започва от нещо, което боли: един и същ код, преписан на три места.
- ИдеятаПиши го веднъж, викай го по име
Идеята с прости думи, после как точно се пише.
- Виж гоКакво става при извикване
3D сцената върви заедно с кода и показва паметта.
- ПробвайВ какъв ред? Кое липсва?
Подреди редовете, допиши липсващото, намери грешката.
- УпражнениеБележката и триъгълникът
Цяла малка програма, която пишеш сам.
- ТестПровери се
Кратък тест. Грешният отговор казва защо е грешен.
Курсове
Целият път, модул по модул
Всеки урок ползва само неща, които вече си видял. Отвори модул и започни от първия му урок.
ООП с Java (ПНПЕ)
От първата програма до класове, наследяване, изключения, колекции, файлове, нишки и бази данни.
Отвори курса- 00Добре дошълезикът, къде се ползва, подготовка3 урока
- 01Основи на езикапроменливи, условия, цикли, масиви9 урока
- 02Методикод, който пишеш веднъж и викаш много пъти4 урока
- 03Класове и обектитвоите собствени типове5 урока
- 04Наследяване и полиморфизъмобщото на едно място5 урока
- 05Грешки и изключениякогато нещо се обърка3 урока
- 06Текст и файловенизове, regex, файлове5 урока
- 07Колекциисписъци, стек, опашка, HashMap5 урока
- 08Модерна Javaламбди, потоци от данни, шаблони4 урока
- 09Програми в истинския святтестове, нишки, мрежа, бази данни, reflection5 урока
ООП с C#
От първата програма до класове, наследяване, изключения, LINQ, async и уеб приложения с ASP.NET и WPF.
Отвори курса- 00Добре дошълезикът, къде се ползва, подготовка3 урока
- 01Основи на езикапроменливи, условия, цикли, масиви9 урока
- 02Методикод, който пишеш веднъж и викаш много пъти4 урока
- 03Класове и обектитвоите собствени типове5 урока
- 04Наследяване и полиморфизъмобщото на едно място5 урока
- 05Грешки и изключениякогато нещо се обърка3 урока
- 06Уеб и десктопLINQ, async, интернет, MVC, WebAPI, WPF8 урока
Програмиране с Python
От първата програма до функции, класове, наследяване, изключения, файлове, колекции, тестове, нишки и бази данни.
Отвори курса- 00Добре дошълезикът, къде се ползва, подготовка3 урока
- 01Основи на езикапроменливи, условия, цикли, масиви9 урока
- 02Функциикод, който пишеш веднъж и викаш много пъти4 урока
- 03Класове и обектитвоите собствени типове5 урока
- 04Наследяване и полиморфизъмобщото на едно място5 урока
- 05Грешки и изключениякогато нещо се обърка3 урока
- 06Текст и файловенизове, regex, файлове5 урока
- 07Колекциисписъци, стек, опашка, речници, множества5 урока
- 08Модерен Pythonламбди, потоци от данни, шаблони4 урока
- 09Програми в истинския святтестове, нишки, мрежа, бази данни, reflection5 урока
Програмиране с JavaScript
От първата програма до функции, класове, наследяване, изключения, файлове, колекции, async, тестове и бази данни с Node.js.
Отвори курса- 00Добре дошълезикът, къде се ползва, подготовка3 урока
- 01Основи на езикапроменливи, условия, цикли, масиви9 урока
- 02Функциикод, който пишеш веднъж и викаш много пъти4 урока
- 03Класове и обектитвоите собствени типове5 урока
- 04Наследяване и полиморфизъмобщото на едно място5 урока
- 05Грешки и изключениякогато нещо се обърка3 урока
- 06Текст и файловенизове, regex, файлове5 урока
- 07Колекциимасиви, стек, опашка, Map, Set5 урока
- 08Модерен JavaScriptламбди, потоци от данни, шаблони4 урока
- 09Програми в истинския святтестове, нишки, мрежа, бази данни, reflection5 урока
Бази данни и SQL
SQL заявки, които пускаш направо в браузъра, проектиране на база, транзакции, индекси, базата в програмата и видовете бази данни с живи симулатори.
Отвори курсаИгри и проект
После правиш нещо истинско
Три игри от нула до края и един голям проект. Всяка стъпка е урок със сцена, а всяка игра казва след кой модул става.
играRPGГерои от пет раси, битки и нива. Наследяване, интерфейси и изключения в игра.
играEpic CosmosЗвезди, планети и спътници като класове, после ресурси, сгради и кораби.
играЗаключената лабораторияТекстова ескейп игра без бой: стаи, команди, загадки и код за продължение.
проектХотелски резервацииСървър и клиент. Когато двама искат една стая в един миг, успява само единият.
Проверен код
Кодът не е преписан на око. Пуснат е.
Всяка програма от уроците и от сцените се компилира и пуска в Docker без мрежа, а изходът се сравнява с този в урока. Ако нещо се счупи, сайтът не се публикува.
- програми
- 65905522 пуснати, 1056 с вход, 12 само компилирани (WPF)
- задачи „намери грешката“
- 418грешката е точно на реда, който задачата сочи
- 3D сцени
- 132всяка стъпка сочи истински ред от кода си
- проблема
- 0при последната проверка
Със същите версии, с които ще пишеш
- Java 21
- .NET 10
- Python 3.12
- Node 22
- Docker
- без мрежа
Въпроси
Често питат
Трябва ли регистрация?
Не. Всичко се чете направо. Напредъкът се пази само в твоя браузър и никъде другаде.
Нужно ли е да знам нещо предварително?
Не. Модулът „Добре дошъл“ казва какво е езикът, къде се ползва и как да подготвиш компютъра си. Всеки следващ урок ползва само неща, които вече си видял.
Кой език да избера?
Понятията са едни и същи, затова няма грешен избор. Ако учиш по учебна програма, вземи нейния език. Ако не: Python се чете най-лесно и е навсякъде в данните и автоматизацията, JavaScript върви във всеки браузър и на сървъра, Java и C# показват типовете най-ясно. C# има и модул за уеб и десктоп приложения.
Еднакви ли са уроците на четирите езика?
Темите, сцените и задачите са едни и същи. Където езикът прави нещо иначе, урокът показва неговия начин: в Python и JavaScript функциите не са в клас, типовете не се пишат, а вместо overloading има стойности по подразбиране.
Какво стана със старите сайтове за Java и C#?
Материалът им е пренесен тук и пренаписан като уроци. Всяка стара страница води към урока, в който отиде съдържанието ѝ.
Какво ново
Последни промени
Уроците и на английски
Всеки урок, игра и проектът имат английска версия, заедно с кода: програмите печатат на английски и минават същата проверка. Сцените пишат надписите си на езика на страницата.
Python и JavaScript
Същите уроци, сцени, задачи и проверки, на Python и на JavaScript. Където езикът прави нещо иначе (функции без клас, типове без деклариране, няма overloading), урокът показва неговия начин.
По-широки уроци, .NET 10 и един голям проект
На голям монитор сцената стои до кода, а изходът до програмата. Кодът на C# се проверява с .NET 10. Шестте подобни упражнения отстъпиха място на един проект стъпка по стъпка: хотелски резервации.
Уроци от карти, с 3D сцена във всеки
Лекциите и упражненията станаха модули от кратки уроци: проблем, идея, сцена, малки задачи, упражнение и тест. Урок не ползва нищо, което още не е показано. Добавени са три игри.
Курсовете по Java и C# са тук
Материалът от java.gh.igergov.com и csharp.gh.igergov.com е пренесен и пренаписан. Всеки стар адрес води към урока, в който отиде съдържанието му.
За сайта
Откъде идва wannacode
Сайтът започна като помощ за студентите в Техническия университет – София: лекции и упражнения по обектно-ориентирано програмиране с Java и C#.
Днес е отворен за всеки, който иска да се развива в програмирането, на четири езика: Java, C#, Python и JavaScript. Отделен курс учи бази данни и SQL.
Създаден от Иво Гергов като част от кампанията на Evo Tech за достъпно обучение по програмиране.
Първият урок е на един клик.
Отвори курса, прочети идеята, пусни кода. Сайтът ще помни докъде си стигнал.