Está en la página 1de 21

Captulo 1

En este captulo se tratarn varios temas bsicos referentes a el uso de algoritmos y


pseudocodigos. El papel de los programas de computadoras es esencial, sin una lista
de instrucciones a seguir, la computadora es virtualmente intil. Los lenguajes de
programacin nos permiten escribir esos programas y por consiguiente comunicarnos
con las computadoras.
Mucha gente piensa que estudiar metodologa de la programacin es una cosa ardua y muy
aburrida. Intentare hacer que esto no sea as y que todo lo que aprendas a partir de este
momento te sea de mucha utilidad para la creacin de esos programas que tienes en mente.
Si todava no ves claro el porqu de la metodologa mira el siguiente ejemplo, despus ya me
dirs que opinas.
Imaginate que deseas realiar un programa sobre el calculo de horas a pagar de un trabajador promedio, y
solo llegas a sentarte !rente a tu computadora sin haber planeado como en!rentar el programa, llevas horas y
horas ingresando codigo y probando los resultados. "uego de # horas te desesperas y a$n no has llegado a
resolver lo del pago de horas adicionales trabajadas%.
&qui ves un ejemplo de lo que puede suceder si solamente llegas a escribir codigo y codigo sin
haber plani!icado antes lo que haras en el programa.
Estos son los temas a tratar en este captulo:
Resolucin de Problemas con Computadora
Fases para la resolucin de Problemas
1. Diseo de Algoritmos
2. mplementacin del Algoritmo
!. Depuracin
"ipos de Datos
denti#cador
$peradores de Programacin
Precedencia de $peradores
Escritura % &ectura de Datos
La esolucin de !roblemas tili"ando la Computadora
#un$ue el proceso de dise%ar programas es un proceso creativo, se pueden considerar
una serie de fases o pasos comunes, $ue generalmente deben seguir todos los
programadores.
"a resolucin de problemas con computadoras se pueden dividir en tres !ases'
&nlisis del problema
(ise)o del algoritmo
*esolucin del algoritmo en la computadora
+l anlisis y el dise)o del algoritmo requiere la descripcin del problema en subproblemas a base
de refinamientos sucesivos y una herramienta de programacin'
(iagrama de !lujo
(iagrama ,-S
.seudocdigo
(urante la tercera etapa se implementa este algoritmo en un cdigo escrito en un lenguaje de
programacin, re!lejando las ideas obtenidas en las !ases de anlisis y dise)o.
&ntes de conocer las tareas a realiar en cada !ase, de!iniremos el concepto y signi!icado de la
palabra algoritmo.
Qu es Algoritmo?
Se deriva de la traduccin al latn de la palabra rabe &l/ho0arismi, nombre de un matemtico y
astrnomo rabe que escribi un tratado sobre manipulacin de n$meros y ecuaciones en el
siglo I1.
2n algoritmo es un mtodo para resolver un problema mediante una serie de pasos precisos,
de!inidos y !initos.
Caractersticas del Algoritmo
preciso, tiene que indicar el orden de realiacin en cada paso.
de!inido, es decir, si el algoritmo se prueba dos veces, en estas dos pruebas, se debe
obtener el mismo resultado.
!inito, es decir, que el algoritmo tiene que tener un n$mero determinado de pasos.
(ebe producir un resultado en un tiempo !inito.
+jemplos de algoritmos son'
Ver una pelcula
1. Buscar el videocasette de la pelcula
2. SI el televisor y la video se encuentran apagados, encenderlos
3. Sacar el video del estuche
4. Introducirlo en la videocasetera
5. Tomar el control del televisor y la video
. !iri"irme a el so#a
$. %onerme comodo
&. !is#rutar la pelcula
3jate como he descrito en estos pasos el algoritmo para poder ver una pelcula en la video, este
peque)o algoritmo cumple con los requisitos descritos arriba, ya que cada paso precisa un orden
y tiene un orden de pasos !initos. +n este algoritmo aparece la palabra SI remarcada en
may$sculas, el uso de esta palabra la veremos mas adelante, cuando discutamos sobre el
control del !lujo del programa o estructuras de control.
"os algoritmos se pueden e#presar por !rmulas, diagramas de !lujo, y pseudocdigos conocidos
como herramientas de programacin. +st $ltima representacin es la mas utiliada por su
sencille y parecido a el lenguaje humano.
4omo ejercicio te recomendara que escribieras algunos algoritmos de sucesos en tu vida
cotidiana, como por ejemplo' encender el auto,ir al cine,etc..
&ases para la esolucin de !roblemas
En esta seccin describire brevemente las fases o pasos a seguir para la resolucin de
problemas con ayuda de la computadora.
Anlisis del Problema
+sta !ase requiere una clara de!inicin donde se contemple e#actamente lo que debe hacer el
programa y el resultado o solucin deseada.
(ado que se busca una solucin se precisan especi!icaciones de entrada y salida.
.ara poder de!inir bien un problema es conveniente responder a las siguientes preguntas'
56u entradas se requieren7 8cantidad y tipo9
54ul es la salida deseada7 8cantidad y tipo9
56u mtodo produce la salida deseada7
Diseo del Algoritmo
+n la !ase de anlisis en el proceso de programacin se determina que hace el programa. +n la
!ase de dise)o se determina como hace el programa la tarea solicitada.
"os mtodos utiliados para el proceso del dise)o se basan en el conocido divide y vencers. +s
decir la resolucin de un problema complejo se realia diviendo el problema en subproblemas y a
continuacin dividir estos subproblemas en otros de nivel mas bajo, hasta que sea implementada
una solucin en la computadora. +ste mtodo se conoce tecnicamente como dise)o descendente
8top-do0n9 o modular.
4ada programa bien dise)ado consta de un programa principal 8el mdulo de nivel mas alto9 que
llama a subprogramas 8mdulos9 de nivel mas bajo, que a su ve pueden llamar a otros
subprogramas.
"os mdulos pueden ser planeados, codi!icados, comprobados y depurados independientemente
y a continuacin combinarlos entre s. +ste proceso implica la ejecucin de estos pasos hasta
que el programa se ha terminado'
.rogramar un mdulo
comprobar el mdulo
Si es necesario, depurar el mdulo
4ombinar el mdulo, con el resto de los otros mdulos
+l dise)o del algoritmo es independiente del lenguaje de programacin en el que se vaya a
codi!icar posteriormente.
Implementacin del Algoritmo
.ara implementar un algoritmo en la computadora, se debe ejecutar los siguientes pasos'
4odi!icacin
4ompilacin y ejecucin
:eri!icacin
(epuracin
(ocumentacin
4odi!icacin' +s la escritura en un lenguaje de programacin de la representacin de un
algoritmo. (ado que el dise)o del algoritmo es independiente del lenguaje de programacin
utiliado en su implementacin, el cdigo puede ser escrito con igual !acilidad en un lenguaje o
en otro.
4ompilacin y ejecucin' 2na ve que el algoritmo se ha convertido en un programa !uente, es
preciso introducirlo en memoria mediante el teclado y almacenarlo posteriormente en un disco.
+sta operacin se realia con un editor de te#to, posteriormente el programa !uente se convierte
en un archivo de programa que se guarda en un disco.
+l programa !uente debe ser traducido a lenguaje mquina. +ste proceso se realia con el
compilador y el sistema operativo que se encarga practicamente de la compilacin. Si al compilar
el programa !uente se presentan errores 8errores de compilacin9, es necesario volver a editar el
programa, corregir los errores y compilar de nuevo. +sto se repite hasta que ya no se presenten
mas errores, obteniendose el programa objeto, el cual todava no es ejecutable directamente. &l
ya no e#istir errores en el programa !uente se debe instruir al sistema operativo para que
e!ectue la !ase de montaje o enlace, del programa !uente con las librerias del programa del
compilador. +ste proceso de montaje produce un programa ejecutable.
4uando se ha creado un programa ejecutable este se puede ya ejecutar desde el sistema
operativo con solo teclear su nombre.
Suponiendo que no e#isten errores durante la ejecucin 8errores en tiempo de ejecucin9, se
obtendr la salida de resultados:eri!icacin y depuracin' +s el proceso de ejecucin del
programa con una amplia variedad de datos de entrada, llamados datos de test o prueba como
son' valores normales de entrada, valores e#temos de entrada que comprueben los lmites del
programa y valores de entrada que comprueben aspectos especiales del programa. +stos
determinarn si el programa contiene errores o no.
&l ejecutar un programa se pueden producir tres tipos de errores'
+rrores de 4ompilacin' Se producen normalmente por un uso incorrecto de las reglas
del lenguaje de programacin, suelen ser errores de sinta#is.
+rrores de +jecucin' Se producen por instrucciones que la computadora puede
comprender pero no ejecutar. +n estos casos se detiene la ejecucin del programa y se
imprime un mensaje de error. +jemplo de esto puede ser una divisin por cero.
+rrores "gicos' Se producen en la lgica del programa y la !uente del error suele ser el
dise)o del algoritmo, son mas di!iciles de detectar puesto que el programa puede
!uncionar y no producir errores de compilacin ni de ejecucin pero regresar resultados
incorrectos. +n este caso se debe regresar a la !ase de dise)o, modi!icar el algoritmo,
cambiar el programa !uente y compilar y depurar una ve mas.
(ocumentacin' "a importancia de la documentacin debe ser destacada por su in!luencia en la
etapa !inal, ya que programas pobremente documentados son di!iciles de leer, mas di!iciles de
depurar y casi imposibles de mantener y modi!icar.
.uede ser interna y e#terna. "a documentacin interna es la contenida en lineas de comentarios.
"a documentacin e#terna incluye anlisis, diagramas de !lujo y;o pseudocodigos, manuales de
usuarios con instrucciones para ejecutar el programa y para interpretar los resultados.
"a documentacin es vital cuando se desea corregir posibles errores !uturos o bien cambiar el
programa. +stos cambios se denominan mantenimiento del programa.
&dems es de buena costumbre para todo buen programador, dejar comentado su codigo, esto
es para que el !uturo programador pueda darle mantenimiento !cilmente a el programa, o
incluso, si es el mismo creador quien debe darle mantenimiento.
Herramientas de Programacin
"as herramientas de programacin mas utiliadas comunmente para dise)ar algoritmos son'
.seudocodigos
(iagramas ,-S
(iagramas de !lujo
Siendo el pseudocodigo el mas popular por su sencille y su parecido a el lenguaje humano
correctos del programa.
'ipos de (atos
Los diferentes objetos de informacin con los $ue un programa trabaja se denominan
datos.
<odos los datos tienen un tipo asociados con ellos que nos servir para poder conocer con que
in!ormacin trabajaremos. +s decir, cuando ingresemos el sueldo de un trabajador necesitamos
que este contenga decimales, o al solicitar la edad de una persona est tiene que estar con
numeros enteros, etc.. &dems la suma entre caracteres no tiene sentido.
"a asignacin de tipos a los datos tiene dos objetivos principales'
(etectar errores de operaciones aritmticas en los programas
(eterminar como ejecutar las operaciones
ipos de Datos Comunes
+stos son los tipos de datos mas $tiliados en los lenguajes de programacin'
)mericos
Caracteres y
Lgicos
'ipos )mericos
(entro de estos tipos se puede hacer mencin de los tipos enteros, reales o de coma !lotante, y
de los e#ponenciales.
'ipos Carcter
"os tipos carcter se dividen tambin en caracteres &S4II, como por ejemplo' a & = > , etc.. +l
otro grupo de caracteres son los strings o cadenas de caracteres, como por ejemplo' ?@ola
Mundo?.
'ipos Lgicos
"os tipos lgicos solamente pueden tomar los valores verdadero o !also.
En esta seccin conoceremos los otros objetos $ue se tili"an en los programas, a
saber, las variables y las constantes* adems conoceremos tambi+n lo $ue es un
identificador y para $ue se tili"a.
,dentificadores
*epresentan los nombres de los objetos de un programa 8constantes, variables, tipos de datos,
procedimientos, !unciones, etc.9. +s una secuencia de carcteres que puede ser de cualquier
longitud, aunque tiene ciertas reglas que hay que seguir, las cuales son'
A. (ebe comenar con una letra o ?B? y no puede contener espacios en blanco.
C. "etras, dgitos y carcteres subrayados 8?B?9 estn permitidos despus del primer
carcter.
+n sntesis un identi!icador es un mtodo para nombrar a las celdas de memoria en la
computadora, en lugar de memoriarnos una direccin de memoria.
Se utilian para nombrar variables, constantes, procedimientos y !unciones.
Constantes
"as constantes son valores que no pueden cambiar en la ejecucin del programa. *ecibe un valor
en el momento de la compilacin del programa y este no puede ser modi!icado.
!ariables
"as variables son valores que se pueden modi!icar durante la ejecucin de un programa. &l
contrario de las constantes estos reciben un valor, pero este valor puede ser modi!icado durante
la ejecucin o la compilacin del programa.
"entencia de Asignacin
Se utilia para asignar o almacenar valores a variables o constantes. +s una operacin que sit$a
un valor determinado en una posicin de memoria. Se demuestra en pseudocdigo con el
smbolo D- 82na !lecha apuntando hacia el identi!icador, donde se desea guardar el valor.9.
varia'le () e*presi+n
+l tipo de e#presin debe ser del mismo tipo que el de la variable, en caso contrario en la !ase de
compilacin se producira un error de tipos. &unque a la !echa e#isten lenguajes de
programacin con una potente herramienta para la conversin de datos 8tal es el caso de :isual
Easic9, no es recomendable asignar valores de un tipo di!erente a variables de otro tipo.
#eglas de Asignacin
1. 'na (ariable en el lado derec)o de una sentencia de asignacin debe
tener un (alor antes de *ue la sentencia de asignacin se e+ecute. ,asta
*ue un programa le da un (alor a una (ariable- esa (ariable no tiene
(alor. Por e+emplo:
.i / no tiene un (alor antes de e+ecutar % 01 /21- se producir3 un error
lgico.
2. En la i4*uierda de una sentencia de asignacin solo pueden e/istir
(ariables. Por consiguiente no es (alido lo siguiente:
5alor67eto 1 "asas 01 !891:.
&dems hay que recordar que la operacin de asignacin es una operacin destructiva debido a
que el valor almacenado en una variable se pierde o se destruye y se sustituye por el nuevo
valor en la sentencia de asignacin.
-peradores utili"ados en !rogramacin
En todos los lenguajes de programacin se tili"an operadores para efectuar
operaciones aritmeticas. Combinando las variables y constantes en e.presiones
aritm+ticas por medio de funciones adecuadas.
2na expresin es un conjunto de datos o !unciones unidos por operadores aritmticos, los cuales
se muestran en la siguiente tabla'
$perado
r
.igni#cado
2 .uma
1 Resta
; <ultiplicacin
= Di(isin
>
E/ponenciaci
n
<od <dulo
$peradores %gicos
+n ocasiones en los programas se necesitan realiar comparaciones entre distintos valores, esto
se realia utiliando los operadores relaciones, los cuales se listan a continuacin'
$perado
r
.igni#cado
0 <enor *ue
? <a%or *ue
0@ <enor o igual *ue
?@ <a%or o igual *ue
@ gual a
0?
Distinto a- diAerente
de
!recedencia de -peradores
Cuando una e.presin aritm+tica se evala, el resultado es un nmero. #/ora bien,
cuando aparecen dos o mas e.presiones aritm+ticas, $u+ operaciones se reali"an
primero0
2na e#presin aritmtica en programacin tiene una sinta#is de la !orma'
*
2
,1-2
@ay que observar que esta e#presin es totalmente di!erente a esta otra .*
2
,1/-2, por lo que
es importante codi!icar las e#presiones aritmticas correctamente.
.ara realiar esto se debern conocer las reglas de evaluacin de los operadores, que se
estudian a continuacin.
#eglas de &'aluacin
<odas las sube#presiones entre parentesis se eval$n primero. "as sube#presiones entre
parentesis anidados se eval$an de adentro hacia a!uera, es decir, que el parentesis mas
interno se eval$a primero.
Prioridad de $peraciones( (entro de una misma e#presin o sube#presin, los
operadores se eval$an en el siguiente orden'
; - = <ultiplicacin % di(isin
Di(-mod
Di(isin % <odulo de
enteros
2-1 .uma % Resta
"os operadores en una misma e#presin o sube#presin con igual nivel de prioridad se
eval$n de iquierda a derecha
&scritura de )rmulas
"as !rmulas matematicas se deben escribir en !ormato lineal. +sto obliga al uso !recuente de
parentesis que indiquen el orden de evaluacin correcto de las operaciones.
.or ejemplo, si deseamos codi!icar la !rmula de :ieta, tendramos que escribirla as'
0amos a escri'ir el dato solo del valor positivo
.)',raiz.'1')41a1c//-.21a/
!onde a,',c son numeros reales.
-peraciones de Entrada y 1alida 2,3-4 de (atos
"os datos se pueden almacenar en memoria de tres !ormas di!erentes'
asociados con constantes, asignados a una variable con una sentencia de asignacin o
una sentencia de lectura. Siendo el $ltimo el mas indicado si se desea manipular di!erentes
datos cada ve que se ejecuta el programa. &dems la lectura de datos permite asignar valores
desde dispositivos hasta archivos e#ternos en memoria, esto se denomina operacin de entrada
o lectura.
&lgunos ejemplos de dispositivos de entrada y salida, son'
teclado,monitor,mouse,etc.
"a operacin de entrada en pseudocdigo se representa de la siguiente manera'
leer(lista de variables)
& medida que se realian calculos en el programa, se necesitan visualiar los resultados. +st se
conoce como operacin de escritura o salida.
+sta operacin se representa en pseudocdigo de la siguiente manera'
escribir(lista de variables,"Mensaje")
+n la instruccin de salida se pueden incluir adems mensajes de te#to y variables.
4on lo que hemos visto hasta aqu podemos ya realiar un peque)o ejemplo, el clsico ?@ola
Mundo?, en pseudocdigo.
2lgoritmo 3"emplo
escri'ir.45ola 6undo4/
Fin
+sto imprimir en pantalla la !rase F@ola MundoF.
Programacin Interacti'a
+n la programacin interactiva el usuario del programa puede interactuar con el programa e
introducir datos mientras se ejecuta el programa.
&l objeto de !acilitar esta entrada de datos, la computadora debe indicar al usuario el momento
en que debe introducir los datos. .ara ello se deben visualiar mensajes interactivos con
indicaciones al usuario.
&*emplo( "uma de dos n+meros ingresados por el usuario
2lgoritmo Suma
0aria'les
numero1,numero2,total
escri'ir.7Introduce el primer n8mero97/
leer.numero1/
escri'ir.7Introduce el segundo n8mero97/
leer.numero2/
escri'ir.73l total es9 7,numero1 , numero2/
:in
+sto debe visualiar en pantalla lo siguiente'
Introduce el primer n$mero'
8 !ntro presionado por el usuario
Introduce el segundo n$mero
" !ntro presionado por el usuario
+l total es' GH
Captulo 5
Las estructuras de control de un lenguaje de programacin se refieren a el orden en
$ue las instrucciones de un algoritmo se ejecutarn. El orden de ejecucin de las
sentencias o instrucciones determinn el flujo de control.
+stas estructuras de control son por consiguiente !undamentales en los lenguajes de
programacin y en los dise)os de algoritmos especialmente los pseudocdigos.
"as tres estructuras de control bsico son'
secuencia
seleccin
repeticin
"a programacin estructurada hace los programas mas !aciles de escribir, veri!icar, leer y
mantener, $tilia un n$mero limitado de estructuras de control que minimian la complejidad de
los problemas.
+n mayo de AGGI, EJhm y Kacopin demostrarn que un programa propio puede ser escrito
$tiliando solamente tres tipos de estructuras de control' secuenciales, selectivas y repetitivas.
2n programa se de!ine como propio si cumple lo siguiente'
.osee un solo punto de entrada y salida o !in para control del programa.
+#isten caminos desde la entrada hasta la salida que se pueden seguir y que pasan por todas las
partes del programa.
<odas las instrucciones son ejecutadas y no e#isten laos o bucles in!initos.
+n sntesis la programacin estructurada signi!ica'
+l programa completo tiene un dise)o modular
"os mdulos se dise)an con metodologa descendente 8mtodo top-do0n9
4ada mdulo se codi!ica $tiliando las L estructuras de control
bsicas' secuenciales,selectivas,repetitivas.
+structuracin y modularidad son complementarios mas no iguales
Estos son los temas a tratar:
E/presiones &gicas
$peradores Relacionales
$rden de e(aluacin
$peradores &gicos
Estructuras de Control
o Estructura de Control .electi(a
o .i anidados
o Estructura .egBn sea
Estructuras Repetiti(as CDucles o &oopsE
o .entencia Mientras
o .entencia Repetir..hasta
o .entencia para
E.presiones Lgicas
#ntes de entrar de lleno a el estudio de las estructuras de control anali"aremos
primero lo $ue son las e.presiones logicas y como las utili"aremos en las estructuras
de control.
&,presiones %gicas
+n los programas con !recuencia debemos en!rentarnos con situaciones en las que se deben
proporcionar instrucciones alternativas que pueden o no ejecutarse, dependiendo de los datos de
entrada, re!lejandose el cumplimiento o no de una deteminada condicin.
.or ejemplo, supongamos que queremos dise)ar un programa para calcular el salario semanal
de un empleado que trabaja por horas, la empresa paga una tasa de A.M la tasa normal por
todas las horas trabajadas mayores a NH. +l algoritmo sera'
leer.tasa/
leer.5oras;tra'a"adas/
si 5oras < 4= condici+n
entonces.se cumple la condici+n/
paga () tasa 1 4= , 1.5 1 tasa 1.horas ) 4=/
sino .no se cumple la condici+n/
paga ( tasa 1 horas
#in;si
Si te das cuenta la solucin del problema requiere el uso de estructuras de control
selectivas' si2if4, entonces2t/en4, sino2else4. .ara realiar el algoritmo anterior se necesita
realiar la pregunta' Son las horas trabajadas mayores a NH7.
+sto se realia mediante la evaluacin de e#presiones lgicas, comparando dos valores y
$tiliando un operador de relacin.
2na e#presin lgica es una e#presin que puede ser verdadera o !alsa.
$peradores de #elacin
Se $tilian para e#presar condiciones y describen una relacin entre C variables. +l conjunto de
operaciones relacionales se muestran en la siguiente tabla.
$peradores .igni#cado
0 <enor *ue
? <a%or *ue
@ gual a
?@ <a%or o igual *ue
0@ <enor o igual *ue
0?
Distinto o diAerente
a
+stos operadores se $tilian en condiciones cuyo !ormato tiene la siguiente !orma.
(ariable operador relacional (ariable
contante operador relacional constante.
+l resultado de una e#presin lgica es un valor de tipo lgico' verdadero o !also.
4uando se aplican a elementos de tipo caracter se veri!ican en orden al!abetico, tomando en
cuenta el orden del cdigo &S4II. (e la siguiente manera'
= ( 1 ( 2 ... ( >
a ( ' ( c ... ( ?
2 ( B ( @ ... ( A
$rden de &'aluacin
&l incluir estos operadores con los operadores aritmticos, obtenemos este nuevo orden de
evaluacin'
Prioridad $perador
1 4ontenido de parentesis 8 9
2 >, ;, div, mod
! O, -
8 P, D, Q, DP, QP, distinto a
)ota6 usare el smbolo 78 para especificar $ue el valor entre un operador debe ser
distinto o diferente a el otro operador. * 4
Vamos a un ejemplo:
Si num1, num2, son varia'les enteras con valores asignados 3 y ,
respectivamente, entonces9
.2,31num1/ (< ,.num2)1/
2,31num1 B 11 ,.5/ B 11
#also
!ariables %gicas
"a e#presin lgica mas simple es una variable o constante lgica que puede establecerse a
valores verdadero 8true9 o !also 8!alse9.
-peradores Lgicos
"as e#presiones lgicas pueden combinarse para !ormar e#presiones mas complejas $tiliando
los operadores lgicos and, or y not. +stos se $tilian con constantes lgicas.
Foperando1G operador operando2
+l operandoA seg$n el tipo de operador puede no e#istir.
"a operacin and combina dos condiciones simples y produce un resultado verdadero solo si los
dos operandos son verdaderos. "a operacin or es verdadera si uno de los dos operandos es
verdadero. "a operacin not act$a sobre una sola condicin simple u operando y simplemente
niega 8o invierte9 su valor. +sto se describe mas !cilmente usando unas tablas denominadas
Ftablas de verdadF.
4uando la e#presin lgica contiene varios tipos de operadores, es preciso seguir un nuevo
orden de precedencia o prioridad para obtener el valor !inal de la e#presin.
Prioridad $perador
1 Ce/pE- not
2 ;- =- di(- mod- and
! 2- 1- or
8
0- 0@- @- 0 ?-
?@
Estructuras de Control
!or lo regular en un programa los enunciados son ejecutados uno despu+s del otro, en
el ord+n en $ue aparecen escritos. Esto se conoce como ejecucin secuencial. 1in
embargo, e.isten enunciados $ue le permiten al programador especificar $ue el
enunciado siguiente a ejecutar pueda ser otro diferente al $ue sigue en secuencia.
Esto se conoce como transferencia de control.
<odos los programas pueden ser escritos en trminos de solo tres estructuras de control, a saber,
la estructura de secuencia, la estructura de seleccin y la estructura de repeticin o bucle.
%a estructura de seleccin "i--entonces .i/0
(ado que las e#presiones lgicas toman el valor verdadero y !also, se necesita una sentencia de
control para la toma de decisiones, cuando se desea ejecutar una accin si una e#presin es
verdadera o !alsa.
.ara ello $tiliaremos la sentencia de seleccin i! 8si9, el enunciado en pseudocdigo es el
siguiente'
si Ce/p. lgica simple o compuestaE
acciones a e+ecutar
#n6si
4uando la e#presin lgica contenida por los parentesis es verdadera, se ejecutan las
instrucciones dentro de la estructura de seleccin, cuando es !alsa, el programa ignora la
estructura y se sigue ejecutando la instruccin siguiente a la estructura de control.
%a estructura de "eleccin si1sino .i/1else0
"a estructura de seleccin Si ejecuta una accin indicada solo cuando la condicin es verdadera,
de lo contrario la accin es pasada por alto. "a estructura de seleccin si;sino 8en algunos te#tos
de programacin puede aparecer como si;deBloBcontrario9 permite que el programador
especi!ique la ejecucin de una accin distinta cuando la condicin es !alsa. .or ejemplo, el
enunciado en seudocdigo'
Si .nota <B =/ entonces
escribir .42pro'ado4/
sino (de lo contrario)
escribir .4Co 2pro'ado4/
#in;si
Imprime ?&probado?, si la cali!icacin del alumno es mayor o igual a IH, e imprime ?,o
aprobado? si la cali!icacin es menor que IH. +n cualquiera de los casos, despus de haber
impreso alguno de los mensajes, el programa ejecutar el enunciado siguiente al si.
"entencias "electi'as Anidadas
(entro de las sentencias que !iguran dentro de una sentencia i!, pueden colocarse tambin otras
sentencias selectivas. (e esta manera'
1upongamos $ue deseamos imprimir en pantalla la nota de un alumno, clasificandolo
en 9aprobado9, 9no aprobado9, y 9deficiente9. El algoritmo $uedara de esta manera.
si 8nota QP IH9 entonces
escribir 8?aprobado?9
sino
si 8nota D IH9 and 8nota QP LH9 entonces
escribir 8?no aprobado?9
sino
si 8nota D LH9 entonces
escribir 8?de!iciente?9
!inBsi
!inBsi
!inBsi.
+s muy importante que se $tilie un buen sangrado en cada sentencia selectiva, para que sea
mas legible el cdigo, y adems que se comente el cdigo, para que no te pierdas si llevas
escritas varias lineas, y tambin por si alguna otra persona, desea actualiar tu cdigo.
La 1entencia de 1eleccin 1egn 1ea 2Case4
+sta sentencia se $tilia para elegir entre di!erentes alternativas. +sta se compone de varias
sentencias sentencias simples, cuando se ejecuta, una y solo una de las sentencias simples se
selecciona y ejecuta.
"a sinta#is es la siguiente'
seg$n sea 8selector9 hacer
casoA, casoC,..' sentenciaA
.... ' .....
casoAn, casoCn,.' sentencian
sino
sentencia opcional
!inBseg$n
+l valor de selector debe ser un tipo ordinal, y los valores constantes deben tener el mismo tipo
que el selector.
Se pueden $tiliar sentencias i! anidadas, pero la sentencia seg$n sea es mas legible.
:amos a realiar en seudocdigo el ejemplo anterior, pero esta ve $tiliando la sentencia seg$n-sea.
segun sea 8nota9 hacer
AHH..IH' escribir 8?aprobado?9
MG..LH' escribir 8?reprobado?9
CG..H' escribir 8?de!iciente?9
Si te das cuenta, he omitido la clausula sino del algoritmo, esta es opcional y se puede omitir.
Estructuras de Control epetitivas
Las computadoras estn especialmente dise%adas para ejecutar tareas repetidamente.
Las estructuras de control repetitivas son a$uellas en las $ue una sentencia o grupos
de sentencias se repiten muc/as veces.
2na estructura de control que permite la repeticin de una serie determinada de sentencias se
denomina bucle 8lao o ciclo9. +l cuerpo del bucle contiene las sentencias que se repiten.
"a accin o acciones que se repiten en un bucle se denomina el cuerpo del bucle, y cada
repeticin del cuerpo del bucle se denomina iteracin.
"entencia 2ientras--3acer .43ile0
"a estructura repetitiva mientras es aquella en la que el n$mero de iteraciones no se conoce por
anticipado y el cuerpo del bucle se repite mientras se cumple una determinada condicin. .or
esta ran a estos bucles se les denomina bucles condicionales.
Da sinta*is es la siguiente9
6ientras .condicion/ hacer
sentencias
#in;mientras
4uando la sentencia mientras se ejecuta, el primer paso es la evaluacin de la e#presin lgica.
Si se eval$a a !also, ninguna accin se realia y el programa prosigue en la siguiente sentencia
despus del bucle. Si la e#presin lgica se eval$a a verdadera, entonces se ejecuta las
sentencias contenidas dentro del cuerpo del bucle y se eval$a de nuevo la e#presin. +ste
proceso se repite mientras que la e#presin lgica sea verdadera.
(espus de cada iteracin, la e#presin lgica se eval$a y se veri!ica de nuevo, y si es
verdadera, el bucle se repite de nuevoR si cambia de verdadera a !alsa, la sentencia mientras
!inalia y el programa prosigue en la siguiente sentencia del programa.
@alcular la suma de una lista de n8meros enteros ingresados por el
usuario.
2lgoritmo Sumar
0aria'les
contador, num, sum, C9 enteros
Inicio
3scri'ir .43ste programa suma numeros4/
3scri'ir .4@uantos numeros desea sumar4/
Deer .C/
3scri'ir .4Ingrese los numeros94/
contador ()) =
suma ()) =
6ientras .contador ( num/ hacer
Deer .num/
suma ()) suma , num
contador ()) contador , 1
#in;mientras
3scri'ir .4Da suma de los4,C,4numeros es4,suma/
:in.
&l implementar este cdigo en un lenguaje de programacin, por ejemplo' .ascal, este sera el resultado, en
pantalla, al ejecutarlo.
+ste programa suma numeros
4untos numeros desea sumar
#
<eclee los numeros enteros'
8 $ %
"a suma de los L numeros es AS
%a "entencia #epetir--3asta
2na variante de la sentencia mientras, es la sentencia repetir. 2na de las caractersticas de la
sentencia mientras es que la condicin lgica se eval$a al principio de cada iteracin.
+n particular, si la condicin es !alsa cuando la sentencia comiena, entonces el bucle no se
ejecuta nunca.
"a sentencia repetir..hasta especi!ica un bucle condicional que se repite hasta que la condicin se
hace verdadera.
(espus de cada iteracin el cuerpo del bucle eval$a la condicin. Si la condicin es verdadera,
el bucle se termina y se sale de el, ejecutndose la siguiente sentencia. Si la condicin es !alsa el
bucle se repite.
3l seudoc+digo es el siguiente9
repetir
sentencias
hasta .e*presi+n l+gica/
Veamos un ejemplo
0olvamos a reali?ar el e"emplo anterior, donde se desea o'tener la suma
de tres numeros ingresados por el usuario. %ara acortar, solo colocarE la
parte donde se e#ectua la suma
3scri'ir .4@uFntos numeros desea ingresar4/
leer .Total;num/
contador ()) =
suma ()) =
repetir
leer .num/
suma ()) suma , numero
contador ()) contador , 1
hasta .contador B Total;num/
"entencia Para .)or0
+n numerosas ocasiones se desea un bucle que se ejecute un n$mero deseado de veces, y cuyo
n$mero de iteraciones se conoca por anticipado. .ara este tipo de aplicaciones se $tilia la
sentencia para.
"a sentencia para requiere que conocamos por anticipado el n$mero de veces que se ejecutan
las sentencias del interior del bucle.
3l seudoc+digo es el siguiente9
!esde cont ()) valor inicial hasta valor #inal hacer
sentencias
#in;desde
&l ejecutarse la sentencia para 8o desde9 la primera ve, el valor inicial se asigna a cont, que se
denomina variable de control, y a continuacin se ejecuta la sentencia del interior del bucle. &l
llegar al !inal del bucle se veri!ica si el valor !inal es mayor que el valor inicialR en caso negativo
se incrementa el valor de la variable de control en uno y se vuelven a ejecutar todas las
sentencias del interior del bucle, hasta que la variable de control sea mayor que el valor !inal, en
cuyo momento se termina el bucle.
Veamos un ejemplo prctico de para
!esde i ()) 1 hasta 1= hacer
escri'ir .i/
#in;desde
+n pantalla, este sera el resultado
A C L N M I T S G AH
eglas
A. "as variables de control, valor inicial y valor !inal deben ser todas del mismo tipo, pero el
tipo real no esta permitido. "os valores inicial y !inal pueden ser tanto e#presiones como
constantes.
C. +s ilegal intentar modi!icar el valor de la variable de control, valor inicial y el valor !inal
dentro del bucle.
&l igual que en las sentencias de seleccin, las sentencias repetitivas se pueden anidar.
Captulo :
La !rogramacin ;odular
2na estrategia muy utiliada para la resolucin de problemas complejos con la computadora, es
como lo he venido comentando, la divisin del problema en otros problemas mas peque)os o
subproblemas. +stos subproblemas se implementan mediante mdulos o subprogramas.
"os subprogramas son una herramienta importante para el desarrollo de algoritmos y programas
de modo que normalmente un proyecto de programacin esta compuesto generalmente de un
programa principal y un conjunto de subprogramas con las llamadas a los mismos dentro del
programa principal.
"os subprogramas se clasi!ican en' procedimientos y funciones.
+stos son los temas a desarrollar en el captulo'
El Diseo Descendente: .ubprogramas
El Diseo <odular
"ransAerencia de nAormacin a=desde subprogramas
Parametros 5alor % Parametros 5ariable
5ariables &ocales % 5ariables Hlobales
Ambito de una 5ariable
Procedimientos % Funciones
El (ise%o (escendente6 1ubprogramas
<no de los m+todos fundamentales para resolver un problema es dividirlo en
problemas mas pe$ue%os, llamados subproblemas, en referencias sucesivas.
+stos problemas a su ve pueden ser divididos repetidamente en problemas mas peque)os hasta
que los problemas mas peque)os puedan ser solucionados.
+sta tcnica de dividir el problema principal en subproblemas se denomina !recuentemente
divide y vencers. +l mtodo de dise)o se denomina dise)o descendente, debido a que se
comiena en la parte superior con un problema general y se dise)an soluciones especi!icas a sus
subproblemas.
+l problema principal se resuelve con el programa principal 8tambin llamado conductor del
programa9, y los subproblemas 8mdulos9 mediante subprogramas' procedimientos y funciones.
2n subprograma realia una tarea concreta que se describe con una serie de instrucciones.
Veamos un ejemplo:
Deer el radio de un crculo y calcular e imprimir su super#icie y
longitud.
Anlisis
3speci#icaciones de 3ntrada
Gadio9 Geal
3speci#icaciones de Salida
Super#icie9 Geal
Dongitud9 Geal
Algoritmo
1. Deer el valor del radio
2. @alcular la Super#icie
3. @alcular la Dongitud
4. 0isuali?ar los valores de la super#icie y la longitud
Refinamiento del Algoritmo
1. Deer el valor del radio
2. @alcular la super#icie
1. pi () 3.1415>2 .constante pi/
2. S () pi 1 Gadio 1 Gadio
3. @alcular la longitud
1. pi () 3.1415>2
2. D () 2 1 pi 1 Gadio
4. 0isuali?ar los valores de la super#icie y la longitud
El (ise%o ;odular
Los subproblemas o mdulos se dise%an con subprogramas, $ue a su ve" se clasifican
en procedimientos y funciones.
"os procedimientos y las !unciones son unidades de programas dise)adas para ejecutar una
tarea espec!ica. .or ejemplo, los procedimientos prede!inidos, *ead"n y Urite"n de .ascal,
estan dise)ados para realiar operaciones de entrada y salida.
+l proceso de descomposicin de un problema en mdulos se conoce como modulacin y a la
programacin relativa a ellos programacin modular.
"os procedimientos y !unciones son similares, aunque presentan notables di!erencias entre ellos'
A. "as !unciones normalmente, devuelven un solo valor a la unidad de programa 8programa
principal u otro subprograma9 que los re!erencia o llama. "os procedimientos pueden
devolver cero, uno o varios valores. +n el caso de no devolver ning$n valor, realian
alguna tarea tal como alguna operacin de entrada;salida.
C. & un nombre de procedimiento no se puede asignar un valor, y por consiguiente ning$n
tipo esta asociado con un nombre de procedimiento.
L. 2na !uncin se re!erencia $tiliando su nombre en una instruccin 8de asignacin o
e#presin matematica9, mientras que un procedimiento se re!erencia por una llamada o
invocacin al mismo.
'ransferencia de ,nformacin a3desde ;dulos
Los !armetros
"os mdulos o subprogramas sirven para ejecutar tareas concretas, pero no $tilian ning$n tipo
de dato del resto del programa. Sin embargo, una de las caractersticas importantes y
di!erenciadora de los subprogramas es la posibilidad de comunicacin entre el programa principal
y los subprogramas 8o entre los subprogramas9. +sta comunicacin se realia a traves de una
lista de parmetros
2n parmetro es un mtodo para pasar in!ormacin 8valores a variables9 del programa principal
a un mdulo o viceversa.
&si pues, los mdulos se clasi!ican en'
Mdulos sin parmetros 8no e#iste comunicacin entre el programa principal y los
mdulos o entre mdulos9.
Mdulos con parmetros 8e#iste comunicacin entre el programa principal y los mdulos,
y entre ellos9.
2n parmetro es prcticamente, una variable cuyo valor debe ser o bien proporcionado por el
programa principal al mdulo o ser devuelto desde el mdulo hasta el programa principal. .or
consiguiente hay dos tipos de parmetros' entrada y salida.
"os parmetros de entrada son aquellos cuyos valores deben ser proporcionados por el
programa principal, y los de salida son aquellos cuyos valores se calcularn en el subprograma o
mdulo y se deben devolver al programa principal para su proceso posterior.
"as sentencias llamadas a subprogramas constan de dos partes' un nombre de subprograma y
una lista de parmetros llamados actuales.
nombre&ubprograma(pa",pa',...)
+n la declaracin de un subprograma, cuando se incluyen parmetros, estos se denominan
parmetros !ormales o !icticios. +llos sirven para contener los valores de parmetros actuales
cuando se llama al subprograma.
(rocedimiento o funcion nombresubprograma(pf",pf',...)
"os parmetros actuales en la llamada al subprograma debe coincidir en n$mero, orden y tipo
con los parmetros !icticios de la declaracin del subprograma. +s decir, debe e#istir una
correspondencia entre parametros actuales y !icticios.
!arametros =alor y !arametros =ariable
E.isten dos tipos de parametros, como se indico anteriormente, $ue nos ayudan a
transferir3recibir informacin de otros subprogramas, o del programa principal, a
saber6 parametros de entrada .por 'alor0 5 parametros de salida o de entrada1salida
.'ariable0-
!arametros =alor
Son parametros unidireccionales que se utilian para proporcionar in!ormacin a un
subprograma, pero no pueden devolver valores, al programa llamador.
Se les llama parametros de entrada, ya que en la llamada al subprograma el valor del parmetro
actual se pasa a la variable que representa a la variable actual. +ste valor puede ser modi!icado
dentro del subprograma pero el valor modi!icado no es devuelto al programa o subprograma
llamador.
!arametros =ariable
Se utilian tanto para recibir como para transmitir valores entre el subprograma y el programa
llamador. +ste puede actuar como parmetro de salida o de entrada;salida.
)ota6
+n la notacin de pseudocdigo representar a estos parametros anteponiendo la palabra var antes del
identi!icador R 9.
Este algoritmo ilustra la diferencia entre parametros valor parametros
variable! la correspondencia entre ellos"
2lgoritmo 3"emplo;%arametros
0aria'les
2, B, @9 enteros
procedimiento imprimir .!,3,:9 enteros/
inicio
escri'ir .42 B4, !, 4B B4, 3, 4@ B4, :/
#in;imprimir
procedimiento pasar .!,39 enteroH var :9 entero/
inicio
escri'ir .43ntrada al procedimiento pasar94/
imprimir .!,3,:/
: () ! 1 :
escri'ir .4Salida del procedimiento pasar94/
imprimir .!,3,:/
#in;pasar
inicio
2 () 2
B () 3
@ () 4
escri'ir .42ntes de llamar al procedimiento pasar4/
imprimir .2,B,@/
pasar .2,B,@/
escri'ir .4!espues del retorno del procedimiento pasar4/
imprimir .2,B,@/
fin
"a salida del programa en pantalla sera la siguiente'
&ntes de llamar al procedimiento pasar
& P C, E P L, 4 P N
+ntrada al procedimiento pasar
& P C, E P L, 4 P N
Salida del procedimiento pasar
& P C, E P L, 4 P I
(espues del retorno del procedimiento pasar
& P C, E P L, 4 P I
=ariables Locales y =ariables >lobales
Las variables utili"adas en un programa con subprogramas pueden ser de dos tipos6
locales 5 globales.
!ariables %ocales
2na variable local es una variable que esta declarada dentro de un subprograma y se dice que es
local al subprograma. 2na variable local solo esta disponible durante el !uncionamiento del
subprograma, al terminar su !uncin el subprograma y regresar al programa llamador, se pierde
el valor que se encontraba guardado en la variable local.
!ariables 6lobales
"as variables declaradas en el programa principal se denominan variables globales. &l contrario
que las variables locales cuyos valores se pueden utiliar solo dentro del subprograma en que
!ueron declaradas, las variables globales se pueden utiliar en todo el programa principal y en
todos los subprogramas, donde se haga re!erencia al identi!icador de esta variable.
#mbito de un ,dentificador
"a mayora de los programas tienen una estructura tipo rbol, el programa principal es la ra y
de este penden muchas ramas 8procedimientos y !unciones9.
"os subprogramas en los que un identi!icador puede ser utiliado se conocen como mbito o
alcance del identi!icador, dicho de otro modo, es en esta seccin donde el identi!icador es vlido.
eglas de #mbito
A. +l mbito de un identi!icador es el dominio en que esta declarado. .or consiguiente un
identi!icador declarado en un bloque . puede ser usado en el subprograma . y en todos
los subprogramas llamados en el subprograma ..
C. Si un identi!icador j declarado en el procedimiento . se redeclara en alg$n subprograma
interno 6 invocado en ., entonces el subprograma 6 y todas sus invocaciones a otros
subprogramas se e#cluyen del mbito de j declarado en ..
!rocedimientos y &unciones
Los procedimientos y funciones son la base principal en la programacin modular,
estudiaremos a$ui su funcionamiento y su sinta.is, aun$ue debo recordarles $ue es
solamente pseudocodigo. 6 4
Procedimientos
2n procedimiento es un subprograma que realia una tarea especi!ica. .uede recibir cero o mas
valores del programa que llama y devolver cero o mas valores a dicho programa.
2n procedimiento esta compuesto de un grupo de sentencias a las que se asigna un nombre
8identi!icador9 y constituye una unidad de programa. "a tarea determinada al procedimiento se
ejecuta siempre que se encuentra el nombre del procedimiento.
"a declaracin indica las instrucciones a ejecutar. Su sinta#is es'
procedimiento nombreproc 8lista de par9
declaraciones locales
inicio
cuerpo del procedimiento 8instrucciones9
!in.
2n procedimiento es llamado en un programa o dentro de otro procedimiento directamente por
su nombre en cualquiera de las dos !ormas'
nombreproc
nombreproc (lista par. actuales)
)unciones
2na !uncin es un subprograma que recibe como argumentos o parametros, datos de tipos
numerico o no numerico, y devulve un $nico resultado. +sta caracterstica le di!erencia
escencialmente de un procedimiento.
Su !ormato es el siguiente'
!uncion nombre!uncion 8pA,pC,...9 ' tipo a devolver
declaraciones locales
inicio
cuerpo de la !uncin
nombre!uncion D- valor a devolver
!in
2na !uncin es llamada por medio de su nombre, en una sentencia de asignacin o en una
sentencia de salida.
Se puede llamar a una !uncin en cualquiera de las siguientes !ormas'
nombrefuncion o nombrefuncion(par)
id)ar *+ nombrefuncion.

También podría gustarte