- •Пространство имен.
- •Представление целых чисел
- •Определение переменных
- •Особенности использования некоторых типов данных: переполнение регистров переменных
- •Базовые конструкции структурного программирования
- •Условный оператор if
- •Ветвление процесса выполнения программ
- •Тема: Указатели и ссылки
- •Адреса переменных. Оператор взятия адреса
- •Указатели
- •Динамически распределяемая память
- •Указатели на объекты
- •Выделяют два основных отличия между статическими и динамическими объектами.
- •Перегрузка функций
- •Значения параметров функции, используемые по умолчанию
- •Определение массива
- •“Sdjdkjdhkfsdjhvm,c,bnmsierhoerhsdklfhbnasmbf”; //правильно Пустая строка записывается “ ” и имеет тип const char[1]. Использование датчика случайных чисел для формирования массива
- •Конструкторы и деструкторы
“Sdjdkjdhkfsdjhvm,c,bnmsierhoerhsdklfhbnasmbf”; //правильно Пустая строка записывается “ ” и имеет тип const char[1]. Использование датчика случайных чисел для формирования массива
В С++ есть функция int rand() возвращающая псевдослучайное число из диапазона 0..RAND_MAX=32767, описание функции находится в файле <stdlib.h>.
В общем случае псевдослучайное n определяется по формуле:
n = a + rand ( ) % b
, где a – величина сдвига (равна первому числу из требуемого диапазона последовательности целых чисел), b – масштабирующий коэффициент (равен ширине требуемого диапазона).
Пример.
#include<iostream.h>
#include<stdlib.h>
void main()
{
int array[100];
int n;
cout<<"\nEnter the size of array:";
cin>>n;
for(int i=0;i<n;i++)
{
array[ i ]=rand()%100-50;// диапазон значений от -50 до 50
cout<<array[ i ]<<"\n";
}
}
В этой программе используется перебор массива по одному элементу слева направо с шагом 1.
Приведенная программа генерирует появление одной и той же случайной последовательности. Рандомизация достигается путем использования инструкции
srand(time(NULL));
, где функция srand(), содержащаяся в файле stdlib.h, принимает в качестве аргумента текущее календарное время в секундах, это значение преобразуется в беззнаковое целое и используется как начальное значение в генераторе случайных чисел. Прототип функции находится в файле time.h.
#include<iostream.h>
#include<stdlib.h>
#include<time.h>
void main()
{
int array[100];
int n;
cout<<"\nEnter the size of array:";
cin>>n;
srand(time(NULL));
for(int i=0;i<n;i++)
{
array[ i ]=-5+rand()%10; // диапазон значений от -5 до 5
cout<<array[ i ]<<"\n";
}
}
Многомерные массивы
Многомерные массивы описываются как массивы массивов. Например:
int d2[10] [20]; //массив из десяти массивов по 20 целых
Многомерные массивы могут быть инициализированы:
int ia [2][3] = {
{0,1,2},
(3,4,5}
};
int ib[2][3] = {0,1,2,3,4,5};
int ic[2] [3]= { {1}, {3} }; //инициализирует только первые элементы каждой //строки, остальные – 0
int id[2][3] = {1,2,3,4}; //два последних элемента второй строки – 0
При обращении к элементам многомерных массивов необходимо использовать индексацию для каждого измерения.
В программных кодах высокого уровня использования многомерных массивов надо избегать. Лучше пользоваться типом vector из стандартной библиотеки С++.
Структуры С+
В реальных задачах информация, которую требуется обрабатывать, может иметь достаточно сложную структуру. Для ее адекватного представления используются типы данных, построенные на основе простых типов данных, массивов и указателей. Язык С++ позволяет программисту определять свои типы данных и правила работы с ними.
Структура – это определяемый пользователем тип данных; объявление структуры служит для того, чтобы определить свойства создаваемого типа данных. После того как тип определен, можно создавать переменные этого типа.
В отличие от массива, все элементы которого однотипны, структура может содержать элементы различных типов, т.о., структура – набор элементов произвольных типов. Элементы структуры называются полями структуры и могут иметь любой тип, кроме типа этой же структуры.
В языке С++ структура является видом класса и обладает всеми его свойствами
Структуры определяются:
struct [имя типа]
{
тип_1 элемент_1;
тип_2 элемент_2;
…
} [список описателей];
Т.о. возможно следующее объявление структуры:
#include <iostream.h>
void main()
{
struct address
{
char name[10];
char street[30];
char town[10];
long number;
} my={"Petrov", "Green Street","Moscow",33};
}
Такая запись определяет новый тип address, НО вместе с тем и инициализирует ее поля (значения ее элементов перечисляются в фигурных скобках в порядке их описания).
Рассмотрим пример.
#include <iostream.h>
#include <string.h>// используется функция strcpy()
// объявление структуры
struct MYSTRUCTURE
{
char sName[100];
int iAge;
};
/*Это означает, что MYSTRUCTURE состоит из строки с именем sName и целого с именем iAge. sName и iAge называются элементами данных структуры.*/
/* Код в main() объявляет переменную с именем MyStructure типа MYSTRUCTURE: */
void main()
{
MYSTRUCTURE MyStructure;
/*Обратите внимание, что по традиции имя переменной составлено из символов нижнего регистра или в нем смешаны символы нижнего и верхнего регистров, MyStructure, но в имени типа структуры используются только символы верхнего регистра, как, например, в MYSTRUCTURE. */
strcpy (MyStructure.sName, "Andy" ); /*функция strcpy() копирует строку 'Andy' в элемент данных MyStructure.sName */
/*Следующий оператор присваивает значение 13 элементу данных iAge cтруктуры*/
MyStructure.iAge = 13;
cout << "My name is ";
cout << MyStructure.sName;
cout << " and I am ";
cout << MyStructure.iAge;
cout << " years old." << endl;
}
Результат работы программы:
My name is Andy and I am 13 years old.
Тема: Классы в С++