Применение указателей

Обычно функция возвращает одно значение. А как вернуть больше одного? Рассмотрим код функции, которая меняет местами две переменные.

int swap(double a, double b) { double temp = a; a = b; b = temp;}

Пусть есть переменные x и y с некоторыми значениями. Если выполнить функцию, передав в нее x и y, окажется, что никакого обмена не произошло. И это правильно.

При вызове этой функции в стеке будут сохранены значения x и y. Далее a и b получат значения x и y. Будет выполнена перестановка. Затем функция завершится и значения x и y будут восстановлены из стека. Все по-честному.

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

void swap(double* a, double* b) { double temp = *a; *a = *b; *b = temp;}

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

swap(&x, &y);

Теперь в функцию передаются адреса. И работа ведется относительно переданных адресов.

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

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

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

Еще один важный случай, когда указатели крайне полезны — это передача большого объема данных.

Немного посчитаем.

Пусть нам нужно передать в функцию целое число типа int. Таким образом мы передаем в функцию sizeof(int) байт. Обычно это 4 байта (размер будет зависеть от архитектуры компьютера и компилятора). 4 байта — не так много. 4 байта уйдут в стек. Потому что имеет место передача по значению.

Теперь нам нужно передать 10 таких переменных. Это уже 40 байт. Тоже невелика задача.

Вообразим себя проектировщиками Большого Адронного Коллайдера. Вы отвечаете за безопасность системы. Именно вас окружают люди с недобрыми взглядами и факелами. Нужно показать им на модели, что конца света не будет. Для этого нужно передать в функцию collaiderModel(), скажем, 1 Гб данных. Представляете, сколько информации будет сохранено в стек? А скорее всего программа не даст вам стек такого объема без специальных манипуляций.

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

Указатели — это мощный инструмент. Указатели эффективны и быстры, но не слишком безопасны. Потому как вся ответственность за их использования ложится на разработчика. Разработчик — человек. А человеку свойственно ошибаться.

Ссылки

В языке C++ появился новый механизм работы с переменными — ссылки. Функция swap() была хороша, только не слишком удобно применять разыменование. С помощью ссылок функция swap() может выглядеть аккуратнее.

#include <stdio.h> void swap(double& a, double& b) { double temp = a; a = b; b = temp;}

А вызов функции тогда будет уже без взятия адреса переменных.

swap(x, y);

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

Ссылка — это указатель, с которым можно работать, как с обычной переменной.

Ссылка не может быть равна NULL. Указатель может. Ссылка не может быть непроинициализирована. Указатель может.

Для взятия адреса переменной и для объявления ссылки используется одинаковый символ — амперсанд. Но в случае взятия адреса & стоит в выражении, перед именем переменной. А в случае объявления ссылки — в объявлении, после объявления типа.

Использование ссылок и указателей — это очень широкая тема. Описание основ на этом закончим.

21) Информа́тика (от информация и автоматика) — наука о методах и процессах сбора, хранения, обработки, передачи, анализа и оценки информации, обеспечивающих возможность её использования для принятия решений[1]. Также, под информатикой понимают научно-практический подход к вычислению и его применениям, базирующийся на систематическом изучении целесообразности, структуры, выражения и механизации методических процедур (или алгоритмов), которые лежат в основе приобретения, представления, обработки, хранения, передачи и доступа к информации, будь то информация, кодируемая в виде битов в памяти компьютера или записанная в генах и белковых структурах в биологической клетке[2]. Она включает дисциплины, относящиеся к обработке информации в вычислительных машинах и вычислительных сетях: как абстрактные, вроде анализа алгоритмов, так и конкретные, например разработка языков программирования и протоколов передачи данных.

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

Информатизация была отмечена в первую очередь в странах Запада и США, а также в Японии (60-80-е годы XX века). Производству требовалось информационно обслуживание, направленное на обработку большого количества информации.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сбор информации

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

ависит конечный результат работы всей информационной системы.

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


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

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

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

Также применялись магнитная лента, гибкие диски (дискеты).

В настоящее время применяются жёсткие диски, компакт-диски, DVD, флеш-карты и др.


Процесс передачи

Информация передаётся в форме сообщений от некоторого источника информации к её приёмнику посредством канала связи между ними.

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

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

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

Сообщение от источника к приёмнику передаётся в материально-энергетической форме (электрический, световой, звуковой сигнал и т. д.) по каналу информации.

Человек воспринимает сообщение посредством органов чувств.

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

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

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

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

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

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

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

Для её представления применяется так называемый алфавитный способ [2].

Обработка информации

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

  • создавать;
  • передавать;
  • воспринимать;
  • использовать;
  • запоминать;
  • принимать;
  • копировать;
  • формализовать;
  • распространять;
  • преобразовывать;
  • комбинировать;
  • обрабатывать;
  • делить на части;
  • упрощать;
  • собирать;
  • хранить;
  • искать;
  • измерять;
  • разрушать и др.


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

Современные информационные технологии позволяют обрабатывать информацию централизованным и децентрализованным (т. е. распределённым) способами [4].


1. Централизованный способ

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


2. Децентрализованный способ

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


3. Смешанный способ

Характерны признаки двух способов одновременно (централизованный с частичной децентрализацией или децентрализованный с частичной централизацией).

23) Форма представления одной и той же информации может быть различной. Это зависит от цели, которую вы перед собой поставили. С подобными операциями вы сталкиваетесь на уроках математики и физики, когда представляете решение в разной форме. Например, решение задачи: "Найти значение математического выражения y = 5x+ 3, при x = -3; -2; -1; 0; 1; 2; 3" можно представить в табличной или графической форме. Для этого вы пользуетесь визуальными средствами представления информации: числами, таблицей, рисунком.

Таким образом, информацию можно представить в различной форме:

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

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

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

На уроках физики при рассмотрении какого-либо физического явления вы используете характерные для данного языка специальные символы, из которых составляете формулы. Формула - это слово на языке физики.

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

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

Мы уже знаем, что компьютер воспринимает всю информацию через нули и единички. Бит – это минимальная единица измерения информации, соответствующая одной двоичной цифре («0» или «1»).

Байт состоит из восьми бит. Используя один байт, можно закодировать один символ из 256 возможных (256 = 28). Таким образом, один байт равен одному символу, то есть 8 битам:

1 символ = 8 битам = 1 байту.

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

Таблица байтов:

1 байт = 8 бит

1 Кб (1 Килобайт) = 210 байт = 2*2*2*2*2*2*2*2*2*2 байт =
= 1024 байт (примерно 1 тысяча байт – 103 байт)

1 Мб (1 Мегабайт) = 220 байт = 1024 килобайт (примерно 1 миллион байт – 106байт)

1 Гб (1 Гигабайт) = 230 байт = 1024 мегабайт (примерно 1 миллиард байт – 109байт)

1 Тб (1 Терабайт) = 240 байт = 1024 гигабайт (примерно 1012 байт). Терабайт иногда называют тонна.

1 Пб (1 Петабайт) = 250 байт = 1024 терабайт (примерно 1015 байт).

1 Эксабайт = 260 байт = 1024 петабайт (примерно 1018 байт).

1 Зеттабайт = 270 байт = 1024 эксабайт (примерно 1021 байт).

1 Йоттабайт = 280 байт = 1024 зеттабайт (примерно 1024 байт).

В приведенной выше таблице степени двойки (210, 220, 230 и т.д.) являются точными значениями килобайт, мегабайт, гигабайт. А вот степени числа 10 (точнее, 103, 106, 109 и т.п.) будут уже приблизительными значениями, округленными в сторону уменьшения. Таким образом, 210 = 1024 байта представляет точное значение килобайта, а 103 = 1000 байт является приблизительным значением килобайта.

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

Ниже приводится таблица байтов с английскими сокращениями (в левой колонке):

1 Kb ~ 103 b = 10*10*10 b= 1000 b – килобайт

1 Mb ~ 106 b = 10*10*10*10*10*10 b = 1 000 000 b – мегабайт

1 Gb ~ 109 b – гигабайт

1 Tb ~ 1012 b – терабайт

1 Pb ~ 1015 b – петабайт

1 Eb ~ 1018 b – эксабайт

1 Zb ~ 1021 b – зеттабайт

1 Yb ~ 1024 b – йоттабайт

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

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

Понятно, что в таблице байтов можно и дальше добавлять нули, а точнее, степени к числу 10 таким образом: 1027, 1030, 1033 и так до бесконечности. Но зачем это надо? В принципе, пока хватает терабайт и петабайт. В будущем, возможно, уже мало будет и йоттабайта.

Напоследок парочка примеров по устройствам, на которые можно записать терабайты и гигабайты информации. Есть удобный «терабайтник» – внешний жесткий диск, который подключается через порт USB к компьютеру. На него можно записать терабайт информации. Особенно удобно для ноутбуков (где смена жесткого диска бывает проблематична) и для резервного копирования информации. Лучше заранее делать резервные копии информации, а не после того, как все пропало.

24) Архитектура ЭВМ

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

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

Фон Нейман не только выдвинул основополагающие принципы логического устройства ЭВМ, но и предложил ее структуру, представленную на рисунке.

Положения фон Неймана:

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

· Арифметико-логическое устройство – выполняет логические и арифметические действия, необходимые для переработки информации, хранящейся в памяти

· Управляющее устройство – обеспечивает управление и контроль всех устройств компьютера (управляющие сигналы указаны пунктирными стрелками)

· Данные, которые хранятся в запоминающем устройстве, представлены в двоичной форме

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

· Для ввода и вывода информации используются устройства ввода и вывода

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

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

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

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

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

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

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

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

25) Структурная схема и устройства ПК

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: