- •Оглавление
- •Билет 1: Понятия о структурном программировании
- •Билет 2: Моделирование стандартных управляющих структур
- •Билет 3: структура программы
- •Билет 4: организация (структура) модуля
- •Билет 5: Переменные
- •Билет 6: Система типов языка
- •Билет 7: Арифметические типы языка c
- •Билет 8: Константы
- •Билет 9: КонстантныеобъектывязыкеСи.
- •Билет 10: Константные объекты
- •Билет 11. Переменные, понятие об объекте, lvalue и rvalue выражения.
- •Билет 12. Время жизни переменных.
- •Билет 15. Операторы. Приоритет и ассоциативность операторов.
- •Билет 19: Побочные эффекты в языке Си.
- •Билет 20: Организация функций. Определение функций
- •Билет 25: Инструкция If…else. Программирование разветвлений.
- •Билет 26: Инструкция switch и организация разветвленных алгоритмов.
- •Билет 27: Циклические алгоритмы, классификация, функциональная схема
- •Билет 28: Циклические инструкции.
- •Билет 29: инструкция for и арифметические циклы
- •Билет 30: Инструкция while и do...While, интерационные циклы
- •Билет 31: Циклы с выходом. Бесконечные циклы
- •Билет 32. Организация вложенных циклов
- •Билет 33: Массивы. Определение и инициализация одномерных массивов
- •Билет 34. Массивы. Определение и инициализация двумерных массивов
- •Билет 35. Связь указателей и массивов
- •Билет 40. Указатели. Определение типизированных и нетипизированых указателей. Модель, используемая при работе с указателями. Операции с указателями.
- •Билет 41: Операции с указателями
- •Билет 42. Использование указателей для возврата из функции через параметры
- •Билет 43. Указатели на функцию. Определение. Операции. Использование в параметрах функции
- •Билет 44. Типичные ошибки при работе с массивами
- •Билет 45. Массив указателей, динамическая матрица
- •Билет 46. Понятие некорректного указателя.
- •Билет 47. Организация строк. Общие сведения
- •Билет 48. Ввод/вывод строк
- •Void funk(“Kozin”); - при этом ничего не возвращается. Данная запись используется довольно редко.
- •Билет 52. Организация динамического одномерного массива
- •Билет 53. Структуры. Определение типа структур. Определение переменных в структуре и инициализация. Операции со структурой
- •Билет 54. Обращение к полям структуры. Массивы структур
- •Билет 55. Использование структур при работе с функциями. Указатели на структуры
- •Билет 58: Файловый ввод-вывод. Символьный ввод-вывод в языке Си.
- •Синтаксис преобразования вывода
- •Билет 60: Файловый ввод-вывод. Строковый ввод-вывод в языке Си.
- •Билет 61: Файловый ввод-вывод. Блоковый ввод-вывод в языке Си.
- •Int fseek(file *f, long int колич_байт, int начало_отсчета);
Билет 19: Побочные эффекты в языке Си.
Операции присваивания в сложных выражениях могут вызывать побочные эффекты, так как они изменяют значение переменной. Побочный эффект может возникать и при вызове функции, если он содержит прямое или косвенное присваивание (через указатель). Это связано с тем, что аргументы функции могут вычисляться в любом порядке. Например, побочный эффект имеет место в следующем вызове функции: prog (a,a=k*2); В зависимости от того, какой аргумент вычисляется первым, в функцию могут быть переданы различные значения. Порядок вычисления операндов некоторых операций зависит от реализации и поэтому могут возникать разные побочные эффекты, если в одном из операндов используется операции увеличения или уменьшения, а также другие операции присваивания. Например, выражение i*j+(j++)+(--i) может принимать различные значения при обработке разными компиляторами. Чтобы избежать недоразумений при выполнении побочных эффектов необходимо придерживаться следующих правил. 1. Не использовать операции присваивания переменной в вызове функции, если эта переменная участвует в формировании других аргументов функции. 2. Не использовать операции присваивания переменной в выражении, если эта переменная используется в выражении более одного раза.
Билет 20: Организация функций. Определение функций
В языке С существует несколько понятий относительно функций:
Определение функции
Объявление функции
Вызов функции
Основным компонентом является определение функции. Оно содержит реализацию алгоритма, должно быть единственным и записываться в *.c.
Структура определения:
Заголовок – реализация интерфейса между функцией и внешним кодом
Тело – непосредственно реализация алгоритма
Заголовок состоит из нескольких частей: тип возвращаемого значения, имя функции, список формальных параметров. Возвращаемое значение передается функции-родителю через return. Имя функции служит непосредственно для вызова, список формальных параметров для передачи в функцию необходимых значений.
Пример: double pow(double a, double b) { ТЕЛО }
Наверное, стоит дописать: здесь double – тип возвращаемого функцией значения, pow – имя функции, используемое при вызове функции, double a, double b – параметры функции. Также стоит отметить, что если тип возвращаемого значения void, то в теле функции не должно быть return.
Билет 21: Вызов и прототип функций
Объявление функции служит для 2 целей:
Позволяет выполнить корректную компиляцию вызова (что такое «корректная компиляция вызова»?)
Позволяет написать корректный вызов функции (не покидает ощущение, что это как-то не корректно сформулировано)
Объявление функции также называют прототипом функции. Для их хранения существуют заголовочные файлы (*.h).
Пример: double pow(double a, double b);
Вызов функции:
Список аргументов имеет синтаксис выражений. Аргументы и параметры должны быть согласованы по количеству и типу.
Пример: pow(10, 2);
Билет 22: Передача параметров в функциях
Параметры имеют статус локальных переменных (память выделяется в стеке, по завершению работы функции освобождается).
Способы передачи параметров:
По значению
По ссылке (указателю, адресу)
Можно сказать, что второй пункт является частью первого, так как передача по указателю так же является передачей по значению (адрес переменной). Но так как принцип работы с указателем отличается от работы с переменной, эти 2 типа стоит различать.
Стоит отметить, что передача через указатель также позволяет функции возвращать результаты своей работы через этот указатель. Когда вы передаёте данные по значению, связь между той переменной, значение которой вы передали, и самой функции обрывается, и функция НИКАК не сможет изменить значения той переменной. С указателями на переменную, связь между функцией и переменной остаётся.
Билет 23. Инструкции. Общие сведения.
Выражение – инструкция.
Любое выражение превращается в инструкцию, если после выражения поставить «;».
«х = 4» - выражение
« х = 4;» - инструкция
Составная инструкция.
Назначение: группировка отдельных инструкций.
Формат:
{
<инструкция 1>
<…>
<инструкция n>
}
Применяется она, когда синтаксис языка допускает наличие только одной инструкции, а тебе нужно поставить несколько.
Блок – частный случай составной инструкции.
Пустая инструкция «;»
Билет 24. Инструкции перехода.
Break, continue, return, go to
Break – прерываниецикла (инструкций for, while, do while)
Управление передаётся на 1ю инструкцию, которая стоит за телом цикла. Зе=здесь не указано, что является 1й инструкции цикла. Я сам точно не помню, но знаю, что n++ написанная в скобках – тоже инструкция цикла. Является она первой? Если да, то это необходимо отметить.
For (i = 0; i <= n; n++)
{
<телоцикла>
If (x<0)
Break
<другие действия> }
<1 ая инструкция вне тела цикла>
// на неё передаст управление инструкция break
Continue – продолжает цикл, но завершает текущий шаг цикла.
For (i=1; i<=10; i++)
{
If (i<=5 && i>=2)
Continue
Printf (“%d\n”, i);
}
// при таком исполнении программа не будет выводить числа от 2 до 2 на экран, так как continue передаст управление на след шаг цикла перепрыгивая функцию printf
Return – две задачи:
Сформировать результат, который вернёт функция
Завершить работу тела функции (в функциях с возвращаемым типом void нельзя писать return, и наоборот, в функциях с возвращаемым типом не void НЕОБХОДИМО писать return).
Я думаю здесь пример не нужен, так как он довольно громоздкий, а смысл return, надеюсь, и без того всем понятен.
Double sqrt_sum_sqr (double a, double b)
{
Return sqrt (a*a + b*b);
}
Int main (void)
{ printf (“%0.4g\n”, sqrt_sum_sqr(3, 4)); }
4) Go to
go to <a>, где <a> - метка инструкции к которой будет выполняться переход
if (x<0)
go to error;
<другие инструкции>
Error : printf (“ошибка!”) ;