- •Часть 1
- •40 01 02 – 02 Информационные системы и технологии (в экономике)
- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Протокол согласования учебной программы по изучаемой учебной дисциплине с другими дисциплинами специальности
- •Содержание дисциплины
- •1. Название тем лекционных занятий, их содержание, объем в часах
- •3. Перечень тем лабораторных занятий, их содержание и объем в часах
- •Теоретический раздел
- •Тема № 1. Введение в программирование
- •Происхождение языка с.
- •Основные характеристики алгоритмического языка с
- •Область применения
- •Системы программирования
- •Исходные и объектные модули, процессы компиляции и связывания
- •Алфавит языка
- •Лексемы (cTokens)
- •Тема № 2. Выражения и операции языка Унарные операции
- •Бинарные операции
- •Условная трехместная операция
- •Операция явного преобразования типа
- •Приоритет операций. Порядок вычисления выражений.
- •Организация ввода-вывода информации
- •Тема № 3. Управляющие структуры. Ветвления и циклы
- •Операторы преобразования данных – это операторы присваивания и произвольные выражения, завершенные символом «;».
- •Операторы управления работой программы называют управляющими конструкциями программы.
- •Тема № 4. Организация данных. Массивы и указатели Массивы
- •Инициализация массивов
- •Указатели
- •Функции для выделения и освобождения памяти
- •Тема № 5. Функции. Символьные строки и функции над ними Определение функций
- •Описание функций
- •Вызов функции
- •Передача параметров
- •Указатели на функции
- •Массивы указателей на функции
- •Главная функция. Передача аргументов главной функции
- •Рекурсивные программы
- •Стандартные функции ввода-вывода строк
- •Стандартные функции обработки строк
- •Тема № 6. Классы памяти и препроцессор языка Си Локальные и глобальные переменные
- •Автоматические (локальные) переменные
- •Внешние (глобальные) переменные
- •Статические переменные
- •Регистровые переменные
- •Область видимости и функции
- •Препроцессор и его директивы
- •Тема № 7. Структуры Декларация структур
- •Инициализация структур
- •Доступ к элементам структур
- •Элементы-массивы
- •Массивы структур
- •Указатели на структуры
- •Доступ к элементам структуры, определенной через указатель
- •Структуры и функции
- •Объединения
- •Битовые поля
- •Практический раздел Виртуальные лабораторные работы
- •Лабораторная работа №1
- •Лабораторная работа №2
- •Контрольные работы
- •Содержание пояснительной записки.
- •Задание для контрольной работы №1
- •Задание для контрольной работы №2
- •Варианты индивидуальных заданий
- •Теоретические вопросы
- •Пример оформления титульного листа для виртуальных лабораторных работ
- •Пример оформления титульного листа для контрольных
Инициализация структур
похожа на инициализацию массивов. Непосредственно в определении объекта после имени и знака «=» в фигурных скобках размещается список присваиваемых значений элементов.
complex sigma={1.7, 12.6};
В отличие от массивов, для которых невозможно выполнить операцию присваивания на уровне целых массивов (необходимо почленное копирование), для структур допустимо присваивание
complex sigma={1.7, 12.6};
complex delta;
delta = sigma;
Однако для структур нельзя использовать операции сравнения даже на равенство – необходимо организовывать сравнение их отдельных элементов.
Доступ к элементам структур
обеспечивается с помощью уточненных имен. Уточненное имя – это выражение с двумя операндами и операцией «точка» между ними. Операция «.» называется операцией доступа к элементу структуры. У нее самый высокий приоритет наряду со скобками.
Уточненное имя используется для выбора правого операнда операции «точка» из структуры, задаваемой левым операндом. Уточненные имена элементов структур обладают всеми правами объектов соответствующих типов. Их можно использовать в выражениях, их значения можно вводить с клавиатуры и т.д.
if (delta.real > 0) …
sigma.real +=2;
n = sigma.imag * sigma.imag;
strcpy(work, Var1.Name);
Элементы-массивы
В качестве элементов структуры могут указываться массивы. Предположим, мы хотим описывать изображение, представленное совокупностью разноцветных шаров в пространстве. Каждый шар тогда определяется структурой
struct BALL{
char color;
double radius;
float coord[3];
} ball ={‘r’, 3.4, {1.0, 2.2, -3.5}};
Вложенные структуры
В качестве элементов структуры могут указываться другие структуры.
struct date {
int day;
int month;
int year;
}
struct birth {
char Where[40];
struct date When;
};
. . .
struct birth B;
. . .
printf(“birthday - %2d.%2d.%4d\n”, B.When.day, B.When.month, B.When.year);
Массивы структур
Структуры могут группироваться в массивы. В этом случае их определение выглядит как
complex Vl [100];
struct COMPLEX V2[200];
Для доступа к элементам структур, представленных массивом, используются уточненные имена с индексированием первого имени (имени массива структур).
struct BALL VarBalls[100];
…
…VarBalls[2].color //Цвет третьего шара
…VarBalls[k+1].coord[0] //Первая координата k+1-го шара
Указатели на структуры
Указатели на структуры определяются точно так же, как и указатели на другие типы данных.
struct COMPLEX *pC;
complex *pcmpl;
Можно вводить указатели и в качестве обозначений структур, т.е.
struct birth {
char Where[40];
struct date When;
} *pB1, *pB2;
- это для одновременного описания структуры и ее определения (создаются указатели pB1 и pB2.
Возможно также:
typedef struct COMPLEX
{
double real;
double imag;
} complex, *ptr_comp;
и тогда для определения переменной типа указатель на структуру:
ptr_comp px [12];
complex * px [12];
- одинаково определяют массивы из 12-ти указателей на структуру complex.
Доступ к элементам структуры, определенной через указатель
осуществляется одним из двух способов
(*<указатель на структуру>).<имя элемента>
<указатель на структуру>-><имя элемента>
Первый способ традиционный, он основан на равенстве
если pAdr == &adr, то *pAdr == adr
В программах обычно применяют второй способ, связанный с использованием специальной операции «->». Эта операция, наряду со скобками и операцией «.» имеет наивысший приоритет. Операция «стрелка» обеспечивает доступ к элементу структуры через адресующий ее указатель того же структурного типа. Операция «стрелка» иногда называется операцией косвенного выбора элемента структурного объекта, адресуемого указателем.
Если struct pBall *pB1 = &B1; то будут справедливы равенства:
pB1 -> color = (*pB1). color
pB1 -> coord = (*pB1). coord
Тип результата операции «стрелка» совпадает с типом операнда, на который она нацелена.
if (pdelta->real > 0) …
psigma->real +=2;
n = ptr_c->imag * ptr_c->imag;
