Académique Documents
Professionnel Documents
Culture Documents
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 . . . ) ...
<sentencia> ::= <sentencia simple> | <sentencia compuesta> <sentencia simple> ::= <sentencia de asignacin> | read . . . | write . . . | <sentencia vaca> <sentencia compuesta> ::= <sentencia secuencial> | <sentencia alternativa> | <sentencia iterativa>
Secuencia <accin> <accin> ... <accin> <sentencia secuencial> ::= begin <sentencia> {;<sentencia> } end
Seleccin simple (si . . . entonces . . . ) doble (si . . . entonces . . . si no . . . ) mltiple (segn el caso . . . ) <sentencia alternativa> ::= <alternativa simple> | <alternativa doble> | <alternativa mltiple>
accion 1
?
?
condicion ?
accion
condicion ?
accion 2
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>
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
10
Iteracin mientras
accion
condicion?
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
12
Iteracin repeat
accion
condicion? T
13
obtener dato mientras dato = centinela hacer tratar dato obtener dato n mientras
14
repetir obtener dato tratar dato hasta que dato (antes del tto.) = ltimo dato
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
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
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
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
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> |
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.
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>
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>