Python: Инструкции (Statements)
Когда мы готовим блюдо, то четко следуем рецепту. Иначе еда окажется не такой, как ожидали. Это же правило действует и в программировании.
Чтобы увидеть на экране ожидаемый результат, нужно дать компьютеру четкие и пошаговые указания. Это можно сделать с помощью инструкций. Инструкция — это команда для компьютера, единица выполнения. Код на Python в этом случае — это набор инструкций. Его можно представить в виде пошагового рецепта.
Код на Python запускает интерпретатор — программу, которая выполняет инструкции строго по очереди. Как и шаги в рецепте, набор инструкций для интерпретатора пишутся по порядку и отделяются друг от друга переходом на следующую строку.
Разработчики должны понимать порядок действий в коде и уметь мысленно разделять программу на независимые части, удобные для анализа.
Посмотрим на пример кода с двумя инструкциями. При его запуске на экран последовательно выводятся два предложения:
print('Mother of Dragons.') print('Dracarys!') # => Mother of Dragons. # => Dracarys!
Выше мы говорили, что инструкции отделяются друг от друга переходом на новую строку. Но есть и другой способ: их можно разделить точкой с запятой — ; :
print('Mother of Dragons.'); print('Drakarys!')
Технической разницы между первым и вторым вариантом нет — интерпретатор поймет инструкции одинаково. Разница только в том, что человеку будет неудобно читать второй вариант.
Лучше инструкции располагать друг под другом. Так коллегам будет удобнее читать ваш код, обслуживать его и вносить изменения.
Задание
Выведите на экран друг за другом три имени: Robert, Stannis, Renly. В результате на экране должно отобразиться:
Robert Stannis Renly
Для каждого имени используйте свой собственный вызов print() .
Упражнение не проходит проверку — что делать?
Если вы зашли в тупик, то самое время задать вопрос в «Обсуждениях». Как правильно задать вопрос:
- Обязательно приложите вывод тестов, без него практически невозможно понять что не так, даже если вы покажете свой код. Программисты плохо исполняют код в голове, но по полученной ошибке почти всегда понятно, куда смотреть.
В моей среде код работает, а здесь нет
Тесты устроены таким образом, что они проверяют решение разными способами и на разных данных. Часто решение работает с одними входными данными, но не работает с другими. Чтобы разобраться с этим моментом, изучите вкладку «Тесты» и внимательно посмотрите на вывод ошибок, в котором есть подсказки.
Мой код отличается от решения учителя
Это нормально , в программировании одну задачу можно выполнить множеством способов. Если ваш код прошел проверку, то он соответствует условиям задачи.
В редких случаях бывает, что решение подогнано под тесты, но это видно сразу.
Прочитал урок — ничего не понятно
Создавать обучающие материалы, понятные для всех без исключения, довольно сложно. Мы очень стараемся, но всегда есть что улучшать. Если вы встретили материал, который вам непонятен, опишите проблему в «Обсуждениях». Идеально, если вы сформулируете непонятные моменты в виде вопросов. Обычно нам нужно несколько дней для внесения правок.
Кстати, вы тоже можете участвовать в улучшении курсов: внизу есть ссылка на исходный код уроков, который можно править прямо из браузера.
Полезное
Определения
- Интерпретатор — программа, выполняющая код на Python.
- Инструкция (statement) — команда для компьютера, написанная на языке программирования. Код на Python — это набор инструкций, разделенных (чаще всего) переводом строки.
Оператор (информатика) — Statement (computer science)
В компьютерном программировании оператор является синтаксисом единица императивного языка программирования, которая выражает действие, которое необходимо выполнить. Программа , написанная на таком языке, образована последовательностью из одного или нескольких операторов. У оператора могут быть внутренние компоненты (например, выражения ).
Во многих императивных языках (например, C ) проводится различие между операторами и определениями, причем оператор содержит только исполняемый код, а определение создает экземпляр идентификатор , в то время как выражение оценивает только значение. Также можно различать простые и составные утверждения; последние могут содержать операторы как компоненты.
- 1 Виды операторов
- 1.1 Простые операторы
- 1.2 Составные операторы
Виды операторов
Ниже приведены некоторые из основных общих типов операторов, псевдокодированных. Эти псевдокодированные операторы имеют непосредственный соответствующий синтаксис в любом типичном императивном языке, таком как Паскаль, C, Фортран и т.д.:
Простые операторы
- assertion
- в C: assert (ptr! = NULL) ;
- в Pascal: A :=A + 5
- в C и Fortran: A =A + 5
- в C и Fortran: goto label ;
- в C и Fortran: return value ;
- в Pascal: result: = value ;
- в C и Pascal : CLEARSCREEN ()
- в Fortran: вызов CLEARSCREEN ()
Составные операторы
- блок :
- в Паскале: begin. конец
- в C:
Синтаксис
Внешний вид операторов формирует внешний вид Программы. Языки программирования характеризуются типом используемых в них операторов (например, семейство языков с фигурными скобками ). Многие операторы представлены идентификаторами, например if, while или repeat. Часто оператор ключевые слова зарезервированы, поэтому их нельзя использовать в качестве имен переменных или функций. Императивные языки обычно используют специальный синтаксис для каждого оператора, который выглядит совершенно иначе, чем вызовы функций. Распространенными методами описания синтаксиса операторов являются форма Бэкуса – Наура и синтаксические диаграммы.
Семантика
Семантика. Очень многие операторы отличаются от вызовов подпрограммы тем, что они обрабатывают параметры. Обычно фактический параметр подпрограммы оценивается один раз перед вызовом подпрограммы. Это контрастирует со многими параметрами оператора, которые могут оцениваться несколько раз (например, условие цикла while ) или не оцениваться вообще (например, тело цикла цикла while). Технически такими параметрами оператора являются параметры поименного вызова. Параметры вызова по имени оцениваются при необходимости (см. Также отложенное вычисление ). Когда доступны параметры вызова по имени, такое поведение может быть реализовано с помощью подпрограмм (см. Lisp ). Для языков без параметров вызова по имени семантическое описание цикла loop или условного обычно выходит за рамки возможностей языка. Поэтому стандартные документы часто ссылаются на семантические описания на естественном языке.
Выражения
В большинстве языков операторы контрастируют с выражениями, в которых операторы не возвращают результатов и выполняются исключительно из-за их побочных эффектов, тогда как выражения всегда возвращают результат и часто вообще не имеют побочных эффектов.
- Оператор
- print (‘Hello, World.’)
- X = ваши данные
- print (X)
Среди императивные языки программирования, Algol 68 — один из немногих, в которых оператор может возвращать результат. В языках, которые смешивают императивный и функциональный стили, таких как семейство Lisp, различие между выражениями и операторами не проводится: даже выражения, выполняемые в последовательных контекстах исключительно из-за их побочных эффектов и чьи возвращаемые значения не используются, считаются «выражениями». В чисто функциональном программировании нет операторов; все есть выражение.
Это различие часто наблюдается в формулировках: оператор выполняется, а выражение оценивается. Это можно найти в функциях exec и eval , обнаруженных в некоторых языках: в Python есть обе функции, причем exec применяется к операторам и eval применяется к выражениям.
. Оператор — это инструкция, которую может выполнить интерпретатор Python. Пока мы видели только оператор присваивания. Некоторые другие типы операторов, которые мы вскоре увидим, — это операторы while, операторы for, операторы if и операторы импорта. (Есть и другие виды!)
Выражение — это комбинация значений, переменных, операторов и вызовов функций. Выражения нужно оценивать. Если вы попросите Python напечатать выражение, интерпретатор оценит выражение и отобразит результат.
Расширяемость
В большинстве языков есть фиксированный набор операторов, определенных языком, но были эксперименты с расширяемыми языками, которые позволяют программисту определять новые операторы.
См. Также
- Сравнение языков программирования — Операторы
- Поток управления
- Выражение (контраст)
Ссылки
Внешние ссылки
Разница между statement, expression и block(инструкция, выражение и блок)
Выражение это фрагмент кода, результатом которого является некая величина. Инструкция фрагмент кода, изменяющий состояние окружения в котором выполняется программа.
Это определение взял из книги по javascript(http://eloquentjavascript.net/), думаю оно действует в контексте любого языка. Но всё же любопытно: насколько оно исчерпывающее.
Из определения следует:
- sum = 2 + 3; — инструкция содержащая выражение
- var sum; — просто инструкция без выражения
- 2+3; — просто выражение, но выражения без инструкций бессмысленны(кроме случаев отладки) т.к. с результатом нужно что-то делать/где-то хранить его.
Блок — набор из нескольких инструкций.
Отслеживать
ответ дан 3 сен 2016 в 21:41
151 7 7 бронзовых знаковВыражение(англ. Expression) — инструкция, присваивающая правую часть выражения левой части (выражает левую через правую).
Инструкция ( англ. Statement ) — в программировании, команда языка программирования, которым задается определенный шаг процесса обработки информации на ЭВМ.
1. Любое выражение — это инструкция.
2. Не каждая инструкция — выражение.a = 1; выражение int a = 10; инструкция и выражение (сначала [var a] — инструкция которая не является выражением т.к. присваивания нет, а потом уже [a = 10] — выражение, которое можно также назвать инструкцией). if (a < 2)<>else<> и т.д. — инструкция, но не выражение, ибо ничего не выражается, но действия происходят. Точно также и с w = x+y+z : 1. x+y+z // инструкция, но не выражение. 2. w = //если вы введете сюда код что вернула инструкция (x+y+z) — выражение и инструкция присваивания одновременноБлок(англ. Block) — это 0 или больше инструкций помещенных между фигурными скобками и может быть помещен в том месте кода, где это дозволяется. Например:
class BlockDemo < public static void main(String[] args) < boolean condition = true; if (condition) < // начало блока 1 System.out.println("Condition is true."); >// конец блока 1 else < // начало блока 1 System.out.println("Condition is false."); >// конец блока 2 > >Выражения и инструкции — Введение в программирование
Вы точно знаете, что в ней происходит, верно? Создадим новую константу x , зададим ей значение 5. Ничего особенного тут нет.
Вот другая строчка кода:
const y = getAnswer();Создадим новую константу y , зададим ей то значение, которое возвращает функция getAnswer . Теперь представьте, что getAnswer — это на самом деле невероятно сложная функция с миллионом строчек кода и потребуется 12 лет для её вычисления.
Насколько отличаются эти строчки? Оказывается, в информатике более важный и полезный вопрос: «насколько они схожи?».
И ответ, конечно — «всё относительно».
Если вы рассуждаете о том, что действительно, буквально, происходит — они вообще не похожи друг на друга. Одна устанавливает числовое значение, другая вызывает какую-то функцию. А мы уже хорошо понимаем, что это разные вещи. Мы знакомы с функциями, аргументами и всем, что связано с функциями.
Но иногда полезно оперировать другими понятиями, на другом уровне. Конечно, бегать и управлять самолётом — это очень разные виды активности, но на определённом уровне они подобны — и та и другая подразумевают передвижение из одной точки в другую.
Эти две строчки подобны, потому что справа от знака равно в обоих случаях находится выражение. Выражение — это фрагмент кода, который превращается в значение. Другими словами — становится значением. Да, знаю, 5 — это уже значение, но для интерпретатора JavaScript это выражение, которое превращается в значение 5 . Другое выражение, которое превращается в значение 5 — это, например, 2 + 3 .
Вызов функции getAnswer() — это тоже выражение, потому что функция что-то возвращает. Этот вызов будет заменён на значение, которое она возвращает. Другими словами, вызов функции превратится в значение, а поэтому он является выражением.
Не всё в коде становится значением. Так что не всё в коде — это выражение, хотя большая часть его — именно выражения.
JavaScript различает выражения и инструкции. Инструкция — это команда, действие. Помните условие с if , циклы с while и for — всё это — инструкции, потому что они только производят и контролируют действия, но не становятся значениями.
Это что, какие-то мутные технические термины из учебников? Может так показаться, но в реальности очень важно понимать и видеть разницу между выражениями и инструкциями.
Это помогает правильно понимать процесс вычисления и выполнения программы. Посмотрите на пример:
12 + square(7 + 5) + square(square(2));Это выражение состоит из нескольких подвыражений.
Первое — 12 — выражается в 12 . Следующее состоит из множества подвыражений:
- 7 выражается в 7
- 5 выражается в 5
- 7 + 5 выражается в 12
- square(12) выражается в 144
К этому моменту в процессе JavaScript видит такую картинку:
12 + 144 + square(square(2));Это еще не конец, остались необработанные выражения. Это будет продолжаться пока всё выражение не превратится в единое значение.
square(square(2)) решается таким способом:
- 2 выражается в 2
- square(2) выражается в 4
- square(4) выражается в 16
Давайте заглянем в мозг интерпретатора снова:
12 + 144 + 16;Все внутренние выражения решены, так что теперь сложение происходит в два шага:
12 + 144 + 16; 156 + 16; 172;Теперь решено всё выражение.
Кстати, оператор сложения имеет левую ассоциативность. Это значит, что в случае с составными сложениями процесс пойдёт слева направо, вот почему мы вначале видим 12 + 144, а потом 156 + 16.
Вы не можете ставить инструкции там, где должны быть выражения. Например, передача инструкции const как аргумента функции приведёт к ошибке. Как и попытка присвоить инструкцию if переменной. Подобное просто не имеет смысла в этом языке, потому что в таких случаях предполагаются только выражения:
console.log(const x); // error! let b = if (x > 10) return 100; >; // error!Зная такие вещи, вы скоро обретёте две важные суперспособности:
- Вы будете способны замечать, что большая часть кода, даже та функция из миллиона строк на двенадцать лет, это просто горсть безделушек, которые становятся значениями.
- Вы будете способны замечать, что иногда код просто не будет работать, потому что он не имеет смысла в контексте выражений и инструкций.
Выводы
Выражением (expression) является любой корректный блок кода, который возвращает значение.
Ниже 5 это expression, оно выражается в значение 5 :
const x = 5;Ниже getAnswer() — это вызов функции — другое выражение. Этот вызов возвращает значение, то есть этот вызов функции выразится в значение:
const y = getAnswer();Ниже пример выражения, которое состоит из нескольких подвыражений, и пошаговый процесс превращения каждого выражения по порядку, пока целое выражение не превратится в одно значение:
12 + square(7 + 5) + square(square(2)); 12 + square(12) + square(square(2)); 12 + 144 + square(square(2)); 12 + 144 + square(4); 12 + 144 + 16; 156 + 16; 172;JavaScript различает выражения (expressions) и инструкции (statements). Инструкция — это (грубо говоря) команда, действие.
if , while , for , const — примеры инструкций. Они производят или контролируют действия, но не превращаются в значения.
Дополнительные материалы
- Выражения / Mozilla Developer Network
- Приоритет операторов
- Expressions / Mozilla Developer Network
- Expressions versus statements in JavaScript

Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Об обучении на Хекслете
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Урок «Как эффективно учиться на Хекслете»
- Вебинар « Как самостоятельно учиться »
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях: