Объясните новичку.

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Объясните новичку.

Сообщение Paster Fob » 17.03.2011 13:23:50

Изучаю турбопаскаль самостоятельно.По книгам и видео урокам.Возникают недопонимания с разными понятиями.Не могу понять что такое унарная и бинарная операции.Объясните простыми словами.
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

Re: Объясните новичку.

Сообщение Mr.Smart » 17.03.2011 13:30:12

Унарная операция — это операция над одним операндом (побитовое отрицание, унарный минус — меняет знак числа). Соответственно бинарная - операция над двумя операндами, например: умножение, сложение и т.д.
x+y - бинарная
-x - унарная
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Объясните новичку.

Сообщение Paster Fob » 17.03.2011 13:47:19

Всё становится ясно,если объясняют по человечески а не так как в книге заумными словами.Спасибо.если у меня ещё возникнут вопросы с терминами,то я буду писать в этой теме.
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

Re: Объясните новичку.

Сообщение informat » 17.03.2011 14:04:59

Paster Fob писал(а):Всё становится ясно,если объясняют по человечески а не так как в книге заумными словами.Спасибо.если у меня ещё возникнут вопросы с терминами,то я буду писать в этой теме.


А сколько ешё всего осталось за пределами внимания и понимания.
Когда ученик задаёт вопрос - это значит он уже что-то понял.
А если не понял, то и вопросов не возникает. И это проблема самостоятельного обучения.
Ещё полезный прием в обучении - дать ошибиться, а потом пояснить почему получилась эта ошибка. Этот хороший прием мало кто применяет. :(

Поэтому я и сделал свой курс "Развитие алгоритмического мышления".
Аватара пользователя
informat
новенький
 
Сообщения: 62
Зарегистрирован: 27.10.2010 09:44:20
Откуда: http://informat.name

Re: Объясните новичку.

Сообщение Paster Fob » 17.03.2011 14:15:34

А что означает унарная операция not,и как она применяется?
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

Re: Объясните новичку.

Сообщение Mr.Smart » 17.03.2011 14:21:38

not - отрицание, инверсия т.е. инвертируются все биты. Например:
Код: Выделить всё
var
  i: Word;
begin
  i:=0;
  WriteLn(not i);
end;

Выдаст значение $FFFF;
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Объясните новичку.

Сообщение Paster Fob » 17.03.2011 16:22:54

Я попробовал сделать так.
Код: Выделить всё
uses crt;
var
  i:integer;
begin
  clrscr;
  i:=5;
  writeln(not i);
  readln;
end.

результат -6.почему добавилась ещё одна единица?
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

Re: Объясните новичку.

Сообщение Kitayets » 17.03.2011 16:36:52

Paster Fob писал(а):Я попробовал сделать так.
Код: Выделить всё
uses crt;
var
  i:integer;
begin
  clrscr;
  i:=5;
  writeln(not i);
  readln;
end.

результат -6.почему добавилась ещё одна единица?


Для того чтобы понять, что происходит - надо понимать:
1. формат представления целых чисел в двоичной системе;
2. формат представления знаковых целых чисел в двоичной системе.

смотри - твоё число 5 (целое знаковое) -> [0000000000000000000000000000]101
после отрицания - > 11111111111111111111111111111010 = -6

Добавлено спустя 7 минут 6 секунд:
ты можешь спросить - "почему второе число равняется минус 6-ти?". ответ = потому что так принято представлять в отрицательные числа в двоичной системе для удобства реализации дискретных вычислительных устройств.

Добавлено спустя 7 минут 12 секунд:
если тебе интересно почему именно так - скачай в интернете книгу Чарльза Петцольда КОД http://www.computerra.ru/offline/2001/410/12378/ (английское название CODE) там это "на пальцах" объясняется с картинками. Вроде её микрософт бесплатно раздаёт? В любом случае она ищется в сети "за пять минут".

Добавлено спустя 8 минут 22 секунды:
если ты объявишь i как unsigned integer = то после отрицание число будет ровняться 4294967290
Kitayets
постоялец
 
Сообщения: 171
Зарегистрирован: 05.05.2010 21:15:24

Re: Объясните новичку.

Сообщение Paster Fob » 17.03.2011 18:09:31

Спасибо за информацию.
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

Re: Объясните новичку.

Сообщение informat » 18.03.2011 07:28:38

Есть ещё один вопрос на понимание.

Почему в логических выражениях типа
A=B and D=C
нужно ставить круглые скобки.
Т.е писать так:
(A=B) and (D=C)
?

Автор вопросов задумывался?
Понимает почему?
Аватара пользователя
informat
новенький
 
Сообщения: 62
Зарегистрирован: 27.10.2010 09:44:20
Откуда: http://informat.name

Re: Объясните новичку.

Сообщение Paster Fob » 22.03.2011 09:14:16

informat писал(а):Почему в логических выражениях типа
A=B and D=C
нужно ставить круглые скобки.
Т.е писать так:
(A=B) and (D=C)
?

Потому что то что в скобках делается в первую очередь.если не поставить скобки получится что-то типа этого A=(B and D)=C.т.к логическая операция and имеет преимущество перед операцией отношения =.
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

Re: Объясните новичку.

Сообщение informat » 22.03.2011 18:24:16

Paster Fob писал(а):
informat писал(а):Почему в логических выражениях типа
A=B and D=C
нужно ставить круглые скобки.
Т.е писать так:
(A=B) and (D=C)
?

Потому что то что в скобках делается в первую очередь.если не поставить скобки получится что-то типа этого A=(B and D)=C.т.к логическая операция and имеет преимущество перед операцией отношения =.


Значит задумывался.
Это хорошо!
Аватара пользователя
informat
новенький
 
Сообщения: 62
Зарегистрирован: 27.10.2010 09:44:20
Откуда: http://informat.name

Re: Объясните новичку.

Сообщение Paster Fob » 22.03.2011 22:49:40

Значит следующая проблема ни как не могу понять когда ставить : ,:= и =.может что подскажите.
Аватара пользователя
Paster Fob
постоялец
 
Сообщения: 188
Зарегистрирован: 22.02.2011 21:53:36
Откуда: Новосибирск.

Re: Объясните новичку.

Сообщение Mr.Smart » 22.03.2011 22:56:50

В чём проблема.
:= - оператор присваивания
например:
Код: Выделить всё
a:=132;

= - оператор сравнения
Код: Выделить всё
if a=123 then
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Объясните новичку.

Сообщение devels » 22.03.2011 23:02:13

На счет скобок и and, or и т.п., не во всех языках приоритет операций у них больше чем у других, в таких языках можно скобки опускать.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

След.

Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 24

Рейтинг@Mail.ru