- •Введение
- •Изучение среды программирования
- •Теоретические сведения
- •Среда программирования
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Переменные и операции над ними
- •Теоретические сведения
- •Основные определения
- •Операции над целыми числами
- •Вещественные числа и операции над ними
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Конструкция выбора, логические и другие операции
- •Теоретические сведения
- •Конструкция выбора и составная инструкция
- •Операторы отношения и логические операторы
- •Остальные операторы
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Конструкции циклов
- •Теоретические сведения
- •Цикл while
- •Цикл for
- •Конструкция в конструкции
- •Задание к работе
- •Свойства массивов
- •Структуры
- •Задание к работе
- •Операции с указателями
- •Указатели и массивы
- •Указатели и структуры
- •Задание к работе
- •Использование указателей для передачи результата и аргумента
- •Задание к работе
- •Содержание отчета
- •Контрольные вопросы
- •Библиографический список
- •644046, Г. Омск, пр. Маркса, 35в
Задание к работе
Все задания этой лабораторной работы нужно проделать в 2 вариантах – с использованием конструкций «while» и «for». При необходимости можно использовать пустую инструкцию – если в некотором поле конструкции не нужно выполнять никаких действий, в него можно записать «;».
-
Написать программу, которая находит наименьший делитель введенного пользователем числа. Для этого организовать цикл, который заканчивается, когда текущее значение некоторой переменной является делителем числа, и это число увеличивается на 1 на каждом шаге цикла. Доказать, что цикл закончится при любом целом положительном числе, введенном пользователем.
-
Найти наибольше и наименьшие значения функции для целых аргументов от 1 до 50. Для этого использовать конструкцию выбора внутри цикла (номер задания равен остатку от деления номера варианта на 10):
-
sin(2*3.14*i/15)/i
-
cos(2*3.14*i/15)/i
-
sin(2*3.14*i/50)/cos(2*3.14*i/50)
-
cos(2*3.14*i/50+3.14/2)/sin(2*3.14*i/50+3.14/2)
-
i*i-50*i
-
sqrt(50*i)-i
-
sin(2*3.14*i/25)
-
cos(2*3.14*i/25)
-
tan(2*3.14*i/50)
-
pow(i,2)-50*i
-
Нарисовать график функции из 2 задания. График представляет собой изображение из 50 символов по горизонтали и 50 символов по вертикали. Для отображения графика нужно организовать вложенные циклы. Внешний цикл выполняется 50 раз и рисует 50 строк. Внутренний цикл повторяется 50 раз и рисует 50 столбцов. Во внутреннем цикле проверяется, какой символ нужно нарисовать.
Для определения отображаемого символа используется следующее условное выражение. Если ceil(((func)-min)*50/(max-min))==50-j, то печатается символ "*", иначе печатается символ " " (пробел). В условном выражении max и min это максимум и минимум функции, найденные в предыдущем задании. Func это отображаемая функция. Функция сeil находит наименьшее целое, не большее аргумента. Все выражение масштабирует диапазон значений фунций (от min до max) на диапазон от 0 до 50 и определяет, в какой строке функция пересекает соответствующий столбец.
Содержание отчета
Отчет должен содержат текст всех программ с подробными комментариями, результаты работы этих программ.
Контрольные вопросы
-
Как в общем виде записывается управляющая конструкция «while»?
-
Как в общем виде записывается управляющая конструкция «for»?
-
Для чего используется выравнивание инструкций?
-
Какие конструкции можно использовать внутри конструкции цикла?
-
Какие поля есть в конструкции «while»?
-
Какие поля есть в конструкции «for»?
-
Массивы и структуры
Цель работы: изучение массивов и структур.
Теоретические сведения
-
Пример массива
Рассмотрим задачу: даны 100 целых чисел, нужно найти их среднее значение.
Для хранения 100 целых чисел нужно завести 100 переменных целого типа. А затем, для нахождения среднего значения написать в коде 100 операторов сложения. 100 одинаковых операций можно было бы сделать в цикле, но эти операции нужно выполнять над разными переменными. Для того, чтобы записать такую операцию один раз и повторить ее 100 раз в цикле нужно иметь возможность обращаться к переменной не по имени, а по ее номеру.
Для решения этой проблемы в языках высокого уровня используются массивы. Массив это именованный набор однотипных элементов, расположенных в памяти непосредственно друг за другом, обращаться к которым можно по их номеру. Обычно номер элемента в массиве называют его индексом.
Решение задачи приведено на рис
Рис. Пример программы
В 6 строке написано объявление массива. Идентификатор int указывает на то, что элементы массива будут целого типа, «a» это имя массива, а в квадратных скобках указывается количество элементов. После этого объявления в памяти будут выделено место под 100 переменных целого типа, обратиться к которым можно указав имя массива и его индекс.
В 7 и 8 строках записан цикл, заполняющий объявленный массив случайным числам. Он повторяется 100 раз, при этом переменная i принимает значения от 0 до 19. В 8 строке, слева от оператора присваивания, происходит обращение к i‑ому элементу массива «a». Для того чтобы обратится к некоторому элементу массива, нужно указать имя массива и, в квадратных скобках, его индекс.
В языке С элементы массива нумеруются начиная с 0. В примере на первом шаге цикла присваивается значение элементу a[0], на втором – а[1], а на последнем –a[19].
Вводить 100 чисел с клавиатуры при запуске программы было бы утомительно. Поэтому массив заполняется случайными числами, которые выдает функция rand().
В 9 и 10 строках записан цикл, который подсчитывает сумму элементов массива. В 11 строке печатается среднее значение.