Лабораторная работа №2 по паскалю
.doc
Министерство транспорта Российской Федерации
Федеральное агентство железнодорожного транспорта
ФГБОУ ВПО «Дальневосточный государственный
университет путей сообщения»
Кафедра «Информационные технологии и системы»
В.И. Шестухина, Е.С. Ямполь
ЛАБОРАТОРНАЯ РАБОТА
РАЗВЕТВЛЕННЫЕ ПРОГРАММЫ
Хабаровск
2013
РАЗВЕТВЛЕННЫЕ ПРОГРАММЫ
Цель работы: создание алгоритмов и программ с разветвлением.
ЗАДАНИЕ
ПОПАДАНИЕ ТОЧКИ В ОБЛАСТЬ
Определить, принадлежит ли точка с координатами (x,y) заштрихованной части плоскости (с контролем ввода по переменной b).
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
|
13 |
14 |
15 |
|
16 |
17 |
18 |
|
19 |
20 |
21 |
|
22 |
23 |
24 |
25 |
|
|
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
ОПЕРАТОРЫ ПЕРЕХОДА
Оператор перехода прерывает естественный порядок выполнения программы и указывает, что дальнейшее выполнение должно продолжаться, начиная с оператора, помеченного меткой, или в соответствии с указанными условиями.
1). Безусловный оператор перехода
GOTO метка
Например: goto 20.
2). Условный оператор
В Паскале имеется две формы условного оператора: полная и сокращенная.
А). Полная форма условного оператора
Блок-схема полного условного оператора представлена на рисунке.
Формат полного условного оператора следующий:
IF Логическое THEN Оператор 1 ELSE Оператор 2;
(если) выражение (тогда) (иначе)
Эта запись читается следующим образом: если логическое выражение истинно, то выполняется оператор 1, если ложно – оператор 2.
Примечание: Точка с запятой перед словом ELSE не ставится.
Операторы 1 и 2 могут быть простыми или составными.
Составной оператор или операторные скобки применяется, когда необходимо выполнить более одного оператора и заключается между словами:
Begin …End;
Например:
А) Простой оператор
IF x<=0 THEN к:=к+1 ELSE l:=l+5;
Б) Составной оператор
IF (x<y) THEN begin x:=y*x; y:=y/k end ELSE begin x:=x+h; y:=y-h end;
2) Сокращенная форма условного оператора
Блок-схема сокращенного условного оператора представлена на рисунке
Формат сокращенного условного оператора выглядит следующим образом:
IF Логическое THEN Оператор;
выражение
Эта запись читается следующим образом: если логическое выражение истино, то выполняется указанный оператор, в противном случае выполняется следующий за оператором IF оператор (т.е. программа читается дальше).
Например:
IF x>0 THEN Z:=x;
IF x<>Y THEN begin c:=y*x; Writeln('C= ', c:8:2) end;
Условный оператор может иметь вложенную конструкцию (после слов THEN или ELSE опять может использоваться условный оператор). ELSE всегда относится к ближайшему слева THEN.
В тех случаях, когда требуется проверить несколько условий, применяется сложный условный оператор. При этом используются логические операции and, or, not. В этом случаи логические выражения, соединенные этими операциями, заключаются в круглые скобки.
3).ОПЕРАТОР ВАРИАНТА (выбора) CASE.
Характерной чертой некоторых алгоритмов является широкая разветвленность задаваемого ими вычислительного процесса. В этом случае лучше применить оператор выбора.
Общий формат оператора таков:
CASE селектор OF
метка1: оператор1;
метка2: оператор2;
................
меткаN: операторN
[ELSE альтернативный оператор]
END;
Оператор CASE состоит из селектора (переменной целого, символьного или логического типа) и списка операторов, каждому из которых предшествует метка варианта, представляющая собой значение того же типа, что и селектор.
При работе оператора CASE будет выполнен тот входящий в него оператор, чья метка равна текущему значению селектора.
Турбо-Паскаль допускает использование в операторе CASE ключевого слова ELSE.
ПРИМЕРЫ
А) Числовые метки
...........
Var i,m:integer
Begin
...............
CASE i OF
0: m:= 0;
1: m:= -1;
2: m:= 1
End;
...............
End.
Б) Символьные метки
.......... Var Symbol:Char;
Begin
...............
CASE Symbol OF
'=': k:=1;
'!': k:=2;
'.': k:=3;
End;
................
End.
В) Альтернативный оператор
Label Final;
Var
Operator:Char; Rez:integer;
k:integer;
Begin
...............
CASE Operator OF
'+': Rez:=Rez+1;
'-': Rez:=Rez-1
ELSE GOTO Final End;
Final:..............
End.
Оператору может предшествовать не одна метка, а список меток этого варианта:
Var i,m:integer;
Begin
...................
CASE i OF
0: m:=0;
1,2,3: m:=4;
4: m:=-1
End;
...................
End.
ПРИМЕР
Определить, принадлежит ли точка с координатами (x,y) заштрихованной части плоскости (с контролем ввода по переменной b).
Блок-схема
Текст программы
Program primer;
Label 10;
Var b, x, y: real;
Begin
{Ввод переменной b с контролем}
10: Writeln(‘Введите b’);
Readln(b);
If b<=0 then begin writeln(‘Некорректное значение b, повторите ввод b’); goto 10; end;
{Ввод переменных x и y – координаты точки }
Writeln(‘Введите x, y’);
Readln(x,y);
{Проверка на принадлежность точки заштрихованной области }
If (sqr(x)+sqr(y)<=sqr(b)) and (y<=b/2) then writeln(‘Точка принадлежит области’) else writeln(‘Точка не принадлежит области’);
Readln;
End.