Возведение числа в степень
Написать программу на языке Pascal, которая возводит число в целочисленную степень. Число и степень вводятся с клавиатуры.
Чтобы возвести число в степень, его надо умножить само на себя количество раз, равное показателю степени. То есть возведение числа n в степень d будет выглядеть так:
где индексы внизу просто указывают очередное по счету n .
Если d (степень) равна нулю, то какое бы число не стояло в основании степени, результат всегда будет равен единице:
В примере программы на языке Паскаль количество итераций (повторений) цикла равно модулю показателя степени числа (переменная deg ).
Если значение deg равно нулю, то цикл не выполнится ни разу. В результате переменная res будет содержать значение 1.
Если задан отрицательный показатель степени, то нужно разделить единицу на значение переменной res .
Программа на языке Паскаль:
var deg: integer; num, res: real; i: byte; begin write('Число: '); readln(num); write('Степень: '); readln(deg); res := 1; for i := 1 to abs(deg) do res := res * num; if deg < 0 then res := 1 / res; writeln(res:10:3); end.
Примеры выполнения программы:
Число: -3.2 Степень: 3 -32.768
Число: 5 Степень: -2 0.040
Вариант программы ниже позволяет возводить неотрицательное число в дробную степень:
var num, deg: real; res: real; begin write('Число: '); readln(num); write('Степень: '); readln(deg); res := exp(num * LN(deg)); writeln(res:10:3); end.
Число: 3.2 Степень: 2.9 30.177
Паскаль - Урок 3: операторы квадрата, корня и модуля
Этот оператор возводит в квадрат заданное ему число или переменную. Обозначается, как "sqr" без кавычек. В программе пишется как sqr(a), где a - любая другая переменная или число.
var a, c:integer;
begin
writeln ('Введите число');
readln (a);
c:=sqr(a);
writeln ('Квадрат равен ',c);
end.
2. Оператор корня
Этот оператор находит корень из переменной или числа. Обозначается, как "sqrt" , без кавычек. В программе пишется как sqrt(a), где a - любая другая переменная или число.
var a, c:real;
begin
writeln ('Введите число');
readln (a);
c:=sqrt(a);
writeln ('Корень равен ',c);
end.
3. Оператор модуля
Данный оператор переводит число из обычного в число по модулю, то есть меняет его знак всегда на положительный. Обозначается, как "abs" без кавычек, в программе пишется, как abs(a), где a - любое число или другая переменная.
var a, c:real;
begin
writeln ('Введите число');
readln (a);
c:=abs(a);
writeln ('Модуль равен ',c);
end.
На сегодня урок окончен, с другими уроками вы можете познакомиться в категории "Уроки паскаль"
Pascal: Занятие № 8. Подпрограммы: функции в Pascal
![]()
На занятии будет объяснен алгоритм работы с функциями на Паскале, рассмотрены стандартные функции. Будут разобраны примеры использования функций с параметрами и без параметров.
Стандартные функции языка Pascal
Арифметические функции (основные)
| Функция | Назначение | Тип результата |
|---|---|---|
| abs (x) | абсолютное значение аргумента | совпадает с типом аргумента |
| sqr (x) | квадрат аргумента | совпадает с типом аргумента |
| sqrt (x) | квадратный корень аргумента | вещественный |
| cos (x) | косинус аргумента | вещественный |
| sin (x) | синус аргумента | вещественный |
| arctan (x) | арктангенс аргумента | вещественный |
| exp (x) | ex | вещественный |
| ln (x) | натуральный логарифм | вещественный |
| int (x) | целая часть числа | вещественный |
| frac (x) | дробная часть числа | вещественный |
Функции преобразования типов
| round (x) | — округляет вещественное число до ближайшего целого. |
| trunc (x) | — выдает целую часть вещественного числа, отбрасывая дробную. |
Пользовательские функции Pascal
Функция в Паскале — это подпрограмма, которая в отличие от процедуры всегда возвращает какое-либо значение. Для этого в теле функции её имени присваивается вычисленное значение — результат, который она возвращает.
- Функция – это подпрограмма, результатом работы которой является определенное значение.
- Функции используются для:
- выполнения одинаковых расчетов в различных местах программы;
- для создания общедоступных библиотек функций.






var …; function название (параметры): тип результата; var…; begin … название:=результат; end; begin … end.
Пример: написать функцию, которая вычисляет наибольшее из заданных двух значений
Решение:


Вызов функции:
PascalABC.NET :
Правила описания функции:1. Мы должны написать тип значения, которое возвращает функция.
2. Переменная Result хранит результат функции.function f(x: real): real; begin Result := x * x + 1; end;
function f(x: real): real; begin Result := x * x + 1; end;
Вызов функции стоит в выражении:
// основная программа begin var x := 5; var r := Sqrt(x) + f(x); end.
// основная программа begin var x := 5; var r := Sqrt(x) + f(x); end.
Задача function 0. Написать функцию, которая вычисляет наибольшее из заданных трех значений. Функция с тремя параметрами.
Введите три числа: 4 1 6 наибольшее = 6
Пример: Написать функцию на Паскале, которая складывает два любых числа
первое число: 2 второе число: 5 сумма = 7
1 2 3 4 5 6 7 8 9 10 11 12
var x,y:integer; function f(a,b:integer):integer; begin f:= a+b; end; begin writeln('первое число:'); readln(x); writeln('второе число:'); readln(y); writeln('сумма= ',f(x,y)); end.
var x,y:integer; function f(a,b:integer):integer; begin f:= a+b; end; begin writeln('первое число:'); readln(x); writeln('второе число:'); readln(y); writeln('сумма= ',f(x,y)); end.
В рассмотренном примере использования функции в Паскале: функция f имеет два целочисленных параметра — a и b . Через двоеточие в заголовке функции (строка 2) указано, что значение, вычисляемое функцией, будет тоже целочисленным. В теле функции вычисляемая сумма присваивается имени функции. А в основной программе вызов функции осуществляется в качестве параметра оператора writeln .
Таким образом, главное отличие функции от процедуры — это то, что функция производит какие-либо вычисления и выдает в программу результат в виде значения, в то время как процедура чаще всего выполняет какие-либо действия с результатом, например, выводит его на экран (функция этого делать не может).
Задача function 1. При помощи функции найти среднее арифметическое двух чисел (функция с двумя параметрами).
Введите два числа: 4 7 среднее арифметическое = 5,5
Пример: Составить программу с функцией для вычисления факториала числа.
Показать решение:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
var x:integer; function fact(a:integer):integer; var i: integer; begin if a=1 then begin fact:=1;exit; end; result:=2; for i:=3 to a do result:=result*i; fact:=result; end; begin writeln('число:'); readln(x); writeln(fact(x)); end.
1 2 3 4 5 6 7 8 9 10
function Fact(n: integer): integer; begin Result := 1; for var i:=1 to n do Result *= i end; begin var x:= readInteger('число:'); println(x,'! = ',fact(x)); end.
function Fact(n: integer): integer; begin Result := 1; for var i:=1 to n do Result *= i end; begin var x:= readInteger('число:'); println(x,'! = ',fact(x)); end.
В рассмотренном примере функция имеет один параметр — a . Вычисляемое функцией значение имеет целочисленный тип, это указывается в заголовке функции (строка 2). В теле функции в цикле for вычисляется факториал числа. Результат вычисления присваивается имени функции (строка 9). В теле программы для вывода результата функции она вызывается в операторе writeln (строка 14), который и выводит результат на экран.
PascalABC.NET :
Короткое определение функции:function Sq(x: real) := x * x + 1; begin var x := 10; var r := Sq(x) + Sq(2) end.
function Sq(x: real) := x * x + 1; begin var x := 10; var r := Sq(x) + Sq(2) end.
Короткая запись
Если тело функции состоит только из одного оператора, PascalABC.NET позволяет использовать при описании сокращенный синтаксис, без ключевых слов begin и end :
1 2 3 4 5 6
## function SumXY(x,y: real) := x + y; // основная программа begin Print (SumXY(9,2)); //11 end;
## function SumXY(x,y: real) := x + y; // основная программа begin Print (SumXY(9,2)); //11 end;
Задача function 2. Составить функцию, которая определяет сумму всех чисел от 1 до N и привести пример ее использования. N — параметр функции.
Пример:
Введите число: 100 сумма = 5050
Задача function 3. Составить функцию, которая определяет, сколько зерен попросил положить на N-ую клетку изобретатель шахмат (на 1-ую – 1 зерно, на 2-ую – 2 зерна (в два раза больше предыдущего результата), на 3-ю – 4 зерна, на 4-ю – 8 зерен…). N — параметр функции.
Пример:
Введите номер клетки: 28 На 28-ой клетке 134217728 зерен.
Задача function 4. Описать функцию IsDigit(A) , которая возвращает истину, если целое число A представляет цифру (то есть A лежит в диапазоне 0–9). В основной программе вывести значение этой функции для N (N ≥ 0) данных чисел.
Введите N: 3 Введите число: 2 >>> true Введите число: 34 >>> false Введите число: 4 >>> true
Задача function 5. Вычисление степени числа с помощью функции на языке Паскаль.
Пример:
Введите число: 3 Введите степень числа: 2 Результат 3^2 = 9
Задача function 6. Описать функцию Calc(A, B, Operation) вещественного типа, выполняющую над ненулевыми вещественными числами A и B одну из арифметических операций и возвращающую ее результат. Вид операции определяется целым параметром Operation : 1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение. С помощью Calc выполнить для данных A и B операции, определяемые данными целыми N1 , N2 , N3 .
Пример:
Введите два числа: 5 7 Введите номер операции (1 — вычитание, 2 — умножение, 3 — деление, остальные значения — сложение): 2 Результат 5*7 = 35
* Из задачника М. Э. Абрамян (Proc22)
Самостоятельная работа
1 вариант: Описать функцию CircleS(R) вещественного типа, находящую площадь круга радиуса R ( R — вещественное). С помощью этой функции найти площади трех кругов с данными радиусами. Площадь круга радиуса R вычисляется по формуле S=π∗R 2 . В качестве значения Пи использовать 3.14 .
* Из задачника М. Э. Абрамян (Proc18)
Пример:
Введите радиус: 5.2 Площадь круга = 16,328 ___ Введите радиус: 6.3 Площадь круга = 19,782 ___ Введите радиус: 7.1 Площадь круга = 22,294
2 вариант: Описать функцию TriangleP(a, h) , находящую периметр равнобедренного треугольника по его основанию a и высоте h , проведенной к основанию ( a и h — вещественные). С помощью этой функции найти периметры трех треугольников, для которых даны основания и высоты (периметр = сумме длин всех сторон). Для нахождения боковой стороны b треугольника использовать теорему Пифагора: b 2 =(a/2) 2 +h 2 .
* Из задачника М. Э. Абрамян (Proc20)
Пример:
Введите основание треугольника: 6 Введите высоту треугольника: 5 Периметр треугольника = 17,83095 ___ Введите основание треугольника: . Введите высоту треугольника: . Периметр треугольника = . ___ Введите основание треугольника: . Введите высоту треугольника: . Периметр треугольника = .
Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:
Pascal: Занятие №1. Часть 3: Типы данных в Паскаль

Паскаль — это типизированный язык программирования. Это означает, что переменные, в которых хранятся данные, имеют определенный тип данных. Т.е. программе напрямую надо указать, какие данные могут храниться в той или иной переменной: текстовые данные, числовые данные, если числовые — то целочисленные или дробные, и т.п. Это необходимо в первую очередь для того чтобы компьютер «знал», какие операции можно выполнять с этими переменными и как правильно их выполнять.
Например, сложение текстовых данных, или как это правильно называется в программировании — конкатенация — это обычное слияние строк, тогда как сложение числовых данных происходит поразрядно, кроме того, дробные и целые числа складываются тоже по-разному. То же самое касается и других операций.
Рассмотрим наиболее распространенные в Pascal типы данных.
Целочисленные типы данных в Паскаль
Тип Диапазон Требуемая память (байт) byte 0..255 1 shortint -128..127 1 integer -32768.. 32767 2 word 0..65535 2 longint -2147483648..2147483647 4 Нужно иметь в виду, что при написании программ в паскале integer (в переводе с англ. целое) является наиболее часто используемым, так как диапазон значений наиболее востребуем. Если необходим более широкий диапазон, используется longint (long integer, в переводе с англ. длинное целое). Тип byte в Паскале используется, когда нет необходимости работать с отрицательными значениями, то же самое касается и типа word (только диапазон значений здесь значительно больше).
Примеры того, как описываются (объявляются) переменные в Паскале:
1 2 3 4 5 6 7 8
program a1; var x,y:integer; myname:string; begin x:=1; y:=x+16; myname:='Петр'; writeln ('имя: ',myname, ', возраст: ', y) end.
program a1; var x,y:integer; myname:string; begin x:=1; y:=x+16; myname:='Петр'; writeln ('имя: ',myname, ', возраст: ', y) end.
1 2 3 4 5 6 7 8
program a1; begin var x, y: integer; var myname: string; x := 1; y := x + 16; myname := 'Петр'; print($'имя: , возраст: ') end.
program a1; begin var x, y: integer; var myname: string; x := 1; y := x + 16; myname := 'Петр'; print($'имя: , возраст: ') end.
Результат: имя: Петр, возраст: 17
При использовании PascalABC.NET наиболее часто используются следующие целочисленные типы:
Тип Длина, байт Диапазон допустимых значений integer 4 -2 147 483 648 .. 2 147 483 647 int64 8 -9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807 BigInteger переменная неограниченный Комментарии в Паскале
Обратите внимание на то, как используются комментарии в Паскале. В примере комментарии, т.е. служебный текст, который «не видим» для компилятора, заключаются в фигурные скобки <> . Обычно комментарии делаются программистами с целью пояснения фрагментов кода. Для однострочных комментариев можно использовать два слэша // :
begin // вывод write('Привет'); end.Задача 5. Население Москвы равняется а=9000000 жителей. Население Нью-Васюков равняется b=1000 жителей. Напишите программу, которая определяет разницу в числе жителей между двумя городами. Используйте переменные величины.
[Название файла: L1task5.pas ]
Вещественные типы данных в Паскаль
Вещественные числа в Паскале и вообще в программировании — это название дробных чисел.
Тип Диапазон Требуемая память (байт) real 2.9 * 10E-39 .. 1.7 * 10E38 6 single 1.5 * 10 E-45 .. 3.4 * 10E38 4 double 5 * 10E-324 .. 1.7 * 10E308 8 extended 1.9 * 10E-4951 .. 1.1 * 10E4932 10 Тип real в Паскале — наиболее часто используемый из вещественных типов.
Выше были представлены простые типы данных в Паскаль, к которым относятся:
- Порядковые
- Целые
- Логические
- Символьные
- Перечисляемые
- Интервальные
- Вещественные
p:=1234.6789; Writeln(p:12);
p:=1234.6789; Writeln(p:6:2);Наряду с простыми типами в языке еще используются структурированные типы данных и указатели, которым будут посвящены последующие уроки по Паскалю.
Приведение типов
В pascalABC.Net в некоторых случаях можно значения одного типа присваивать переменным другого типа.
Значения типов данных, которые занимают меньше памяти, можно присвоить переменным типа данных с бОльшей емкостью. Так, возможны следующие приведения:
integer → int64 int64 → real integer → BigInteger
Пример использования операции приведения типов:
var a := 10; // integer var b := 123456789012345; // int64 var c := -3bi; // BigInteger var i := int64(a); // приведение integer → int64 var x := real(b); // приведение int64 → real var p := BigInteger(a); // приведение integer → BigInteger
var a := 10; // integer var b := 123456789012345; // int64 var c := -3bi; // BigInteger var i := int64(a); // приведение integer → int64 var x := real(b); // приведение int64 → real var p := BigInteger(a); // приведение integer → BigInteger
Обратное приведение с помощью функций
Обратное приведение, т.е. чтобы присвоить значение большей ёмкости переменной типа данных меньшей емкости, следует использовать функции округления. Например:
real → integer
## var x := Sqrt(3); // корень квадратный из 3, тип real var a := Trunc(x); // приведение к integer с отсечением дробной части. рез-т 1 var b := Round(x); // приведение к integer с округлением до ближайшего целого. рез-т 2
## var x := Sqrt(3); // корень квадратный из 3, тип real var a := Trunc(x); // приведение к integer с отсечением дробной части. рез-т 1 var b := Round(x); // приведение к integer с округлением до ближайшего целого. рез-т 2
Константы в Паскале
Зачастую в программе заранее известно, что переменная будет принимать какое-то конкретное значение и не менять его на протяжении выполнения всей программы. В таком случае необходимо использовать константу.
Объявление константы в Паскале происходит до объявления переменных (до служебного слова var ) и выглядит следующим образом:
Пример описания константы в Паскале:
1 2 3 4 5 6
const x=17; var myname:string; begin myname:='Петр'; writeln ('имя: ',myname, ', возраст: ', х) end.
const x=17; var myname:string; begin myname:='Петр'; writeln ('имя: ',myname, ', возраст: ', х) end.
1 2 3 4 5
const x = 17; begin var myname := 'Петр'; print($'имя: , возраст: ') end.
const x = 17; begin var myname := 'Петр'; print($'имя: , возраст: ') end.
«Красивый» вывод целых и вещественных чисел
Для того чтобы после вывода значений переменных оставались отступы, чтобы значения не «сливались» друг с другом, принято через двоеточие указывать какое количество символов нужно предусмотреть для вывода значения:

Вывод целых чисел

Вывод вещественных чисел
Арифметические операции в Паскале
ДЕЙСТВИЕ РЕЗУЛЬТАТ СМЫСЛ 2 + 3 5 плюс 4 — 1 3 минус 2 * 3 6 умножить 10 / 5 2 разделить 10 ** 2 100 возведение в степень с результатом типа real 17 div 5 3 целочисленное деление 17 mod 5 2 остаток от целочисленного деления 
Порядок выполнения операций
- вычисление выражений в скобках;
- умножение, деление, div, mod слева направо;
- сложение и вычитание слева направо.

var a: integer; b: real; begin a := 1; writeln('a := 1; a = ',a); a += 2; // Увеличение на 2 writeln('a += 2; a = ',a); a *= 3; // Умножение на 3 writeln('a *= 3; a = ',a); writeln; b := 6; writeln('b := 6; b = ',b); r /= 2; writeln('b /= 2; b = ',b); end.
var a: integer; b: real; begin a := 1; writeln('a := 1; a = ',a); a += 2; // Увеличение на 2 writeln('a += 2; a = ',a); a *= 3; // Умножение на 3 writeln('a *= 3; a = ',a); writeln; b := 6; writeln('b := 6; b = ',b); r /= 2; writeln('b /= 2; b = ',b); end.
Стандартные арифметические процедуры и функции Pascal
Здесь стоит более подробно остановиться на некоторых арифметических операциях.
-
Операция inc в Паскале, произносимая как инкремент, это стандартная процедура pascal, которая обозначает увеличение на единицу.
Пример операции inc:
1 2 3
x:=1; inc(x); writeln (х)
Более сложное использование процедуры inc:
Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.a:=-9; b:=abs(a);
Пример использования функции odd:
1 2 3 4
begin WriteLn(Odd(5)); WriteLn(Odd(4)); end.
begin WriteLn(Odd(5)); WriteLn(Odd(4)); end.
Пример использования процедуры sqr в Pascal:
1 2 3 4 5
var x:integer; begin x:=3; writeln(sqr(x)); end.
var x:integer; begin x:=3; writeln(sqr(x)); end.
Формула такая: exp(ln(a)*n) , где а — число, n — степень (а>0).
Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:
WriteLn(Power(2,3));
Пример использования процедуры sqrt в Pascal:
1 2 3 4 5
var x:integer; begin x:=9; writeln(sqrt(x)); end.
var x:integer; begin x:=9; writeln(sqrt(x)); end.
Задача 6. Известны размеры спичечной коробки: высота — 12.41 см., ширина — 8 см., толщина — 5 см. Вычислить площадь основания коробки и ее объем
(S=ширина * толщина, V=площадь*высота)
[Название файла: L1task6.pas ]
Задача 7. В зоопарке три слона и довольно много кроликов, причем количество кроликов часто меняется. Слону положено съедать в сутки сто морковок, а кролику — две. Каждое утро служитель зоопарка сообщает компьютеру количество кроликов. Компьютер в ответ на это должен сообщить служителю общее количество морковок, которые сегодня нужно скормить кроликам и слонам.
[Название файла: L1task7.pas ]
Задача 8. Известно, что x кг конфет стоит a рублей. Определите, сколько стоит y кг этих конфет, а также, сколько килограмм конфет можно купить на k рублей. Все значения вводит пользователь.
[Название файла: L1task8.pas ]
В приведенных ниже примерах все функции имеют аргументы. Аргументы
m и n имеют целочисленный тип,
a и b – тип real,
x и y – любой из этих типов.Abs(x) – возвращает абсолютное значение аргумента x; Ceil(x) - возвращает ближайшее целое, не меньшее, чем х; Floor(x) - возвращает ближайшее целое, не превышающее х; Frac(x) - возвращает дробную часть аргумента x; Max(x, y, …) – возвращает максимальное из значений x, y, …; Min(x, y, …) – возвращает минимальное из значений x, y, … ; Random(m) – возвращает случайное число из интервала [0 ; m-1]; Random(a) – возвращает случайное число из интервала [0 ; a); Random(m, n) – возвращает случайное число из интервала [m ; n]; Random(a, b) – возвращает случайное число из интервала [a ; b); Random2(m) – возвращает кортеж из двух случайных чисел в интервале [0 ; m-1]; Random2(a) – возвращает кортеж из двух случайных чисел в интервале [0 ; a); Random2(m, n) – возвращает кортеж из двух случайных чисел в интервале [m ; n]; Random2(a, b) – возвращает кортеж из двух случайных чисел в интервале [a ; b); Random3(m) – возвращает кортеж из трех случайных чисел в интервале [0 ; m-1]; Random3(a, b) – возвращает кортеж из трех случайных чисел в интервале [a ; b); Round(x) - возвращает округленное до целых по правилам арифметики значение типа integer; Round(x, n) - возвращает значение х, округленное до n знаков в дробной части; Sign(x) – возвращает -1 при x < 0, 0 при x = 0 и 1 при x >0; Sin(x) – возвращает sin(x) типа real; Sqr(a) – возвращает a2; Sqr(m) – возвращает m2 типа int64; Sqrt(x) – возвращает √x типа real; Trunc(a) – возвращает целую часть значения a того же типа
