|
СТРУКТУРА ПРОГРАММЫ НА ЯЗЫКЕ СИСтр 1 из 12Следующая ⇒
Рассмотрим внешнюю (текстовую) и внутреннюю (.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 бита. Например: -5326 l 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
Система охраняемых территорий в США Изучение особо охраняемых природных территорий(ООПТ) США представляет особый интерес по многим причинам... Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)... ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры... Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|