Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


УФИМСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЯНОЙ ТЕХНИЧЕСКИЙ



УФИМСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЯНОЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ

 

Кафедра вычислительной техники и инженерной кибернетики

 

 

УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ

К выполнению заданий по информатике

“Обработка массивов данных”

 

 

УФА 2000

 

Учебно-методическое пособие содержит требования к выполнению заданий по информатике, включающих решение задач на ЭВМ по обработке массивов данных с использованием функций и процедур. Приведены образцы выполнения двух заданий, содержащих задачи по обработке одномерных (4задачи) и двумерных (5 задач) массивов.

Пособие предназначено для студентов всех специальностей и может быть использовано при выполнении домашних, курсовых и контрольных (для заочников) работ.

 

Составитель Хоробров В.Р., доц., канд. техн. наук

 

 

Рецензент Давыдов А.Ф., доц.

 

 

© Уфимский государственный нефтяной технический университет, 2000


Введение

 

При изучении курса информатики в части освоения основ алгоритмизации и программирования студенты выполняют самостоятельные работы (домашние задания, курсовые и контрольные работы) по решению задач, содержащих обработку массивов данных.

Варианты заданий представлены в сборнике [1], содержащем по 1000 вариантов задач по темам “Обработка одномерных массивов” и “Обработка двумерных массивов”. Индивидуальное задание и номер варианта (трехзначное число из диапазона от 000 до 999) определяются преподавателем. Язык программирования также определяется преподавателем, в большинстве случаев таким языком является Турбо-Паскаль. Краткое описание языка приведено в методических указаниях [2], а более полное – в книгах [3], [4].

При разработке программ рекомендуется использовать модульный принцип: программа состоит из основной (головной) программы и подпрограмм (процедур и функций). Алгоритм основной программы содержит обращения к алгоритмам подпрограмм и алгоритмам вывода результатов решения. Алгоритмы подпрограмм разрабатываются для отдельных частей задания.

 

Состав работы

 

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

 

Задание 1 “Обработка одномерных массивов” включает 4 задачи.

1. Получение элементов массива с использованием генератора случайных чисел;

2. Вычисление параметра массива: значения суммы, произведения, среднеарифметического, среднеквадратичного, среднегеометрического или среднегармонического из элементов массива;

3. Определение параметра массива: наибольшего или наименьшего по значению (модулю), два наибольших или наименьших, близкое по модулю к заданному числу среди различных элементов указанной части массива;

4. Упорядочение элементов массива: расположение элементов (четных или нечетных, по номеру или значению, положительных или отрицательных, каждых вторых, третьих, ненулевых, принадлежащих отрезку) указанной части массива (первой половины, второй трети и т.д.) по возрастанию или убыванию значений, модулей значений, квадратов значений и т.д.).

 

 

Задание 2 “Обработка двумерных массивов” включает 5 задач.

1. Получение квадратной матрицы по формуле;

2. Получение вектора: элементы вектора вычисляются из элементов строки или столбца матрицы;

3. Выполнение матричной операции, содержащей произведение трех операндов, каждый из которых представлен матрицей, вектором или скаляром.

4. Упорядочение элементов матрицы по заданному критерию;

5. Вычисление параметра массива: значения суммы двух слагаемых, представленных комбинацией сумм, произведений, факториалов, максимумов, минимумов.

 

Для выполнения заданий (задания независимы друг от друга) рекомендуется следующий порядок работы. Вначале разрабатывается алгоритм основной программы а затем – алгоритмы подпрограмм.

Описание отдельного алгоритма включает:

· постановку задачи;

· математическую формулировку (только для частей 2, 3 заданий);

· блок-схему алгоритма;

· таблицу переменных, определяющую состав и типы переменных алгоритма и программы;

· блок программы, реализующий описываемый алгоритм (не обязательно, т.к. он будет включен в текст всей паскаль-программы).

Затем разработанные модули вставляются в программу и записывается полный текст программы.

Программа вводится в компьютер и отлаживается для входного значения n=2 или n=3. Полученные результаты сравниваются с предварительно просчитанными вручную (с помощью калькулятора) и делается вывод о ее (программы) работоспособности.

Если тестирование прошло успешно, получают решение задачи при заданном преподавателем значении n (по умолчанию n=6).

Далее программу и результаты решения распечатывать на принтере. Распечатка может быть выполнена как на отдельных листах, так и рулоне.

И, наконец, оформляется отчет в соответствии с изложенными ниже требованиями.

 

 

2. Требования к оформлению отчета

 

Отчет должен иметь следующую структуру:

Титульный лист

Содержание(оглавление)

1. Наименование задания 1

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

1.2. Блок-схема алгоритма

1.3. Программа на языке Паскаль

1.4. Результаты решения

2. Наименование задания 2

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

--------------------------------------------

--------------------------------------------

5.4 Результаты решения

Список использованной литературы

 

Отчет выполняется на листах формата А4 (210× 297). Допускается, использование листов в клетку. Листы отчета должны быть пронумерованы, начиная со следующего после титульного листа. Номер листа проставляется в середине верхней его части. Желательно (но не обязательно) оформлять отчет в печатном виде с использованием редактора WORD.

Титульный лист оформляется в соответствии с приложением 1.

Содержание (оглавление) отчета включает все выделенные в тексте заголовки частей и разделов с указанием номеров страниц, включая список литературы.

Блок-схемы алгоритмов выполняются в соответствии с ГОСТ 19.001-80 и 19.003-80. В приложении 2 приведены требования к оформлению блок-схем алгоритмов.

Программа на Паскале должна соответствовать блок-схеме алгоритма.

Программа и результаты расчета представляются в распечатанном на принтере виде на отдельных листах или в сложенном по формату А4 виде.

В помощь студенту ниже приведены образцы выполнения работ для задания 1 и задания 2.

 


 

Задание 1. Обработка одномерных массивов

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

 

Часть 1. Вычислить значения 30 элементов одномерного целочисленного массива F в интервале (-7, 8) с использованием генератора случайных чисел.

Алгоритм основной программы

 
 

 

 


 

                           
   
 
   
 
vector (n, a, b, f)
 
 
 
 
   
  s=sum(n, f)
 
   
 
   
 
   
  mx=max(n, f)
 
   
     
 

 

 


           
   
   
 
porjadok (n, f)
 
 

 

 


Таблица переменных

 

Имя Тип Назначение Параметр
n     целый размерность     глобальный
a, b интервал
f[1..n] вектор
s сумма
mx максимум

 

begin

clrscr;

write('Введите размерность вектора'); readln(n);

write('Интервал значений от '); read(a);

write('до '); readln(b);

writeln; writeln(' ': 25, ’Исходные данные’);

writeln('Размерность вектора n = ', n);

writeln('Интервал [', a, ', ', b, ']'); writeln;

writeln(' ': 26, 'Результаты расчета');

randomize;

writeln('-----------------Часть 1---------------------');

writeln(‘Вектор F из ‘, n, ’ элементов в интервале [‘, a, ’, ’, b, ’], полученных’);

writeln(‘при помощи генератора случайных чисел’);

vector(n, a, b, f);

writevect(n, 4, f);

writeln('-----------------Часть 2---------------------');

writeln('Сумма положительных элементов третьей четверти вектора');

s: =sum(n, f); writeln(‘ s=’, s);

writeln('-----------------Часть 3---------------------');

writeln('Наибольший элемент второй трети среди нечетных по номеру');

writevect(n, 3, f);

mx: =max(n, f); writeln(‘ mx=’, mx);

writeln('-----------------Часть 4---------------------');

writeln(‘Вектор F с упорядоченными по убыванию квадратов значений’);

writeln(‘нечетными по номеру элементами второй половины’);

porjadok(n, f);

writevect(n, 2, f);

writeln('---------------Конец задачи----------------');

end.

 

Алгоритмы подпрограмм

 

Получение элементов вектора

 
 
Вычислить значения 30 элементов одномерного целочисленного массива F в интервале (-7, 8) с использованием генератора случайных чисел

 


Алгоритм процедуры vector

 

       
 
   
 


n, a, b

 
 


f[i..n]

Таблица переменных

Имя Тип Назначение Параметр
n     целый размерность формальный
i параметр цикла локальный
a, b интервал формальный
f[1..n] вектор

 

procedure vector(n, a, b: integer; var f: vect);

var i: integer;

begin

for i: =1 to n do f[i]: =round((b-a)*random(100)/100+a);

end;

Таблица переменных

 

Имя Тип Назначение Параметр
n     целый размерность формальный
f[1..n] вектор
i параметр цикла локальный
s вспомогательное
sum имя функции  

function sum(n: integer; f: vect): integer;

var i, s: integer;

begin

s: =0;

for i: =round(n/2)+1 to round(3*n/4) do if f[i] > 0 then s: =s+f[i];

sum: =s;

end; {sum}

 

Таблица переменных

Имя Тип Назначение Параметр
n целый размерность формальный
f[1..n] вещественный вектор
i   целый параметр цикла   локальный
mx вспомогательное
max имя функции  

function max(n: integer; f: vect): integer;

var i, mx: integer;

begin

mx: =-1000;

for i: =round(n/3)+1 to round(2*n/3) do

if odd(i) then if f[i] > mx then mx: =f[i];

max: =mx;

end{max};

4.2.3.4. Упорядочение элементов вектора

 
 
Упорядочить нечетные по номеру элементы второй половины массива по убыванию квадратов значений

 

 


Алгоритм процедуры porjadok

       
 
   
 


n, f[1..n]

 
 

 


       
   
 
 


нет f[1..n]

 

да

       
   
 
 

 

 


 
 

 


Нет нет

           
 
   
 
   
 

 


да да

 
 
c=fi fi=fk fk=c


k=j
нет да

       
   
 
 

 


Таблица переменных

Имя Тип Назначение Параметр
N   целый размерность формальный
f[1..n] вектор
i, j параметр цикла локальный
k, c вспомогательное

 

 

procedure porjadok(n: integer; var f: vect);

var i, k, j, c: integer;

begin

for i: =round(n/2)+1 to n-1 do

if odd(i) then

begin k: =i;

for j: =i+2 to n do

if odd(j) then if sqr(f[j]) > sqr(f[k]) then k: =j;

if i < > k then

begin

c: =f[i];

f[i]: =f[k];

f[k]: =c;

end;

end;

end {porjadok};

 

4.2.3.5. Вывод информации

 

Алгоритм процедуры writevect

 
 


n, k, f [1..n]

 
 

 

 


 

 

нет

       
   
 
 

 


да

       
   
 
 

 


Таблица результатов

Имя Тип Назначение Параметр
n   целый размерность формальный
f[1..n] вектор
i параметр цикла локальный
k кол-во строк

 

procedure writevect(n, k: integer; f: vect);

var i: integer;

begin

for i: =1 to n do

begin

write(f[i]: 5); if i mod round(n/k)=0 then writeln;

end;

writeln;

end {writevect};

 

Паскаль-программа

 

program kurslab1; {Хасанов А. А. ст.гр. АГ 98-02 вар. 111}

uses crt;

type vect=array[1..99] of integer;

var f: vect; n, a, b, s, mx: integer;

 

{-----------Часть 1--------------}

procedure vector(n, a, b: integer; var f: vect);

var i: integer;

begin

for i: =1 to n do f[i]: =round((b-a)*random(100)/100+a);

end;

 

{-----------Часть 2--------------}

function sum(n: integer; f: vect): integer;

var i, s: integer;

begin

s: =0;

for i: =round(n/2)+1 to round(3*n/4) do

if f[i] > 0 then s: =s+f[i];

sum: =s;

end;

 

 

{-----------Часть 3-------------}

function max(n: integer; f: vect): integer;

var i, mx: integer;

 

begin

mx: =-1000;

for i: =round(n/3)+1 to round(2*n/3) do

if odd(i) then

if f[i] > mx then mx: =f[i];

max: =mx;

end;

 

{-----------Часть 4----------------}

procedure porjadok(n: integer; var f: vect);

var k, j, c: integer;

begin

for i: =round(n/2)+1 to n-1 do

if odd(i) then

begin k: =i;

for j: =i+2 to n do

if odd(j) then

if sqr(f[j]) > sqr(f[k]) then k: =j;

if i < > k then

begin

c: =f[i];

f[i]: =f[k];

f[k]: =c;

end;

end;

end;

 

{--------Вывод вектора--------------}

procedure writevect(n, k: integer; f: vect);

var i: integer;

begin

for i: =1 to n do

begin

write(f[i]: 5); if i mod round(n/k)=0 then

writeln;

end;

if n mod k < > 0 then writeln;

end;

 

{----------Основная программа-----}

begin

clrscr;

write('Введите размерность вектора '); readln(n);

write('Интервал значений от '); read(a);

write('до '); readln(b);

writeln; writeln(' ': 25, ’Исходные данные’);

writeln('Размерность вектора n = ', n);

writeln('Интервал [', a, ', ', b, ']'); writeln;

writeln(' ': 26, 'Результаты расчета');

randomize;

vector(n, a, b, f);

writeln('--------------------Часть 1---------------------------');

writeln(‘Вектор F из ‘, n, ’ элементов в интервале [‘, a, ’, ’, b, ’], полученных’);

writeln(‘при помощи генератора случайных чисел’);

writevect(n, 4, f);

writeln('--------------------Часть 2---------------------------');

writeln('Сумма положительных элементов третьей четверти вектора');

s: =sum(n, f); writeln(‘ s=’, s);

writeln('--------------------Часть 3---------------------------');

writeln('Наибольший элемент второй трети среди нечетных по номеру');

writevect(n, 3, f);

mx: =max(n, f); writeln(‘ mx=’, mx);

writeln('--------------------Часть 4---------------------------');

writeln(‘Вектор F с упорядоченными по убыванию квадратов значений’);

writeln(‘нечетными по номеру элементами второй половины’);

porjadok(n, f);

writeln('Упорядоченный вектор F’);

writevect(n, 2, f);

writeln('----------------Конец задачи-----------------------');

end.

 

3.4. Распечатка результатов

 

Исходные данные

 

Размерность вектора n = 30

Интервал [-7, 8]

Результаты расчета

 

--------------------------------Часть 1-------------------------------

 

Вектор F из 30 элементов в интервале [-7, 8], полученных

при помощи генератора случайных чисел

 

-6 -6 -4
-4 -4 -6
-6
-3 -2 -2    

 

---------------------------------Часть 2------------------------------

 

Сумма положительных элементов третьей четверти вектора

 

s=40

 

---------------------------------Часть 3------------------------------

 

Наибольший элемент второй трети среди нечетных по номеру

 

-6 -6 -4 -4 -4
-6
-6 -3 -2 -2

 

mх=7

 

---------------------------------Часть 4------------------------------

 

Вектор F с упорядоченными по убыванию квадратов значений нечетными по номеру элементами второй половины

 

-6 -6 -4 -4 -4 -6
-6 -3 -2 -2

 

-----------------------------Конец задачи---------------------------

 

 

4. Задание 2. Обработка двумерных массивов.

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

Часть 1. Вычислить элементы матрицы А по формуле

 

, i, , где

; ; .

Часть 2. Используя известную матрицу А, вычислить вектор ( ) как

наибольший среди принадлежащих отрезку [-10, 10] элементов i-го

столбца.

Часть 3. Вычислить Z= ,

где , - вектор;

, , - квадратная матрица;

, - единичная матрица;

– транспонированная матрица , , ;

– инвенторованный вектор , .

 

Часть 4. Упорядочить по убыванию положительные элементы последнего

столбца матрицы А.

 

Часть 5. Вычислить значение функции

4.2. Алгоритм решения.

4.2.1. Структура алгоритма.

Алгоритм состоит из основного алгоритма (для основной программы) и вспомогательных алгоритмов (для подпрограмм):

- вычисление матрицы – процедура matrica (n, a);

- вычисление вектора – процедура vector (n, a, x);

- матричные операции – процедура matoper (n, x, a, z);

- сортировка массива – процедура porjadok (n, a, b);

- вычисление значение функции - функция – znachf (n, a, x),

где n – размерность матрицы, вектора (вводится в начале);

A, B, Z– квадратные матрицы размерности n;

X – вектор из n элементов.

 

Кроме того используются процедуры вывода:

- матрицы - writmatr ( ’A’, n, a);

- вектора - writvect ( ’X’, n, x);

‘A’, ‘X’ – имена соответственно матрицы A, вектора X.

 

4.2.2. Алгоритм основной программы

 

 

 

 

 


Таблица переменных

 

Имя Тип Назначение Параметр
n целый размерность глобальный
a[1..n, 1..n]   вещественный матрица
x[1..n] вектор
z[1..n, 1..n] матрица
y скаляр
simbol символьный символ
namber целый номер
b[1..n, 1..n] вещественный матрица

begin{Основная программа}

clrscr;

write(' Введите размерность матрица n '); readln(n);

writeln(' ': 25, 'Исходные данные');

writeln('размерность матрицы n=', n);

writeln(' ': 20, 'результаты расчетов');

writeln('------------------ часть 1--------------------------');

writeln('Вычислить элементы матрицы А по формуле');

matrica(n, a); writmatr('А', n, a);

writeln('------------------- часть 2--------------------------');

writeln('Из матрицы А получить вектор Х, ');

writeln('элемент которого х[i] определяется как наибольший ');

writeln('среди принадлежащих отрезку [-10, 10] ');

writeln('элементов i-го столбца. ');

vector(n, a, x); writevect('X', n, x);

writeln('------------------- часть 3--------------------------');

writeln(' ': 7, 'Вычислить Z=(At-E)(A-E)(X-Xи)');

matoper(n, a, x, z);

write('Результат: ');

writmatr('Z', n, z);

writeln('------------------- часть 4--------------------------');

writeln('Упорядочить по убыванию положительные элементы');

writeln('последнего столбца мартицы А');

porjadok(n, a, b);

writmatr('B', n, b);

writeln('-------------------- часть 5------------------------ ');

writeln('Вычислить значение функции y=y1+y2');

y: =znachf(n, a, x); writeln('y=', y: 6: 3);

writeln('------------------конец задачи---------------------');

end.

 

4.2.3. Алгоритмы подпрограмм.

 

4.2.3.1. Получение матрицы.

 
 
Вычислить матрицу А по формуле , i, , где ; ; .

 

 


Алгоритм процедуры matrica

   
 
 
 

 

 


Таблица переменных.

 

Имя Тип Название Параметр
n   целый размерность матрицы формальный
a[1..n, 1..n]   вещественный матрица
i, j   целый параметр цикла локальный

 

procedure matrica(n: integer; var a: matr);

var i, j: integer; f1, f2, f3: real;

begin

for i: =1 to n do

for j: =1 to n do

begin

f1: =cos(pi*(8.25+(i+j)/2))/sin(pi*(8.25+(i+j)/2));

f2: =pi*i*(1+i/j);

f3: =ln(sqr(n)-i/j+1)/ln(2);

a[i, j]: =f1/f2*f3;

end;

end{matrica};

4.2.3.2. Получение вектора.

 

Используя известную матрицу А, вычислить вектор X, если xi(i=1, 2..n) вычисляется как наибольший среди принадлежащих отрезку [-10, 10] элементов i-го столбца матрицы.

Математическая формулировка задачи

, , i=

Таблица переменных

 

Имя Тип Назначение Параметр
n целый размерность вектора формальный
i, j параметр цикла локальный
m   вещественный вспомогательный
a[1..n, 1..n] матрица формальный
x[1..n] вектор

 

 

n, a[1..n, 1..n]
Алгоритм процедуры vector

 
 

нет

 


да

m=

 

 


m

 

 


нет

 


да

 

 


procedure vector(n: integer; a: matr; var x: vect);

var i, j: integer; m: real;

begin

for i: =1 to n do

begin

m: =-exp(30);

for j: =1 to n do

if abs(a[j, i])< =10 then if a[j, i]> m then m: =a[j, i];

x[i]: =m;

end;

end{vector};

 

4.2.3.3. Матричные операции.

 

Выполнить матричную операцию Z=

 

Х – вектор - инвентированный вектор А - матрица - транспонированная матрица Е – единичная матрица Z – матрица – результат    
Математическая формулировка задачи

 

1) ;

 

2) U=A - E ;

 

3) V=A-E ;

 

4) C=U.V ;

 

5) ;

6) .

Таблица переменных

 

Имя Тип Назначение Параметр
n целый размерность формальный
a[1..n, 1..n] вещественный матрица   вектор
z[1..n, 1..n] х[1..n]
i, k, j целый параметр цикла локальный
s вещественный вспомогательный скаляр
y
b[1..n, 1..n] матрица
u[1..n, 1..n]
v[1..n, 1..n]
c[1..n, 1..n]

 

Алгоритм процедуры matoper

       
 
   
 


n, a[1..n, 1..n], x[1..n]

 

 
 


               
   
   
   
 
 
 


  y=0

       
   
 
 


       
   
 
 


 

s=0
=

       
 
   
 


 

                   
   
 
         
y=y +
 
 
 


 

       
   
 
 

нет

               
   
   
 
 
   
 
 

 


да


Поделиться:



Популярное:

  1. Бюджетный дефицит и государственный долг
  2. В электронной форме на право заключить государственный контракт на оказание услуг по организации и проведению заседаний рабочих групп ЧЭС и семинаров ЧЭС для нужд Минэкономразвития России в 2016 году
  3. Воздействие на нефтяной пласт теплом. Паротепловое воздействие и воздействие горячей водой.
  4. Вопрос 30 Государственный сектор экономики. Сфера распространения. Основные виды государственных предприятий.
  5. Вопрос 8. Государственный бюджет
  6. Глава 3. Складывание единого централизованного Российского государства в XIV-XVI вв. Государственный аппарат сословно-представительной монархии
  7. Глава 5. Российская империя. Государственный аппарат в первой четверти XVIII в.
  8. Глава 6. ГОСУДАРСТВЕННЫЙ БЮДЖЕТ И ГОСУДАРСТВЕННЫЙ ДОЛГ
  9. Гомельский государственный медицинский институт
  10. ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
  11. ГОСТ 7.83-2001 МЕЖГОСУДАРСТВЕННЫЙ СТАНДАРТ
  12. Государственный (муниципальный) социальный заказ в Амурской области.


Последнее изменение этой страницы: 2016-06-04; Просмотров: 406; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.297 с.)
Главная | Случайная страница | Обратная связь