В
Все
М
Математика
О
ОБЖ
У
Українська мова
Д
Другие предметы
Х
Химия
М
Музыка
Н
Немецкий язык
Б
Беларуская мова
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
Р
Русский язык
У
Українська література
Ф
Французский язык
П
Психология
А
Алгебра
О
Обществознание
М
МХК
В
Видео-ответы
Г
География
П
Право
Г
Геометрия
А
Английский язык
И
Информатика
Қ
Қазақ тiлi
Л
Литература
И
История
Qwertyttt
Qwertyttt
02.10.2020 14:00 •  Информатика

Контрольная работа по теме «Программирование и алгоритмизация» 10

https://photos.app.goo.gl/LVvMyMZG3V8t6g1f7

Показать ответ
Ответ:
ExDragon
ExDragon
23.10.2022 08:45
Цикл с предусловием это такой цикл, в котором условие проверяется перед выполнением тела цикла.
А цикл с постусловием - на оборот, он сначала выполнит, а потом проверит условие и если условие true, то цикл завершится.

Цикл с постусловием, можно использовать в таких ситуациях, когда надо что-то сделать и если чего-то не хватает, то сделать еще раз. Напрмер отправить письмо на email, а если не отправилось, то повторить еще 3 раза. Сначала выполнится тело цикла, в котором находятся функции отправки письма и если отправка удачная, то сообщаем until() true. Иначе тело выполнится еще и еще и еще кучу раз, если мы не задали счетчик в теле цикла, как вариант...

Цикл с предусловием можно использовать, если надо проверять какое-то значение ПЕРЕД выполнением тела цикла и тебе не важно, должно ли оно хоть раз выполниться. Например запросить пароль у пользователя. Но если пользователь уже ввёл пароль, то зачем его запрашивать? Тут можно было бы использовать while
0,0(0 оценок)
Ответ:
СергейПеро
СергейПеро
06.02.2020 15:49
Чтобы не загромождать программу, предполагаем без поверки, что x2>x1 и dx>0. Либо, x2<x1 и dx<0. В любых иных вариантах программа зациклится.

В приведенной программе описана функция для подвопроса а); прочие варианты закомментированы. Для получения других вариантов достаточно закомментировать строку y:=2*x; и снять комментарий с нужной строки.

function f(x:real):real;
begin
  f:=2*x;
  {
  f:=x/3+9;
  f:=x-4;
  f:=x/8-6;
  }
end;

var
  x,x1,x2,dx,y:real;
begin
  Writeln('Введите начальное значение, шаг табуляции, конечное значение');
  Read(x1,dx,x2);
  x:=x1;
  repeat
    y:=f(x);
    Writeln('x=',x,', y=',y);
    x:=x+dx
  until x>x2+dx/2 { +dx/2 - это защита от накопления погрешности }
end.

Тестовое решение:
Введите начальное значение, шаг табуляции, конечное значение
0 0.33 3.3
x=0, y=0
x=0.33, y=0.66
x=0.66, y=1.32
x=0.99, y=1.98
x=1.32, y=2.64
x=1.65, y=3.3
x=1.98, y=3.96
x=2.31, y=4.62
x=2.64, y=5.28
x=2.97, y=5.94
x=3.3, y=6.6

Сомневающиеся в пользе "довеска" dx/2 в последней формуле, могут попробовать выполнить этот же контрольный пример, изменив предпоследнюю строку на более привычное until x>x2. И убедиться, что решение для х=3.3 пропадет.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота