Скачать презентацию Информационные технологии Тема 4 Переменные массивы структуры Шевченко Скачать презентацию Информационные технологии Тема 4 Переменные массивы структуры Шевченко

Lektsii_Tema_04_Peremennye_massivy_struktury.ppt

  • Количество слайдов: 17

Информационные технологии Тема 4. Переменные, массивы, структуры Шевченко А. В. Тема 4. Переменные, массивы, Информационные технологии Тема 4. Переменные, массивы, структуры Шевченко А. В. Тема 4. Переменные, массивы, структуры 1

Информационные технологии Объявление и определение переменных Объявление и инициализация Перед использованием в программе любая Информационные технологии Объявление и определение переменных Объявление и инициализация Перед использованием в программе любая переменная должна быть объявлена, то есть ей необходимо присвоить имя и указать тип: Тип_данных имя_переменной[, имя_переменной, … ]; При определении переменных можно одновременно провести их инициализацию: Переменная = значение Пример программы short a; int day, month, year; double PI = 3. 14; unsigned long x, y = 255, z; Шевченко А. В. Тема 4. Переменные, массивы, структуры 2

Информационные технологии Перечисления Объявление перечислимого типа данных Перечисление является типом данных, все возможные значения Информационные технологии Перечисления Объявление перечислимого типа данных Перечисление является типом данных, все возможные значения которого задаются списком целочисленных констант: enum [имя_типа] { значение 1, значение 2, … }; Элементы, которые не инициализированы явно, получают значения предшествующих им элементов, увеличенные на единицу. Первому элементу присваивается значение 0. Пример программы enum Animal {Cat, Dog, Tiger, Elephant}; enum Error {ERR_READ = 101, ERR_WRITE = 102}; Animal a 1; Animal a 2 = Cat; Шевченко А. В. Тема 4. Переменные, массивы, структуры 3

Информационные технологии Массивы Объявление массивов Массив - это объединение нескольких элементов данных одного типа Информационные технологии Массивы Объявление массивов Массив - это объединение нескольких элементов данных одного типа в одну переменную: Тип_данных имя_массива[число_элементов]; Тип и число элементов определяют объем памяти, выделяемой под массив. Число элементов может быть задано константами или константными выражениями. Значение числа элементов должно выражаться целым положительным числом. Пример программы int months[12]; Animal animals[200]; enum {MIN = 20, MAX = 200}; double values[MIN*10]; Шевченко А. В. Тема 4. Переменные, массивы, структуры 4

Информационные технологии Массивы Инициализация массивов При определении можно одновременно инициализировать массив. Для этого после Информационные технологии Массивы Инициализация массивов При определении можно одновременно инициализировать массив. Для этого после имени массива ставят знак равенства и в фигурных скобках по порядку перечисляют значения элементов массива: Тип имя[число_элементов] = { значение 1, значение 2, … }; Нет необходимости инициализировать все элементы. Неинициализированным элементам присваивается значение 0. Если значений больше, чем размер массива, то выдается сообщение об ошибке. Если размер не указан, то он вычисляется по числу элементов. Пример программы float values[3]; float values[3] = {1. 23, 4. 56}; float values[] = {1. 23, 4. 56}; Шевченко А. В. Тема 4. Переменные, массивы, структуры 5

Информационные технологии Доступ к элементам массива Индексация элементов массивов Доступ к элементам массива осуществляется Информационные технологии Доступ к элементам массива Индексация элементов массивов Доступ к элементам массива осуществляется при помощи индекса, указанного в квадратных скобках. Индекс первого элемента массива всегда равен 0. Индекс последнего элемента равен числу элементов массива, уменьшенному на единицу. Пример программы float values[3] = {1. 23, 4. 56}; float x = values[2]; values[2] = 7. 89; int index = 1; float y = values[index+1]; Шевченко А. В. Тема 4. Переменные, массивы, структуры 6

Информационные технологии Строки Представление строк в языке С Строки символов представляют собой массив типа Информационные технологии Строки Представление строк в языке С Строки символов представляют собой массив типа char. В стандарте языка С предусмотрены ASCIIZ строки, заканчивающиеся символом '' (нультерминатором). При инциализации строки константой нуль-терминатор автоматически подставляется компилятором в конец строки. Пример программы char country[] = "Russia"; char country[7] = {'R', 'u', 's', 'i', 'a', ''}; char country[7]; country[0] = 'R'; country[1] = 'u'; country[2] = 's'; country[3] = 's'; country[4] = 'i'; country[5] = 'a'; Шевченко А. В. Тема 4. Переменные, массивы, структуры 7

Информационные технологии Многомерные массивы Представление многомерных массивов в языке С Язык С поддерживает многомерные Информационные технологии Многомерные массивы Представление многомерных массивов в языке С Язык С поддерживает многомерные массивы. Размерность определяется числом индексов, используемых для ссылки на конкретный элемент массива. Элементы многомерного массива последовательно размещаются в памяти, при этом быстрее всего меняется последний индекс. Пример программы int matrix[3][2] = {{11, 12}, {21, 22}, {31, 32}}; int matrix[3][2] = {11, 12, 21, 22, 31, 32}; matrix[0][0] matrix[0][1] matrix[1][0] matrix[1][1] matrix[2][0] matrix[2][1] Шевченко А. В. = = = 11; 12; 21; 22; 31; 32; Тема 4. Переменные, массивы, структуры 8

Информационные технологии Структуры Объявление структур Структуры объединяют под одним именем данные различных типов: struct Информационные технологии Структуры Объявление структур Структуры объединяют под одним именем данные различных типов: struct [имя_структуры] { тип_1 элемент_1; тип_2 элемент_2; … }; Пример программы struct Product { int code; char name[20]; float price; char comment[256]; }; Шевченко А. В. Тема 4. Переменные, массивы, структуры 9

Информационные технологии Определение структурных переменных Объявление структурных переменных Структурные переменные объявляются стандартным образом. В Информационные технологии Определение структурных переменных Объявление структурных переменных Структурные переменные объявляются стандартным образом. В качестве типа используется имя структуры (только С++). Структурные переменные могут быть элементами массивов. Пример программы struct Product product 1; Product products[20]; struct { int x; int y; float length; } vector 1, vector 2; Шевченко А. В. Тема 4. Переменные, массивы, структуры 10

Информационные технологии Инициализация структурных переменных Структурные переменные могут инициализироваться при их определении. Для этого Информационные технологии Инициализация структурных переменных Структурные переменные могут инициализироваться при их определении. Для этого после имени переменной располагают оператор присваивания и в фигурных скобках перечисляют значения полей структуры. Нет необходимости инициализировать все элементы структуры. Пример программы Product products[20] = { {1, "Яблоки", 55. 50, "Сорт "Гольден""}, {2, "Апельсины", 45. 00}, {5, "Бананы", 22. 00}, {8, "Груши", 64. 45, "Очень спелые!"}, {4, "Сливы", 82. 50}, {6, "Грейпфруты"}, }; Шевченко А. В. Тема 4. Переменные, массивы, структуры 11

Информационные технологии Доступ к элементам структур Оператор доступа к элементам структуры Для доступа к Информационные технологии Доступ к элементам структур Оператор доступа к элементам структуры Для доступа к отдельным элементам (полям) структурных переменных используется оператор ". ", который связывает имя структурной переменной и имя поля. Пример программы Product product; product. code product. name product. price product. comment = = 1; "Яблоки"; 55. 50; "Сорт "Гольден""; float price = products[9]. price; Шевченко А. В. Тема 4. Переменные, массивы, структуры 12

Информационные технологии Объединения Объявление Объединения можно рассматривать как структуру, все элементы которой имеют одинаковый Информационные технологии Объединения Объявление Объединения можно рассматривать как структуру, все элементы которой имеют одинаковый начальный адрес в памяти. Синтаксис объединений: union [имя_объединения] { тип_1 элемент_1; тип_2 элемент_2; … }; Пример программы union Date { char date_dos[12]; char date_unix[50]; }; Шевченко А. В. Тема 4. Переменные, массивы, структуры 13

Информационные технологии Определение размера переменных в памяти Оператор sizeof() позволяет определить размер в байтах, Информационные технологии Определение размера переменных в памяти Оператор sizeof() позволяет определить размер в байтах, занимаемый в памяти типом данных, переменной, массивом, структурой. Пример программы long y[] = {43, 56, 34}; short x; int size 1 = sizeof(long); int size 1 = sizeof(short); int size 2 = sizeof(x); Шевченко А. В. int size 2 = sizeof(y); int n = sizeof(y)/sizeof(long); Тема 4. Переменные, массивы, структуры 14

Информационные технологии Созание новых типов данных Оператор typedef позволяет определять новые типы данных на Информационные технологии Созание новых типов данных Оператор typedef позволяет определять новые типы данных на основе уже существующих. Пример программы typedef short number; typedef struct {int x; int y} Vector; typedef long[64] LONG_ARRAY; Шевченко А. В. Тема 4. Переменные, массивы, структуры 15

Информационные технологии Выравнивание данных в структурах A a b Текст программы c sizeof(A) = Информационные технологии Выравнивание данных в структурах A a b Текст программы c sizeof(A) = 12 a 1 a b c a 2 a typedef struct { short a; float b; char c; } A; … A a 1, a 2; a 1. a = -23456; a 1. b = 1234. 56; a 1. c = 8; В структурах компилятор применяет выравнивание. Каждое поле выравнивается на границу, кратную размеру поля Шевченко А. В. Тема 4. Переменные, массивы, структуры 16

Информационные технологии Оптимальное размещение данных в структурах Текст программы A 1 a b c Информационные технологии Оптимальное размещение данных в структурах Текст программы A 1 a b c sizeof(A 1) = 12 A 2 a c b sizeof(A 2) = 8 Шевченко А. В. typedef struct { short a; float b; char c; } A 1; … typedef struct { short a; char c; float b; } A 2; Тема 4. Переменные, массивы, структуры 17