Тип определяет для элемента программы: Объем памяти для размещения (по типу компилятор определяет размер памяти для размещения значений элемента). Допустимое множество операций над ними
Вид материала | Лекция |
СодержаниеЦелочисленные типы Литерные (Символьные) типы Логический тип Вещественные типы Строковые типы Круглые скобки Chr(x) IntToStr(x) Input и Output |
- Лекции по программированию на Паскале. Часть 5 >36. Динамическиепеременны е статической, 98.56kb.
- Программа «Ухо» / гоу впо томский государственный университет систем управления и радиоэлектроники, 661.04kb.
- Компьютерное моделирование электрических характеристик приборов спинтроники, 56.24kb.
- Лекция третья. Химические, 49.98kb.
- Лекция: Виртуальная память. Архитектурные средства поддержки виртуальной памяти, 156.96kb.
- Вкакой памяти сохраняются программы bios? Какая информация сохраняется в энергонезависимой, 5.13kb.
- Оптимизация подсистемы памяти ядра ос linux для вк эльбрус-3s с поддержкой numa, 72.52kb.
- Контроль за соблюдением требований, указанных в п. 3 Положения, осуществляет торговая, 145.36kb.
- Лекция № Распределение памяти. Динамические переменные, 73.48kb.
- Порядок перечисления денежных средств для проведения операций по обеспечению участия, 21.08kb.
Лекция 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
-------------------- ------------------ 0001 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
Между двумя значениями, выражениями, переменными или константами используются операции сравнения:
- = равно 4. < меньше
- < > не равно 5. >= больше или равно
- > больше 6. <= меньше или равно
Результат операции сравнения всегда типа Boolean: False, если соответствующее отношение не имеет место и значение True, если соответствующее отношение имеет место.
Формат употребления:
Op1 <операция отношения> Op2 // Применяются для сравнения двух операндов
Примеры логических выражений:
X<10, x+ 5 >=y, ( x > a ) and ( x < b ), ( x<0 ) or ( x >= 5 )
Приоритет операций сравнения ниже, чем приоритет логических операций
11.5. Приоритеты операций
- Вычисления в ( ) // Сначала вычисления в самых внутренних ()
- Функции // Вычисление функции
- not унарные + / - // Отрицание операнда и добавление знака
- * / div mod and shl shr // Операции типа умножения
- + 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
20>