- •Часть 1
- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Часть 2 184
- •Пояснительная записка
- •Содержание дисциплины
- •Индивидуальные практические работы, их характеристика
- •Контрольные работы, их характеристика
- •Литература
- •Основная
- •Дополнительная
- •Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- •Учебно-методические пособия
- •Алфавит языка
- •Лексемы
- •Идентификаторы
- •Ключевые слова
- •Знаки операций
- •Константы
- •Комментарии
- •Тема 2. Типы данных Концепция типа данных.
- •Простые типы данных
- •Целый тип int
- •Символьный тип char
- •Типы с плавающей точкой: float, double, long double
- •Тема 3. Выражения
- •Переменные
- •Именованные константы
- •Операции
- •Операции присваивания
- •Инкремент и декремент
- •Унарный плюс и унарный минус (строка 2)
- •Явное преобразование типа
- •Операция определения размера sizeof
- •Деление и остаток от деления
- •Логические операции не, и, или (!, &&, ||)
- •Условная операция (?:)
- •Операция запятая (,)
- •Операции взятия адреса и разадресации
- •Тема 4. Операторы
- •Структура программы
- •Тема 5. Базовые конструкции структурного программирования
- •Операторы ветвления
- •1. Условный оператор if
- •2. Оператор switch
- •Операторы цикла
- •1. Цикл с предусловием while
- •2. Цикл с постусловием do-while
- •3. Цикл с параметром for
- •Тема 6. Массивы
- •Тема 7. Указатели и массивы
- •Тема 8. Строки символов
- •Тема 9. Структуры
- •Массивы структур
- •Битовые поля
- •Объединения
- •Перечисления
- •Тема 10. Функции
- •Глобальные, локальные и статические переменные
- •Параметры функции
- •Передача массивов в качестве параметров функции
- •Функция main, ее параметры
- •Функции стандартной библиотеки
- •Функции форматного вывода и ввода printf и scanf
- •Тема 11. Файлы
- •Тема 12. Работа с динамической памятью
- •Тема 13. Динамические структуры данных
- •Очереди
- •Линейные списки
- •Бинарные деревья
- •Практический раздел Общие указания Указания по выбору варианта
- •Порядок оформление итогового отчета
- •Индивидуальные практические работы Индивидуальная практическая работа 1 Методические указания
- •Варианты заданий.
- •Индивидуальная практическая работа 2 Методические указания
- •Варианты заданий
- •Контрольные работы Контрольная работа 1 Методические указания
- •Варианты заданий
- •Контрольная работа 2 Методические указания
- •Варианты заданий
Тема 6. Массивы
Массив – это именованная совокупность переменных одного типа, хранящихся в смежных ячейках оперативной памяти. Переменные, входящие в состав массива, называются его элементами, они имеют одно и то же имя, но различаются своими порядковыми номерами (индексами). Индексы массива всегда начинаются с нуля.
В программе описание массива отличается от описания обычной переменной лишь наличием после имени квадратных скобок, в которых указывается количество элементов массива (размерность массива):
float x[10]; //описание массива х из 10 вещественных чисел
int a[5] = {1, 3, 5, 7, 9}; //описание массива a с инициализацией его элементов. При этом
//a[0]=1, a[1]=3, a[2]=5, a[3]=7, a[4]=9. Элемента a[5] в массиве нет
Если число инициализаторов совпадает с размерностью массива, то размерность можно не указывать:
int a[ ] = {1, 3, 5, 7, 9};
Если элементов в массиве больше, чем инициализаторов, элементы, для которых значения не указаны, обнуляются:
int b[5] = {3, 2, 1}; // b[0]=3, b[1]=2, b[2]=1, b[3]=b[4]=0
Размерность массива предпочтительнее задавать с помощью именованной константы, т.к. в этом случае для изменения размерности массива достаточно скорректировать значение константы всего лишь в одном месте программы. Например, найдем сумму значений всех элементов массива:
#include <stdio.h>
void main()
{
const int N = 10;
int i, sum, mas[N];
for (i = 0; i < N; i++)
scanf(“%d”, &mas[i]);
for (sum=0, i = 0; i < N; i++)
sum += mas[i];
printf(“Сумма = %d”, sum);
}
Многомерные массивы задаются указанием каждого измерения в квадратных скобках. Например, оператор
int matr[3][5];
задает описание двумерного массива из 3 строк и 5 столбцов. В памяти такой массив располагается в последовательных ячейках построчно, то есть при переходе к следующему элементу быстрее всех изменяется последний индекс. Для доступа к элементу многомерного массива указываются все его индексы, например, matr[i][j] для описанного выше двумерного массива есть обращение к элементу, расположенному на пересечении i-й строки и j-го столбца.
Инициализировать многомерный массив можно двумя способами.
1. Задается общий список элементов в том порядке, в котором элементы располагаются в памяти:
int mas[2][4] = {1, 2, 3, 4, 5, 6, 7, 8};
2. Используется представление в виде массива из массивов, при этом каждый массив заключается в свои фигурные скобки:
int mas[2][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}};
В обоих случаях левую размерность можно не указывать.
Эти операторы определяют матрицу со следующими значениями элементов:
1 2 3 4
5 6 7 8
Допустимыми являются также варианты, когда указываются не все инициализаторы. Например, оператор int mas[ ][4] = {{1, 2}, {5}}; определяет следующую матрицу:
1 2 0 0
5 0 0 0
При работе с элементами многомерных массивов обычно используют вложенные циклы, как в следующем примере, где подсчитывается сумма значений всех элементов двумерного массива:
#include <stdio.h>
void main()
{
const int N = 10, M = 5;
int i, j, sum, mas[N][M];
for (i = 0; i < N; i++)
for (j = 0; j < M; j++)
scanf(“%d”, &mas[i][j]);
for (sum=0, i = 0; i < N; i++)
for (j = 0; j < M; j++)
sum += mas[i][j];
printf(“Сумма = %d”, sum);
}