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

от admin

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

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

Использовать будем си-подобный синтаксис, то есть подобный языку си, но не будем вникать в заголовочные файлы, указатели и другие особенности относительно низкоуровневых языков, перейдём на синтаксис более высокоуровневых языков, которые сделают рутинную работу за нас. А конкретно, будем использовать синтаксис языка 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 выведет его.

Читать:
Guardian project что это

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

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

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

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

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

10 программистских терминов на понятном языке

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

1. Иммутабельность (неизменяемый объект)

Иммутабельность — это то же самое, что и неизменяемый объект. Если состояние является immutable — это означает, что оно не может быть изменено после создания.

В JavaScript, const — это способ частично объявить immutable (неизменяемое) значение. Вы по-прежнему сможете изменить значение const, но для этого потребуется больше усилий, чем для let и var.

2. Класс

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

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

3. Прототип

Он выглядит как класс. Пахнет как класс. Зачастую, люди принимают его за класс. Но это не класс.

Прототипом является сам экземпляр класса, но скопированный (replicated). То есть прототипом текущего объекта называют некий другой объект, из которого текущий объект черпает недостающие методы и свойства.

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

4. Функции первого класса

Функции первого класса рассматриваются как объекты.

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

5. Рекурсия

Рекурсия — это когда алгоритм или функция вызывает сама себя.

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

6. Инкапсуляция

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

Инкапсуляция хранит код и данные внутри так называемого “черного ящика”.

7. Полиморфизм

Полиморфизм — это способность программы идентично использовать объекты с одинаковым интерфейсом без информации о конкретном типе этого объекта.

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

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

8. Наследование

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

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

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

9. Тип данных

JavaScript — это слабо типизированный язык. Это означает, что мы просто создаем переменную, как пустой контейнер, а затем уже помещаем в него значение, которое может быть абсолютно любого типа. Это делается через var, let и const.

Java же, напротив, строго типизированный язык, потому что при создании переменной вы не просто задаете ей имя, а обязательно указываете, какой тип информации вы собираетесь хранить в этой переменной — boolean, char, short, int, long, float, double и т.д.

10. Живучесть (persistence)

Живучесть — это способность объекта сохранять работоспособность в условиях всех видов вредных воздействий.

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

Заключительные слова

Если вы что-то не можете объяснить шестилетнему ребёнку, вы сами этого не понимаете — Альберт Эйнштейн

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

Выражения, операнды и операторы

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

Итак, начнём с выражений.

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

Это выражение, которое записывает в переменную х число 100.

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

Операнд — это значение, переменная или выражение, которое расположено слева или справа от оператора. Например

Здесь 1 и 2 — это операнды, а знак ПЛЮС (+) — это оператор.

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

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

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

Основные виды операторов: арифметические, операторы присваивания, сравнения, логические и поразрядные (побитовые).

Также разделяются операторы по количеству операндов:

  • Унарные: когда с оператором используется только один операнд
  • Бинарные: когда с оператором используется два операнда

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

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

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

Оператор + выполняет операцию сложения
Оператор * выполняет операцию умножения

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

Операторы в C++

В этом руководстве мы узнаем о различных типах операторов в C++ с помощью примеров. В программировании оператор – это символ, который работает со значением или переменной.

Например, + – это оператор, используемый для сложения, а – – оператор, используемый для вычитания.

Операторы в С++ можно разделить на 6 типов:

  1. Арифметические;
  2. Операторы присваивания;
  3. Операторы отношения;
  4. Логические;
  5. Побитовые;
  6. Другие.

1. Арифметические операторы

Арифметические операторы используются для выполнения арифметических операций с переменными и данными. Например:

Здесь оператор + используется для добавления двух переменных a и b . Точно так же в С++ есть и другие арифметические операторы.

Оператор Операция
+ Дополнение
Вычитание
* Умножение
/ Деление
% Операция по модулю (остаток после деления)

Пример 1

Здесь операторы +, – и * вычисляют сложение, вычитание и умножение соответственно, как мы могли ожидать.

Оператор деления /

Обратите внимание на операцию (a / b) в нашей программе. Оператор / является оператором деления.

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

Оператор по модулю %

Оператор по модулю % вычисляет остаток. Когда a = 9 делится на b = 4, остаток равен 1.

Примечание. Оператор % можно использовать только с целыми числами.

Операторы увеличения и уменьшения

C++ также предоставляет операторы увеличения и уменьшения: ++ и – соответственно. ++ увеличивает значение операнда на 1, а – уменьшает его на 1.

Здесь значение num увеличивается до 6 с его начального значения 5.

Пример 2

В приведенной выше программе мы использовали операторы ++ и – в качестве префиксов. Мы также можем использовать эти операторы как постфиксные.

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

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

В C++ операторы присваивания используются для присвоения значений переменным. Например:

Здесь мы присвоили переменной a значение 5.

Оператор пример Эквивалентно
= a = b; a = b;
+ = a += b; a = a + b;
-= a -= b; a = a – b;
*= a *= b; a = a * b;
/= a /= b; a = a / b;
%= a %= b; a = a % b;

Пример

3. Операторы отношения

Оператор отношения используется для проверки связи между двумя операндами. Например:

Здесь > – оператор отношения. Он проверяет, больше ли a чем b или нет.

Если отношение true, оно возвращает 1, тогда как если отношение false, оно возвращает 0.

Оператор Смысл пример
== Равно 3 == 5 дает false
!= Не равно 3! = 5 дает true
> Лучше чем 3> 5 дает false
< Меньше, чем 3 <5 дает true
> = Больше или равно 3> = 5 дает false
<= Меньше или равно 3 <= 5 дает true

Пример

Примечание. Операторы отношения в C++ используются при принятии решений и в циклах.

4. Логические

Логические операторы используются для проверки того, является ли выражение true или false. Если выражение true, оно возвращает 1, тогда как если выражение false, оно возвращает 0.

Оператор пример Смысл
&& выражение 1 && выражение 2 Логическое AND. True, только если все операнды верны.
|| выражение1 || выражение2 Логическое OR. True, если хотя бы один из операндов True.
! ! выражение Логическое NOT. True, только если операнд false.

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

Пример

Пояснение к программе логического оператора:

  • (3! = 5) (3 <5) оценивается как 1, потому что оба операнда (3! = 5) и (3 <5) равны 1 (true).
  • (3 == 5) (3 <5) оценивается как 0, потому что операнд (3 == 5) равен 0 (false).
  • (3 == 5) (3> 5) оценивается как 0, потому что оба операнда (3 == 5) и (3> 5) равны 0 (false).
  • (3! = 5) || (3 <5) оценивается как 1, потому что оба операнда (3! = 5) и (3 <5) равны 1 (true).
  • (3! = 5) || (3> 5) оценивается как 1, потому что операнд (3! = 5) равен 1 (true).
  • (3 == 5) || (3> 5) оценивается как 0, потому что оба операнда (3 == 5) и (3> 5) равны 0 (false).
  • ! (5 == 2) оценивается как 1, потому что операнд (5 == 2) равен 0 (false).
  • ! (5 == 5) оценивается как 0, потому что операнд (5 == 5) равен 1 (true).

5. Побитовые

В C++ побитовые операторы используются для выполнения операций с отдельными битами. Их можно использовать только вместе с типами данных char и int.

Помимо описанных выше операторов, есть несколько других операторов, таких как sizeof. и т.д., которые нельзя аккуратно отнести к тому или иному типу.

Похожие статьи