Мегаобучалка Главная | О нас | Обратная связь


Задание на производственную практику



2020-03-17 142 Обсуждений (0)
Задание на производственную практику 0.00 из 5.00 0 оценок




В ходе прохождения производственной практики, была поставлена задача переписать различные программные коды с языка Fortran на С. Результаты этой работы представлены в Приложении А (язык Fortran) и Приложении В (язык С).

Основы работы в FORTRAN и C в среде Microsoft Visual Studio 2010.

В процессе выполнения была использована основная концепция данных Фортран, а также правила написания программного кода.

Наиболее часто используемые конструкции: циклы с заданным числом повторений, условные операторы, операторы ввода вывода.

Пример ввода данных с клавиатуры:

 

print' (1x,''введите X,Y'') '*, X, Y

Пример цикла нахождения четных целых чисел от 1 до N:

ISUM = 0i = 0, N, 2= ISUM + i

 

Пример условного оператора:

 

if (a. gt.0.) print*,'Положительное'(a. lt.0.) print*,'Отрицательное'(a. eq.0.) print*,'Ноль'

 

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

С результатами выполнения поставленной задачи на языке Фортран можно ознакомиться в Приложении А.

C в среде Microsoft Visual Studio 2010

В настоящее время язык С является негласным стандартом системного программирования в следствии этого он был выбран в качестве основного языка.

Конструкции используемые в языке очень удобны и эффективны.

Наиболее часто использовали циклы с известным числом повторений, условные операторы, операторы ввода вывода, а также указатели.

Пример ввода данных с клавиатуры:

str [80];i;

/* читается строка и целое значение */("%s%d", str, &i);

 

Пример цикла нахождения четных целых чисел от 1 до N:

 

int ISUM, i,N;=0;(i = 0; i < N; i=+2)

{= ISUM + i;

}

Пример условного оператора:

if (a >0) { printf ("Положительное"); }(a <0) { printf ("Отрицательное"); }(a==0) { printf ("Ноль"); }

Пример использования указателей в массивах:DSIMQLL (double *X)

{I;(i = 1; i <= 3; i++)

{[i-1] = i*2; // заполнение массива

}

}*X;= (double *) calloc ( (3),sizeof (double)); // выделяем динамическую память("\n Решение\n");(X);(i = 1; i <= 3; i++) { printf (" %10.4f", X [i-1]); }

 

С результатами выполнения поставленной задачи на языке C можно ознакомиться в Приложении B.

фортран си язык программирование


Заключение

 

В результате работы были приобретены навыки работы со средой программирования Intel Fortran и Microsoft Visual Studio 2010 и построения сложного программного кода на различных языках программирования.

Алгоритмы, реализованные в Приложении A и Приложении В нашли широкое применение при решении навигационных задач.


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

 

1. Керниган Б., Ритчи Д. Язык программирования Си. Пер. с англ., 3-е изд., испр. - СПб.: "Невский Диалект", 2001. - 352 с

2. Страуструп Б. Язык программирования С++. - М.: ДМК Пресс,

.   2010. - 1034с.

.   Коричнев Л.П., Чистякова В.И. Фортран. - М.: Высшая школа,

.   1989. - 160 с.

6. iXBT.com - оперативные новости, обзоры и тестирования компьютеров, видеокарт, процессоров, материнских плат, памяти и принтеров, цифровых фотоаппаратов и видеокамер, смартфонов и планшетов, мониторов и проекторов. [Электронный ресурс]. URL: <http://www.ixbt.com/> - Режим доступа: свободный.

.   Хабрахаб. [Электронный ресурс]. URL: <http://habrahabr.ru/>. - Режим доступа: свободный.

.   Firststeps.ru-новости в сфере программирования, мастер классы от ведущих специалистов в области программирования, учебники по языкам программирования. [Электронный ресурс]. URL: <http://www.firststeps.ru/> - Режим доступа: свободный.

 


Приложения

 

Приложение А

Метод "Золотого сечения" на FORTRAN

Отладка и тестирование программы для поиска минимума функции методом "Золотого сечения" на языке FORTRAN

Исходный код

Real*8 FUNCTION F (X)

Real*8 X=X*X+6*exp (X)

RETURN

END FUNCTION F

Subroutine FMIN (AX, BX, F, TOL, XM, FM)

Real*8 AX, BX, F, TOL, XM, FM

External F

Real*8 A, B, C, D, E, EPS, XH, P, Q, R, TOLM, U, V, W

Real*8 FU, FV, FW, FX, X= 0.5D0* (3. D0-DSQRT (5. D0))= 1. D0

Continue= EPS/2. D0= 1. D0+EPS

IF (TOLM. GT.1. D0) GOTO 10= SQRT (EPS)= AX= BX= A+C* (B-A)= V= V= 0.0= F (X)= FX= FX

Continue= 0.50* (B - A)= A + R= EPS*ABS (X) +TOL/3.0

IF (ABS (X-XH). LE. (2.0*TOLM-R)) GoTo 90

IF (ABS (E). LE. TOLM) GoTo 40= X - V= (X - W) * (FX - FV)= P* (FX - FW)= P*Q - (X - W) *R= 2.0* (Q - R)

IF (Q. GT.0. D0) P =-P= Abs (Q)= E= D

Continue

IF (Abs (P). GE. Abs (0.50*Q*R)) GoTo 40

IF (P. LE. Q* (A - X)) GoTo 40

IF (P. GE. Q* (B - X)) GoTo 40= P/Q= X + D

IF ( (U - A). LT. TOLM) D = Sign (TOLM,XH-X)

IF ( (B - U). LT. TOLM) D = Sign (TOLM,XH-X)

GoTo 50

Continue

IF (X. GE. XH) E = A - X

IF (X. LT. XH) E = B - X= C*E

Continue= Abs (D)

IF (FU. LT. TOLM) U = X + Sign (TOLM,D)

IF (FU. GE. TOLM) U = X + D= F (U)

IF (FU. GT. FX) GoTo 60

IF (U. GE. X) A = X

IF (U. LT. X) B = X= W= FW= X= FX= U= FU

GoTo 20

Continue

IF (U. LT. X) A = U

IF (U. GE. X) B = U

IF (FU. LE. FW) GoTo 70

IF (W. EQ. X) GoTo 70

IF (FU. LE. FV) GoTo 80

IF (V. EQ. X) GoTo 80

IF (V. EQ. W) GoTo 80

GoTo 20

Continue= W= FW= U= FU

GoTo 20

Continue= U= FU

GoTo 20

Continue= X= FX

RETURN

END Subroutine FMIN

program Console3

Real*8 AX, BX, F, TOL, XM, FM

External F=-1=0=0.005

CALL FMIN (AX, BX, F, TOL, XM, FM)

write (*,*) 'MINIMUM NAIDEN NA '

write (*,*) ' X ',XM

write (*,*) ' Y ',FM

end program Console3

Результат выполнения программы:

 

Метод "Гаусса" для решений системы линейных алгебраических уравнений на FORTRAN

Отладка и тестирование на языке FORTRAN

Исходный код

SUBROUTINE DSIMQLL (A,B,N,TOL, IER)

DIMENSION A (1),B (1)

INTEGER N, IER,JJ, IQS,NY,J,JY, IT, I, IMAX, IXJ, IXJX

DOUBLE PRECISION TOL,SAVE,A,B,BIGA

IF (TOL. LT.0. D0) GOTO 100

IF (N. LE.0) GOTO 100=0=-N=JJ=N+1

DO 50 J=1,N=J+1=JJ+NY=0. D0=JJ-J

DO 10 I=J,N=IT+I

IF (DABS (BIGA). GE. DABS (A (IXJ))) GOTO 10=A (IXJ)=I

CONTINUE

IF (DABS (BIGA). LT. TOL) GOTO 95=JJ-N=IMAX-J

DO 20 I=J,N=IXJ+N=IXJ+IT

SAVE=A (IXJ)(IXJ) =A (IXJX)(IXJX) =SAVE(IXJ) =A (IXJ) /BIGA

CONTINUE

SAVE=B (IMAX)(IMAX) =B (J)(J) =SAVE/BIGA

IF (J. EQ. N) GOTO 60=IQS+N

DO 40 IXJ=JY,N=IQS+IXJ

SAVE=A (IXJX)=J-IXJ

DO 30 I=JY,N=IXJX+N(IXJX) =A (IXJX) - SAVE*A (IXJX+IT)

CONTINUE(IXJ) =B (IXJ) - (B (J) *SAVE)

CONTINUE

CONTINUE

NY=N-1=N*N=0

IF (J. EQ. NY) GOTO 90=J+1=IT-J=N=IXJ-J

DO 80 I=1,J(JY) =B (JY) - A (IXJX) *B (IXJ)=IXJX-N=IXJ-1

CONTINUE

GOTO 70

CONTINUE

RETURN

CONTINUE=1

GOTO 90

CONTINUE=2

GOTO 90

END SUBROUTINE DSIMQLL

program DSIMQLT

Implicit none

DOUBLE PRECISION A (3,3),B (3),TOL

INTEGER N, IER,J, I=3(1,1) =-2(1,2) =3(1,3) =4(2,1) =1(2,2) =5(2,3) =7(3,1) =4(3,2) =2(3,3) =1(1) =21(2) =-3(3) =-5

write (*,*) 'Matrix '

DO 1 I=1,3

DO 2 J=1,3

write (*,*) '',A (I,J)

CONTINUE

CONTINUE

DO 4 J=1,3

write (*,*) ' ',B (J)

CONTINUE

CALL DSIMQLL (A,B,N,TOL, IER)

write (*,*) 'Reshenie '

DO 3 J=1,3

write (*,*) ' ',B (J)

CONTINUE

end program DSIMQLT

 

Результат:


Приложение B

Метод "Золотого сечения" на С

Отладка и тестирование программы для поиска минимума функции методом "Золотого сечения" на языке С

Исходный код

#include <stdio. h>

#include <conio. h>

#include <math. h>F (double x)

{x*x+6*exp (x);

}FMIN (double *AX, double *BX, double *TOL, double *XM,double *FM)

{

/*----------------------------------------------------------------------Одномерная оптимизация МЕТОДОМ

"ЗОЛОТОГО СЕЧЕНИЯ"с апроксимацей

C квадратичной парболой----------------------------------------------------------------------Обращение:Call FMIN (AX, BX, F, TOL, XM, FM)AX - нижняя граница аргумента;BX - верхняя граница аргумента;F - имя FUNCTION для расчета целевой функции;TOL - точность выбора аргумента целевой функции;XM - выходное значение аргумента (минимум целевой функции);FM - выходное значение целевой функции;----------------------------------------------------------------------

*/A, B, C, D, E, EPS, XH, P, Q, R, TOLM, U, V, W,FU, FV, FW, FX, X,ZN,Mn;=0.5* (3.0-sqrt (5.0));= 1.0;:= EPS/2.0;= 1+EPS;(TOLM>1) goto a;= sqrt (EPS);=*AX;=*BX;=A+C* (B-A);=V;= V;= 0.0;= F (X);= FX;= FX;:= 0.50* (B - A);= A + R;= EPS*fabs (X) +*TOL/3.0;(fabs (X-XH) <= (2.0*TOLM-R)) goto k;(fabs (E) <=TOLM) goto d;= X - V;= (X - W) * (FX - FV);= P* (FX - FW);= P*Q - (X - W) *R;= 2.0* (Q - R);(Q>0) P =-P;= fabs (Q);= E;= D;:(fabs (P) >=fabs (0.50*Q*R)) goto d;(P<=Q* (A - X)) goto d;(P>=Q* (B - X)) goto d;= P/Q;= X + D;=XH-X;(ZN<0) {Mn=-1; } else {Mn=1; }( (U - A) <TOLM) D = fabs (TOLM) *Mn;( (B - U) <TOLM) D = fabs (TOLM) *Mn;e;:(X>=XH) E = A - X;(X<XH) E = B - X;= C*E;:= fabs (D);(D<0) {Mn=-1; } else {Mn=1; }(FU<TOLM) U = X +fabs (TOLM) *Mn;(FU>=TOLM) U = X + D;= F (U);(FU>FX) goto f;(U>=X) A = X;(U<X) B = X;= W;= FW;= X;= FX;= U;= FU;b;:(U<X) A = U;(U>=X) B = U;(FU<=FW) goto g;(W==X) goto g;(FU<=FV) goto j;(V==X) goto j;(V==W) goto j;b;:= W;= FW;= U;= FU;b;:= U;= FU;b;:

*XM=X;

*FM=FX;

}main (void)

