Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
28_-_2_.doc
Скачиваний:
7
Добавлен:
25.09.2019
Размер:
2.83 Mб
Скачать

46. Внутреннее представление чисел с плавающей точкой.

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

Вещественное число в компьютерах Intel занимает от 4 до 10 смежных байт и имеет следующую структуру в памяти ПК:

З десь s - знаковый разряд числа; e - экспоненциальная часть (содержит двоичный порядок); m - мантисса числа. Если переписать число, записанное в памяти, то получим следующее число (-1)S * m(2) * 2e , а при переводе его из двоичного в десятичное получим обычную десятичную дробь.

Рассмотрим по порядку все типы вещественных чисел на этих компьютерах. В таблице указан размер полей этих структур:

47. Реализация алгоритма сортировки с применением метода "часового".

for i:=1 to N-1 do

begin

frag:=true;

for j:=1 to N-i do

begin

if a[j]>a[j+1] then

begin

S:=a[j+1];

a[j+1]:=a[j];

a[j]:=S;

frag := false;

end;

end;

if frag then break;

end;

ИЛИ

Procedure SMass;

begin {пусть массив упорядочен}

flag:= true; {установка флага в истину}

for i:= 1 to N - 1 do {проверка массива--}

if A[i] > A[i+1] then begin {если i-ый элемент больше (i+1)-го, то}

s:= A[i]; {меняем их местами}

A[i]:= A[i+1];

A[i+1]:= s;

flag:= false; {и флаг ставим в ложь, так как}

end; {порядок был нарушен}

{если были проведены перестановки, то заново проверяем массив, рекурсивно}

if flag = false then SMass; {вызывая эту же процедуру}

end;

48. Сортировка методом "пузырька".

for i:=1 to k-1 do     for j:=1 to k-i do        if mas[j]>mas[j+1] then            begin             a:=mas[j];             mas[j]:=mas[j+1];             mas[j+1]:=a;            end;

49. Алфавит языка, имена, числа, строки.

Алфавит: буквы, цифры, спец. символы.

Буквы – прописные буквы и некоторые приравненные к ним символы (@, #, &, _, !)

Спец символы:

* Знаки операции (+, -, *, /)

* Знаки операций сравнения ( >, <, >=, <=, <>, =)

* Операция присваивания :=

* Ограничители ( ( , [ , ] , ) , . , , , : , ; , ‘ , .. , ? )

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

Имена: идентификатор состоит из букв и цифр, начинается всегда с буквы. Слина единиц в стандарте не ограничена. Некоторые имена не могут быть более 8/16 символов. В современном – до 255 символов. Пробел – не имя.

Запрещены в качестве букв служебные слова и стандартные имена (sin, cos,…)

Числа. Десятичные числа. Целые и действительные (вещественные).

Числа – числовые константы.

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

Формы с плавающей точкой – дробные (-0,258E+01, -0.258*10e)

Терминальные или конечные символы заключаются в круглые или овальные.

Нетерминальные – в квадратные или треугольные.

Нетерминальные могут быть расшифрованы подробно и до терминальных.

Терминальные – из алфавита.

Нетерминальные – имя.

Строки (литерал, строковая константа) – последовательность цифр, символов, букв заключённых между двумя одинаковыми верхними апострафами.

‘литерал’

‘с”езд’ => с’езд

‘ “ ‘ => ‘