- •1. Основы алгоритмизации и программирования
- •1.1. Этапы подготовки и решения задач на эвм
- •1.2. Алгоритмы и способы их описания Понятие алгоритма
- •Способы описания алгоритмов
- •Структурные схемы алгоритмов
- •1.3. Компиляция и интерпретация программ
- •1.4. Стили программирования
- •Процедурное программирование
- •Функциональное программирование
- •Логическое программирование
- •Объектно-ориентированное программирование
- •2.1. Пример готовой программы.
- •2.2. Структура основной программы
- •2.3. Алфавит языка
- •2.4. Константы и переменные Константы
- •Переменные
- •Примеры записи имен переменных
- •2.5. Арифметические выражения
- •Примеры вычисления арифметических выражений
- •Стандартные функции
- •Примеры программирования арифметических выражений
- •Контрольные задания
- •1. Составить описания для заданных переменных
- •2.6. Линейные вычислительные процессы
- •Оператор присваивания
- •Странные операторы присваивания
- •Операторы ввода-вывода
- •Операторы ввода исходных данных с клавиатуры
- •Потоковый ввод данных числового типа
- •Форматный ввод
- •Операторы вывода данных на экран Потоковый вывод
- •Форматный вывод
- •Контрольные задания
- •2.7. Разветвляющиеся вычислительные процессы
- •Логические выражения
- •Порядок выполнения операций в логических выражениях
- •Условные операторы
- •Короткий условный оператор
- •Полный условный оператор
- •If (логическое выражение) p1; else p2;
- •Вложенные структуры условных операторов
- •Оператор выбора
- •Контрольные задания
- •2.8. Циклические вычислительные процессы
- •Операторы цикла с условием
- •Оператор цикла do...While
- •Оператор цикла с параметром
- •2.9. Базовые алгоритмы
- •Задача 1. Алгоритм организации счетчика
- •Задача 2. Алгоритм накопления суммы
- •Задача 3. Алгоритм накопления произведения
- •Задача 4. Алгоритм поиска минимального члена последовательности
- •Задача 5. Табулирование функции (или кратные циклы)
- •Задача 6. Вычисление сумм последовательностей
- •2.10. Указатели и массивы Указатели
- •Понятие массива
- •Общий вид описания массива
- •Одномерные массивы
- •Описание одномерного массива
- •Индексированные переменные
- •Ввод-вывод одномерных массивов
- •Обработка одномерных массивов
- •Задача 1. Организация счетчика
- •Задача 2. Накопление суммы и произведения
- •Задача 3. Поиск минимального и максимального элементов массива
- •Двухмерные массивы
- •Описание двухмерного массива
- •Ввод-вывод двухмерного массива
- •Обработка матриц
- •2.11. Подпрограммы Структура сложной программы
- •Функции
- •Общий вид описания функции
- •Обращение к функции
- •Пример программы с функцией
- •Механизм замены параметров
- •Параметры-массивы в функциях
- •Рекурсия
- •Примеры программирования задач с использованием подпрограмм
- •Задача 1
- •2.12. Текстовые данные
- •Символьный тип данных
- •Ввод-вывод символьных данных
- •Обработка символьных данных
- •Ввод-вывод строковых данных
- •Обработка строковых данных
- •Стандартные функции обработки строк
- •Сравнение строк:
- •Сцепление строк
- •Определение длины строки
- •Копирование строк
- •Поиск символа в стоке
- •Пример программы для задачи с текстовыми данными
- •Контрольные задания
- •2.13. Динамическое выделение памяти
- •Структуры данных Понятие структуры
- •Обработка структур
- •Пример задачи с использованием структурированных данных
- •2.15. Файлы данных Понятие файла
- •Работа с файлами
- •Открытие файла
- •Обработка открытого файла
- •Закрытие файла
- •Функции ввода/вывода
- •Работа с текстовыми файлами
- •Обработка бинарных файлов
- •Контрольные задания
- •Заключение
- •Оглавление
Понятие массива
Массив представляет собой упорядоченное множество однотипных элементов. В языке С++ массив описывается переменной сложной структуры. При описании массива необходимо указать:
способ объединения элементов в структуру (одномерный, двухмерный и т.д.);
число элементов;
• тип элементов.
Общий вид описания массива
<тип элементов> имя [число элементов];
Доступ к каждому элементу массива осуществляется с помощью индексов. Индексы задают порядковый номер элемента, к которому осуществляется доступ. В языке С++ первый элемент массива имеет индекс ноль. Число индексов определяет структуру массива: если используется один индекс, то такой массив называется одномерным, если два индекса - двухмерным, и т.д. В общем случае размерность массива может быть произвольной.
Одномерные массивы
В математике одномерному массиву соответствует n-мерный вектор, например:
; i = 1,…, n ,
где хi - компонента (координата) вектора;
i - номер компоненты;
п - число компонент.
Описание одномерного массива
На языке С++ описание одномерного массива задается следующим образом:
<тип элементов> <имя массива>[размер];
Компилятор отводит под массив память размером (sizeof(тип)*размер) байтов.
При описании массива можно задать начальные значения его элементов:
int dat[4]={5,8,-2,11};
float kom[]={3.5,6,-1.1};
Указатели могут обеспечить простой способ ссылок на массив. Имя массива фактически является константой-указателем, ссылающимся на начальный адрес данных (адрес первого элемента массива). Начальный адрес массива определяет компилятор в момент описания массива, и такой адрес не может быть переопределен. Первый элемент массива имеет индекс ноль.
Например:
int Ar[5];
printf ("адрес Ar=%x\n",Ar);
printf ("адрес Ar=%x\n",&Ar[0]);
В приведенном фрагменте обе функции printf выводят адрес массива Ar, т.к. выражения Ar и &Ar[0] эквивалентны.
Индексированные переменные
Выбор отдельного элемента из массива осуществляется с помощью индексированной переменной, которая задается следующим образом:
x[i] - индексированная переменная (элемент массива).
Здесь x - имя массива;
i - индекс (номер элемента массива).
В качестве индекса используются:
целые константы, например х[2] х2;
целые переменные, например х[к] хk;
индексные выражения, например х[2*n+1] x2n+1.
В языке С++ индексы элементов любого массива начинаются с нуля. Индексными выражениями являются арифметические выражения целого типа.
Переменная с индексом может стоять в левой части оператора присваивания, например:
х[3]=2.5;
Ввод-вывод одномерных массивов
Ввод-вывод массивов осуществляется поэлементно с помощью операторов scanf и printf соответственно и оператора цикла for..., в котором в качестве параметра используется индекс.
Пример 1. Организовать ввод с клавиатуры массива:
A = (1.2, 5, -6.8, 14).
Необходимо описать массив и индекс.
int main()
{ float A[4] ;
int i;
В программе ввод массива рекомендуется организовать в виде диалога, поместив перед оператором ввода оператор вывода (printf), которым выдается на экран поясняющее сообщение, например:
printf("Введите массив А\n");
for( i = 0; i<4; i++)
scanf("%f",&A[i]);
На клавиатуре через один или несколько пробелов набираются элементы массива и нажимается клавиша [Enter]:
1.2 5 -6.8 14 [Enter]
Замечание. Элементы массива можно вводить в «столбик», если после ввода каждого элемента нажимать клавишу [Enter].
Пример 2. Организовать вывод массива А на экран таким образом, чтобы все элементы располагались на одной строке экрана.
В программе надо записать следующие операторы:
for ( i = 0; i<4; i++)
printf("%5.2f ",A[i]);
printf("\n");
Вид выводимого массива на экране:
1.2 5.0 -6.8 14.0
Оператор printf("\n"); без списка служит для перевода курсора к началу следующей строки экрана.