У вас вопросы?
У нас ответы:) SamZan.net

На тему- Создание библиотек подпрограмм для обработки массивов Выполнила- Студентка 1го курса Г

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 28.12.2024

Министерство транспорта и связи Украины

ОДЕССКАЯ НАЦИОНАЛЬНАЯ АКАДЕМИЯ СВЯЗИ им. А.С. ПОПОВА

Кафедра информационных технологий

Курсовая работа

По дисциплине: Информатика

На тему: «Создание библиотек подпрограмм для обработки массивов»

Выполнила: Студентка 1-го курса

Группы ПЗ 1.20

Соловова Татьяна Вячеславовна

Проверила: доцент кафедры

Информационных технологий

Буката Людмила Николаевна

________

2013 год

Содержание:

  1.  Краткие теоретические сведения……………………………………………………3
  2.  Индивидуальное задание…………………………………………………………….7
  3.  Схемы алгоритмов…………………………………………………………………….8
  4.  Окна форм……………………………………………………………………………..14
  5.  Тексты программ……………………………………………………………………...17
  6.  Результаты вычислений

Анализ полученных результатов…………………………………………………..23

  1.  Список  литературы………………………………………………………………….24


  1.  Краткие теоретические сведения

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

Каждый элемент массива однозначно можно определить по имени массива и индексами. Имя массива подбирают по тем правилам что и для переменных. Индексы определяют местонахождение элемента в массиве. Например, элементы вектора имеют один индекс - номер по порядку; элементы матриц и таблиц имеют по два индекса: первый означает номер строки, второй - номер столбца. Количество индексов определяет размерность массива. Например, векторы в программах - это одномерные массивы, а матрицы - двумерные.

• Одномерный массив – это последовательность элементов одного и того же типа. Массив должен быть объявлен в программе следующим образом:

<Тип>    <имя> [размер];

Выводить значения одномерного массива можно в файл или на форму используя различные компоненты С + +,  в Memo,Edit:

Memo1->Lines->Add(FormatFloat(«0.00»,A[i]));

Edit1->Text=Edit1->Text+FormatFloat(«0.00»,A[i])+ « »;

А так  же с помощью компонента  Memo можно вводить массивы:

A[i]=StrToFloat(Memo1->Lines->Strings[i]);

•Двумерные массивы как и одномерные массивы должны быть объявлены в программе. Сначало указать тип элементов массива, затем указать имя массива и указать его размерность:

<Тип>    <имя> [размер][размер2];

Для ввода и вывода элементов матрицы в С++ существует компонент StringGrid , который находится на странице Additional

Фиксированная строка

Компонент представит собой таблицу размерностью 5х5. Каждая ячейка имеет свой адрес.

Фиксированные столбцы

Свойства компонента  StringGrid, которые создаются по умолчанию в окне ObjectInspector:

  1.  ColCount → 5 (количество столбцов)
  2.  PowCount→5(количество строк)
  3.  FixedCol→1(фиксированный столбец)
  4.  FixedRow→1(фиксированная строка)

Эти свойства можно изменить, если размер матрицы будет другой.

Для ввода элементов и редактирования матрицы необходимо установить дополнительные свойства:

Вывод элементов двумерных массивов.
Осуществлять вывод значений элементов массива можно только поэлементно, для чего следует организовывать циклы, в которых последовательно меняються значения индексов элементов.
Выводиться матрица будет через компоненты
Memo,StringGrid:

Memo1->Lines->Add->IntToStrA[i][j]»);

StringGrid1->Cells[j][i]=IntToStr(A[i][j]);

А так же с помощью компонента StringGrid можно вводить массивы:

A[i][j]=StrToInt(StringGrid1->Cells[j][i]);

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

Для того чтобы создать библиотеку необходимо:

FileNewUnit

Для подключения библиотеки Unit2 к основному модулю Unit1 необходимо выполнить команду Include Unit Hdr: и нажать ОК

Unit2.cpp называется файл реализации.

Unit2.h – это заголовочный файл.

Разумеется Unit1 – основной модуль.

  1.  Индивидуальное задание

Вариант 20

Условие:

  1.  Сформировать двумерный массив А, элементы которого вычисляются по заданной формуле:

где i=0,...,5; j=0,…,5;

  1.  Сформировать одномерный массив Х, элементы которого вычисляются по заданному алгоритму:

x – столбец из квадратов наименьших элементов строк матрицы а.

  1.  Вычислить значение функции G, которая зависит от элементов вектора Х.


  1.  Схемы алгоритмов

Для Unit1.cpp

Вход

Рис.1

Схема вычисления программы для матрицы(mat_ric)

a[i][j]

j=0,5

Выход

i=0,5

elem_matr(a)


Вход

Выход

b[i]

j=0,5

i=0,5

elem_vectora(a,b)

Рис.2

Схема вычисления программы для вектора(vec_tor)


Вход

G=fun_G1(b)

Рис.3

Схема вычисления программы для функции(fun_G)

Выход

G


Для Unit2.cpp

Вход

Выход

a[i][j]=(pow(3,i)+i*j+0.5)/(4+j+i)*sin(j+i)

j=0,5

i=0,5

Рис.4

Схема подпрограммы для вычисления элементов матрицы(elem_matr)

Рис.5

Схема подпрограммы для вычисления элементов вектора(elem_vectora)

Выход

b[i]=S*S

a[i][j]<S

S=a[i][j]

j=0,5

S=a[i][0]

i=0,5

Вход


Вход

S=1

Рис.6

Схема подпрограммы для вычисления функции (fun_G1)

Выход

G=log(S)-log(S1)

S1+=(b[i])

S*=1+|b[i]|

j=0,5

i=0,5

S1=0


  1.  Окна форм

Рис. 7

Form1

Рис. 8

Form 3 (AboutBox)

Рис. 9

Form 4

Рис. 10

Form 5

Рис. 11

Form 6 (Заставка)


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

Для Unit1.cpp //основной модуль

#include «Unit2.h» // подслючаем библиотеку

TForm*Form1;

matr a; vect b;// объявляем глобальные переменные

//---------------------------------------------------------------------------

void __fastcall TForm1::mat_ricClick(TObject *Sender) //текст программы для пункта SG1(вычисления матрицы)

{elem_matr(a);//вызов подпрограммы для вычисления матрицы

for(i=0;i<5;i++)//цикл по строкам

for(j=0;j<5;j++)//цикл по столбцам

StringGrid1->Cells[j][i]=FormatFloat("0.00",a[i][j]);//вывод результатов в SG1

StringGrid1->Visible=true;

Label1->Visible=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::vec_torClick(TObject *Sender) //текст программы для пункта SG2(вычисления вектора)

{elem_vectora(a,b);//вызов подпрограммы для вычисления вектора

for(i=0;i<5;i++)//цикл по строкам

for(j=0;j<5;j++)//цикл по столбцам

StringGrid2->Cells[i][0]=FormatFloat("0.00",b[i]);//вывод результатов в SG2

StringGrid2->Visible=true;

Label2->Visible=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::fun_GClick(TObject *Sender)//текст программы для пункта Edit1(значение функции)

{float G=fun_G1(b);//вызов подпрограммы для вычисления функции

Edit1->Text=FormatFloat("0.000",G);// вывод результатов в Edit1

Edit1->Visible=true;

Label3->Visible=true;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::av_torClick(TObject *Sender)

{

AboutBox->ShowModal();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ex_itClick(TObject *Sender)

{int r;

r=MessageDlg("Вы уверены что хотите выйти?",

mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo,0);

if(r==mrYes)Close();

}

//---------------------------------------------------------------------------

Для Unit2.cpp // файл реализации
#include <math.h> // подключаем математическую библиотеку
void elem_matr(matr a) //подпрограмма вычисления элементов матрицы
{int i,j;/
/объявление целых переменных,номер строки,номер столбца
for(i=0;i<5;i++)
//цикл по строкам
for(j=0;j<5;j++)//
цикл по столбцам
a[i][j]=(pow(3,i)+1*j+0.5)/(4+j+i)*sin(i+j);}
//формула для вычисления матрицы
//---------------------------------------------------------------------------
void elem_vectora(matr a,vect& b)
//подпрограмма для вычисления вектора
{int i,j,k;
//объявление целых переменных
float S;
//Объявление переменной , наименьший элемент строки
for(i=0;i<5;i++)
// цикл для перебора строк
{S=a[i][0];
 //принимаем за начальное значение наименьшего элемента строки, значение первого элемента строки
for(j=0;j<5;j++)
//цикл для перебора столбцов
{if(a[i][j]<S
)// находим наименьший элемент строки
S=a[i][j];}
b[i]=S*S
;// выводим массив значений квадратов наименьших элементов строк.
}
}
//---------------------------------------------------------------------------
float fun_G1(vect b) // подпрограмма для вычисление значения функции
{
float S=1,S1=0;//объявление вещественных переменных, присваиваем им начальные значения
for(i=0;i<5;i++)//цикл для перебора  строк
S*=1+fabs(b[i]); //условие для функции умножения
for(i=1;i<5;i++) //цикл по строкам
S1+=fabs(b[i]); //условие суммы
float G=log(S)-log(S1); //Вся функция, G объявленная как вещественная
return G;
}

Для Unit2.h // заголовочный файл
int i,j;
typedef float matr[5][5]; // заголовок подпрограммы для имени типа(matr)
typedef float vect[5]; // заголовок подпрограммы для имени типа(vect)
void elem_matr(matr a);// список формальных параметров
void elem_vectora(matr a,vect& b); //заголовок подпрограммы для элементов вектора
float fun_G1(vect b); // заголовок подпрограммы для вычисления значения функции

Для Unit4.cpp

#include <vcl.h>

void __fastcall TForm4::e_x_i_tClick(TObject *Sender)

{int r;

r=MessageDlg("Вы уверены что хотите выйти?",

mtConfirmation,TMsgDlgButtons()<<mbYes<<mbNo,0);

if(r==mrYes)Close();}

void __fastcall TForm4::view_zadanClick(TObject *Sender)

{

char * ffname;

OpenDialog1->Filter="Doc files(*.rtf)|*.rtf";

if(OpenDialog1->Execute())ffname=OpenDialog1->FileName.c_str();

RichEdit1->Lines->LoadFromFile(ffname);

Form4->Caption="Файл называется- "+AnsiString(ffname);

RichEdit1->Modified=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm4::save_modClick(TObject *Sender)

{

char * ffname;

SaveDialog1->Filter="Doc files(*.rtf)|*.rtf";

if(SaveDialog1->Execute())RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);

RichEdit1->Modified=false;

}

//---------------------------------------------------------------------------

void __fastcall TForm4::font_styleClick(TObject *Sender)

{

FontDialog1->Execute();

RichEdit1->SelAttributes->Assign(FontDialog1->Font);

}

//---------------------------------------------------------------------------

Для Unit5.cpp

void__fastcall TForm5::TForm5(TComponent* Owner)

       : TForm(Owner)

{Memo1->Clear();Memo1->Lines->LoadFromFile("bibl.txt");

}

void __fastcall TForm5::okClick(TObject *Sender)

{

Close();

}


  1.  Результаты вычислений.

Анализ полученных результатов.

Результаты вычислений я привела в скриншоте.

Рис. 12

Вычисление матрицы, вектора и функции

Всё сходится.

Вычисление матрицы проводилось по этой формуле:

где i=0,...,5; j=0,…,5;

Вычисляла вектор по такому алгоритму:

x – столбец из квадратов наименьших элементов строк матрицы а.

Возьмём нулевую строку матрицы, самый наименьший элемент -0,14

Возводим его в квадрат,  получается 0,0196

Затем округлили и получили 0,02

Этот результат можно увидеть в первой ячейке вектора.

Так же возьмём первую строку матрицы, самый наименьший элемент -0,80

Возводим его в квадрат, получается 0,64 . И так далее.

Сходится, а это значит, что программа работает правильно!

  1.  Список литературы
  2.  О. Г. Трофименко. Информатика, модуль 2, часть 1, часть 2

Одесса, ОНАС, 2008

  1.  Л.М.Буката,И.Г.Швайко. Курсовая работа по дисциплине Информатика

Одесса, ОНАС, 2007

  1.  С++ Основи програмування. Теорія та практика.

О.Г.Трофименко

Одеса,ОНАЗ,2010




1. Эпидемиологический надзор определяют как
2. реферату- Сутність і завдання організації праціРозділ- Економіка підприємства Сутність і завдання організ
3. Тема- Методика оформлення операцій з нарахування зносу на об~єкти ОЗ Нарахування зносу на основні засоби
4. Історія виникнення логістики
5. на тему- Бази даних MS ccess Студента 3 курсу К21 групи напряму підготовки Обслуговува
6. . Что такое целлюлит 42
7. тема трудового права.html
8. Красноярская Государственная медицинская академия имени профессора В
9. 1 Вибір і обгрунтування структурної схеми пристрою За завданням даний підсилювач звукової частоти з диск
10. Лабораторная работа ’1 Тема работы- Получение навыков работы в программе Microsoft Excel.html
11. Контрольная работа- Социальное государство
12. тематизированное учение о неврозах охватывающее соматогенные психогенные и социогенные неврозы а также но
13. темам 4 Из истории формирования территории России и Кировской области
14. ЗАДАНИЕ 2 Теплотехнический расчет наружных стен Выполнил- ст
15. Земли особо охраняемых территорий
16. Локомотив ИШИМСКАЯ ФЕДЕРАЦИЯ СИЛОВЫХ ВИДОВ СПОРТА ИТОГОВЫЙ ПРОТОКОЛ СОРЕВНОВАНИЙ ПО ПАУЭРЛИФТИНГУ на
17. ТЕМА 13. МІСЦЕВЕ САМОВРЯДУВАННЯ В УКРАЇНІ Поняття місцевого самоврядування Територіальна громада ж.html
18. Тема- Погода и климат
19. Чеченский Махатма Ганди - эвлия Кунта-Хаджи и его учение
20. правовых актов Виды правовых норм