Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / C++.Ашарина / C++ (ветв. алг.) / Ветвиесалгоритмы С++

.html
Скачиваний:
21
Добавлен:
17.04.2013
Размер:
31.36 Кб
Скачать

Московский Институт Электронной Техники Московский Институт Электронной Техники

Кафедра ИПОВС

Лабораторная работа.

Программирование ветвящихся алгоритмов в языке С++.

Разработала:

Ст. преп. Соколова Н.Ю.

 

Москва 1997 г.

Цель работы:

Изучить различные способы программирования ветвящихся алгоритмов;

Получить практические навыки программирования задач с разветвленной структурой.

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

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

Условный оператор if.

Синтаксис полной формы условного оператора:

If (<логическое выражение>) <оператор 1>;

Else <оператор 2>;

Если (<логическое выражение> истинно, т.е. больше 0, то выполняется <оператор 1>, иначе выполняется <оператор 2>.

Синтаксис сокращенной формы условного оператора:

If (<логическое выражение>) <оператор>;

<Оператор> выполняется только в том случае, если <логическое выражение> больше 0, т.е. истинно.

Под <логическим выражением> понимается совокупность операций отношений и логических операций. Основные логические операции приведены в таблице 1.

Таблица 1.

Операция Значение Пример ! логическое НЕ !EOF == равно Value == 0 != не равно Value !=0 < меньше, чем i< count > больше i > count >= больше или равно i >= count <= меньше или равно i <= count || логическое ИЛИ a | | b && логическое И a > 8 && c < 5

Часто каждая из альтернативных возможностей оператора if требует выполнение более одного оператора. Тогда необходимо заключить группу операторов в фигурные скобки { }.

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

Оператор множественного выбора.

Когда необходимо осуществить выбор одного из нескольких вариантов, мохно воспользоваться конструкцией if – else – if .. else. Но во многих случаях оказывается более удобным применить оператор switch.

Синтаксис оператора switch:

switch (<выражение>)

{

case <константное выражение>: <оператор или группа операторов>;

case <константное выражение>: <оператор или группа операторов>;

………………………………………………………………………………

case <константное выражение>: <оператор или группа операторов>;

default: <оператор или группа операторов>;

};

Результат вычисленного <выражения> сравнивается с каждым из <константных выражений>. Если находить совпадение, то управление передается оператору, связанному с данным case. Исполнение продолжается до конца тела switch или пока не встретиться оператор break, который передает управление из тела switch вовне. <Оператор или группа операторов>, стоящий после default выполняется, если <выражение> не соответствует ни одному из <константных выражений> в case. Default не обязательно располагать в конце.

<Константные выражения> целого типа или символьного типа. Если нескольким <константным выражениям> соответсвует один оператор и тот же <оператор>, то тогда возможна следующая запись:

switch (<выражение>)

{

case <константное выражение>:

case <константное выражение>:

case <константное выражение>: <оператор или группа операторов>;

};

Управление экраном.

С++ позволяет управлять экраном. Прототипы функций управления экраном находятся в файле conio.h. при использовании этих ффункций необходимо подключить этот файл с помощью директивы компилятора:

#include <conio.h>

Рассмотрим данные функции управления экраном.

Установка окна.

Функция

void window (int left, int top, int right, int bottom);

устанавливает текущее текстовое окно на экране (см. рис.). Координаты диагонали left, right, top, bottom всегда отсчитываются от верхнего левого угла экрана в абсолютных координатах и должны удовлетворять следующим условиям:

1 < left < right <25

1 < top < bottom < 80

При нарушении этих условий окно не создается. После установки окна все операции, связанные с выводом информации, производятся внутри текущего окна. Отсчет строк и столбцов для позиционирования курсора теперь производится теперь в координатах текущего окна. Теперь left = 1 и top = 1 это координаты верхнего левого ушла окна. Следует помнить, что при установки окна, очистка не производиться, а также, координаты очередного создаваемого окна всегда даются в абсолютных экранных координатах, а не в относительных координатах последнего текстового окна.

Очистка экрана.

Функция

void clrcsr();

Очищает текущее текстовое окно или весь экран.

Задание цвета фона.

Функция

void textbackground ( int newcolor);

В переменной newcolor задается одна из 16 целочисленных констант, каждая из которых имеет символьное обозначение (см. таб. 2).

Задание цвета символа.

Для задания цвета символа используется функция

void textcolor (int newcolor);

В переменной newcolor задается цвет выводимых на экран символов (см. таб. 2).

Установка курсора.

Для установки курсора в точку (X,Y) внутри текущего окна используется функция

void gotoxy (int x, Int y);

Таблица 2.

Константа цвета Обозначение цвета Цвет 0 BLACK Черный 1 BLUE Синий 2 GREEN Зеленый 3 CYAN Бирюзовый 4 RED Красный 5 MAGENTA Малиновый 6 BROWN Коричневый 7 LIGHTGRAY Светло-серый 8 DARKGRAY Темно-серый 9 LIGHTBLUE Светло-голубой 10 LIGHTGREEN Светло-зеленый 11 LIGHTCIAN Светло-бирюзовый 12 LIGHTRED Светло-красный 13 LIGHTMAGENTA Светло-малиновый 14 YELLOW Желтый 15 WHITE Белый

Примеры программирования.

Пример 1.

Написать программу нахождения действительных корней квадратного уравнения общего вида . При написании программы использовать функции управления экраном.

#include <conio.h>

#include <math.h>

#include <stdio.h>

void main ()

{

// Установить цвет экрана

textbackground (GREEN);

// Окрасить цвет экрана установленным цветом

clrscr();

// Задать окно

window (5,5,10,50);

// Задать цвет окна

textbackground (BLUE);

// Задать цвет символов

textcolor(RED);

// Окрасить окно установленным цветом

clrscr();

// Коэффициенты a, b, c

int a,b,c;

// Курсор в позицию (1,3)

gotoxy (1,3);

printf (“Введите коэффициенты a b c >”);

// Ввод данных

scanf (“%d%d%d”,&a&b&c);

// Вычисление дискриминанта

float d = b*b-4*a*c;

// Установить окно для вывода результатов

window (5,15,50,20);

textbackground(BLUE);

clrscr();

textcolor(RED);

// Если дискриминант больше 0

if (d>0)

{

// Вычислить корни x1, x2

float x1 = (-b+sqrt(d))/(2*a),

x2 = (-b-sqrt(d))/(2*a);

gotoxy(1,3);

// Печать корней

printf(“Первый корень = %5.2f”,x1);

gotoxy(1,5);

printf(“Второй корень = %5.2f”,x2);

}

// Если корней нет, то вывод сообщения “Корней нет”

else printf (“Корней нет”);

}

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

Какие операторы позволяют сделать выбор между несколькими альтернативами?

Что понимают под логическим выражением?

Чем отличается логическое И от логического ИЛИ?

Какие операции отношения вы знаете?

Чем отличаются между собой операторы if и switch?

Какие функции управления вы знаете?

Лабораторное задание.

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

Порядок выполнения лабораторной работы.

При домашней подготовки составить программы решения задачи для своего варианта.

На лабораторной работе набрать текст программы и отладить ее.

Показать результат работы программы преподавателю.

Защитить лабораторную работу.

Требования к отчету.

Отчет должен содержать:

Конспект лабораторной работы с лабораторным заданием.

Программу своего варианта.

Варианты заданий

№ варианта ЗАДАНИЕ 1, 16 Расположить в порядке возрастания значения следующих выражений:

2, 17 По номеру y ( y > 0) некоторого года определить с – номер его столетия. Учесть, что, к примеру, началом XX столетия был 1901, а не1900. 3, 18 Даны произвольные числа a, b, c. Если нельзя построить треугольник с такими длинами сторон, то выдать соответствующее сообщение, а если можно, то напечатать какой он: равносторонний, равнобедренный, разносторонний. 4, 19 Пользуясь оператором switch, по введенному номеру месяца выдать на экран сообщение о времени года и название введенного месяца. Например: 1 - зима, январь. 5, 20 По введенному времени и известному расписанию занятий вывести сообщение о том, что это: пара, с указанием номера, или перемена. 6, 21 Дано a и b. Напечатать максимальное и минимальное из значений выражений с указанием формул, по которым производились вычисления. 7, 22 Пользуясь операторм switch, по введенному номеру месяца, вывести номер квартала. 8, 23 Составить программу, которая по введенному году и номеру месяца определить число дней в этом месяце. 9, 24 Составить программу, которая при вводе символа, выводит текст ”цифра”, если введена цмфра, “латинская буква” при вводе латинской буквы и “и не буква и не латинская буква” во всех остальных случаях. 10, 25 При вводе + выввести сообщение “сложение”,

при вводе - выввести сообщение “сложение”,

при вводе * выввести сообщение “сложение”,

при вводе . выввести сообщение “сложение”,

с указанием формулы и примера сконкретными значениями. 11, 26 Составить программу, которая при вводе символа “{“ или “}” выводит сообщение “фигурная скоюка”, “[” или “]” – “квадратная скобка”, “(” или ”)” – круглая скобка. В остальных случаях – “Не скобка”. 12, 27 Даны произвольные числа a, b, c. Присвоить максимальное из них переменной а, минимальное – переменной с, среднее – переменной b. 13, 28 Составить программу, которая при вводе оценкив виде цифры выводит оценку в буквенном виде: 5 – отлично, 4 – хорошо, 3 – удовлетворительно, 2 – неудовлетворительно. 14, 29 Составить программу, которая выводит введенный возраст человека с добавлением слов “год”, “года”, “лет” (41 год, 3 года, 20 лет). 15, 30 Для заданного числа а найти корень уравнения f(x) = 0, где

Соседние файлы в папке C++ (ветв. алг.)