{AX, BX, F, TOL, XM, FM;=-1;=0;=0.005;(&AX, &BX, &TOL, &XM, &FM);("Minimum naiden na x = %.3lf,y=%.3lf", XM, FM);

_getch ();0;

}

 

Результат:

Метод "Гаусса" для решений системы линейных алгебраических уравнений на С

Отладка и тестирование на языке С

Исходный код

#include <stdio. h>

#include <conio. h>

#include <math. h>

#include <stdlib. h>

#define siz 3double T;freee (T **a, size_t m)

{_t Row,j;(j=0; j<m; j++)

{(a [j]);

}(a);

}Release (T **a, size_t m)

{_t Row,Col;(Row = m - 1; 0 < Row; Row--)

{(a [Row]! =NULL)(a [Row]);

}( (void *) a);

}** fun (size_t m, size_t n, T**a)

{_t i, j,ff;(a! = NULL)

{=0;(i = 1; i <= m; ++i) { printf ("\n");(j = 1; j <= n; ++j) {++;[i-1] [j-1] =i+j;( (i==3) && (j==3)) a [i-1] [j-1] =9;(" %3.2f", a [i-1] [j-1]);

}

}

}a;

}**Allocate (size_t m, size_t n)

{_t Row;Success=1;**a = (T**) calloc (m,sizeof (T *));(a! =NULL)

{(Row = 0; Row < m && Success == 1; Row++)

{[Row] = (T *) calloc (n,sizeof (T));(NULL==a [Row])

{= 0;(a,m);

}

}

}(Success! = 1)= NULL;a;

}DSIMQLL (T**A,double *X,unsigned int *N)

{

/***SIMQL**************************************************S** DSIMQL - BEPCИЯ C ДBOЙHOЙ TOЧHOCTЬЮ ** ПPOГPAMMA - SIMQL - PEШAET CИCTEMY ЛИHEЙHЫX AЛГEБPAИЧECKИX ** YPABHEHИЙ METOДOM ГAYCCA ** A - BXOДHAЯ MATPИЦA KOЭФФИЦИEHTOB (N*N),HE COXPAHЯETCЯ ** X - РЕЗУЛЬТИРУЮЩИЙ МАССИВ ** N - РАЗМЕРНОСТЬ ********************************************************F*

*/i,j,u,k,m,n;buf;=*N;=-1;:=u+1; k=u;:(A [k] [u] ==0) {=k+1;(k<=n-1) goto b;("Sistema ne opredelena"); return;

}(k! =u)

{(m=u; m<=n; m++) {=A [u] [m];[u] [m] =A [k] [m];[k] [m] =buf;

}

}(j=n; j>=u; j--) {[u] [j] =A [u] [j] /A [u] [u];

}=n;(k+1<n) {(i=k+1; i<=n-1; i++)(j=u+1; j<=m; j++)[i] [j] =A [i] [j] - A [i] [u] *A [u] [j]; }(u! =n-1) goto a;(i=n-1; i>=0; i--) {[i] =A [i] [m];(i! =0)(k=i-1; k>=0; k--) A [k] [m] =A [k] [m] - A [k] [i] *X [i];

}

}main (void)

{int i,j,N,M;**A;*X;D;int size;=siz;=size;=size+1;=Allocate (N,M);= (double *) calloc ( (N),sizeof (double));[0] [0] =-2.0;[0] [1] =3.0;[0] [2] =4.0;[0] [3] =21.0;[1] [0] =1.0;[1] [1] =5.0;[1] [2] =7.0;[1] [3] =-3.0;[2] [0] =4.0;[2] [1] =2.0;[2] [2] =1.0;[2] [3] =-5.0;("\n Matrix\n");(i = 1; i <= N; ++i) { printf ("\n");(j = 1; j <= M; ++j) {(" %10.4f", A [i-1] [j-1]);

}

}("\n Reshenie\n");(A,X,&N);(j = 1; j <= N; ++j)

{(" %10.4f\n",X [j-1]);

}

_getch ();0;

}

 

Результат:



2020-03-17 142 Обсуждений (0)
Задание на производственную практику 0.00 из 5.00 0 оценок









Обсуждение в статье: Задание на производственную практику

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (142)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)