ciclos de repeticion fortran 90
DESCRIPTION
ciclos de repeticion fortranTRANSCRIPT
-
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