Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Условная операция ?: (тернарная операция)
Формат записи: E1 ? E2 : E3; где E1 – выражение целочисленного или вещественного типа; типы E1 и E2 должны совпадать и могут быть любыми. Выполнение данной операции зависит от истинности E1: - если E1 отлично от нуля, то вычисляется выражение E2, и результатом всей операции будет E2, при этом выражение E3 игнорируется; - если E1 равно нулю, то вычисляется E3, которое и будет результатом всей операции, при этом E2 вычисляться не будет. Логические выражения Логические выражения вычисляются так же, как и арифметические – в соответствии с приоритетами. В них можно так же изменять порядок выполнения операций расстановкой круглых скобок. Порядок и направление выполнения операций В выражении различные операции можно комбинировать. Рассмотрим некоторые из них. Например, выражение 2+2*2 будет равно 8 или 6? Операции, приведенные в таблице выше, будут вычислены раньше, или, как говорят, имеют более высокий приоритет, чем те, которые расположены ниже. Рассмотрим ещё один пример: какой результат даст выражение 40/5*2? Приоритет выполнения операций “/” и “*” одинаков, но в зависимости от того, какая операция будет вычислена первой, в данном случае можно получить два ответа: 16 или 4. Таким образом, при выполнении операций необходимо учитывать их направление: слева на право или наоборот. Эти данные также приведены в таблице.
Таким образом, при выполнении операций слева направо, первой из двух, имеющих одинаковый приоритет, будет выполнена левая операция, при выполнении справа налево – правая. Задание: Пример работы с АОС: Через ОПЕРАЦИИ | РЕЖИМ САМОСТОЯТЕЛЬНОЙ РАБОТЫ | (ОПЕРАЦИИ: ЛОГИЧЕСКИЕ И УВЕЛИЧЕНИЯ + ОПЕРАЦИИ ОТНОШЕНИЯ И УСЛОВИЯ + ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ) выйти к меню (цифры могут отличаться): Внимательно прочесть теорию (<F2>). Вычислить предложенные примеры, например: 1) PRINT(x||y||!z); Следуя вышеизложенным правилам и учитывая, что x, y, z уже заданы, имеем: 0||0||!2 т.е. 0||0||0, что равно 0. 2) z=++x + 2; PRINT(x); PRINT(z); имеем: z = 5 + 2 (x=5 при вычислении, т.к. префиксная форма записи указывает на инкремент до использования переменной в выражении). При выполнении этой строки переменные x и z принимают значения, равные 5 и 7 соответственно. Значение последней строки равно –2, проверьте. Переписать задание и ответы в тетрадь для лабораторных работ и перейти к выполнению следующего задания (нажать любую клавишу). Таким образом выполнить все предложенные задания. Для перехода к следующей теме («Операции отношения и условия») нажать <F10>. Переписать задание и ответы в тетрадь для лабораторных работ и перейти к выполнению следующего задания (нажать любую клавишу). Таким образом выполнить все предложенные задания. Для перехода к следующей теме (Логические выражения) нажать <F10>: Контрольные вопросы 1. Перечислите, какие логические операции вы знаете, и над какими типами выражений они могут производиться? 2. В чем заключается правило усечения? 3. Какие действия выполняет операция «++» и над какими типами она может выполняться? 4. Чем отличается запись ‘X=Y’ от ‘X==Y’? 5. Перечислите последовательность выполнения операций в выражении 6. При каком значении x в выражении --x&&++y&&++z; значение переменной y не изменится?
Лабораторная работа №8
Операторы и операции
Цель работы:Изучение арифметических, логических операций и операций отношения и присваивания.
Теоретические сведения Основу языка С составляют операторы. Оператором выражения называют выражение, вслед за которым стоит точка с запятой. В С точки с запятой используются для разделения операторов. Принято группировать все операторы в следующие классы: присваивания, вызов функции, ветвления и цикла. В операторе присваиванияиспользуется операция присваивания = , Например: c = a * b; Действие такого оператора можно описать следующими словами: " с присваивается значение а, умножение на b ". Значение, присваиваемое переменной с, равняется произведению текущих значений переменных а и b. Операторы часто относятся более чем к одному из четырех классов. Например: оператор: if ( ( c = cube( a * b ) ) > d ) ... составлен из представителей следующих классов: присваивания, вызов функции, и ветвление. К понятию оператора вплотную примыкает понятие операции. Различаютследующие группы операций С: арифметические операции, операции отношения, операции присваивания, логические операции, побитовые операции, операция вычисления размера (sizeof) и операция следования (запятая). Арифметические операции К арифметическим операциям относятся: сложение (+), вычитание (-), деление (/) , умножение (*) и остаток (%). Все операции (за исключением остатка) определены для переменных типа int , char , float. Остаток не определен для переменных типа float. Все арифметические операции с плавающей точкой производятся над операндами двойной точности. Операции отношения В языке определены следующие операции отношения: проверка на равенство (==), проверка на неравенство (!=), меньше (<), меньше или равно (<=), больше (>), больше или равно (>=). Все перечисленные операции вырабатывают результат типа int. Если данное отношение между операндами истинно, то значение этого целого - единица, а если ложно, то нуль. Все операции типа больше-меньше имеют равный приоритет, причем он выше , чем приоритет операций == и !=. Приоритет операции присваивания ниже приоритета всех операций отношений. Для задания правильного порядка вычислений используются скобки. Логические операции В языке имеются три логические операции: && операции И (and) || операции ИЛИ (or) ! отрицание Аргументами логических операций могут быть любые числа, включая задаваемые аргументами типа char. Результат логической операции - единица, если истина, и нуль, если ложь. Вообще все значения, отличные от нуля, интерпретируются как истинные. Логические операции имеют низкий приоритет, и поэтому в выражениях с такими операциями скобки используются редко. Вычисление выражений, содержащих логические операции, производится слева направо и прекращается (усекается), как только удается определить результат. Если выражение составлено из логических утверждений (т.е. выражения, вырабатывающие значения типа int), соединенных между собой операцией И (&&), то вычисление выражения прекращается, как только хотя бы в одном логическом утверждении вырабатывается значение нуль. Если выражение составлено из логических утверждений, соединенных между собой операцией ИЛИ (||), то вычисление выражения прекращается, как только хотя бы в одном логическом утверждении вырабатывается ненулевое значение. Вот несколько примеров, в которых используются логические операции: if( i > 50 && j == 24) ... if( value1 < value2 && (value3 > 50 || value4 < 20) ) ... Операции присваивания К операциям присваивания относятся =, +=, -=, *= и /=, а также префиксные и постфиксные операции ++ и --. Все операции присваивания присваивают переменной результат вычисления выражения. Если тип левой части присваивания отличается от типа правой части, то тип правой части приводится к типу левой. В одном операторе операция присваивания может встречаться несколько раз. Вычисления производятся справа налево. Например: a = ( b = c ) * d; Вначале переменной d присваивается значение с, затем выполняется операция умножения на d, и результат присваивается переменной а. Операции +=, -=, *= и /= являются укороченной формой записи операции присваивания. Их применение проиллюстрируем при помощи следующего описания: a += b означает a = a + b. a -= b означает a = a - b. a *= b означает a = a * b. a /= b означает a = a / b. Префиксные и постфиксные операции ++ и -- используют для увеличения (инкремент) и уменьшения (декремент) на единицу значения переменной. Семантика указанных операций следующая: ++a увеличивает значение переменной а на единицу до использования этой переменной в выражении. а++ увеличивает значение переменной а на единицу после использования этой переменной в выражении. --a уменьшает значение переменной а на единицу до использования этой переменной в выражении. a-- уменьшает значение переменной а на единицу после использования этой переменной в выражении. Операцию sizeof (размер) можно применить к константе, типу или переменной. В результате будет получено число байтов, занимаемых операндом. Например: printf ( "\nРазмер памяти под целое %d", sizeof( int) ); printf ( "\nРазмер памяти под cимвол %d", sizeof( сhar) ); Задание: Cоставить программу, использующую оператор присваивания, все арифметические операции, инкремент и декремент для вычислния какой-либо переменной по заданной самостоятельно формуле, а также операцию sizeof для определения занимаемого этой переменной объема памяти. Лабораторная работа № 9
Работа с автоматизированной обучающей системой: Цель работы: получить навыки в использовании операций управления языка С в автоматизированной обучающей системе.
Теоретические сведения В программировании часто встречаются такие ситуации, когда выполнение какого-нибудь действия зависит от определённых условий. Для разрешения этой проблемы в языке С существуют условные операторы ifи switch. Операторы if, if…else Формат: if (условие) оператор [else оператор] где условие – это любое вычисляемое выражение. Если условие истинно, т.е. результат вычисления этого выражения отличен от нуля, то выполняется оператор (возможно, составной), стоящий после круглых скобок. После его выполнения вычисления продолжаются с первого оператора, стоящего сразу после оператора if. Если присутствует ветвь else, то при истинности условия оператор, стоящий после ключевого else, не выполняется. Он выполняется только в том случае, если условие ложно, т.е. результат вычисления условия равен нулю. Если условие ложно, а ветвь else отсутствует, то весь оператор if не выполнит никаких действий. Следует обратить внимание на то, что условие обязательно заключается в круглые скобки!!! В некоторых случаях возникает необходимость в совместном использовании нескольких операторов if, что может привести к неоднозначности типа «висящего else». Например: |
|||||||||||||||||||||||
Последнее изменение этой страницы: 2018-05-10; просмотров: 261. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |