Типы данных. Операции и функции над данными разных типов




Запись числовых констант, переменных и выражений.

 

Целые числа в Паскале записываются в обычном виде, например: 0, +100,-56498.

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

запись числа с фиксированной точкой и запись с плавающей точкой.

· · Первая из них - это запись числа в виде целой и дробной частей, разделенных точкой, например: -3.15, 0.1, +23.0125.

· · Вторая форма - с плавающей точкой - это запись числа с мантиссой и десятичным порядком, разделенными латинской буквой E. Такая запись означает, что мантисса (которая может быть целым числом или вещественным числом в форме с фиксированной точкой) умножается на 10 в степени, задаваемой порядком (который всегда должен быть целым числом), например -18.7Е+3, 2.123Е4, 2.34Е-2, 6Е-1.

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

В выражениях допускается использовать константы (неизменяемый объект программы), переменные (объект программы, который может изменять свое значение), операции (+, -, /, *,...) и функции.

Пример 1.

Записать выражение на Паскале

Решение: ((6 - x) * x + 10 * (x * y - 6 * x * y * z)) / (x * y - y * z - z * x)

Пример 2.

Записать выражение (sqrt(sin(x*x)+cos(y*y)))/exp(sqr(2*x-5)) в общепринятой форме.

Решение:

Арифметические операции.

 

В таблице приведены арифметические операции, которые определены для целого и вещественного типов:

Знак операции Операция Типы операндов Тип результата
+ Сложение Целый или вещественный Целый, если оба операнда целого типа, в противном случае - вещественный.
- Вычитание Целый или вещественный
* Умножение Целый или вещественный
/ Деление Целый или вещественный Вещественный

 

Математические функции.

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

Вызов функции Тип аргумента Тип результата Назначение
Abs(x) целый вещественный целый вещественный Возвращает абсолютное значение x
Pi - вещественный Возвращает значение числа ПИ
Sin(x) целый вещественный вещественный Возвращает синус x радиан
Cos(x) целый вещественный вещественный Возвращает косинус x радиан
ArcTan(x) целый вещественный вещественный Возвращает арктангенс x радиан
Sqrt(x) целый вещественный вещественный Возвращает квадратный корень из x>=0
Sqr(x) целый вещественный целый вещественный Возвращает значение квадрата x
Exp(x) целый вещественный вещественный Возвращает значение e в степени x
Ln(x) целый вещественный вещественный Возвращает натуральный логарифм x, x>0

 

 

Структура программы

Любая программа на Паскале имеет следующий общий вид:

Program <имя программы>; Блок.

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

В общем случае блок состоит из описательной и исполняемой частей.

Описательная часть содержит:

1. 1. Описание меток.

Пример: Label 5, 361, 017, a2;

Метки необходимы при использовании оператора перехода Goto.
В качестве меток используются целые числа из диапазона 0 - 9999.

2. 2. Описание констант. Пример: Const a = -1.5; b = True; c = `pascal`;

3. 3. Описание типов.

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

Type <имя типа> = <определение типа>;

Пример:

Type d = 1..100; abc = 'a'.. 'z'; color = (red, yellow, green);

vektor = Array[d] Of Real;

4. 4. Описание переменных.

Общий вид

Var <список имен переменных>: <имя типа>;

Имя типа здесь - это имя какого-либо стандартного или описанного в данной программе типа данных.

Например:
Var n,m: Integer; a: Real; b1,b2: Boolean;

pen: color; x: vektor;

5. 5. Описание процедур и функций.

 

Исполняемая часть содержит список выполняемых операторов программы. Обязательным является наличие служебного слова Begin в начале и служебного слова End в конце раздела. Весь текст программы должен завершаться точкой. Простейшие операторы перечислены ниже

 

Оператор присваивания

Оператор присваивания вычисляет значение выражения, стоящего справа от знака “ := “ и присваивает его переменной, указанной слева. Его общий вид

<имя переменной> := <выражение>;

Тип переменной и тип значения выражения должны совпадать за исключением того, что переменной типа Real может быть присвоено значение выражения типа Integer.

Операторы ввода-вывода

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

Read (список ввода); Readln (список ввода);

и процедурам вывода

Write (список вывода); Writeln (список вывода);

Процедура Writeln после вывода элементов списка переводит курсор на новую строку.

В список ввода могут входить переменные типа Integer, Real, Char. В списке вывода могут содержаться константы, переменные, выражения типа Integer, Real, Char и Boolean. При выводе данных можно задавать формат вывода сразу за объектом вывода:

<объект вывода>: <ширина поля>

где <ширина поля> - целое выражение, значение которого определяет количество знаков отводимое для объекта вывода.

Вещественные значения с <шириной поля> и без нее будут иметь экспоненциальную форму записи, поэтому для вывода значений с фиксированной точкой указанный формат вывода можно дополнить целым выражением через “: ”, которое будет соответствовать количеству знаков после запятой:

<объект вывода>: <ширина поля>: <после точки>

Пример: Как будет выведено на экран:

a:=10; b:=2; c:=421.65;

Writeln(a,b,c); 1024.216500000E+02

Writeln(a,b:2,c:8:2) 10 2 421.65

 

Типы данных. Операции и функции над данными разных типов

 

 
 

Любые объекты, т.е. константы, переменные, значения функций или выражения, в Паскале характеризуются своими типами. Тип определяет множество допустимых значений того или иного объекта, а также множество операций, которые к нему применимы. Кроме того, тип определяет формат внутреннего представления данных в памяти ЭВМ.

Паскаль характеризуется разветвленной структурой типов данных:

 

ПРОСТЫЕ ТИПЫ

К простым типам относятся порядковый и вещественный типы.

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

· · Integer - целый тип, представляет собой подмножество множества целых чисел, определяемое конкретной реализацией. Во внутреннем представлении он занимает 2 байта, диапазон возможных значений - от -32768 до +32767, данные представляются точно.

· · Char - символьный тип, представляет собой набор символов, определяемый конкретной реализацией. Во внутреннем представлении он занимает 1 байт, множество значений этого типа фиксировано и упорядочено. Все символы считаются перенумерованными, начиная с нуля. Такой набор символов определен в каждой вычислительной системе. Константой символьного типа является один из допустимых символов, взятый в апострофы. Если апостроф сам является символом, то апостроф, являющийся значением константы, записывается дважды, например ‘7’, ‘+’, ‘F’, ‘’’’, ‘j’, ‘?’.

· · Boolean - логический тип, определяет диапазон логических значений, который содержит два элемента False (ложь) и True (истина). Во внутреннем представлении он занимает 1 байт.

· · Тип-диапазон - подмножество своего базового типа, в качестве которого может быть любой порядковый тип, кроме типа-диапазон. Тип- диапазон задается границами своих значений внутри базового типа <минимальное значение>..<максимальное значение> При определении типа-диапазон нужно руководствоваться следующими правилами:

- - ".." рассматриваются как один символ, поэтому между точками пробелы недопустимы;7

- - левая граница не должна превышать правую границу.

Примеры: Type month = 1..12; lat = ’a’.. ’z’;

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

Real - вещественный тип, представляет собой определяемое конкретной реализацией подмножество множества вещественных чисел. Во внутреннем представлении он занимает 6 байт, диапазон возможных значений - от 2.9Е-39 до 1.7Е+38, точность представления данных - 11...12 значащих цифр.

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

Целые числа

Тип Диапазон Размер в байтах
Byte Shortint Word Longint 0... 255 -128... 127 0... 65535 -2147483648... 2147483647 1 1 2 4

Вещественные числа

Тип Диапазон Знач. цифры Размер в байтах
Single Double Extended 1.5E-45... 34E38 5E-324... 1.7E308 1.6E-4951...1.1E4932 7-8 15-16 19-20 4 8 10

ОПЕРАЦИИ И ФУНКЦИИ НАД ПОРЯДКОВЫМИ ТИПАМИ ДАННЫХ

 

В таблице приведены арифметические операции, которые, помимо рассмотренных выше (см. лабораторную работу №1), определены

только для целого типа:

Знак операции Операция Типы операндов Тип результата
Div Целочисленное деление Целый Целый
Mod Остаток от целочисленного деления Целый Целый

В Паскале определены следующие

логические операции:

Not - логическое НЕ;

And - логическое И;

Or - логическое ИЛИ;

Xor - исключающее ИЛИ.

Данные операции определяются следующим образом

P Q Not P P And Q P Or Q P Xor Q
True True False False True False True False False False True True True False False False True True True False False True True False

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

 

Приоритет Операция
1 2 3 4 Not *, /, Div, Mod, And +, -, Or, Xor =,<>, <, >, <=, >=

 

Функции.

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

Вызов функции Тип аргумента Тип результата Назначение
Trunc(x) вещественный целый целый Возвращает целую часть значения x
Frac(x) вещественный целый вещественный Возвращает дробную часть значения x
Int(x) вещественный целый вещественный Возвращает целую часть значения x
Round(x) вещественный целый целый Округляет x до ближайшего целого
Odd(x) целый логический Проверяет нечетность значенияx
Ord(x) порядковый целый Возвращает порядковый номер, соответствующий значению x
Chr(x) символьный целый Возвращает символ с заданным порядковым номером x
Pred(x) порядковый порядковый Возвращает предшествующее значение x
Succ(x) порядковый порядковый Возвращает последующее значение x

 

УСЛОВНЫЙ ОПЕРАТОР

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

Условный оператор имеет два варианта записи.

Полная форма:

If <логическое выражение> Then <оператор1>

Else <оператор2>;

В этом случае в зависимости от значения логического выражения выбирается для выполнения оператор1 или оператор2.

 

 

Неполная форма:

If <логическое выражение> Then <оператор>;

В этом случае в зависимости от значения логического выражения выполняется записанный после Then оператор или не производится никаких действий.

 

Если после Then или Else необходимо выполнить действия, описанные несколькими операторами, то эти операторы должны быть заключены в операторные скобки Begin - End. Такая конструкция называется составным оператором.

ОПЕРАТОРЫЦИКЛА

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

Оператор цикла с параметром (арифметический оператор цикла) имеет такую структуру:

For <имя переменной> := <выражение1> To <выражение2> Do <оператор>;

<имя переменной> - параметр цикла

<выражение1> - начальное значение параметра цикла

<выражение2> - конечное значение параметра цикла

Все три указанных выше объекта должны быть одного порядкового типа.

<оператор> - тело цикла.

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

  1. Вычисляются значения выражения 1 и выражения 2.
  2. Параметру цикла присваивается начальное значение.
  3. Параметр цикла сравнивается с конечным значением. Если параметр цикла меньше или равен конечному значению, то перейти к п.4, иначе - конец цикла (переход на следующий оператор после оператора цикла).
  4. Выполняется тело цикла. Параметр цикла принимает следующее значение, полученное с помощью функции Succ (увеличивается на 1).
  5. Переход к п.3.

 

Есть еще один вариант этого оператора цикла, когда параметр цикла после каждого выполнения тела цикла принимает следующее значение, полученное с помощью функции Pred (уменьшается на 1). В этом случае служебное слово To заменяется на Dowto и цикл идет до тех пор, пока параметр цикла не станет строго меньше конечного значения.

Пример.
Вычислить и напечатать первые 10 чисел Фибоначчи. Числа Фибоначчи образуют последовательность, в которой очередной член равен сумме двух предыдущих, а первые два равны единице.


Решение:

Program Fib;

Сonst n=10; {количество чисел}

Var i,f1,f2,f3:Integer;

Begin

f1:= 1; f2:= 1; {первые два числа Фибоначчи}

For i:= 3 To n Do

Begin

f3:= f1 + f2; {следующее число}

Writeln(f3);

f1:= f2; f2:= f3

End

End.

 

Оператор цикла с предусловием

While < логическое выражение> Do < оператор>;

Здесь, тело цикла выполняется до тех пор, пока логическое выражение возвращает значение True.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-01-30 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: