Как найти действительные числа в паскале

Действительный (вещественный) тип данных в Turbo Pascal.

Данные действительного (вещественного) типа необходимы тогда,

когда числовые значения могут содержать дробные части. Действи-

тельный тип данных используется для описания действительных пе-

ременных, т.е. таких переменных, значением которых может быть

действительное или целое число.

В Turbo Pascal константа действительного типа может быть предс-

тавлена в двух видах:

1) Числом с фиксированной точкой.

2) Числом с плавающей точкой.

Число с фиксированной точкой изображается десятичным числом с

дробной частью (она может быть и нулевой). Дробная часть отделя-

ется от целой с помощью точки. Например: 19.56; 0.05; -376.18;

Следует обратить внимание на то, что в записи действительных чи-

сел вместо десятичной запятой, как принято в математике, исполь-

зуется ДЕСЯТИЧНАЯ ТОЧКА!

Очень большие и очень маленькие числа в математике принято запи-

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

цифр на степень числа 10. В Turbo Pascal такая запись называется

записью числа с плавающей точкой. Число с плавающей точкой запи-

сывается в виде: mEp, где m – мантисса числа, p – порядок числа.

Обычная запись в математике. Запись с плавающей точкой в TPascal.
    1.3653*108
    1.3653E+8
    6.63*10-34
    6.63E-34
    -1.6*10-19
    -1.6E-19
    3*108
    3E8
Основной действительный тип в Turbo Pascal – это тип Real,

т.е. описание переменной имеет тип Real.

Пример: var x,y,z:real;

Однако в TPascal есть ещё 5 стандартных действительных типов.

Они используются тогда, когда диапазон изменения переменной

больше, чем у типа Real.

Тип Диапазон Число значащих цифр Выделяемая память
    Real
    -2.9E-39…1.7E38
    11-12
    6
    Single
    -1.5E-45…3.4E38
    7-8
    4
    Double
    -5.0E-324…3.4E308
    15-16
    8
    Extended
    -3.4E-4932…1.1E4932
    19-20
    10
Операции над действительными числами: сложение +, вычитание -,

умножение *, деление /. Одно из двух данных при этом может быть

целого типа, но результат операции будет действительным числом.

К действительным числам можно применять встроенные функции:

sin(x); cos(x); exp(x); ln(x); sqr(x); sqrt(x); arctan(x);

abs(x); pi=3.14159…; int(x) – целая часть числа; frac(x) –

дробная часть числа; random(x) – случайное число (от 0 до 1).

Вывод действительных данных возможен с форматом и без формата.

Если формат отсутствует, то число выводится с плавающей точкой с

мантиссой и порядком, при этом на изображение числа отводится 17

позиций. В целой части мантиссы присутствует только 1 значащая

цифра, в дробной части 10 цифр, а на порядок с учетом знака от-

водится 3 позиции. Пример: -3.2648375386Е-01.

Для наглядности выводимых результатов предусмотрены форматы.

Формат указывается в операторе вывода write вслед за выводимым

данным через двоеточие: R:m:n, где R – выводимое данное действи-

тельного типа, m – общее поле выводимого числа (включая знак чис-

ла, целую часть, точку и дробную часть), n – поле дробной части.

В качестве m и n могут быть целые константы, переменные, выраже-

ния. Чаще всего это целые числа. При использовании форматов число

выводится с фиксированной точкой. Пример: Для вывода числа

R:=-0.18 достаточно указать в операторе write(R:5:2);

Если формат указан больше, чем необходимо, то перед целой частью

располагаются избыточные пробелы, а после дробной части – нули.

Данные целого типа в языке Turbo Pascal.

Данные целого типа используются в тех случаях, когда величину

нужно представить абсолютно точно, например, число предметов.

К данным целого типа относятся константы и переменные.

Константа целого типа-это десятичное число, записанное без точки.

Если константа отрицательная, то перед ней ставится знак минус.

Знак плюс можно не указывать. Пример: 7, -140, +357, 0, 999.

Константы могут быть обозначены именем. В этом случае они задают-

ся в разделе const. Пример: const k=15; p1=-46; p2=46;

Переменная целого типа принимает значение целого десятичного чис-

ла. Описание переменной обозначается integer.

Пример: var a,b:integer; b1,b2:integer;

Данные целого типа (integer) принимают значения от -32768 до

+32767. В памяти машины эти значения представлены точно.

В разделе операторов переменные целого типа должны принимать зна-

чения целых десятичных чисел. Пример: a:=25; S:=0;

Всего в Turbo Pascal 5 встроенных данных целого типа:

Тип Диапазон
    shortint (короткое целое)
    -128…128
    integer (целое)
    -32768…+32767
    longint (длинное целое)
    -2147483648…+2147483647
    byte (длиной в байт)
    0…255
    word (длиной в слово)
    0…65535
Если диапазон изменения больше, чем допускает тип integer, то ис-

пользуется тип longint (длинное целое), иначе будут ошибки в вы-

числениях.

Над данными целого типа можно выполнять следующие арифметические

операции: сложение + , вычитание – , умножение * , деление div

с отбрасыванием дробной части (получение целого частного при де-

лении целого на целое). Пример: -25 div -3 (результат 8).

К данным целого типа применяется также операция mod – получение

целого остатка при делении целого на целое.

Пример: -25 mod -3 (результат -1).

Управляющие конструкции в Turbo Pascal

1. Условный оператор IF…THEN….ELSE (Если…то…иначе).

Позволяет организовать разветвление в алгоритме программы.

Условный оператор записываеся следующим образом:

IF Логическое условие THEN Оператор 1

ELSE Оператор 2;

Если выполняется логическое условие (чаще всего это математи-

ческое равенство или неравенство, например: N=5; X>0; Y>=A;

Z<>K;), то выполняется оператор 1. В противном случае выполня-

ется оператор 2.

Пример программы с условным оператором:

program Moscow;

var k,y:integer;

begin

writeln(‘Знаете ли Вы год основания Москвы?’);

write(‘Введите год основания Москвы: k=’);

read(k);

if k=1147 then writeln(‘Вы совершенно правы!’)

else writeln(‘Вы ошиблись!’);

writeln(‘Для выхода из програмы введите число 1.’);

readln(y);

end.

Это пример простейшей программы с разветвляющимся алгоритмом.

2. Оператор цикла с параметром FOR…TO…DO.

Для организации циклического алгоритма часто используется

оператор цикла с параметром: for i:=A to B do S,

где i-некоторая переменная (параметр или счетчик цикла) типа

integer, A и B (B>A) выражения со значением типа integer,

S-оператор (тело цикла). Если A>B, то оператор S не будет вы-

полнен ни разу (когда параметр i возрастает). Если параметр i

возрастает, то между границами его значений A и B ставится

слово TO, если же i убывает, то ставится слово DOWNTO и опера-

тор цикла выполняется при A>B.

Пример программы с оператором цикла с параметром:

program Summa;

var i,n:integer; s,q:real;

begin

writeln(‘Вычислите сумму первых n членов ряда:’);

writeln(‘S=1+1/4+1/9+…+1/(n*n).’);

write(‘Введите число членов суммы: n=’);

read(n);

for i:=1 to n do s:=s+1/(i*i);

writeln(‘Cумма первых n членов ряда равна: S=’,s);

writeln(‘Для выхода из программы введите число 1.’);

readln(q);

end.

Это пример простейшей программы с циклическим алгоритмом.

3. Оператор цикла с предварительным условием WHILE…DO.

WHILE (до тех пор, пока) и DO (выполнить) являются служебными

словами. Применение оператора цикла WHILE…DO в программе

осуществляется следующим образом:

while логическое выражение(условие) do

begin

Операторы циклической части программы(тело цикла)

end;

Если в циклической части программы стоит всего один оператор,

операторные скобки BEGIN – END можно не указывать, и оператор

цикла WHILE…DO имеет вид:

while логическое выражение(условие) do оператор.

В качестве логического выражения чаще всего используется мате-

матическое равенство или неравенство.

Оператор цикла WHILE…DO действует следующим образом. Каждый

раз предварительно проверяется значение логического выражения.

Пока оно истинно, выполняются операторы циклической части

программы. Как только значение логического выражения становит-

ся ложным, происходит выход за пределы цикла.

Пример программы с оператором цикла WHILE…DO:

program Faktorial;

var n,p,Q:longint;

begin

writeln(‘Вычислите n-факториал: n!=1*2*3*…*n; 0!=1.’);

writeln(‘Введите любое натуральное число n=0,1,2,3,…: n=’);

readln(n);

p:=1;

while n>0 do

begin

p:=p*n;

n:=n-1;

end;

writeln(‘n-факториал равен: n!=’, p);

writeln(‘Для выхода из программы введите число 1.’);

readln(Q);

end.

4. Оператор цикла с последующим условием REPEAT…UNTIL.

Оператор цикла REPEAT…UNTIL организует выполнение цикла,

состоящего из любого числа операторов, с неизвестным заранее

числом повторений. Тело цикла выполняется хотя бы один раз.

Выход из цикла осуществляется при истинности некоторого логи-

ческого выражения (условия). Структура этого оператора:

REPEAT <тело цикла> UNTIL <условие>, где <тело цикла> – после-

довательность операторов Turbo Pascal, <условие> – выражение

логического типа. Структуру оператора REPEAT…UNTIL можно

также представить в виде:

REPEAT

Instruction1;

Instruction2;

………….

InstructionM;

UNTIL S;

Здесь Instruction1, Instruction2, …, InstructionM – выполня-

емые операторы, составляющие тело цикла, S-логическое условие,

истинность которого проверяется в конце каждого повторения.

Пример программы с оператором цикла REPEAT…UNTIL:

program Put1;

var S,t,g,w:real;

begin

writeln(‘Вычисление пути при свободном падении S при t=0-20 с.’);

g:=9.81;

t:=0;

Repeat

S:=g*t*t/2;

writeln(‘t=’,t:6:3,’ S=’,S:6:3);

t:=t+1;

Until t>20;

writeln(‘Для выхода из программы введите любое число.’);

readln(w);

end.

Оператор цикла REPEAT…UNTIL и процедуру Function удобно ис-

пользовать при решении задачи о табуляции произвольной функции

y=f(x), определённой в интервале изменения аргумента (a,b), b>a,

причем шаг изменения аргумента равен h. Число точек n=(b-a)/h не

должно превышать 20, иначе результаты расчёта не поместятся на

экране. Табуляция представляет собой построение таблицы, когда

каждому x соответствует y=f(x). Достаточно подставить конкретный

вид функции, не меняя структуру программы, и получить желаемый

результат. Пример программы для функции y=x/(x*x+1) приведен ниже

(a=-5, b=5, h=0.5):

Program TabFunc;

uses crt;

var y,x,h,a,b:real;

function f(x:real):real;

begin f:=x/(x*x+1);

end;

begin

clrscr;

writeln(‘Вычислите y=x/(x*x+1) при x=a до x=b (b>a). Шаг h.’);

writeln(‘Введите пределы изменение аргумента a и b:’);

readln(a,b);

write(‘Введите шаг изменения аргумента h=’);

read(h);

x:=a;

repeat

y:=f(x);

writeln(‘x=’,x:6:3,’ y=’,y:9:6);

x:=x+h;

until x>b;

write(‘Для выхода из программы нажмите любую клавишу.’);

readkey;

end.

5. Оператор перехода GOTO.

Применение оператора безусловного перехода GOTO позволяет в

ряде случаев упростить программу и часто даёт выход из трудных

ситуаций. Оператор перехода имеет вид: GOTO <метка>, что озна-

чает сделать переход на метку. Метка – это произвольный иден-

тификатор, позволяющий именовать некоторый оператор программы

и, таким образом, ссылаться на него. В качестве метки могут

использоваться слова, сочетания букв и цифр, например: loop,

m1, m2, m3, lb1, lb2, а также целые числа без знака.

Метка перед тем, как быть использована, должна быть обязатель-

но описана в разделе описаний программы: LABEL список меток.

Пример: label m1,m2,m3;

Метка располагается непосредственно перед помечаемым операто-

ром и отделяется от него двоеточием, например:

m1: writeln(‘Ответ: Радиус R=’,R);

Метка, указанная в разделе описаний, должна обязательно встре-

титься в теле программы.

Действие оператора GOTO состоит в передаче управления соот-

ветствующему помеченному оператору.

Пример программы с оператором GOTO:

Program Fibonachi1;

label m1;

var n,v,w,r,i,Y:longint;

begin

writeln(‘Вычисление ряда чисел Фибоначчи.’);

writeln(‘Число Фибоначчи Fn равно сумме двух предыдущих’);

writeln(‘чисел Fn-1 Fn-2.’);

writeln(‘Ряд чисел Фибоначчи имеет вид: 0;1;1;2;3;5;8;13,21;…’);

writeln(‘Введите порядковый номер n числа Фибоначчи:’);

writeln(‘n=1,2,3,4,5,…’);

write(‘n=’);

read(n);

if n=1 then writeln(‘Число Фибоначчи с номером n=1: F1=0.’);

if n=2 then writeln(‘Число Фибоначчи с номером n=2: F2=1.’);

if n<=2 then goto m1;

w:=0; v:=1; i:=2;

while i<n do

begin r:=v+w; w:=v; v:=r; i:=i+1;

end;

writeln(‘Число Фибоначчи с заданным номером n равно: Fn=’, v);

m1: writeln(‘Для выхода из программы введите число 1.’);

readln(y);

end.

Данные действительного(вещественного) типа используются
значительно чаще, чем целого типа.

2 вида представления
вещественных констант с фиксированной
и с плавающей точкой: 127.3 25.0 -16.003

4Е-5 0.62Е+4 -10.8Е12 -20Е-3

0.52Е+3 =
5.2Е+2 = 52Е+1 = 520Е = 5200Е-1

В разделе
описания констант:

Const L = -1/602E-19;

NA=6.022E23;

PI=3.14;

Summa=-5.6;

Описание
переменной имеет тип Real:

Var U, I, R: Real;

Z1:Real;

В разделе
операторов: Z1:=-0.03E14;

Scorost:=12.6;

I:=5;

Здесь
целое число 5 автоматическипреобразуется к действительному типу
5.0 для присвоения переменнойI.

2.2.1. Операции над данными действительного типа:

+ — * /

Результат – тоже
действительное число.

Если в операции, кроме
данных вещественного типа, участвуют
и данные целого типа, результат все
равно будет вещественный. Степень
представляется так: Aхexp(x*LN(A))
приA>0

Формат: Write(x:m:n),
где:m- общее поле,n- поле дробной части.

В арифметических
выражениях принят следующий приоритет
операций:

1)Вычисление
функции.

  1. * ,
    / , Div,Mod.

  2. + ,
    — .

Пример.

25 Mod3*4=4

25 Div3*4=32

5*5 Div3*4=32

5+5 Mod3-4=3

Вещественные типы

REAL
– действительный (вещественный) тип.
Абсолютная величина для этого типа
изменяется в диапазоне 2.9Е – 39..1.7Е+38,
имеет мантиссу с 11 десятичными цифрами.
Занимает в памяти 6 байтов.

SINGL– простой точности, 4 байта.

DOUBLE– двойной точности, 8 байт.

EXTENDED– расширенной точности, 10 байт.

При
переполнении вещественного типа
происходит программное прерывание.

С
аргументами вещественного типа могут
не пользоваться следующие стандартные
функции:

Sin(x),
Cos(x) ,Ln(x), Sqrt(x), Arctan(x), Exp(x), Sqr(x), Abs(x). Все
они вырабатывают результат вещественного
типа.

Определены
также стандарты функции преобразования
значения вещественного типа в значение
целого типа:

TRUNC
(
X)– вырабатывает
результат путем отбрасывания дробной
части аргумента;

ROUND
(
X)– вырабатывает
целый результат путем округления до
ближайшего целого.

Пример.

x=21.53 trunc
(x)=21 round (x)=22

x=-27— trunc
(x)=-2 round (x)=-3

2.3. Логический тип

Boolean– логический тип имеет 2 значения:false
и
true,занимают
1 байт памяти.

Над булевскими
переменными определены 3 логические
операции:

AND– конъюнкция (логическое умножение),

OR– дизъюнкция (логическое сложение),

NOT– отрицание.

FALSE<TRUE, поэтому применимы операции отношения.

Значения FALSE
и
TRUEможно
рассматривать как упорядоченное
множество, состоящее из двух
элементов.

Ord
(false)=0 {номер)

Succ
(false)=true {следующий)

Ord
(true)=1 {номер)

Pred
(true)=false {предыдущий)

Логический
тип (тип boolean) определяет
диапазон логических значений, который
содержит 2 элемента:TRUE(истина) иFALSE(ложь).

Type
Boolean = (False,
True);

Логические
переменные описываются в разделе
описания переменных так:

Var p, q, r : Boolean;

Логические
переменные могут принимать только 2
значения:True и False.

2.3.1. Алгебра логики в Паскале

Над аргументами
логического типа определены следующие
операции:

NOT(Не) – отрицание

AND(и) – конъюнкция (логическое умножение)

OR(или) – дизъюнкция (логическое сложение)

XOR(икс ор) – исключающее или

P

Q

Not P

P And Q

P Or Q

P Xor Q

False

False

True

False

False

False

True

False

False

False

True

True

False

True

True

False

True

True

True

True

False

True

True

False

Все операции сравнения
дают результат типа Boolean.

= , < >,
< , < = , > , > =.

Например,
в результате выполнения оператора

P:
=X<= 5;

логическая
переменная Р получит значение True,
если текущее значение переменной Х
меньше или равно 5. При Х>5P=False.

В языке
Паскаль принято следующее старшинство
операций:

  1. Not

  2. And

  3. Or, Xor + –

  4. Операции
    сравнения , что это значит?

Not P = Q
(Not P) = Q

P < = Q And R
P < = (Q And R)

P Or Q And R P
Or (Q And Q)

Для
задания явного порядка – круглые скобки:

(A-B)AND(C<
=D)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Паскаль - Урок 24: Тип real и арифметические действия в Pascal

В компьютерном программировании типы данных очень важны для точности и эффективности компьютерных программ. Язык программирования Pascal — это строго типизированный язык, который имеет несколько различных типов данных, включая «настоящий» тип данных. Тип данных real используется для хранения чисел с десятичной точкой или числами с плавающей запятой. Тип данных real чрезвычайно полезен при работе с числами, требующими большей точности, чем это возможно с целыми числами.

Вещественный тип данных в Паскале — это тип данных с плавающей запятой, для которого обычно требуется больше памяти, чем для других типов данных. Тип данных real позволяет хранить большие действительные числа, такие как экспоненциальное представление, десятичные дроби и любые действительные числа с представлением с плавающей запятой. Используя реальный тип данных, программисты могут работать с числами более эффективно и с большей точностью.

Тип данных real часто используется в научных и инженерных приложениях, требующих высокоточных вычислений, которые невозможно точно выполнить с помощью целочисленных типов данных. Например, если мы хотим рассчитать скорость автомобиля, которые проезжает 115 км за 2 часа. В данном случае мы разделим 115 на 2 и получим скорость 57,5 км/ч. 57,5 – это нецелое число и мы должны записать 5 десятых в переменную, а это невозможно осуществить с помощью типа integer.

Вещественные числа в Паскале могут быть определены с использованием различных форматов, записи с десятичной точкой и экспоненциальной записи. Обозначение десятичной точки такое же, как мы записываем десятичные числа в математике, просто с точкой вместо запятой. Научная нотация — это способ простого представления больших или малых чисел с помощью показателей степени. Например, если мы хотим представить число 42,65 ? 10 в степени 6, мы можем записать его как 42,65E6.

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

Пример программы, которая использует тип данных ‘real’ в Pascal и выполняет некоторые базовые математические операции:


```

program RealDataType;

var

  num1, num2, result: real;

begin

  writeln('Введите первое число: ');

  readln(num1);

  writeln('Введите второе число: ');

  readln(num2);

  result := num1 + num2;

  writeln('Сложение = ', result:0:2);

  result := num1 - num2;

  writeln('Разность = ', result:0:2);

  result := num1 * num2;

  writeln('Умножение = ', result:0:2);

  result := num1 / num2;

  writeln('Деление = ', result:0:2);

  readln;

end.

```

Эта программа предлагает пользователю ввести два действительных числа, а затем выполняет над ними операции сложения, вычитания, умножения и деления. Обозначение ‘:0:2’ используется для форматирования выходных данных и отображения двух знаков после запятой.

Дата: 2023-03-06 08:19:16   Просмотров: 400

Теги: паскаль pascal real

Просмотров 6.5к. Обновлено 23 ноября 2020

Урок из серии: «Язык программирования Паскаль»
На этом уроке мы заканчиваем знакомиться с простыми (скалярными) типами данных языка программирования Паскаль. Остался вещественный  тип данных.
Данные вещественного (действительного) типа используются значительно чаще целого типа. Они необходимы в тех случаях, когда числовые значения могут содержать дробные части.

Описание данных вещественного типа

Идентификатор типа Допустимые значения Размер выделяемой памяти
real 5.0∙10-324 — 1.7∙10308 8 байт

Например описания величин вещественного типа:

Константа вещественного типа может быть представлена в двух видах: числом с фиксированной и плавающей точкой.

Число с фиксированной точкой изображается десятичным числом с дробной частью (дробная часть может быть нулевой). Дробная часть отделяется от целой с помощью точки, например 127.3, 25.0, -16.003, 200.59, 0.54.

Число с плавающей точкой имеет вид mEp, где m — мантисса, а p — порядок числа. В качестве m могут быть целые числа и действительные числа с фиксированной точкой, в качестве p — только целые числа. Как мантисса, так и порядок могут содержать знаки «+» и «-«.

Математическая запись Запичь с плавающей точкой
0,000009 9Е-6
0,62*104 0.62Е+4
-10,8*1012 -10.8Е12
20*10-3 20Е-3

Набор операций

Над данными вещественного типа определены следующие арифметические операции:
» + » — сложение;
» — » — вычитание;
» * » умножение;
» / » — деление.
Результат выполнения этих операций получается также вещественного типа.

Над данными вещественного типа определены следующие операции отношения:
» = »    — равно;
» <> »  — не равно;
» <  »  — меньше;
» > »    — больше;
» <= »  — меньше или равно (не больше);
» >= » —  больше или равно (не меньше).

Операции отношения вырабатывают результат логического типа

Стандартные функции

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

Имя и параметры Действие
abs(x) вычисление абсолютного значения Х
sqr(x) вычисление квадрата Х
sqrt(x) вычисление квадратного корня из Х
sin(x) вычисление синуса x
cos(x) вычисление косинуса Х
arctan(x) вычисление арктангенса Х
exp(x) вычисление ех
ln(x) вычисление натурального алгоритма x
trunc(x) вычисление целой части Х
round(x) округление Х в сторону ближайшего целого

Примечание. Аргумент функции следует за именем функции и заключается в круглые скобки. В тригонометрических функциях синуса и косинуса аргумент задается только в радианной мере угла.

Вывод данных вещественного типа

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

Изменить стандартную форму вывода можно, используя формат:

Write(x:m:n:),

где х — величина вещественного типа (константа, переменная, выражение);

     m — общее поле выводимого числа (включая знак числа, целую часть, точку и дробную часть);

      n — поле дробной записи.

При использовании форматов число выводится в форме с фиксированной точкой. Так, использование формата Write(r:10:4) для вывода значения r, равного -35.245367, приводит к выводу значения -35.2454.

Пример 1. Напечатать таблицу значений функции y = sin(x) на отрезке [0,1] с шагом 0.1

Решение.

Постановка задачи наталкивает нас на использование цикла с вещественным параметром, но цикл с параметром предполагает использование переменной порядкового типа, а тип Real таковым не является.

Сравним два решения этой задачи, представленные ниже.

Program Primer1_1;
Var i : Real;
Begin
i:=0;
While i<=1 Do
Begin
Writeln(i:2:1,' ',sin(i):4:3);
i:=i+0.1;
End;
End.

Program Primer1_2;
Var i: Integer;
Begin
i:=0
While i<=10 Do
Begin
Writeln(i,' ',sin(i/10):4:3);
Inc(i);
End;
End.

На первый взгляд, работа этих программ должна быть одинаковой, но, запустив программы, мы обнаружим, что первая программа выдает значения функции sin(x) для всех значений х от 0 до 0.9, а вторая программа — для всех значений х от 0 до 1.

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

Пример 2. Дано х, принадлежащее интервалу от -1 до 1. Составить программу вычисления бесконечного ряда

х — х2/2 + х3/3 -…

с заданной точностью Е.

Нужная точность считается полученной, если очередное слагаемое оказалось по модулю меньше, чем данное малое положительное число Е (это и все последующие слагаемые учитывать не надо).

Решение.

Переменные:

y  — сумма ряда;
e — заданная точность вычислений
sl — очередное слогаемое;
st — степень;

z — переменная, отвечающая за знак.

Программа должна вычислять очередное слагаемое хn/n и прибавлять его к сумме, полученной на предыдущем этапе.

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

Итак, решение будет выглядеть следующим образом:

Program Primer2;
var
  x, st, sl, y, e: Real;
  n, z : Integer
Begin
  Write ('Введите х, принадлежащее (-1,1)' );
  Readln(x);
  Write ('Введите погрешность вычисления ' );
  Readln( e );
  y := 0; n := 1; z:=1; st:=x; sl:=x;
  Repeat
    y:=y+z*sl;
    n:=n+1; z:=-z; st:=st*x;
    sl:=st/n;
  Until sl < e;
  Writeln (y);
  Readln;
End.

До встречи в следующем уроке!

На занятии рассматриваются основные стандартные типы данных в Паскаль, понятие переменной и константы; объясняется, как работать с арифметическими операциями

Содержание:

  • Типы данных в Паскале
    • Целочисленные типы данных в Паскаль
    • Комментарии в Паскале
    • Вещественные типы данных в Паскаль
  • Приведение типов
  • Константы в Паскале
    • «Красивый» вывод целых и вещественных чисел
  • Арифметические операции в Паскале
    • Порядок выполнения операций
  • Стандартные арифметические процедуры и функции Pascal

Типы данных в Паскале

Паскаль — это типизированный язык программирования. Это означает, что переменные, в которых хранятся данные, имеют определенный тип данных. Т.е. программе напрямую надо указать, какие данные могут храниться в той или иной переменной: текстовые данные, числовые данные, если числовые — то целочисленные или дробные, и т.п. Это необходимо в первую очередь для того чтобы компьютер «знал», какие операции можно выполнять с этими переменными и как правильно их выполнять.

Например, сложение текстовых данных, или как это правильно называется в программировании — конкатенация — это обычное слияние строк, тогда как сложение числовых данных происходит поразрядно, кроме того, дробные и целые числа складываются тоже по-разному. То же самое касается и других операций.

Рассмотрим наиболее распространенные в 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 (только диапазон значений здесь значительно больше).

Примеры того, как описываются (объявляются) переменные в Паскале:

Pascal PascalABC.NET
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.
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($'имя: {myname}, возраст: {y}')
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);  {_1.2346E+004}
  • либо два числа, первое из которых обозначает общий размер поля, отведенного под это число, второе — число знаков после запятой, т.е. точность.
  • p:=1234.6789;
    Writeln(p:6:2); {1234.68}

    Наряду с простыми типами в языке еще используются структурированные типы данных и указатели, которым будут посвящены последующие уроки по Паскалю.

    Приведение типов

    В 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

    Обратное приведение с помощью функций

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

    real → integer

    Пример:

    ##
    var x := Sqrt(3); // корень квадратный из 3, тип real
    var a := Trunc(x); // приведение к integer с отсечением дробной части. рез-т 1
    var b := Round(x); // приведение к integer с округлением до ближайшего целого. рез-т 2

    Константы в Паскале

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

    Объявление константы в Паскале происходит до объявления переменных (до служебного слова var) и выглядит следующим образом:

    Пример описания константы в Паскале:

    Pascal PascalABC.NET
    1
    2
    3
    4
    5
    6
    
    const x=17;
    var myname:string;
    begin
    myname:='Петр';
    writeln ('имя: ',myname, ', возраст: ', х)
    end.
    1
    2
    3
    4
    5
    
    const x = 17;
    begin
      var myname := 'Петр';
      print($'имя: {myname}, возраст: {x}')
    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 остаток от целочисленного деления

    арифметические операции в паскале

    Порядок выполнения операций

    1. вычисление выражений в скобках;
    2. умножение, деление, div, mod слева направо;
    3. сложение и вычитание слева направо.

    порядок выполнения операций


    Канонический способ:

    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); {Увеличивает x на 1, т.е. x=2}
      writeln (х)

      Более сложное использование процедуры inc:
      Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.

    • Аналогично работает процедура Dec в Паскале: Dec(x) — уменьшает x на 1 (декремент) или Dec(x,n) — уменьшает x на n.
    • Оператор abs представляет собой модуль числа. Работает следующим образом:
    • a:=-9;
      b:=abs(a); { b = 9}
    • Оператор div в паскале является часто используемым, так как целый ряд задач связан с действием деление нацело.
    • Остаток от деления или оператор mod в pascal тоже незаменим при решении ряда задач.
    • Заслуживающей внимания является стандартная функция odd Паскаля, которая определяет, является ли целое число нечетным. Т. е. возвращает true (истина) для нечетных чисел, false (ложь) для четных чисел.
    • Пример использования функции odd:

      1
      2
      3
      4
      
      begin
          WriteLn(Odd(5)); {True}
          WriteLn(Odd(4)); {False}
      end.
    • Функция exp в паскале возвращает экспоненту параметра. Записывается как exp(x), где x типа real.
    • Квадрат числа в Паскале вычисляется при помощи процедуры sqr.
    • Пример использования процедуры sqr в Pascal:

      1
      2
      3
      4
      5
      
      var x:integer;
      begin
      x:=3;
      writeln(sqr(x)); {ответ 9}
      end.
    • Операция возведение в степень в Паскале отсутствует как таковая. Но для того чтобы возвести в степень число можно использовать функцию exp.
    • Формула такая: exp(ln(a)*n), где а — число, n — степень (а>0).

      Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:

       WriteLn(Power(2,3)); {ответ 8}
    • Извлечь квадратный корень в Паскале можно при помощи процедуры sqrt.
    • Пример использования процедуры sqrt в Pascal:

      1
      2
      3
      4
      5
      
      var x:integer;
      begin
      x:=9;
      writeln(sqrt(x)); {ответ 3}
      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 того же типа
    

    Добавить комментарий