- •1.Основные компоненты программного обеспечения и их связь с аппаратурой. Ретроспектива развития программирования.
- •2 Этапы решения задач на эвм
- •3 Основные типы данных и структуры данных в программировании
- •3.1.1 Арифметические типы
- •3.1.2 Логический тип
- •3.1.3 Символьный тип
- •4 Методы решения задач программирования
- •5 Разработка алгоритмов Пример 5.8
- •Пример 5.9
- •Пример 5.10
- •6 Кодирование алгоритмов на языке си
- •- Семантические;
- •Тело директивы
- •Имя аргумента
- •Оператор
- •6.4.1 Имена переменных Имена переменных могут состоять из букв (только из латинского алфавита), цифр и символа подчеркивания, приравненного к букве. Начинаться имя должно с буквы.
- •Пример 6.3:
- •6.4.2 Типы и размеры данных
- •6.4.3 Константы
- •Пример 6.4:
- •Пример 6.5:
- •Пример 6.6:
- •Пример 6.7:
- •Пример 6.8:
- •7 Декларации в си
- •8 Операторы в языке си
- •9 Управление в си
- •10 Указатели и массивы
- •Литерные указатели
- •11 Структуры в языке си
- •Структуры, вложенные друг в друга
- •Пример 11.10
- •12 Функции и структура программы
- •Аппарат формальних і фактичних аргументів Приклад 12.4
- •Опис прототипу функції
- •Приклад 12.5
- •13 Передача аргументов
6 Кодирование алгоритмов на языке си
6.1 Принцип виртуальной Си-машины
Рисунок 6.1- Виртуальная Си-машина
Работа с Си программой выполняется следующим образом (в два этапа):
1-й этап:
-
Исходная программа
Компилятор
Данные
Программа пользователя
Результаты
Исполнимая программа
2-й этап:
-
Исходная программа
Исполнимая программа
Данные
Данные для программы
Результаты
Результат работы программы
Различают следующие виды ошибок:
1) Ошибки этапа компиляции:
- Лексические;
-Синтаксические;
- Семантические;
2) Ошибки этапа выполнения:
- Деление на нуль;
- Переполнение;
3) Ошибки, не идентифицируемые Си машиной.
Рисунок 6.2 – Работа виртуальной Си-машины на двух этапах
6.2 Язык Си
Характеристики языка Си:
1) язык процедурного типа;
2) язык со статической проверкой типов (в каждой точке программы на этапе компиляции, известно с какими данными выполняется операция).
Достоинства языка Си:
язык Си современный, т.е. поддерживает основные принципы:
нисходящее проектирование,
структурное программирование,
пошаговая разработка программ;
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: