Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Программирование_1.doc
Скачиваний:
8
Добавлен:
19.11.2019
Размер:
501.25 Кб
Скачать

Задание к работе

Все задания этой лабораторной работы нужно проделать в 2 вариантах – с использованием конструкций «while» и «for». При необходимости можно использовать пустую инструкцию – если в некотором поле конструкции не нужно выполнять никаких действий, в него можно записать «;».

  1. Написать программу, которая находит наименьший делитель введенного пользователем числа. Для этого организовать цикл, который заканчивается, когда текущее значение некоторой переменной является делителем числа, и это число увеличивается на 1 на каждом шаге цикла. Доказать, что цикл закончится при любом целом положительном числе, введенном пользователем.

  2. Найти наибольше и наименьшие значения функции для целых аргументов от 1 до 50. Для этого использовать конструкцию выбора внутри цикла (номер задания равен остатку от деления номера варианта на 10):

    1. sin(2*3.14*i/15)/i

    1. cos(2*3.14*i/15)/i

    2. sin(2*3.14*i/50)/cos(2*3.14*i/50)

    3. cos(2*3.14*i/50+3.14/2)/sin(2*3.14*i/50+3.14/2)

    4. i*i-50*i

    5. sqrt(50*i)-i

    6. sin(2*3.14*i/25)

    7. cos(2*3.14*i/25)

    8. tan(2*3.14*i/50)

    9. pow(i,2)-50*i

  1. Нарисовать график функции из 2 задания. График представляет собой изображение из 50 символов по горизонтали и 50 символов по вертикали. Для отображения графика нужно организовать вложенные циклы. Внешний цикл выполняется 50 раз и рисует 50 строк. Внутренний цикл повторяется 50 раз и рисует 50 столбцов. Во внутреннем цикле проверяется, какой символ нужно нарисовать.

Для определения отображаемого символа используется следующее условное выражение. Если ceil(((func)-min)*50/(max-min))==50-j, то печатается символ "*", иначе печатается символ " " (пробел). В условном выражении max и min это максимум и минимум функции, найденные в предыдущем задании. Func – это отображаемая функция. Функция сeil находит наименьшее целое, не большее аргумента. Все выражение масштабирует диапазон значений функций (от min до max) на диапазон от 0 до 50 и определяет, в какой строке функция пересекает соответствующий столбец.

Содержание отчета

Отчет должен содержат текст всех программ с подробными комментариями, результаты работы этих программ.

Контрольные вопросы

  1. Как в общем виде записывается управляющая конструкция «while»?

  2. Как в общем виде записывается управляющая конструкция «for»?

  3. Для чего используется выравнивание инструкций?

  4. Какие конструкции можно использовать внутри конструкции цикла?

  5. Какие поля есть в конструкции «while»?

  6. Какие поля есть в конструкции «for»?

Лабораторная работа 5 Массивы и структуры

Цель работы: изучение массивов и структур.

Теоретические сведения

5.1.Пример массива

Рассмотрим задачу: даны 100 целых чисел, нужно найти их среднее значение.

Для хранения 100 целых чисел нужно завести 100 переменных целого типа. А затем, для нахождения среднего значения написать в коде 100 операторов сложения. 100 одинаковых операций можно было бы сделать в цикле, но эти операции нужно выполнять над разными переменными. Для того, чтобы записать такую операцию один раз и повторить ее 100 раз в цикле нужно иметь возможность обращаться к переменной не по имени, а по ее номеру.

Для решения этой проблемы в языках высокого уровня используются массивы. Массив – это именованный набор однотипных элементов, расположенных в памяти непосредственно друг за другом, обращаться к которым можно по их номеру. Обычно номер элемента в массиве называют его индексом.

Решение задачи приведено на рис. 9.

Рис. 9 Пример программы

Инструкция в 4 строке предназначена для инициализации генератора случайных чисел. Она использует функции из библиотеки time. Мы не будем рассматривать, как работает генератор случайных чисел, а просто используем его для первоначального заполнения массива.

В 6 строке написано объявление массива. Идентификатор int указывает на то, что элементы массива будут целого типа, «a» это имя массива, а в квадратных скобках указывается количество элементов. После этого объявления в памяти будут выделено место под 100 переменных целого типа, обратиться к которым можно, указав имя массива и его индекс.

В 7 и 8 строках записан цикл, заполняющий объявленный массив случайным числам. Он повторяется 100 раз, при этом переменная i принимает значения от 0 до 19. В 8 строке, слева от оператора присваивания, происходит обращение к i‑ому элементу массива «a». Для того чтобы обратится к некоторому элементу массива, нужно указать имя массива и, в квадратных скобках, его индекс.

В языке С элементы массива нумеруются начиная с 0. В примере на первом шаге цикла присваивается значение элементу a[0], на втором – а[1], а на последнем –a[100].

Вводить 100 чисел с клавиатуры при запуске программы было бы утомительно. Поэтому массив заполняется случайными числами, которые выдает функция rand().

В 9 и 10 строках записан цикл, который подсчитывает сумму элементов массива. В 11 строке печатается среднее значение.