Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Федеральное агентство по образованию Российской Федерации
Томский государственный университет систем управления и радиоэлектроники (ТУСУР)
Кафедра ИИТ
Отчет
По лабораторной работе №2
Тема: «Простейшие программы»
Выполнил студент гр.537
Шипина Анастасия Николаевна
Принял старший преподаватель кафедры КСУП
Потапова Евгения Михайловна
2008
Содержание
Введение…………………………………………………………………….….…..3
Основная часть…………………………………………………………………..…5
Первая задача…………………………………………………………………….....5
Вторая задача……………………………………………………………….……....7
Заключение…………………………………………………………………….…...9
Введение
Циклы
Алгоритм решения многих задач являются циклическими, то есть для получения результата определенная последовательность действий должна быть выполнена несколько раз. Последовательность повторяющихся действий называется циклом. Циклы обычно реализуются в программе с помощью инструкций for, while, repeat.
Инструкция for
Инструкция for используется, когда число повторений заранее известно. Формат записи:
for <счетчик> : = <начальное значение> to
<конечное значение> do
begin
{ тело цикла }
end;
Здесь <счетчик> - имя переменной, определяющей число повторений инструкций тела цикла; <начальное_значение> - выражение, определяющие начальное значение переменной счетчика циклов; <конечное_значение> - выражение, определяющее конечное значение переменной счетчика циклов.
В инструкции for после каждого выполнения инструкций тела цикла автоматически увеличивается счетчик циклов. Если вместо ключевого слова to написать downto, то счетчик будет не увеличиваться, а уменьшаться.
Инструкция while
Инструкция while используется в том случае, когда некоторую последовательность действий (инструкций программы) надо выполнить несколько раз, причем необходимое число повторений заранее неизвестно и может быть определено только во время работы программы, то есть в процессе вычислений. Формат записи данной инструкции таков:
while <условие> do
begin
{последовательность инструкций}
end;
Здесь <условие> - выражение логического типа, определяющее условие выполнения цикла.
Инструкция while выполняется следующим образом.
Для завершения цикла необходимо, чтобы инструкции между словами begin и end влияли на значение выражения <условие> (изменяли значение переменных, входящих в это выражение).
Инструкция repeat
Инструкция repeat, как и инструкция while, используется в программе в том случае, когда необходимо организовать цикл, причем число повторений неизвестно и может быть определено во время работы программы, то есть определяется ходом вычислений. В общем виде инструкция repeat записывается следующим образом:
repeat
{инструкции}
until <условие>:
Здесь <условие> - выражение логического типа, определяющее условие завершения цикла.
Инструкция repeat выполняется следующим образом.
Главное отличие инструкции repeat от инструкции while состоит в том, что находящиеся между словами repeat и until инструкции цикла в любом случае выполняются по крайней мере один раз.
В инструкциях while и repeat необходимо обязательно следить за тем, чтобы инструкции цикла изменяли значение переменных, входящих в выражение <условие>, иначе произойдет так называемое зацикливание (бесконечное повторение инструкций).
Условные инструкции
В языке Паскаль условие это выражение логического типа (boolean), которое может принимать одно из двух значений: истина (true) или ложь (false)/
Условная инструкция позволяет проверить заданное условие и в зависимости от результатов выполнить то или иное действие, то есть условная инструкция средство ветвления вычислительного процесса. Формат записи:
if <условие> then <инструкция_1> else <инструкция_2>;
Здесь if, then, else зарезервированные слова (если, то, иначе), <условие> - выражение логического типа, <инструкция_1> и <инструкция_2> - любые инструкции языка Паскаль.
Выполняется инструкция if следующим образом:
После инструкций, расположенных перед ключевым словом else, символ точки с запятой не ставится!
Если действие должно быть выполнено только при выполнение определенного условия и пропущено в случае его невыполнения, то инструкция if записывается без инструкции else:
if <условие> then <инструкция_1>
Основная часть
Первая задача
В задаче были взяты два типа данных real и integer. Для переменных y,x,z используется тип real, который определяет вещественные значения для этих переменных (y присваивает значение косинуса, z присваивает значение синуса, x изменяется от 0 до 1 с шагом 0,1).
В задаче используется цикл while, так как в задаче последовательность действий надо выполнить несколько раз, причем необходимое число повторений заранее неизвестно и может быть определено только во время работы программы, то есть в процессе вычислений.
Напечатать таблицу значений функций sin(x) и cos(x) на отрезке [0,1] с шагом 0.1 в следующем виде (считать, что при печати на каждое вещественное число отводиться по 6 позиций строки):
x sin(x) cos(x)
……....................................
0.0000 0.0000 1.0000
0.1000 0.0998 0.9950
………................................
1.0000 0.8415 0.5403
Словесное объяснение задачи:
uses crt;
var
y,x,z:real;
begin
clrscr;
x:=0;
writeln(' x cos(x) sin(x)');
writeln('---------------------------');
while x <=1 do
begin
y:=cos(x);
z:=sin(x);
writeln(x:2:4,' ',y:2:4,' ',z:2:5);
x:=x+0.1;
end;
end.
Вторая задача
В задаче были взяты два типа данных boolean и longint. Для переменных i,D,g,fi,fi1,fi2 используется тип longint, который определяет целые значения для этих переменных (fi число Фибоначчи, D количество символов в цифре , g номер символа в цифре, i порядковый номер цифры, fi,fi1,fi2 числа Фибоначчи). Для переменной a используется тип boolean, который определяет лишь значения истинности.
В задаче используется цикл repeat, так как мы не знаем сколько раз будет выполнен цикл. Так же используется условия для выявления истинности.
Дано натуральное k. Напечатать k-ую цифру последовательности 1123581321... , в которой выписаны подряд все числа Фибонначи.
Словесное объяснение задачи:
uses crt;
var
i,D,g,fi,fi1,fi2:longint;
l,k:longint;
a:boolean;
begin
clrscr;
write('k= ');
readln(k);
a:=true;
fi1:=1;
fi2:=1;
i:=2;
repeat
fi:=fi1+fi2;
D:=trunc(ln(fi)/ln(10)+1.0);
if (i+D)>=k then
begin
a:=false;
end;
else
begin
i:=i+D;
fi1:=fi2;
fi2:=fi;
end;
writeln('f=',fi);
until a=false;
g:=k-i;
l:= trunc(fi/exp((D-g)*ln(10))) mod 10;
writeln;
writeln('k-я цифра Фибоначчи',l);
end.
Заключение
В первой задаче необходимо было напечатать таблицу, решенная задача дает нам таблицу в виде:
x cos(x) sin(x)
-------------------------------
0.0000 1.0000 0.0000
0.1000 0.9950 0.0998
0.2000 0.9801 0.1987
0.3000 0.9553 0.2955
0.4000 0.9211 0.3894
0.5000 0.8776 0.4794
0.6000 0.8253 0.5646
0.7000 0.7648 0.6442
0.8000 0.6967 0.7174
0.9000 0.6216 0.7833
1.0000 0.8415 0.5403
Протестировав вторую задачу, получаем: введенную пользователем число, ряд Фибоначчи и цифру последовательности, которую необходимо было найти:
k= 9
f=2
f=3
f=5
f=8
f=13
f=21
k-ая цифра Фибоначчи - 2
k= 18
f=2
f=3
f=5
f=8
f=13
f=21
f=34
f=55
f=89
f=144
k-ая цифра Фибоначчи - 4
да
ет
конец
Печатаем на экран значения y,z
Ввычисляем значения
y:=cos(x);
z:=sin(x);
x<=1
x: =0;
Ввод чисел
начало