Программа вычисления функции на паскале

Составим программу вычисления степени числа а на языке программирования Паскаль АВС:

Program STEPEN;

Var p,a,n,i:integer;

Begin

p:=1; n:=7;

writeln (‘a=’);

read (a)

for i:=1 to n do p:=p*a;

write (‘степень числа а = ’, р);

end.

Пояснения

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

Подпрограмма – именованная, логически законченная группа операторов языка, которую можно вызвать для выполнения любое количество раз из различных мест программы. В языке Паскаль АВС существует 2 вида подпрограмм: процедуры и функции.

Главное отличие процедур от функций заключается в том, что результатом последних является одно единственное значение.

Procedure a17 (a:real; b,c:real; var x1,x2:real: var k:integer);

Арифметические операции. Стандартные функции языка Паскаль. Быстрый курс программирования Pascal ABC

Формальные параметры отделяются точкой с запятой. После заголовка идут разделы описаний (констант, типов, переменных, процедур и функций, используемых в процедуре) и операторы языка Паскаль АВС, реализующие алгоритм процедуры. Формальные параметры нельзя описывать в разделе описания процедуры.

Для обращения к процедуре необходимо использовать оператор вызова процедуры. Он имеет вид:

STEPEN (b, m, j, h);

Фактические параметры в списке отделяются друг от друга запятой. Механизм применения формальных – фактических параметров обеспечивает замену формальных параметров фактическими, что позволяет выполнять процедуру с различными данными. Между фактическими параметрами в операторе вызова процедуры и формальными параметрами в заголовке процедуры устанавливается взаимно однозначное соответствие.

Читайте также:
Программа асфк казначейство инструкция по применению

Скачать:

Источник: nsportal.ru

Алгоритм вычисления функции F(n), как составить программу в Паскаль?

Алгоритм вычисления функции F(n), где n – натуральное число, задан следующими соотношениями:

F(n) = F(n / 3) – 1, когда n >= 2 и делится на 3,

F(n) = F(n – 1) + 17 , когда n >= 2 и не делится на 3.

Назовите количество значений n на отрезке [1;100000], для которых F(n) равно 43.

комментировать
в избранное
mycha­ tik [29.3K]
2 месяца назад

Язык программирования Паскаль я изучал ещё на уроках информатики и больше нигде его не применял, но попробую решить эту задачу.

Сначала проверяем, является ли n делителем 3, используя оператор mod, который возвращает остаток от деления, а также проверяем, что n больше или равно 2.

Далее перебираем все значения n на отрезке [1; 100000] и вызываем функцию F(n) для каждого n. Если значение F(n) равно 43, то увеличиваем счётчик count на 1.

Уроки на языке Pascal. Урок 16. Процедуры и функции.

В конце выводим количество значений n на отрезке [1; 100000], для которых F(n) = 43.

К сожалению, проверить работоспособность кода не могу, но надеюсь что не всё забыл и программа верна.

система выбрала этот ответ лучшим
комментировать
в избранное ссылка отблагодарить
Мария­ Л23 [11.2K]
2 месяца назад

Условие зачем-то мудрёное, с рекурсивным функциями. Такое довольно сложно проверить, потому что трудно вычислить вручную.

Судя по всему, значений функции равных 43 нет.

Есть ещё одна проблема. 100000 слишком большое число. В целый тип данных, который используется в цикле for такое не помещается. Использовать longint не получается (по крайней мере в онлайн компиляторе на телефоне). Поэтому, если нужен именно этот интервал, то надо заморачиваться с двумя циклами.

В приведенный код добавлен вывод значения функции, чтобы хоть как-то убедиться в отсутствии значений 43. Ну, и количество итераций на порядок уменьшено.

Источник: www.bolshoyvopros.ru

Читайте также:
Программы для работы в компьютерной сети примеры

Программа вычисления функции на паскале

Nickolay.info. Алгоритмы. Некоторые математические расчёты на Паскале

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

Возведение в произвольную степень на Паскале

Требуется вычислить значение с = a b . В зависимости от значений основания a и показателя степени b , вычисление степени может быть реализовано по-разному.

