php Учебные задачи для начинающих

Эти задачи выбраны для данного учебного курса по PHP.

ПРИМЕЧАНИЯ (ознакомьтесь, прежде чем начать решать):

  1. Следуйте рекомендациям оформления решения задачи.
  2. В конечном итоге каждую задачу следует оформлять в виде функции и использующего эту функцию кода - т.е. функция должна принимать некоторые параметры. Для формирования массивов, заданных случайным образом, используйте отдельную функцию (с поправкой на условие конкретной задачи).
    Если у вас не получается сразу решить очередную задачу в виде функции (или вообще не получается) -- публикуйте вопрос (оформляем как и решение, только без кода, с указанием того, что непонятно) или то решение, которое получилось, опять же, с вашими вопросами.
  3. Читать примечания к конкретным задачам (см. ниже) стоит только после того, как вы потратили на её решение какое-то время (т.е. сначала пробуйте решить самостоятельно) и/или после того как уже решили задачу, чтобы узнать больше.

Учебные задачи -- PHP

  1. Вывести на экран сумму N случайных чисел.
  2. Вывести на экран N случайных чисел (каждое с новой строки) из диапазона [-21, 35]
  3. Повторить предыдущее, но для каждого числа, начиная со второго, рядом выводить - больше ли оно предыдущего или меньше. например:
    -1
    20 больше -1
    -5 меньше 20
    -6 меньше -5
    и т.д.
  4. Вывести на экран n-ное число Фибоначчи. Пример последовательности:
    0 
    1
    1 
    2 
    3
    5
    8 
    13
    21...и т.д.
  5. Дано некоторое число длиной от 1 до 5 цифр - вывести его цифры в обратном порядке.
    Например:
    3567=
    7
    6
    5
    3 

    Подсказка: используйте цикл while и операцию получения остатка.

  6. Дано некоторое число длиной от 1 до 5 символов, вывести все его "нечётные" цифры в обратном порядке (аналогично предыдущей задаче), если же таких цифр не найдёт, вывести сообщение "Нечетных цифр не обнаружено!"
  7. Задать массив из 7-ми элементов через предварительное описание типа, заполнить его случайными значениями в одном цикле, а в другом цикле вывести эти значения на экран.
  8. Задать двумерный массив размерностью m на n (MxN) элементов (m и n вынести в область определения констант), заполнить его случайными значениями и вывести их на экран уже после того, как весь массив будет заполнен (т.е. заполнять и выводить в разных группах циклов).
  9. Задайте случайным образом массив из N элементов. Выведите его на экран "ёлочкой". Вот начало такого вывода:
    1
    2 3
    4 5 6
    7 8 9 10
    11 12 ......
  10. Задайте случайным образом массив из N элементов (целых чисел). Найдите максимальное число и напечатайте его.
  11. Задайте случайным образом массив из 20-ти элементов (целых чисел). Найдите минимальное число и напечатайте его.
  12. Даны два массива по 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-ом массиве больше нет.

    Если у вас не получается решить/понять -- почитайте [Примечания к задаче].

  13. Создайте функцию, которая принимает на вход массив случайных чисел из диапазона [5..12]. Обходит этот массив и делает для каждого элемента следующее (пусть она оказывает побочный эффект прямо в своём теле):
    Если это число равно 5 -- то выведете на экран строку "пять", если 6 -- то строку "шесть", если 7 то число "7", иначе -- строку "какое-то другое число".

    Используйте для решения задачи оператор switch (или см. книгу Стивена Хольцнера стр. 60).

fgh's picture

Скажите пожалуйста, в задаче №7 , что имеется ввиду под объявлением массива через тип? Это тоже самое,что в Pascal ?

$a = array(
    0  => $value,
    1 => $value2,
    2 => $value3,
     3 => $value4,
	 4 => $value3,
	 5 => $value3,
	 6 => $value3,
) ;


vedro-compota's picture

В PHP хотя и нет формального объявления типа, тем не менее можно задавать значения по-умолчанию присваиванием (да какой-то реальной работы с переменной), например, для строки:

$s = ''; // пустая строка, в будущем может запишем сюда что-то другое

Для массива -- в том числе, чтобы показать другим программиста в коде, что эта переменная будет использоваться как массив, пишут обычно так:

$a = array(); // пустой массив

При этом надо помнить, что:

Начиная с PHP 5.4 возможно использовать короткий синтаксис определения массивов, который заменяет языковую конструкцию array() на []

А значит в современно стиле достаточно написать так:

$a = [];

Насчёт Паскаля

Это тоже самое,что в Pascal ?

Нет, всё же в Паскале типы действительно задаются заранее, а массивы требуют заранее задать диапазон индексов. По сути массивы в php намного гибче их можно расширять или сужать "на ходу", по мере надобности. И объявлять заранее не нужно.

Ещё раз о задаче

Действием типа:

$a = [];

-- вы по сути просто объявляете тип (так как в PHP есть типы, но они формируются "на лету" в зависимости от того какие операции выполнены -- например при присваивании, это называется динамической типизацией), а потому слово объявление в всё уместно, хотя смысл его иной (в сравнении с Паскалем).

_____________
матфак вгу и остальная классика =)

Pages