Программа
Любая машина, будь то электронная кофе-машина или марсоход, выполняет действия по некоторому алгоритму. Например, если зёрен в машине нет — она просит вас их засыпать. Сигнал до марсохода идёт до 20 минут, поэтому он не может получать указания в режиме реального времени и действует самостоятельно на основании заложенной в него программы, изредка получая и отправляя сигналы на землю.
Любое программирование, будь то космический аппарат, сложная игра в 3D или веб-сайт, предназначена для выполнения тех действий, которые человек смог автоматизировать. В целом, программа — это чёрный ящик, у которого есть владелец (программист) и пользователь. Пользователь вносит информацию в этот чёрный ящик посредством ввода: клавиатуры, мыши, голоса, сенсорного экрана и других. Результат возвращается в виде вывода: на экране монитора, в динамиках, в виде автоматически открывающейся двери и других источниках осязаемой для человека информации.
Со стороны программиста, программа — это способ автоматизировать некоторый процесс, для чего имеется набор различных инструментов, который определяет язык программирования и среда, в которой выполняется программа.
Расскажу на примере написания простейшей программы для кофе-машины. Для приготовления кофе потребуется сам кофе в зёрнах и вода, значит нужно два устройства ввода (устройство ввода всегда подразумевает ввод в программу): весы для кофе и объёма воды, также, пользователю нужно нажать кнопку — это взаимодействие с программой, а значит также требует одно устройство ввода, итого три устройства ввода. Теперь мне нужно сигнализировать пользователю, что кофе готов, не хватает зёрен или воды, итого — три устройства вывода.

Алгоритм
Я хочу изготовить кофе-машину, которая по нажатию кнопки приготовит кофе, в целом процесс будет происходить в таком порядке: пользователь нажимает кнопку, кофе-машина проверяет, что все элементы в норме и запускает варку, если есть проблемы — сообщает об этом пользователю. Теперь как это выглядит на схеме.

Внимательно изучите схему и попробуйте составить свою (я использую программу yEd или бумагу и ручку), если нет идей для процесса, попрактикуйтесь на следующих:
- Будильник
- Робот-пылесос
- Автоматическое отключение утюга
- Переход дороги
- Заваривание чая
- Проветривание комнаты
Разработка блок-схемы позволяет абстрактный процесс перенести в линейный, блок-схема отображает алгоритм и всегда разрабатывается до написания программы.