Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Структура программы на Си




ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА СИ

Языки программирования

Компиляторы и интерпретаторы

С помощью языка программирования создается текст, описывающий ранее составленный алгоритм. Чтобы получить работающую программу, надо этот текст перевести в последовательность команд процессора, что выполняется при помощи специальных программ, которые называются трансляторами. Трансляторы бывают двух видов: компиляторы и интерпретаторы. Компилятор транслирует текст исходного модуля в машинный код, который называется объектным модулем за один непрерывный процесс. При этом сначала он просматривает исходный текст программы в поисках синтаксических ошибок. Интерпретатор выполняет исходный модуль программы в режиме оператор за оператором, по ходу работы переводя каждый оператор на машинный язык.

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

Языки программирования высокого уровня не учитывают особенности конкретных компьютерных архитектур, поэтому создаваемые программы на уровне исходных текстов легко переносятся на другие платформы, если для них созданы соответствующие трансляторы. Разработка программ на языках высокого уровня гораздо проще, чем на машинных языках.

 

Директивы препроцессора управляют преобразованием текста программы до ее компиляции. Исходная программа, подготовленная на Си в виде текстового файла, проходит 3 этапа обработки:

1) препроцессорное преобразование текста;

2) компиляция;

3) компоновка (редактирование связей или сборка).

После этих трех этапов формируется исполняемый код программы. Задача препроцессора – преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора. Директива начинается с #. Например,

1) #define – указывает правила замены в тексте.

#define ZERO 0.0 – означает, что каждое использование в программе имени ZERO будет заменяться на 0.0.

2) #include <имя заголовочного файла> – предназначена для включения в текст программы заголовочных файлов, поставляемых вместе со стандартными библиотеками. Каждая библиотечная функция Си имеет соответствующее описание в одном из заголовочных файлов. Список стандартных заголовочных файлов определен стандартом языка. Употребление директивы include не подключает соответствующую стандартную библиотеку, а только позволяет вставить в текст программы описания из указанного заголовочного файла. Подключение кодов библиотеки осуществляется на этапе компоновки, т.е. после компиляции. Хотя в заголовочных файлах содержатся все описания стандартных функций, в код программы включаются только те функции, которые используются в программе.

После выполнения препроцессорной обработки в тексте программы не остается ни одной препроцессорной директивы.

Некоторые заголовочные файлы:

 

· ALLOC.H – функции для работы с памятью

· CONIO.H – функции консольного ввода-вывода

· DIR.H – работа с файлами и каталогами

· IO.H – функции для работы с файлами

· IOSTREAM.H – библиотека Си++ потоков ввода/вывода

· COMPLEX.H, MATH.H – математические функции

· STDIO.H – стандартная библиотека ввода-вывода

· STDLIB.H – библиотека стандартных функций

· STRING.H – функции для работы со строками

· TIME.H – функции для работы с датой и временем

 

Программа представляет собой набор описаний и определений и состоит из набора функций. Функции – это строительные блоки языка, самостоятельные единицы программы, спроектированные для решения конкретных задач. Обычно функции в программе повторяются несколько раз. Среди функций всегда должна быть функция с именем main. Без нее программа не может быть выполнена.

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

тип <имя_функции> (список параметров);

Перед именем функции помещаются сведения о типе возвращаемого функцией значения (тип результата). Если функция ничего не возвращает, то указывается тип void. Вы не обязаны объявлять функцию типа void, это не будет препятствием для компиляции, однако объявление типа возвращаемого значения функции является хорошим правилом. Каждая функция, в том числе и main, должна иметь набор параметров, он может быть пустым, тогда в скобках указывается (void).

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

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

float x; //объявление переменной

int y = 10; // объявление переменной и ее инициализация

Описания уведомляют компилятор о свойствах и именах объектов и функций, описанных в других частях программы.

Операторы определяют действия программы на каждом шаге ее исполнения.

 

Пример программы печати строки на Си:

 

#include <stdio.h>

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




Поделиться с друзьями:


Дата добавления: 2015-06-04; Просмотров: 413; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.012 сек.