ВВЕДЕНИЕ В СИ
Пример
Вывод: Пробелы употреблять везде, где это допустимо и улучшает читабельность программы.
Знаки разрядки (пустые символы).
В языке СИ пустыми символами являются: пробел, табуляция (Tab), переход на новую строку ß (Enter)
Используются везде, но не внутри идентификаторов и знаков составных операций. Машина их игнорирует. Строки программы можно начинать в любой позиции. Плюсы: наглядность, хорошая читаемость, возможность выделять группы инструкций языка.
· Размещение операторов. 1 оператор (кроме сложных) в строку.
Причины:
- соответствует требованиям структурного программирования, требующим сдвигать оператор по строке в соответствии с уровнем его вложенности;
- облегчает коррекцию.
· Перенос.
- если слово не входит в строку, начинайте его с новой строки;
- делайте перенос после знака операции;
- при переносе оператора строки продолжения сдвигать на 5…6 позиций.
Пример:
a = b – c ßHехорошо! a = b – c – ßХорошо!
– (d+2); (d+2);
· Отступы – это абзац, выявление структуры программы.
Пример: Циклы
пока ( условие_1 )
действие_1-1;
пока ( условие_2)
действие_2-1;
действие_2-2;
конец пока
действие_1-2;
конец пока
Условные операторы
если ( условие ) то
действие_1;
действие_2;
иначе
действие_3;
действие_4;
· Пропуск строк и пробелы обеспечивают уникальную разрядку текста. Применение:
– выделение логических частей текста (процедур, блоков);
– после нарушения естественного порядка выполнения операторов
(continue, break, goto);
– выделение комментариев.
– выявление структуры программы.
Пример:
if ( a<b && b<c ) {
1.3 Комментарии
Цель – пояснить логику, облегчить отладку, тестирование и сопровождение программ.
Комментарий должен учитывать уровень возможных читателей текста программы (кроме автора, конечно).
Когда писать? По возможности одновременно с текстом программы. После написания текста процедуры прочтите его и во всех местах, где, по вашему мнению, возможен вопрос, прокомментируйте. Принцип: программа должна быть понятна без привлечения дополнительной документации.
Комментарии должны представлять собой правильное предложение без сокращений слов и без орфографических ошибок.
Формат /* <произвольный текст> */
ЗАМЕЧАНИЕ <...> в описании правил записи (формата) конструкций языка означают понятие языка, в программе не записываются.
Пример /* Это предложение – комментарий! */
Внимание!!! Нет необходимости комментировать ключевые слова и стандартные действия!
for ( k=0, k<10, k += 0.1 ) /* Цикл по параметру к */ ß Неверно!
long sum, m; /* Описание переменных */ ß Неверно!
/* сумма элементов массива,
наименьший элемент массива */ ß Верно!
Глава 2 ЭЛЕМЕНТЫ ДАННЫХ
ДАННЫЕ – это значения, которые могут задаваться объектам программы и использоваться при ее выполнении.
По организации различают скаляры (одиночные значения): переменные, константы и указатели, и совокупности: массивы, структуры и файлы.
Элемент данных имеет тип и изображение. ТИП – множество допустимых значений элемента данных и множество операций над ними. Элементом данных какого-либо типа является переменная или константа.
2.1 Константы
Константами называют неизменяемые величины. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду, т.е. тип константы определяется ее изображением. (Программист может задать тип константы самостоятельно, но это будет не совсем константа!)
Тип константы | Формат | Размер | Примеры |
Целая | Десятичный: последовательность десятичных цифр, начинающаяся не с нуля, если это число не ноль. | 2(4) | 8, 0, 2345 |
Восьмеричный: нуль, за которым следуют восьмеричные цифры (0,1,2,3,4,5,6,7) | 2(4) | 01, 00, 066, 07654 | |
Шестнадцатеричный: 0х или 0Х, за которым следуют шестнадцатеричные цифры (0,1,2,3,4,5,6,7, 8,9, A, B, C, D, E, F) | 2(4) | 0xA3, 0x1B5, 0X0FF, 0x12345 |
Тип константы | Формат | Размер | Примеры |
Вещественная | Десятичный: [ цифры ] . [ цифры ] могут быть опущены либо целая, либо дробная части, но не обе сразу . | 8.8146 0.567, 23. | |
Экспоненциальный: [ цифры ].[ цифры ]{E|e}[цифры] могут быть опущены либо целая, либо дробная части, но не обе сразу. Если указаны обе части символ точки обязателен. | 0.1E7, 0.1e+7 0.1E–7 .11e–7 1E10 |
Тип константы | Формат | Размер | Примеры |
Символьная | Один символ, заключенный в апострофы | ‘A’, ‘a’, ‘*’, ‘ ’ | |
Два символа, заключенных в апострофы Первый символ размещается в байте с меньшим адресом. | ‘\n’, ‘\a’, ‘\012’, ‘\’’ |
Символ косой обратной черты используют для представления:
a управляющих последовательностей символов, не имеющих графического изображения;
a символов: ' , \ , ? , “ ;
a любого символа с помощью его шестнадцатеричного или восьмеричного кода. Числовое значение должно находиться в диапазоне от 0 до 255.
Пустая символьная константа не допустима.
Тип константы | Формат | Размер | Примеры |
Строковая | последовательность символов, заключенная в кавычки | кол-во символов+ +1 байт | “Ура!” “\t Значение R=\0xF5 \n” |
В конец каждой строковой константы компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0. Поэтому длина строки всегда на 1 больше количества символов в ней. Поэтому пустая строка имеет длину в 1 байт!
Обратите внимание на разницу между строкой символов “A” и символом 'A'.
Управляющие последовательности могут встречаться и в строковых константах.
Например:
“Челябинский завод \“ Теплоприбор \” ”
Длинную строковую константу можно разместить на нескольких строках, используя в качестве знака переноса обратную косую черту, за которой сразу следует перевод строки.
Например:
“ Это очень длинная, длинная, \
длинная, длинная, \
длинная строка”
2.2 Переменные
Тип константы определяется ее изображением. Для переменной необходима специальная конструкция языка – ОПИСАНИЕ.
ВСЕ ПЕРЕМЕННЫЕ В ЯЗЫКЕ Си ДОЛЖНЫ БЫТЬ ОБЪЯВЛЕНЫ! Любители Бейсика, забудьте о том, чтобы использовать большую кучу переменных без объявления! В принципе, объявлять переменные до их использования – это просто правило хорошего тона. Кроме того, оно позволяет компилятору разделить типы, переменные и функции.В языке различают понятия описания переменной и ее определения (объявления). Описание устанавливает свойства объекта: его шаг (целый), размер (4 байта). Объявление наряду с этим вызывает выделение памяти.
Формат:
<описание>:= [модификатор_типа] <тип_переменной> <список> <список>:= <имя_переменной> [= начальное значение, …, имя_переменной [= начальное_значение]... ];ВНИМАНИЕ! Все переменные должны быть описаны до их использования (по описаниям выделяется память для них).