Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2014_2015 / lab2_types.pptx
Скачиваний:
12
Добавлен:
27.12.2015
Размер:
9.57 Mб
Скачать

!!!!! Если в теле цикла всего один оператор, то операторные скобки можно не ставить!!!!!

printf(“#”);

После того как массив определен, в него можно вводить информацию. Начальные значения элементам массива можно присвоить при его определении:

int temps[5] = {45, 56, 12, 98, 12};

Значения элементов массива можно менять в цикле Элемент массива можно использовать в любых инструкциях, где используется

переменная: в процедурах ввода, вывода и в выражениях. К элементу массива всегда обращаются через его индекс.

Фрагмент, запрашивающий у пользователя 10 целых чисел,

и вычисляющий их сумму

. . .

 

int A[10]; // объявляем массив из 10 целых

for(int i=0; i<10; i++)// организуем цикл по i от 0 до 9

{

// приглашение

printf(“\n A[%d]=“, i);

scanf(“%d”,&(A[i]));

// вводим A[i]

}

 

int sum = 0;// объявляем переменную

for(int i=0; i<10; i++) // организуем цикл

sum = sum + A[i];

// в цикле суммируем элементы

. . .

 

использование итерационных циклов for. С их помощью организуется выполнение однотипных операций со всеми элементами массива, в частности, поэлементный ввод-вывод, поэлементные арифметические операции и др.

Массивы в программах C++ могут быть не только

линейными. Довольно частым является использование двух - (и более) -мерных структур. К примеру, прямоугольная матрица – типичная структура, представимая с помощью двумерного массива; а 3D- тензор может быть записан как соответствующий трехмерный массив.

«массиваG[0][0]

5

21

0

12

G[0][3]

тип

G[1][0]

8

-3

14

23

 

Здесь

 

 

 

55

-1

0

78

 

44 4 0 9

G[4][0]

33

0

-2

0

G[4][3]

 

 

 

 

 

 

Доступ к элементам многомерного массива в

программе производится так же, как и в одномерном случае, то есть путем указания имени массива и набора индексов в квадратных скобках.

G[4][3] = 0.

При работе с многомерными массивами удобно испо- льзовать вложенные циклы for. С их помощью можно выполнить заданное действие с каждым из элемен-тов массива путем перебора всех значений индексов.

типизированные константы - для указания размеров массива. Так же, как и переменная, имеет уникальное имя и тип, однако ее значение не может быть изменено по ходу выполнения программы - можно использовать ее в объявлении массива.

должна быть объявлена с ключевым словом const, вслед за которым указывается ее тип (int, float, double, char, и т.д.), далее, через пробел, – ее имя и инициализирующее выражение

const тип имя = выражение;

 

Произведение 2х квадратных матриц

 

 

const int N = 3;// используем константу N=3

 

. . .

};

тип

 

float A[N][N] = { {1, 1, 1},

float

{2, 2, 2},

 

{3, 3, 3} }; // исходная матрица A

 

int

 

float B[N][N] = { {1, 2, 3},

 

 

{1, 2, 3},

 

 

 

{1, 2, 3} }; // исходная матрица B

 

float C[N][N]; // матрица произведения С

for(int i=0; i<N; i++) // цикл по строкам С

{

for(int j=0; j<N; j++) // цикл по столбцам С

{

float s = 0.0; // вспомогательная переменная

for(int k=0; k<N; k++)

// цикл суммирования по k

s += A[i][k]*B[k][j];

// добавляем к s новое слаг-ое

C[i][j] = s; // записываем s в C[i][j]

}

} . . .

Типичные ошибки программирования

1.Выход за пределы массива в цикле for. Возникает при обращении к несуществующему элементу (с отрицательным индексом или индексом, большим настоящего размера массива минус 1). Не определяется компилятором. Может иметь разнообразные последствия – от некорректных результатов работы программы до зависания ПК.

2.Для размера статического массива вместо константного выражения используется имя переменной. Сопровождается сообщением “Error: Constant expression required”.

3.Неправильное объявление двумерного массива m[x][y] как m[x,y]. Аналогичная ошибка – ссылка на элемент m[x,y]. Вызывают сообщения: “Error: Array bounds missing ]” и “Error: Illegal use of …”. 4.Количество начальных значений в списке инициализации массива превышает его размер. Ошибка распознается на этапе компиляции и сопровождается сообщением “Error: Too many initializers”. 5.Попытка изменить значение типизированной константы после ее объявления. Приводит к сообщению “Error: Cannot modify a const object ”.

Определение переменной в дополнении к ее имени и

типу задает начальное значение объявленной переменной. Кроме того, определение предполагает распределение памяти для переменной.

Определение функции специфицирует ее структуру, которая представляет собой смесь из объявлений и

операторов, которые образуют саму функцию. Определение функции также задает имя функции, ее формальные параметры и тип возвращаемой величины.

Исходная программа может содержать любое число директив, указаний компилятору, объявлений и определений.

Понятие функции в C++ аналогично понятиям под-

программы или процедуры, которые имеются в большинстве языков программирования высокого уровня. Их использование связано с принципами модульного программирования, в основе которого лежит разделение программы на автономные фраг-менты, или модули. Такое разделение становится необходимым в случае, когда объем программы выхо-дит за рамки нескольких строчек исходного кода.

Функция в C++ – это автономный программный модуль, решающий некоторую задачу и служащий определенной цели (все рассмотренные ранее функции станд. библиотек stdio.h, conio.h ...). math.h.

Можно создавать собственные функции.

Более того, несколько функций пользователя могут быть впоследствии объединены в библиотеку. Написанная и протестированная один раз, функция может быть использована много-кратно, в том числе в других программах (при условии ее корректного подключения).

Соседние файлы в папке 2014_2015