Реална функция и други
Всичко необходимо за начинаещи и опитни програмисти
Стандартни функции от тип Real
Пример 2.6.Стандартни функции с реални променливи
При стартиране програмата ще покаже следното:
Sqr(2.0)= 4.0000000000E+00 Abs(-2.0)= 2.0000000000E+00 Sqrt(2)= 1.4142135624E+00 Sin(2)= 0.909 Cos(2)=-0.416 Arctan(2)= 1.1071487178E+00 Ln(2)= 6.9314718056E-01 Exp(2)= 7.3890560989E+00 Pi= 3.1415926536E+00
ЗАБЕЛЕЖКАМоже би сте забелязали, че Pascal съдържа малко функции. Той дори не може да изчисли тези функции, които нормалният инженерен калкулатор изчислява! Що за език за програмиране е това, ще кажете! Отговорът на това е прост: Pascal не е създаден за изчисления (като Fortran, например), а за учене.
Напишете математически изрази
Функциите, налични в Pascal, са достатъчни за изчисляване на други, по-сложни. Ето няколко примера: tg x = sin x/cos x, ctg x = cos x/sin x, logy x = ln x/ln y, x y = e y ln x
Например, за да изчислим (2x + 3) 1+cos x, ще напишем в Pascal: exp( (1+cos(x)) * ln(2*x+3) )
Обърнете внимание на факта, че когато пишете изрази на езика Pascal, трябва внимателно да помислите за приоритета на операторите. Например изразът "x + 1 делено на 2x", записан като x + 1/2x, веднага съдържатри грешки.
Първо, приоритетът на операцията за разделяне е по-висок от този на събирането, следователно, за да се изчисли правилно числителят, той трябва да бъде взет в скоби: (x + 1). Второ, Паскал не разбира какво означава 2x. Свикнали сме, че в математиката операцията умножение се пропуска в такива случаи. Pascal изисква да бъде указано изрично: (x+1)/2*x. Но дори този израз все още съдържа грешка. Факт е, че умножението и делението имат еднакъв приоритет и се извършват отляво надясно. Това означава, че при такъв запис първо ще се извърши разделяне, а след това резултатът ще бъде умножен по x.
Трябва или да поставите знаменателя в скоби и да напишете (x + 1) / (2 * x), или, за мързеливите, да поставите деление вместо умножение: (x + 1) / 2 / x. Редът на изчисление в този случай няма да бъде същият, както изисква условието, но резултатът ще бъде същият: в края на краищата разделянето на 2x е същото като първо разделянето на 2 и след това разделянето на резултата на x.
ЗАПОМНЕТЕ.Аргументите на функцията винаги се записват в скоби. Тоест, ако функцията няма аргументи (като Pi, например), тогава скобите след нейното име не са необходими. Ако има аргументи, тогава след името на функцията трябва да отворите скобите, да посочите аргументите и да не забравяте да затворите скобите. Например sin 2x в Pascal трябва да се запише като sin(2*x).
Задача 2.8.Напишете програма за изчисляване на дискриминанта на квадратно уравнение. Посочете коефициентите в програмата чрез оператора за присвояване. Нека помислим върху алгоритъм за решаване на този проблем (фиг. 2.6). Запишете всяка стъпка от алгоритъма на Pascal.
Ориз. 2.6. Алгоритъм за изпълнение на задача 2.8
Задача 2.9. Оценете израза:
2011-01-10 отговори Анна
А защо не напишеш накрая - как се изчисляват изрази - в смисъла на Паскал. Това домашно ли еупражнение? Все пак трябва да има отговор, иначе седиш и се потиш.
2011-01-25 отговори Николай.
SW. Анна! Всичко е много директно и умно казано - аз преподавах BASIC на ученици по подобен начин - много ефективно! Ако напишете решения - мнозинството ще спре да се къпе - ще има пропуски в разбирането - цялата сграда на науката ще рухне!
2011-02-05 отговори на Ерик
Моля, напишете как се решава задача 2.9, трябва да се решава на Паскал, нали?
2011-03-23 отговори Иван
Защо в задача 2.9 при писане на израз Паскал постоянно дава грешка 88 и сочи мястото между арктанга. и скоби?
2011-04-24 отговори Владимир
Успях да реша задача 2.9, отговорът е 7.344643. и т.н. Мисля, че това е правилният отговор