Совокупность приемов разделения и ограничения прав участников компьютерной сети называется политикой сети. Управление сетевыми политиками (их может быть несколько в одной сети) называется администрированием сети. Лицо, управляющее организацией работы участников локальной компьютерной сети, называется системным администратором. Группы сотрудников, работающих над одним проектом в рамках локальной сети, называются рабочими группами. Человек в компьютерной сети называется нетократом.
Создание локальных сетей характерно для отдельных предприятий или отдельных подразделений предприятий. Если предприятие (или отрасль) занимает обширную территорию, то отдельные локальные сети могут объединяться в глобальные сети. В этом случае локальные сети связывают между собой с помощью любых традиционных каналов связи (кабельных, спутниковых, радиорелейных и т. п.). При соблюдении специальных условий для этой цели могут быть использованы телефонные каналы, хотя они в наименьшей степени удовлетворяют требованиям цифровой связи. Устройство, обеспечивающее сохранение формы и амплитуды сигнала при передаче его на большее, чем предусмотрено данным типом физической передающей среды расстояние, называется повторителем или концентратором.
Для связи между собой нескольких сетей, работающих по разным протоколам, служат специальные средства, называемые шлюзами. Шлюзы могут быть как аппаратными, так и программными. Например, это может быть специальный компьютер (шлюзовый сервер), а может быть и компьютерная программа. В последнем случае компьютер может выполнять не только функцию шлюза, но и какие-то иные функции, типичные для рабочих станций. Шлюз, соединяющий две сети, которые используют одинаковые методы передачи данных, называется мостом. Устройство, обеспечивающее соединение административно независимых коммуникационных сетей, – это роутер.
При подключении локальной сети предприятия к глобальной сети важную роль играет понятие сетевой безопасности. В частности, должен быть ограничен доступ в локальную сеть для посторонних лиц извне, а также ограничен выход за пределы локальной сети для сотрудников предприятия, не имеющих соответствующих прав. Для обеспечения сетевой безопасности между локальной и глобальной сетью устанавливают так называемые брандмауэры. Брандмауэром может быть специальный компьютер или компьютерная программа, препятствующая несанкционированному перемещению данных между сетями (например, Outpost Firewall).
Процесс передачи данных по локальной сети определяют шесть компонент: компьютер – источник; блок протокола; передатчик; физическая кабельная сеть; приемник; компьютер – адресат. Компьютер – источник может быть рабочей станцией, файл-сервером, шлюзом или любым компьютером, подключенным к сети. Блок протокола состоит из набора микросхем и программного драйвера для платы сетевого интерфейса. Блок протокола отвечает за логику передачи по сети. Передатчик посылает электрический сигнал через физическую топологическую схему. Приемник распознает и принимает сигнал, передающийся по сети, и направляет его для преобразования в блок протокола, который проверяет данные на сбойность, передает «квитанцию» о приеме пакета источнику, переформировывает пакеты и передает их в компьютер – адресат. В ходе процесса передачи блок протокола управляет логикой передачи по сети через схему доступа.
В качестве физической кабельной сети в настоящее время обычно применяет четыре типа сетевых кабелей: 1) коаксиальный кабель; 2) незащищенная витая пара; 3) защищенная витая пара; 4) волоконно-оптический кабель (FDDI). Первые три типа кабелей передают электрический сигнал по медным проводникам. Волоконно-оптические кабели передают сигнал по стеклянному волокну, имеют наибольшую пропускную способность, считаются сегодня наиболее защищенными от несанкционированного доступа. Существуют варианты беспроводной сети: 1) беспроводная сеть Wi-Fi (уай-фай); 2) IrDA (ай-эр-ди-эй) – соединение двух устройств через инфракрасный порт (мобильный телефон – компьютер).
В локальных вычислительных сетях применяют следующую топологию линии связи: 1) кольцевую топологию локальной сети; 2) радиальную; 3) шинную; 4) древовидную. Топология сети определяется способом (схемой) соединения узлов сети каналами (кабелями) связи. От типа линии связи зависит ее пропускная способность
6.2. Основы компьютерной коммуникации
Согласно рекомендациям Международного института стандартизации ISO системы компьютерной связи рекомендуется рассматривать на семи разных уровнях:
1. На прикладном уровне с помощью специальных приложений пользователь создает документ (сообщение, рисунок и т. п.).
2. На уровне представления операционная система его компьютера фиксирует, где находятся созданные данные (в оперативной памяти, в файле на жестком диске и т. п.), и обеспечивает взаимодействие со следующим уровнем.
3. На сеансовом уровне компьютер пользователя взаимодействует с локальной или глобальной сетью. Протоколы этого уровня проверяют права пользователя на «выход в эфир» и передают документ к протоколам транспортного уровня.
4. На транспортном уровне документ преобразуется в ту форму, в которой положено передавать данные в используемой сети. Например, он может нарезаться на небольшие пакеты стандартного размера.
5. Сетевой уровень определяет маршрут движения данных в сети. Так, например, если на транспортном уровне данные были «нарезаны» на пакеты, то на сетевом уровне каждый пакет должен получить адрес, по которому он должен быть доставлен независимо от прочих пакетов.
6. Уровень соединения необходим для того, чтобы промодулировать сигналы, циркулирующие на физическом уровне, в соответствии с данными, полученными с сетевого уровня. Например, в компьютере эти функции выполняет сетевая карта или модем.
7. Реальная передача данных происходит на физическом уровне. Здесь нет ни документов, ни пакетов, ни даже байтов – только биты, то есть, элементарные единицы представления данных. Восстановление документа из них произойдет постепенно, при переходе с нижнего на верхний уровень на компьютере клиента. Средства физического уровня лежат за пределами компьютера. В локальных сетях это оборудование самой сети. При удаленной связи с использованием телефонных модемов это линии телефонной связи, коммутационное оборудование телефонных станций и т. п. На компьютере получателя информации происходит обратный процесс преобразования данных от битовых сигналов до документа.
В общем случае характеристиками процесса обмена данными в компьютерных сетях являются: а) режим передачи; б) кодирование данных; в) тип синхронизации.
6.3. Сетевой сервис и сетевые стандарты
Разные уровни протоколов сервера и клиента не связаны друг с другом напрямую, но они взаимодействуют через физический уровень. Это и создает эффект виртуального взаимодействия уровней между собой. На виртуальных соединениях основаны все службы Интернета, который представляет собой как бы «пространство», внутри которого осуществляется непрерывная циркуляция данных.
В дословном переводе на русский язык интернет – это межсеть или Всемирная компьютерная сеть. Интернет рассматривают как некое информационное пространство, объединяющее глобальные компьютерные сети. Днем рождения Итернета в современном понимании этого слова стала дата стандартизации протокола связи TCP/IP, лежащего в основе Всемирной сети по нынешний день. Здесь требуется уточнить, что в современном понимании TCP/IP – это не один сетевой протокол, а два протокола, лежащих на разных уровнях (это так называемый стек протоколов). Протокол TCP – протокол транспортного уровня. Он управляет тем, как происходит передача информации. Протокол IP – адресный. Он принадлежит сетевому уровню и определяет, куда происходит передача.
Согласно протоколу TCP, отправляемые данные «нарезаются» на небольшие пакеты, после чего каждый пакет маркируется таким образом, чтобы в нем были данные, необходимые для правильной сборки документа на компьютере получателя. Суть протокола IP (Internet Protocol) состоит в том, что у каждого участника Всемирной сети должен быть свой уникальный адрес (IP-адрес). Без этого нельзя говорить о точной доставке TCP-пакетов на нужное рабочее место. Этот адрес выражается четырьмя байтами, например: 195.38.46.11. Структура IP-адреса организована так, что каждый компьютер, через который проходит какой-либо TCP-пакет, может по этим четырем числам определить, кому из ближайших «соседей» надо переслать пакет, чтобы он оказался «ближе» к получателю. В результате конечного числа перебросок TCP-пакет достигает адресата. В данном случае оценивается не географическая «близость». В расчет принимаются условия связи и пропускная способность линии. Решением вопросов, что считать «ближе», а что «дальше», занимаются специальные средства – маршрутизаторы. Роль маршрутизатора в сети может выполнять как специализированный компьютер, так и специальная программа, работающая на узловом сервере сети.
Существуют несколько классов IP-адресов. Эти классы отличаются друг от друга количеством битов, отведенных на адрес сети и адрес хоста. Под хостом следует понимать не только компьютер в сети, но и вообще любое устройство, которое имеет свой сетевой адрес. При разработке структуры IP-адресов предполагалось, что они будут использоваться по разному назначению. Адреса класса «А» предназначены для использования в больших сетях общего пользования (16 777 214 узлов). Адреса класса «В» предназначены для использования в сетях среднего размера типа вузов (65 534 узла). Адреса класса «С» предназначены для использования в сетях с небольшим числом компьютеров (254 узла). Например: правильный адрес в сети класса «С» широковещательных сообщений – 1; адрес 127.0.0.1 используется для связи с самим собой.
Когда говорят о работе в Интернете или об использовании Интернета, то на самом деле речь идет не об Интернете в целом, а только об одной или нескольких из его многочисленных служб. В зависимости от конкретных целей и задач клиенты сети используют те службы, которые им необходимы. В простейшем понимании служба – это пара программ, взаимодействующих между собой согласно определенным правилам, называемым протоколами. Одна из программ этой пары называется сервером, а вторая – клиентом. Соответственно, когда говорят о работе служб Интернета, речь идет о взаимодействии серверного оборудования и программного обеспечения и клиентского оборудования и программного обеспечения. В широком смысле слова под клиентом понимают задачу, рабочую станцию или пользователя компьютерной сети.
Разные службы имеют разные протоколы. Протоколы служб Интернета называются прикладными протоколами. Их соблюдение обеспечивается и поддерживается работой специальных программ. Таким образом, чтобы воспользоваться какой-то из служб Интернета, необходимо установить на компьютере клиентскую программу, способную работать по протоколу данной службы, и подключить ее к серверной программе.
Служба Telnet. Она исторически является одной из ранних служб удаленного управления компьютером. Подключившись к удаленному компьютеру по протоколу этой службы можно управлять его работой. Такое управление еще называют консольным или терминальным.
Служба World Wide Web (WWW). Это самая популярная служба современного Интернета. Это единое информационное пространство, состоящее из взаимосвязанных электронных документов, хранящихся на Web-серверах. Отдельные документы, составляющие пространство Web, называют Web-страницами. Группы тематически объединенных Web-страниц называют Web-узлами. Программы для просмотра Web-страниц называют браузерами. Браузеры (например, «Internet Explorer», «Netscape Navigator») выполняют отображение документа на экране, руководствуясь командами, которые автор документа внедрил в его текст. Такие команды называются тегами. От обычного текста они отличаются тем, что заключены в угловые скобки. Правила записи тегов содержатся в спецификации особого языка разметки, близкого к языкам программирования. Он называется языком разметки гипертекста – HTML. Таким образом, Web-документ представляет собой обычный текстовый документ, размеченный тегами HTML. Такие документы также называют HTML-документами или документами в формате HTML. В отдельных случаях используется язык разметки гипертекста XML.
Гипертекстовая связь между сотнями миллионов документов, хранящихся на физических серверах Интернета, является основой существования логического пространства World Wide Web. Однако такая связь не могла бы существовать, если бы каждый документ в этом пространстве не обладал своим уникальным адресом. Раньше мы говорили об имени файла применительно к локальному компьютеру. Адрес любого файла во всемирном масштабе определяется унифицированным указателем ресурса – URL. Адрес URL состоит из 3-х частей:
1. Указание службы, которая осуществляет доступ к данному ресурсу (обозначается именем прикладного протокола, соответствующего данной службе. Для службы WWW прикладным является протокол HTTP – протокол передачи гипертекста (Hyper Text Transfer Protocol). После имени протокола ставится (:) и два знака «//» – http://.
2. Указание доменного имени компьютера (сервера), на котором хранится данный ресурс: http://WWW. abcde.com (доменное имя выделено курсивом).
3. Указания полного пути доступа к файлу на данном компьютере. В качестве разделителя используется символ «/» (косая черта): http://WWW. /Files/New/abcdefg.zip (путь доступа к файлу выделен курсивом).
Электронная почта (E-Mail). Ее обеспечением в Интернете занимаются специальные почтовые серверы. Почтовые серверы получают сообщения от клиентов и пересылают их по цепочке к почтовым серверам адресатов, где эти сообщения накапливаются. При установлении соединения между адресатом и его почтовым сервером происходит автоматическая передача поступивших сообщений на компьютер адресата. Существует большое разнообразие клиентских почтовых программ, например, Microsoft Outlook Express, The Bat!, Eudora Pro. Почтовая служба основана на трех прикладных протоколах: 1) SMTP – отправка корреспонденции с компьютера на сервер; 2) POP3 – прием поступивших сообщений. По протоколу IMAP осуществляется доступ к почтовому серверу.
Служба телеконференций (Usenet). Служба телеконференций похожа на циркулярную рассылку электронной почты, в ходе которой одно сообщение отправляется не одному корреспонденту, а большой группе (такие группы называются телеконференциями или группами новостей). Обычное сообщение электронной почты пересылается по узкой цепочке серверов от отправителя к получателю. При этом не предполагается его хранение на промежуточных серверах. Сообщения, направленные на сервер группы новостей, отправляются с него на все серверы, с которыми он связан, если на них данного сообщения еще нет. Далее процесс повторяется. Кроме того, в Internet существует система электронных досок объявлений, называемая BBS.
Служба имен доменов (DNS) – это вторая форма записи адреса одного и того же сетевого компьютера. Ранее мы записали, что адрес любого компьютера в Интернете может быть выражен 4-мя байтами. Противоречий здесь нет, поскольку это две формы записи адреса одного и того же сетевого компьютера. Человеку неудобно работать с числовым представлением IP-адреса, зато доменное имя запоминается легко, особенно если учесть, что это имя имеет конкретное содержание. Преобразование адреса URL в цифровую форму IP-адреса производит служба имен доменов DNS.
Служба передачи файлов (FTP). Прием и передача файлов составляют значительный процент от прочих Интернет-услуг. Необходимость в передаче файлов возникает, например, при приеме файлов программ, при пересылке крупных документов (например, книг), а также при передаче архивных файлов, в которых запакованы большие объемы информации. Служба FTP имеет свои серверы в мировой сети, на которых хранятся архивы данных. Со стороны клиента для работы с серверами FTP может быть установлено специальное программное обеспечение, хотя в большинстве случаев броузеры WWW обладают встроенными возможностями для работы и по протоколу FTP.
Система обмена мгновенными сообщениями (ICQ) – одно из самых популярных средств коммуникаций в Интернете, это своеобразный Интернет-пейджер.
6.4. Защита информации в Интернете
Для работы в Интернете необходимо: 1) физически подключить компьютер к одному из узлов Всемирной сети; 2) получить IP-адрес на постоянной или временной основе; 3) установить и настроить программное обеспечение – программы-клиенты тех служб Интернета, услугами которых предполагается пользоваться.
Организации, предоставляющие возможность подключения к своему узлу и выделяющие IP-адреса, называются поставщиками услуг Интернета (используется также термин сервис-провайдер). Физическое подключение может быть выделенным или коммутируемым. Для выделенного соединения необходимо проложить новую или арендовать готовую физическую линию связи (кабельную, оптоволоконную, радиоканал, спутниковый канал и т. п.). От типа линии связи зависит ее надежность, производительность и пропускная способность (измеряется в единицах бит в секунду). В настоящее время пропускная способность мощных линий связи с минимальной задержкой (оптоволоконных и спутниковых) составляет сотни мегабит в секунду (Мбит/с). В противоположность выделенному соединению коммутируемое соединение – временное. Оно не требует специальной линии связи и может быть осуществлено, например, по телефонной линии (для этой цели используется сетевой протокол РРР – протокол канального уровня, позволяющий использовать для выхода в Интернет обычные модемные линии). Коммутацию (подключение) выполняет автоматическая телефонная станция (АТС) по сигналам, выданным в момент набора телефонного номера.
Для телефонных линий связи характерна низкая пропускная способность. Различают аналоговые и цифровые телефонные линии. Пропускная способность аналоговых линий немногим более 30 Кбит/с (1…2 стр. текста в секунду). Пропускная способность цифровых телефонных линий составляет 60…120 Кбит/с, то есть в 2…4 раза выше. Для передачи цифровой информации несущие сигналы звуковой частоты модулируют по амплитуде, фазе и частоте. Такое преобразование выполняет специальное устройство – модем (название образовано от слов модулятор и демодулятор).
Поток сообщений в сети передачи данных определяется трафиком. Для системного и эффективного поиска информации в сети Интернет созданы поисковые системы (сервера), среди которых наибольшую популярность у пользователей приобрели «Rambler», «Yandex», «Google».
Начиная с 1999 года, Интернет становится мощным средством обеспечения розничного торгового оборота, а это требует защиты данных кредитных карт и других электронных платежных средств. Принципы защиты информации в Интернете опираются на определении: информация – это продукт взаимодействия данных и адекватных им методов. Если в ходе коммуникационного процесса данные передаются через открытые системы, то исключить доступ к ним посторонних лиц невозможно даже теоретически. Соответственно, системы защиты сосредоточены на втором компоненте информации – на методах. Их принцип действия основан на том, чтобы исключить или, по крайней мере, затруднить возможность подбора адекватного метода для преобразования данных в информацию. Одним из приемов такой защиты является шифрование данных (с помощью специального ключа). Если в процессе обмена информацией для шифрования и чтения пользуются одним и тем же ключом, то такой криптографический процесс является симметричным (крайне неудобный процесс).
В настоящее время в Интернете используют несимметричные криптографические системы, основанные на использовании не одного, а двух ключей (публичный и закрытый ключ). Это как бы две «половинки» одного целого ключа, связанные друг с другом. Создав пару ключей, торговая компания широко распространяет публичный ключ (открытую половинку) и надежно сохраняет закрытый ключ (свою половинку). На этом принципе основано создание электронно-цифровой подписи (ЭЦП) документа, которая формируется на основе самого документа и позволяет удостовериться в истинности отправителя и целостности сообщения.
Для безопасного использования ресурсов в сети Интернет предназначен протокол HTTPS (протокол безопасной передачи гипертекста). Например, безопасную передачу данных обеспечивает протокол Secure Sockets Layer (углубленный уровень обеспечения безопасности).
Примеры задач по локальным и глобальным сетям ЭВМ:
Задача № 1. Из перечисленных адресов: (http: //www. *****; http://www. *****; http: //www. *****; http: //www. *****) укажите адрес поисковой системы Internet… Ответ: «http: //www. *****».
Решение: см. на стр. 122.
Задача № 2. Какая часть адреса электронной почты «*****@» указывает имя пользователя… Ответ: «recect».
Решение: см. на стр. 120.
Задача № 3. Какая часть электронного адреса ресурса «http: //WWW. /inf/__/det. html» описывает протокол… Ответ: « http: //».
Решение: см. на стр. 120.
Задача № 4. Какая часть электронного адреса ресурса «http: //WWW. /inf/det. html» описывает путь к файлу, расположенному на сервере…… Ответ: «inf /det. html».
Решение: см. на стр. 120.
Глава 7. Технологии программирования.
Языки программирования высокого уровня
7.1. Этапы решения задач на компьютерах
Реализация метода на компьютере – это код, выполняемый для осуществления требуемой обработки информации. Управлять компьютером нужно по определенному алгоритму, обеспечивающему решение поставленной задачи моделирования за конечное число шагов. Для представления алгоритма в виде, понятном компьютеру, служат языки программирования – это формальный язык описания программ. Таким образом, программа – это описание алгоритма решения задачи, заданное на языке программирования, имеющем свой алфавит, грамматику, синтаксис и семантику. Алфавит – фиксированный для данного языка набор основных символов, допускаемых для составления текста программы на этом языке. Язык программирования является искусственным, в нем синтаксис и семантика строго определены. Поэтому он в отличие от естественного языка не допускает никаких произвольных толкований. Совокупность команд и конструкций образует синтаксис языка программирования, а смысл каждой команды и других конструкций языка – его семантику. Нарушение формы записи программы приводит к тому, что появляются сообщения о синтаксической ошибке, а правильно написанное, но не отвечающее алгоритму использование команд языка приводит к семантическим ошибкам.
Из универсальных языков программирования сегодня наиболее популярны: Basic, Pascal, C++, Java, C# (Си Шарп). Для каждого из этих языков имеется немало систем программирования, выпускаемых различными фирмами и ориентированных на различные модели персональных компьютеров и операционные системы. Наиболее популярны следующие визуальные среды быстрого проектирования программ для WINDOWS: Microsoft Visual Basic (Basic); Borland Delphi (Pascal); Microsoft Visual C++ (C++); Borland J Builder (Java); Microsoft Visual Studio (C#).
В настоящее время решение любой функциональной или вычислительной задачи на компьютере реализуется с помощью систем программирования и включает следующие этапы: 1) получение текстового файла с исходным текстом программы с помощью специализированных редакторов, которые ориентированны на конкретный язык программирования; 2) перевод исходного текста программой-компилятором в машинный (результирующий) или объектный код; 3) исходный текст большой программы состоит из нескольких модулей (файлов с исходными текстами), при этом каждый модуль компилируется в отдельный файл с объектным кодом, который обрабатывается специальной программой – редактором связей или сборщиком и формирует на выходе работоспособное приложение – исполнимый код для конкретной платформы; 4) кроме того, сборщик выполняет связывание объектных модулей и машинного кода стандартных функций, находя их в библиотеках функций.
В современных интегрированных системах программирования имеется еще один компонент – отладчик, который позволяет анализировать работу программы во время ее тестирования – процесса исполнения программы с целью обнаружения ошибок. Тестирование и отладка программ могут занимать до 50–90 % всего времени разработки программы, поэтому им необходимо уделять особое внимание.
Тестирование, при котором разработчик теста имеет доступ к исходному коду программы, называется тестированием «белого ящика». Процесс интенсивного использования программного продукта системы с целью выявления максимального числа ошибок в его работе, для их последующего устранения перед выходом продукта на рынок, называется бета тестированием. Тестирование, при котором выявляется, что сделанные изменения не повлияли на функционирование предыдущей версии программы, называется регрессионным.
7.2. Понятие об алгоритмическом и структурном программировании. Модульный принцип программирования. Подпрограммы. Принципы проектирования программ сверху вниз и снизу вверх
Основная идея алгоритмического программирования – разбиение программы на последовательность модулей, каждый из которых выполняет одно или несколько действий. Единственное требование к модулю – чтобы его выполнение всегда начиналось с первой команды и всегда заканчивалось на самой последней, т. е., чтобы нельзя было попасть на команды модуля извне и передать управление из модуля на другие команды в обход заключительной. Алгоритм на выбранном языке программирования записывается с помощью команд описания, вычисления значений и управления последовательностью выполнения программы. В качестве языков программирования могут использоваться Бейсик, Паскаль, C++.
В алгоритмическом программировании используется линейная последовательность операторов присваивания, цикла, и условных операторов. Таким способом можно решать не очень сложные задачи и составлять программы, содержащие несколько сот строк кода. При создании средних по размеру приложений (несколько тысяч строк исходного кода) используется структурное программирование, идея которого заключается в том, что структура программы должна отражать структуру решаемой задачи. С этой целью в программирование введено понятие подпрограммы – набора операторов, выполняющих нужное действие и не зависящих от других частей исходного кода. Программа разбивается на множество мелких программ (занимающих до 50 операторов – критический порог для быстрого понимания цели подпрограммы), каждая из которых выполняет одно из действий, предусмотренных исходным заданием. Возможность применения подпрограмм относит язык программирования к классу процедурных языков.
Технология программирования базируется на поэтапном построение программ, т. е. нисходящем и восходящем проектировании. Наличие подпрограмм в структурном программировании позволяет вести проектирование и разработку приложения сверху вниз – такой подход называется нисходящим проектированием. Сначала выделяется несколько подпрограмм, решающих самые глобальные задачи, потом каждый из этих модулей детализируется на более низком уровне, разбиваясь в свою очередь на небольшое число других подпрограмм, и так происходит до тех пор, пока вся задача не окажется реализованной.
Переход от восходящего к нисходящему проектированию при создании больших систем программного обеспечения стал очевидным в результате неудачных попыток по созданию программ по методу восходящего проектирования, сущность которого заключается в том, что вначале разрабатываются отдельные модули на языке низкого уровня, а затем они объединяются в систему. Поэтому недостатки проекта часто обнаруживаются только при отладке программного комплекса, т. е. оказывается, что множество модулей было написано и проверено только для того, чтобы быть затем забракованными. В противоположность этому при нисходящем проектировании сначала пишут и проверяются управляющие программы, а функциональные модули добавляют в процессе разработки системы. Таким образом, создание системы происходит путем её расширения уровень за уровнем с проверкой и объединением модулей в процессе программирования, а не после её окончания. На каждом уровне процесса проектирования отрабатываются программы обслуживания и определяются данные.
Очень важная характеристика подпрограмм – это возможность их повторного использования. С интегрированными системами программирования поставляются большие библиотеки стандартных программ, которые позволяют значительно повысить производительность труда за счет использования чужой работы по созданию часто применяемых подпрограмм.
Подпрограммы бывают двух типов – процедуры и функции. Отличаются они тем, что процедура просто выполняет группу операторов, а функция вдобавок вычисляет некоторое значение и передаёт его обратно в главную программу. Параметры, которые указываются в заголовке подпрограммы, называются формальными. Они нужны для описания тела подпрограммы. А параметры, которые указываются в момент вызова программы, называются фактическими параметрами.
7.3.Объектно-ориентированное программирование
Объектно-ориентированное программирование характеризуется следующими понятиями: объект – это совокупность свойств (структур данных, характерных для этого объекта), методов их обработки (подпрограмм изменения свойств) и событий, на которые данный объект может реагировать и которые приводят, как правило, к изменению свойств объекта. Объекты могут иметь идентичную структуру и отличаются только значениями свойств. В таких случаях в программе создаётся новый тип, основанный на единой структуре объекта. Он называется классом, а каждый конкретный объект, имеющий структуру этого класса, называется экземпляром класса.
Важнейшая характеристика класса – возможность создания на его основе новых классов с наследованием всех его свойств и методов и добавлением собственных. Класс, не имеющий предшественника, называется базовым (например, класс «животное» имеет свойства «название», «размер», методы «идти» и «размножаться». Созданный на его основе класс «кошка» наследует все эти свойства и методы, к которым дополнительно добавляется свойство «окраска» и метод «пить»). Наследование позволяет создавать новые классы, повторно используя уже готовый исходный код и не тратя времени на его переписывание. В большинстве случаев методы базового класса у классов-наследников приходится переопределять – объект класса «кошка» выполняет метод «идти» совсем не так, как объект класса «амеба». Такое свойство объектов переопределять методы наследуемого класса и корректно их использовать называется полиморфизмом. Объединение данных с методами в одном типе (классе) называется инкапсуляцией. Помимо объединения, инкапсуляция позволяет ограничивать доступ к данным объектов и реализации методов классов. В результате у программистов появляется возможность использования готовых классов в своих приложениях на основе только описаний этих классов.
7.4. Эволюция и классификация языков программирования.
Основные понятия языков программирования
Любой язык программирования обеспечивает: поиск, обработку и передачу данных; определение функций, выполняемых устройствами; описание процессов, в том числе в понятиях логики. Выделяют несколько разновидностей языков программирования. К первой из них относят языки высокого уровня. Это языки, которые отображают естественные для человека понятия, не связанные с конкретной структурой какой-нибудь системы. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздно меньше. К ним в первую очередь относятся языки Basic, С, Pascal, Java. Кроме того, существуют языки, предназначенные для определенных областей их использования: Algol – математических задач; Chill – телекоммуникационных систем; Cobol – экономических задач; Post Script – описания изображений; Sgml – описания документов; Html, PHP, XML – описания документов в сети Internet; Lisp, Prolog, Smalltalk – описания процессов искусственного интеллекта; VDL – описания языков программирования. Языки высокого уровня отражают потребности программиста, а не возможности системы обработки данных.
Вторую разновидность языков программирования образуют языки низкого уровня, например язык Ассемблера. В третью группу входят машинные языки – языки, элементами которых являются команды компьютера. В этих языках управление и структура данных непосредственно отображают архитектуру конкретного компьютера. С помощью языков низкого уровня создаются очень эффективные и компактные программы, так как разработчик получает доступ ко всем возможностям процессора. С другой стороны, затрудняется отладка больших приложений, а результирующая программа не может быть перенесена на компьютер с другим типом процессора. Подобные языки обычно применяют для написания небольших системных приложений, драйверов устройств, моделей стыковки с нестандартным оборудованием, когда важнейшими требованиями становятся компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам.
Главным классифицирующим признаком языков и, следовательно, систем программирования, является принадлежность к одному из оформившихся к настоящему времени стилей программирования. Каждому стилю (парадигме) программирования соответствует своя собственная (уникальная) модель вычислений. Сейчас отмечают четыре наиболее развитых и основательно проработанных стиля программирования:
1. Процедурный (императивный) – подразумевает под собой написание функционально законченных блоков команд – процедур, которые, обрабатывая входные данные задачи, получают результат (Fortran, Basic, C, Pascal).
2. Объектно-ориентированный – получение результата из входных данных происходит созданием определенных объектов, с определенными методами обработки начальных данных и моделированием взаимодействия этих объектов для получения результата (Smalltalk-80, C++, Java, Turbo Pascal).
3. Декларативный (логический или реляционный) – необходимо объявить начальные данные и правила их обработки, остальное сделает сам язык, который достигнет результата, применяя правила к данным, основанные на формальных исчислениях и прямой цепочке логического вывода (Prolog).
4. Функциональный (аппликативный) – написание элементарных функций обработки данных и компонование их для достижения результата (Lisp).
Существуют также понятия офисного и визуального программирования. Офисное программирование – термин не часто употребляемый в литературе по программированию, но очень часто в описаниях Word, Excel, Access, PowerPoint. Означает лишь то, что программирование направлено не на создание автономно работающей программы, а на расширение свойств создаваемых документов Word, Excel, Access, PowerPoint за счет написания соответствующего кода. Визуальное программирование отражает тот факт, что часть процесса создания программы является визуальной, т. е. видимой. Точнее говоря, создание программы основывается на использовании готовых объектов, путем изменения их свойств (с визуальным контролем), методов, событий (Visual Basic).
При описании языка и его применении используют понятие языка. Понятие подразумевает некоторую синтаксическую конструкцию и определяемые ею свойства программных объектов или процесса обработки данных. Взаимодействие синтаксических и семантических правил определяют те или иные понятия языка: операторы, величины, идентификаторы, функции и процедуры, модули, описания, выражение.
Оператор представляет собой законченную фразу языка и определяет однозначно трактуемый этап обработки данных. Большая часть операторов ведет обработку величин. Величины могут быть постоянными и переменными. Величины характеризуются типом, именем и значением. Наиболее распространенные типы величин – числовые (целые и вещественные), символьные и логические. Тип величины определяется ее значением. Другая важная классификация величин – простые структурированные. Простая величина в каждый момент может иметь не более одного значения. Структурированная величина, имея одно имя, может иметь разом несколько значений (элементов этой величины). Самый широкоизвестный пример – массив, у которого элементы различаются по индексам (номерам). Всем программным объектам в языках даются индивидуальные имена. Имя программного объекта называют идентификатором. Функция – это программный объект, задающий вычислительную процедуру определения значения, зависимого от некоторого аргумента. Функции – стандартные и задаваемые программистом – используются в программе в выражениях. Выражения строятся из величин – постоянных и переменных, функций, скобок, знаков операций и т. д. Выражение имеет определенный тип, определяемый типом принимаемых в итоге его вычисления значений. Процедура – это программный объект, представляющий некоторый самостоятельный этап обработки данных. Процедура имеет входные и выходные параметры, называемые формальными. При использовании процедуры формальные параметры заменяются на фактические. Модуль – это специальная программная единица, предназначенная для создания библиотек и разделения больших программ на логически связанные блоки. Описания или объявления программных объектов связаны с правилами обработки данных. Описательная часть языка программирования является необходимой как для системных программистов – разработчиков трансляторов, которые должны, в частности, проводить синтаксическую и семантическую диагностику программ, – так и для «прикладного» программиста, которому объявления программных объектов часто облегчают процесс разработки и отладки программ.
7.5. Структуры и типы данных языка программирования
Необходимым условием построения алгоритма является формализация данных, т. е. приведение информации к некоторой информационной модели или абстрактной структуре данных. Абстрактная структура данных описывает признаки и свойства объекта, взаимосвязь между элементами объекта, а также возможные операции над данным объектом или классом объектов. Одной из задач информатики является нахождение форм представления информации, удобных для компьютерной обработки. Информатика как точная наука работает с формальными объектами (описанными строго математически). Такими объектами – базовыми абстрактными структурами данных, используемыми в информатике, являются: целые числа; вещественные числа; символы; логические значения.
Для компьютерной обработки этих объектов в языках программирования существуют соответствующие типы данных. Базовые объекты можно объединять в более сложные структуры, добавляя операции уже над структурой в целом и правила доступа к отдельным элементам этой абстрактной структуры данных. К таким абстрактным структурам данных относятся: векторы (конечные массивы); таблицы (матрицы), а в общем случае – многомерные массивы; графы; динамические структуры (последовательности символов и чисел, строки, списки, очереди, стеки, деревья, графы, хэш-адресация). Удачный выбор структуры данных часто является залогом создания эффективного алгоритма и программы, его реализующей: используя аналогию структур данных и реальных объектов, можно находить эффективные решения задач.
Для компьютерного представления абстрактных структур используются структуры данных, которые представляют собой набор переменных, возможно различных типов данных, объединенных определенным образом. Для конструирования таких структур, как вектор, таблица, строка, последовательность, в большинстве языков программирования присутствуют стандартные типы данных: одномерный массив, двухмерный массив, строка, файл (реже список) соответственно. Организацию остальных структур данных, в первую очередь динамических структур, размер которых меняется во время выполнения программы, программисту приходится осуществлять самостоятельно, используя базовые типы данных.
Любые данные могут быть отнесены к одному из двух типов: простому (основному), форма представления которого определяется архитектурой ЭВМ, или сложному, конструируемому пользователем для решения конкретных задач. Данные простого типа – это символы, числа и т. п. элементы, дальнейшее дробление которых не имеет смысла. Из таких элементарных данных формируются структуры (сложные типы) данных. Принято различать следующие типы данных. Простые: числовые; целочисленные; вещественные; символьные; логические; перечислимые; множество; указатель. Составные: строковые; массив; запись; последовательность.
Типы данных защищают программы от следующих ошибок: некорректное присваивание; некорректная операция; некорректная передача параметров в процедуры и функции. С использованием типов такие ошибки отсекаются опять же на этапе компиляции. Кроме того, типы данных позволяют программисту абстрагироваться от машинного представления информации в виде наборов нулей и единиц и строить программы, основываясь на знакомых понятиях, таких, как числа, множества, последовательности, и т. п. В конечном итоге это приводит к получению более надежных программ.
7.6. Трансляция, компиляция и интерпретация
Идеи трансляции (перекодирования) одних символов в другие легли в основу создания различных языков программирования с соответствующими трансляторами. Таким образом, в общем случае транслятор представляет собой программу, осуществляющую перевод текстов программ с одного языка на другой. В системе программирования транслятор переводит программу с входного языка этой системы на машинный язык реальной ЭВМ (на которой функционирует данная система программирования или будет функционировать разрабатываемая программа) либо на промежуточный язык программирования, уже реализованный или подлежащий реализации. Некоторые трансляторы служат для переноса программ с одной машины на другую. Программа, подающаяся на вход транслятора, называется исходной, а результат трансляции – объектной программой.
Одной из разновидностей транслятора является компилятор, обеспечивающий перевод программ с языка высокого уровня на язык более низкого уровня, или машинный язык. Компиляторы полностью обрабатывают весь текст программы (исходный код). Они просматривают его в поисках синтаксических ошибок (иногда несколько раз), выполняют определенный смысловой анализ и затем автоматически переводят (транслируют) на машинный язык – генерируют машинный код. Нередко при этом выполняется оптимизация с помощью набора методов, позволяющих повысить быстродействие программы (например, с помощью инструкций, ориентированных на конкретный процессор, путем исключения ненужных команд, промежуточных вычислений и т. д.). В результате законченная программа получается компактной и эффективной, работает в сотни раз быстрее программы, выполняемой с помощью интерпретатора, и может быть перенесена на другие компьютеры с процессором, поддерживающим соответствующий машинный код. Основной недостаток компиляторов – трудоемкость трансляции языков программирования, ориентированных на обработку данных сложной структуры, часто заранее неизвестной или динамически меняющейся во время работы программы.
Диаметрально противоположными характеристиками обладает альтернативное средство реализации языка – интерпретатор, который представляет собой транслятор, выполняющий предъявленную программу путем одновременного ее анализа и реализации предписанных ею действий. При использовании интерпретатора отсутствует разделение на две стадии (перевод и выполнение) и, более того, отсутствует явный перевод программы даже по частям перед очередным этапом выполнения. В действительности же распознается очередная конструкция программы и интерпретатором выполняются определяемые ею действия. После этого процессы анализа и реализации предписанных действий циклически повторяются. Таким образом, при интерпретации реально выполняется только программа-интерпретатор, управляемая исходной программой и, естественно, исходными данными для последней.
В реальных системах программирования перемешаны технологии и компиляции, и интерпретации. В процессе отладки программа может выполняться по шагам, а результирующий код не обязательно будет машинным – он даже может быть исходным кодом, написанным на другом языке программирования (это существенно упрощает процесс трансляции, но требует компилятора для конечного языка), или промежуточным машинно-независимым кодом абстрактного процессора, который в различных компьютерных архитектурах станет выполняться с помощью интерпретатора или компилироваться в соответствующий машинный код.
Примеры задач по технологии программирования:
Задача № 1. В программе «Университет» определен класс «Предмет». Возможными объектами этого класса являются … Ответ: «История», «Математика».
Решение:
Объект представляет собой особый опознаваемый предмет или сущность (реальную или абстрактную), имеющие четко определенное функциональное назначение в данной предметной области. Структура и поведение одинаковых объектов описываются в общем для них классе. Класс – описание множества объектов, связанных общностью структуры и поведением. В объектно-ориентирован-ном программировании класс является типом данных, определяемым пользователем, а конкретные величины типа данных «класс» называются экземплярами класса, или объектами. В примере определен класс «Предмет». Объектами, или экземплярами класса, будут реальные предметы (дисциплины), изучаемые в университете: «Математика» и «История». Свойством этих объектов является количество часов, отводимых на изучение дисциплины.
Задача № 2. Операторы присваивания в языках программирования … Ответ: задают значения переменных.
Решение:
Переменная величина получает конкретное значение в результате выполнения операции присваивания. Три основных свойства присваивания: 1) пока переменной не присвоено значение, она остается неопределенной; 2) значение, присвоенное переменной, сохраняется в ней вплоть до выполнения присваивания этой переменной нового значения; 3) новое значение, присвоенное переменной, заменяет ее предыдущее значение.
В левой части оператора присваивания указывается имя переменной, правая часть представляет собой выражение того же типа, что и переменная.
Формат:
<имя переменной> := < выражение >;
< выражение > содержит константы, переменные, указатели функций, соединенные знаками арифметических операций.
Например, c:= (a+b)*(b-a). При вычислении арифметического выражения вместо имен переменных и функций подставляются их значения, а полученный результат присваивается переменной в левой части, то есть записывается в память.
Задача № 3. Из перечисленных программ (Borland Delphi, Abbyy FineReader, Adobe Dreamweaver, CorelDraw) системой программирования является … Ответ: Borland Delphi.
Решение:
Система программирования – это комплекс средств, предназначенный для создания и эксплуатации программ на конкретном языке программирования для ЭВМ определенного типа. Интегрированная среда разработки – система программных средств, используемая программистами для разработки программного обеспечения. Интегрированная среда разработки включает в себя текстовый редактор, компилятор и/или интерпретатор, средства автоматизации сборки, отладчик и библиотеку подпрограмм. Иногда также содержит средства для интеграции с системами управления версиями и разнообразные инструменты для упрощения конструирования графического интерфейса пользователя. Например, в интегральных средах программирования используются C++, Java и Delphi – языки программирования, соответствующие системам Visual C++, Eclipse и Borland Delphi. Abbyy FineReader – это прикладное программное обеспечение, предназначенное для распознавания текста в имеющихся изображениях. Adobe Dreamweaver – это HTML-редактор, обладающий богатым инструментарием и разнообразием настроек. Он используется при создании web-сайтов. CorelDraw – это векторный графический редактор.
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
1. Информатика. Базовый курс. 2-е издание / Под ред. . – СПб.: Питер, 2007. – 640 с.
2. Могилев, : учеб. пособие для студ. пед. вузов / , , Е. К Хеннер; под ред. Е. К Хеннера. – М.: Изд. центр «Академия», 2004. – 816 с.
3. Острейковский, : учеб. для вузов / . – М.: Высш. шк., 2000. – 511 с.
4. Рабин, Ч. Эффективная работа с Microsoft Word 2000 / Ч. Рабин. – СПб.: Питер, 2000. – 944 с.
5. Додж, М. Эффективная работа с Microsoft Excel 2002 / М. Додж, К. Стинсон. – СПб.: Питер, 2002. – 992 с.
6. Стоцкий, Ю. Самоучитель Office XP / Ю. Стоцкий. – СПб.: Питер, 2007. – 571 с.
7. Феддема, Э. Эффективная работа: Access 2002 / Э. Феддема. – СПб.: Питер, 2003. – 944 с.
8. Хэлворсон, М. Эффективная работа с Microsoft Office 2000 / М. Хэлворсон. М. Янг. – СПб.: Питер, 2000. – 1232 с.
9. Рейнбоу, В. Компьютерная графика / В. Рейнбоу. – СПб.: Питер, 2003. – 768 с.
10. Иванова, программирования: учеб. для вузов / . – М.: Изд-во МВТУ им. , 2001. – 392 с.
11. Павловская, . Программирование на языке высокого уровня. Учеб. для вузов / . – СПб.: Питер, 2003. – 464 с.
12. Павловская, Т. А. С / C ++. Программирование на языке высокого уровня. Учеб. для вузов / . – СПб.: Питер, 2003. – 400 с.
13. Габбасов, Ю. Internet 2000 / Ю. Габбасов. – СПб.: BHV–Санкт-Петер-бург, 1999. – 440 с.
14. Денисов, А. Microsoft Internet Explorer 5.0: справочник / А. Денисов. – СПб.: Питер, 2000. – 448 с.
15. Материалы сайта www. *****.
Учебное издание
Александр Александрович Эпов;
Елена Николаевна Ломкова;
Анатолий Александрович Поливанов;
Анастасия Александровна Казначеева
ИНФОРМАТИКА
(базовый курс для подготовки студентов и
преподавателей к Интернет-экзамену)
Учебное пособие
Редактор
Компьютерная верстка
Темплан 2011 г., поз. № 17К.
Подписано в печать 27.06.2011 г. Формат 60×84 1/16.
Бумага листовая. Печать офсетная.
Усл. печ. л. 7, 9. Уч.-изд. л. 8,27.
Тираж 100 экз. Заказ №
Волгоградский государственный технический университет
г. Волгоград, пр. Ленина, 28, корп. 1.
Отпечатано в КТИ
, каб. 4.5
![]() |
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 |



