- •Антонюк в.А., Задорожный с.С.
- •Первая программа на с. История языка программирования с.
- •Среда программирования «Microsoft Visual Studio.Net».
- •Структура программы.
- •Пример простейшей программы:
- •Представление данных.
- •Операции.
- •Ввод и вывод алфавитно-цифровой информации.
- •Математические функции.
- •Практическое задание №1.
- •Условия в вычислениях. Ветвящиеся и итерационные алгоритмы Условная операция присваивания. Операторы if ... Else и switch.
- •Ветвящиеся алгоритмы.
- •Циклические и рекурсивные алгоритмы. Операторы циклов for, do, while.
- •Практическое задание №2.
- •Функции.
- •Определение функции.
- •Прототипы функций.
- •Вызов по значению и вызов по ссылке.
- •Вычисление функций путем разложения в ряд.
- •Поиск корней функции методом деления отрезка пополам.
- •Поиск корней функции методом касательных.
- •Практическое задание №3.
- •Массивы и указатели. Работа с файлами. Объявления массивов и указателей.
- •Доступ к элементам массива.
- •Передача массивов функциям.
- •Указатели.
- •Динамическое выделение и освобождение памяти.
- •Практическое задание.
- •Потоковые функции.
- •Низкоуровневый ввод и вывод.
- •Ввод и вывод символов, строк, слов.
- •Форматированный ввод и вывод.
- •Потоки cin, cout, cerr.
- •Практическое задание №4.
- •Структуры и объединения. Синтаксис структур.
- •Доступ к элементам структуры.
- •Передача структур в функции.
- •Структуры и битовые поля.
- •Объединения.
- •Дополнительные средства (typedef и enum).
- •Введение в объектно-ориентированное программирование. Принципы объектно-ориентированного программирования.
- •Терминология объектно-ориентированного программирования.
- •Структура как простейший класс.
- •Inline методы.
- •Указатель this.
- •Конструкторы и деструкторы.
- •Перегрузка методов класса.
- •Перегрузка операций.
- •Практическое задание.
- •Производные классы. Полиморфизм
- •Виртуальные функции
- •Использование дружественных функций.
- •Практическое задание.
- •Работа в объектно-ориентированной среде.
- •Объектно-ориентированные стековые операции.
- •Объектно-ориентированные связанные списки.
- •Практическое задание.
- •Классы iostream.
- •Потоковый ввод-вывод.
- •Буферизованные потоки.
- •Строковые потоки.
- •Двоичные файлы.
- •Вычисления в интерактивном режиме.
- •Графика в системе matlab.
- •3. Программирование m-функций.
- •4. Создание законченных приложений на основе графического интерфейса пользователя.
- •4. Создание законченных приложений на основе графического интерфейса пользователя.
- •Глава 7. Дополнительные возможности системы matlab Объекты и классы. Переопределение операций.
- •Написание расширений matlab на языке c
- •Программные интерфейсы
- •Настройка среды для сборки проекта
- •Пример программы
- •Вызов команд среды matlab из mex-файла
-
Структуры и объединения. Синтаксис структур.
Структуры в языке С аналогичны массиву тесно связанных атрибутов. Однако, в отличие от массива структура позволяет иметь смешанные атрибуты различных типов данных.
Структура создается при помощи ключевого слова struct, за которым следует поле тега (имя структуры) и список элементов. Описание структуры заканчивается точкой с запятой, т.к. оно является оператором:
struct поле_тега
{
тип_элемента1 имя_элемента1;
тип_элемента2 имя_элемента2;
тип_элемента3 имя_элемента3;
…
};
Пример описания структуры:
struct stboat
{
char type[16]; // тип
char model[16]; // модель
char title[20]; // имя
int year; // год выпуска
double price; // цена
};
Эта структура описывает новый тип данных stboat и содержит три текстовых поля, одно целое и одно действительное.
С описанной структурой не связывается никакая переменная. Для создания новой переменной используется оператор (слово struct является необязательным):
struct имя_структуры имя-переменной;
Для вышеприведенного примера можно создать переменную used_boat:
struct sboat used_boat;
Если со структурой связывается только одна переменная, то ее можно объявить непосредственно в описании структуры перед точкой с запятой. Поле тега в этом случае можно опустить:
struct
{
char type[16]; // тип
char model[16]; // модель
char title[20]; // имя
int year; // год выпуска
double price; // цена
} used_boat;
Доступ к элементам структуры.
Для обращения к отдельным элементам структуры используется операция обращения к члену структуры – “точка”. Она разделяет имя структурной переменной и имя поля, например
used_boat.year=1955;
printf(“%lf”,used_boat_price);
Элементы структуры обрабатываются также, как и любые другие переменные С, необходимо только использовать операцию «точка».
Можно создавать массивы структур и указатели на структуру, для обращения к элементам структуры предусмотрен оператор “->” (стрелка, он состоит из знаков минус и больше).
sboat boat_array[10];
boat_array[3].year=1980;
sboat *pboat;
pboat=&used_boat;
pboat->price=12570.25;
Передача структур в функции.
В функцию информация о структуре может передаваться как по значению, так и по ссылке. В первом случае в функцию передается копия структуры, что может снизить эффективность программы.
При передаче по ссылке копирование не выполняется, однако программа получает доступ к элементам структуры и может их изменять.
Можно также использовать указатели на структуру.
Структуры и битовые поля.
В языке С имеется возможность доступа к отдельным разрядам в более крупном типе данных, например в байте. Это полезно, например, для изменения масок, установки флагов и т.д. В этом случае описание структуры выглядит следующим образом:
struct поле_тега
{
тип_элемента1
имя_поля1:колич_бит1,
имя_поля2:колич_бит2,
имя_поля3:колич_бит3,
…;
тип_элемента2
…
};
В таких структурах можно использовать только целочисленные типы:
struct keybits
{
unsigned char
shift :1,
ctrl :1,
scrool:1,
lock :1;
};
Объединения.
Объединения – еще один тип данных, которые можно использовать различным образом. К примеру, некоторые данные в одном случае могут рассматриваться как целые, а в другом – как числа с плавающей точкой. По виду объединения напоминают структуры. Объединение тоже содержит несколько типов данных, однако, эти данные занимают одну и ту же область памяти.
Объединение создается при помощи ключевого слова union:
union поле_тега
{
тип_элемента1 имя_элемента1;
тип_элемента2 имя_элемента2;
тип_элемента3 имя_элемента3;
…
};
К членам объединения можно обращаться так же, как и к членам структур, либо через операцию «точка», либо через операцию «->» – для указателей:
union many_types
(
char c[4];
int ivalue[2];
float fvalue;
} type1;
type1.fvalue=1.5;
printf(“%i %i”,type1.ivalue[0],type1.ivalue[1]);