Задачник-практикум по основам программирования. Учебное пособие по курсу «Информатика»
.pdf3)значение целой переменной n при делении нацело на 5 дает в ос- татке 3;
4)дробная часть значения переменной x меньше 0.5;
5)точка с координатами (х, у) принадлежит первой четверти единич- ного круга с центром в начале координат;
6)точка с координатами (х, у) принадлежит второй, третьей или чет- вертой четверти единичного круга с центром в начале координат;
7)точка с координатами (х, у) не принадлежит единичному кругу с центром в начале координат или находится в его первой чет- верти.
1.36.Шахматная доска представляет собой поле размера 8 на 8 клеток. Клетки черного и белого цвета чередуются по горизонтали и вертикали. Ладья может ходить по горизонтали или вертикали на любое количество клеток. Даны координаты двух различных полей
шахматной доски (x1, y1) и (x2, y2) (целые числа, лежащие в диапазоне от 1 до 8). Проверить, истинность высказывания: «Ладья за один ход может перейти с одного поля на другое».
ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ
Задание 1
1)Даны числа A, B, C. Проверить истинность высказывания: «Сущес- твует треугольник со сторонами A, B, C».
2)Даны числа A, B, C, являющиеся сторонами некоторого треуголь- ника. Проверить истинность высказывания: «Треугольник со сторонами A, B, C является прямоугольным».
3)Даны числа A, B, C, являющиеся сторонами некоторого треуголь- ника. Проверить истинность высказывания: «Треугольник со сторонами A, B, C является равнобедренным».
4)Даны целочисленные координаты (х, у), (x, y1) и (x2, y2) трех точек. Проверить истинность высказывания: точка с координатами (х, у) лежит
внутри прямоугольника с вершинами (x1, y1) и (x2, y2) и сторонами, парал- лельными осям координат.
5)Даны целочисленные координаты (х, у), (x1, y1) и (x2, y2) трех точек. Проверить истинность высказывания: точка с координатами (х, у) лежит вне
11
прямоугольника с вершинами (x1, y1) и (x2, y2) и сторонами, параллельными осям координат.
6)Даны целочисленные координаты (х, у), (x1, y1) и (x2, y2) трех точек. Проверить истинность высказывания: точка с координатами (х, у) лежит
на границе прямоугольника с вершинами (x1, y1) и (x2, y2) и сторонами, параллельными осям координат.
7)Дано целое положительное число. Проверить истинность выска- зывания: «Данное число является четным двузначным».
8)Даны два целых числа А, В. Проверить истинность высказывания: «Каждое из чисел A и B нечетное».
9)Даны два целых числа А, В. Проверить истинность высказывания: «Ровно одно из чисел A и B нечетное».
10)Даны два целых числа А, В. Проверить истинность высказывания: «Числа A и B имеют одинаковую четность».
11)Даны три целых числа А, В, С. Проверить истинность высказыва- ния: «Каждое из чисел A, B, C является положительным».
12)Даны три целых числа А, В, С. Проверить истинность высказыва- ния: «Ровно два из чисел A, B, C являются положительными».
13)Проверить истинность высказывания: «Среди трех данных целых чисел есть хотя бы одна пара совпадающих».
14)Проверить истинность высказывания: «Все цифры данного трех- значного числа различны».
15)Проверить истинность высказывания: «Цифры данного трехзначно- го числа образуют возрастающую или убывающую последовательность».
Примечание к задачам № 16 – 25. Шахматная доска представляет собой поле размера 8 на 8 клеток. Клетки черного и белого цвета чередуются по горизонтали
ивертикали. Шахматные фигуры могут ходить следующим образом:
–ладья по горизонтали или вертикали на любое количество клеток;
–слон по диагонали;
–конь буквой «Г», т. е. три клетки по горизонтали и одна клетка по вертикали или наоборот три клетки по вертикали и одна по горизонтали;
–король на любое соседнее поле по горизонтали, вертикали или диагонали;
–ферзь объединяет возможности ладьи и слона, т. е. может ходить и по горизонтали/вертикали и по диагонали.
16)Даны координаты поля шахматной доски (x, y) (целые числа, лежащие в диапазоне от 1 до 8). Учитывая, что левое нижнее поле доски (1, 1) является черным, проверить, истинность высказывания «Данное поле является белым».
12
17)Даны координаты двух различных полей шахматной доски (x1, y1), (x2, y2) (целые числа, лежащие в диапазоне от 1 до 8). Проверить, истинность высказывания: «Данные поля имеют одинаковый цвет».
18)Даны координаты двух различных полей шахматной доски (x1, y1), (x2, y2) (целые числа, лежащие в диапазоне от 1 до 8). Проверить, истин- ность высказывания: «Король за один ход может перейти с одного поля на другое».
19)Даны координаты двух различных полей шахматной доски (x1, y1), (x2, y2) (целые числа, лежащие в диапазоне от 1 до 8). Проверить, истин- ность высказывания: «Слон за один ход может перейти с одного поля на другое».
20)Даны координаты двух различных полей шахматной доски (x1, y1), (x2, y2) (целые числа, лежащие в диапазоне от 1 до 8). Проверить, истин- ность высказывания: «Ферзь за один ход может перейти с одного поля на другое».
21)Даны координаты двух различных полей шахматной доски (x1, y1), (x2, y2) (целые числа, лежащие в диапазоне от 1 до 8). Проверить, истин- ность высказывания: «Конь за один ход может перейти с одного поля на другое».
22)Даны координаты двух различных полей шахматной доски (x1, y1), (x2, y2) (целые числа, лежащие в диапазоне от 1 до 8). Проверить, истинность высказывания: «Два слона стоят так, что не могут бить друг друга».
23)Даны координаты двух различных полей шахматной доски (x1, y1), (x2, y2) (целые числа, лежащие в диапазоне от 1 до 8). Проверить, истинность высказывания: «Две ладьи стоят так, что не могут бить друг друга».
24)Даны координаты двух различных полей шахматной доски (x1, y1), (x2, y2) (целые числа, лежащие в диапазоне от 1 до 8). Проверить, истинность высказывания: «Два ферзя стоят так, что не могут бить друг друга».
25)Даны координаты двух различных полей шахматной доски (x1, y1), (x2, y2) (целые числа, лежащие в диапазоне от 1 до 8). Проверить, истинность высказывания: «Два коня стоят так, что не могут бить друг друга».
13
2. РАЗВЕТВЛЕНИЯ
Разветвления реализуются с помощью условных операторов или опе- ратора выбора. Условный оператор может быть полным:
if B then S1 else S2
или неполным: if B then S1
Условие B – это логическое выражение. Каждый из операторов S1, S2 может быть либо простым, либо составным:
begin S11; S12;...S1N end
Оператор выбора (селективный оператор) позволяет сделать выбор из нескольких вариантов:
case i of L1: S1; L2: S2;
.....
LN: SN; else S end
Выражение- селектор i может быть любого порядкового типа: целого, логического, символьного, перечисляемого, интервального типа. Список Li состоит из одной или нескольких (через запятую) констант выбора того же типа, что и селектор i.
Пример 2.1. Вычислить y по формуле:
a2 |
+ b2 |
, |
если |
a < b, |
|||||
|
|
|
|
|
|
|
|||
|
2 |
|
|
|
|||||
|
|
|
|
|
|
|
|||
|
2 |
2 |
) , |
если |
a > b, |
||||
y = 2(a |
|
+ b |
|||||||
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
, |
если |
a = b |
||
|
|
4 |
|
|
|||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
program If_1;
var a, b, y, x: real;
14
begin
write(’Введите значение переменной a=’); readln(a);
write(’Введите значение переменной b=’); readln(b);
if a=b then y:=0.25
else begin
x:=a*a+b*b; if a<b then y:=x/2.0
else y:=2.0*x
end;
writeln(’y=’,y)
end.
Замечание. Сравнение вещественных переменных на равенство не рекоменду- ется, так как в памяти компьютера они представляются приближенно. Однако если значения вещественных переменных вводятся, то такое сравнение возможно. Если значения вещественных переменных получаются в процессе вычисления, то срав- нение их на равенство может привести к неправильному результату. В этом случае проверка на равенство a=b заменяется следующей проверкой: abs(a-b)<eps, где eps – достаточно малое число (0 < eps < 1).
Пример 2.2. Вычислить y по формуле:
y = x + a −
x + a
x − a
program If_2;
var a, b, y: real; begin
write(’Введите значение переменной x=’); readln(x);
write(’Введите значение переменной a=’); readln(a);
if x=a then
15
writeln(’деление на 0’) else
begin y:=x+a;
if y<0 then
writeln(’под корнем отрицательное число’) else
begin y:=y-sqrt(y)/(x-a); writeln(’y=’,y)
end end
end.
Для проверки правильности работы программы необходимо подгото- вить контрольные примеры (тесты), содержащие набор значений входных данных и результаты решения задачи.
Тестироваться программа должна в нормальных условиях:
1) x = 7, a = 2 |
→ x + a = 9 и y = 8.4; |
|
при граничных значениях входных данных: |
||
2) x = 1, a = –1 → x + a = 0 и y = 0 |
||
и в исключительных ситуациях: |
|
|
3) x = 1, a = 1 |
→ x = a |
и деление на 0 |
4) x = 1, a = 2 |
→ x + a= –1 |
и под корнем отрицательное число. |
Пример 2.3. По заданному числу (от 1 до 12) вывести название соот- ветствующего ему месяца.
program Case_3; var n: integer; begin
write(’Введите номер месяца =’); readln(n); case n of
1:writeln(’Январь’);
2:writeln(’Февраль’);
3:writeln(’Март’);
4:writeln(’Апрель’);
5:writeln(’Май’);
6:writeln(’Июнь’);
16
7:writeln(’Июль’);
8:writeln(’Август’);
9:writeln(’Сентябрь’);
10:writeln(’Октябрь’);
11:writeln(’Ноябрь’);
12:writeln(’Декабрь’)
end
end.
Пример 2.4. Вычислить значение одной из функций по выбору: program Case_4;
const eps=1E-5;
var x,y: real; Fname: char; begin
write(’Введите значение аргумента=’); readln(x); writeln(’Выберите имя функции: ’,
’ S - sin, C - cos, T - tg’); readln(Fname);
case Fname of ’S’,’s’: begin
y:=sin(x);
writeln(’sin(’,x, ’)= ’,y:10:6) end;
’C’,’c’: begin y:=cos(x);
writeln(’cos(’,x, ’)= ’,y:10:6) end;
’T’,’t’: if abs(cos(x))<eps then writeln(’аргумент не входит в ОДЗ’) else
begin y:=sin(x)/cos(x);
writeln(’tg(’,x, ’)= ’,y:10:6) end;
else writeln(’неверное имя’) end
end.
17
ЗАДАЧИ
2.1. Написать программы вычисления y по формулам:
|
|
|
|
(a + b) x |
|
|
|
x ≠ 0 |
|
|
|
|
|
sin |
|
|
, |
|
если |
|
|
|
|||
|
|
2 |
|
|
|
|
||||||
1) |
y = |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
b+a |
|
|
|
|
|
|
|
|
|
|
|
e |
|
, |
|
если |
x = 0 |
|
|
|
|
x3 + 3x + 4 |
|
, |
если |
x [ 0, |
1] |
|
|
||||
2) |
|
|
|
+ 3x + 4)2 |
, |
если |
x < 0 |
|
|
|
||
y = ( x3 |
|
|
|
|||||||||
|
|
|
|
−4 |
|
, |
если |
x > 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
z, |
|
если |
|
z ≤ 0 |
|
|
|
|
|||
3) |
|
|
|
если |
|
0 < z ≤ 1 |
, где |
z = x |
3 |
+ 3x |
||
y = 0, |
|
|
|
|||||||||
|
|
2 |
, |
|
если |
|
z > 1 |
|
|
|
|
|
|
z |
|
|
|
|
|
|
|
||||
a2 + b2 , |
если |
a2 |
|
|
если |
a2 |
|
4) y = (a + b)2 , |
|||
|
если |
a |
2 |
0.5, |
|
||
+ b2 |
≤ 1 |
|
|
+ b2 |
> 1 |
и |
a ≥ b |
+ b2 |
> 1 |
и |
a < b |
max |
(a, b) |
, |
если |
x = 0 |
|||
|
(a, b) |
, |
если |
x = 1 |
|||
5) y = min |
|||||||
|
|
|
a + b |
|
, |
в остальных случаях |
|
|
|
||||||
|
|
|
|
||||
2.2. Вычислить y по формуле:
a + bx + cx2 , |
если |
1 ≤ x < 2 |
||||||
|
|
|
, |
|
|
если |
2 ≤ x < 3 |
|
(sin ax)2 |
|
|
||||||
|
a + bx |
|
+ c, |
если |
3 ≤ x < 4 |
|||
1) y = |
|
|||||||
|
|
b + x |
|
, |
если |
4 ≤ x < 5 |
||
a ln |
|
|||||||
|
|
|
|
|
|
|
если |
5 ≤ x < 6 |
eax + c, |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
18
|
|
1 |
− sin x, |
если |
5 ≤ x < 10 |
|
|
1 |
+ cos x, |
если |
10 ≤ x < 15 |
2) |
|
tg x, |
если |
15 ≤ x < 20 |
|
y = |
|||||
|
|
ctg x, |
если |
20 ≤ x < 25 |
|
|
|
|
|
|
|
|
0, |
в остальных случаях |
|||
2.3.Вычислить площадь геометрических фигур. Тип фигуры задается целым числом n (1 – прямоугольник, 2 – треугольник, 3 – трапеция, 4 – круг, 5 – сектор круга).
a b, |
|
|
если |
n = 1 |
|
|
|
|
|
|
|
a h |
, |
|
если |
n = 2 |
|
|
2 |
|
|||
|
|
|
|
|
|
|
(a + b) h |
, |
если |
n = 3 |
|
S = |
2 |
||||
|
|
|
|
||
πR2, |
|
если |
n = 4 |
||
|
|
|
|
|
|
πR2 α |
|
|
|
||
,если n = 5
2.4.Вычислитьобъемгеометрическихтел. Типтелазадаетсяцелымчислом n (1 – прямоугольный параллелепипед, 2 – цилиндр, 3 – шар).360
|
a b c, |
если |
n = 1 |
S = |
πR2h, |
если |
n = 2 |
|
|
|
|
|
|
если |
n = 3 |
|
πR3, |
2.5. Даны два не равных нулю числа x и y. Если оба числа отрицательные, то меньшее из них возвести в квадрат; если числа разного знака, то оба числа увеличить на 1; если оба числа положительные, то большее число разделить пополам.
2.6. Определить максимальное значение по абсолютной величине из трех заданных чисел a, b, c.
2.7. Даны два числа x и y. Большее из них поместить в a, меньшее – в b.
2.8.Даны два целых числа. Если они равны, то каждому присвоить сумму этих чисел. Если числа не равны, то каждое число обнулить.
2.9.Даны три числа. Если они упорядочены по возрастанию, удвоить каждое число, иначе заменить каждое число на обратное (например,
19
число 12 заменяется числом 1/12). Если одно из чисел равно нулю, то оставить его без изменения.
2.10.Даны три целых числа. Найти количество положительных чисел, количество отрицательных и количество равных нулю.
2.11.Упорядочить по возрастанию последовательность трех чисел a, b, c.
2.12.Выяснить, поместится ли круг площади S1 в квадрат площади S2.
2.13.Выяснить, поместится ли квадрат площади S2 в круг площади S1.
2.14.Выяснить, попадает ли точка с заданными координатами в круг с заданными координатами центра и радиусом.
2.15.Выяснить, попадает ли точка с заданными координатами в кольцо с заданными координатами центра и радиусами.
2.16.Выяснить, пройдет ли кирпич с ребрами a, b, c в квадратное отверстие со стороной d, если просовывать кирпич так, чтобы его ребра были параллельны или перпендикулярны сторонам отверстия.
2.17.Даны целочисленные координаты точки на плоскости. Если точка совпадает с началом координат на плоскости, то переменной k присвоить 0. Если точканесовпадает сначалом координат, нолежит на оси OX или OY, то k присвоить соответственно –1 или –2. В остальных случаях k присвоить номер четверти плоскости, в которой находится точка с заданными координатами.
2.18.Выяснить, можно ли из отрезков с длинами a, b, c построить треугольник, и если можно, то определить тип треугольника.
2.19.Даны вещественные числа a, b, c (a ≠ 0). Найти вещественные корни квадратного уравнения ax2 + bx + c = 0. Если корней нет, то выдать сообщение об этом.
2.20.Даны вещественные числа a, b, c (a ≠ 0). Найти вещественные корни биквадратного уравнения ax4 + bx2 + c = 0. Если корней нет, то выдать сообщение об этом.
2.21.Проверить, являются ли заданные значения x и y решением системы линейных уравнений
a1 x + b1 y = c1
a2 x + b2 y = c2
2.22.Исследовать систему линейных уравнений на существование решения:
a1 x + b1 y = c1
a2 x + b2 y = c2
20
