Оператор программирование: что это и зачем нужны

Содержание

что это и зачем нужны

Содержание

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

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

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

Зачем нужны операторы в программировании?

Компьютерная программа представляет собой алгоритм, то есть последовательность определенных действий с данными.

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

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

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

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

Общее свойство операторов

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

Курс IT-специалист с нуля Поможем определить подходящую вам IT-профессию и освоить её с нуля. Вы на практике попробуете разные направления: разработку на разных языках, аналитику данных, Data Science, менеджмент в IT. Это самый подходящий курс для построения карьеры в IT в новой реальности.

Подробнее

Виды операторов в программировании

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

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

х = 365, где х — это имя переменной, 365 — ее значение, а «=» — знак присваивания.  

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

  • «-» — вычитание;
  • «+» — сложение;
  • «*» — умножение;
  • «/» — деление без остатка;
  • «—» — уменьшение;
  • «++» — увеличение.

Два последних оператора из этого списка используются в языке С и обозначают уменьшение или увеличение операнды на 1. В других ЯП эта операция записывается, например, следующим образом: х = х + 1 или х = х – 1.

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

  • Оператор «И» сравнивает несколько значений друг с другом и выдает результат «истина/ложь», от которого зависит дальнейшее выполнение программы. Результат «истина» возможен только в том случае, когда все значения истинны. Обозначается словом «and» или знаками &, &&. 
  • Оператор «ИЛИ» также сравнивает несколько значений друг с другом. Отличается от предыдущего тем, что выдает результат «ложь» только в том случае, когда все сравниваемые значения ложные. Обозначается словом «or», знаком ||.
  • Оператор «НЕ» предназначен для замены значения на противоположное, то есть «истина» на «ложь» и наоборот. В программировании обозначается восклицательным знаком «!».

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

Например, в языке С они обозначаются следующими символами:

  • «>» — больше;
  • «<» — меньше;
  • «>=» — больше или равно;
  • «<=» — меньше или равно;
  • «==» — равно;
  • «!=» — не равно.

Помимо этих основных операторов в программировании используются и другие, причем в зависимости от языка их набор может существенно различаться, что влияет на возможности ЯП и гибкость написанного на нем кода. Часто в одном и том же языке сосуществуют операторы, обозначаемые словом или символом. Например, в языке Pascal наряду с символьным оператором присваивания «:=» присутствует оператор безусловного перехода «goto», записанный буквами латинского алфавита. 

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

  • Границы составного оператора могут обозначаться в различных языках фигурными скобками (в С или С++), словами «begin» и «end».
  • Разделителем, отделяющим друг от друга простые операторы, входящие в состав сложного.

Составные операторы впервые появились в языке Алгол, из которого были унаследованы многими другими ЯП, такими как Pascal, C, C++ и т. д. Они позволяют использовать несколько операторов там, где ожидается применение одного — например, в операциях ветвления. Составные операторы позволяют упростить программный код и упорядочить его исполнение. Пример написания составного условного оператора «switch» (заменяющего множество простых операторов «if» на языке С:

switch(ii)

   {

   case 1: Buf_1[Pok-f+i]= Prognoz;  break;

   case 2: Buf_2[Pok-f+i]= Prognoz;  break;

   case 3: Buf_3[Pok-f+i]= Prognoz;  break;

   }

По своему назначению в структуре программы операторы можно разделить на следующие основные типы:

Операторы выбора. Они используются в тех случаях, когда программа подразумевает выбор из некоторого числа значений, в зависимости от которых происходит ее дальнейшее исполнение или неисполнение. Иными словами, они обозначают ветвление алгоритма. Типичным примером является оператор «if» в языке С, который разделяет программу на два сценария в зависимости от того, исполняется или нет указанное в нем условие. 

Операторы цикла. С помощью таких операторов в программе обозначаются операции, выполняемые многократно (циклы). Они тоже содержат условия или параметры, при соблюдении которых цикл повторяется. В языке Pascal таким оператором является «while». Например, конструкция «while B do S» в переводе на естественный язык означает, что пока значение логического выражения (условия) B истинно, программа будет исполнять цикл S до тех пор пока B не станет ложным. В зависимости от того, как используется условие, операторы цикла можно разделить на 3 группы:

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

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

Операторы перехода. Они перенаправляют исполнение программы к определенному фрагменту кода, помеченному специальной меткой. Операторы перехода позволяют создавать работающие алгоритмы со сложной структурой. Типичным примером такого оператора в языке Pascal является безусловный оператор «goto». Помимо него есть также оператор прерывания цикла «break» или досрочного завершения его текущей операции «continue», прерывания всей программы «exit» и т. д. Подобные операторы присутствуют и в других языках программирования, таких как С, С++, Java и т. д.

Порядок исполнения операторов

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

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

Курс IT-специалист с нуля Поможем определить подходящую вам IT-профессию и освоить её с нуля. Вы на практике попробуете разные направления: разработку на разных языках, аналитику данных, Data Science, менеджмент в IT. Это самый подходящий курс для построения карьеры в IT в новой реальности.

Подробнее

Условный оператор «если …». Урок 4 курса «Программирование в Scratch»

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

Допустим, в Scratch кот будет идти только в том случае, если нажата клавиша мыши. Если условие с мышкой не выполняется, кот никуда не пойдет. Чтобы реализовать такой сценарий, понадобиться блок «если … , то», который находится в оранжевом разделе «Управление».

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

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

Блоки логических выражений не находятся в одном разделе. Их можно найти среди блоков как бирюзового раздела «Сенсоры», так и зеленого раздела «Операторы». В Scratch логические блоки имеют форму с острыми углами справа и слева.

В данном случае нам нужен блок «мышь нажата?», который мы вставляем в поле после слова «если» в оператор ветвления «если … , то».

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

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

В результате выполнения данного скрипта всегда будет проверяться, нажата ли какая-нибудь клавиша мышки. И если она нажата, кот будет перемещаться. Когда клавиша мыши будет отпускаться, спрайт будет останавливаться, потому что условие «мышка нажата?» станет неправдой.

А что будет, если мы поместим команды до или после всего блока «если». Влияет ли на них выполнение условия нажатия мышки? Абсолютно нет. Условие влияет только на те команды, которые находятся внутри «если». Команды за пределами «если» будут выполняться всегда.

Разместим команду «изменить эффект цвет на … » после блока «если».

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

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

Эту задачу можно решить двумя способами. Добавить второй блок «если», в котором проверять обратное условие, то есть то, что мышка не нажата. Или же, что более правильно, воспользоваться условным оператором с двумя ветками, то есть блоком «если … иначе».

Рассмотрим сначала первый, не совсем верный, вариант:

Здесь мы используем новый для нас зеленый блок «не …», в который вставляем «мышка нажата?». Сложное логическое выражение «не мышка нажата?» помещаем в заголовок «если».

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

Рассмотрим второй вариант решения задачи, который делает то же самое что первый, но использует блок «если … иначе»:

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

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

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

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

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

Однако мы также можем вложить второй «если» в ветку «иначе»:

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

Задание

Составьте программу с говорящим котом:

  1. Если зажимается клавиша 1 на клавиатуре, кот говорит «Один».

  2. Иначе, если нажимается клавиша 2 на клавиатуре, кот говорит «Два».

  3. Иначе, если нажимается клавиша 3 на клавиатуре, кот говорит «Три».

  4. Когда не нажимается ни одна клавиша клавиатуры, кот должен молчать.

Чтобы кот говорил, используйте команду «сказать Привет!» из фиолетового раздела «Внешний вид».

PDF-версия курса и android-приложение включают три дополнительных урока («Списки», «Функции», «Работа со звуком»), а также ответы к заданиям.


Учебники и примечания по основам работы с операторами | Основы программирования

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

Сначала разделим их на категории:
1. Арифметические
2. Реляционные
3. Побитовые
4. Логические
5. Присваивающие
6. Инкрементные
7. Прочие

5 Арифметические

5

60004 :

Символ Эксплуатация Использование Пояснение
+ дополнение х+у Добавляет значения по обе стороны от оператора
вычитание х-у Вычитает правый операнд из левого операнда
* умножение х*у Умножает значения по обе стороны от оператора
/ отделение х/у Делит левый операнд на правый операнд
% модуль х%у Делит левый операнд на правый операнд и возвращает остаток


Реляционные операторы : Эти операторы используются для сравнения. Они возвращают либо true , либо false в зависимости от результата сравнения. Оператор «==» не следует путать с «=». Операторы отношения следующие:

Symbol Эксплуатация Использование Пояснение
== равно х == у Проверяет, совпадают ли значения двух операндов. равно или нет, если да, то условие становится истинным.
!= не равно х != у Проверяет, совпадают ли значения двух операндов. равны или нет, если значения не равны, то условие становится истинным.
> больше х > у Проверяет, является ли значение левого операнда больше, чем значение правого операнда, если да, то условие становится истинным
< меньше х < у Проверяет, меньше ли значение левого операнда чем значение правого операнда, если да, то условие становится истинным.
>= больше или равно х >= у Проверяет, является ли значение левого операнда больше или равно значению правого операнда, если да, то условие становится истинным.
<= меньше или равно х <= у Проверяет, меньше ли значение левого операнда больше или равно значению правого операнда, если да, то условие становится истинным.


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

Символ Эксплуатация Использование Пояснение
и побитовое И х и у Устанавливает бит результата, если он установлен в обоих операндах. y$$ 9$$y$$ = 0011 0001= 49
~$$x$$ = 1101 0101
$$x<<2$$ = 1010 1000= 168. Обратите внимание, биты сдвинуты на 2 единицы влево, а новые биты заполнены 0s.
$$x>>2$$ = 0000 1010=10$$. Обратите внимание, биты сдвинуты на 2 единицы вправо, а новые биты заполнены нулями.
Для получения дополнительной информации о том, как работают эти операторы, см.: Управление битами


Логические операторы : Эти операторы принимают логические значения в качестве входных данных и возвращают логические значения в качестве выходных данных.
Примечание. В C, C++ любое ненулевое число считается истинным, а 0 — ложным, но это не относится к Java.

Символ Эксплуатация Использование Пояснение
&& логическое И х && у Возвращает истину, если и x, и y верны, иначе возвращает ложь.
|| логическое ИЛИ х || г Возвращает false, если ни x, ни y не являются истинными, иначе возвращает true
! логический НЕ ! х Унарный оператор. Возвращает true, если x равно false, иначе возвращает false.


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

9y и сохраняет результат обратно в x.
Символ Эксплуатация Использование Эквивалент Пояснение
= присвоение х = у Присваивает значение из правого операнда(ов) левой стороне операнд.
+= добавить и присвоить х += у х = х+у Добавляет правый операнд к левому операнду и присваивает результат левому операнду.
-= вычитание и присваивание х -= у х= х-у Вычитает правый операнд из левого операнда и присваивает результат левому операнду.
*= умножить и присвоить х *= у х= х*у Умножает правый операнд на левый операнд и присваивает результат левому операнду.
/= деление и присваивание х /= у х= х/у Делит левый операнд на правый операнд и присваивает результат левому операнду.
%= модуль и назначение х%=у х= х%у Принимает модуль, используя два операнда, и присваивает результат левому операнду.
<<= сдвиг влево и присвоение х<<=у х= х<< у Сдвигает значение x на y битов влево и сохраняет результат обратно в x.
>>= сдвиг вправо и присвоение х>>=у х= х>>у Сдвигает значение x на y битов вправо и сохраняет результат обратно в x.
&= побитовое И и присваивание х&=у


Операторы увеличения/уменьшения : Это унарных оператора. Унарные операторы — это операторы, которые требуют только одного операнда.

Символ Эксплуатация Использование Пояснение
++ постинкремент х++ Увеличение x на 1 после использования его значения
Постдекремент х— Уменьшить x на 1 после использования его значения
++ Преинкремент ++х Увеличить x на 1 перед использованием его значения
Предекремент —x Уменьшить x на 1 перед использованием его значения

Примеры :
Пусть x=10
тогда, после y=x++ ; y=10 и x=11, потому что x присваивается y до его приращения.
, но если бы мы написали y=++x ; y=11 и x=11, потому что x присваивается y после его приращения.
То же относится и к операторам декремента.


Разные операторы :

Условный оператор : Аналогичен if-else :

x = (условие) ? а : б
Если условие истинно, то a присваивается x, иначе b присваивается x. Это тернарный оператор, поскольку он использует условие a и b, то есть три операнда (условие также рассматривается как логический операнд).


Приоритет и ассоциативность операторов :

Правила приоритета : Правила приоритета определяют, какой оператор оценивается первым, когда два оператора с разным приоритетом находятся рядом в выражении.
Например: $$x= a+++b$$
Это выражение можно рассматривать как приращение постфикса к a и добавление к b или приращение префикса к b и прибавление к a. Такие проблемы решаются с помощью правил приоритета.

Правила ассоциативности : правила ассоциативности определяют, какой оператор вычисляется первым, когда два оператора с одинаковым приоритетом находятся рядом в выражении.
Например: $$a*b /c$$

Приоритет оператора : В следующей таблице описывается порядок приоритета операторов, упомянутых выше. Здесь операторы с наивысшим приоритетом отображаются вверху, а с наименьшим — внизу. В любом заданном выражении операторы с более высоким приоритетом будут оцениваться первыми.
LR=Слева направо
RL=Справа налево

9= |=
Категория Ассоциативность Оператор
Постфикс ЛР++ —
Одинарный РЛ + — ! ~++ —
Мультипликатив ЛР * / %
Добавка

Предоставил: Шубхам Гупта

Логические операторы — основы программирования

Кеннет Лерой Басби и Дэйв Брауншвейг

Обзор

Логический оператор — это символ или слово, используемые для соединения двух или более выражений таким образом, что значение полученного составного выражения зависит только от значения исходных выражений и от значения оператора. [1] Общие логические операторы включают И, ИЛИ и НЕ.

Обсуждение

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

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

Язык И ИЛИ НЕ
С++ && || !
С# && || !
Ява && || !
JavaScript && || !
Питон и или не
Свифт && || !

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

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

6 > 4 && 2 <= 14
6 > 4 и 2 <= 14

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

верно && верно
Правда и правда

Окончательная оценка выражения: true.

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

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

.

(6 > 4) && (2 <= 14)
(6 > 4) и (2 <= 14)

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

6 > 4 && 8
6 > 4 и 8

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

верно && верно
Правда и правда

Чтобы сравнить 6 с 4 и 8, вместо этого нужно записать как:

6 > 4 && 6 > 8
6 > 4 и 6 > 8

Это будет оцениваться как false как:

истина && ложь
Правда и Ложь

Таблицы истинности

Обычный способ показать логические отношения — таблицы истинности.

Логический и (&&)
х г х и у
ложный ложь ложь
ложный правда ложь
правда ложь ложь
правда правда правда

 

Логический или (||)
х г х или у
ложный ложь ложь
ложный правда правда
правда ложь правда
правда правда правда

 

Логическое нет (!)
х нет х
ложный правда
правда ложь

Примеры

Я называю это примером того, почему я ненавижу «и» и люблю «или».

Каждый день, когда я приходил домой из школы с понедельника по четверг; Я спрашивал маму: «Можно я выйду на улицу и поиграю?» Она отвечала: «Если в твоей комнате чисто и домашняя работа сделана, ты можешь выйти на улицу и поиграть». Я научился ненавидеть слово «и». Я мог успеть выполнить одно из заданий и успеть поиграть до обеда, но и то, и другое… ну, я ненавидел «и».

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

В качестве следующего примера просто представьте себе подростка, разговаривающего со своей матерью. Во время разговора мама говорит: «Ведь твой папа разумный!» Подросток говорит: «Разумно. (короткая пауза) Нет».

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

Оставить комментарий

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

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

© 2019 Штирлиц Сеть печатных салонов в Перми

Цифровая печать, цветное и черно-белое копирование документов, сканирование документов, ризография в Перми.