Профессии
  • Веб-разработчик
  • Frontend разработчик
  • Backend разработчик
  • Full Stack разработчик
  • Интернет-маркетолог
  • Android-разработчик
  • UX/UI Дизайнер
Интенсивы
          • Основы вёрстки
          • Веб для начинающих
          • JavaScript
          • Vue.js
          • React.js
          • Node.js
          • PHP
          • Контекстная реклама
          • SMM
          • SEO для всех
          • Android: базовый
          • Android: продвинутый
          • UX/UI-дизайн: базовый
          • UX/UI-дизайн: PRO
          • Python: машинное обучение
        Видеокурсы
        • Как войти в IT
        • Ember.js
        • Верстка - быстрый старт
        • WordPress
        • Figma и Sketch
        • Все видеокурсы
          • Веб-разработчик
          • Frontend разработчик
          • Backend разработчик
          • Full Stack разработчик
          • Интернет-маркетолог
          • Android-разработчик
          • UX/UI Дизайнер
                • Основы вёрстки
                • Веб для начинающих
                • JavaScript
                • Vue.js
                • React.js
                • Node.js
                • PHP
                • Контекстная реклама
                • SMM
                • SEO для всех
                • Android: базовый
                • Android: продвинутый
                • UX/UI-дизайн: базовый
                • UX/UI-дизайн: PRO
                • Python: машинное обучение
                • Все записи блога
                • Истории выпускников LoftSchool
                • Полезные советы
                • Книги
                • Инструменты
                • Команда LoftSchool
                • Информация о курсах
                • Статьи
              • Видеокурсы
              • Главная
              • Блог
              • Статьи
              • Урок 2. Основы программирования. Типы данных

              Полезный блог

              Статьи
              Опубликовано 05.11.2020 10:12
              Урок 2. Основы программирования. Типы данных

              Пока вы учитесь программированию, придётся написать тысячи строк кода. После учёбы – ещё больше. А по сути всё это набор данных, различающихся по типам и структурам. Что такое структуры данных мы обсудим в следующих уроках, а о типах поговорим сейчас.

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

              — number – число;

              — string – строка;

              — boolean – логический тип данных;

              — undefined – тип данных, у которых значение не определено;

              — null – тип данных с «пустыми» значениями;

              — object – тип данных, хранящий свойства и методы.

              Во всех языках программирования свои типы данных и способы их обозначений. На курсе «Основы программирования» мы подробно рассмотрим три базовых типа данных в JavaScript: 

              — числа;

              — строки;

              — логические или булевы значения.

              Для работы ничего дополнительно устанавливать не нужно, всё выполняется в браузере. Понадобится сайт https://codepen.io/, так называемая «песочница», где пишется код JS и сразу выводится результат.

              Готовы? Начнём по порядку.

              Числа

              Для обозначения каждого типа данных в языках программирования используются специальные слова.

              В JavaScript тип данных «число» имеет обозначение number. 

              Теперь посмотрим, как это работает:

              1. Заходим на сайт https://codepen.io, регистрируемся и видим такое поле:

              2. Во вкладке JS вводим команды:

              console.log(typeof 24);
              console.log(typeof 24.3);

              Справка! В конце каждой строки с командой в JS необходимо ставить точку с запятой. Воспринимайте это как знак препинания в обычном языке, на котором вы говорите. Поставив ; вы сообщите компьютеру, что вы закончили одну «фразу» и начинаете следующую.

              Оператор typeof() говорит компьютеру о том, что необходимо вывести в консоль тип введённых данных, а не сами данные.

              Результат сразу отображается во вкладке Console:

              "number"
              "number"

              Видим, что тип не отличается у обоих значений и указывается как number.

              Строки

              Строки – это второй базовый тип данных. В JavaScript они обозначаются как string.

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

              Справка! Числа определяются как тип данных string, если они заключены в кавычки. Тогда они признаются не числом (number), а одним из символов строки (string). Проверим:

              console.log(typeof(24));
              console.log(typeof('24'));

              Результат в консоли:

              "number"
              "string"

              В программах строки указывают либо в одинарных кавычках-апострофах, либо в двойных кавычках – зависит от языка. В JS разрешено использовать и двойные, и одинарные кавычки по выбору.

              При использовании одинарных кавычек, сложность возникает тогда, когда внутри строки стоит такой же символ. Например, 'It's cloudy day'. Английское местоимение It's включает в себя апостроф. Если мы проставим три апострофа (в начале, в слове It's и в конце строки), то компьютер обозначит конец строки после It:

              console.log('It's cloudy day');

              В консоль выведется:

              "It"

              Как этого избежать?

              В таких случаях мы используем экранирование – ставим перед символом внутри строки обратный слэш «\». Тогда фраза 'it's cloudy day' примет вид 'it\'s cloudy day' и будет правильно считана:

              console.log('It\'s cloudy day');

              Результат:

              "It's cloudy day"

              В JavaScript мы можем писать подобные строки в двойных кавычках и результат сразу будет тот, что нужен:

              console.log("It's cloudy day");

              Результат:

              "It's cloudy day"

              Каждый символ в строке имеет порядковый номер – индекс. Его используют для того, чтобы указать компьютеру, к какому конкретно символу идёт обращение. 

              Справка! Отсчёт начинается с 0.

              Например, в слове «синий» индексы присваиваются так:

              с – 0

              и – 1

              н – 2

              и – 3

              й – 4

              Строки можно склеивать, вырезать из них части, срезать и проводить другие операции. Рассмотрим, как это сделать.

              Практика

              1. Вводим в «песочнице» строку 'hello' с помощью команды console.log() через typeof(). В консоли увидим тип string. А если введём числовое значение без кавычек 24.3, увидим тип number:

              console.log(typeof('hello'));
              console.log(typeof(24.3));

              Результат:

              "string"
              "number"

              2. Попробуем ввести строку без typeof() и посмотрим на результат:

              console.log('hello');
              console.log(24.3);

              Результат:

              "hello"
              24.3

              3. Выделим из строки отдельный символ. Например, букву B в слове LOFTBLOG. Эта буква стоит в строке на 5 месте, поэтому имеет индекс 4 (помним, что нумерация с 0). Чтобы обратиться к символу, мы указываем его индекс в квадратных скобках – [4]:

              console.log('LOFTBLOG'[4]);

              Результат:

              "B"

              Выделение фрагмента строки

              Для выделения фрагмента строки (подстроки) в JS используется три метода:

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

              Если укажем только первый, то отбразится часть строки от него и до конца. Если первый и последний – вырежем часть строки:

              console.log('LOFTBLOG'.substring(4));
              console.log('LOFTBLOG'.substring(4,6));

              Результат:

              "BLOG"
              "BL"

              Справка! Последним считается не индекс последнего символа, который мы хотим выделить, а следующий за ним. Например, в слове LOFTBLOG, буква G имеет индекс 7, но последним считается индекс 8, так как правая граница в срез не входит.

              В примере первым символом мы указали четвёртый – B, а последним тот, что находится под индексом 6. Это буква O. Но в консоли мы увидели только две буквы – BL. Это подтверждает то, что правая граница не входит в срез. Если мы захотим вырезать слово BLOG, но укажем последним символ под номером 7, а не 8, то получим:

              console.log('LOFTBLOG'.substring(4,7));

              Результат:

              "BLO"

              slice() – действует так же, как и substring(), но ему допускается присваивать отрицательные значения, начиная с -1. Отсчёт начнётся с конца строки, а не с начала:

              console.log('LOFTBLOG'.slice(4));
              console.log('LOFTBLOG'.slice(-6));

              Результат в консоли:

              "BLOG"
              "FTBLOG"

              substr() – используется для выделения фрагмента с указанием индекса начального символа и количества символов после него, включая первый:

              console.log('LOFTBLOG'.substr(1,4));

              Результат:

              "OFTB"

              В качестве начального символа мы определили тот, что под индексом 1 – это первая O в слове LOFTBLOG. А через запятую попросили вывести 4 символа, включая его – это OFTB.

              Логические (булевы) значения

              Здесь за основу берутся логические выражения, на которые компьютер мог бы ответить «да, это верно» или «нет, это не верно». Буль принимает только два значения: 

              истина – true

              ложь – false

              Они используются, когда программа принимает решение о том, что делать дальше, анализируя логическое значение выражений. Например, при выполнении алгоритма «ветвление»: если выражение верно, то программа идёт по одному алгоритму, если не верно, то по другому.

              Не читали наш первый урок про логику и алгоритмы? Он здесь.

              В JavaScript булевы значения имеют тип boolean, писать их нужно с маленькой буквы:

              console.log(typeof true);
              console.log(typeof false);

              Консоль покажет тип:

              "boolean"
              "boolean"

              Напишем логическое выражение и посмотрим, что выводится в консоль в качестве значений. Например, «три равно три». 

              console.log(3==3);

              Справка! Для проверки равенства в JavaScript необходимо прописывать 2 знака равно, так как одинарное равно уже используется для присваивания значений. 

              Результат:

              true

              Как видим, значением логического выражения «3==3» является true, так как три действительно равно трём.

              Если ввести ложное условие, то значение станет false:

              console.log(3==4);

              Результат:

              false

              Преобразование типов данных

              Не все типы данных совместимы в программах. Например, по умолчанию нельзя сложить строку с числом. Чтобы не допустить ошибок, один тип необходимо преобразовать в другой.

              Одна из особенностей языка JavaScript в том, что здесь выполняется неявное преобразование типов – язык сам понимает, в какой тип преобразовать данные, в зависимости от операции, которую мы выполняем.

              Но в JS есть команды, которые позволяют сделать это самостоятельно – провести явное преобразование.

              Для этого используются команды:

              — String()

              — Number()

              — Boolean()

              console.log(String(2323));
              console.log(Boolean('dsgg'));
              console.log(Boolean(0));
              console.log(Number(2323));

              Увидим результат:

              "2323"
              true
              false
              2323

              Число 2323, написанное без кавычек, имеет тип number. С помощью команды String() мы перевели его в тип string – строка. Это видно по отображению результата. Тип «число» указывается в консоли без кавычек. А тип «строка» в кавычках.

              При преобразовании числа и строки в булевый тип, любое значение определяется, как true, кроме числового значения 0.

              Если 0, написано как '0', то это тип данных string и он определится, как true, а если мы напишем 0 без кавычек, то это тип данных number и при переводе в буль он равен значению false. Проверим:

              console.log(typeof(0));
              console.log(typeof('0'));
              console.log(Boolean(0));
              console.log(Boolean('0'));

              Результат:

              "number"
              "string"
              false
              true

              Любые другие числа кроме 0 определятся как true.

              Булевы значения можно преобразовать в числовой тип. Значению true соответствует 1, а false – 0:

              console.log(Number(true));
              console.log(Number(false));

              Результат:

              1
              0

              При преобразовании булевых значений в тип «строка» мы увидим слова «true» и «false» в кавычках, что означает, что тип изменился, так как значения boolean пишутся без кавычек:

              console.log(String(true));
              console.log(String(false));

              Консоль:

              "true"
              "false"

              Виды типизации

              Типизация, в зависимости от языка программирования, может быть одновременно:

              — сильной или слабой;

              — динамической или статической. 

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

              Слабая типизация означает, что язык программирования выполняет автоматическое (неявное) преобразование типов, в зависимости от операции, которая над данными производится. Например, так происходит в JavaScript.

              Чем более сильная типизация у языка, на котором написан код, тем более надежной считается программа. Поскольку именно такая типизация защищает программиста от простых ошибок, которые трудно обнаружить: опечатки, введение данных неподходящего типа.

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

              А в статической типизации тип фиксируется при первом объявлении значений. Изменить это у нас не получится. Ошибка в типе обнаружится еще до запуска программы.

              Домашнее задание

              Напишите типы данных двух разных языков программирования. Укажите, с какой они типизацией. Например, JavaScript – язык со слабой и динамической типизацией. 

              Опишите, с помощью каких команд в выбранных языках можно преобразовать друг в друга три базовых типа данных: целое число, строка и булевы значения.

              Поделись публикацией

              Категории

              • Все записи блога
                • Трудоустройство
                  • Истории выпускников LoftSchool
                  • Полезные советы
                • Полезные ссылки
                  • Книги
                  • Инструменты
                • Новости школы
                  • Команда LoftSchool
                  • Информация о курсах
                • Статьи
                  • © 2012 - 2022 LOFT

                    Школа онлайн образования

                  • © 2012 - 2022 LOFT

                    Школа онлайн образования

                    • +7 (800) 600 09 54
                    • +7 (812) 339 22 01
                    • info@loftschool.com
                  • Полезная рассылка

                    Подпишись, чтобы быть в курсе наших новостей, акций и скидок.

                  • Полезное
                    • Карта курсов
                    • Работодателям
                    • Партнерская программа
                    • Вакансии
                    • Подарочные сертификаты
                    • Вебинары
                    • Блог
                    • FAQ
                  • Информация
                    • Публичная оферта портала
                    • Политика конфиденциальности
                    Безопасная передача данных