Вопрос 1. Понятие информации, виды и способы ее передачи.



Мы поможем в написании ваших работ!


Мы поможем в написании ваших работ!



Мы поможем в написании ваших работ!


ЗНАЕТЕ ЛИ ВЫ?

Вопрос 1. Понятие информации, виды и способы ее передачи.



Вопрос 1. Понятие информации, виды и способы ее передачи.

Информация (от лат. informatio, разъяснение, изложение, осведомленность) — сведения о лицах, предметах, фактах, явлениях, событиях, реального мира не зависимо от их представления.

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

Однако можно лишь утверждать, что понятие ИНФОРМАЦИЯ предполагает наличие материального носителя информации, источника информации, передатчика информации, приемника и канала связи между источником и приемником.

 

Классификация информации

Информацию можно разделить на виды по различным критериям:

по способу восприятия:

Визуальная — воспринимаемая органами зрения.

Аудиальная — воспринимаемая органами слуха.

Тактильная — воспринимаемая тактильными рецепторами.

Обонятельная — воспринимаемая обонятельными рецепторами.

Вкусовая — воспринимаемая вкусовыми рецепторами.

по форме представления:

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

Числовая — в виде цифр и знаков, обозначающих математические действия.

Графическая — в виде изображений, предметов, графиков.

Звуковая — устная или в виде записи и передачи лексем языка аудиальным путём.

по назначению:

Массовая — содержит тривиальные сведения и оперирует набором понятий, понятным большей части социума.

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

Секретная — передаваемая узкому кругу лиц и по закрытым (защищённым) каналам.

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

по значению:

Актуальная — информация, ценная в данный момент времени.

Достоверная — информация, полученная без искажений.

Понятная — информация, выраженная на языке, понятном тому, кому она предназначена.

Полная — информация, достаточная для принятия правильного решения или понимания.

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

по истинности:

истинная

ложная.

Формы информации.

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

Знаками можно считать алфавит любого языка, знаки языка жестов, любые коды или шифры, нотные значки и т.д.

Процесс обработки информации предусматривает наличие носителя информации и средства передачи информации и обработки информации.

Информацию можно:

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

Информация может существовать в виде:

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

 

Вопрос 2.Задачи получения, передачи, преобразования и хранения информации.

1. Передача информации

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

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

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

Декодирующее устройство - устройство для преобразования кодированного сообщения в исходное.

Деятельность людей всегда связана с передачей информации.

Компьютер - это самое популярное средство для обработки, хранения и передачи информации.

2. Преобразование информации

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

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

3. Использование информации

Информация используется при принятии решений. Достоверность, полнота, объективность полученной информации обеспечат вам возможность принять правильное решение.

4.Хранение информации.

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

Носитель информации– среда для записи и хранения информации:

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

2) Волны различной природы (световая волна)

3) Акустические носители

4) Электромагнитные носители

5) Гравитационные носители

6) Вещество в различном состоянии

7) Компьютерные носители (магнитные диски, оптические диски, винчестер, флэш-карта)

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

Примерами упорядоченного хранения информации является записная книжка, оглавление в книге, словари, расписание, каталоги.

ИТАК, передача, обработка и хранение информации происходит в форме:

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

 

 

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

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

 

Состав операционной системы

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

1. Управление файловой системой. Процесс работы компьютера сводится к обмену файлами между устройствами. В операционной системе имеются программные модули, управляющие файловой системой.

2. Командный процессор. Специальная программа, которая запрашивает у пользователя команды и выполняет их.

3. Драйверы устройств. Специальные программы, которые обеспечивают управление работой устройств и согласование информационного обмена с другими устройствами, а также позволяют производить настройку некоторых параметров устройств. Технология «Plug ad Play» (подключай и играй) позволяет автоматизировать подключение к компьютеру новых устройств и обеспечивает их конфигурирование.

4. Графический интерфейс. Используется для упрощения работы пользователя.

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

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

Наиболее общим подходом к структуризации операционной системы является разделение всех ее модулей на две группы:

  1. Ядро – это модули, выполняющие основные функции ОС.
  2. Вспомогательные модули, выполняющие вспомогательные функции ОС. Одним из определяющих свойств ядра является работа в привилегированном режиме.

 

 

Структура компилятора

Процесс компиляции состоит из следующих этапов:

  1. Лексический анализ На этом этапе последовательность символов исходного файла преобразуется в последовательность лексем.
  2. Синтаксический анализ Последовательность лексем преобразуется в семантическое дерево.
  3. Оптимизация Выполняется удаление изличших конструкций и упрощение семантического дерева.
  4. Генерация кода. Семантическое дерево преобразуется в целевой язык.

 

Стадии работы компилятора

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


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

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

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

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

 

Вопрос 12. Требования к языкам программирования и их классификация.

Основные требования, предъявляемые к языкам программирования:

наглядность - использование в языке по возможности уже существующих символов, хорошо известных и понятных как программистам, так и пользователям ЭВМ;

единство - использование одних и тех же символов для обозначения одних и тех же или родственных понятий в разных частях алгоритма. Количество этих символов должно быть по возможности минимальным;

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

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

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

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

- высокое качество создаваемых программ (компактность и скорость выполнения);

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

- предсказуемость объектного кода и заказов памяти;

- для составления эффективных программ необходимо знать систему команд и особенностифункционирования данной ЭВМ;

- трудоемкость процесса составления программ ( особенно на машинных языках и ЯСК), плохо защищенного отпоявления ошибок;

- низкая скорость программирования;

- невозможность непосредственного использования программ, составленных на этих языках, на ЭВМдругих типов.

Машинно-ориентированные языки по степени автоматического программирования подразделяются на классы.

- Машинный язык

Отдельный компьютер имеет свой определенный Машинный язык (далее МЯ), ему предписывают выполнение указываемых операций над определяемыми ими операндами, поэтому МЯ является командным.

- Языки Символического Кодирования

Языки Символического Кодирования (далее ЯСК),так же, как и МЯ, являются командными. Однако коды операций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (часто используемых при написании программ) цифр, в ЯСК заменены на символы (идентификаторы), форма написания которых помогает программисту легче запоминать смысловое содержание операции. Это обеспечивает существенное уменьшение числа ошибок при составлении программ. Использование символических адресов – первый шаг к созданию ЯСК.

- Автокоды

Есть также языки, включающие в себя все возможности ЯСК, посредством расширенного введения макрокоманд - они называются Автокоды.

Макрокоманды обеспечивают передачу фактических параметров, которые в процессе трансляции вставляются в«остов» программы, превращая её в реальную машинную программу.

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

- Макрос

Язык, являющийся средством для замены последовательности символов описывающих выполнение требуемых действий ЭВМ наиболее сжатую форму - называется Макрос (средство замены).

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

Макрос одинаково может работать, как с программами, так и с данными.

 

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

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

-Проблемно – ориентированные языки

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

Фортран, Алгол – языки, созданные для решения математических задач;

-Универсальные языки

Универсальные языки были созданы для широкого круга задач: коммерческих, научных, моделирования и т.д.

-Диалоговые языки

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

Задачи: управление и описание алгоритмов решения задач..

Одним из примеров диалоговых языков является Бэйсик.

Бэйсик использует обозначения подобные обычным математическим выражениям. Многие операторы являются упрощенными вариантами операторов языка Фортран. Поэтому этот язык позволяет решать достаточно широкий круг задач.

-Непроцедурные языки

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

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

 

Рекурсивные структуры

1.4.1. Список

Список относится к особой группе структур - это так на­зы­ва­е­мые ре­курсивные структуры.

Приведем рекурсивное определение списка: Списком называется со­­во­купность

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

1.4.2. Набор

Другим примером рекурсивной структуры является структура на­бора, которая

определяется следующим образом: Набором называется совокупность связанных

элементов, каждый из которых может быть ли­бо атомом, либо набором. Атом

определяет "неделимый" элемент на­бора, предназначенный для хранения

элементарной порции ин­фор­ма­ции. Реализация наборов основана на

использовании разнородных списков.

1.4.3. Дерево

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

программировании - структура дерева. Деревом называется сово­купность

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

корень, при этом все остальные эле­мен­ты образуют поддеревья. Наиболее

широко используется струк­ту­ра бинарного дерева, все множество вершин

которого делится (по отношению к корню) на два подмножества - два поддерева

(левое и правое).

Примеры рекурсивных алгоритмов

6.1. Рисование дерева

6.2. Ханойские башни

6.3. Синтаксический анализ арифметических выражений

6.4. Быстрые сортировки

6.5. Произвольное количество вложенных циклов

6.6. Задачи на графах

6.7. Фракталы

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

В одной строке может стоять больше одной операции присваивания =.

Пример.

a=b=c=d=100;

Знак = всегда означает: "переменной слева присвоить значение, стоящее справа ". Операция выполняется справа налево. Поэтому первой значение 100 получает переменная d, затем с, b и а.

Знак присвоить может стоять даже внутри математического выражения:

value=5+(r=9-c)

Присваивание имеет более высокий приоритет, чем сложение и вычитание. Поэтому сначала переменной r будет присвоено значение 9-с. А затем переменная value получит значение 5+9-с.

Составное присваивание

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

Операция Пример Эквивалент
+ = B+ = 500; B= b+ 500;
- = С- = 50; C = с - 50;
* = D* = 1.2; D = d*1.2;
/ = F/ = 50; f = f/.50;
% = m% = 7; M = m% 7;

 

Преобразование типов

(тип данных) выражение

v=(double)age*f;

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

 

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

Операции Описание
= = Равно
> Больше
< Меньше
>= Больше или равно
<= Меньше или равно
!= Не равно

 

Операции инкремента (++) и декремента (-)

В языке C++ предусмотрены две уникальные операции, которые увеличивают или уменьшают значение переменной на 1.

Оператор Пример Описание Эквивалентное выражение
+ + i + +; Постфиксная i =i+1; или i+=1;
+ + + + i; Префиксная i =i+1; или i+=1;
- - i - -; Постфиксная i =i-1; или i-=1;
- - - - i; Префиксная i =i-1; или i-=1;

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

Операция sizeof

Имеет формат

sizeof данные

или

sizeof (тип данных)

Операция sizeof возвращает размер в байтах указанного в ней данного или типа данных.

Пример.

cout " "Размер типа float в байтах=\t" "sizeof (float)

Результат: 4.

Операция "запятая"

Дополнительная операция (,) не работает непосредственно с данными, а приводит к вычислению выражения слева направо. Эта операция позволяет Вам использовать в одной строке несколько выражений, разделенных запятой.

Оператор ?:

(Условие) ? (выражение1):(выражение2)

Если условие истинно, то выполняется выражение1, а если ложно, то выражение2.

Пример.

(а>b) ? (ans =10):(ans=25);

или

ans=(a>b)?(10):(25);

Если а>b, то переменная ans получается значение 10, иначе - значение 0.25

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

&, и

|,или

^ исключающее или

Логические бинарные операции ( &&-конъюнкция(И) и || дизъюнкция (или))

Унарные операции:

& - операция получения адреса операнда

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

- - унарный минус- изменяет знак арифметического операнда.

+ - унарный плюс (введен для симметрии с унарным минусом)

! – логическое отрицание значения операнда.

++ - увеличение на единицу ( инкремент или автоувеличение):

префиксная операция – увеличение значения операнда на 1 до его использования

постфиксная операция – увеличение значения операнда на 1 после его использования.

Операнд не может быть константой.

-- - уменьшение на 1 (декремент)

sizeof – операция вычисления размера( в байтах) для объекта того типа, который имеет операнд.

Бинарные операции:

- Аддитивные (+- сложение арифметических операндов, - вычитание арифметических операндов)

- Мультипликативные (* - умножение операндов арифметического типа, / - деление операндов арифметического типа, %- получение остатка от деления целочисленных операндов ( деление по модулю))

-Операции сдвига (<<- сдвиг влево битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого целочисленного операнда, >>- сдвиг вправо битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого целочисленного операнда)

-Операции отношения (сравнения) (> < <= >= != = =-равно)

-Логические бинарные операции ( &&-конъюнкция(И) и || дизъюнкция (или))

-Операции присваивания (=- присвоить значение выражения-операнда из правой части операнду левой части p=10.3 – 2*x, *= присвоить левой части произведение значений обоих операндов P*=2 эквивалентно P = P*2, /= P/=2.2-d эквивалентно P=P/ (2.2-d), %= N%3 эквивалентно N=N % 3;,+= присвоить операнду левой части сумму значений обоих операндов А+= В эквивалентно А=А+В, -= Х -=4.5 – z эквивалентно Х=Х – (4.2 – z),

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

Приоритеты операций задают последовательность вычислений в сложном выражении

 

Вопрос 26. Потоковый ввод и вывод информации в языке С++

Дело в том, что никакая полезная программа не может быть написана на языке С++ без привлечения библиотек, включаемых в конкретную среду (в компилятор) языка. Самая незаменимая из этих библиотек - библиотека ввода-вывода.

Потоки ввода-вывода

В соответствии с названием заголовочного файла iostream.h (stream - поток; "i" - сокращение от input - ввод; "o" - сокращение от output - вывод) описанные в этом файле средства ввода-вывода обеспечивают программиста механизмами для извлечения данных из потоков и для включения (внесения) данных в потоки. Поток определяется как последовательность байтов (символов) и с точки зрения программы не зависит от тех конкретных устройств (файл на диске, принтер, клавиатура, дисплей, стример и т.п.), с которыми ведется обмен данными. При обмене с потоком часто используется вспомогательный участок основной памяти - буфер потока.

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

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

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

• входные, из которых читается информация;

• выходные, в которые вводятся данные;

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

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

В соответствии с особенностями "устройства", к которому "присоединен" поток, потоки принято делить на

• стандартные,

• консольные,

• строковые и

• файловые.

В заключение перечислим отличительные особенности применения механизма потоков. Потоки обеспечивают:

• буферизацию при обменах с внешними устройствами;

• независимость программы от файловой системы конкретной операционной системы;

• контроль типов передаваемых данных;

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

Под вводом-выводом в программировании понимается процесс обмена информацией между оперативной памятью и внешними устройствами: клавиатурой, дисплеем, магнитными накопителями и т. п. Ввод — это занесение информации с внешних устройств в оперативную память, а вывод — вынос информации из оперативной памяти на внешние устройства. Такие устройства, как дисплей и принтер, предназначены только для вывода; клавиатура — устройство ввода. Магнитные накопители (диски, ленты) используются как для ввода, так и для вывода.

Основным понятием, связанным с информацией на внешних устройствах ЭВМ, является понятие файла. Всякая операция ввода-вывода трактуется как операция обмена с файлами: ввод — это чтение из файла в оперативную память; вывод — запись информации из оперативной памяти в файл. Поэтому вопрос об организации в языке программирования ввода-вывода сводится к вопросу об организации работы с файлами.

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

Аналогом понятия внутреннего файла в языках Си/Си++ является понятие потока. Отличие от файловой переменной Паскаля состоит в том, что потоку в Си не ставится в соответствие тип. Поток — это байтовая последовательность, передаваемая в процессе ввода-вывода.

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

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

 

Стрелочкой обозначен указатель файла, определяющий текущий байт файла. EOF является стандартной константой — признаком конца файла.

Стандартные потоки (istream, ostream, iostream) служат для работы с терминалом. Строковые потоки (istrstream, ostrstream, strstream) служат для ввода-вывода из строковых буферов, размещенных в памяти. Файловые потоки (ifstream, ofstream, fstream) служат для работы с файлами.

· ios базовый потоковый класс

· streambuf буферизация потоков

· istream потоки ввода

· ostream потоки вывода

· iostream двунаправленные потоки

· iostream_withassign поток с переопределенной операцией присваивания

· istrstream строковые потоки ввода

· ostrstream строковые потоки вывода

· strstream двунаправленные строковые потоки

· ifstream файловые потоки ввода

· ofstream файловые потоки вывода

· fstream двунаправленные файловые потоки

· Потоки для работы с файлами создаются как объекты следующих классов:

· ofstream - запись в файл;

· ifstream - чтение из файла;

· fstream - чтение/запись.

·

·

·

· Ввод/вывод в C++ осуществляется с помощью потоков библиотеки C++, доступных при подключении заголовочного файла iostream.h (в VC++.NET – объекта-заголовка iostream). Поток представляет собой объект какого-либо потокового класса.

· Потоковые классы сконструированы на основе базового класса ios:

· ios – базовый потоковый класс;

· istream – класс входных потоков;



Последнее изменение этой страницы: 2016-08-15; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.215.79.116 (0.036 с.)