- •Глава 4. Операторы языка. Основные конструкции турбо паскаля
- •Составной оператор
- •4.2. Разветвляющиеся вычислительные процессы и операторы перехода
- •4.2.1. Оператор условного перехода
- •4.2.2. Оператор безусловного перехода
- •4.2.3. Оператор выбора
- •4.3. Циклические вычислительные процессы и операторы цикла
- •4.3.1. Оператор цикла с параметром
- •4.3.2. Оператор цикла с предварительным условием (с предусловием)
- •4.3.3. Оператор цикла с последующим условием (с постусловием)
- •4.3.4. Вложенные циклы
4.2.2. Оператор безусловного перехода
Оператор GOTO позволяет изменить стандартный последовательный порядок выполнения операторов и перейти к выполнению программы, начиная с заданного оператора. Оператор, на который происходит переход, должен быть помечен меткой, которая и указывается в GOTO.
Формат записи оператора:
GOTO <метка>;
Использовать оператор GOTO следует крайне осторожно. Широкое его применение без особых на то оснований ухудшает понимание логики работы программы. Безусловный переход можно осуществлять далеко не из каждого места программы и не в любое место программы. Так, нельзя с помощью этого оператора перейти из основной программы в подпрограмму или выйти из подпрограммы. Не рекомендуется осуществлять переход внутрь структурированного оператора, т.к. он может дать неправильный результат.
Задача1. Составить программу вычисления значения функции y=x+ln(x).
program fn1;
label 20;
var X, Y : real;
begin Write ('Введите значение X'); Readln(X);
if X<=0 then begin
Writeln('программа прервана'); goto 20
end
else Y:=X+ln(X);
Writeln('Y = ',Y)
20: end.
Задача 2. Даны три различных целых числа. Определить, можно ли из этих чисел образовать арифметическую прогрессию.
Указание. Если три числа a,b,c образуют арифметическую прогрессию, то справедливо равенство b = (a+c)/2.
program arif_progr;
var a,b,c: integer;
begin
Write ('Введите значения a,b,c: '); Readln(a,b,c);
if (a+b = 2*c) or (a+c = 2*b) or (b+c = 2*a) then
Writeln('данные числа образуют арифметическую прогрессию ')
else Writeln('данные числа не образуют арифметическую прогрессию ')
end.
Задача 3. Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что x и y отличны от нуля.
program koordinati;
var x, y: real;
begin Write ('Введите координаты точки: '); Readln(x, y );
if x>0 then if y>0 then Writeln('точка находится в 1 – ой четверти ')
else Writeln('точка находится в 4 – ой четверти ')
else if y>0 then Writeln('точка находится во 2 – ой четверти ')
else Writeln('точка находится в 3 – ей четверти ')
end.
Задача 4. Составить программу вычисления корней квадратного уравнения
ax2 + bx + c = 0 при a не равном нулю.
program KVUR;
var a,b,c: real; {коэффициенты уравнения, a<>0}
d: real; {дискриминант}
x1,x2: real; {действительные корни}
e: real; {действительная часть мнимых корней}
f: real; {коэффициент при мнимой части}
begin
Writeln('Введите коэффициенты a, b, c'); Readln(a,b,c);
d:= sqr(b)-4*a*c; e:= -b/(2*a); f:= sqrt(abs(d))/(2*a);
if d>=0 then
begin x1:= e-f; x2:= e+f;
Write('Корни действительные: '); Writeln('x1=',x1:8:5,' x2=',x2:8:5);
end
else
begin Writeln('Корни мнимые.'); Writeln('Действительная часть: ',e:8:5,',');
Write('коэффициент при мнимой части: ',f:8:5);
end
end.
Задача 5. В небоскребе N этажей и всего один подъезд; на каждом этаже по 3 квартиры. Человек садится в лифт и набирает номер нужной ему квартиры M. На какой этаж должен доставить лифт пассажира?
program Biult;
var M, x: integer;
begin
write ('Введите номер квартиры : '); readln (M);
x: =M div 3; {Определяем целую часть от деления номера квартиры на 3}
{Проверяем условие целочисленного деления на 3. Если «истина», то целая часть от деления будет нужным результатом, если «ложь» – к результату добавляем единицу}
if M mod 3 = 0 then writeln ('Номер этажа = ',x)
else writeln ('Номер этажа = ',x+1);
end.
Задача 6. Даны четыре целых числа. Определить сумму тех из них, которые кратны 3.
program Number;
var
a, b, c, d, S: integer;
begin
write (' Введите число a = '); readln (a);
write (' Введите число b = '); readln (b);
write (' Введите число c = '); readln (c);
write (' Введите число d = '); readln (d);
S:=0;
{Определяем числа, которые кратны 3, и считаем их сумму.}
if a mod 3 = 0 then S:=S + a;
if b mod 3 = 0 then S:=S + b;
if c mod 3 = 0 then S:=S + c;
if d mod 3 = 0 then S:=S + d;
writeln(S);
end.
Задача 7. Найти наибольшее значение среди трех величин.
program Number3;
var A, B, C, D: integer;
begin
write ('Введите значение A: ');
readln (A);
write ('Введите значение B: ');
readln (B);
write ('Введите значение C: ');
readln (C);
if A>B then D:=A
else D:=B;
if C>D then D:=C;
writeln ('Наибольшее число = ', D);
end.
Задача.8 Составить программу для вычисления значения функции у(х):
program Func;
var y, x: integer;
begin
write (' x = ');
readln (x);
if x = 1 then y:=1
else
if x<1 then y:= -1
else y:= x;
writeln ('Значение функции y = ',y);
end.
