alina333 2 / 2 / 0 Регистрация: 10.11.2016 Сообщений: 9 |
||||
1 |
||||
12.11.2016, 14:11. Показов 2961. Ответов 14 Метки нет (Все метки)
День добрый, уважаемые форумчане! Находимся с дочерью на начальном уровне изучения Паскаля program summanechet; {Написать программу, которая находит наибольшее из чисел, кратных семи в
1 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
12.11.2016, 14:11 |
Ответы с готовыми решениями: Оператор break как оператор go to next
Оператор break
14 |
Puporev Почетный модератор 64288 / 47587 / 32739 Регистрация: 18.05.2008 Сообщений: 115,181 |
||||
12.11.2016, 14:46 |
2 |
|||
1 |
bormant Модератор 7534 / 4394 / 2785 Регистрация: 22.11.2013 Сообщений: 12,588 Записей в блоге: 1 |
||||
12.11.2016, 15:07 |
3 |
|||
1) Программа не соответствует условию. Задача из комментария:
Добавлено через 6 минут Добавлено через 9 минут
1 |
2 / 2 / 0 Регистрация: 10.11.2016 Сообщений: 9 |
|
12.11.2016, 15:39 [ТС] |
4 |
оеей, я балда! Условие к задаче вот такое:
0 |
bormant Модератор 7534 / 4394 / 2785 Регистрация: 22.11.2013 Сообщений: 12,588 Записей в блоге: 1 |
||||||||||||
12.11.2016, 15:53 |
5 |
|||||||||||
Особой обработки для 0 опять не требуется. Добавлено через 4 минуты
Добавлено через 3 минуты
0 |
Почетный модератор 64288 / 47587 / 32739 Регистрация: 18.05.2008 Сообщений: 115,181 |
|
12.11.2016, 15:55 |
6 |
Если нужно считать и отрицательные двузначные, то Нужно ибо сказано
Введённые числа по модулю не превышают 30000.
0 |
2 / 2 / 0 Регистрация: 10.11.2016 Сообщений: 9 |
|
12.11.2016, 16:02 [ТС] |
7 |
bormant, Спасибо огромное! Я так понимаю что мы перемудрили,, точнее я Добавлено через 7 минут
0 |
Модератор 7534 / 4394 / 2785 Регистрация: 22.11.2013 Сообщений: 12,588 Записей в блоге: 1 |
|
12.11.2016, 16:14 |
8 |
Odd — http://pascal.net.ru/Odd , (n mod 2<>0) или (n and 1<>0) дадут тот же результат Про Break — просто считайте его запрет дополнительным ограничением в условии задачи. Возможно, это врЕменное ограничение, возможно только для циклов for.
0 |
alina333 2 / 2 / 0 Регистрация: 10.11.2016 Сообщений: 9 |
||||
12.11.2016, 16:33 [ТС] |
9 |
|||
bormant, Спасибо! Но я так поняла постановку задачи, что использовать надо было именно те знания, которые им давали на уроке. Иначе учитель вряд ли бы поверил, что ребенок написал программу сам. Я и так там перемудрила с лишними проверками Добавлено через 11 минут
Может Inc(k) здесь не нужно? Я правильно поняла, что изначально все переменные в программе имеют нулевые значения, поэтому {k:=0;} в фигурных скобках, т.е их принудительно обнулять не нужно?
0 |
Модератор 7534 / 4394 / 2785 Регистрация: 22.11.2013 Сообщений: 12,588 Записей в блоге: 1 |
|
12.11.2016, 17:05 |
10 |
alina333,
0 |
2 / 2 / 0 Регистрация: 10.11.2016 Сообщений: 9 |
|
12.11.2016, 19:00 [ТС] |
11 |
bormant, Ввела значения 52, 43,85. В ответе 2
0 |
Модератор 7534 / 4394 / 2785 Регистрация: 22.11.2013 Сообщений: 12,588 Записей в блоге: 1 |
|
12.11.2016, 19:02 |
12 |
alina333,
0 |
Почетный модератор 64288 / 47587 / 32739 Регистрация: 18.05.2008 Сообщений: 115,181 |
|
12.11.2016, 19:07 |
13 |
это неправильное количество нечетных Так нужно сумму.
Программа должна вывести одно Добавлено через 1 минуту
0 |
bormant Модератор 7534 / 4394 / 2785 Регистрация: 22.11.2013 Сообщений: 12,588 Записей в блоге: 1 |
||||
12.11.2016, 19:08 |
14 |
|||
нужно сумму Война давно закончилась, а я всё эшелоны под откос пускаю
1 |
2 / 2 / 0 Регистрация: 10.11.2016 Сообщений: 9 |
|
13.11.2016, 00:45 [ТС] |
15 |
Всем огромное спасибо за терпение! Впредь обязуюсь правильно вставлять текст программы в тело поста и не лениться думать
1 |
Процедуры прерываний
Обработка <Ctrl
+ Break>
Прерывание
исполнения программы можно вызвать
нажатием комбинации клавиш Ctrl
+ Break
(применяется,
если программа «зависла»)
Процедура Break
Осуществляет
принудительный выход из цикла.
Если цикл организован
с помощью оператора FOR,
WHILE
или REPEAT,
применение процедуры Break
приводит к передаче управления следующему
(после тела цикла) оператору. Это
напоминает действие оператора GOTO,
осуществляющего переход к метке,
находящейся сразу после тела цикла.
При вызове
процедуры Break
вне цикла
FOR,
WHILE
или REPEAT
имеет место ошибка.
Процедура Continue
Осуществляет
переход к следующей итерации цикла.
Если цикл организован
с помощью оператора FOR,
WHILE
или REPEAT,
применение процедуры Continue
прерывает
текущую итерацию и инициирует переход
к следующей итерации. При
вызове процедуры Continue
вне цикла
FOR,
WHILE
или REPEAT
имеет место ошибка.
Процедура Exit
Осуществляет выход
из текущего блока программы.
Если текущим блоком
является тело программы, обращение к
процедуре Exit
инициирует
завершение программы.
Процедура
Halt(Cod)
Останавливает
выполнение программы и передаёт
управление операционной системе. Cod
– необязательный параметр, содержащий
код завершения программы.
Пример:
Найти первое
отрицательное число во входном потоке
из вещественных чисел (не более 100)
———————————————————————
Program L_6;
Var i: integer;
a: real;
begin
for
i:=1 to 100 do
begin
read(a);
if
a>=0
then
continue;
{при выполнении
условия изменяется
параметр
цикла и цикл повторяется сначала}
writeln(‘первое
отр. число =,а:5:2’);
Break
{выход
из
цикла}
end;
end.
———————————————————
Ответ:
4
2
1
-8
первое отр
число=-8.00
———————————————————-
Типизированные константы
Пример
.
.
const
Вид <идентификатор>
= <значение>
c1=value
Вид <идентификатор>
: <тип> = <значение> c2:type=value
.
.
Здесь для
сравнения даны описания обычной(c1)
и типизированной(c2)
констант.
c1
и c2
– идентификаторы обычной и типизированной
констант
type
– тип константы, данный элемент
присутствует в описании только
типизированной константы – это и
является её основной внешней отличительной
особенностью;
value
– значение, присваиваемое константе
(как типизированной, так и нетипизированной)
при объявлении.
И те и другие
константы описываются в разделе
описаний констант.
Константы вида
<идентификатор>=<значение>
изменять в программе нельзя.
Типизированным
же константам можно присваивать другие
значения в ходе выполнения программы,
физически они представляют собой
переменные с начальными (стартовыми)
значениями.
Типизированная
константа приобретает указанное при
объявлении значение только к моменту
начала работы программы. При повторном
входе в блок, в котором она объявлена,
константа сохраняет то значение, которое
она имела к моменту выхода из блока.
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
- #
Я пытаюсь создать цикл for для своего алгоритма сортировки пузырьком и использую разрыв в качестве условия, если больше нет числа для сортировки. Но потом компилятор сказал, что BREAK не разрешен. Вот мой код
Procedure Sort(var data : arr; j : integer);
var
temp: integer;
begin
temp := data[j];
data[j] := data[j + 1];
data[j + 1] := temp;
end;
Procedure sortDescending(var data : arr; n : integer);
var
i, j : integer;
marker : boolean;
begin
for i := 1 to n do
marker := false;
begin
for j := 1 to n do
begin
if(data[j] < data[j + 1]) then
begin
Sort(data, j);
marker := true;
end;
end;
if(marker = false) then
begin
break;
end;
end;
end;
1 ответ
Вот твой код.
for i := 1 to n do marker := false; begin for j := 1 to n do begin if(data[j] < data[j + 1]) then begin Sort(data, j); marker := true; end; end; if(marker = false) then begin break; end; end;
Давайте добавим немного пробелов после циклов и отступов, чтобы сделать проблему более ясной.
for i := 1 to n do
marker := false;
begin
for j := 1 to n do
begin
if (data[j] < data[j + 1]) then
begin
Sort(data, j);
marker := true;
end;
end;
if (marker = false) then
begin
break;
end;
end;
Что эквивалентно:
for i := 1 to n do
marker := false;
for j := 1 to n do
begin
if (data[j] < data[j + 1]) then
begin
Sort(data, j);
marker := true;
end;
end;
if (marker = false) then
begin
break;
end;
break
не находится внутри цикла.
Вероятно, вы хотели поставить begin
перед marker := false;
.
for i := 1 to n do
begin
marker := false;
for j := 1 to n do
begin
if (data[j] < data[j + 1]) then
begin
Sort(data, j);
marker := true;
end;
end;
if (marker = false) then
begin
break;
end;
end;
1
Chris
6 Авг 2022 в 01:22
Раздел: Стандартные функции Паскаля
|
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее… |
Процедура Break в Паскале выполняет прерывание цикла. Синтаксис:
procedure Break;
Процедура Break выполняет переход к оператору, следующему после текущего блока цикла.
Код после вызова Break и окончанием блока цикла не выполняется. Состояние текущего цикла при этом прекращает отслеживаться.
Процедура Break может использоваться с циклами
FOR и
WHILE.
Учтите, что Break — это зарезервированное слово и оно не может быть переопределено.
Как прервать цикл в Паскале
Пример программы, которая использует процедуру Break для прерывания цикла, приведён ниже:
program breakproc; {$mode objfpc}{$H+} var i, j : byte; //**************************************************************** // Так делать нельзя, потому что тогда прерывание цикла // с помощью Break не будет работать //**************************************************************** {procedure Break; begin end;} begin //Будут выведены 4 числа от 1 до 4 for i := 1 to 10 do begin Write(i:3); if i = 4 then Break; end; WriteLn; //Будут выведены 3 числа от 1 до 3 for i := 1 to 10 do begin if i = 4 then Break; Write(i:3); //!!! Этот код после вызова Break //уже не будет выполнен !!! end; WriteLn; //Прерывание вложенного цикла for j := 11 to 15 do //Цикл 1 begin for i := 1 to 10 do //Вложенный цикл 2 begin if i = 3 then Break; //Прерывает вложенный цикл 2, Write(i:3); //но цикл 1 будет выполнен до конца !!! end; Write(j:3); end; WriteLn; //Прерывание основного цикла for j := 11 to 15 do //Цикл 1 begin for i := 1 to 10 do //Вложенный цикл 2 begin if i = 3 then Break; //Прерывает вложенный цикл 2 Write(i:3); end; if j = 13 then Break; //Прерывает цикл 1 Write(j:3); end; ReadLn; end.
Обратите внимание на то, что код в теле цикла, расположенный после вызова Break, уже не будет выполняться (так как цикл прерывается в том месте, где вызывается процедура Break).
Также обратите внимание на то, как работает прерывание вложенного цикла: прерывается только вложенный цикл, а основной продолжает работать.
Также обратите внимание на нашу собственную процедуру Break в начале программы. Она закомментирована и не компилируется.
Однако, если вы её раскомментируете, то процедура Break будет переопределена. Ошибки компиляции это не вызовет — программа будет создана.
Но стандартная процедура Break не будет работать!!! То есть выйти из цикла с помощью процедуры Break вы не сможете, потому что вызываться будет уже не стандартная процедура из модуля SYSTEM, а ваша собственная процедура, объявленная в начале программы, которая не выполняет выход из цикла.
|
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… |
|
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение — ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. |
Что означает ошибка SyntaxError: ‘break’ outside loop
Это значит, что мы пытаемся выйти из цикла, которого нет
Это значит, что мы пытаемся выйти из цикла, которого нет
Ситуация: мы пишем опросник на Python, и нам важно, чтобы его мог пройти только совершеннолетний. Для этого мы добавляем в код такую логику:
- Спрашиваем про возраст.
- Смотрим, он больше 18 или нет.
- Если нет — останавливаем программу.
- Пишем дальше код, который будет работать, если участнику есть 18 лет и программа не остановилась.
На Python это выглядит так:
# запрашиваем возраст
age_txt = input('Введите свой возраст: ')
# переводим введённое значение в число
age = int(age_txt)
# если меньше 18 лет
if age < 18:
# выводим сообщение
print('Вы не можете участвовать в опросе')
# выходим из программы
break
# спрашиваем имя
name_txt = input('Как вас зовут: ')
Вроде всё логично, но после запуска мы получаем ошибку:
❌ SyntaxError: ‘break’ outside loop
Что это значит: в отличие от многих других языков, команда break в Python используется только для выхода из цикла, а не выхода из программы в целом.
Когда встречается: когда мы хотим выйти из программы в середине её работы, но не знаем как.
Что делать с ошибкой SyntaxError: ‘break’ outside loop
Всё зависит от того, что вы хотите сделать.
Если вы хотите выйти из цикла, то break
служит как раз для этого — нужно только убедиться, что всё в порядке с отступами. Например, здесь мы выйдем из цикла, как только переменная станет больше 9:
for i in range(10):
print(i)
if i > 8:
break
А если вы хотите закончить работу программы в произвольном месте, то нужно вместо break
использовать команду exit()
. Она штатно завершит все процессы в коде и остановит программу. Это как раз подойдёт для нашего примера с опросником — теперь программа остановится, если возраст будет меньше 18:
# запрашиваем возраст
age_txt = input('Введите свой возраст: ')
# переводим введённое значение в число
age = int(age_txt)
# если меньше 18 лет
if age < 18:
# выводим сообщение
print('Вы не можете участвовать в опросе')
# выходим из программы
exit()
# спрашиваем имя
name_txt = input('Как вас зовут: ')