Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инфра.doc
Скачиваний:
3
Добавлен:
01.03.2025
Размер:
464.9 Кб
Скачать
  1. Целый тип данных Turbo Pascal’e. Функции для работы с данными целого типа.

byte

1 байт

нет

0 .. 255 (0 .. 28-1)

word

2 байта

нет

0 .. 65535 (0 .. 216-1)

integer

2 байта

есть

-32768 .. 32767 (-215 .. 215-1)

shortint

1 байт

есть

-128 .. 127 (-27 .. 27-1)

longint

4 байта

есть

-2147483648 .. 2147483647

(-231 .. 231-1)

Тип

Размер

Знак

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

Операции с данными целого типа

сложение

+

вычитание

-

умножение

*

частное от деления

div

остаток от деления

mod

Операции отношения:

> < = <= >= <>

Поразрядные операции:

and, or, xor, not

Операции сдвига: shl, shr

Стандартные процедуры и функции (для переменных порядкового типа)

inc

inc(x) — увеличить х на 1

inc(x, 3) — увеличить х на 3

dec

dec(x) — уменьшить х на 1

dec (x, 3) — уменьшить х на 3

ord

ord(F) – вычисляет порядковый номер F

chr

Chr(N) – возвращает символ с порядковым номером N, где N : byte.

pred и succ

возвращают предыдущее и последующее значения соответственно

Low и High

возвращают наименьшее и наибольшее значения величин данного типа.

Имя процедуры

или функции

Пояснения

  1. Вещественный тип данных. Функции для работы с данными вещественного типа.

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

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

Точность числа определяется количеством бит, отведённых для записи мантиссы, а диапазон — количеством бит для записи порядка.

Функции для работы с данными вещественного типа

Имя

Описание

Примеры

Randomize

Исп. для генерирования случайных чисел.

 

Random

Random(N)

Равном. распр. случ. число [0;1] или [0;N]

 

Pi

Число “ПИ”

 

Trunc(x)

Отбрасывает дробную часть x

Tranc(-3.1) = -3

Tranc(5.9) = 5

Round(x)

Округление до ближайшего целого

Round(3.9)=4;

Round(6.5)=7;

Int(x)

Целая часть аргумента ( как в математике)

Int(0.95) = 0

Int(-1.3)= -2

Frac(x)

Дробная часть аргумента x =Int(x)+Frac(x)

Frac(2.7) = 0.7

Frac(-3.6)= 0.4

  1. Символьный типы данных. Функции для работы с данными символьного типа. Символьный тип

Этот тип данных, обозначаемый ключевым словом char, служит для представления любого символа из набора допустимых символов. Для хранения в памяти под каждый символ отводится 1 байт.

К символам можно применять операции отношения (<, <=, >,>=, =, <>), при этом сравниваются коды символов.

Примеры: Var s,t :char; ….. s:=‘f’; t:=‘w’; writeln(s<t); writeln(s>t)

Функции для работы с символьным типом данных.

Имя

Описание

Результат

ord

порядковый номер символа из таблицы ASCII

Целый: ord(A) = 64

chr

преобразование номера в символ таблицы ASCII

Символьный: Chr (64) = A

pred

предыдущий символ

символьный: Pred(S) = R

succ

последующий символ

Символьный: Succ(X) = Y

upcase

перевод в верхний регистр

символьный

  1. Процедуры ввода-вывода с консоли.

Ввод с Консоли

read(список); readln[(список)];

Список – последовательность имён, разделённых запятыми: Read (a,b);

Ввод значения каждой переменной выполняется так:

значение переменной выделяется как группа символов, расположенных между пробелами;

эти символы преобразуются во внутреннюю форму представления, соответствующую типу вводимой переменной;

значение записывается в ячейку памяти, определяемую именем переменной.

Вывод на консоль

write(список); writeln[(список)];

var n : integer;

b : real;

... n:=1; b:=4.12417; …

writeln(’Значение n = ’, n:3, ’ b = ’, b:5:2, sin(n) + b);

Правила формирования списка в процедуре вывода

Список вывода разделяется запятыми.

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

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

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

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

Под вещественное число отводится 17 позиций, 10 из них — под дробную часть.

Форматы могут быть выражениями целого типа.

  1. Перечисляемый тип и тип-диапазон.

Как происходит описание типов в программе?

type

имя_типа = описание_типа

...

var имя_переменной : имя_типа

Простые типы данных, определяемые программистом это:

Перечисляемый тип

Тип-диапазон

Перечисляемый тип данных

type

Имя_типа = (список имен констант);

type

Colors = (Black, Blue, Green, Cyan, Red, Magenta, Brown);

var m, n : Colors;

m := Blue; n := m;

Пояснение: ord(Green)=2; m:=Red; n:= succ(Magenta);

Интервальный тип данных

Type имя_типа = Const_1 .. Const_2

Type Hour = 0 .. 23; Min = 0..59;

Cent_20 = 1901 .. 2000;

Range = -100 .. 100;

Letters = ’a’ .. ’z’;

Degree = 0 .. 360;

var r : -100 .. 100; или var r : Range;

Var x:Letters; …

Write(High(x),Low(x));

  1. Массивы в Turbo Pascal’e.

Массив - это упорядоченная совокупность однотипных элементов, рассматриваемая как единое целое, снабжённая индексами. Доступ к элементу массива осуществляется указанием его индекса.

Описание типа Массив:

Type имя_типа_массива = array [тип_индексов]

of тип_элементов массива

Примеры описания массивов

type mas = array [1 .. 7] of real;

Color = array [byte] of mas;

A = array [1..10] of boolean;

Const n=50;

const K : mas = (1, 1.2, 1.4, 1.6, 1.8, 2.0, 2.2);

var с : mas;

a, b : array [1 .. n] of integer;

Y: array [char] of byte;

M:array[2..5] of string [4] ;

M[2]:=‘Неуд’; M[3]:=‘Удов’; M[4]:=‘Хор’; M[5]:=‘Отл’;

  1. Записи в Turbo Pascal’e.

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

Поля записи могут быть различных типов. Каждое поле имеет имя. Запись, как единое целое, занимает непрерывную область памяти.

описание поля записи: имя_поля : тип_поля;

Данные типа «запись» (примеры).

type cars = record

name : string [25];

price : real;

number : integer;

end;

var g1, g2 : cars;

tabl : array [1 .. 100] of cars;

student : record

name : string [30];

group : byte;

marks : array [1 .. 5] of byte;

end;

Как обратиться к полям записи?

<Имя_переменной>.<имя поля> := <выражение>

Stud.name:=‘Олег’;

Stud.gend:=‘M’;

Stud.kurs:=3; … и т.д.

  1. Строки в ТР.

В Паскале существует три типа строк:

  • стандартные (string);

  • определяемые программистом на основе string;

  • строки в динамической памяти.

Строка типа string может содержать до 255 символов.

Под каждый символ отводится по 1 байту, в котором хранится код символа. Еще один байт отводится под фактическую длину строки – это байт под номером 0. Т.е. для хранения данных типа string отводится 256 байт.

var sa : string; { строка стандартого типа }

Операции со строками

  • Присваивание

  • Конкатенация

  • Сравнение

  1. Файлы в Turbo Pascal’e; доступ к файлу. Инициация файла.

Файл – именованная область внешней памяти компьютера либо это логическое устройство – возможный приёмник или источник данных (CON, PRN, AUX,NUL).

В ТР используются три типа файлов:

Текстовые файлы

Типизированные файлы

Нетипизированные

VAR <имя_ФП1> : File of <тип>; - типизированный файл;

<имя_ФП2> : File; - нетипизирован. файл

<имя_ФП3> : TEXT; - текстовый файл

Доступ к содержимому файлов

Последовательный доступ – для тестовых файлов;

Прямой доступ – для типизированных и нетипизированных файлов; Все элементы, из которых состоит файл с прямым доступом, нумеруются от 0 до N; в конце файла. Находится специальный код =маркер конца файла.

Для файлов с прямым доступом вводится понятие

текущей длины – количество элементов файла.

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

Для чтения файл инициируется с помощью стандартной процедуры RESET:

RESET (<ф.п.>); Здесь <ф.п.> - файловая переменная.

При выполнении этой процедуры дисковый файл или логическое устройство подготавливается к чтению информации. В результате специальная переменная-указатель, связанная с этим файлом, будет указывать на начало файла, т.е. на компонент с порядковым номером 0.

Если делается попытка инициировать чтение из несуществующего файла, возникает ошибка периода исполнения, которая может быть сообщена программе ненулевым значением встроенной функции IORESULT типа WORD. Например, следующий фрагмент программы позволяет установить, существует ли требуемый файл на диске:

var

f : file of char;

begin

assign(f,'myfile.dat');

$I-} {Отключаем контроль ошибок ввода-вывода}

reset(f);

{$I+} {Включаем контроль ошибок ввода-вывода}

if IOResult <> 0 then

..... {Файл не существует}

else

..... {Файл существует}

end.

  1. Указатели Turbo Pascal’e. Правила использования указателей.

Переменные, предназначенные для хранения адресов областей памяти, называются указателями.

В указателе можно хранить адрес данных или адрес программного кода.

Адрес занимает четыре байта и хранится в виде двух слов, одно из которых определяет сегмент, второе — смещение.

Виды указателей

Указатели стандартные (var p : pointer)

Типизированные

type pword = ^word;

var pw : pword;

Операции с указателями:

присваивания; p1 := p2;

проверки на равенство и неравенство: if p1 = p2 then … или if p <> nil then …

Правила присваивания указателей

Любому указателю можно присвоить стандартную константу nil, которая означает, что указатель не ссылается на какую-либо конкретную ячейку памяти: p1 := nil;

Стандартные функции для работы с указателями:

seg(x) : word — возвращает адрес сегмента для х;

ofs(x) : word — возвращает смещение для х;

addr(x) : pointer – содержит адрес аргумента x;

cseg : word — возвращает значение регистра сегмента кода CS;

dseg : word — возвращает значение регистра сегмента данных DS;

ptr(seg, ofs : word) : pointer — по заданному сегменту и смещению формирует адрес типа pointer.

  1. Динамические структуры данных (списки).

ДСД – способ организации данных, при котором память распределяется во время работы программы по мере необходимости отдельными блоками, связь между, которыми осуществляется с помощью указателей; размещение данных происходит в динамической памяти. В отличие от массивов и записей ДСД могут занимать несмежные участки памяти.

Элемент любой ДСД состоит из двух частей:

  1. информационной;

  2. указателя;

Элемент ДС описывается в виде записи.

Линейные списки

Каждый элемент ЛС связан со следующим и, возможно, предыдущим. Каждый элемент ЛС содержит ключ – это часть поля данных. Ключ идентифицирует элемент

Можно выполнять следующие операции

начальное формирование списка;

добавление элемента в конец списка;

чтение элемента с заданным ключом;

вcтавка элемента в заданное место списка;

удаление элемента с заданным ключом;

сортировка списка по ключу

  1. Основные процедуры и функции для работы с файлами.

Файл – именованная область внешней памяти компьютера

либо это логическое устройство – возможный приёмник илил источник данных (CON, PRN, AUX,NUL).

Преобразование данных при работе с файлами.

Преобразования данных при чтении – записи типизированных и нетипизированных файлов не происходит. Данные имеют одинаковое представление как в памяти компьютера, так и при хранении в файле;

Доступ к содержимому файлов

Последовательный доступ – для тестовых файлов;

Прямой доступ – для типизированных и нетипизированных файлов;

Основные функции для работы с файлами

fp- файловая переменная

Close(fp) –закрыть файл;

Rename(fp,<Новое_имя>) – переименовать файл;

Erase(fp) – удаляет файл (сначала его надо закрыть);

Flush(fp) – запись всех изменений в файл на диске;

EOF(fp) – логическая функция = True, если достигнут конец файла, иначе EOF = False;

IOResalt – признак последней операции ввода-вывода. При успешном завершении IOResalt = 0.

  1. Операторы языка Turbo Pascale.: присваивания, составной. Оператор безусловного перехода.

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

переменная := выражение;

  • a := b + c;

  • x := 1;

  • x := x + 0.5;

Простейшие операторы ТР 7.0

Составной оператор:

Begin S1; S2; …. End;

Пустой оператор: ; ;

Безусловные операторы и функции:

Goto <метка> ;

Break – выход из цикла;

Exit – выход из подпрограммы;

Halt(n) – завершает работу программы с кодом = n

Операторы ветвления Turbo Pascale. (условные операторы). Оператор Case.

Операторы ветвления IF … then … else

If <выражение> then S1 else S2;

If <выражение> then S;

Операторы ветвления IF

sx:=1;

if x < 0 then sx := -1;

=======================================

if (a < b) and (a < d) then s:=‘left’

else if (a > b) and (a > d) then s:=‘right’

else s:=‘middle’

где расположена (.) a

Оператор выбора CASE

case выражение of

константы_1 : S1;

константы_2 : S2;

………..

константы_n : Sn;

[ else : S0; ]

end;

Пример (CASE)

Var a: byte;

……

case a of

4 : writeln(’4’);

5, 6 : writeln(’5 или 6’);

7 .. 12: writeln(’от 7 до 12’);

end;