Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему ЛЕКЦИЯ № 1.Массивы в С++

Содержание

Массив – именованная последовательность областей памяти, хранящих однотипные элементы
ЛЕКЦИЯ № 1. Массивы в С++ Массив – именованная последовательность областей памяти, хранящих однотипные элементы Синтаксис определения массива без дополнительных спецификаторов и модификаторов []; или []; Тип при объявлении массив инициализируется;массив объявлен как формальный параметр функции;массив объявлен как ссылка Инициализация одномерных массивов Например:float t[5]={1.0, 4.3, 8.1, 3.0, 6.74};char b[7]={'П','р','и','в','е','т'};/*в данных примерах Пусть необходимо проинициализировать массивы для создания таблицы сообщений об ошибках:char e1[12] = Обращение к элементам одномерного массиваАдресация элементов массива осуществляется с помощью индексированного имени. Таким образом, чтобы обратиться к элементу массива, надо указать имя массива и Определение размера памяти для одномерных массивов Массив занимает непрерывную область памяти. Для Пример 1. Определение размера памяти одномерного массива.#include double d_mas[2*q-r];int w=sizeof(d_mas); cout Результат выполнения программы: i_mas[10] занимает 40 байт – 4 байта (тип int Указатели и одномерные массивыПоскольку имя массива является указателем, допустимо, например, такое присваивание: Адрес каждого элемента массива можно получить, используя одно из трех выражений:А обращение Указатели в одномерном массиве Пример 2:#include Использование элементов массивов в выражениях (операции с элементами массивов) С элементами объявленного Генерация одномерных массивов 		Генерацию массива (массивов) в программе оформляют в виде отдельной Вывод одномерных массивов Одномерные массивы удобно выводить в строку или в столбец printf( }} //Описание функции вывода массива в строкуvoid out (int k,int x[max]){ int i; Пример 4. Описание функции генерации массива значениями элементов арифметической прогрессииvoid gen(int k,int Пример 5. Описание функции вывода массива в столбецvoid out (int k,int x[max]){ Для написания кода генерации массива случайными целыми числами используется:Функция srand(). Синтаксис:void srand(unsigned Функция rand(). Синтаксис:int rand(void); – функция возвращает псевдослучайное число в диапазоне от Пример 6. Описание функции генерации массива случайными вещественными числами на[a,b)void gen(int k,int Ключевые термины:Генерация массива – это автоматическое формирование значений его элементов.Значение элемента массива Вопросы для самоконтроляПочему в программе на С++ необходимо, чтобы был известен размер
Слайды презентации

Слайд 2 Массив – именованная последовательность областей памяти, хранящих однотипные

Массив – именованная последовательность областей памяти, хранящих однотипные элементы

элементы


Слайд 3 Синтаксис определения массива без дополнительных спецификаторов и модификаторов

Синтаксис определения массива без дополнительных спецификаторов и модификаторов []; или [];

[];
или
[];
Тип – тип

элементов объявляемого массива. Элементами массива не могут быть функции, файлы и элементы типа void.


Слайд 4 при объявлении массив инициализируется;
массив объявлен как формальный параметр

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

функции;
массив объявлен как ссылка на массив, явно определенный в

другом файле.

Например:
int a[100]; //массив из 100 элементов целого типа
double d[14]; // массив из 14 элементов типа double
char s[]="Программирование"; //символьный массив
const int t=5, k=8;float wer[2*t+k]; //массив из 2*t+k элементов вещественного типаint sample[853]; /*массив из элементов sample[0], sample[1], sample[2],...,sample[852] типа int*/ равносильно объявлению
const int N_max=853;int sample[N_max]; //равносильно объявлению
#define N_max 853...int sample[N_max];

Слайд 5 Инициализация одномерных массивов
Например:
float t[5]={1.0, 4.3, 8.1, 3.0, 6.74};
char

