Если говорят что программа зациклилась то это значит

Открытый урок по информатике в 10-м классе по теме: «Циклы в языке программирования Turbo Pascal»

I. Проверка домашнего задания

– Вот как выглядит программа:

program sum_or_square;
uses crt;
var
x, y: Real;
begin
clrscr;
WriteLn (‘Введите вещественное число х: ’);
ReadLn (x);
if x > 0 then
begin
WriteLn (‘Введите вещественное число у: ’);
ReadLn (y);
WriteLn (x + y)
end;
else
WriteLn (x * x);
Readkey;
end.

– Молодцы, решили задачу правильно.

II. Изучение нового материала

– Ничего не скажешь – грустная история! Ведь Сизиф – в общем-то неплохой парень, во всяком случаев уме ему не откажешь! Нельзя ли помочь бедняге?
Вот что интересно – дайте прочитать древний миф программисту, и он скажет: “Ничего страшного. Речь идет о выполнении бесконечного цикла. Я и сам иногда попадаю в такое же положение и нахожу из него выход!”

– Цикл является одной из важнейших алгоритмических структур и представляет собой последовательность операторов, которая выполняется неоднократно. В программах, связанных с обработкой данных или вычислениями, часто приходится выполнять циклически повторяющиеся действия. Циклы позволяют записать такие действия в компактной форме.
Циклы принадлежат к числу управляющих операторов. Внимательный ученик мог заметить, что до сих пор мы использовали два вида операторов. Одни из них (Read, Write, оператор присваивания) только выполняли какие-либо действия, другие же управляли ходом выполнения программы (например, условный оператор). Последние и называются управляющими операторами.
Давайте познакомимся с примерами использования циклов в программах на Паскале. Рассмотрим задачу на вычисление суммы большого числа слагаемых:

– Можно было бы выбрать простое решение и записать вычисление данной суммы в строчку, употребив 99 операций деления и 99 операций сложения. Ну а если число элементов суммы равно 1000 или просто любому целому числу? Представьте себе программу с оператором, который занимает несколько страниц и содержит 999 сложений! Очевидно, простое решение здесь уже не подходит. Можно заметить, что при вычислении суммы повторяются всего три операции, причем в определенном порядке:

1. Разделить единицу на знаменатель.
2. Прибавить частное к ранее полученной сумме.
3. Увеличить на 1 значение знаменателя.

– Следовательно, задачу можно решить, например, так:

1. Присвоить переменной Sum значение, равное 0 (Sum : = 0).
2. Присвоить переменной i значение, равное 1 (i:= 1).
3. Добавить к сумме значение 1 / i (Sum := Sum + 1 / i).
4. Увеличить i на 1 (i:= i + 1).
5. Повторить шаги 3 и 4.

– Повторив операции 3 и 4 99 раз, мы получим требуемую сумму. Это пример алгоритмической конструкции “цикл”.

– Каждая из трех разновидностей цикла имеет свои особенности, для каждой из них есть свой круг задач, наиболее естественно решаемых именно с ее помощью.

2.1. Цикл с предусловием

– Цикл с предусловием имеет следующий вид:

Телом цикла может быть и группа операторов, заключенная в операторные скобки begin. end (то есть составной оператор).
Цикл с предусловием выполняется до тех пор, пока истинно условие в заголовке цикла, причем оно проверяется вначале, потом исполняется оператор. Переменным, входящим в условие, должны быть присвоены определенные значения до входа в цикл.
В теле цикла должны быть операторы, которые в какой-то момент изменят значение условия, сделав его ложным. Если этого не случится, цикл будет бесконечным. При возникновении в программе бесконечного цикла говорят, что программа “зациклилась”. Зациклившуюся программу приходится останавливать одновременным нажатием клавиш CtrL + Break, иначе она будет выполняться вечно (точнее, до первого отключения компьютера).
Задача о вычислении суммы может быть решена с использованием цикла whilе. do следующим образом:

program summa1;
uses crt;
const
n = 100;

– Слова rереаt и until являются зарезервированными, как, впрочем, и слово while. В отличие от цикла while операторы внутри цикла repeat выполняются хотя бы один раз, в то время как в цикле whi1е они могут не выполниться ни разу.

2.3 Цикл с параметром (со счетчиком)

– Цикл со счетчиком имеет следующий вид:

– Здесь переменная i, называемая управляющей переменной цикла for (или его счетчиком), является произвольным идентификатором, который объявляется как переменная целого (чаще всего) типа. Она может быть также логической или символьной (о символьном типе речь пойдет дальше). Допускаются и некоторые другие типы, но этот случай мы рассматривать не будем.
При выполнении оператора for сначала вычисляется значение выражения начальное_значение, затем вычисляется значение выражения конечное_значение, далее управляющая переменная цикла последовательно пробегает все значения от начального до конечного. В том случае, когда начальное значение оказывается больше конечного значения, тело цикла не будет выполняться вовсе. Начальное и конечное значения остаются неизменными в ходе выполнения всего цикла fог.
Параметр цикла i, если он целого типа, пробегает все значения с приращением 1, и его текущее значение не должно изменяться операторами внутри цикла. Такое изменение не запрещено правилами языка, но его последствия будут непредсказуемы. После завершения цикла параметр i считается неопределенным.

for i := начальное_значение
dоwntо конечное_значение do.
оператор;

параметр цикла меняется от начального значения до конечного с шагом – 1.

– Программа вычисления суммы с использованием цикла со счетчиком дана далее в двух вариантах (ва риант с to и вариант с downto).

Источник

Переменные, операторы, циклы

Тест 14. ПЕРЕМЕННЫЕ, ОПЕРАТОРЫ, ЦИКЛЫ

1. Какая строка из перечисленных описывает логическую переменную на языке Pascal:

1) var x : integer; 3) var x : real;

2) var x : boolean; 4) var x : char

2. Сколько значений принимает целочисленная переменная в языке Pascal:

1) одно значение ; 3) более 10 значений;

2) два значения; 4) бесконечное множество

3. Укажите, какие операции относятся к логическим операциям:

1) AND, OR, NOT 3) OR, MOD, AND

2) NOT, AND, THEN 4) IF, OR, AND

4. Значением логической переменной может являться:

1) любое число; 3) таблица;

2) любой текст; 4) истина или ложь.

5. Укажите логическое выражение, определяющее полуотрезок (–1, 3]:

3) (X mod 3 =0) AND (X mod 6 <>0);

4) (X mod 3 =0) OR (X mod 6 <>0).

8. Какой из операторов позволяет вычислить корень квадратный из числа на языке программирования Паскаль?

9. Назначение циклической структуры:

1) повторение идущих подряд одинаковых команд некоторое число раз;

2) повторение одной команды не более 10 раз;

3) проверка условия в тексте;

10. Тело цикла – это…

1) группа команд, не входящих в циклическую структуру;

2) произвольный текст;

3) произвольная группа команд;

4) группа команд, повторяющихся некоторое число раз.

11. Укажите, сколько раз выполнится тело цикла с заданным заголовком:

2) 0; 4) бесконечное число раз.

12. Какой из перечисленных заголовков циклов не содержит ошибок?

13. Если говорят, что программа “зациклилась”, то это значит…

1) тело цикла выполняется бесконечно долго;

2) тело цикла не выполняется;

3) тело цикла выполняется только один раз;

4) тело цикла выполняется два раза;

14. Какое значение примет переменная C в результате выполнения программы:

Источник

Как определить зацикливание программы?

Есть программы, которые требуют очень много времени для своей работы
В связи с этим возникло несколько вопросов.

1. Как вы определяете, что программа работает?
2. Как вы определяете, что программа зациклилась?
3. Ваша программа выдает какие-то данные о том что она работает?
4. Ваша программа извещает вас. сколько ей осталось работать?
5. Вы оцениваете время работы программы перед ее запуском?
6. Ваша программа может сама определить, что она зависла?
7. Ваша программа может сама остановиться?
8. Ваша программа остановилась. Объяснит она свою остановку?
полагаю, этого достаточно.

Метод Эйлера-Коши (как прервать зацикливание программы)
Подскажите, пожалуйста, как прервать зацикливание данной программы: clear; a=1; b=2; h=0,02;.

Как определить зацикливание процесса?
Собственно, сабж в названии. Как определить, что некоторая программа другого процесса зациклилась.

Как наиболее быстро определить зацикливание связанного списка? (a => b => c => d => e => a)
You have a pointer to some element in a linked list (a => b => c => d => e). What is the fastest.

Зацикливание программы
Как сделать так, чтобы программа запрашивала у пользователя, нужно ли еще раз решать то или иное.

Решение

1−3, 8 — решается логированием.
4 — если реализовать просто, то можно и сделать.
5 — в некоторых случаях могут быть ожидания относительно времени работы.
6 — в некоторых случаях возможно, смотря что понимать под зависанием.

На более конкретные вопросы будут более конкретные ответы.

Добавлено через 5 минут
Зависание
Некоторые переменные должны обязательно менять
свое значение (можно поставить элементарный счетчик)
если переменная не меняет своего значения (хотя должна)
— 100%% гарантии того, что программа зависла.

Решение

Можно на каждой итерации, можно с выбранным шагом… Как удобно, зависит от конкретной задачи.

Источник

Если говорят что программа зациклилась то это значит

Зацикливание

В прошлой статье мы кратко коснулись случая, когда цикл повторялся бесконечно т.е происходило зацикливание. Теперь подробнее о зацикливании в каждом цикле.

Итак зацикливание в программировании — это ситуация, когда цикл написан таким образом, что условия выхода из него не выполняется. Рассмотрим зацикливание в операторах цикла for,while и repeat. Справедливости ради все варианты будут рассмотрены в Turbo Pascal и PascalABC. Также будет добавлен оператор write для вывода результатов.

Зацикливание в for

Вообще идея зацикливания проста: необходимо всего-то в каждом шаге цикла уменьшать оператор шага на 1 (i:=i-1;). Однако именно такая реализация возможна не везде. Рассмотрим простой пример.

Казалось бы все просто,да не тут то было.В то время как в Turbo Pascal все проходит на ура,в PascalABC такое не возможно и для зацикливания необходимо использовать оператор goto.

label m;
var i:integer;
begin
m:
for i:=1 to 5 do begin
write(i);
if i=2 then goto m;
end;
end.

Зацикливание в while

Напомню, что в операторе while шаг цикла необходимо добавлять самостоятельно. Поэтому произвести зацикливание проще всего: нужно только убрать шаг цикла

Оба компилятора адекватно реагируют на пропуск шага.

Зацикливание в repeat

Для создание бесконечного цикла в этом случае, как и предыдущем, достаточно не указывать шаг цикла

В данной статье приведены различные варианты для создание бесконечного цикла. Однако запомните, что зацикливание создает нагрузку и вообще редко используется. Гораздо чаще применяют неполное зацикливание при котором выход из цикла все же совершается.

Источник

Операторы управления циклом. Зацикливание

Пожалуйста, приостановите работу AdBlock на этом сайте.

Давайте рассмотрим их работу на следующем примере: Модифицируем программу из прошлого урока.

Программа: Игральный кубик.

Программа заменяет обычный игральный кубик.

Код такой программы будет выглядеть следующим образом:

Давайте поясню некоторые новые операторы, которые там используются.

Оператор break

Важный момент. Оператор break работает и во всех циклических конструкциях, и в операторе выбора.

В нашем примере он используется и там, и там. Возникает вопрос: а как он решает, откуда надо выйти: из switch или из цикла. Очень просто.

Оператор break всегда завершает ближайший внешний оператор, внутри которого он находится.

Оператор continue

Зацикливание

Пример: программа сложения пяти введённых чисел.

На первый взгляд всё верно, но попробуйте скомпилировать и запустить эту программу. Вы заметите, что она не спешит останавливаться после того, как мы ввели первые пять чисел.

Когда мы используем эти циклы, необходимо внимательно отслеживать, что переменные, входящие в условия цикла, в теле цикла хоть как-то изменяются.

В нашем примере допущена именно такая ошибка. Условие записано верно, переменная k (счётчик считанных чисел) объявлена и инициализирована, но внутри тела цикла мы забыли её увеличить. Поэтому нашему условию окончания цикла k не суждено стать истинным.

Не всегда подобные ошибки так очевидны, как в нашем случае. Поэтому будьте внимательны, когда используете циклы с условиями.

Давайте приведем нашу программу в рабочее состояние:

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • если выдали электронный больничный а программы нет что делать
  • если включить флажок с учетом регистра при поиске программа различает
  • Если виндовс 10 не активирована что будет
  • если в программе есть скрипты которые повторяются в различных местах программы что лучше сделать
  • Если windows слетел что делать

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии