Теория для зачёта (Teoria_po_C)

Посмотреть архив целиком

Список вопросов:



1. Алфавит С++, объекты, характеристики, идентификаторы.
2. Типы, размер в байтах, экстремальные значения.
3. Константы.
4. Описание переменных.
5. Инициализация. Выражения.
6. Порядок, приоритет и правила вычислений. Преобразование типов.
7. Арифметические операции. Особенности использования операций ++ и --.
8. Логические операции и отношения.
9. Побитовые операции.
10. Операции присваивания и их виды.
11. Понятие блока. Операторы return, goto, метки.
12. Условный оператор if.
13. Оператор цикла while и do ... while.
14. Оператор цикла for.
15. Оператор-переключатель switch. Сравнение с Паскалем.
16. Роль и особенности использования управляющих операторов break и continue.
17. Функции форматного вывода: printf, fprintf, sprintf.
18. Спецификации преобразования данных при вводе/выводе.
19. Функции форматного ввода: scanf, fscanf, sscanf.
20. Функции ввода/вывода литер и строк. Управляющие символы.
21. Функции обработки строк.



  1. Алфавит Си, объекты, характеристики, идентификаторы.


Программа на Си, каких бы размеров она ни была, состоит из функций и переменных. Функции содержат инструкции, описывающие вычисления, которые необходимо выполнить, а переменные хранят значения, используемые в процессе этих вычислений. Функции Си похожи на подпрограммы и функции Фортрана или на процедуры и функции Паскаля. Можно придумывать любые имена для функций, но “main” – особое имя: любая программа начинает свои вычисления с первой инструкции функции main.

Пример программы

#include <stdio.h>

Main()

{

Printf(“Привет Ритчи\n”);

}

Обычно main для выполнения своей работы пользуется услугами других функций.

Первая строка в приведенной программе сообщает компилятору, что он должен включить информацию о стандартной библиотеке.

Один из способов передачи данных между функциями состоит в том, что функция при обращении к другой функции передает ей список значений, называемых аргументами. Этот способ берется в скобки и помещается после имени функции.

Индетификатор – это последовательность букв и цифр. Первым символом должна быть буква; знак подчеркивания считается буквой. Буквы нижнего и верхнего регистра отличаются. Индетификаторы могут иметь любую длину; для внутренних индетификаторов значимыми являются первые 31 символ;

Так же есть зарезервированные Индетификаторы:

Auto char default else do enum и т.д.

Идентификаторы, или имена, ссылаются на разные объекты: функции; теги структур, объединений и перечислений; элементы структур или объединений; typedef- имена; метки и объекты. Объектом(называемым иногда переменной) является часть памяти, интерпретация которой зависит от двух главных характеристик: класс памяти или ее типа. Класс памяти сообщает о времени жизни памяти, связанной с идентифицируемым объектом; тип определяет, какого рода значения находятся в объекте. С любым именем ассоциируются своя область видимости ( т.е. тот участок программы, где это имя известно) и атрибут связи, определяющий, обозначает ли это имя в другом файле тот же самый объект или функцию.

Объекты и Lvalues.

Объект – это некоторая именованная область памяти; lvalue - это выражение, обозначающее объект. Очевидным примером lvalue является идентификатор с соответствующим типом и классом памяти. Существуют операции, порождающие lvalue. Например, если E – выражение типа указатель, то *E есть выражение для lvalue, обозначающего объект, на который указывает E. Термин “lvalue” произошел от записи присваивания E1=E2, в которой левый (left –левый, отсюда буква l, value – значение) операнд должен быть выражением lvalue. Описывая каждый оператор, мы сообщаем, ожидает ли он lvalue в качестве операндов и выдает ли lvalue в качестве результата.


  1. Типы, размер в байтах, экстремальные значения.


В Си существует всего лишь несколько базовых типов:

char – единичный байт, который может содержать один символ из допустимого символьного набора.

Int – целое, обычно отражающее естественное представление целых в машине.

Float – число с плавающей точкой одинарной точности.

Double – число с плавающей точкой двойной точности.

Имеются также несколько квалификаторов, которые можно использовать вместе с указанными базовыми типами. Например, квалификаторы shot и long применяются к целым числам:

Shot int sh;

Long int counter;

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

Для указания особых свойств объявляемых объектов предназначаются квалификаторы. Объявление объекта с квалификатором const указывает на то, что его значение далее не будет изменяться; объявляя объект как volatile(изменчивый), тем саамы указываем на его особые свойства для выполняемой компилятором оптимизации. Ни один из квалификаторов на диапазоны значений и арифметические свойства объектов не влияет.

Если только не возникает противоречий со здравым смыслом, shot int и long int должны быть разной длины, а int соответствовать естественному размеру целых на данной машине. Чаще всего представления целого, описанного с квалификатором shot, отводится 16 битов, а с квалификатором long – 32 бита, а значению типа int – или 16, или 32 бита. Разработчики компилятора вправе сами выбрать подходящие размеры, сообразуясь с характеристиками своего компьютера и соблюдая следующие ограничения: значения типов shot и int представляются по крайне мере 16 битами; тип long – по крайней мере 32 битами; размер shot не больше размера Int, который в свою очередб не больше размера long.


Квалификаторы signed(со знаком) или unsigned (без знака) можно применять к типу char и любому целочисленному типу. Значения unsigned всегда положительны или равны нулю и подчиняются законам арифметики по модулю 2n, где n- количество битов в представлении типа. Так, если значению char отводится 8 битов, то unsigned char имеет значения в диапазоне от 2 до 255, а signed char – от -128 lj 127.

Тип long double предназначен для арифметики с плавающей точкой повышенной точности. Как и в случае целых, размеры объектов с плавающей очной зависят от реализации; float, double и long double могут представляться одним размером, а могут – двумя или тремя разными размерами.

Именованные константы для всех размеров вместе с другими характеристиками машины и компилятора содержаться в стандартных заголовочных файлах <limit.h> и <float.h>.

Помимо базовых типов существует практически бесконечный класс производных типов, которые формируются из уже существующих и описывают следующие конструкции:

  • массивы объектов заданного типа;

  • функции, возвращающие объекты заданного типа;

  • указатели на объекты заданного типа;

  • структуры, содержащие последовательность объектов, возможно, различных заданных типов;

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


  1. Константы.

Существует несколько видов констант:

Целая - константа

Символьная – константа

Константа- с – плавающей – точкой

Константа – перечисление

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

#define имя подставляемый текст

С этого момента при любом появлении имени оно будет заменяться на соответствующий ему подставляемый текст.


  • Целая константа

Целая константа, состоящая из последовательности цифр, воспринимается как восьмеричная, если она начинается с 0, и как десятичная в противном случае. Последовательность цифр, перед которой стоят 0х или 0Х, рассматривается как шестнадцатеричное целое.

Целая константа может быть записана с буквой-суффиксом u (или U) для спецификации ее как безнаковой константы. Она также может быть с буквой-суффиксом l (или L) для указания, что она имеет тип long.

Тип целой константы зависит от ее вида, значения и суффикса. Если константа – десятичная и не имеет суффикса, то она принимает первый из следующих типов, который годится для представления ее значения: int, long int, unsigned long int. Восьмеричная или шестнадцатеричная константа без суффикса принимает первый возможный из типов: int, unsigned int, long int, unsigned long int. Если константа имеет суффикс u или U , то она принимает первый возможный из типов: unsigned int, unsigned long int. Если константа имеет суффикс l или L, то она принимает первый возможный из типов: long int, unsigned long int. Если константа имеет суффикс ul или UL, то она принимает тип unsigned long int.

Примеры:

Целая константа 1234 имеет тип Int. Константа типа long завершается буквой l или L, например 123456789L;слишком большое целое, которое невозможно представить как int, будет представлено как long.

#define YES 1


  • Символьная константа

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

Новая строка NL \n

Обратная наклонная черта \ \\

Кроме того, произвольный восьмеричный код можно задать в виде ‘\ooo’, где ooo – одна, две или три восьмеричные цифры или ‘\хhh’ , где hh – одна, две или более шестнадцатеричные цифрыю

#define VTAB ‘013’ /*вертикальная табуляция */

Или в шестнадцатеричном виде:

#define VTAB ‘\xb

Символьная константа ‘\0’ – это символ с нулевым значением, так называемый символ null.

Строковая константа или строковой литерал – это нуль или более символов, заключенных в двойные кавычки, например,

“Я строковая константа”

Или

“”

Кавычки не входят в строку, а служат только ее ограничителями. Так же, как и в символьные константы, в строки можно включать эскейп-последовательности; \” – представляет из себя двойную кавычку. Фактически строковая константа – это массив символов. Во внутреннем представлении строки в конце обязательно присутствует нулевой символ ‘\0’, поэтому памяти для строки требуется на один байт больше, чем число символов заключенных в кавычки.


Случайные файлы

Файл
68943.rtf
23651.rtf
36550.rtf
138123.rtf
9552-1.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.