Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч.пособие 1 курс, 2012.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.89 Mб
Скачать

Практическое занятие № 14

Операторы управления. Условный оператор. Оператор варианта

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

Задание

Дома подготовить отчетный лист. Записать в отчетный лист формулировку задания (вариант задания соответствует порядковому номеру студента в журнале, выбрать из каждого уровня задач свой вариант). Изучить методические рекомендации к проведению практического занятия (Учебное пособие под ред. Чекановой Н. Н.). Изучить условный оператор, оператор варианта. Рассмотреть и выполнить на компьютере примеры методического материала по данной теме. Продумать алгоритм решения индивидуального задания: составить блок – схему и написать программу на языке Турбо Паскаль. Ответить на контрольные вопросы.

Работа в лаборатории

  1. Показать преподавателю заготовки выполненных дома заданий.

  2. Набрать программу в оболочке текстового редактора Турбо Паскаля, выполнить трансляцию и отладку программы.

  3. Запустить программу на выполнение, получить результат.

  4. Оформить отчет и сделать выводы по работе.

Пояснения к работе

Условный оператор. Для организации вычислений, в зависимости от какого – либо условия, в Турбо Паскале используется условный оператор if.

Общий вид оператора:

If условие then оператор_1 else оператор_2

Операции отношения выполняют сравнение двух операндов и определяют, истинно выражение или ложно. Их результат – логический. Помимо логических переменных в языке Pascal используются логические операции. Они помогают описать: простые отношения - <, <= (меньше либо равно), >, >= (больше либо равно), =, < > (не равно); и операции, предназначенные для связки простых отношений - Not (нет или отрицание); And (логическое «И»); Оr (логическое «Или»). Логические операции помогают объединять простые условия в составные. Например, пусть необходимо запрограммировать проверку выполнения следующих условий:

y =

Для этой цели применяется оператор, реализующий разветвляющийся процесс

if – then - else:

If (a>0) and (b=1) then

у:=1 else

y:=0; .

Операторы переходов для реализации разветвляющихся процессов. Среди них выделяются три оператора:

goto; if – then - else; case.

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

Общий вид оператора Goto:

Goto <метка>,

где Goto - служебное слово, <метка> - метка оператора, куда осуществляется переход в программе. Каждая метка, используемая с оператором Goto, должна быть описана в разделе описаний label и может быть положительной целочисленной константой. Рассмотрим, простейший пример:

program a;

var i: Integer;

label 10, 20;

i:=0:

goto 10;

10: i:=1;

goto 20;

20: i:=2;

end.

В рассмотренном примере в программе осуществляются два перехода вне зависимости от каких-либо условий: сначала на метку 10, а затем - на метку 20.

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

Оператор Ifthen - else позволяет реализовать выбор одного варианта из нескольких в зависимости от выполненных условий. Он имеет вид:

if <логическое выражение> then <оператор 1> else <оператор 2>.

Если значение логического выражения истинно (True), то выполняется оператор 1, если ложно (False), то выполняется оператор 2. Далее в любом случае выполняется оператор, стоящий первым за этой конструкцией. Рассмотрим пример

Программная реализация при этом будет выглядеть следующим образом:

If х> 0 then у :=Ln(x) else у := eхр(х); .

Конструкция Ifthen - else является одним оператором (внутри которого могут содержаться другие операторы), поэтому перед else нельзя ставить символ (;), так как это будет означать окончание работы оператора. Условие else (иначе), если это возможно, не ставят: If A = 0 then А:=А+ 1;.

Операторы 1 и 2 в конструкции ifthen - else могут быть составными, т.е. состоящими более чем из одного оператора. В этом случае для представления операторов 1 и 2 применяются так называемые операторные скобки: begin - end. Например:

lf a + b<c then

begin

х:=3;

у:=у+1;

end

else

begin

х:=2;

у:=у-1;

end;

Помимо логических отношений, в конструкции Ifthen - else используются логические операции. В качестве примера рассмотрим задачу определения: можно ли построить треугольник из отрезков заданной длины х, у, z (x > 0, у > 0, z > 0).

Запись в программе:

If (х + у > z) and (х + z > у) and (у + z > х) then

Writeln ('треугольник построить можно')

else

Writeln ('треугольник построить нельзя');

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

Вычислить корни квадратного уравнения общего вида ах2 + bx + c = 0 в области действительных чисел. Использовать оператор ifthenelse. Введем следующие обозначения: а, Ь, с - коэффициенты уравнения; d - дискриминант; x1, x2 - корни уравнения; е - погрешность.

Program kv;

Var

a, b, с, x1, x2, d: real;

const е= 1Е-4;

begin

{ввод a, b, с}

readln (a, b, с);

d:= Sqr(b) – 4*a*c;

If Abs(d)<e then

Begin

X1 :=-b/(2*a); x2:=x1;

end

else

begin

if d<0 then

Writeln ( 'корни мнимые')

else

begin

x1 :=(-b+Sqrt(d))/ (2*a); x2 := (-b - Sqrt( d)) /(2*a);

end;

{вывод корней xt и х2}

Writeln ('x1=', x1, 'x2=', x2);

end

end.

Оператор варианта (выбора) Case является более общим условным оператором, чем Ifthen - else. Он дает возможность выполнить один из нескольких операторов (или групп операторов) в зависимости от значения некоторого выражения, играющего роль селектора или управляющей переменной. В общем случае оператор имеет вид:

Case <выражение> of

<список значений 1>: <оператор_1>;

<список значений 2>: <оператор_2>;

<список значений 3>: <оператор_3>;

….

<список значений n>: <оператор _n>

else

альтернативный оператор

end;

Оператор варианта работает следующим образом. Если выражение принимает значение из списка значений 1, то выполняется оператор_1. Если выражение принимает значение из списка значений 2, то выполняется оператор_2. Если выражение принимает значение из списка значений n, то выполняется оператор_n. Если выражение не принимает ни одно значение из имеющихся списков значений, то выполняется альтернативный оператор. Каждый оператор, идущий за двоеточием, отделяется от следующего списка значений точкой с запятой. Ветвь else, отвечающая всем неперечисленным значениям выражения, необязательна. При выполнении данного оператора вначале вычисляется значение выражения. Затем выбирается тот список значений, в котором находится полученное значение, и выполняется соответствующий ему оператор. В списках значение оператора case допустимыми являются целые и некоторые другие (но не вещественные) типы. Любое заданное значение выражения может входить в список значений неоднократно, но выполняться будет лишь первая подходящая ветвь. Если значение выражения отсутствует в списках значений, ни один из вариантов выполняться не будет. В этом случае выполняется ветвь else оператора case или, если эта ветвь отсутствует, следующий за case оператор.

Оператор варианта (выбора) Case позволяет программировать сложные ветвления, когда имеется больше двух вариантов действия.

Пример:

Найти наибольшее из трёх чисел.

Program max_3;

var

a, b, c: real;

begin

Writeln (‘b=’); readln (b);

Writeln (‘a=’); readln (a);

Writeln (‘c=’); readln (c);

If (a>b) and (b>c) then

begin

Writeln (‘a большая’, a)

end

Else

begin

If (b>a) and (b>c) then

Writeln (‘b большая’, b)

else

Writeln (‘c большая’, c)

end

end.

Пример:

Составить программу ввода величины t - времени в течение суток, и выдачи текста:

«Вы уже проснулись?», если t<10

«Не пора ли обедать?», если t=12

«Ещё не вечер», если t ≥18

«Как работается?», в остальных случаях.

  • Program vremja_1;

var

T: integer;

Begin

writeln (‘t=‘); readln (t);

If (t<10) or (t=12) or (t>=18) then

case t of

8, 9: writeln (‘вы уже проснулись?‘);

12: writeln (‘не пора ли обедать?‘);

18, 19: writeln (‘ещё не вечер‘)

Else

writeln (‘как работается?‘)

End

End.

Содержание отчета

Представить преподавателю компьютерный вариант выполнения программ. В отчете записать формулировку задачи, блок-схему решения задачи, программу на языке Турбо Паскаль. Проанализировать полученные результаты. Сделать вывод по работе.

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

    1. Какой алгоритм называется разветвляющимся?

    2. Как переводятся и чем являются слова then - else?

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

    4. Можно ли после оператора _1 в структуре If-then-else ставить «;»?

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

    6. Какую структуру имеет составной условный оператор?

    7. Какую структуру имеет оператор выбора?

    8. Какой блок называется логическим?

Литература

  1. Алексеев Е. Р., Чеснакова О. В. Турбо паскаль 7. 0 ─ С. 43 – 62

  2. Немнюгин С. А., Перколаб Л. В. Изучаем Turbo Pascal. ─ С. 59 - 80

  3. Потопахин В. П. Turbo Pascal. Освой на примерах. ─ С. 9 – 15, 18 – 20, 25 - 28

  4. Культин Н. Б. Turbo Pascal в задачах и примерах. ─ С. 24 - 31

  5. Н. Н. Чеканова Информатика и ИКТ: Учебное пособие. ─ С. 81 - 90

Варианты индивидуальных заданий (первый уровень)

  1. Даны два действительных числа, не равные друг другу. Меньшее из них заменить половиной их суммы, а большее – удвоенным произведением.

  2. На плоскости расположена окружность радиуса R с центром в начале координат. Ввести заданные координаты точки и определить, лежит ли она на окружности. Результат присвоить символьной переменной. Решить задачу при R=2 для точек с координатами (0; 2), (-1,5:0,7), (1:1), (3; 0).

  3. О пределить, принадлежит ли заданная точка фигуре, представленной на рис. 1a. Решить задачу для точек с координатами (-0,5; 0,8.), (0,5; 0,4).

  1. Определить, принадлежит ли точка фигуре, представленной на рис. 1б. Решить задачу для точек с координатами (-2,5; 0, 4), (1,5;-0 2), (0,2:0,3).

  1. Заданы координаты двух точек. Определить, лежат ли они на одной окружности с центром в начале координат. Результат присвоить символьной переменной, задачу решить для точек с координатами (10;2) , (2;0) , (1;3) , (2:2).

  2. Заданы площади круга R и квадрата S. Определить, поместится ли квадрат в круге. Задачу решить при:

1) R=70, S=36,74; 2) R=0,86, S=0,64.

  1. Для задачи 6 определить, поместится ли круг в квадрате. Задачу решить при:

    1. R=3, 2, S=3, 5; 2) R=3,2, S=4; 3) R=6, S=9.

  1. При обжиге изделий температура печи должна быть 10000C. Если температура отличается от заданной не более чем на 2 %, получим изделия первого сорта, если больше – изделия второго сорта. Рассчитать сортность изделий при температуре печи 10070C.

  2. Самолёт летит из пункта A в пункт B со средней скоростью v. Найти время полёта t1, если есть встречный ветер, скорость которого v1 , и времени t2, если ветра нет. Расстояние между пунктами A и B считать известным и равным S.

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

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

  5. На плоскости расположены три точки. Известны расстояния от каждой точки до центра окружности радиуса r. Определить, принадлежат ли эти точки окружности.

  6. Определить в каком квадранте находится точка с координатами (X, Y), и напечатать номер квадранта.

  7. Даны два числа. Если эти числа кратны некоторому заданному числу, то большее из этих чисел уменьшить в два раза. В противном случае каждое из этих чисел увеличить на сумму их квадратов.

  8. Определить, поместится ли квадрат, площадью S1, в круг, площадью S2. Результат присвоить символьной переменной.

Варианты индивидуальных заданий (второй уровень)

  1. Составить программу, заменяющую меньшее из трех данных чисел произведением этих чисел

    1. В продаже книг в книжном магазине принимает участие ЭВМ. Составить программу, которая запрашивает стоимость книг, сумму денег, внесенную покупателем, а далее определяет причитающуюся сдачу (если денег внесено больше), печатает "спасибо", если сдачи не требуется, или выдает сообщение о недостаточности внесенной суммы. Исходные данные задать самостоятельно.

    2. В ЭВМ поступают результаты соревнований по плаванию для трех спортсменов. Выбрать и напечатать лучший результат. Решить задачу для следующих наборов данных:

      1. 11, 3; 10, 6; 11; 2) 10; 10, 9; 13; 3) 16; 18; 13

    3. Написать программу вычисления площади кольца. Программа должна проверять правильность исходных данных. Исходные данные: радиус кольца и радиус отверстия. Радиус отверстия не должен превосходить радиус кольца.

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

    5. Вычислить корни квадратного уравнения ax2 + bx + с=0. Если

d = (b2 - 4ac) 0, то корни действительные, вычислять х (1, 2) =e f. Если d<0, то корни мнимые, вычислять е и f, где

e = - b / (2 a), f = b2 – 4 a c / (2 a ).

    1. Написать программу вычисления сопротивления цепи, состоящей из двух сопротивлений. Сопротивления могут быть соединены последовательно или параллельно. Принять за 1 – тип соединения последовательный, за 2 – тип соединения параллельный.

    2. Два треугольника заданы своими сторонами А, В, С. Вычислить площади треугольников по формуле Герона и определить, какой треугольник имеет большую площадь.

    3. Вычислить стоимость покупки с учетом скидки. Скидка в 10 % предоставляется в том случае, если сумма покупки больше 1000 руб.

    4. Вычислить стоимость покупки с учетом скидки. Скидка в 3 % предоставляется в том случае, если сумма покупки больше 500 руб., в 5 % - если сумма больше 1000 руб.

    5. Определить стоимость разговора по телефону с учетом скидки 20 %, предоставляемой по субботам и воскресеньям. Исходные данные: длительность разговора (целое количество минут), день недели (1 – понедельник, 2 – вторник,..., 7 – воскресенье), скидка в 20 %, стоимость разговора.

    6. Составить программу, которая вычисляет оптимальный вес пользователя, сравнивает его с реальным и выдаёт рекомендацию о необходимости поправиться или похудеть. Оптимальный вес вычисляется по формуле: рост (в сантиметрах) – 100.

    7. Написать программу, которая спрашивает у пользователя номер дня недели и выводит одно из сообщений: «Рабочий день», «Суббота» или «Воскресенье».

    8. Найти сумму корней квадратного уравнения. Если эта сумма положительна и кратна трём, то увеличить коэффициенты a и b в 0,5 раза. Иначе проверить, кратна ли данная сумма произведению коэффициентов этого уравнения. Если уравнение не имеет корней, то вывести соответствующее сообщение.

    9. Написать программу, которая спрашивает у пользователя номер месяца и выводит соответствующее название времени года. В случае если пользователь укажет недопустимое число, программа должна вывести сообщение «Ошибка ввода данных».

* Заданы три числа. Определить есть ли среди них хотя бы одна пара равных по величине.

* Заданы радиус круга R и сторона квадрата А. Определить какая фигура имеет большую площадь.

*Дано трехзначное число. Проверить делится ли данное число на три и на девять.

*Дано два целых числа. Если эти числа кратны некоторому числу, то большее из этих чисел уменьшить в два раза. В противном случае каждое из этих чисел увеличить на сумму их квадратов.

*Написать программу вычисления площади кольца.