Инвариантные куски кода
Оптимизация инвариантных фрагментов кода узко связана с неувязкой рационального программирования циклов. Снутри цикла могут встречаться выражения, куски которых никак не зависят от управляющей переменной цикла. Их именуют инвариантными кусками кода. Современные компиляторы нередко определяют наличие таких фрагментов и выполняют их автоматическую оптимизацию. Такое вероятно не всегда, и иногда производительность программы зависит полностью от того, как запрограммирован цикл. В качестве образца осмотрим последующий фрагмент программы (язык Turbo Pascal):
for i := 1 to n do
begin
.
for k := 1 to p do
for m := 1 to q do
begin
a[k, m] := Sqrt(x * k * m — i) + Абс(u * i — x * m + k);
b[k, m] := Sin(x * k * i) + Абс(u * i * m + k);
end;
.
am := 0;
bm := 0;
for k := 1 to p do
for m := 1 to q do
begin
am := am + a[k, m] / c[k];
bm := bm + b[k, m] / c[k];
end;
#4.21 Поколение Python курс для начинающих stepik решения и ответы. Логические операции
end;
Тут инвариантными кусками кода являются слагаемое Sin(x * k * i) в первом цикле по переменной m и операция разделения на элемент массива c[k] во втором цикле по m. Значения синуса и элемента массива не меняются в цикле по переменной m, как следует, в первом случае можно вычислить значение синуса и присвоить его вспомогательной переменной, которая будет употребляться в выражении, находящемся снутри цикла. Во втором случае можно выполнить разделение после окончания цикла по m. Таким образом, можно существенно уменьшить количество трудоёмких арифметических операций.
Ценности оптимизации
Источник: obrazovalka.com
что будет выведено на экран после выполнения следующей программы:
begin
writeln (‘hello, ’);
write (‘world! ’)
end.
2 Смотреть ответы Добавь ответ +10 баллов
Ответы 2
Ответ разместил: dariazincuk1
Доступ после просмотра рекламы
Ответы будут доступны после просмотра рекламы
Показать ответы
end конец ,если я правильно поняла
Удалить ответ +1 балл
Ответ разместил: 1990200827
Доступ после просмотра рекламы
Ответы будут доступны после просмотра рекламы
Показать ответы
Объяснение:После «Writeln» напишет «Hello,» курсор перейдёт на следующую строку,и на ней «Write» напишет «World!»(без перехода на следующую строку курсора).
Удалить ответ +1 балл
Другие вопросы по Информатике
Информатика, IrinaEfremova2003
C# запишите числа фибоначчи (< 50), нарисуйте блок-схему.
Зашёл в комментарии под видео…
Информатика, Лерааникина
Рассчитать ускорение тела с массой 2кг действует сила изменяющейся от 0 до 20н,через каждые 5 м|с. информатика ппограммирование.
Информатика, Masika08
Нужна 1. опишите опасности социальных сетей. 2. в чем основное отличие информационных ресурсов от материальных? 3. перечислите основные виды национальных информационных ресурсов. 4.
Источник: 0tvet.com
Найдите логически неверно записанную последовательность команд
Какое значение Y будет на экране в результате выполнения следующего алгоритма?
Определите значение переменной S после выполнения программы:
VAR A,S: INTEGER;
BEGIN
S:=0;
FOR A:=1 TO 4 DO
S:=S+SQR(A);
WRITE(‘S=’, S);
END.
Какое значение будет иметь переменная B при значении А:= -20, в примере:
if A>=15
then B:=A*2
else B:= A — 10?
– 30
Что будет напечатано в результате выполнения следующей программы,
если значение R равно –10?
read(R);
if R=0 then Y:=R*10;
if R>0 then Y:=R+10;
if R write (‘Y=’, Y)
Оператор цикла, тело которого выполняется как минимум один раз независимо от значения параметра цикла, – это оператор цикла.
с предусловием (WHILE)
с заданным числом повторений (FOR)
Укажите, сколько раз выполнится тело цикла с заданным заголовком:
FOR I:=1 TO 6 DO
Бесконечное число раз
Какой из перечисленных заголовков циклов не содержит ошибок?
FOR X:= 3 TO 12 DO
FOR Y = 0 TO 7 DO
FOR J:= 10 TO — 2 DO
FOR K = 1 TO 5.5 DO
Определите результат работы программы:
A:= — 6;
B:= — 5;
A:=A+2*B;
B:=A;
Write (A,B)
Определите значение целочисленных переменных a и b после выполнения фрагмента программы:
a:= 3 + 8*4;
b:= (a div 10) + 14;
a:= (b mod 10) + 2;
Найдите ошибки в операторах и отметьте правильный вариант ответа
if a>b then c:=a-b else c:=a+b;
if a>b tnen c:=a+b; d:=a*b else c:=a-b;
if a>b c:=a+b else c:=a-b;
Воспользуйтесь поиском по сайту:
studopedia.org — Студопедия.Орг — 2014-2023 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с) .
Источник: studopedia.org