Тема СРС: Составление программы по линейному алгоритму.
Количество часов: 3.
Задание. Выполнить постановку задачи, составить алгоритм и написать программу на языке Паскаль.
Вариант | Задание |
1. | На депозит положена сумма в K тенге под p% годовых. Через сколько лет (n) будет накоплена сумма S? ![]() |
2. | Найти корень уравнения arctg(1 + ln x) = ![]() |
3. | Вычислить количество прожитых вами дней (учесть тот факт, что в високосном году 366 дней). |
4. | Животновод в начале каждой зимы повышает отпускную цену на молоко на р%, а каждым летом — снижает на столько же процентов. Изменится ли цена на молоко и если да, то в какую сторону и на сколько через n лет? |
5. | Функция у = sin x на отрезке [0,π/2] хорошо аппроксимируется разложением: y = x – x3/6 + x5/120. Для заданного значения аргумента х вычислить у по этой формуле и сравнить с точным значением, вычисленным с помощью стандартной функции sin. |
6. | Правительство гарантирует, что инфляция в новом году составит p% в месяц. Какого роста цен (в процентах) следует ожидать за год? ![]() |
7. | Вычислить площадь треугольника, если известны три его стороны. ![]() |
8. | Вычислить площадь треугольника, если известны: сторона и высота, проведенная к ней. S = ah /2. |
9. | Продав квартиру вы получили Х долларов и положили их в банк. Банк начисляет 1% каждый месяц. Сколько денег будет на вашем с через год. Рассмотрите два случая: а) процент начисляется на первоначальную сумму; б) процент начисляется на новую сумму. |
10. | Вычислить площадь треугольника, если известны две стороны и угол между ними. S = ab sinÐС. |
11. | Длина отрезка задана в дюймах (1 дюйм = 2,54 см). Перевести значение длины в метрическую меру, то есть выразить ее в метрах, сантиметрах и миллиметрах. Так, например, 21 дюйм = 0 м 53 см 3,4 мм. |
Краткий конспект лекции №13
Тема: Условный оператор. Составной оператор.
Количество часов: 1.
Логические операции и выражения
Логические операции предназначены для работы с операндами логического типа. Результат применения этих операций будет иметь также логический тип. Логические операции, как и арифметические, бывают унарными и бинарными.
В Паскале есть одна унарная логическая операция not ("HE", или отрицание) и три бинарные — and ("И", или логическое умножение), о r ("ИЛИ", или логическое сложение) и хо r (исключающее или). Результаты их выполнения при различных значениях операндов задаются таблицей истинности.
А | В | not A | A and В | A or В | A xor В |
False | false | true | False | false | false |
False | true | true | False | true | true |
True | false | false | False | true | true |
True | true | false | True | true | false |
Словесно операции можно определить так:
Выражение not A истинно тогда и только тогда, когда выражение A ложно.
Выражение A and В истинно тогда и только тогда, когда оба выражения истинны.
Выражение A or В истинно тогда и только тогда, когда хотя бы одно из выражений истинно.
Выражение A xor В истинно тогда, когда одно и только одно из выражений истинно (но не одновременно).
Пример. Вычислить значение выражения not(( x >= 0) or ( ln( y) > 0)) при х = 3, у = 0.5.
Подставляя вместо переменных их значения, получаем not((3 >= 0) or ( ln(0.5) > 0)).
Значение выражения 3 >= 0 равно true.
Значение выражения ln(0.5) > 0 равно false, т.к. логарифм числа, меньшего 1, всегда меньше нуля.
Подставляем полученные значения: not ( true or false). Воспользовавшись таблицей, находим значение выражения равным false.
Схематично вычисление логического выражения можно записать так:
FALSE | TRUE | TRUE | FALSE |
↑ | ↑ | ↑ | ↑ |
not | (( x >= 0) | or | ( ln( y) > 0)) |
Условный оператор
При решении задач нередко возникает ситуация, когда действие осуществляется в зависимости от некоторого условия. Для программирования проверки условия и выбора действия в зависимости от этого условия используются условные операторы.
Предположим, у нас есть условие (выражение типа boolean). Если оно выполняется, то необходимо выполнить одну последовательность операторов, в противном случае — другую. Чтобы это запрограммировать на Паскале, необходимо воспользоваться оператором if, синтаксическая диаграмма которого приведена на Рис. 7. Заметьте, что перед else не ставится точка с запятой.
Рис. 7. Синтаксическая диаграмма оператора if
Принцип действия. Если значение выражения равно true (условие выполнено), то исполняется оператор, стоящий после then, если — false (условие не выполнено), то исполняется оператор, стоящий после else. В случае отсутствия else-части никаких действий в случае невыполнения условия не производится.
Следует обратить внимание на то, что и после then и после else может стоять только один оператор. Поэтому, в том случае, когда возникает необходимость использования нескольких операторов, применяется составной оператор.
Синтаксис составного оператора:
<составной оператор>::=begin <оператор>{;<оператор>}end
Рассмотрим программу, использующую оператор if. например, игру в "чет-нечет" со следующими условиями; компьютер "задумывает" число от 0 до 100, не сообщая его пользователю, и просит пользователя ввести свое число. Если оба числа совпадают по четности (т.е. оба четны или оба нечетны), то пользователь выиграл, иначе — пользователь проиграл.
program game;
{Игра в "чет-нечет": компьютер формирует случайное число,
пользователь вводит свое число, если оба числа совпадают
по четности, то пользователь выиграл, иначе пользователь
проиграл}
var
a,b : integer;
begin
randomize;
{a - случайное число, формируемое компьютером}
a:=random(100);
{b - число, вводимое пользователем}
write('Введите число: ');
readln(b);
{проверка суммы чисел на четность: если сумма четна, то оба числа четны или оба нечетны}
if (a+b) mod 2 = 0 then
writeln('Поздравляю! Вы выиграли!')
else
writeln('Вы проиграли...');
readln;
end.
Рассмотрим программу с использованием условного оператора в сокращенной форме (без else-части): вводятся значения двух переменных целого типа — х и у. Если значения обеих переменных больше 0, то переменной х присваивается значение квадратного корня из х, а переменной у — значение квадратного корня из у, иначе оба числа остаются прежними.
Решение задачи может быть следующим:
program xy;
var
х,у : integer;
begin
write('Введите x и у: '); readln(x,y);
if (x>0) and (y>0) then
begin
x:=sqrt(x);
y:=sqrt(y);
end;
write('x=', x, ', y=', y);
readln;
end.
Обратите внимание на то, как выглядит логическое условие. Наличие скобок обусловлено тем, что операции сравнения имеют приоритет ниже, чем логическая операция and, но должны быть выполнены раньше ее. Поэтому выражения х>0 и у>0 находятся в круглых скобках.
В частях then и else могут находиться любые операторы, в том числе и условные. Бывает затруднительно определить, к какому именно оператору if относится данная часть else. Здесь действует следующее правило: компилятор связывает часть else с ближайшим, еще не имеющим части else оператором if. Исключение составляет ситуация, когда в части then стоит блок операторов. Например, во фрагменте
if x>0 then
begin
if y>0 then y:=sqrt(y)
end
else y:=y+x;
часть else относится к первому оператору if.
Методические материалы для лабораторного занятия №13