- •Алфавит.
- •Объявления и определения
- •Структура и компоненты простой программы
- •Текст программы и препроцессор.
- •Структура программы.
- •Функция форматированного вывода.
- •Программы печати предельных констант.
- •Применимость вещественных данных.
- •Выделение лексем из текста программы.
- •2.2. Элементарные средства программирования Деление операторов языка Си на группы.
- •Программа оценки машинного нуля.
- •Трассировочная таблица
- •Переключатели
- •Ввод данных.
- •Вычисление объема цилиндра.
- •Операторы цикла
- •Три формы операторов цикла.
- •Приближенное значение экспоненты.
- •Оператор break.
- •Сумма отрезка степенного ряда.
- •Оператор continue.
- •Суммирование положительных чисел.
- •2.4. Массивы и вложение операторов цикла Массивы и переменные с индексами.
- •Вычисление среднего и дисперсии.
- •Упорядочение в одномерных массивах.
- •Инициализация массивов.
- •Моделирование многомерных массивов.
- •Ввод и вывод
- •7.1. Потоковый ввод-вывод
- •7.1.1. Открытие и закрытие потока
- •7.1.2. Стандартные файлы и функции для работы с ними
- •Ввод-вывод отдельных символов.
- •Ввод-вывод строк.
- •Форматный ввод-вывод.
- •Спецификаторы форматной строки для функции форматного вывода
- •Спецификаторы форматной строки для функции форматного ввода
- •Работа с файлами на диске
- •Двоичный (бинарный) режим обмена с файлами.
- •Строковый обмен с файлами.
- •Позиционирование в потоке.
- •Трехъязычный словарь "Цифры
- •7.2. Ввод-вывод нижнего уровня
- •7.2.1. Открытие / закрытие файла
- •7.2.2. Чтение и запись данных
- •7.2.3. Произвольный доступ к файлу
- •Теоретические положения Управление экраном в текстовом режиме в ms dos
- •Основные функции работы в текстовом режиме
- •2.5. Функции Определение функций.
- •Функция для вычисления объема цилиндра.
- •Функция для вычисления скалярного произведения векторов.
- •Обращение к функции и ее прототип.
- •Вычисление объема цилиндра
- •Вычисление площади треугольника.
- •Скалярное произведение векторов.
- •Препроцессорные средства
- •Глава 6. Структуры и объединения
- •6.1. Структурные типы и структуры Производные типы.
- •Структурный тип.
- •Определение структур.
- •Выделение памяти для структур.
- •Инициализация и присваивание структур.
- •Доступ к элементам структур.
- •Модули:
- •Некоторые понятия:
Доступ к элементам структур.
Доступ к элементам структур. Наиболее наглядно и естественно доступ к элементам структур обеспечивается с помощью уточненных имен. Конструкция
имя_структуры. имя_элемепта
играет роль названия (имени) объекта того типа, к которому отнесен элемент в соответствии с определением структурного типа. В нашем Примере с инициализацией структуры типа struct goods:
coat.name - указатель типа char* на строку "пиджак черный";
coat.price - переменная типа long со значением 400000;
coat.percent - переменная типа float со значением 7.5;
coat.vol - переменная типа int со значением 220;
coat.date - массив типа char [9], содержащий "12.01.97".
Обратите внимание, что перед точкой стоит не название структурного типа, а имя конкретной структуры, для которой ее определением выделена память.
Уточненное имя - это выражение с двумя операндами и операцией "точка" между ними. Операция "точка" называется операцией доступа к элементу структуры (или объединения). У нее самый высокий ранг наряду со скобками (и операцией "стрелка" для доступа к элементам структуры через адресующий ее указатель, см. табл. 1.4).
Уточненное имя используется для выбора правого операнда операции "точка" из структуры (или объединения), задаваемой левым операндом. Левый операнд должен иметь структурный тип, а правый операнд должен быть именем компонента (элемента) этой структуры. Тип результата операции "точка", т.е. тип уточненного имени, - это тип именуемого ею компонента (элемента) структуры. Именно такие типы указаны в приведенных выше примерах, т.е. coat.vol - объект типа int и т.д.
Если при определении структуры она инициализирована, то ее элементы получают соответствующие начальные значения. С помощью уточненных имен эти значения могут быть, например, выведены на экран дисплея.
Пример программы с инициализацией структуры и выводом значений ее элементов:
Результат выполнения программы:
Уточненные имена элементов структур обладают всеми правами объектов соответствующих типов. Их можно использовать в выражениях, их значения можно вводить с клавиатуры и т.д. Например, с помощью следующих операторов можно изменить торговую наценку (элемент coat.price) и вычислить розничную цену на определенный в программе товар (пиджак черный):
Обратите внимание, что в качестве фактического параметра функции scanf( ) используется адрес элемента percent структуры coat. Для этого операция получения адреса & применяется к уточненному имени coat.percent. При вычислении розничной цены товара приходится вводить явное приведение типов (long), так как результат умножения элемента coat.price на вещественное выражение 1.0+coat.percent/!00 имеет по умолчанию тип double.
Следующая программа выполняет сложение комплексных чисел, для представления которых использован структурный тип, имя которого вводит спецификатор typedef:
Возможный результат выполнения программы:
Определения:
Процедура – подпрограмма для выполнения какой-то законченной последовательности действий.
Функция – подпрограмма для вычисления какого-либо параметра.
Модуль – программная единица для хранения элементов, которые можно использовать в тех или иных программах. (типы, константы, переменные и подпрограммы). Если все, что было написано в программе, полностью входит в скомпилированный файл программы, то из модуля в скомп. программу попадают только те части, которые необходимы данной программе. Модуль выступает как библиотека, которую можно употреблять во многих программах. Наличие модулей позволяет программировать и отлаживать программу по частям, создавать библиотеки подпрограмм и данных, воспользоваться возможностями стандартных модулей, практически неограниченно увеличивать кодовую (содержащую коды команд) часть программы.