
- •Часть 1
- •Содержание
- •Введение
- •Интегрированная среда разработки
- •Задания для выполнения
- •Линейные алгоритмы
- •Задания для выполнения
- •Дополнительные задания
- •Нелинейные алгоритмы. Ветвление
- •Задания для выполнения
- •If t then writeln(‘Кирпич пройдет’)
- •Нелинейные алгоритмы. Циклы
- •Задания для выполнения
- •Массивы
- •Задания для выполнения
- •Библиография
Задания для выполнения
Для начала приведем решения нескольких типичных задач.
Пример
1.
Даны
числа x
и y.
Вычислить
.
Решение. Слово «дано» обычно нужно воспринимать как «пользователь вводит с клавиатуры». Следовательно, нам в программе нужно предусмотреть команду считывания с клавиатуры вещественных чисел x и y. Кроме того, определим вещественную переменную z, которой будет присваиваться результат вычисления формулы.
Посмотрев
на выражение, мы видим возведение дроби
в произвольную степень. Можно осуществить
это, опираясь на правило
.
Тогда наша степень будет выглядеть так:
.
Нужно вычислить выражение и вывести его на экран. Мы используем форматный вывод результата:
WriteLn(Число:n:m);
где n – количество позиций на экране, в которые будет выводиться число, m – количество позиций, которые выделены на дробную часть числа.
Запишем блок-схему алгоритма решения задачи:
Рис. 5. Блок-схема к примеру 1
Решение задачи таково (посмотрите, как записано возведение в третью степень числа x и как оформлена функция тангенса):
Var x,y,z:Real; {определяем переменные x, y, z
вещественного типа}
Begin
Write(‘Введите числа x и y:’); {выводим приглашение к
действию на экран}
ReadLn(x,y); {считываем с клавиатуры числа}
z:=exp(x*ln((y+1)/(y-1)))+
(sin(sqrt(y))/cos(sqrt(y)))/(x*x*x-15*x);
{проводим вычисления}
WriteLn(z:10:9); {выводим результат в 10-и позициях,
среди которых 9 отведено на дробную часть}
WriteLn(‘Готово. Нажмите Enter…’);
ReadLn; {тормозим работу программы до нажатия
клавиши Enter}
End.
Пример 2. Пользователь вводит два целых числа. Вывести True, если второе число является квадратом первого и False – в противном случае.
Решение. Судя по тексту задачи, у нас будет три переменных: две (x и y) – вводимые числа, третья (b) – логическая. В логическую переменную будем помещать результат сравнения второго числа и квадрата первого и ее же будем выводить на экран.
Блок-схема алгоритма и текст программы:
Рис. 6. Блок-схема к примеру 2.
Var x,y:Real; {определяем переменные x и y
вещественного типа}
b:Boolean; {определяем переменную b логического типа}
Begin
Write(‘Введите числа x и y:’); {выводим приглашение к
действию на экран}
ReadLn(x,y); {считываем с клавиатуры числа x и y}
b:=(sqr(x)=y); {проводим вычисления, в b присваиваем
результат сравнения x2 и y}
WriteLn(b); {выводим результат}
WriteLn(‘Готово. Нажмите Enter…’);
ReadLn; тормозим работу программы до нажатия
клавиши Enter}
End.
Заметим, что при составлении выражений полезно пользоваться правилами:
-
Любой открывающей скобке или кавычке должна быть соответствующая закрывающая. Следует сразу печатать открывающую и закрывающую скобки или кавычки, а текст между ними писать во вторую очередь.
-
Если у функции или процедуры несколько аргументов, то они перечисляются через запятые.
-
Текстовые константы обрамляются одинарными кавычками (апострофами).
-
Если формула содержит дроби, числители и знаменатели которых содержат иные алгебраические операции (сложение, вычитание, умножение, деление, возведение в степень), то эти числители и знаменатели заключаются в скобки. Можно для подстраховки любые числители и знаменатели заключать в скобки.
А теперь, собственно, задачи раздела. К каждой задаче нужно составить блок-схему алгоритма. Задачи с 2.1 по 2.20 решаются по аналогии с примером 1, а с 2.41 по 2.60 – по аналогии с примером 2. Возможно, при составлении логического выражения придется комбинировать условия с помощью операторов or, and и not.
Вычислить:
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
2.8.
2.9.
2.10.
2.11.
2.12.
2.13.
2.14.
2.15.
2.16.
2.17.
2.18.
2.19.
2.20.
2.21. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.
2.22. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.
2.23. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой по озеру и вверх по реке.
2.24. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга.
2.25. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу.
2.26. Найти периметр и площадь прямоугольного треугольника, если даны длины его катетов a и b.
2.27. Дана длина ребра куба a. Найти площадь грани, площадь полной поверхности и объем этого куба.
2.28. Найти длину окружности и площадь круга заданного радиуса R.
2.29. Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 < R2).
2.30. Дана сторона a равностороннего треугольника. Найти площадь этого треугольника и радиусы вписанной и описанной окружностей.
2.31. Дана длина окружности L. Найти площадь круга, ограниченного этой окружностью.
2.32. Дана площадь круга S. Найти длину окружности, ограничивающей этот круг.
2.33. Найти периметр и площадь равнобедренной трапеции с основаниями a и b (a > b) и углом alpha при большем основании (угол дан в радианах).
2.34. Найти периметр и площадь прямоугольной трапеции с основаниями a и b (a > b) и острым углом alpha (угол дан в радианах).
2.35. Найти расстояние между двумя точками с заданными координатами (x1, y1) и (x2, y2).
2.36. Даны координаты трех вершин треугольника (x1, y1), (x2, y2), (x3, y3). Найти его периметр и площадь.
2.37. Найти корни квадратного уравнения A·x2 + B·x + C = 0, заданного своими коэффициентами A, B, C (коэффициент A не равен 0), если известно, что дискриминант уравнения неотрицателен.
2.38. Найти решение системы уравнений вида
A1·x + B1·y = C1,
A2·x + B2·y = C2,
заданной своими коэффициентами A1, B1, C1, A2, B2, C2, если известно, что данная система имеет единственное решение.
2.39 Даны два вектора (X1, Y1, Z1) и (X2, Y2, Z2). Найти угол между векторами.
2.40. Вычислить первые четыре степени числа π.
2.41. Проверить истинность высказывания: "Квадратное уравнение A·x2 + B·x + C = 0 с данными коэффициентами A, B, C имеет вещественные корни".
2.42. Проверить истинность высказывания: "Данные числа x, y являются координатами точки, лежащей во второй координатной четверти".
2.43. Проверить истинность высказывания: "Данные числа x, y являются координатами точки, лежащей в первой или третьей координатной четверти".
2.44. Проверить истинность высказывания: "Точка с координатами (x, y) лежит внутри прямоугольника, левая верхняя вершина которого имеет координаты (x1, y1), правая нижняя — (x2, y2), а стороны параллельны координатным осям".
2.45. Проверить истинность высказывания: "Данное целое число является четным двузначным числом".
2.46. Проверить истинность высказывания: "Данное целое число является нечетным трехзначным числом".
2.47. Проверить истинность высказывания: "Среди трех данных целых чисел есть хотя бы одна пара совпадающих".
2.48. Проверить истинность высказывания: "Среди трех данных целых чисел есть хотя бы одна пара взаимно противоположных".
2.49. Проверить истинность высказывания: "Сумма цифр данного трехзначного числа является четным числом".
2.50. Проверить истинность высказывания: "Сумма двух первых цифр данного четырехзначного числа равна сумме двух его последних цифр".
2.51. Проверить истинность высказывания: "Данное четырехзначное число читается одинаково слева направо и справа налево".
2.52. Проверить истинность высказывания: "Все цифры данного трехзначного числа различны".
2.53. Проверить истинность высказывания: "Цифры данного трехзначного числа образуют возрастающую последовательность".
2.54. Даны координаты (как пара чисел от 1 до 8) двух различных полей шахматной доски. Если ладья за один ход может перейти с одного поля на другое, вывести логическое значение True. в противном случае вывести значение False.
2.55. Проверить истинность высказывания: "Цифры данного трехзначного числа образуют арифметическую прогрессию".
2.56. Проверить истинность высказывания: "Цифры данного трехзначного числа образуют геометрическую прогрессию".
2.57. Проверить истинность высказывания: "Цифры данного трехзначного числа образуют возрастающую или убывающую последовательность".
2.58. Даны координаты (как пара целых чисел от 1 до 8) двух различных полей шахматной доски. Если король за один ход может перейти с одного поля на другое, вывести логическое значение True, в противном случае вывести значение False.
2.59. Даны координаты (как пара целых чисел от 1 до 8) двух различных полей шахматной доски. Если слон за один ход может перейти с одного поля на другое, вывести логическое значение True, в противном случае вывести значение False.
2.60. Даны координаты (как пара целых чисел от 1 до 8) двух различных полей шахматной доски. Если ферзь за один ход может перейти с одного поля на другое, вывести логическое значение True, в противном случае вывести значение False.
Пример 3. Чтобы решить следующие задачи, нужно уяснить несколько положений о вычленении цифр из числа.
Пусть n – некоторое число, состоящее из k цифр, а a1, a2, a3, … ak – его цифры. К примеру, возьмем n = 1763, тогда a1 = 1, a2 = 7, a3 = 6, a4 = 3. Как выделить число его тысяч a1? Воспользуемся оператором div, который делит нацело: a1:=n div 1000. Так мы вычислим целое число тысяч, входящих в n, выделив первую цифру. Как выделить число сотен a2? Извлечем из n число 763, поделив n на 1000 с остатком (n mod 1000), а затем поделим этот результат на 100 нацело: a2:=(n mod 1000) div 100. Следуя закономерности, число десятков можно выделить похожим образом: a3:=(n mod 100) div 10, а число единиц a4:=(n mod 10) div 1, но делить некоторое число на 1 не имеет особого смысла, поэтому последнее выражение можно записать так: a4:=n mod 10. Видно, что деление нацело начинается со степени десятки, которая по разрядам сходна с n, а затем мы делим нацело на числа, каждое в 10 раз меньше предыдущего. Деление с остатком начинается с вычленения второй цифры, опять же со степени десятки, которая по разрядам сходна с n, а затем мы делим с остатком на числа, каждое в 10 раз меньше предыдущего. Текст программы по выводу цифр числа на экран может быть записан так:
var n,a1,a2,a3,a4: integer;
begin
writeln(‘Введите число n:’);
readln(n);
a1:=n div 1000;
a2:=(n mod 1000) div 100;
a3:=(n mod 100) div 10;
a4:=n mod 10;
writeln(‘Цифры числа: ’,a1,‘ ’, a2,‘ ’, a3,‘ ’, a4);
readln;
end.
2.61. Дано целое четырехзначное число типа Word. Используя операции div и mod, найти сумму его цифр.
2.62. Дано целое четырехзначное число типа Integer. Используя операции div и mod, найти сумму его цифр.
2.63. Дано целое четырехзначное число типа LongInt. Используя операции div и mod, найти сумму его цифр.
2.64. Дано целое пятизначное число типа LongInt. Используя операции div и mod, найти сумму его цифр.
2.65. Дано целое шестизначное число типа LongInt. Используя операции div и mod, найти сумму его цифр.
2.66. Дано целое семизначное число типа LongInt. Используя операции div и mod, найти сумму его цифр.
2.67. Дано целое восьмизначное число типа LongInt. Используя операции div и mod, найти сумму его цифр.
2.68. Дано целое девятизначное число типа LongInt. Используя операции div и mod, найти сумму его цифр.
2.69. Дано целое четырехзначное число типа Word. Используя операции div и mod, найти произведение его цифр.
2.70. Дано целое четырехзначное число типа Integer. Используя операции div и mod, найти произведение его цифр.
2.71. Дано целое четырехзначное число типа LongInt. Используя операции div и mod, найти произведение его цифр.
2.72. Дано целое пятизначное число типа LongInt. Используя операции div и mod, найти произведение его цифр.
2.73. Дано целое шестизначное число типа LongInt. Используя операции div и mod, найти произведение его цифр.
2.74. Дано целое семизначное число типа LongInt. Используя операции div и mod, найти произведение его цифр.
2.75. Дано целое восьмизначное число типа LongInt. Используя операции div и mod, найти произведение его цифр.
2.76. Дано целое девятизначное число типа LongInt. Используя операции div и mod, найти произведение его цифр.
2.77. Дано целое шестизначное число типа LongInt. Используя операции div и mod, найти сумму квадратов его цифр.
2.78. Дано целое семизначное число типа LongInt. Используя операции div и mod, найти сумму квадратов его цифр.
2.79. Дано целое восьмизначное число типа LongInt. Используя операции div и mod, найти сумму квадратов его цифр.
2.80. Дано целое девятизначное число типа LongInt. Используя операции div и mod, найти сумму квадратов его цифр.