Тема СРС: Составление программы по линейному алгоритму.

Количество часов: 3.

 

Задание. Выполнить постановку задачи, составить алгоритм и написать программу на языке Паскаль.

 

Вариант Задание
1. На депозит положена сумма в K тенге под p% годовых. Через сколько лет (n) будет накоплена сумма S?
2. Найти корень уравнения arctg(1 + ln x) = .
3. Вычислить количество прожитых вами дней (учесть тот факт, что в високосном году 366 дней).
4. Животновод в начале каждой зимы повышает отпускную цену на молоко на р%, а каждым летом — снижает на столько же процентов. Изменится ли цена на молоко и если да, то в какую сторону и на сколько через n лет?
5. Функция у = sin x на отрезке [0,π/2] хорошо аппроксимируется разложением: y = xx3/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