Массивы. Классификация данных по структуре

Содержание

Слайд 2

КЛАССИФИКАЦИЯ ДАННЫХ ПО СТРУКТУРЕ

КЛАССИФИКАЦИЯ ДАННЫХ ПО СТРУКТУРЕ

Слайд 3

ОПРЕДЕЛЕНИЕ Массив - это сложное данное, состоящее из конечного числа упорядоченных

ОПРЕДЕЛЕНИЕ

Массив - это сложное данное, состоящее из конечного числа упорядоченных компонент,

имеющих одно имя, одинаковый тип и расположенных в последовательных ячейках памяти компьютера.
Упорядоченность компонент массива: компоненты пронумерованы.
Доступ к элементу массива - по его номерам (индексам).
Размерность массива - количество индексов у его элементов.
Размер - количество значений каждого индекса.
Слайд 4

МАССИВЫ В ПРОГРАММЕ ОПИСАНИЕ ОБРАЩЕНИЕ К ЭЛЕМЕНТУ МАССИВА тип имя[размер_1]…[размер_N] СИ

МАССИВЫ В ПРОГРАММЕ

ОПИСАНИЕ

ОБРАЩЕНИЕ К ЭЛЕМЕНТУ МАССИВА

тип имя[размер_1]…[размер_N]

СИ

имя[индекс_1]…[индекс_N]

СИ

индекс_i - целое выражение, индекс_i

= 0,1,…,N-1

В Си элементы массивов нумеруются, начиная с нуля.

размеры - только константы

Слайд 5

МАССИВЫ В СИ-ПРОГРАММЕ Примеры. float a[20]; а[0], a[1],...,a[19]. int b[3][5]; b[0][0]

МАССИВЫ В СИ-ПРОГРАММЕ

Примеры. float a[20];

а[0], a[1],...,a[19].

int b[3][5];
b[0][0] b[0][1] ... b[0][4]
b[1][0]

b[1][1] ... b[1][4]
b[2][0] b[2][1] ... b[2][4]

В памяти компьютера элементы массива расположены по строкам (чаще меняется последний индекс)

Первый индекс - номер строки, второй - столбца

Слайд 6

Примеры программ с массивами Дан массив а из n элементов, n≤20.

Примеры программ с массивами

Дан массив а из n элементов, n≤20. Вычислить

сумму положительных и количество неположительных элементов массива.
Состав данных
Слайд 7

Блок-схема алгоритма Программа #include void main() {float a[20],s; int k,i,n; cout

Блок-схема алгоритма

Программа

#include
void main()
{float a[20],s; int k,i,n;
cout<<"Vvedite n\n";
cin>>n;
cout<<"Vvedite massiv iz"<

/* Далее цикл для поэлементного ввода массива*/
for (i=0; i cin>>a[i];
/*Далее алгоритм по блок-схеме*/
s=0; k=0;
for (i=0; i if (a[i]>0)
s=s+a[i];
else
k=k+1;
cout<<" s= “< cout<<” “<<”k=“k<<”\n”;
}
Слайд 8

Инициализация массивов при описании в Си Инициализация - задание начальных значений.

Инициализация массивов при описании в Си

Инициализация - задание начальных значений.

Одномерные массивы
сhar

a[6]={'A', 'B', 'C', 'D'};

сhar a[ ]={'A', 'B', 'C', 'D'};

Размер массива определяется количеством инициализирующих значений

если a - локальная переменная

Слайд 9

Локальные и глобальные данные

Локальные и глобальные данные

Слайд 10

Инициализация массивов при описании в Си Двумерные массивы Присваивание перечисленных значений

Инициализация массивов при описании в Си

Двумерные массивы
Присваивание перечисленных значений происходит по

строкам (в соответствии с расположением массивов в памяти компьютера).
int m[2][3]={0,1,2,5,6,7}; int m[ ][3]={0,1,2,5,6,7};

0

2

5

7

6

1

int m[ ][3]={{0},{1,2}};

Слайд 11

Инициализация массивов при описании в Си Вывод: при объявлении массива количество

Инициализация массивов при описании в Си

Вывод: при объявлении массива количество его

элементов должно быть задано или явным указанием константы в квадратных скобках или количеством значений при инициализации.
Исключение: массивы-аргументы функций.
Снятие ограничения: динамические массивы
Слайд 12

Указатели в Си Указатель - это специальное данное, которая содержит адрес

Указатели в Си

Указатель - это специальное данное, которая содержит адрес другого

данного.

Основные операции для работы с указателями:
* - взятие содержимого по адресу (*i - содержимое переменной с адресом i) & - взятие адреса (&a - адрес переменной а).
Описание имеет вид:
тип *имя_указателя;
При описании указателя задается тип значения, на которое он указывает. Примеры описаний: int *i, j, *pointj; int v1, *pointv1=&v1, *p=(int*)200;

Слайд 13

Указатели в Си

Указатели в Си

Слайд 14

Указатели в Си ВНИМАНИЕ! нельзя брать содержимое от константы без приведения

Указатели в Си

ВНИМАНИЕ!
нельзя брать содержимое от константы без приведения типа; запись

*200 является некорректной в отличие от *(int*)200;
нельзя брать адрес явной константы (например, некорректна запись &200), в Си адрес явной константы считается недоступным;
нельзя определять адрес выражения.
Слайд 15

Указатели в Си Размер памяти, отводимой под указатель, зависит: от разрядности адресной шины; от модели памяти.

Указатели в Си

Размер памяти, отводимой под указатель, зависит:
от разрядности адресной шины;


от модели памяти.
Слайд 16

Указатели в Си Операции над указателями: * сравнения ( , >=,

Указатели в Си

Операции над указателями:
*
сравнения (<, <=, >, >=, ==, !=)

- с указателями такого же типа или с NULL;
присваивания - значений указателей того же типа или NULL;
арифметические операции сложения, вычитания (с константой)
инкремента и декремента
Слайд 17

Указатели в Си Результат арифметической операции над указателями зависит не только

Указатели в Си

Результат арифметической операции над указателями зависит не только от

значения операндов, но и от типа, с которым связан указатель.
р=р+k, ⇔ р увеличивается на k*sizeof (тип)
Пример. int *p; long int *pp;…//MS DOS p++; /*p увеличилось на 2*/
pp++; /*pp увеличилось на 4*/
Слайд 18

Связь массивов с указателями в Си Одномерные массивы Имя одномерного массива

Связь массивов с указателями в Си

Одномерные массивы
Имя одномерного массива является указателем-константой,

равной адресу начала массива, т. е. адресу элемента с индексом 0 (первого элемента).
int a[10];
&a[0] эквивалентно a,
a[0] эквивалентно *a,
&a[i] эквивалентно a+i (i=0,1,...9),
a[i] эквивалентно *(a+i).
Слайд 19

Связь массивов с указателями в Си

Связь массивов с указателями в Си

Слайд 20

Двумерные массивы b[i][j] ⇔ *(b[i]+j) ⇔ *(*(b+i)+j); &b[i][j] ⇔ b[i]+j ⇔

Двумерные массивы
b[i][j] ⇔ *(b[i]+j) ⇔ *(*(b+i)+j);
&b[i][j] ⇔ b[i]+j ⇔ *(b+i)+j


Для любого из трех обозначений элемента двумерного массива программа в кодах получается практически одинаковой по производительности, хотя при использовании арифметики указателей вместо квадратных скобок несколько более короткой.
Хороший стиль программирования предполагает употребление в пределах одной программы одного (из трех) обозначений.

Связь массивов с указателями в Си

Слайд 21

Примеры программ с массивами Дан массив а из n элементов, n≤20.Найти

Примеры программ с массивами

Дан массив а из n элементов, n≤20.Найти максимальное

значение элементов массива.
Состав данных