برنامه نویسی کامپیوتر
Download
Report
Transcript برنامه نویسی کامپیوتر
برنامه نویسی کامپیوتر
بخش سوم
مدرس :دکتر خالدیان
توابع آماده
توابع آماده
توابع آماده
Loop
PROGRAM Loop
INTEGER I
DO I = 1, 10
PRINT*, I
END DO
END
مثال
• برنامه ای بنویسید که جمع Nعدد را که از ورودی می
گیرد حساب کند.
•
•
•
•
•
•
•
•
•
PROGRAM JAAM
SUM=0.0
READ*,N
DO I=1,N
READ*,A
SUM=A+SUM
END DO
PRINT*,SUM
END
مثال
• برنامه ای بنویسید که مجموع اعداد زوج را از 2تا 100
حساب کند.
•
•
•
•
•
•
PROGRAM ZOJ
INTEGER S, I
S=0
DO I=2,100,2
PRINT*,I
S=S+I
•
•
•
•
•
END DO
PRINT*
PRINT*, 'MAJMOE ADAD ZOJ AZ 2 TA 100:'
PRINT*,S
END
مثال
• برنامه ای بنویسید که مجموع مربعات ضرایب 5را که
بین 200و 306هستند را محاسبه کند.
•
•
•
•
•
•
PROGRAM ZARIB5
INTEGER S, I
SS=0
DO I=200,306,5
PRINT*,I
SS=SS+I**2
•
•
•
•
•
END DO
PRINT*
PRINT*, 'MAJMOE ADAD :'
PRINT*,SS
END
مثال
• برنامه ای بنویسید که فاکتوریل عدد صحیحی مثل Nرا
حساب کند.
•
•
•
•
•
•
•
•
PROGRAM
FACTORIAL_N=1
READ*,N
DO I=1,N
FACTORIAL_N=FACTORIAL_N*I
END DO
PRINT*,FACTORIAL_N
END
مثال
• برنامه ای بنویسید تا با استفاده از روش نیوتن جذر یک
عدد را حساب کند و جواب را با جواب برنامه فرترن با
استفاده از توابع آماده مقایسه کنید.
• حدس اول X
• X = (X + A / X) / 2
روش نیوتن
• 1. Input a
• 2. Initialize x=1
• 3. Repeat 6 times
•
x=(x + a/x)/2
Print x
• 4. Stop.
•
•
PROGRAM Newton
! Square rooting with Newton
•
•
•
•
IMPLICIT NONE
REAL A
INTEGER I
REAL X
•
•
PRINT*, 'Enter number to be square rooted: '
READ*, A
•
X=1
•
•
•
•
DO I = 1, 6
X = (X + A / X) / 2
PRINT*, X
ENDDO
•
•
PRINT*
PRINT*, 'Fortran 90''s value:', SQRT( A )
•
END
مثال
• برنامه ای بنویسید که برای یک سرمایه 1000دالری با
سود %9در سال ،موجودی این حساب را در انتهای سال
حساب کند.
• PROGRAM MONEY
• REAL BALANCE, INTEREST, RATE
•
•
•
•
•
BALANCE = 1000
RATE = 0.09
INTEREST = RATE * BALANCE
BALANCE = BALANCE + INTEREST
PRINT*, 'New balance:', BALANCE
• END
مثال
• برنامه ای بنویسید که برای تعدادی حساب بانکی (مثال 4
حساب) ،موجودی حساب را در انتهای سال با سود %9
حساب کند.
•
•
PROGRAM Accounts
! processes customers accounts
•
•
•
•
•
IMPLICIT NONE
INTEGER Acct
! counter
REAL
NewBal
! new balance after interest
REAL
OldBal
! original balance
REAL
Rate
! interest rate
•
Rate = 0.09
•
•
•
•
•
•
DO Acct = 1, 4
PRINT*, 'Old balance: '
READ*, OldBal
NewBal = OldBal + Rate * OldBal
PRINT*, 'New balance: ', NewBal
END DO
•
END
! 9% pa
مثال
• برنامه ای بنویسید که برای یک سرمایه با سود مشخص در
یک بانک در انتهای یک دوره زمانی مشخص و در انتهای
هر سال ،موجودی این حساب را مشخص کند.
•
•
PROGRAM Invest
! compound growth of an investment
•
•
•
•
•
IMPLICIT NONE
REAL
Bal
! balance
INTEGER Period
! period of investment
REAL
Rate
! interest rate
INTEGER Year
! year counter
•
•
•
•
•
•
•
•
•
PRINT*, 'Initial balance:'
READ*, Bal
PRINT*, 'Period of investment (years):'
READ*, Period
PRINT*, 'Interest rate (per year, as a decimal fraction):'
READ*, Rate
PRINT*
PRINT*, 'Year Balance'
PRINT*
•
•
•
•
DO Year = 1, Period
Bal = Bal + Rate * Bal
PRINT*, Year, Bal
END DO
•
END
مثال
• برنامه ای بنویسید که برای تعدادی حساب بانکی (مثال 4
حساب) ،موجودی حساب را در انتهای سال با سود %9
برای حساب های با موجودی زیر 5000دالر و %12
برای حساب های با موجودی بیش از 5000دالر حساب
کند.
IF دستور
• IF (OldBal < 5000) THEN
• Rate = 0.09
• ELSE
• Rate = 0.12
• ENDIF
•
•
PROGRAM Accounts
! processes customers accounts
•
•
•
•
•
IMPLICIT NONE
INTEGER Acct
! counter
REAL
NewBal
! new balance after interest
REAL
OldBal
! original balance
REAL
Rate
! interest rate
•
•
•
DO Acct = 1, 4
PRINT*, 'Old balance: '
READ*, OldBal
•
•
•
•
•
IF (OldBal < 5000) THEN
Rate = 0.09
ELSE
Rate = 0.12
END IF
•
•
•
NewBal = OldBal + Rate * OldBal
PRINT*, 'New balance: ', NewBal
END DO
•
END
مثال
• برنامه ای بنویسید که چند عدد را گرفته و بیشترین و
کمترین عدد را مشخص کند.
• PROGRAM MAX_MIN
•
•
•
•
•
REAL A,B,C,D,LARGEST,SMALLEST
READ*,A,B,C,D
LARGEST=MAX(A,B,C,D)
SMALLEST=MIN(A,B,C,D)
PRINT*,LARGEST,SMALLEST
• END
مثال
•
•
•
•
•
•
•
برنامه ای بنویسید که Nعدد اعشاری را مثل
X1,X2,X3,…,Xnگرفته و داده های آماری زیر را حساب کند.
مجموع آنها SUM :
مجموع مربعات آنها SUMSQ :
میانگین آنها SUM/n :
انحراف معیار آنها :
))• SQRT(SUMSQ-(SUM**2/N)/(N-1
کوچکترین و بزرگترین عدد
دامنه یا تفاوت بین کوچکترین و بزرگترین عدد
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
PROGRAM STATISTICS
IMPLICIT NONE
INTEGER :: N,I;REAL::X,LARGEST,SMALLEST
REAL
::SUM=0.0,SUM_OF_SQUARE=0.0,LARGE_STORE=0.0,SMALL_STORE=1000000.0
READ*,N
DO I=1,N
READ*,X
LARGEST=MAX(X,LARGE_STORE)
SMALLEST=MIN(X,SMALL_STORE)
LARGE_STORE=LARGEST
SMALL_STORE=SMALLEST
SUM=SUM+X
SUM_OF_SQUARE=SUM_OF_SQUARE+X*X
END DO
PRINT*,SUM/N
PRINT*,SQRT((SUM_OF_SQUARE-SUM**2/N)/(N-1))
PRINT*,LARGE_STORE
PRINT*,SMALL_STORE
PRINT*,LARGE_STORE-SMALL_STORE
END
مثال
• برنامه ای بنویسید که انتگرال یک معادله معین (سطح زیر
یک منحنی) مثل F(X)=X2را حساب کند.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
PROGRAM INTG
IMPLICIT NONE
INTEGER::N,I
REAL::A,B,F1,F2,INTERVAL,INTEGRAL=0.0,Y
READ*,A,B,N
F1=A**2
INTERVAL=(B-A)/N
Y=A
DO I=1,N
Y=Y+INTERVAL
F2=Y**2
INTEGRAL=INTEGRAL+((F1+F2)/2)*INTERVAL
F1=F2
END DO
PRINT*,INTEGRAL
• END