Информатика · урок за начинаещи

Как мисли
програмистът

Какво всъщност направихме досега, защо вървим в този ред и какво е важно да запомните.

a = a + 1;
Защо не по учебник

Първо задачата, после теорията

Обикновено

теория → примери → задачи

Теорията отговаря на въпроси, които още не сте си задали. Звучи сухо и се забравя.

При нас

задачи → блъскане → теория

Когато стигнем до теорията, вие вече сте срещнали всяко нещо. Тя идва като отговор на вашия въпрос.

Ако ви е било трудно, това не е провал. Точно така работи ученето: мозъкът запомня онова, за което се е борил.

Математика срещу програмиране

a = a + 1

В математиката

Твърдение, че двете страни са равни.

a = a + 1 → 0 = 1

Невъзможно. Няма такова число.

В програмирането

Команда: пресметни дясното, после запиши в лявото.

a беше 5 → става 6

Така е във всички езици: JavaScript, C#, Python, C…

Знакът = означава „присвои“. За сравнение „равни ли са?“ се пише === (в C# ==).

На живо · натисни „Следващ ред“

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

Паметта е празна. Да започнем.

В математиката фактите важат завинаги. В програмата всеки ред се изпълнява в своя момент, отгоре надолу, и променя паметта.

Грешките

Който не пише код, не греши

Незатворени кавички, обърната скоба, буква в повече. Това се случва на всеки програмист, всеки ден, включително на най-добрите.

VSCode подчертава с червено, конзолата казва кой ред. Грешката е съобщение, не наказание.

Как да четете грешката

  • Прочетете съобщението, дори да е на английски
  • Вижте номера на реда
  • Проверете и реда над него: често виновникът е там
  • Поправете едно нещо и пуснете пак
Познай грешката · докосни картата

Какво не е наред?

console.log("Здравей);
докосни за отговор
SyntaxError: Invalid or unexpected token
Липсва затварящата кавичка: "Здравей"
if (ocenka > 5) {
  console.log("Отличен");
докосни за отговор
SyntaxError: Unexpected end of input
Липсва затварящата }. Програмата „свършва“ преди блока.
console.log("Сбор: " + 5;
докосни за отговор
SyntaxError: missing ) after argument list
Липсва затварящата скоба )
var ime = "Ана";
Console.log(imee);
докосни за отговор
ReferenceError: Console is not defined
Две грешки! Console → console, imee → ime. Главните и малките букви имат значение.
Как да си помагаме

Попитай програмата: console.log

var tochki = 13;
var ocenka = 2 + tochki / 20 * 4;
// какво е сметнало?
console.log("оценка =", ocenka);

if (ocenka >= 4.5) {
  console.log("влязох в if-а");
}

Когато програмата не прави каквото искате, не гадайте. Отпечатайте стойностите и вижте с очите си.

  • F12 → Console в браузъра
  • отпечатвайте преди и след съмнителното място
  • „влязох тук“ показва кой път е избрала програмата

Това се казва debug: търсене на грешки. Професионалистите го правят по същия начин.

Защо JavaScript

Първите стъпки

  • Има го във всеки браузър, без инсталация
  • Резултатът се вижда веднага: страница, цвят, бутон
  • С него се правят сайтове, сървъри, приложения, игри
  • Къдравите скоби { } и ; са същите като в C#, Java, C++: преходът е лесен
  • Има и капани, които ще срещнем: "5" + 3 дава "53", а "5" - 3 дава 2

Езикът е само дреха. Цикълът, условието и променливата са едни и същи навсякъде.

Какво ще искам от вас

Логиката е по-важна от синтаксиса

Кодер

знае наизуст как се пише всяка команда

Това все повече го правят инструментите: редакторът, документацията, AI.

Разработчик

разбира как трябва да работи системата и защо

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

Разделението на труда: вие мислите как да стане, аз помагам с подробностите на кода.

Типове данни

Три основни вида

💡

Състояние

true / false
да / не · вкл. / изкл.

🔢

Число

5, -3, 4.6
цели и дробни

🔤

Низ

"Здравей"
текст, редица от символи

Всичко останало е съставено от тях: масив от оценки, ученик с име и клас, 3D модел с върхове.

Състояние

Нещо или нищо

В if JavaScript превръща всяка стойност в true или false:

СтойностСтаваЗащо
0falseнула = нищо
""falseпразен текст = нищо
null, undefinedfalseняма стойност
5, -1, "0", " "trueима нещо (дори текстът "0" е нещо!)

Затова if (ime) проверява дали полето не е празно.

Число

Цели, дробни и една изненада

В JavaScript има един вид число за всичко: 5 и 4.6 са от един и същи тип. В C# са различни: int, double…

console.log(0.1 + 0.2);
// 0.30000000000000004

Защо?

Компютърът пази числата в двоичен вид. Както 1/3 няма точен десетичен запис (0.333…), така 0.1 няма точен двоичен.

Затова парите и оценките закръгляме с toFixed(2).

Низ · пиши тук

Текстът е редица от символи

Номерацията започва от 0. Последният символ е s[s.length - 1]. Числото отдолу е кодът на символа.

Низ · какво можем

Прилича на масив, но не съвсем

var s = "Здравей";
s.length          // 7
s[0]              // "З"
s.toUpperCase()   // "ЗДРАВЕЙ"
s.includes("рав") // true
s.indexOf("в")     // 4

Капанът

s[0] = "Х";
console.log(s);   // "Здравей"

Низът не може да се променя на място. Методите връщат нов низ. При масива a[0] = … работи.

В крайна сметка

Всичко е числа

За насЗа компютъраДвоично
true / false1 / 01 / 0
55101
"A"651000001
"Я"107110000101111
бял цвят255, 255, 25511111111 ×3

Типът е договорката как да разбираме числата. Това видяхте и при Белослава: едни и същи байтове са число, текст или цвят.

Да запомним

= е команда.
Грешката е съобщение.
Логиката е ваша.

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