Томский межвузовский центр дистанционного образования
Томский государственный университет систем управления и радиоэлектроники (ТУСУР)
Кафедра экономика
Контрольная работа №1
по дисциплине «информатика»
автор пособия Тимченко С.В., Сметанин С.И.
вариант №1
Выполнила
Студентка гр.З-828-Б
Специальности 080105
Афонина Юлия Владимировна
Г. Нефтеюганск
Задание №1. «Выражения и условный оператор IF»
1. Вычислить значение функции f в точке x.
Решение:
Program prog1;
Var
f,x: real;
Begin
writeln('Расчет значения функции в заданной точке');
write(' Введите число x: ');
readln(x);
if x<0 then f:=SQR(x+3) else
begin
if x<4 then f:=sin(x-2)/(SQR(x)-16)
else f:=SQRT(x-4);
end;
writeln(' Значение f(',x:0:8,') = ',f:0:8);
readln;
end.
1. X=-1 (выполнено первое условие, x<0):
Расчет значения функции в заданной точке
Введите число x: -1
Значение f(-1.00000000) = 4.00000000
2. X=3 (выполнено второе условие, 0<=x<4):
Расчет значения функции в заданной точке
Введите число x: 3
Значение f(3.00000000) = -0.12021014
3. X=5 (выполнено третье условие, x>=4):
Расчет значения функции в заданной точке
Введите число x: 5
Значение f(5.00000000) = 1.00000000
Программа дает верные результаты, отладка завершена.
2. Какие типы использовались при описании переменных в программе?
При описании данной программы использовались переменные вещественного типа.
3. Чем определяется выбор того, или иного типа?
Типом данных называется множество допустимых значений этих данных, а также совокупность операций над ними. Типы делятся на следующие группы: простые, структурированные, указатели, процедурные, объекты. Есть стандартные (предопределенные) и определяемые программистами в разделе, начинающемся со слова Type. Простые типы определяют упорядоченное множество значений элементов и делятся на вещественные, целые, символьный, логический, перечисляемый и тип-диапазон. Вещественные типы определяют дробные числа и представлены 5 стандартными типами: real, single, double, extended, comp. Целые типы определяют целые числа и представлены 5 стандартными типами: integer, longint, shortint, byte, word, стандартный символьный тип char определяет полный набор допустимых символов. Стандартный логический тип Boolean представляет собой тип данных, каждый элемент которого может принимать 1 из 2-х значений: False (ложь), True (правда). Перечисляемый тип не является стандартным и определяется набором идентификаторов, к которым может совпадать значение элемента данных.
В данной программе выбор типа realдля переменной xобусловлен тем, что функции sqrt(x),sin(x) иsqr(x) допускают аргументы такого типа. А так как значение функции sin(x) имеет тип real для аргумента типа real, то для переменной f необходимо также выбрать тип real.
Задание №2. «Операторы циклов»
Вычислить сумму s значений функции f в точках xi которые берутся с заданного интервала [a;b] через равные отрезки длиной h. Длина отрезка рассчитывается по формуле
. Здесь i=1,2,3…n – номер точки; n – задаваемое количество точек; a – начло и b – конец интервала изменения x. Вывести на экран результаты вычислений, полученные при помощи следующих циклов:- Whileлогическое_выражениеDoтело_цикла;
- Repeatтело_циклаUntilлогическое_выражение;
- Forпараметр:=мин._значениеToмакс. Doтело_цикла;
- Forпараметр:=макс._значениеDownToмин. Doтело_цикла;
При выполнении задания сначала в программе требуется задать значение исходных данных: границы интервала a и b, количество точек n. Это можно сделать, описав соответствующие константы в разделе объявления констант Const.
Затем при помощи операторов циклов, записываемых в программе последовательно друг за другом в любом порядке следования, необходимо в каждом из циклов вычислить сумму s и вывести ее на экран, т.е. в одной программе решить задачу 4-мя способами. Таким образом, в результате выполнения программе на экране должны быть 4 значения s, совпадающие между собой.
Program prog2;
const
a=3;
b=10;
n=10;
var
s,x,h:real;
i:integer;
begin
writeln('Вычисление суммы значений функции');
h:=(b-a)/(n-1);
writeln(' a = ',a);
writeln(' b = ',b);
writeln(' n = ',n);
writeln(' h = ',h:0:8);
writeln;
{цикл "while"}
writeln('1. Цикл "while"');
x:=a;
s:=0;
i:=1;
while i<=10 do
begin
s:=s+sin(x+3)/exp(2/5*ln(x+3));
x:=x+h;
i:=i+1;
end;
write(' Значение s: ');
writeln(s:0:8);
{цикл "repeat"}
writeln('2. Цикл "repeat"');
x:=a;
s:=0;
i:=1;
repeat
s:=s+sin(x+3)/exp(2/5*ln(x+3));
x:=x+h;
i:=i+1;
until i>10;
write(' Значение s: ');
writeln(s:0:8);
{цикл "for ... to ... do"}
writeln('3. Цикл "for ... to ... do"');
x:=a;
s:=0;
for i:=1 to 10 do
begin
s:=s+sin(x+3)/exp(2/5*ln(x+3));
x:=x+h;
end;
write(' Значение s: ');
writeln(s:0:8);
{цикл "for ... downto ... do"}
writeln('4. Цикл "for ... downto ... do"');
x:=a;
s:=0;
for i:=10 downto 1 do
begin
s:=s+sin(x+3)/exp(2/5*ln(x+3));
x:=x+h;
end;
write(' Значение s: ');
writeln(s:0:8);
readln;
End.
Переменные a, b, h заданы в разделе констант в программе:
const
a=3;
b=10;
n=10;
Результат работы программы:
Вычисление суммы значений функции
a = 3
b = 10
n = 10
h = 0.77777778
Результаты вычислений, полученные при помощи различных циклов:
1. Цикл While:
1. Цикл "while"
Значение s: 0.15809431
2. Цикл repeat:
2. Цикл "repeat"
Значение s: 0.15809431
3. Цикл For … To … Do:
3. Цикл "for ... to ... do"
Значение s: 0.15809431
4. Цикл For … DownTo … Do:
4. Цикл "for ... downto ... do"
Значение s: 0.15809431
Программа дает одинаковые результаты для всех циклов, отладка завершена.
Оператор While имеет следующую структуру:
Whileлогическое выражениеdoоператор;
Работает этот оператор очень просто. Вычисляется значение логического выражения. Если получается истина (True), то выполняется оператор, а затем снова вычисляется значение логического выражения. Если снова получается истина, то опять выполняется оператор, и т.д. Так продолжается до тех пор, пока при вычислении логического выражения не получится ложь (False). После этого оператор While заканчивает свою работу и передает действие следующему оператору.
В частности, если в самом начале работы While при вычислении логического выражения получается ложь, то оператор не выполнится ни разу. Как обычно, в качестве оператора может выступать некоторый составной оператор. Может показаться странным, что оператор While вообще когда-нибудь заканчивает свою работу. В самом деле, почему одно и то же логическое выражение сначала было истинным, а потом, после нескольких выполнений оператора, стало ложным? Логическое выражение зависит от нескольких переменных, значение которых меняется во время выполнения оператора, что влечет за собой изменения значения логического выражения. В принципе, это вовсе не означает, что каждый оператор While когда-нибудь заканчивает работу. То есть, не исключена ситуация, когда логическое выражение всегда будет истинным, и оператор While будет работать вечно. Такая ситуация называется зацикливанием. Таким образом, при использовании оператора While и вообще других циклических операторов нужно быть аккуратным и стараться избегать зацикливаний. Это значит, что при программировании любого цикла нужно стараться всегда объяснить самому себе, почему этот цикл не будет вечным, а когда-нибудь закончит свою работу.
3. В чем ее основные отличия от остальных циклов Turbo Pascal?
Цикл while имеет следующие отличия от оператора repeat:
1) В операторе while проверка условия выхода выполняется в начале выхода, а у repeat в конце.
2) Тело цикла может выполняться ни разу в while, а в repeat всегда выполняется хотя бы один раз;
3) Условие выхода удовлетворяется, если выражение ложно, repeat – если истинно;
4) Тело цикла должно содержать только один оператор, а в repeat можно поместить любое количество операторов.
Оператор For: Если значение условного выражения истинно, то цикл продолжает выполняться, а если значение условного выражения ложно, то происходит выход из цикла. После выхода из цикла идет переход к следующему оператору программы. Изменение – это выражение, определяющее, как будет меняться параметр цикла. В операторе for сначала проверяется условие и если значение условия "истинно", то идёт выполнение тела цикла (блока операторов или простого оператора).