- •Ф.Ф. Павлов языки программирования
- •Санкт-Петербург
- •230201 - Информационные системы и технологии
- •Тема 2 посвящена изучению жизненного цикла программы и основным этапам решения задач на эвм.
- •Тема 4 изучает типы пользовательских интерфейсов, классификацию диалогов и основные компоненты графических пользовательских интерфейсов.
- •Тема 8 посвящена структурам данных фиксированного размера (массивы), а также типам данных, определяемых пользователем (структуры, объединения, перечисления).
- •Тема 10 изучает динамические структуры данных: виды и способы реализации списков, динамическое выделение памяти.
- •Тема 12 затрагивает вопросы обработки файлов данных: понятия записи, файла данных и способы доступа, операции и средства обработки файлов, контроль операций обработки файлов.
- •Тема 14 вводит в технологию объектно-ориентированного программирования.
- •Раздел I Принципы программирования на языках высокого уровня
- •Тема 1. Эволюция языков программирования
- •1.1. Неструктурированное, «стихийное» программирование
- •1.2. Процедурное (модульное) программирование
- •1.3. Объектно-ориентированное программирование
- •1.4. Компонентные технологии программирования
- •Тема 2. Жизненный цикл программы и основные
- •2.1. Дружественность, жизненный цикл программы
- •2.2. Постановка задачи и спецификация программы
- •2.3. Проектирование и реализация программы
- •2.4. Способы записи алгоритма
- •2.5. Критерии качества программы
- •3.1. Классификация программных продуктов
- •3.3. Модели программирования в ms-dos и Windows
- •Тема 4. Диалоговые программы
- •4.1. Типы пользовательских интерфейсов
- •4.2. Классификация диалогов и их реализация
- •4.3. Основные компоненты графических
- •Тема 5. Программа на языке высокого уровня
- •5.1. Структура программы и функции
- •5.2. Стандартные типы данных и операции над ними
- •5.3. Адресные типы данных: указатели и ссылки
- •5.4. Стандартные библиотеки языка
- •5.5. Классы памяти
- •Раздел 2 Управляющие структуры и структуры данных
- •Тема 6. Представление управляющих структур
- •6.1. Структура следования
- •6.2. Структуры ветвления
- •6.3. Структуры повторения
- •Int kol, //счетчик введенных оценок
- •Int god; //число лет
- •Тема 7. Адресные типы данных
- •7.1. Указатели
- •7.2. Ссылки
- •Тема 8. Структуры данных фиксированного размера
- •8.1. Массивы
- •8.2. Типы данных, определяемые пользователем
- •Тема 9. Функции (процедуры)
- •9.1. Определение, прототип и вызов функции
- •9.2. Передача параметров
- •9.3. Программирование рекурсивных алгоритмов
- •Тема 10. Динамические структуры данных
- •10.1. Списки: основные виды и способы реализации
- •10.2. Динамическое выделение памяти
- •Раздел 3 Процедурное программирование
- •Тема 11. Ввод/вывод данных
- •11.1. Видеофункции библиотеки conio.H
- •11.2. Функции библиотеки потокового ввода/вывода
- •Тема 12. Обработка файлов данных
- •12.1. Записи и файлы данных
- •12.2. Операции и средства обработки файлов
- •12.3. Контроль операций обработки файлов
- •Тема 13 Технология процедурного программирования
- •13.1. Способы конструирования программ
- •13.2. Проектирование программы: методы декомпозиции и и модульного программирования
- •13.3. Реализация программы: методы структурного
- •Тема 14. Введение в технологию объектно-
- •14.1. Основные понятия объектно-ориентированного
- •14.2. Проектирование программы
- •14.3. Реализация программы
- •Утверждаю
- •Рабочая программа
- •Технология программирования
- •Санкт-Петербург
- •Тема 1. Технология программирования и этапы ее
- •Тема 2. Жизненный цикл программы и основные этапы
8.2. Типы данных, определяемые пользователем
К типам, определяемым пользователем, относятся структуры, объединения и перечисления.
Структуры
Структура - это поименованная совокупность данных, состоящая из фиксированного числа компонентов разных типов. Компоненты структуры называются полями.
Пример:
struct tip_rab //Объявление типа структура tip_rab
{
int tabn;
char fio[20];
float zarp;
};
tip_rab rab1,rab2,brigada[10];//Объявление переменных типа
//структура tip_rab
Типы полей структуры - это любые типы, включая тип структура. Таким образом, возможно создание иерархической структуры данных.
Доступ к полям структуры осуществляется с помощью составного идентификатора: per.pole
,где pole – идентификатор (имя) поля структуры;
символ (.) - операция выбора поля структуры.
Пример:
rab1.tabn=1200;
Пример указателей на структуры:
tip_rab rab; //Объявление переменной типа структура tip_rab
tip_rab *p; //Объявление указателя p на тип tip_rab
p=&rab; //Инициализация указателя p адресом rab
//или tip_rab *p=&rab;//Объявление и инициализация указателя
Доступ к полям структуры осуществляется помимо операции (.)-операции прямого выбора поля структуры (rab.tabn), с помощью операции (->) -операции косвенного выбора поля структуры или операции указателя поля (p->tabn). p->tabn==(*p).tabn.
Определение адреса поля структуры выполняется с помощью операции адресации: &prab->tabn, где операция -> имеет более высокий приоритет.
Над целыми структурами, имеющими один и тот же идентификатор типа, возможна операция присваивания.
Пример:
rab1=rab2;
Операции над полями структуры вариируются в зависимости от типа полей. Тип структура является основным типом данных в экономических и управленческих задачах. В качестве параметров функций используются ссылки на тип структура.
Пример:
//Вызываемая функция //Вызывающая функция
void vyvod(tip_rab &x) tip_rab rez;
{ //rez имеет значение
cout<<x.tabn<<'\n' ...
<<x.fio<<'\n' vyvod(rez);
<<x.zarp<<'\n';
}
Если необходимо заблокировать изменение переменной rez от функции vyvod, то необходим модификатор const: const tip_rab &x.
Объединения
Объединение - это поименованная совокупность данных, состоящая из фиксированного числа компонентов разных типов, но активным может быть только один компонент. Многие синтаксические и функциональные свойства объединений совпадают со структурами.
Пример:
union tip_rab //Объявление типа объединение
{
int tabn; //Размер 2 байта
char fio[20]; //размер 20 байт
float zarp; //размер 4 байта
};
tip_rab rab1,rab2;//Объявление переменных типа tip_rab
Размер объединения равен размеру своего максимального компонента, в нашем примере - 20 байт. Одновременно в памяти может находиться значение только одного компонента. Переменная rab1 может одновременно хранить в 20 байтах либо значение int, либо массив char, либо значение float. Значение какого типа, хранимого в памяти в данный момент, контролируется только самим программистом. Операция sizeof (rab1) возвращает значение 20, но когда rab1 содержит объект типа int, 18 байтов остаются неиспользованными (туда помещаются символы-заполнители), а когда rab1 содержит объект типа float, - то 16 байтов.
Доступ к полям объединения такой же, как и в структуре. Объединение может быть инициализировано только одним значением. Объединения соответствуют типам вариантных записей языков Паскаль и Модула-2. Используется как компонент структуры при создании записей с переменной частью.
Перечисления
Перечисление - это упорядоченная последовательность идентификаторов пользователя (перечисляемых констант), принимаемых переменной, причём каждому идентификатору назначается целое значение.
Упорядоченность идентификаторов пользователя определяется возрастающей последовательностью целочисленных значений идентификаторов.По умолчанию идентификаторы инициализируются значениями 0,1 и т.д.
Примеры:
enum selector {vyhod,sozd,prosm,ud,zam};//vyhod=0,sozd=1,...
enum dni {pn,vt,sr,cht,pt,sb,vs};//pn=0,vt=1,...
selector sel1;//Объявление переменной типа selector
dni d; //объявление переменной типа dni
При объявлении перечисления можно явно инициализировать идентификаторы пользователя целыми значениями.
Пример:
enum dni {pn=1,vt,sr,cht=pn+7,pt,sb,vs};//pn=1,vt=2,sr=3,
//cht=8,pt=9,sb=10,vs=11
Пример неименованного перечисления:
enum {false,true}; //символические константы false=0,true=1
Над переменной перечисляемого типа возможны операции:
операция присваивания, например, sel1=sozd; d=vs;
операции отношения, например, if (sel1==sozd) ...;
любые операции, выполняемые над типом int.
Преимущество перечислений - возможность использования идентификаторов, несущих смысл, вместо числовых значений, в результате чего облегчается программирование и повышается читабельность программы.
Контрольные вопросы
Дайте понятие массива.
Как осуществляется доступ к элементам массива?
Как проинициализировать массив при его объявлении?
Перечислите типы данных, определяемые пользователем.
Дайте понятие структуры.
Как осуществляется доступ к элементам структуры?
Дайте понятие объединения.
Дайте понятие перечисления.