Тип определяет для элемента программы: Объем памяти для размещения (по типу компилятор определяет размер памяти для размещения значений элемента). Допустимое множество операций над ними

Вид материалаЛекция

Содержание


Целочисленные типы
Литерные (Символьные) типы
Логический тип
Вещественные типы
Строковые типы
Круглые скобки
Chr(x) IntToStr(x)
Input и Output
Подобный материал:
Лекция 3

10.4. Элементы языка

Типы данных

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


Тип определяет для элемента программы:
  • Объем памяти для размещения (по типу компилятор определяет размер памяти для размещения значений элемента).
  • Допустимое множество операций над ними.

Типы могут быть:
  • стандартные (не требуют объявления),
  • пользователя (тип пользователя должен быть объявлен в разделе типов type).



Типы Т1 и Т2 идентичны, если:

– имеют один и тот же идентификатор типа,

– один объявлен эквивалентным другому (один из них может быть автоматически преобразован к другому). Например, целый в вещественный, символьный в строковый.


Типы данных подразделяются на группы:
  • Простые,

Целочисленные – целые числа

Литерные – отдельные символы

Логические – со значениями да/нет

Вещественные – не целые числа
  • Структурные,

Строки – данные представляют собой строку

Массивы – упорядоченная совокупность элементов

Множества – совокупность элементов, из определенного набора значений

Записи – объединяют N элементов других типов

Файлы – последовательность однотипных элементов на внешнем устройстве

Классы – это объектный тип данных

Данные подразделяются на:
  • переменные,
  • константы,
  • литералы.


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

var

a: shortint; // целое число

x, y, z: real; // дробные числа

s: char; // символ

Переменные могут быть:
  • Глобальные. Объявляются в главной программе. Место под них выделяется компилятором в статической памяти на все время выполнения программы.
  • Локальные. Действуют в пределах подпрограммы, где они объявлены. Место под них выделяется в стеке на время выполнения подпрограммы.


Константа - параметр программы, который при выполнении программы не меняется.

const // именованные константы

a = -5; // целое число

b = -1e-15; // дробное число

symbols = ' Borland ' ; // строка символов


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

123 //целое

-524.03 //вещественное

'g' //символьное

'russia' //строковое


Метка – имя инструкции программы.


Перед употреблением должна быть объявлена в разделе меток label.


В качестве меток можно использовать:
  • целые числа 0..9999,
  • любые идентификаторы.


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

Определены два вида подпрограмм:
  • Функция. Возвращает одно значение.
  • Процедура. Возвращает несколько значений или ни одного.


Перед употреблением подпрограммы описываются в разделах:
  • function для функции,
  • procedure для процедур.


Строки – это последовательность символов, заключенная в апострофы.

’ Object Pascal // Строка может содержать любые символы


’ ’ // Пустая строка. Два апострофа, а не кавычки


Чтобы апостроф включить в строку, его надо записать дважды.

’ Это ''Delphi'', новая версия языка ’ .

10.5. Простые типы данных

Не содержат данных других типов. К ним относятся:

- Целочисленные

- Литерные

- Логические

- Вещественные.


Целочисленные типы: физические и общие

Представление в памяти

Тип

Диапазон

1 Байт со знаком

Shortint

-128...127

2 Байт со знаком

Smallint

-32768...+32767

3 Байт со знаком

Longint

-2147483648...+2147483647

4 Байт со знаком

Int64

-263 … 263 – 1

1 Байт без знака

Byte

0...255

2 Байт без знака

Word

0...65535

4 Байта без знака

Longword

0…4 294 967 295

4 Байта без знака

Integer

-2 147 486648…2 147 487647

4 Байта со знаком общие

Литерные (Символьные) типы




Определяют множество символов из набора литер

Состоит из 256 символов

Тип

Значения

Число байт

AnsiChar

1 символ кода ANSI 0…255

1 байт (Американский стандарт)

WideChar

1 символ кода Unicode 0..65 535

2 байта (Международн. стандарт)

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




Тип

Значения

Образ

Boolean

True / False

1 или 0

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

Различаются

Тип

Порядок

Цифр

Байт

Перевод

Real

-39..+38 3*10-39 – 2*1038

11..12

6

Вещественный

Single

-45..+38 1*10-45 – 3*1038

7..8

4

Одинарный

Double

-324..+308

15..16

8

Двойной

Extended

-4951..+4932

19..20

10

Расширенный

Comp

-263+1..+263-1

19..20

8

Композитный (ф.т.)

Currency

922337203685477,5807

19..20

8

Валютный


Структурированный тип данных

Строковые типы




Тип

Длина строк

Диапазоны значений

ShortString[n]

'Man' Формат ASCII.

Длина строки n  255

LongString[n]

'Man' Формат ANSI

 2х1031 – длинный тип

Ограничение по объему свободной памяти. Длина строки 0.. 2 Гбайта

WideString[n]

'Man' Формат Unicode.

 2х1030 – длинный тип

Ограничение по объему свободной памяти. Длина строки 0.. 2 Гбайта


11.0. Выражения

11.1. Определение

Выражение - синтаксическая единица языка, определяющая способ вычисления некоторого значения.


Выражение состоит из:
  • Операндов,
  • Знаков операций,
  • Круглых скобок.


Выражения может состоять из переменных и констант.


Операнды – это данные (переменные, константы, элементы массивов и функции), над которыми выполняются действия.

Операции – определяют действия, которые выполняются над операндами.

Операции могут быть унарными и бинарными.

Унарная операция относится к одному операнду,

например, -x

Бинарная операция выражает отношение между двумя операндами, например, x + y.

Круглые скобки используются для изменения приоритетности операций.


11.2. Арифметические выражения

Используют числовые типы, арифметические операции и функции, возвращающие числовое значение.

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

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

Основные алгебраические операторы:

+ сложение

вычитание

* умножение

/ деление

div целочисленное деление двух чисел // только для целых чисел

mod остаток от целочисленного деления двух чисел // только для целых чисел


7 div 2 = 3 целая часть результата деления одного

числа ( 7 ) на другое ( 2 )

7 mod 2 = 1 остаток от деления одного числа ( 7 ) на

другое ( 2 )

Унарные арифметические операции:

+ сохранение знака и

 отрицание знака относятся к знаку числа и не меняют типа числа.


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

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

Функция

Значение

Abs(x)

Sqr(x)

| x |

x2

Sin(x)

Cos(x)

Arctan(x)

Exp(x)

Ln(x)

Sqrt(x)

Pi

Random

Random(x)

s
Угол задается

в радианах
inx

cosx

arctgx

ex

lnx

x

Число  (20цифр)

Случайное в диапазоне 0..1

Случайное в диапазоне 0..x-1

Величина пересчета угла А из градусов в радианы: А*Pi/180


Функции преобразования

Функция Значение

Chr(x)

IntToStr(x)

FloatToStr(x)

FloatToStrF(x,f,k,n)


StrToInt(s)

StrToFloat(s)

Round(x)

Trunc(x)

Frac(x)

Int(x)

Символ, код которого равен х

Строка, являющаяся изображением целого x

Строка, являющаяся изображением вещественного х

Строка, являющаяся изображением вещественного х, где f – формат, k – точность, n – количество цифр после десятичной точки.

Целое, изображением которого является строка s

Вещественное, изображением которого является строка s

Целое, полученное путем округления x до ближайшего целого

Целое, полеченное путем отбрасывания дробной части x

Дробная часть вещественного х

Целая часть вещественного х

Yх = ехln(Y).

Примеры использования функций:

 y:= (exp(x) + 1) / (exp(1/3*ln(p)) - abs(s*sqr(s) - 1));

Y = 2xcos(by) - 3ysin2(bx)  y:= exp(x*ln(2))*cos(b*y) - exp(y*ln(3))*sqr(sin(b*x));

N:= Round((x1-x2)/dx); //округление отношения (x1-x2)/dx

M:= Random(10); // случайные числа в диапазоне 0..9

C:= StrToInt(Edit1.Text); //преобразование текста в число (результат целочисленное)

A:=StrToFloat(Edit1.Text); //преобразование текста в число (результат вещественное)

Mes:= 'x= ' + FloatToStr(x); //текстовое отображение числа x

Label1.Caption:= 'x1= ' + FloatToStrF(x1,ffFixed,8,3);

//форматный вывод переменной x1:8:3 в метку Label1

11.4. Логические выражения

Результатом логического выражения является логическое значение true ( 1 ) или false ( 0 ).

Логические выражения могут содержать:
  • Логические константы true и false,
  • Логические переменные типа Boolean,
  • Операции сравнения (отношения),
  • Логические операции,
  • Круглые скобки.


Определены логические операции:

not отрицание ("НЕ")

or логическое сложение ("ИЛИ")

and логическое умножение ("И")

xor сложение по модулю 2 (“исключающее ИЛИ”)

shl логический сдвиг влево

shr логический сдвиг вправо

Примеры логических операций:

145 or 25 = 153 145 and 25 = 17 Shr = Shift Right на 3 бита

145 = 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 145 shr ( 3 ) = 18

25 = 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 145=1 0 0 1 0 0 0 1

-------------------- ------------------ 0001 0 0 1 0 0 0 1 

1 0 0 1 1 0 0 1 = 153 0 0 0 1 0 0 0 1 = 17 18 = 0 0 0 1 0 0 1 0  001

27 2423 20 27 20 24 21

Между двумя значениями, выражениями, переменными или константами используются операции сравнения:
  1. = равно 4. < меньше
  2. < > не равно 5. >= больше или равно
  3. > больше 6. <= меньше или равно


Результат операции сравнения всегда типа Boolean: False, если соответствующее отношение не имеет место и значение True, если соответствующее отношение имеет место.

Формат употребления:

Op1 <операция отношения> Op2 // Применяются для сравнения двух операндов

Примеры логических выражений:

X<10, x+ 5 >=y, ( x > a ) and ( x < b ), ( x<0 ) or ( x >= 5 )

Приоритет операций сравнения ниже, чем приоритет логических операций


11.5. Приоритеты операций
  1. Вычисления в ( ) // Сначала вычисления в самых внутренних ()
  2. Функции // Вычисление функции
  3. not унарные + / - // Отрицание операнда и добавление знака
  4. * / div mod and shl shr // Операции типа умножения
  5. +  or xor // Операции типа сложения

6. = <> < > <= >= // Операции типа сравнения

11.6. Строковые выражения

Результат выполнения строкового выражения является строка символов. Для строк применяют:


Операцию конкатенацию

Str3:=Str1+ Str2 // сцепление строк

// Например, при Str1 = ' 1234 ' и Str2 = ' 5678 ' получим

Str3 = ' 12345678 '

11.7. Ввод /вывод

Консоль – это монитор и клавиатура, рассматриваемые как единое устройство.

Процедуры ввода/вывода при работе с клавиатурой и дисплеем рассматриваются, как файлы с именами Input и Output, которые по умолчанию считаются открытыми.


Процедуры ввода с клавиатуры

Read(b1,b2,.. bn); // ввод с клавиатуры значений переменных в одной строке,

// разделенных пробелом

Read - читать,

b1,b2,.. bn - переменные.


Readln(b1, b2.. bn); // то же, но по завершении осуществляется переход к следующей

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

Readln; //пропуск одной строки при чтении.


Процедуры вывода на дисплей

Write(b1, b2, ... bn); // вывод данных на экран в соответствии со списком переменных

// или текст сообщений

Write - писать,

b1,b2, ... bn - переменные.


Writeln(b1, b2, ... bn); // то же, но по завершении осуществляется переход к

// следующей строке.

Writeln; //пропуск одной строки при выводе.


Форматный вывод на дисплей

Write(b:m); // для переменных типа integer – целого типа

b - имя переменной,

m - число позиций для значения.

Пример: write( 'x= ' , x:5 );  на экране монитора x= 25

5

Writeln(b:m:n); // для переменных типа real – вещественного типа

b - имя переменной,

m - число позиций для значения,

n - число позиций для дробной части.

Пример: write( 'x= ' , x:6:2 );  на экране монитора x= 1.73

6

2