Инициализация одномерных массивов Например:float t[5]={1.0, 4.3, 8.1, 3.0, 6.74};char b[7]={'П','р','и','в','е','т'};/*в данных

b[7]={'П','р','и','в','е','т'};/*в данных примерах длину массива компилятор вычисляет по количеству

начальных значений, перечисленных в фигурных скобках*/
int d[10]={1, 2, 3};
char a[10]="Привет";/*в данных примерах определяется значение только заданных переменных d[0],d[1],d[2] и a[0],a[1],...,d[9], остальные элементы не инициализируются*/

Слайд 6 Пусть необходимо проинициализировать массивы для создания таблицы сообщений

Пусть необходимо проинициализировать массивы для создания таблицы сообщений об ошибках:char e1[12]

об ошибках:
char e1[12] = "read error\n";
char e2[13] = "write

error\n";
char e3[18] = "cannot open file\n";
Компилятор С++ сам сформирует нужное значение по количеству инициализирующих данных. В нашем случае под массив e2 будет отведено 13 байтов, включая последний байт с нулевым кодом, завершающий каждую строку. Оператор
printf("%s имеет длину, равную %d\n",e2,sizeof (e2)); выведет на экран write error имеет длину, равную 13


Слайд 7 Обращение к элементам одномерного массива

Адресация элементов массива осуществляется

Обращение к элементам одномерного массиваАдресация элементов массива осуществляется с помощью индексированного

с помощью индексированного имени. Синтаксис обращения к элементу массива:
ИмяМассива[ВыражениеТипаКонстанты];


или
ИмяМассива[ЗначениеИндекса];

Слайд 8 Таким образом, чтобы обратиться к элементу массива, надо

Таким образом, чтобы обратиться к элементу массива, надо указать имя массива

указать имя массива и номер элемента в массиве (индекс).
Например:
a[0]

– индекс задается как константа,
d[55] – индекс задается как константа,
s[i] – индекс задается как переменная,
w[4*p] – индекс задается как выражение.
Следует помнить, что компилятор в процессе генерации кода задет начальный адрес массива, который в дальнейшем не может быть переопределен. Начальный адрес массива – это адрес первого элемента массива. Вообще в программе начальным адресом массива считается ИмяМассива либо &ИмяМассива[0]. Имя массива считается константой-указателем, ссылающимся на адрес начала массива.


Слайд 9 Определение размера памяти для одномерных массивов
Массив занимает непрерывную

Определение размера памяти для одномерных массивов Массив занимает непрерывную область памяти.

область памяти. Для одномерного массива полный объем занимаемой памяти

в байтах вычисляется по формуле:
Байты = sizeof (тип) * размер массива
Например, пусть одномерный массив A состоит из элементов, расположенных в памяти подряд по возрастанию индексов, и каждый элемент занимает по k байт. Тогда адрес i -того элемента вычисляется по формуле:
адрес(A[i]) = адрес(A[0]) + i*k

Слайд 10 Пример 1. Определение размера памяти одномерного массива.
#include "stdafx.h“
#include

Пример 1. Определение размера памяти одномерного массива.#include


using namespace std;
#define v 4
#define p 3 
int _tmain(int argc,

_TCHAR* argv[]){
const int q=4, r=1;
int i_mas[10];
int k=sizeof(i_mas);
cout << "i_mas[10] занимает " << k << " байт\n";
float f_mas[7]={2.0,4.5,8.3,7.0,1.0};
int t=sizeof(f_mas);
cout << "f_mas[7]={2.0,4.5,8.3,7.0,1.0} занимает "<< t<<"байт\n";


Слайд 11 double d_mas[2*q-r];
int w=sizeof(d_mas);
cout

double d_mas[2*q-r];int w=sizeof(d_mas); cout

<< "d1_mas[2*v/p] занимает " << w1 << " байт\n";  
char c_mas[]="Программирование";
int s=sizeof(c_mas);
cout << "c_mas[]=\"Программирование\"занимает"<< s <<"байт\n"; 
system("pause");
return 0;
}

Слайд 12 Результат выполнения программы:

i_mas[10] занимает 40 байт – 4

