Файл: Основные структуры алгоритмов: сравнительный анализ и примеры их использования (Теоретическая часть).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.03.2023

Просмотров: 299

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Writeln;

until false;

end.

Задача 3.Дано действительное число а. Вычислить f(a), если

Постановка задачи.

Входные данные – значение а, а так же функция f(x).

Выходные данные – значение функции f(a).

Цель реализации алгоритма: ввести значение а, вычислить значение f(a), при известной функции f(x).

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

Словесное описание алгоритма:

Начало

  1. Читаем а
  2. Проверяем условие-2<=a<=2
  3. Если верно, то f(a) = 2*a^2иначе f(a) = 4

Выводим f

Конец

Текст программы приведен ниже

program zadacha3;

var

a,f: double;

begin

repeat

write('a = ');

readln(a);

if ( (a>= -2) and (a<= 2) ) then

f:= 2*sqr(a)

else f:= 4;

write('f(a) = ');

writeln(f:0:3);

writeln;

writeln;

until false;

end.

Задача 4. Даны натуральное число n, действительная матрица размером n*9. Найти среднее арифметическое каждой из строк.

Постановка задачи.

Входные данные – натурально число n, матрица размером n*9

Выходные данные – в зависимости от n, получаем определенное количество строк и выводим среднее арифметическое каждой из строк.

Цель реализации алгоритма: ввести значение n, создать матрицу размера n*9,вычислить среднее арифметическое каждой из строк.

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

Словесное описание алгоритма:

Начало

  1. Читаем n
  2. Создаем динамический массив размерностьюnx9
  3. В цикле поочередно считываем с экрана его элементы
  4. В цикле считаем сумму элементов в строке и делим ее на 9
  5. Выводим полученный ответ на экран

Конец

Текстпрограммы

program Project4;

var

A: array of array of double;

n, i, j: integer;

tmp: double;

begin

write('n = ');

readln(n);

SetLength(A,n);

for i:=0 to n-1 do

SetLength(A[i],9);

for i:=0 to n-1 do

for j:=0 to 8 do

begin

write('A[',i,',',j,'] = ');

readln(A[i,j]);

end;

for i:=0 to n-1 do

begin

tmp:= 0;

for j:= 0 to 8 do

begin

tmp:= tmp + A[i,j];

end;

writeln('str',i+1,'',tmp/9:0:3);

end;

readln;

end.

Задача 5. Получить единичную квадратную матрицу порядка n.

Постановка задачи.

Входные данные – n-число строк и столбцов

Выходные данные – матрица размером n*n.

Цель реализации алгоритма: ввести значение n, создать единичную матрицу размера n*n, для этого будем использовать массив.


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

Словесное описание алгоритма:

Начало

  1. Читаем n
  2. Создаем динамический массив размерностью nxn
  3. В цикле заполняем значениями его элементы:

Если номер строки и номер столбца совпадают, то 1

Иначе 0.

  1. Выводим массив на экран.

Конец

Текстпрограммы

program Project5;

var

A: array of array of byte;

n,i,j: integer;

begin

write('n = ');

readln(n);

SetLength(A,n);

for i:= 0 to n-1 do

SetLength(A[i],n);

for i:= 0 to n-1 do

for j:= 0 to n-1 do

if (i = j) then A[i,j]:= 1

else A[i,j]:= 0;

for i:= 0 to n-1 do

begin

writeln;

for j:= 0 to n-1 do

write(A[i,j],'');

end;

writeln;

readln;

end.

Задача 6. Вычислить значения z, соответствующие каждому значению х (хn<=x<=xk шаг изменения х равен dx) по формуле .

Вычислить , сумму значений z, произведение отрицательных значений z, количество вычислительных z.Контрольный расчет провести при а=2.62, хn=-3, xk=3, dx=0.6.

Постановка задачи.

Входные данные - Xn, Xk, dx, a.

Выходные данне – Z и F.

Цель реализации алгоритма: ввести значение Xn, Xk, dx, a, и при этих значениях вычислить по приведенным фомуламZ и F.

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

Словесное описание алгоритма:

Начало

  1. Читаем Xn, Xk, dx, a
  2. x = Xn
  3. Пока x <= Xk делаем:
  4. Вычисляем z
  5. Если z>=0 то добавляем его в сумму положительных z

Иначе в произведение отрицательных

  1. Добавляем z в общую сумму
  2. Увеличиваем на 1 количество посчитанных z
  3. x = x + dx
  4. F =произведение отрицательных z + сумма положительных z
  5. Выводим полученные значения на экран

Конец

Текст программы

program Project6;

var

Xn, Xk, x, dx, a, tmp,

summa,

proizveden,

F,

allsumma : double;

Count: integer;

first: boolean;

function z(x: double): double;

begin

z:= (sqr(a*x)*exp(1/3*ln(1/sqr(a+x))) )/(a*ln(a + sqr(x))) ;

end;

begin

write('Xn = ' );

readln(Xn);

write('Xk = ');

readln(Xk);

write('dx = ');

readln(dx);

write('a = ');

readln(a);

if (Xk < Xn)then

begin

tmp:= Xk;

Xk:= Xn;

