Табуляция что это в программировании
Перейти к содержимому

Табуляция что это в программировании

  • автор:

Табуляция

Горизонтальная табуляция (HT, TAB) — управляющий символ таблицы ASCII с кодом 0916, используется для выравнивания текста по горизонтали. Встретив этот символ, терминал перемещает каретку (или курсор) вправо на ближайшую позицию табуляции. Традиционно эти позиции располагаются каждые 8 знакомест, в колонках 1, 9, 17, 25… Вводится при помощи клавиши Tab ⇆ , во многих языках программирования обозначается как \t.

Если отправить на печать текст (символ табуляции обозначен стрелкой)

один→два→три→четыре 1→2→3→4 5→6→7→8 9→10→11→12

получим такую распечатку:

один два три четыре 1 2 3 4 5 6 7 8 9 10 11 12

Также существует вертикальная табуляция VT с кодом 0B16, в настоящее время используемая крайне редко.

В текстовых редакторах

В текстовых редакторах позиции табуляции могут идти каждые 2 или 4 знакоместа: это удобно для работы с языками программирования. По желанию пользователя клавиша Tab ⇆ может не вставлять символ-табулятор, а имитировать его, вставляя нужное количество пробелов.

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

В текстовых процессорах

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

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

Табуляция в (X)HTML

В (X)HTML горизонтальная табуляция обозначается как , однако она отобразится браузером только будучи использованной внутри тегов и :

Пример HTML-кода с использованием внутри тега

 
Две строчки с табуляцией: 2007	Табуляция внутри строки. 	Табуляция в начале строки. Строка без табуляции.

Браузер отобразит этот код так:

Две строчки с табуляцией: 2007 Табуляция внутри строки. Табуляция в начале строки. Строка без табуляции.

Вертикальная табуляция обозначается как , однако она не используется в SGML (включая HTML) или XML 1.0.

Клавиша Tab ⇆ в прикладном ПО

За клавишей Tab ⇆ закрепились такие функции:

  • В текстовых редакторах, текстовых процессорах — ввод символа табуляции, работа с отступами.
  • В графических интерфейсах — прыжок. В частности, в WindowsTab ⇆ — переключение между элементами текущего окна, Alt + Tab ⇆ — переключение между программами. Прыжок в обратную сторону — ⇧ Shift + Tab ⇆ .
  • В консольных интерфейсах (например IOS, bash, Zsh), в том числе в консолях компьютерных игр (например, Quake 3, Doom 3, Unreal Tournament) — автодополнение команды.

См. также

  • TSV — формат представления табличных данных, использующий табуляцию как разделитель

Информация должна быть проверяема, иначе она может быть поставлена под сомнение и удалена.
Вы можете отредактировать эту статью, добавив ссылки на авторитетные источники.
Эта отметка установлена 15 мая 2011.

Это заготовка статьи о компьютерах. Вы можете помочь проекту, исправив и дополнив её.
Это примечание по возможности следует заменить более точным.
  • Клавиатура
  • Управляющие символы
  • Непечатаемые знаки
  • Пробельные символы
  • Стандарт оформления кода

Wikimedia Foundation . 2010 .

Синонимы:

  • Обслуживание
  • Неволин, Константин Алексеевич

Полезное

Смотреть что такое «Табуляция» в других словарях:

  • табуляция — сущ., кол во синонимов: 1 • табулирование (1) Словарь синонимов ASIS. В.Н. Тришин. 2013 … Словарь синонимов
  • табуляция — Перемещение курсора к следующей позиции. [http://www.morepc.ru/dict/] Тематики информационные технологии в целом EN tabulation … Справочник технического переводчика
  • табуляция — табул яция, и … Русский орфографический словарь
  • Горизонтальная табуляция — Источник: ГОСТ 22562 77: Аппараты телеграфные буквопечатающие. Термины и определения оригинал документа Смотри также родственные термины … Словарь-справочник терминов нормативно-технической документации
  • вертикальная табуляция — вертикальное форматирование Возможность текстового редактора размещать текст вертикально внутри границ, установленных пользователем. [ГОСТ Р ИСО/МЭК 2382 23 2004] вертикальная табуляция Число строк, которые должны быть пропущены на странице перед … Справочник технического переводчика
  • горизонтальная табуляция — горизонтальное форматирование Возможность текстового редактора размещать текст горизонтально внутри границ, установленных пользователем. [ГОСТ Р ИСО/МЭК 2382 23 2004] горизонтальная табуляция Горизонтальное перемещение положения курсора к… … Справочник технического переводчика
  • КРОСС-ТАБУЛЯЦИЯ — (CROSS TABULATION) Распространенным способом представления данных являются двумерные таблицы, в которых значения одной переменной соотносятся со значениями другой. Примером может служить кросс табуляция электоральных намерений и социального… … Социологический словарь
  • вертикальная табуляция — stačiasis tabuliavimas statusas T sritis radioelektronika atitikmenys: angl. vertical tabulation vok. Vertikaltabulation, f rus. вертикальная табуляция, f pranc. tabulation verticale, f … Radioelektronikos terminų žodynas
  • комбинированная табуляция (данных) — — [А.С.Гольдберг. Англо русский энергетический словарь. 2006 г.] Тематики энергетика в целом EN cross tabulation … Справочник технического переводчика
  • обратная табуляция — Возврат курсора к предшествующему символу или полю. [http://www.morepc.ru/dict/] Тематики информационные технологии в целом EN backtab … Справочник технического переводчика
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

Чем правильно ставить отступы — табами или пробелами?

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

Зачем нужны отступы

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

Чем правильно ставить отступы — табами или пробелами?

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

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

Чем правильно ставить отступы — табами или пробелами?

Ещё есть языки программирования, в которых отступы обязательны — сейчас это Python, а ещё были Fortran и COBOL. Например, эти два фрагмента кода на Python приведут к разным результатам, хотя отличаются только отступами:

# с отступами for i in range(10): i = i+1 print(i) k = i*2 print(k) # без отступов for i in range(10): i = i+1 print(i) k = i*2 print(k)

Что такое табы

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

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

Чем правильно ставить отступы — табами или пробелами?

На сколько именно позиций сдвигается курсор — зависит от настроек редактора. Чаще всего используются числа, кратные двум: 2, 4 или 8 позиций. Одна позиция равна одному пробелу, поэтому говорят, например, что в табе 8 пробелов.

Почему лучше табы

С табами всё просто: один таб — один отступ, первый уровень вложенности. Два таба — два отступа, второй уровень вложенности и так далее. Не нужно много раз нажимать на пробел, считать в уме, сколько раз ты уже нажал и сколько осталось.

А ещё всегда можно настроить размер табуляции — сколько пробелов будет занимать один таб. В редакторе кода VS Code это можно настроить внизу, на информационной панели:

Чем правильно ставить отступы — табами или пробелами?

Почему лучше пробелы

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

Какие бывают стили отступов

У разных программистов есть свои традиции отступов и форматирования кода. Вот самые известные из них.

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

Стиль GNU. В большинстве проектов Linux и открытого ПО придерживаются отступов в 2 символа, причём скобки тоже отступаются:

Стиль Олмана, или стиль BSD. У этого подхода открывающая скобка находится на том же уровне, что и команда, к которой она относится, а операторы сдвинуты на определённое количество символов (2, 4 или 8). Отступ может быть любым, главное, чтобы он соблюдался во всей программе:

Так что правильно ставить — табы или пробелы?

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

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

Хотите больше? Скачивайте наш гид

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

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

Хотите больше? Скачивайте наш гид Хотите больше? Скачивайте наш гид

Получите ИТ-профессию

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

Табуляция

Горизонтальная табуляция (HT, TAB) — управляющий символ таблицы ASCII с кодом 0916, используется для выравнивания текста в строках. Встретив этот символ, терминал перемещает каретку (или курсор) вправо на ближайшую позицию табуляции. Традиционно эти позиции располагаются каждые 8 знакомест, в колонках 1, 9, 17, 25… Вводится при помощи клавиши Tab ↹, во многих языках программирования обозначается как \t.

Если отправить на печать текст (символ табуляции обозначен стрелкой)

получим такую распечатку:

один два три четыре

Команда «табуляция» восходит к одноимённой клавише в пишущей машинке, упрощавшей набор таблиц.

Также существует вертикальная табуляция VT с кодом 0B16, перемещающая позицию печати к следующей позиции вертикальной табуляции, в настоящее время используемая крайне редко. Часто символ вертикальной табуляции в языках программирования обозначается как \v.

Связанные понятия

Тег, те́ги (иногда тэг, англ. tag — именованная метка, читается /tæg/; более правильное название — дескриптор). В SGML (HTML, WML, AmigaGuide, языках семейства XML) — элемент языка разметки гипертекста. Текст, содержащийся между начальным и конечным тегом, отображается и размещается в соответствии со свойствами, указанными в начальном теге.

Обра́тная коса́я черта́, или обратная косая (на компьютерном жаргоне — обратный слеш или бекслеш от англ. backslash), — специальный символ (\), с написанием, обратным по отношению к обычному символу косой черты (/) (иногда, также, называемого «прямой косой»).

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

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

Те́кстовые да́нные (также те́кстовый форма́т) — представление информации строкового типа (то есть, последовательности печатных символов) в вычислительной системе. В MIME закодированным таким образом данным соответствует тип text/plain.

Упоминания в литературе

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

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

Связанные понятия (продолжение)

Шебанг (англ. shebang, sha-bang, hashbang, pound-bang, or hash-pling) — в программировании последовательность из двух символов: решётки и восклицательного знака («#!») в начале файла скрипта.

И́мя фа́йла — строка символов, однозначно определяющая файл в некотором пространстве имён файловой системы (ФС), обычно называемом каталогом, директорией или папкой. Имена файлов строятся по правилам, принятым в той или иной файловой и операционной системах (ОС). Многие системы позволяют назначать имена как обычным файлам, так и каталогам и специальным объектам (символическим ссылкам, блочным устройствам и т. п.).

Нуль-терминированная строка или C-строка (от названия языка Си) или ASCIIZ-строка — способ представления строк в языках программирования, при котором вместо введения специального строкового типа используется массив символов, а концом строки считается первый встретившийся специальный нуль-символ (NUL из кода ASCII, со значением 0).

Станда́рт оформле́ния ко́да (станда́рт коди́рования, стиль программи́рования) (англ. coding standards, coding convention или programming style) — набор правил и соглашений, используемых при написании исходного кода на некотором языке программирования. Наличие общего стиля программирования облегчает понимание и поддержание исходного кода, написанного более чем одним программистом, а также упрощает взаимодействие нескольких человек при разработке программного обеспечения.

Вертика́льная черта́ — символ ASCII, имеющий код 0x7C (hex), 124 (dec). Этот символ пользователи UNIX называют «пайп», от англ. pipeline — конвейер. В первых, ещё советских, изданиях книг В. Э. Фигурнова название «pipe» было переведено как «символ трубопровода».

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

Путь (англ. path) — набор символов, показывающий расположение файла или каталога в файловой системе.

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

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

Символьный тип (Сhar) — тип данных, предназначенный для хранения одного символа (управляющего или печатного) в определённой кодировке. Может являться как однобайтовым (для стандартной таблицы символов), так и многобайтовым (к примеру, для Юникода). Основным применением является обращение к отдельным знакам строки.

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

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

Переменная среды́ (англ. environment variable) — текстовая переменная операционной системы, хранящая какую-либо информацию — например, данные о настройках системы.

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

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

Псевдогра́фика, псевдографические символы — совокупность символов, включённых в набор символов компьютерного шрифта, отображающих графические примитивы (линии, прямоугольники, треугольники, кресты, различная заливка и тому подобное). Псевдографические символы реализуются в рамках формата шрифта (к примеру, матрица 8×12 точек) и дополняют в таком наборе цифро-буквенные и служебные символы.

Цифрова́я клавиату́ра, цифрово́й блок (англ. Numeric keypad, Keypad, Numpad) — небольшая секция компьютерной клавиатуры, обычно находится с правого края. На цифровой клавиатуре имеются клавиши с цифрами от 0 до 9, символ десятичного разделителя (.), символы сложения (+), вычитания (−), умножения (*) и деления (/).

В языках программирования объявле́ние (англ. declaration) включает в себя указание идентификатора, типа, а также других аспектов элементов языка, например, переменных и функций. Объявление используется, чтобы уведомить компилятор о существовании элемента; это весьма важно для многих языков (например, таких как Си), требующих объявления переменных перед их использованием.

Точка монтирования (англ. mount point) — это каталог или файл, с помощью которого обеспечивается доступ к новой файловой системе, каталогу или файлу.

Конста́нта в программировании — способ адресации данных, изменение которых рассматриваемой программой не предполагается или запрещается.

Кодовая страница (англ. code page) — таблица, сопоставляющая каждому значению байта некоторый символ (или его отсутствие). Обычно код символа имеет размер 8 бит, так что кодовая страница может содержать максимум 256 символов, из чего вытекает резкая недостаточность всякой 8-битной кодовой страницы для представления многоязычных текстов. К тому же часть символов используется как управляющие, из-за чего число печатных символов редко превышает 223.

Немые клавиши, «Мёртвые клавиши» (англ. dead keys) — клавиши на компьютерных клавиатурах или пишущих машинках, позволяющие изменить вид следующего вводимого символа. На печатных машинках нажатие на немую клавишу ставит надстрочный символ, но не сдвигает каретку на следующий символ. На компьютерах нажатие немой клавиши изменяет код следующего вводимого символа. К примеру, последовательность ⌥ Option+`, e на Macintosh создаёт символ «è».

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

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

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

Блок (также говорят блок кода, блок команд, блок инструкций) в программировании — это логически сгруппированный набор идущих подряд инструкций в исходном коде программы, является основой парадигмы структурного программирования.

Объе́ктный мо́дуль (также — объектный файл, англ. object file) — файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный код (часто называемый двоичным или бинарным), который может быть объединён с другими объектными файлами при помощи редактора связей (компоновщика) для получения готового исполнимого модуля либо библиотеки.

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

Соглашение о вызове (англ. calling convention) — описание технических особенностей вызова подпрограмм, определяющее.

Символическая («мягкая») ссылка (также «симлинк», от англ. Symbolic link) — специальный файл в файловой системе, в котором вместо пользовательских данных содержится путь к файлу, открываемому при обращении к данной ссылке (файлу).

Возвра́т каре́тки — управляющий символ или механизм, используемый для возвращения позиции устройства к началу строки. Часто обозначается как CR (от англ. carriage return).

Абстрактное синтаксическое дерево (АСД) — в информатике конечное помеченное ориентированное дерево, в котором внутренние вершины сопоставлены (помечены) с операторами языка программирования, а листья — с соответствующими операндами. Таким образом, листья являются пустыми операторами и представляют только переменные и константы.

Дамп памяти (англ. memory dump; в Unix — core dump) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически, когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации.

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

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

Подсве́тка си́нтаксиса — выделение синтаксических конструкций текста с использованием различных цветов, шрифтов и начертаний.

Шестнадцатеричная система счисления — позиционная система счисления по целочисленному основанию 16.

Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр.

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

Ошибка сегментации (англ. Segmentation fault, сокр. segfault, жарг. сегфолт) — ошибка программного обеспечения, возникающая при попытке обращения к недоступным для записи участкам памяти либо при попытке изменить память запрещённым способом. В системах на основе процессоров Motorola 68000 эти ошибки, как правило, известны как ошибки адреса или шины.

Исполняемый файл (англ. executable file, также выполняемый, реже исполнимый, выполнимый) — файл, содержащий программу в виде, в котором она может быть исполнена компьютером. Перед исполнением программа загружается в память, и выполняются некоторые подготовительные операции (настройка окружения, загрузка библиотек).

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

Регуля́рные выраже́ния (англ. regular expressions) — формальный язык поиска и осуществления манипуляций с подстроками в тексте, основанный на использовании метасимволов (символов-джокеров, англ. wildcard characters). Для поиска используется строка-образец (англ. pattern, по-русски её часто называют «шаблоном», «маской»), состоящая из символов и метасимволов и задающая правило поиска. Для манипуляций с текстом дополнительно задаётся строка замены, которая также может содержать в себе специальные символы.

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

Макрокоманда, макроопределение или мáкрос — программный алгоритм действий, записанный пользователем. Часто макросы применяют для выполнения рутинных действий. А также макрос — это символьное имя в шаблонах, заменяемое при обработке препроцессором на последовательность символов, например: фрагмент html-страницы в веб-шаблонах, или одно слово из словаря синонимов в синонимизаторах.

Основы программирования на языке Python. Часть 2

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

Условная конструкция. Табуляция

В этой статье мы будем переводить с алгоритмического языка на язык Python то, что выучили в одной из предыдущих статей — «Основы алгоритмов». Также мы успели изучить создание и применение переменных в Python, и то, какие типы данных могут быть им присвоены, в статье «Основы программирования на языке Python. Часть 1». Но далеко на этом не уедешь — нет никакой гибкости, никаких дополнительных возможностей, ничего интересного.

Условная конструкция if-elif-else — первый шаг на пути к разнообразию. Ее цель — совершать конкретные действия при конкретных обстоятельствах.

Эта логическая конструкция расшифровывается так — «если-иначе». Даже без нашего четкого осознания она появляется в повседневной жизни везде. Самая простая идея алгоритма с ветвлением (с условием): «Если в холодильнике нет продуктов, их надо купить, прежде чем начать готовить ужин, иначе можно сразу начинать готовку».

Как в программе Python выглядят ветвления?
Подробно разберем строение этой конструкции:

  • if — главная команда создания условия, ее одной уже достаточно. С ней конструкция будет выглядеть так:

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

x = 25
if x > 0:
print(“x больше 0”)
Вывод программы:
х больше 0
x = -6
if x > 0:
print(“x больше 0”)
Вывод программы:
ничего не будет выведено
  • else — команда, задающая альтернативу.

if :

else:

Если выполнится, то будет запущен блок , а если оно не выполнится — запустится .

  • elif — команда для создания сложного условия, когда у нас есть не два исхода, а больше.

if :

elif :

elif :


else:

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

Табуляцию можно проставить либо нажатием клавиши Tab, либо используя несколько идущих подряд пробелов. Традиционно табуляции соответствует 4 пробела. Но нельзя одновременно использовать и пробелы, и Tab — в одном блоке должно быть только что-то одно.

Про табуляцию вообще нельзя забывать и нужно быть с ней аккуратнее:

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

А чем вообще может быть условие команды?
Это должна быть такая конструкция, про которую определенно можно сказать, истинна она или ложна. Например, 5 > 1 — истина (True), а 5 > 10 — ложь (False).

Для записи условий в Python предусмотрены как математические операторы сравнения, так и логические операторы:

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

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

  • либо значение True, которое соответствует выполнению записанного условия;
  • либо False, соответствующее невыполнению условия.

x = 15
y = 16
print(x == y)
print((y > x) and (x > 5))

Это как раз и есть тот самый тип данных bool из предыдущей части статьи.

А ниже приведен пример кода, в котором разная расстановка отступов дает нам совершенно разное поведение программ.

Циклы. Тип range

Как в программе Python выглядят циклы?

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

В Python есть два цикла — while и for.

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

Структура записи этого цикла:

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

a = 1000000
b = 16
while a > b:
a //= 2
print(a)

После первой итерации (запуска содержимого цикла) переменная а будет равна 500 000, после второй — 250 000 и т.п. Итерации будут повторяться, пока будет продолжать быть истинным выражение a > b. Когда итерации цикла завершаются, мы видим итоговое значение переменной а после всех делений — 15.

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

Но как вообще можно в него попасть?

  1. Случайно, когда в записи условия работы цикла была допущена ошибка.

В приведенном примере цикл будет работать до тех пор, пока значение переменной b больше 0. Но никакого изменения этой переменной не происходит, она не меняет своего значения, и, соответственно, никогда не станет меньше или равной 0. А значит, цикл никогда не завершит свою работу.

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

Для создания бесконечного цикла в условии работы нужно прописать выражение, результат которого всегда будет равен True. Например, это может быть само значение True или условие сравнения 0 == 0, также возвращающее всегда True (0 действительно всегда равен 0).

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

В примере мы создали бесконечный цикл, но, как только значение a станет меньше или равным b, выполнится условие if и сработает команда break, которая завершит цикл.

Цикл for необходим для выполнения команды или набора команд определенное количество раз или перебора набора данных.

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

Структура записи цикла for:

Здесь мы сталкиваемся с понятием коллекции — той самой нашей «корзины с покупками», то есть какой-то структуры данных, содержащей много различных значений в себе. Пока что мы из таких типов структур данных знакомы со строками и списками из первой части статьи, а ниже в этой статье разберем еще одну — range.

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

По традиции, если перебираемая переменная не несет в себе особой смысловой нагрузки, ее называют i, j или k.

может принимать любое значение, которое можно перебрать.

a = «abcd»
for i in a:
print(i)
Вывод:
a
b
c
d
  • перебор списка:
a = [12, 34, 567, 8910]
for i in a:
print(i)
Вывод:
12
34
567
8910
  • перебор диапазона range, который создает набор целых чисел.

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

Есть несколько способов создания диапазона:

  • range(a) — диапазон целых чисел от 0 до (a — 1) с шагом 1.
    Например: range(5) — 0, 1, 2, 3, 4.
  • range(a, b) — диапазон чисел от a до (b — 1) с шагом 1.
    Например: range(2, 7) — 2, 3, 4, 5, 6.
  • range(a, b, step) — диапазон чисел от a до (b — 1) с разницей между соседними числами, равной step.
    Например: range(1, 17, 3) — 1, 4, 7, 10, 13, 16.
for i in range(2, 6):
print(i)
Вывод:
2
3
4
5

Взаимозаменяемость циклов

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

Задача.
У нас есть список чисел a. Нужно вывести на экран его содержимое, по одному числу в строке.

Решение №1.

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

for i in a:
print(i)

Мы берем каждый элемент списка и выводим его, все просто. Но это не единственный способ.

Решение №2.

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

for i in range(len(a)):
print(a[i])

Здесь len(a) — это длина списка а. Мы используем ее, чтобы понять, до какого числа надо перебирать i, чтобы на i-тых позициях списка все еще были элементы. Это же можно тоже записать другим способом:

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

Вложенные структуры

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

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

Такой пример уже мелькнул — когда мы говорили о бесконечном цикле и команде break. Мы сделали так, что внутри цикла команда break выполнится только при истинности условия, для чего прямо внутри цикла while мы использовали условную конструкцию if.

Чтобы программа «не сошла с ума», пытаясь понять, где тело цикла, а где тело условия, мы продолжили использовать табуляцию.

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

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

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

Разберем в качестве примера следующий код:

n = 1
for i in range(3):
for j in range(2):
n += 2
n *= 3
print(n)

Какое число на экране будет в результате этой программы?

У нас есть внутренний цикл и внешний. Тело внутреннего цикла запускается дважды: при j = 0 и j =1. Каждый раз значение n увеличивается на 2. Значит, в процессе работы внутреннего цикла значение n увеличивается на 2 * 2 = 4.

Тогда тело внешнего цикла — прибавление к n 4 и умножение на 3. Цикл повторяется трижды — i принимает значения 0, 1, 2. Тогда после первой итерации внешнего цикла n=(1+4)*3=15, после второй итерации n=(15+4)*3=57, после третьей — n=(57+4)*3=183.

На экран будет выведено 183.

Импорт модулей

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

Это легко сравнить с проведением ремонта в квартире. Мы можем что-то сделать простыми инструментами, которые лежат на балконе. Но гораздо эффективнее будет съездить в магазин за специальными инструментами. Так мы не только шкаф — ракету соберем.

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

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

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

import math

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

  • Импорт всех функций модуля:

from math import *

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

  • Импорт конкретных функций модуля:

from math import sqrt

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

Понимание условий и циклов необходимо для решения любых задач на программирование. Разберем пример задачи №6 ОГЭ.

Дана программа на языке программирования Python:

a = int(input())
b = int(input())
if a == 15 or b == 50:
print(“Да”)
else:
print(“Нет”)

Было проведено 9 запусков. В качестве переменных a и b пользователь вводил следующие значения. Первое значение – переменная a, второе значение – переменная b.

(15; 19); (19; 50); (10; 26); (10; 56); (8; 50); (10; 10); (50; 50); (10; 2); (10; 40).

Определите количество запусков, при которых программа выведет «Да».

Решение.
Заметим, что программа печатает «Да», если a = 15 или b = 50, то есть выполнение хотя бы одного из равенств говорит о том, что программа выведет «Да».

Проверим пары чисел на условия:
— (15; 19)выполнено a = 15;
— (19; 50)выполнено b = 50;
— (10; 26) — не выполнено;
-(10; 56) — не выполнено;
— (8; 50)выполнено b = 50;
— (10; 10) — не выполнено;
— (50; 50)выполнено b = 50;
— (10; 2) — не выполнено;
— (10; 40) — не выполнено.

Нам подойдут все пары, кроме тех, где написано «не выполнено». Их всего 4 штуки.

Ответ: 4

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

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

Фактчек

  • Табуляция — способ структуризации кода, где отдельные блоки кода выделяются отступами.
  • Условная конструкция if-elif-else необходима для выполнения определенных блоков кода при определенных исходах условия.
  • Циклы нужны для многократного повторения блока кода. Цикл while выполняет блок кода, пока выполняется переданное ему условие; цикл for перебирает переданные ему значения.
  • Импортируя модули, мы можем получить доступ к функциям, которые изначально в программе доступны не были.

Проверь себя

Задание 1.

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

Задание 2.

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

x = 250
if x < 100:
print(x + 25)
elif x print(x — 100)

Задание 3.

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

b = 0
for i in range(5):
b = b + i
print(b)

Задание 4.

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

x = 50
y = 20
while x < y:
x -= 20
print(x)

Ответы: 1. — 4; 2. — 3; 3. — 3; 4. — 3.

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

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