Vous êtes sur la page 1sur 11

6.

Estructuras bsicas de control

Pseudocdigo Acciones Estructuras de control Secuencia Seleccin simple (si . . . entonces . . . ) doble (si . . . entonces . . . si no . . . ) mltiple (segn el caso . . . ) Iteracin con condicin al principio (mientras . . . hacer . . . ) con condicin al nal (repetir . . . hasta que . . . ) controlada por contador (para . . . ) ...

6. Estructuras bsicas de control

<sentencia> ::= <sentencia simple> | <sentencia compuesta> <sentencia simple> ::= <sentencia de asignacin> | read . . . | write . . . | <sentencia vaca> <sentencia compuesta> ::= <sentencia secuencial> | <sentencia alternativa> | <sentencia iterativa>

6. Estructuras bsicas de control

Secuencia <accin> <accin> ... <accin> <sentencia secuencial> ::= begin <sentencia> {;<sentencia> } end

6. Estructuras bsicas de control

Seleccin simple (si . . . entonces . . . ) doble (si . . . entonces . . . si no . . . ) mltiple (segn el caso . . . ) <sentencia alternativa> ::= <alternativa simple> | <alternativa doble> | <alternativa mltiple>

6. Estructuras bsicas de control

Alternativa simple si <condicin> entonces <acciones> n si

if <expresin lgica> then <sentencia>

6. Estructuras bsicas de control

Alternativa doble si <condicin> entonces <accionesT> si no <accionesF> n si


F T

accion 1

if <expresin lgica> then <sentenciaT> else <sentenciaF>

?
?

condicion ?

accion

condicion ?

accion 2

6. Estructuras bsicas de control

if a<0 then a := a+1 else a := a-1

if a<0 then a := a+1 ; if a>=0 then a := a-1

if a>= 0 then a := a-1; if a<0 then a:= a+1

6. Estructuras bsicas de control

Iteracin con condicin al principio (mientras . . . hacer . . . ) con condicin al nal (repetir . . . hasta que . . . ) controlada por contador (para . . . ) ... <sentencia iterativa> ::= <sentencia while> | <sentencia repeat> | <sentencia for>

6. Estructuras bsicas de control

Condicin de permanencia/terminacin del bucle Nmero de veces que se realizan las acciones Nmero de veces que se evala la condicin Correccin parcial: Si el bucle termina, obtiene el resultado deseado Terminacin: El bucle termina

6. Estructuras bsicas de control

10

Iteracin mientras

mientras <condicin> hacer <acciones> n mientras

accion

condicion?

while <expresin lgica> do <sentencia>

6. Estructuras bsicas de control

11

Acumulador: (aditivo, multiplicativo . . . ) Iniciacin al elemento neutro de la operacin. Una vez. Actualizacin: n veces: <var> := <var> <op> <expresin> Contador: (sobre tipo ordinal) Iniciacin al valor inicial. Una vez. Actualizacin: n veces: <var> := succ (<var>) <var> := pred (<var>)

Sucesin explcita o calculada: ai = f (i) i 0 Sucesin implcita o recurrente: a0 ai := valor base := f (i, ai1 ) i 1

6. Estructuras bsicas de control

12

Iteracin repeat

repetir <acciones> hasta que <condicin>


F

accion

condicion? T

repeat <sentencias> until <expresin lgica>

6. Estructuras bsicas de control

13

Control de bucles por centinela

obtener dato mientras dato = centinela hacer tratar dato obtener dato n mientras

6. Estructuras bsicas de control

14

Control de bucles por ltimo dato

repetir obtener dato tratar dato hasta que dato (antes del tto.) = ltimo dato

6. Estructuras bsicas de control

15

Control de bucles por ndice iniciar ndice con la expresin inicial mientras ndice expresin nal hacer realizar accin (cuidado con lo que se modica) actualizar el ndice n mientras

Caso frecuente: contador contador expresin inicial mientras contador expresin nal hacer realizar accin (cuidado con lo que se modica) incrementar el contador (contador contador + expresin) n mientras

6. Estructuras bsicas de control

16

Control de bucles por bandera 1 o mas veces repetir proceso mostrar Quiere repetir? leer respuesta hasta que respuesta sea negativa 0 o mas veces mostrar Quiere realizar el proceso? leer respuesta mientras respuesta sea armativa hacer proceso mostrar Quiere seguir realizando el proceso? leer respuesta n mientras

6. Estructuras bsicas de control

17

Control por n de datos En el archivo mientras haya datos (not eof) hacer leer dato procesar dato n mientras En la lnea mientras haya datos (not eoln) hacer leer dato procesar dato n mientras

6. Estructuras bsicas de control

18

mientras haya lneas (not eof) hacer (* procesar lnea: *) proceso previo a la lnea mientras haya datos (not eoln) hacer leer dato procesar dato n mientras proceso de nal de lnea n mientras

6. Estructuras bsicas de control

19

condicional mltiple case <expresin ordinal> of <elemento lista case> {; <elemento de lista case> } <parte else optativa (NO ESTNDAR)> end <elemento de lista case> ::= <lista de rtulos de case> : <sentencia> | <vaca> <lista de rtulos de case> ::= <rtulo case> {,<rtulo case> } <rtulo de case> ::= <constante> | <constante> .. <constante> <parte else optativa> ::= ; else <sentencia> |

6. Estructuras bsicas de control

20

Program DiasDeMes (input, output); type tnatural = 1 .. maxint ; tmeses = 1 .. 12 ; var mes: tmeses; anyo : tnatural ; BEGIN write (output, Mes y ao:); readln (input, mes, anyo); case mes of 1,3,5,7..8,10,12 : writeln (output, 31); 4,6,9,11 : writeln (output, 30); 2 : if (anyo mod 4 = 0) and (anyo mod 100 <>0) or (anyo mod 400 = 0) then writeln (output, 29) else writeln (output, 28) end (* case *) END.

6. Estructuras bsicas de control

21

Iteracin controlada por ndice ordinal <identVar>:= <expInicial>; while <identVar><= <expFinal> do begin <sentencia>; <identVar>:= succ(<identVar>) end for <identVar>:= <expInicial> to <expFinal> do <sentencia>

6. Estructuras bsicas de control

22

Iteracin controlada por ndice ordinal <identVar> := <expInicial> ; while <identVar> <= <expFinal> do begin <sentencia> ; <identVar> := pred (<identVar> ) end for <identVar> := <expInicial> downto <expFinal> do <sentencia>

Vous aimerez peut-être aussi