1.
Написать оператор, который при условии x2 ≤ 2 , печатает на
экране значение х и текст «x вне диапазона». Если условие не
выполняется, то рассчитывает значение переменной |
if x*x<=2 then writeln(x,' x вне диапазона') else begin f:=sqrt(1e-5*(x*x-2)); writeln(f); end; |
2.
Написать оператор, который при условии 2 < x < 10 , рассчитывает
значение переменной |
if ((2<x) and (x<10)) then begin f:=1e6*exp(2*x)*sin(x); writeln(f); end; |
3. Написать оператор, который при условии x > 2 или х=3у+1 , вводит с клавиатуры переменную m и печатает значение выражения 10-17(m+2m2), если условие не выполняется, то выводит на экран значение х. |
if ((x>2) or (x=3*y+1)) then begin read(m); z:=1e-17*(m+2*m*m); writeln(z); end else writeln(x); |
4. Написать оператор, который при условии x≠0, вводит с клавиатуры переменную а, рассчитывает и печатает значение выражения f=a∙sin(a/x). Если условие не выполняется, то рассчитывает переменную r=(2x-1)(5-x) и печатает ее значение. |
if x< >0 then begin read(a); f:=a*sin(a/x); writeln(f); end else begin r:=(2*x-1)*(5-x); writeln(r); end; |
5.Написать программу, которая из двух целых чисел а и b находит минимальное. |
I. способ Var a,b : integer; begin read(a,b); if a>b then c:=b else c:=a; writeln(‘минимальное’,c); end. II. способ (усеченный оператор IF) begin read(a,b); c:=a; if b<a then c:=b; writeln(‘минимальное’,c); end. |
6. Написать программу определяющую четность/нечетность целого числа, введенного с клавиатуры Альтернативой для операции проверки деления нацело без остатка – mod, является функция odd(x), возвращающая True, если переданное ей число является нечетным |
var x: integer; begin readln(x); if x mod 2 = 0 then writeln('Четное число') else writeln('Нечетное число'); end. |
7. Написать программу, которая определяет, является ли введённый год високосным. Год считается високосный, если его номер делится на 4, кроме тех случаев, когда его номер делится на 100, но если номер делится на 400, то он всё равно високосный. |
var a:integer; begin writeln('Введите номер года'); readln(a); if ((a mod 4=0) and (a mod 100<>0) or (a mod 400=0))then writeln('Год високосный') else writeln('Год не високосный'); end. |
А теперь покажем примеры неверного использования блока условного оператора IF.
Задание. Упорядочить два введенных с клавиатуры целых числа по возрастанию и вывести на экран. |
|
Верное написание |
Неверное написание |
var x, y, v: integer; begin write('Введите x,y: '); readln(x,y); if x>y then begin v := x; x := y; y := v end; writeln('Результат упорядочения по возрастанию: ',x,' ',y); end. |
{Неверная расстановка begin end} var x, y, v: integer; begin write('Введите x,y: '); readln(x,y); begin {ошибка: операторные скобки должны использоваться по ветке then оператора if} if x>y then v := x; x := y; y := v end; writeln('упорядочение по возрастанию: ',x,' ',y); end. {Операторные скобки должны находиться внутри оператора if, а не окаймлять его} |
{Отсутствие begin end} var x, y, v: integer; begin write('Введите x,y: '); readln(x,y); if x>y then v := x; {ошибка: операторные скобки отсутствуют, поэтому по ветке then выполняется только этот первый оператор v:= x; } x := y; y := v; {эти операторы выполняются после оператора if в любом случае, что неверно} writeln('упорядочение по возрастанию: ',x,' ',y); end. |
|
Задание. Проверить, является ли введенное с клавиатуры число двузначным? |
|
Верное написание |
Неверное написание |
var x: integer; begin write('Введите x: '); readln(x); if ((x>=10) and (x<100)) then writeln('Это двузначное число') else writeln('Это не двузначное число'); end. |
{Неверная расстановка скобок в сложном логическом выражении } var x: integer; begin readln(x); if x>=10 and x<100 then { ошибка: отсутствуют круглые скобки в условии} writeln('Это двузначное число') else writeln('Это не двузначное число'); end. {В языке Паскаль операция and имеет более высокий приоритет, чем операции сравнения >,= и <, поэтому будет сделана попытка выполнить ее в первую очередь, что неверно} |
Задание: Определить знак целого числа (переменной) |
|
Верное написание |
Неверное написание |
Рекомендуется составной условный оператор
if a<0 then n:=-1 else if a>0 then n:=1 else n:=0;
или, по крайней мере, вариант с 3-мя усеченными операторами
if a<0 then n:=-1; if a=0 then n:=0; if a>0 then n:=1; |
{"потерянные" или неверно срабатывающие ветви алгоритма при использовании короткого условного оператора} var a,n: integer; begin write('Введите а: '); readln(a); if a<0 then n:= -1; if a=0 then n:= 0 else n:=1; .// после этого для a<0 n=1 writeln(n); end. |