Функции для величин порядкового типа

Odd(х) - проверяет аргумент на нечетность. Аргумент функции величина типа Longint, результат Тruе, если аргумент нечетный, False - если четный.

Рred(х) - определяет предыдущее значение величины х.

Succ(х) - определяет последующее значение величины х.

Процедуры ввода-вывода.

Для выполнения операций ввода-вывода служат четыре процедуры: READ, READLN, WRITE, WRITELN. Очистка экрана осуществляется командой CLRSCR.

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

READ(переменная1, переменная2,…переменнаяN);

Здесь переменные – переменные допустимых типов данных, значения этих переменных набираются минимум через один пробел на клавиатуре и высвечиваются на экране. Набираемые значения должны соответствовать типам переменных. После набора данных для процедуры READ нажимается клавиша ENTER. Число переменных в списке может быть любым, разделяются переменные запятыми.

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

Например, при выполнении приведенных ниже операторов, после набора на клавиатуре значений А и В курсор автоматически перейдет на новую строку, где набирают значение переменной NOMER.

READLN(A,B);

READLN(NOMER);

Процедура записи WRITE производит вывод числовых данных, символов, строк и булевских значений и имеет формат:

WRITE(переменная1, переменная2,…переменнаяN);

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

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

Знаки операций.

Все операции в Рascal можно разбить на три группы.

1) Арифметические операции.Эти операции (см табл. 4) применимы только к величинам целых и вещественных типов.

При использовании в качестве знака операции служебных слов div и mod, они должны быть отделены от операндов хотя бы одним пробелом. Например,13 div 3 (результат 4), 17 mod 2 (ответ 1).

Таблица 4. Арифметические операции.

Знак Операция Типы операндов Тип результата
+ сложение целые целый
хотя бы один вещественный вещественный
- вычитание целые целый
хотя бы один вещественный вещественный
* умножение целые целый
хотя бы один вещественный вещественный
/ деление целые или вещественные вещественный
div целая часть от деления целых чисел целые целый
mod остаток от деления целых чисел целые целый

2) Операции отношения предназначены для сравнения двух величин. Результат сравнения имеет логический тип.

= - равно < - меньше <= - меньше или равно

<> - неравно > - больше >= - больше или равно.

3) Логические операции применяются к величинам логического типа, результат операции - тоже логического типа. Имеется одна унарная логическая операция not (отрицание) и три бинарные операции and (и), or (или), xor (исключающее или). Результаты выполнения логических операций приведены в таблице 5.

Пример: переменные имеют следующие значения а=7, b= -5, c=True. Тогда значением выражения (а>0) and (а<10) and (b>-10) будет True.

Таблица 5. Логические операции.

Значение операнда Значение операции
X Y not Х Х and Y Х or Y X xor Y
False False True False False False
False True True False True True
True False False False True True
True True False True True False

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

  1. Вычисления в круглых скобках.
  2. Вычисления значений функций.
  3. Унарные операции.
  4. Операции *, /, div, mod, and.
  5. Операции +, -, or, xor.
  6. Операции отношения.

1.8. Совместимость и преобразование типов данных.

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

- оба они одного типа;

- один операнд вещественный, другой - целый;

- один операнд является диапазоном типа второго операнда;

- оба операнда - диапазоны одного и того же базового типа;

- оба операнда - строки;

- один операнд типа строка, другой - символ.

Примеры программ.

1. Написать программу, которая находит частное двух целых чисел.

Program example1;

Var a,b:integer;

c:real;

begin

writeln(‘введите два числа ’);

readln(a,b);

c:=a/b;

writeln(‘c=’,c) end.

2. Написать программу, которая для заданного х вычисляет значение выражения: Функции для величин порядкового типа - student2.ru

Program example2;

Var x,y: real;

begin

writeln(‘введите число ’);

readln(x)

y=sqr(sqr(x))+(x*sqr(x)+12*x)/2+sqrt(sqr(x)*x+10)+sin(x)/cos(x)

writeln(‘y=’,y);

end.

Для вывода вещественного результата можно использовать формат, как это было описано выше. Так, если мы хотим, чтобы результат выводился с точ­ностью до двух знаков после запятой, нужно использовать следующий формат вывода: y:5:2. Тогда оператор вывода будет выглядеть следующим образом: writeln(‘y=’, y:5:2);

3. Найти остаток от деления двух целых чисел.

Program example3;

Var a,b,c:integer;

begin

writeln(‘введите два числа ’);

readln(a,b);

c:=a mod b;

writeln(‘c=’,c)

end.

Переменная c является переменной целого типа, так как тип результата операции mod – целый.

Упражнения.

I. Написать программу, вычисляющую значение выражения

1) Функции для величин порядкового типа - student2.ru 2) Функции для величин порядкового типа - student2.ru

3) Функции для величин порядкового типа - student2.ru 4) Функции для величин порядкового типа - student2.ru

5) Функции для величин порядкового типа - student2.ru 6). Функции для величин порядкового типа - student2.ru

7) Функции для величин порядкового типа - student2.ru 8) Функции для величин порядкового типа - student2.ru

II. Написать программу, которая подсчитывает:

1) периметр квадрата, площадь которого равна а;

2) площадь равностороннего треугольника, периметр которого равен p;

3) среднее арифметическое кубов двух данных чисел;

4) среднее геометрическое модулей двух данных чисел;

5) гипотенузу прямоугольного треугольника по двум данным катетам а, b;

6) площадь прямоугольного треугольника по двум катетам а, b;

7) периметр прямоугольного треугольника по двум катетам а, b;

8) периметр треугольника, заданного координатами вершин (х1, у1), (х2, у2), (х3,y3);

9) длину окружности и площадь круга с радиусом R;

10) площадь кольца с внутренним радиусом R1 и внешним R2.

Операторы ветвления.

Условный оператор IF.

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

1. IF_условие_THEN_оператор1_ELSE_оператор2;

2. IF_условие_THEN_оператор;

Условие – выражение булевского типа, при его записи могут использоваться все возможные операции отношения. Если значение выражения истинно, то выполняется оператор1, если ложно – оператор2. Во втором варианте оператора IF, если выражение ложно, то выполняется оператор, следующий в программе сразу за оператором IF. Один оператор IF может входить в состав другого оператора IF, т.е. этот оператор может быть вложенным. При вложенности операторов каждое ELSE соответствует тому THEN, которое ему непосредственно предшествует.

Если необходимо выполнить более одного оператора после ключевого слова then или else, то надо записать составной оператор begin …end:

if условие then begin

группа операторов1

end

else begin

группа операторов2

end;

Функции для величин порядкового типа - student2.ru

Рисунок 2.1. Блок-схема полной формы условного оператора.

Функции для величин порядкового типа - student2.ru

Рисунок 2.2. Блок-схема сокращенной формы условного оператора.

Оператор выбора.

Оператор выбора позволяет сделать выбор из произвольного числа имеющихся вариантов и имеет формат:

CASE_выражение-селектор OF

константа_1 : оператор1;

константа_2 : оператор2;

……………………………

Константа_ N : операторN

ELSE операторE

END;

Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна вычисленному значению селектора. Если ни одна из констант не равна текущему значению селектора, то выполняется оператор, стоящий после ELSE.

Примеры программ.

1. Найти максимальное из двух чисел a и b

Program example1;

Var a,b,max:real;

begin

writeln(‘введите два числа ’);

readln(a,b);

if a>b then max:=a

else max:=b;

writeln(‘максимальное значение=’,max:5:2)

end.

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

Функции для величин порядкового типа - student2.ru

В данной задче вся числовая прямая разбивается на три интервала: [0;0], [- Функции для величин порядкового типа - student2.ru ;0], [0; + Функции для величин порядкового типа - student2.ru ]. Заданная точка х может попасть в один из них. Сначала проверяется, попадает ли точка в первый интервал. Если попадает, то функцию вычисляем по первому выражению. Если нет, то точка может принадлежать второму или третьему интервалу. Поэтому проверяем принадлежность точки второму интервалу. Если точка принадлежит интервалу, то вычисляем функцию по второму выражению. Если нет, то можно без проверки принадлежности точки третьему интервалу вычислять функцию по третьему выражению.

Program example2;

Var x,y:real;

begin

writeln(‘введите x ’);

readln(x);

if x=0 then y:=0

else if x<0 then y:=x+1

else y:=sqr(x)-1;

writeln(‘y(‘,x,’)=’,y:5:2)

end.

3. Дана точка с координатами x,y. Определить принадлежит ли эта точка заданной заштрихованной области.

Функции для величин порядкового типа - student2.ru

Program example3;

Var x,y:real;

begin

writeln(‘введите координаты точки ’);

readln(x,y);

if (abs(x)<4) and (abs(y)<2) then writeln(‘точка внутри области’)

else if (abs(x)>4) or (abs(y)>2 then writeln(‘точка вне области’)

else writeln(‘точка на границе области’)

end.

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

Program example4;

Var i:integer;

begin

READ(I);

CASE I OF

1..10: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 1 до 10’);

11..20: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 11 до 20’);

21..30: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 21 до 30’);

ELSE WRITELN(‘число I=’,I:3,’находится вне диапазона 1 - 30’);

end; end.

Упражнения.

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

1. Функции для величин порядкового типа - student2.ru

2.. Функции для величин порядкового типа - student2.ru

3. Функции для величин порядкового типа - student2.ru

4. Вычислить Функции для величин порядкового типа - student2.ru .

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

а) Функции для величин порядкового типа - student2.ru ; б) Функции для величин порядкового типа - student2.ru ; в) Функции для величин порядкового типа - student2.ru

6. Найти минимальное число из x1, x2, x3. Расположить эти три числа в порядке возрастания, убывания.

7. Дана точка на плоскости М (х, у ). Составить программу, которая дает ответ на вопрос: «Принадлежит ли точка заданной области: окружности с радиусом=2, кольцу с внешним радиусом 10 и внутренним радиусом 2, полукольцу?»

8. Дана точка с координатами x, y. Определить принадлежит ли эта точка заданной области:

Функции для величин порядкового типа - student2.ru

9. Дано действительное число а. Для функций у = f(х), графики которых представлены на рисунке, вычислить f(a).

Функции для величин порядкового типа - student2.ru Функции для величин порядкового типа - student2.ru

Операторы цикла.

Цикл - это повторяющаяся последовательность операторов. Операторы, которые выполняются в ходе цикла, называются телом цикла. В Pascal имеется три типа циклов: while –цикл с предусловием, repeat – цикл с постусловием, for- цикл с параметром. Все операторы цикла могут быть вложенными.

Цикл While.

Оператор while организует выполнение оператора или группы операторов неизвестное заранее число раз. Выход из цикла осуществляется, если условие завершения цикла окажется ложным. Формат оператора:

WHILE_условие_DO_тело цикла;

Условие – булевское выражение, тело цикла – простой или составной оператор. Перед каждым выполнением тела цикла вычисляется условие, если условие выполняется, то тело цикла выполняется и снова вычисляется значение условия. Если условие не выполняется, то происходит выход из цикла и переход к первому после WHILE оператору. В этом операторе цикла программист сам должен заботиться об изменении переменных, определяющих выход из цикла. Если необходимо выполнить более одного оператора после ключевого слова do, то надо записать составной оператор begin ... end. Блок-схема рассмотренного оператора показана на рис. 3.1.

Функции для величин порядкового типа - student2.ru

Рис. 3.1. Блок-схема цикла WHILE.

Цикл Repeat.

Оператор repeat имеет следующие характерные особенности: тело цикла выполняется, по крайней мере, один раз. Формат оператора:

REPEAT

тело цикла;

UNTIL_условие;

Условие – выражение булевского типа, при его написании допустимы булевские операции и операции отношения. Тело цикла – простой или составной оператор. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если условие не выполняется, то операторы тела цикла выполняются еще раз, если выполняется – происходит выход из цикла (см рис. 3.2).

Функции для величин порядкового типа - student2.ru

Рис. 3.2. Блок-схема цикла Repeat.

Цикл FOR.

Оператор повтора FOR может иметь два формата:

1. FOR_параметр-цикла:=S1_TO_S2_DO_оператор;

2.FOR_параметр-цикла:=S1_DOWNTO_S2_DO_оператор;

где S1 и S2 – выражения, определяющие начальное и конечное значение параметра цикла. FOR…DO – заголовок цикла, оператор – тело цикла. Тело цикла может быть простым или составным оператором. Оператор FOR обеспечивает выполнение тела цикла с увеличением параметра цикла (TO) или с уменьшением параметра цикла (DOWNTO) на единицу.

В операторе повтора FOR Паскаль не допускает изменения параметра цикла на величину, отличную от единицы. В составе оператора запрещены операторы, меняющие значение параметра цикла. Если необходимо выполнить более одного оператора после ключевого слова do, то надо записать составной оператор begin … end;

Примеры программ.

1. Найти все натуральные числа от 1 до n, используя оператор цикла while.

Program example1;

Var i,n:integer;

begin

writeln(‘введите количество натуральных чисел ’);

readln(n);

i:=1;

while i<=n do

begin writel(‘ ’,i);

i:=i+1

end

end.

2. Найти все натуральные числа от 1 до n, используя оператор цикла repeat.

Program example2;

Var i, n: integer;

begin

writeln(‘введите количество натуральных чисел ’);

readln (n);

i:=1;

repeat write(‘ ’,i);

i:=i+1;

until i>n

end.

3. Написать программу приближённого вычисления суммы

Функции для величин порядкового типа - student2.ru с точностью Функции для величин порядкового типа - student2.ru

По условию задачи считается, что нужное приближение получено, если вычислена сумма нескольких первых слагаемых, и очередное слагаемое по модулю меньше, чем данное малое положительное число Функции для величин порядкового типа - student2.ru - это и все последующие слагаемые уже не надо учитывать. В таких задачах следует вычислять каждый член последовательности из предыдущего с помощью рекуррентного соотношения. В данном примере, если уже получено значение выражения xi-1/(i-1)!, то для получения xi/i! достаточно умножить значение предыдущего выражения на x/i.

Program example3;

Var i:integer;

x, eps, a,s:real; {а - очередной член ряда}

begin

writeln(‘введите x ’);

readln(x);

writeln(‘введите eps ’);

readln(eps);

i:=0; s:=0; a:=1;

while abs(a)>=eps do

begin

s:=s+a;

i:=i+1;

a:=a*x/i

end;

write(‘s=’,s) end.

4. Написать программу для вычисления суммы

Функции для величин порядкового типа - student2.ru

Знак Функции для величин порядкового типа - student2.ru в формуле означает суммирование слагаемых, каждый из которых имеет вид Функции для величин порядкового типа - student2.ru , где n принимает значения от 1 до k.

Program example4;

Var i,n:integer;

x, s, a :real; {а - очередной член ряда}

begin

writeln(‘введите n’);

readln(n);

writeln(‘введите x ’);

readln(x);

s:=0; a:=-1;

for i:=1 to n do begin

begin

a:=-a*x/i

s:=s+a;

end;

write(‘s=’,s)

end.

Упражнения.

1. Даны числа а, b (а>b). Получить все члены последовательности a, a2,a3… меньшие числа b

2.Найти все положительные числа из диапазона от А до В с шагом H.

3. Найти сумму чисел из диапазона А до В(A<=B) с шагом H.

4. Вычислить бесконечную сумму ряда с заданной точностью Функции для величин порядкового типа - student2.ru =0,001:

а) Функции для величин порядкового типа - student2.ru

б) Функции для величин порядкового типа - student2.ru

в) Функции для величин порядкового типа - student2.ru

г) Функции для величин порядкового типа - student2.ru

8. Даны действительные числа а1, а2 … аn. Найти:

Функции для величин порядкового типа - student2.ru

9. Составить программу нахождения количества делителей заданного натурального числа n (n=1000) Число k является делителем, если при делении n на k остаток от деления равен 0. Поэтому надо перебрать все числа от 1 до n и проверить являются ли они его делителями.

10. Найти факториал числа n.

11. Вычислить y= Функции для величин порядкового типа - student2.ru ,если хi изменяется от 0 с шагом 0,1 одновременно с i.

Одномерные массивы.

Наши рекомендации