- •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 Передача аргументов
11 Структуры в языке си
Структура языка Си- это эквивалент записи.
Структура - одна или несколько переменных возможно различных типов, которые сгрупированы под одним именем.
ПР.11.1
/* строка таблицы */
Ф.И.О МАТЕМ ФИЗ Р.ЯЗ
Элементы разных типов
ПР.11.2
Представление
/* точка А в пространстве */ можно выполнить с помощью структуры:
xa ya za
Элементы массива безликие.
Элементы структуры имеют имена.
ПР.11.3
/* окружность на плоскости */
x0 y0 R
11.1 Объявление структурного типа в языке СИ
синтаксис:
struct [<имя = тег>]
{<декларация..члена1>;
...
<декларация члена N>;
};
Декларация структуры
= тип
Если после слова struct указать имя (tag), то это есть имя типа, кот. можно далее пользоваться как именем любого другого базового типа (как float, int).
Имена тегов и членов могут совпадать с именами других переменных.
Объявление структурного типа – это образец, а не декларация данных ( память не выделяется).
ПР.11.4 /* для 11.2 */
Struct без тега struct point c тегом
{ int xa; { int xa;
int ya; int ya;
int za; int za;
}; };
ПР.11.5 /* для 11.3 */
Struct Struct circle
{ float x0; { float x0;
float y0; float y0;
float r; float r;
}; };
Декларация переменных структурного типа.
I сп < декларация типа структ. >
<список переменных>; 1 оператор
II сп struct < тег><список переменных>; 2 оператора
ПР.11.6 /* прямая : через точки А и В */
Struct struct point a,b;
{ int xa; см.11.4
int ya;
int za;
} a,b;
Инициализация:
Переменные структурного типа можно инициализировать как и все другие.
ПР.11.7 /* окружность с центром (2;3) и радиусом 5.5 */
Без тега
Struct
{ float x0;
float y0;
float r;
} pr = {2.0, 3.0, 5.5};
c тегом
struct circle pr = {2.0, 3.0, 5.5}
Доступ к элементам структуры
<имя структуры>.<имя члена>
Пример 11.8
/*расстояние от начала координат до точки pt*/
struct
{float x;
float y;} pt={20.0,15.0};
double dist;
dist=sqrt((double)pt.x*pt.x+(double)pt.y*py.y);
printf(“От начала координат”);
printf(“до точки (%f, %f)”,pt.x, pt.y);
printf(“расстояние %f”,dist);
Структуры, вложенные друг в друга
Создаем прямоугольник, заданный координатами двух своих углов. Пусть pt1-левый верхний угол, pt2-правый нижний угол.
pt1 a
pt2
Найти размер стороны а.
struct rectangle
{struct point pt1;
struct point pt2;};
struct rectangle poly;
int r;
r=poly.pt2.x-poly.pt1.x;
Массивы структур