- •Основные понятия программирования
- •Понятие алгоритма. Алгоритмизация
- •Свойства алгоритма
- •Запись алгоритма на естественном языке
- •Изображение алгоритма в виде схемы
- •Понятие о языках программирования
- •Понятие о структурном подходе к разработке алгоритмов
- •4 Идти к 8
- •6 Идти к 8
- •8 Останов
- •Первая программа на Си
- •Процесс создания программы
- •Комментарии
- •Директива #include
- •Макросы
- •Переменные и типы данных
- •Правила именования идентификаторов
- •Типы данных
- •Int двухбайтовое целое число
- •Оператор printf: вывод на экран
- •Последовательности для вывода специальных символов
- •Спецификация вывода
- •X тип int в шестнадцатеричном виде
- •Оператор scanf: ввод с клавиатуры
- •Логическая организация программы на Си
- •Функция main
- •Глобальные и локальные переменные
- •Операторы и операции
- •Арифметические операции
- •Битовые операции
- •Операции отношения
- •Логические операции
- •Операции присваивания
- •Другие операции
- •Математические функции
- •Управляющие структуры
- •Операторы ветвления
- •Операторы цикла
- •Массивы
- •Функции
- •Интегрированная среда разработки turbo c
- •Общие сведения и принципы работы
- •Стандартные органы управления
- •Главное меню
- •Запуск иср и выход
- •Работа с окнами и файлами
- •Система помощи
- •Редактор
- •Компиляция и выполнение программ
- •Технология создания с-программы
- •Лабораторные работы
- •Лабораторная работа №1
- •Создание нового файла
- •Ввод и редактирование исходного текста
- •Сохранение
- •Выполнение программы
- •Исправление ошибок
- •Просмотр результатов выполнения
- •Закрытие файла
- •Открытие и выполнение ранее сохраненного файла
- •Вызов справки
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •Лабораторная работа №7
- •Лабораторная работа №8
- •Список вопросов
- •Литература
- •Приложение Пример оформления отчета по лабораторной работе
- •Блок-схема алгоритма
- •Текст программы
- •Результат выполнения программы
- •Теория и технология программирования
-
Лабораторная работа №4
Цель: изучить операторы условия, операции отношения, логические операции и выражения.
Порядок выполнения работы:
-
изучить оператор ветвления if (параграф 13.1), операции отношения (параграф 12.2) и логические операции (параграф 12.4);
-
составить два логических выражения для определения точки, принадлежащей фигуре, и точки, не принадлежащей фигуре;
-
разработать блок-схему;
-
составить тексты программ на языке Cи (в двух вариантах);
-
проверить правильность выполнения разработанных программ;
-
составить отчет.
Логические выражения используются не только для решения задач булевой алгебры, но и для ветвления программы в логических и циклических операторах. Причем последний вариант использования логических выражений применяется наиболее часто.
Логические выражения состоят из логических констант, переменных и отношений, соединенных логическими операциями. В простейших случаях в операторах используют отношения: два выражения, соединенных знаком отношения (>, >=, <, <=, ==, !=), например i > 20. Но иногда возникают условия, требующие использования более сложных логических выражений.
Пример. На плоскости задана фигура (Рисунок 49). Вводится точка с координатами x, y. Необходимо определить, принадлежит введенная точка фигуре или нет. В результате выводится ответ: «Введенная точка принадлежит фигуре» или «Введенная точка не принадлежит фигуре».
Рисунок 49 — Пример задания к лабораторной работе №4
Для определения вхождения точки в круг можно использовать формулу окружности:
.
Соответственно изменив знак = на <, получим условие вхождения точки в круг с координатами центра (7; 6) и радиусом 2:
Кроме этого область, занятая треугольником, так же входит в закрашенную область. Воспользуемся уравнением прямой, проходящей через две точки:
.
Преобразуя это уравнение к общепринятому виду, получим:
.
Подставим в это уравнение координаты точек , и . Получим уравнения трех прямых:
,
,
Чтобы точка принадлежала треугольнику, она должна находиться ниже прямой –, ниже прямой – и выше прямой –. Данным условиям соответствуют неравенства:
,
,
.
Тогда, можно сказать, что точка принадлежит фигуре «если она находится ниже прямой – И ниже прямой – И выше прямой – ИЛИ внутри круга с центром и радиусом ».
Запишем это выражение на языке Си с учетом с использованием логических операций И — &&, ИЛИ — || (см. 12.4):
if ( y < 7.0/3 * x – 1.0/3 && y < -7.0/6 * x + 82.0/6 && y > 2 || sqr(x – 7) + sqr(y – 6) < sqr(2) ) |
Обратите внимание: чтобы не произошло округления при делении целых чисел, одно из них записывается в вещественном виде с добавлением фиктивной дробной части «.0». (Примечание: разбивка выражения по строкам и отступы сделаны для удобства чтения данного выражения.)
Но можно и поменять ветви оператора if местами, тогда при вхождении точки в фигуру логическое выражение должно принимать ложное значение. Тривиальный вариант: поставить перед всем предыдущим выражением операцию отрицания НЕ — !. Но более наглядным решением будет составление логического выражения не вхождения точки в фигуру. Здесь должно выполняться условие: точка не лежит внутри круга и не находится в треугольнике. На языке Си выражение примет вид:
if ( ( y > 7.0/3 * x – 1.0/3 || y > -7.0/6 * x + 82.0/6 || y < 2 ) && sqr(x – 7) + sqr(y – 6) > sqr(2) ) |
Группа отношений, объединенных логическими операциями ИЛИ, заключена в скобки, т.к. операция ИЛИ (аналог сложения) имеет более низкий приоритет по сравнению с операцией И (аналог умножения).
При выполнении лабораторной работы составить два варианта программы (без использования операции !) для фигуры, соответствующей варианту задания.
Листинг 18 — Лабораторная работа №4
/* lab4.c – лабораторная работа №4. */
#include <stdio.h>
#define sqr(x) ((x) * (x))
void main() { float x, y;
/* ввод координат */ printf(“\nВведите координаты x и y: ”); scanf(“%f %f”, &x, &y);
printf(“Введенная точка (%.1f, %.1f) “, x, y);
/* проверка логического выражения */ if ( y < 7.0/3 * x – 1.0/3 && y < -7.0/6 * x + 82.0/6 && y > 2 || sqr(x – 7) + sqr(y – 6) < sqr(2) ) printf(“принадлежит фигуре”); else printf(“не принадлежит фигуре”); } |
Для проверки правильности работы программы необходимо выполнить ее несколько раз, задавая точки из различных областей как принадлежащих, так и не принадлежащих фигуре. Для приведенного примера можно использовать следующий набор точек:
, , , , — принадлежат фигуре;
, , , , — не принадлежат фигуре.
Рисунок 50 — Результат выполнения lab4.c
Таблица 9 — Варианты заданий к лабораторной работе №4
№ вар. |
Фигура |
№ вар. |
Фигура |
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|