- •Федеральное агентство по образованию Российской Федерации
- •Программирование
- •Часть I
- •Предисловие
- •1. Основные понятия алгоритмизации и программирования
- •1.1. Этапы решения задач на эвм
- •1. Постановка задачи:
- •2. Формализация (анализ и исследование задачи, модели, представление ее в виде уравнений, соотношений, ограничений и т.П.):
- •Понятие моделирования
- •Отладка программы
- •Тест и тестирование программы
- •1.2. Основы алгоритмизации
- •Свойства алгоритма
- •Критерии качества алгоритма
- •Способы описания алгоритмов
- •Структурограмма
- •Синтаксическая диаграмма (формулы Бэкуса-Наура)
- •Базовые алгоритмические конструкции
- •Примеры команды если
- •1.3. Теоретические основы программирования
- •Арифметические выражения
- •Арифметические выражения записываются по следующим правилам:
- •Лабораторная работа № 1 Запись арифметических выражений
- •Задание I
- •Задание II
- •Контрольные вопросы
- •2. Программирование алгоритмов линейной структуры
- •2.2. Основные понятия языка
- •2.3. Данные и способы их организации
- •Порядок объявления и инициализации переменных
- •2.4. Стандартные простые типы данных
- •2.5. Структура программы
- •2.6. Операторы
- •Оператор «выражение»
- •2.7. Организация ввода/вывода данных
- •Лабораторная работа № 2 Программирование алгоритмов линейной структуры
- •Задание I
- •Задание II
- •Задание III
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •Математическая модель
- •Алгоритм (блок - схема)
- •3. Программа
- •4. Результат работы программы
- •Решение
- •Математическая модель
- •4. Результат работы программы:
- •3. Операторы ветвления
- •3.1. Простые и составные условия
- •Операция &&
- •Операция ||
- •Операция !
- •3.2. Составной оператор
- •3.3. Условная операция (?:)
- •3.4. Условный оператор if
- •If (условие) оператор 1; else оператор 2;
- •If (условие) оператор;
- •3.5. Оператор switch
- •3.6. Оператор перехода goto
- •Лабораторная работа № 3 Программирование алгоритмов разветвляющейся структуры
- •Задание I
- •Задание II
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •4. Циклы
- •4.1. Оператор цикла с параметром (for)
- •4.2. Оператор цикла с предусловием (while)
- •4.3. Оператор цикла с постусловием (do while)
- •Отличие оператора цикла while от оператора цикла do..While
- •4.4. Вложенные циклы
- •Математическая модель
- •Лабораторная работа № 4 Программирование алгоритмов циклической структуры
- •Задание I
- •Задание II
- •Задание III
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •5. Подпрограммы
- •5.1. Понятие подпрограммы
- •5.2. Формальные и фактические параметры
- •5.3. Локальные и глобальные переменные
- •5.4. Функции
- •Задание I
- •Задание II
- •Лабораторная работа №5 Использование функций для решения прикладных задач
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •3. Программа 4. Результат работы программы:
- •6. Итерация и рекурсия
- •6.1. Понятие итеративного процесса
- •6.2. Понятие рекурсии
- •Лабораторная работа №6 Программирование рекурсивных алгоритмов
- •Задание
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •2. Алгоритм
- •3. Программа
- •4. Результат работы программы
- •7. Одномерные массивы
- •7.1. Понятие структурированного типа данных
- •7.2. Понятие и описание типа массив
- •7.3. Одномерные массивы
- •7.4. Основные действия над элементами массивов
- •1. Инициализация массива: присвоение каждому элементу начального значения:
- •2. Вывод массива на экран:
- •3. Обработка массива
- •Лабораторная работа №7 Использование числовых одномерных массивов
- •Задание I
- •Задание II
- •Контрольные вопросы
- •Пример выполнения задания II лабораторной работы
- •Решение
- •Математическая модель
- •4. Результат работы программы:
- •8. Двумерные массивы
- •Лабораторная работа №8 Двумерные массивы
- •Задание
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •Математическая модель
- •9. Алгоритмы решения задач внутренней сортировки и алгоритмы поиска информации
- •9.1. Сложность алгоритмов
- •9.2. Постановка задачи поиска
- •9.3. Последовательный (линейный) поиск
- •9.4. Бинарный поиск
- •9.5. Постановка задачи сортировки данных
- •9.6. Прямые и быстрые методы внутренней сортировки
- •9.7. Сортировка вставками
- •9.8. Сортировка с помощью прямого выбора
- •9.9. Сортировка с помощью прямого обмена
- •Лабораторная работа № 9 Задачи сортировки и поиска
- •Контрольные вопросы
- •10. Указатели и массивы
- •10.1. Указатели
- •10.2. Взаимосвязь между массивами и указателями
- •10.3. Порядок объявления динамических массивов
- •10.4. Передача массивов в качестве параметров функции
- •Лабораторная работа №10 Применение массивов и указателей для решения прикладных задач
- •Задание I
- •Задание II
- •Задание III
- •11. Особенности работы с функциями
- •11.1. Способы передачи параметров в функцию
- •11.2. Передача имен функций в качестве параметров
- •11.3. Перегрузка функций
- •Лабораторная работа № 11 Исследование способов работы с функциями
- •Задание I
- •Задание II
- •12. Строки как массив элементов типа char
- •Лабораторная работа № 12
- •Задание I
- •Изучение способов формирования строк в языке Си
- •Применение функций работы со строками для обработки символьных массивов
- •Задание II
- •13. Строки как специальный класс string
- •Лабораторная работа № 13 Исследование способов работы с функциями
- •Задание I
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Форма отчета
- •14. Структуры
- •14.1. Изучение порядка объявления и инициализации структур
- •14.2. Программирование с использованием структур
- •14.3. Использование функций для работы с производными типами данных
- •Лабораторная работа № 14 Применение структур для решения прикладных задач
- •Задание I
- •15. Файлы
- •15.1. Подход с использованием возможностей языка Си
- •Ifstream идентификатор_потока(имя_файла,ключи_потока);
- •Лабораторная работа № 15 Исследование методов доступа к файлам данных
- •Задание I
- •1. Работа с неструктурированными данными
- •2. Работа со структурированными данными
- •Пример выполнения лабораторной работы
- •Литература
- •Приложение 1 Порядок выполнения лабораторных работ
- •Приложение 2 Базовые функции
Лабораторная работа №8 Двумерные массивы
ЦЕЛЬ РАБОТЫ: приобретение навыков объявления, организации ввода-вывода и обработки двумерного массива.
Выполнение работы: в соответствии с вариантом составить и реализовать программу.
Задание
Составить программу формирования матрицы, число строк и столбцов которой определяется как случайное натуральное число в промежутке [3, 8], а элементы - случайные целые числа от -50 до 50. Заменить неотрицательные числа полученной матрицы единицей, а отрицательные - нулем.
В целочисленной прямоугольной матрице числа, кратные заданному числу m , вводимому с клавиатуры, заменить частным от деления на m, а остальные числа заменить их остатками от деления на m.
В квадратной матрице порядка n найти сумму всех тех элементов, сумма индексов которых равна n.
Определить, является ли заданная квадратная матрица симметричной относительно главной диагонали. Найти след данной матрицы. Элементы матрицы вводить с клавиатуры.
Найти число элементов в каждой из нечетных строк матрицы, равных заданному числу, вводимому с клавиатуры.
Преобразовать данную прямоугольную матрицу так, чтобы все элементы в ее строках были записаны в обратном порядке.
Вычислить количество и сумму положительных элементов в нижнем левом треугольнике данной квадратной матрицы, включая диагональные элементы.
Даны вещественные числа a1, a2, …, an и вещественная квадратная матрица порядка n (n > 5). Сформировать вещественную матрицу размером n x (n + 1), вставив в исходную матрицу между пятым и шестым столбцами новый столбец с элементами a1, a2, …, an.
Дана вещественная квадратная матрица порядка n. Преобразовать эту матрицу по правилу: строку с номером k сделать столбцом с номером k, а столбец с номером k сделать строкой с тем же номером.
В данной вещественной матрице размером n x m (n > 2, m > 2) поменять местами строки с номерами n - 2 и n - 1.
Положительные элементы первой строки прямоугольной матрицы умножить на первый элемент этой же строки, а отрицательные - на последний ее элемент; то же самое проделать с остальными строками.
Заменить все элементы строки с номером s и столбца с номером k прямоугольной матрицы на противоположные по знаку (элемент, стоящий на пересечении выбранной строки и выбранного столбца, не изменять).
Из квадратной матрицы получить другую матрицу путем исключения диагональных элементов и вычитания из каждого элемента следа исходной матрицы.
Дан целочисленный одномерный массив: a1, a2, …, an. Сформировать квадратную матрицу порядка n, у которой элементы, расположенные на главной диагонали, равны соответственно a1, a2, …, an; элементы, расположенные выше главной диагонали, равны единице, а элементы, расположенные ниже главной диагонали, равны минус единице.
Даны две прямоугольные целочисленные матрицы А и В одинакового размера m x п. Создать матрицу того же размера, в которой элементы равны 1, если соответствующие элементы матриц А и В имеют одинаковый знак; -1, если соответствующие элементы имеют разные знаки, и нулю, если хотя бы один из соответствующих элементов равен нулю.
Составить программу вывода на экран арифметического квадрата: в нем первый столбец и первая строка заполнены единицами, а каждый из остальных элементов равен сумме своих соседей сверху и слева.
Из прямоугольной матрицы размером m x n удалить строку с номером s и столбец с номером k (0 < s < m+l, 0 < k < n + l).
Сформировать одномерный массив, каждый элемент которого равен сумме отрицательных элементов соответствующей строки данной целочисленной прямоугольной матрицы.
Найти количество элементов в каждом столбце прямоугольной вещественной матрицы, меньших среднего арифметического элементов рассматриваемого столбца.
Вывести на экран максимальные элементы каждой строки двумерного массива с указанием их индексов.
Задать два двумерных массива, содержащих положительные и отрицательные элементы. Определить, в каком из них больше положительных элементов.
Задан массив целых случайных чисел, принадлежащих промежутку [0, 200]. Определить, каких элементов в нём больше: превышающих k1 или не превышающих k2.
Задан массив целых случайных чисел, принадлежащих промежутку [-50, 50]. Найти сумму тех элементов массива, которые больше a, но меньше b, а также вычислить количество этих элементов.
Поменять местами максимальный и минимальный элемент заданного двумерного массива. Результат вывести на экран в виде матрицы.
Дана целочисленная матрица. Сформировать матрицу, получающуюся из данной перестановкой первого столбца с последним, второго - с предпоследним.
Из данной матрицы получить другую следующим образом: на место первой строки поместить вторую, на место второй - третью и т.д., на место последней поместить первую.
