В чем разница между алгоритмом и программой ясно уже из терминологии. Казалось бы, в обоих случаях мы видим упорядоченные действия, приводящие к конечному результату. Как понятно из определений, программа может состоять из нескольких алгоритмов, однако иерархия “общее — частное” здесь не прослеживается. Алгоритм — это вообще любая инструкция, в которой четко перечислены действия. Например, для сборки шкафа. Программой она, конечно, являться не будет. Алгоритм может существовать в любой форме: его можно запомнить, записать в блокнот, зарисовать в виде схемы, продиктовать, так как в основе его — логическая составляющая, а не формальная. Программа же — понятие формальное. Она представляет собой именно запись набора алгоритмов, причем запись на одном из языков программирования, понятных вычислительной машине. Это может быть не только наш привычный компьютер, но и блок управления любого прибора. Таким образом, алгоритм можно определить как метод или схему воплощения идеи, программу — как ее реализацию конкретными средствами. Еще одно отличие программы от алгоритма — оперирование конкретными данными в процессе выполнения. Если алгоритм представляет собой только описание действий, требующихся для достижения цели, то программа содержит и описание данных в том числе. Алгоритм может быть массовым, то есть предназначаться для решения не одной задачи, а класса задач. Вместе с тем к его свойствам относят еще дискретность и определенность. Алгоритм подразумевает совершение элементарных действий над элементарными объектами, однако для разных исполнителей элементарность будет разной.
Понятие алгоритма гораздо шире, нежели программы: базовое понятие математики. Компьютерная программа является объектом права интеллектуальной собственности, алгоритм же к таковым не относится.
// PascalABC.Net 3.0, сборка 1076
var
s,ss:string;
i,n,p:integer;
begin
Write('Введите строку: '); Readln(s);
n:=Length(s); p:=Pos(',',s);
if p in [1..n-1] then begin
ss:=Copy(s,p+1,n-p);
n:=Length(ss); p:=Pos(',',ss);
if p=0 then Writeln(ss)
else Writeln(Copy(ss,1,p-1))
end
else Writeln('*** Нечего выводить ***')
end.
<u><em>Тестовые решения:</em></u>
Введите строку: 01234,45679,1011213,14151617
45679
Введите строку: 01234,45679101121314151617
45679101121314151617
Введите строку: 01234,
*** Нечего выводить ***
Begin
var a:=ArrRandom(10,-150,250); a.Println;
var max := a.Max;
println('Максимальное = ', max);
a.Transform(t->t=max ? max*(-1):t);
a.Println;
end.
S = 4
s = s * 2 (for k :=13 to 20 - параметр цикла)
k = 13 s = 4 * 2 = 8
k = 14 s = 8 * 2 = 16
k = 15 s = 16 * 2 = 32
k = 16 s = 32 * 2 = 64
k = 17 s = 64 * 2 = 128
k = 18 s = 128 * 2 = 256
k = 19 s = 256 * 2 = 512
k = 20 s = 512 * 2 = 1024
Ответ: 1024