برنامه نویسی کامپیوتر

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