Автор работы: Пользователь скрыл имя, 10 Января 2014 в 11:25, лабораторная работа
Цель работы:
выработать практические навыки работы с системой
Borland Delphi, научиться создавать, вводить в компьютер, выполнять и исправлять простейшие программы на языке Pascal в режиме
диалога, познакомиться с диагностическими сообщениями компилятора об ошибках при выполнении программ, реализующих линейные алгоритмы; научиться правильно использовать условный оператор IF; научиться составлять программы решения задач на разветвляющиеся алгоритмы.
ОТЧЕТ
О ЛАБОРАТОРНОЙ РАБОТЕ
ПО КУРСУ Программирование на языках высокого уровня
.
Лабораторная работа № 1
Тема работы:
Алгоритмы линейной и разветвляющейся структуры.
Цель работы:
выработать практические навыки работы с системой
Borland Delphi, научиться создавать, вводить в компьютер, выполнять и исправлять простейшие программы на языке Pascal в режиме
диалога, познакомиться с диагностическими сообщениями компилятора об ошибках при выполнении программ, реализующих линейные алгоритмы; научиться правильно использовать условный оператор IF; научиться составлять программы решения задач на разветвляющиеся алгоритмы.
Условия задания:
1. Вычислите:
2. Вычислите площадь кольца, ширина которого равна Н, а отношение радиуса большей окружности к радиусу меньшей окружности равно D.
Этапы решения задачи 1:
;
Ввод z и
1
2
Печать z
конец
3
Рис.1 Блок-схема к задаче 1
program lab11;
var alpha1, alpha2: integer;
z: real;
begin
writeln('z');
writeln ('Эта программа вычисляет z');
write('alpha1='); readln(alpha1);
write('alpha2='); readln(alpha2);
z:=sin(pi/2+3*alpha1)/(1-sin(
writeln('z=',z);
writeln('Нажмите ENTER для завершения работы программы');
readln;
end.
Входные данные:
alpha1=48
alpha2=3
Выходные данные:
z=6.16908149094304E-001
Этапы решения задачи 2:
Начало
Ввод S, H, D
1
4
5
Печать S
конец
6
2
3
Рис.2 Блок-схема к задаче 2
• Переведем блок-схему на язык Pascal
program lab12;
var H, D, r1, r2, S: real;
begin
writeln('S');
writeln('Эта программа вычисляет площадь кольца');
write('H='); readln(H);
write('D='); readln(D);
r1:=H/(D-1);
r2:=r1+H;
S:=pi*sqr(r1);
S:=pi*sqr(r2);
S:=pi*sqr(r2)-pi*sqr(r1);
writeln('S=',S);
writeln('нажмите ENTER для завершения работы программы');
readln;
end.
Входные данные:
H=8
D=6
Выходные данные:
S=2.81486701761645E+002
Лабораторная работа № 2
1
Тема работы:
Алгоритмы циклической структуры.
Цель работы:
Научиться правильно использовать различные операторы циклов; научиться составлять программы решения задач с использованием циклических структур.
2
Условия задания:
1. Даны натуральные числа M и N. Определите их наименьшее общее кратное.
2. Дана последовательность
целых чисел, 0 – конец последовательности.
Определите сумму трех
3.Не используя стандартные функции (за исключением abs), вычислите с точностью eps >0 :
при (|x|<1). Считается, что требуемая точность достигнута, если очередное слагаемое по модулю меньше eps.
3
Этапы решения задачи 1:
Наименьшее общее кратное (НОК) двух целых чисел M и N есть наименьшее натуральное число, которое делится на M и N. Для решения задачи необходимо определить, какое натуральное число является наименьшим общим кратным чисел M и N.
M>0 and N>0 and M>N
Начало
Введите натуральное число M
Введите натуральное число N
K=N
K=M
I=1 to K
M mod I=0 and N mod I=0
NOD=I
NOK=(M*N)/NOD
Печать NOK
Конец
да нет
да нет
Рис.3 Блок-схема к задаче 1
program lab21;
var M, N, I, K, NOD : integer;
NOK : real;
begin
writeln('Эта программа вычисляет наименьшее
общее кратное');
write('Введите натуральное число M=');
readln(M);
write('Введите натуральное число N=');
readln(N);
if (M>0) and (N>0) and (M>
else K:=M;
for I:=1 to K do
if (M mod I=0) and (N mod I=0) then
NOD:=I;
NOK:=(M*N)/NOD;
writeln('наименьшее общее кратное');
writeln(M, N, ' NOK = ', trunc(NOK));
writeln('нажмите ENTER для завершения работы
программы');
readln;
end.
Входные данные:
M=12, N=15
Выходные данные:
NOK=60
Этапы решения задачи 2:
Начало
i=1 to n
Введите i
a[i]>m1
m1=a[i]
i=1 to n
(a[i]>m2) and (a[i]<>m1)
m2=a[i]
i=1 to n
a[i]>m3 and (a[i]<>m2) and (a[i]<>m1)
m3=a[i]
да нет
да нет
да нет
Sum=m1+m2+m3
Печать сумма трёх наибольших чисел в последовательности
Конец
Рис.4 Блок-схема к задаче 2
Переведем блок-схему на язык Pascal
program lab22;
const n = 10;
var a: array[1..n] of integer;
m1,m2,m3,i,sum: byte;
begin
for i:= 1 to n do begin
write('введите ',i, ' элемент = ');
readln(a[i]);
if a[i] > m1 then
m1:= a[i];
end;
for i:= 1 to n do
if (a[i] > m2) and (a[i] <> m1) then
m2:= a[i];
for i:= 1 to n do
if (a[i] > m3) and (a[i] <> m2) and (a[i] <> m1) then
m3:= a[i];
sum:=m1+m2+m3;
writeln('сумма трех наибольших чисел в последовательности = ', sum);
writeln('нажмите ENTER для завершения работы программы');
readln;
end.
Входные данные:
1 элемент 5; 2 элемент 10; 3 элемент 15; 4 элемент 20; 5 элемент 25;
6 элемент 30; 7 элемент 35; 8 элемент 40; 9 элемент 45; 10 элемент 50
Выходные данные:
Сумма трёх наибольших чисел в последовательности = 135.
Этапы решения задачи 3:
Переведем блок-схему на язык Pascal
program lab23;
var x,e,s,si,t,y:real;
i:integer;
begin
repeat
write('|x|<1 x=');readln(x);
until abs(x)<1;
repeat
write('e (0,1) e=');
readln(e);
until (e>0)and(e<1);
s:=0;
si:=x;
t:=x;
i:=0;
while abs(s-si)>e do
begin
s:=si;
i:=i+1;
t:=-t*x*x;
si:=si+t/(2*i+1);
end;
writeln('S=',s:0:6);
y:=arctan(x);
write('Arctg(',x:0:2,')=',y:0:
readln
end.
Начало
Введите х
|x|<1
abs(x<1)
Введите e(0,1)
(e>0) and (e<1)
s=0
si=x
t=x
i=0
abs(s-si)>e
S=si
I=i+1
t=-t*x*x
Si=(si+t)/(2*i+1)
y=arctan(x)
Конец
Печать y
Рис.5 Блок-схема к задаче 3
Входные данные:
x=0,3
e=0,1
Выходные данные:
s=0,300000
arctan(0,3)=0,291457
Лабораторная работа № 3
1
Тема работы:
Массивы
Цель работы:
Научиться правильно описывать различные массивы, уметь инициализировать массивы, распечатывать содержимое массива; научиться решать задачи на использование массивов.
2
Условия задания:
1. В одномерном массиве, состоящем из n вещественных элементов:
1) определите, является ли массив палиндромом;
2) вычислите сумму модулей
элементов массива,
Преобразуйте массив таким образом, чтобы сначала располагались элементы, кратные 5, затем 4, далее 3, остальные – в конце.
2. Дана целочисленная квадратная матрица:
1) элементы строки с четными номерами циклически сдвиньте влево на количество элементов, равное номеру строки, а элементы нечетных строк – вправо;
2) выведите на экран элементы матрицы, которые больше среднего арифметического всех элементов. Сохраните порядок следования элементов в матрице.
Этапы решения задачи 1(1):
Переведем блок-схему на язык Pascal
program lab31;
var n, m, p: word;
begin
write('Enter number: ');
readln(n);
m := n;
p := 0;
while m > 0 do begin
p := p * 10 + m mod 10;
m := m div 10;
end;
if n = p then
writeln('Палиндром')
else
writeln('Не палиндром');
readln;
end.
Начало
Ввод (‘enter number:’)
m=n
P=0
m>0
p=p*10+m mod 10
m=m div 10
n=p
Печать палиндром
Печать не палиндром
Печать
Конец
да нет
Входные данные:
66
Выходные данные:
Палиндром
Входные данные:
136
Выходные данные:
Не палиндром
Этапы решения задачи 1(2):
program lab32;
const
n=3;
type
mas = array[1..n] of integer;
var
p:boolean;
a:mas;
i:byte;
function palindrom(n: integer): boolean;
var k,m:integer;
begin
write(k);
readln(k);
write(m);
readln(m);
k:=n; m:=0;
while (n>0) do
begin
m:=m*10 + (n mod 10);
n:=n div 10;
end;
if (m=k) then palindrom := true
else palindrom := false;
end;
begin
writeln('Введите элемент массива');
for i:=1 to n do read(a[i]);
p:=palindrom(a[i]);
write(p);
end.
Информация о работе Алгоритмы линейной и разветвляющейся структуры