Безударные принтеры. 4 страница
Операторы подразделяются на исполняемые и неисполняемые. Неисполняемые операторы предназначены для описания данных и структуры программы, а исполняемые – для выполнения различных действий (например, оператор присваивания, операторы ввода и вывода, условный оператор, операторы цикла, оператор процедуры и др.).
При решении различных задач с помощью компьютера бывает необходимо вычислить логарифм или модуль числа, синус угла и т. д.
Вычисления часто употребляемых функций осуществляются посредством подпрограмм, называемых стандартными функциями, которые заранее запрограммированы и встроены в транслятор языка.
В качестве аргументов функций можно использовать константы, переменные и выражения. Например:
Каждый язык программирования имеет свой набор стандартных функций.
Арифметические выражения записываются по следующим правилам:
- нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций;
- для обозначения переменных используются буквы латинского алфавита;
- операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь – сложение и вычитание;
- операции одного старшинства выполняются слева направо.
В записи логических выражений помимо арифметических операций сложения, вычитания, умножения, деления и возведения в степень используютсяоперации отношения < (меньше), <= (меньше или равно), > (больше), >= (больше или равно), = (равно), <> (не равно), а такжелогические операции и, или, не.
Парадигмы программирования
Парадигмы программирования – это различные инструменты, которые можно использовать при программировании. Каждый из этих инструментов по-своему хорош. Но это не значит, что они «эффективно универсальны». На самом деле, различные методики программирования дают разный выигрыш для решения задач разных классов. Этот выигрыш можно мерить по двум параметрам:
– эффективность программного обеспечения на современных ПК;
– общие затраты на разработку программного обеспечения.
Императивное программирование
Одна из характерных черт императивного программирования – наличие переменных с операцией «разрушающего присвоения», т. е., была переменная А, было у нее значение Х. Алгоритм предписывает на очередном шаге присвоить переменной А значение Y. То значение, которое было у А, будет «навсегда забыто». Вот что на практике означает «переход между состояниями под управлением функции переходов».
Императивное программирование наиболее пригодно для реализации небольших подзадач, где очень важна скорость исполнения на современных компьютерах. Кроме этого, работа с внешними устройствами, как правило, описывается в терминах последовательного исполнения операций («открыть кран, набрать воды»), что делает такие задачи идеальными кандидатами на императивную реализацию.
Параллельное и событийно-управляемое программирование
Практически все современные микропроцессоры максимально используют в своей архитектуре возможности параллельного исполнения отдельных операций. Таким образом, параллелизм можно мысленно разбить на два уровня: параллелизм уровня микроопераций и параллелизм уровня процессов.
Процессы – это абстракция достаточно высокого уровня. В какой вычислительной модели работает каждый отдельный процесс – не принципиально. Важно, что они могут работать параллельно, и могут обмениваться между собой результатами своих вычислений через «каналы связи».
Каждый вычислитель производит типичные для его вычислительной модели операции. Когда процесс встречает инструкцию «Принять значение (из канала)», он входит в состояние ожидания, пока канал пуст. Как только в канале появляется значение, процесс его считывает и продолжает работу.
Достаточно распространенной является так же и следующее понимание параллелизма: в системе параллельных процессов каждый отдельный процесс обрабатывает события. События могут быть как общими для всей системы, так и индивидуальными для одного или нескольких процессов. В таких терминах достаточно удобно описывать, например, элементы графического интерфейса пользователя, или моделирование каких-либо реальных процессов (например, управление уличным движением) – т. к. понятие события является для таких задач естественным. Такое программирование принято называть событийно-управляемым. Событийно-управляемое программирование очень близко к объектно-ориентированному программированию, которое будет подробно разобрано в дальнейшем.
Параллелизм является не только надстройкой над другими вычислительными моделями; некоторые методологии программирования имеют естественную реализацию на платформах, поддерживающих параллелизм.
Объектно-ориентированное программирование
Объектно-ориентированное программирование появилось из недр событийно-управляемого программирования и практически затмило его, т. к. оказалось значительно более мощным и универсальным средством программирования и проектирования.
В чистом объектно-ориентированном программировании все, что можно – процессы, данные, события – являются объектами. Все объекты располагают некоторыми «собственными» данными, представленными как ссылки на другие объекты. Объекты могут обмениваться между собой сообщениями. При получении объектом сообщения запускается соответствующий ему обработчик, иначе называемый методом. У объекта есть ассоциативный контейнер, который позволяет получить по сообщению его метод для его обработки. Кроме этого, у объекта есть объект-предок. Если метод для обработки сообщения не найден, сообщение будет перенаправлено объекту-предку. Эту структуру в целом (таблица обработчиков + предки) из соображений эффективности выделяют в отдельный объект, называемый классом данного объекта. У самого объекта будет ссылка на объект, представляющий его класс. Объект по отношению к своему классу является экземпляром. Т. к. классы тоже представлены, как объекты, существует класс, определяющий поведение, общее для всех классов. Такой класс принято называть метаклассом.
Важно выделить следующие основные свойства объектов:
1) т. к. один объект может воздействовать на другой исключительно при помощи посылки последнему сообщений, он не может как-либо непосредственно работать с собственными данными «собеседника», и, следовательно, не может нарушить их внутреннюю согласованность. Это свойство (сокрытие данных) принято называть инкапсуляцией.
2) т. к. объекты взаимодействуют исключительно за счет обмена сообщениями, объекты-собеседники могут ничего не знать о реализации обработчиков сообщений у своего визави. Взаимодействие происходит исключительно в терминах сообщений/событий, которые достаточно легко привязать к предметной области. Это свойство (описание взаимодействия исключительно в терминах предметной области) называют абстракцией.
3) объекты взаимодействуют исключительно через посылку сообщений друг другу. Поэтому если в каком-либо сценарии взаимодействия объектов заменить произвольный объект другим, способным обрабатывать те же сообщения, сценарий так же будет реализуем. Это свойство (возможность подмены объекта другим объектом со сходной структурой класса) называется полиморфизмом.
Отношение «потомок-предок» на классах принято называть наследованием.
Все эти свойства по отдельности встречаются и в других методологиях программирования. Так, локальные переменные инкапсулированы в процедуре. Объектно-ориентированное программирование достаточно гармонично их сочетает.
Функциональное программирование
До сих пор рассматриваемые нами парадигмы программирования воспринимались нами как некоторые «полезные надстройки над императивным программированием». Функциональное программирование представляет собой одну из альтернатив императивному подходу.
В императивном программировании алгоритмы – это описания последовательно исполняемых операций. Здесь существует понятие «текущего шага исполнения» (т. е., времени), и «текущего состояния», которое меняется с течением этого времени.
В функциональном программировании понятие времени отсутствует. Программы являются выражениями, исполнение программ заключается в вычислении этих выражений. Практически все математики, сами того не замечая, занимаются функциональным программированием, описывая, например, чему равно абсолютное значение произвольного вещественного числа.
Функциональное программирование обладает двумя свойствами:
1) аппликативность – программа есть выражение, составленное из применения функций к аргументам;
2) настраиваемость, т. к. не только программа, но и любой программный объект (в идеале) является выражением, можно легко порождать новые программные объекты по образцу, как значения соответствующих выражений (применение порождающей функции к параметрам образца).
Функциональное программирование, как и другие модели «неимперативного» программирования, обычно применяется для решения задач, которые трудно сформулировать в терминах последовательных операций. Практически все задачи, связанные с искусственным интеллектом, попадают в эту категорию. Среди них следует отметить задачи распознавания образов, общение с пользователем на естественном языке, реализацию экспертных систем, автоматизированное доказательство теорем, символьные вычисления.
Логическое программирование
В функциональном программировании программы – это выражения, и их исполнение заключается в вычислении их значения. В логическом программировании программа представляет собой некоторую теорию (описанную на достаточно ограниченном языке), и утверждение, которое нужно доказать. В доказательстве этого утверждения и будет заключаться исполнение программы.
Логическое программирование появилось в результате исследования группы французских ученых под руководством Колмерье в области анализа естественных языков. В последствии было обнаружено, что логическое программирование столь же эффективно в реализации других задач искусственного интеллекта, для чего оно в настоящий момент, главным образом, и используется. Но логическое программирование оказывается удобным и для реализации других сложных задач; например, диспетчерская система лондонского аэропорта Хитроу в настоящий момент переписывается на Прологе. Оказывается, логическое программирование является достаточно выразительным средством для описания сложных систем.
Задания:
1. Результатом работы алгоритма, приведенного в виде блок-схемы, является
| а) определение меньшего из чисел А и В; б) определение большего из чисел А и В; в) определение меньшего из чисел А, В и М; г) определение большего из чисел А, В и М. |
2. 9. Язык разметки гипертекста
а) WWW;
б) HTML;
в) HTTP;
г) URL.
3. Метод познания, который заключается в исследовании объекта по его модели, называют…
1) логическим выводом
2) визуализацией
3) адаптацией
4) моделированием
4. К основным классам моделей (по способу отражения свойств объекта) относят…
1) территориальные
2) социальные
3) предметные
4) медико-биологические
5. Задан фрагмент алгоритма:
1. если a<b, то с=b-a, иначе c=2*(a-b)
2. d=0
3. пока c>a выполнить действия d=d+1, с=с-1
В результате выполнения данного алгоритма с начальными значениями a=8, b=3, переменные c и d примут значения:
1) c=-5, d=1
2) c=10, d=1
3) c=5, d=0
4) c=8, d=2
6. Для реализации логики алгоритма и программы с точки зрения структурного программирования НЕ ДОЛЖНЫ применяться:
1) последовательное выполнение
2) ветвления
3) повторения вычислений (циклы)
4) безусловные переходы
7. В концепции объектно-ориентированного подхода к программированию НЕ ВХОДИТ:
1)наследование
2) полиморфизм
3)дискретизация
4)инкапсуляция
8. Из перечисленных
1) ADA
2) АССЕМБЛЕР
3) PASСAL
4) LISP
5) МАКРОАССЕМБЛЕР
к языкам высокого уровня не относят…
1) 2 и 5
2) 3 и 5
3) только 5
4) 1 и 3
Лекция № 5. ВЫЧИСЛИТЕЛЬНЫЕ СЕТИ
План:
1. Введение.
2. Локальные вычислительные сети:
a. топология сети,
b. аппаратные компоненты локальной сети.
3. Глобальная сеть Интернет:
a. общая характеристика,
b. адресация и маршрутизация,
c. службы сети Интернет.
4. Модель OSI
Вычислительная сеть - ВС [network] – это совокупность ЭВМ, объединённых средствами передачи данных. Средства передачи данных в ВС в общем случае состоят из следующих элементов: связных ЭВМ, каналов связи (спутниковых, телефонных, волоконно-оптических и др.), коммутирующей аппаратуры и др.
В зависимости от удалённости ЭВМ, входящих в ВС, сети условно разделяют на локальные и глобальные.
Локальная сеть - ЛВС [local area network - LAN] – это группа связанных друг с другом ЭВМ, расположенных в ограниченной территории, например, в здании. Расстояния между ЭВМ в локальной сети может достигать нескольких километров. Локальные сети развёртываются обычно в рамках некоторой организации, поэтому их называют также корпоративными сетями.
Если сеть выходит за пределы здания, то такая ВС называется глобальной [wide area network -WAN]. Глобальная сеть может включать в себя другие глобальные сети, локальные сети и отдельные ЭВМ.
Глобальные сети практически имеют те же возможности, что и локальные. Но они расширяют область их действия. Польза от применения глобальных сетей ограничена в первую очередь скоростью работы: глобальные сети работают с меньшей скоростью, чем локальные.
Сети предназначены для выполнения многих задач, в том числе:
· организация совместного использования файлов для повышения целостности информации;
· организация совместного использования периферийных устройств, например, принтеров, для уменьшения общих расходов на оборудование офиса;
· обеспечения централизованного хранения данных для облегчения их защиты и архивирования.
Глобальные сети придают всему этому большие масштабы и добавляют такую удобную вещь, как электронная почта.
ЛОКАЛЬНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СЕТИ
Архитектура локальной сети
Для характеристики архитектура сети используют понятия логической и физической топологии.
Физическая топология [physical topology] – это физическая структура сети, способ физического соединения всех аппаратных компонентов сети. Существует несколько видов физической топологии.
Наиболее простой является физическая шинная топология [bus topology], в которой кабель идёт от ЭВМ к ЭВМ, связывая их в цепочку. Различают толстые и тонкие сети. Толстая сеть [thicknet] использует толстый коаксиальный кабель в качестве магистрали, от которого отходят более тонкие кабели.
В тонкой сети [thinnet] используется более тонкий и гибкий кабель, к которому напрямую подключены рабочий станции.
Сети, построенные по шинной топологии, более дёшевы. Однако если узлы сети расположены по всему зданию, то гораздо более удобным оказывается использование звездообразной топологии.
При физической звездообразной топологии [star topology] каждый сервер и рабочая станция подключаются к специальному устройству – центральному концентратору [hub], который осуществляет соединение пары узлов сети – коммутацию.
Рис.5.1. Шинная топология - толстая сеть
Обрыв кабеля, идущего от одной рабочей станции не повлияет на работу остальных рабочих станций. Кроме того, взаимное расположение рабочих станций совершено не важно.
Рис. 5.2. Шинная топология - тонкая сеть
Если сеть имеет много узлов, причём многие располагаются на большом удалении друг от друга, то расход кабеля при использовании звездообразной топологии будет большим. Кроме того, к концентратору можно подключить лишь ограниченное число кабелей. В таких случаях применяется распределённая звездообразная топология [distributed star topology], при которой несколько концентраторов соединяются друг с другом.
Кроме рассмотренных видов соединений может применяться также кольцеобразная топология, при которой рабочие станции соединены в кольцо. Такая топология практически не используется для локальных сетей, но может применяться для глобальных.
Логическая топология сети [logical topology] определяет способ, в соответствии с которым устройства сети передают информацию от одного узла к следующему. Физическая топология не имеет прямого отношения к логической.
Различают два вида логической топологии: шинную и кольцевую.
Рис. 5.3. Звездообразная топология
В шинной логической топологии процесс передачи данных организован следующим образом. Если какой-либо узел сети имеет данные для другого узла, то первый узел производит «оповещение» всей сети. Все остальные узлы «слушают» сеть и проверяют, предназначены эти данные для них или нет. Если предназначены, то они оставляют их себе, если нет – игнорируют. Любые передаваемые данные «слышны» всем узлам сети. Узел, который хочет передать какие-то данные, сначала «слушает» сеть, не занята ли она. Если сеть свободна, то узел передаёт данные. Если расстояние между узлами велико, и посланный ранее кем-то сигнал ещё не успел дойти до передающего узла, то может произойти конфликт, когда в сети одновременно оказываются два сообщения. В этом случае передающие узлы сети на короткое время прекращают свою работу и через некоторый случайный промежуток времени возобновляют передаче данных.
Рис. 5.4. Распределённая звездообразная топология
В сети, с кольцевой логической топологией данные передаются по замкнутой эстафете от одного узла к другому. Когда посланное сообщение возвращается к передающему узлу, он прекращает передачу. Кольцевая топология менее подвержена конфликтам.
АППАРАТНЫЕ КОМПОНЕНТЫ ЛОКАЛЬНОЙ СЕТИ
Основными компонентами, составляющими любую локальную сеть, являются: кабели, сетевые интерфейсные платы, модемы, серверы.
Все соединения с сети осуществляются посредством специальных сетевых кабелей. Основными характеристиками сетевого кабеля являются скорость передачи данных и максимально допустимая длина. Обе характеристики определяются физическими свойствами кабеля.
Пример. Для соединения в локальных сетях используются: кабели типа «витая пара» и «экранированная витая пара», коаксиальный кабель, оптоволоконный кабель.
Таблица 1.Типы кабелей
Тип кабеля | Скорость передачи данных, Мбит/с | Допустимая длина, м |
Витая пара | ||
Экранированная витая пара | ||
Коаксиальный | ||
Оптоволоконный |
Сетевые интерфейсные платы [network interface card] представляют собой дополнительные платы, устанавливаемые на материнскую плату ПЭВМ. К сетевой плате подключаются сетевые кабели. Сетевая плата определяет тип локальной сети.
Пример. На практике используют два типа локальных сетей - Ethernet и Token Ring. Оба типа имеют модификации.
Таблица 2. Типы сетей Ethernet
Название | Физическая топология и кабель | Скорость передачи Мбит/с |
10Base2 | Шинная, тонкий коаксиальный | |
10BaseS | Шинная, толстый коаксиальный | |
Fast Ethernet | Звездообразная, витая пара | |
Gigabit Ethernet | Звездообразная, оптоволоконный |
Модем [modem] – это устройство, предназначенное для связи между ЭВМ по телефонным линиям. По телефонной сети любые данные могут передаваться лишь в аналоговой форме. Данные от ЭВМ поступают в цифровом виде. Задача модема заключается в преобразовании цифровых данных в аналоговую форму и наоборот.
Сервер [server] – это любая сетевая ЭВМ, обслуживающая другие сетевые ЭВМ. Существуют серверы различных типов, которые определяются типом предоставляемых услуг.
Файловый сервер [file server] предоставляет другим ЭВМ (клиентам) доступ к данным, которые хранятся во внешней памяти сервера. Таким образом, на файловый сервер возложены все задачи по безопасности хранения данных, поиску данных, архивированию и др. Внешняя память сервера становится распределяемым ресурсом, так как её могут использовать несколько клиентов.
Сервер печати [printer server] организует совместное использование принтера.
Коммуникационные серверы служат для связи локальной сети с внешним миром, например, с глобальной сетью Internet. Для этого используются модемные пулы, прокси-серверы и маршрутизаторы.
Модемный пул [modem pool] представляет собой ЭВМ, снабжённую особой сетевой платой, к которой можно подключить несколько модемов. Таким образом, достигается определённая экономия, когда, например, десять ЭВМ работают, используя три модема.
Прокси-сервер [proxy server] не только использует единственное соединение с Internet, но и предоставляет свою память для хранения временных файлов, что убыстряет работу с Internet.
Главной задачей маршрутизатора [router] является поиск кратчайшего пути, по которому будет отправлено сообщение, адресованное некоторой ЭВМ в глобальной сети. Маршрутизатор представляет собой либо специализированную ЭВМ, либо обычную ЭВМ со специальным программным обеспечением.
Сервер приложений [application server] используется для выполнения программ, которые по каким-то причинам нецелесообразно или невозможно выполнить на других сетевых ЭВМ. Очевидной причиной может быть недостаточная производительность клиентских ЭВМ. Другая причина – использование каких-нибудь стандартных библиотек, копирование которых на каждую клиентскую ЭВМ трудоёмко и, кроме того, создаёт возможность несогласованности версии библиотеки. Многопользовательские операционные системы (Linux, Windows NT) позволяют построить так называемую тонкую клиентную сеть, в которой все ресурсы клиентов предоставлены сервером. Сами клиентские ЭВМ не тратят ничего на обработку данных. Тогда ЭВМ пользователей в такой сети называются терминалами, а сам сервер – терминальным сервером. Такой сервер должен иметь большой объём основной и внешней памяти и высокую производительность.
ГЛОБАЛЬНАЯ СЕТЬ INTERNET
Общая характеристика глобальной сети Internet
В структуре глобальной сети можно выделить три уровня (см. рис. 5). Первый – внутренний уровень составляет сеть передачи данных. Она состоит из узлов связи. Каждый узел связи представляет собой совокупность средств передачи данных и состоит из коммутационной ЭВМ и аппаратуры передачи данных.
Рис.5.5. Структура глобальной сети
Во второй уровень входят разнообразные серверы, называемые хост-ЭВМ [host computer], которые выполняют в сети задачи по хранению и обработке данных. Такими серверами могут быть, например, серверы различных локальных сетей.
Третий уровень – терминальный – состоит из обычных клиентских рабочих станций, которые пользуются услугами глобальной сети.
Каждая локальная сеть называется сайтом [site], а юридическое лицо, обеспечивающее работу сайта – провайдером. Сайт состоит из группы серверов, которая выполняет определённые задачи.
Основными характеристиками сети являются: время доставки сообщений, производительность и стоимость обработки данных.
Время доставки сообщений определяется как статистическое среднее время от момента передачи сообщения в сеть до момента получения сообщения адресатом.
Производительность сети представляет собой суммарную производительность серверов.
Стоимость обработки данных определяется как стоимостью средств, используемых для обработки, так и временем доставки и производительностью сети.
Тип сети и все её характеристики в основном определяются строением и принципами работы сети передачи данных, которые описываются протоколом. Протокол [protocol] – это система правил, определяющих формат и процедуры передачи данных по сети. Можно сказать, что протокол представляет собой язык, на котором «разговаривают» ЭВМ в сети. Протокол, в частности, определяет, как будут идентифицироваться в сети хост-ЭВМ и как можно найти их в сети, то есть определяются адресация и порядок маршрутизации.
Пример. Свойства глобальной сети Internet определяются так называемым IP-протоколом.
Адресация и маршрутизация в сети Internet
Для организации связи между хост-ЭВМ необходима общесетевая система адресации, которая устанавливает порядок именования абонентов сети передачи данных. В IP-сетях, к которым относится сеть Internet, каждому физическому объекту (хост-ЭВМ, серверы, подсети) присваивается число, называемое IP-адресом, который обычно представляется в виде четырёх чисел от 0 до 255, разделённых точкой, например, 192.171.153.60. Сами по себе эти числа не имеют никакого значения. Адрес содержит в себе номер подсети и номер хост-ЭВМ в данной сети.
Для удобства пользователей в Internet так же используется другой способ адресации, который называется системой доменных имён [domain naming system - DNS].
Пример. DNS-адрес имеет вид: win.smtp.dol.ru. В этом примере:
ru – домен страны, здесь означает все хост-ЭВМ России;
dol – домен провайдера, означает все ЭВМ локальной сети некоторой формы;
smtp – домен группы почтовых серверов этой же фирмы.;
win – имя конкретной ЭВМ из группы smtp.
Особое значение имеют организационные и географические домены – те, которые пишутся крайними справа в DNS-адресе. Имена для этих доменов зарегистрированы международной организацией InterNIC (Internet Network Information Center). Например, edu означает образовательную организацию, com – коммерческую, gov – правительственную, us – США, uk –Великобританию, de – Германию и т.д. DNS-адрес всегда действует совместно с IP-адресом.
При организации связи сеть должна по адресу получателя определить путь передачи данных – маршрут. Для определения маршрута используются различные алгоритмы маршрутизации [routing]. Эффективность алгоритма маршрутизации существенно влияет на скорость передачи данных по сети.
Службы сети Internet
В сети Internet имеются многочисленные службы, предоставляющие информационные услуги.
Одной из наиболее используемых служб является электронная почта [e-mail]. Для обслуживания электронной почты в сети имеются специальные почтовые серверы. Такой сервер выделяет своим клиентам определённый объём внешней памяти (обычно 1-3 Мб) и назначает этой памяти некоторое имя – адрес и пароль для доступа. Такая именованная память называется почтовым ящиком [mailbox]. Все сообщения, адресованные данному клиенту, помещаются в этот ящик и могут быть прочитаны, уничтожены или переправлены в другое место клиентом, которому этот ящик принадлежит. Для отправления и получения почты используются специальные почтовые программы. Адрес почты – это DNS-адрес с добавлением имени абонента.
Пример. Существует множество почтовых серверов. Одним из известных серверов является mail.ru. Адрес почты на этом сервере будет иметь вид:
ivanov@mail.ru
где ivanov – это имя абонента, а mail.ru – это DNS-адрес почтового сервера.
Примером почтовой программы является Outlook Express.
Другая широко используемая служба – FTP-служба [file transfer protocol]. Эта служба используется для удалённого доступа к файлам. FTP-сервер представляет собой хранилище всевозможных файлов. Эти файла пользователь может прочитать или скопировать на свою ЭВМ. DNS-адрес таких серверов начинается с ftp, например, ftp.microsoft.com. Информация на FTP-серверах организована в виде традиционных каталогов. Узлы FTP-службы используются разработчиками программного обеспечения для его распространения.
Дата добавления: 2017-11-04; просмотров: 369;