Что это значит в программировании
Перейти к содержимому

Что это значит в программировании

  • автор:

Синтаксис PHP

Разберёмся, из чего состоит любой язык программирования.

У каждого языка есть правила и конструкции, следуя которым мы выражаем мысли и делаем их понятными для другого человека. В программировании всё точно так же. Но вместо человеческого языка мы используем язык программирования PHP, а в роли нашего собеседника выступает PHP-интерпретатор. Поэтому, чтобы выразить свою мысль, мы должны сделать её понятной для интерпретатора.

Переменные

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

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

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

Как работать с переменными

Любую переменную следует вначале объявить, то есть дать ей имя и присвоить значение.

В синтаксисе PHP имя переменной записывается латинскими символами, но первым символом всегда должен быть знак доллара $ , а затем идёт имя.

Не допускается начинать имя переменной с цифры, а также использовать любые значения, кроме букв алфавита и знака подчёркивания.

Примеры допустимых имён переменных:

  • $age ;
  • $favorite_color ;
  • $name2 .

Примеры недопустимых имён:

  • age — забыт знак доллара в начале;
  • $42 — начинается с цифры;
  • $my-age — содержит дефис.

Присваивание

Пустая переменная не будет слишком полезна. Поэтому давайте сразу что-нибудь туда поместим. Такое действие называется операцией присваивания.

Вот как выглядит присваивание информации в новую переменную: $favorite_color = «green»; .

Знак «равно» в PHP является оператором и всегда означает операцию присваивания. Здесь мы записали слово green в переменную под именем favorite_color .

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

Пример: $favorite_number = 42;

Использование

Мы научились сохранять информацию в переменных. Теперь посмотрим, как получить доступ к этой информации в нашем сценарии.

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

Это значит, что мы запоминаем информацию с целью вернуться к ней в дальнейшем и применить для какого-то действия — совершить звонок, написать сообщение и тому подобное.

Эта логика полностью работает и в программировании. Информацию, сохранённую однажды, можно использовать в дальнейшем для выполнения различных действий. Таким действием может быть вывод этой информации на экран.

Перепишем уже знакомый сценарий так, чтобы в нём использовались переменные.

Теперь этот простой сценарий состоит из двух шагов. На первом мы объявляем (инициализируем) новую переменную и помещаем туда текст. На втором шаге мы используем эту переменную, обращаясь к ней по имени в контексте вызова функции вывода на экран. То есть теперь функция print получает не текст напрямую, а переменную, которая содержит этот текст.

Хотите потренироваться использовать переменные в PHP? Тогда выполните это задание.

Конкатенация

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

  • Мой любимый цвет — зелёный, а любимое число — 42

где значение цвета хранится в $favorite_color , а числа в $favorite_number .

Чтобы получить такую строку, необходимо использовать оператор конкатенации — . (точка). В качестве операндов он берёт две строки или переменные, содержащие строку, а затем возвращает новую строку.

Выглядит это так:

В этом задании вы познакомитесь с конкатенацией на практике.

Типы данных

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

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

Например, с данными типа «целое число» допускается выполнять арифметические операции, а с данными типа «строка» — нет. Поделить строку на строку невозможно. Кроме того, числа могут быть только в определённых пределах (в версии PHP для 32-битной ОС, самое большое число: 2147483647), а строки обязательно должны находиться в кавычках.

Операторы

Оператором в программировании называется нечто, принимающее одно или более значений.

Например, в арифметике есть такие операторы: +, -, /, *. Что означает сложение, вычитание, деление и умножение. Оператор всегда работает только в паре с двумя значениями, например, складывает два числа (операнда) или умножает их друг на друга.

Вы можете потренироваться использовать арифметические операторы в этом задании.

PHP дополняет уже знакомые нам из арифметики операторы, несколькими новыми:

  • уже знакомый оператор присваивания = , который используется для присваивания значения переменной;
  • очень полезны операторы сравнения: == , != , > , < — равно, не равно, больше и меньше;
  • % — оператор остатка от деления одного числа на другое. Например: 5 % 2 == 1; // true .

Условные конструкции

Иногда, в зависимости от условия, нужно выполнять различные действия. Для этого используется оператор if . Например, мы спросили пол посетителя страницы, сохранили его в переменную, а теперь хотим вывести разное приветствие, в зависимости от того, мужчина это или женщина. Здесь пригодятся операторы if и else .

Из примера видно, что условная конструкция состоит из трёх частей:

  • условие if — выражение, которое возвращает истинный или ложный результат;
  • блок if — строки кода, которые будут выполнены, если условие вернуло истину;
  • блок else — строки кода, которые будут выполнены, если условие вернуло ложь.

Обратите внимание, что каждый блок обрамляется и ограничивается фигурными скобками.

Чтобы закрепить материал, пройдите этот тренажёр. В нём подробно рассказывается, как использовать условные конструкции.

Выражения

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

  • $amount = 2 + 2;
  • 2 > 3
  • $gender == «мужчина»

Важно усвоить одно главное свойство выражений — они всегда имеют результат. Также различают два типа выражений: логические и арифметические. Результатом выполнения логического выражения всегда будет истина или ложь.

Например, результатом выражения 2 > 3 будет «ложь», потому что два, очевидно, меньше трёх.

Другим видом выражений является арифметическое выражение. Результатом выражения $amount = 2 + 2 будет 4.

В каких случаях может понадобиться знать результат выражения?

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

Предположим, что на нашем сайте мы хотим показать определённую картинку только посетителям мужского пола и старше 18 лет. Ранее, в коде сценария, мы уже получили и сохранили год рождения и пол посетителя в переменные $age и $gender .

Напишем выражение и условие для реализации такого поведения:

Обратите внимание на ключевое слово and — это оператор, который объединяет два отдельных выражения в одно новое. Это новое выражение будет иметь значение «истина», только если оба отдельных выражений будут истинны.

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

Понятие алгоритма

Многие из нас что-то слышали про алгоритмы на уроках информатики в школе. К сожалению, далеко не все школьные знания остаются с нами после её окончания. Тем не менее понимание, что такое алгоритмы, и умение их строить — это очень важные навыки, без которых не получится решать даже относительно простые задачи.

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

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

Программный код

Программный код — это текст, написанный на языке программирования. Обычно его пишут программисты, и этот процесс называется «кодинг». С помощью кода создают программы: отдают компьютеру команды, которые он выполняет.

«IT-специалист с нуля» наш лучший курс для старта в IT

Когда человек пишет код, про него говорят, что он кодит. Чаще всего этот термин применяют по отношению к программистам, которых еще называют кодерами.

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

Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

vsrat_7 1 (1)

Для чего нужен программный код

Компьютер не понимает человеческие языки. Но и программный код на современных языках программирования ему непонятен: его нужно компилировать или интерпретировать, чтобы он заработал. Возникает вопрос: почему тогда не писать программы на человеческом языке. Но так не получится — код все-таки нужен. Попробуем объяснить простыми словами, почему.

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

Код помогает быстрее и лаконичнее отдавать команды. Представьте, что вам нужно отсортировать большое количество данных. Описать задачу обычным текстом будет сложнее, чем написать одну или две строчки кода.

Код понятен и структурирован. Современные языки программирования — высокоуровневые. Это значит, что их уровень абстракции выше, ближе к человеческому пониманию, чем к машинному. Поэтому код на них нужно компилировать или интерпретировать. Исходный «язык машины» — длинные машинные коды из нулей и единиц, и писать на них программы человеку практически невозможно. Будет совершенно непонятно. А по программному коду видно, что он делает — его синтаксис приближен к человеческому пониманию.

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

Станьте Fullstack-разработчик на Python и найдите стабильную работу
на удаленке

Как выглядит программный код

Это набор строчек на языке программирования. Языки обычно приближены к английскому: слова из него заимствуются для обозначения команд. По структуре код состоит из команд, связей между ними, различных операторов и знаков препинания, а также переменных и значений. Большие группы команд, которые выполняют конкретное действие, собираются в блоки — функции.

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

На картинках с кодом, которые вы наверняка видели в сети, он разноцветный. Это происходит, потому что специальные средства для программирования подсвечивают разные элементы его синтаксиса для наглядности.

Разбираемся с терминами: каким бывает код

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

Исходный код, или сурс, source code — текст программы, который написал разработчик. Может быть открытым или закрытым. Открытый исходный код может просмотреть кто угодно. Закрытый или спрятан от пользователей, или вообще отсутствует в готовом программном продукте — вместо него используются исполняемые коды.

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

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

Станьте Frontend-разработчиком
и создавайте интерфейсы сервисов, которыми пользуются все

В чем пишут код

Языки программирования устроены так, что код можно написать в любом редакторе, даже в «Блокноте». Компьютер в таком случае воспримет его как текст, а для запуска нужно выполнить дополнительные действия: сохранить файл в нужном формате, отправить его компилятору или интерпретатору. Если это код на JavaScript, проще всего запустить его в браузере. А если код на внутренних языках операционной системы — в консоли.

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

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

Новичкам мы рекомендуем начать с редакторов кода или IDE. Так удобнее писать и сложнее запутаться.

Из чего состоит код

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

Синтаксис языка программирования ничего не говорит о смысле программы. Он отвечает только за правильность написания.

Код состоит из команд, связей между ними и других элементов синтаксиса. Вот какими они бывают.

Сначала договоримся об общих понятиях.

  • Командами мы будем называть непосредственные указания для компьютера, что сделать. Например, напечатать слово: print(“слово”).
  • Связями будем называть разные элементы, связывающие команды друг с другом. Чаще всего это знаки пунктуации и различные операторы.

А теперь рассмотрим компоненты более подробно.

Переменные. Когда пользователь оперирует какими-то значениями по нескольку раз, ему бывает нужно куда-то их записать. Для этого в языках программирования существуют переменные. У переменной есть имя, тип и значение.

  • Имя показывает, как обращаться к переменной. Например, если мы объявили a = 5, то переменная называется a.
  • Значение – это данные, которые лежат в переменной. Для названной выше переменной a это число 5.
  • Тип данных показывает, какой вид информации находится в переменной: число, буква, строка или что-то более сложное. Есть простые и составные типы данных. В первых хранятся примитивные значения вроде чисел и строк, во вторых – сложные конструкции из нескольких примитивов или даже функций.

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

https://amdy.su/wp-admin/options-general.php?page=ad-inserter.php#tab-8

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

Ключевые слова. Ключевые слова — это особые зарезервированные слова, которые используются для технических целей. Например, значения True и False, «истинно» или «ложно». Зачастую эти слова — не команды: они рассказывают компьютеру о каком-то значении или формате. Зарезервированными словами нельзя что-то назвать. Например, в программе не может быть переменной, имя которой True.

Станьте веб-разработчиком и найдите стабильную работу на удаленке

Идентификаторы. Так в информатике называются имена, которые программисты дают сущностям в коде. Например, имя переменной — это ее идентификатор. А если пользователь захочет создать какую-то функцию, то он даст ей имя. Оно тоже будет идентификатором.

Значения и литералы. Литералы еще называют безымянными константами. Это значения какого-то типа, которые используются в коде, но не привязаны к переменной. Они не меняются, ведь их никуда не записывают — это не переменные. Изменить литерал можно только одним способом: переписать исходный код.

Например, когда мы пишем print(“слово”), строка «слово» — это литерал. Нам не нужно записывать ее в переменную, но и обойтись без нее не получится. Она остается в коде как безымянная константа.

Знаки пунктуации и символы. Символы чаще всего бывают связями. Иногда — операторами. Это «знаки препинания» для языка программирования: точка, двоеточие, запятая, точка с запятой и так далее. Они помогают структурировать программу. Например, скобки () после функции обрамляют данные, которые нужно передать ей при запуске. А сами данные перечисляются через запятую, чтобы отделить одно от другого.

Правила пунктуации опять же различаются в зависимости от языка. Но чаще всего в языках программирования можно встретить круглые, квадратные и фигурные скобки, запятые и точки с запятой, а также точки и кавычки. Среди других распространенных символов — двоеточие, значок ^, вопросительный знак, вертикальная или косая черта, процент и многое другое.

Операции, операторы и операнды. Не пугайтесь. Операции — это определенные действия с данными: сложение, вычитание, сравнение и так далее. Причем речь не всегда идет о действиях в математическом смысле — это просто хороший наглядный пример.

Операции состоят из операндов и операторов.

  • Операнд – это переменная или литерал, что-то, с чем мы будем работать.
  • Оператор – это символ или слово для обозначения действия.

Например, в операции a + 2 переменная a и литерал 2 будут операндами, а знак + оператором.

Функции. Иногда набор команд бывает нужно объединить в один блок, чтобы потом вызывать его как одну большую команду. Это возможно. Такие блоки в программировании называются функциями.

У функции чаще всего есть имя (исключения встречаются, но редко) и список аргументов — данных, которые передаются ей при вызове. Когда программист вызывает функцию, она выполняет заложенные в ней действия.

Встроенные команды языков программирования — обычно тоже функции. Просто они изначально заложены в язык. Но программист может написать и свои. Более того: разбивать код по функциям — хорошая практика, потому что это улучшает читаемость и гибкость программы.

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

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

Основных назначений у комментариев два:

  • документировать и объяснять. Например, разработчик может оставить комментарий около сложной функции и пояснить в нем, что она делает;
  • временно скрывать участки кода. К примеру, человек превращает какую-то строку кода в комментарий, чтобы временно исключить ее из выполнения программы.

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

Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Программирование с нуля

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

Использовать будем си-подобный синтаксис, то есть подобный языку си, но не будем вникать в заголовочные файлы, указатели и другие особенности относительно низкоуровневых языков, перейдём на синтаксис более высокоуровневых языков, которые сделают рутинную работу за нас. А конкретно, будем использовать синтаксис языка Java. Добро пожаловать под кат.

Двоичная система счисления

Числа в двоичной системе счисления состоят всего из двух знаков. Нуля и единицы. 00000001 – число один. 00000010 – число два. 00000100 – число 4. Как вы можете заметить, когда единица смещается влево, число увеличивается в два раза. Чтобы получилось число 3, необходимо написать 00000011. Таким образом можно составить все необходимые числа. В данном примере мы использовали двоичное число с восемью знаками, иначе говоря число восьмиразрядное. Чем больше у числа разрядов, тем большее оно может вместить значение. Например, восьмиразрядное число вмещает максимальное значение 255, если считать ноль, тогда 256, а в программировании ноль считается всегда. Если увеличить разряд на один, получится девятиразрядное число и его вместимость увеличится в два раза, то есть станет 512. Но так в программировании никогда не делается и обычно каждая следующая разрядность увеличивается вдвое. Один разряд, потом 2 разряда, потом 4 разряда, потом 8 разрядов, потом 16 разрядов, потом 32 разряда и далее.

Шестнадцатеричная система счисления

Всё аналогично двоичной, только вместо нулей и единиц участвуют цифры от 0 до 15. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, где A – 10, B – 11, C – 12, D – 13, E – 14, F – 15.

Знак минус в программировании

Знак минус в двоичной системе счисления обозначается единицей в самом старшем разряде. Конечно же если число может быть минусовым (да, да, в программировании типы цифр бывают неминусовыми и включающим числа со знаком минус). 10000000 – число -1. Это не число -0, потому что минус нулей не бывает, то есть отрицательные числа смещаются влево на один. А вообще, в разных языках программирования может быть разное представление отрицательных чисел, но вам это знание вряд ли пригодится, поэтому пока что думайте, что всё так, как я объяснил.

Буквы и знаки

Буквы, знаки, смайлики и так далее обозначаются также числами. Буква А может быть числом 00000001 или любым другим, или даже комбинацией чисел в зависимости от кодировки символов. Кодировок много.

Типы данных

В программировании есть типы данных. Числовые, такие как 233, которые разобрали выше. Называются почти везде int, от слова integer. С плавающей запятой, такие как 198,76, называются почти везде float. У букв тип char, у строк тип String. Тип bool имеет два значения – истина (true) и ложь (false). У этого типа реализация в разных языках разная, но самая простая, когда ноль — значит ложь, а любое другое число истину. Нестандартные типы данных, такие как числа с фиксированной запятой, рассматривать не будем.

Применение

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

Это стандартное объявление примитивного типа.

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

Здесь мы присвоили переменной значение. В отличии от математики в программировании = значит взять значение справа и присвоить переменной слева. = — это знак/оператор присвоения.

Можно объединить объявление и присвоение, то есть сразу инициализировать переменную.

Буквы выделяются одинарными кавычками, строки выделяются двойными кавычками. Числа типа int не выделяются.

К числам с плавающей запятой одинарной точности в конце добавляется f.

К числам с плавающей запятой двойной точности ничего не добавляется.

Операторы

С помощью операторов можно складывать, вычитать и делать много других операций с переменными. Операторами являются +, -, *, / и другие. Да даже; является оператором, говорящим, что выражение завершено.

После того как мы записали наше выражение, например сложения,

получается значение. Но так как оно ни одной переменной не присваивается, оно исчезает. Чтобы присвоить значение переменной используется специальный оператор присвоения, который коротко описан выше.
Повторим ещё раз. Он берёт значение со своей правой стороны и присваивает его переменной в левой стороне. Это оператор =, и он не имеет ничего общего со знаком равно из математики.

Также у нас есть логические операторы, такие как < (меньше), > (больше), <= (меньше либо равно), == (равно), && (и), || (или) и другие.

Они сравнивают значения или выражения слева и справа, а после выдают истинность в виде типа bool, то есть true или false, и это значение также можно присвоить.

Оператор && (и) сравнивает два значения типа bool. Если слева true и справа true, тогда этот оператор возвращает значение true. В других случаях false.

Оператор || (или) возвращает истинность, если хоть одно значение истинно (true).

Комментарии

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

Вторая строка уже не комментарий.

Есть также многострочные комментарии и другие, которые я рассматривать не буду.

Операторы ветвления
Оператор ветвления if

Если переменная a меньше 154, то есть выражение истинно, выполняет код в фигурных скобках, потом программа выполняется дальше. Код в фигурных скобках называется блоком кода. Он нужен для того, чтобы сказать программе, что этот код принадлежит оператору и именно его нужно выполнить.

Оператор ветвления if можно расширить.

Если условие оператора истинно, выполняет первый блок кода, а если нет, тогда второй блок кода после else.

Оператор ветвления switch

Этот оператор сравнивает значение в круглых скобках со значениями после case. Если значения совпадают, выполняет выражение или выражения после case, доходит до оператора break, после выходит из цикла и продолжает программу дальше. Если ни одно значение не совпадает, выполняет выражение после default. default можно и не писать.

Циклы
Цикл for

Циклы выполняют блок кода по кругу, пока определённое действие их не остановит.

