привить навык программирования с использованием операторов условных переходов для решения конкретных задач.
Введение.
Синтаксис на языке программирования Turbo Pascal:
Неполное ветвление:
if <условие> then <оператор >;
Если <условие> истинно (true), то выполняется <оператор>, стоящий после then.
Полное ветвление:
if <условие> then <оператор_1 >
else <оператор_2>.
<условие> - логическое выражение типа Boolean;
Если <условие> истинно (true), то выполняется <оператор_1>, в противном случае (false) - <оператор_2>;
<Условие> - логическое выражение типа Boolean;
Если <условий> несколько, то они заключаются в скобки и объединяются ключевыми словами: and, or, not .
Замечание. В случае составных операторов всю группу операторов, входящих в составной оператор, необходимо заключать в оператореые скобки begin...end.
Оператор Case позволяет сделать множественный выбор.
Формат оператора:
case <выражение> of
<список констант_1> : begin
{оператор_1}
end;
<список констант_2> : begin
{оператор_2}
end;
<список констант_N> : begin
{оператор_N}
end;
else
begin
{последовательность операторов, выполнчемая}
{в сдучае, если выражение не попало}
{ни в один из списков констант}
end;
Примеры задач
Задача о лишнем весе. Написать программу, которая спрашивает, какие у вас вес и рост, и сообщает,
превышает ваш вес норму или нет (нормальный вес вычисляется как разница между ростом в сантиметрах и числом 110).
Program ves;
Uses crt; {подключаем модуль crt, чтобы использовать}
{процедуры и функции , управляющие экраном и курсором}
var
p: integer; {ves}
h: integer; {rost v cm}
Begin
clrscr; {очистка экрана}
write(‘vvedite ves=’);
readln(p);
write(‘vvedite rost=’);
readln(h);
if p>(h-110) then writeln(‘Vash ves bolshe normi!’)
readln
End.
Задача "Приветствие". Написать программу, которая требует ввода времени дня
(ночь 0-6 часов, утро 7-12 часов, день 13-17 часов, вечер 18-23 часа) и,
в зависимости от введенного значения, желает доброго утра, доброго дня, доброго вечера или спокойной ночи.
Замечание. В этой задаче удобно использовать оператор Case, но можно решать с помощью оператора if...then.
Program privet;
Uses crt; {подключаем модуль crt, чтобы использовать процедуры и функции, управляющие экраном и курсором}
Var t: integer;
Begin
clrscr; {очистка экрана}
write(‘vvedite vremia dnia ’);
readln(t)
case t of
0..6: writeln(‘Dobroe utro!’);
7..12: writeln(‘Dobry den!’);
13..17: writeln(‘Dobry vecher!’);
writeln(‘Dobroj nochi!’);
end; {case}
readln
End.
Задача о площади кольца. Эта простая задача рассматривалась В.А.Кайминым
как пример подбора подходящего алгоритма (Журнал "Квант", № 10, 1986. с.48).
В общих чертах ставится задача вычисления площади кругового кольца. Алгоритм прост: из площади большего круга нужно вычесть площадь меньшего.
Точную постановку задачи можно записать так:
Задача: найти площадь кольца.
Дано:
r— внутренний радиус,
R — внешний радиус.
Треб:
S — площадь кольца.
Связь:
S=S2—S1 — площадь кольца,
S1=pi•R 2 —площадь большего круга,
S2=pi•r2 — площадь меньшего круга.
При: 0 <r < R
Замечание. Акцентируем внимание на имеющееся ограничение: 0 <r < R
При объявлении переменных в программе вводим переменные r1 и s1 - радиус и
площадь внешнего круга и внутреннего круга, r2 и s2 - радиус и площадь внешнего круга и s-площадь
кольца.
Program s_kolca;
uses crt;
const p=3.1415;
var s1, s2, s: real;
Begin
clrscr;
write('Введите радиус внешнего кпуга r1=');readln(r1);
write('Введите радиус внутреннего кпуга r2=');readln(r2);
if (0<
begin
s1:=p*r1*r<1;
s1:=p*r1*r1;
s:=s1-s2;
writeln('S кольца=',s:6:2)
end
else
writeln('Ошибка данных! Повторите ввод');
readln
End.
Задача "Журнал или газету?". В киоске продается газета стоимостью 15 руб. и журнал стоимостью 60 руб. Составить программу, которая спрашивает о желании покупателя (журнал или газета?), принимает деньги (сумма денег вводится с клавиатуры) и выдает на экран причитающуюся сдачу.
Program gazeta_journal;
Uses crt;
Var
c: char; { символьная переменная }
Begin
clrscr; {очистка экрана}
writeln(‘ g. Газета 15 руб.’);
writeln(‘ j. Журнал 90 руб.’);
writeln;
writeln;
write(‘vvedite g or j’);
readln(c);
if c=g then
begin
Writeln('C Vas 15 rub ');
readln(sum); {vvod c klaviaturi}
if sum>15 then writeln(' Vasha sdacha ', sum-15,' rub' )
end
else
begin
  Writeln('C Vas 90 rub ');
  readln(sum); {vvod c klaviaturi}
if sum>90 then writeln(' Vasha sdacha ', sum -90,' rub' )
end;
readln
End.
Задача "Площадь треугольника". Рассчитайте площадь треугольника по трем сторонам a,b,c, используя формулу Герона s=sqrt(p(p-a)(p-b)(p-c)), где p - полупериметр: p=(a+b+c)/2.
Замечание. Предусмотреть в программе проверку существования треугольника.
Program s_geron;
uses crt;
var a, b, c, p, s: real;
Begin
clrscr;
write('Введите стороны треугольника ');readln(a,b,c);
if (a<>b+c) and (b<>a+c) and (c<>a+b) then
begin
p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
writeln('s=',s:6:2)
end
else
writeln('Ошибка данных! Повторите ввод');
readln
End.
Задача "Палиндром". Введите любое целое трехзначное число и определите, является ли число палиндромом ("перевертышем"),т.е.
число читается одинаково слева-направо справа-налево.
program pervertishi;
uses crt;
var
n:integer; {число}
a:integer; {первая цифра}
с:integer; {последняя цифра}
Begin
clrscr;
write('введите любое трехзначное число n=');
readln(n);
a:=n div 100;
c:=n mod 10;
if a=c then writeln('число - перевертыш')
else writeln('число - не перевертыш');
readln
End.