Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Операции, производимые с данными (Данные и их типы)

Содержание:

Введение

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

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

Данные – это зарегистрированные сигналы.

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

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

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

Цель работы – рассмотреть операции, производимые с данными.

Данные и их типы

Понятие данных

Данные – диалектическая составная часть информации. Они представляют собой зарегистрированные сигналы. При этом физический метод регистрации может быть любым: механическое перемещение физических тел, изменение их формы или параметров качества поверхности, изменение электрических, магнитных, оптических характеристик, химического состава и (или) характера химических связей, изменение состояния электронной системы и многое другое. В соответствии с методом регистрации данные могут храниться и транспортироваться на носителях различных видов [3, с.56].

Самым распространенным носителем данных, хотя и не самым экономичным, по-видимому, является бумага. На бумаге данные регистрируются путем изменения оптических характеристик ее поверхности. Изменение оптических свойств (изменение коэффициента отражения поверхности в определенном диапазоне длин волн) используется также в устройствах, осуществляющих запись лазерным лучом на пластмассовых носителях с отражающим покрытием (CD-ROM). В качестве носителей, использующих изменение магнитных свойств, можно назвать магнитные ленты и диски. Регистрация данных путем изменения химического состава поверхностных веществ носителя широко используется в фотографии. На биохимическом уровне происходит накопление и передача данных в живой природе.

Носители данных интересуют нас не сами по себе, а постольку, поскольку свойства информации весьма тесно связаны со свойствами ее носителей. Любой носитель можно характеризовать параметром разрешающей способности (количеством данных, записанных в принятой для носителя единице измерения) и динамическим диапазоном (логарифмическим отношением интенсивности амплитуд максимального и минимального регистрируемого сигналов). От этих свойств носителя нередко зависят такие свойства информации, как полнота, доступность и достоверность. Так, например, мы можем рассчитывать на то, что в базе данных, размещаемой на компакт-диске, проще обеспечить полноту информации, чем в аналогичной по назначению базе данных, размещенной на гибком магнитном диске, поскольку в первом случае плотность записи данных на единице длины дорожки намного выше. Для обычного потребителя доступность информации в книге заметно выше, чем той же информации на компакт-диске, поскольку не все потребители обладают необходимым оборудованием. И, наконец, известно, что визуальный эффект от просмотра слайда в проекторе намного больше, чем от просмотра аналогичной иллюстрации, напечатанной на бумаге, поскольку диапазон яркостных сигналов в проходящем свете на два-три порядка больше, чем в отраженном.

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

Типы данных

Понятие типа программного объекта образовалось постепенно из понятия типа, вошедшего в употребление для описания типов данных, над которыми выполняются операции в программе. На заре программирования типы данных определялись тем, какой машинный формат применялся для отображения данных. Программисты раньше говорили не о типе процессора и его частотных характеристиках, они говорили «Я работаю на машине с длиной слова 64 разряда». (Такой длиной слова обладали отечественные ЭВМ БЭСМ-6, в отличие от распространенных тогда копий с машин IBM/360, имеющих длину слова 32 разряда). Вскоре данные с плавающей точкой стали называть данными вещественного типа. Данным логического типа стали приписывать значения «истина» или «ложь», хотя они представлялись единицей или нулем в одном единичном разряде.

Современное понятие типа базируется на множестве значений, которые могут принимать переменные данного типа, и наборе операций, которые можно к ним применять [2, с.39].

Теперь перед нами встает вопрос: как правильно задать тип данных в программе, и каким образом типы данных можно представить в памяти машины? Прежде всего, следует различать классы типов данных. Самой важной отличительной чертой является структурность значений того или иного типа. Если значение не структурное, т.е. не распадается на компоненты, то оно называется скаляром. Остановимся вначале на таких типах.

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

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

Тип определяет:

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

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

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

Таблица 1

Типы данных

Тип

Описание

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

нат

натуральные числа

от 1 ДО — ∞

цел

целые числа

от — ∞ до + ∞

действ

действительные числа, десятичные дроби

от — ∞ до + ∞

лит

литерный (строковый)

любые символы или группы символов

лог

логический

истина, ложь

Целый тип (int)

Размер типа int не определяется стандартом, а зависит от компьютера и компилятора. Для 16-разрядного процессора под величины этого типа отводится 2 байта, для 32-разрядного – 4 байта.

Для точного определения количества байт следует написать тестовую программу и включить в нее операцию:

s=sizeof(int);

Значение переменной s будет равно количеству байт занимаемому объектами указанного в скобках типа. Для определения диапазона значений целого типа данных следует воспользоваться формулой:

http://progzad.ucoz.ru/_pu/1/12119503.gif  для знаковых типов (int – знаковый тип) и

http://progzad.ucoz.ru/_pu/1/26740917.gif  для беззнаковых (unsigned) типов.

Спецификатор short перед именем типа указывает компилятору, что под число требуется отвести 2 байта независимо от разрядности процессора. Спецификатор long означает, что целая величина будет занимать 4 байта. Таким образом, на 16-разрядном компьютере эквиваленты int и short int, а на 32-разрядном – int и long int.

Внутреннее представление величины целого типа – целое число в двоичном коде. При использовании спецификатора signed старший бит числа интерпретируется как знаковый (0 – положительное число, 1 – отрицательное). Спецификатор unsigned позволяет представлять только положительные числа, поскольку старший разряд рассматривается как часть кода числа. Таким образом, диапазон значений типа int зависит от спецификаторов.

По умолчанию все целочисленные типы считаются знаковыми, то есть спецификатор signed можно опускать.

Константам, встречающимся в программе, приписывается тот или иной тип в соответствии с их видом. Если этот тип по каким-либо причинам не уст-раивает программиста, он может явно указать требуемый тип с помощью суффиксов L, l (long) и U, u (unsigned). Например, константа 32L будет иметь тип long и занимать 4 байта. Можно использовать суффиксы L и U одновременно, например, Ox22UL или 05Lu.

Типы short int, long int, signed int и unsigned int можно сокращать до short, long, signed и unsigned соответственно.

Таблица 2

Алгоритмический язык

Тип

Описание

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

Использование

Integer

целые числа

от-32 768 до 32 767

Var%

Long

целые числа

от-2 147 483 648 до 2 147 483 647

Var&

Single

действительные числа

от -3.4*1038 до -1.4*10-45

0 и от 1.4*10-45 до 3.4*1038

Var!

Double

действительные числа

от -1.8*10308 до -4.9*10-324

0 и от 4.9*10-324 до 1.8*10308

Var #

String

набор символов

от 0 до приблизительно 2 миллиардов символов

Var$

Таблица 3

Бейсик

Тип

Описание

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

byte

короткое целое без знака

от 0 до 255

shortint

короткое целое со знаком

от-127 до 127

word

целое без знака

от 0 до 65536

integer

целое со знаком

от -32 768 до 32 767

longint

длинное целое

от -2 147 483 648 до 2 147 483 647

real

действительное

от -3.4*1038 до -1.4*10-45

0 и от 1.4*10-45 до 3.4*1038

double

двойное действительное

от -1.8*10308 до -4.9*10-324

0 и от 4.9*10-324 до 1.8*10308

char

символьное

один символ

string

строковое

до 255 символов

boolean

логическое

true (истина) и false (ложь)

Паскаль

Существуют и более сложные типы данных, например массив, связанные списки, структуры и прочее. Массив – упорядоченное множество величин одного типа. Массивы описываются следующим образом:

Алгоритмический язык:

<тип даниых> таб <имя массива>[<нижняя граница>:<верхняя граница>]

<тип данных> — один из базовых типов данных;

<имя массива> — идентификатор в соответствии с правилами языка;

<нижняя граница> — наименьший номер элемента в массиве;

<верхняя граница> — наибольший номер элемента в массиве.

Все элементы массива имеют свой номер, изменяющийся от <нижняя граница> до <верхняя граиица>.

Бейсик:

DIM <имя массива>(<верхняя граница>)

Первый элемент массива в Бейсике всегда имеет номер 0. Тип элементов определяется именем массива.

Паскаль:

<имя массивам:array (<нижняя граница>:<верхняя граница>] of <тип данных>;

Обращение к элементу массива производится по имени массива и номеру элемента:a (i) (Паскаль) или а(1) (Бейсик).

Массивы могут быть как одномерными (то есть иметь только одно измерение), так и многомерными. Двухмерный массив представляет собой таблицу, в которой первый номер обозначает ряд, а второй — столбец.

Литерный (char). Этот тип обозначает конечное упорядоченное множество литер. Помимо диапазонов чисел, следует определять набор литер, с помощью которых компьютер общается с внешним миром. Литерами из этого набора снабжаются все периферийные устройства (читающие и печатающие). Существует несколько общепринятых стандартов наборов литер:

  • Международной организации стандартов ISO - International Standards Organisation;
  • Американский стандартный код для обмена информацией ASCII - American Standard Code for Information Interchange
  • 8-ми и 7-ми битовые коды обмена информацией КОИ-8 и КОИ-7

Наиболее популярный ASCII код поддерживает 26 букв латинского алфавита, 10 десятичных арабских цифр, некоторое количество специальных литер, таких, как знаки пунктуации. Стандарт определяет 128 литер, подразделяющихся на печатаемые и управляющие. Управляющие литеры играют большую роль при передаче данных. Например, литеры Carriage Return и Line Feed обрабатываются всеми построчно печатающими устройствами. Оставшиеся 128 кодов от 128 до 255 могут определять коды национального языка. Существуют четыре варианта кодировки символов кириллицы. Стандартом de facto стал так называемый альтернативный вариант кодировки. Сейчас, когда отечественная промышленность перестала производить ЭВМ, проблемы нескольких стандартов стали не такими острыми. Хотя еще попадаются файлы с документацией, набранные в основном варианте кодировки. Тогда мы видим по преимуществу, не буквы, а символы псевдографики. А всего лишь несколько лет назад выпускаемые различными министерствами ПЭВМ (скопированные с одного и того же образца IBM PC XT) имели различные кодировки [4, с.58].

Отображение битов на множество литер называется кодом. Следовательно, каждой литере соответствует целое неотрицательной число. Таким образом, тип char можно интерпретировать как множество неотрицательных целых чисел в интервале от 0 до 255, или множество целых чисел в интервале от -128 до +127. Некоторые языки имеют функции преобразования из целого числа в литерное и наоборот (например, BASIC).

Лирическое отступление UNICODE.

Хорошо, когда национальная письменность соотносится с набором литер латинского алфавита. Например, на 26 латинских литер - 33 литеры кириллицы. А каково арабам, китайцам, японцам? Клинопись, иероглифы и языки, в которых столько букв, что одного байта для кодировки не хватает. Для поддержки подобных языков были созданы двухбайтовые наборы символов. Как всегда, было предложено несколько вариантов, и после непродолжительных мучений был выработан стандарт Unicode. Его первоначально разработали фирмы Apple и Xerox в 1988 году. В 1991г был создан консорциум, в который вошли основные производители Hardware и Software. Строки в Unicode просты и логичны. Все символы в них состоят из 16-битовых кодов. Следовательно. Можно закодировать 65536 символов. Этого достаточно даже для японской каны. В настоящее время кодовые позиции определены для нескольких языков и задействовано около 34000 кодов. Так что место для расширения есть. Кодовые позиции разбиты на группы:

0000 - 007F ASCII

0080 - 00FF Расширение ASCII (Latin 1)

0100 - 017F Европейские латинские

0180 - 01FF Расширенные латинские

0250 - 02AF Стандартные фонетические

02B0 - 02FF Модифицированные литеры

0300 - 03FF Общие диакритические знаки

0370 - 03FF Греческий

0400 - 04FF Кириллица

0530 - 058F Армянский

0590 - 05FF Еврейский

0600 - 06FF Арабский

0900 - 097F Деванагари

Около 29000 кодовых позиций пока не занято, но зарезервировано для будущего использования. Приблизительно 6000 позиций оставлено специально для программистов.

Операции с данными

Операции и их типы

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

В структуре возможных операций с данными можно выделить следующие основные [1, с.22]:

  • сбор данных – накопление информации с целью обеспечения достаточной полноты для принятия решений;
  • формализация данных – приведение данных, поступающих из разных источников, к одинаковой форме, чтобы сделать их сопоставимыми между собой, то есть повысить их уровень доступности;
  • фильтрация данных – отсеивание «лишних» данных, в которых нет необходимости для принятия решений; при этом должен уменьшаться уровень «шума», а достоверность и адекватность данных должны возрастать;
  • сортировка данных – упорядочение данных по заданному признаку с целью удобства использования; повышает доступность информации;
  • архивация данных – организация хранения данных в удобной и легкодоступной форме; служит для снижения экономических затрат по хранению данных и повышает общую надежность информационного процесса в целом;
  • защита данных – комплекс мер, направленных на предотвращение утраты, воспроизведения и модификации данных;
  • транспортировка данных – прием и передача (доставка и поставка) данных между удаленными участниками информационного процесса; при этом источник данных в информатике принято называть сервером, а потребителя – клиентом;
  • преобразование данных – перевод данных из одной формы в другую или из одной структуры в другую. Преобразование данных часто связано с изменением типа носителя, например книги можно хранить в обычной бумажной форме, но можно использовать для этого и электронную форму, и микрофотопленку. Необходимость в многократном преобразовании данных возникает также при их транспортировке, особенно если она осуществляется средствами, не предназначенными для транспортировки данного вида данных. В качестве примера можно упомянуть, что для транспортировки цифровых потоков данных по каналам телефонных сетей (которые изначально были ориентированы только на передачу аналоговых сигналов в узком диапазоне частот) необходимо преобразование цифровых данных в некое подобие звуковых сигналов, чем и занимаются специальные устройства – телефонные модемы.

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

Типовые операции с данными

С  каждым  типом данных  связан  набор  операций.  С числовыми  данными  употребляются  известные арифметические операции *, /, +, и операция %, возвращающая остаток  от деления операндов, например:

5 % 2

//

Вернет  1

5.2 % 2

//

Вернет  1

5.8 % 2

5.8 % "2-я строка"

//

//

Вернет  0

Также  вернет 0

Из  примеров  видно,  что  при  вычислении  результата  выражения с операцией  % числовые операнды округляются до  целых  значений  (если  второй  операнд  является нечисловым, то  он  прежде  приводится к  числовому типу),  а затем  вычисляется  остаток  от  деления  двух целых  чисел.

Операции с целыми числами (Integer)

Переменная N типа Integer удовлетворяет условию -32768<=N<=32767.
Если целое число больше этого значения, то оно должно быть описано либо как Longint, либо как вещественное.

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

Знак операции

Назначение

Приоритет

+

Сложение

2

-

Вычитание

2

*

Умножение

1

/

Деление

1

Div

Целое частное

1

Mod

Целый остаток

1

Функции, дающие целый результат

Функция

Тип аргумента

Назначение

Abs(x)

Х-целое

Модуль Х

Sqr(x)

Х-целое

Возведение в квадрат

Trunc(x)

Х-вещественное

Выделение целой части

Round(x)

Х-вещественное

Округление до целого

Succ(x)

Х-целое

Следующее за Х число

Pred(x)

Х-целое

