
- •ОГЛАВЛЕНИЕ
- •ВВЕДЕНИЕ
- •1. ЯЗЫК ПРОГРАММИРОВАНИЯ C++
- •1.1. Нововведения C++ в сравнении с C
- •1.3. Технический обзор
- •2. ЛАБОРАТОРНАЯ РАБОТА № 1 «Знакомство с языком C++. Основные функции»
- •2.1. Методические указания
- •2.1.1. Алфавит C++
- •2.1.2. Этапы создания исполняемой программы
- •2.1.3. Типы данных C++
- •2.1.3.1. Концепция типа данных
- •2.1.3.2. Простые типы данных
- •2.1.4. Структура программы на языке C++
- •2.1.5. Директивы препроцессора
- •2.1.5.1. Директива #include
- •2.1.5.2. Директива #define
- •2.1.6. Предварительные замечания о функциях ввода/вывода
- •2.1.7. Переменные и выражения
- •2.1.7.1. Переменные
- •2.1.7.2. Операции
- •2.1.7.3. Выражения
- •2.1.8. Основные функции
- •2.1.8.1. Математические функции
- •2.1.8.2. Функции обработки сигналов
- •2.1.8.3. Функции ввода-вывода в стиле C
- •2.1.8.4. Функция работы с датой и временем
- •2.1.8.5. Функции локализации
- •2.1.8.6. Функции классификации и преобразования символов
- •2.1.8.7. Функции управления программой
- •2.1.8.8. Различные функции в стиле C
- •2.2. Примеры программ для выполнения лабораторной работы № 1
- •2.3. Вопросы для самоконтроля
- •3. ЛАБОРАТОРНАЯ РАБОТА № 2 «Программирование с использованием основных операторов языка C++. Работа с массивами»
- •3.1. Методические указания
- •3.1.1. Основные операторы языка С++
- •3.1.1.1. Базовые конструкции структурного программирования
- •3.1.1.2. Составные операторы
- •3.1.1.3. Операторы выбора
- •3.1.1.4. Операторы циклов
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Цикл с параметром (for)
- •3.1.1.5. Операторы передачи управления
- •Оператор goto
- •Оператор break
- •Оператор continue
- •Оператор return
- •3.1.2. Одномерные массивы
- •3.1.2.1. Описание массива в C/C++
- •3.1.2.2. Обработка одномерных массивов
- •3.1.2.3. Перебор массива по одному элементу
- •3.1.2.4. Датчика случайных чисел для формирования массива.
- •3.1.3. Многомерные массивы
- •3.2. Примеры программ для лабораторной работы № 2
- •3.3. Вопросы для самоконтроля
- •3.4. Варианты заданий к лабораторной работе № 2
- •4. КУРСОВАЯ РАБОТА «Создание собственной функции»
- •4.1. Методические указания
- •4.1.1. Объявление и определение функций
- •Глобальные переменные
- •Возвращаемое значение
- •4.1.2. Параметры функции
- •4.2. Вопросы для самоконтроля
- •4.3. Варианты заданий курсовой работы
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Список литературы
- •Направление – _____________________________________________
- •Кафедра –
- •Выполнил студент гр. _______ __________ _______ ______________
- •Направление – ________________________________________________
- •Выполнил студент гр. _______ __________ _______ __________
3.1.2.Одномерные массивы
Вязыке C/C++, кроме базовых типов, разрешено вводить и использовать производные типы, полученные на основе базовых. Стандарт языка определяет три способа получения производных типов:
∙массив элементов заданного типа;
∙указатель на объект заданного типа;
∙функция, возвращающая значение заданного типа.
Массив – это упорядоченная последовательность переменных одного типа. Каждому элементу массива отводится одна ячейка памяти. Элементы одного массива занимают последовательно расположенные ячейки памяти. Все элементы имеют одно имя – имя массива и отличаются индексами – порядковыми номерами в массиве. Количество элементов в массиве называется его размером. Чтобы отвести в памяти нужное количество ячеек для размещения массива, надо заранее знать его размер. Резервирование памяти для массива выполняется на этапе компиляции программы [1].
3.1.2.1. Описание массива в C/C++
Описание массива в программе отличается от описания простой переменной наличием после имени квадратных скобок, в которых задается количество элементов массива (размерность):
Пример 31. Описания массива из 10 вещественных чисел float a [10];
Элементы массива нумеруются с нуля. Инициализирующие значения для массивов записываются в фигурных скобках.
Пример 32. Инициализация массива
int b[5] = {3, 2, 1}; // b[0]=3, b[1]=2, b[2]=1, b[3]=0, b[4]=0
Размерность массива может быть задана только целой положительной константой или константным выражением.
Для доступа к элементу массива после его имени указывается номер элемента (индекс) в квадратных скобках.
Пример 33. Расчёт сумма элементов массива.
#include <iostream.h> int main()
{
72
const int n = 10;
int marks[n] = {3, 4, 5, 4, 4};
for (int i = 0, sum = 0; i<n; i++) sum += marks[i];
cout << "Сумма элементов: " << sum;
}
В примере 33 размерность массивов предпочтительнее задавать с помощью типизированных констант.
3.1.2.2. Обработка одномерных массивов
При работе с массивами очень часто требуется одинаково обработать все элементы или часть элементов массива. Для этого организуется перебор массива.
Перебор элементов массива характеризуется:
∙направлением перебора;
∙количеством одновременно обрабатываемых элементов;
∙характером изменения индексов.
По направлению перебора массивы обрабатывают:
∙слева направо (от начала массива к его концу);
∙справа налево (от конца массива к началу);
∙от обоих концов к середине.
Индексы могут меняться
∙линейно (с постоянным шагом);
∙нелинейно (с переменным шагом).
3.1.2.3. Перебор массива по одному элементу
Элементы можно перебирать:
1.Слева направо с шагом 1, используя цикл с параметром: for(int I=0;I<n;I++){обработка a[I];}
2.Слева направо с шагом отличным от 1, используя цикл с параметром:
for (int I=0;I<n;I+=step){обработка a[I];}
3.Справа налево с шагом 1, используя цикл с параметром:
for(int I=n-1;I>=0;I--){обработка a[I];}
4. Справа налево с шагом отличным от 1, используя цикл с параметром:
73
for (int I=n-1;I>=0;I-=step){обработка a[I];}
3.1.2.4. Датчика случайных чисел для формирования массива.
Датчик случайных чисел (ДСЧ) – это программа, которая формирует псевдослучайное число. Простейший ДСЧ работает следующим образом [3]:
1)Берется большое число К и произвольное x0 [0,1] . 2)Формируются числа х1=дробная_часть(х0*К);
х2=дробная_часть(х1*К); и т. д.
Врезультате получается последовательность чисел х0, х1, х2, . . . беспорядочно разбросанных по отрезку от 0 до 1. Их можно считать случайными, а точнее псевдослучайными. Реальные ДСЧ реализуют более сложную функцию f(x).
ВС++ имеется функция int rand() – возвращает псевдослучайное число из диапазона 0..RAND_MAX=32767, описание функции находится в файле <stdlib.h>.
Пример 34. Формирования и печати массива с помощью ДСЧ:
#include<iostream.h>
#include<stdlib.h> void main()
{
int a[100]; int n;
cout<<”\nEnter the size of array:”; cin>>n;
for(int I=0;I<n;I++)
{
a[I]=rand()%100; cout<<a[I]<<” “;
}
}
В этой программе используется перебор массива по одному элементу слева направо с шагом 1.
Пример 35. Найти максимальный элемент массива.
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
74