Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
134588.rtf
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1.35 Mб
Скачать

Размещено на http://www.allbest.ru/

Билет №1

2). Для каждой группы операций в таблице приоритет одинаков. Чем выше приоритет группы операций, тем выше она расположена в таблице. Порядок выполнения определяет группировку операций и операндов.

() Вызов функции Слева направо

[] Выделение элемента массива

! Логическое отрицание Справа налево

- Изменение знака

++ Увеличение на единицу (increment)

-- Уменьшение на единицу (decrement)

~ Побитовое отрицание (complement)

& Побитовая операция И Слева направо

| Побитовая операция ИЛИ

^ Побитовая операция исключающее ИЛИ (eXclude OR)

<< Сдвиг влево

>> Сдвиг вправо

* Умножение Слева направо

/ Деление

% Деление по модулю

+ Сложение Слева направо

- Вычитание

< Меньше, чем Слева направо

<= Меньше или равно

> Больше, чем

>= Больше или равно

== Равно

!= Не равно

|| Логическая операция ИЛИ Слева направо

&& Логическая операция И Слева направо

= Присваивание Справа налево

+= Сложение с присваиванием

-= Вычитание с присваиванием

*= Умножение с присваиванием

/= Деление с присваиванием

%= Деление по модулю с присваиванием

>>= Сдвиг вправо с присваиванием

<<= Сдвиг влево с присваиванием

&= Побитовое И с присваиванием

|= Побитовое ИЛИ с присваиванием

^= Исключающее ИЛИ с присваиванием

, Запятая Слева направо

Билет№2

2). Арифметические преобразования

Подавляющее большинство операций вызывает преобразование и определяет типы результата аналогичным образом. Приводимая ниже схема в дальнейшем будет называться "обычными арифметическими преобразованиями". Сначала любые операнды типа char или short преобразуются в int, а любые операнды типа float преобразуются в double. Затем, если какой-либо операнд имеет тип double, то другой преобразуется к типу double, и это будет типом результата. В противном случае, если какой-либо операнд имеет тип long, то другой операнд преобразуется к типу long, и это и будет типом результата.

В противном случае, если какой-либо операнд имеет тип unsigned, то другой операнд преобразуется к типу unsigned, и это будет типом результата. В противном случае оба операнда будут иметь тип int, и это будет типом результата.

Билет№3,15(2)

1) Основные типы данных, операции и выражения

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

Имена переменных. Имена могут состоять из букв латинского алфавита, цифр и символа подчеркивания "_", который считается буквой. Строчные и прописные буквы различаются Beta, beta , BETA - разные имена. Число символов в имени не ограничено. В качестве имен переменных нельзя исползовать зарезервированные слова типа if, else, for, char, int и т.д. Все служебные слова должны быть набраны малыми буквами.

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

Целые константы и константы с плавающей точкой записываются в общепринятой для языков программирования форме:

13, -941, 0, 76; 13.0, 13E+0, -1.76, 0.123e-2, 6.02E23

Плавающая константа состоит из десятичной целой части, десятичной точки, десятичной дробной части и степени, которая состоит из буквы E или е, за которой следует десятичный порядок. Перед показателями может стоять знак (+ или -). Либо десятичная точка, либо показатель, но не оба одновременно, могут быть опущены либо целая, либо дробная части.

В языке Си существуют правила записи восьмеричных и шестнадцатеричных чисел: если перед целым числом идет 0 (нуль). то это восьмеричная константа: 037, 0776; начальные 0X или 0x указывают на шестнадцатеричное число: 0x f37, 0X1FA.

Символьная константа состоит из заключенного в одиночные кавычки символа, например ' * ' . Символы в языке Си фактически являются целочисленными значениями. Их числовое значение соответствует внутреннему (машинному) представлению символов и некотором принятом стандартном коде. Например, в коде ASCII, широко применяемом в мини- и микрокомпьютерах, значение символа ' A ' равно 65, ' b ' - 98, ' 2' - 50.

Символы, не имеющие графического изображения, и некоторые специальные символы записываются следующим образом: \n - новая строка, \t - табуляция, \0 - нуль (пусто - конец строки), \\ - обратная косая черта, \' апостроф, \b - возврат на шаг, \r - возврат каретки, \f - перевод страницы. Присвоение константам символических имен происходит с помощью процессорного утверждения #define. Например, запись #define MAX 100 перед текстом основной программы определяет имя MAX, являющееся синонимом константы 100.

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

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

int a, b; int low; char c; float x, dl;

Переменным в описаниях можно задавать начальные значения, объединяя таким образом описание и оператор присваивания.

int p = 1; float eps = 1.0 e-5;

Арифметические операции. Существуют арифметические операции: +, - , * , / и вычисление остатка от деления - %. Есть унарная операция - (унарный минус). При делении целых чисел дробная часть отбрасывается. Порядок выполнения операциями совпадает с общепринятыми: операции + и- имеют одинаковый приоритет, причем он ниже приоритета операций /, * и % . Самый высокий приоритет унарный минус.

2). Понятие оператора

Операторы языка Си управляют процессом выполнения программы.

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

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

В начале составного оператора могут содержаться объявления. Они служат для определения переменных, локальных для данного блока, либо для распространения на данный блок области действия глобальных объектов.

Типично использование составного оператора в качестве тела другого оператора, например оператора if.

Оператор-выражение

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

Условный оператор if

Формат оператора:

if (выражение) оператор1; [else оператор2;]

Выполнение оператора if начинается с вычисления выражения.

Далее выполнение осуществляется по следующей схеме:

- если выражение истинно (т.е. отлично от 0), то выполняется оператор1.

- если выражение ложно (т.е. равно 0),то выполняется оператор2.

- если выражение ложно и отсутствует оператор2, то выполняется следующий за if оператор.

Допускается использование вложенных операторов if.

Оператор пошагового цикла for

Оператор for - это наиболее общий способ организации цикла. Он имеет следующий формат:

for ( выражение 1 ; выражение 2 ; выражение 3 ) тело;

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

Схема выполнения оператора for:

1. Вычисляется выражение 1.

2. Вычисляется выражение 2.

3. Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for.

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

Оператор цикла с предусловием while

Оператор цикла while называется циклом с предусловием и имеет следующий формат:

while (выражение) тело;

Схема выполнения оператора while следующая:

1. Вычисляется выражение.

2. Если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело оператора while.

3. Процесс повторяется с пункта 1.

Оператор цикла с постусловием do while

Оператор цикла do while называется оператором цикла с постусловием и используется в тех случаях, когда необходимо выполнить тело цикла хотя бы один раз. Формат оператора имеет следующий вид:

do тело while (выражение);

Схема выполнения оператора do while :

1. Выполняется тело цикла (которое может быть составным оператором).

2. Вычисляется выражение.

3. Если выражение ложно, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполнение оператора продолжается с пункта 1.

Оператор продолжения continue передает управление на следующую итерацию в операторах цикла do, for, while. Он может появиться только в теле этих операторов. Остающиеся в теле цикла операторы при этом не выполняются.

Оператор-переключатель switch

Синтаксис:

switch(<выражение>)

{

[<объявление>]

[case <константное-выражение>:] [<оператор>]

[case <константное-выражение>:] [<оператор>]

[default:] [<оператор>]

}

Оператор-переключатель switch предназначен для выбора одного из нескольких альтернативных путей выполнения программы. Выполнение оператора-переключателя начинается с вычисления значения выражения переключения (выражения, следующего за ключевым словом switch в круглых скобках). После этого управление передается одному из <операторов> тела переключателя. Оператор, следующий за ключевым словом default, выполняется, если ни одна из констант варианта не равна значению выражения переключения. Если же слово default опущено, то ни один оператор в теле переключателя не выполняется, и управление передается на оператор, следующий за переключателем в программе.

Оператор разрыва break прерывает выполнение операторов do, for, while или switch. Он может содержаться только в теле этих операторов. Управление передается оператору программы, следующему за прерванным.

Оператор перехода goto

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

Помеченный оператор выполняется сразу после выполнения оператора goto. Нельзя с помощью оператора goto передать управление на конструкции case и default в теле переключателя.

Оператор возврата return заканчивает выполнение функции, в которой он содержится, и возвращает управление в вызывающую функцию. Управление передается в точку вызывающей функции, непосредственно следующую за оператором вызова.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]