Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lekcii_po_paskalju.doc
Скачиваний:
4
Добавлен:
04.11.2018
Размер:
391.68 Кб
Скачать

Замечание

При вводе одним оператором ReadLn нескольких строковых переменных (или строковых переменных вместе с числовыми) нужно заканчивать ввод каждой переменной нажатием клавиши Enter.

Разветвляющиеся программы.

Процедуры ввода и вывода, а также оператор присваивания позволяют писать только линейные программы, в которых все команды выполняются последовательно одна за другой. Но очень часто возникает необходимость выполнять различные команды в зависимости от выполнения какого – то условия. Для таких целей в Паскале введён условный оператор:

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

else оператор_2;

(If читается – "иф"; переводится – "если"; then читается "зэн"; переводится – "то"; else читается "элз"; переводится – "иначе")

Работает этот оператор так – сначала проверяется условие, и, если оно верно, выполняется оператор_1, в противном случае выполняется оператор_2.

В простейших случаях условие – это математическое сравнение двух выражений по величине, которое можно записать при помощи следующих знаков:

знак

отношение

=

равно

<

меньше

<=

меньше или равно

>

больше

>=

больше или равно

<>

не равно

Задача 8.

Составить программу для следующей задачи: Компьютер должен перемножить два числа – 167 и 121. Если их произведение превышает 2000, то компьютер должен напечатать текст Произведение большое, иначе – текст Произведение маленькое. После этого компьютер в любом случае должен напечатать само произведение.

Программа.

VAR a,b,с : Integer;

BEGIN

a:=167;

b:=121;

c:=a*b;

If c>2000 then WriteLn('Произведение большое');

else WriteLn('Произведение маленькое');

WriteLn(с)

END.

Рассмотренная нами форма условного оператора называется полной, она позволяет направлять выполнение программы по одному из двух путей. Такую конструкцию называют ветвлением.

В Паскале есть и краткая форма условного оператора, которая просто позволяет выполнять заданный оператор, если выполнено условие:

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

Если условие верно, то выполняется оператор_1, иначе выполняться будет следующий за условным оператор.

Задача 9.

Составить программу для следующей задачи: В компьютер вводится слово. Компьютер должен просто распечатать его. Однако, если введённым словом будет "колхозник", то компьютер должен вместо него напечатать слово "фермер".

Решение.

VAR a : String;

BEGIN

ReadLn(a);

If a='колхозник' then a:='фермер';

WriteLn(a)

END.

Составной оператор.

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

begin

оператор_1

оператор_2

.

.

оператор_n

end;

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

В условном операторе, да и в других ситуациях, с которыми мы встретимся позже, там, где предусмотрено использование одного – единственного оператора, можно использовать составной оператор.

Задача 10.

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

Программа.

VAR otvet : String;

a,b : Integer;

BEGIN

WriteLN(' Чем займемся – сложением или возведением в квадрат?');

ReadLn(Otvet);

If Otvet='сложением' then

begin

Writeln('Введите два числа');

ReadLn(a,b);

WriteLn('Сумма равна',a+b)

end

else

begin

WriteLn('Введите число');

ReadLn(a);

WriteLn('Квадрат числа равен',a*a)

end

END.

Задача 11.

Составить программу для решения квадратного уравнения ax2+bx+c=0, где b не равно 0,

c не равно 0.

Программа.

Var a,b,c,x,x1,x2,D:real;

BEGIN

WriteLn('Введите a,b,c');

ReadLn(a,b,c);

D:=b*b-4*a*c;

if D<0 then WriteLn('корней нет')

else if D=0 then begin

x:=-b/(2*a);

WriteLn('x=',x:6:2)

end

else begin

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

x2:=(-b-Sqrt(D))/(2*a);

WriteLn('x1=',x1:6:2);

WriteLn('x2=',x2:6:2)

end;

ReadLn

END.

Вложенные операторы If. Сложное условие в операторе. Логические операции.

В операторе If после слова then и else может стоять любой оператор Паскаля, в том числе и еще один If.

Задача 12.

Составить программу для решения следующей задачи: В компьютер вводится число. Если оно находится в интервале от 28 до 30, то напечатать текст Попал, иначе – Не попал.

Программа.

VAR а : Real;

BEGIN

WriteLn('Введите число');

ReadLn(a);

If a>28 then If a<30 then WriteLn('Попал')

else WriteLn('Не попал');

else WriteLn('Не попал')

END.

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

Чтобы программа со вложенными друг в друга If была короче и понятнее, можно использовать только один If, применяя логические операции AND, OR и NOT.

AND (читается – "энд"; переводится – "и"), поставленный между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия.

Решение Задачи 11 с применением логической операции AND.

VAR а : Real;

BEGIN

WriteLn('Введите число');

ReadLn(a);

If (a>28) AND (a<30) then WriteLn('Попал')

else WriteLn('Не попал')

END.

OR (читается – "о"; переводится – "или"), поставленный между двумя условиями, говорит о том, что достаточно, если будет выполняться хотя бы одно из них.

NOT (читается – "нот"; переводится – "не"), поставленный перед условием, говорит о том, что условие не должно выполняться.

Примеры:

Фрагменты программ Результаты

a:=8; b:=6; If (a>b) AND (b>7) then k:=1 else k:=0 k=0

a:=8; b:=6; If (a>b) OR (b>7) then k:=1 else k:=0 k=1

a:=8; b:=6; If (a<b) OR (b>7) then k:=1 else k:=0 k=0

a:=8; b:=6; If NOT (a=8) then k:=1 else k:=0 k=0

Внутри скобок можно писать не только простые, но и сложные условия. Например, фрагмент

If NOT ((a>2) AND (b>3)) then… можно перевести так: Если неправда, что одновременно верны два условия a>2 и b>3, то …

Символьный тип данных.

VAR а,b : Char; (читается – "кэр", переводится – "символ")

Это описание означает, что переменные а и b имеют право принимать значения любых символов, имеющихся на клавиатуре. Например: а:='л'; b:='+';

При вводе нескольких символов одним оператором ReadLn все символы набираются на клавиатуре подряд без пробелов.

Задача 13.

Написать программу, переворачивающую любое трёхбуквенное слово, введённое человеком с клавиатуры.

Программа.

VAR a1,a2,a3 : Char;

BEGIN

ReadLn(a1,a2,a3);

WriteLn(a3,a2,a1)

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]