Изучение второго языка программирования всегда даётся легче, потому что нам уже известны основы, относящиеся к любому из них. В этой статье я постараюсь собрать те базовые понятия, знание которых позволит вам максимально быстро перейти от теории к практике.
Используйте этот текст, как универсальный план своего обучения или для приобретения общих знаний о том, из чего состоят сценарные языки программирования.
Вывод значений
Практически любой учебник по программированию начинается с написания программы, результатом работы которой будет вывод надписи Hello, World!
на экран консоли или иное устройство. Синтаксис конечно будет отличатся, ниже я привёл несколько вариантов:
JavaScript -
console.log("Hello, World!")
Visual Basic for Applications -
MsgBox("Hello, World!")
Python -
print("Hello, World!")
Но вот результат этих программ будет одним, после работы программы в консоли появится надпись Hello, World!
. В каждом из перечисленных примеров заветная надпись заключена в двойные кавычки - так в этих языках обозначаются строчные выражения, об этом и других типах данных речь пойдёт в следующем разделе статьи.
Функция вывода используется для отображения результата работы программы, будь то итог математических вычислений в калькуляторе или составленный график работы сотрудников на текущий месяц. На этапе отладки программы мы также можем использовать данную функцию для отражения промежуточных значений, так будет легче отследить на каком этапе работы программы что-то пошло не так.
Типы данных
Тип данных определяет их размер, в каком формате они могут быть предоставлены, что могут содержать и какие операции при работе с ними доступны. Давайте разберём основные типы и особенности с которыми мы можем встретится:
Строки
Строки или тип данных string используется для работы с текстом. Данные этого типа обычно необходимо обозначить двумя кавычками с обеих из сторон, например уже известная нам надпись "Hello, World!"
может фигурировать в коде, написанном на VBA, Python или JS, но если мы напишем её без кавычек - это приведёт к ошибке выполнения программы. Для обозначения строк не всегда используются двойные кавычки, например на Python допустимо использование одинарных кавычек и 'Hello, World!'
также не приведёт к ошибке.
Строки могут содержать не только буквы и символы, но и числа, более того - строка может состоять только из чисел, например "123"
. Разница между числом и строкой состоит в операциях, которые можно совершать над тем или иным типом данных и какой результат мы получим в итоге. Например на Python для нас доступно сложение двух текстовых выражений и даже умножение текста на число, которые будут отличатся с результатом тех же операций с числами:
"123"+"123"
- результатом такого выражения будет"123123".
"123"*3
- результатом такого выражения будет"123123123".
Также вы всегда сможете найти по мере необходимости следующие функции работы с текстом:
Обращение к определённому символу по его номеру или части строки по её индексу.
Поиск или замена в тексте определённых символов, слов, или куска другого текста.
Приведение текста к определёному формату - сделать все буквы маленькими или большими, удалить лишние пробелы и т.д.
Числа
С числами всё несколько сложнее, чем со строками. В большинстве языков программирования вы найдёте несколько типов данных для работы с числами, каждый из которых может иметь свои ограничения и точность. В отличии от строк, числа нет необходимости обозначать как то дополнительно, по аналогии с двойными кавычками, разве что в некоторых языках может встречаться запятая вместо плавающей точки. Так например полторы единицы на VBA необходимо обозначать как 1,5
, в то время как на Python и большинстве других языков это будет 1.5
.
Типы данных могут быть например отдельно определены для целых и дробных чисел, а также для чисел с плавающей точкой, с разным количеством знаков после "запятой".
По сути при выборе числового типа данных для своей программы, вы должны определить какая точность вычислений вам необходима на выходе. Например в VBA есть тип данных Currency с точностью до 4-го знака после запятой и если результатом выполнения вашей программы, является определение стоимости товара в рублях, то вам будет этого более чем достаточно, а программа не будет тратить ресурсы на более точный подсчёт и сработает быстрее. Этот пример оправдан из-за того, что самая мелкая единица для расчёта у нас в итоге будет 1 копейка(0,01
), а значит мы будем использовать итоговое значение только до 2-го знака после запятой.
Но что будет если мы будем использовать упомянутый ранее тип данных Currency на VBA для расчёта цены в Биткоинах? При операциях с биткоином минимальная единица расчёта это 1 сатоши, равный 0,00000001
от биткоина, а следовательно и точность значений нам понадобится минимум до 8-го знака после запятой. Хотя конечно мы можем и не менять тип данных, а изначально вводить в программу все значения в сатошах и максимально повысить этим точность расчёта.
С числовыми форматами вы можете проводить такие операции как сложение, вычитание, умножение, деление, возведение в степень, определение корня, определение остатка при делении и прочее. Синтаксис на первые 4 математические функции нам всем знаком со школы и заключается в знаках +-*/
, в остальном варьируется от языка к языку.
Булевы
Булевы или boolean могут содержать всего два значения - true
или false
без кавычек, а также могут быть допустимы значения 1
или 0
. Данный тип данных назван в честь математика, по имени Джон Буль, который изобрёл способ записи логических выражений, с помощью математических знаков. Именно результатом логических выражений и может служить булево, но к этому мы вернёмся на этапе разбора понятия "Условие", встречающегося в программировании.
К данному типу данных применимы операторы or
, and
и not
, но о них также сложно говорить в отрыве от "Условий", которые мы разберём позже. Полезно знать, что в некоторых случаях мы можем складывать и вычитать булевы друг из друга, например:
true + true = 2
true - true = 0
Пустота
Пустота или null выделяют в отдельный тип данных, хотя по сути это именно отсутствие данных. Стоит заметить что пустую строку ""
, то есть строку без значения внутри кавычек, нельзя приравнять к null
Упорядоченные списки
Массивы, списки, кортежи и все остальные данные, к определённой ячейки которых можно обратится по их индексу. Обычно они могут содержать в себе как строки, числа, булевы и пустоту так и другие упорядоченные и неупорядоченные списки.
На Python можно создавать списки, содержимое которых перечисляется через запятую. Например список из чисел от 1 до 6 будет выглядеть так: [1, 2, 3, 4, 5, 6]
. Каждому элементу списка при этом присуждается номер, обычно начиная с 0, например индекс числа 4 в заданном списке будет обозначен как [3]
, а у числа 1 индекс будет [0]
.
На VBA есть двумерный формат в виде массивов, которые представляют собой таблицу, например:
1 |
3 |
5 |
2 |
4 |
6 |
Выше представлен массив, размером (1, 2)
или состоящий из двух строк и трёх столбцов. Здесь индекс числа 4 будет (1, 1)
, а у числа 6 - (1, 2)
. Не во всех языках, при наличии массивов, номер строки будет первым и даже более того, это лишь один из вариантов представления данного массива и ничего не мешает визуализировать его, как:
1 |
2 |
3 |
4 |
5 |
6 |
Содержимое массива у нас осталось прежним, просто мы приняли за основу, что индекс у нас написан по следующей логике (столбец, строка)
. Многие языки, например как Python, не поддерживают двумерные массивы и в этом случае для записи данных из таблицы мы можем вложить в список другие списки с перечислением значений в строках каждого столбца:
[[1, 3, 5], [2, 4, 6]]
Данный пример включает в себя данные из второго варианта таблицы и на Python к числу 4 мы можем обратится через индекс [1][1]
, то есть 2 элемент второго списка.
Ближайшая редактура
Данная статья требует огромных трудов и затрат времени, поэтому она будет постепенно редактироваться и дополнятся.
В ближайший раз, когда у меня найдётся время, я закончу раздел Типов данных, описанием Неупорядоченных списков. Также я планирую в будущем добавить общую информацию по Вводу данных, Переменным, Условиям, Циклам и Функциям. На мой взгляд - этой информации вполне достаточно для того что бы приступить к программированию на любом сценарном языке.
Я не программист и все мои знания в данной статье, основываются лишь на знании VBA и Python, поэтому буду рад любым комментариям и замечаниям по выбранной мной теме статьи.
Комментарии (6)
dprotopopov
09.11.2023 13:10+1ну тогда ещё обобщите туда программирование под ленточные машины тьюринга, программирование под машины маркова ... вы точно уверены что там есть понятие "тип данных" - это лишь абстракция для упрощения модели?
и есть ещё программирование под плисы и прочее железо ...
Akina
09.11.2023 13:10Visual Basic for Applications -
MsgBox("Hello, World!")
Но вот результат этих программ будет одним, после работы программы в консоли появится надпись
Hello, World!
.Мессаджбокс ну вот никак нельзя назвать консолью.
Давайте разберём основные типы и особенности с которыми мы можем встретится
Гм... а дату-время за что на задворки? JSON, XML и прочие аналогичные форматы?
Стоит заметить что пустую строку
""
, то есть строку без значения внутри кавычек, нельзя приравнять к nullОй, да ладно! вон OracleDB делает это легко и непринуждённо (за что его всегда полощут, и, надо сказать, по делу)... А ещё кое-где NULL имеет вполне определённый тип данных, и даже порой приводит к ошибке несоответствия типов.
Данная статья требует огромных трудов и затрат времени, поэтому она будет постепенно редактироваться и дополнятся.
И начните, пожалуйста, с (изучения и) внесения исправлений на предмет правильного применения окончаний "тся/ться"...
bungu
09.11.2023 13:10Я не программист
Позвольте, а с чего вы статью то вообще решили написать?
Akina
09.11.2023 13:10+1А как в анекдоте:
Вы умеете играть на скрипке? Не знаю, не пробовал, наверное, умею..
Fhann
09.11.2023 13:10Хах,вспоминается случай, когда мне нужно было делать прогу на питоне за световой день, и я не знал данный язык. Ну хоть знал немного c++, раст и шарп. Это был ещё тот анегдот, ещё зная, что я за 7 лет школы так и не выучил английский.
vabka
Тогда почему она опубликована, а не лежит в черновике?
Многие вещи в статье просто нельзя считать универсальными, в частности, умножение строк и складывание/вычитание булевых.
Вместо попытки написания "универсального" руководства (которое по сути является своеобразной "аппликацией" из вырезок к специализированным руководствам), лучше написать три специализированных.
Раз уж хорошо знаешь только Python и VBA, то лучше сконцентрироваться именно на них и не лезть в JS, который очень сильно отличается от того же Python.