152
!!"!"" битовая карта деревья хорошо Игорь Алексеенко училка в HTML Academy

Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

  • Upload
    others

  • View
    29

  • Download
    0

Embed Size (px)

Citation preview

Page 9: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Законы развития ПО

5

1960 1970 1980 1990 2000 2010

Закон Мура Закон Вирта (закон Пейджа)1965производительностькомпьютеров удваиваетсяпримерно каждыедва года

~1995медлительность программвозрастает быстрее чемпроизводительностькомпьютеров

Решения, придуманные в 80-х оптимизированы для выполнения на слабых компьютерах, поэтому в современном контексте будут работать очень эффективноSystem 1

Windows 1.0

Page 12: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Двоичная запись

8

В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку в степени номера разряда

!""!!"

Page 13: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Двоичная запись

8

В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку в степени номера разряда

!""!!"012345

Page 14: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Двоичная запись

8

В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку в степени номера разряда

!""!!"202122232425

Page 15: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Двоичная запись

8

В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку в степени номера разряда

!""!!"12481632

Page 16: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Двоичная запись

8

В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку в степени номера разряда

!""!!"12481632

1008160 ++ + + +

Page 17: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Двоичная запись

8

В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку в степени номера разряда

!""!!"12481632

=251008160 ++ + + +

Page 18: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Двоичная запись

8

В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку в степени номера разряда

!""!!"12481632

Page 19: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Двоичная запись

8

В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку в степени номера разряда

!""!!"12481632

"!!!"!

Page 20: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Двоичная запись

8

В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку в степени номера разряда

!""!!"12481632

"!!!"!0200032 ++ + + +

Page 21: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Двоичная запись

8

В памяти компьютера все числа хранятся в двоичном виде — как последовательность нулей и единиц. Разряды читаются справа налево. Нумерация разрядов начинается с нуля. Единица в разряде означает что итоговое число содержит двойку в степени номера разряда

!""!!"12481632

"!!!"!0200032 ++ + + + =34

Page 27: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Битовые карты

• IP-адрес192.168.1.1 / 255.255.255.0

• цвет #FACE8D

• права пользователяchmod -R 777 .

• карта уровня в игре или пиксели изображения

10

Битовой картой называется последовательность бит (нулей и единиц). В битовых картах может храниться не только число, но и любой другой набор данных

Page 28: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Битовые карты

• IP-адрес192.168.1.1 / 255.255.255.0

• цвет #FACE8D

• права пользователяchmod -R 777 .

• карта уровня в игре или пиксели изображения

• состояние UX-компоненты

10

Битовой картой называется последовательность бит (нулей и единиц). В битовых картах может храниться не только число, но и любой другой набор данных

Page 56: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

var Direction = { RIGHT: 0x01 };var DirectionBehaviour = { 0x01: function(character) { return Object.assign({ left: character.left + character.hSpeed }, character); }]);

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

Page 66: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

И кроме этого есть ещё

• исключающие или XOR, ^используется для переключения состояния (toggle)

• побитовый сдвиг влево <<

• побитовый сдвиг вправо >>

• сдвиг вправо с заполнением нулями >>>

• битовые маски когда одно состояние хранится в нескольких соседних битах используются маски, которые показывают единицами, в какие именно биты состояние записано (IP-адрес и маска подсети)

26

Page 83: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

33

Page 95: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

36

Page 96: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

36

Page 97: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

36

Page 98: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

36

Page 99: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

36

Page 100: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

36

Page 101: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

36

Page 102: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

36

Page 103: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

36

Page 115: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

39

Page 116: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

39

Page 117: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

39

Page 118: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

39

Page 119: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

39

Page 120: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

39

Page 121: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

39

Page 122: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

39

Page 123: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

39

Page 140: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

44

Page 150: Классическое программирование для фронтендеровo0.github.io/share/2-classic-programming.pdf · для выполнения на слабых

Что поизучать

• github.com/htmlacademy/bitset.js библиотека от HTML Academy для работы с битовыми массивами в JS — обёртки для добавления, удаления, проверки и получения объектов с состоянием

• o0.github.io/treesинтерактивные демки, примеры для разных областей применения, больше теории, исходники

• github.com/thejameskyle/itsy-bitsy-data-structuresрепозиторий, с интересным и подробным рассказом про алгоритмы и структуры данных на JS

47