Учебник PHP
Практика
Важное
Регулярки
- Урок №
Введение, задач нет - Урок №
Работа с регулярными
выражениями в PHP. Глава 1. - Урок №
Работа с регулярными
выражениями в PHP. Глава 2. - Урок №
Работа с регулярными
выражениями в PHP. Глава 3. - Урок №
Работа с регулярными
выражениями в PHP. Глава 4.
Работа с htaccess
Файлы, папки
Сессии и куки
Работа с БД
- Урок №
Введение, задач нет - Урок №
Команды SELECT,
INSERT, DELETE, UPDATE - Урок №
Команды ORDER BY,
LIMIT, COUNT, LIKE в SQL
Практика по работе с БД в PHP
Перед чтением см. новые уроки раздела "Важное", которые появились выше.
Практика
Движок PHP
Продвинутые БД
Аутентификация
Практика
ООП и MVC
Абстрактные классы и интерфейсы
Трейты
ООП Магия
Практика
Практика: классы как набор методов
- Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс ArrayConvertor - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс TagHelper - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс FormHelper - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс TableHelper - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс SessionShell - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс CookieShell - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс FileManipulator - Урок №
новая вкладка с new.code.mu
. текст, код Практика: класс databaseShell TODO cart корзина flash шаблонизатор роутер контроллер кеш логи фалидатор
Перед решением задач изучите теорию к данному уроку.
Примеры решения задач
Задача
Задача. Создайте переменную $var и присвойте ей значение ‘hello’. Обращаясь к отдельным символам этой строки выведите на экран символ ‘h’, символ ‘e’, символ ‘o’.
Решение: будем обращаться к отдельным символам этой строки, к примеру, буква ‘h’ имеет номер 0 и ее можно вывести так – $var[0], буква ‘e’ имеет номер 1 и так далее:
Задача
Задача. Напишите скрипт, который считает количество секунд в часе.
Решение: так как в минуте 60 секунд, а в часе – 60 минут, то умножив 60 на 60 мы получим количество секунд в часе:
Если нам нужно получить количество секунд в сутках, то умножим еще и на 24 (так как в сутках 24 часа):
Задача
Задача. Переделайте приведенный код так, чтобы в нем использовались операции +=, -=, *=, /=, ++, —. Количество строк кода при этом не должно измениться. Код для переделки:
Решение: заменим все подходящие места на сокращенную форму записи. К примеру, вместо $var = $var + 12 можно написать $var += 12, а вместо $var = $var + 1 будет $var++. Результат переделки будет выглядеть так:
Задачи для решения
Работа с переменными
Создайте переменную $a и присвойте ей значение 3. Выведите значение этой переменной на экран.
Создайте переменные $a=10 и $b=2. Выведите на экран их сумму, разность, произведение и частное (результат деления).
Создайте переменные $c=15 и $d=2. Просуммируйте их, а результат присвойте переменной $result. Выведите на экран значение переменной $result.
Создайте переменные $a=10, $b=2 и $c=5. Выведите на экран их сумму.
Создайте переменные $a=17 и $b=10. Отнимите от $a переменную $b и результат присвойте переменной $c. Затем создайте переменную $d, присвойте ей значение 7. Сложите переменные $c и $d, а результат запишите в переменную $result. Выведите на экран значение переменной $result.
Работа со строками
Создайте переменную $text и присвойте ей значение ‘Привет, Мир!’. Выведите значение этой переменной на экран.
Создайте переменные $text1=’Привет, ‘ и $text2=’Мир!’. С помощью этих переменных и операции сложения строк выведите на экран фразу ‘Привет, Мир!’.
Создайте переменную $name и присвойте ей ваше имя. Выведите на экран фразу ‘Привет, %Имя%!’. Вместо %Имя% должно стоять ваше имя.
Создайте переменную $age и присвойте ей ваш возраст. Выведите на экран ‘Мне %Возраст% лет!’.
Обращение к символам строки
Создайте переменную $text и присвойте ей значение ‘abcde’. Обращаясь к отдельным символам этой строки выведите на экран символ ‘a’, символ ‘c’, символ ‘e’.
Дана произвольная строка, например, ‘abcde’. Поменяйте первую букву (то есть букву ‘a’) этой строки на ‘!’.
Создайте переменную $num и присвойте ей значение ‘12345’. Найдите сумму цифр этого числа.
Практика
Напишите скрипт, который считает количество секунд в часе, в сутках, в месяце.
Создайте три переменные – час, минута, секунда. С их помощью выведите текущее время в формате ‘час:минута:секунда’.
Создайте переменную, присвойте ей число. Возведите это число в квадрат (это значит нужно умножить его само на себя). Выведите его на экран.
Работа с присваиванием и декрементами
Переделайте этот код так, чтобы в нем использовались операции +=, -=, *=, /=. Количество строк кода при этом не должно измениться.
Переделайте этот код так, чтобы в нем использовалась операция .=. Количество строк кода при этом не должно измениться.
Переделайте этот код так, чтобы в нем использовались операции ++ и —. Количество строк кода при этом не должно измениться.
Переделайте этот код так, чтобы в нем использовались операции ++, — , +=, -=, *=, /=. Количество строк кода при этом не должно измениться.
Хотел бы поделиться небольшим сборником практических задач, которые могут встречаться на собеседовании.
На просторах хабра и сети имеется множество сборников вопросов для подготовки к устной части собеседования, а вот сборника практических задач, который было бы удобно использовать для подготовки — не нашлось.
Для старта достаточно клонировать сборник себе и начать описывать реализацию, все оставльное уже есть. Есть готовые входящие данные для задач, есть FB класс, который позволяет уйти от var_dump() или print_r(). Все есть, поставил и сразу можно выполнять задачи — без лишней суеты. Надеюсь, кому-нибудь это окажется нужным.
Как пользоваться?
Для удобства, задачи представилены несколькими интерфейсами папка на Github. Возьмем интерфейс ITestSortInterface (/src/Training) в качестве иллюстрации. Из названия видно, что в нем лежат задачи по сортировке:
Для начала выполнения заданий необходимо создать класс имплементирующий желаемые интерфейсы. Я назвал свой класс Test:
Тут используются два вспомогательных класса FireDogFB и TrainingData. ( Позвольте небольшую ремарку: Использование FB или Data не обязательно — это вспомогательные классы для удобства. Однако, консоль браузера представляется мне более удобной альтернативой var_dump() или print_r() )
Первый выводит дебаг инфу в консоль браузера:
Для браузера потребуется установка плагина firephp. Тут плагин для Хрома.
Второй класс Data, хранит готовые данные для заданий. Для задания $test->testSort1() нам нужен массив array(2,5,3,5,6,7,8,9,25,24,18,26,27,28,29,30,31) его то мы и получаем Data::getData(Data::ARR_SIMPL_INT)
Сборник будет пополняться и его можно использовать не только для подготовки к собеседованию, но и просто для тренировки навыков программирования на PHP. Присылайте свои задачи, наиболее интересные будут опубликованы в сборнике.
Primary tabs
Forums:
Как решать задачи (ознакомьтесь, прежде чем начать решать):
- Следуйте рекомендациям оформления решения задачи.
- В конечном итоге каждую задачу следует оформлять в виде функции и использующего эту функцию кода – т.е. функция должна принимать некоторые параметры (см. пример с пояснением). Для формирования массивов, заданных случайным образом, используйте отдельную функцию (с поправкой на условие конкретной задачи). Не забудьте про область видимости переменных внутри функции.
Если у вас не получается сразу решить очередную задачу в виде функции (или вообще не получается) — публикуйте вопрос (оформляем как и решение, только без кода, с указанием того, что непонятно) или то решение, которое получилось, опять же, с вашими вопросами. - Читать примечания к конкретным задачам (см. ниже) стоит только после того, как вы потратили на её решение какое-то время (т.е. сначала пробуйте решить самостоятельно) и/или после того как уже решили задачу, чтобы узнать больше.
- ОБЯЗАТЕЛЬНО ЗАПУСКАЙТЕ КОД перед тем как опубликовать своё решение, чтобы на практике убедиться, что оно рабочее. Можно так. Если Вы используете локальную среду разработки, настройте полное отображение ошибок.
Учебные задачи — PHP
Примечания по тексту условий:
- Далее под "N значений" подразумеваются как минимум: ноль и все остальные натуральные числа (ноль важен, так как часто в прикладном программировании мы имеем дело с пустыми списками, напр. когда пользователь не заполнил ни одно значение — программа должна корректно работать и в этом случае).
-
Вывести на экран N случайных чисел (каждое с новой строки) из диапазона [-21, 35]
ПРИМЕЧАНИЕ: подразумевается, что вы должны организовать цикл, который выполнится N раз и при этом в каждом своём витке выведет на экран случайное число.
Например:
Подсказка: используйте цикл while и операцию получения остатка.
Второй вариант – сделайте то же самое, но не используйте массив: у вас есть переменная N, выведете на экран, все числа до N, по тому же принципе что и выше, например, если N=9, то получим:
Сравните каждый 3-ий элемент 1-ого массива с каждый 2-ым элементов 2-ого массива – сравнение проводите пока не закончится та выборка, которая короче.
Например пусть мы имеем два массива (запишу лишь начальные элементы):
1 | 2 | -10 | 5 | 0 | 12 | 2 | 8 .
0 | 3 | 4 | 9 | 7 | 5 | -8 | 3.
для них программа должна вывести:
– других сравнений не последует, так как новых из "каждых третьих элементов" в 1-ом массиве больше нет.
Если у вас не получается решить/понять — почитайте [Примечания к задаче].
Создайте функцию, которая принимает на вход массив случайных чисел из диапазона [5..12]. Обходит этот массив и делает для каждого элемента следующее (пусть она оказывает побочный эффект прямо в своём теле):
Если это число равно 5 — то выведете на экран строку "пять", если 6 — то строку "шесть", если 7 то число "7", иначе — строку "какое-то другое число".
Используйте для решения задачи оператор switch (или см. книгу Стивена Хольцнера стр. 60).
Есть два массива "a" и "b". На вход вашей программе подаётся массив "a" случайных чисел (10 элементов) из диапазона от 1 до 20. Задача: вывести на экран все числа, которые не содержатся в массиве "b"