
- •Введение история разработки языков программирования
- •Структура программы
- •Основные понятия. Типы данных.
- •Организация ветвлений
- •Структуры данных. Массивы
- •Структура (struck)
- •Объединения. Строковые литералы
- •Функции
- •Рекурсия
- •Указатели
- •Динамические массивы.
- •Динамические массивы.
- •Полиморфизм
- •Конструкторы и деструкторы
- •Перегрузка операторов
- •Шаблоны. Стандартная библиотека шаблонов (stl).
- •Язык программирования с#
Динамические массивы.
Динамические массивы создают с помощью операции new, при этом необходимо указать тип и размерность .
int n = 100;
float *p = new float [n];
Альтернативный способ создания динамического массива - использование функции malloc библиотеки С:
int n = 100;
float *q = (float *) malloc(n * sizeof(float));
Память, зарезервированная под динамический массив с помощью new [], должна освобождаться оператором delete [], а память, выделенная функцией mallос - посредством функции free.
delete [] p; free (q);
Динамический массив случайных вещественных чисел
Многомерные массивы
Для создания динамического многомерного массива необходимо указать в операции new все его размерности (самая левая размерность может быть переменной)
Более универсальный и безопасный способ выделения памяти под двумерный массив, когда обе его размерности задаются на этапе выполнения программы.
int nstr, nstb;
cout « " Введите количество строк и столбцов :";
cin » nstr » nstb;
int **a = new int *[nstr]; // 1
for(int i = 0; i<nstr; i++) // 2
a[i] = new int [nstb]; // 3
Передача массивов в качестве параметров
Массив всегда передается по адресу. При этом информация о количестве элементов массива теряется, и следует передавать его размерность через отдельный параметр (если размерность массива является константой, проблем не возникает, поскольку можно указать ее и при описании формального параметра, и в качестве границы циклов при обработке массива внутри функции).
При передаче многомерных массивов все размерности, если они не известны на этапе компиляции, должны передаваться в качестве параметров.
Внутри функции массив интерпретируется как одномерный, а его индекс пересчитывается в программе. В приведенном ниже примере с помощью функции подсчитывается сумма элементов двух двумерных массивов. Размерность массива b известна на этапе компиляции, под массив a память выделяется динамически.
Динамические массивы.
Файл – это набор данных, размещенный на внешнем носителе и рассматриваемый в процессе обработки и пересылке как единое целое.
Прототипы функции для работы с файлами содержатся в заголовочном файле <stdio.h>. Там же описан тип для работы с файлами FILE. Прежде чем совершать с файлом какие-либо действия, файл должен быть открыт. А после того как всё необходимые действия с файлом завершены, он должен быть закрыт.
После работы доступ к файлу необходимо с помощью функции fclose (указатель файла), например, fclose (f);
Для закрытия нескольких файлов введена функция: void fcloseall(void);
#include <stdio.h>
…
FILE *f_my;
If (!(f_my=fopen(“rez.txt”, “r+t”))){
Puts (“\n Ошибка открытия файла!”);
Return;
}
… // Работа с файлом
Fclose(f_my);
…
Режимы открытия файлов
“r” – открытие текстового файла на чтение
“w” – создание нового текстового файла на запись
“a” – открытие текстового файла для добавления
“rb” – открытие двоичного файла
“wb” – создание нового двоичного файла на запись
“ab” – открытие двоичного файла для добавления
“r+” – открытие текстового файла на чтение и запись
“w+” – создание нового текстового файла на чтение и запись
“a+” – открытие текстового файла на чтение и запись
“rb+” – открытие двоичного файла на чтение и запись
“wb+” – создание нового двоичного файла на чтение и запись
“ab+” – открытие двоичного файла на чтение и запись