Слайд 1Переменные.
Переменные – это величины, обращение к которым производится по имени.
Предпочтительнее использовать осмысленные имена, что делает программу более доступной пониманию.
Любая константа, переменная, значение функции или выражение в Рascal характеризуются своим типом.
Слайд 2Простые типы
Простые типы: (базовые) порядковые и вещественные.
Порядковые типы – каждый
из них имеет конечное число значений, которые можно упорядочить, т.е.
можно присвоить порядковый номер значению.
Вещественные типы – имеют конечное число значений (т.к. запись числа в машине ограничена по числу значащих цифр), однако количество возможных значений столь велико, что сопоставить каждому из них целое число (т.е. присвоить №) невозможно.
Слайд 4Порядковые типы.
Целые типы. Диапазон значений целых типов зависит от
их внутреннего представления, которое может занимать 1, 2, 4 байта.
Слайд 5Пример: запись максимального числа типа Word (65535)
Единица в каждом m-ом
разряде соответствует числу . Сумма чисел во
всех разрядах и дает значение 65535.
В разделе описаний целые типы вводятся –
……..
var
a:integer; d:byte; c:word;
a:=-2356; d:=25; c:=1234;
Слайд 6Var
l,g:boolean;
Логический тип. Boolean.
Имеет всего два значения
– true, false (правда и ложь).
В разделе описаний Логический тип
вводится -
……..
Var
l,g:boolean;
l:=false; g: =true;
Слайд 7Перечисляемый тип. Задается упорядоченным набором тех значений, которые он может
получить. Объявление типа идет в разделе описаний паскалевской программы Каждое
значение именуется неким идентификатором и располагается в части описаний после оператора Type в списке, заключенном в круглые скобки.
Type
Month = (jan, feb, mar, apr, … dec);
Первый элемент в списке имеет порядковый номер равный нулю (№=0). Максимальная мощность перечисляемого типа равна 256.
Слайд 8
Type
Color = (black, white, red);
Days = (monday, tuesday, wednesday);
и
переменные
Var
Col:color;
Day:days;
col и day могут принимать
свои значения только из своего описанного типа, т.е. Col[0]:=monday недопустимо. Между перечисляемым типом и целыми числами существует взаимно однозначное соответствие. Внутреннее представление элемента перечисляемого типа, т.е. соответствующее ему целое число, определяется как ORD(black)=0, ORD(Monday)=0. Элементы двух различных перечислений имеют одинаковое внутреннее представление.
Слайд 9
Символьный тип. Значениями символьного типа CHAR является множество всех символов
ПЭВМ. Каждому символу присваивается целое число в диапазоне от 0
до 255. Это число есть код внутреннего представления символа. Для кодировки используется код ASCII Это семибитный код. Для хранения символа используется 8-битный байт, т.е. можно закодировать в два раза больше символов. На практике первые 0-127 кодовых номеров заняты стандартными символами ASCII, а вторая половина может меняться.
В разделе описаний Символьный тип вводится -
Var
B:char ;
…………….
B:=’s’;
Слайд 10Тип-диапазон. Это подмножество своего базового типа, задается границами своих значений
внутри базового типа.
Type
Digit = ’0’..’9’;
Dig2 = 48..57;
Days = (mo, tu, we, th, fr, sa, su); -перечисляемый тип.
Weekend = we..su;
Границы типа-диапазона разделяются символом «..».
Слайд 11Вещественный тип.
Вещественное число допускает запись в двух видах – с
фиксированной десятичной точкой и с плавающей десятичной точкой. Представление числа
с фиксированной десятичной точкой, определяется разрядностью машины. В записи числа задается количество десятичных знаков, отводимых под дробную часть числа, и общее количество десятичных знаков (включая десятичную точку).
Слайд 1219..29
В разделе описаний вещественный тип вводится -
Var
a,b: real;
……….
a:=1.325;
b:=0.28;
Слайд 13Структурированные типы
Структурированные типы данных - это массивы, записи, множества
и файлы. Переменная или константа СТД всегда имеет несколько компонент
(например, элементы массива). Каждый компонент может принадлежать какому-либо структурированному типу, что обеспечивает вложенность типов.
Слайд 14Массивы.
Массив - набор данных, характерной чертой которого является то,
что все компоненты его одного типа. Тип может быть любым.
Пример:
Type
Digit = array [0..9] of integer;
…………………..
Var
D: digit;
Слайд 15Записи
Структура данных, состоящих из фиксированного числа компонентов, называемых «поля
записи». Компоненты записи могут быть различного типа .Чтобы можно было
сослаться на соответствующий компонент записи, поля именуются.
Синтаксис объявления
<Имя_типа> = RECORD
<список полей>
END
<Имя_типа> - идентификатор
<список полей> - последовательность разделов записи, разделенных «;».
Каждый раздел записи состоит из нескольких идентификаторов, разделенных «,». За идентификатором (-ами) ставится «:» и описывается тип.
Слайд 16Type
BirthDay = record
Day, mounth: byte;
Year: word
End;
Var
a,b: BirthDay ;
…………
a.day:=27;
b.year:=1999;
------------------
Для вложенных полей строка удлиняется
Var
c: record
name:string;
bd: BirthDay
End;
……….
If c.bd.year=1950 then .....
Слайд 17Строки
Строки в Паскале имеют очень широкое применение и во
многом похожи на одномерный массив Array [0..N] of char. Отличие
заключается в том, что количество элементов в строке может меняться от 0 до N (т.е. нумерация элементов может быть только от 0 до N). Строка трактуется как цепочка символов. К любому символу в строке можно обратиться точно также как к элементу массива Array [0..N] of char. Нумерация начинается с нуля. Нулевой байт содержит текущую длину строки. Первый значащий символ имеет номер «1».
String [N] – объявляет строку из N символов
N<255 (по умолчанию N=255)
Слайд 18
Пример:
Var
St: string;
………….
…………..
St:=’Moscow’
………….
Writeln(st[5])
- результат «o» (идет обращение к пятому символу строки).
Слайд 19Совместимость и преобразование типов.
Два типа совместимы, если
-оба они есть один
и то же тип,
-оба они вещественные,
-оба они целые;
-один тип есть
тип-диапазон второго типа;
-оба они являются тип-диапазонами базового типа;
-оба они являются множествами одного базового типа.
Слайд 20 Пример:
ORD(10)→10
ORD(«правда»)→1
ORD(‘A’)
→65
TRUNC(12.35)=12
TRUNC(12.95)=12
ROUND(12.35)=12
ROUND(12.95)=13
INT(12.35)=12.
INT(12.95)=12.
FRAC(12.35)=0.35
FRAC(12.95)=0.95
Слайд 21
В Паскале есть целый ряд встроенных функций – сложения, копирования,
удаления и т.п. строк.
Преобразования числа типа REAL или INTEGER
в символьную строку.
Пусть X число типа REAL (например, 12.567) занимает общую длину поля – 6 разрядов, из них 3 разряда под дробную часть числа. Тогда перевод числа в строку будет иметь вид
Слайд 22
STR(X: , < дробную часть >,ST)
ST
– имя преобразованной переменной.
Пример:
Var
X:real;
{Пусть X=12.567}
St:string;
…………
str(X:6:3,st);
результат действия
st ’ 12.567’ – строка
Слайд 23
Операции отношений (=, , , =) над строками
выполняются посимвольно, слева направо с учетом внутренней кодировки символов. При
неравенстве длины строк отсутствующие символы дополняются значением CHR(0). Этот алгоритм позволяет осуществлять, например, упорядочение списка фамилий в алфавитном порядке и тому подобные операции.
Слайд 24Операции в Рascal
Все операции имеют свой приоритет действий.
Унарная
- not (boolean) отрицание;
Мультипликативная - *, /, div,
mod, and;
Аддитивная - +, -, or;
Отношения - =, <>, <, >, <=, >=.
Скобочные конструкции выполняются, начиная с внутренних скобок.
Оператор присваивания имеет вид «:=».
Слайд 25Действия над числами
Операция деления целых чисел имеет специальный символ «DIV».
a:
=5;
b: =3;
c: = a
div b. {c=1}.
Важен порядок записи действий:
1 div 3 *100 = 0
(1 div 3=0) и (0*100=0)
1*100 div 3 =33
(1*100=100) и (100 div 3=33).
Слайд 26Логические действия
И
ИЛИ
НЕ
Ложь
Правда
Слайд 27Встроенные математические функции.
ABS(x) - абсолютное значение
ARCTAN(x) - арктангенс
COS(x) -
косинус
SIN(x) - синус
EXP(x) - экспонента
LN(x) – натуральный логарифм
SQR(x)
– квадрат числа
SQTR(x) – корень из числа
Нет часто употребляемой функции возведения в степень
Слайд 28Генератор случайных чисел.
Генератор случайных чисел Random имеет две формы
написания –
Random
Random(N)
Первая форма записи соответствует получению вещественных чисел в диапазоне
от 0 до 1,
вторая – получению целых чисел в диапазоне от 0 до N.
В обоих случаях крайние значения
1 и N являются недостижимыми.
i:= random(10) - 5; - {целые,
диапазон от -5 до +5}
a:= random*10 - 5; - {вещественные
диапазон от -5 до +5 -}
Слайд 29Генератор случайных чисел (программа) выдает последовательность чисел в зависимости от
стартового числа.
Это всегда одна и та же последовательность псевдослучайных
чисел.
Чтобы получать другие последовательности чисел нужно изменить стартовое число.
Функция Randomize формирует новое стартовое число из текущих показаний часов.