Блог по Ruby in Rails

блог по Ruby on Rails


воскресенье, 22 февраля 2009 г.

Начинаем изучать РНР - пишем собственные функции

Начинаем изучать РНР - пишем свои функции на PHP
Итак, это первая моя статья, касательно начала изучения РНР. Мой блог не является сайтом посвященным изучению РНР, коих в интернете великое множество, поэтому, статьи касательно синтаксиса РНР я не буду писать.
В этой статье я хочу рассказать вам о функциях. Каждый программист сталкивается с необходимостью расширить функциональность языка своими собственными функциями. Написание собственных функций, не редко позволяет сэкономить время благодаря повторному использованию кода.
Для того, чтобы научится создавать собственные функции, а также решать задачи по программированию, мы решим некоторые простые задания. Условие решения заданий простое – использовать предыдущие функции при создании новых(повторное использование кода на лицо).

Задача №1
Написать функцию, которая выдаст массив делителей натурального числа нацело (кроме 1 и самого себя).

Решение:

function natural_delitel($naturalnum)
{
$arraydiv = array();
if($naturalnum != ""){
$maxdiv = round($naturalnum / 2 - 0,5);
$div = 2;
while ($div <= $maxdiv){
IF ($naturalnum % $div == 0){
$arraydiv[] = $div;
}
$div++;
}
}
return ($arraydiv);
}

Задача №2
Написать функцию, которая определяет, является ли число простым

Решение:

function is_prime($naturalnum)
{
return(count(natural_delitel($naturalnum)) == 0);
}
В этой функции, как видно, мы используем предыдущую функцию (если у числа нет делителей нацело, кроме 1 и самого себя, то число является простым).

Задача №3
Написать функцию, выдающую массив простых чисел.

Решение:

function prime_numbers($start, $end)
{
$primearray = array();
while($start <= $end){
If(is_prime($start)){
$primearray[] = $start;
}
$start++;
}
return($primearray);
}

Задача №4
Написать функцию, которая возвращает натуральное число, обладающее максимальным кол-вом делителей нацело.

Решение:

function max_div_number($start, $end)
{
$Ihavemaxdividers = $start;
while($start <= $end){
If(count_div($start) >= count_div($Ihavemaxdividers)) {
$Ihavemaxdividers = $start;
}
$start++;
}

return($Ihavemaxdividers);
}

Задача №5
Написать функцию, возвращающую сумму всех делителей нацело.
Решение:

function summ_dividers($naturalnum)
{
$array_div = array();
$array_div = natural_delitel($naturalnum);
$i = 0;
$countdiv = count($array_div);
While($i <= $countdiv){
$summ = $summ + $array_div[$i];
$i++;
}
return($summ);
}

Как вы видите, практически все функции, используют предыдущие функции, такой подход ускоряет разработку, при этом незначительно увеличивают время исполнения скрипта. Повторное использование кода – это то, к чему следует стремиться при разработке.

Для самостоятельной работы, вот вам задание: написать функцию FiveFriends(), которая возвращает 5 простых чисел следующих после указанного числа. Свои решения пишите в комментариях. Вопросы и критику пишите туда же.

Комментариев нет:

Отправить комментарий