- •Часть 1
- •40 01 02 – 02 Информационные системы и технологии (в экономике)
- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Протокол согласования учебной программы по изучаемой учебной дисциплине с другими дисциплинами специальности
- •Содержание дисциплины
- •1. Название тем лекционных занятий, их содержание, объем в часах
- •3. Перечень тем лабораторных занятий, их содержание и объем в часах
- •Теоретический раздел
- •Тема № 1. Введение в программирование
- •Происхождение языка с.
- •Основные характеристики алгоритмического языка с
- •Область применения
- •Системы программирования
- •Исходные и объектные модули, процессы компиляции и связывания
- •Алфавит языка
- •Лексемы (cTokens)
- •Тема № 2. Выражения и операции языка Унарные операции
- •Бинарные операции
- •Условная трехместная операция
- •Операция явного преобразования типа
- •Приоритет операций. Порядок вычисления выражений.
- •Организация ввода-вывода информации
- •Тема № 3. Управляющие структуры. Ветвления и циклы
- •Операторы преобразования данных – это операторы присваивания и произвольные выражения, завершенные символом «;».
- •Операторы управления работой программы называют управляющими конструкциями программы.
- •Тема № 4. Организация данных. Массивы и указатели Массивы
- •Инициализация массивов
- •Указатели
- •Функции для выделения и освобождения памяти
- •Тема № 5. Функции. Символьные строки и функции над ними Определение функций
- •Описание функций
- •Вызов функции
- •Передача параметров
- •Указатели на функции
- •Массивы указателей на функции
- •Главная функция. Передача аргументов главной функции
- •Рекурсивные программы
- •Стандартные функции ввода-вывода строк
- •Стандартные функции обработки строк
- •Тема № 6. Классы памяти и препроцессор языка Си Локальные и глобальные переменные
- •Автоматические (локальные) переменные
- •Внешние (глобальные) переменные
- •Статические переменные
- •Регистровые переменные
- •Область видимости и функции
- •Препроцессор и его директивы
- •Тема № 7. Структуры Декларация структур
- •Инициализация структур
- •Доступ к элементам структур
- •Элементы-массивы
- •Массивы структур
- •Указатели на структуры
- •Доступ к элементам структуры, определенной через указатель
- •Структуры и функции
- •Объединения
- •Битовые поля
- •Практический раздел Виртуальные лабораторные работы
- •Лабораторная работа №1
- •Лабораторная работа №2
- •Контрольные работы
- •Содержание пояснительной записки.
- •Задание для контрольной работы №1
- •Задание для контрольной работы №2
- •Варианты индивидуальных заданий
- •Теоретические вопросы
- •Пример оформления титульного листа для виртуальных лабораторных работ
- •Пример оформления титульного листа для контрольных
Структуры и функции
Взаимодействие структур и функций может проявляться двумя способами: структура может быть возвращаемым значением и структура может использоваться в качестве аргумента функции. Кроме того, в обоих случаях могут использоваться указатели на объекты структурных типов.
struct COMPLEX f1(int n);
struct complex * f2(int n);
void f3(struct complex cmpl);
void f4(struct complex *Pcmpl);
Как и для других типах данных, структура передается в функцию по значению – т.е. никакие изменения фактических параметров в функции не меняют значения объектов вне ее (под формальный параметр при вызове строится вспомогательный объект). Для изменения содержимого – структуру следует передавать через указатель на нее.
Объединения
Еще одним агрегирующим типом данных в языке С являются объединения, которые вводятся при помощи служебного слова union.
Объединение – это переменная, которая может содержать (в разное время) объекты различных типов и размеров.
Объединение можно рассматривать как структуру, все элементы которой имеют нулевое смещение от начала. При таком размещении разные элементы занимают в памяти один и тот же участок. Тем самым объединения обеспечивают возможность доступа к одному и тому же участку памяти с помощью переменных разного типа.
Цель введения в программу объединения – иметь переменную, которая хранила бы в себе значения нескольких типов.
Для обращения к элементу объединения используются те же конструкции, что и для обращения к элементу структуры:
<имя объединения>.<имя элемента>
(*<указатель на объединение>).<имя элемента >
< указатель на объединение > -> < имя элемента >
Как и данные других типов, объединение – это конкретный объект, которому выделено место в памяти. В качестве элементов объединения могут выступать не только отдельные переменные, но и массивы или структуры. Размеры участка памяти, выделяемого под объединение, определяются по размеру самого большого элемента объединения.
Определение объединений осуществляется точно так же, как и структур
typedef union REG {
unsigned char Byte[2];
unsigned short Word;
} REGISTR;
REG – имя объединяющего типа;
REGISTR – обозначение объединяющего типа;
Использование объединений позволяет создавать машинно-независимый код. Поскольку компилятор отслеживает настоящие размеры переменных, образующих объединение, уменьшается зависимость от компьютера. Не нужно беспокоиться о размере целых или вещественных чисел, символов или чего-либо еще.
Объединения часто используются при необходимости преобразования типов, поскольку можно обращаться к данным, хранящимся в объединении, совершенно различными способами.
Если для хранения типа текущего значения u использовать переменную utype, то
if (utype == INT)
printf(“%d\n”, u.ival);
else if(utype == FLOAT)
printf(“%f\n”, u.fval);
else if(utype == STRING)
printf(“%s\n”, u.sval);
else
printf(“неверный тип %d в utype\n”, utype);
Инициализировать объединение можно только значением, имеющим тип его первого члена. Упомянутую выше переменную u можно инициализировать только значением типа int.
