عمليات تکرار Repetition

Slides:



Advertisements
Similar presentations
Stranded Costs مقدمه 1 - آشنايی با پديده های غيرخطی ( ياد آوری و تکميل ) 2 - مبانی رياضی ( مهم )
Advertisements

سازگاري فرايندهاي يادگيري Consistency of Learning Processes ارائه دهنده : الهام باوفای حقیقی استاد درس : آقای دکتر شيري دانشگاه امير كبير دانشكده ‌ مهندسي.
دستورهای انتقال کنترل عباسپور 1 دستورهای انتقال کنترل Control Statements.
دستور العمل نحوه محاسبه امتیاز مقالات ISI اعضای هیأت علمی دانشگاه صنعتی اصفهان بر اساس تعداد استنادات در پايگاه اسكاپوس شهریور ماه 1388 نفیسه دهقان.
1 آزمايشگاه سيستم های هوشمند ( Domain-specific Architecture.
دستور های ورودی خروجی عباسپور 1 دستورهای ورودی و خروجی Input Output Commands.
آرايه ها يا رشته ها Arrays
Computer Programming برنامه سازی کامپيوتر1 طراحی الگوريتم ها Algorithm Design.
دستور های منطقی، عباسپور1 دستور های منطقی مقايسه ای LOGICAL COMPARISON EXPRESION.
مثال های کاربردی (1) محاسبه سطوح دايره ای شکل –آبياری بارانی –سم پاشها تعريف مسئله: تهيه برنامه ای که بر اساس يک شعاع مفروض ورودی سطح دايره متناظر را محاسبه.
دستورهای خروجی بر اساس فايل عباسپور 1 دستور های ورودی-خروجی بر اساس استفاده از فايل File-based Input and Output.
نويسه و رشته CHARACTER string رشته عبارتست از توالی از صفر يا چند کاراکتر مثل Ali برای ذخيره مواردی مثل اسم و آدرس و غيره.
نمايش اعداد.
نام و نام خانوادگي : فريد ملازم 1 آزمايشکاه سيستم هاي هوشمند ( موضوع ارائه Process and Deployment Design.
برنامه سازی کامپيوتر 1 زبانهای برنامه سازی Programming Languages.
نمايش اعداد.
LINEAR CONTROL SYSTEMS Ali Karimpour Assistant Professor Ferdowsi University of Mashhad.
ادامه برنامه های فرعی عباسپور 1 متغير ها در برنامه های فرعی هر نوع متغيری که در برنامه فرعی اعلان می شود مخصوص همان برنامه است و در خارج از آن موجوديت.
مراحل مختلف اجرای يک برنامه
فایل پردازی در C File based Programming in C. انواع فایل متنی –سرعت بالا –حجم کمتر –امکان دسترسی تصادفی –حفظ امنیت داده ها دودویی (باینری) –امکان باز.
PHP Hypertext per processor کار می کند؟ PHP چگونه
1 Binary storage & registers. CS 151 Binary Variables Recall that the two binary values have different names: –True/False –On/Off –Yes/No –1/0 We use.
نمايش اعداد علی عادلی.  مبنا ( base ): –مبناي r: ارقام محدود به [0, r-1]  دسيمال:(379) 10  باينري:( ) 2  اکتال:(372) 8  هگزادسيمال:(23D9F)
فارسی سازی يکپارچه در سيستم عاملهای OS/390 & Windows واحد 1 مهندسی سيستم Integrated Farsi support on OS/390 & Windows.
1 بنام خدا زبان برنامه نویسی C (21814( Lecture 14 Structures.
Database Laboratory: Session #4 Akram Shokri. DB-Lab 2 Lab Activity You must already created all tables You have to have inserted proper data in tables.
به نام خدا برنامه سازی سمت سرور (php)
برنامه نویسی کامپیوتر بخش ششم مدرس: دکتر خالدیان.
1 بنام خدا زبان برنامه نویسی C (21814( Lecture 9 Selected Topics.
ساختارهاي تقسيم كار پروژه
1 بنام خدا زبان برنامه نویسی C (21814( Lecture 8 Chapters 8 & 9.
Introduction to Programming Lecture 7: Repeating Statements.
آرايه Array آرايه مجموعه اى از متغيرهاى از يك نوع است كه با يك نام مشترك تحت استفاده قرار مى گيرند. يك عنصر بخصوص در يك آرايه با يك index (انديس ) مورد.
Data Types Modifiers Base data type Size Sign signed int 2 B unsigned float 4 B short double 8 B long char 1 B.
روابط مجموعه ها سلیمی. دکتر سلیمانی. نظریه فازی در سال 1965 بوسیله یک دانشمند ایرانی بنام پروفسور لطفی زاده معرفی گردید. گرچه این نظریه در ابتدا با.
اسامي شناسه ها (Identifier names) اسامي متغيرها ، توابع ، برچسب ها (labels) وبقيه اشياء تعريف شده توسط كاربر در C ، شناسه ( identifier ) ناميده مي شود.
شرط و تصميم اصول كامپيوتر 1. 2 الگوريتم اقليدس E1: [find remainder] Divide m by n and let r be the remainder. Clearly, 0
1/19 Informed search algorithms Chapter 4 Modified by Vali Derhami.
Department of Computer Eng. & IT Amirkabir University of Technology (Tehran Polytechnic) Data Structures Lecturer: Abbas Sarraf Order.
Introduction to Programming Lecture 2: Algorithm Design.
الف) تابع y = f(x) = X >= 0x -2 < x < 0 x3x3 X
Information Retrieval
تهیه و تنظیم: فاطمه قاسمی دانشگاه صنعتی شریف – پاییز 86
نظریه رفتار برنامه ريزي شده Theory of Planned Behavior
بنام خدا زبان برنامه نویسی C (21814( Lecture 2 Chapter 3
انواع دستور در برنامه نويسی
بنام خدا زبان برنامه نویسی C (21814( Lecture 12 Selected Topics
آرايه ها.
Address: Times New Roman, size 34
واحد های مختلف برنامه عباسپور
دستورات کنترل و تکرار- 2 اصول كامپيوتر 1.
آشنايي با برنامه نويسي به زبان C++
تکنیک دیماتل DEMATEL: decision making trial and evaluation laboratory.
مباني كامپيوتر و برنامه سازي Basics of Computer and Programming
تبدیل فوریه (Fourier Transform)
نمايش اعداد در کامپيوتر چهار عمل اصلي
Similarity transformation
(Structured Query Language)
به نام خدا برنامه ارزيابي خارجي کيفيت (هماتولوژی- سرولوژی)
هیدرولیک جریان در کانالهای باز
فيلتر كالمن معرفي : فيلتر كالمن تخمين بهينه حالت‌ها است كه براي سيستم‌هاي ديناميكي با اختلال تصادفي در سال 1960 بزاي سيستم‌هاي گسسته و در سال 1961 براي.
بنام خدا زبان برنامه نویسی C (21814( Lecture 7 Chapter 7
بنام خدا زبان برنامه نویسی C (21814( Lecture 3 Chapter 4
SY604 NAT PPPoE Configuration
Ali Karimpour Associate Professor Ferdowsi University of Mashhad
نظریه رفتار برنامه ريزي شده Theory of Planned Behavior
به نام خدا برنامه ارزيابي خارجي کيفيت (هماتولوژی- سرولوژی)
فصل ششم مدارهای ترتیبی.
مثال : فلوچارتي رسم كنيد كه دو عدد از ورودي دريافت كرده بزرگترين عدد
kbkjlj/m/lkiubljj'pl;
Presentation transcript:

عمليات تکرار Repetition از مهمترين ويژگيهای هر زبان برنامه نويسی است که اجازه می دهد تا يک بلوک از دستورات مکرراً اجرا گردد. ساختار DO (DO Construct) در فرترن جهت تکرار بلوک هايي از دستورات مختلف فرم کلی [name:] DO [Control Clause شرط کنترل ] block END DO [name] حلقه های تکرار عباسپور

انواع حلقه های DO حلقه با تکرار نامحدود [name:] DO block of statements END DO [name] باعث تکرار بلوک تا بی نهايت می گردد مثال: e=1.0; k=1; j=1 DO e=e+1.0/REAL(j) k=k+1 j=j*k END DO در اين نوع حلقه برنامه به وضوح متوقف نمی شود برنامه تا انجا ادامه می دهد تا j از برد پردازنده بيشتر شود حلقه های تکرار عباسپور

کنترل حلقه DO بی نهايت دستور EXIT ( همراه با دستور IF) کنترل به اولين دستور بعد از END DO می رود مثال: INTEGER::ifib(100) Ifib(1)=1; ifib(2)=1; i=3 DO ifib (i)=ifib(i-1)+ifib(i-2) i=i+1 IF(i>100)EXIT END DO حلقه های تکرار عباسپور

دستور STOP دستوری ساده ولی قوی (شبيه تابع exit در C) اين دستور اجرای برنامه را در هر جا که باشد (ازجمله داخل حلقه تکرار) متوقف می کند اين دستور با يد همراه با نوعی از دستور IF باشد IF (condition) STOP يا IF (condition) THEN block of statements STOP END IF حلقه های تکرار عباسپور

حلقه DO WHILE فرم کلی DO WHILE (condition) block of statements END DO ماداميکه condition به صورت TRUE باشد حلقه تکرار خواهد شد در غير اينصورت کنترل به دستور بعد از END DO می رود اين حلقه معادل حالت زير است: DO IF (.NOT. condition) EXIT حلقه های تکرار عباسپور

مثال x=1.0; y=1.0; z=1.0; count=0 Sample:DO WHILE ((x**2+y**2+z**2)<1000000.0) xplus=10.0*(y-x) yplus=x*z+28.0*x-y zplus =x*y-8.0*z/3.0 Test=ABS(xplus)+ABS(yplus)+ABS(zplus) IF (test<=0.000001)EXIT Count=count+1 END DO sample حلقه های تکرار عباسپور

دستور CYCLE در حلقه های DO برای جهش به پايين بلوک و برگشت به ابتدای آن ولی با اين دستور کنترل از حلقه خارج نمی شود معادل continue در C Do WRITE(*,*) “type the password” READ(*,*)yourword IF (yourword/=password)CYCLE WRITE(*,*)”that’s right, now type a new password” READ(*,*) password WRITE(*,*) “the new password is”,password EXIT END DO اگر کلمه رمز درست تايپ نشود کاربر هرگز نمی تواند از حلقه خارج شود حلقه های تکرار عباسپور

حلقه های متداخل و دستور های EXIT و CYCLE به منظور جلوگيری از اغتشاش بهتر است حتماً حلقه ها دارای اسم باشند (به مثال زير توجه شود) PROGRAM averscore REAL :: mark, average INTEGER:: stid, loop ,n WRITE(*,*)”type in the number of students” mainloop: DO WRITE(*,*) 'Please give student id' READ(*,*) stid IF (stid==0) EXIT mainloop average=0 innerloop: DO loop=1,n WRITE(*,*) 'Please enter mark' READ(*,*) mark IF (mark==0) CYCLE innerloop negs: IF (mark<0) THEN WRITE(*,*) 'Wrong mark. Start again' CYCLE mainloop END IF negs average=(average+mark) END DO innerloop average=(average)/n WRITE(*,*) 'Average of student',stid,' is = ',average END DO mainloop END PROGRAM averscore اگر در دستور CYCLE نام حلقه مشخص نشود تکرار در داخلی ترين حلقه مد نظر قرار می گيرد حلقه های تکرار عباسپور

حلقه تکرار با شاخص شمارنده فرم کلی [name:] DO count = start, stop [,step] block of statements END DO [name] Count يک INTEGER يا يک متغير INTEGER جهت کنترل حلقه Start به صورت INTEGER و بيانگر شروع count است Stop به صورت INTEGER و بيانگر مقدار نهايي count است Step مقدار نمو count است و اگر نباشد 1 در نظر گرفته می شود No. of iteration=(stop + step - start)/ step مقدار count در داخل حلقه نمی تواند تغيير کند اگر stop کوچکتر از start باشد و step مقداری مثبت انگاه count صفر شده حلقه اصلاً تکرار نخواهد شد حلقه های تکرار عباسپور

مثال all: DO i=1,10 WRITE(*,*) i !write numbers 1 to 10 END DO all even: DO j=10,2,-2 WRITE(6,*) j !write even numbers 10,8,6,4,2 END DO even حلقه های تکرار عباسپور

مثالی از ترکيب DO و CASE PROGRAM do_case !This program interpret input, out put text as a number CHARACTER (8)::string, text INTEGER::npoints start: DO READ (*,*)text IF(text(1:1)=="!")THEN PRINT*,"Terminate the program" STOP END IF string=“ “ npoints=0 حلقه های تکرار عباسپور

digit: SELECT CASE (text(i:i)) CASE ("0":"9") text: DO I=1,LEN(text) digit: SELECT CASE (text(i:i)) CASE ("0":"9") string=TRIM(string)//text(i:i) CASE (",") WRITE(*,*)"Commas are disregarded" CASE (".") npoints=npoints+1 string=TRIM(string)//"." CASE ("O") WRITE (*,*)"An O has been interpreted as zero" string=TRIM(string)//"0" CASE ("I") WRITE (*,*)"An I has been interpreted as 1" string=TRIM(string)//"1" CASE (" ") WRITE (*,*)"A blank has been disregarded" CASE DEFAULT WRITE (*,*)"There is a fatal ERROR!!!!" STOP END SELECT digit END DO text حلقه های تکرار عباسپور

points: SELECT CASE (npoints) CASE (0) WRITE (*,*)" check: there was no decimal point" CASE (2:) WRITE (*,*) "there was more than one decimal point" STOP CASE DEFAULT WRITE(*,*) "your number was correct" END SELECT points WRITE(*,*) "your number: ",text WRITE(*,*) "changed to",string END DO start END PROGRAM do_case حلقه های تکرار عباسپور

مثالی از کاربرد حلقه DO در محاسبات مهندسی PROGRAM trajectory !***************************************************************************************** !* A program to calculate the particle trajectory data for varying angles * !* and initial velocities * !* Programming language class, Dept. of Farm Machinery, Dr. Abbaspour* ! variable definition !v0=initial velocity !theta=angle of trajectory in degree !gee=local gravitational acceleration !angle=angle of trajector in radians !tymax=time, in second, to reach the top of trajectory !ymax=maximum hieht of trajectory, feet !xmax=distance from launch to impact, feet !n=number of velocities to be input ادامه.......... حلقه های تکرار عباسپور

REAL::v0,theta,gee,angle,tymax,ymax,xmax INTEGER::n gee=32.17 !outer loop for different velocities PRINT*, "Input number of velocities to be used" READ(*,*)n outer_loop:DO I=1,n PRINT*,"Input initial velocity (ft/s)" READ(*,*)v0 WRITE(*,*)"For an initial velocity of ",v0," the data are:" WRITE(*,*) "Angle Time Maximum Y Height & & Distance" ! Inner loop for varying angle inner_loop: DO J=1,89,2 theta=REAL(J) angle=theta/57.3 tymax=v0*sin(angle)/gee ymax=v0*sin(angle)*tymax-0.5*gee*tymax**2 xymax= v0*cos(angle)*tymax xmax=2.0*xymax WRITE(*,*)theta,tymax,ymax,xymax,xmax END DO inner_loop END DO outer_loop END PROGRAM trajectory حلقه های تکرار عباسپور

ساختار هاي تكرار در C ساختار تكرار while تا زماني كه شرط خاصي بر قرار است عمليات داخل حلقه تكرار مي شود (مشابه Do WHILE در فرترن) شرط در ابتداي حلقه بررسي مي شود فرم كلي while (<logical exp>) <statement>; به صورت بلوك نيز قابل قبول است while (<logical exp>) { <statement1>; <statement2>; …….. <statement n>; } حلقه های تکرار عباسپور

مثال while محاسبه فاكتوريل يك عدد #include <stdio.h> void main(){ int i, number; long int factorial; printf("please enter the number:"); scanf("%d",&number); factorial=1; i=1; while (i<=number){ factorial*=i; i++; } printf("factorial of %d is %d", number, factorial); مثال while محاسبه فاكتوريل يك عدد حلقه های تکرار عباسپور

حلقه تكرار for در C‌ يك حلقه تكرار معين يا مطلق است مشابه حلقه do‌در فرترن فرم كلي for ( <exp1> ; <exp2> ; <exp3> ) <statement>; <exp1> : عبارت مربوط به مقدار دهي اوليه شمارنده <exp2> : شرط تكرار حلقه (در صورت درست بودن) عبارت مربوط به <exp3>: عبارت مربوط به نحوه افزايش متغير شمارنده حلقه مثال (چاپ اعداد بين صفر و 100 int count; for (count=0; count<=100; count++) printf(“%d”, count); چاپ اعداد مضرب 5 for (count=0; count<=100; count+=5) printf(“%d”, count); چاپ اعداد مضرب 5 بصورت معكوس for (count=100; count>=0; count -=5) printf(“%d”, count); حلقه های تکرار عباسپور

ادامه حلقه for در C حلقه بصورت بلوك نيز نوشته مي شود for ( <exp1> ; <exp2> ; <exp3> ){ statements ………. } قسمت مقدار دهي اوليه و شمارنده مي تواند شامل چند عبارت باشد كه توسط كاما جدا مي شوند for (a=0,b=100; b-a>50; a++, b--) قسمت شرطي مي تواند هر نوع شرط مركب باشد for (count=0; count<100 && sw==1; count++) مي توان هر يك از سه عبارت را خذف كرد for (; i<100; i++) //‌حذف مقدار دهي اوليه ( بايد شمارنده قبلاً به نحوي مقدار دهي شده باشد for (; i<100;) // حذف نحوه تغيير متغير (نحوه تغيير پيچيده و توسط برنامه نويس در داخل حلقه تعيين مي شود) for (i=0; ; i++) // شرط حذف شده است ( بايد به طريقي از تكرار بينهايت آن جلوگيري كرد) حلقه های تکرار عباسپور

#include <stdio.h> #include <values.h> void main(){ int i, n, number; int sum, max, min; float average; printf("please enter number of iteration:"); scanf ("%d",&n); sum=0; min= MAXINT; max=-MAXINT-1; for(i=1; i<=n; i++){ printf("please enter the number :"); scanf ("%d",&number); sum+= number; if (number>max) max=number; if (number<min) min=number; }// end of for loop average=(float) sum / (float) n; printf("average= %f, Maximum= %d, Minimum =%d", average, max, min); } مثال: برنامه اي بنويسيد كه تعدادي عدد را دريافت و كوچكترين و بزرگترين آنها را چاپ نمايد حلقه های تکرار عباسپور

مثال حلقه for متداخل: تعيين اعداد اول تا 1000 #include <stdio.h> void main(){ int number,i; int primDetect; printf("prim numbers between 1 and 1000:\n"); printf("1 2 "); number=3; // loop for numbers for (; number<=1000; number+=2){ primDetect=1; // loop for detecting prim number for (i=2; i< number&& primDetect==1; i++){ if (number%i==0) primDetect=0; } // end of inner for loop if(primDetect==1) printf("%d\n", number); }//end of outer for loop مثال حلقه for متداخل: تعيين اعداد اول تا 1000 حلقه های تکرار عباسپور