За круглыми скобками в порядке очереди идут инициализация переменной, которая будет счётчиком, условие, при котором цикл выполняется вновь и вновь при истинности условия, выражение, которое выполняется после того, как выполнится блок кода цикла. То есть этот цикл будет выполняться снова и снова, пока переменная i больше либо равна нулю, и, начиная со второго выполнения цикла, значение переменной i будет уменьшаться на единицу. После того, как условие станет ложным, программа начнёт выполняться дальше.

Цикл while

Цикл while выполняется до тех пор, пока условие в круглых скобках истинно.

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

Область видимости

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

Ключевые слова

В языках программирования есть наборы ключевых слов, в каждом языке свой набор. Этими словами ничего называть нельзя. Ни переменные, ни методы/функции, ничего подобного. Слово while ключевое и другие подобные слова также ключевые.

Массивы

Массивы – это набор значений одного типа. Они удобны, когда нам нужно что-то перечислить.

Так выглядит обычное объявление массива. Сначала указываем нужный тип. Потом ставим квадратные скобки, этим говорим языку программирования, что объявляем массив. Далее вписываем его имя. После знака присвоения вписываем выражение инициализации, то есть создания массива. Там мы видим новый оператор new, который используется при создании массива. Если сказать проще, мы создаём семь переменных типа int и присваиваем их нашему массиву под именем items.

Мы создали массив с семью элементами, но обращаться к первому начинаем с 0. Поэтому последний элемент будет под индексом 6. Не забывайте об этом смещении.

Обращение к элементу массива и присвоение его переменной выглядит так

Вход в программу

Мы рассмотрели все основные моменты, чтобы хоть что-то понимать, поэтому теперь перейдём к написанию простой программы.

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

А это простейший метод, который сейчас разберём. В круглых скобках указываются входные параметры. Можете их представить, как уже объявленные переменные в блоке кода, которым мы можем присвоить значения извне. Внутри фигурных скобок первый оператор, который мы видим, это return. Он берёт значение справа, которое получается из выражения, и передаёт его вовне. Тип передаваемого вовне значения должен быть таким же, как указанный перед именем метода, то есть int.

Так метод вызывается и результат его выполнения передаётся в переменную z.

В этом примере сначала создаётся класс HelloWorld. Пока что думайте, что класс – это файл, в который мы записываем текст программы.

Далее идёт объявление метода main. По словам слева от его имени мы можем понять, что метод публичный (слово public), то есть мы можем вызвать его не только из этого класса, но и извне. По слову static мы можем понять, что метод статичный, то есть можно его вызвать без разных манипуляций, которые мы рассмотрим позже. Слово void говорит, что метод ничего не возвращает. В круглых скобках есть аргумент args[]. Этот аргумент является пустым массивом строк. Можно добавить забитый чем-то массив строк, но нам это не нужно, потому что использовать его мы не будем, а программа запустится и так.

Следующим мы видим вызов метода println, в параметр которого помещена строка Hello World. Перед ним мы видим перечисление через точки System.out. Если кратко, слово System означает, что метод println находится в классе System, а слово out – это выходной поток PrintStream, который нужен, чтобы выдать информацию вовне. В этом примере вовне — это консоль. Выходной поток out мы рассматривать не будем. Разбор потоков может вылиться в отдельную статью. Нам важно только знать, что out (объект класса PrintStream) находится в классе System, а метод println находится в объекте out. Все эти перечисления через точку просто указывают путь языку программированию к методу println, чтобы он знал откуда его вызывать.

Этот метод выводит строку Hello World в консоль и переводит курсор на новую строку. На этом программа заканчивается.

Компиляция и выполнение

Синтаксис простой программы мы рассмотрели, но не запустили её. Этим мы сейчас и займёмся.
Для начала скачайте JDK и установите его. Потом в переменных средах вашей операционной системы пропишите в переменной Path путь к папке bin вашего установленного JDK. Это нужно, чтобы операционная система могла найти из консоли программы JDK для компиляции и запуска. Теперь поместите текст программы в текстовый файл с именем HelloWorld. С именем HelloWorld, потому что имя файла и класса должны совпадать. Сохраните и измените расширение файла на java. Перейдите в консоли в папку с файлом и введите javac HelloWorld.java. Программа скомпилируется и поместится в файл HelloWorld.class. Чтобы запустить её напишите java HelloWorld. В выводе вы увидите Hello World. Что мы и хотели.

Импорт

Чтобы использовать другие классы и методы из стандартной библиотеки используем слово import.

После слова import идёт название пакета java.util. Он назван так из-за назначения и, собственно, из-за папок java и util, в которых находится класс Random. Путь java\util\Random.class
Вместо java.util.Random можно вписать любой необходимый нам класс.

Классы и объекты. Статические и динамические реализации

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

