Хелпикс

Главная

Контакты

Случайная статья





Базовые конструкции структурного программирования.



Пример.

#include <stdio.h>

int main() {

         int x=3, y=3;

         printf(“Значение префиксного выражения: %d\n”, ++x);

         printf(“Значение постфиксного выражения: %d\n”, y++);

         printf(“Значение х после приращения: %d\n”, x);

         printf(“Значение y после приращения: %d\n”, y);

         return 0;

}

Результат работы программы:

Значение префиксного выражения: 4

Значение постфиксного выражения: 3

Значение х после приращения: 4

Значение y после приращения: 4

Операндом операции инкремента в общем случае является так называемое L-значение. Так обозначается любое выражение, адресующее некоторый участок памяти, в который можно занести значение. Переменная является частным случаем L-значения.

Операция определения размера sizeofпредназначена для вычисления размера объекта или типа в байтах, и имеет две формы: sizeof выражение или sizeof (тип).

Операции отрицания (-, ! и ~). Арифметическое отрицание (унарный минус -) изменяет знак операнда целого или вещественного типа на противоположный. Логическое отрицание (!) дает в результате значение 0, если операнд есть истина (не нуль), и значение 1, если операнд равен нулю. Операнд должен быть целого или вещественного типа, а может иметь тип указатель. Поразрядное отрицание (~), часто называемое побитовым, инвертирует каждый разряд в двоичном представлении целочисленного операнда.

Деление (/) и остаток от деления (%). Операция деления применима к операндам арифметического типа. Если оба операнда целочисленные, результат операции округляется вниз до целого числа, в противном случае тип результата определяется правилами преобразования. Операция остатка от деления применяется только к целочисленным операндам.

Операции сдвига (<< и >>) применяются к целочисленным операндам. Они сдвигают двоичное представление первого операнда влево или вправо на количество двоичных разрядов, заданное вторым операндом. При сдвиге влево (<<) освободившиеся разряды обнуляются. При сдвиге вправо (>>) освободившиеся биты заполняются нулями, если первый операнд беззнакового типа, и знаковым разрядом в противном случае. операции сдвига не учитывают переполнение и потерю значимости.

Операции отношения (<, <=, >, >=, ==, !=)сравнивают первый операнд со вторым. Операнды могут быть арифметического типа или указателями. Результатом операции является значение true или false. Операции сравнения на равенство и неравенство имеют меньший приоритет, чем остальные операции сравнения.

Поразрядные операции (&, |, ^) применяются только к целочисленным операндам и работают с их двоичными представлениями. При выполнении операций операнды сопоставляются побитово. При поразрядной конъюнкции, или поразрядном И (&) бит результата равен 1 только тогда, когда соответствующие биты обоих операндов равны 1. При поразрядной дизъюнкции, или поразрядном ИЛИ (|) бит результата равен 1 тогда, когда соответствующий бит хотя бы одного из операндов равен 1. При поразрядном исключающем ИЛИ (^) бит результата равен 1 только тогда, когда соответствующий бит только одного из операндов равен 1.

Логические операции (&& и ||). Операнды логических операций И (&&) и ИЛИ (||) могут иметь арифметический тип или быть указателями, при этом операнды в каждой операции могут быть различных типов.

Операции присваивания (=, +=, -=, *= и т.д.). В операции простого присваивания (=) слева от знака должно находиться L-значение, а справа – выражение. При присваивании производится преобразование типа выражения к типу L-значения, что может привести к потере информации. В сложных операциях присваивания при вычмслении выражения, стоящего в правой части, используется и L-значение из левой части. Например, выражение a+=b является более компактной записью выражения a=a+b.

Условная операция (?:). Эта операция тернарная, то есть имеет три операнда. Ее формат: операнд1 ? операнд2 : операнд3. Первый операнд может иметь арифметический тип или быть указателем. Он оценивается с точки зрения его эквивалентности нулю. Если результат вычисления операнда1 равен истина, то результатом условной операции будет значение второго операнда, иначе – третьего операнда. Условная операция является сокращенной формой условного оператора if.

Стандартно выполняются операции умножения (*), сложение (+) и вычитание (-).

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

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

Преобразования бывают двух типов:

- изменяющие внутреннее представление величин (с потерей точности или без потери точности);

- изменяющие только интерпретацию внутреннего представления.

К первому типу относится, например, преобразование целого числа в вещественное (без потери точности) и наоборот, ко второму – преобразование знакового целого в беззнаковое.

 

Базовые конструкции структурного программирования.

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

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

Рассмотрим операторы языка, реализующие базовые конструкции структурного программирования.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.