Реферат по предмету "Информатика, программирование"


Приклад обчислення функції на Паскалі

Міністерствотранспорту та зв’язку України
Міністерствоосвіти і науки України
Державнийуніверситет інформаційно-комунікаційних технологійКАФЕДРАОБЧИСЛЮВАЛЬНОЇ ТЕХНІКИКУРСОВАРОБОТА
Здисципліни «Інформатика».
Київ2010

ЗМІСТ
Завдання
Пояснювальний матеріал
Узагальнена блок-схема алгоритму
Базова програма реалізації алгоритму
Програма з використанням процедур
Модуль глобальних описів
Сервісний модуль обслуговування матриці
Головна програма
Результати роботи програми
Література

ЗАВДАННЯ НАКУРСОВУ РОБОТУ
Загальнезавдання на курсову роботу
1.По функціїf(i,j), що задана, необхідно сформувати квадратну матрицу A = {aij},i,j = 1,2, …,…, m, де aij = f(i,j). (Для демонстрації m =5. )
2.Після чого ізцієї матриці відповідно до заданого алгоритму необхідно отримати компонентивектора X = {xi}, i = 1,2, …, n.
3. Після отриманнякомпонентів вектора X обчисліти значення функції U.
Індивідуальнезавдання
(Вар № Х)
1.Функція f(i,j)=(/3,7 – j/ -2)2i-j (i +j – 7,3) Sin (1,5+log2 (i/j)).
2. Компонентамивектора Х взяти елементи транспонованої матрици А, кожний з котрих не білш чим2. Обмеження: ім’я транспонованої матрици повинно співпадати з вихідної,тобто бути А.
3. U= />(xi + xn+1-i).

ПОЯСНЮВАЛЬНИЙ МАТЕРІАЛ
I. Відповідно до пункту №1завдання (формуванняматриці) на узагальненій блок-схемі алгоритму (довільна форма представленняблок-схеми-рис.1) передбачені блоки №2-№7.
/>/>Матриця вводиться по рядках,тому зовнішнім циклом визначений цикл №1 з параметром I= 1-m, а внутрішнім — цикл №2 з параметром J=1- n.
З огляду на ту обставину,що в мові Pascal відсутні убудовані функції: зведення в довільний ступінь іодержання логарифма при довільній підстави, вихідний вираз для формуванняелемента матриці (блок №5) для використання в програмі перетворено зурахуванням наступних властивостей:
1)(ABS(3.7-j)-2)*2i-j представлено як (ABS(3.7-j)-2)*exp((i-j)*ln(2)), що випливає з розгляду наступного положення. Тому як існуєубудована функція exp(x) — експонента, то ми маємо право записати для будьякого числа А таке співвідношення Ab=ex. Далі, узявшилогарифм по підставі e від правої і лівої частини цієї рівності, одержимо x =b*ln(A). Отже, Ab = exp( b*ln(A)).
2) Будь-яке числоA можна представити як /> чи />, відкіля випливає, що />. Прологарифмировав ліву іправу частини цього виразу по підставі e, одержимо loq(p) A*ln(p)=ln(A), відкіля loq(p)A = ln(A)/ ln(p).
II. Тому як в пункті №2завдання введене обмеження на процес одержання транспонованої матриці, теалгоритм його реалізації (блоки№13 — №19) отриманий, виходячи з наступнихміркувань, має вигляд:
Нехай є квадратнаматриця А[4х4] такого виду:
транспонована матриця функція pascal

/>
Тоді на першомукроці (заміна першого стовпця на перший рядок) реалізується досить просто, асаме, шляхом реалізації оператора присвоювання наступного виду a[i,j]:=a[j,i}при виконанні внутрішнього циклу (№6) по всіх стовпцях (j змінювалося від 1 до4) і одиничному значенні парамеира зовнішнього циклу (№5) по рядках (i=1).Черговий крок, як видно, повинний початися з заміни вже трьох стовпців на трирядки, починаючи з другого стовпця і другого рядка, (i=2, j=2). тобто з кліткиA22. І нарешті буде виконаний третій (останній) крок (i=3, j=3 ),починаючи з клітки A33. Звідси випливає, що початкове значенняпараметра внутрішнього циклу (№6 по стовпцях) повинне збільшуватися на одиницюз кожним новим зовнішнім циклом. Це досягається використанням змінної L (блок№15), якої привласнюється початкове значення 1 (у блоці №13) з наступнимзбільшенням на 1 ( у блоці №18) після завершення внутрішнього циклу №6, акількість виконань зовнішнього циклу повинне бути на одиницю менше числарядків, що відбито в блоці №14.
III. Тому як приформуванні вектора Х кількість елементів матриці менших 2 заздалегідь невідомо,те в змінній K (блок №29) організується лічильник, що формує поточний індекселемента вектора. При цьому враховане, що при завершенні формування векторапоказання лічильника перевищують на одиницю реальну розмірність. Це враховано прививоді вектора на відображення (блок№33) і при обчисленні функції (блок№37).

