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

Реферат Курсовая Конспект

ПРОСТЫЕ СТРУКТУРЫ ДАННЫХ

ПРОСТЫЕ СТРУКТУРЫ ДАННЫХ - раздел Образование,   ...

 

ПРОСТЫЕ СТРУКТУРЫ ДАННЫХ

зовыми структурами. Эти структуры служат основой для построения более сложных структур. В языках программирования простые струк- туры описываются простыми (базовыми) типами. К таким типам отно-

Числовые типы

Целые типы

объектов, являющихся дискретными по своей природе (т.е. счетное число объектов). ПРЕДСТАВЛЕНИЕ В ПАМЯТИ. Для представления чисел со знаком в

Вещественные типы

ческий), значения которых всегда сопоставляются с рядом целых чи- сел и, следовательно, представляются в памяти машины абсолютно точно, значение вещественных типов определяет число лишь с неко-

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

Над числовыми типами, как и над всеми другими, возможны

прежде всего четыре основных операции: создание, уничтожение, вы-

бор, обновление. Специфические операции над числовыми типами -

хорошо известные всем арифметические операции: сложение, вычита-

ние, умножение, деление. Операция возведения в степень в некото-

рых языках также является базовой и обозначается специальным сим-

волом или комбинацией символов (^ - в BASIC, ** - в PL/1), в дру-

гих - выполняется встроенными функциями (pow в C).

Обратим внимание на то, что операция деления по-разному вы-

полняется для целых и вещественных чисел. При делении целых чисел

дробная часть результата отбрасывается, как бы близка к 1 она ни

была. В связи с этим в языке PASCAL имеются даже разные обозначе-

ния для деления вещественных и целых чисел - операции "/" и

"div" соответственно. В других языках оба вида деления обознача-

ются одинаково, а тип деления определяется типом операндов. Для

целых операндов возможна еще одна операция - остаток от деления -

("mod" - в PASCAL, "%" - в C).

Еще одна группа операций над числовыми типами - операции

сравнения: "равно", "не равно", "больше", "меньше" и т.п. Сущест-

венно, что хотя операндами этих операций являются данные числовых

типов, результат их имеет логический тип - "истина" или "ложь".

Говоря об операциях сравнения, следует обратить внимание на осо-

бенность выполнения сравнений на равенство/неравенство веществен-

ных чисел. Поскольку эти числа представляются в памяти с некото-

рой (не абсолютной) точностью, сравнения их не всегда могут быть

абсолютно достоверны.

Поскольку одни и те же операции допустимы для разных число-

вых типов, возникает проблема арифметических выражений со смеше-

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

так как в реальных задачах выражения со смешанными типами встре-

чаются довольно часто. Поэтому большинство языков допускает выра-

жения, операнды которых имеют разные числовые типы, но обрабаты-

ваются такие выражения в разных языках по-разному. В языке PL/1,

например, все операнды выражения приводятся к одному типу - к ти-

пу той переменной, в которую будет записан результат, а затем уже

выражение вычисляется. В языке же C преобразование типов выполня-

ется в процессе вычисления выражения, при выполнении каждой от-

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

числяется с точностью самого точного участвующего в ней операнда.

Программист, использующий выражения со смешением типов, должен

точно знать правила их вычисления для выбранного языка.

Битовые типы

ся работа с отдельными двоичными разрядами данных. Чаще всего та- кие задачи возникают в системном программировании, когда, напри- мер, отдельный разряд связан с состоянием отдельного аппаратного

Логический тип

варительно объявленных констант false (ложь) или true (истина). Данные логического типа занимают один байт памяти. При этом значению false соответствует нулевое значение байта, а значению

Символьный тип

рого предопределенного множества. В большинстве современных пер- сональных ЭВМ этим множеством является ASCII (American Standard Code for Information Intechange - американский стандартный код

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

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

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

пов из уже существующих - ограничение допустимого диапазона зна- чений некоторого стандартного скалярного типа или рамок описанно- го перечислимого типа. Это ограничение определяется заданием ми-

Указатели

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

Физическая структура указателя

ратной архитектуры вычислительной системы. Рассмотрим в качестве примера структуру адреса в микропроцессоре i8086. Машинное слово этого процессора имеет размер 16 двоичных

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

типизированными и нетипизированными. При объявлении типизированного указателя определяется и тип объекта в памяти, адресуемого этим указателем. Так например, объ-

Операции над указателями.

Основными операциями, в которых участвуют указатели являются

присваивание, получение адреса, выборка.

Присваивание является двухместной операцией, оба операнда

которой - указатели. Как и для других типов, операция присваива-

ния копирует значение одного указателя в другой, в результате оба

указателя будут содержать один и тот же адрес памяти. Если оба

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

оба они должны указывать на объекты одного и того же типа.

Операция получения адреса - одноместная, ее операнд может

иметь любой тип, результатом является типизированный (в соответс-

твии с типом операнда) указатель, содержащий адрес объекта-опе-

ранда.

Операция выборки - одноместная, ее операндом является типи-

зированный (обязательно!) указатель, результат - данные, выбран-

ные из памяти по адресу, заданному операндом. Тип результата оп-

ределяется типом указателя-операнда.

Перечисленных операций достаточно для решения задач приклад-

ного программирования поэтому набор операций над указателями, до-

пустимых в языке Pascal, этим и ограничивается. Системное прог-

раммирование требует более гибкой работы с адресами, поэтому в

языке C доступны также операции адресной арифметики, которые опи-

сываются ниже.

К указателю можно прибавить целое число или вычесть из него

целое число. Поскольку память имеет линейную структуру, прибавле-

ние к адресу числа даст нам адрес области памяти, смещенной на

это число байт (или других единиц измерения) относительно исход-

ного адреса. Результат операций "указатель + целое", "указатель -

целое" имеет тип "указатель".

Можно вычесть один указатель из другого (оба указателя-опе-

ранда при этом должны иметь одинаковый тип). Результат такого вы-

читания будет иметь тип целого числа со знаком. Его значение по-

казывает на сколько байт (или других единиц измерения) один адрес

отстоит от другого в памяти.

Отметим, что сложение указателей не имеет смысла. Поскольку

программа разрабатывается в относительных адресах и при разных

своих выполнениях может размещаться в разных областях памяти,

сумма двух адресов в программе будет давать разные результаты при

разных выполнениях. Смещение же объектов внутри программы друг

относительно друга не зависит от адреса загрузки программы, поэ-

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

такая операция является допустимой.

Операции адресной арифметики выполняются только над типизи-

рованными указателями. Единицей измерения в адресной арифметике

является размер объекта, который указателем адресуется. Так, если

переменная ipt определена как указатель на целое число (int

*ipt), то выражение ipt+1 даст адрес, больший не на 1, а на коли-

чество байт в целом числе (в MS DOS - 2). Вычитание указателей

также дает в результате не количество байт, а количество объектов

данного типа, помещающихся в памяти между двумя адресами. Это

справедливо как для указателей на простые типы, так и для указа-

телей на сложные объекты, размеры которых составляют десятки,

сотни и более байт.

В связи с имеющимися в языке C расширенными средствами рабо-

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

указателей в этом языке. В C указатели любого типа могут быть

ближними (near) и дальними (far) или (huge). Эта дифференциация

связана с физической структурой адреса в i8086, которая была

рассмотрена выше. Ближние указатели представляют собой смещение в

текущем сегменте, для представления такого указателя достаточно

одного 16-разрядного слова. Дальние указатели представляются дву-

мя 16-разрядными словами - сегментом и смещением. Разница между

far или huge указателями состоит в том, что для первых адресная

арифметика работает только со смещением, не затрагивая сегментную

часть адреса, таким образом, операции адресной арифметики могут

изменять адрес в диапазоне не более 64 Кбайт; для вторых - в ад-

ресной арифметике участвует и сегментная часть, таким образом,

предел изменения адреса - 1 Мбайт.

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

только в системах программирования, работающих в среде MS DOS, в

современных же операционных системах, поддерживающих виртуальную

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

считать гигантскими.

 

– Конец работы –

Используемые теги: простые, структуры, данных0.059

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: ПРОСТЫЕ СТРУКТУРЫ ДАННЫХ

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Лекция 3. Формулы Шеннона и Хартли. Расчёт количества Информации. Кодирование символьных, графических и звуковых данных. Структуры данных
Информации Кодирование символьных графических и звуковых данных Структуры данных Формула... Log log... Основные свойства логарифмов...

КУРС ЛЕКЦИЙ ПО ИНФОРМАТИКЕ Тема: Базы данных, Банки Данных, Системы Управления Базами Данных — СУБД
ГОУ ВПО ВОЛОГОДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ Факультет промышленного менеджмента...

Общее понятие о базах данных. Основные понятия систем управления базами данных. Модели данных. 10
Сетевые технологии обработки данных Компоненты вычислительных сетей... Принципы организации и основные топологии вычислительных сетей Принципы... Сетевой сервис и сетевые стандарты Средства использования сетевых сервисов...

Информации. Кодирование символьных, графических и звуковых данных. Структуры данных
Информации Кодирование символьных графических и звуковых данных Структуры данных Формула... Log log... Основные свойства логарифмов...

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

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

Социальная структура. Тенденции изменения социальной структуры российского общества
Несмотря на то что в социологии этот термин получил распространение только в середине XX века структурный подход к изучению общества представлен уже… Наиболее серьезной проблемой стала резкая деформация стратификационной системы… Большинство исследователей отрицательно оценивает стратификационные изменения в российском обществе, происходившие в…

Структура базы данных
Использование данной БД предполагаетиспользование СУБД MS Access или FoxPro. Структура БДвыглядит следующим образом Abonent картотека абонентов…

Выделение объектов. Работа с объектами. Автоматизация ввода данных. Форматирование данных. Адресация ячеек. Присваивание имен ячейкам
Еще один способ выделения блока — щелкнуть на одной из угловых ячеек, а затем на противоположной по диагонали, удерживая при втором щелчке нажатой… Нужно выделить один из них, а при выделении каждого следующего удерживайте… Для выделения диапазона или группы диапазонов столбцов или строк используются те же способы, что и для выделения…

0.037
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам