МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Коломенский институт (филиал)
Федерального государственного бюджетного образовательного учреждения
Высшего профессионального образования
"МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ОТКРЫТЫЙ УНИВЕРСИТЕТ
им.В.С. Черномырдина"
Инженерно-технологический факультет
Кафедра: Управление информатики и вычислительной техники
Специальность: 230105 (ПОВТиАС)
Отчет по производственной практике
Выполнил: Власов Н.Н.
Проверил: Гусев Д.В.
Коломна 2012 г.
Введение
Историческая справка о языках:
Си (англ. C) - стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX. С тех пор он был портирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность. Он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков.
Для языка Си характерны лаконичность, стандартный набор конструкций управления потоком выполнения, структур данных и обширный набор операций.
Фортран (Fortran) - первый язык программирования высокого уровня, имеющий транслятор. Создан в период с 1954 по1957 год группой программистов под руководством Джона Бэкуса в корпорации IBM (язык Планкалкюль, претендующий на пальму первенства, был изобретён ещё в 1945 году, но не был реализован вплоть до 2000 года). Название Fortran является сокращением от FORmula TRANslator (переводчик формул). Фортран широко используется в первую очередь для научных и инженерных вычислений. Одно из преимуществ современного Фортрана - большое количество написанных на нём программ и библиотек подпрограмм. Среди учёных, например, ходит такая присказка, что любая математическая задача уже имеет решение на Фортране, и, действительно, можно найти среди тысяч фортрановских пакетов и пакет для перемножения матриц, и пакет для решения сложных интегральных уравнений, и многие, многие другие. Ряд таких пакетов создавался на протяжении десятилетий и популярен в научной среде по сей день, например - IMSL (англ.).
Большинство таких библиотек является фактически достоянием человечества: они доступны в исходных кодах, хорошо документированы, отлажены и весьма эффективны.
Знакомство с предприятием и его структурой
ОАО "НПК "КБМ" был основан в 1942году для создания опытных образцов миномётного вооружения и мин Б.И. Шавыриным. Конструкторское бюро было создано по постановлению Государственного комитета обороны под названием Специальное конструкторское бюро Наркомата вооружения.
Мощный научный, конструкторский и производственный потенциал ОАО "НПК "КБМ" обеспечивается благодаря высококвалифицированным кадрам, производственному оборудованию, уникальной испытательной базе, стендам, средствам моделирования, хорошо организованной инфраструктуре предприятия. Все это позволяет оперативно реализовывать замкнутый цикл проектирования: "разработка - изготовление - испытания".
Структура предприятия включает в себя КП, ОЧ, ССП, производство и службы.
Конструкторские подразделения (КП) являются основной частью предприятия, на которую возложены задачи по осуществлению конструкторских разработок по четырем научно-техническим направлениям, разработке конструкторской и научно-технической документации, проведению исследований, экспериментов, организации испытаний изделий, их составных частей, гарантийного надзора и послегарантийного обслуживания при эксплуатации.
В состав КП входят научно-технические подразделения, занимающиеся разработкой и выполнением НИОКР по четырем основным научно-техническим направлениям, конструкторские отделения, отделение испытаний; управление по импорту, экспорту специального имущества и услуг, подразделения тематического планирования, технического надзора и перспективных разработок.
ОАО "НПК "КБМ" имеет испытательную базу, в состав которой входит отделение испытаний и сборочно-снаряжательное производство.
Отделение испытаний (ОИ). Территория отделения испытаний составляет 3580 га, рабочая стрельбовая трасса прямой видимости 4 км. Зоны безопасности: по дальности 3 км, боковые 1…2 км.
Полигон оснащен современными средствами измерений траектории движения, телеметрическими станциями, аппаратурой записи бортовых параметров. Инфраструктура полигона имеет необходимое энергосбережение, связь, огневые позиции и укрытия для персонала создают условия для безопасного производства работ.
Стенды механических испытаний и климатические камеры обеспечивают испытания образцов в условиях соответствующих разным климатическим зонам и требованиям эксплуатации.
Сборочно-снаряжательное производство. Участки производства размещаются в двух корпусах, оснащены в соответствии с нормативными правилами по электробезопасности, предупреждения тушения пожара, изолированными кабинами производства опасных технологических операций и электропроверок, грузоподъемными средствами.
Полигон и сборочно-снаряжательное производство внесены в Государственный реестр, сертифицированы по условиям безопасности.
Производственная база. Обеспечивает изготовление опытных образцов новой техники, опытную отработку технологических процессов для их освоения и внедрения в производство, подготовку, освоение и серийное производство изделий, изготовление макетов, стендов и установок специального технологического и испытательного оборудования, имеет в своем составе металлорежущее, химическое, заготовительные, сборочные производства, цеха для штамповки, раскатки, сварки, литья, термической обработки, контрольно-измерительную лабораторию, лабораторию механических испытаний.
Имеются складские помещения, транспортная служба для обеспечения грузовых перевозок опасных грузов.
Службы предприятия помогают успешному решению поставленных перед предприятием задач. К ним относятся:
служба по управлению персоналом, решающая вопросы кадровой политики на предприятии, обеспечения предприятия высококачественными трудовыми ресурсами, их подготовки и развития;
служба безопасности, решающая задачи защиты государственной тайны и конфиденциальной информации;
служба качества, отвечающая за соответствие системы качества предприятия требованиям международных стандартов;
службы экономического и финансового планирования, формирующие и распределяющие финансовые ресурсы предприятия.
Сегодня ОАО "НПК "КБМ" находится на передовых позициях в мире по разработке противотанковых и переносных зенитных ракетных комплексов, созданию оперативно-тактических РК и комплексов активной защиты БТВТ. У предприятия мощные, налаженные десятилетиями совместной работы связи со смежниками, серийными заводами.
Развиваются деловые отношения с ведущими фирмами Европы, Азии, Африки и Латинской Америки. Изделия, созданные ОАО "НПК "КБМ", поставляются более чем в 60 стран. КБМ - непременный участник престижных международных выставок вооружений и военной техники.
Задание на производственную практику
В ходе прохождения производственной практики, была поставлена задача переписать различные программные коды с языка 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
{= ISUM + i;
}
Пример условного оператора:
if (a >0) { printf ("Положительное"); }(a
Пример использования указателей в массивах:DSIMQLL (double *X)
{I;(i = 1; i
{[i-1] = i*2; // заполнение массива
}
}*X;= (double *) calloc ( (3),sizeof (double)); // выделяем динамическую память("\n Решение\n");(X);(i = 1; i
С результатами выполнения поставленной задачи на языке C можно ознакомиться в Приложении B.
фортран си язык программирование
Заключение
В результате работы были приобретены навыки работы со средой программирования Intel Fortran и Microsoft Visual Studio 2010 и построения сложного программного кода на различных языках программирования.
Алгоритмы, реализованные в Приложении A и Приложении В нашли широкое применение при решении навигационных задач.
Список использованной литературы
1.Керниган Б., Ритчи Д. Язык программирования Си. Пер. с англ., 3-е изд., испр. - СПб.: "Невский Диалект", 2001. - 352 с
2.Страуструп Б. Язык программирования С++. - М.: ДМК Пресс,
.2010. - 1034с.
.Коричнев Л.П., Чистякова В.И. Фортран. - М.: Высшая школа,
.1989. - 160 с.
6.iXBT.com - оперативные новости, обзоры и тестирования компьютеров, видеокарт, процессоров, материнских плат, памяти и принтеров, цифровых фотоаппаратов и видеокамер, смартфонов и планшетов, мониторов и проекторов. [Электронный ресурс]. URL: Приложения
Приложение А
Метод "Золотого сечения" на 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
#include
#include 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) 0) P =-P;= fabs (Q);= E;= D;:(fabs (P) >=fabs (0.50*Q*R)) goto d;(P=Q* (B - X)) goto d;= P/Q;= X + D;=XH-X;(ZN=XH) E = A - X;(X=TOLM) U = X + D;= F (U);(FU>FX) goto f;(U>=X) A = X;(U=X) B = U;(FU
*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
#include
#include
#include
#define siz 3double T;freee (T **a, size_t m)
{_t Row,j;(j=0; j
{(a [j]);
}(a);
}Release (T **a, size_t m)
{_t Row,Col;(Row = m - 1; 0
{(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
}
}
}a;
}**Allocate (size_t m, size_t n)
{_t Row;Success=1;**a = (T**) calloc (m,sizeof (T *));(a! =NULL)
{(Row = 0; 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
}(k! =u)
{(m=u; m
}
}(j=n; j>=u; j--) {[u] [j] =A [u] [j] /A [u] [u];
}=n;(k+1=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 Reshenie\n");(A,X,&N);(j = 1; j
{(" %10.4f\n",X [j-1]);
}
_getch ();0;
}
Результат: