8. Внутрішня структура об’єктів Maple. Підстановка та перетворення типів. Перетворення чисел з різною основою
У Maple можлива робота з числами, що мають різнеоснова(base), зокрема, з двійковими числами (основа 2 - binary), восьмеричними (основа 8 - octal) і шістнадцятковими (основа 16 - hex). Функція convert дозволяє легко перетворювати формати чисел:
Крім наведених варіантів, функція convert має ще ряд інших форм. З ними можна познайомитися за допомогою довідки щодо цієї потужної функції. Надалі буде наведено низку інших застосувань цієї функції.
Контроль за типами об'єктів
Вирази та його частини в Maple розглядаються як об'єкти. У ході маніпуляцій з ними важливе значення має контроль за типом об'єктів. Однією з основних функцій, що забезпечують такий контроль, є функція whattype(object), що повертає тип об'єкта, наприклад string, integer, float, fraction, function тощо. Можуть також повертатись дані про операторів. Приклади застосування цієї функції наведені нижче (файл control):
За допомогою функції type(object,t) можна з'ясувати, чи відноситься зазначений об'єкт до відповідного типу t, наприклад:
При успішній відповідності типу об'єкта вказаному (другий параметр), функція type повертає логічне значення true, інакше false.
Для детальнішого аналізу об'єктів може використовуватися функція hastype(expr, t), де expr - будь-яке вираз і t - найменування типу подобъекта.
Ця функція повертає логічне значення true, якщо подібний об'єкт зазначеного типу міститься у виразі expr. Приклади застосування цієї функції наведені нижче (файл control):
Ще одна функція — has(f,x) — повертає логічне значення true, якщо подібний об'єкт х міститься в об'єкті f, і false в іншому випадку:
Слід зазначити, що відповідність подібного виразу зазначеному подібномурозуміється в математичному значенні. Так, в останньому прикладі подобъект «3-1», якщо розуміти його буквально, у виразі 2*sin(x) немає, але Maple-мова враховує відповідність 3-1=2, і тому функція has в останньому прикладі повертає true.
Функція has може використовуватися виявлення тієї чи іншої математичної операції, оператора чи функції. Однак треба дотримуватися певних правил, оскільки вираз, аналізований функцією has оцінюється і виконується. Уважно проаналізуєте наведені нижче приклади:
Тут треба врахувати, що вираз 2*sin(2) після оцінки та виконання не змінюється, оскільки Maple, при цілісному аргументі функції синуса, не обчислює її та обчислений вираз збігається з вихідним і містить функцію синуса. Однак sin(2.) вже обчислюється та стає числом. Саме тому останньому прикладі функція sin не виявляється. Подібне має місце і в ряді інших прикладів із функцією інтегрування:
Такий же повчальний приклад з ідентифікацією функції інтегрування. Так, has(int(х^2, х), int); дає false, оскільки інтеграл оцінюється і обчислюється, що веде до заміни виразу на х 3/3 вже не містить ознак інтегрування. Це пояснюють два останні приклади, у яких обчислено значення інтеграла і функція has дає значення true значення інтеграла. У той же час висновок int(x^2,x) в апострофи дозволяє знайти ім'я функції інтегрування int, оскільки вихідний вираз у цьому випадку представлений у формі, що не виконується, і містить звернення до цієї функції.
Ще одна іноді корисна функція контролю виразів depends(f,x) повертає true, якщо х входить у f і false в іншому випадку. У цьому треба пам'ятати, що функція (вираз) оцінюється і виконується. Наступні приклади добреілюструють сказане:
В останньому прикладі обчислений вираз це вже просто число, в ньому не міститься, а тому й отримано значення false.