- •2.Понятие формального алгоритма. Тезис Тьюринга - Черча об эквивалентности различных определений вычислимости. Абстрактная машина фон Неймана. Понятие об элементарном исполнителе. 2 часа
- •3. Основные этапы решения задач на эвм: математическая постановка; алгоритм; программа; отладка и тестирование; сдача в эксплуатацию. 1 час
- •4. Критерии качества программы (надежность, эффективность, модифицируемость, возможность многократного использования, стиль программирования). 1 час.
- •5. Диалоговые программы, дружественность (интерфейс человек–компьютер, процессы ввода–вывода, структура диалога, поддержка пользователя). 1 час.
- •7. Постановка задачи и спецификация программы (представление в виде спецификации ввода–вывода; особенности спецификации для завершающихся и циклических программ); способы записи алгоритма. 1 час
- •9. Программа на языке высокого уровня. Язык программирования Си.
- •Элементы языка си
- •Алфавит
- •Буквы и цифры
- •Пробельные символы
- •Разделители
- •Специальные символы
- •Операции
- •Константы
- •Целые константы
- •Константы с плавающей точкой
- •Символьные константы
- •Символьные строки
- •Идентификаторы
- •Ключевые слова
- •Комментарии
- •Структура программы Исходная программа
- •Исходные файлы
- •Выполнение программы
- •Время жизни и область действия
- •Области значений
- •Операторы
- •Оператор выражение
- •Пустой оператор
- •Составной оператор
- •Оператор if
- •Оператор switch
- •Оператор break
- •Оператор for
- •Оператор while
- •Оператор do while
- •Оператор continue
- •Оператор return
- •Оператор goto
- •Категории типов данных
- •Объединения (смеси)
- •Методы организации и хранения линейных списков
- •Операции со списками при последовательном хранении
- •Операции со списками при связном хранении
- •Организация двусвязных списков
- •Стеки и очереди
- •Сжатое и индексное хранение линейных списков
Операции
Операции — это комбинации символов, специфицирующие действия по преобразованию значений. Компилятор языка Си интерпретирует каждую из этих комбинаций как самостоятельную лексему.
В таблице 1.3. представлен список операций. Операции должны использоваться точно так, как они представлены в таблице,' без пробельных символов между символами в тех операциях, которые представлены несколькими символами.
Операция sizeof не включена в эту таблицу, поскольку задается ключевым словом, а не символом.
Таблица 1.3.
Операция |
Наименование |
! |
Логическое НЕ |
~ |
Обратный код |
+ |
Сложение; унарный плюс |
- |
Вычитание; унарный минус |
* |
Умножение; косвенная адресация |
/ |
Деление |
% |
Остаток от деления |
<< |
Сдвиг влево |
>> |
Сдвиг вправо |
< |
Меньше |
<= |
Меньше или равно |
> |
Больше |
>= |
Больше или равно |
== |
Равно |
!= |
Не равно |
& |
Поразрядное И; адресация |
| |
Поразрядное включающее ИЛИ |
^ |
Поразрядное исключающее ИЛИ |
&& |
Логическое И |
|| |
Логическое ИЛИ |
?: |
Условная операция |
++ |
Инкремент |
-- |
Декремент |
= |
Простое присваивание |
+= |
Присваивание со сложением |
-= |
Присваивание с вычитанием |
*= |
Присваивание с умножением |
/= |
Присваивание с делением |
%= |
Присваивание с остатком от деления |
>>= |
Присваивание со сдвигом вправо |
<<= |
Присваивание со сдвигом влево |
&= |
Присваивание с поразрядным И |
|= |
Присваивание с поразрядным включающим ИЛИ |
^= |
Присваивание с поразрядным исключающим ИЛИ |
Примечание. Условная операция ?: является не двухсимвольной, а тернарной (трехоперандной) операцией. Она имеет следующий формат: <операнд1> ? <операнд2> : <операнд3>
Константы
Константа — это число, символ или строка символов. Константы используются в программе для задания постоянных величин. В языке Си различают четыре типа констант: целые, с плавающей точкой, символьные константы и символьные строки.
Целые константы
Целая константа — это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целое значение. Десятичная константа имеет следующий формат представления:
<цифры>
<цифры> — последовательность из одной или более десятичных цифр от 0 до 9.
Восьмеричная константа имеет следующий формат представления:
<в-цифры>
<в-цифры>—это одна или более восьмеричных цифр от 0 до 7. Запись нуля впереди обязательна.
Шестнадцатеричная константа имеет следующий формат представления:
0х<ш-цифры> или 0Х<ш-цифры>
<ш-цифры> —одна или более шестнадцатеричных цифр. Шестнадцатеричная цифра может быть цифрой от 0 до 9 или буквой (большой или малой) от А до F. Допускается "смесь" больших и малых букв. Запись нуля впереди и следующего за ним символа х или Х обязательна.
Между цифрами целой константы пробельные символы недопустимы. В таблице 1.4 приведены примеры целых констант. Константы, записанные в одной строке таблицы, используются для представления одного и того же значения.
Таблица 1.4.
Десятичные константы 10, 132, 32179
Восьмеричные константы 012, 0204, 076663
Шестнадцатеричные константы 0ха или 0хА, 0х84, 0x7dB3 или 0x7DB3
Целые константы всегда специфицируют положительные значения. Если требуется отрицательное значение, то необходимо сформировать константное выражение из знака минус и следующей за ним константы. Знак минус рассматривается при этом как арифметическая операция.
Каждая целая константа имеет тип, определяющий ее представление в памяти (описание типов приведено в разделе 3.1 "Базовые типы данных"). Десятичные константы могут иметь тип int (целый тип) или long (длинный целый тип).
Восьмеричные и шестнадцатеричные константы в зависимости от размера могут иметь тип int, unsigned int, long или unsigned long. Если константа может быть представлена типом int, то компилятор языка Си присваивает ей тип int. Если ее значение больше, чем максимальное положительное значение, которое может быть представлено типом int, но может быть представлено тем же числом битов, что и int, ей присваивается тип unsigned int. Наконец, константа, значение которой больше, чем максимальное значение, представляемое типом unsigned int, задается типом long или, если размер этого типа также оказывается недостаточен, типом unsigned long. В таблице 1.5 показаны диапазоны значений констант различных типов для компьютера, на котором тип int имеет длину 16 битов и тип long имеет длину 32 бита.
Таблица1.5.
Десятичные константы |
Восьмеричные константы |
Шестнадцатеричные константы |
Тип |
0—32767 |
0—077777 |
0х0—0x7FFF |
int |
|
0100000—0177777 |
0х8000—0xFFFF |
unsigned int |
32767—2147483647 |
02000001—017777777777 |
0х10000—0x7FFFFFFF |
long |
|
020000000000—030000000000 |
0х80000000—0xFFFFFFFF |
unsigned long |
Из рассмотренных правил следует, что при преобразовании восьмеричных и шестнадцатеричных констант к более длинным типам не производится расширения знака (поскольку старший, знаковый бит всегда равен нулю).
Программист может явно определить для любой целой константы тип long, записав букву "l" или "L" в конец константы. Это позволяет расширить нижнюю границу диапазона значений констант любого типа до нуля. Например, константа со значением 10 будет иметь тип long только в том случае, если она будет записана с суффиксом L, т. е. 10L. В таблице 1.6 приведены примеры длинных целых констант.
Таблица 1.6.
Десятичные константы |
Восьмеричные константы |
Шестнадцатеричные константы |
12L |
012L |
0xaL или 0xAL |
0l |
0115l |
0х4fl или 0x4Fl |
В СП ТС реализован также суффикс U (или u), означающий, что константа имеет тип unsigned. Можно использовать одновременно оба суффикса — L и U — для одной и той же константы. Кроме того, в СП ТС константе присваивается тип unsigned long, если ее значение превышает 65535, независимо от наличия или отсутствия суффикса U (в СП MSC в этом случае константе был бы присвоен тип long).