
1.7 Серверы
Сервером называется мощный компьютер, выделенный из группы персональных компьютеров (или рабочих станций) для выполнения какой либо сервисной задачи без непосредственного участия человека. Сервер и рабочая станция могут иметь одинаковую аппаратную конфигурацию, так как различаются лишь по участию в своей работе человека за консолью.
На сервере хранятся большие объемы информации. К нему предъявляются повышенные требования по быстродействию и надежности работы. В сервере должна быть предусмотрена возможность резервирования всей хранимой информации.
По назначению серверы делят:
Сервер приложений для обработки запросов от всех станций и предоставления доступа к системным ресурсам
Файл-сервер(Data Server) — для работы с базами данных
Архивационный сервер(Storage Express System) для резервного копирования информации в многосерверных сетях
Факс-сервер(Net SatisFaxion) для для организации эффективной многоадресной факсимильной связи
Почтовый сервер(Mail Server) для организации э п
Сервер печати(Print Server) для эффективного использования системных принтеров.
Сервер телеконференций для обслуживания станций телеконференциями и новостями.
Любой компьютер может стать сервером, имея соответствующее ПО
1.8 Рабочие станции
Рабо́чая ста́нция (англ. workstation) — комплекс технических и программных средств, предназначенных для решения определенного круга задач.
1) Рабочая станция как место работы специалиста представляет собой полноценный компьютер или компьютерный терминал (устройства ввода-вывода, отделённые и часто удалённые от управляющего компьютера), набор необходимого ПО, по необходимости дополняемые вспомогательным оборудованием: печатающее устройство, внешнее устройство хранения данных на магнитных и/или оптических носителях, сканер штрих-кода и пр.
В отечественной литературе также использовался термин АРМ (автоматизированное рабочее место), но в более узком смысле, чем «рабочая станция».
2) Также термином «рабочая станция» обозначают компьютер в составе локальной вычислительной сети (ЛВС) по отношению к серверу. Компьютеры в локальной сети подразделяются на рабочие станции и серверы. На рабочих станциях пользователи решают прикладные задачи (работают в базах данных, создают документы, делают расчёты). Сервер обслуживает сеть и предоставляет собственные ресурсы всем узлам сети, в том числе и рабочим станциям.
Существуют достаточно устойчивые признаки конфигураций рабочих станций, предназначенных для решения определённого круга задач, что позволяет обособлять их в отдельный профессиональный подкласс: мультимедиа (обработка изображений, видео, звука), САПР, ГИС, полевая работа и пр. Каждый такой подкласс может иметь присущие ему особенности и уникальные компоненты (в скобках даны примеры областей использования): большой размер видеомонитора и/или несколько мониторов (САПР, ГИС, биржа), быстродействующая графическая плата (кинематограф и мультипликация, компьютерные игры), большой объём накопителей данных (фотограмметрия, мультипликация), наличие сканера (фотография), защищённое исполнение (вооружённые силы, полевые работы) и пр.
2.Программная конфигурация ПК. Функциональное назначение базового, системного, служебного и прикладного программного обеспечения.
2.1 Программное обеспечение
В основу работы компьютеров положен программный принцип управления, состоящий в том, что компьютер выполняет действия по заранее заданной программе. Этот принцип обеспечивает универсальность использования компьютера: в определенный момент времени решается задача соответственно выбранной программе. После ее завершения в память загружается другая программа и т.д.
Программа - это запись алгоритма решения задачи в виде последовательности команд или операторов языком, который понимает компьютер. Конечной целью любой компьютерной программы является управление аппаратными средствами.
Для нормального решения задач на компьютере нужно, чтобы программа была отлажена, не требовала доработок и имела соответствующую документацию. Поэтому, относительно работы на компьютере часто используют термин программное обеспечение (software), под которым понимают совокупность программ, процедур и правил, а также документации, касающихся функционирования системы обработки данных.
Программное и аппаратное обеспечение в компьютере работают в неразрывной связи и взаимодействии. Состав программного обеспечения вычислительной системы называется программной конфигурацией. Между программами существует взаимосвязь, то есть работа множества программ базируется на программах низшего уровня.
Междупрограммный интерфейс - это распределение программного обеспечения на несколько связанных между собою уровней. Уровни программного обеспечения представляют собой пирамиду, где каждый высший уровень базируется на программном обеспечении предшествующих уровней.
2.2 Базовый уровень
Базовый уровень является низшим уровнем программного обеспечения. Отвечает за взаимодействие с базовыми аппаратными средствами. Базовое программное обеспечение содержится в составе базового аппаратного обеспечения и сохраняется в специальных микросхемах постоянного запоминающего устройства (ПЗУ), образуя базовую систему ввода-вывода BIOS. Программы и данные записываются в ПЗУ на этапе производства и не могут быть изменены во время эксплуатации.
2.3 Системный уровень
Системный уровень - является переходным. Программы этого уровня обеспечивают взаимодействие других программ компьютера с программами базового уровня и непосредственно с аппаратным обеспечением. От программ этого уровня зависят эксплуатационные показатели всей вычислительной системы. При подсоединении к компьютеру нового оборудования, на системном уровне должна быть установлена программа, обеспечивающая для остальных программ взаимосвязь с устройством. Конкретные программы, предназначенные для взаимодействия с конкретными устройствами, называют драйверами.
Другой класс программ системного уровня отвечает за взаимодействие с пользователем. Благодаря ему, можно вводить данные в вычислительную систему, руководить ее работой и получать результат в удобной форме. Это средства обеспечения пользовательского интерфейса, от них зависит удобство и производительность работы с компьютером.
Совокупность программного обеспечения системного уровня образует ядро операционной системы компьютера. Наличие ядра операционной системы - это первое условие для возможности практической работы пользователя с вычислительной системой. Ядро операционной системы выполняет такие функции: управление памятью, процессами ввода-вывода, файловой системой, организация взаимодействия и диспетчеризация процессов, учет использования ресурсов, обработка команд и т.д.
2.4 Служебный уровень
Программы этого уровня взаимодействуют как с программами базового уровня, так и с программами системного уровня. Назначение служебных программ (утилит) состоит в автоматизации работ по проверке и настройки компьютерной системы, а также для улучшения функций системных программ. Некоторые служебные программы (программы обслуживания) сразу входят в состав операционной системы, дополняя ее ядро, но большинство являются внешними программами и расширяют функции операционной системы. То есть, в разработке служебных программ отслеживаются два направления: интеграция с операционной системой и автономное функционирование.
2.5 Классификация служебных программных средств
1. Диспетчеры файлов (файловые менеджеры). С их помощью выполняется большинство операций по обслуживанию файловой структуры: копирование, перемещение, переименование файлов, создание каталогов (папок), уничтожение объектов, поиск файлов и навигация в файловой структуре. Базовые программные средства содержатся в составе программ системного уровня и устанавливаются вместе с операционной системой
2. Средства сжатия данных (архиваторы). Предназначены для создания архивов. Архивные файлы имеют повышенную плотность записи информации и соответственно, эффективнее используют носители информации.
3. Средства диагностики. Предназначены для автоматизации процессов диагностики программного и аппаратного обеспечения. Их используют для исправления ошибок и для оптимизации работы компьютерной системы.
4. Программы инсталляции (установки). Предназначены для контроля за добавлением в текущую программную конфигурацию нового программного обеспечения. Они следят за состоянием и изменением окружающей программной среды, отслеживают и протоколируют образование новых связей, утерянных во время уничтожения определенных программ. Простые средства управления установлением и уничтожением программ содержатся в составе операционной системы, но могут использоваться и дополнительные служебные программы.
5. Средства коммуникации. Разрешают устанавливать соединение с удаленными компьютерами, передают сообщения электронной почты, пересылают факсимильные сообщения и т.п..
6. Средства просмотра и воспроизведения. Преимущественно, для работы с файлами, их необходимо загрузить в "родную" прикладную программу и внести необходимые исправления. Но, если редактирование не нужно, существуют универсальные средства для просмотра (в случае текста) или воспроизведения (в случае звука или видео) данных.
7. Средства компьютерной безопасности. К ним относятся средства пассивной и активной защиты данных от повреждения, несанкционированного доступа, просмотра и изменения данных. Средства пассивной защиты - это служебные программы, предназначенные для резервного копирования. Средства активной защиты применяют антивирусное программное обеспечение. Для защиты данных от несанкционированного доступа, их просмотра и изменения используют специальные системы, базирующиеся на криптографии.
2.6 Прикладной уровень
Программное обеспечение этого уровня представляет собой комплекс прикладных программ, с помощью которых выполняются конкретные задачи (производственных, творческих, развлекательных и учебных). Между прикладным и системным программным обеспечением существует тесная взаимосвязь. Универсальность вычислительной системы, доступность прикладных программ и широта функциональных возможностей компьютера непосредственно зависят от типа имеющейся операционной системы, системных средств, помещенных в ее ядро и взаимодействии комплекса человек-программа-оборудование.
2.7 Классификация прикладного программного обеспечения
1. Текстовые редакторы. Основные функции - это ввод и редактирование текстовых данных. Для операций ввода, вывода и хранения данных текстовые редакторы используют системное программное обеспечение. С этого класса прикладных программ начинают знакомство с программным обеспечением и на нем приобретают первые привычки работы с компьютером.
2. Текстовые процессоры. Разрешают форматировать, то есть оформлять текст. Основными средствами текстовых процессоров являются средства обеспечения взаимодействия текста, графики, таблиц и других объектов, составляющих готовый документ, а также средства автоматизации процессов редактирования и форматирования. Современный стиль работы с документами имеет два подхода: работа с бумажными документами и работа с электронными документами. Приемы и методы форматирования таких документов различаются между собой, но текстовые процессоры способны эффективно обрабатывать оба вида документов.
3. Графические редакторы. Широкий класс программ, предназначенных для создания и обработки графических изображений. Различают три категории:
-
растровые редакторы;
-
векторные редакторы;
-
3-D редакторы (трехмерная графика).
В растровых редакторах графический объект представлен в виде комбинации точек (растров), которые имеют свою яркость и цвет. Такой подход эффективный, когда графическое изображение имеет много цветов и информация про цвет элементов намного важнее, чем информация про их форму. Это характерно для фотографических и полиграфических изображений. Применяют для обработки изображений, создания фотоэффектов и художественных композиций.
Векторные редакторы отличаются способом представления данных изображения. Объектом является не точка, а линия. Каждая линия рассматривается, как математическая кривая ІІІ порядка и представлена формулой. Такое представление компактнее, чем растровое, данные занимают меньше места, но построение объекта сопровождается пересчетом параметров кривой в координаты экранного изображения, и соответственно, требует более мощных вычислительных систем. Широко применяются в рекламе, оформлении обложек полиграфических изданий.
Редакторы трехмерной графики используют для создания объемных композиций. Имеют две особенности: разрешают руководить свойствами поверхности в зависимости от свойств освещения, а также разрешают создавать объемную анимацию.
4. Системы управления базами данных (СУБД). Базой данных называют большие массивы данных, организованные в табличные структуры. Основные функции СУБД:
создание пустой структуры базы данных;
наличие средств ее заполнения или импорта данных из таблиц другой базы;
возможность доступа к данных, наличие средств поиска и фильтраци.
В связи с распространением сетевых технологий, от современных СУБД требуется возможность работы с отдаленными и распределенными ресурсами, которые находятся на серверах Интернета.
5. Электронные таблицы. Предоставляют комплексные средства для хранения разных типов данных и их обработки. Основной акцент смещен на преобразование данных, предоставлен широкий спектр методов для работы с числовыми данными. Основная особенность электронных таблиц состоит в автоматическом изменении содержимого всех ячеек при изменении отношений, заданных математическими или логическими формулами.
Широкое применение находят в бухгалтерском учете, анализе финансовых и торговых рынков, средствах обработки результатов экспериментов, то есть в автоматизации регулярно повторяемых вычислений больших объемов числовых данных.
6. Системы автоматизированного проектирования (CAD-системы). Предназначены для автоматизации проектно-конструкторских работ. Применяются в машиностроении, приборостроении, архитектуре. Кроме графических работ, разрешают проводить простые расчеты и выбор готовых конструктивных элементов из существующей базы данных.
Особенность CAD-систем состоит в автоматическом обеспечении на всех этапах проектирования технических условий, норм и правил. САПР являются необходимым компонентом для гибких производственных систем (ГВС) и автоматизированных систем управления технологическими процессами (АСУ ТП).
7. Настольные издательские системы. Автоматизируют процесс верстки полиграфических изданий. Издательские системы отличаются расширенными средствами управления взаимодействия текста с параметрами страницы и графическими объектами, но имеют более слабые возможности по автоматизации ввода и редактирования текста. Их целесообразно применять к документам, которые предварительно обработаны в текстовых процессорах и графических редакторах.
8. Редакторы HTML (Web-редакторы). Особый класс редакторов, объединяющих в себе возможности текстовых и графических редакторов. Предназначены для создания и редактирования Web-страниц Интернета. Программы этого класса можно использовать при подготовке электронных документов и мультимедийних изданий.
9. Браузеры (средства просмотра Web-документов). Программные средства предназначены для просмотра электронных документов, созданных в формате HTML. Восроизводят, кроме текста и графики, музыку, человеческий язык, радиопередачи, видеоконференции и разрешают работать с электронной почтой.
10. Системы автоматизированного перевода. Различают электронные словари и программы перевода языка.
Электронные словари - это средства для перевода отдельных слов в документе. Используются профессиональными переводчиками, которые самостоятельно переводят текст.
Программы автоматического перевода используют текст на одном языке и выдают текст на другом, то есть автоматизируют перевод. При автоматизированном переводе невозможно получить качественный исходный текст, поскольку все сводится к переводу отдельных лексических единиц. Но, для технического текста, этот барьер снижен.
Программы автоматического перевода целесообразно использовать:
при абсолютном незнании иностранного языка;
при необходимости быстрого ознакомления с документом;
для перевода на иностранный язык;
для создания черновика, который потом будет подправлен полноценным переводом.
11. Интегрированные системы делопроизводства. Средства для автоматизации рабочего места руководителя. В частности, это функции создания, редактирования и форматирования документов, централизация функций электронной почты, факсимильной и телефонной связи, диспетчеризация и мониторинг документооборота предприятия, координация работы подразделов, оптимизация административно-хозяйственной деятельности и поставка оперативной и справочной информации.
12. Бухгалтерские системы. Имеют функции текстовых, табличных редакторов и СУБД. Предназначены для автоматизации подготовки начальных бухгалтерских документов предприятия и их учета, регулярных отчетов по итогам производственной, хозяйственной и финансовой деятельности в форме, приемлемой для налоговых органов, внебюджетных фондов и органов статистического учета.
13. Финансовые аналитические системы. Используют в банковских и биржевых структурах. Разрешают контролировать и прогнозировать ситуацию на финансовых, торговых рынках и рынках сырья, выполнять анализ текущих событий, готовить отчеты.
14. Экспертные системы. Предназначены для анализа данных, содержащихся в базах знаний и выдачи результатов, при запросе пользователя. Такие системы используются, когда для принятия решения нужны широкие специальные знания. Используются в медицине, фармакологии, химии, юриспруденции. С использованием экспертных систем связана область науки, которая носит название инженерии знаний.
Инженеры знаний - это специалисты, являющиеся промежуточным звеном между разработчиками экспертных систем (программистами) и ведущими специалистами в конкретных областях науки и техники (экспертами).
15. Геоинформационные системы (ГИС). Предназначены для автоматизации картографических и геодезических работ на основе информации, полученной топографическим или аэрографическими методами.
16. Системы видеомонтажа. Предназначены для цифровой обработки видеоматериалов, монтажа, создания видеоэффектов, исправления дефектов, добавления звука, титров и субтитров. Отдельные категории представляют учебные, справочные и развлекательные системы и программы. Характерной особенностью являются повышенные требования к мультимедийной составляющей.
17. Инструментальные языки и системы программирования. Эти средства служат для разработки новых программ. Компьютер "понимает" и может выполнять программы в машинном коде. Каждая команда при этом имеет вид последовательности нулей и единиц. Писать программы на машинном языке крайне неудобно. Поэтому программы разрабатываются на языке, понятном человеку (инструментальный язык или алгоритмический язык программирования), после чего, специальной программой, которая называется транслятором, текст программы переводится (транслируется) на машинный код.
Трансляторы бывают двух типов:
интерпретаторы,
компиляторы.
Интерпретатор читает один оператор программы, анализирует его и сразу выполняет, после чего переходит к обработке следующего оператора.
Компилятор сначала читает, анализирует и переводит на машинный код всю программу и только после завершения всей трансляции эта программа выполняется.
Инструментальные языки делятся на языки низкого уровня (близкие к машинному языку) и языки высокого уровня (близкие к человеческим языкам). К языкам низкого уровня принадлежат ассемблеры, а высокого - Pascal, Basic, C/C++, языки баз данных и т.д. В систему программирования, кроме транслятора, входит текстовый редактор, компоновщик, библиотека стандартных программ, отладчик, визуальные средства автоматизации программирования. Примерами таких систем являются Delphi, Visual Basic, Visual C++, Visual FoxPro и др.
3. Области видимости переменных и функций в языке С.
3.1 Область видимости
Каждое имя в С++ программе должно относиться к уникальной сущности (объекту, функции, типу или шаблону). Это не значит, что оно встречается только один раз во всей программе: его можно повторно использовать для обозначения другой сущности, если только есть некоторый контекст, помогающий различить разные значения одного и того же имени. Контекстом, служащим для такого различения, служит область видимости. В С++ поддерживается три их типа: локальная область видимости, область видимости пространства имен и область видимости класса. Локальная область – это часть исходного текста программы, содержащаяся в определении функции (или в блоке). Любая функция имеет собственную такую часть, и каждая составная инструкция (или блок) внутри функции также представляет собой отдельную локальную область. Область видимости пространства имен – часть исходного текста программы, не содержащаяся внутри объявления или определения функции или определения класса. Самая внешняя часть называется глобальной областью видимости или глобальной областью видимости пространства имен. Объекты, функции, типы и шаблоны могут быть определены в глобальной области видимости. Программисту разрешено задать пользовательские пространства имен, заключенные внутри глобальной области с помощью определения пространства имен. Каждое такое пространство является отдельной областью видимости. Пользовательское пространство, как и глобальное, может содержать объявления и определения объектов, функций, типов и шаблонов, а также вложенные пользовательские пространства имен. Каждое определение класса представляет собой отдельную область видимости класса. Имя может обозначать различные сущности в зависимости от области видимости. В следующем фрагменте программы имя s1 относится к четырем разным сущностям:
#include <iostream>
#include <string>
// сравниваем s1 и s2 лексикографически
int lexicoCompare( const string &sl, const string &s2 ) { ... }
// сравниваем длины s1 и s2
int sizeCompare( const string &sl, const string &s2 ) { ... }
typedef int ( PFI)( const string &, const string & );
// сортируем массив строк
void sort( string *s1, string *s2, PFI compare =lexicoCompare )
{ ... }
string sl[10] = { "a", "light", "drizzle", "was", "falling",
"when", "they", "left", "the", "school" };
int main()
{
// вызов sort() со значением по умолчанию параметра compare
// s1 - глобальный массив
sort( s1, s1 + sizeof(s1)/sizeof(s1[0]) - 1 );
// выводим результат сортировки
for ( int i = 0; i < sizeof(s1) / sizeof(s1[0]); ++i )
cout << s1[ i ].c_str() << "\n\t";
}
Поскольку определения функций lexicoCompare(), sizeCompare() и sort() представляют собой различные области видимости и все они отличны от глобальной, в каждой из этих областей можно завести переменную с именем s1. Имя, введенное с помощью объявления, можно использовать от точки объявления до конца области видимости (включая вложенные области). Так, имя s1 параметра функции lexicoCompare() разрешается употреблять до конца ее области видимости, то есть до конца ее определения. Имя глобального массива s1 видимо с точки его объявления до конца исходного файла, включая вложенные области, такие, как определение функции main(). В общем случае имя должно обозначать одну сущность внутри одной области видимости. Если в предыдущем примере после объявления массива s1 добавить следующую строку, компилятор выдаст сообщение об ошибке:
void s1(); // ошибка: повторное объявление s1
Перегруженные функции являются исключением из правила: можно завести несколько одноименных функций в одной области видимости, если они отличаются списком параметров. В С++ имя должно быть объявлено до момента его первого использования в выражении. В противном случае компилятор выдаст сообщение об ошибке. Процесс сопоставления имени, используемого в выражении, с его объявлением называется разрешением. С помощью этого процесса имя получает конкретный смысл. Разрешение имени зависит от способа его употребления и от его области видимости. Мы рассмотрим этот процесс в различных контекстах. Области видимости и разрешение имен – понятия времени компиляции. Они применимы к отдельным частям текста программы. Компилятор интерпретирует текст программы согласно правилам областей видимости и правилам разрешения имен.
3.2 Локальная область видимости
Локальная область видимости – это часть исходного текста программы, содержащаяся в определении функции (или блоке внутри тела функции). Все функции имеют свои локальные области видимости. Каждая составная инструкция (или блок) внутри функции также представляет собой отдельную локальную область. Такие области могут быть вложенными. Например, следующее определение функции содержит два их уровня (функция выполняет двоичный поиск в отсортированном векторе целых чисел):
const int notFound = -1; // глобальная область видимости int binSearch( const vector<int> &vec, int val ) { // локальная область видимости: уровень #1 int low = 0; int high = vec.size() - 1; while ( low <= high ) { // локальная область видимости: уровень #2 int mid = ( low + high ) / 2; if ( val < vec[ mid ] ) high = mid - 1; else low = mid + 1; } return notFound; // локальная область видимости: уровень #1 }
Первая локальная область видимости – тело функции binSearch(). В ней объявлены параметры функции vec и val, а также переменные low и high. Цикл while внутри функции задает вложенную локальную область, в которой определена одна переменная mid. Параметры vec и val и переменные low и high видны во вложенной области. Глобальная область видимости включает в себя обе локальных. В ней определена одна целая константа notFound. Имена параметров функции vec и val принадлежат к первой локальной области видимости тела функции, и в ней использовать те же имена для других сущностей нельзя. Например:
int binSearch( const vector<int> &vec, int val )
{ // локальная область видимости: уровень #1
int val; // ошибка: неверное переопределение val
// ...
Имена параметров употребляются как внутри тела функции binSearch(), так и внутри вложенной области видимости цикла while. Параметры vec и val недоступны вне тела функции binSearch(). Разрешение имени в локальной области видимости происходит следующим образом: просматривается та область, где оно встретилось. Если объявление найдено, имя разрешено. Если нет, просматривается область видимости, включающая текущую. Этот процесс продолжается до тех пор, пока объявление не будет найдено либо не будет достигнута глобальная область видимости. Если и там имени нет, оно будет считаться ошибочным. Из-за порядка просмотра областей видимости в процессе разрешения имен объявление из внешней области может быть скрыто объявлением того же имени во вложенной области. Если бы в предыдущем примере переменная low была объявлена в глобальной области видимости перед определением функции binSearch(), то использование low в локальной области видимости цикла while все равно относилось бы к локальному объявлению, скрывающему глобальное:
int low; int binSearch( const vector<int> &vec, int val ) { // локальное объявление low // скрывает глобальное объявление int low = 0; // ... // low - локальная переменная while ( low <= high ) {//... } // ... }
Для некоторых инструкций языка C++ разрешено объявлять переменные внутри управляющей части. Например, в цикле for переменную можно определить внутри инструкции инициализации:
for ( int index = 0; index < vecSize; ++index )
{
// переменная index видна только здесь
if ( vec[ index ] == someValue )
break;
}
// ошибка: переменная index не видна
if ( index != vecSize ) // элемент найден
Подобные переменные видны только в локальной области самого цикла for и вложенных в него (это верно для стандарта С++, в предыдущих версиях языка поведение было иным). Компилятор рассматривает это объявление так же, как если бы оно было записано в виде:
// представление компилятора
{ // невидимый блок
int index = 0;
for ( ; index < vecSize; ++index )
{
// ...
}
}
Тем самым программисту запрещается применять управляющую переменную вне локальной области видимости цикла. Если нужно проверить index, чтобы определить, было ли найдено значение, то данный фрагмент кода следует переписать так:
int index = 0;
for ( ; index < vecSize; ++index )
{
// ...
}
// правильно: переменная index видна
if ( index != vecSize ) // элемент найден
Поскольку переменная, объявленная в инструкции инициализации цикла for, является локальной для цикла, то же самое имя допустимо использовать аналогичным образом и в других циклах, расположенных в данной локальной области видимости:
void fooBar( int *ia, int sz )
{
for (int i=0; i<sz; ++i) ... // правильно
for (int i=0; i<sz; ++i) ... // правильно, другое i
for (int i=0; i<sz; ++i) ... // правильно, другое i
}
Аналогично переменная может быть объявлена внутри условия инструкций if и switch, а также внутри условия циклов while и for. Например:
if ( int *pi = getValue() )
{
// pi != 0 -- *pi можно использовать здесь
int result = calc(*pi);
// ...
}
else
{
// здесь pi тоже видна
// pi == 0
cout << "ошибка: getValue() завершилась неудачно" << endl;
}
Переменные, определенные в условии инструкции if, как переменная pi, видны только внутри if и соответствующей части else, а также во вложенных областях. Значением условия является значение этой переменной, которое она получает в результате инициализации. Если pi равна 0 (нулевой указатель), условие ложно и выполняется ветвь else. Если pi инициализируется любым другим значением, условие истинно и выполняется ветвь if.
3.3 Глобальные объекты и функции
Объявление функции в глобальной области видимости вводит глобальную функцию, а объявление переменной – глобальный объект. Глобальный объект существует на протяжении всего времени выполнения программы. Время жизни глобального объекта начинается с момента запуска программы и заканчивается с ее завершением. Для того чтобы глобальную функцию можно было вызвать или взять ее адрес, она должна иметь определение. Любой глобальный объект, используемый в программе, должен быть определен, причем только один раз. Встроенные функции могут определяться несколько раз, если только все определения совпадают. Такое требование единственности или точного совпадения получило название правила одного определения (ПОО). В этом разделе мы покажем, как следует вводить глобальные объекты и функции в программе, чтобы ПОО соблюдалось.
4. Практическое задание.
Самое больше число.
Из цифр двух натуральных чисел составить наибольшее возможное число, сохраняя первоначальную последовательность чисел.
#include <iostream>
#include <cmath>
int Count(int ch)
{
int count = 0;
while(ch > 0)
{
ch /= 10;
++count;
}
return count;
}
int m
int main()
{
int first, second;
double result;
std::cin>>first;
std::cin>>second;
if(first > second)
{
result = second;
result += first * pow(10, Count(second));
}
else
{
result = first;
result += second * pow(10, Count(first));
}
std::cout<<result;
return 0;
}
Заключение
Компьютеры очень важны для современного общества. Без них жизнь была бы намного сложнее. Они везде: в самолетах, автомобилях, на тяжелых производствах, и даже в карманах некоторых из нас.
Наука не стоит на месте. Поэтому компьютерная техника будет развиваться. Человечество стоит на пороге 5 поколения ЭВМ. Развиваются карманные, мини, большие и суперкомпьютеры. Увеличивается их производительность, при уменьшении размеров.
С развитием техники мы будем видеть все новые виды компьютеров и будут появляться новые классы.
Список литературы
1.Учебник по информатике для 10-11, 7-9 классов. Автор: Макарова.
2.Учебник по информатике для вузов. Автор: А. Н. Степанов
3.Угринович Н. Д. «Информатика и информационные технологии»
4.Энциклопедия. Том 22. Информатика. Главный редактор Хлебалина Е.А., вед.научн. редактор А.Г. Леонов.
5.Основы информатики. Кузнецов А.А.
6.Информатика. Кушниренко А.Г.
7.Журнал «Наука и Жизнь» за апрель 2006
8.Журнал «Энергия промышленного роста» (ст. №1-2[13] январь - февраль 2007 )
9.Журнал «Мир ПК» №1 за 2000г
10. Учебник по информатике под редакцией С. В. Симоновича. Питер 2002г
11.Учебник по информатике под редакцией Э.Д. Романовой. 3-е издание переработанное и дополненное. Москва, «Эксмо» 2008г
12. Журнал «ТехСовет» № 11 (53) от 15 ноября 2007
7.Интернет- источники:
http://thl.narod.ru
http://www.computer-encyclopedia.ru
http://chernykh.net