Алгоритмы линейной и разветвляющейся структуры

Автор работы: Пользователь скрыл имя, 10 Января 2014 в 11:25, лабораторная работа

Описание работы

Цель работы:
выработать практические навыки работы с системой
Borland Delphi, научиться создавать, вводить в компьютер, выполнять и исправлять простейшие программы на языке Pascal в режиме
диалога, познакомиться с диагностическими сообщениями компилятора об ошибках при выполнении программ, реализующих линейные алгоритмы; научиться правильно использовать условный оператор IF; научиться составлять программы решения задач на разветвляющиеся алгоритмы.

Файлы: 1 файл

лаб.docx

— 257.04 Кб (Скачать файл)

 

ОТЧЕТ

О ЛАБОРАТОРНОЙ РАБОТЕ

ПО КУРСУ Программирование на языках высокого уровня

 

.

 

 

 

 

 

 

 

 

 

 

 

Лабораторная  работа № 1

 

Тема работы:

Алгоритмы линейной и разветвляющейся  структуры.

Цель работы:

выработать практические навыки работы с системой

Borland Delphi, научиться создавать, вводить в компьютер, выполнять и исправлять простейшие программы на языке Pascal в режиме

диалога, познакомиться с  диагностическими сообщениями компилятора об ошибках при выполнении программ, реализующих линейные алгоритмы; научиться правильно использовать условный оператор IF; научиться составлять программы решения задач на разветвляющиеся алгоритмы.

 

Условия задания:

 
1. Вычислите: 

2. Вычислите площадь кольца, ширина которого равна Н, а отношение радиуса большей окружности к радиусу меньшей окружности равно D.

 

Этапы решения  задачи 1:

  • Математическая модель задания

;

 

  • Составим блок-схему алгоритма

 

 

Начало

Ввод z и

1

2

Печать z

конец

3

 

 

Рис.1 Блок-схема  к задаче 1

 

  • Переведем блок-схему на язык Pascal

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(3*alpha2-pi));

  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

 

  • Переведем блок-схему на язык Pascal

 

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>N) then K:=N 
    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:

  • Составим блок-схему алгоритма 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:6);

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.

 

 

  • Составим блок-схему алгоритма 1.1

 

 

 

 

 

 

 

Начало


Ввод (‘enter number:’)

m=n

P=0

m>0

p=p*10+m mod 10

m=m div 10

n=p

Печать палиндром

Печать не  палиндром

Печать

Конец


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да         нет

 

 

 

 

 

 

 

 

                                        Рис.6 Блок-схема к задаче 1.1

 

Входные данные:

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.

           

 


Информация о работе Алгоритмы линейной и разветвляющейся структуры