Если a > 0 , а b может принимать произвольные вещественные значения, используем известную формулу a b = exp (b * ln a) :

c:=exp(b*ln(a));

Если b — целое число (вообще говоря, «не слишком большое» по модулю), а a — любое (не равное нулю при b < 0 ), возведение в степень может быть реализовано с помощью цикла:

var i:integer; c:=1; for i:=1 to abs(b) do c:=c*a; if b<0 then c:=1/c;

Для целого b и не равного нулю a выгоднее считать с помощью экспоненты и логарифма, не забывая о том, что не существует логарифмов от отрицательных чисел:

c:=exp(b*ln(abs(a))); if (odd(b)=true) and (a

Вычисление корня произвольной степени на Паскале

Стандартная функция sqrt умеет извлекать только квадратный корень.

function root(a:real;n:word):real; var r: real; begin r:=exp(ln(abs(a))/n); if a end;

Вычисление логарифмов на Паскале

Стандартная функция ln вычисляет только натуральный логарифм. Для вычисления логарифмов по другим основаниям можно применить формулу log a b = ln b / ln a :

c:=ln(b)/ln(a);

В частности, для вычисления десятичного логарифма lg b можно записать:

c:=ln(b)/ln(10);

Вычисление обратных тригонометрических функций (арксинусов и арккосинусов) на Паскале

В Паскале имеется стандартная функция arctan для вычисления арктангенса.

Другие обратные тригонометрические функции могут быть выражены через неё с помощью формул тригонометрии.

if x=1 then y:=pi/2 else if x=-1 then y:=-pi/2 else y:=arctan(x/sqrt(1-sqr(x)));
y:=2*arctan(x/(1+sqrt(1-sqr(x))));

на практике следует помнить о возможных погрешностях при сравнении вещественных чисел (глава учебника, п.7.2).

if x=1 then z:=0 else if x=-1 then z:=pi else z:=pi/2-arctan(x/sqrt(1-sqr(x)));
z:=pi/2-2*arctan(x/(1+sqrt(1-sqr(x))));

Читайте также:
Основные термины программы excel

Вычисление полярных углов на Паскале

Полярным углом точки с координатами (x,y) , отличной от начала координат, называют угол между положительным направлением оси Ox и направлением из начала координат на данную точку. При этом угол отсчитывается против часовой стрелки.

Строго говоря, полярный угол не всегда равен arctg (y/x) , это верно лишь при x > 0 . Кроме того, при делении большого значения y на малое x возможно переполнение. Показанная ниже функция вычисляет полярный угол fi , лежащий в промежутке от -pi до +pi , для любой точки с координатами (x,y) , не совпадающей с началом координат:

function fi(x:real; y:real):real; var f:real; begin if abs(x)>abs(y) then begin f:=arctan(y/x); if x>0 then fi:=f else if y>=0 then fi:=f+pi else fi:=f-pi end else begin f:=arctan(x/y); if y>0 then fi:=pi/2-f else fi:=-pi/2-f end end;

Проблема с приведением типов на Паскале

Начинающие «паскалисты» нередко не понимают строгой типизированности этого языка, из-за чего находят в нём несуществующие «баги». Вот простейший пример.

var a,b:integer; r:longint; begin a:=1000; b:=200; r:=a*b; writeln (r); end.

Эта программа выдаст отнюдь не 200000, как может показаться. Ответ будет равен 3392 (результат переполнения). Никакого бага нет. Тип выражения в Паскале определяется только типом входящих в него переменных, но не типом переменной, куда записывается результат. То есть, мы вычислили с переполнением произведение двух переменных типа Integer , а потом «испорченный» результат переписали в переменную типа Longint . ничего не изменит и

r:=Longint(a*b);

Здесь тоже сначала вычислен результат с переполнением, затем преобразован к типу Longint . А вот

r:=Longint(a)*b;

рулит, получите свои 200000 🙂 Указанная ошибка часто встречается в программах начинающих. Чтобы её не повторять, помните — выражение в Паскале должно быть приведено к нужному типу в процессе его вычисления, а не после его окончания или при присваивании.

Источник: nickolay.info

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru