Практическая работа №2. Составление программ с использование операторов условного и безусловного переходов.
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Цель работы: Изучение структур разветвления (условных операторов) ТР.

Теоретические основы:

Операторы условной и безусловной передачи управления

Условный оператор дает возможность, в зависимости от заданного в нём условия, выполнить то или иное действие, что позволяет разветвлять

вычислительный процесс.

  Этот оператор имеет следующий вид:

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

где условие - логическое выражение;

оператор 1, оператор 2 - любые операторы языка ТР.

Условный оператор работает следующим образом: если <условие> принимает значение TRUE (истина), то выполняется оператор 1, а оператор 2 пропускается; если - FALSE (ложь), то оператор 1 пропускается, а выполняется оператор 2.

     На месте оператора 1 или оператора 2 может стоять группа операторов, заключенных в операторные скобки (Begin ... end).

  Часть Else (оператор 2) может быть опущена. Тогда при значении TRUE

условного выражения выполняется оператор 1, в противном случае выполняется оператор, стоящий за оператором IF.

       Пример: Вычислить значение функции Y, в зависимости от значения x.

    Условный оператор будет иметь вид:

       If x>0 Then Y:=a*x+b Else Y:=a*x*x+b;

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

                                          GOTO метка;

Действие оператора Goto состоит в передаче управления в программе соотвествующему помеченному оператору.

       При использовании меток необходимо помнить:

- метка, на которую ссылается оператор Goto, должна быть описана в подразделе Label и она обязательно должна встретиться в теле программы;

- метка может ставиться перед ключевым словом End, что означает переход на конец текущего блока Begin … End;

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

- область действия оператора goto и связанных с ним меток строго локализована. Метки, описанные в основной части программы, действуют только в ней. Метки, описанные в подпрограммах, определенных программистом, действуют только внутри этих подпрограмм и поэтому передача управления извне подпрограммы на метку внутри нее невозможна.

    Кроме того, ТР обладает средствами безусловного выхода из программных блоков (процедур, функций или основной программы), что позволяет завершать программу или подпрограммы без предварительных переходов по меткам. Для этого используются системные процедуры EXIT и HALT.

       Вызов Exit вызывает завершение работы только того программного блока, в котором он используется.

    Процедура Halt завершает выполнение всей программы.

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

Для разветвления в программе более чем в 2-х направлениях, можно использовать оператор выбора:

Case <Выражение - ключ выбора> OF <Список выбора> End

                                          Или

Case <Выражение - ключ выбора> OF <Список выбора>

Else <Операторы> End

Ключ выбора - выражение любого порядкового типа;

<Список выбора> - одна или более конструкций вида:

<Константа выбора> : <Оператор>;

<Константа выбора> - выражение того же типа, что и ключ выбора;

Оператор выбора работает следующим образом: вычисляется значение выражения <ключ выбора>, а затем в последовательности операторов <список выбора> отыскивается такой, которому предшествует константа, равная вычисленному значению. Найденный оператор выполняется, после чего оператор выбора завершает работу. Если в списке выбора нет такой константы, то управление передается оператору, стоящему за ключевым словом Else. Часть Else может отсутствовать и в этом случае оператор выбора завершает свою работу.

Типовой пример:

Составить программу для вычисления значений функции F для заданных значений переменной x и постоянных a, b.

F = a tgx +Ö |x-2| , при x < 2;                 (1)

F = (a2 - b2) Cos p , при x = 2;                (2)

F = (x-2)3 Sin px/2 , при x > 2.                (3)

 

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

  В рассматриваемом примере значение подкоренного выражения всегда больше 0, арифметические функции Sinх и Cosх определены для любых значений х.

  При вычислении значений функции tgx необходимо использовать выражение tgx = sinx /cosx. В связи с этим нужно анализировать значение, которое может принимать знаменатель: cosx не должен равняться 0. Все данные вещественного типа.

Текст программы с использованием структуры if ... then ...

      { Выполнили: студенты гр. ... Фамилии …}

      { Пример программы с разветвляющейся структурой}

                 { Раздел описаний данных}

        Const a=2.0; b=3.0;

        Var x,F: real;

      { Раздел операторов}

      Begin

     Writeln(' Введите x'); {Запрос на ввод x}

     Readln(x);        {Ввод значения x}

      if x>2 then F:= (x-2)*(х-2)*(х-2)* Sin(Pi *х/2);

      if x=2 then F:= (a*a-b*b)* Cos (Pi);

      if x<2 then if Cos (x) <> 0 then

                 F:= a*Sin(x)/Cos(x)+Sqrt (Abs(x-2))

                  else begin Writeln(' Знаменатель равен 0');

                      exit { Выход из программы } end;

         {Вывод результатов}

     Writeln(' При x = ',x:6:2,' F = ',F:8:3); readln; End.

 

                      Текст программы  с использованием структуры if ... then ... else ...;

               {Студенты гр. ..... Фамилии …}

      { Пример программы с разветвляющейся структурой}

      { Раздел описаний данных}

         Const a=2.0; b=3.0;

         Var x,F: real;

       { Раздел операторов}

        Begin

     Writeln(' Введите x'); {Запрос на ввод x}

     Readln(x);        {Ввод значения x}

      if 0 x>2 then F:= (x-2)*(х-2)*(х-2)* Sin(Pi/2*x)

      else if x=2 then F:= (a*a-b*b)* Cos (Pi)

           else if Cos(x) <> 0 then

                 F:= a* Sin(x)/Cos(x)+ Sqrt(Abs(x-2))

                else begin Writeln(' Знаменатель равен 0');

                    exit { Выход из программы } end;

         {Вывод результатов}

     Writeln(' При x= ',x:6:2,' F= ',F:8:3); readln;

      End.

Текст программы с использованием структуры case of

Вывести на экран сообщение (Нуль, Один и т. д.) в зависимости от того какое мы введем число.

               {Студенты гр. ..... Фамилии …}

      { Раздел описаний данных}

var NUM :integer;

      { Раздел операторов

begin

writeln(‘Введите число от 0 до 4:’);

readln (NUM);

  case NUM of {оператор выбора}

0:writeln (‘Нуль’);

1:writeln (‘Один’);

2:writeln (‘Два’);

3:writeln (‘Три’);

4:writeln (‘Четыре’);

  end;

    readln

end.

 

Варианты самостоятельных заданий

Задание №1

1. Дано целое число. Если оно является положительным, то прибавить к нему 1; в противном случае не изменять его. Вывести полученное число.

2. Дано целое число. Если оно является положительным, то прибавить к нему 1; если отрицательным, то вычесть из него 2; если нулевым, то заменить его на 10. Вывести полученное число.

3. Даны три целых числа. Найти количество положительных чисел в исходном наборе.

4. Даны три целых числа. Найти количество положительных и количество отрицательных чисел в исходном наборе.

5. Даны два числа. Вывести большее из них.

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

7. Даны два числа. Вывести вначале большее, а затем меньшее из них.

8. Даны две переменные вещественного типа: A, B. Перераспределить значения данных переменных так, чтобы в A оказалось меньшее из значений, а в B — большее. Вывести новые значения переменных A и B.

9. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных A и B.

10. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой переменной большее из этих значений, а если равны, то присвоить переменным нулевые значения. Вывести новые значения переменных A и B.

11. Даны три числа. Найти наименьшее из них.

12. Даны три числа. Найти среднее из них (то есть число, расположенное между наименьшим и наибольшим).

13. Даны три числа. Вывести вначале наименьшее, а затем наибольшее из данных чисел.

14. Даны три числа. Найти сумму двух наибольших из них.

15. Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию, то удвоить их; в противном случае заме- нить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C.

16. Даны три переменные вещественного типа: A, B, C. Если их значения упорядочены по возрастанию или убыванию, то удвоить их; в против- ном случае заменить значение каждой переменной на противоположное. Вывести новые значения переменных A, B, C.

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

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

19. На числовой оси расположены три точки: A, B, C. Определить, какая из двух последних точек (B или C) расположена ближе к A, и вывести эту точку и ее расстояние от точки A.

20. Даны целочисленные координаты точки на плоскости. Если точка совпадает с началом координат, то вывести 0. Если точка не совпадает с началом координат, но лежит на оси OX или OY, то вывести соответственно 1 или 2. Если точка не лежит на координатных осях, то вывести 3.

Задание №2

Ввести координаты точки А с клавиатуры и определить в какую из областей она попадает.

1 2 3
4 5 6
7   8 9
10     11 12
13 14 15
16 17 18  
19 20 Дополнительная задача

 

Задание №3

1. Написать программу, которая по номеру дня недели (целому числу от 1 до 7) выдает в качестве результата количество занятий в вашей группе в этот день.

2. Написать программу, которая по номеру месяца выдает название следующего за ним месяца (при т = 1 получаем февраль, 4 — май и т.д.).

3. Написать программу, которая бы по введенному номеру времени года (1 — зима, 2 — весна, 3 — лето, 4 — осень) выдавала соответствующие этому времени года месяцы, количество дней в каждом из месяцев.

4. Написать программу, позволяющую по последней цифре числа определить последнюю цифру его квадрата.

5. Написать программу, которая по номеру месяца выдает название следующего за ним месяца (при т = 1 получаем фев­раль, 4 — май и т.д.).

6.  Написать программу, которая бы по введенному номерувремени года (1 — зима, 2 — весна, 3 — лето, 4 — осень) выдавала соответствующие этому времени года месяцы, количество дней в каждом из месяцев.

7. Составить программу, которая по заданным году и номеру месяца m определяет количество дней в этом месяце.

8. Написать программу, которая бы по введенному номеру времени года (1 — зима, 2 — весна, 3 — лето, 4 — осень) выдавала соответствующие этому времени года месяцы, количество дней в каждом из месяцев.

9. Для каждой введенной цифры (0 — 9) вывести соответ­ствующее ей название на английском языке (0 — zero, 1 — оnе,2 — two, ... ).

10. Написать программу, которая по номеру месяца выдает на­
звание следующего за ним месяца (при т = 1 получаем фев­раль, 4 — май и т.д.).

11. Написать программу, которая бы по введенному номеру
времени года (1 — зима, 2 — весна, 3 — лето, 4 — осень) выдавала соответствующие этому времени года месяцы, количество дней
в каждом из месяцев.

12. Составить программу, которая по данному числу (1 — 12) вы­
водит название соответствующего ему месяца.

13. Написать программу, которая по номеру месяца выдает на­
звание следующего за ним месяца (при т = 1 получаем фев­раль, 4 — май и т.д.).

14. Составить программу, позволяющую получить словесное опи­сание школьных отметок (1 — «плохо», 2 — «неудовлетворительно», 3 — «удовлетворительно», 4 — «хорошо», 5 — «отлично»).

15. Написать программу, которая по номеру месяца выдает название следующего за ним месяца (при т = 1 получаем фев­раль, 4 — май и т.д.).

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

17. В старояпонском календаре был принят 12-летний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Написать программу, которая вводит номер некоторого года и печатает его название по старояпонскому календарю. (Справка: 1996 г. — год Крысы — начало очередного цикла.)

18.  Написать программу, которая по вводимому числу от 1 до 11      (номеру класса) выдает соответствующее сообщение «Привет, k-классник». Например, если k = 1, «Привет, первоклассник»; если k =4, «Привет, четвероклассник».

19.  Имеется пронумерованный список деталей: 1) шуруп, 2) гайка, 3) винт, 4) гвоздь, 5) болт. Составить программу, которая по номеру детали выводит на экран ее название.

20. Написать программу, классифицирующую треугольники (остроугольные, прямоугольные, тупоугольные), если даны углы

21. В зависимости от введённого символа L, S, V программа должна вычислять длину окружности; площадь круга; объём цилиндра.

22. По введенному числу от 0 до 15 вывести название цвета, соответствующего этому коду.

23. Арифметические действия над числами пронумерованы следующим образом: 1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление. Дан номер действия N (целое число в диапазоне 1–4) и вещественные числа A и B (В не равно 0). Выполнить над числами указанное действие и вывести результат.

24. Единицы длины пронумерованы следующим образом: 1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр. Дан номер единицы длины (целое число в диапазоне 1–5) и длина отрезка в этих единицах (вещественное число). Найти длину отрезка в метрах.

25. Единицы массы пронумерованы следующим образом: 1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер. Дан номер едини- цы массы (целое число в диапазоне 1–5) и масса тела в этих единицах (вещественное число). Найти массу тела в килограммах.

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

1. Что такое оператор условного перехода?

2. Для чего предназначен условный оператор?

3. Каковы две формы записи условного оператора?

4. Как в общем виде записывается оператор условного перехода?

5. Как и когда применяется составной оператор?

6. Как в общем виде записывается оператор безусловного перехода?

7. Что такое оператор безусловного перехода?

8. Для чего предназначен оператор выбора?

9. Могут ли выполнится несколько ветвей оператора «выбор» за один раз?

10. Сколько операторов можно написать после возможного значения переменной?

11. Может ли сразу несколько констант фигурировать в качестве возможного значения переменной?

 






Дата: 2019-11-01, просмотров: 446.