Главная страница
Навигация по странице:

  • Отчет по лабораторной работе № 4

  • 1. Цель работы Изучить способы записи сложных логических условий.2. Теоретическое введение

  • Оператор switch.

  • 3. Техническое задание

  • 5. Блок-схема

  • Точка попала в плоскость

  • 9. Результаты тестирования

  • Отчёт по информационным технологиям. Отчёт ЛБ4 Сапожников Андрей ИВТ1-22. Разветвляющиеся алгоритмы. Геометрические задачи


    Скачать 0.87 Mb.
    НазваниеРазветвляющиеся алгоритмы. Геометрические задачи
    АнкорОтчёт по информационным технологиям
    Дата09.10.2022
    Размер0.87 Mb.
    Формат файлаdocx
    Имя файлаОтчёт ЛБ4 Сапожников Андрей ИВТ1-22.docx
    ТипОтчет
    #724286

    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РФ

    филиал федерального государственного бюджетного образовательного учреждения высшего образования «Национальный исследовательский университет «МЭИ» в г. Смоленске

    Кафедра вычислительной техники


    Отчет по лабораторной работе № 4
    по курсу: «Программирование»

    Тема: «Разветвляющиеся алгоритмы.

    Геометрические

    задачи»

    Группа: ИВТ1-22

    Студент: Сапожников А.С.

    Преподаватель:

    доцент Курылев В.А.

    ассистент Жарков А.П.

    Вариант: № 22
    Смоленск, 2022 г.

    1. Цель работы

    Изучить способы записи сложных логических условий.

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

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

    2.1. Операторы if-else, switch

    В языке программирования C синтаксис оператора ветвления if-else выглядит так:

    if (логич_выражение)

    выражение1;

    else

    выражение2;

    Как и в других языках ветка else не является обязательной.

    Оператор switch. При организации множественного выбора, когда проверяется значение переменной на соответствие тому или иному значению, бывает удобно использовать не условный оператор if-else, а оператор переключения switch. Его синтаксис можно описать так:

    switch (целочисленная_переменная) {

    case константа1:

    операции;

    case константа2:

    операции;

    ….

    default:

    операции;

    }

    В скобках после слова switch может стоять не только переменная, но и выражение, результат выполнения которого возвращает целое значение (может быть символ). Константы при case также могут быть результатом выполнения выражений. Константы можно группировать в одном case (например, case 12, 13, 18). Ветка default не обязательна.

    2.2. Логические операторы

    Как известно логическое выражение может быть сложным. Логические операторы И и ИЛИ в языке программирования C обозначаются соответственно парными знаками амперсанда (&&) и вертикальной черты (||). Их приоритет меньше, чем у простых логических операторов, поэтому простые логические операции при их объединении в сложные логические выражения можно не заключать в скобки. Оператор НЕ имеет приоритет выше, чем И, ИЛИ. Он выполняется перед ними. Обозначается (not), либо (!=). Также в Си встречается двойное равно (==), это означает сравнение значений. Пример сложного логического выражения на языке C:

    a > 100 && b != 0

    2.3. Алгебраические способы задания геометрических фигур

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

    3. Техническое задание

    Составить алгоритм и программу, проверяющую, попадает ли

    введенная точка с координатами (x, y) в заштрихованную фигуру (Рисунок 3).



    Рисунок 3 – Техническое задание

    4. Анализ технического задания

    Рассмотрев рисунок 3, можно понять, что точка должна оказаться внутри серой области, то есть попасть в окружность, либо в треугольник. Для выполнения лабораторной работы нам необходимо вспомнить математические уравнения окружности и прямой. В процессе выполнения программы будут вводиться произвольные координаты точки (x, y), а затем будет проводиться проверка условий, в которых записаны необходимые уравнения для того, чтобы точка оказалась в серой области. Если точка принадлежит области, то в командную строку будет выводиться соответствующее сообщение. Если же точка не лежит в области, то результат будет иным. Уравнение окружности имеет вид:

    ,

    где x и y координаты произвольной точки, и – координаты центра окружности, R – радиус окружности. В нашем случае центр окружности совпадает с центром координатной оси, поэтому уравнение можно упростить до следующего вида:



    Уравнение прямой имеет вид:

    ,

    где a – угловой коэффициент между прямой и осью Ox (если a>0, то угол острый, если a<0, то угол тупой), b – смещение прямой относительно оси ординат (Если b>0, то смещение вверх. Если b<0 – вниз.).

    Рассмотрим прямоугольный треугольник. Угловой коэффициент , так как угол с осью тупой, а значение координаты x по модулю равно каждому значению координаты y. Прямая смещена относительно центра на b=2. Таким образом, гипотенуза прямоугольного треугольника имеет уравнение:

    .

    При этом координата x должна лежать в пределах от -1 до 2. А координата y от -1 до 2, а также должна находиться ниже гипотенузы треугольника.

    Теперь определим условие для окружности. По рисунку можем определить радиус – он равен 1. Чтобы точка оказалась внутри окружности должно выполняться неравенство:



    Для того чтобы записать общее условие в программу воспользуемся условным оператором if. Наше условие будет выглядеть так: if ((x*x+y*y)<=1 || (x>=0 && (x<=2) && (y>=0) && (y<=2) && (y<=-x+2))).

    5. Блок-схема

    Схема программы отображена на рисунке 5.



    Рисунок 5 – Блок-схема программы

    6. Модульная структура программы

    Программа состоит из одного модуля – самой программы.

    7. Спецификация на программные модули

    Входные данные:

    • x, y типа float – вводимые числа, которые и будут проверяться на принадлежность к закрашенной плоскости.

    Проверка условия – оператор if. Порядок условия таков, что программа проверяет сначала принадлежность точки к окружности. Затем ставится знак ||, что означает логическое ИЛИ. Во втором условии проверяется тот факт, находится ли точка в плоскости треугольника. Для этого берутся крайние точки, ограничивающие треугольник (по оси Ox это 0 и 2, по оси Oy это 0 и 2). Одновременно с этим должно выполняться условие того, что ордината точки лежит ниже гипотенузы треугольника. Это также записано в виде неравенства. Таким образом, должно выполниться одно из двух условий. Если первое ложно, второе может быть истинно и наоборот – В таком случае результат выполнения будет положительным и на экран в консоль будет выведено следующее сообщение: Точка попала в плоскость. Если же 2 условия не выполнятся, то результат будет ложным и в консоли будет написано: Точка не попала в плоскость.

    8. Текст программы

    #include
    /* Определение попадания точки в заданную область */
    int main() {

    float x, y;

    printf ("Введите x\n"); // Ввод координаты x

    scanf ("%f",&x);

    printf ("Введите y\n"); // Ввод координаты x

    scanf ("%f",&y);

    if ((x*x+y*y)<=1 || (x>=0 && (x<=2) && (y>=0) && (y<=2) && (y<=-x+2))) { // Условие для точки

    printf ("Точка попала в плоскость\n"); // Вывод результата при соблюдении условия

    return 0;

    }

    printf ("Точка не попала в плоскость\n"); // Вывод результата при несоблюдении условия

    return 0;

    }

    9. Результаты тестирования

    Программа протестирована с несколькими значениями. Рассмотрим 8 случаев, по 2 случая на все 4 четверти, когда точка попадает и не попадает в область в четвертях.

    I четверть:

    1. Точка (1, 1) лежит в плоскости (рисунок 9.1).



    Рисунок 9.1 – Результат выполнения

    1. Точка (2, 2) не лежит в плоскости (рисунок 9.2).



    Рисунок 9.2 – Результат выполнения

    II четверть:

    1. Точка (-0.5, 0.5) лежит в плоскости (рисунок 9.3).



    Рисунок 9.3 – Результат выполнения

    1. Точка (-1, 1) не лежит в плоскости (рисунок 9.4).



    Рисунок 9.4 – Результат выполнения

    III четверть:

    1. Точка (-0.5, -0.5) лежит в плоскости (рисунок 9.5).



    Рисунок 9.5 – Результат выполнения

    1. Точка (-2, -1) не лежит в плоскости (рисунок 9.6).



    Рисунок 9.6 – Результат выполнения

    IV четверть:

    1. Точка (0,7, -0,2) лежит в плоскости (рисунок 9.7).



    Рисунок 9.7 – Результат выполнения

    1. Точка (2, -1) не лежит в плоскости (рисунок 9.8).



    Рисунок 9.8 – Результат выполнения

    10. Вывод

    В ходе выполнения лабораторной работы были изучены операторы ветвления, основные логические операторы в языке C и алгебраические способы задания геометрических фигур. Знания были закреплены на практике путём написания программы для решения поставленной задачи.


    написать администратору сайта