Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Уфимский государственный нефтяной техническийСтр 1 из 3Следующая ⇒
УФИМСКИЙ ГОСУДАРСТВЕННЫЙ НЕФТЯНОЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра вычислительной техники и инженерной кибернетики
УЧЕБНО-МЕТОДИЧЕСКОЕ ПОСОБИЕ К выполнению заданий по информатике “Обработка массивов данных”
УФА 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. Обработка одномерных массивов Постановка задачи
Алгоритм основной программы
Таблица переменных
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.
Алгоритмы подпрограмм
Получение элементов вектора
Алгоритм процедуры vector
n, a, b f[i..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; Таблица переменных
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}
Таблица переменных
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]
да
Нет нет
да да
Таблица переменных
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]
нет
да
Таблица результатов
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], полученных при помощи генератора случайных чисел
---------------------------------Часть 2------------------------------
Сумма положительных элементов третьей четверти вектора
s=40
---------------------------------Часть 3------------------------------
Наибольший элемент второй трети среди нечетных по номеру
mх=7
---------------------------------Часть 4------------------------------
Вектор F с упорядоченными по убыванию квадратов значений нечетными по номеру элементами второй половины
-----------------------------Конец задачи---------------------------
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. Алгоритм основной программы
Таблица переменных
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. Получение матрицы.
Алгоритм процедуры matrica
Таблица переменных.
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 = Таблица переменных
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=
1) ;
2) U=A - E ;
3) V=A-E ;
4) C=U.V ;
5) ; 6) . Таблица переменных
Алгоритм процедуры matoper n, a[1..n,1..n], x[1..n]
нет
да
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-12-15; просмотров: 243; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.226.141.207 (0.369 с.) |