Как исправить ошибку в операторе

Stasy Way



Ученик

(91),
закрыт



11 лет назад

программа для проверки двух прямоугольников на равенство.
Код:
program square;
var a,b,x,y:=integer;
begin
write(‘введите значение a=’);
readln(a);
write(‘введите значение b=’);
readln(b);
write(‘введите значение x=’);
readln (x);
write(‘введите значение y=’);
readln(y);
if a=x and b=y then write(‘прямоугольники равны’);
if a=y and b=x then write(‘прямоугольники равны’);
else(‘прямоугольники не равны’);
end.

выдает ошибку “ожидался оператор” в 14 строчке (else…), а как исправить не знаю

Капитан Гугл

Искусственный Интеллект

(145967)


11 лет назад

У оператора if есть две формы:
if …then …;
и
if …then …else …;
Обрати внимание на точку с запятой во втором случае – она ставится только после else! Так что делай так:

if (a=x) and (b=y) then write(‘прямоугольники равны’)
else if (a=y) and (b=x) then write(‘прямоугольники равны’)
else(‘прямоугольники не равны’);

(убраны точки с запятыми и добавлен else) или даже так:

if ((a=x) and (b=y)) or ((a=y) and (b=x)) then write(‘прямоугольники равны’)
else(‘прямоугольники не равны’);

Krab Вark

Оракул

(56898)


11 лет назад

if (a=x) and (b=y) then write(‘прямоугольники равны’) else
if (a=y) and (b=x) then write(‘прямоугольники равны’)
else write(‘прямоугольники не равны’);

Как исправить ошибку в условном операторе?

age = int(input(‘Сколько вам лет? ‘))
procced = (‘Сыграть еще раз?’)

if age<18:
print(‘Вы проиграли!’)
print(procced)

if procced == ‘No’:
breack

Вылетает ошибка:
Traceback (most recent call last):
File “”, line 1, in
No
NameError: name ‘No’ is not defined
>>>


  • Вопрос задан

    более года назад

  • 93 просмотра

вы не весь код выложили. И оформляйте код соответствующим тегом.
А в описании ошибки все написано. В первой же строке кода (которую вы видимо не указали) вы обращаетесь к переменной No, которая еще не определена.

И “breaсk” пишется несколько иначе…

Пригласить эксперта


  • Показать ещё
    Загружается…

17 мая 2023, в 14:02

8000 руб./за проект

17 мая 2023, в 14:01

20000 руб./за проект

17 мая 2023, в 13:48

1000 руб./за проект

Минуточку внимания

Слайд 1
Исправление ошибок в простой программе с условными операторами.
Задание

Исправление ошибок в простой программе с условными операторами.Задание 24

24


Слайд 2
правила построения программы на Паскале, Python или

правила построения программы на Паскале, Python или Си; правила работы с переменными (объявление, ввод,

Си;
правила работы с переменными (объявление, ввод, вывод, оператор

присваивания);
ветвление – это выбор одного из двух возможных вариантов

действий в зависимости от того, выполняется ли некоторое условие;
условный оператор if–else служит для организации ветвления в программе на языке Паскаль;

Что нужно знать:


Слайд 3
условный оператор может иметь полную или неполную

условный оператор может иметь полную или неполную форму; вот фрагменты программы, реализующие ветвления, показанные

форму; вот фрагменты программы, реализующие ветвления, показанные на рисунках

1 и 2:

здесь вместо комментариев в фигурных скобках (они выделены

синим цветом) могут стоять любые операторы языка программирования (в том числе операторы присваивания, другие условные операторы, циклы, вызовы процедур и т.п.)

Что нужно знать:


Слайд 4
обычно при записи программы операторы, находящиеся внутри

обычно при записи программы операторы, находящиеся внутри обоих блоков, сдвигают вправо на 2-3 символа

обоих блоков, сдвигают вправо на 2-3 символа (запись «лесенкой»),

это позволяет сразу видеть начало и конец блока (конечно, если

«лесенка» сделана правильно)
после else не надо (нельзя!) ставить какое-то условие, эта часть выполняется тогда, когда условие после if неверно (частая ошибка – после else пытаются написать условие, обратное тому, которое стоит после соответствующего ему if)
в Паскале перед else не ставится точка с запятой, поскольку это ключевое слово обозначает не начало нового оператора, а вторую часть условного оператора if–else

Что нужно знать:


Слайд 5
слова begin и end (их называют также

слова begin и end (их называют также «операторные скобки») ограничивают блок-1 и блок-2; если

«операторные скобки») ограничивают блок-1 и блок-2; если внутри блока

всего один оператор, эти «скобки» можно не писать, например,
Что

нужно знать:


Слайд 6

в первом случае есть begin, но забыли про

в первом случае есть begin, но забыли про соответствующий ему end;во втором фрагменте наоборот, есть

соответствующий ему end;
во втором фрагменте наоборот, есть end, а

begin отсутствует;
Что нужно знать:


Слайд 7
третий случай более сложный: судя по записи «лесенкой»,

третий случай более сложный: судя по записи «лесенкой», здесь внутри блока-1 находятся 2 оператора, а

здесь внутри блока-1 находятся 2 оператора, а операторных скобок

begin-end нет; в результате получилось, что оператор c:=1 находится внутри

блока-1, он выполняется только при условии a=b;
оператор d:=1 выполняется всегда, после того, как условный оператор закончил работу; а else вообще «висит» непонятно как, тут транслятор выдаст ошибку; исправить эту программу можно так, как показано снизу (добавив пару begin-end):

Что нужно знать:


Слайд 8
ключевая тема этого задания ЕГЭ – использование вложенных

ключевая тема этого задания ЕГЭ – использование вложенных условных операторов, причем в тексте задания фрагмент

условных операторов, причем в тексте задания фрагмент программы обычно

записан без отступов «лесенкой» или с неправильными отступами, например, так:
Что

нужно знать:


Слайд 9
ключевая тема этого задания ЕГЭ – использование вложенных

ключевая тема этого задания ЕГЭ – использование вложенных условных операторов, причем в тексте задания фрагмент

условных операторов, причем в тексте задания фрагмент программы обычно

записан без отступов «лесенкой» или с неправильными отступами, например, так:
Что

нужно знать:

Чтобы разобраться с работой этих программ, нужно определить, к какому из условных операторов if относится часть else; для этого используют такое правило: «любой else относится к ближайшему if».

перед else стоит end, поэтому для него нужно найти соответствующий ему begin; таким образом определяем, что else относится к первому (внешнему) условному оператору.

перед else нет end, поэтому он относится к ближайшему по тексту внутреннему условному оператору.


Слайд 10
в условных операторах можно использовать сложные условия,

в условных операторах можно использовать сложные условия, которые строятся из простых отношений (=, =,

которые строятся из простых отношений (=,

=, ) с помощью логических операций not («НЕ», отрицание), and

(«И», одновременное выполнение двух условий) и or («ИЛИ», выполнение хотя бы одного из двух условий)
в сложном условии сначала выполняются действия в скобках, потом – not, затем – and, затем – or и, наконец, отношения;
операции равного уровня (приоритета) выполняются последовательно слева направо

Что нужно знать:


Слайд 11
поскольку отношения в Паскале имеют низший приоритет,

поскольку отношения в Паскале имеют низший приоритет, в сложном условии их приходится брать в

в сложном условии их приходится брать в скобки:
if (a

= b) or (b < c) and (c d)

then begin

end;
в приведенном выше примере сначала определяются результаты сравнения (выражения в скобках), затем выполняется операция and («И»), а затем – or («ИЛИ»)

Что нужно знать:


Слайд 12

Пример задания:
На обработку поступает последовательность из четырёх неотрицательных

Пример задания:На обработку поступает последовательность из четырёх неотрицательных целых чисел (некоторые числа могут быть одинаковыми).

целых чисел (некоторые числа могут быть одинаковыми). Нужно написать

программу, которая выводит на экран количество нечётных чисел в исходной

последовательности и максимальное нечётное число. Если нечётных чисел нет, требуется на экран вывести «NO». Известно, что вводимые числа не превышают 1000. Программист написал программу неправильно. Вот она:


Слайд 14

Пример задания:
Последовательно выполните следующее.
1. Напишите, что выведет эта

Пример задания:Последовательно выполните следующее.1. Напишите, что выведет эта программа при вводе последовательности: 2 9 4

программа при вводе последовательности: 2 9 4 3
2. Приведите

пример такой последовательности, содержащей хотя бы одно нечётное число, что,

несмотря на ошибки, программа печатает правильный ответ.
3. Найдите все ошибки в этой программе (их может быть одна или несколько). Известно, что каждая ошибка затрагивает только одну строку и может быть исправлена без изменения других строк. Для каждой ошибки:
1) выпишите строку, в которой сделана ошибка;
2) укажите, как исправить ошибку, т.е приведите правильный вариант строки. Обратите внимание, что требуется найти ошибки в имеющейся программе, а не написать свою, возможно, использующую другой алгоритм решения. Исправление ошибки должно затрагивать только строку, в которой находится ошибка.


Слайд 15

Решение:
обратим внимание на две строки в начале программы,

Решение:обратим внимание на две строки в начале программы, которые начинаются с ключевого слова var: это

которые начинаются с ключевого слова var: это не ошибка,

такое повторение, действительно, допустимо в языке Паскаль; возможно, это была

одна из ловушек разработчиков КИМ, которую они применили на реальном ЕГЭ-2014
теперь выполним программу для заданной последовательности 2 9 4 3, записывая все изменения переменных в таблицу:


Слайд 17

Решение:
при ручной прокрутке программы мы увидели, что она

Решение:при ручной прокрутке программы мы увидели, что она правильно подсчитала количество нечётных чисел во входной

правильно подсчитала количество нечётных чисел во входной последовательности, но

неверно определила максимум: значение переменной maximum, которое было выведено на

экран, осталось равным начальному значению 999, так как все остальные нечётные числа были меньше этого начального значения; поэтому ответ на п. 1 задания должен быть таким:

1) Программа выведет числа 2 и 999.


Слайд 18

Решение:
поскольку все числа по условию неотрицательны и не

Решение:поскольку все числа по условию неотрицательны и не превышают 1000, программа всегда будет выдавать 999

превышают 1000, программа всегда будет выдавать 999 вместо максимального

нечётного числа; в то же время мы выяснили, что количество

нечётных чисел в последовательности считается правильно; поэтому любая последовательность, содержащая 999, будет обрабатываться правильно
таким образом, правильный ответ на п. 2 должен быть таким:
2) Программа работает правильно для последовательности: 2 9 3 999.


Слайд 19

Решение:
6) теперь будем искать ошибки; как уже отмечалось, повторное

Решение:6)	теперь будем искать ошибки; как уже отмечалось, повторное использование ключевого слова var допустимо и указывать

использование ключевого слова var допустимо и указывать это в

качестве ошибки нельзя!
7) как следует из результатов ручной прокрутки программы, во

многих случаях она выдаёт неверный результат из-за того, что неверно задано начальное значение переменной maximum: оно должно быть меньше, чем любой возможный результат;
8) наименьшее нечётное неотрицательное число – это 1, поэтому можно принять в качестве начального значения maximum любое число, меньшее единицы (на самом деле, программа будет правильно работать и для 1), например:
3) Ошибка 1. maximum:=999;
Исправление: maximum:=0;


Слайд 20

Решение:
9) если теперь (с исправленной первой ошибкой) сделать ручную

Решение:9)	если теперь (с исправленной первой ошибкой) сделать ручную прокрутку программы, то мы увидим, что на

прокрутку программы, то мы увидим, что на последовательности 2

9 4 3 она выдает сначала 2, а потом –

4, то есть, значение максимума вычисляется опять неверно;
откуда появится число 4 в переменной maximum? оно будет записана в результате выполнения оператора if x > maximum then maximum:=i, который записывает в переменную maximum не значение полученного числа (x), а его номер (i); таким образом, мы нашли вторую ошибку:

Ошибка 2. if x > maximum then maximum:=i
Исправление: if x > maximum then maximum:=x


Слайд 21
Если Вы хотите ещё поработать над подобными задачами

Если Вы хотите ещё поработать над подобными задачами имея возможность свериться с решением, то откройте

имея возможность свериться с решением, то откройте текстовый документ

