Файл: Основные структуры алгоритмов: сравнительный анализ и примеры их использования (Теоретическая часть).pdf
Добавлен: 29.03.2023
Просмотров: 299
Скачиваний: 2
Writeln;
until false;
end.
Задача 3.Дано действительное число а. Вычислить f(a), если
Постановка задачи.
Входные данные – значение а, а так же функция f(x).
Выходные данные – значение функции f(a).
Цель реализации алгоритма: ввести значение а, вычислить значение f(a), при известной функции f(x).
Исходя из анализа этапа постановки задачи и математического метода решения из условия, мы приходим к выводу, что решение этой задачи будем производить с помощью ветвящегося алгоритма т. к. в решении данной задачи есть одно условие соответствующее ветвящемуся алгоритмическому процессу.
Словесное описание алгоритма:
Начало
- Читаем а
- Проверяем условие-2<=a<=2
- Если верно, то 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,вычислить среднее арифметическое каждой из строк.
Исходя из анализа этапа постановки задачи и математического метода решения из условия, мы приходим к выводу, что решение этой задачи будем производить с помощью циклического алгоритма.
Словесное описание алгоритма:
Начало
- Читаем n
- Создаем динамический массив размерностьюnx9
- В цикле поочередно считываем с экрана его элементы
- В цикле считаем сумму элементов в строке и делим ее на 9
- Выводим полученный ответ на экран
Конец
Текстпрограммы
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, для этого будем использовать массив.
Исходя из анализа этапа постановки задачи и математического метода решения из условия, мы приходим к выводу, что решение этой задачи будем производить с помощью циклического алгоритма.
Словесное описание алгоритма:
Начало
- Читаем n
- Создаем динамический массив размерностью nxn
- В цикле заполняем значениями его элементы:
Если номер строки и номер столбца совпадают, то 1
Иначе 0.
- Выводим массив на экран.
Конец
Текстпрограммы
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.
Исходя из анализа этапа постановки задачи и математического метода решения из условия, мы приходим к выводу, что решение этой задачи будем производить с помощью ветвящегося алгоритма.
Словесное описание алгоритма:
Начало
- Читаем Xn, Xk, dx, a
- x = Xn
- Пока x <= Xk делаем:
- Вычисляем z
- Если z>=0 то добавляем его в сумму положительных z
Иначе в произведение отрицательных
- Добавляем z в общую сумму
- Увеличиваем на 1 количество посчитанных z
- x = x + dx
- F =произведение отрицательных z + сумма положительных z
- Выводим полученные значения на экран
Конец
Текст программы
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.
Исходя из анализа этапа постановки задачи и математического метода решения из условия, мы приходим к выводу, что решение этой задачи будем производить с помощью линейного алгоритма.
Словесное описание алгоритма:
Начало
- A = 5, da = -0.5
- q = a^2 – a
- пока q > 0 делать
- z = q + 1/(q+1)
- увеличиваем К (кол-во вычислений) на 1
- a = a + da
- q = a^2- a
- выводим на экран 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 этап: ввод исходных данных в MS Excel.
Рисунок 1- Ввод данных
2 этап: вычисления.
При выполнении данного задания используются следующие функции:
1. Математические:
СУММ - сумма аргументов
2. Статистические:
- СРЗНАЧ - среднее арифметическое аргументов
- МАКС - максимальное значение из списка аргументов
- МИН - минимальное значение из списка аргументов
Рисунок 2 – Результаты
Рисунок 2.1 – Результаты
Этап 3:Построение гистограммы. Выделяем таблицу, выполняем команду Вставка – Гистограмма и выбираем простую гистограмму.
Результат показан на рисунке
Рисунок 2.2- Гистограмма
Задание 9. Построить график функции f(x) в Excel.
-
- ,
- Определение функции f(x). Для этого в ячейки B2:B19 вводим значение аргумента при помощи автозаполнения, в данном случае с шагом 0,1. В ячейку С3 вводится значение функции, вычисляемое по формуле = 4*B3^3+3*B3^2-8*B3-2/2-3*B3^2. Ячейки С4:С19 заполняются копированием формулы из ячейки С3.
- Построение графика: выделяем диапазон В2:С19, вызываем «Мастер диаграмм». Для построения графика функции лучше выбрать точечную диаграмму, со значениями, соединенными сглаживающими линиями без маркеров. Чтобы график получился выразительным, можно определить промежуток изменения аргумента, увеличить толщину линий, выделить оси координат, нанести на них соответствующие деления, сделать подписи на осях и вывести заголовок.
Рисунок 3 - Построение графика функции
Аналогично делаем для задания б. Разница только в том, что в одной координатной плоскости будет два графика.
Рисунок 3.1 - Построение графика функции
Заключение
Изобретение языка программирования высшего уровня позволило нам общаться с машиной, понимать её, как понимает американец немного знакомый с русским языком древнюю азбуку Кириллицы. Проще говоря, мы в нашем развитии науки программирования пока что с ЭВМ на ВЫ. Но если мы обратим внимание на темпы роста и развития новейших технологий в области программирования, то можно предположить, что в ближайшем будущем, человеческие познания в этой сфере, помогут произвести на свет языки, умеющие принимать, обрабатывать и передавать информации в виде мысли, слова, звука или жеста. Так и хочется назвать это детище компьютеризированного будущего: «языки программирования «высочайшего» уровня». Возможно, концепция решения этого вопроса проста, а ближайшее будущее этого проекта уже не за горами.