Что такое тест и тестирование?
Как бы ни была тщательно отлажена программа, решающим этапом, устанавливающим ее пригодность для работы, является контроль программы по результатам ее выполнения на системе тестов.
Программу условно можно считать правильной, если её запуск для выбранной системы тестовых исходных данных во всех случаях дает правильные результаты. |
Но, как справедливо указывал известный теоретик программирования Э. Дейкстра, тестирование может показать лишь наличие ошибок, но не их отсутствие. Нередки случаи, когда новые входные данные вызывают "отказ" или получение неверных результатов работы программы, которая считалась полностью отлаженной.
Для реализации метода тестов должны быть изготовлены или заранее известны эталонные результаты.
Вычислять эталонные результаты нужно обязательно до, а не после получения машинных результатов. |
В противном случае имеется опасность невольной подгонки вычисляемых значений под желаемые, полученные ранее на машине.
Что такое транслятор, компилятор, интерпретатор?
Транслятор (англ. translator — переводчик) — это программа-переводчик. Она преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд. |
Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.
Компилятор (англ. compiler — составитель, собиратель) читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.
Интерпретатор (англ. interpreter — истолкователь, устный переводчик) переводит и выполняет программу строка за строкой.
После того, как программа откомпилирована, ни сама исходная программа, ни компилятор более не нужны. В то же время программа, обрабатываемая интерпретатором, должна заново переводиться
на машинный язык при каждом очередном запуске программы.
Откомпилированные программы работают быстрее, но интерпретируемые проще исправлять и изменять. |
Каждый конкретный язык ориентирован либо на компиляцию, либо на интерпретацию — в зависимости от того, для каких целей он создавался. Например, Паскаль обычно используется для решения довольно сложных задач, в которых важна скорость работы программ. Поэтому данный язык обычно реализуется с помощью компилятора. С другой стороны, Бейсик создавался как язык для начинающих программистов, для которых построчное выполнение программы имеет неоспоримые преимущества. Иногда для одного языка имеется и компилятор, и интерпретатор. В этом случае для разработки и тестирования программы можно воспользоваться интерпретатором, а затем откомпилировать отлаженную программу, чтобы повысить скорость ее выполнения. |
Что такое триггер?
Триггер — это электронная схема, широко применяемая в регистрах компьютера для надёжного запоминания одного разряда двоичного кода. Триггер имеет два устойчивых состояния, одно из которых соответствует двоичной единице, а другое — двоичному нулю. |
Термин триггер происходит от английского слова trigger — защёлка, спусковой крючок. Для обозначения этой схемы в английском языке чаще употребляется термин flip-flop, что в переводе означает “хлопанье”. Это звукоподражательное название электронной схемы указывает на её способность почти мгновенно переходить (“перебрасываться”) из одного электрического состояния в другое и наоборот.
Самый распространённый тип триггера — так называемый RS-триггер (S и R, соответственно, от английских set
— установка, и reset — сброс). Условное обозначение триггера — на рис. 5.6.
Рис. 5.6
Он имеет два симметричных входа S и R и два симметричных выхода Q и, причем выходной сигнал Q является логическим отрицанием сигнала.
На каждый из двух входов S и R могут подаваться входные сигналы в виде кратковременных импульсов ().
Наличие импульса на входе будем считать единицей, а его отсутствие — нулем.
На рис. 5.7 показана реализация триггера с помощью вентилей ИЛИ-НЕ и соответствующая таблица истинности.
Рис. 5.7
S | R | Q | |||||
0 | 0 | запрещено | |||||
0 | 1 | 1 | 0 | ||||
1 | 0 | 0 | 1 | ||||
1 | 1 | хранение бита |
Проанализируем возможные комбинации значений входов R и S триггера, используя его схему и таблицу истинности схемы ИЛИ-НЕ (табл. 5.5).
1. Если на входы триггера подать S=“1”, R=“0”, то (независимо от состояния) на выходе Q верхнего вентиля появится “0”. После этого на входах нижнего вентиля окажется R=“0”, Q=“0” и выход станет равным “1”.
2. Точно так же при подаче “0” на вход S и “1” на вход R на выходе появится “0”, а на Q — “1”.
3. Если на входы R и S подана логическая “1”, то состояние Q и не меняется.
4. Подача на оба входа R и S логического “0” может привести к неоднозначному результату, поэтому эта комбинация входных сигналов запрещена.
Поскольку один триггер может запомнить только один разряд двоичного кода, то для запоминания байта нужно 8 триггеров, для запоминания килобайта, соответственно, 8 • 210
= 8192 триггеров. Современные микросхемы памяти содержат миллионы триггеров.
Что такое уровень языка программирования?
В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.
Любой алгоритм, как мы знаем, есть последовательность предписаний, выполнив которые можно за конечное число шагов перейти от исходных данных к результату. В зависимости от степени детализации предписаний обычно определяется уровень языка программирования — чем меньше детализация, тем выше уровень языка.
По этому критерию можно выделить следующие уровни языков программирования:
машинные;
машинно-оpиентиpованные (ассемблеpы);
машинно-независимые (языки высокого уровня).
Машинные языки и машинно-ориентированные языки — это языки низкого уровня, требующие указания мелких деталей процесса обработки данных.
Языки же высокого уровня имитируют естественные языки, используя некоторые слова разговорного языка и общепринятые математические символы. Эти языки более удобны для человека.
Языки высокого уровня делятся на:
алгоритмические (Basic, Pascal, C и др.), которые предназначены для однозначного описания алгоритмов;
логические (Prolog, Lisp и др.), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания.
объектно-ориентированные (Object Pascal, C++, Java и др.), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами. Программа на объектно-ориентированном языке, решая некоторую задачу, по сути описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.
Что такое видеоадаптер и графический акселератор?
Видеоадаптер — это электронная плата, которая обрабатывает видеоданные (текст и графику) и управляет работой дисплея. Содержит видеопамять, регистры ввода вывода и модуль BIOS. Посылает в дисплей сигналы управления яркостью лучей и сигналы развертки изображения. |
Наиболее распространенный видеоадаптер на сегодняшний день — адаптер SVGA (Super Video Graphics Array
— супервидеографический массив), который может отображать на экране дисплея 1280х1024 пикселей при 256 цветах и 1024х768 пикселей при 16 миллионах цветов.
С увеличением числа приложений, использующих сложную графику и видео, наряду с традиционными видеоадаптерами широко используются разнообразные устройства компьютерной обработки видеосигналов:
Рис. 2.12. Графический акселератор
Графические акселераторы (ускорители) — специализированные графические сопроцессоры, увеличивающие эффективность видеосистемы. Их применение освобождает центральный процессор от большого объёма операций с видеоданными, так как акселераторы самостоятельно вычисляют, какие пиксели отображать на экране и каковы их цвета.
Фрейм-грабберы, которые позволяют отображать на экране компьютера видеосигнал от видеомагнитофона, камеры, лазерного проигрывателя и т. п., с тем, чтобы захватить нужный кадр в память и впоследствии сохранить его в виде файла.
TV-тюнеры — видеоплаты, превращающие компьютер в телевизор. TV-тюнер позволяет выбрать любую нужную телевизионную программу и отображать ее на экране в масштабируемом окне. Таким образом можно следить за ходом передачи, не прекращая работу.
Что такое видеосистема компьютера?
Видеосистема компьютера состоит из трех компонент:
монитор (называемый также дисплеем);
видеоадаптер;
программное обеспечение (драйверы видеосистемы).
Видеоадаптер посылает в монитор сигналы управления яркостью лучей и синхросигналы строчной и кадровой развёрток. Монитор
преобразует эти сигналы в зрительные образы. А программные средства
обрабатывают видеоизображения — выполняют кодирование и декодирование сигналов, координатные преобразования, сжатие изображений и др.
Монитор — устройство визуального отображения информации (в виде текста, таблиц, рисунков, чертежей и др.). |
Рис. 2.14. Монитор
Подавляющее большинство мониторов сконструированы на базе электронно-лучевой трубки (ЭЛТ), и принцип их работы аналогичен принципу работы телевизора. Мониторы бывают алфавитно-цифровые и графические, монохромные и цветного изображения. Современные компьютеры комплектуются, как правило, цветными графическими мониторами.
Основной элемент дисплея — электронно-лучевая трубка.
Её передняя, обращенная к зрителю часть с внутренней стороны покрыта люминофором — специальным веществом, способным излучать свет при попадании на него быстрых электронов.
Рис. 2.15. Схема электронно-лучевой трубки
Люминофор наносится в виде наборов точек трёх основных цветов — красного, зелёного и синего. Эти цвета называют основными, потому что их сочетаниями (в различных пропорциях) можно представить любой цвет спектра.
Рис. 2.16. Пиксельные триады
Наборы точек люминофора располагаются по треугольным триадам. Триада образует пиксел — точку, из которых формируется изображение (англ. pixel — picture element, элемент картинки).
Расстояние между центрами пикселов называется точечным шагом монитора. Это расстояние существенно влияет на чёткость изображения. Чем меньше шаг, тем выше чёткость. Обычно в цветных мониторах шаг составляет 0,28 мм. При таком шаге глаз человека воспринимает точки триады как одну точку "сложного" цвета.
На противоположной стороне трубки расположены три (по количеству основных цветов) электронные пушки.
Все три пушки "нацелены" на один и тот же пиксел, но каждая из них излучает поток электронов в сторону "своей" точки люминофора.
Чтобы электроны беспрепятственно достигали экрана, из трубки откачивается воздух, а между пушками и экраном создаётся высокое электрическое напряжение, ускоряющее электроны.
Перед экраном на пути электронов ставится маска — тонкая металлическая пластина с большим количеством отверстий, расположенных напротив точек люминофора. Маска обеспечивает попадание электронных лучей только в точки люминофора соответствующего цвета.
Величиной электронного тока пушек и, следовательно, яркостью свечения пикселов, управляет сигнал, поступающий с видеоадаптера.
Рис. 2.17. Ход электронного пучка по экрану
На ту часть колбы, где расположены электронные пушки, надевается отклоняющая система монитора, которая заставляет электронный пучок пробегать поочерёдно все пикселы строчку за строчкой от верхней до нижней, затем возвращаться в начало верхней строки и т.д.
Количество отображённых строк в секунду называется строчной частотой развертки. А частота, с которой меняются кадры изображения, называется кадровой частотой развёртки. Последняя не должна быть ниже 60 Гц, иначе изображение будет мерцать.
Наряду с традиционными ЭЛТ-мониторами все шире используются плоские жидкокристаллические (ЖК) мониторы.
Жидкие кристаллы — это особое состояние некоторых органических веществ, в котором они обладают текучестью и свойством образовывать пространственные структуры, подобные кристаллическим. Жидкие кристаллы могут изменять свою структуру и светооптические свойства под действием электрического напряжения. Меняя с помощью электрического поля ориентацию групп кристаллов и используя введённые в жидкокристаллический раствор вещества, способные излучать свет под воздействием электрического поля, можно создать высококачественные изображения, передающие более 15 миллионов цветовых оттенков.
Рис. 2.18. Жидкокристалический
монитор
Большинство ЖК-мониторов использует тонкую плёнку из жидких кристаллов, помещённую между двумя стеклянными пластинами.
Заряды передаются через так называемую пассивную матрицу — сетку невидимых нитей, горизонтальных и вертикальных, создавая в месте пересечения нитей точку изображения (несколько размытого из-за того, что заряды проникают в соседние области жидкости).
Активные матрицы вместо нитей используют прозрачный экран из транзисторов и обеспечивают яркое, практически не имеющее искажений изображение. Панель при этом разделена на 308160 (642х480) независимых ячеек, каждая из которых состоит из четырех частей (для трёх основных цветов и одна резервная). Таким образом, экран имеет почти 1,25 млн точек, каждая из которых управляется собственным транзистором.
По компактности такие мониторы не знают себе равных. Они занимают в 2 – 3 раза меньше места, чем мониторы с ЭЛТ и во столько же раз легче; потребляют гораздо меньше электроэнергии и не излучают электромагнитных волн, воздействующих на здоровье людей.
Рис. 2.19. Сенсорный экран
Разновидность монитора — сенсорный экран. Здесь общение с компьютером осуществляется путём прикосновения пальцем к определённому месту чувствительного экрана. Этим выбирается необходимый режим из меню, показанного на экране монитора.
Меню — это выведенный на экран монитора список различных вариантов работы компьютера, по которому можно сделать конкретный выбор.
Сенсорными экранами оборудуют рабочие места операторов и диспетчеров, их используют в информационно-справочных системах и т.д.
Что такое вложенные циклы?
Возможны случаи, когда внутри тела цикла необходимо повторять некоторую последовательность операторов, т. е. организовать внутренний цикл. Такая структура получила название цикла в цикле или вложенных циклов. Глубина вложения циклов (то есть количество вложенных друг в друга циклов) может быть различной.
При использовании такой структуры для экономии машинного времени необходимо выносить из внутреннего цикла во внешний все операторы, которые не зависят от параметра внутреннего цикла.
Деление
Деление в любой позиционной системе счисления производится по тем же правилам, как и деление углом в десятичной системе. В двоичной системе деление выполняется особенно просто, ведь очередная цифра частного может быть только нулем или единицей.
Пример 9. Разделим число 30 на число 6.
Ответ: 30 : 6 = 510 = 1012
= 58.
Пример 10. Разделим число 5865 на число 115.
Восьмеричная: 133518 :1638
Ответ: 5865 : 115 = 5110 = 1100112 = 638.
Проверка. Преобразуем полученные частные к десятичному виду:
1100112 = 25 + 24 + 21 + 20
= 51; 638 = 6*81 + 3*80 = 51.
Пример 11. Разделим число 35 на число 14.
Восьмеричная: 438 : 168
Ответ: 35 : 14 = 2,510 = 10,12
= 2,48.
Проверка. Преобразуем полученные частные к десятичному виду:
10,12 = 21 + 2 -1 = 2,5;
2,48 = 2*80 + 4*8-1 = 2,5.
При делении двух нормализованных чисел из порядка делимого вычитается порядок делителя, а мантисса делимого делится на мантиссу делителя. Затем в случае необходимости полученный результат нормализуется. |
Пример 4. Выполнить деление двоичных нормализованных чисел:
0.1111*2100
: 0.101*211 = (0.1111 : 0.101) * 2(100–11) = 1.1*21
= 0.11•210.
Использование представления чисел с плавающей точкой существенно усложняет схему арифметико-логического устройства.
Для чего нужны инструментальные программы?
Инструментальные программные средства — это программы, которые используются в ходе разработки, корректировки или развития других прикладных или системных программ. |
По своему назначению они близки системам программирования. К инструментальным программам, например, относятся:
редакторы;
средства компоновки программ;
отладочные программы, т.е. программы, помогающие находить и устранять ошибки в программе;
вспомогательные программы, реализующие часто используемые системные действия;
графические пакеты программ и т.п.
Инструментальные программные средства могут оказать помощь на всех стадиях разработки ПО.
Для чего нужны отладка и тестирование?
Отладка программы — это процесс поиска и устранения ошибок в программе, производимый по результатам её прогона на компьютере. |
Тестирование — это испытание, проверка правильности работы программы в целом, либо её составных частей. |
Отладка и тестирование (англ. test — испытание) — это два четко различимых и непохожих друг на друга этапа:
при отладке происходит локализация и устранение синтаксических ошибок и явных ошибок кодирования;
в процессе же тестирования проверяется работоспособность программы, не содержащей явных ошибок.
Тестирование устанавливает факт наличия ошибок, а отладка выясняет ее причину. |
Английский термин debugging
("отладка") буквально означает "вылавливание жучков". Термин появился в 1945 г., когда один из первых компьютеров — "Марк-1" прекратил работу из-за того, что в его электрические цепи попал мотылек и заблокировал своими останками одно из тысяч реле машины.
I Решение логических задач средствами алгебры логики
Обычно используется следующая схема решения:
1. изучается условие задачи;
2. вводится система обозначений для логических высказываний;
3. конструируется логическая формула, описывающая логические связи между всеми высказываниями условия задачи;
4. определяются значения истинности этой логической формулы;
5. из полученных значений истинности формулы определяются значения истинности введённых логических высказываний, на основании которых делается заключение о решении.
Пример 1. Трое друзей, болельщиков автогонок "Формула-1", спорили о результатах предстоящего этапа гонок.
— Вот увидишь, Шумахер не придет первым, — сказал Джон. Первым будет Хилл.
— Да нет же, победителем будет, как всегда, Шумахер, — воскликнул Ник. — А об Алези и говорить нечего, ему не быть первым.
Питер, к которому обратился Ник, возмутился:
— Хиллу не видать первого места, а вот Алези пилотирует самую мощную машину.
По завершении этапа гонок оказалось, что каждое из двух предположений двоих друзей подтвердилось, а оба предположения третьего из друзей оказались неверны. Кто выиграл этап гонки?
Решение. Введем обозначения для логических высказываний:
Ш — победит Шумахер; Х — победит Хилл; А — победит Алези.
Реплика Ника "Алези пилотирует самую мощную машину" не содержит никакого утверждения о месте, которое займёт этот гонщик, поэтому в дальнейших рассуждениях не учитывается.
Зафиксируем высказывания каждого из друзей:
Учитывая то, что предположения двух друзей подтвердились, а предположения третьего неверны, запишем и упростим истинное высказывание
Высказывание истинно только при Ш=1, А=0, Х=0.
Ответ. Победителем этапа гонок стал Шумахер.
Пример 2. Некий любитель приключений отправился в кругосветное путешествие на яхте, оснащённой бортовым компьютером. Его предупредили, что чаще всего выходят из строя три узла компьютера — a, b, c, и дали необходимые детали для замены. Выяснить, какой именно узел надо заменить, он может по сигнальным лампочкам на контрольной панели. Лампочек тоже ровно три: x, y и z.
Инструкция по выявлению неисправных узлов такова:
1. если неисправен хотя бы один из узлов компьютера, то горит по крайней мере одна из лампочек x, y, z;
2. если неисправен узел a, но исправен узел с, то загорается лампочка y;
3. если неисправен узел с, но исправен узел b, загорается лампочка y, но не загорается лампочка x;
4. если неисправен узел b, но исправен узел c, то загораются лампочки x и y
или не загорается лампочка x;
5. если горит лампочка х и при этом либо неисправен узел а, либо все три узла a, b, c исправны, то горит и лампочка y.
В пути компьютер сломался. На контрольной панели загорелась лампочка x. Тщательно изучив инструкцию, путешественник починил компьютер. Но с этого момента и до конца плавания его не оставляла тревога. Он понял, что инструкция несовершенна, и есть случаи, когда она ему не поможет.
Какие узлы заменил путешественник? Какие изъяны он обнаружил в инструкции?
Решение. Введем обозначения для логических высказываний:
a — неисправен узел а; x — горит лампочка х;
b — неисправен узел b; y — горит лампочка y;
с — неисправен узел с; z — горит лампочка z.
Правила 1–5 выражаются следующими формулами:
Формулы 1–5 истинны по условию, следовательно, их конъюнкция тоже истинна:
Выражая импликацию через дизъюнкцию и отрицание (напомним, что), получаем:
Подставляя в это тождество конкретные значения истинности x=1, y=0, z=0, получаем:
Отсюда следует, что a=0, b=1, c=1.
Ответ на первый вопрос задачи: нужно заменить блоки b и c; блок а не требует замены. Ответ на второй вопрос задачи получите самостоятельно.
II Решение логических задач табличным способом
При использовании этого способа условия, которые содержит задача, и результаты рассуждений фиксируются с помощью специально составленных таблиц.
Пример 3. В симфонический оркестр приняли на работу трёх музыкантов: Брауна, Смита и Вессона, умеющих играть на скрипке, флейте, альте, кларнете, гобое и трубе.
Известно, что:
1. Смит самый высокий;
2. играющий на скрипке меньше ростом играющего на флейте;
3. играющие на скрипке и флейте и Браун любят пиццу;
4. когда между альтистом и трубачом возникает ссора, Смит мирит их;
5. Браун не умеет играть ни на трубе, ни на гобое.
На каких инструментах играет каждый из музыкантов, если каждый владеет двумя инструментами?
Решение. Составим таблицу и отразим в ней условия задачи, заполнив соответствующие клетки цифрами 0 и 1 в зависимости от того, ложно или истинно соответствующее высказывание.
Так как музыкантов трoе, инструментов шесть и каждый владеет только двумя инструментами, получается, что каждый музыкант играет на инструментах, которыми остальные не владеют.
Из условия 4 следует, что Смит не играет ни на альте, ни на трубе, а из условий 3 и 5, что Браун не умеет играть на скрипке, флейте, трубе и гобое. Следовательно, инструменты Брауна — альт и кларнет. Занесем это в таблицу, а оставшиеся клетки столбцов "альт" и "кларнет" заполним нулями:
скрипка | флейта | альт | кларнет | гобой | труба | ||||||||
Браун | 0 | 0 | 1 | 1 | 0 | 0 | |||||||
Смит | 0 | 0 | 0 | ||||||||||
Вессон | 0 | 0 |
Из таблицы видно, что на трубе может играть только Вессон.
Из условий 1 и 2 следует, что Смит не скрипач.
Так как на скрипке не играет ни Браун, ни Смит, то скрипачом является Вессон. Оба инструмента, на которых играет Вессон, теперь определены, поэтому остальные клетки строки "Вессон" можно заполнить нулями:
скрипка |
флейта |
альт |
кларнет |
гобой |
труба |
|
Браун |
0 |
0 |
1 |
1 |
0 |
0 |
Смит |
0 |
0 |
0 |
0 |
||
Вессон |
1 |
0 |
0 |
0 |
0 |
1 |
скрипка |
флейта |
альт |
кларнет |
гобой |
труба |
|
Браун |
0 |
0 |
1 |
1 |
0 |
0 |
Смит |
0 |
1 |
0 |
0 |
1 |
0 |
Вессон |
1 |
0 |
0 |
0 |
0 |
1 |
Пример 4. Три одноклассника — Влад, Тимур и Юра, встретились спустя 10 лет после окончания школы. Выяснилось, что один из них стал врачом, другой физиком, а третий юристом. Один полюбил туризм, другой бег, страсть третьего — регби.
Юра сказал, что на туризм ему не хватает времени, хотя его сестра — единственный врач в семье, заядлый турист. Врач сказал, что он разделяет увлечение коллеги.
Забавно, но у двоих из друзей в названиях их профессий и увлечений не встречается ни одна буква их имен.
Определите, кто чем любит заниматься в свободное время и у кого какая профессия.
Решение. Здесь исходные данные разбиваются на тройки (имя — профессия — увлечение).
Из слов Юры ясно, что он не увлекается туризмом и он не врач. Из слов врача следует, что он турист.
Имя |
Юра |
||
Профессия |
врач |
||
Увлечение |
туризм |
Юра не юрист и не регбист, так как в его имени содержатся буквы "ю" и "р". Следовательно, окончательно имеем:
Имя |
Юра |
Тимур |
Влад |
Профессия |
физик |
врач |
юрист |
Увлечение |
бег |
туризм |
регби |
Пример 5. Три дочери писательницы Дорис Кей — Джуди, Айрис и Линда, тоже очень талантливы. Они приобрели известность в разных видах искусств — пении, балете и кино. Все они живут в разных городах, поэтому Дорис часто звонит им в Париж, Рим и Чикаго.
Известно, что:
1. Джуди живет не в Париже, а Линда — не в Риме;
2. парижанка не снимается в кино;
3. та, кто живет в Риме, певица;
4. Линда равнодушна к балету.
Где живет Айрис, и какова ее профессия?
Решение. Составим таблицу и отразим в ней условия 1 и 4, заполнив клетки цифрами 0 и 1 в зависимости от того, ложно или истинно соответствующее высказывание:
Париж |
Рим |
Чикаго |
Пение |
Балет |
Кино |
|
0 |
Джуди |
|||||
Айрис |
||||||
0 |
Линда |
0 |
Из таблицы сразу видно, что Линда киноактриса, а Джуди и Айрис не снимаются в кино.
Париж |
Рим |
Чикаго |
Пение |
Балет |
Кино |
|
0 |
Джуди |
0 |
||||
Айрис |
0 |
|||||
0 |
Линда |
0 |
0 |
1 |
Согласно условию 2, парижанка не снимается в кино, следовательно, Линда живет не в Париже. Но она живет и не в Риме. Следовательно, Линда живет в Чикаго. Так как Линда и Джуди живут не в Париже, там живет Айрис. Джуди живет в Риме и, согласно условию 3, является певицей. А так как Линда киноактриса, то Айрис балерина.
В результате постепенного заполнения получаем следующую таблицу:
Париж |
Рим |
Чикаго |
Пение |
Балет |
Кино |
|
0 |
0 |
1 |
Джуди |
1 |
0 |
0 |
1 |
0 |
0 |
Айрис |
0 |
1 |
0 |
0 |
0 |
1 |
Линда |
0 |
0 |
1 |
III Решение логических задач с помощью рассуждений
Этим способом обычно решают несложные логические задачи.
Пример 6. Вадим, Сергей и Михаил изучают различные иностранные языки: китайский, японский и арабский. На вопрос, какой язык изучает каждый из них, один ответил: "Вадим изучает китайский, Сергей не изучает китайский, а Михаил не изучает арабский". Впоследствии выяснилось, что в этом ответе только одно утверждение верно, а два других ложны. Какой язык изучает каждый из молодых людей?
Решение. Имеется три утверждения:
1. Вадим изучает китайский;
2. Сергей не изучает китайский;
3. Михаил не изучает арабский.
Если верно первое утверждение, то верно и второе, так как юноши изучают разные языки. Это противоречит условию задачи, поэтому первое утверждение ложно.
Если верно второе утверждение, то первое и третье должны быть ложны. При этом получается, что никто не изучает китайский. Это противоречит условию, поэтому второе утверждение тоже ложно.
Остается считать верным третье утверждение, а первое и второе — ложными. Следовательно, Вадим не изучает китайский, китайский изучает Сергей.
Ответ: Сергей изучает китайский язык, Михаил — японский, Вадим — арабский.
Пример 7. В поездке пятеро друзей — Антон, Борис, Вадим, Дима и Гриша, знакомились с попутчицей. Они предложили ей отгадать их фамилии, причём каждый из них высказал одно истинное и одно ложное утверждение:
Дима сказал: "Моя фамилия — Молотов, а фамилия Бориса — Хрущев". Антон сказал: "Молотов — это моя фамилия, а фамилия Вадима — Брежнев". Борис сказал: "Фамилия Вадима — Тихонов, а моя фамилия — Молотов". Вадим сказал: "Моя фамилия — Брежнев, а фамилия Гриши — Чехов". Гриша сказал: "Да, моя фамилия Чехов, а фамилия Антона — Тихонов".
Какую фамилию носит каждый из друзей?
Решение. Обозначим высказывательную форму "юноша по имени А носит фамилию Б" как АБ, где буквы А и Б соответствуют начальным буквам имени и фамилии.
Зафиксируем высказывания каждого из друзей:
1. ДМ и БХ;
2. АМ и ВБ;
3. ВТ и БМ;
4. ВБ и ГЧ;
5. ГЧ и АТ.
Допустим сначала, что истинно ДМ. Но, если истинно ДМ, то у Антона и у Бориса должны быть другие фамилии, значит АМ и БМ ложно. Но если АМ и БМ ложны, то должны быть истинны ВБ и ВТ, но ВБ и ВТ одновременно истинными быть не могут.
Значит остается другой случай: истинно БХ. Этот случай приводит к цепочке умозаключений: БХ
истинно ® БМ ложно ® ВТ истинно ® АТ ложно ® ГЧ
истинно ® ВБ ложно ® АМ истинно.
Ответ: Борис — Хрущев, Вадим — Тихонов, Гриша — Чехов, Антон — Молотов, Дима — Брежнев.
Пример 8. Министры иностранных дел России, США и Китая обсудили за закрытыми дверями проекты соглашения о полном разоружении, представленные каждой из стран. Отвечая затем на вопрос журналистов: "Чей именно проект был принят?", министры дали такие ответы:
Россия — "Проект не наш, проект не США";
США — "Проект не России, проект Китая";
Китай — "Проект не наш, проект России".
Один из них (самый откровенный) оба раза говорил правду; второй (самый скрытный) оба раза говорил неправду, третий (осторожный) один раз сказал правду, а другой раз — неправду.
Определите, представителями каких стран являются откровенный, скрытный и осторожный министры.
Решение. Для удобства записи пронумеруем высказывания дипломатов:
Россия — "Проект не наш" (1), "Проект не США" (2);
США — "Проект не России" (3), "Проект Китая" (4);
Китай — "Проект не наш" (5), "Проект России" (6).
Узнаем, кто из министров самый откровенный.
Если это российский министр, то из справедливости (1) и (2) следует, что победил китайский проект. Но тогда оба утверждения министра США тоже справедливы, чего не может быть по условию.
Если самый откровенный — министр США, то тогда вновь получаем, что победил китайский проект, значит оба утверждения российского министра тоже верны, чего не может быть по условию.
Получается, что наиболее откровенным был китайский министр. Действительно, из того, что (5) и (6) справедливы, cледует, что победил российский проект. А тогда получается, что из двух утверждений российского министра первое ложно, а второе верно. Оба же утверждения министра США неверны.
Ответ: Откровеннее был китайский министр, осторожнее — российский, скрытнее — министр США.
Из каких этапов состоит процесс тестирования?
Процесс тестирования можно разделить на три этапа.
Проверка в нормальных условиях.
Предполагает тестирование на основе данных, которые характерны для реальных условий функционирования программы.
Проверка в экстремальных условиях.
Тестовые данные включают граничные значения области изменения входных переменных, которые должны восприниматься программой как правильные данные. Типичными примерами таких значений являются очень маленькие или очень большие числа и отсутствие данных.
Еще один тип экстрем аьных условий — это граничные объемы данных, когда массивы состоят из слишком малого или слишком большого числа элементов.
Проверка в исключительных ситуациях.
Проводится с использованием данных, значения которых лежат за пределами допустимой области изменений.
Известно, что все программы разрабатываются в расчете на обработку какого-то ограниченного набора данных. Поэтому важно получить ответ на следующие вопросы:
? Что произойдет, если программе, не расчитанной на обработку отрицательных и нулевых значений переменных, в результате какой-либо ошибки придется иметь дело как раз с такими данными?
? Как будет вести себя программа, работающая с массивами, если количество их элементов певысит величину, указанную в объявлении массива?
? Что произойдет, если числа будут слишком малыми или слишком большими?
Наихудшая ситуация складывается тогда, когда программа воспринимает неверные данные как правильные и выдает неверный, но правдоподобный результат.
Программа должна сама отвергать любые данные, которые она не в состоянии обрабатывать правильно. |
Является ли отсутствие синтаксических ошибок свидетельством правильности программы?
Обычно синтаксические ошибки выявляются на этапе трансляции. Многие же другие ошибки транслятору выявить невозможно, так как транслятору неизвестны замыслы программиста.
Отсутствие сообщений машины о синтаксических ошибках является необходимым , но не достаточным условием, чтобы считать программу правильной. |
Примеры синтаксических ошибок:
пропуск знака пунктуации;
несогласованность скобок;
неправильное формирование оператора;
неверное образование имен переменных;
неверное написание служебных слов;
отсутствие условий окончания цикла;
отсутствие описания массива и т.п.
Как используются компьютеры в административном управлении?
Основные применения компьютеров в административном управлении следующие.
Электронный офис. Это система автоматизации работы учреждения, основанная на использовании компьютерной техники. В нее обычно входят такие компоненты, как:
текстовые редакторы;
интегрированные пакеты программ;
электронные таблицы;
системы управления базами данных;
графические редакторы и графические библиотеки (для получения диаграмм, схем, графиков и др.);
электронные записные книжки;
электронные календари с расписанием деловых встреч, заседаний и др.;
электронные картотеки, обеспечивающие каталогизацию и поиск документов (писем, отчетов и др.) с помощью компьютера;
автоматические телефонные справочники, которые можно листать на экране, установить курсором нужный номер и соединиться.
Более подробно многие из перечисленных компонент описаны в главе 6 «Программное обеспечение».
Автоматизация документооборота с использованием специальных электронных устройств:
адаптера (лат. adaptare — приспособлять) связи с периферийными устройствами, имеющего выход на телефонную линию;
сканера (англ. scan — поле зрения) для ввода в компьютер документов — текстов, чертежей, графиков, рисунков, фотографий.
Электронная почта. Это система пересылки сообщений между пользователями вычислительных систем, в которой компьютер берет на себя все функции по хранению и пересылке сообщений. Для осуществления такой пересылки отправитель и получатель не обязательно должны одновременно находиться у дисплеев и не обязательно должны быть подключены к одному компьютеру.
Отправитель сообщения прежде всего запускает программу отправки почты и создает файл сообщения. Затем это сообщение передается в систему пересылки сообщений, которая отвечает за его доставку адресатам. Спустя некоторое время сообщение доставляется адресату и помещается в его «почтовый ящик», размещенный на магнитном диске. Затем получатель запускает программу, которая извлекает полученные сообщения, заносит их в архив и т.п.
Система контроля исполнения приказов и распоряжений.
Система телеконференций. Это основанная на использовании компьютерной техники система, позволяющая пользователям, несмотря на их взаимную удаленность в пространстве, а иногда, и во времени, участвовать в совместных мероприятиях, таких, как организация и управление сложными проектами.
Пользователи обеспечиваются терминалами (обычно это дисплеи и клавиатуры ), подсоединенными к компьютеру, которые позволяют им связываться с другими членами группы. Для передачи информации между участниками совещания используются линии связи.
Работа системы регулируется координатором, в функции которого входит организация работы участников совещания, обеспечение их присутствия на совещании и передача сообщаемой ими информации другим участникам совещания.
В некоторых системах телеконференцсвязи участники имеют возможность «видеть» друг друга, что обеспечивается подсоединенными к системам телевизионными камерами и дисплеями.
Как используются компьютеры в быту?
В последнее время компьютеры «проникли» в жилища людей и постепенно становятся предметами первой необходимости. Есть два основных направления использования компьютеров дома.
1. Обеспечение нормальной жизнедеятельности жилища:
o охранная автоматика, противопожарная автоматика, газоанализаторная автоматика;
o управление освещенностью, расходом электроэнергии, отопительной системой, управление микроклиматом;
o электроплиты, холодильники, стиральные машины со встроенными микропроцессорами.
2. Обеспечение информационных потребностей людей, находящихся в жилище:
o заказы на товары и услуги;
o процессы обучения;
o общение с базами данных и знаний;
o сбор данных о состоянии здоровья;
o обеспечение досуга и развлечений;
o обеспечение справочной информацией;
o электронная почта, телеконференции;
o Интернет.
Как используются компьютеры в торговле?
В организации компьютерного обслуживания торговых предприятий большое распространение получил так называемый штриховой код (бар-код). Он представляет собой серию широких и узких линий, в которых зашифрован номер торгового изделия.
Бар-код
Этот номер записан на этикетке изделия дважды: в форме двух пятизначных чисел и в виде широких и узких линий. Первые пять цифр указывают фирму-поставщика, а другие пять — номер изделия в номенклатуре выпускаемых данной фирмой товаров.
Для печати штриховых кодов используются специальные приставки на обычных принтерах. Полученные коды считываются с помощью сканеров, преобразуются в электрические импульсы, переводятся в двоичный код и передаются в память компьютера.
Используя штриховой код, компьютер печатает на выдаваемом покупателю чеке название товара и его цену.
Информация о каждом имеющемся в магазине или на складе товаре занесена в базу данных. По запросу компьютер анализирует:
количество оставшегося товара;
правила его налогообложения;
юридические ограничения на его продажу и др.
Одновременно с подачей сведений о проданном товаре на дисплей кассового аппарата компьютер производит соответствующую коррекцию (уточнение) товарной ведомости.
Обычно программное обеспечение устроено так, что сводная информация о наличии товаров выдается управляющему магазина к концу рабочего дня. Вместе с тем управляющий имеет возможность обновлять данные об изменении цен и поступлении новых партий товаров.
В перспективе торговля, по-видимому, превратится в компьютеризованную продажу товаров по заказам.
То же самое программное обеспечение, которое применяется для организации учета в торговле, можно использовать и для других целей, например для контроля наличия комплектующих изделий на заводской сборочной линии, учета сплавляемых по реке бревен и др.
Как измеряется количество информации?
Какое количество информации содержится, к примеру, в тексте романа "Война и мир", в фресках Рафаэля или в генетическом коде человека? Ответа на эти вопросы наука не даёт и, по всей вероятности, даст не скоро.
А возможно ли объективно измерить количество информации? Важнейшим результатом теории информации является вывод:
В определенных, весьма широких условиях можно пренебречь качественными особенностями информации, выразить её количество числом, а также сравнить количество информации, содержащейся в различных группах данных. |
В настоящее время получили распространение подходы к определению понятия "количество информации", основанные на том, что информацию, содержащуюся в сообщении, можно нестрого трактовать в смысле её новизны или, иначе, уменьшения неопределённости наших знаний об объекте.
Так, американский инженер Р. Хартли (1928 г.) процесс получения информации рассматривает как выбор одного сообщения из конечного наперёд заданного множества из N равновероятных сообщений, а количество информации I, содержащееся в выбранном сообщении, определяет как двоичный логарифм N.
Формула Хартли: I = log2N. |
Допустим, нужно угадать одно число из набора чисел от единицы до ста. По формуле Хартли можно вычислить, какое количество информации для этого требуется: I = log2100 » 6,644. То есть сообщение о верно угаданном числе содержит количество информации, приблизительно равное 6,644 единиц информации.
Приведем другие примеры равновероятных сообщений:
1. при бросании монеты: "выпала решка", "выпал орел";
2. на странице книги: "количество букв чётное", "количество букв нечётное".
Определим теперь, являются ли равновероятными сообщения "первой выйдет из дверей здания женщина" и "первым выйдет из дверей здания мужчина". Однозначно ответить на этот вопрос нельзя. Все зависит от того, о каком именно здании идет речь.
Если это, например, станция метро, то вероятность выйти из дверей первым одинакова для мужчины и женщины, а если это военная казарма, то для мужчины эта вероятность значительно выше, чем для женщины.
Для задач такого рода американский учёный Клод Шеннон предложил в 1948 г. другую формулу определения количества информации, учитывающую возможную неодинаковую вероятность сообщений в наборе.
Формула Шеннона: I = – ( p1 log2 p1 + p2 log2 p2 + . . . + pN log2 pN ), где pi — вероятность того, что именно i-е сообщение выделено в наборе из N сообщений. |
Помимо двух рассмотренных подходов к определению количества информации, существуют и другие. Важно помнить, что любые теоретические результаты применимы лишь к определённому кругу случаев, очерченному первоначальными допущениями.
В качестве единицы информации условились принять один бит (англ. bit — binary, digit — двоичная цифра).
Бит в теории информации — количество информации, необходимое для различения двух равновероятных сообщений. А в вычислительной технике битом называют наименьшую "порцию" памяти, необходимую для хранения одного из двух знаков "0" и "1", используемых для внутримашинного представления данных и команд. |
Широко используются также ещё более крупные производные единицы информации:
1 Килобайт (Кбайт) = 1024 байт = 210 байт,
1 Мегабайт (Мбайт) = 1024 Кбайт = 220 байт,
1 Гигабайт (Гбайт) = 1024 Мбайт = 230 байт.
В последнее время в связи с увеличением объёмов обрабатываемой информации входят в употребление такие производные единицы, как:
1 Терабайт (Тбайт) = 1024 Гбайт = 240 байт,
1 Петабайт (Пбайт) = 1024 Тбайт = 250 байт.
За единицу информации можно было бы выбрать количество информации, необходимое для различения, например, десяти равновероятных сообщений. Это будет не двоичная (бит), а десятичная (дит) единица информации.
Как классифицируется программное обеспечение?
В первом приближении все программы, работающие на компьютере, можно условно разделить на три категории (рис. 6.1):
1. прикладные программы, непосредственно обеспечивающие выполнение необходимых пользователям работ;
2. системные программы, выполняющие различные вспомогательные функции, например:
o управление ресурсами компьютера;
o создание копий используемой информации;
o проверка работоспособности устройств компьютера;
o выдача справочной информации о компьютере и др.;
3. инструментальные программные системы, облегчающие процесс создания новых программ для компьютера.
Рис. 6.1. Категории программного обеспечения
При построении классификации ПО нужно учитывать тот факт, что стремительное развитие вычислительной техники и расширение сферы приложения компьютеров резко ускорили процесс эволюции программного обеспечения.
Если раньше можно было по пальцам перечислить основные категории ПО — операционные системы, трансляторы, пакеты прикладных программ, то сейчас ситуация коренным образом изменилась.
Развитие ПО пошло как вглубь (появились новые подходы к построению операционных систем, языков программирования и т.д.), так и вширь (прикладные программы перестали быть прикладными и приобрели самостоятельную ценность).
Соотношение между требующимися программными продуктами и имеющимися на рынке меняется очень быстро.
Даже классические программные продукты, такие, как операционные системы, непрерывно развиваются и наделяются интеллектуальными функциями, многие из которых ранее относились только к интеллектуальным возможностям человека.
Кроме того, появились нетрадиционные программы, классифицировать которые по устоявшимся критериям очень трудно, а то и просто невозможно, как, например, программа — электронный собеседник.
На сегодняшний день можно сказать, что более или менее определённо сложились следующие группы программного обеспечения:
операционные системы и оболочки;
системы программирования (трансляторы, библиотеки подпрограмм, отладчики и т.д.);
инструментальные системы;
интегрированные пакеты программ;
динамические электронные таблицы;
системы машинной графики;
системы управления базами данных (СУБД);
прикладное программное обеспечение.
Структура программного обеспечения показана на рис. 6.2. Разумеется, эту классификацию нельзя считать исчерпывающей, но она более или менее наглядно отражает направления совершенствования и развития программного обеспечения.
Как классифицируют компьютерные сети по степени географического распространения?
По степени географического распространения сети делятся на локальные, городские, корпоративные, глобальные и др.
Локальная сеть (ЛВС или LAN — Local Area NetWork) — сеть, связывающая ряд компьютеров в зоне, ограниченной пределами одной комнаты, здания или предприятия. |
Небольшая офисная локальная сеть
Глобальная сеть (ГВС или WAN — World Area NetWork) — сеть, соединяющая компьютеры, удалённые географически на большие расстояния друг от друга. Отличается от локальной сети более протяженными коммуникациями (спутниковыми, кабельными и др.). Глобальная сеть объединяет локальные сети. |
Глобальная сеть
Городская сеть (MAN — Metropolitan Area NetWork) — сеть, которая обслуживает информационные потребности большого города. |
Как организуется межкомпьютерная связь?
Назовём задачи, которые трудно или невозможно решить без организации информационной связи между различными компьютерами:
перенос информации на большие расстояния (сотни, тысячи километров);
совместное использование несколькими компьютерами дорогостоящих аппаратных, программных или информационных ресурсов — мощного процессора, ёмкого накопителя, высокопроизводительного лазерного принтера, баз данных, программного обеспечения и т.д.;
перенос информации с одного компьютера на другой при несовместимых флоппи-дисководах (5,25 и 3,5 дюйма);
совместная работа над большим проектом, когда исполнили должны всегда иметь последние (актуальные) копии общих данных во избежание путаницы, и т.д.
Есть три основных способа организации межкомпьютерной связи:
объединение двух рядом расположенных компьютеров через их коммуникационные порты посредством специального кабеля;
передача данных от одного компьютера к другому посредством модема с помощью проводных или спутниковых линий связи;
объединение компьютеров в компьютерную сеть.
Часто при организации связи между двумя компьютерами за одним компьютером закрепляется роль поставщика ресурсов (программ, данных и т.д.), а за другим — роль пользователя этих ресурсов. В этом случае первый компьютер называется сервером, а второй — клиентом или рабочей станцией. Работать можно только на компьютере-клиенте под управлением специального программного обеспечения.
Сервер (англ. serve — обслуживать) — это высокопроизводительный компьютер с большим объёмом внешней памяти, который обеспечивает обслуживание других компьютеров путем управления распределением дорогостоящих ресурсов совместного пользования (программ, данных и периферийного оборудования). |
Клиент (иначе, рабочая станция) — любой компьютер, имеющий доступ к услугам сервера. |
Сетевой сервер
HP LD PRO
Например, сервером может быть мощный компьютер, на котором размещается центральная база данных, а клиентом — обычный компьютер, программы которого по мере необходимости запрашивают данные с сервера.
В некоторых случаях компьютер может быть одновременно и клиентом, и сервером. Это значит, что он может предоставлять свои ресурсы и хранимые данные другим компьютерам и одновременно использовать их ресурсы и данные.
Клиентом также называют прикладную программу, которая от имени пользователя получает услуги сервера. Соответственно, программное обеспечение, которое позволяет компьютеру предоставлять услуги другому компьютеру, называют сервером — так же, как и сам компьютер.
Для преодоления несовместимости интерфейсов отдельных компьютеров вырабатывают специальные стандарты, называемые протоколами коммуникации.
Протокол коммуникации — это согласованный набор конкретных правил обмена информацией между разными устройствами передачи данных. Имеются протоколы для скорости передачи, форматов данных, контроля ошибок и др. |
Протоколы коммуникации предписывают разбить весь объём передаваемых данных на пакеты — отдельные блоки фиксированного размера. Пакеты нумеруются, чтобы их затем можно было собрать в правильной последовательности. К данным, содержащимся в пакете, добавляется дополнительная информация примерно такого формата:
Адрес получателя |
Адрес отправителя |
Длина |
Данные |
Поле контрольной суммы |
При установлении связи устройства обмениваются сигналами для согласования коммуникационных каналов и протоколов. Этот процесс называется подтверждением установления связи
(англ. HandShake — рукопожатие).
Как пеpевести число из двоичной (восьмеpичной, шестнадцатеpичной) системы в десятичную?
При переводе числа из двоичной (восьмеричной, шестнадцатеричной) системы в десятичную надо это число представить в виде суммы степеней основания его системы счисления. |
Примеpы:
Как пеpевести пpавильную десятичную дpобь в любую другую позиционную систему счисления?
Пpи переводе правильной десятичной дpоби в систему счисления с основанием q необходимо сначала саму дробь, а затем дробные части всех последующих произведений последовательно умножать на q, отделяя после каждого умножения целую часть пpоизведения. Число в новой системе счисления записывается как последовательность полученных целых частей пpоизведения. |
Умножение пpоизводится до тех поp, пока дpобная часть пpоизведения не станет pавной нулю. Это значит, что сделан точный пеpевод. В пpотивном случае пеpевод осуществляется до заданной точности. Достаточно того количества цифp в pезультате, котоpое поместится в ячейку.
Пример: Перевести число 0,35 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:
Ответ: 0,3510 = 0,010112
= 0,2638 = 0,5916 .
Как передаётся информация?
Информация передаётся в виде сообщений от некоторого источника информации к её приёмнику посредством канала связи между ними. Источник посылает передаваемое сообщение, которое кодируется в передаваемый сигнал. Этот сигнал посылается по каналу связи. В результате в приёмнике появляется принимаемый сигнал, который декодируется и становится принимаемым сообщением.
канал связи | |||||
ИСТОЧНИК |
———————————® |
ПРИЁМНИК |
Примеры:
1. сообщение, содержащее информацию о прогнозе погоды, передаётся приёмнику (телезрителю) от источника — специалиста-метеоролога посредством канала связи — телевизионной передающей аппаратуры и телевизора;
2. живое существо своими органами чувств (глаз, ухо, кожа, язык и т.д.) воспринимает информацию из внешнего мира, перерабатывает её в определенную последовательность нервных импульсов, передает импульсы по нервным волокнам, хранит в памяти в виде состояния нейронных структур мозга, воспроизводит в виде звуковых сигналов, движений и т.п., использует в процессе своей жизнедеятельности.
Передача информации по каналам связи часто сопровождается воздействием помех, вызывающих искажение и потерю информации.
Как перевести целое число из десятичной системы в любую другую позиционную систему счисления?
При переводе целого десятичного числа в систему с основанием q его необходимо последовательно делить на q до тех пор, пока не останется остаток, меньший или равный q–1. Число в системе с основанием q записывается как последо-вательность остатков от деления, записанных в обратном порядке, начиная с последнего. |
Пример: Перевести число 75 из десятичной системы в двоичную, восьмеричную и шестнадцатеричную:
Ответ: 7510 = 1 001 0112
= 1138 = 4B16.
Как порождаются целые числа в позиционных системах счисления?
В каждой системе счисления цифры упорядочены в соответствии с их значениями: 1 больше 0, 2 больше 1 и т.д.
Продвижением цифры называют замену её следующей по величине. |
Продвинуть цифру 1 значит заменить её на 2, продвинуть цифру 2 значит заменить её на 3 и т.д. Продвижение старшей цифры (например, цифры 9 в десятичной системе) означает замену её на 0. В двоичной системе, использующей только две цифры – 0 и 1, продвижение 0 означает замену его на 1, а продвижение 1 – замену её на 0.
Целые числа в любой системе счисления порождаются с помощью Правила счета [44]:
Для образования целого числа, следующего за любым данным целым числом, нужно продвинуть самую правую цифру числа; если какая-либо цифра после продвижения стала нулем, то нужно продвинуть цифру, стоящую слева от неё. |
Применяя это правило, запишем первые десять целых чисел
в двоичной системе: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001;
в троичной системе: 0, 1, 2, 10, 11, 12, 20, 21, 22, 100;
в пятеричной системе: 0, 1, 2, 3, 4, 10, 11, 12, 13, 14;
восьмеричной системе: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11.
Как представляются в компьютере целые числа?
Целые числа могут представляться в компьютере со знаком или без знака.
Целые числа без знака обычно занимают в памяти один или два байта и принимают в однобайтовом формате значения от 000000002
до 111111112 , а в двубайтовом формате — от 00000000 000000002
до 11111111 111111112.
Диапазоны значений целых чисел без знака
Формат числа в байтах | Диапазон | ||||
Запись с порядком | Обычная запись | ||||
1 | 0 ... 28–1 | 0 ... 255 | |||
2 | 0 ... 216–1 | 0 ... 65535 |
Примеры:
а) число 7210
= 10010002 в однобайтовом формате:
б) это же число в двубайтовом формате:
в) число 65535 в двубайтовом формате:
Целые числа со знаком обычно занимают в памяти компьютера один, два или четыре байта, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак “плюс” кодируется нулем, а “минус” — единицей.
Диапазоны значений целых чисел со знаком
Формат числа в байтах | Диапазон | ||||
Запись с порядком | Обычная запись | ||||
1 | –27
... 27–1 | –128 ... 127 | |||
2 | –215
... 215–1 | –32768 ... 32767 | |||
4 | –231
... 231–1 | –2147483648 ... 2147483647 |
Рассмотрим особенности записи целых чисел со знаком на примере однобайтового формата, при котором для знака отводится один разряд, а для цифр абсолютной величины – семь разрядов.
В компьютерной технике применяются три формы записи (кодирования) целых чисел со знаком: прямой код, обратный
код, дополнительный код. |
Последние две формы применяются особенно широко, так как позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией cложения.
Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково — двоичными кодами с цифрой 0 в знаковом разряде. Например:
Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное изображение.
1. Прямой код. В знаковый разряд помещается цифра 1, а в разряды цифровой части числа — двоичный код его абсолютной величины. Например:
2. Обратный код. Получается инвертированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяются единицами, а единицы — нулями. Например:
3. Дополнительный код. Получается образованием обратного кода с последующим прибавлением единицы к его младшему разряду. Например:
Обычно отрицательные
десятичные числа при вводе в машину автоматически преобразуются в обратный или дополнительный двоичный код и в таком виде хранятся, перемещаются и участвуют в операциях. При выводе таких чисел из машины происходит обратное преобразование в отрицательные десятичные числа. |
Как представляются в компьютере вещественные числа?
Вещественными числами (в отличие от целых) в компьютерной технике называются числа, имеющие дробную часть. |
При их написании вместо запятой принято писать точку. Так, например, число 5 — целое, а числа 5.1 и 5.0 — вещественные.
Для удобства отображения чисел, принимающих значения из достаточно широкого диапазона (то есть, как очень маленьких, так и очень больших), используется форма записи чисел с порядком основания системы счисления. Например, десятичное число 1.25 можно в этой форме представить так:
1.25*100
= 0.125*101 = 0.0125*102 = ... ,
или так:
12.5*10–1
= 125.0*10–2 = 1250.0*10–3 = ... .
Любое число N в системе счисления с основанием q можно записать в виде N = M * qp, где M называется мантиссой числа, а p — порядком. Такой способ записи чисел называется представлением с плавающей точкой. |
Если “плавающая” точка расположена в мантиссе перед первой значащей цифрой, то при фиксированном количестве разрядов, отведённых под мантиссу, обеспечивается запись максимального количества значащих цифр числа, то есть максимальная точность представления числа в машине. Из этого следует:
Мантисса должна быть правильной дробью, первая цифра которой отлична от нуля: M из [0.1, 1). |
Такое, наиболее выгодное для компьютера, представление вещественных чисел называется нормализованным.
Мантиссу и порядок q-ичного числа принято записывать в системе с основанием q, а само основание — в десятичной системе.
Примеры нормализованного представления:
Десятичная система Двоичная система
753.15 = 0.75315*103; -101.01 = -0.10101*211 (порядок 112 = 310)
-0.000034 = -0.34*10-4; -0.000011 = 0.11*2-100 (порядок -1002 = -410)
Вещественные числа в компьютерах различных типов записываются по-разному. При этом компьютер обычно предоставляет программисту возможность выбора из нескольких числовых форматов наиболее подходящего для конкретной задачи — с использованием четырех, шести, восьми или десяти байтов.
В качестве примера приведем характеристики форматов вещественных чисел, используемых IBM-совместимыми персональными компьютерами:
Форматы вещественных чисел |
Размер в байтах |
Примерный диапазон абсолютных значений |
Количество значащих десятичных цифр |
Одинарный |
4 |
10–45 … 1038 |
7 или 8 |
Вещественный |
6 |
10–39 … 1038 |
11 или 12 |
Двойной |
8 |
10–324 … 10308 |
15 или 16 |
Расширенный |
10 |
10–4932 … 104932 |
19 или 20 |
При хранении числа с плавающей точкой отводятся разряды для мантиссы, порядка, знака числа и знака порядка:
Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате. |
1. Число 6.2510
= 110.012 = 0,11001•211 :
2. Число –0.12510
= –0.0012 = –0.1*2–10 (отрицательный порядок записан в дополнительном коде):
Как применяются компьютеры в сельском хозяйстве?
Имея компьютер, фермер может легко и быстро рассчитать требуемое для посева количество семян и количество удобрений, спланировать свой бюджет и вести учет домашнего скота. Компьютерные системы могут планировать севооборот, расчитывать график полива сельхозкультур, управлять подачей корма скоту и выполнять много других полезных функций.
На наших глазах происходит технологическая революция в сельском хозяйстве — компьютеры и индивидуальные микродатчики позволяют контролировать состояние и режим каждого отдельного животного и растения. Это высвобождает значительные материальные и людские ресурсы, резко улучшает качество жизни человека.
Как производятся арифметические операции в позиционных системах счисления?
Рассмотрим основные арифметические операции: сложение, вычитание, умножение и деление. Правила выполнения этих операций в десятичной системе хорошо известны — это сложение, вычитание, умножение столбиком и деление углом. Эти правила применимы и ко всем другим позиционным системам счисления. Только таблицами сложения и умножения надо пользоваться особыми для каждой системы.
Как проконтролировать текст программы до выхода на компьютер?
Текст программы можно проконтролировать за столом с помощью просмотра, проверки и прокрутки.
Просмотр. Текст программы просматривается на предмет обнаружения описок и расхождений с алгоритмом. Нужно просмотреть организацию всех циклов, чтобы убедиться в правильности операторов, задающих кратности циклов. Полезно посмотреть еще раз условия в условных операторах,аргументы в обращениях к подпрограммам и т.п.
Проверка. При проверке программы программист по тексту программы мысленно старается восстановить тот вычислительный процесс, который определяет программа, после чего сверяет его с требуемым процессом. На время проверки нужно "забыть", что должна делать программа , и "узнавать" об этом по ходу её проверки. Только после окончания проверки программы можно "вспомнить" о том, что она должна делать и сравнить реальные действия программы с требуемыми.
Прокрутка. Основой прокрутки является имитация программистом за столом выполнения программы на машине. Для выполнения прокрутки приходится задаваться какими-то исходными данными и производить над ними необходимые вычисления. Прокрутка — трудоемкий процесс, поэтому ее следует применять лишь для контроля логически сложных участков программ. Исходные данные должны выбираться такими, чтобы в прокрутку вовлекалось большинство ветвей программы.
Как работают беспроводные сети?
Беспроводные сети используются там, где прокладка кабелей затруднена, нецелесообразна или просто невозможна. Например, в исторических зданиях, промышленных помещениях с металлическим или железобетонным полом, в офисах, полученных в краткосрочную аренду, на складах, выставках, конференциях и т.п. [48]
Топология "Все-Со-Всеми"
В этих случаях сеть реализуется при помощи сетевых радио-адаптеров, снабжённых всенаправленными антеннами и использующих в качестве среды передачи информации радиоволны.
Такая сеть реализуется топологией “Все-Со-Всеми” и работоспособна при дальности 50–200 м.
Для связи между беспроводной и кабельной частями сети используется специальное устройство, называемое точкой входа (или радиомостом). Можно использовать и обычный компьютер, в котором установлены два сетевых адаптера — беспроводной
и кабельный.
Топология "точка-точка"
Другой важной областью применения беспроводных сетей является организация связи между удалёнными сегментами локальных сетей при отсутствии инфраструктуры передачи данных (кабельных сетей общего доступа, высококачественных телефонных линий и др.), что типично для нашей страны. В этом случае для наведения беспроводных мостов между двумя удалёнными сегментами используются радиомосты с антенной направленного типа.
Топология типа "звезда"
Если в сеть нужно объединить несколько сегментов, то используется топология типа “звезда”. При этом в центральном узле устанавливается всенаправленная антенна, а удалённых узлах — направленные. Сети звездообразной топологии могут образовывать сети разнообразной конфигурации.
Сетевая магистраль с беспроводным доступом позволяет отказаться от использования медленных модемов.
Как решать логические задачи?
Разнообразие логических задач очень велико. Способов их решения тоже немало. Но наибольшее распространение получили следующие три способа решения логических задач:
средствами алгебры логики;
табличный;
с помощью рассуждений.
Познакомимся с ними поочередно.
Как соединяются между собой локальные сети?
Для соединения локальных сетей используются следующие устройства, которые различаются между собой по назначению и возможностям:
? Мост (англ. Bridge) — связывает две локальные сети. Передаёт данные между сетями в пакетном виде, не производя в них никаких изменений. Ниже на рисунке показаны три локальные сети, соединённые двумя мостами.
Соединение локальных сетей посредством мостов
Здесь мосты создали расширенную сеть, которая обеспечивает своим пользователям доступ к прежде недоступным ресурсам. Кроме этого, мосты могут фильтровать пакеты, охраняя всю сеть от локальных потоков данных и пропуская наружу только те данные, которые предназначены для других сегментов сети.
? Маршрутизатор (англ. Router) объединяет сети с общим протоколом более эффективно, чем мост. Он позволяет, например, расщеплять большие сообщения на более мелкие куски, обеспечивая тем самым взаимодействие локальных сетей с разным размером пакета.
Маршрутизатор может пересылать пакеты на конкретный адрес (мосты только отфильтровывают ненужные пакеты), выбирать лучший путь для прохождения пакета и многое другое. Чем сложней и больше сеть, тем больше выгода от использования маршрутизаторов.
? Мостовой маршрутизатор (англ. Brouter) — это гибрид моста и маршрутизатора, который сначала пытается выполнить маршрутизацию, где это только возможно, а затем, в случае неудачи, переходит в режим моста.
? Шлюз (англ. GateWay), в отличие от моста, применяется в случаях, когда соединяемые сети имеют различные сетевые протоколы. Поступившее в шлюз сообщение от одной сети преобразуется в другое сообщение, соответствующее требованиям следующей сети. Таким образом, шлюзы не просто соединяют сети, а позволяют им работать как единая сеть. C помощью шлюзов также локальные сети подсоединяются к мэйнфреймам — универсальным мощным компьютерам.
Как соединяются между собой устройства сети?
Для этого используется специальное оборудование:
Сетевые кабели (коаксиальные, состоящие из двух изолированных между собой концентрических проводников, из которых внешний имеет вид трубки; оптоволоконные; кабели на витых парах, образованные двумя переплетёнными друг с другом проводами, и др.).
Коннекторы (соединители) для подключения кабелей к компьютеру; разъёмы для соединения отрезков кабеля.
Рис. 2.30. Сетевой интерфейсный
адаптер
Сетевые интерфейсные адаптеры для приёма и передачи данных. В соответствии с определённым протоколом управляют доступом к среде передачи данных. Размещаются в системных блоках компьютеров, подключенных к сети. К разъёмам адаптеров подключается сетевой кабель.
Трансиверы повышают уровень качества передачи данных по кабелю, отвечают за приём сигналов из сети и обнаружение конфликтов.
Хабы (концентраторы) и коммутирующие хабы (коммутаторы) расширяют топологические, функциональные и скоростные возможности компьютерных сетей. Хаб с набором разнотипных портов позволяет объединять сегменты сетей с различными кабельными системами. К порту хаба можно подключать как отдельный узел сети, так и другой хаб или сегмент кабеля.
Повторители (репитеры) усиливают сигналы, передаваемые по кабелю при его большой длине.
Как составить таблицу истинности?
Согласно определению, таблица истинности логической формулы выражает соответствие между всевозможными наборами значений переменных и значениями формулы.
Для формулы, которая содержит две переменные, таких наборов значений переменных всего четыре: (0,0), (0,1), (1,0), (1,1).
Если формула содержит три переменные, то возможных наборов значений переменных восемь:
(0,0,0), (0,0,1), (0,1,0), (0,1,1),
(1,0,0), (1,0,1), (1,1,0), (1,1,1).
Количество наборов для формулы с четырьмя переменными равно шестнадцати и т.д.
Удобной формой записи при нахождении значений формулы является таблица, содержащая кроме значений переменных и значений формулы также и значения промежуточных формул.
Примеры.
1. Составим таблицу истинности для формулы, которая содержит две переменные x и y. В первых двух столбцах таблицы запишем четыре возможных пары значений этих переменных, в последующих столбцах — значения промежуточных формул и в последнем столбце — значение формулы. В результате получим таблицу:
Переменные | Промежуточные логические формулы | Формула | |||||||||||||
0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | ||||||||
0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | ||||||||
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | ||||||||
1 | 1 | 0 | 0 | 1 | 0 | 0 | 1 |
Из таблицы видно, что при всех наборах значений переменных x и y формула принимает значение 1, то есть является тождественно истинной.
2. Таблица истинности для формулы:
Переменные | Промежуточные логические формулы | Формула | |||||||||||
0 | 0 | 0 | 1 | 1 | 0 | 0 | |||||||
0 | 1 | 1 | 0 | 0 | 0 | 0 | |||||||
1 | 0 | 1 | 0 | 1 | 1 | 0 | |||||||
1 | 1 | 1 | 0 | 0 | 0 | 0 |
Из таблицы видно, что при всех наборах значений переменных x и y формула принимает значение 0, то есть является тождественно ложной.
3. Таблица истинности для формулы:
Переменные | Промежуточные логические формулы | Формула | |||||||||||||||
0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | |||||||||
0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | |||||||||
0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | |||||||||
0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | |||||||||
1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | |||||||||
1 | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | |||||||||
1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | |||||||||
1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
Из таблицы видно, что формула в некоторых случаях принимает значение 1, а в некоторых — 0, то есть является выполнимой.
Как связываются между собой сети в Интернет?
Отдельные участки Интернет представляют собой сети различной архитектуры, которые связываются между собой с помощью маршрутизаторов. Передаваемые данные разбиваются на небольшие порции, называемые пакетами. Каждый пакет перемещается по сети независимо от других пакетов.
Сети в Интернет неограниченно коммутируются (т.е. связываются) друг с другом, потому что все компьютеры, участвующие в передаче данных, используют единый протокол коммуникации TCP/IP (читается “ти-си-пи/ай-пи”).
На самом деле протокол TCP/IP — это два разных протокола, определяющих различные аспекты передачи данных в сети:
протокол TCP (Transmission Control Protocol) — протокол управления передачей данных, использующий автоматическую повторную передачу пакетов, содержащих ошибки; этот протокол отвечает за разбиение передаваемой информации на пакеты и правильное восстановление информации из пакетов получателя;
протокол IP (Internet Protocol) — протокол межсетевого взаимодействия, отвечающий за адресацию и позволяющий пакету на пути к конечному пункту назначения проходить по нескольким сетям.
Схема передачи информации по протоколу TCP/IP такова: протокол ТСР разбивает информацию на пакеты и нумерует все пакеты; далее с помощью протокола IP все пакеты передаются получателю, где с помощью протокола ТСР проверяется, все ли пакеты получены; после получения всех пакетов протокол ТСР располагает их в нужном порядке и собирает в единое целое.
Каким образом пакет находит своего получателя?
Каждый компьютер, подключенный к сети Интернет имеет два равноценных уникальных адреса: цифровой IP-адрес и символический доменный адрес. Присваивание адресов происходит по следующей схеме: международная организация Сетевой информационный центр выдает группы адресов владельцам локальных сетей, а последние распределяют конкретные адреса по своему усмотрению.
IP-адрес компьютера имеет длину 4 байта. Обычно первый и второй байты определяют адрес сети, третий байт определяет адрес подсети, а четвертый — адрес компьютера в подсети. Для удобства IP-адрес записывают в виде четырех чисел со значениями от 0 до 255, разделенных точками, например: 145.37.5.150. Адрес сети — 145.37; адрес подсети — 5; адрес компьютера в подсети — 150.
Доменный адрес (англ. domain — область), в отличие от цифрового, является символическим и легче запоминается человеком. Пример доменного адреса: barsuk.les.nora.ru. Здесь домен barsuk — имя реального компьютера, обладающего IP-адресом, домен les — имя группы, присвоившей имя этому компьютеру, домен nora — имя более крупной группы, присвоившей имя домену les, и т.д. В процессе передачи данных доменный адрес преобразуются в IP-адрес. Механизм такого преобразования подробно описан в [54].
Как упростить логическую формулу?
Равносильные преобразования логических формул имеют то же назначение, что и преобразования формул в обычной алгебре. Они служат для упрощения формул или приведения их к определённому виду путем использования основных законов алгебры логики.
Под упрощением формулы, не содержащей операций импликации и эквиваленции, понимают равносильное преобразование, приводящее к формуле, которая либо содержит по сравнению с исходной меньшее число операций конъюнкции и дизъюнкции и не содержит отрицаний неэлементарных формул, либо содержит меньшее число вхождений переменных. |
Некоторые преобразования логических формул похожи на преобразования формул в обычной алгебре (вынесение общего множителя за скобки, использование переместительного и сочетательного законов и т.п.), тогда как другие преобразования основаны на свойствах, которыми не обладают операции обычной алгебры (использование распределительного закона для конъюнкции, законов поглощения, склеивания, де Моргана и др.).
Покажем на примерах некоторые приемы и способы, применяемые при упрощении логических формул:
1)
(законы алгебры логики применяются в следующей последовательности: правило де Моргана, сочетательный закон, правило операций переменной с её инверсией и правило операций с константами);
2)
(применяется правило де Моргана, выносится за скобки общий множитель, используется правило операций переменной с её инверсией);
3)
(повторяется второй сомножитель, что разрешено законом идемпотенции; затем комбинируются два первых и два последних сомножителя и используется закон склеивания);
4)
(вводится вспомогательный логический сомножитель (); затем комбинируются два крайних и два средних логических слагаемых и используется закон поглощения);
5)
(сначала добиваемся, чтобы знак отрицания стоял только перед отдельными переменными, а не перед их комбинациями, для этого дважды применяем правило де Моргана; затем используем закон двойного отрицания);
6)
(выносятся за скобки общие множители; применяется правило операций с константами);
7)
(к отрицаниям неэлементарных формул применяется правило де Моргана; используются законы двойного отрицания и склеивания);
8)
(общий множитель x выносится за скобки, комбинируются слагаемые в скобках — первое с третьим и второе с четвертым, к дизъюнкции применяется правило операции переменной с её инверсией);
9)
(используются распределительный закон для дизъюнкции, правило операции переменной с ее инверсией, правило операций с константами, переместительный закон и распределительный закон для конъюнкции);
10)
(используются правило де Моргана, закон двойного отрицания и закон поглощения).
Из этих примеров видно, что при упрощении логических формул не всегда очевидно, какой из законов алгебры логики следует применить на том или ином шаге. Навыки приходят с опытом.
Как устроен компьютер?
Разнообразие современных компьютеров очень велико. Но их структуры основаны на общих логических принципах, позволяющих выделить в любом компьютере следующие главные устройства:
память
(запоминающее устройство, ЗУ), состоящую из перенумерованных ячеек;
процессор, включающий в себя устройство управления (УУ) и арифметико-логическое устройство (АЛУ);
устройство ввода;
устройство вывода.
Эти устройства соединены каналами связи, по которым передается информация.
Основные устройства компьютера и связи между ними представлены на схеме (рис. 2.1). Жирными стрелками показаны пути и направления движения информации, а простыми стрелками — пути и направления передачи управляющих сигналов.
Рис. 2.1. Общая схема компьютера
Функции памяти:
приём информации из других устройств;
запоминание информации;
выдача информации по запросу в другие устройства машины.
Функции процессора:
обработка данных по заданной программе путем выполнения арифметических и логических операций;
программное управление работой устройств компьютера.
Та часть процессора, которая выполняет команды, называется арифметико-логическим устройством (АЛУ), а другая его часть, выполняющая функции управления устройствами, называется устройством управления (УУ). |
Обычно эти два устройства выделяются чисто условно, конструктивно они не разделены.
В составе процессора имеется ряд специализированных дополнительных ячеек памяти, называемых регистрами.
Регистр выполняет функцию кратковременного хранения числа или команды. Над содержимым некоторых регистров специальные электронные схемы могут выполнять некоторые манипуляции. Например, "вырезать" отдельные части команды для последующего их использования или выполнять определенные арифметические операции над числами. |
Основным элементом регистра является электронная схема, называемая триггером, которая способна хранить одну двоичную цифру (разряд). Логическая схема триггера описана в разделе 5.7.
Регистр представляет собой совокупность триггеров, связанных друг с другом определённым образом общей системой управления. |
Существует несколько типов регистров, отличающихся видом выполняемых операций.
Некоторые важные регистры имеют свои названия, например:
сумматор
— регистр АЛУ, участвующий в выполнении каждой операции (принцип его работы рассмотрен в разделе 5.8);
счетчик команд — регистр УУ, содержимое которого соответствует адресу очередной выполняемой команды; служит для автоматической выборки программы из последовательных ячеек памяти;
регистр команд — регистр УУ для хранения кода команды на период времени, необходимый для ее выполнения. Часть его разрядов используется для хранения кода операции, остальные — для хранения кодов адресов операндов.
Контроллеры, кроме этого, осуществляют непосредственное управление периферийными устройствами по запросам микропроцессора.
Порты устройств представляют собой некие электронные схемы, содержащие один или несколько регистров ввода-вывода и позволяющие подключать периферийные устройства компьютера к внешним шинам микропроцессора. |
Последовательный порт обменивается данными с процессором побайтно, а с внешними устройствами — побитно. Параллельный порт получает и посылает данные побайтно. |
порту обычно подсоединяют медленно действующие или достаточно удалённые устройства, такие, как мышь и модем. К параллельному порту подсоединяют более "быстрые" устройства — принтер и сканер. Через игровой
порт подсоединяется джойстик. Клавиатура и монитор подключаются к своим специализированным
портам, которые представляют собой просто разъёмы.
Основные электронные компоненты, определяющие архитектуру процессора, размещаются на основной плате компьютера, которая называется системной или материнской (MotherBoard). А контроллеры и адаптеры дополнительных устройств, либо сами эти устройства, выполняются в виде плат расширения
(DаughterBoard — дочерняя плата) и подключаются к шине с помощью разъёмов расширения, называемых также слотами расширения (англ. slot — щель, паз).
Как устроена память?
Память компьютера построена из двоичных запоминающих элементов — битов, объединенных в группы по 8 битов, которые называются байтами. (Единицы измерения памяти совпадают с единицами измерения информации). Все байты пронумерованы. Номер байта называется его адресом.
Байты могут объединяться в ячейки, которые называются также словами. Для каждого компьютера характерна определенная длина слова — два, четыре или восемь байтов. Это не исключает использования ячеек памяти другой длины (например, полуслово, двойное слово).
Как правило, в одном машинном слове может быть представлено либо одно целое число, либо одна команда. Однако, допускаются переменные форматы представления информации.
Разбиение памяти на слова для четырехбайтовых компьютеров представлено в таблице:
Байт 0 | Байт 1 | Байт 2 | Байт 3 | Байт 4 | Байт 5 | Байт 6 | Байт 7 | ||||||||
ПОЛУСЛОВО | ПОЛУСЛОВО | ПОЛУСЛОВО | ПОЛУСЛОВО | ||||||||||||
СЛОВО | СЛОВО | ||||||||||||||
ДВОЙНОЕ СЛОВО |
Широко используются и более крупные производные единицы
объема памяти: Килобайт, Мегабайт, Гигабайт, а также, в последнее время, Терабайт и Петабайт.
Современные компьютеры имеют много разнообразных запоминающих устройств, которые сильно отличаются между собой по назначению, временным характеристикам, объёму хранимой информации и стоимости хранения одинакового объёма информации.
Различают два основных вида памяти — внутреннюю и внешнюю.
Как выполняется команда?
Выполнение команды можно проследить по схеме:
Общая схема компьютера
Как пpавило, этот процесс разбивается на следующие этапы:
из ячейки памяти, адрес которой хранится в счетчике команд, выбирается очередная команда; содержимое счетчика команд при этом увеличивается на длину команды;
выбранная команда передается в устройство управления на регистр команд;
устройство управления расшифровывает адресное поле команды;
по сигналам УУ операнды считываются из памяти и записываются в АЛУ на специальные регистры операндов;
УУ расшифровывает код операции и выдает в АЛУ сигнал выполнить соответствующую операцию над данными;
результат операции либо остается в процессоре, либо отправляется в память, если в команде был указан адрес результата;
все предыдущие этапы повторяются до достижения команды “стоп”.
Как записываются арифметические выражения?
Арифметические выражения записываются по следующим правилам:
Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций.
Индексы элементов массивов записываются в квадратных (школьный АЯ, Pascal) или круглых (Basic) скобках.
Для обозначения переменных используются буквы латинского алфавита.
Операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь — сложение и вычитание.
Операции одного старшинства выполняются слева направо. Например, a/b*c соответствует a/b*c. Однако, в школьном АЯ есть одно исключение из этого правила: операции возведения в степень выполняются справа налево. Так, выражение 2**(3**2) в школьном АЯ вычисляется как 2**(3**2) = 512. В языке QBasic аналогичное выражение 2^3^2 вычислясляется как (2^3)^2 = 64. А в языке Pascal вообще не предусмотрена операция возведения в степень, в Pascal x^y записывается как exp(y*ln(x)), а x^y^z как exp(exp(z*ln(y))*ln(x)).
Как записываются логические выражения?
В записи логических выражений помимо арифметических операций сложения, вычитания, умножения, деления и возведения в степень используются операции отношения < (меньше), <= (меньше или равно), > (больше), >= (больше или равно), = (равно), <> (не равно), а также логические операции и, или, не.
Какая связь между алгеброй логики и двоичным кодированием?
Математический аппарат алгебры логики очень удобен для описания того, как функционируют аппаратные средства компьютера, поскольку основной системой счисления в компьютере является двоичная, в которой используются цифры 1 и 0, а значений логических переменных тоже два: “1” и “0”.
Из этого следует два вывода:
1. одни и те же устройства компьютера могут применяться для обработки и хранения как числовой информации, представленной в двоичной системе счисления, так и логических переменных;
2. на этапе конструирования аппаратных средств алгебра логики позволяет значительно упростить логические функции, описывающие функционирование схем компьютера, и, следовательно, уменьшить число элементарных логических элементов, из десятков тысяч которых состоят основные узлы компьютера.
Какая взаимосвязь между АСНИ и САПР?
Каждая из систем АСНИ и САПР, конечно, имеет свою специфику и отличается поставленными целями и методами их достижения. Однако очень часто между обоими типами систем обнаруживается тесная связь, и их роднит не только то, что они реализуются на базе компьютерной техники.
Например, в процессе проектирования может потребоваться выполнение того или иного исследования, и, наоборот, в ходе научного исследования может возникнуть потребность и в конструировании нового прибора и в проектировании научного эксперимента.
Такая взаимосвязь приводит к тому, что на самом деле «чистых» АСНИ и САПР не бывает: в каждой из них можно найти общие элементы. С повышением их интеллектуальности они сближаются. В конечном счете и те и другие должны представлять собой экспертную систему, ориентированную на решение задач конкретной области.
Какие циклы называют итерационными?
Особенностью итерационного цикла является то,что число повторений операторов тела цикла заранее неизвестно. Для его организации используется цикл типа пока. Выход из итерационного цикла осуществляется в случае выполнения заданного условия. |
На каждом шаге вычислений происходит последовательное приближение и проверка условия достижения искомого результата.
Пример. Составить алгоритм вычисления суммы ряда
с заданной точностью
(для данного знакочередующегося степенного ряда требуемая точность будет достигнута, когда очередное слагаемое станет по абсолютной величине меньше).Вычисление сумм — типичная циклическая задача. Особенностью же нашей конкретной задачи является то, что число слагаемых (а, следовательно, и число повторений тела цикла) заранее неизвестно. Поэтому выполнение цикла должно завершиться в момент достижения требуемой точности.
При составлении алгоритма нужно учесть, что знаки слагаемых чередуются и степень числа х в числителях слагаемых возрастает.
Решая эту задачу "в лоб" путем вычисления на каждом i-ом шаге частичной суммы
S:=S+(-1)**(i-1)*x**i/i ,
мы получим очень неэффективный алгоритм, требующий выполнения большого числа операций. Гораздо лучше организовать вычисления следующим образом: если обозначить числитель какого-либо слагаемого буквой р, то у следующего слагаемого числитель будет равен -р*х (знак минус обеспечивает чередование знаков слагаемых), а само слагаемое m будет равно p/i, где i - номер слагаемого.
Сравните эти два подхода по числу операций.
Алгоритм на школьном АЯ |
Блок-схема алгоритма | ||
алг Сумма (арг вещ x, Eps, рез вещ S) дано | 0 < x < 1 надо | S = x - x**2/2 + x**3/3 - ... нач цел i, вещ m, p ввод x, Eps S:=0; i:=1 | начальные значения m:=1; p:=-1 нц пока abs(m) > Eps p:=-p*x | p - числитель | очередного слагаемого m:=p/i | m - очередное слагаемое S:=S+m | S - частичная сумма i:=i+1 | i - номер | очередного слагаемого кц вывод S кон |
Алгоритм, в состав которого входит итерационный цикл, называется итеpационным алгоpитмом. Итерационные алгоритмы используются при реализации итерационных численных методов.
В итерационных алгоритмах необходимо обеспечить обязательное достижение условия выхода из цикла (сходимость итерационного процесса). В противном случае произойдет зацикливание алгоритма, т.е. не будет выполняться основное свойство алгоритма — результативность.
Какие этапы включает в себя решение задач с помощью компьютера?
Решение задач с помощью компьютера включает в себя следующие основные этапы, часть из которых осуществляется без участия компьютера.
1. Постановка задачи:
сбоp инфоpмации о задаче;
фоpмулиpовка условия задачи;
опpеделение конечных целей pешения задачи;
определение формы выдачи результатов;
описание данных (их типов, диапазонов величин, структуры и т.п. ).
2. Анализ и исследование задачи, модели:
анализ существующих аналогов;
анализ технических и программных средств;
pазpаботка математической модели;
разработка структур данных.
3. Разработка алгоритма:
выбор метода проектирования алгоритма;
выбор формы записи алгоритма (блок-схемы, псевдокод и др.);
выбоp тестов и метода тестиpования;
проектирование алгоритма.
4. Пpогpаммиpование:
выбор языка программирования;
уточнение способов организации данных;
запись алгоpитма на выбpанном языке пpогpаммиpования.
5. Тестиpование и отладка:
синтаксическая отладка;
отладка семантики и логической стpуктуpы;
тестовые pасчеты и анализ pезультатов тестиpования;
совершенствование пpогpаммы.
6. Анализ результатов решения задачи и уточнение в случае необходимости математической модели с повторным выполнением этапов 2 - 5.
7. Сопровождение программы:
доработка программы для решения конкретных задач;
составление документации к pешенной задаче, к математической модели, к алгоpитму, к пpогpамме, к набору тестов, к использованию.
Какие компьютеры относятcя в первому поколению?
К первому поколению обычно относят машины, созданные на рубеже 50-х годов. В их схемах использовались электронные лампы. Эти компьютеры были огромными, неудобными и слишком дорогими машинами, которые могли приобрести только крупные корпорации и правительства. Лампы потребляли огромное количество электроэнергии и выделяли много тепла.
Электронная
лампа
Компьютер "Эниак".
Первое поколение
Набор команд был небольшой, схема арифметико-логического устройства и устройства управления достаточно проста, программное обеспечение практически отсутствовало. Показатели объема оперативной памяти и быстродействия были низкими. Для ввода-вывода использовались перфоленты, перфокарты, магнитные ленты и печатающие устройства.
Быстродействие порядка 10-20 тысяч операций в секунду.
Но это только техническая сторона. Очень важна и другая — способы использования компьютеров, стиль программирования, особенности математического обеспечения.
Перфокарта
Программы для этих машин писались на языке конкретной машины. Математик, составивший программу, садился за пульт управления машины, вводил и отлаживал программы и производил по ним счет. Процесс отладки был наиболее длительным по времени.
Несмотря на ограниченность возможностей, эти машины позволили выполнить сложнейшие расчёты, необходимые для прогнозирования погоды, решения задач атомной энергетики и др.
Опыт использования машин первого поколения показал, что существует огромный разрыв между временем, затрачиваемым на разработку программ, и временем счета.
ЭВМ "Урал"
Эти проблемы начали преодолевать путем интенсивной разработки средств автоматизации программирования, создания систем обслуживающих программ, упрощающих работу на машине и увеличивающих эффективность её использования. Это, в свою очередь, потребовало значительных изменений в структуре компьютеров, направленных на то, чтобы приблизить её к требованиям, возникшим из опыта эксплуатации компьютеров.
Отечественные машины первого поколения: МЭСМ (малая электронная счётная машина), БЭСМ, Стрела, Урал, М-20.
Какие компьютеры относятся ко второму поколению?
Транзистор
БЭСМ-6. Второе поколение
Второе поколение компьютерной техники — машины, сконструированные примерно в 1955-65 гг. Характеризуются использованием в них как электронных ламп, так и дискретных транзисторных логических элементов. Их оперативная память была построена на магнитных сердечниках. В это время стал расширяться диапазон применяемого оборудования ввода-вывода, появились высокопроизводительные устройства для работы с магнитными лентами, магнитные барабаны и первые магнитные диски.
Память на магнитных
сердечниках
Быстродействие — до сотен тысяч операций в секунду, ёмкость памяти — до нескольких десятков тысяч слов.
Появились так называемые языки высокого уровня, средства которых допускают описание всей необходимой последовательности вычислительных действий в наглядном, легко воспринимаемом виде.
Программа, написанная на алгоритмическом языке, непонятна компьютеру, воспринимающему только язык своих собственных команд. Поэтому специальные программы, которые называются трансляторами, переводят программу с языка высокого уровня на машинный язык.
Появился широкий набор библиотечных программ для решения разнообразных математических задач. Появились мониторные системы, управляющие режимом трансляции и исполнения программ. Из мониторных систем в дальнейшем выросли современные операционные системы.
Операционная система — важнейшая часть программного обеспечения компьютера, предназначенная для автоматизации планирования и организации процесса обработки программ, ввода-вывода и управления данными, распределения ресурсов, подготовки и отладки программ, других вспомогательных операций обслуживания. |
Таким образом, операционная система является программным расширением устройства управления компьютера.
Для некоторых машин второго поколения уже были созданы операционные системы с ограниченными возможностями.
Машинам второго поколения была свойственна программная несовместимость, которая затрудняла организацию крупных информационных систем. Поэтому в середине 60-х годов наметился переход к созданию компьютеров, программно совместимых и построенных на микроэлектронной технологической базе.
Какие компоненты образуют алгоритмический язык?
Алгоритмический язык (как и любой другой язык) образуют три его составляющие: алфавит, синтаксис и семантика. |
Алфавит — это фиксированный для данного языка набор основных символов, т.е. "букв алфавита", из которых должен состоять любой текст на этом языке — никакие другие символы в тексте не допускаются.
Синтаксис — это правила построения фраз, позволяющие определить, правильно или неправильно написана та или иная фраза. Точнее говоря, синтаксис языка представляет собой набор правил, устанавливающих, какие комбинации символов являются осмысленными предложениями на этом языке.
Семантика определяет смысловое значение предложений языка. Являясь системой правил истолкования отдельных языковых конструкций, семантика устанавливает, какие последовательности действий описываются теми или иными фразами языка и, в конечном итоге, какой алгоритм определен данным текстом на алгоритмическом языке.
Какие ошибки не обнаруживаются транслятором?
Существует множество ошибок, которые транслятор выявить не в состоянии, если используемые в программе операторы сформированы верно.
Примеры таких ошибок.
Логические ошибки:
неверное указание ветви алгоритма после проверки некоторого условия;
неполный учет возможных условий;
пропуск в программе одного или более блоков алгоритма.
Ошибки в циклах:
неправильное указание начала цикла;
неправильное указание условий окончания цикла;
неправильное указание числа повторений цикла;
бесконечный цикл.
Ошибки ввода-вывода; ошибки при работе с данными:
неправильное задание тип данных;
организация считывания меньшего или большего объёма даных, чем требуется;
неправильное редактирование данных.
Ошибки в использов нии переменных:
использование переменных без указания их начальных значений;
ошибочное указание одной переменной вместо другой.
Ошибки при работе с массивами:
массивы предварительно не обнулены;
массивы неправильно описаны;
индексы следуют в неправильном порядке.
Ошибки арифметических операций:
неверное указание типа переменной (например, целочисленного вместо вещественного);
неверное определение порядка действий;
деление на нуль;
извлечение квадратного корня из отрицательного числа;
потеря значащих разрядов числа.
Эти ошибки обнаруживаются с помощью тестирования.
Какие основные блоки входят в состав компьютера?
Современный персональный компьютер состоит из нескольких основных конструктивных компонент:
Рис. 2.27. Виды корпусов
системного блока
системного блока;
монитора;
клавиатуры;
манипуляторов.
В системном блоке размещаются:
блок питания;
накопитель на жёстких магнитных дисках;
накопитель на гибких магнитных дисках;
системная плата;
платы расширения;
накопитель CD-ROM;
и др.
Корпус системного блока может иметь горизонтальную (DeskTop) или вертикальную (Tower — башня) компоновку.
Типичный системный блок со снятой крышкой корпуса — на рис. 2.28.
Рис. 2.28. Системный блок со снятой крышкой корпуса | 1 — Системная плата. 2 — Разъём дополнительного второго процессора. 3 — Центральный процессор с радиатором для отвода тепла. 4 — Разъёмы оперативной памяти. 5 — Накопитель на гибких магнитных дисках. 6 — Накопитель CD-ROM. 7 — Сетевая карта. 8 — Графический акселератор. 9 — Блок питания, преобразующий переменное напряжение электросети в постоянное напряжение различной полярности и величины, необходимое для питания системной платы и внутренних устройств. Блок питания содержит вентилятор, создающий циркулирующие потоки воздуха для охлаждения системного блока. |
Вместо термина "системный блок" иногда употребляют термин "платформа".
Какие основные этапы содержит процесс разработки программ?
Процесс разработки программы можно выразить следующей формулой:
Наличие ошибок в только что разработанной программе это вполне нормальное закономерное явление. Практически невозможно составить реальную (достаточно сложную) программу без ошибок.
Нельзя делать вывод, что программа правильна, лишь на том основании, что она не отвергнута машиной и выдала результаты. |
Ведь все, что достигнуто в данном случае, это получение каких-то результатов, не обязательно правильных. В программе при этом может оставаться большое количество логических ошибок.
Какие основные законы выполняются в алгебре логики?
В алгебре логики выполняются следующие основные законы, позволяющие производить тождественные преобразования логических выражений:
Какие понятия используют алгоритмические языки?
Каждое понятие алгоритмического языка подразумевает некоторую синтаксическую единицу (конструкцию) и определяемые ею свойства программных объектов или процесса обработки данных.
Понятие языка определяется во взаимодействии синтаксических и семантических правил. Синтаксические правила показывают, как образуется данное понятие из других понятий и букв алфавита, а семантические правила определяют свойства данного понятия |
Основными понятиями в алгоритмических языках обычно являются следующие.
Имена (идентификаторы) — употpебляются для обозначения объектов пpогpаммы (пеpеменных, массивов, функций и дp.).
Опеpации. Типы операций:
аpифметические опеpации + , - , * , / и дp. ;
логические опеpации и, или, не;
опеpации отношения < , > , <=, >= , = , <> ;
опеpация сцепки (иначе, "присоединения", "конкатенации") символьных значений дpуг с другом с образованием одной длинной строки; изображается знаком "+".
Данные — величины, обpабатываемые пpогpаммой. Имеется тpи основных вида данных: константы, пеpеменные и массивы.
Константы — это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения.
Пpимеpы констант:
o числовые 7.5, 12;
o логические да (истина), нет (ложь);
o символьные "А", "+";
o литеpные "abcde", "информатика", "" (пустая строка).
Пеpеменные обозначаются именами и могут изменять свои значения в ходе выполнения пpогpаммы. Пеpеменные бывают целые, вещественные, логические, символьные и литерные.
Массивы — последовательности однотипных элементов, число которых фиксировано и которым присвоено одно имя. Положение элемента в массиве однозначно определяется его индексами (одним, в случае одномерного массива, или несколькими, если массив многомерный). Иногда массивы называют таблицами.
Выpажения — пpедназначаются для выполнения необходимых вычислений, состоят из констант, пеpеменных, указателей функций (напpимеp, exp(x)), объединенных знаками опеpаций.
Выражения записываются в виде линейных последовательностей символов (без подстрочных и надстрочных символов, "многоэтажных" дробей и т.д.), что позволяет вводить их в компьютер, последовательно нажимая на соответствующие клавиши клавиатуры.
Различают выражения арифметические, логические и строковые.
Арифметические выражения служат для определения одного числового значения. Например, (1+sin(x))/2. Значение этого выражения при x=0 равно 0.5, а при x=p/2 - единице.
Логические выражения описывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения — "истина" или "ложь" (да или нет). Рассмотрим в качестве примера логическое выражение x*x + y*y < r*r , определяющее принадлежность точки с координатами (x,y) внутренней области круга радиусом r c центром в начале координат. При x=1, y=1, r=2 значение этого выражения — "истина", а при x=2, y=2, r=1 — "ложь".
Значения строковых (литерных) выражений — текcты. В них могут входить литерные константы, литерные переменные и литерные функции, разделенные знаком операции сцепки. Например, А + В означает присоединение строки В к концу строки А. Если А = "куст ", а В = "зеленый", то значение выражения А+В есть "куст зеленый".
Операторы (команды). Оператор — это наиболее крупное и содержательное понятие языка: каждый оператор представляет собой законченную фразу языка и определяет некоторый вполне законченный этап обработки данных.В состав опеpатоpов входят:
ключевые слова;
данные;
выpажения и т.д.
Операторы подpазделяются на исполняемые и неисполняемые. Неисполняемые опеpатоpы пpедназначены для описания данных и стpуктуpы пpогpаммы, а исполняемые — для выполнения pазличных действий (напpимеp, опеpатоp пpисваивания, опеpатоpы ввода и вывода, условный оператор, операторы цикла, оператор процедуры и дp.).