СТРУКТУРА ПРОГРАММЫ НА ЯЗЫКЕ СИ
Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







СТРУКТУРА ПРОГРАММЫ НА ЯЗЫКЕ СИ





 

Рассмотрим внешнюю (текстовую) и внутреннюю (.exe файл) структуру.

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

 

 
 

 


Рис.1 Структура программы на языке Си.

 

Внутренняя структура программы

 

Исполняемая программа на Си состоит из 4 частей: область команд, область статических данных, область динамических данных, область стека. см. Рис.2.

1. Область команд содержит машинные команды; инструкции, которые должен выполнить микропроцессор.

2. Область статических данных для хранения переменных, с которыми работает программа;

3. Область динамических данных для размещения дополнительных данных, которые появляются в процессе работы программы (например, временных переменных).

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

 
 

 

 


 

 

Рис.2. Внутренняя структура программы на Си.

При записи данных стек растет в сторону уменьшения адресов, а область динамических данных – в сторону увеличения адресов.

 

Пример программы на СИ

# include < stdio.h >

заголовок void main (void)

 

 
 


{

тело функции /*тело функции*/

printf("Hello World!");

}

 

1-я строка – директива, подключающая заголовочный файл стандартного ввода-вывода. Операторов в Си мало, но есть библиотека функций. Чтобы их использовать надо их подключить, что и делает директива – 1-я строка программы. Символ # указывает, что строка должна быть обработана препроцессором языка Си.



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

3-я строка – начало тела функции. {} определяют тело функции (в Паскале - это begin и end)

4-я строка – комментарий, он не компилируется, а только поясняет что делается.

5-я строка – библиотечная функция – печатать на экране, выражение в скобках на этой строке – параметр функции, он всегда берётся в кавычки.

; - это признак оператора Си, это часть оператора, а не разделитель операторов, как в Паскале.

 

Советы, как сделать программу читаемой:

1) Выбирать осмысленные имена

2) Использовать комментарии

3) Использовать пустые строки для того, чтобы отделить одну часть функции от другой

4) Помещать каждый оператор в другой строке.

 

БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА СИ

 

Рассмотрим обязательные элементы, с помощью которых должна оформляться программа на Си:

 

1. Комментарии – используются для документирования программы. Любая программа должна содержать комментарии: какой алгоритм применяется, что делает программа…

Ø 1 способ: /* Текст */ - в любом месте программы.

Как только компилятор встречает /**/, он их пропускает. Компилятор игнорирует /* */, так как он не в состоянии интерпретировать язык, отличающийся от языка Си. То есть, если вы хотите исключить из компиляции какую-то строку, то заключите её в /**/.

Ø 2 способ: если комментарий большой, то используем такой тип

/* Строка 1 - для комментария любой длины

строка 2

строка 3*/

Ø 3 способ: // - текст до конца строки.

 

2. Идентификатор - это имя, которое присваивается какому-либо объекту (переменной). Используются строчные и прописные буквы, цифры и знак подчёркивания. Строчные и прописные буквы различаются. (В Бейсике не различаются). Если назвать переменную name, Name или NAME, то это будут разные переменные.

Начинаются идентификаторы с буквы или знака подчеркивания. Например, _name. Но не рекомендуется начинать с _, так как этот знак используется для глобальных имен сомого языка Си.

В современном программировании часто используется для создания идентификаторов Венгерская нотация, где используются определенные символы, характеризующие идентификатор, например:

b – байт; ch – однобайтовый символ;

w – слово; f – флаг;

l – длинное слово; fn – функция;

u – беззнаковое; p – указатель;

с – счетчик; d – разность двух пре-х

cz – строка; и т.д.

 

3. Служебные слова – это слова, с которыми в языке жестко сопоставлены определённые смысловые значения и которые не могут быть использованы для других целей. Это имена операторов, библиотечных функций, команды препроцессора и так далее. Этим слова нельзя использовать для создания имен своих функций, переменных…

 

ДАННЫЕ В ПРОГРАММЕ НА СИ

 

Каждая программа оперирует с данными. Они присутствуют в программе в виде переменных и констант.

Данные, которые могут изменяться или которым может присваиваться значения во время выполнения программы, называются переменными.

Данные, которым устанавливаются определенные значения и они сохраняют свои значения на всем протяжении работы программы, называются константами.

 

Константы

 

Константы - это фиксированные значения. Значение, будучи установлено, больше не меняется. Константы бывают различных типов. Типы отличаются по принципу размещения в памяти ЭВМ, а для человека по виду записи. В Си существует 7 ключевых слов, используемых для указания на различные типы данных: int, long, short, unsigned, char, float, double.

 

Типы констант:

a) Целые и длинные целые. Записываются в десятичной, восьмеричной и шестнадцатеричной системе счисления. Они могут быть знаковые и беззнаковые.

Десятичная система: целые константы занимают 16 бит памяти, и принимают диапазон значений: -32768 до +32767(215). Если константа беззнаковая, то диапазон удваивается: 0 до 65535 (за счет того, что 15-й разряд – знаковый используется под число). Для обозначения беззнакового числа используют суффикс u (unsigned), например 123u.

Если число больше 40000, то компилятор автоматически преобразует его в отрицательное число, поэтому суффикс u обязателен:40000u. В примере 123u компилятору все равно – есть суффикс или его нет, так как это число входит в диапазон 32767.

Длинное целое занимает 32 бита, диапазон значений

± 2147483648 (знаковое длинное – long). Если вы поставили суффикс l, то, несмотря на число, будет занято 32 бита. Например: -5326l

0 – 4294967295 беззнаковое длинное - (unsigned long). Диапазон увеличивается за счет 31-го бита. Используются суффиксы ul, например, 32659ul.

 

Восьмеричная система:

Если число начинается с цифры 0, оно интерпретируется как восьмиричное число

16 битов 0 ¸ 077777

0100000 ¸ 0177777u

32 бита 0200000 ¸ 01777777777l

020000000000 ¸ 037777777777ul

Шестнадцатеричная система:

Если число начинается с символа 0х, то оно интерпретируется как шестнадцатиричное

16 битов 0x0000 ¸ 0x7FFF

0x8000 ¸ 0xEFFFu

32 бита 0x10000 ¸ 0x7FFFFFFFl

0x80000000 ¸ 0xFFFFFFFFul

 

b) Вещественные константы. Это числа с плавающей точкой. Значение имеет дробную часть. По умолчанию все вещественные константы имеют тип двойной точности double. Занимают в памяти 8 байт(даже если 0,0). Диапазон значений ±1*10±307, можно записать и в научной форме, например: 0,5е+15 или

1,2е-3=1,2*10-8=0,0012.

Принудительно можно задать формат одинарной точности float. Число будет занимать 4 байта, используется суффикс f (5.7 f). Соответсвенно диапазон сужается ±1*10±37

А также расширенной точности long double – 10 байт. (3.14L)

Знак + можно не писать. Разрешается опускать либо десятичную точку, либо экспоненциальную часть, но не одновременно (.2; 4е16). Можно не писать дробную либо целую часть, но не одновременно (100.; .8е-5)

 

c) Символьные константы. Это набор символов, используемых в ЭВМ.

Делятся на 2 группы: печатные и не печатные (управляющие коды). Символьная константа включает в себя только 1 символ, который необходимо заключить в апострофы и занимает 1 байт памяти.

Любой символ имеет своё двойное представление в таблице ASCII. В программе символьные константы вводятся в одинарных кавычках, при компиляции в программу подставляется числовое значение символа из ASCII. Один символ занимает 1 байт.

Символ 'А' 'a' ' ' '\n'

Его код 65 97 32 10

Как целый тип данных 'A'=01018, 010000012, 4116, 6510. Коды запоминать не надо.

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

\n – переход на новую строку

\t – табуляция (сдвиг курсора на некоторое фиксированное значение)

\b – шаг назад (сдвиг на одну позицию назад)

\r – возврат каретки (возврат к началу строки)

\f – подача бланка (протяжка бумаги на 1 страницу)

\\ - слеш

\’ - апостроф

\” - кавычки

Последние три знака могут выступать символьными константами, а также применяться в функции printf() , поэтому применение их в качестве символов может привести к ошибке. Например, если мы хотим вывести строку «Символ \ называется слеш», то оператор должен выглядеть так:

рrintf( «Символ \\ называется слеш»);

 

a) Строковые константы- содержат последовательность из 1 и более символов, заключённых в " ". Расходуется по 1 байту на любой символ + 1байт на так называемый ноль-символ - признак конца строки. Ноль-символ – не цифра ноль, он означает, что количество символов в строке (N) должно быть на 1 байт больше (N+1), чтобы обозначать конец строки (компилятор его прибавляет сам автоматически). Например: «строка текста» занимает (13+1) байт;

«Мир» -

м и р 0

 

 









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2018 zdamsam.ru Размещенные материалы защищены законодательством РФ.