Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций_2015.doc
Скачиваний:
36
Добавлен:
03.03.2016
Размер:
532.48 Кб
Скачать

6 Кодирование алгоритмов на языке си

6.1 Принцип виртуальной Си-машины

Рисунок 6.1- Виртуальная Си-машина

Работа с Си программой выполняется следующим образом (в два этапа):

1-й этап:

Исходная программа

Компилятор

Данные

Программа пользователя

Результаты

Исполнимая программа

2-й этап:

Исходная программа

Исполнимая программа

Данные

Данные для программы

Результаты

Результат работы программы

Различают следующие виды ошибок:

1) Ошибки этапа компиляции:

- Лексические;

-Синтаксические;

- Семантические;

2) Ошибки этапа выполнения:

- Деление на нуль;

- Переполнение;

3) Ошибки, не идентифицируемые Си машиной.

Рисунок 6.2 – Работа виртуальной Си-машины на двух этапах

6.2 Язык Си

Характеристики языка Си:

1) язык процедурного типа;

2) язык со статической проверкой типов (в каждой точке программы на этапе компиляции, известно с какими данными выполняется операция).

Достоинства языка Си:

  1. язык Си современный, т.е. поддерживает основные принципы:

  • нисходящее проектирование,

  • структурное программирование,

  • пошаговая разработка программ;

2) язык эффективный;

3) мобильность (переносимость), т.е. программы, написанные на Си, переносятся в другую операционную систему (на другую платформу) либо без изменений, либо с минимальными изменениями;

4) мощный и гибкий одновременно. Мощный, т.к. на нём написано программное обеспечение любого уровня. Гибкий, т.к. имеются конструкции управления и структурирования данных, которые позволяют создавать программы для любых предметных областей;

5) язык системного программирования (в Си есть все конструкции позволяющие работать на уровне Ассемблера);

6) язык стандартизован - стандарт языка Си – ANSI-C;

стандарт наложен на:

  • сам язык;

  • препроцессор;

  • библиотеки.

Язык поддерживается всеми фирмами, которые разрабатывали операционную систему UNIXи ей подобные:

UNIX: AT&T, SUN;

UNIX-V: IBM, DEC, HP, SIMENS.

6.3 Описание синтаксиса языка программирования

Синтаксис может быть описан двумя способами:

  • БНФ (формулы Бэкуса-Наура);

  • синтаксические диаграммы (разработаны Н.Виртом).

6.3.1 БНФ

В ломаных скобках записываются имена семантических переменных, соответствующих конструкций языка. Без ломаных скобок записываются зарезервированные слова и символы языка.

Каждая БНФ состоит из двух частей разделённых специальным символом ::=

В левой части БНФ записывают семантическую переменную для определяемой конструкции языка. В правой части БНФ записываются последовательность зарезервированных слов и семантических переменных.

В квадратных скобках записывают не обязательные элементы. Если в правой части БНФ выбирается одна из возможных конструкций, то эти альтернативы разделяются вертикальной чертой.

Пример 6.1:

<программа> ::= <последовательность директив препроцессора>

<заголовок программы> <тело программы>

<последовательность директив препроцессора> ::= <директива> [<директива>]

<директива>::=#<тело директивы>

<заголовок программы> ::= main([список аргументов])

< список аргументов > ::= <имя аргумента> [,<имя аргумента>]

<имя аргумента> ::= <имя>

<имя> ::= <буква> | <имя> <буква> | <имя> <цифра>

6.3.2 Синтаксические диаграммы

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

Пример 6.2: