Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_СП_2004_1_00.doc
Скачиваний:
69
Добавлен:
04.11.2018
Размер:
882.69 Кб
Скачать

2. Подготовка к выполнению и выполнение программ

Язык Си относится к числу компилируемых языков программирования. Это означает, что подготовка к выполнению Си-программы включает в себя следующие этапы:

- ввод исходного текста программы в файл при помощи какого-либо редактора текстов (имя файла, как правило, имеет стандартное расширение "C");

- компиляция программы, т.е. преобразование ее описания на входном языке в семантический эквивалент на машинном языке, называемый объектным модулем (имя файла, в который помещается результат компиляции, обычно имеет расширение "OBJ");

построение готового к выполнению загрузочного модуля из объектных модулей, включая модули из внешних библиотек (файл, содержащий готовую программу, имеет имя с расширением "EXE"). В процессе компиляции программы создается листинг ее исходного текста, содержащий, возможно, сообщения об обнаруженных ошибках.

Наличие листинга существенно упрощает поиск и устранение ошибок, допущенных при подготовке программы, и сокращает время, затрачиваемое на ее отладку. Имя файла, в который записывается листинг исходной программы, снабжается обычно расширением "LST". На этапе построения загрузочного модуля также возможно создание файла-листинга, включающего в себя информацию о размещении собираемых объектных модулей в памяти ЭВМ. Однако его анализ и использование требует более глубоких знаний основных принципов работы машины, нежели разбор листинга исходной программы. Для запуска в работу готовой к выполнению программы в операционной среде MS DOS достаточно набрать имя содержащего ее файла на клавиатуре консольного терминала, закончив ввод нажатием клавиши Enter.

3. Элементы языка с

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

3.1. Алфавит

3.1.1. Буквы и цифры

- большие буквы латинского алфавита

A B C D E F G H I J K L M

N O P Q R S T U V W X Y Z

- малые буквы латинского алфавита

a b c d e f g h i j k l m

n o p q r s t u v w x y z

- десятичные цифры

0 1 2 3 4 5 6 7 8 9

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

пробел ! " # % & ' ( ) * + , - .

/ : ; < = > ? [ \ ] ^ _ { | } ~

3.2. Имена объектов программы (идентификаторы)

Идентификаторами в языке Си являются последовательности букв и цифр, начинающиеся с буквы, причем символ подчеркивания (_) рассматривается компилятором как буква. Большие и малые буквы латинского алфавита считаются различными. Длина идентификатора формально может быть произвольной, однако только лишь первые 31 символ являются значимыми для компилятора IBM C/2. В программах на языке Си идентификаторы служат именами переменных, символических констант, функций, типов данных и меток. Общепринято для именования констант использовать большие буквы латинского алфавита, сохраняя малые буквы для обозначения переменных и функций.

Замечание. Не рекомендуется в прикладных программах использовать идентификаторы, начинающиеся с подчеркивания, ибо в среде IBM C/2 это может привести к конфликту с именами создаваемых компилятором служебных переменных или констант.

3.3. Ключевые слова

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

- типы данных

char float short typedef void

double int signed union

enum long struct unsigned

- классы памяти

auto extern register static

- операторы

break default for return while

case do goto sizeof

continue else if switch

- специальные

const far huge pascal

cdecl fortran near volatile

3.4. Комментарии

Под комментариями понимаются последовательности символов, игнорируемые компилятором. Комментарии имеют следующую форму:

/* Characters */

где Characters есть произвольная комбинация любых печатаемых символов ASCII.

3.5. Константы

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

3.6. Операции и выражения

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

- арифметические операции

+ - * / % ++ --

- операции отношения

== != < > <= >=

- логические операции

! || &&

- побитовые операции

~ << >> & | ^

- операции присваивания

= += -= *= /= %= <<= >>= &= ^= |=

- операции над массивами

[]

- операции над структурами и объединениями

->

- другие операции

? : , syzeof (type specifier) ()

3.7. Операторы

Простейшим оператором языка Си является всякое выражение, заканчивающееся точкой с запятой (см. п. 3.6.). В частности, отдельно стоящая точка с запятой интерпретируется компилятором как нуль-оператор. Наиболее значительную группу операторов образуют инструкции (операторы) управления процессом выполнения программы. К ним относятся:

- операторы цикла

for (<init-expression>; <cond-expression>;

<loop-expression>)

statement

while (expression)

statement

do

statement

while (expression);

- условный оператор и переключатель

if (expression)

statement1

<else

statement2>

switch (expression)

{ <case const-expression: <statements>>

. .

. .

. .

<default: <statements>>

. .

. .

. .

<case const-expression: <statements>> }

- операторы передачи управления

goto break continue return

Здесь expression есть произвольное правильное выражение языка Си (см. Лекцию 2), а через statement обозначен простой или составной (см. ниже) оператор, каковым, в частности, может быть и любой оператор управления. Последнее означает, что допустимым является вложение операторов управления друг в друга. Элементы конструкций языка, заключенные в угловые скобки (<>), не являются обязательными и могут быть опущены. Один или несколько операторов, заключенных в фигурные скобки, образуют составной оператор или блок. Точка с запятой после закрывающей скобки при этом не ставится.

3.8. Описания

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

3.9. Общая структура программы

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

main().