Есть ещё множество способов, чтобы классы могли найти друг друга. Это пакеты, внешние библиотеки, внутрипакетное взаимодействие и другое. Здесь разбирать это не будем. Просто знайте, что есть специальные конструкции и ключевые слова, чтобы использовать эти механизмы.

Разберём их. Начнём с класса AnotherClass. Перед его именем мы видим слово public, которое говорит, что класс публичный и его могут использовать другие классы. В нём мы создаём переменную a со значением 9 и метод addition. Можно сказать, что класс AnotherClass – это новый тип.

В классе MyClass мы создаём объект object0 класса AnotherClass. Это очень похоже на создание обычной переменной и также используется ключевое слово new, как при создании массива. Оператор new говорит языку программирования, что нужно создать копию этого класса в оперативной памяти. Мы можем создать множество копий и забить ими всю память. Далее мы передаём переменную a этого объекта в метод println. Dызываем динамические метод addition в параметре метода println. Метод addition вернёт результат, а метод println выведет его.

Динамический метод отличается от статического тем, что его можно вызвать только из объекта, загруженного в память. То есть для начала нужно создать объект. Статический метод можно вызывать напрямую из класса, то есть просто написав имя класса, поставить точку и через неё вызвать метод. Но у статических методов есть ограничения. Внутри их тела невозможно обращаться к динамическим переменным объекта класса, в котором находятся эти методы. Так как статический метод не загружается в оперативную память, в нём нельзя использовать переменные объекта, загруженные в неё.
Чтобы создать статический метод, перед его именем нужно написать static.

Конструкторы

В этих классах почти всё идентично предыдущим, но создаётся два объекта класса AnotherClass2. object0 и object1. Но создаются они по-разному.

Разберём класс AnotherClass2. В нём появился новый механизм, который называется конструктор. Конструкторов в классе может быть несколько, начинаются они со слова public, а далее идёт имя класса. В круглых скобках перечисляются параметры, а в теле конструктора описывается инициализация объекта класса. Конструкторы схожи с методами.

Перейдём к разбору конструкторов в классе MyClass2. В этом классе при создании объектов класса AnotherClass2 мы можем указать параметры в круглых скобках. Язык программирования выберет подходящий под параметры конструктор и проинициализирует объект подходящим образом. Так при создании объектов мы можем создать его разновидность нужную нам.

Операторы в Java: для чего нужны и какие бывают

Знакомимся с основными инструментами языка и учимся работать с ними на практике.

Иллюстрация: Оля Ежак для Skillbox Media

Лев Сергеев

Все мы со школы знакомы с математическими знаками + (плюс), (минус), = (равно) и так далее. В Java и других языках программирования эти символы называются операторами. Они нужны для того, чтобы сообщить компилятору, какое действие совершать с операндами — числами, строками, объектами и другими значениями по обе стороны оператора.

Например, на картинке выше оператор + говорит компилятору: «Сложи два числа». Но на практике чисел в выражении может быть разное количество — и одно, и два, и три. В этих случаях и операторы будут называться по-разному: унарные — что-то делают с одним операндом, бинарные — с двумя, и тернарные — с тремя.

В этой статье рассмотрим не только эти, но все основные виды операторов в Java:

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

Оператор присваивания в Java

Оператор присваивания в Java — это знак = (равно). Его задача — переложить значение переменной справа в переменную слева:

Вот как это выглядит в коде (в комментариях — разбор синтаксиса):

Что происходит: значение true присваивается переменной b. В свою очередь, значение переменной b присваивается переменной a.

Арифметические операторы в Java

Эти операторы выполняют простые арифметические действия: сложение, вычитание, умножение, деление и деление с остатком. Все арифметические операторы являются бинарными — то есть работают только с двумя значениями.

Плюс: +

Что делает: складывает два операнда.

Ещё этот оператор применяется при соединении двух строк в одну. Например, в Java можно выполнить выражение «Я люблю» + «Москву» и получить «Я люблю Москву». Такая операция в программировании называется конкатенацией.

В Java типы данных char, byte и short при вычислениях неявно приводятся к типу int (целое число), поэтому с ними можно работать как с обычными числами. При этом тип данных char в Java отвечает за символы Unicode — каждый символ обозначает какое-то число. Например, символ a равен числу 97, а b — 98, поэтому в нашем примере и получилось значение 195.

Минус: −

Что делает: вычитает из левого операнда правый.

Умножение: *

Что делает: возвращает произведение операндов.

Деление: /

Что делает: делит левый операнд на правый.

А вот что будет, если попробовать поделить на ноль в Java:

Делить число на ноль нельзя! Программа завершится, выбросив исключение. Но если привести выражение к типу ‘double’ (число с плавающей запятой), то вы получите «бесконечность»:

Деление с остатком (деление по модулю): %

Что делает: возвращает остаток от деления.

Унарные операторы в Java

