Представление информации в языке Си: имена, типы данных, переменные и константы, массивы и строки

Имена переменных или констант могут состоять из букв латинского алфавита, цифр и символа подчеркивания ( _ ), который считается буквой. Первый символ имени обязательно должен быть буквой или символом подчеркивания. Строчные и заглавные буквы различаются, т. е. Beta, beta и BETA – это различные имена. Число символов в имени не ограничено, но значимыми (для компилятора) являются только первые 32 символа. Остальные символы имени игнорируются. Для удобства чтения программ рекомендуется в качестве имен переменных использовать только строчные буквы. Символ подчеркивания обычно используется для разделения слов, чтобы сделать имя более понятным, например, city_tax вместо citytax.

В качестве имен переменных и констант нельзя использовать зарезервированные в Си слова (ключевые слова), например: if , else, for, const, char и т.д.

Простые типы данных. В Си можно использовать различные типы данных для представления хранимой и обрабатываемой информации. Все типы можно разбить на две группы: целые и с плавающей точкой. Данные каждого типа занимают определенное количество байт памяти и могут принимать значения в известном диапазоне. Наиболее часто в программах на языке mikroC применяются следующие типы:

char – однобайтное целое без знака, диапазон чисел (десятичный формат) от 0 до 255;

signed char – однобайтное целое со знаком, диапазон чисел от -128 до 127;

int – двухбайтное целое со знаком, диапазон от -32768 до 32767;

unsigned int – двухбайтное целое без знака, диапазон от 0 до 65535;

long – четырехбайтное целое со знаком, диапазон от -2147483648 до 2147483647;

unsigned long – четырехбайтное целое без знака, диапазон от 0 до 42949667295;

float – четырехбайтное число в формате с плавающей точкой.

Основные объекты, с которыми работает программа на языке Си – переменные и константы

Константы. Термин константа, в общем случае, относится к значению, которое не может быть изменено в ходе выполнения программы. В языке mikroC константы могут быть строковыми, символьными, целыми и вещественными (с плавающей точкой). Табл. 1 описывает форматы, соответствующие каждому виду констант.

Таблица 1

Константа Формат Примеры
символьная Символ, заключенный в апострофы ‘A’ , ’!’
целая Десятичный: последовательность цифр, не начинающаяся с нуля Шестнадцатеричный: префикс 0x, за которым следуют шестнадцатеричные цифры Двоичный: префикс 0b, за которым следуют двоичные цифры   23 , 69 , 789   0x57 , 0xA5   0b10101010
вещественная Десятичный: [цифры].[ цифры ] Экспоненциальный: [цифры]Е(е)+(-)[цифры ] 1. , 2.54 5е6, 2.3Е-8, 5.67е-5
строковая Символы, заключенные в кавычки “hello”

Переменные. Чтобы выделить память для данных конкретного типа, нужно определить (объявить) переменную. Сначала указывается тип данных, а затем имя переменной, как указано ниже:

int i; // объявление целой двухбайтовой переменной со знаком

char counter; // объявление однобайтной беззнаковой переменной

Объявляя (определяя) переменную, можно присвоить ей начальное значение. Можно также определить несколько переменных одного типа, перечисляя их через запятую:

char counter = 0;

float num1 = 12.34, num2 = 56.78, num3;

Для объявления констант необходимо использовать ключевое слово const. Также рекомендуется имена констант записывать заглавными буквами. Константам следует присвоить значение при объявлении. Например:

const int DAYS_IN_WEEK = 7;

const char CLIENT = “Ivanov”;

Массивы и строки

Многие программы требуют использования многочисленных данных, которые имеют одинаковые характеристики. В таких случаях удобно поместить данные в массив, где они получат одно и то же имя. Формат объявления массива:

тип_данных имя_массива[количество_элементов];

Количество элементов в массиве называют также размерностью массива.

Например:

char array[5]; // массив из 5 целых однобайтных чисел

Доступ к элементам массива реализуется с помощью индекса – порядкового номера элемента, начинающегося с 0.

Так, в рассматриваемом примере array[0] является 1-м элементом массива, а array[4] – это последний 5-й элемент массива.

Массив хранится в памяти в последовательных ячейках следующим образом:

Адрес Содержимое

0x100 array[0]
0x101 array[1]
0x102 array[2]
0x103 array[3]
0x104 array[4]

Данные могут быть записаны в массив путем указания имени массива и индекса. Например, для записи числа 25 во второй элемент массива мы должны записать:

array[1] = 25;

Похожим образом содержимое массива может быть прочитано с указанием имени массива и его индекса. Например, для копирования третьего элемента массива в переменную vrem мы должны записать:

char vrem;

…………….

vrem = array[2];

Содержимое массива может быть инициализировано во время объявления массива. Например:

int digits[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

При инициализации массива можно его объявлять без указания его размера:

int digits[ ] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

Компилятор сам определит размерность массива по количеству его элементов.

В mikroC (как и в стандартном Си) могут использоваться многомерные массивы. Многомерный массив – это множество одномерных массивов.

Двумерный массив объявляется следующим образом:

тип_данных имя_массива[размер_1] [размер_2];

Здесь размер_1 – это число строк, а размер_2 – это число столбцов.

Например:

int mas[10] [2]; // двумерный массив 10 × 2

Двумерный массив обычно называют матрицей, а одномерный – вектором.

В языке mikroC (как и в стандартном Си) отсутствует строковый тип данных. Вместо этого используется массив, состоящий из символов в коде ASCII. Конечным элементом такого массива является нулевой символ, обозначаемый как ‘\0’. Иногда этот символ называют нуль-терминатором. Следует отметить, что ASCII-код символа ‘\0’ равен 0x00 = 0, в отличие от кода цифры 0, который равен значению 0x30 = 48.

Строки могут быть объявлены двумя способами:

1) с указанием каждого символа, заключенного в одинарные кавычки (апострофы), и в конце строки помещается нулевой символ:

char mystring[ ] = {‘C’, ‘O’, ‘M’, ‘P’, ‘\0’};

2) путем заключения строки в двойные кавычки:

char mystring[ ] = “COMP”;

При размещении такой строки в памяти компилятор автоматически в конце добавит нулевой символ ‘\0’.

Наши рекомендации