Результат выполнения программы: i_mas[10] занимает 40 байт – 4 байта (тип

байта (тип int ) * 10 (количество элементов массива)
f_mas[7]

= {2.0,4.5,8.3,7.0,1.0} занимает 28 байт – 4 байта (тип float ) * 7 (объявленное количество элементов массива)
d_mas[2*q-r] занимает 56 байт – 8 байт (тип double ) * 7 (вычисленное через формулу количество элементов массива)
d1_mas[2*v/p] занимает 16 байт – 8 байт (тип double ) * 2 (вычисленное через формулу количество элементов массива)
c_mas[]="Программирование" занимает 17 байт – 1 байт (тип char ) * 17 (16 знаков + нулевой байт '\0' )


Слайд 13 Указатели и одномерные массивы
Поскольку имя массива является указателем,

Указатели и одномерные массивыПоскольку имя массива является указателем, допустимо, например, такое

допустимо, например, такое присваивание:
int arrаy[25];int *ptr;ptr=array;
Здесь

указатель ptr устанавливается на адрес первого элемента массива, причем присваивание ptr = arrаy можно записать в эквивалентной форме ptr=&arrаy[0].


Слайд 14 Адрес каждого элемента массива можно получить, используя одно

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

из трех выражений:










А обращение к пятому элементу массива можно

записать как:
array[4], *( array + 4), *(рtr + 4). Эти операторы вернут пятый элемент массива.


Слайд 15 Указатели в одномерном массиве Пример 2:
#include "stdafx.h "
#include
using

Указатели в одномерном массиве Пример 2:#include

namespace std;
int _tmain(int argc, _TCHAR* argv[]){
int array[10];
int *p;


p=&array[0]; /*эквивалентные операции присваивания*/ *array=2; printf("%d\n", array[0]);
array[0]=2; printf("%d\n", array[0]);
*(array+0)=2; printf("%d\n", array[0]);
*p=2; printf("%d\n", array[0]);
p[0]=2; printf("%d\n", array[0]);
*(p+0)=2; printf("%d\n", array[0]);
system("pause");
return 0;}

Слайд 16 Использование элементов массивов в выражениях (операции с элементами

Использование элементов массивов в выражениях (операции с элементами массивов) С элементами

массивов)

С элементами объявленного массива можно выполнять все действия, допустимые

для обычных переменных этого типа (выше был приведен пример целочисленного массива, т.е. типа int ). Например, возможны операторы присваивания:
hours[4] = 34;hours[5] = hours[4]/2; или логические выражения с участием элементов массива:
if (number < 4 && hours[number] >= 40) { ... }
Присвоить значения набору элементов массива часто бывает удобно с помощью циклов for или while. Для массивов не допустима операция прямого присваивания.


Слайд 17 Генерация одномерных массивов

Генерацию массива (массивов) в программе оформляют

Генерация одномерных массивов 		Генерацию массива (массивов) в программе оформляют в виде

в виде отдельной функции. Стандартными способами генерация массивов являются:
ввод

данных с клавиатуры,
формирование значений через генератор случайных чисел,
вычисление значений по формуле,
ввод данных из файла.
При этом при формировании значений элементов используют цикл по индексам элементов или арифметические операции с указателем на массив. В данной работе рассмотрим первые три способа генерации массивов ( Примеры 3, 4, 6 ).


Слайд 18 Вывод одномерных массивов
Одномерные массивы удобно выводить в строку

Вывод одномерных массивов Одномерные массивы удобно выводить в строку или в

или в столбец в зависимости от задачи ( Пример

3 и 4 ).
Пример 3.
/*Генерация целочисленного массива числами с клавиатуры и вывод массива в строку*/
#include "stdafx.h "
#include
using namespace std;
#define max 20 
void gen (int k,int *pp);//прототип функции генерации массива
void out (int k,int x[max]);//прототип функции вывода массива 
int _tmain(int argc, _TCHAR* argv[]){
int a[max],n,*p;
do {

Слайд 19 printf("\nВведите количество элементов массива n (n

printf(

("%d",&n); }
while (n>max); //проверка выхода за

границы массива
p=a;
gen(n,p);
out(n,a);
system("pause");
return 0;}
//Описание функции генерации массива с клавиатуры
void gen(int k,int *pp){
/*передача указателя как параметра позволяет вернуть сформированный массив в основную программу*/
int i; printf("\nВведите значения %d элементов массива: \n",k); for (i=0;i printf("x[%d]= ",i);
scanf("%d",pp++);

Слайд 20 }}
 //Описание функции вывода массива в строку
void out (int

}} //Описание функции вывода массива в строкуvoid out (int k,int x[max]){ int

k,int x[max]){
int i;
printf("\nВывод значений %d элементов

массива в строку: \n",k);
for (i=0;iprintf("%d\t",x[i]);
}


Слайд 21 Пример 4. Описание функции генерации массива значениями элементов арифметической

Пример 4. Описание функции генерации массива значениями элементов арифметической прогрессииvoid gen(int

прогрессии

void gen(int k,int x[max]) {
int i,d;
printf ("\nВведите

нулевой элемент прогрессии: ");
scanf("%d",&x[0]);
printf ("\nВведите разность прогрессии: ");
scanf("%d",&d);
for (i=1;i

Слайд 22 Пример 5. Описание функции вывода массива в столбец
void out

Пример 5. Описание функции вывода массива в столбецvoid out (int k,int

(int k,int x[max]){
int i;
printf("\nВывод значений %d элементов

массива в столбец: \n",k);
for (i=0;iprintf("x[%i]= %d\n",i,x[i]);
}
Для использования функции генерации случайных чисел необходимо подключить библиотеку .


Слайд 23 Для написания кода генерации массива случайными целыми числами

Для написания кода генерации массива случайными целыми числами используется:Функция srand(). Синтаксис:void

используется:

Функция srand(). Синтаксис:
void srand(unsigned seed); – функция устанавливает свой

аргумент как основу ( seed ) для новой последовательности псевдослучайных целых чисел, возвращаемых функцией rand(). Сформированную последовательность можно воспроизвести. Для этого необходимо вызвать srand() с соответствующей величиной seed.
Для использования данной функции необходимо подключить библиотечный файл .

Слайд 24
Функция rand(). Синтаксис:
int rand(void); – функция возвращает псевдослучайное

Функция rand(). Синтаксис:int rand(void); – функция возвращает псевдослучайное число в диапазоне

число в диапазоне от нуля до RAND_MAX. Для использования

данной функции необходимо подключить библиотечный файл .
Константа RAND_MAX определяет максимальное значение случайного числа, которое может быть возвращено функцией rand(). Значение RAND_MAX – это максимальное положительное целое число.
//генерация случайных целых чисел на [a,b) x[i]=rand()%(b-a)+a;//генерация случайных вещественных чисел на [a,b) y[i]= rand()*1.0/(RAND_MAX)*(b-a)+a;


Слайд 25 Пример 6. Описание функции генерации массива случайными вещественными числами

Пример 6. Описание функции генерации массива случайными вещественными числами на[a,b)void gen(int

на[a,b)

void gen(int k,int a, int b, float x[max]){

int i; srand(time(NULL)*1000); //устанавливает начальную точку генерации случайных чисел
for (i=0;i}
}

Слайд 26 Ключевые термины:
Генерация массива – это автоматическое формирование значений

Ключевые термины:Генерация массива – это автоматическое формирование значений его элементов.Значение элемента

его элементов.
Значение элемента массива – это значение, хранящееся по

адресу, который соответствует данному элементу.
Измерение массива – это количество индексов в определении массива.
Имя массива – идентификатор, именующий выделенную под массив область памяти.
Индекс элемента массива – это порядковый номер элемента в последовательности.
Инициализация массива – это формирование значений его элементов.
Массив – это именованная последовательность областей памяти, хранящих однотипные элементы.
Одномерный массив – это массив, измерение которого равно единице.
Размер массива – это количество элементов в массиве.
Тип массива – это тип элементов массива.
Указатель на массив – это адрес области памяти, выделенной под массив.
Элемент массива – это каждая область памяти из последовательности областей, выделенных под массив.


  • Имя файла: lektsiya-n-1massivy-v-s.pptx
  • Количество просмотров: 153
  • Количество скачиваний: 8