Подробно и с объяснением! допустим ли следующий оператор присваивания? если да, то выпишите тип и итоговое значение переменной «y», если нет, то напишите, почему. y : = round(3*7 div y mod 7/3)/y – trunc(0.724)
y := round(3*7 div y mod 7/3)/y – trunc(0.724) Для удобства анализа введем добавочные скобки и пробелы. y := round( ( (3 * 7) div y ) mod (7 / 3) ) / y – trunc(0.724) 3*7 даст величину целочисленного типа. Тип переменной y в операции (3*7) div y может быть по определению этой операции только целочисленным. Целочисленным будет и её результат. Деление 7/3 даст результат вещественный, так уж устроена операция "/" Получаем по типам: <целочисленный> mod <вещественный>. Операция mod определена только для целочисленных операндов, поэтому тут ошибка.
Паскаль "не умеет" читать числа напрямую. В случае "текстового ввода" он читает всё вводимое, как последовательность символов, которую затем анализирует и преобразует в соответствии со списком переменных в операторе ввода и их типом. Завершается текстовый ввод в Паскале всегда нажатием клавиши Enter, посылающей последовательность символов с десятичными кодами 13 и 10 (CR - "возврат каретки" и LF- "перевод строки"), либо считыванием этих кодов из файла. "Команда" Realln (на самом деле это не команда, а процедура) считывает и удаляет последовательность символов с кодами 13, 10, а Read - оставляет эти коды не считанными. Если после Read будет еще один оператор ввода, читающий СИМВОЛЬНЫЕ данные (string, char), то оставшиеся необработанными после предыдущего Read символы с кодами 13,10 будут восприняты, как вводимые, что неверно.
Как итог: только в случае, когда есть ввод символьных данных и эти данные вводятся не в единственном операторе ввода, перед вводом таких данных нужно указывать Readln. В прочих случаях разницы нет.
1) Дискретность - алгоритм должен состоять из отдельных пунктов. 2) Понятность - каждая команда должна быть понятна исполнителю. 3) Результативность - алгоритм должен приводить к заранее продуманному результату. 4) Массовость - он должен решать не одну задачу, а круг таких задач. 5) Определенность - не должно быть команд, которые исполнитель воспримит неоднозначно.
Н-р: 1) 1. Повернуть направо. 2. Пройти 2 шага. 3. Повернуть налево. 2) Не должно быть таких команд: 1. Пройти 2 шага 2. Зачикиниться 3) К примеру, рецепт бутерброда приведет тебя к готовому бутеру (если, конечно, ты поборишь свою лень и встанешь, чтобы приготовить его) 4) Н-р, формула расчета притяжения между телами должна быть ориентирована на различные тела, а не на, к примеру, только Землю и Луну. 5) Не должно быть, н-р, таких команд: 1. Повернуть направо 2. Пройти 2 шага 3. Украсть. 4. Пройти 2 шага назад. 5. Дойти до Машки с пятого подъезда.
Для удобства анализа введем добавочные скобки и пробелы.
y := round( ( (3 * 7) div y ) mod (7 / 3) ) / y – trunc(0.724)
3*7 даст величину целочисленного типа.
Тип переменной y в операции (3*7) div y может быть по определению этой операции только целочисленным. Целочисленным будет и её результат.
Деление 7/3 даст результат вещественный, так уж устроена операция "/"
Получаем по типам: <целочисленный> mod <вещественный>. Операция mod определена только для целочисленных операндов, поэтому тут ошибка.