Число перед Х

Frac(x)

Х- вещественное

Дробная часть Х, тип целый

Random(x)

Х-целое

Случайное число от 0 до Х-1

Randomize

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

Операции с вещественными числами (Real) 

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

Знак операции

Назначение

Приоритет

+

Сложение

2

-

Вычитание

2

*

Умножение

1

/

Деление

1

Функции, дающие вещественный результат 

Функция

Тип аргумента

Назначение

Sin(x)

Х-вещественное

Синус Х

Cos(x)

Х- вещественное

Косинус Х

sin(x)/cos(x)

Х-вещественное

Тангенс Х

Arctan(x)

Х-вещественное

Арктангенс Х

Ln(x)

Х- вещественное

Натуральный логарифм Х

Exp(x)

Х- вещественное

Экспонента числа Х

Sqrt(x)

Х- вещественное

Квадратный корень числа Х

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

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

Операция

Описание

Меньше

<=

Меньше или равно

Больше

>=

Больше или равно

=

Равно

<> 

Не равно

Операндами  операций  отношения  могут  быть  выражения числового или  символьного типа, а также  даты.  Причем типы операндов должны  совпадать. Например:

2 = 5

"Строка 2">"Строка 1" 2<’23.12.01′>

// Это ложь

// Это истина

// Это неверное выражение отношения, так как его

// операнды имеют разный тип

Также  операндами  операций  = и <>  могут быть  переменные агрегатного типа.  Например:

тЗнач1 = СоздатьОбъект("ТаблицаЗначений");

сСотр =  СоздатьОбъект("Справочник.Сотрудники");

тЗнач2 =тЗнач1;

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

если (тЗнач1 = тЗнач2) и (тЗнач1 = сСотр) тогда Сообщить("Да");

иначе

Сообщить("Нет"); конецЕсли;

Если  операция  отношения  выполняется  над  строками,  то  они  сравниваются  посимвольно  до  тех  пор,   пока   не  будут  обнаружены  несовпадающие  символы.  Они то и решат судьбу сравнения. Следует помнить, что символ сим_1  больше  сим_2,если код  символа сим_1 больше  кода  символа сим_1.  Если  строки-операнды операции  отношения имеют разную  длину и если есть необходимость продолжить сравнение символов  строк-операндов  (все предыдущие сравниваемые символы оказались равными), то  в   качестве  недостающего  символа более  короткой  строки  используется  символ с нулевым кодом.  Например:

"Строка" > "Строка 1"                    //            Это ложь

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

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

Над строками определены две операции:

1. Операция сцепления (+) применяется для сцепления нескольких строк в одну.

Например, 
SumStr := 'Турбо'+'Паскаль'+'7.0'

2. Операции отношения (=, <>, >, <, >=, <=) проводят сравнение двух строк слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией. Результат выполнения операций отношения над строками всегда имеет булевой тип.

Например, выражение 'MS-DOS'<'MS-Dos' имеет значение True

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

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

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

Допускается смешение в одном выражении операндов строкового и символьного типа.

К отдельным символам строки можно обратиться по номеру (индексу) данного символа в строке.

Например, чтобы обратиться к третьему символу строки SumStr надо записать SumStr[3]. Запись SumStr[0] дает значение текущей длины строки.

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

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

Program StringLength;

Var
  S : string; {макс. длина строки = 255}

Begin

  S:=''; {пустая строка}

  writeln (S,' ',SizeOf(S),' ',Length(S)); {размер=256, длина=0}
  S:='Пример длинной строки'; {присваиваем строке некоторое значение}

  writeln (S,' ',SizeOf(S),' ',Length(S)); {размер=256, длина=21}

  Delete(S,7,8); {удаляем из строки 8 символов, начиная с 7}

  writeln (S,' ',SizeOf(S),' ',Length(S)); {размер=256, длина=13}

  S:=S+' символов'; {добавляем к строке строку}

  writeln (S,' ',SizeOf(S),' ',Length(S)); {размер=256, длина=22}

End.

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

Program StringElements;

Var

  S : string; {макс. длина строки = 255}

Begin

  S:='ABCD'; {инициализация строки}

  writeln (S,' ',Length(S)); {вывод строки и ее длины}

  S[5] := 'E'; {присваивание элементу строки}

  writeln (S,' ',Length(S)); {ни сама строка, ни ее длина не изменились}

End.

Присваивание пятому элементу строки некоторого значения не изменяет длину строки, что подтверждает вывод на экран ее содержимого и длины (конечно само присваивание реально произошло, но на значение текущей длины строки в нулевом байте это никакого влияния не оказало). Работа с элементами строки без учета ее текущей длины и является ошибкой программиста. Посмотрите следующую программу:

Program StringElements2;

Var

  Str : string[26]; {длина строки = 26}

i : integer;

Begin

Str:='A'; 

  for i := 1 to 26 do

    Str[i] := Chr (Ord('A')+i-1);

  writeln(Str);

End.

Предполагается, что данная программа должна сформировать строку из 26 символов, содержимым которой является последовательность заглавных букв латинского алфавита. Однако вызов процедуры writeln показывает, что содержимым переменной Str будет строка из одного символа 'А'. Природа совершенной ошибки заключается в том, что присваивание значений элементам строки не влияет не текущую длину, которая была установлена равной 1 при первом присваивании. Поэтому правильной будет следующая программа:

Program stringElements3;

Var

  Str : string[26]; {длина строки = 26}

  i : integer;

Begin
  S:='';

  for i := 'A' to 'Z' do

    Str := Str + i;

  writeln(Str);

End

Операция конкатенации, как и все стандартные операции, работающие со строками, в отличие от поэлементного присваивания, изменяет длину строки, что дает корректный результат. Кроме того, вторая программа работает непосредственно с символами букв. Наконец, не следует забывать инициализировать строку перед ее заполнением (первый оператор программы). В противном случае, так как начальная длина строки является неопределенной, можно получить произвольный результат; не стоит рассчитывать на то, что в нулевом байте стоит ноль.

Переменные логического типа описываются посредством идентификатора Boolean. Они могут принимать только два значения - False (ложь) и True (истина). Описываются они также в разделе описания переменных.

Var
  Flag : Boolean;

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

В языке Турбо Паскаль имеются логические операции, применяемые к переменным логического типа. Это операции not, and, or и хor. В этой теме Вы рассмотрите три логические операции. Обозначения и результаты этих операций приведены в таблице. Рассмотрите ее.

Операция not (не) имеет один операнд и образует его логическое отрицание. Результат операции not есть False, если операнд истинен, и True, если операнд имеет значение ложь. Так,

not True  False (неправда есть ложь)

not False  True (не ложь есть правда)

Результат операции and (и) есть истина, только если оба ее операнда истинны, и ложь во всех других случаях.

Результат операции or (или) есть истина, если какой-либо из ее операндов истинен, и ложен только тогда, когда оба операнда ложны.

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

  • not
  • and, *, /, div, mod
  • or, +, -
  • операции отношения..

Заключение

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

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

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

Список использованной литературы

  1. Дайитбегов Д.М., Черноусов Е.А. Основы алгоритмизации и алгоритмические языки (второе издание). – М.: Финансы и статистика, 1992
  2. Иванова Г.С.Технологии программирования. – М.: Издательство МГТУ им. Н.Э.Баумана, 2002. – 320с.
  3. Йодан Э. Структурное проектирование и конструирование программ. – М: Мир, 1979
  4. Лэнгсам Й., Огенстайн М., Тененбаум А. Структуры данных для персональных ЭВМ. – М.: Мир, 1989
  5. Фаронов В.В. Turbo Pascal 7.0. Учебное пособие - М.: Нолидж,1998