Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЗВІТ.docx
Скачиваний:
2
Добавлен:
27.10.2018
Размер:
46.34 Кб
Скачать

4.3 Джерела вивчення мови

  • Друковані видання;

  • Наочні відео уроки;

  • Он-лайн підручники;

  • Форуми веб-програмістів;

  1. Задача для реалізації на мові програмування php

Cтворення "матан-капчі" (рис. 1) з використанням тільки PHP і GD. Для відтворення формул будемо використовувати PhpMathPublisher - вільно поширювану бібліотеку, що використовує тільки розширення GD. (скачати можливо по адресі http://www.xm1math.net/phpmathpublisher/)

рис. 1

PhpMathPublisher повинен лежати в папці phpmathpublisher.

Ініціалізіруем:

include ("phpmathpublisher / mathpublisher.php"); / / Підключаємо малювалку формул

$ Upper = rand (0, 10); / / Верхня межа інтеграла

$ Lower = rand (-10, 0); / / Нижня межа інтеграла

$ Num = 4; / / Кількість доданків у функції

Тепер потрібно створити рядок з формулою, можна одночасно порахувати відповідь:

$ Text = "int {". $ Lower ."}{".$ upper ."}{";

for ($ i = 0; $ i <$ num; $ i + +) {

$ K = rand (1, 5); / / Коефіцієнт перед x

$ P = rand (1, 5); / / Показник ступеня x

$ Sign = rand (0, 2) == 0? 0:1; / / Знак, плюс буде в 2 рази частіше

$ Tt = $ k> 1? $ K: ""; / / Тимчасова змінна для зберігання доданка

$ Tt .= "x";

if ($ p> 1) $ tt .="^".$ p;

if ($ i == 0) {

if ($ sign == 1) $ text .="({-}".$ tt .")";

else $ text .= $ tt;

} Else $ text .= ($ sign == 1 ?"-":"+").$ tt;

if ($ sign == 1) $ k =- $ k;

$ Answer + = ($ k * pow ($ upper, $ p +1) / ($ p +1 ))-($ k * pow ($ lower, $ p +1) / ($ p +1));

/ / І заодно вважаємо відповідь.

}

$ Text .= "dx}";

У результаті у нас вийде рядок такого виду:

int {-4} {4} {3x ^ 5-4x ^ 5 +3 x ^ 2 + x ^ 2dx}

Тепер залишилося відмалювати все це на картинці - з допомогою PhpMathPublisher це займе всього кілька рядків:

$ Formula = new expression_math (tableau_expression (trim ($ text)));

$ Formula-> dessine (24); / / 24 - розмір символів

$ W = imagesx ($ formula-> image) +20; / / Відступи по 10 пікселів з кожного боку, інакше при застосуванні спотворень межі у інтеграла з'їжджають за край зображення

$ H = imagesy ($ formula-> image) +20;

$ Fi = imagecreatetruecolor ($ w, $ h);

imagefill ($ fi, 0, 0, 0xFFFFFF);

imagecopy ($ fi, $ formula-> image, 10, 10, 0, 0, $ w-20, $ h-20);

Далі непогано застосувати нелінійні спотворення - для цього я використовував алгоритм MultiWave. (http://www.captcha.ru/captchas/multiwave - за посиланням повний код і приклад використання. )

А далі нам нічого не залишається, крім як вивести отриману картинку в браузер:

header ("Content-type: image / png");

imagepng ($ im);

Готову сторінку в мережі Інтернет можливо продивитися за посиланням:

http://гришка.рф/matan_captcha

  1. Задачі які хотіли б створити

Надалі я б хотів реалізувати такі задачі:

  • Створення соціальної мережі мікроблога (аналог twitter);

  • Cтворення програми для реєстрації музичних вподобань користувача, та пошук схожих до них музичких треків;