Эти операторы в Java тоже можно отнести к арифметическим, но есть нюанс — они работают только с одним операндом. Поэтому их и называют унарными.

Унарные плюс и минус: + и −

Что делают: меняют значение числа на положительное или отрицательное.

Инкремент и декремент: ++ и −−

Что делают: инкремент — увеличивает значение переменной на единицу, а декремент — уменьшает.

В свою очередь, у декремента и инкремента есть две формы: префиксная и постфиксная. Звучит сложно, но на деле всё просто:

  • Префиксные операторы (++x) сразу меняют значение переменной и подставляют его в выражение.
  • Постфиксные операторы (x++) делают наоборот — сначала используют старое значение переменной и только потом подставляют новое.

Инкременты и декременты часто используют в циклах в качестве счётчика, когда нужно по очереди вывести все числа в каком-то диапазоне:

Подробнее о декрементах и инкрементах можно почитать в нашей статье — рассказываем, как решать сложные выражения с этими операторами.

В Java есть ещё два унарных оператора: ! — логическое отрицание, и

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

Операторы сравнения в Java

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

  • true (правда);
  • false (ложь).

Всего в Java шесть операторов сравнения:

Оператор Что означает
== Равно
> Больше, чем
< Меньше, чем
>= Больше или равно
<= Меньше или равно
!= Не равно

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

Ещё операторы сравнения часто используют в условных конструкциях. Это когда, в зависимости от условий, выполняется какой-то один блок кода. В этом случае, помимо операторов сравнения, нам понадобятся операторы ветвления: if-else, switch и так далее. Например, здесь мы просим Java напечатать слово true, если 1 не равно 0:

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

Логические операторы в Java: Boolean

Что делают: комбинируют логические значения типа true и false.

В отличие от операторов сравнения, логические операторы работают не с отдельными числами, а с результатами выражений. Их часто используют в условных конструкциях — например, можно поставить рядом два выражения и выполнить какой-то блок кода, если одно из них возвращает true.

Всего в Java шесть логических операторов, но чаще всего используют эти четыре:

Символ Логический оператор Что означает
&& И (AND) Возвращает true, когда оба операнда true.
|| ИЛИ (OR) Возвращает true, когда хотя бы один операнд — true.
^ ИСКЛЮЧАЮЩЕЕ ИЛИ (XOR) Возвращает true, когда один операнд true, а второй — false.
! НЕ (NOT) Инвертирует true в false и наоборот. Это унарный оператор — он работает только с каким-то одним выражением.

В качестве примера сравним несколько выражений:

Как это работает. Допустим, у нас есть конструкция (6 > 5) && (7 > 4). Когда мы начнём её выполнять, компилятор сначала проверит условия первого выражения, затем — второго. При этом оператор && устроен так, что если оба выражения истинны, то он и сам вернёт true. А это как раз наш случай, потому что и 6 больше 5, и 7 больше 4.

Тернарный оператор в Java: можно, только осторожно

Что делает: сокращает условную конструкцию if-else до одной строчки.

Тернарный оператор (от латинского слова ternarius — «тройной») — это языковая конструкция, которая состоит из трёх операндов: логического условия и двух выражений. Если результат логического условия будет true, выполнится первое выражение, если false — второе. Записываются тернарные операторы так:

Фишка в том, что таким образом мы можем записать конструкцию if-else всего одной строчкой. Допустим, нам нужно проверить булеву переменную condition — если она возвращает true, то переменная a = 100, а если false, то a = 200. Посмотрите, как легко это можно сделать с помощью тернарного оператора:

Кажется, что эти if-else теперь вообще больше не нужны. Мол, ставь везде тернарные операторы, и дело с концом. Однако в больших программах со сложной логикой это может повредить читаемости кода. Это в нашем примере выражение простое — а представьте, если в каждое выражение положить ещё по одному оператору. Получится неопрятно. Другому разработчику, который будет читать наш код, разобраться будет сложно.

Поэтому тернарные операторы рекомендуют использовать в тех случаях, когда условие простое и легко проверяется. А во всех остальных случаях прибегать к привычным «ифам» и «элсам».

Подробно о том, как работать с тернарными операторами, мы рассказывали в статье: «Тип Boolean и операторы сравнения в Java».

Оператор instanceof в Java

Что делает: проверяет, принадлежит ли объект к какому-то классу или интерфейсу, и возвращает булево значение — то есть true или false.

Использование instanceof актуально, когда нужно проверить родителя объекта прямо во время выполнения программы. Например, если объекты приходят в ваш код из базы данных или другого потока выполнения и вам нужно убедиться, что к ним можно применять методы какого-то класса. Записывается instanceof так:

Побитовые операторы в Java и смещение битов

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

В Java существует семь побитовых операторов. Четыре из них отвечают за побитовые вычисления. Они похожи на логические операции, только вместо true и false вы имеете дело с нулями и единицами в двоичной системе счисления. Каждый разряд вычисляется поочерёдно — но в отличие от математики, когда складываются две единицы, результат не переносится на старший разряд и ответом будет 1. Это как если бы мы считали столбиком, а всё, что «в уме», — выкидывали.

Побитовые операторы вычисления бывают следующими:

Чтобы посмотреть, как работают побитовые вычисления в Java, переведём несколько десятичных чисел в двоичную систему счисления:

Теперь попробуем выполнить с ними логические операции:

В последнем примере мы видим, что при побитовом отрицании числа 0, почему-то получается -1. Тут есть два нюанса:

  • 0 в нашем примере имеет тип int и занимает в памяти 4 байта — то есть 32 бита.
  • Самый старший бит переменной (первый слева) является знаковым. Если он равен 0, то число будет положительным, а если 1отрицательным.

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

Символ Что означает
<< Сдвиг битов влево
>> Сдвиг битов вправо
>>> Беззнаковый сдвиг битов вправо

Операторы сдвига смещают все биты в левую или правую сторону, но делают это по-разному:

  • >> не трогает старший бит, оставляя число с тем же знаком (отрицательным или положительным). Ячейки отрицательных чисел при >> заполняются единицами.
  • >>> и << — затрагивают все биты. Освободившиеся ячейки справа заполняются нулями. Наполнение ячеек слева зависит от знака и оператора.

Звучит сложно, на деле — тоже сложно. Но попробуем разобраться на примере — разложим какое-то десятичное число на биты и посмотрим, как работает смещение битов.

В Java есть метод toBinaryString(), который показывает, как выглядят десятичные числа в двоичной системе. Но двоичные числа — это ещё не биты. Например, число 2 занимает 32 бита, но если обработать его методом toBinaryString(), на экране появятся только два из них: 1 и 0. Оставшиеся 30 нулей просто «обрезаются». Это происходит по той же причине, по которой мы, например, не пишем десятичное число 9 как 009.

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

Сдвинув биты числа 1 два раза влево, мы получаем 4. А если потом сдвинуть их ещё 29 раз, получится минимальное значение типа int: –2 147 483 648.

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

Как это работает. С помощью операторов >> и >>> мы сдвигаем все биты числа вправо. Но при обычном сдвиге (>>) отрицательное число остаётся отрицательным, потому что мы не трогаем старший бит. При беззнаковом сдвиге (>>>) наоборот — отрицательное станет положительным, потому что мы затронем эту значимую единицу.

Составные операторы присваивания в Java

Зачем нужны: чтобы записывать выражения короче и автоматически приводить операнды к единому типу.

В Java есть сокращённые формы операторов присваивания — составные. Такие операторы выполняют действие между x и y, а получившееся значение помещают в x. Выглядят составные операторы так:

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

Приоритеты операторов Java

У каждого оператора Java есть свой приоритет. Чем он выше, тем раньше оператор выполнится в выражении. Бинарные и тернарный операторы (кроме присваивания) выполняются слева направо, а остальные (унарные и присваивания) — справа налево.

Резюме: что нужно запомнить

Мы рассмотрели все основные операторы в Java и их работу на примерах. Попробуем кратко резюмировать, что нужно вынести из этой статьи:

  • Оператор — это языковая конструкция, которая выполняет действие над операндом.
  • Операнд— это число, переменная, объект и так далее, с которыми оператор совершает какие-то действия (например, арифметическое и логическое).
  • Операторы бывают унарные, бинарные и тернарные — это зависит от того, сколько операндов они обрабатывают.
  • Арифметические операторы нужны для простых математических действий: сложения, вычитания, умножения, деления и деления с остатком.
  • Унарные операторы работают только с одним операндом. Это унарные минус и плюс, инкремент, декремент, логическое и побитовое отрицание.
  • Операторы сравнения сопоставляют значения двух операторов и возвращают ответ — true или false.
  • Логические операторы заточены уже не на числа, а на целые выражения — и на их основе создают сложные условия, например, для работы в циклах.
  • Тернарный оператор умеет работать сразу с тремя операндами: условием и двумя выражениями. То есть им вполне можно заменить ветвления типа if-else.
  • Операторinstanceof определяет принадлежность объекта к классу.
  • Побитовые операторы нужны для проведения операций с битами — если упростить, то с нулями и единицами в двоичной системе счисления.
  • Составные операторы неявно приводят типы данных, если они разные.
  • У каждого оператора есть свой приоритет.

Для более глубокого понимания темы можно почитать другие наши статьи: «Тип Boolean и операторы сравнения в Java» и «Логические операторы в Java». А если хотите совсем хорошо разобраться, почитайте официальную документацию Java — это вообще лучший способ освоить язык со всеми его тонкостями.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *