UCOZ Реклама

Урок N 18

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

Управляющие конструкции в 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

 

Hosted by uCoz
UCOZ Реклама

<
td>

Операции над действительными числами: сложение +, вычитание -,

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

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

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

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.

 

Вопросы

1. Как и когда в Turbo Pascal используются данные действительного

типа?

2. Как и в каких случаях в Turbo Pascal используются данные цело-

го типа? Какие производятся операции над целыми числами?

3. Что такое число с плавающей и с фиксированной точкой? Что та-

кое форматы чисел?

4. Какие производятся операции с действительными числами и какие

Вы знаете встроенные функции в Turbo Pascal?

5. Какие управляющие конструкции в Turbo Pascal Вы знаете?

6. Что такое условный оператор и как он применяется?

7. Что такое оператор перехода и как он применяется?

8. Что такое операторы цикла?

9. Когда и как применяется оператор цикла for...to...do?

10. Когда и как применяется оператор цикла while...do?

11. Когда и как применяется оператор цикла REPEAT...UNTIL?

 

Задачи

1. Разберите и проанализируйте все приведенные выше примеры прог-

рамм с управляющими конструкциями.

2. Составьте программу на Turbo Pascal, определяющую название ме-

сяца по его номеру.

3. Составьте программу на Turbo Pascal, определяющую название

времени года по его номеру.

4. Составьте программу определения категории человека по его воз-

расту.

5. Определите любой член и сумму первых n членов арифметической

прогрессии.

6. Определите любой член и сумму первых n членов геометрической

прогрессии.

7. Определите сумму первых n членов числовой последовательности:

1/(1*2)+1/(2*3)+1/(3*4)+...+1/(n*(n+1)).

8. Определите сумму первых n членов числовой последовательности:

1+1/2+1/3+1/4+...+1/n.

9. Определите сумму первых n членов числовой последовательности:

1+1/2+1/4+1/6+...+1/(2*n).

10. Определите сумму первых n членов числовой последовательности:

1+1/3+1/5+1/7+...+1/(2*n-1).

11. Определите сумму первых n членов числовой последовательности:

1+4+9+16+...+n*n.

12. Определите сумму первых n членов числовой последовательности:

1+1/(23)+1/(33)+...+1/(n3).

 

Возврат в оглавление

Hosted by uCoz