Ciclos de repeticion fortran 90

Embed Size (px)

DESCRIPTION

ciclos de repeticion fortran

Citation preview

  • CICLOS DE REPETICIN (Fortran 90)

    Expositores:

    AimeeOsorioAnguianoAntonioMartinezMoralesDanAdrinAlbaMontiel

  • ESQUEMASREPETITIVOSENFORTRAN90

    QUESUNESQUEMAREPETITIVOENFORTRAN?

    Unaestructuraderepeticin,tambinllamadalazoobucle,haceposiblelaejecucinrepetidadeseccionesespecficasdecdigo.

    SEPUEDENDIVIDIRDELASIGUIENTEMANERA:

    CiCiclosinteractivos(CI):Buclesdondeelnmerodeiteracionesesfijoyconocido

    deantemano.

    Cicloswhile(CW):Cicloswhile(CW):BuclesdondeelnumerodeiteracionesesBuclesdondeelnumerodeiteracioneses

    desconocidodeantemano.desconocidodeantemano.

    EnestecasoelbucleserepitemientrasseEnestecasoelbucleserepitemientrasse

    cumpleunadeterminadacondicin(buclescumpleunadeterminadacondicin(bucles

    condicionales).condicionales).

  • TIPOSDEESQUEMA

    CICLOSDEREPETICIN

    CICLOSINTERACTIVOS

    CICLOSWHILE

    CICLODO

    CICLODOWHILE

    CICLODO+EXIT

    CICLODOCYCLE

  • CICLOSINTERACTIVOS

    (nmerodeiteracionesfijoyconocido)

  • ESQUEMADO

    Sintaxis:Sintaxis:DOindice=valorinicial,valorfinal,incremento

    ENDDO

    Descripcin:Elindiceesunavariableenteraque,actuandocomouncontador,permitecontrolarelnmerodeejecucionesdelciclo.

    Losvalorinicialyvalorfinalsonvaloresenterosqueindicanloslmitesentrelosquevarandicealcomienzoyfinaldelbucle.

    Elincrementoeselaumentosobreelindicedespusdeunaiteracin,estospuedensermayoresoigualesalaunidadeinclusonegativos.

    ElnmerodeiteracionesdelbucleesN=valorfinalvalorinicial+1

    Dentrodelasinstruccionesdelbuclenoeslegalmodificarlavariablendice,porlotanto,lautilidaddelavariablendiceselimitaalaestructuradeiteracin.

  • Programa ejemplo ciclo DOPROGRAMpromedio_DO !Iniciodelprograma!!ProgramaejemplodecicloDO!!Declaracindetipodevariables(Ningunaimplcita)!IMPLICITNONEinteger::i!valorinicialdelbucleinteger::n!nmerodetrminosasumarreal::suma!valordelasumareal::x!valordeelemento!!Mensajeamigablealusuario!CALLSYSTEM("clear")WRITE(*,*)"************************************"WRITE(*,*)EsteprogramacalculaelpromediodennmerosWRITE(*,*)WRITE(*,*)InserteelnmerodeelementosdesusumaREAD(*,*)n!Lecturadevalordetrminosasumar!!Inicializamoslasuma!suma=0.0DOWHILE((n
  • !!IniciodecicloDO!DOi=1,nWRITE(*,*)Inserteelelemento,iREAD(*,*)xsuma=x+sumaENDDO!!Finciclodo!suma=suma/n!!Salidadedatos!WRITE(*,*)"Elpromedioes",suma

    !!Terminodelprograma!

    ENDPROGRAMpromedio_DO

    Programa ejemplo ciclo DO

  • Nombre: DO ndice = inicio, fin,incremento

    IF (expresin_lgica) CYCLE Nombre

    END DO Nombre

    SITAXISDEUNBUCLEITERATIVOCONNOMBRE:

  • CICLOSWHILE

    (nmerodeiteracionesindefinidoycondicinconocida)

  • ESQUEMADOWHILE

    Sintaxis:Sintaxis:DOWHILE()

    ENDDO

    Descripcin:Esequivalentealbuclemientrasdellenguajealgortmico

    Nosesabeaprioridadelnmerodeiteraciones

    Slosiescierta,seejecutaelbucle(sentenciasdentrodeldowhile).

    CadavezquesealcanzaENDDOvuelveaevaluarselaexpresinlgica

    Elbuclepuedeejecutarsedecerooinfinitasveces

    Semantieneporcompatibilidadconotroslenguajes

  • Programa ejemplo 1 ciclo DO WHILE

    PROGRAMcuento_DO_WHILE !Iniciodelprograma!!ProgramaejemplodecicloDOWHILE!!Declaracindetipodevariables(Ningunaimplcita)!IMPLCITNONEcharacter(20)::entrada!variabledecondicinenla!!Mensajeamigablealusuario!WRITE(*,*)Deseassabercomopasarprogramacin2?(s/n)READ(*,*)entrada!Lecturadevariables

  • !!Iniciodeciclodo!DOWHILE((entrada/=s).OR.(entrada/=n))WRITE(*,*)Segurodeseassabercomoaprobar?...(s/n)

    READ(*,*)entradaIF((entrada=="s").OR.(entrada=="S"))THENWRITE(*,*)"Estudiamuchito(:"EXITENDIFIF((entrada=="n").OR.(entrada=="N"))THENWRITE(*,*)"Graciasporutilizarelprograma"EXITENDIF

    ENDDO!!Finciclodo!!Terminodelprograma!ENDPROGRAMcuento_DO_WHILE

    Programa ejemplo 1 ciclo DO WHILE

  • ESQUEMA DO + EXITSintaxis

    DO

    IF()EXIT

    ENDDO

    Descripcin Equivalente al esquema general de repeticiones (iterar-salir-si)

    Tambin, implementa los esquemas mientras y repetir

    Puede utilizarse en lugar del bucle DO-WHILE-END DO

    Si existen, se ejecutan el conjunto de

    Despus se comprueba si la es cierta:

    Si es cierta en ese caso se sale del bucle (avanza a la instruccin tras END DO)

    Si es falsa, se ejecutan las y se vuelve a entrar al DO

  • Programa ejemplo DO + EXIT

    PROGRAMSUMA_DO_EXIT !Iniciodelprograma!!ProgramaejemplodecicloDOWHILE!Declaracindetipodevariables(Ningunaimplcita)!IMPLICITNONEinteger::i,suma,n!!Mensajeamigablealusuario!WRITE(*,*)Esteprogramacalculalasumadennmerosenteros!!Inicializamosdevariables!suma=0i=0!IniciodecicloDo+EXIT(Compruebaqueloslmitesseancorrectos)!DOWRITE(*,*)"Cuantosnmerosquieressumar(max.100)?"

  • READ(*,*)nIF((n>=0).and.(nn)EXITsuma=suma+ii=i+1ENDDO!!FindelcicloDO!Salidadedatos! WRITE(*,*)"Lasumade",n,"enteroses",suma!!Terminodelprograma!ENDPROGRAMSUMA_DO_EXIT

    Programa ejemplo DO + EXIT

  • ESQUEMA DO CYCLE

    Sintaxis

    IF () CYCLE (NOMBRE)

    Descripcin Puede utilizarse dentro de los esquemas DO -- END DO

    Si se cumple la expresin lgica, se pasa directamente al END DO y se vuelve al inicio: DO o DO WHILE.

    Puede llevar asociado el nombre del bucle DO asociado.

    Su uso no es necesario, disponiendo de IF-THEN-ELSE y variables lgicas adecuadas NO DEBE USARSE.

  • Programa ejemplo DO CYCLE

    fuera: do i=1,n

    medio: do j=1,m

    dentro: do k = 1, l

    read (*,*) x

    if (x < 0.0) exit fuera

    if (j == 5) cycle medio

    if (K == 7) cycle fuera

    end do dentro

    end do medio

    end do fuera

  • SINTAXISDECICLOWHILECONNOMBRE

    nombre: DO

    IF (expresin_lgica) CYCLE nombre

    IF (expresin_lgica) EXIT nombre

    END DO nombre

  • CICLOS/BUCLES ANIDADOS DENTRO DE ESTRUCTURAS IF Y VICEVERSA

  • CICLOS ANIDADOS DENTRO DE ESTRUCTURAS IF

  • PROGRAMfactorial !Iniciodelprograma!!ProgramaejemplodecicloDO!!Declaracindetipodevariables(Ningunaimplcita)!IMPLICITNONEinteger::i!valorinicialdelbucleinteger::n!nmerodetrminosasumarreal::fact!fact!!Mensajeamigablealusuario!CALLsystem("clear")WRITE(*,*)"************************************"WRITE(*,*)"Esteprogramacalculaelfactorial"WRITE(*,*)""WRITE(*,*)"Inserteelnumerodefactorialquedeseacalcular"READ(*,*)n!Lecturadevalordetrminosamultiplicar!!Inicializamoselfactorial!fact=1.0

    Programa ejemplo Do anidado en estructura IF

  • !!EstructuraIF!IF(n>=0)THEN!!CicloDOanidado!

    DOi=1,nfact=fact*i

    ENDDO!!FincicloDOanidado!WRITE(*,*)"Elfactorialde",n,"es",fact

    ELSEIF(n

  • ESTRUCTURAS IF DENTRO DE CICLOS DO

  • PROGRAMmetodo_de_newton !Iniciodelprograma!!ProgramaejemplodeestructuraIFanidadaencicloDo!!Declaracindetipodevariables(Ningunaimplcita)!IMPLICITNONEinteger::i!valorinicialdelbucleinteger::nmax=500!valorfinaldelbuclereal::x1,eps=1E7,df,f!puntoinicial,psilon,derivada,funcin!!Mensajeamigablealusuario!CALLsystem("clear")WRITE(*,*)"************************************"WRITE(*,*)"Esteprogramalasraicesdelafuncionsenx"WRITE(*,*)""WRITE(*,*)"InserteelpuntoinicialXoen[0,2pi]"READ(*,*)x1!Lecturadepuntoinicial

    Programa ejemplo estructura IF anidado en ciclo DO

  • !!CicloDO!DOi=1,nmaxf=sin(x1)!!EstructuraIFanidado!

    IF(f

  • Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26