Какие ошибки не обнаруживаются транслятором?
65. С х е м а И Схема И реализует конъюнкцию двух или более логических значений. Условное обозначение на структурных схемах схемы И с двумя входами представлено на рис. 5.1. Таблица истинности — в таблице 5.1. Рис. 5.1
Таблица 5.1
Единица на выходе схемы “ И” будет тогда и только тогда, когда на всех входах будут единицы. Когда хотя бы на одном входе будет ноль, на выходе также будет ноль. Связь между выходом z этой схемы и входами x и y описывается соотношением : z = x Ù y (читается как " x и y"). Операция конъюнкции на функциональных схемах обозначается знаком “&” (читается как "амперсэнд"), являющимся сокращенной записью английского слова and. С х е м а ИЛИ Схема ИЛИ реализует операцию дизъюнкцию для двух или более логических значений. Когда хотя бы на одном входе схемы ИЛИ будет единица, на её выходе также будет единица. Условное обозначение схемы ИЛИ представлено на рис. 5.2. Значение дизъюнкции равно единице, если сумма значений операндов больше или равна 1. Связь между выходом z этой схемы и входами x и y описывается соотношением: z = x Ú y (читается как " x или y "). Таблица истинности — в табл. 5.2. Рис. 5.2 Таблица 5.2
С х е м а НЕ Схема НЕ (инвертор) реализует операцию отрицания. Связь между входом x этой схемы и выходом z можно записать соотношением z = , где читается, как " не x " или " инверсия х ". Правило: Если на входе схемы 0, то на выходе 1; и наоборот, когда на входе 1, на выходе 0. Условное обозначение инвертора - на рисунке 5.3, а таблица истинности - в табл. 5.3
Рис. 5.3
Таблица 5.3
68. С х е м а И – НЕ Схема И-НЕ состоит из элемента И и инвертора и осуществляет отрицание результата схемы И. Связь между выходом z и входами x и y схемы записывают следующей формулой: z = , где читается как " инверсия x и y ". Условное обозначение схемы И-НЕ представлено на рисунке 5.4. Таблица истинности схемы И-НЕ — в табл. 5.4.
Рис. 5.4
Таблица 5.4
С х е м а ИЛИ – НЕ Схема ИЛИ-НЕ состоит из элемента ИЛИ и инвертора и осуществляет отрицание результата схемы ИЛИ. Связь между выходом z и входами x и y схемы записывают следующим образом: z = , где, читается как " инверсия x или y ". Условное обозначение схемы ИЛИ-НЕ представлено на рис. 5.5. Таблица истинности схемы ИЛИ-НЕ — в табл. 5.5.
Таблица 5.5
66.
Термин триггер в схемах имеет название f lip-flop, что в переводе означает “хлопанье”. Самый распространённый тип триггера — так называемый RS -триггер (S и R, соответственно, от английских set — установка, и reset — сброс). Условное обозначение триггера в схемах — на рис. 5.6. Рис. 5.6 Он имеет два симметричных входа S и R и два симметричных выхода Q и ┐ Q, причем выходной сигнал ┐ Q является логическим отрицанием сигнала Q. На каждый из двух входов S и R могут подаваться входные сигналы в виде кратковременных импульсов. Наличие импульса на входе будем считать единицей, а его отсутствие — нулем. На рис. 5.7 показана реализация триггера с помощью двух вентилей ИЛИ-НЕ и соответствующая таблица истинности.
Рис. 5.7
Проанализируем возможные комбинации значений входов 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 и не меняется. Подача на оба входа R и S логического “0” может привести к неоднозначному результату, поэтому такая комбинация для входных сигналов запрещена. Поскольку один триггер может запомнить только один разряд двоичного кода, то для запоминания байта нужно 8 триггеров, для запоминания килобайта, соответственно, 8 • 210 = 8192 триггеров. Современные микросхемы памяти содержат миллионы триггеров. 67.
Сумматор служит центральным узлом арифметико - логического устройства компьютера – АЛУ. Многоразрядный двоичный сумматор предназначен для сложения многоразрядных двоичных чисел и представляет собой комбинацию одноразрядных сумматоров, с рассмотрения которых мы и начнём. Условное обозначение (принятое в схемах) одноразрядного сумматора приведено на рис. 5.8. Рис. 5.8 При сложении двух чисел a и b в одном i -ом разряде приходится иметь дело с тремя цифрами: 1. цифра ai первого слагаемого; 2. цифра b i второго слагаемого; 3. перенос цифры pi–1 из младшего разряда в старший разряд.
В результате сложения получаются две цифры c и q: 1. цифра ci для суммы данного i -го разряда; 2. цифра q i - перенос цифры p i из данного i -го разряда в старший i +1 разряд.
Таким образом, одноразрядный двоичный сумматор есть устройство с тремя входами и двумя выходами, работа которого может быть описана следующей таблицей истинности:
Если требуется складывать двоичные числа длиной два и более бит, то можно использовать последовательное соединение таких сумматоров, причём для двух соседних сумматоров выход переноса одного сумматора является входом для другого.
68. Решение задач с помощью компьютера включает в себя следующие основные этапы, часть из которых осуществляется без участия компьютера.
69.
Всякое явление природы бесконечно в своей сложности. Проиллюстрируем это с помощью примера, взятого из книги В.Н. Тростникова "Человек и информация" (Издательство "Наука", 1970).
... Обыватель формулирует математику задачу следующим образом: "Сколько времени будет падать камень с высоты 200 метров?" Математик начнет создавать свой вариант задачи приблизительно так: "Будем считать, что камень падает в пустоте и что ускорение силы тяжести 9,8 метра в секунду за секунду. Тогда..." — Позвольте, — может сказать "заказчик", — меня не устраивает такое упрощение. Я хочу знать точно, сколько времени будет падать камень в реальных условиях, а не в несуществующей пустоте. — Хорошо, — согласится математик. — Будем считать, что камень имеет сферическую форму и диаметр... Какого примерно он диаметра? — Около пяти сантиметров. Но он вовсе не сферический, а продолговатый. — Тогда будем считать, что он имеет форму эллипсоида с полуосями четыре, три и три сантиметра и что он падает так, что большая полуось все время остается вертикальной. Давление воздуха примем равным 760 мм ртутного столба, отсюда найдем плотность воздуха... Если тот, кто поставил задачу на "человеческом" языке не будет дальше вмешиваться в ход мысли математика, то последний через некоторое время даст численный ответ. Но "потребитель" может возражать по-прежнему: камень на самом деле вовсе не эллипсоидальный, давление воздуха в том месте и в тот момент не было равно 760 мм ртутного столба и т.д. Что же ответит ему математик? Он ответит, что точное решение реальной задачи вообще невозможно. Мало того, что форму камня, которая влияет на сопротивление воздуха, невозможно описать никаким математическим уравнением; его вращение в полете также неподвластно математике из-за своей сложности. Далее, воздух не является однородным, так как в результате действия случайных факторов в нем возникают флуктуации колебания плотности. Если пойти ещё глубже, нужно учесть, что по закону всемирного тяготения каждое тело действует на каждое другое тело. Отсюда следует, что даже маятник настенных часов изменяет своим движением траекторию камня. Короче говоря, если мы всерьез захотим точно исследовать поведение какого-либо предмета, то нам предварительно придется узнать местонахождение и скорость всех остальных предметов Вселенной. А это, разумеется. невозможно.
Наиболее эффективно математическую модель можно реализовать на компьютере в виде алгоритмической модели — так называемого "вычислительного эксперимента" (см. [1], параграф 26).
Конечно, результаты вычислительного эксперимента могут оказаться и не соответствующими действительности, если в модели не будут учтены какие-то важные стороны действительности. Итак, создавая математическую модель для решения задачи, нужно:
При построении математических моделей далеко не всегда удается найти формулы, явно выражающие искомые величины через данные. В таких случаях используются математические методы, позволяющие дать ответы той или иной степени точности. Существует не только математическое моделирование какого-либо явления, но и визуально-натурное моделирование, которое обеспечивается за счет отображения этих явлений средствами машинной графики, т.е. перед исследователем демонстрируется своеобразный "компьютерный мультфильм", снимаемый в реальном масштабе времени. Наглядность здесь очень высока. 70. Текст программы можно проконтролировать за столом с помощью просмотра, проверки и прокрутки.
Отладка и тестирование (англ. test — испытание) — это два четко различимых и непохожих друг на друга этапа:
Английский термин debugging (" отладка ") буквально означает " вылавливание жучков ". Термин появился в 1945 г., когда один из первых компьютеров — "Марк-1" прекратил работу из-за того, что в его электрические цепи попал мотылек и заблокировал своими останками одно из тысяч реле машины. В современных программных системах (Turbo Basic, Turbo Pascal, Turbo C и др.) отладка осуществляется часто с использованием специальных программных средств, называемых отладчиками. Эти средства позволяют исследовать внутреннее поведение программы. Программа-отладчик обычно обеспечивает следующие возможности:
При отладке программ важно помнить следующее:
71. Как бы ни была тщательно отлажена программа, решающим этапом, устанавливающим ее пригодность для работы, является контроль программы по результатам ее выполнения на системе тестов.
Но, как справедливо указывал известный теоретик программирования Э. Дейкстра, тестирование можетпоказать лишь наличие ошибок, но не их отсутствие. Нередки случаи, когда новые входные данные вызывают "отказ" или получение неверных результатов работы программы, которая считалась полностью отлаженной. Для реализации метода тестов должны быть изготовлены или заранее известны эталонные результаты.
В противном случае имеется опасность невольной подгонки вычисляемых значений под желаемые, полученные ранее на машине. Тестовые данные должны обеспечить проверку всех возможных условий возникновения ошибок:
Пример. Система тестов для задачи нахождения корней квадратного уравнения ax2 + bx + c = 0:
Процесс тестирования можно разделить на три этапа. Проверка в нормальных условиях. Проверка в экстремальных условиях. Проверка в исключительных ситуациях. Известно, что все программы разрабатываются в расчете на обработку какого-то ограниченного набора данных. Наихудшая ситуация складывается тогда, когда программа воспринимает неверные данные как правильные и выдает неверный, но правдоподобный результат.
72. Ошибки могут быть допущены на всех этапах решения задачи — от ее постановки до оформления. Разновидности ошибок и соответствующие примеры приведены в таблице:
Обычно синтаксические ошибки выявляются на этапе трансляции. Многие же другие ошибки транслятору выявить невозможно, так как транслятору неизвестны замыслы программиста.
Примеры синтаксических ошибок:
Какие ошибки не обнаруживаются транслятором? Существует множество ошибок, которые транслятор выявить не в состоянии, если используемые в программе операторы сформированы верно. Примеры таких ошибок. Логические ошибки:
Ошибки в циклах:
Ошибки ввода-вывода; ошибки при работе с данными:
Ошибки в использов нии переменных:
Ошибки при работе с массивами:
Ошибки арифметических операций:
Эти ошибки обнаруживаются с помощью тестирования
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|