В Pascal определены только три тригонометрические функции: sin, cos, arctg (табл. 1). Для вычисления остальных тригонометрических функций необходимо использовать известные соотношения:
;
;
;
;
;
Приступая к решению задач, следует вспомнить, что:
4. инструкция if используется для выбора одного из двух направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);
5. выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от выполнения условия',
6. условие — это выражение логического типа, которое может принимать одно из двух значений: true (истина — условие выполняется) или false (ложь — условие не выполняется);
7. при помощи логических операций And (логическое "И") и or (логическое "Или") из простых условий можно строить сложные.
Условный оператор
Оператор (инструкцию) if можно записать двумя способами:
q Вариант 1.
if Условие
Then
Begin
{ Эти инструкции выполняются, }
{ если Условие истинно }
End
Else
Begin
{ Эти инструкции выполняются, }
{ если Условие ложно }
end;
q Вариант 2.
if Условие
Then
Begin
{ Эти инструкции выполняются, }
{ если Условие истинно }
end;
В последнем случае говорят о сокращенной форме условного оператора (алгоритмическая конструкция обход).
Ключевые слова if, then, else обозначают "если", "то", "иначе" соответственно. Выполнение условного оператора начинается с вычисления условия. Если оно истинно (true, "да", 1), то выполняется оператор, стоящий после служебного слова then. Если условие ложно (false, "нет", 0), то выполняется оператор, стоящий после служебного слова else, в сокращенной форме условного оператора — выполняется следующая по порядку за оператором условия инструкция.
Оператор выбора Case
Приступая к решению задач, следует помнить, что:
· инструкция case используется для выбора одного из нескольких направлений дальнейшего хода программы (последовательности инструкций, которые должны быть выполнены);
· выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от равенства значения переменной-селектора константе, указанной перед группой инструкций;
· в качестве переменной-селектора можно использовать переменную целого (integer) или символьного (char) типа.
Инструкция case имеет вид:
case Выражение-селектор of
СписокКонстант1: begin
{ Инструкции 1 }
end;
СписокКонстант2: begin
{ Инструкции 2 }
end;
СписокКонстантN: begin
{ Инструкции N }
End
Else
Begin
{ Инструкции }
end;
end;
Выполнение оператора case начинается с вычисления выражения-селектора. Инструкции между begin и end выполняются в том случае, если значение выражения после слова case совпадает с константой из соответствующего списка. Если это не так, то выполняются инструкции, следующие после else, расположенные между begin и end. Если else отсутствует, выполняется оператор программы, следующий за case.
Обратите внимание — в конце оператора case стоит ключевое слово end, для которого нет парного слова begin. End располагают строго под case.
Например:
q селектор целочисленного типа:
case i of
1: z:=i+10;
2: z:=i+100;
3: z:=i+1000;
end;
q селектор интервального типа:
case i of
1..10: writeln('Число ', i:4,' в диапазоне 1 — 10');
11..20: writeln('Число ', i:4,' в диапазоне 11 — 20');
21..30: writeln('Число ', i:4,' в диапазоне 21 — 30')
else('Число вне диапазона')
end;
Примеры
Пример
Два числа X и Y задаются при помощи оператора ввода. Вычислить сумму их квадратов, модуль разности и произведение. Текст программы на языке Паскаль приведен ниже. Здесь переменная SUM используется для обозначения суммы квадратов, переменная М - для обозначения модуля разности, переменная P -для обозначения произведения.
Работа программы
Вводятся исходные числа Х и Y с клавиатуры.
Назначение переменных
Назначение переменных, используемых в задаче, приведено в таблице 2
Таблица 2 – Назначение переменных
Переменная | Тип | Назначение |
x, y | real | Вещественные числа, вводимые с клавиатура |
Sum | real | Сумма квадратов исходных вещественных чисел |
M | real | Модуль разности исходных вещественных чисел |
p | real | Произведение исходных вещественных чисел |
5.3. Блок – схема алгоритма программы
Рис. 2 Блок схема алгоритма программы
Текст программы
program prim_1;
{вычисления по формулам}
var x,y:real;
sum,m,p:real;
begin
write('введите x=');readln(x);
write('введите y=');readln(y);
sum:=x*x+y*y;
m:=abs(x-y);
p:=x*y;
writeln('сумма квадратов=',sum:6:3);
writeln('модуль разности=',m:6:3);
writeln('произведение=',p:6:3);
readln;
end.
Тестирование
Вводим два числа, проверяя корректность работы программы: (1) при двух положительных числах, где Х больше Y; (2) при двух отрицательных числах, где Y больше X. Программа ведёт себя корректно.
1:
Введите Х = 3
Введите Y = 2
Ссума квадратов sum = 13.000
Модуль разности m = 1.000
Произведение р = 6.000
2:
Введите Х = -5
Введите Y = -2
Ссума квадратов sum = 29.000
Модуль разности m = 3.000
Произведение р = 10.000
Пример 2: Значения переменных А и В задаются оператором ввода. Программа должна отпечатать А > B, A < B или A = B в зависимости от значений А и В.
Рис.2. Блок-схема для условного оператора
Блок-схема приведена на рис.2. Алгоритм заключается в сравнении вводимых величин А и В и выводе на экран соответствующих сообщений.
program prim_2;
{использование условного оператора}
var a,b:real;
Begin
write('введите а=');readln(a);
write('введите b=');readln(b);
if a>b then writeln('А больше В')
else if a<b then writeln('А меньше В')
else writeln('А равно В');
end.
Пример 3: Сравнить возраст брата и сестры и выводит соответствующее сообщение.
Вариант 1:
var age1,age2: integer;
Begin
write('Введите возраст брата: '); readln(age1);
write('Введите возраст сестры: ');readln(age2);
if age1>age2 then writeln('Брат старше.')
else if age1<age2 then writeln('Сестра старше.')
else writeln('Они близнецы.');
end.
Вариант 2:
var age1,age2: integer;
Begin
write('Введите возраст брата: '); readln(age1);
write('Введите возраст сестры: ');readln(age2);
if age1>age2 then writeln('Брат старше.');
if age1<age2 then writeln('Сестра старше.');
if age1=age2 then writeln('Они близнецы.');
end.
Пример 4: Определить день недели известной даты.
var d,m,y: integer; n: longint;
Begin
writeln('Введите день, месяц, год даты (например: 3 12 1964)');
readln(d,m,y);
if(m>=2)then m:=m+1
else
Begin
m:=m+13; y:=y-1;
end;
n:=trunc(365.25*y)+trunc(30.6*m)+d-621050; n:=n-trunc(n/7)*7+1;
case n of
1: write('понедельник');
2: write('вторник');
3: write('среда');
4: write('четверг');
5: write('пятница');
6: write('суббота');
7: write('воскресенье');
end; writeln;
end.
Практическая часть
Практическая часть выполняется каждым студентом индивидуально, согласно своему варианту. Вариант задания выдается преподавателем.
Задание 1 Составить программу для вычисления по формулам. Предусмотреть задание исходных данных при помощи оператора ввода.
1. Треугольник задан длинами сторон a и b, и величиной угла С. Найти сторону с и площадь S данного треугольника.
; , где
Предусмотреть ввод угла a в градусах и перевод его в радианы:
2. Треугольник задан длинами сторон. Найти длины высот:
; ;
3. Треугольник задан длинами сторон. Найти длины медиан:
; ;
4. Треугольник задан длинами сторон. Найти длины биссектрис:
; ;
5. Треугольник задан длинами сторон. Найти углы треугольника:
; ;
6.Даны два угла треугольника A, B и высота ha. Вычислить площадь треугольника и две стороны по формулам:
; ; ;
7. Даны два угла треугольника B,С и высота ha. Вычислить длины всех сторон по формулам:
; ;
8. В треугольнике заданы сторона a и углы В и С. Найти площадь S и стороны b и c:
; ; ;
9. В треугольнике заданы сторона a, высота ha и угол С. Найти стороны b,с и площадь S.
; ;
10. Треугольник задан координатами своих вершин. Найти площадь треугольника:
;
Замечание: расстояние между точками A(x1, y1) и B(x2, y2), расположенными на плоскости рассчитывается:
11. Треугольник задан координатами своих вершин. Найти периметр и площадь треугольника.
12. Вокруг треугольника со сторонами a, b, c описана окружность. Определить ее радиус R, угол треугольника A и площадь, ограниченную стороной a и радиусами, проведенными в вершины B, C.
; ;
13. В окружность радиуса R вписан правильный треугольник. Определить длину его стороны a, площадь S и площадь круга S0 , вписанного в треугольник:
; ;
14. Вычислить значения Z1 и Z2 по формулам:
;
15. Опредлить дальность полета тела, запущенного с начальной скоростью V0 с высоты h под углом к горизонту a, пренебрегая сопротивлением воздуха. Траектория движения тела описывается уравнениями:
; , где , V0x , V0y - компоненты скорости V0 вдоль осей X и Y. Замечание: в момент падения тела Y=0.
Задание 2. Составить программу для вычисления. Предусмотреть задание исходных данных при помощи оператора ввода.
1. Написать программу вычисления объема параллелепипеда. Значения вводятся с клавиатуры
2. Написать программу вычисления объема и площади поверхности шара.
3. Написать программу вычисления объема цилиндра.
4. Написать программу вычисления стоимости покупки некоторого количества (по весу) помидоров, огурцов и яблок.
5. Написать программу вычисления стоимости покупки нескольких тетрадей и карандашей. Предполагается, что во время работы программы пользователь будет вводить данные о каждой составляющей покупки в отдельной строке: сначала цену, затем количество.
6. Вычислить расстояние между двумя точками с координатами х1, у1 и х2, у2.
7. Треугольник задан длинами сторон. Найти: длины высот и медиан.
8. Вычислить период колебания маятника длины l.
9. Определить силу притяжения F между телами массы m1 и m2, находящимися на расстоянии r друг от друга.
10. Даны гипотенуза и катет прямоугольного треугольника. Найти второй катет и радиус вписанной окружности.
11. Даны два действительных числа a и b. Получить их сумму, разность и произведение.
12. Даны действительные числа x и y. Получить
13. Даны два действительных положительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел.
14. Даны два действительных числа. Найти среднее арифметическое и среднее геометрическое их модулей.
15. Даны катеты прямоугольного треугольника. Найти его гипотенузу и площадь.
Задание 3: Составить программу с использованием условного оператора. Предусмотреть задание исходных данных при помощи оператора ввода.
- Написать программу, которая вычисляет частное от деления двух чисел. Программа должна проверять правильность введенных пользователем данных и, если они неверные (делитель равен нулю), выдавать сообщение об ошибке.
- Написать программу вычисления площади кольца. Программа должна проверять правильность исходных данных.
- Написать программу вычисления сопротивления электрической цепи, состоящей из двух сопротивлений. Сопротивления могут быть соединены последовательно или параллельно.
- Написать программу решения квадратного уравнения. Программа должна проверять правильность исходных данных и в случае, когда коэффициент при второй степени неизвестного равен нулю, выводить соответствующее сообщение.
- Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 10% предоставляется, если сумма покупки больше 1000 руб.
- Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется в том случае, если сумма покупки больше 500 руб., в 5% — если сумма больше 1000 руб.
- Написать программу проверки знания даты основания Санкт-Петербурга. В случае неверного ответа пользователя программа должна выводить правильный ответ.
- Написать программу проверки знания даты начала второй мировой войны. В случае неверного ответа пользователя программа должна выводить правильный ответ.
- Написать программу проверки знания истории архитектуры. Программа должна вывести вопрос и три варианта ответа. Пользователь должен выбрать правильный ответ и ввести его номер.
- Написать программу проверки знания истории архитектуры. Программа должна вывести вопрос и три варианта ответа, а пользователь — выбрать правильный ответ и ввести его номер.
- Даны действительные положительные числа x, y z. Выяснить существует ли треугольник с длинами сторон x, y z. Если треугольник существует, то ответить – является ли он остроугольным.
- Даны действительные числа a1, b1, c1, a2, b2, c2. Выяснить, верно ли, что , и если верно, то найти решение системы линейных уравнений
(при выполнении неравенства система заведомо совместна и имеет единственное решение).
- Вывести на экран большее из двух целых чисел
- Даны целые числа a, b, c. Если a £ b £ c, то все числа заменить их квадратами, если a > b > c, то каждое число заменить наибольшим из них, в противном случае сменить знак каждого числа.
- Вычислить значение функции:
Задание 4: Составить программу на использование оператора выбора Case
- Написать программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года. В случае, если пользователь укажет недопустимое число, программа должна вывести сообщение "Ошибка ввода данных".
- Написать программу, которая запрашивает у пользователя номер дня недели и выводит одно из сообщений: "Рабочий день", "Суббота" или "Воскресенье".
- Написать программу, вычисляющую стоимость междугороднего телефонного разговора (цена одной минуты определяется расстоянием до города, в котором находится абонент). Исходными данными для программы являются код города и продолжительность разговора.
- Написать программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 999), обозначающего денежную единицу, дописывает слово "рубль" в правильной форме. Например, 12 рублей, 21 рубль и т. д.
- Написать программу, которая после введенного с клавиатуры числа (в диапазоне от 1 до 99), обозначающего денежную единицу, дописывает слово "копейка" в правильной форме. Например, 5 копеек, 41 копейка и т. д.
- Написать программу, которая вычисляет дату следующего дня.
- Написать программу, которая по номеру месяца выдает время года.
- Написать программу преобразования цифр в слова.
- Написать программу, классифицирующую треугольники (остроугольные, прямоугольные, тупоугольные), если даны углы.
- Написать программу, которая в зависимости от того введена ли открытая скобка или закрытая, напечатать "открытая круглая скобка" или "закрытая фигурная скобка". (Учитывать круглые, квадратные, фигурные скобки).
- Написать программу, которая в зависимости от введённого символа L, S, V программа должна вычислять длину окружности; площадь круга; объём цилиндра.
- Напишите программу, которая по введенному числу из промежутка 0..24, определяет время суток.
- Определить, является ли введенная буква русского алфавита гласной.
- Написать программу, которая в зависимости от значения переменной А на экран выводится наименование оценки. Предусмотреть вывод сообщения об ошибке в случае, когда введено число вне интервала 2..5.
- Написать программу, которая если переменная Ch будет буквой ('A'..'Z', 'a'..'z'), цифрой ('0'..'9') или оператором ('+', '-', '*', '/'), будет соответственно выдавать одно из сообщений 'Буква', 'Цифра', 'Оператор'. В противном случае программа напечатает сообщение 'Специальный символ'.