Xn:= tmp;

end;

x:= Xn;

proizveden:= 0;

summa:= 0;

count:= 0;

allsumma:= 0;

first:= true;

while(x<=Xk) do

begin

tmp:= z(x);

if (tmp < 0)then if first then


begin

proizveden:= tmp;

first:= false;

end

else

proizveden:= proizveden * tmp

else summa:= summa + tmp;

allsumma:= allsumma + tmp;

Count:= Count + 1;

x:= x + dx;

end;

F:= proizveden + summa;

writeln;

writeln('F = ', F:0:5);

writeln('summa znachenij z = ', allsumma:0:5);

writeln('proizvedenie otricatelnih z = ', proizveden:0:5);

writeln('kolichestvo vicheslitelnih z = ', Count);

readln;

end.

Задача 7.Дано: а=5 da=-0.5. Z вычислять по формуле:, где q=a2-a. Считать до тех пор, пока q>0. Определить k-количество вычисленных Z.Вывести на экран a, q, Z, k.

Постановка задачи

Входные данные - а=5 da=-0.5.

Выходные данне – a, q, Z, k.

Цель реализации алгоритма: ввести значение а=5 da=-0.5-константы и при этих значениях вычислить по приведенным фомуламZи вывести на экран a, q, Z, k.

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

Словесное описание алгоритма:

Начало

  1. A = 5, da = -0.5
  2. q = a^2 – a
  3. пока q > 0 делать
  4. z = q + 1/(q+1)
  5. увеличиваем К (кол-во вычислений) на 1
  6. a = a + da
  7. q = a^2- a
  8. выводим на экран a, q, Z, k

Конец

Текст программы

var

k: integer;

a,da,z,q: double;

sd: array of integer;

begin

a:=5;

da:=-0.5;

k:=0;

q:=sqr(a) - a;

while(q > 0) do

begin

z:= q + 1/(q+1);

k:= k + 1;

a:= a + da;

q:=sqr(a) - a;

end;

writeln('a = ', a:0:5);

writeln('q = ', q:0:5);

writeln('Z = ', z:0:5);

writeln('k = ', k);

readln;

end.

Задача 8. Решить в excel.

Названиеучебногоцентра

Количество неаттестованных учащихся

2001

2002

2003

2004

2005

2006

Softline

14

32

31

26

12

40

Интерком

12

24

32

15

18

20

Найти:

    1. Общее число неаттестованных учащихся за каждый год.
    2. Среднее число неаттестованных учащихся за каждый год по каждому учебному центру.
    3. Учебный центр, в котором наибольшее количество неаттестованных учащихся (за год).
    4. Построить гистограмму неаттестации за каждый год.

1 этап: ввод исходных данных в MS Excel.

Рисунок 1- Ввод данных

2 этап: вычисления.

При выполнении данного задания используются следующие функции:

1. Математические:

СУММ - сумма аргументов

2. Статистические:

  1. СРЗНАЧ - среднее арифметическое аргументов
  2. МАКС - максимальное значение из списка аргументов
  3. МИН - минимальное значение из списка аргументов

Рисунок 2 – Результаты

Рисунок 2.1 – Результаты

Этап 3:Построение гистограммы. Выделяем таблицу, выполняем команду Вставка – Гистограмма и выбираем простую гистограмму.

Результат показан на рисунке

Рисунок 2.2- Гистограмма

Задание 9. Построить график функции f(x) в Excel.

    1. ,
  1. Определение функции f(x). Для этого в ячейки B2:B19 вводим значение аргумента при помощи автозаполнения, в данном случае с шагом 0,1. В ячейку С3 вводится значение функции, вычисляемое по формуле = 4*B3^3+3*B3^2-8*B3-2/2-3*B3^2. Ячейки С4:С19 заполняются копированием формулы из ячейки С3.
  2. Построение графика: выделяем диапазон В2:С19, вызываем «Мастер диаграмм». Для построения графика функции лучше выбрать точечную диаграмму, со значениями, соединенными сглаживающими линиями без маркеров. Чтобы график получился выразительным, можно определить промежуток изменения аргумента, увеличить толщину линий, выделить оси координат, нанести на них соответствующие деления, сделать подписи на осях и вывести заголовок.

Рисунок 3 - Построение графика функции

Аналогично делаем для задания б. Разница только в том, что в одной координатной плоскости будет два графика.

Рисунок 3.1 - Построение графика функции

Заключение

Изобретение языка программирования высшего уровня позволило нам общаться с машиной, понимать её, как понимает американец немного знакомый с русским языком древнюю азбуку Кириллицы. Проще говоря, мы в нашем развитии науки программирования пока что с ЭВМ на ВЫ. Но если мы обратим внимание на темпы роста и развития новейших технологий в области программирования, то можно предположить, что в ближайшем будущем, человеческие познания в этой сфере, помогут произвести на свет языки, умеющие принимать, обрабатывать и передавать информации в виде мысли, слова, звука или жеста. Так и хочется назвать это детище компьютеризированного будущего: «языки программирования «высочайшего» уровня». Возможно, концепция решения этого вопроса проста, а ближайшее будущее этого проекта уже не за горами.