Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект Лекций «программирование На Языке Высокого Уровня Си» По Информатике (Попов Д. И.).pdf
Скачиваний:
157
Добавлен:
07.10.2014
Размер:
1.31 Mб
Скачать

0

Начало

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a, b, h

 

 

 

 

 

 

ввести a, b, h

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

3.1

 

 

 

 

 

 

 

 

 

 

 

 

 

Цикл x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вычислить f(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

х, f

 

вывести х и f(x)

 

 

3.4

 

 

3.3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Цикл x

 

 

 

 

x x + h

 

 

 

 

 

 

 

 

 

x > b

 

 

 

 

 

 

 

 

f

 

 

 

s i n (

−*x

)

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

Рис. 17. Блок-схема алгоритма табулирования функции в соответствии ГОСТ 19.701-90

Тема 4. Язык программирования высокого уровня Си

Общие сведения о языке Си

Язык Си, созданный Денисом Ритчи в начале 70-х годов в Bell Laboratory американской корпорации AT&T, является одним из универсальных языков программирования. Язык Си считается языком системного программирования, хотя он удобен и для написания прикладных программ. Среди преимуществ языка Си следует отметить переносимость программ на компьютеры различной архитектуры и из одной операционной системы в другую, лаконичность записи алгоритмов, логическую стройность программ, а также возможность получить программный код, сравнимый по скорости выполнения с программами, написанными на языке ассемблера. Последнее связано с тем, что хотя Си является языком высокого уровня, имеющим полный набор конструкций структурного программирования, он также обладает набором низкоуровневых средств, обеспечивающих доступ к аппаратным средствам компьютера. С 1989 года язык Си регламентируется стандартом Американского института

50

национальных стандартов ANSI С. В настоящее время, кроме стандарта ANSI C разработан международный стандарт ISO C (International Standard Organization C).

Алфавит языка Си

Алфавит – совокупность символов, которые можно использовать в программах на языке Си.

В алфавит языка входят:

1.Большие и маленькие латинские буквы: A, B,..Z; a, b,..z и символ подчеркивания ( '_' ). Далее будем обозначать <буква>.

2.Десятичные цифры: 0, 1,..9. Далее будем писать просто <цифра>.

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

, . ; : ? ‘ ! | / \ ~ * + - ( ) { } < > [ ] # % & ^ = “

4.Управляющие и разделительные символы. К той группе символов относятся: пробел, символы табуляции, перевода строки, возврата каретки, новая страница и новая строка. Эти символы отделяют друг от друга объекты, определяемые пользователем, к которым относятся константы и идентификаторы. Последовательность разделительных символов рассматривается компилятором как один символ (последовательность пробелов).

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

Таблица 5. Управляющие последовательности языка Си.

Управляющая

Наименование

последовательность

 

\a

Звонок

\b

Возврат на шаг

\t

Горизонтальная табуляция

\n

Переход на новую строку

\v

Вертикальная табуляция

51

\r

Возврат каретки

\f

Перевод формата

\”

Кавычки

\’

Апостроф

\0

Ноль-символ

\\

Обратная дробная черта

\ddd

Символ набора кодов ПЭВМ в восьмеричном представлении

\xddd

Символ набора кодов ПЭВМ в шестнадцатеричном представлении

Примечание:

1.Каждая буква, цифра, специальный символ и служебное слово – это самостоятельная, неделимая конструкция языка.

2.В реализации языка на отечественных ЭВМ в алфавит добавляются большие и маленькие русские буквы и дополнительные знаки препинания. Однако эти дополнительные символы можно использовать только в символьных

истроковых константах.

3.В языке Си буквы нижнего регистра (а,...,z) отличаются от букв верхнего регистра (А,...,Z). Это означает, что следующие идентификаторы считаются разными: name, NaMe, NAME и т.д.

Грамматика для описания языка, синтаксические диаграммы

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

1)с использованием формальных грамматик;

2)с использованием синтаксических диаграмм.

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

1)Вводится множество терминальных символов, которые заключаются в одиночных кавычках. Под терминальным символом понимается неделимый символ языка, например ‘Begin’, ‘Program’, ‘1’, ‘5’. Иногда для сокращения кавычки можно опускать, если смысл конструкции при этом остается понятным.

52

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

3)Вводится операция «=::» (или «→»), которая читается, как: «это есть», «является», «состоит из» и предназначено для уточнения состава нетерминальных символов.

4)Для обозначения альтернативных вариантов написания терминов в

языке вводится синтаксическая конструкция «альтернатива», которая обозначается вертикальной чертой «|» и может читаться как союз «или», например, такая конструкция «<операция> → ‘*’ | ‘/’ | ‘–‘ | ‘+’» обозначает следующее: «нетерминальный символ <операция> это есть терминальный символ ‘*’, или символ ‘/’, или символ ‘–‘ или, символ ‘+’».

5)Для необязательных конструкций языка, которые в одном случае могут присутствовать, а в другом могут отсутствовать используется конструкция «квадратные скобки». Ими обрамляются необязательные символы, например такое описание «<целое число> → [+] | – <цифры>» обозначает, что «конструкция <целое число> есть <цифры>, перед которыми необязательно присутствует знак ‘+’, либо обязательно знак ‘–‘».

6)Для повторяющихся конструкций используется два вида записи: либо с помощью многоточия «…» (если очевидно какая конструкция повторяется), либо повторяющиеся конструкции берутся в фигурные скобки. Иногда такая конструкция называется «итерация» или «повторение», например «< целое число> → [+] | – {<цифра>}», либо

«<целое число>→ [+] | – <цифра><цифра>… ».

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

53

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

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

Пример 8. СД для понятия “целое число” (целое со знаком) (рис.18).

Целое

число

+

Цифра

Рис. 18. СД «Целое число со знаком»

При построении СД используется 5 основных конструкций: 1) Последовательность (рис.19).

 

 

 

С2

 

 

СN

 

С1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 19. Типовая конструкция СД «Последовательность»

Порождает синтаксическую конструкцию (иногда говорят цепочку символов) C1C2C3…CN.

2) Альтернатива (рис.20).

54

С1

 

С2

 

Порождает

 

 

цепочку C1, или

 

 

 

 

 

 

цепочку C2, или

цепочку C3, …, или

 

 

 

 

 

 

цепочку CN.

 

СN

 

 

 

 

 

 

 

 

 

Рис. 20. Типовая конструкция СД «Альтернатива»

3) Альтернатива с пустой цепочкой (рис.21).

 

 

 

Порождает

 

С

 

или пустую цепочку

 

 

 

 

 

или цепочку С.

 

 

 

Рис. 21. Типовая конструкция СД «Альтернатива с пустой цепочкой»

4) Итерация с пустой цепочкой (рис.22).

Порождает или пустую цепочку

С или цепочку С, или цепочку СС, и т.д.

Рис. 22. Типовая конструкция СД «Итерация с пустой цепочкой»

5) Итерация без пустой цепочки (рис.23).

 

С

 

 

Порождает

 

 

 

 

 

 

или цепочку С,

 

 

 

 

 

 

 

 

 

 

 

или цепочку СС, и т.д.

Рис. 23. Типовая конструкция СД «Итерация без пустой цепочки»

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

55