Учебные задачи PHP. Задача 1 (случайные числа, возврат значений, массивы)
Primary tabs
Задача № 1. Вывести на экран N случайных чисел (каждое с новой строки) из диапазона [-21, 35]
Здравствуйте.
Выкладываю решение задачи на рассмотрение. Решил переменной N присвоить значение 10.
Хотел бы решение задачи сделать через функцию, но пока задумок на эту тему нет.
<?php $min = -21; // мин число заданного диапазона $max = 35; // макс число заданного диапазона $n = 10; // число итераций цикла $iter = 0; // обнуляем счетчик while ($iter <= $n) { $value = rand( $min , $max ); // присваиваем переменной $value случайное число из заданного диапазона echo "Текущее число: $value <br>"; // выводим полученное число $iter += 1; // счетчик } ?>
- Log in to post comments
- 38882 reads
vedro-compota
Thu, 04/04/2019 - 23:36
Permalink
ссылку на список задач
ссылку на список задач добавляйте (тут и в следующих задачках)
_____________
матфак вгу и остальная классика =)
Laven
Fri, 04/05/2019 - 09:56
Permalink
Добавил ссылку в условие
Добавил ссылку в условие задачи.
vedro-compota
Fri, 04/05/2019 - 11:02
Permalink
альтернативное решение
хорошо, переделайте это решение циклом for (дело в том, что когда число повторений сразу известно лучше использовать именно for - так меньше вероятность ошибиться, скажем, на единицу)
Новое решение присылайте в комментариях ниже.
_____________
матфак вгу и остальная классика =)
Laven
Fri, 04/05/2019 - 17:24
Permalink
альтернативное решение с циклом for
Решил. Но перед этим столкнулся с тем, что,
если в строке с циклом for (...) поставить в конце ";",
то будет выводить только одну строку с ответом. Интересно, почему?
П.С. Понятно, что по синтаксически эта запись не верна,
но интересно, что код не выдает ошибку, а выполняет его частично.
НЕВЕРНЫЙ вариант:
ВЕРНЫЙ вариант.
vedro-compota
Fri, 04/05/2019 - 11:36
Permalink
общая идея оформления через функцию
Изучите эту заметку: http://fkn.ktu10.com/?q=node/10809 Если будет непонятно уточните что именно неясно.
_____________
матфак вгу и остальная классика =)
Laven
Sat, 04/06/2019 - 12:34
Permalink
общая идея оформления через функцию
Здравствуйте. Просмотрел заметку по ссылке о том как сделать задачу через функцию. Сделал вот так:
Единственное, в заметке сказано, что не очень хорошо, что вывод значений делается изнутри функции. Как сделать вывод значений снаружи функции мне пока непонятно. Натолкните на мысль, пожалуйста.
Подумал, и, вроде, вот, получилось:
Хотя нет, вывод значения идет также изнутри функции.
vedro-compota
Sat, 04/06/2019 - 12:28
Permalink
что и как
Нужно возвращать массив просто, но тут уже вопрос конкретной задачи, напр если бы список был огромный - можно было бы просто не уложиться в оперативную память, и потому выводить в теле функции разумнее (ведь занята всегда лишь одна переменная).
Но для тренировки - да, приведите пример с возвратом массива, его обходом и распечаткой снаружи
_____________
матфак вгу и остальная классика =)
vedro-compota
Sat, 04/06/2019 - 19:29
Permalink
ещё ответ
_____________
матфак вгу и остальная классика =)
Laven
Sat, 04/06/2019 - 22:29
Permalink
Решение задачи с использованием массива в теле функции
Laven
Sun, 04/07/2019 - 10:25
Permalink
Решение задачи с использованием массива в теле функции
Отредактировал решение задачи. Теперь проще код.
Решил аргументы у имени функции поменять местами - посмотреть, что получится. Все работает. Только, нужно, при вызове функции, задавать аргументы, учитывая их расположение в наименовании функции.
Laven
Sun, 04/07/2019 - 12:08
Permalink
Мин и макс значения массива
Решил поискать в этом массиве максим и миним значение. Обнаружил то, что снаружи функции не могу вызвать этот результат. Как понял, из-за того, что после вызова функции и вывода результата ее работы - все данные обнуляются.
Поэтому внес вывод миним и макс знач массива в тело функции с задумкой того, что при вызове функции, будет и вывод макс и мин значений массива.
Или можно как-то сделать вывод этих значений, если вызов их будет извне функции?
Интересно, что, при вызове функции, если поменять местами аргументы, т.е. задать значениям $min=5, $max = - 7, то программа будет работать корректно. Будет верный вывод мин и макс значений массива.
vedro-compota
Mon, 04/08/2019 - 22:04
Permalink
возврат масива есть, обхода снаружи функции нет
вы правильно возвращаете массив, но не обходите его снаружи. print_r - это функция для нужд отладки, а не для вывода чего-либо "начисто".
_____________
матфак вгу и остальная классика =)
Laven
Tue, 04/09/2019 - 19:33
Permalink
Здравствуйте. Насчет функции
Здравствуйте. Насчет функции print_r, в книге у Хольцнера написано на стр. 84:
Я и руководствовался этой теорией. А какой функцией, по-вашему, лучше возвращать массив? Echo ?
vedro-compota
Tue, 04/09/2019 - 19:38
Permalink
сказанное у Хольцнера не
сказанное у Хольцнера не противоречит сказанному выше.
не возвращать, а выводить элементы на экран (надеюсь, это просто опечатка))
Да, с помощью echo.
_____________
матфак вгу и остальная классика =)
Laven
Tue, 04/09/2019 - 19:59
Permalink
а для чего его обходить
а для чего его обходить снаружи, если я достигаю конечной цели в виде вывода значений массива на экран?
vedro-compota
Tue, 04/09/2019 - 20:12
Permalink
повторюсь
конечная цель - вывод значений и только их, а не индексов массива. Повторю: для вывода реальной информации print_r не используется (как видите, даже в простой задаче по условию его использовать не получается, так как эта функция выводит сведения о внутренней структуре данных, хранящихся в переменной).
Вы можете сказать, что сделали даже больше - не только массивы, но и индексы, но это бессмысленный спор. Научились использовать print_r? Это хорошо - но тут учебные задачи, а не реальное производство, поэтому любые переделки - на вашу пользу. Как только закончите учиться сможете делать как угодно, точнее: так как посчитаете лучшим, изучив все возможные способы.
Поясню: с помощью print_r вы, например, не сможете вывести каждый 2-ой элемент массива и много чего ещё.
_____________
матфак вгу и остальная классика =)
Laven
Tue, 04/09/2019 - 20:32
Permalink
В коде решения задачи заменил
В коде решения задачи заменил функцию print_r на echo и увидел, что вывод элементов массива на экран отсутствует. Теперь стало понятным, для чего вы говорили про обход массива снаружи функции.
Верно?
Теперь надо думать как обойти массив снаружи и вывести содержимое массива на экран с помощью функции echo.
Правильно мыслю?
vedro-compota
Tue, 04/09/2019 - 20:36
Permalink
да, все так
Да, все так, используйте для обхода цикл foreach - он позволяет последовательно получить доступ к каждому ключу и/или элемент массива.
echo выводит строки или то, что к ним приводится, массив автоматически к строке привести нельзя, поэтому вам нужно выводить его элементы по-отдельности.
_____________
матфак вгу и остальная классика =)
Laven
Tue, 04/09/2019 - 20:52
Permalink
Посмотрите, правильно ли с
Посмотрите, правильно ли с точки зрения синтаксиса оформил вывоз функции и вывод элементов на экран выполнил?
vedro-compota
Tue, 04/09/2019 - 20:55
Permalink
если код не упал - то по
если код не упал - то по синтаксису правильно)) но я бы все же завел переменную для аккуратности:
+ отформатировано у вас все неправильно, напр. мы не ставим пробелы внутри скобок, также не все отступы правильны (см. рекомендации). Код должен оформляться аккуратно.
_____________
матфак вгу и остальная классика =)
Laven
Wed, 04/10/2019 - 19:01
Permalink
Решил модифицировать код
Решил модифицировать код задачи (без использования функции). Есть сложности.
Наполняю массив циклом for.
Обхожу массив циклом foreach и пытаюсь вывести элементы массива на экран, но интерпретатор выдает ошибку, что с аргументом цикла foreach что-то не так.
В чем моя ошибка?
vedro-compota
Wed, 04/10/2019 - 19:08
Permalink
это же массив, а не просто переменная
вы работаете с переменной не как с массивом, каждый раз меняя ещё значение на новое:
Если вы хотите добавить очередной элемент со стандартным ключом, то нужно писать так:
- т.е. всему массиву логично что-то присваивать, если это что-то - само массив, в вашей же ситуации нужно просто добавить элемент очередной, причем ключ не важен (по-умолчанию это цифры и идут они с нуля), если бы ключ был важен, можно было бы использовать один из вариантов:
в этом случае ваша проблема понятна и без сообщения, но вообще надо всегда выкладывать сообщение (оформляя как цитату, например).
_____________
матфак вгу и остальная классика =)
Laven
Wed, 04/10/2019 - 19:16
Permalink
del
del
Laven
Wed, 04/10/2019 - 10:01
Permalink
Функция var_dump
Здравствуйте. А функция "var_dump" тоже функция отладки или ...? Какие у нее возможности и функции?
vedro-compota
Wed, 04/10/2019 - 11:28
Permalink
где смотреть
Вот тут кратко о разнице между ними - там же ссылки на официальный сайт (замечательный php.net), который следует использовать всегда, если вам что-то непонятно по какой-то конкретной стандартной сущности из ядра или стандартной библиотеки php.
_____________
матфак вгу и остальная классика =)
vedro-compota
Mon, 04/08/2019 - 22:51
Permalink
возврат нескольких значений
Функция не должна в идеале оказывать побочного эффекта.
скажу, что:
_____________
матфак вгу и остальная классика =)
vedro-compota
Mon, 04/08/2019 - 23:34
Permalink
точка с запятой и последующие фигурные скобки
Тут дело в том, что после добавления точки с запятой части кода просто становятся независимыми, читайте подробнее о фигурных скобках и управляющих конструкциях в php.
_____________
матфак вгу и остальная классика =)
Laven
Sun, 04/14/2019 - 22:15
Permalink
Исправил код задачи
melisa
Wed, 04/17/2019 - 10:43
Permalink
принято
принято