Смекни!
smekni.com

Язык программирования С 2 (стр. 3 из 7)

2.1. Типы данных

В языке Си можно использовать различные типы данных для хранения и обработки информации. Данные каждого типа могут принимать значения в некотором заранее известном диапазоне. В памяти они занимают определенное количество байт. Таким образом, тип данных - это способ хранения информации в памяти.

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

Основные типы данных языка ТС

Таблица 2.1

Тип данных Название типа Размер занимаемой памяти, Байт Диапазон допустимых значений
char символ 1 -128... 127
unsigned char беззнаковый символ 1 0...255
int целое 2 -32768...32767
unsigned int беззнаковое целое 2 0...65535
long длинноецелое 4 -2147483648... 2147483647
unsigned long беззнаковое длинное целое 4 0...4294967295
float вещественное 4 ±(3,4*10-38…3,4*1038)
double вещественное двойной точности 8 ±(1,7*10-308…1,7*10308)
longdouble длинное вещественное двойной точности 10 ±(3,4*10-4932... 3.4*104932)

Типы данных char, intulong являются типами для хранения целых чисел. Действительно любой символ связан с целым числом – кодом этого символа по так называемой таблице символов ASCII. Этот символ необходим для идентификации нажатой на клавиатуре клавиши или при выводе на принтер.

Различие между целыми типами данных со знаком и без него (модификатор unsigned) состоит в том, как преобразуется старший бит целого числа. Для знакового числа старший бит определяет знак числа - если си равен нулю - число положительное, если равен единице - число отрицательное-

Типы float, double и longdouble являются типами данных для представления чисел с плавающей запятой.

2.2. Переменные

Переменная - это область памяти, имеющая имя и предназначенная для хранения меняющихся данных определенного типа,

Прежде чем использовать переменную в программе, необходимо объявить её. Для этого указывается тип данных, а затем имя переменной. В общем виде объявление переменной выполняется таким образом:

<ТипДанных> <ИмяПеременной>;

Например,

inti; /* объявление целой переменной i */

intj,n=5,k1,k2; /* объявление 4 целых переменных,

инициализация одной из них */

longg=10; /* объявление переменной g типа длинное целое и инициализация её началь­ным значением 10*/

floata, b=3.14, с;/* объявление 3 вещест­венных переменных а, b, с, инициализация начально­го значения b */

k1=2*n+1;

k2=3*j;

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

Вместе с объявлением переменной, ей можно присвоить начальное значение - этот процесс называется инициализацией. Переменные, которые объявлены, но не инициализированы, содержат случайные значения. Так, в выше приведенном примере после объявления переменных выполнены расчеты значений переменных k1 и k2. После расчета k1 будет иметь определенное значение и равно 11, значение же переменной k2 произвольное, так как в выражении значение переменной j неопределенно.

2.3. Имена переменных

Идентификаторы могут содержать буквы верхнего и нижнего регистров латинского алфавита:

A, B, C, ..., Z, a, b, c, ..., z ,

символ подчеркивания:

_

а также цифры:

0, 1, 2 ..., 9.

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

Максимально допустимая длина имени переменной различается в зависимости от реализации языка. Язык ТС различает первые 32 символа имени переменной, хотя длина может быть и большей. Еще одной особенностью является то, что имена переменных, написанные строчными и прописными буквами, определяются компилятором ТС как различные, например идентификаторы:

NUM Num num

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

Правильные имена Неправильные имена
first первый
massiv1 1massiv
hot_key hot-key
you_and_me you.and.me
number_5 number№5
printf
if

Два последних примера неправильных имен показывают, что нельзя в именах использовать ключевые слова языка ( if) и названия функций ( printf).

Кроме этого, хорошим стилем написания программы считается использование понятных имен переменных. Например, если в программе используется переменная «режим экрана», то можно конечно использовать имя m или r, но более наглядным будет имя mode_screen или rejim_ekran. К тому же при объявлении переменных желательно использовать в тексте программы комментарии, раскрывающие назначение введенных переменных.

2.4. Локальные и глобальные переменные. Область видимости переменной

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

Различают локальные и глобальные переменные. Локальные переменные существуют и в теле функции или оператора управления. Локальные переменные на языке Си (но не С++) объявляются в начале блока – после открывающей фигурной скобки. Только после этого можно использовать их имена в выражениях и операторах. Область видимости локальной переменной – до соответствующей закрывающей фигурной скобки.

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

Рассмотрим пример

#include <stdio.h>

inti=1; /* объявление и инициализация глобальной переменной */

floatf; /* объявление глобальной переменной */

voidfun(void); /* прототип функции пользователя */

void main(void)

{

intk,n; /* объявление локальных переменных */

floatg1; /* объявление локальной переменной */

...

}

voidfun(void) /* описание функции пользователя */

{

intj=5; /* объявление локальной переменной */

charch; /* объявление локальной переменной */

...

}

В программе объявлены глобальные и локальные переменные, а также помимо функции main() используется подпрограмма fun(). Глобальные переменные i и fможно использовать в обеих функциях. Значения локальных переменных r, n и g1 можно использовать только в теле функции main(), а переменных j и ch – в теле функции fun().

2.5. Константы

В языке Си представляют собой постоянные параметры, константы, которые не изменяются в ходе исполнения программ. Константы могут быть для любого типа данных. Примеры констант приведены в табл. 2.2.

Пример констант различных типов данных

Таблица 2.2.

Имя константы Тип Примеры
символ char ’A’ ‘ч’ ‘&bsol;n’
целое int 10 -9345 32000
длинное целое long 100000 5L
вещественное двойной точности double 3.14 1.23456789 –8.9е-40

2.5.1. Константы типа символ

Можно задавать в двух формах в виде отдельного символа, который записывается в одиночных кавычках ('А ') или в виде целого числа (55). При этом необходимо помнить, что константы, например, '0' и 0 описывают различные данные.

В языке Си существуют символьные константы, обозначающие специальные управляющие символы, такие как: перевод строки, звуковой сигнал, горизонтальная табуляция. Эти символы нельзя ввести с клавиатуры. Для их использования вначале записывается символ '&bsol;' – обратный слеш. Например, символ, означающий перевод строки, описывается так: '&bsol;n', горизонтальная табуляция – '&bsol;t'. Перечень основных специальных символов приведен в таблице 2.3.

Специальные символы

Таблица 2.3.

Обозначение Назначение
&bsol;n перевод строки
&bsol;r возврат каретки
&bsol;t горизонтальная табуляция
&bsol;v вертикальная табуляция
&bsol;b стирание символа, возврат на шаг
&bsol;f перевод страницы
&bsol;” двойная кавычка
&bsol;’ апостроф, одиночная кавычка
&bsol; обратный слеш
&bsol;0 нулевой символ, конец строки
&bsol;а звуковой сигнал
&bsol;? символ вопроса

2.5.2. Целые константы

Эти константы не имеют десятичной точки и порядка числа. В программировании очень часто используются числа, записанные в других системах счисления - двоичной, восьмеричной и шестнадцатеричной. Для двух последних систем в языке Си есть специальная форма записи:

– для восьмеричных целых констант перед числом записывается ноль, и далее используются цифры 0…7;

– для шестнадцатеричных целых констант перед числом устанавливаются два символа 0х и далее используются цифры 0... 9, а также буквы латинского алфавита A, B, C, D, E, F обозначающие соответственно числа от 10 до 15. Примеры целых констант: