Какая задача более интеллектуальна с точки зрения информатики и почему: решение системы дифференциальных уравнений или задача чтения рукописного текста?
ответ: Повторять пункты 4, 5 ,6 до тех пор пока не будут выполнены все задания ко всем урокам.
Объяснение: Суть циклических алгоритмов в том, чтобы повторять действие, пока какое-то условие не будет выполнено, при этом повторяющиеся действия должны быть направлены на выполнение условия.
Нужно ли нам повторять действие "Сесть за стол."? - нет, потому что это нужно выполнить всего лишь единожды.
Нужно ли нам бесконечно доставать учебные принадлежности? - нет.
Что нам нужно будет делать каждый раз это читать задание к очередному уроку и подготавливать по нему устную часть и письменную часть, поскольку эти задания необходимо выполнять по-кругу, пока "не будут выполнены все задания ко всем урокам".
Единственное что - поскольку цикл абстрактный, то можно спорно говорить про разные его пункты. К примеру, под пунктом 2 могут иметься именно учебные принадлежности определённого предмета, в этом случае нам надо будет повторять это действие, потому что нам нужен всегда учебник самого предмета. Похожая ситуация с пунктом, если, к примеру, нам необходимо каждый раз смотреть расписание и брать следующий предмет из него для выполнения (к примеру мы не можем их всех запомнить посмотрев единожды).
Надеюсь это даст общее представление о том, для чего и как работают алгоритмы и почему именно эти пункты выбраны.
1) if (a[i] mod 2 <> 0) - условие: "если элемент массива нечетный, т.е. при делении на 2 есть остаток, то"
2) p:=p*a[i]; - операция умножения элементов массива. Произведение обозначено p.
3) k:=k+1; - это суммирование, сколько раз выполняется команда
Верно: for i:=7 to 25 do begin
if (a[i] mod 2 <> 0) then begin p := p*a[i]; k:=k+1; end; end;
Объяснение: все ошибки выделены жирным шрифтом.
for i:=7 to 25 do;
read (a[i])
if (a[i] mod 2 <> 0) then begin p:=p*a[i]; k:=k+1; end;
Если в программе поставить знак ; сразу после запроса действия do (сразу после открытие цикла), она не начнёт выполнение условия. Лишним также является read (a[i]), т.к. программе вновь не задаётся цикл, либо её чтение было уже задано до данного цикла с условием.
Если интересна программа полностью, то вот код ниже, а также скриншот с результатами. Заполнение массива задано автоматически числами от 1 до 100. Размерность массива - 25 чисел. При произведении мы всегда задаём значение переменной 1, иначе программа не начнёт операцию, при сложении присваивать значение только 0, но это необязательно.
Program zadacha;
var
a: array [1..25] of integer;
i,p,k: integer;
begin
for i:=1 to 25 do
a[i]:= Random(100); // числа от 1 до 100 будут присутствовать в массиве
writeln('Заполненный массив:'); for i := 1 to 25 do write(a[i],' ');
p:=1; k:=0;
for i:=7 to 25 do begin
if (a[i] mod 2 <> 0) then begin p := p*a[i]; k:=k+1; end; end;;
ответ: Повторять пункты 4, 5 ,6 до тех пор пока не будут выполнены все задания ко всем урокам.
Объяснение: Суть циклических алгоритмов в том, чтобы повторять действие, пока какое-то условие не будет выполнено, при этом повторяющиеся действия должны быть направлены на выполнение условия.
Нужно ли нам повторять действие "Сесть за стол."? - нет, потому что это нужно выполнить всего лишь единожды.
Нужно ли нам бесконечно доставать учебные принадлежности? - нет.
Что нам нужно будет делать каждый раз это читать задание к очередному уроку и подготавливать по нему устную часть и письменную часть, поскольку эти задания необходимо выполнять по-кругу, пока "не будут выполнены все задания ко всем урокам".
Единственное что - поскольку цикл абстрактный, то можно спорно говорить про разные его пункты. К примеру, под пунктом 2 могут иметься именно учебные принадлежности определённого предмета, в этом случае нам надо будет повторять это действие, потому что нам нужен всегда учебник самого предмета. Похожая ситуация с пунктом, если, к примеру, нам необходимо каждый раз смотреть расписание и брать следующий предмет из него для выполнения (к примеру мы не можем их всех запомнить посмотрев единожды).
Надеюсь это даст общее представление о том, для чего и как работают алгоритмы и почему именно эти пункты выбраны.
В данном фрагменте программы идёт
1) if (a[i] mod 2 <> 0) - условие: "если элемент массива нечетный, т.е. при делении на 2 есть остаток, то"
2) p:=p*a[i]; - операция умножения элементов массива. Произведение обозначено p.
3) k:=k+1; - это суммирование, сколько раз выполняется команда
Верно: for i:=7 to 25 do begin
if (a[i] mod 2 <> 0) then begin p := p*a[i]; k:=k+1; end; end;
Объяснение: все ошибки выделены жирным шрифтом.
for i:=7 to 25 do;
read (a[i])
if (a[i] mod 2 <> 0) then begin p:=p*a[i]; k:=k+1; end;
Если в программе поставить знак ; сразу после запроса действия do (сразу после открытие цикла), она не начнёт выполнение условия. Лишним также является read (a[i]), т.к. программе вновь не задаётся цикл, либо её чтение было уже задано до данного цикла с условием.
Если интересна программа полностью, то вот код ниже, а также скриншот с результатами. Заполнение массива задано автоматически числами от 1 до 100. Размерность массива - 25 чисел. При произведении мы всегда задаём значение переменной 1, иначе программа не начнёт операцию, при сложении присваивать значение только 0, но это необязательно.
Program zadacha;
var
a: array [1..25] of integer;
i,p,k: integer;
begin
for i:=1 to 25 do
a[i]:= Random(100); // числа от 1 до 100 будут присутствовать в массиве
writeln('Заполненный массив:'); for i := 1 to 25 do write(a[i],' ');
p:=1; k:=0;
for i:=7 to 25 do begin
if (a[i] mod 2 <> 0) then begin p := p*a[i]; k:=k+1; end; end;;
writeln;
writeln('Произведение нечетных элементов:', p);
writeln('Сколько раз выполнилось условие:', k);
end.