/>


БАЗОВА ПРОГРАМАРЕАЛІЗАЦІЇ АЛГОРИТМУ
Program Generalna;{Программа формирования квадратной матрицы по выражению для A[i,j], вектора Хпо транспонированной матрице и вычисления функции U}
 usesCrt; {Используемый библиотечный модуль}
 ConstLen=100;
 Type
 mtr=array [1..Len,1..Len] of real; {Пользовательский тип mtr}
 mas=array [1..Len] of real; {Пользовательский тип mas}
 vari,j, m,n:integer; {Рабочие переменные: параметры цикла и размерности}
 k:byte;{Счетчик –формирователь индексов при получении массива Х}
 L:byte;{Переменная для задания начального значения параметра цикла при транспонированииматрицы}
 a:mtr;{Матрица А}
 x:mas;{Массив Х}
 c:real;{Рабочая переменная}
 u:real;{Имя вычисляемой функции}
 BEGIN
  ClrScr;
 writeln('Введите размерность матрицы A: числа M и N' );
  write('m=');
  read(m);
  write('n=');
  read(n);
  writeln(' Введите элементы a[i,j] матрицы А ');
  fori:=1 to m do{Внешний цикл по строкам}
 for j:=1 to n do{Вложенный цикл по столбцам}
 a[i,j]:=(ABS(3.7-j)-2)*exp (((i-j)*ln(2)))*(i+j-7.3)*SIN(1.5+(Ln(i/j)/ln(2)));
 ClrScr;
  write(' Выведите элементы a[i,j] матрицы А ');
  writeln;
  writeln;
{Выводматрицы А по строкам}
 for i:=1 to m do{Внешний цикл по строкам}
 begin
 for j:=1 to n do{Вложенный цикл по столбцам}
 write ('a[',i,',',j,']=', a[i,j]:10:7,' '); {Вывод элемента a[i,j]матрицы А}
 writeln; {Оператор для перехода на очередную строку}
 end;
{Транспонирование матрицы}
 L:=1;{ Начальное значение переменной для задания начального значения параметра циклапо столбцам при транспонировании матрицы}
 fori:=1 to m-1 do{Внешний цикл по строкам}
 begin
 for j:=l to n do{Вложенный цикл по столбцам}
 begin
 c:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=c;
 end;
 L:=L+1
 end;
 writeln( '  Транспонированная матрица');
 writeln;
  fori:=1 to m do
 begin
 for j:=1 to n do
  write('a[',i,',',j,']=', a[i,j]:10:7,' ');{ Вывод элемента транспонированнойматрицы} 
 writeln;{ Оператор для переключения строки}
 end;
{Формирование массива Х}
K:=1;{Начальное значение формирователя индексов элементов массива Х }
  for i:=1 to m do
 forj:=1 to n do
  if a[i,j]
 begin
   x[k]:=a[i,j]; { Формирование элемента x[k] массива Х}
 k:=k+1;
  end;
{Вывод массива Х}
 writeln(' Maссив X');
  writeln;
 for i:=1 to k-1 do
write('x[',i,']=', x[i]:10:7,' '); { Вывод элемента массива Х}
{Вычисление функции U}
 U:=1; {Начальное значени переменной для накапливания произведений привычислении функции U}
 for i:=1 to k-1 do
 U:=U*(x[i]+x[k-i]); { Вычислеемое значение функции U на i-м шаге}
 writeln;
 writeln;
 write (' Функция: u=',u:10:7); { Вывод значения функции U}
 RepeatUntil KeyPressed
 END.

ПРОГРАМАЗ ВИКОРИСТАННЯМ ПРОЦЕДУР
ProgramProverka_Proz;
 usesCrt;
 ConstLen=100;
 Type
 mtr=array [1..Len,1..Len] of real; {Tip massiv-matriza}
 mas=array [1..Len] of real; {Tip massiv-vector}
 vari,j,k,m,n,l:integer;
 a:mtr;{ Imja peremennoi — matriza}
 x:mas;{ Imja peremennoi — vektor}
 u:real;{Imja peremennoi -funzija}
 c:real;{ Rabochaja peremennaja}
 ProcedureViv_M;
 Begin
  writeln;
  writeln;
 for i:=1 to m do {vnechnii zikl po strokam}
 begin
 for j:=1 to n do {vnutrenii zikl po stolbzam}
 write('a[',i,',',j,']=', a[i,j]:10:7,' '); {vivod elementa matrizi a[i,j] }
  writeln;{operaator dlja perehoda na ocherednuju stroku}
 end;
 writeln;
 End;
 BEGIN
  ClrScr;
 {vvod elementov matrizi po strokam}
  writeln('vvedite razmernost matrizi A: chisla M i N');
  write('m=');
  read(m);
  write('n=');
  read(n);
 {zapolnenie matrizi A -vvod elementov a[i,j]'}
  fori:=1 to m do
 for j:=1 to n do
 a[i,j]:=(ABS(3.7-j)-2)*exp (((i-j)*ln(2)))*(i+j-7.3)*SIN(1.5+(Ln(i/j)/ln(2)));
  ClrScr;
  {vivodmatrizi A po strokam}
 writeln ( ' ishodnaja Matriza');
  Viv_M;{operator proceduru }
 { transponirovannaie Matrizi A }
 L:=1; { nachalnoe znachenie parametra zikla po stolbzam pri transponirovaniiMatrizi A }
 fori:=1 to m-1 do
 begin
  forj:=L to n do
  begin
 c:=a[i,j]; a[i,j]:=a[j,i]; a[j,i]:=c;
  end;
 L:=L+1
 end;
 writeln( '  transponirovannaja Matriza');
 {vivod transponirovannoi matrizi A po strokam }
 Viv_M;{operator proceduru }
  {formirovaniemassiva X iz transponirovannoi matrizi A }
 k:=1;{nachalnoe znachenie formirovatelja indexov massiva X}
 for i:=1 to m do
 for j:=1 to n do
 if a[i,j]
   begin
  x[k]:=a[i,j];{formirovanie elementa x[k] massiva X }
  k:=k+1;
  end;
 {vivod massiva X}
 writeln(' Massiv X');
  writeln;
 for i:=1 to k-1 do
  write('x[',i,']=', x[i]:10:7,' ');{vivod elementa massiva X}
  {vichislenie funkzii U}
 U:=1; {nachalnoe znachenie funkzii U}
 for i:=1 to k-1 do
 U:=U*(x[i]+x[k-i]);
 writeln;
 writeln;
 write ('Funkzija: u=',u:10:7);
 RepeatUntil KeyPressed
 END.
МОДУЛЬГЛОБАЛЬНИХ ОПИСІВ
UnitGlob; {Имя модуля}
 Interface
 Const
 Len=100;
 Type
 T_Matr=array[1..Len,1..Len] of real; {Тип массива-матрицы}
 T_Vect=array[1..Len] of real; {Тип массива-вектора}
End.

СЕРВІСНИЙМОДУЛЬ ОБСЛУГОВУВАННЯ МАТРИЦІ
UnitKR_Srv2;{ Имя сервисного модуля} Interface Uses Glob; { Имя модуля сглобальными описаниями} Procedure Ztvor_M(M,N:byte;Var ma:T_Matr); { Описаниепроцедуры создания матрицы} Procedure Print_M(Ma:T_Matr;M,N:byte); { Описаниепроцедуры печати}
 Implementation
 UsesCRT;
 ProcedureZtvor_M(M,N:byte;Var ma:T_Matr); { Процедура создания матрицы}
 Var
 i,j:byte; { Рабочие переменные}
 Begin
 writeln (' Введите размерность матрицы A: числа M и N'); write('m=');
 read (m);
 write('n=');
 read(n);
 ClrScr;
 For i:=1 to m do
 For j:=1 to n do
 ma[i,j]:=(ABS(3.7-j)-2)*exp (((i-j)*ln(2)))*(i+j-7.3)*SIN(1.5+(Ln(i/j)/ln(2)));
 End;
  ProcedurePrint_M(Ma:T_Matr;M,N:byte); { Процедура отображения матрицы}
 var j,i:byte;  Begin  write (' Выведите элементы матрицы a[i,j]');  writeln;  writeln; For i:=1 to m do
 begin
 For j:=1 to n do
  write ('a[',i,’,’,j,']=',Ma[i,j]:10:7); { Отображение элементов матрицы}
  writeln;
 end;
 End;
 END.
ГОЛОВНАПРОГРАМА
ProgramMatr_KR2; uses Crt,Glob,KR_SRV2; { Список используемых модулей } vari,j,k,m,n,l:integer; { Рабочие переменные } a:T_Matr; {Имя элементов матрицы А}x:T_Vect; {Имя элементов массива Х }
u:real;{Имя вычисляемой функции }
c:real;{ Вспомогательная переменная для транспонирования матрицы }
 begin
  ClrScr;
 writeln('Исходная матрица');
 Ztvor_M(M,N,A);
 Print_M(A,M,N);{ Оператор процедуры отображения матрицы }
 {Транспонирование матрицы }
 L:=1;{Начальное значение переменной для формирования начального значения параметравложенного цикла (работа по столбцам) при транспонировании матрицы А }
 for i:=1 to m-1 do
 begin
  forj:=l to n do
  c:=a[i,j];a[i,j]:=a[j,i]; a[j,i]:=c; { Получение элементов транспонированной матрицы }
 L:=L+1
 end;
 writeln( ' Транспонированная матрица');
 writeln;
 Print_M(A,M,N);{ Оператор процедуры отображения матрицы }
  {Формированиемассива X из транспонированной матрицы }
 k:=1;{Начальное значение формирователя индексов элементов массива X}
 for i:=1 to m do
 for j:=1 to n do
 if a[i,j]
  begin
 x[k]:=a[i,j];{Формирование элемента x[k]массива X }
  k:=k+1;
  end;
 {Вывод массива X}
 writeln(' Массив X');
  writeln;
 for i:=1 to k-1 do
  write('x[',i,']=', x[i]:10:7,' '); {Вывод элемента массива X}
  { Вычисление функции U}
 U:=1; {Начальное значение функции U}
 for i:=1 to k-1 do
 U:=U*(x[i]+x[k-i]); {Значение функции U}
 writeln;
 writeln;
 write ('u=',u:10:7); {Отображение результирующего значения функции U}
 RepeatUntil KeyPressed
 END.РЕЗУЛЬТАТИ РОБОТИ ПРОГРАМИпри m=n=3 і при однаковом форматі виведення для всіхчотирьох видів даних a[i,j]:10:7;
Вихідна матриця
a[1,1]=-3.7007064a[1,2]=0.3092295 a[1,3]=-0.0910127
a[2,1]=-3.6028023a[2,2]=0.9875200 a[2,3]= 1.1849153
a[3,1]=-0.5229830a[3,2]= 1.2015703 a[3,3]= 1.6857605Транспонована матриця
a[1,1]=-3.7007064a[1,2]=-3.6028023 a[1,3]= -0.5229830
a[2,1]= 0.3092295a[2,2]= 0.9875200 a[2,3]= 1.2015703
a[3,1]=-0.0910127a[3,2]= 1.1849153 a[3,3]= 1.6857605
Масив Х
 x[1]=-3.700706 x[2]=-3.6028023x[3]=-0.5229830 x[4]=0.3092295
 x[5]=0.9875200x[6]=1.2015703 x[7]=-0.0910127 x[8]=1.1849153
 x[9]=1.6857665
Значення функції:U=40.3382026
Результати ручнихрозрахунків співпадають з програмними, що свідчить про правильність роботипрограми.

ВИКОРИСТАНАЛІТЕРАТУРА
1.  А. И. Марченко, Л. М. Марченко.Программирование в среде TURBO Pascal 7.0. Киев “ВЕК+””, Москва “ДЕСС”, 1999.
2.  Ю.С. Бородич, А.Н. Вальвачев, Ф.И.Кузьмич. Паскаль для персональных компьютеров. Минск,”Вышэйшая школа”, БФ ГИТМП“НИКА”, 1991
3.  Д.Б. Поляков, И.Ю. Круглов.Программирование в среде Турбо Паскаль, Москва, МАИ, А\О “РОСВУЗНАУКА”, 1992.
4.  Ф.Б. Бартків, Я.Т. Гринчишин,А.М. Ломакович, Ю.С. Рамский. TURBO PASCAL: Алгоритми и програми. Київ, «Вищашкола», 1992.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.