«24.docx», прикреплённый к этому уроку.
А если считаете, что вы готовы,

то решите тест.
ссылка на тест

Итого:


Dmitry37

1 / 1 / 0

Регистрация: 06.12.2011

Сообщений: 15

1

Исправить ошибку “ожидался оператор”

10.01.2012, 15:13. Показов 32444. Ответов 3

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Program vector;

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Uses crt;
Var i,j,k:byte; x:array[1..100] of real;
    y:array[1..100,1..100] of real;
Begin
 Clrscr;
 Write('введите k='); readln(k);
 For i:=1 to k do
  begin write('x[',i:2,']=');read(x[i]);end;
 For i:=1 to k do
  For j:=1 to k do
  y[i,j]:=cos(x[i])*sin(j*x[j]);
  Writeln('элементы матрицы y')
For i:=1 to k do
  begin
  for j:=1 to k do write(' ',y[i,j]:0:4);
  writeln;
   end;
  Readln;
 End.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

10.01.2012, 15:13

Ответы с готовыми решениями:

Исправить ошибку “ожидался оператор”
Program okryjnost;
Uses crt;
Var
a,b,x,y,p1,p2,f1,f2,m1,m2,p,f,m,R: real;
n:integer;
Begin…

Ошибка “Ожидался оператор” при вычислении выражения
Program di;
var x,y,z,t:real;
Begin
writeln(‘Введите х’);
readln(x);…

Поиск суммы положительных четных чисел и ошибка “Ожидался оператор”
Выдает ошибку,где&quot;у&quot;, Встречено ‘:=’, а ожидался оператор

var q:real;
t,i,y:integer;…

Массив записей о городах: “ожидался оператор”
Помогите, пожалуйста, в 14 строчке при попытке запустить программу вылезает ошибка: &quot;ожидался…

3

Puporev

Почетный модератор

64285 / 47584 / 32739

Регистрация: 18.05.2008

Сообщений: 115,182

10.01.2012, 15:17

2

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Исправить очень сложно, примерно так.

Pascal
1
Writeln('элементы матрицы y');

точку с запятой поставить.



1



1852 / 1174 / 190

Регистрация: 27.03.2009

Сообщений: 4,514

10.01.2012, 15:17

3

точку с запятой поставь после Writeln(‘элементы матрицы y’)



0



1 / 1 / 0

Регистрация: 06.12.2011

Сообщений: 15

10.01.2012, 15:20

 [ТС]

4

Спасибо, согласен, тупанул))



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

10.01.2012, 15:20

4

Автор оригинала: Pankaj Kumar.

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

Такая ошибка может возникнуть из-за бесконечного цикла или размещения кода после оператора return или break среди нескольких других причин.

Давайте рассмотрим несколько примеров недостижимых утверждений.

1. Недоступно во время цикла

Если условие цикла while таково, что оно никогда не является истинным, то код внутри цикла никогда не будет выполняться. Это делает код внутри цикла while недоступным.

package com.journaldev.java;
public class Main {

    public static void main(String[] args) {
        
        while(3>5){
            System.out.println("Hello");
        }


    }

}

Среда IDE указывает на ошибку при написании кода. Это довольно “разумно”.

При беге мы получаем:

2. Код после бесконечного цикла

Фрагмент кода сразу после бесконечного цикла никогда не будет выполнен. На самом деле, весь код после бесконечного цикла никогда не будет выполнен. Это должно побудить вас обратить внимание при написании конечного условия цикла.

package com.journaldev.java;
public class Main {
    public static void main(String[] args) {
        while(true){
            System.out.println("Hello");
        }
        int a=1;
    }
}

3. Код после перерыва или продолжения инструкции

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

package com.journaldev.java;
public class Main {

    public static void main(String[] args) {

        for(int i=0;i<5;i++){
            if(i==2){
                break;
                System.out.println("Hello");
            }
        }
    }
}

Как исправить ошибку недостижимого оператора?

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

Блок-схемы необходимы для понимания потока любого кода. Вы можете попробовать нарисовать блок-схему для проблемы, которую вы пытаетесь решить. Затем вы можете сопоставить свой код с блок-схемой или написать код с нуля, исходя из этого нового понимания проблемы.

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

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

Добавить комментарий