Vous êtes sur la page 1sur 9

PseudocdigoEstructurasdeControl

El teorema del programa estructurado, demostrado por BhmJacopini, demuestra que todo
programapuedeescribirseutilizandonicamentelastresinstruccionesdecontrolsiguientes:

Secuencia
Instruccincondicional.
Iteracin(bucledeinstrucciones)concondicinalprincipio.

Solamente con estas tres estructuras se pueden escribir todos los programas y aplicaciones
posibles. Si bien los lenguajes de programacin tienen un mayor repertorio de estructuras de
control,staspuedenserconstruidasmedianteestastresestructuras.

Secuencia

La secuencia ya la hemos visto, todos los programas que hemos hecho hasta ahora, la
secuenciaescuandocolocasunainstruccinacontinuacindeotra.

Condicional

Veamos nuestro ltimo ejemplo, el del can, sera interesante que el juego nos informara si
dimos en el blanco o no, pero ah tenemos una alteracin de la secuencia pues habr
instruccionesqueseejecutencuandosedaenelblancoporejemplo:

escribir"dioenelblanco"

einstruccionesqueseejecutencuandonodeenelblancoporejemplo:

escribir"NOdioenelblanco"

Entonces las secuencias sevan a ejecutar dependiendo de que se cumplaunacondicinpara


esoseusaunainstruccinespecialllamadaSI:

Siexpresion_logicaEntonces

acciones_por_verdadero
Sino

acciones_por_falso
FinSi

Donde dice expresin lgica debemos colocar una expresin que devuelva verdadero o falso,
por ejemplo: 8 > 4 es verdadero pero 8 < 4 es falso. Obviamente as se ve a simple vista
cuando da verdadero y cuando falso, es cuando usamos variables en que la estructura se

vuelve muy til, por ejemplo, en nuestro caso del can, tenemos que la variable x contiene la
distancia donde se encuentra el blanco, y en la variable d contiene la distancia donde cae la
bala, entonces si hacemos x=d nos dar verdadero si la bala cae en el blanco, sino nos dar
falso.EntoncespodramosescribirelSi:

Six=dEntonces

escribir"dioenelblanco"
Sino

escribir"NOdioenelblanco"
FinSi

Obviamentenoesnecesarioquehayaunanicaaccin:

Six=dEntonces

escribir"dioenelblanco"
escribir"Muybuenapuntera"
Sino

escribir"NOdioenelblanco"
escribir"Mejorsuerteenelprximodisparo"
FinSi

Tampoco es obligatorioqueexistanaccionesporfalso,sinosonnecesariasporqueporfalsono
sehacenadaseomiteesaparte,porejemplo:

Six=dEntonces

escribir"dioenelblanco"
escribir"Muybuenapuntera"
FinSi

Las operaciones bsicas lgicas son las comparativas, mayor que (>), menor que(<),igual(=
o ==) y diferente (<> o!=) y adems mayorigual(>=)ymenorigual(<=),asque cualquierade
lassiguientesoperacionessonvlidas:

a>6
b<=5
c=4
d=a
e<>8
f!=9

Es de notar que el smbolo elegido para diferente no es el igual tachado como cuando se
escribe manualmente, igual que en el caso de la multiplicacin y la divisin, existen dos
modelos el <> que se usan en algunos lenguajes y el !=quese usaenotros,esteeselquese

usa en C/C++ y ya que da lo mismo cualquiera de los dos es el que se va a usar en los
ejemplos.
Tambin habrn notado que hay dos modelos para el igual,el que tiene un igual (=) y el que
tiene dos (==),estoesporquetambindependiendodellenguajedeprogramacin seusaunou
otro, en el caso del C/C++ usael doble (==)yaqueevitaqueseconfundaconla asignacinde
variablesqueusauno(=)

Hay casos en que necesitarn saber cuando, por ejemplo, dos variables tomen a la vez un
valor, por ejemplo, queremos haceralgocuandonuestropersonajelleguealacoordenadax=10
ey=15entoncestendramosquehacer:

Six==10Yy==15Entonces
escribir"estamosdondequeramos"
FinSi

Esa Y es lo que llamamos operador de conjuncin y significa que para que la expresin total
sea verdadera ambas expresiones tienen que ser verdaderas.Los otros operadores son el O
queesladisyuncinyelNOqueeslanegacin.Sianuestroejemploloescribiramoscomo:

Six==10Oy==15Entonces
escribir"estamosdondequeramos"
FinSi

La expresin total sera verdadera tan solo con que cualquiera de las dos sea verdadera, por
ejemplosixvale11peroyvale15todalaexpresinseraverdadera.

Si notan queesmuyparecidoallenguajehumanoesporqueloes,dehecho,estasexpresiones
fueron sistematizadas por el matemtico George Boole en lo que se llama lgebra de Boole,
quien la cre a partir de la observacin del lenguaje humano y como expresamos las
condiciones, por ejemplo voy a ayudarte si hay un buen clima Y estoybien de salud, en este
caso tiene que haberunbuenclimayestar biende saludparaayudaroseaambascondiciones
tienen que ser verdaderas. Y si decimos: ganar si llego primero O losdemsabandonan,con
que una de las dos expresiones sea verdadera se cumple, ya sea que llegueprimerolocualla
primeraexpresinseraverdadera,olosdemsabandonenlocualseraverdaderalasegunda.

ElNOesmuchomssimpledecomprender:

SiNOx==10Entonces
escribir"xnovale10"
FinSi

El NO es para negar lo que viene, en el lenguajesera:voyaayudartesiNOhayunbuenclima


Y estoy bien de salud, o sea tiene que haber un mal clima para ayudar, en elcasodelejemplo
serverdaderosixesdiferentede10.

As como en el lgebra aritmtica tenamos las precedencias para resolver las operaciones en
el lgebra de Boole tambin, todas las operaciones con la mismaprecedenciaseresuelven de
izquierda a derecha, las de ms alta precedencia son las comparaciones, luego viene la
negacin, luego la conjuncin y por ltimo la disyuncin, yobviamente los parntesis obligan a
resolverprimero.

ExisteunaespecializacindelSiparauncasoparticularysera:

Segunvariable_numericaHacer

opcion_1:

secuencia_de_acciones_1

opcion_2:

secuencia_de_acciones_2

opcion_3:

secuencia_de_acciones_3

DeOtroModo:

secuencia_de_acciones_dom

FinSegun

Su funcionamiento es sencillo, donde dice variable_numerica debe ir una variable que tome
nmeros enteros o equivalente. Luego en las opciones van las acciones para cada valor en
particular y en De Otro Modo ira la secuencia que correspondera a los dems valores, por
ejemplo tenemos una tirada de 6 valores al azar y queremos que si sale 0 sume una vida, si
sale1resteunavidaysisaleelrestodelosnmerossume100puntos:

definiracomoNUMERO
a=azar(6)
SegunaHacer

0:

vida=vida+1

1:

vida=vida1

DeOtroModo:

puntos=puntos+100

FinSegun

Repeticin

Miremos nuevamente nuestro ejemplo del can, el cdigo de cada disparo es exactamente
igual para todos con la excepcin de pequeos cambios en los mensajes, para estos casos
tenemos las estructuras de repeticin que nos permiten volver a recorrer la secuencia de
instrucciones tantas veces como necesitemos, existen tres versiones segn las necesidades,
lamssimpleescuandoconocemoslacantidaddevecesarepetir,esasellamaPara:

Paravariable_numerica=valor_inicialHastavalor_finalConPasopasoHacer

secuencia_de_acciones
FinPara

EnelejemplodelcanusamoselPara:

x=azar(201)+100//seobtieneunadistanciaalazar
escribir"IntentadarenelBlanco"
escribir"Paraellotienescincobalas"
escribir"Teindicarequetanlejosdelblancohashechoimpacto"
escribir"Elblancoseencuentraa",x,"metros"
escribir""
Paran=1Hasta5ConPaso1Hacer
escribir"introduceelangulodedisparo",n,":"
leera
d=V0^2*sen(2*a*PI/180)/G//calculodeladistancia
escribir""
escribir"Labalacayoa",d,"metros."
escribir""
FinPara

Adems tenemos la ventaja de que podemos cambiar la cantidad de veces con solo variar el
nmeroenelPara,siqueremosquesean10veces,cambiamosel5porel10.

Las otras dos formassonparacuandonosabemos cuantasvecessedeberepetir,sinoquese


repitehastaquepaseunacondicinoserepitemientrassemantengauna.

Mientrasexpresion_logicaHacer

secuencia_de_acciones
FinMientras

El Mientras repite la secuencia mientras la expresin_logica sea verdadera. Si cuando


comienza la expresion_logica es falsa no ejecuta la secuencia ya que lo primero que hace es
evaluarlaexpresinencadaciclo.


Repetir

secuencia_de_acciones
HastaQueexpresion_logica

El Repetir repite la secuencia hasta que la expresion_logica sea verdadera. La secuencia de


accionesseejecutaalmenosunavezyaquelaexpresinseevalaalfinaldecadaciclo.

En este momento ya estamosencondicionesdehacerprogramasmscomplejos,unejercicio


interesante sera modificar nuestro ejemplo del can para que nos diga si acertamos y a su
vezusarunaestructuraderepeticinparahacerlomscorto.

Peropodemosirpracticandodeapoco:

pedirunnmeroydecirsiespositivoonegativo
pedirunnmeroydecirsiesparoimpar
pedirdosnmerosydecircualesmayorysisoniguales?
pedir un nmero, asegurarse dequeespositivo,entoncesmostrartodoslosimpareshastaese
nmero.
Siesnegativomostrarlospares.
Adems de mostrar los impares si es positivoo los pares si es negativo informar la suma de
todosellos.

EquivalenciasconC/C++

Condicional

El equivalente del Si es el if,la diferencia es que no se escribe elEntonces,elsinoeselelsey


elpuntoycoma()hacedeFinPara.

Los equivalentes de las expresiones, ya vimos que eran lasmismas para menor <, mayor >,
menorigual<=ymayorigual>=,paraiguales==yparadiferentees!=

paraYes&&
paraOes||
paraNOes!

detalmaneraquelaexpresin:

NO(x==10)Yy>20

seraenC/C++:

!(x==10)&&(y>20)

ElequivalentedeSegunesswitch:

switch(<variable>)
{
case<expresin_constante>:[<sentencias>][break]
...
[default:[<sentencias>]]
}

detalmaneraquenuestropseudocdigo:

SegunaHacer

0:

vida=vida+1

1:

vida=vida1

DeOtroModo:

puntos=puntos+100

FinSegun

Sepuedetraducircomo:

switch(a)
{
case0:vida=vida+1break
case1:vida=vida1break
default:puntos=puntos+100
}

La sentencia break siempre cierra los case, sino se coloca ejecutar las sentencias del
siguientecase.

Repeticin

Mientras

De los tres casos de repeticin solo el Mientras tiene unaequivalenciadirecta,estoesporque


el C fue creado con anterioridad a la postulacin del paradigma estructurado con lo que los
demstienenvariaciones.

Mientrasexpresion_logicaHacer

secuencia_de_acciones
FinMientras

equivaleenC/C++a:

while(expresion_logica)
{
secuencia_de_acciones
}

Repetir

ElRepetirhastasereemplazaporeldowhile:

Repetir

secuencia_de_acciones
HastaQueexpresion_logica

enC/C++sera:

do{
secuencia_de_acciones
}while(expresion_logica)

Comparten con el Repetir el hecho de que evala la expresin alfinal por lo cual garantiza al
menos una vez la ejecucin de la secuencia de acciones. Lo que tiene de diferente y hay que
prestarmuchaatencinaestoesquerepitelasaccionesmientraslacondicinseaverdadera.

Para

El Para eselquetienelamayordiferencia,elParadelC/C++esmsparecidoalMientrasque
alParadelpseudocdigo.LainstruccinforeselequivalenteaPara.


Paravariable_numerica=valor_inicialHastavalor_finalConPasopasoHacer

secuencia_de_acciones
FinPara

enC/C++sera:

for(variable_numerica=valor_inicial expresion_logica operacin de incremento o decremento


variable_numrica)
{
secuencia_de_acciones
}

Conunejemplosepuedevermsclaro:

Paran=1Hasta10ConPaso1Hacer
escribir"Ejecutlavuelta",n
FinPara

yenC/C++sera:

for(n=1n<11++n)
{
cout<<"Ejecutlavuelta"<<n<<endl
}

Como vemos imprimir hasta 10 porque cuando ndejedesermenora11dejardeejecutarse


(como el while), y otra cosa para hacer notar es que donde dice++n puede ser reemplazado
porcualquieroperacin,porejemploestotambinfuncionaigual:

for(n=1n<=10n=n+1)
{
cout<<"Ejecutlavuelta"<<n<<endl
}

Tambin fjense que el paso se puede variar en la operacin sobrela variable, por ejemplo si
quisiramosquenavancededosendos

for(n=1n<=10n=n+2)
{
cout<<"Ejecutlavueltaconn="<<n<<endl
}

Vous aimerez peut-être aussi