У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 9 3

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 29.12.2024

Лабораторная работа №9. Программирование разветвляющихся алгоритмов

Цель работы: научиться правильно использовать условный оператор if, оператор выбора case; научиться составлять программы решения задач на разветвляющиеся алгоритмы.

Общие сведения

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

Оператор перехода

Оператор перехода имеет вид

GOTO <метка>.

Он позволяет передать управление непосредственно на нужный оператор программы. Перед этим оператором должна располагаться метка отделенная от него двоеточием. В Турбо Паскале в качестве меток выступают либо целые числа от 0 до 9999, либо идентификаторы. Все метки должны быть описаны в разделе объявления меток следующим образом:

label <список меток через запятую> ;

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

Условный оператор включает в себя операторы, которые выполняются или не выполняются в зависимости от записанного в операторе условия. Оператор имеет вид:

  IF  "условие"  Then  "оператор1"  Else  "оператор2";

где "условие" - выражение логического типа; 
"оператор1" выполняется, если условие верно ( True ),
"оператор2" выполняется, если условие не верно ( False ).

Например, вычисление квадратного корня из числа "a" проводится при условии a>=0, операторами:

 IF  a>=0 Then b := Sqrt(a)

 Else

   begin

     WriteLn('a<0');

     Readln;

     Halt

   end;

Оператор Halt прекращает выполнение программы.

Схема выполнения условного оператора имеет вид:

В условном операторе может отсутствовать блок Else оператор2; т. е. условный оператор может иметь вид:

IF "условие" Then "опертор1";

например: IF a<0 Then a:=abs(a);

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

PROGRAM VES;             { определение весовой категории спортсмена }

                                    Условная схема программы

CONST A1='легкая категория';

     A2='средняя категория';

     A3='тяжелая категория';

     A4='сверхтяжелая категория';

var

 V : integer;

BEGIN

 Write('введите вес спортсмена V = '); ReadLn(v);

 if V<62 then WriteLn(A1)           {вложенный условный оператор }

 else if V<75 then WriteLn(A2)

      else if V<88 then WriteLn(A3)

           else WriteLn(A4)

 writeln('Нажмите Enter');

 readln;

END.

Для разложения целого числа на цифры удобно применять операции: MOD и DIV. Например, если дано трехзначное число "N" ( "N" соответствует "X1X2X3" ), то цифры: X1X2X3, составляющие это число определяются блоком операторов:

 X3:= N mod 10;

 N:= N div 10;

 X2:= N mod 10;

 N:= N div 10;

 X1:= N;

Если требуется определить, делится ли вещественное число "A" нацело на число "B", то можно применять функции Frac(x); и Int(x); например:

 x := A/B;    

 if Frac(x) = 0  then writeln('Число "A" делится нацело на число "B"');

 if Int(x) = x   then writeln('Число "A" делится нацело на число "B"');

Условный оператор может применяться для идентификации (распознавания) объекта по определенным признакам составляющих его элементов. Например, если объектом является треугольник, то элементами объекта могут быть: 1) три его угла (a, b, c); 2) три его стороны (a1, b1, c1); и т. д.

Признаками являются значения элементов по которым производится идентификация, например, для углов: 1) один угол > 90 - (один признак); 2) три угла < 90 - (три признака); и т. д.

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

Если идентификация проводится по одному признаку для нескольких элементов, то несколько условий связываются служебным словом "or", например:

 If (a > 90) or (b > 90) or (c > 90) then writeln ( 'Треугольник - тупоугольный' );

Если идентификация проводится по нескольким признакам, число которых равно числу элементов, то несколько условий связываются служебным словом "and", например:

 If (a < 90) and (b < 90) and (c < 90) then

   writeln('Треугольник - остроугольный');

Если имя объекта составное, то добавляются признаки для идентификации второй части имени и применяются вложенные условные операторы, например, для равнобедренного треугольника:

 If (a < 90)and (b < 90) and(c < 90) then

   If (a=b) or (b=c) or (a=c) then

     writeln('Треугольник - остроугольный и равнобедренный')  

   else writeln('Треугольник - остроугольный');

Напомним, что условный оператор можно применять для контроля правильности вводимых данных, например:

 If (a+b+c)<>180 then

   begin

     writeln('Сумма углов <> 180');

     Halt  

   end;

Если для идентификации объекта достаточно меньшего числа признаков, чем число элементов, то условия, связанные "and" группируются, а группы соединяются служебным словом "or". Например, четырехугольник имеет элементами четыре стороны ( a, b, c, d ), а его имя устанавливается по двум признакам (равенство двух пар сторон), тогда можно использовать операторы:

 If ((a=b) and (c=d)) or ((a=c) and (b=d)) or ((a=d) and (b=c)) then

   writeln('Параллелограмм');

Оператор выбора CASE

Оператор служит для выбора одного из помеченных вариантов действия (операторов), в зависимости от значения "параметра". Оператор имеет вид:

  Case "параметр" Of

    "список помеченных операторов"    

    Else "оператор"

  End;

Здесь "параметр" - выражение или переменная порядкового типа.

Из "списка помеченных операторов" выполняется оператор с меткой, включающей значение "параметра", иначе оператор после слова Else.

Конструкция Else "оператор" может отсутствовать, тогда "оператор" будет иметь вид: Begin "операторы" end;

Пример операторов для определения порядка целого числа N от 0 до 999:

 case N of

   0..9     : writeln('однозначное');

   10..99   : writeln('двузначное');

   100..999 : writeln('трехзначное')

   else writeln('Число "N" не входит в указанный диапазон')  

 end;

Приведем пример программы случайного предсказания одного из десяти вариантов ближайшего будущего с вероятностью 1/20, в остальных случаях - вы "неудачник".

PROGRAM FUTURE;

var N : word;

BEGIN

 writeln('ПРЕДСКАЗАНИЕ БУДУЩЕГО');

 Randomize;

 N:=Random(20)+1;      { N - случайное число от 1 до 20 }

 writeln;   write('Вас ожидает ');

 case N of

    1 : writeln('счастье');

    2 : writeln('пятерка');

    3 : writeln('дорога');

    4 : writeln('двойка');

    5 : writeln('болезнь');

    6 : writeln('здоровье');

    7 : writeln('деньги');

    8 : writeln('любовь');

    9 : writeln('встреча');

    10 : writeln('дети')

     else writeln('неудача')

 end;

 writeln('Нажми Enter');

 readln;  

END.

Здесь функция Random(x) генерирует случайное число, с равномерной плотностью распределения на заданном интервале. Для инициализации распределения в начале программы необходимо вызвать процедуру Randomize.

Пример1: Дано действительное а. Для функций f(a),график которой представлен на рисунке,вычислить f(a).

Этапы решения задачи:

  1.  Математическая модель: функция вычисляется по следующей формуле 

  1.  Составим схему алгоритма 


Детализируем блок"Определяем к какому промежутку относится x."
 


Добавим блоки вычисления функции на каждом из промежутков:
 

Таким образом, окончательный алгоритм выглядит следующим образом: 

Дальнейшая детализация не требуется. Переводим блок-схему на язык Паскаль:

Program example1;

  var a, f:real;

  begin

      write('Введите a> ');

   readln(a);

         if a<-1 then f:= -a-1 else

           if (a>=-1) and (a<0) then f:= a+1 else

           if (a>=0) and (a<1) then f:= -a+1 else f:= a+1;

         writeln('F= 'f);

  end.

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

  1.  Какие операторы используются для программирования разветвлений?
  2.  Как выполняются операторы перехода?
  3.  Для чего служит ключ выбора и какого он может быть типа?
  4.  Особенности использования вложенных условных операторов.
  5.  Каковы отличия оператора выбора case от оператора условия if?
  6.  Какую из функций: Sin(x), Abs(x), Trunc(x) можно заменить условным оператором if x<0 then x := -x?

Задачи

  1.  Даны действительные положительные числа x, y, z. Выяснить, существует ли треугольник с длинами сторон x, y, z.
  2.  Дано действительное а. Для функции f(a), график которой представлен на рисунке, вычислить f(a).

  1.  Пусть D - заштрихованная часть плоскости и пусть u определяется по x и y следующим образом (запись (х, у) D означает, что точка с координатами х, у принадлежит D):

а)

б)

  1.  Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3).
  2.  Даны действительные числа x, y. Если x, y отрицательны, то каждое значение заменить его модулем; если отрицательное только одно из них, то оба значения увеличить на 0.5; если оба значения не отрицательны и ни одно из них не принадлежит отрезку [0.5, 2.0], то оба значения уменьшить в 10 раз; в остальных случаях x, y оставить без изменения.
  3.  Определить и вывести на печать номер квадранта, в котором расположена точка М(x,y), x и y заданные вещественные числа.
  4.  Из величин, определяемых выражениями a=sinx, b=cosx, c=ln|x| при заданном х, определить и вывести на экран дисплея минимальное значение.
  5.  Определить, какая из двух точек - M1(x1,y1) или M2(x2,y2) - расположена ближе к началу координат. Вывести на экран дисплея координаты этой точки.
  6.  Определить, какая из двух фигур (круг или квадрат) имеет большую площадь. Известно, что сторона квадрата равна а, радиус круга r. Вывести на экран название и значение площади большей фигуры.
  7.  Определить, попадает ли точка M(x,y) в круг радиусом r с центром в точке (x0,y0).
  8.  Перераспределить значения переменных X и Y так, чтобы в X оказалось меньшее из этих значений, а в Y — большее.
  9.  Значения переменных X, Y, Z поменять местами так, чтобы они оказались упорядоченными по возрастанию.
  10.  Известны два расстояния: одно в километрах, другое в футах. Какое из расстояний меньше?
  11.  Ввести два числа. Меньшее заменить полусуммой, а большее – удвоенным произведением.
  12.  Локатор ориентирован на одну из сторон света («С» — север, «З» — запад, «Ю» — юг, «В» — восток) и может принимать три цифровые команды: 1 — поворот налево, –1 — поворот направо, 2 — поворот на 180 градусов. Дан символ C — исходная ориентация локатора и числа N1 и N2 — две посланные ему команды. Вывести ориентацию локатора после выполнения данных команд.
  13.  Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты, следующей за указанной.
  14.  Дано целое число в диапазоне 100 – 999. Вывести строку — словесное описание данного числа, например: 256 — «двести пятьдесят шесть», 814 — «восемьсот четырнадцать».
  15.  В восточном календаре принят 60-летний цикл, состоящий из 12-летних подциклов, обозначаемых названиями цвета: зеленый, красный, желтый, белый и черный. В каждом подцикле годы носят названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. По номеру года вывести его название, если 1984 год был началом цикла — годом зеленой крысы.
  16.  Составьте программу, реализующую эпизод применения компьютера в книжном магазине. Компьютер запрашивает стоимость книг, сумму денег, внесенную покупателем; если сдачи не требуется, печатает на экране «спасибо»; если денег внесено больше, то печатает «возьмите сдачу» и указывает сумму сдачи; если денег недостаточно, то печатает об этом сообщение, указывающее размер недостающей суммы.
  17.  Даны три переменные: X, Y, Z. Если их значения упорядочены по убыванию, то удвоить их; в противном случае заменить значение каждой переменной на противоположное.




1. Спенсер Герберт
2. Алхимии слова Яна Парандовского Эта книга названа точно-
3. Тема- Механизм функционирования рынка и его инфраструктура
4. кардинальная проблема развития искусства начала XX века
5. Образование СССР
6. на тему- Изобразительное искусство Византии Выполнил- Сейдумеров Р
7. Курсовая работа- Учётная политика
8. тематике При применении чек-рейза важную роль играют следующие факторы- Акция на префлопе- Если мы бы
9. Алгоритм действия акушерки при эклампсии
10. Тема 2013 ~ Межкультурный диалог- Мир в котором мы живем
11. Тема 17. Производство по делу об административном правонарушении План 1
12. 2013 г
13. Реферат- Краткие сведения из истории латинского языка
14. Тема- Папины заботы Рассказывание из опыта детей
15. Лекція 9 Засоби безпеки ОС Windows 7 Навчальні питання 1
16. СКОРОСТИ ТОЧЕК ПЛОСКОЙ ФИГУРЫ ВВОД 9
17. База данных компьютерной фирмы
18. Большинство жителей города не задевает проблема экологии потому что результаты ее решения не видны сразу
19.  Формальнаrdquo; автокореляція На форму автою вказує значення статистики ДурбінаВатсона при застосуван
20. реферате я затрону лишь некоторые темы и факты из истории нашего оружия