Алгоритм и исполнитель
В этом уроке разберём некоторые теоретические понятия, которые формализуют понятие программирования. Заодно точнее сформулируем основную задачу вашего обучения.
Для начала предлагаю вам немного поиграться со следующей детской игрушкой. Пройдите первые пять заданий, возвращайтесь назад и продолжайте чтение урока.

Рис.1 Скриншот игрового поля на code.org
Надеюсь, у вас всё получилось. Теперь на этом примере опишем несколько основных понятий:
- исполнитель;
- система команд исполнителя;
- алгоритм.
В игрушке мы управляем красной птичкой. Задача каждого этапа: добраться птичкой до свиньи. Птичка умеет выполнять определённые команды, например: переместить вперёд, повернуть налево, повернуть направо и др.
Человек, машина или устройство, которые умеют выполнять некоторые команды, называется исполнителем. В этой игрушке, очевидно, исполнитель – птичка. Набор команд, которые понимает и умеет выполнять исполнитель, называют системой команд исполнителя.
Последовательность команд, которую должен выполнить исполнитель для решения задачи, называется алгоритмом.
Необходимо заострить внимание на нескольких моментах.
Важно!
Исполнитель может выполнять только те команды, которые входят в его систему команд.
Это означает, например, что нельзя написать исполнителю-птичке: «Иди к свинье!». Точнее записать можно, но только ничего не произойдёт, т.к. исполнитель таких команд не знает.
Имеющиеся команды вы можете записывать в любом порядке, который посчитаете правильным. Ваша задача как программиста – разделить большую сложную задачу на маленькие отдельные шаги, каждый из которых будет понятен исполнителю. Снова работает принцип «разделяй и властвуй».
Важно!
Исполнитель выполняет точно то, что предписывает ему алгоритм.
Исполнитель-птичка очень доверчивая. Она не подвергает сомнению то, что вы пишете в программе. Если, например, вы забудете развернуть птичку, то она врежется в стенку. Поэтому вы должны следить за всем самостоятельно.
Ваши будущие программы часто будут работать не так, как вы задумывали. Ошибки случаются у всех. Тут важно понимать, что это не компьютер дурак, а вы допустили ошибку в алгоритме. Не уподобляйтесь плохим программистам, у которых во всём всегда виновата программа.
Теперь от наглядного примера перейдём к компьютерным реалиям. Мы пишем программы для компьютера, а значит, компьютер в нашем случае является исполнителем. Система команд – стандартные функции и конструкции языка Си.
В чём состоит основная задача вашего обучения основам программирования? Овладеть навыком алгоритмического мышления. То есть научиться записывать решение различных задач в виде алгоритма для конкретного исполнителя (в нашем случае компьютера).
Итак, подытожим:
Компьютерная программа – алгоритм решения какой-либо задачи, записанный на языке программирования.
Алгоритм – точное описание порядка действий, которые должен выполнить исполнитель для того, чтобы решить задачу.
Исполнитель – человек или некоторое устройство, которое может понимать и выполнять определённый набор команд.
Система команд исполнителя – набор команд, которые понимает и умеет выполнять исполнитель.
Основная задача данного курса – научиться записывать решение различных задач в виде алгоритмов для компьютера.
Оставить комментарий
Чтобы код красиво отображался на странице заключайте его в теги [code] здесь писать код [/code]
Комментарии
int main() {
double e4, e5, e6;
e4=1+1/1+(1/2)+(1/6)+(1/24);
e5=e4 + 1/120;
e6=e5+1/(6*5*4*3*2*1);
printf("%.5lfn%.5lfn%.5lfn", e4,e5,e6);
return 0;
}]
Помогите пожалуйста, это 14 задачка, что не так?
Внимательно прочитайте 4 урок. Там написано как с этим бороться.
"Вещественное число х, полученное от деления произведения цифр четных разрядов числа А на произведение цифр нечётных разрядов числа А."
Sample Input:
3421
Sample Output:
1.50
Я думаю, получается, наоборот, деление произведений нечетных на четные...
Разряды в числе начинают считать с единиц, т.е. с крайней правой цифры числа. При этом счёт начинается с единицы, а не с нуля.
В этом примере в первом разряде записана цифра 1.
Масса одной молекулы воды приблизительно равна 3 times 10^{-23}3?10
?23
грамм. Масса одной капли воды приблизительно 0.050.05 гр. В одном гранёном стакане approx 249.5?249.5 гр. Напишите программу, которая вычисляет количество капель и молекул воды в NN гранёных стаканах воды.
#include <stdio.h>
#include <math.h>
int main() {
int n, drops;
double molecules, massdrop, massglass, massmolecule;
scanf("%d", &n);
massmolecule = 3e-23;
massdrop = 0.05;
massglass = 249.5;
drops = massglass/massdrop;
molecules = massglass/massmolecule;
printf("%d %.3e", drops, molecules);
return 0;
}
Test input:
1
Test output:
4990 8.317e+24
То есть показывает, что я решил задание верно. Но программа такой ответ не принимает. Подскажите пожалуйста, что я должен исправить? У меня ошибка в решении?
Масса одной молекулы воды приблизительно равна 3 times 10^{-23}3?10
?23
грамм. Масса одной капли воды приблизительно 0.050.05 гр. В одном гранёном стакане approx 249.5?249.5 гр. Напишите программу, которая вычисляет количество капель и молекул воды в NN гранёных стаканах воды.
#include <stdio.h>
#include <math.h>
int main() {
int n, drops;
double molecules, massdrop, massglass, massmolecule;
scanf("%d", &n);
massmolecule = 3e-23;
massdrop = 0.05;
massglass = 249.5;
drops = massglass/massdrop;
molecules = massglass/massmolecule;
printf("%d %.3e", drops, molecules);
return 0;
}
Test input:
1
Test output:
4990 8.317e+24
То есть показывает, что я решил задание верно. Но программа такой ответ не принимает. Подскажите пожалуйста, что я должен исправить? У меня ошибка в решении?
#include <math.h>
int main() {
int N,out;
N = scanf("%d", &N);
double h2o,drop,out2;
drop = 0.05;
h2o = 3e-23;
out = (N * 249.5)/drop;
out2 = (N * 249.5)/h2o;
printf("%d %.3e",out, out2);
return 0;
}
Failed test #2 of 12. Wrong answer
This is a sample test from the problem statement!
Test input:
3
Correct output:
14970 2.495e+25
Your code output:
4990 8.317e+24
не пойму почему не перемножает количество стаканов