php Учебные задачи для начинающих изучать программирование
Primary tabs
Эти задачи выбраны для данного учебного курса по PHP.
Как решать задачи (ознакомьтесь, прежде чем начать решать):
- Следуйте рекомендациям оформления решения задачи.
- В конечном итоге каждую задачу следует оформлять в виде функции и использующего эту функцию кода - т.е. функция должна принимать некоторые параметры (см. пример с пояснением). Для формирования массивов, заданных случайным образом, используйте отдельную функцию (с поправкой на условие конкретной задачи). Не забудьте про область видимости переменных внутри функции.
Если у вас не получается сразу решить очередную задачу в виде функции (или вообще не получается) -- публикуйте вопрос (оформляем как и решение, только без кода, с указанием того, что непонятно) или то решение, которое получилось, опять же, с вашими вопросами. - Читать примечания к конкретным задачам (см. ниже) стоит только после того, как вы потратили на её решение какое-то время (т.е. сначала пробуйте решить самостоятельно) и/или после того как уже решили задачу, чтобы узнать больше.
- ОБЯЗАТЕЛЬНО ЗАПУСКАЙТЕ КОД перед тем как опубликовать своё решение, чтобы на практике убедиться, что оно рабочее. Можно так. Если Вы используете локальную среду разработки, настройте полное отображение ошибок.
Учебные задачи -- PHP
Примечания по тексту условий:
- Далее под "N значений" подразумеваются как минимум: ноль и все остальные натуральные числа (ноль важен, так как часто в прикладном программировании мы имеем дело с пустыми списками, напр. когда пользователь не заполнил ни одно значение -- программа должна корректно работать и в этом случае).
Задачи:
- Вывести на экран N случайных чисел (каждое с новой строки) из диапазона [-21, 35]
ПРИМЕЧАНИЕ: подразумевается, что вы должны организовать цикл, который выполнится N раз и при этом в каждом своём витке выведет на экран случайное число.
- Вывести на экран сумму N случайных чисел.
- Вывести на экран N случайных чисел (каждое с новой строки). Для каждого числа, начиная со второго, рядом выводить - больше ли оно предыдущего или меньше. например:
-1 20 больше -1 -5 меньше 20 -6 меньше -5 и т.д.
- Вывести на экран n-ное число Фибоначчи. Пример последовательности:
0 1 1 2 3 5 8 13 21...и т.д.
- Дано некоторое число длиной от 1 до 5 цифр - вывести его цифры в обратном порядке.
Например:3567= 7 6 5 3
Подсказка: используйте цикл while и операцию получения остатка.
- Дано некоторое число длиной от 1 до 5 символов, вывести все его "нечётные" цифры в обратном порядке (аналогично предыдущей задаче), если же таких цифр не найдёт, вывести сообщение "Нечетных цифр не обнаружено!"
- Задать массив из 7-ми элементов, заполнить его случайными значениями в одном цикле, а в другом цикле вывести эти значения на экран.
- Задать двумерный массив размерностью m на n (MxN) элементов (m и n вынести в область определения констант), заполнить его случайными значениями и вывести их на экран уже после того, как весь массив будет заполнен (т.е. заполнять и выводить в разных группах циклов).
- Задайте случайным образом массив из N элементов. Выведите его на экран "ёлочкой". Вот начало такого вывода:
1 2 3 4 5 6 7 8 9 10 11 12 ......
Второй вариант - сделайте то же самое, но не используйте массив: у вас есть переменная N, выведете на экран, все числа до N, по тому же принципе что и выше, например, если N=9, то получим:
1 2 3 4 5 6 7 8 9
- Задайте случайным образом массив из N элементов (целых чисел). Найдите максимальное число и напечатайте его.
- Задайте случайным образом массив из 20-ти элементов (целых чисел). Найдите минимальное число и напечатайте его.
- Даны два массива по 20 элементов каждый (заполните случайными числами, так чтобы среди элементов массива при очередном запуске программы могли встретиться и отрицательные и положительные числа).
Сравните каждый 3-ий элемент 1-ого массива с каждый 2-ым элементов 2-ого массива - сравнение проводите пока не закончится та выборка, которая короче.
Например пусть мы имеем два массива (запишу лишь начальные элементы):1 | 2 | -10 | 5 | 0 | 12 | 2 | 8 ....
0 | 3 | 4 | 9 | 7 | 5 | -8 | 3.....для них программа должна вывести:
-10 меньше 3 12 больше 9
- других сравнений не последует, так как новых из "каждых третьих элементов" в 1-ом массиве больше нет.
Если у вас не получается решить/понять -- почитайте [Примечания к задаче].
- Создайте функцию, которая принимает на вход массив случайных чисел из диапазона [5..12]. Обходит этот массив и делает для каждого элемента следующее (пусть она оказывает побочный эффект прямо в своём теле):
Если это число равно 5 -- то выведете на экран строку "пять", если 6 -- то строку "шесть", если 7 то число "7", иначе -- строку "какое-то другое число".Используйте для решения задачи оператор switch (или см. книгу Стивена Хольцнера стр. 60).
- Есть два массива "a" и "b". На вход вашей программе подаётся массив "a" случайных чисел (10 элементов) из диапазона от 1 до 20. Задача: вывести на экран все числа, которые не содержатся в массиве "b"
$b = [12, 5, 17, 6, 4];
Решите эту задачу двумя способами:
- Без использования in_array()
- С использованием in_array() (что проще)
- Log in to post comments
- 41452 reads
fgh
Wed, 03/01/2017 - 08:31
Permalink
Вопрос к задаче №7
Скажите пожалуйста, в задаче №7 , что имеется ввиду под объявлением массива через тип? Это тоже самое,что в Pascal ?
vedro-compota
Wed, 03/01/2017 - 09:19
Permalink
Как "объявить" массив в PHP
В PHP хотя и нет формального объявления типа, тем не менее можно задавать значения по-умолчанию присваиванием (да какой-то реальной работы с переменной), например, для строки:
Для массива -- в том числе, чтобы показать другим программиста в коде, что эта переменная будет использоваться как массив, пишут обычно так:
При этом надо помнить, что:
А значит в современно стиле достаточно написать так:
Насчёт Паскаля
Нет, всё же в Паскале типы действительно задаются заранее, а массивы требуют заранее задать диапазон индексов. По сути массивы в php намного гибче их можно расширять или сужать "на ходу", по мере надобности. И объявлять заранее не нужно.
Ещё раз о задаче
Действием типа:
-- вы по сути просто объявляете тип (так как в PHP есть типы, но они формируются "на лету" в зависимости от того какие операции выполнены -- например при присваивании, это называется динамической типизацией), а потому слово объявление в всё уместно, хотя смысл его иной (в сравнении с Паскалем).
_____________
матфак вгу и остальная классика =)
moberaptor
Sat, 01/13/2018 - 02:26
Permalink
1. В задаче 2 имеет смысл
1. В задаче 2 имеет смысл добавить условие про границы, например:
Вывести на экран N случайных чисел (каждое с новой строки) из диапазона [-21, 35] (включая границы). Чтобы избежать неоднозначности толкования.
2. В задаче 3 имеет смысл уточнить формулировку, добавив условие равенства:
Повторить предыдущее, но для каждого числа, начиная со второго, рядом выводить - больше ли оно предыдущего или меньше, или равно.
3. При автонумерации пунктов номер невозможно скопировать - это можно пофиксить?
vedro-compota
Sun, 01/14/2018 - 14:22
Permalink
При автонумерации пунктов
не уверен. Разве это не стандартное поведение браузера с при копировании hmtl-списка?
_____________
матфак вгу и остальная классика =)
moberaptor
Sun, 01/14/2018 - 22:08
Permalink
Да, всё правильно, глянул
Да, всё правильно, глянул исходник, без вариантов.
А что по первым двум пунктам?
P.S.
Если кому-то, кто это читает потребуется скопировать всё с номером - ABBYY Screenshot reader в помощь.
vedro-compota
Mon, 12/03/2018 - 15:27
Permalink
уточнения в условии 14 задачи
изменено на:
_____________
матфак вгу и остальная классика =)
Pages