- •Вопросы к экзамену по дисциплине
- •6. Типы данных: целый, вещественный, символьный. Размеры данных.
- •7.Правила определения переменных в программе. Инициализация переменных.
- •10.Операции сдвига.
- •11.Операции отношения, логические операции.
- •Int I, j, k;
- •15.Приоритет операций и порядок вычисления выражений.
- •16.Функция форматированного вывода printf.
- •18.Операторы преобразования данных и операторы управления. Оператор простой и составной, блок.
- •(Последовательно выполняемые операторы)
- •19.Виды управляющих конструкций программы.
- •20.Операторы ветвления, условный оператор.
- •21.Оператор переключения(Switch).
- •22.Оператор цикла с заданным числом повторений.
- •23.Оператор цикла с предусловием.
- •24.Оператор цикла с постусловием.
- •25.Операторы прерывания и продолжения цикла.
- •26.Одномерные и многомерные массивы, их инициализация.
- •27.Указатели. Связь между указателями и массивами.
- •28.Операции над указателями и массивами.
- •29.Операции взятия адреса, обращения по адресу.
- •30.Определение функции. Возвращение значения: оператор return. Описание функции, вызов функции.
- •31.Аргументы функции: формальные и фактические. Передача аргументов, стек.
- •32.Рекурсивные программы.
- •33.Функции для работы со строками: сравнение, копирование.
- •47. Функции для работы со строками: поиск в строке.
- •34.Функции для работы со строками: преобразование форматов.
- •35.Локальные и глобальные переменные.
- •36.Классы памяти. Автоматические переменные. Внешние и статические переменные.
- •37. Декларация структур.
- •38. Инициализация и доступ к элементам структуры.
- •39. Вложенные структуры и массивы структур.
- •40. Указатели на структуры.
- •41.Файлы.Функции работы с указателем текущей позиции файла.
- •43.Функция чтения и записи в файл в построчном режиме.
- •44.Функция чтения и записи в файл в посимвольном режиме.
- •45.Функция чтения и записи двоичных файлов.
- •46.Списки.Операции над списками. Односвязные и двусвязные списки.
- •47.Реализация списка на основе массива структур.
- •48.Реализация списка на основе массива данных.
- •49.Очереди. Операции над очередями.
- •50.Реализация очереди на основе массива.
- •51.Стеки. Операции над стеками.
- •52.Реализация стека на основе массива.
- •53.Сортировка методом обмена(пузырька).
- •Анализ пузырьковой сортировки. Пузырьковая сортировка обладает несколькими характеристиками:
- •54.Методом выбора.
- •55.Методом вставки.
- •56.Методом Шелла.
- •57.Метод быстрой сортировки(Хоара).
10.Операции сдвига.
Операции сдвига осуществляют смещение операнда влево (<<) или вправо (>>) на число битов, задаваемое вторым операндом. Оба операнда должны быть целыми величинами. Выполняются обычные арифметические преобразования. При сдвиге влево правые освобождающиеся биты устанавливаются в нуль. При сдвиге вправо метод заполнения освобождающихся левых битов зависит от типа первого операнда. Если тип unsigned, то свободные левые биты устанавливаются в нуль. В противном случае они заполняются копией знакового бита. Результат операции сдвига не определен, если второй операнд отрицательный. Преобразования, выполненные операциями сдвига, не обеспечивают обработку ситуаций переполнения и потери значимости. Информация теряется, если результат операции сдвига не может быть представлен типом первого операнда, после преобразования. Отметим, что сдвиг влево соответствует умножению первого операнда на степень числа 2, равную второму операнду, а сдвиг вправо соответствует делению первого операнда на 2 в степени, равной второму операнду.
Примеры:
int i=0x1234, j, k ; k = i<<4 ; /* k="0x0234" */ j="i<<8" ; /* j="0x3400" */ i="j">>8 ; /* i = 0x0034 */
11.Операции отношения, логические операции.
Операции отношения.
== - равно или эквивалентно;
!= - не равно;
< - меньше;
<= - меньше либо равно;
> - больше;
>= - больше либо равно.
Пары символов соответствующих операций разделять нельзя.
Общий вид операций отношений:
<выражение1> <знак_операции> <выражение2>
Общие правила:
- операндами могут быть любые базовые (скалярные) типы;
значения операндов перед сравнением преобразуются к одному типу;
- результат операции отношения - целое значение 1, если отношение истинно, или 0 в противном случае. Следовательно, операция отношения может использоваться в любых арифметических выражениях.
Логические операции:
Перечень логических операций в порядке убывания относительного приоритета и их обозначения:
! - отрицание (логическое НЕТ);
&& - коньюнкция (логическое И);
|| - дизьюнкция (логическое ИЛИ).
Общий вид операции отрицания:
!<выражение>
Общий вид операций коньюнкции и дизьюнкции
<выражение1> <знак_операции> <выражение2>
Например:
y>0 && x==7 истина, если 1-е и 2-е выражения истинны;
e>0 || x==7 истина, если хотя бы одно выражение истинно.
Ненулевое значение операнда трактуется как "истина", а нулевое - "ложь".
Например:
!0 1
!5 0
x=10;y=10;
!((x==y)>0)0
Пример правильной записи двойного неравенства:
0<x<100 → (0<x)&&(x<100)
Особенность операций коньюнкции и дизьюнкции – экономное последовательное вычисление выражений-операндов:
<выражение1> <операция><выражение2>,
- если выражение1 операции коньюнкция ложно, то результат операции - ноль и выражение2 может не вычисляться;
- если выражение1 операции дизьюнкция истинно, то результат операции - единица и выражение2 может не вычисляться.
Таким образом, появляется возможность записью логического выражения задать условную последовательность вычисления выражений в направлении слева направо:
scanf("%d",&i) && test1(i) && test2(i) нулевой результат одной из функций может привести к игнорированию вызова остальных;
search1(x) || search2(x) || search3(x) только ненулевой результат одной из функций может привести к игнорированию вызова остальных.
Действительно ли "ненужные" функции не будут вызываться - зависит от настроек компилятора.
12.Операции присваивания.
Формат операции присваивания:
Операнд_1 = Операнд_2
Операндом_1 может быть только переменная. Этот (левый) операнд операции присваивания получил название L–значение, (L–value, Left–value). Операндом_2 может быть любое выражение, составленное в соответствии с синтаксисом языка Си. Этот (правый) операнд операции присваивания назвали R–значение, (R–value, Right–value).
Операция присваивания может быть как отдельным оператором (тогда после нее ставится знак ; ), так и частью другого выражения (тогда ее результатом считается присвоенное значение). Если в выражении подряд без скобок идут несколько операций = , то они выполняются справа налево, например: