- •Задание
- •Содержание
- •Введение
- •Теоретическая часть.
- •Типы данных языка Паскаль – простые и структурированные
- •Условный оператор If... Then. Формат, пример, блок–схема
- •Проверяемое условие (логическое выражение)
- •Использование оператора if-then-elsEодноуровневой структуры
- •Использование оператора if-then-elsEмногоуровневой структуры
- •Операторы цикла While .. .Do и Repeat.. .Until. Формат, пример, блок–схема
- •Классификация циклов Оператор цикла while (Цикл с предусловием)
- •Оператор цикла repeat (Цикл с постусловием)
- •Оператор цикла с фиксированным количеством повторов For. Формат, пример, блок–схема
- •Структура программы на языке Паскаль
- •Алгоритм сортировки одномерного массива методом «пузырька»
- •Пример сортировки методом пузырька
- •Сортировка методом пузырька
- •Блок–схема сортировки методом пузырька.
- •Практическая часть
- •3) Имеется 11 треугольных деталей, у которых известна сторона. Определить их площадь. Использовать для исходных данных и результата соответствующий массив. Оформить вывод в виде таблицы.
- •4) Создать массив из 10 записей с полями «наименование изделия», «цена». Вывести массив записей на экран в виде таблицы. Упорядочить массив по 1- му полю. Вывести результат.
- •Заключение
- •Список использованной литературы
Теоретическая часть.
Типы данных языка Паскаль – простые и структурированные
Используемые различные типы данных в PASCAL имеют огромное зна чение при программировании, т. к. определяют способы и алгоритмы обра ботки этих данных. Например, алгоритмы решения задач о палиндроме для целого числа и для строки строятся по-разному, хотя оба основаны на по следовательном просмотре.
Определим понятие формально: под типом данных понимается множество допустимых значений переменных, а также совокупность операций над ними.
В PASCAL 7.0 можно выделить следующие группы типов:
простые типы;
структурированные типы;
указатели;
процедурные типы;
объекты.
При программировании можно использовать как стандартные типы дан ных, не требующие предварительного определения, так и типы данных, оп ределяемые самим программистом
К стандартным типам относятся. . целые типы - SHORTINT, INTEGER, LONGINT, BYTE, WORD,
вещественные типы - REAL, SINGLE, DOUBLE, EXTENDED, COMP,
логические типы BOOLEAN,
символьный тип CHAR,
тип-строка - STRING,
ASCII-строка - PCHAR,
текстовый файл TEXT,
тип-указатель POINTER.
Все другие используемые типы должны быть определены либо в разделе объявления типов, либо в разделе объявления переменных или типизиро ванных констант
Раздел объявления типов начинается зарезервированным TYPE, после которого определяются вводимые типы Определение каждого нового типа начинается с идентификатора типа. За ним следует знак равенства, а да лее - само определение, завершающееся точкой с запятой:
TYPE
<имя типа 1> = <определение типа 1>;
<имя типа 2> = <определение типа 2>;
<имя типа М> = <определение типа М>;
Простые типы данных
Рассмотрим простые типы данных. Простой тип определяет упорядоченные значения переменной. К простым типам относятся.
целые типы;
логический тип;
перечисляемые типы,
тип-диапазон,
символьный тип;
вещественные типы
Все простые типы данных, кроме вещественных, называются порядко выми, и для них определены функции
DEC(N) - уменьшение N,
INC(N) - увеличение N,
ORD(N) - порядковый номер N,
ODD(N) - проверка N на четность;
PRED(N) - предшествующее значение N;
SUCC (N) - последующее значение N.
Например:
DEC(6) = 5, a INC(5) = 6. PRED('b') = 'a', SUCC('B') = 'C'.
Целые типы.В PASCAL 7.0 введено 5 стандартных целых типов, кото рые отличаются форматами и диапазонами допустимых значений.
|
Тип |
Значение |
Формат |
|
SHORTINT |
-128..127 |
Знаковый |
|
INTEGER |
-32768..32767 |
- // - |
|
LONGINT |
-2147483648..2147483647 |
- // - |
|
BYTE |
0..255 |
Беззнаковый |
|
WORD |
0..65535 |
- // - |
Для работы с целыми типами данных используются константы MAXINT, MININT и, помимо уже рассмотренных, следующие арифмети ческие функции, результат которых тоже целое число:
ABS(N) - абсолютная величина N;
A DIV В - целая часть от деления;
A MOD В - остаток от деления;
+ - сложение;
* - умножение;
- вычитание;
TRUNC(X) - получение целой части вещественного числа X;
ROUND(X) - округление до целого вещественного числа X;
SQR(N) - квадрат числа N.
Логические типы.Эти типы могут принимать только два значения: True -"истина" и False - "ложь". Про их значения известно, что
True > False
SUCC(False) = True
ORD(False) = 0
ORD(True) = 1
PRED(True) = False.
Для работы с логическими операндами введены логические функции:
NOT - отрицание;
OR - объединение, или логическое сложение;
AND - пересечение, или логическое умножение;
XOR - исключающее ИЛИ, или сложение по модулю 2.
Результат работы операций задается следующей таблицей истинности (таблицы значений):
|
А |
NOT A |
В |
NOT В |
A AND В |
A OR В |
A OR В |
|
False |
True |
False |
True |
False |
False |
False |
|
False |
True |
True |
False |
False |
True |
True |
|
True |
False |
False |
True |
False |
True |
True |
|
True |
False |
True |
False |
True |
True |
False |
Запомнить эту таблицу очень просто. Операция отрицания меняет зна чения операнда на противоположные. Для того чтобы результат операции логического умножения был истинен, все операнды должны быть истинны. Для того чтобы логическое сложение дало истину, нужно, чтобы хотя бы один операнд был истинен, а сложение по модулю 2 дает истину, только если операнды имеют разные значения. Иногда эту операцию называют выбором альтернативы или жегалкинским сложением (в честь известного русского математика И. И. Жегалкина).
Символьный тип.Стандартный символьный тип CHAR определяет пол ный набор ASCII-символов. В программе при задании символьных значе ний необходимо использовать апострофы:
Z := 'А';
Y := 'В';
Z := '9';
Функция ORD возвращает код соответствующего символа. Сравнивают ся величины символьного типа по своим кодам. Они упорядочены следую щим образом:
'А' < 'В' < ... < 'Z' 'а' < 'Ь' < ... < 'z' 'О' < 'Г < ... < '9' 'а' < 'б' < ... < 'я' 'А' < 'Б' < ... < 'Я'.
Перечисляемые типы.Перечисляемые типы определяются программи стом. Список идентификаторов указывается в круглых скобках, идентифи каторы разделяются запятыми:
TYPE
<имя типа> = (идентификатор 1, идентификатор 2,..., идентификатор N);
Важно, в каком порядке перечислены идентификаторы при определении типа. В списке первому идентификатору присваивается порядковый номер О, второму - 1 и т. д. Один и тот же идентификатор можно использовать в определении только одного перечисляемого типа. Функция ORD от вели чины перечисляемого типа дает порядковый номер ее значения.
Тип-диапазон.Задается начальным и конечным значениями, которые разделяются двумя точками:
TYPE
<имя типа> = <минимальное значение>...<максимальное значение>;
Например, для определения целых чисел в интервале от -10 до 10 мож но написать
TYPE
NUM=-10..10;
Вещественные типы.В PASCAL 7.0 определено 5 стандартных вещест венных типов, которые отличаются форматами и диапазонами допустимых значений:
|
Тип |
Значение |
Число значащих цифр |
|
REAL |
2,9*10-39..1,7*1038 |
11-12 |
|
SINGLE |
1,5*10-45..3,4*1038 |
7-8 |
|
DOUBLE |
5.0*10-324..1.7*10308 |
15-16 |
|
EXTENDED |
3,4* 10-4932.. 1.1*104932 |
19-20 |
|
COMP |
-263+1..263-1 |
19-20 |
Результат работы функций сложения, умножения, деления, вычитания и возведения в квадрат вещественных чисел дает вещественное число. Кроме этого, используются следующие функции, результат которых - веществен ное число:
|
Функция |
Назначение |
|
ABS(X) |
Абсолютное значение X |
|
ARCTAN(X) |
Арктангенс X |
|
COS(X) |
Косинус Х |
|
ЕХР(Х) |
ЕХ |
|
FRAC(X) |
Дробная часть Х |
|
INT(X) |
Целая часть Х |
|
LN(X) |
Натуральный логарифм |
|
PI |
Значение PI = 3.1415926535897932385 |
|
SIN(X) |
Синус Х |
|
SQR(X) |
Квадрат Х |
|
SQRT(X) |
Квадратный корень Х |
Структурированные типы данных
В языке PASCAL 7.0 используются следующие структурированные типы:
• массив;
• запись;
• множество;
• файл.
Массив.Он представляет собой заранее известное количество однотип ных компонентов, снабженных индексами. Массив может быть одномер ным или многомерным. Чтобы задать тип-массив, необходимо использо вать зарезервированное слово ARRAY, тип индексов массива и тип компо нентов массива.
Например, тип одномерного массива целых чисел может быть задан следующим образом:
TYPE
MAS = ARRAY[1..10] OF INTEGER;
VAR M1:MAS;
Тот же самый тип массива может быть задан и при определении соот ветствующих переменных:
VAR M1 : ARRAY[1..10] OF INTEGER;
Размерность массива может быть любой, компоненты тоже, только тип индексов должен быть обязательно порядковый и не Longint. В большинст ве случаев при задании размеров массивов используются диапазоны.
В PASCAL 7.0 тип двумерных массивов описывается так же, как и од номерных. Различие состоит в том, что вы должны указать диапазон для двух индексов массива - положение каждого элемента массива A [I, J] оп ределяется значением строки I и столбца J. Например, описание двумер ного массива натуральных чисел размера N х М может быть задано сле дующей строкой:
VAR MAS : ARRAY[1..N, 1..M] OF INTEGER;
Особым типом одномерных массивов являются строки. В PASCAL 7.0 последовательность символов, заключенная в апострофы, называется стро кой и описывается типом STRING:
'ASEWQ', 'zxczxczxc', ' хи-хи' и т. д.
Строки, состоящие всего из одного символа, называются символьными константами. У типа-строки может быть указан размер (от 1 до 255).
Для строк выполняются операции сравнения (>, >=,<,<=) и конкатенации (+), например:
'viv' < 'viva',
'мото' + 'цикл' = 'мотоцикл'.
По сути, строка длины К представляет собой массив из К+1 символь ных переменных, где нулевой элемент хранит значение длины строки:
STRING[K] = ARRAY[O..K] OF CHAR.
Для строк часто используется функция длины LENGTH(STR). В версии 7.0 введен еще один тип строки - ASCIIZ-строка. В отличие от прочих строк каждая из них оканчивается на 0 и длина ее не ограничена. Например, задать тип ASCIIZ-строки можно следующим образом:
VAR STR : PCHAR;
Запись.Она включает в себя несколько полей, тип которых может отли чаться друг от друга. Для задания записи используется зарезервированное слово RECORD, затем следует задание типов полей с использованием двое точия. Завершается каждое поле точкой с запятой. Конец описания записи определяется словом END. Например, для того, чтобы составить записи, соответствующие имени, фамилии и году рождения человека, можно ис пользовать следующее задание:
TYPE HUMAN = RECORD
NAME : STRING;
SURNAME : STRING;
DATA : INTEGER END;
Доступ к полям записи осуществляется через имя переменной и имя поля, записываемого через точку:
GUSEVA.NAME
GUSEVA.SURNAME
GUSEVA.DATA
Обработка записей производится с помощью оператора WITH:
WITH <имя записи> DO <оператор>;
Множество.Множество в PASCAL 7.0 должно состоять из порядковых элементов, и их число не должно превышать 255. Например:
TYPE
NUM = SET OF '0'..'9';
М = SET OF ['.', ',', '!', ':', ';', '?', '-'];
Те же самые множества знаков препинания и цифр могут быть заданы с помощью описания переменных:
VAR
М : SET OF CHAR;
BEGIN
М := [‘.’, ‘,’, ‘!’,’:’,’;’,’?’,’-‘]
NUM = ['O'..'9'J;
Для множеств используются следующие операции:
|
Операция |
Назначение |
|
+ |
Объединение множеств |
|
* |
Пересечение множеств |
|
- |
Разность множеств |
|
= |
Проверка на эквивалентность двух множеств |
|
<> |
Проверка на неэквивалентность двух множеств |
|
<= |
Проверка того, является ли левое множество подмножеством правого |
|
>= |
Проверка того, является ли правое множество подмножеством левого |
|
IN |
Проверка на принадлежность элемента данному множеству |
Результатом работы операций объединения, пересечения и разности являет ся новое множество. Результат работы остальных операций - логический.
Файл.Одним из типов данных в PASCAL является файловый тип, пред ставляющий собой последовательность однотипных компонентов, располо женных на внешнем носителе. Тип этих компонентов может быть любой, за исключением типа-файла. Размер файла не объявляется.
В PASCAL 7.0 имеется 3 категории файлов, работа с которыми отлича ется друг от друга:
текстовые (тип TEXT);
типизированные (FILE OF <тип>);
файлы без типа (FILE).
Например, можно объявить:
TYPE
NUM = FILE OF INTEGER;
YY = FILE;
VAR
F1,F2:NUM;
F3 :TEXT;
Указатели
Стандартный тип-указатель (POINTER) состоит из неограниченного множества значений, указывающих на однотипные элементы. Пустой ука затель NIL принадлежит всем типам указателей и не указывает ни на один элемент.
Над указателями возможны только операции проверки на равенство и неравенство. Тип-указатель необходим для динамических структур данных. С помощью его становится доступен физический адрес размещения в па мяти элементов.
Программист может использовать свой базовый тип и связать его с ука зателем. Например, для введения указателя на массив из 45 целых чисел можно объявить:
TYPE
МА = ARRAY[ 1..45] OF INTEGER;
POINT = МА;
