- •1) Общие сведения об информации, компьютерах и программировании.
- •2) Краткая характеристика современных компьютеров
- •3) Общие принципы построения эвм
- •4) Особенности пк
- •5) Основный идеи структурного программирования:
- •4)Вызов подпрограммы
- •6) Языки программирования
- •9) Базовые типы данных(стандартные)
- •12) Операции
- •11) Переменные и выражения
- •13) Операторы
- •14) Указатели.
- •15) Операции с указателями.
- •17) Строки. Нуль-символ.Реализация операций присваивания, сравнения и компирования строк.
- •18) Типы определяемые программистом.
- •1. Переименование типов
- •2.Перечисление.
- •3.Структуры
18) Типы определяемые программистом.
1. Переименование типов
typedef unsigned int unit;
typedef char Msg[10];
unit I,j;
Msg str[10];
2.Перечисление.
Перечисляемый тип данных определятся списком целочисленных констант.
Компилятор обеспечивает для переменных, отнесенных к этому типу. Принятие значений только из списка констант.
enum err {err_read, err_write, err_convert}
err error = err_read;
switch(error)
{
case err_read: break;
}
другой пример
enum { two =2, three, four, ten = 10, eleven};
//при отсутствии инициализации каждой следующей константе присваивается значение на еденицу больше значения предыдущей
значения констант в списке могут совпадать, но имена должны быть различны.
При выполнении арифметических операций константы рассматриваются, как целочисленные.
т. к. перечислимый тип определяется программистом, то можно вводить собственные операции.
3.Структуры
Структура — совокупность разнотипных данных, объединенных одним
"struct"[имя] "{"тип1 элемент1; тип2 элемент2; ... "}" [список описателей];
//primer
struct worker{
char fio[30];
int date, code;
double celery;
};
worker staff[100], *ps;
элементы структур(поля) могут иметь любой тип кроме типа этой же структуры, но могут быть указателями на него.
Имя структуры можно использовать сразу после его объявления, а определение дать позднее.
Например
struct list;
struct link
{
list *p;
link *prew, *succ;
}
для инициализации структуры, значения ее элементов перечисляются в порядки их описаний.
struct
{
char fio[30];
int date, code;
double celery;
}
worker = {"ivanov",31,215,312.60}
return 0;
При инициализации массивов структур следует заключать в фигурные скобки каждый элемент массива.(внешнего)
struct complex
{
float real, im;
};
complex[2][3]={
{{1,1},{ и т.д.}
}
для переменных одного и того же типа определена операция присваивания.
доступ к полям структуры определяется с помощью операции выбора.
если элементом структуры является другая структура то доступ к ее элементам выполняется через 2 операции выбора.
Например
struct A {int a; double x;};
struct B {A a; doble x;};
x[2];
x[0].a.a = 1;
x[1].x = 0.1;
поля структур могут иметь одинаковые имена, т.к. у них разная область видимости.
Особый вид полей структуры — битовые поля.
При описании битового поля после имени через двоеточие указывается длина поля в битах.
Адрес битового поля получить нельзя, но в основном они используются как и обычные поля.
Пример
struct Options
{
bool centerX: 1;
bool centerY: 1;
unsigned int shadow: 2;
unsigned int palette: 4;
}
размещение битовых полей в памяти зависит от компилятора и аппаратуры.
Объединения
Объединения — частный случай структуры, когда все поля располагаются по одному и тому же адресу.
Длина объединения равна наибольшей из длин полей.
В каждый момент времени переменная типа union содержит одно значение.
#include <iostream>
using namespace std;
int main()
{enum paytype (card, check);
paytype ptype;
union payment;
{char card[25];
long check;
} info:
switch(ptype)
{
case card: cout <<"Oplata" << info.card; break;
case check :
и т.д.
Объединение можно использовать в качестве поля структуры, при этом следует добавить еще одно поле, которое определяет какое именно элемент объединения используется в данный момент
Пример
#include <iostream>
using namespace std;
int main()
{
enum paytype{card, check};
struct
{paytype ptype;
union
{char card[25];
long check;
};
} info;
//...
switch(info.ptype)
{case card : cout <<"Oplata po karte" <<info.card; break;
case check : cout << "oplata chekom "<< info.check ; break;
}
return 0;
}
на объединение налагаются следующие ограничения
1.объединение может инициализироваться только значением его первого элемента
2. объединение не может содержать битовые поля.
3. объединение не может содержать виртуальные методы, конструкторы, деструкторы и операцию приссваивания.
4. не может входить в иерархию классов
