42616

ЛОГИЧЕСКИЕ И АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ

Лабораторная работа

Информатика, кибернетика и программирование

Тогда можно утверждать что дождь начался в time1 = h1 60 m1 минут а закончился в time2 = h2 60 m2 минут. Разность между началом и концом дождя составляет timeRes = time2 time1 24 60 24 60 минут. Выделяем количество часов и минут из timeRes и выводим их на экран.h int h1 h2 m1 m2 time1 time2 timeRes hres mres; void minvoid { h1 = 23; m1 = 50; h2 = 13; m2 = 20; time1 = h1 60 m1; time2 = h2 60 m2; timeRes = time2 time1 24 60 24 60; hres = timeRes 60; mres =...

Русский

2013-10-30

84.5 KB

4 чел.

Лабораторная работа №3

 1.1. ЗАДАЧИ НА ЛОГИЧЕСКИЕ И АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ

   Основными арифметическими операциями являются: сложение ('+'), вычитание ('-'), умножение ('*') и деление ('/'). Порядок выполнения операций в выражении соответствует их приоритету. Операции с одинаковым приоритетом в выражении выполняются слева направо.

   Операция деления ('/') выполняется согласно типу ее операндов. Если оба операнда являются целыми числами, то деление будет целочисленным. Если один из операндов является вещественным, то и результат будет вещественным. Например, пусть переменная x имеет целочисленный тип, а y действительный тип. Следующая таблица демонстрирует результаты деления для различных операндов:

Операция

Результат

x = 7 / 3;

x = 2

y = 7 / 3;

y = 2.000000

y = 7.0 / 3;

y = 2.333333

y = (double)7 / 3;

y = 2.333333

   Рассмотрим второй пример. При выполнении операции присваивания значения выражения переменной, сначала вычисляется значение выражения, а потом оно присваивается переменной. Поскольку операнды во втором примере являются целыми, то результатом деления 7/3 будет 2. Потом целочисленное значение 2 преобразовывается в действительное значение 2.000000 и присваивается действительной переменной y.

   В четвертом примере перед выполнением операции деления происходит преобразование типа делимого из целого в вещественный. Поэтому деление будет производиться без потери точности.

   Пример 1.1.1. Найти среднее арифметическое двух целых чисел a и b.
   Результатом вычисления выражения (
a+b)/2 может быть действительное число. Поэтому деление должно выполняться с сохранением точности. А для этого один из операндов необходимо преобразовать в действительный тип. Например, результат можно вычислить так: res = (a+b)/2.0. Программа имеет вид:

#include < stdio.h >

int a=3,b=7;

double res;

void main(void)

{

Операция

Результат

x = 6 % 3

x = 0

x = 8 % 3

x = 2

x = -6 % 3

x = 0

x = -8 % 3

x = -2

  /*scanf("%d %d",&a,&b);*/

  res = (a + b) / 2.0;

  printf("%lf\n",res); 

}

Операция

Сокращение

i = i + 1

i++

i = i - 1

i--

i = i + a

i += a

i = i %a1

i %= a

   Операция вычисления остатка в Си обозначается символом '%'. При этом остаток при делении отрицательного числа на положительное является отрицательным (хотя математически остаток при делении на число n должен лежать в промежутке от 0 до  n – 1 включительно).

   В языке Си при выполнении операций возможны синтаксические сокращения. Например, вместо i = i + 1 можно писать i++. Если < op >  – некоторая бинарная операция, то вместо i = i < op > a можно писать i < op >= a.  Примеры сокращений приведены ниже в таблице:

   Пример 1.1.2. Временем будем называть пару h : m, где h обозначает количество часов, а m – количество минут. Известно, что в h1 : m1 начался дождь, а в h2 : m2 он закончился (0 ≤ h1, h2 ≤ 23, 0 ≤ m1, m2 ≤ 59). Необходимо вычислить, сколько времени (hres : mres) шел дождь. Известно, что дождь продолжался не более 24 часов.

   Если время h1 : m1 больше чем h2 : m2, то дождь начался в один день, а закончился на следющий. Например, если h1 : m1  = 23:50 и h2 : m2 = 13:20, то дождь длился 13 часов и 30 минут.

   Времени h : m соответствует h*60 + m минут, прошедших с полночи. Тогда можно утверждать, что дождь начался в time1 = h1 * 60 + m1 минут, а закончился в time2 = h2 * 60 + m2 минут. Разность между началом и концом дождя составляет timeRes = (time2 – time1  + 24 * 60)  %  (24 * 60) минут. Выделяем количество часов и минут из timeRes и выводим их на экран.

#include < stdio.h >

int h1, h2, m1, m2, time1, time2, timeRes, hres, mres;

void main(void)

{

h1 = 23; m1 = 50;                 h2 = 13; m2 = 20;

time1 = h1 * 60 + m1; time2 = h2 * 60 + m2;

timeRes = (time2 - time1 + 24 * 60) % (24 * 60);

hres = timeRes / 60; mres = timeRes % 60;

printf("%d:%d\n",hres,mres);

}

   Упражнение 1.1.1. Имеются одинаковые коробки, каждая из которых вмещает m шаров. Сколько коробок требуется для упаковки n шаров?

   Упражнение 1.1.2. Рассмотрим условие предыдущей задачи. Сколько коробок будут полностью заполнены, если всего имеется n шаров, а каждая коробка вмещает m шаров?   

Упражнение 1.1.3. Пусть n – трехзначное число. Присвоить переменным a, b, c соответственно количество сотен, десятков и единиц числа n.

УКАЗАНИЯ К РЕШЕНИЮ УПРАЖНЕНИЙ

   Упражнение 1.1.1. Ответом будет значение выражения, которое на языке Си можно записать в виде (m + n – 1) / n.
  
Упражнение 1.1.2. Ответом будет значение выражения, которое на языке Си можно записать в виде m / n.

ЛОГИЧЕСКИЕ ОПЕРАЦИИ

   Среди логических операций следует выделить операции 'и' ('and'), 'или' ('or'), отрицание 'не' ('not') и сложение по модулю 2 ('xor'). В языке Си логические операции обозначаются следующим образом:

Операция

Обозначение в Си

x and y

x && y

x or y

x || y

not x

!x

x xor y

x ^ y

   Таблицы истинности логических операций приведены в следующих таблицах:

  x 

  y 

X and y

 

  x 

  y 

x or y

 

  x 

not x

 

  x 

  y 

x xor y

0

0

0

 

0

0

0

 

0

1

 

0

0

0

0

1

0

 

0

1

1

 

1

0

 

0

1

1

1

0

0

 

1

0

1

 

 

 

 

1

0

1

1

1

1

 

1

1

1

 

 

 

 

1

1

0

   Следует отметить также логическую операцию сравнения, обозначаемую в Си двумя знаками равенства. При этом выражение (x == y) эквивалентно  !(x xor y). Операция называется операцией "сложение по модулю 2", потому что x xor y = (x + y) mod 2. Логические операции подчиняются правилу Де-Моргана:

not (x and y) = (not x) or (not y)

или то же самое   !(x && y) = !x || !y

   Упражнение 1.2.1. Составить таблицу истинности следющих функций:

   1. Равенства: x = y;
   2. Импликации: x imp y = (not x) or y

Импликация — бинарная логическая связка. В булевой логике импликация — это функция двух переменных (они же — операнды операции, они же — аргументы функции). Переменные могут принимать значения из множества . Результат также принадлежит множеству

В классической логике условное утверждение имеет форму «Если А, то В». Оно ложно только в том случае, если А истинно, а В ложно, и истинно во всех остальных случаях. Содержание утверждений А и В при этом во внимание не принимается. Если даже они никак не связаны друг с другом по смыслу, составленное из них условное утверждение может быть истинным.

Импликация на примере дедукции

Что собой представляет эта импликация, можно посмотреть на примере дедукции — метода умозаключений, в котором применяются условные утверждения. Классическим примером дедукции является следующая:

Все люди — смертны.
Все греки — люди.
Следовательно, все греки — смертны.

(Условная связь этих утверждений станет очевидна, если мы представим их в следующем виде:

Если все люди смертны,
И если все греки — люди,
То все греки смертны.

В классической логике это умозаключение имеет следующую форму: если первое, то второе; имеет место первое; значит есть и второе. Такая форма дедукции является правильной. Неправильной дедукцией будет такая форма: если первое, то второе; имеет место второе; значит есть и первое. Если вложить в эту форму прежнее содержание, то получится следующее:

Все люди — смертны.
Все греки — смертны.
Следовательно, все люди — греки.

Ясно, что это умозаключение является неправильным.

Упражнение 1.2.1. Таблицы истинности равенства и импликации имеют вид:

x

y

x=y

 

x

y

imp y

0

0

1

 

0

0

1

0

1

0

 

0

1

1

1

0

0

 

1

0

0

1

1

1

 

1

1

1


 

А также другие работы, которые могут Вас заинтересовать

22981. Робота зі співпроцесором 3.19 MB
  Обгрунтування необхідності співпроцесора Хоча мікропроцесор К1810ВМ86 оперує з 16розрядними числами відносна точність його обчислень не дуже висока. Такий допоміжний процесор має назву співпроцесора. Включення співпроцесора Для спільної роботи зі співпроцесором мікропроцесор МП86 слід включити у максимальний режим = 0.
22982. Тенденції у розвитку мікропроцесорної техніки 1011.5 KB
  Другий шлях полягає навпаки у роздрібненні секціонуванні мікропроцесора на окремі функціональні блоки і модулі кожний з яких виконує свої операції: операційний блок блок мікрокомандного керування блок памяті мікрокоманд та інше. Його система команд майже цілком співпадає з системою команд МП80 і відрізняється від неї лише декількома додатковими командами про які мова йтиме далі. У апаратному відношенні МП85 містить всі ті ж блоки що і МП80 але має крім того: блок керування перериваннями котрий розширює можливість звернення до...
22983. Система команд та методи адресації в мікропроцесорі КР1810ВМ86 1.05 MB
  Серед цього списку можна виявити що деякі команди не змінили ані форми ані змісту наприклад HLT NOP STC IN OUT JMPCALL тощо. Деякі команди зберегли свій зміст але мають дещо іншу мнемоніку: для МП80 INR DCR ANA ORA XRA JZ JNZ JC JNC для МП86 INC DEC AND OR XOR JE JNE JB JNB Зявилися принципово нові команди пoвязані з новими можливостями МП86: MUL множення; DIV ділення; NEG утворення доповняльного коду; NOTінверсія; TEST операція І без фіксації результату тільки заради...
22984. Мультипроцесорні системи 4.79 MB
  Дійсно звернення до памяті або до зовнішніх пристроїв та захоплення системної шини дозволяється одночасно лише одному з процесорів тоді як останні повинні в цей час переробляти раніш одержані дані або знаходитись в режимі очікування. Такий часовий розподіл загальних ресурсів системи має назву арбітражу системної шини і виконується групою пристроїв спеціальних ІМС так званих арбітрів шини. Арбітр шини дозволяє захоплення системної шини лише одному з процесорів що виставили запит тому котрий посідає найвищого пріоритету і...
22985. Мікропроцесори 80386 і 80486 4.79 MB
  Це дозволяє йому здійснювати обмін з памяттю зі швидкістю до 32 Мбайт сек і виконувати до 5 мільйонів операцій у секунду MIPS. Отже під час виконання одної команди відбувається декодування другої а третя видобувається з памяті. Усі можливості МП386 мультипрограмність віртуальна память захист пріоритети зповна відкриваються лише в захищеному режимі. У порівнянні з МП286 у МП386 існують істотні відміни в організації віртуальної памяті.
22986. Поняття про RISC-процесори. Процесори п’ятого та шостого поколінь 6.22 MB
  Процесори пятого та шостого поколінь Поняття про RISCпроцесори Якісний стрибок у розвитку мікропроцесорних систем відбувся з появою мікропроцесора 8086. Такі процесори і компютери дістали назву RISC процесорів та RISC компютерів на відміну від процесорів та компютерів зі складною системою команд Complex Instruction Set Computer CISC компютер. Перший €œсправжній€ RISC компютер було створено наприкінці 70х років в університеті Берклі.
22987. Діагностика несправностей у мікропроцесорних системах 739 KB
  Тут можна навести таку наочну аналогію: візьміть на сторінці друкованого тексту вертикальний рядок літер що розташовані одна над одною і спробуйте встановити зміст тексту. Тому третя трудність полягає у тому щоб будьякимсь чином представити інформацію що міститься у вихідному тестсигналі у компактній та зрозумілій формі по якій можна було б судити про справність або несправність пристрою що перевіряється. Тестпрограма повинна бути періодичною щоб можна було проконтролювати відтворюваність її результатів від кількох актів тестування....
22988. Декотріі принципи роботи сучасних мікропроцесорів та ЕОМ 1.54 MB
  Вони показують яка команда виконується до якої комірки памяті або зовнішнього пристрою звертається процесор і містять іншу важливу і вичерпну інформацію. Після того як у програмі дається сигнал €œвивільнити мікросхему€ вміст усіх регістрів переписується в область памяті що має назву сегмента стану задачі TSS Taske State Segment. При роботі у мультипрограмному режимі можуть виникати певні труднощі з використанням оперативної памяті котра стає тепер вже загальною для кількох задач. Можливі непередбачені ситуації коли одна програма...
22989. Віртуальна пам’ять. Мікропроцесор 80286 4.24 MB
  Мікропроцесор 80286 Як добре відомо процесор може безпосередньо працювати лише з тією інформацією яка записана в його оперативній памяті. Однак обєм оперативної памяті у сучасних ЕОМ порівняно невеликий і часто виявляється недостатнім для розвязання більшменш складних задач. Віртуальна організація памяті дає користувачеві практично необмежений обєм памяті.