Лабораторная работа 1
Пояснения к первой лабораторной работе по курсу Информатика
Задание
Составить блок-схему алгоритма и программу на языке Паскаль для вычисления значений функции \[y = \frac{a^2 + \ln bx}{e^x + \cos (cx)}\]
при заданном значении x, которое вводится с клавиатуры. Параметры функции и значение аргумента приведены в таблице:
Параметр | Значение |
a | 1.5 |
b | 2.1 |
c | 3.22 |
x | 1.83 |
Текст программы
program Lab1;
var a, b, c, x, y: real;
begin
a:=1.5;
b:=2.1;
c:=3.22;
write('введите x=');
readln(x);
y:=(sqr(a)+ln(b*x))/(exp(x)+cos(c*x));
writeln('при x=',x:5:2,' значение y=',y:5:2);
readln;
end.
Пояснения
Программа на языке Паскаль состоит из трёх основных разделов:
- заголовок
- раздел описаний
- тело программы или блок опрераторов
В рассматриваемой программе заголовок это первая строчка
program Lab1;
которая говорит о том, что эта программа называется Lab1.
Следующий раздел это раздел описаний, где перечисляются используемые в программе переменные с указанием их типов (целые, вещественные, …). В примере это
var a, b, c, x, y : real;
В программе используется 5 переменных, которым можно присвоить вещественные значения (тип real).
В разделе операторов, который начинается с ключевого слова begin и заканчивается словом end. (с точкой) записываются действия, которые выполняет программа. В первых строчках раздела операторов, объявленным ранее переменным, присваиваются значения:
a:=1.5;
b:=2.1;
c:=3.22;
Обратите внимание, что операция присвоения значения переменной записывается при помощи сиволов двоеточие и равно (a:=1.5), чтобы отличать это действие от операции сравнения значений переменных a=1.5, результатом которой будет истина или ложь.
Во второй строке вызывается функция write, которая выводит на экран значение переменной или текст, который передается этой функции в качестве аргумента:
write('введите x=');
После этого вызывается функция readln(x), которая приводит к приостановке программы, пока пользователь не введет какое-то значение и не нажмет ENTER.
readln(x);
Введённое пользователем значение запиcывается в переменную x.
После получения от пользователя программы значения x, можно вычислить значение функции и записать её в переменную y:
y:=(sqr(a)+ln(b*x))/(exp(x)+cos(c*x));
В этой строке используются математические функции вычисления корня sqrt, натурального логарифма ln, косинуса cos и экспоненты exp. Аргументы этим функциям передаются в круглых скобках. Для тригонометрических функций предполагается, что аргумент задан в радианах.
Результат выводится на экран при помощи функции writeln, которая отличается от использованной ранее функции write тем, что после вывода на экран всех значениий, функция переводит крусор на новую строчку.
writeln('при x=', x:5:2, ' значение y=', y:5:2);
Функции writeln передано четыре аргумента, которые она выведет на экран друг за другом. В начале выведется текст ‘при x=’ (он записан в кавычках, чтобы транслятор языка Паскаль не рассматривал содержимое этой строки как часть кода порграммы. Далее выводится значение (содержимое) переменной x. Слева от переменной x через двоеточия указаны два числа – 5 и 2, при помощи которых производится форматирование числового значения:
- для вывода используется пять позиций на экране;
- значение переменной x округляется до второго знака после запятой.
Например, если пользователь ввел значение x равное 1.15345687, то на экран будет выведено
1 | . | 1 | 5 |
Если рассматриваемую строку заменить на
writeln('при x=', x, ' значение y=', y);
то на экран тоже будет выведен результат, но с большим количеством “лишних” цифр.
при x= 1.1200000000000001E+000 значение y= 1.4303744323446415E+000
После значения x в той же строке выводится текст ‘ значение y=’ и значение переменной y, с тем же форматом вывода и округления, который использовался для вывода переменной x.
Последняя функция приостанавливает выполнения программы, ожидая от пользователя нажатия кнопки ENTER, чтобы можно было прочитать результаты работы программы:
readln;
Код этой же программы на языке Python
import math
a = 1.5
b = 2.1
c = 3.22
x = float(input('Введите значение x = '))
y=(a*a+math.log(b*x))/(math.exp(x)+math.cos(c*x))
print('при x= {} значение y = {}'.format(x,y))