Полезный инструмент в работе преподавателей и учителей - генератор контрольных заданий.
Список задач в "Кафедре" я постоянно наращиваю. Однако в виду прочей занятости эта работа идёт не так быстро, как хотелось бы. Поэтому для пользователей я предусмотрел возможность относительно легко добавить в программу свои собственные задачи. Быть профессиональным программистом для этого не обязательно. Чтобы иметь возможность написать свою задачу достаточно поверхностно знать:
Если все эти требования уже выполнены (или будут выполнены уже в ходе работы), то с чего начать?
Если говорить ещё короче, то смотрите сразу образец и просто заполняйте в нём помеченные строчки. Итак, пустой бланк:
<?php #В эту строчку нужно вставить название вашей задачи #===эту строчку пока оставьте пустой, к ней вы вернётесь чуть позже. Назовём её "Строчка Z"=== #Здесь напишите формулировку вашей задачи. Напоминаю, что условие задачи довольно короткое. #Однако каким бы коротким оно ни было, оно может в одну строчку не поместиться. #Поэтому разбейте его на несколько строчек. Вам главное соблюсти всего три ограничения: #- каждая строчка не должна быть больше 120 символов #- каждая строчка должна заканчиваться пробелом! #- каждая строчка условия начинается с символа "#" #Когда вы всё условие сюда записали, сосчитайте: сколько у вас получилось строчек? #Допустим, у вас получилось одиннадцать, так же как вышло здесь у меня. #Тогда возвращаемся к "Строчке Z", стираем оттуда весь текст кроме первого символа "#" #Сразу, без пробелов, после "#" пишем туда цифру 11 #В "Строчке Z" кроме одной-единственной циферки и "#" не должно быть ни одного символа! И вот тут можете писать свой алгоритм решения задачи. Это самая сложная часть. Для её осуществления лучше ознакомтесь с примерами. //вот здесь, когда ваше решение закончилось, напишите: $otvet = имя_переменной,_в_которой_у_вас_сохранился_искомый_ответ; print("А вот тут вы снова напишите условие вашей задачи, но только вместо цифр подставляйте имена переменных в стиле PHP: $skorost, $vremya, $temperatura и т. п. Соответствующие именам значения сами подставятся вместо этих имён"); ?>
И вот, наконец, парочка примеров с комментариями после них:
<?php #Перевод из байтов и мегабайтов в килобайты #1 #Перевести в килобайты: 8346 байт и 2.38 Мб. do { //итак, генерируем килобайты: $KiloOfByte = mt_rand(456, 37890)/100; $Byte = $KiloOfByte*1024;//и тут же перевели их в байты //будем отбраковывать те случаи, когда число байтов получилось нецелым: $d = $Byte - round($Byte); } while ( $d <> 0);//как только получили целое число - заканчиваем подбор. //аналогично поступим теперь и с мегабайтами do { $KiloOfMega = mt_rand(1500,490000); $Mega = $KiloOfMega/1024; $d = $Mega*100 - round($Mega*100); } while ( $d <> 0); $otvet = $KiloOfByte.' и '.$KiloOfMega; print("Перевести в килобайты: $Byte байт(а) и $Mega Мб.<br>Ответ:_______"); ?>
Как видите, здесь всё соответсвует образу: в первой строчке открывающий php-тэг. Затем строчка, в которой после символа "#" идёт название задачи: "Перевод из байтов и мегабайтов в килобайты". Затем строчка, где написано "#1" - это означает, что условие всей задачи умещается в одну строчку. И следующей строчкой как раз написано это самое условие. Цифры 8346 и 2.38 в нём мною взяты с потолка. Именно этот текст будет выводиться во всплывающей подсказке в основной гармошке.
А вот дальше идёт код поинтересней - там два цикла. Вот какую стратегию решения задачи я придумал: я сначала выберу два случайных числа (функция mt_rand), которые и являются будущими ответами, а потом первое из них переведу в байты, второе - в мегабайты. Вот и всё - эти два новых числа я и помещу в условие задачи. Вдобавок, я наложил ограничения: число в байтах всегда должно получаться целым: $d = $Byte - round($Byte);, а количество мегабайт с точностью до двух знаков после запятой: $d = $Mega*100 - round($Mega*100);.
Обратите внимание, случайное число в первом случае я ищу в диапазоне от 456 до 37890 (делённые на сто каждое), а во втором - от 1500 до 490000 (ровно). Почему именно эти цифры? Сначала я поставил туда цифры с потолка - лишь бы работало. А когда заработало, начал с ними играться - то больше поставлю, то меньше. Таким путём я подобрал интервалы, в которых скорость работы скрипта была не слишком медленной.
Напоследок я скажу вам последние ограничения, о которых вы должны помнить:
Все предметы: Физика Информатика Математика
© Денис Петрович Сепетов
2007-2024