## <ins>Что такое программирование?</ins>
*"Программирование — процесс создания **компьютерных программ**."* \- **Wiki**
Нужно узнать что мы создаем, чтобы знать как оно устроено и уметь это создавать.
- [Программирование](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%87%D0%B0%D0%BD%D0%B8%D1%8F) / [Computer programming](https://en.wikipedia.org/wiki/Computer_programming)
* * *
## <ins>Что такое программа и компьютерная программа?</ins>
***Программа*** — термин, в переводе означающий «предписание», то есть заданную последовательность действий. Данное понятие непосредственно связано с понятием *алгоритм*. (Здесь я затрагиваю понятие "программа" вне компьютера.)
**Компьютерная программа** \- это последовательность или набор инструкций на языке программирования, предназначенных для выполнения компьютером.
Пример программы **"Заварки чая"**, который мы используем в повседневной жизни:
1. Возьмите чайник и налейте в него нужное количество воды.
2. Включите плиту и поставьте чайник на нее.
3. Дождитесь, пока вода закипит.
4. Возьмите кружку и в нее положите чайный пакетик или чайную ложку с чаем.
5. Если вы хотите заварить чай с молоком или сахаром, добавьте их в кружку.
6. Когда вода закипит, выключите плиту и снимите чайник с плиты.
7. Налейте горячую воду из чайника в кружку с чаем.
8. Подождите несколько минут, чтобы чай заварился.
9. Если вы используете чайный пакетик, удалите его из кружки с помощью ложки или щипцов для чая.
10. Перемешайте чай, если добавляли молоко или сахар, и подайте на стол.
Для описания какой-либо программы в повседневной жизни нам хватает родного языка, на котором мы говорим и выражаем свои мысли. Если мы захотим объяснить нашу программу иностранцу, то нам придётся изучить слова и грамматические правила родного языка этого иностранца, чтобы уметь описать ему нашу программу. Так же с компьютером. Компьютер для нас в роли иностранца, которому мы должны объяснить нашу программу.
Тот же самый пример, но уже на понятном компьютеру языке (обратите внимание, что это лишь примерный перевод программы на языке программирования):
```
function brewTea() {
// Step 1
takeKettle();
fillWater(kettle, desiredAmountOfWater);
turnOnStove();
placeKettleOnStove(stove, kettle);
waitForBoiling(kettle);
// Step 2
takeCup();
putTea(cup, teaBagOrTeaSpoon);
if (needMilkOrSugar) {
addMilkOrSugar(cup);
}
// Step 3
turnOffStove();
removeKettleFromStove(stove, kettle);
pourHotWater(kettle, cup);
// Step 4
waitMinutes(3);
if (usingTeaBag) {
removeTeaBag(cup);
}
// Step 5
stirTea(cup);
serveTea(cup);
}
brewTea();
```
Изучение языка программирования будет намного проще, чем, допустим, задача изучения иностранного языка. На самом деле язык программирования характеризуется словарем из нескольких десятков слов и правил грамматики.
- [Computer program](https://en.wikipedia.org/wiki/Computer_program)
Значит для создания компьютерной программы нам нужно понять что это за ***последовательность или набор инструкция на языке программирования***.
* * *
## <ins>Алгоритм</ins>
**Алгоритм** \- это совокупность точно заданных набор инструкций, которые описывают порядок действий исполнителя для решения определённой задачи.

Пример **алгоритма**. Можно увидеть, что всё выполняется последовательно.
Как тогда реализовать алгоритм? Для этого нам нужно понять основной принцип работы программирования. Основной принцип работы программирования называется "**Алгоритмизация**".
***Алгоритмизация*** \- У нас есть задача, которую нужно решить. Сначала описываем задачу, это у нас в программировании будет **input** (входные данные). Сам процесс решения задачи назовём **алгоритм** (Процесс решения). Полученное решение задачи в идеале будет называться **output** (Выходные данные).
==**Input → Algorithm → Output**==