Loftschool школа онлайн обучения IT профессиям
Профессии
  • Веб-разработчик
  • 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 для начинающих
          • Python: машинное обучение
        • Главная
        • Блог
        • Статьи
        • Урок 2. Основы программирования. Типы данных
        Полезный блог
        Статьи
        Опубликовано 05.11.2020 07: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
              • Информация о курсах
            • Статьи
              • Архив материалов
                • DevNews
                • DevShow
                • Loftnews
                • Loftschool
                • Loftvlog
                • Интервью
                • Видеоуроки
              • © 2012 - 2023 LOFT

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

              • © 2012 - 2023 LOFT

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

                • +7 (800) 600 09 54
                • +7 (812) 339 22 01
                • [email protected]
                УчастникSkolkovo
              • Полезная рассылка

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

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