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

Вид материалаПрограмма

Содержание


Пример выполнения лабораторного задания № 2
Подобный материал:
1   2   3   4   5   6   7

Тема №2. Ветвление программы (использование операторов ветвления и переключателя switch).


Задание: используя операторы ветвления (if и if … else), составить программу для вычисления составной (сложной) функции, имеющей различный вид на разных участках аргумента. С помощью переключателя (switch) указать на каком отрезке находится введенное с клавиатуры значение аргумента, и вывести значение функции в данной точке.

Все исходные данные, необходимые для проведения вычислений, вводить с клавиатуры. Начертить блок-схему алгоритма вычисления.

Пример выполнения лабораторного задания № 2

Пусть требуется вычислить составную функцию, заданную на 4-х отрезках изменения аргумента. В данном примере приведем программу в соответствии со всеми указанными ранее требованиями, в том числе подробным описанием задания и комментариями (внутри фигурных скобок) по тексту программы.

Обратите внимание на отступы вправо, принятые при записи программ на языке Cи.

Условный оператор специально используется в двух форматах: с применением и отсутствием альтернативной части (else).

#include

#include

#include

int main()

{ /* задание переменной перечисляемого типа */

enum {def,o1,o2,o3,o4} otr; /* номер отрезка, def – выбор по умолчанию */

float x,y;


printf(" Лабораторная работа N 2 вариант 27 \n");

printf("Тема: Ветвление программы \n");

printf(" Задание: Используя оператор if, составить программу \n");

printf("для вычисления составной функции вида: \n");

printf("1> sqr(x) при x от -2.0 до 1.0\n");

printf("2> sqrt(x) при x от 1.0 до 2.0\n");

printf("3> y=sqrt(x-2)+sqrt(2) при x от 2.0 до 3.0\n");

printf("4> y=1+sqrt(x-1) при x от 3.0 до 4.0\n");

printf("указать отрезок, где находится введенный с клавиатуры \n");

printf("аргумент и вывести значение функции в данной точке. \n");

printf(" Автор: Путилов Александр Петрович, гр. Пд-11 \n");


printf("Введите x=");

scanf("%f",&x); printf("\n");


/* Выбор отрезка */

otr=def;

if ((x>=-2.0) && (x<1.0)) otr=o1;

else if ((x>=1.0) && (x<2.0)) otr=o2;

if ((x>=2.0) && (x<3.0)) otr=o3;

if ((x>=3.0) && (x<=4.0)) otr=o4;


/* Вычисление значения функции */

switch (otr)

{

case o1: y=pow(x,2); break;

case o2: y=sqrt(x); break;

case o3: y=sqrt(x-2)+sqrt(2); break;

case o4: y=1+sqrt(x-1); break;

default: printf("Число вне диапазона."); getch(); exit(1);

}

printf ("Промежуток %d: y= %3.2f; ",otr,y);

return 0;

}


Обратите внимание, что в примере использована еще одна библиотека stdlib. Часть функций этой библиотеки уже известна по математической библиотеке, а другие функции надо будет изучать по мере необходимости.

Новым является использование перечисляемого типа данных (enum). Объявление перечисления задает тип переменной перечисления и определяет список именованных констант, называемый списком перечисления. Значением каждого имени списка является некоторое целое число. Переменная типа перечисления может принимать значения одной из именованных констант списка. Именованные константы списка имеют тип int. Поэтому переменной перечисляемого типа можно присвоить любое значение типа int. Фатальной ошибки при этом не будет, только предупреждение (Assign int to enum) о том, что переменной перечисляемого типа присвоено целое значение. Допускаете ли вы такую вольность или нет, решайте сами, так как последствия могут быть неожиданными.

При использовании операторов ветвления программы (if, else), несколько существенных особенностей, отличающих синтаксис языков Паскаль и Си и дающих наибольшее число ошибок:
    • в языке Си результатом логической операции служит целое число, любое целое число, не равное 0, интерпретируется как истина;
    • поразрядные (битовые) логические операторы: & , | , , ~ ;
    • логические операторы: && , || , ! ;
    • логическое выражение после слова if обязательно должно быть в круглых скобках;
    • выражение перед альтернативной частью (else) должно заканчиваться точкой с запятой;
    • оператор проверки на равенство обозначается двойным знаком «равно», а проверка на неравенство – «восклицательный знак равно».

Контрольные вопросы к лабораторной работе № 2
  1. Как используются операторы логических операций (и, или, исключающее или) в условных выражениях?
  2. Начертите таблицы истинности логических операций.
  3. Укажите тип переменной оператора switch, по значению которой выполняется переключение.
  4. Какое действие может быть выполнено в операторе switch по умолчанию?
  5. Какой синтаксис записи метки в операторе switch?
  6. Как использовать окно Watch?
  7. Как выполнить программу по шагам (Step over и Trace into)?
  8. Как средствами встроенного редактора производится копирование и вклейка фрагмента текста?
  9. Каково назначение и использование оператора break?