- •Федеральное агентство по образованию Российской Федерации
- •Программирование
- •Часть 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 Базовые функции
Задание III
В соответствии с вариантом, используя указатели и пользовательские функции, составить и реализовать программу:
Элементы вещественного одномерного массива х размером n > 20 сгенерированы датчиком псевдослучайных чисел в диапазоне [-10, 10]. Сформировать массив y по формуле и выполнить указанные вычисления. Формулу записать с помощью математических символов в привычном виде. Вывести на экран исходный массив и результаты решения задачи. Все числа округлять до сотых.
y[i] = exp(x[i] - i), i = 1, 2, ..., n, n = 2k. Вычислить сумму произведений Р = х[1] y[2k] + x[2] y[2k - l] + ... + x[2k] y[l].
y[i] = x[i] / ln(abs(x[i] + 1.23)), i = l, 2, ..., n. Вычислить сумму отрицательных значений из первых 15 элементов массива у.
y[i] = exp(x[i]) / x[i], i = l, 2, ..., n. Вычислить сумму всех произведений соответствующих элементов массивов х и у.
y[i] = ln(x[i] + 10.4) / (x[i] - l), i = l, 2, ..., n. Вычислить сумму положительных значений из последних 12 элементов массива у.
y[i] = cos(x[i]) + sin(x[i]) + 2.6, i = l, 2, ..., n. Вычислить сумму квадратов элементов массива у, стоящих на нечетных местах.
n = 2k, у[1] = х[2], y[2] = x[2] x[4], y[3] = x[2] x[4] х[6], ..., у[k] = х[2] х[4] х[6] ... х[n], у[k + 1] = х[1], у[k + 2] = х[1] х[3], у[k + 3] = х[1] х[3] х[5], ..., у[n] = х[1] x[3] ... x[n - l].
Вычесть из суммы первых k элементов массива у сумму последних k его элементов.
7. y[i] = sqrt(abs(x[i])), i = l, 2, ..., n. Вычислить количество элементов массива у, больших среднего арифметического элементов массива х.
8. у[1] = 5.2, у[2] = 4.3, у[3] = 0.09, у[4] = -0.5, у[5] = 7.15; y[i] = cos(y[i - l] + y[i - 2] + y[i - 3]) / (y[i - 4] · y [i - 5]), i = 6, 7, ..., n.
Вычислить произведение всех отрицательных чисел массива у (в этой задаче массива х нет).
n = 2k, y[l] = x[l] х[2], у[2] = х[3] х[4], ..., y[k] = x[n - 1] x[n]. Вычислить сумму квадратов элементов массива у.
y[i] = x[i]2/3, i = l, 2, ..., n. Просуммировать элементы массива у с шагом 3, начиная с первого элемента.
n = 2k, y[i] = sqrt(abs(cos(x[i]) - 6.7), i = l, 2, ..., n. Вычислить сумму произведений S = x[l] y[2] + x[3] у[4] + ... + х[n - 1] у[n].
y[i] = i sin(x[i]), i = l, 2, ..., n. Вычислить произведение положительных значений из последних 14 элементов массива х.
y[i] = sin(exp(x[i])), i = l, 2, ..., n. Вычислить количество отрицательных элементов массива у с нечетными индексами.
y[l] = sqrt(abs(x[1] - x[2])), y[2] = sqrt(abs(x[2] - x[3])), ..., y[n - 2] = sqrt(abs(x[n - 2] - x[n - l])), y[n - l] = sqrt(abs(x[n - l] - x[n])).
Просуммировать элементы массива у, имеющие индекс, кратный 3.
15. у[1] = х[1], у[2] = х[1] + х[2], ..., у[n] = х[1] + х[2] + ... + х[n]. Вычислить сумму кубов отрицательных элементов массива у.
16. n = 2k, у[1] = х[1] - х[n], у[2] = х[2] - х[n - 1], ..., у[k] = х[k] - х[k + 1]. Из каждого элемента массива у вычесть среднее арифметическое элементов массива х.
17. y[i] = exp(cos(x[i])), i = l, 2, ..., n. Вычислить количество элементов массива у, попадающих в интервал [0, 1].
18. y[i] = l/8tg(x[i]), i = l, 2, ..., n. Вычислить количество отрицательных элементов массива х и сумму обратных элементов массива у.
у[1] = х[1], y[n] = x[n], y[i] = (x[i - l] + x[i] + x[i + l]) / 3. Вычислить количество положительных элементов массива у с четными индексами и найти их сумму.
y[i] = exp(x[i]) sin(x[i]), i = l, 2, ..., n. Вычислить сумму элементов массива у, стоящих на четных местах.
y[i] = tg(2x[i]), i = l, 2, ..., n. Вычислить количество элементов массива у, меньших по своим значениям соответствующих элементов массива х.
y[i] = 3cos(x[i]), i = l, 2, ..., n. Вычислить количество элементов массива у, не попадающих в промежуток [0, 1].
23. у[1] = 4.5, у[2] = -3.6, у[3] = -8.2, у[4] = 6; y[i] = ln(abs(y[i - 1])) / sin(y[i - 2] / (y[i - 4] y[i - 3])), i = 5, 6, ..., n (здесь массива х нет, а элементы массива у вычисляются с помощью рекуррентных соотношений). Вычислить сумму отрицательных элементов массива у.
y[i] = x[i]2 sin(l/x[i]), i = l, 2, ..., n. Вычислить сумму положительных значений из первых 14 элементов массива у.
y[i] = cos(x[i]) - abs(x[i]), i = l, 2, ..., n. Из суммы квадратов элементов массива х вычесть сумму квадратов элементов массива у.
