Académique Documents
Professionnel Documents
Culture Documents
Lgica de la
Programacin
Gua didctica
6 crditos
Titulacin
Ingeniero en Informtica
Ciclo
Autores:
Asesora virtual:
www.utpl.edu.ec
18106
LGICA DE LA PROGRAMACIN
Gua didctica
Marco Patricio Abad Espinoza
Jorge Stalin Caldern Bustamante
UNIVERSIDAD TCNICA PARTICULAR DE LOJA
Diagramacin, diseo e impresin:
EDILOJA Ca. Ltda.
Telefax: 593-7-2611418
San Cayetano Alto s/n
www.ediloja.com.ec
edilojainfo@ediloja.com.ec
Loja-Ecuador
Derecho de autor 000450
Primera edicin
Sptima reimpresin
ISBN-978-9942-00-614-1
Reservados todos los derechos conforme a la ley. No est permitida la reproduccin total o parcial de esta gua, ni su tratamiento informtico,
ni la transmisin de ninguna forma o por cualquier medio, ya sea electrnico, mecnico, por fotocopia, por registro u otros mtodos, sin el
permiso previo y por escrito de los titulares del Copyright.
Abril, 2013
2. ndice
1. Datos informativos
2. ndice
3. Introduccin.................................................................................................................................. 5
4. Lineamientos generales del Modelo Educativo basado en
competencias y crditos acadmicos UTPL-ECTS............................................ 6
4.1 Competencias genricas .......................................................................................................... 7
4.2 Competencias especficas ........................................................................................................ 7
5. Bibliografa................................................................................................................................... 7
5.1 Bsica .......................................................................................................................................... 7
5.2 Complementaria ....................................................................................................................... 7
PRELIMINARES
PRIMER BIMESTRE
7.1 Planificacin para el trabajo del alumno ............................................................................ 33
7.2 Sistema de evaluacin ............................................................................................................. 33
7.3 Orientaciones especficas para el aprendizaje por competencias ................................... 35
UNIDAD IV: ESTRUCTURAS DE DECISIN Y BUCLES...................................................................................... 36
8. Solucionario.................................................................................................................................. 81
9. Glosario............................................................................................................................................ 83
PRELIMINARES
3. Introduccin
Estimado estudiante, queremos darle la ms cordial bienvenida a esta su Universidad, particularmente
a la carrera de Ingeniera en Informtica. Aprovechamos la oportunidad para felicitarlo por haber
confiado en esta prestigiosa institucin educativa.
Nuestros nombres son: Patricio Abad y Stalin Caldern, estaremos con ustedes para guiar el proceso de
aprendizaje en la asignatura de Lgica de la Programacin, cualquier duda e inquietud estamos a sus
rdenes para responderle.
Lgica de Programacin es una materia troncal con seis crditos que se ubica en el primer ciclo de la
carrera de Ingeniera en Informtica y se ha elaborado enfocndose en el desarrollo de las competencias
bsicas para el diseo de algoritmos a travs del pensamiento lgico aplicado a la resolucin de
problemas por computadora.
El desarrollo de habilidades de programacin no se logra sino con la induccin de una forma de
pensamiento que ayuda a identificar los aspectos relevantes de un problema y representarlo en una
notacin formal que permita establecer una solucin para el mismo. Como veremos ms adelante,
todas las personas somos capaces de resolver problemas de diferentes maneras, pero encuentran
muchas dificultades al momento de traducir este problema a un lenguaje algortmico y es precisamente
este aspecto el que la materia de Lgica de la Programacin intenta resolver, sin esto es muy difcil
avanzar con otras asignaturas en la lnea de programacin, y de all su importancia vital para el resto
de la carrera.
Los contenidos se encuentran organizados en unidades y distribuidos equitativamente para los dos
bimestres. Se abordar en la unidad 1 los principios de la resolucin de problemas mediante la
abstraccin de las salidas, el proceso de clculo y las entradas requeridas; En la unidad 2 se estudiar la
naturaleza de los datos, su representacin y sus operaciones; para la unidad 3 tenemos los algoritmos
que le permite al estudiante adquirir las bases para representar, su proceso de construccin, verificacin
y depuracin.
El segundo bimestre comprende la unidad 4 que abarca el uso de la seleccin y ciclos repetitivos,
la unidad 5 versa sobre la representacin de los algoritmos en diagramas de flujos y culmina con la
unidad 6 consolidando todos los contenidos en la creacin de aplicaciones sencillas susceptibles de
programacin. Adems se considera el uso de herramientas de programacin visual que le permitirn
concentrarse en la lgica de programacin antes que en la sintaxis de un lenguaje particular, esto con
el nimo de que pueda aplicar luego esta lgica con cualquier lenguaje de programacin.
Un aspecto importante que debemos mencionar es que la lgica de la programacin no se limita a
un lenguaje de programacin especfico, es por tanto independiente del lenguaje y para escribir los
algoritmos utilizaremos dos herramientas fundamentales que son el pseudocdigo (miniespecificaciones)
y los diagramas de flujo, los cuales puede dibujar y probar en una herramienta muy importante
desarrollada por la academia de pilotos de la fuerza area norteamericana llamada Raptor.
Thomas Alba Edison deca que los genios son 1% de inspiracin y 99% de sudor, la cual es una
mxima aplicable a esta materia, pues se requiere estudiar el fundamento terico, comprenderlo y
luego comenzar a desarrollar ejercicios. Muchos otros autores afirman que a programar se aprende
programando, as que le animamos a aplicar estos principios en su estudio, es posible que encuentre
algunas dificultades, que deber superar para alcanzar los objetivos propuestos.
PRELIMINARES
Sr. Estudiante recuerde que usted ha iniciado su formacin de tercer nivel con un sistema educativo
basado en el desarrollo de competencias a travs de crditos acadmicos. Este modelo le convierte
a usted en protagonista de su propia formacin y al profesor en mediador de las experiencias de
aprendizaje.
Surge entonces la necesidad de que tenga claro dos conceptos fundamentales competencia y crdito
acadmico.
Elementos de una competencia. Tres son los elementos que podemos distinguir en toda
competencia:
Actitudes: son predisposiciones y comportamientos ante situaciones concretas.
Habilidades: son destrezas para ejecutar con xito tareas, utilizar procedimientos y realizar
trabajos. Se desarrollan a travs de la prctica y la experiencia.
Conocimientos: constituyen los contenidos cientficos, conceptuales, tericos, conocidos
tambin como el aprendizaje acadmico.
Un crdito acadmico es la unidad de medida del trabajo del estudiante, implica 32 horas
de trabajo del alumno (29 horas de trabajo autnomo y 3 horas de interaccin)1.
El modelo adoptado por la UTPL contempla dos tipos de competencias: genricas y especficas.
Competencias Genricas: Son aquellas capacidades (actitudes, habilidades y
conocimientos) comunes a todas las profesiones que se ofrecen en la UTPL. Constituyen
una parte fundamental del perfil que el estudiante debe desarrollar durante su formacin.
1. CONESUP (2008): Reglamento del Rgimen Acadmico del Sistema Nacional de Educacin Superior, art. 18.
PRELIMINARES
Las Unidades Acadmicas o Escuelas de la UTPL han estructurado el programa formativo contemplando
cinco mbitos o bloques de asignaturas: Formacin Bsica (10%); Genricas de carrera (15%); Troncales
(35%) Complementarias (10%); Libre configuracin (10%) y adems, el Practicum que comprende las
Pasantas preprofesionales y de vinculacin con la colectividad y Practicum Acadmico (20%).
5. Bibliografa
5.1 Bsica
5.2 Complementaria
Contiene muchos ejercicios y algoritmos que se pueden usar para complementar los que posee
el texto base, es ideal para la parte prctica de cualquiera de los captulos del la materia. Tiene
un desarrollo especial en lo referente a diagramas de flujo.
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
PRELIMINARES
A pesar de ser una edicin con bastantes aos por delante, tiene valiosa informacin sobre
aritmtica del computador, lgica matemtica, desarrollo de algoritmos y su representacin en
diagramas de flujos, contiene muchos ejercicios.
DIRECCIONES ELECTRNICAS
Carlisle, M. (2009): Welcome to the raptor home page , [En lnea] Disponible en: http://raptor.
martincarlisle.com/ [Consulta 12-06-2009]
Sitio de descarga de raptor, donde se publican adems las ltimas novedades del producto, aqu
encontrar tambin la versin de raptor orientada a objetos.
PRELIMINARES
La gua didctica: Le orientar sobre cmo y qu temas estudiar, adems contiene ejercicios de
autoevaluacin que le permitirn medir su grado de comprensin y la necesidad de tutora por
parte del docente. Muchos estudiantes empiezan estudiando directamente el texto, pero como
ver ms adelante no es recomendable hacerlo.
2.
El texto bsico: Le servir para desarrollar los contenidos principales conforme se lo indica en la
gua didctica. Vale acotar que no todos los captulos del texto se consideran para la asignatura y
tampoco cubre todos los contenidos por lo que el estudio debe hacerse siguiendo las instrucciones
de la gua didctica. Los captulos del 10 al 14 los puede usar para iniciar el estudio de la lgica
de la programacin en alguno o en todos los lenguajes de programacin propuestos.
3.
El Entorno Virtual de Aprendizaje: Donde podr interactuar con sus profesores a travs de
una orientacin del trabajo semanal, uso de mensajera electrnica para resolver inquietudes,
foros, desarrollo de ejercicios prcticos, publicacin de recursos, todo este trabajo tendr una
valoracin de 2 puntos.
4.
La Tutora personal: Es un tiempo semanal que como profesores dedicamos para atender las
inquietudes en relacin a los contenidos o desarrollo de trabajos, para ello se publicar un horario
en el cual podrn asistir personalmente o contactarse va telefnica, el mismo que se detalla en la
cartula de la evaluacin a distancia.
5.
Los trabajos a distancia: Son actividades tericas y prcticas que acompaan a la gua didctica de
cada una de las materias, le permiten aplicar y reforzar los conocimientos adquiridos mediante su
desarrollo, y debe enviarlos a su profesor. La entrega de estos trabajos con su respectiva cartula
es obligatoria y no recuperable, lo cual significa que si no entrega alguno de los mismos no tendr
opcin a la evaluacin presencial, su valoracin es de 4 puntos que sumados a la calificacin de
participacin en el EVA totalizan 6 puntos.
6.
PRIMER
PRELIMINARES
BIMESTRE
Al finalizar cada bimestre usted debe presentarse a una evaluacin presencial en su centro universitario,
la cual se califica sobre 14 puntos, que sumados a los 6 puntos de los trabajos a distancia le dan un
total de 20 puntos por bimestre. Usted debe obtener una nota mnima de 14 sobre 20, de lo contrario
deber rendir una evaluacin supletoria que reemplaza a la nota bimestral. Para aprobar debe tener
un mnimo de 28 puntos.
Como mtodo de estudio, le recomendamos que lea detenidamente los contenidos de la gua didctica
y siga fielmente las instrucciones dadas, lo ms importante es realizar prcticas no limitndose a lo
que dice el texto, sino que es recomendable que idee sus propios problemas lo cual lo har sentirse
mucho ms familiarizado con la mecnica de la materia. Puesto que dispondr de herramientas para
la computadora utilcelas en todo momento.
10
OBJETIVOS DE
APRENDIZAJE
CRONOGRAMA
ACTIVIDADES DE
RECURSOS
ORIENTATIVO
APRENDIZAJE
DIDCTICOS
Unidades /Temas
Tiempo estimado
Unidad 1: Problemas y
Semana 1y 2
Disponer de
Aplicar los
Lectura
Texto bsico
Soluciones
fundamentos
principios de
comprensiva
Gua Didctica
16 horas de
matemticos,
la lgica en
Desarrollo de
Entorno Virtual
1.1 Aplicacin de la lgica autoestudio
econmicos,
la resolucin
actividades
de Aprendizaje:
en la programacin.
8 horas de
estadsticos
de problemas
recomendadas en la
foros, actividades,
interaccin
y financieros
computacionales. 1.2 Principios en la
gua didctica
documentos.
elaboracin de
necesarios para
Identificar y
Interaccin con el
enunciados.
interpretar,
Telfono
comprender un
EVA
1.3 Comprensin y
seleccionar, valorar
problema para
Correo electrnico
especificacin del
el uso y desarrollo
Inicio del desarrollo
llegar a su solucin.
problema.
tecnolgico y sus
de la evaluacin a
1.4 Identificacin de
aplicaciones.
distancia.
entradas, procesos y
Analizar las
salidas.
necesidades de
Semana 3
Determinar
los
Unidad
2:Representacin
Lectura
conocimiento
tipos
de
datos
que
de
los
Datos
comprensiva
necesarias para
8 horas
de
mejor
se
ajusten
resolver un
Desarrollo de
autoestudio
para la resolucin 2.1 Naturaleza de los
problema.
actividades
4 horas de
de problemas
datos.
recomendadas en la
interaccin
mediante
2.2 Expresiones y datos.
gua didctica
algoritmos.
2.3 Dominios.
Continuar con
2.4 Tipos de operadores.
Resolver
el desarrollo de
2.5 Reglas de precedencia.
expresiones
la evaluacin a
aritmticas, lgicas
distancia
y relacionales
Participacin del
mediante el uso
foro propuesto en
de las reglas de
el EVA
precedencia de los
operadores.
COMPETENCIAS
ESPECFICAS
CONTENIDOS
PRIMER BIMESTRE
Participacin en los
foros.
Evaluaciones
presenciales
Evaluaciones a
distancia
Autoevaluaciones
por unidades en la
gua didctica
EVALUACIN
PRIMER BIMESTRE
11
12
Aplicar la lgica
matemtica en
el contexto de
las Ciencias de
la Computacin,
con proyeccin, al
diseo de circuitos,
programacin,
anlisis y desarrollo
de algoritmos.
Comprender,
analizar y resolver
problemas
aplicando los
mtodos de
la ciencia y la
ingeniera.
Identificar de
forma clara los
requerimientos de
usuario.
Reconocer las
fases del ciclo
de desarrollo de
software.
Unidad de la 1a la 3
Semana 7 y 8
Preparacin para la
prueba presencial del
primer bimestre.
Finalizar el
desarrollo de
la evaluacin a
distancia.
Semana 4, 5 y 6 Lectura
comprensiva
3.1 Ciclo de desarrollo
24 horas de
Desarrollo de
3.2 Determinacin de
autoestudio
actividades
requerimientos
12 horas de
recomendadas en la
3.3 Estructuracin de pasos interaccin
gua didctica
del algoritmo
Participacin del
3.4 Resolucin de
foro propuesto en
problemas mediante
el EVA
algoritmos
Unidad 3: Algoritmos
Criterios
Pruebas mixtas:
objetivas y ensayo
x
Creatividad e iniciativa
x
x
x
TOTAL
Conocimientos
Anlisis y profundidad en
el desarrollo de los temas
Para aprobar la asignatura se requiere obtener un puntaje mnimo de 28/40 puntos, que equivale al 70%.
Interaccin en el
EVA
Cumplimiento, puntualidad
y responsabilidad
x
Contribucin en el trabajo
colaborativo y de equipo
Habilidades
Presentacin, orden y
ortografa
Actitudes
Investigacin (cita fuentes
de consulta)
PORCENTAJE
14
70%
Complementa la evaluacin a
distancia, mximo en 1 punto.
30%
20%
10%
Estrategia de aprendizaje*
PUNTAJE
Tenga presente que la finalidad de la valoracin cualitativa es principalmente formativa; sin embargo,
en circunstancias especiales podra afectarle positiva o negativamente en su calificacin cuantitativa.
Sr. estudiante:
** Recuerde: que la evaluacin a distancia del primer bimestre consta de dos partes: una objetiva y otra de ensayo, debe desarrollarla y entregarla en su respectivo Centro Universitario hasta el 15 de noviembre
* Son estrategias de aprendizaje, no tienen calificacin; pero debe responderlas con el fin de autorregular su proceso de aprendizaje
3. Coevaluacin
Prueba
Presencial
Ensayo
Objetiva
Evaluacin a
Distancia**
Comportamiento tico
1. Autoevaluacin y actividades
recomendadas.
Formas de evaluacin
2. Heteroevaluacin
13
PRIMER BIMESTRE
Estimado(a) estudiante:
Iniciamos nuestro estudio con este interesante proverbio, que nos da una pauta de cmo es el proceso
de aprendizaje de la lgica de programacin, con ello le invitamos a poner especial inters en su
estudio y a no desesperarse si las cosas no se ven fciles al inicio, esto no debe preocuparle porque
lograr mayor claridad conforme vaya avanzando con el desarrollo de los ejercicios.
Para el estudio de la presente Unidad trabajaremos con el captulo 3 del texto bsico y
opcionalmente los libros de lgica planteados en la bibliografa, si puede disponer de ellos sera
importante que los use para reforzar los temas planteados.
Una de las habilidades de pensamiento ms importante para aprender a programar es la abstraccin
del problema, la cual podemos decir que es la capacidad de identificar partes en las que podemos
dividir un problema para trabajar sobre ellas en la bsqueda de la solucin.
Cuando el problema se refiere a programacin, en trminos generales estas partes se pueden considerar
como entradas, proceso, almacenamiento y salida (fig. 1.1), que son los tareas bsicas que realiza el
computador.
ENTRADAS
PROCESO
SALIDA
ALMACENAMIENTO
14
PRIMER BIMESTRE
Ejemplo 1.1
Problema: Calcule la edad de una persona.
Anlisis del problema:
Debe solicitar la fecha de nacimiento y restarla de la fecha actual, el resultado debe expresarse
en aos, meses y das. Hasta aqu el asunto parece fcil, pero si lo analizamos con ms detalle
la operacin de restar fechas es un poco ms compleja que la resta comn, de hecho no puedo
restar directamente las dos fechas como si se tratase de dos nmero cualquiera, las fechas son
nmeros compuestos por tres componentes, que seran los aos, los meses y los das, los cuales
debo restarlos por separado.
Calcular la edad que tiene una persona nacida el 12 de abril de 1985 al 15 de mayo de 2009.
Abstrayendo los datos tendramos:
Fecha actual: 2009-05-15
Fecha de nacimiento: 1985-04-12
Si aplicamos el clculo requerido tendramos que ejecutar las siguientes operaciones:
Ao
Mes
Da
Fecha actual
2009
05
15
Fecha de nacimiento
1985
04
12
Edad
0024
01
03
Mes
Da
Fecha actual
2009
05
15
Fecha de nacimiento
1980
12
22
Edad
0029
-7
-7
Si interpretamos la respuesta tendramos que la edad de la persona es 29 aos, -7 meses y 7 das, lo cual no resulta lgico porque nadie tiene una edad negativa, este debido a que no
podemos realizar restas cuando la fecha de nacimiento es mayor a la fecha actual, en este caso
toca aplicar las siguientes reglas:
1.
15
PRIMER BIMESTRE
2.
3.
Solucin:
Luego del anlisis realizado, vamos a realizar el clculo correspondiente
Ao
Mes
Da
2009 -1 = 2008
5-1 = 4 + 12 = 18
15+30 = 45
Fecha actual
2009
05
15
Fecha de nacimiento
1980
12
22
Edad
0028
23
Prestamos
16
PRIMER BIMESTRE
Como habr notado al obtener conclusiones a partir de las premisas, los enunciados pueden ser
verdaderos, falsos, correctos o incorrectos. El valor de verdad corresponde a su comparacin con la
realidad y la correccin tiene que ver con la argumentacin que sustenta dicha conclusin.
Los ejercicios hasta ahora analizados en el texto son relativamente sencillos, pero en la prctica nos
encontramos con situaciones ms complejas, por lo tanto el razonamiento lgico debe apoyarse en un
gran nmero de equivalencias y reglas de inferencia que permiten llegar a conclusiones verdaderas o
falsas.
Estudie ahora los apartados Lgica de Programacin con sus secciones Aplicacin de la
lgica en programacin y Finalidad de los enunciados del proceso del captulo 3 del
texto bsico.
Como bien menciona el autor, la Lgica de la Programacin es una habilidad o competencia que
permite obtener algoritmos susceptibles de implementarse en un lenguaje de programacin.
Muchas personas tienen facilidad para inferir algoritmos rpidamente, pero como podemos darnos
cuenta el uso adecuado de los silogismos, ayuda a formar esta capacidad. Si usted ha tenido la
oportunidad de estudiar Lgica Matemtica, seguramente habr sentido que no le sirve de mucho para
programacin, lo cual segn lo estamos analizando no es cierto, y lo ms interesante es que le ayuda a
ordenar las ideas para obtener algoritmos eficientes a partir de los enunciados.
Aunque todava no hemos desarrollado ningn algoritmo, hemos podido establecer las salidas
esperadas, los datos de entrada y el proceso de clculo requerido, as como tambin ha establecer si la
informacin que hemos obtenido es suficiente y correcta como para poder resolver el problema que
tenemos en mente.
Si se ha fijado, tenemos diferentes tipos de enunciados que es necesario plantear para poder establecer
las condiciones de un problema; mientras ms grande y complejo es el problema, requerimos una
mayor cantidad de enunciados, los cuales es preciso ubicar en alguna de las tres categoras que son
entradas, proceso y salidas.
1.2 Principios en la elaboracin de enunciados
Como ya hemos mencionado en el apartado anterior, la clave para resolver de manera lgica un
problema es la adecuada elaboracin de enunciados. En esta seccin vamos a analizar los principios
que ubican a los enunciados en entradas, proceso y salidas.
Para el estudio de este tema, tome su texto bsico y lea el subtema Principios en la elaboracin
de enunciados.
17
PRIMER BIMESTRE
Muy probablemente habr tenido experiencia programando bien sea en el colegio, en su trabajo,
o ahora que est estudiando para obtener su ttulo, si corresponde a este ltimo caso, seguramente
reconocer estos principios en algunas de las caractersticas de los algoritmos, de all la importancia de
que antes de resolver un problema, comience planteando los enunciados de acuerdo a cada uno de
los procesos estudiados.
Para medir el grado de comprensin que ha obtenido respecto de la elaboracin de enunciados,
srvase desarrollar el ejercicio 03.02, note que no es necesario haber estudiado el captulo 1 del
texto bsico para hacerlo. Adicionalmente resuelva las preguntas del captulo 3.
1.3 Comprensin y especificacin del problema
Muchos autores inician el estudio de la programacin con situaciones triviales como por ejemplo
resolver el problema de sumar dos nmeros, lo cual la mayora de las veces resulta contraproducente
porque se subestima la verdadera naturaleza de los problemas de programacin.
Qu complejidad se puede encontrar en el problema de sumar dos nmeros o en el de encontrar
el mayor de dos nmeros? Sera posible plantear enunciados para este tipo de problemas? Lo ms
seguro es que pueda poner uno o dos pero no tendr necesidad de desarrollar grandes habilidades de
pensamiento para hacerlo.
Los problemas de programacin reales suelen tener mayor grado de complejidad y se prestan muy
bien para realizar la identificacin de las entradas, proceso y salida. Por ello consideramos importante
comenzar con problemas no triviales que permitan desde el inicio poner en prctica la mayora de los
principios.
Como se ver ms adelante el proceso de programacin inicia con una etapa de anlisis en la cual se
busca identificar todas las caractersticas del problema que incluyen: el contexto del dominio que nos
permitira conocer datos, reglas que acompaan al problema en cuestin y las restricciones de entradas
o salidas que debemos respetar.
1.4 Identificacin de entradas procesos y salida
Tal como se mencion anteriormente la resolucin de un problema de programacin implica la
identificacin de entradas, procesos y salidas, las cuales deben cumplir con las caractersticas indicadas
en la seccin 1.2 de la presente gua.
El anlisis del problema contrario a lo que el sentido comn dictara, debe comenzar con la identificacin
de la SALIDAS esperadas, es decir los resultado que esperamos tener de nuestra solucin. En esta
etapa entonces debemos elaborar los enunciados correspondientes a las salidas que normalmente
corresponderan a los enunciados de resultado.
El siguiente paso es idear el proceso que nos permita llegar al resultado deseado. Los enunciados
del PROCESO, corresponderan a la asignacin de valores, enunciados de clculo y enunciados
condicionales.
Finalmente debemos identificar las ENTRADAS requeridas para poder realizar los clculos. Los enunciados
en esta categora normalmente corresponden con enunciados de asignacin de valores y enunciados
de valor preexistente. La figura 1.2 ilustra grficamente esta forma de analizar el problema.
18
PRIMER BIMESTRE
Entradas
Proceso
Salidas
1
2
Si el da de nacimiento es mayor al da actual debe solicitar un mes expresado en das a los meses
de la fecha actual, con lo cual se suman 30 das al da actual y se resta un mes al mes actual.
Si el mes de nacimiento es mayor que el mes de la fecha actual, debe solicitar un ao expresado
en meses a la fecha actual, con lo cual se suman 12 meses al mes actual y se resta un ao a ao
actual.
Enunciados de la entrada
Las fechas actual y de nacimiento deben ingresarse en tres nmeros cada una que representan
ao, mes y da.
Un ao tiene 12 meses.
19
PRIMER BIMESTRE
EJERCICIOS
Trabajemos ahora para reforzar los conocimientos adquiridos, desarrollando el siguiente ejercicio.
1.
Considere el siguiente problema y elabore los enunciados relacionados con la entrada, procesos
y salidas: se desea entregar una cantidad de dinero en dlares con la menor cantidad de billetes
y monedas.
Ya realiz el ejercicio? Qu bien!
!Continuemos
Autoevaluacin 1
Hemos concluido el estudio de la primera unidad. Conviene comprobar cunto ha logrado asimilar
de los temas revisados en esta parte, para lo cual es necesario que desarrolle el examen rpido del
captulo 3 del texto bsico. Verifique sus respuestas con el solucionario que se encuentra al final de la
gua didctica.
20
PRIMER BIMESTRE
UNIDAD II
NATURALEZA DE LOS DATOS
El propsito de la presente unidad es conocer la importancia del uso de los datos al momento de
resolver problemas computacionales, as como tambin aprender a elegir los tipos de datos que mejor
se adapten al contexto del problema que estamos tratando de resolver para lograr un mayor rendimiento
en la ejecucin de nuestros algoritmos.
La temtica abordada en esta unidad est vinculada con los captulos 4 y 5 del texto
bsico.
2.1 Naturaleza de los datos
Antes de revisar y desarrollar un algoritmo, es necesario aprender a utilizar los datos que sern procesados
y transformados en resultados (informacin) por dichos algoritmos. Los datos son representaciones
simblicas no significativas que sirven como punto de partida para poder resolver un problema
computacional.
A continuacin se muestran los diferentes tipos de valores que se pueden manejar en un
computador:
Tipo de valor
Descripcin
Numricos
Cadena
Fecha
Booleanos
Permite almacenar
Verdadero-Falso
Nulos
Ausencia de valor
BLOB
Representacin binaria
imgenes, sonidos, etc.
valores
binarios.
para
1-0,
almacenar
A continuacin usted podr darse cuenta en qu punto intervienen los datos, considerando la
arquitectura general de un computador.
Datos
Procesamiento
Informacin
2. Wikipedia (2009): Dato, [En lnea] Disponible en: http://es.wikipedia.org/wiki/Datos [Consulta 25-06-2009]
21
2.2
PRIMER BIMESTRE
Expresiones y variables
Para comprender cmo escribir expresiones, srvase estudiar el apartado Expresiones
y Variables del captulo 4 de su texto bsico.
Una vez que ha realizado la lectura del apartado sugerido, podemos concluir que una expresin en
trminos generales es la representacin de un clculo necesario para la obtencin de un resultado; a
continuacin se presenta ejemplos de diferentes tipos de expresiones:
4
UTPL
8+2
Expresin absoluta
Expresin absoluta
Expresin compuesta
nom_variable
RAM
Por otro lado, una variable es una referencia lgica a una posicin fsica de la memoria RAM, tal como
se esquematiza a continuacin:
En donde: nom_variable corresponde al nombre de la variable que referencia al valor 4 (expresin
absoluta), que est almacenado fsicamente en una celda de la memoria RAM.
2.3
Dominios
Una vez que haya revisado los contenidos del libro en relacin a los dominios y sus tipos, podemos
concluir que un dominio es el conjunto de valores vlidos para un dato. Antes de implementar un
algoritmo se debe definir correctamente el dominio de los datos que vayamos a usar, para de esta
forma evitar que se ingresen valores incorrectos. Por ejemplo: si deseamos almacenar la edad en
aos de una persona, claramente podemos darnos cuenta que el rango de valores vlidos estaran
comprendidos entre 0 y 130, este rango corresponder al dominio, evitando as que se ingrese valores
mayores o tipos de datos diferentes que vayan afectar la ejecucin del algoritmo o en su defecto que
provoquen almacenar informacin incorrecta.
2.4
Tipos de operadores
Luego de haber identificado en su texto bsico los tipos de operadores que se puede usar en una
expresin, podemos concluir diciendo que un operador es un smbolo que tiene una funcin predefinida
(suma, resta, multiplicacin, mayor que, etc.); los mismos que nos permiten construir expresiones
compuestas, como las que se muestran a continuacin:
A = (b * h)
A = (b * h) / 2
Y = x^2 + 5
22
PRIMER BIMESTRE
Accin
Suma
Resta
Multiplicacin
Divisin
Exponencial
Operadores de asignacin
Operador
Accin
Igual que
Operadores relacionales o comparativos
Operador
Accin
Igual que
<
Menor que
>
Mayor que
<=
>=
!=
Distinto a
Operadores Lgicos
Operador
Accin
NOT
Negacin
AND
Conjuncin (Y)
OR
Disyuncin (O)
Es importante sealar que el resultado de las operaciones lgicas, es decir expresiones que contengan
operadores comparativos o lgicos, est determinado por las tablas de verdad correspondientes a cada
una de ellas, tal como se puede apreciar a continuacin:3
Operador NOT
A
NOT A
3. Wikipedia (2009): Tablas de valores de verdad, [En lnea] Disponible en: http://es.wikipedia.org/wiki/Tabla_de_valores_de_verdad [Consultado 15-06-2009]
23
PRIMER BIMESTRE
Operador AND
A
A AND B
Operador OR
2.5
A OR B
Reglas de precedencia
Estimado estudiante, le sugiero realizar una lectura comprensiva del apartado de reglas
de precedencia y tenga muy en cuenta los diferentes tipos que menciona el texto bsico,
finalmente complemntelos con lo que a continuacin se cita:
24
Expresin inicial
((3 + 2) * 2 - 4) / 2 * 5
Se resuelve (3 + 2)
(5 * 2 - 4) / 2 * 5
Se resuelve 5 * 2
(10 - 4) / 2 * 5
Se resuelve (10 - 4)
6/2*5
Se resuelve 6 / 2
3*5
Se resuelve 3 * 5
15
PRIMER BIMESTRE
Ejercicio 2.1
Resolver la siguiente expresin teniendo en cuenta las reglas de precedencia.
Expresin
12 / 4 * (7 - 5) / 3 * (4 3)
EJERCICIOS
Es hora de trabajar en los siguientes ejercicios.
1.
Desarrolle los ejercicios del apartado Ejercicio 04.04 del texto bsico.
2.
Desarrolle los ejercicios del apartado Ejercicio 05.01 del texto bsico.
3.
Dados los valores de: X = 1, Y = 4, Z = 10, resolver la siguiente expresin tomando en cuenta
el orden de los operadores.
2 * X + 0.5 * Y 1 / 5 * Z
Autoevaluacin 2
Una vez terminada esta unidad, midamos su nivel de comprensin resolviendo el examen rpido del
captulo 4 del texto bsico.
25
PRIMER BIMESTRE
UNIDAD III
ALGORITMOS
El propsito de la presente unidad es la de explicar en forma general el proceso de desarrollo de software
con todas sus fases y lo que se realiza en cada una de ellas, para que usted tenga una referencia de lo
que implica desarrollar una aplicacin que cumpla con todas las expectativas del usuario. Tambin se
revisar la estructura de un algoritmo y cmo debemos implementarlos aplicndolos a la resolucin de
problemas de la vida real.
La temtica abordada en esta unidad est vinculada con el captulo 6 del texto bsico.
Pruebas e implantacin
5. Mantenimiento
Revisemos ahora las actividades que se realizan en cada una de las fases del ciclo de
desarrollo, as como tambin los entregables que se deben generar en cada fase, para
ello srvase estudiar los apartados del captulo 6 de su texto bsico: Procedimiento de
creacin de un programa e Implementacin prctica del ciclo de desarrollo.
Una vez que haya concluido con la revisin de los apartados del texto base, puede darse cuenta que
el desarrollo de una aplicacin informtica para la automatizacin de procesos de negocio no es nada
trivial, por lo que se requiere de un gran equipo de trabajo y de una adecuada planificacin para lograr
el objetivo final.
En la actualidad dos de las metodologas de software ms usadas para el desarrollo de sistemas
informticos de nivel empresarial son MSF (Microsoft Solution Framework) y RUP (Rational Unified
Process). Estas metodologas constituyen un marco referencial que se debe ajustar para cada equipo,
proyecto y empresa. A continuacin se presenta las fases que proponen dichas metodologas.
26
PRIMER BIMESTRE
4. Microsoft. (2002): MSF Process Model v. 3.1, [En lnea] Disponible en: http://www.microsoft.com/msf [Consulta 1506-2009]
5. Jacob, I., Booch, G. y Rumbaugh, J. (2004), El Proceso Unificado de Desarrollo de Software, Espaa, Pearson Educacin.
27
3.2
PRIMER BIMESTRE
Determinacin de requerimientos
Vamos a iniciar este tema definiendo lo que es un requerimiento. La definicin que aparece en [IEEE,
1990] es la siguiente:
Una condicin o capacidad que un usuario necesita para resolver un problema o lograr un
objetivo.
Para poder determinar de forma clara los requerimientos del cliente, usted debe revisar
el apartado Analizar el caso real del captulo 6 de su texto bsico, en donde se explica
en forma detallada y ordenada las actividades que debe realizar para poder completar
de forma acertada la etapa de obtencin o determinacin de requerimientos.
Es importante sealar tambin que la gran cantidad de calificativos que se aplican al trmino
requerimiento muestran distintos aspectos ortogonales que a menudo se consideran aisladamente.
Para intentar clarificar la situacin, se puede identificar tres dimensiones en las que se pueden clasificar
los requerimientos; estas tres dimensiones son:
Audiencia: Indica la audiencia a la que est dirigido el requerimiento, es decir, las personas
que deben ser capaces de entenderlo. En general, se pueden distinguir dos tipos de audiencia,
los clientes y usuarios, que no tienen por que tener formacin en ingeniera del software, y los
desarrolladores de software. Cuando la audiencia est formada por clientes y usuarios, la forma
ms habitual de definir los requerimientos es mediante lenguaje natural. En el caso de que
la audiencia prevista est formada por desarrolladores de software, los requerimientos suelen
expresarse mediante un modelo, normalmente utilizando tcnicas estructuradas, orientadas a
objetos o formales.
28
PRIMER BIMESTRE
Por ejemplo: Se requiere calcular el rea de un terreno rectangular cuyas dimensiones son:
Largo:
Ancho:
10 metros
20 metros
En base a estos datos elaborar un algoritmo que permita presentar el rea de dicho terreno.
1.
2.
Identificamos el proceso que debemos seguir para calcular el rea, en este caso, ser:
rea = largo * ancho
6. Monografas. (2004): Dimensiones de la Ingeniera de Requerimientos, [En lnea] Disponible en: http://www.monografias.
com/trabajos26/sistema-documentacion/sistema-documentacion2.shtml [Consulta 15-06-2009]
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
29
3.
PRIMER BIMESTRE
Note que el algoritmo est compuesto de esos 3 pasos principales, an no se ha utilizado los tipos de
datos ni la creacin de variables, este tema ser cubierto en la siguiente seccin de la gua, aqu nos
limitamos a ver nicamente la estructuracin general del algoritmo.
Bien, realicemos el siguiente ejercicio.
Ejercicio 3.1
Elaborar un algoritmo que permita determinar el rea de un tringulo equiltero cuyo lado es
5 cm.
Ejercicio 3.2
El programa debe mostrar el factorial de un nmero ingresado por el usuario. El factorial de un
nmero entero positivo se define como el producto de todos los nmeros naturales anteriores
o iguales a l. Por ejemplo:
5! = 5 * 4 * 3 * 2 * 1 = 120
El smbolo ! indica factorial.
Utilice los espacios siguientes para el desarrollo.
Anlisis del caso
rea del conocimiento
Matemtica elemental
Anlisis de los elementos del todo
30
PRIMER BIMESTRE
Unidades de funcionalidad
ID
Unidad de funcionalidad
Prioridad
Obligatoriedad
Interfaz
Algoritmo
1
Inicio
2
3
4
5
6
Simulacin
Supongamos que ingresamos el nmero 4, el programa debera mostrar lo siguiente:
El factorial de 4 es 24
31
SEGUNDO
PRIMER BIMESTRE
BIMESTRE
EJERCICIOS
Una vez que usted ha profundizado en los temas de la unidad, es el momento que desarrolle su primer
ejercicio de algoritmos.
1.
Desarrolle el caso 6: Regla de tres simple, del apartado Ejercicio 06.01 del texto bsico.
Autoevaluacin 3
Felicitaciones Ha concluido el primer bimestre slo le falta revisar su nivel de comprensin de los
algoritmos resolviendo el examen rpido del captulo 6 del texto bsico.
32
Comprender,
analizar y resolver
problemas
aplicando los
mtodos de
la ciencia y la
ingeniera.
Analizar las
necesidades de
conocimiento
necesarias para
resolver un
problema.
Unidad 5. Diagramas de
flujo
5.1 Elementos de un
Emplear los
diagrama de flujo
diagramas de flujo
5.2 Elaboracin de
en la resolucin de
diagramas de flujo
problemas.
5.3 Ejercicios con
diagramas de flujo
Conocer la
simbologa de los
diagramas de flujo.
OBJETIVOS DE
APRENDIZAJE
8 horas de
autoestudio
4 horas de
prcticas
Semana 12
Participacin del
foro propuesto en
el EVA
Continuar con
el desarrollo de
la evaluacin a
distancia
Desarrollo de
actividades
recomendadas en la
gua didctica
Lectura
comprensiva
CRONOGRAMA
ACTIVIDADES DE
ORIENTATIVO
APRENDIZAJE
Unidades /Temas
Tiempo estimado
Disponer de
Elaborar algoritmos Unidad 4: Estructuras de Semana 9, 10 y 11 Lectura
decisin y Bucles
fundamentos
que permitan
comprensiva
24 horas de
matemticos,
la resolucin
Desarrollo de
4.1 Flujos de programa
autoestudio
econmicos,
de problemas
actividades
4.2 Estructuras selectivas
12 horas de
estadsticos
utilizando
recomendadas en la
4.3 Bucles
interaccin
y financieros
estructuras de
gua didctica
necesarios para
seleccin y control. 4.4 Estructuras de control
Interaccin con el
anidadas
interpretar,
Utilizar pruebas
EVA
4.5 Pruebas de Escritorio
seleccionar, valorar
de escritorio para
el uso y desarrollo
Inicio del desarrollo
validar la ejecucin
tecnolgico y sus
de la evaluacin a
de los algoritmos
aplicaciones.
distancia.
COMPETENCIAS
ESPECFICAS
CONTENIDOS
SEGUNDO BIMESTRE
Correo electrnico
Telfono
Entorno Virtual
de Aprendizaje:
foros, actividades,
documentos.
Gua Didctica
Texto bsico
RECURSOS
DIDCTICOS
Participacin en los
foros.
Evaluaciones
presenciales
Evaluaciones a
distancia
Autoevaluaciones
por unidades en la
gua didctica
EVALUACIN
SEGUNDO BIMESTRE
33
34
Unidad de la 4a la 6
Unidad 6. Desarrollo
Aplicar la lgica
Desarrollar
de problemas de
matemtica en
aplicaciones
programacin
el contexto de
sencillas utilizando
las Ciencias de
herramientas de
6.1 Abstraccin de
la Computacin,
programacin.
ejercicios de
con proyeccin, al
programacin
diseo de circuitos,
6.2 Componentes de una
programacin,
aplicacin
anlisis y desarrollo
6.3 Desarrollo aplicaciones
de algoritmos.
sencillas
Finalizar el
desarrollo de
la evaluacin a
distancia.
Semana 15 y 16 Preparacin para la
prueba presencial del
segundo bimestre.
Semana 13 y 14 Desarrollo de
actividades
16 horas de
recomendadas en la
autoestudio
gua didctica
8 horas de
Participacin del
interaccin
foro propuesto en
el EVA
SEGUNDO BIMESTRE
Criterios
Pruebas mixtas:
objetivas y ensayo
x
Creatividad e iniciativa
x
x
x
TOTAL
Conocimientos
Anlisis y profundidad en
el desarrollo de los temas
Para aprobar la asignatura se requiere obtener un puntaje mnimo de 28/40 puntos, que equivale al 70%.
Interaccin en el
EVA
Cumplimiento, puntualidad
y responsabilidad
x
Contribucin en el trabajo
colaborativo y de equipo
Habilidades
Presentacin, orden y
ortografa
Actitudes
Investigacin (cita fuentes
de consulta)
PORCENTAJE
14
70%
Complementa la evaluacin a
distancia, mximo en 1 punto.
30%
20%
10%
Estrategia de aprendizaje*
PUNTAJE
Tenga presente que la finalidad de la valoracin cualitativa es principalmente formativa; sin embargo,
en circunstancias especiales podra afectarle positiva o negativamente en su calificacin cuantitativa.
Sr. estudiante:
** Recuerde: que la evaluacin a distancia del segundo bimestre consta de dos partes: una objetiva y otra de ensayo, debe desarrollarla y entregarla en su respectivo Centro Universitario en la fecha establecida.
* Son estrategias de aprendizaje, no tienen calificacin; pero debe responderlas con el fin de autorregular su proceso de aprendizaje
3. Coevaluacin
Prueba
presencial
Ensayo
Objetiva
Evaluacin a
distancia**
Comportamiento tico
1. Autoevaluacin y actividades
recomendadas.
Formas de evaluacin
2. Heteroevaluacin
35
SEGUNDO BIMESTRE
La temtica abordada en esta unidad est vinculada con el captulo 7 del texto bsico.
Declaraciones
Entrada de datos
PROGRAMA
Proceso
Instrucciones
Salida de resultados
36
SEGUNDO BIMESTRE
Bloque de declaraciones
En l se especifican todas las variables que sern usadas por nuestro programa o algoritmo. Se debe
indicar el nombre de la variable, el tipo de dato y su dominio. Por ejemplo, si queremos declarar la
variable base, debemos hacerlo de la siguiente manera:
(Nombre variable, Smbolo Tipo de dato [Dominio])
(base, i[1-n])
En donde, base corresponde al nombre de la variable, i al tipo de dato entero y 1-n al dominio, es decir
en este caso, nmeros mayores o iguales a 1.
Para conocer los smbolos de los tipos de datos, srvase revisar el apartado Representacin
abstracta de tipos base del captulo 4 de su texto base.
Bloque de instrucciones
Est formado por el conjunto de operaciones que se han de realizar para la obtencin de los resultados
deseados. Segn lo indicado en la Figura 4.1, tenemos los siguientes tipos de operaciones:
a.
Entrada de datos.- La constituyen todas las instrucciones que toman los datos de entrada desde
un dispositivo externo y los almacenan en la memoria central para que puedan ser procesados.
b.
Procesamiento de datos.- Est formado por las instrucciones que modifican los datos a partir de
su estado inicial (datos de entrada) hasta el estado final (resultados).
c.
Salida de resultados.- Conjunto de instrucciones que toman los datos finales (resultados) de la
memoria central y los enva a los dispositivos externos.
Ahora bien, procederemos a adoptar un estndar al momento de escribir nuestras instrucciones que
formarn parte del programa o algoritmo. De acuerdo al tipo de instruccin u operacin que vayamos
a emplear, tenemos lo siguiente:
a. Declaracin
b.
Nombre de variable Expresin
lado 10
c.
37
d.
Muestra de datos
<< Expresin
<< lado
SEGUNDO BIMESTRE
Estimado estudiante, usted debe revisar el apartado Operaciones a nivel dato del captulo
7 de su texto bsico.
Condicional simple
Si Expresin lgica entonces
Instrucciones a ejecutar si la expresin lgica es True (verdadera)
Fin si
Ejemplo:
Si edad >= 18 entonces
>> Usted es mayor de edad
Fin si
b.
Condicional compuesto
Si Expresin lgica entonces
Instrucciones a ejecutar si la expresin lgica es True (verdadera)
De lo contrario
Instrucciones a ejecutar si la expresin lgica es False (falsa)
Fin si
Ejemplo:
Si edad >= 18 entonces
>> Usted es mayor de edad
De lo contrario
>> Usted es menor de edad
Fin si
38
SEGUNDO BIMESTRE
Para aclarar estos conceptos, por favor proceda a realizar la lectura del apartado Estructuras
de decisin del captulo 7 de su texto bsico.
4.3 Bucles
Los bucles tambin conocidos como ciclos repetitivos o estructuras de control, permiten realizar la
ejecucin de un conjunto de instrucciones de manera repetitiva mediante la evaluacin de una o ms
condiciones lgicas o por medio de un contador asociado. Antes de proceder a revisar los bucles que
usaremos en el desarrollo de nuestros algoritmos, es preciso aclarar dos conceptos clave al trabajar con
ciclos repetitivos, estos conceptos son: contadores y acumuladores.
a. Contadores
Un contador es una variable que se utiliza para contar cualquier evento que pueda ocurrir dentro
de un programa. Generalmente se suele contar desde 0 y con incrementos de uno en uno.
Para utilizar correctamente un contador primero de lo debe inicializar y luego incrementar; as
tenemos:
contador 0
Inicializacin
contador contador + 1
Incremento de 1 en 1
b. Acumuladores
Un acumulador es una variable que se utiliza para acumular elementos sucesivos con una misma
operacin. Generalmente se usan para calcular sumas o productos. Al igual que los contadores primero
se los debe inicializar y luego realizar la operacin de acumulacin; as tenemos:
suma 0
suma suma + expresin
Una vez que hemos revisado lo que es un contador y un acumulador, podemos empezar a
estudiar los bucles (loop), para ello lo invito a realizar la lectura del apartado Estructuras de
Control del captulo 7 de su texto bsico.
Cabe sealar que dependiendo del lenguaje de programacin que se use, existen varios ciclos repetitivos
que podemos emplear, sin embargo son derivaciones de los dos tipos de bucles que explicaremos a
continuacin.
a.
39
SEGUNDO BIMESTRE
Como puede darse cuenta el resultado en los dos ejemplos es el mismo, por lo que podemos usar en este
caso particular cualquiera de los dos bucles, ahora bien, lo invito a contestar la siguiente interrogante
una vez que haya realizado la lectura del apartado Estructuras de Control de su texto bsico, Cul es
la diferencia entre un bucle de comparacin al inicio y un bucle de comparacin al final?
4.4 Estructuras de control anidadas
Se conoce como estructuras de control anidadas a la combinacin o uso de las estructuras de decisin y/
o ciclos repetitivos (bucles) en la elaboracin de un algoritmo. En otras palabras, cuando una estructura
de control se coloca dentro de otra, se dice que est anidada.
Las estructuras de control pueden anidarse en tantos niveles como se desee. A fin de que las estructuras
anidadas sean ms fciles de leer, utilizaremos como una prctica habitual el aplicar sangra al cuerpo
de cada una de las instrucciones anidadas.
40
SEGUNDO BIMESTRE
Ejemplo 4.1
Determinar si la edad de una persona es la correcta para sufragar.
Si edad >= 18 entonces
Si edad < 65 entonces
<< Usted debe sufragar obligatoriamente
Caso Contrario
<< Usted puede sufragar opcionalmente
Fin Si
Caso Contrario
<< Usted no puede sufragar
Fin Si
Como usted puede apreciar en el ejemplo 4.1, se ha utilizado anidamiento en la estructura de
decisin (condicional) para resolver el problema en mencin. Cabe indicar tambin que existen
varias soluciones a dicho problema, las mismas que estn relacionadas con la capacidad de cada
persona para comprender, encontrar y plasmar dichas soluciones en un algoritmo. Esta capacidad se
desarrolla mediante la prctica continua, por lo que lo invito desde ya a plasmar los conocimientos
aqu aprendidos, mediante la realizacin de ejercicios que permitan potenciar su habilidad para la
resolucin de problemas computacionales.
Ahora bien, una vez que hemos estudiado las estructuras de decisin y bucles, estamos en la capacidad
de desarrollar algoritmos que nos permitan resolver diferentes tipos de problemas, para ello vamos a
hacer uso de las Miniespecificaciones, que tambin son conocidas como Pseudocdigo, es decir un
lenguaje neutral, que sin llegar a la rigidez de la sintaxis de un lenguaje de programacin ni a la fluidez
del lenguaje coloquial, permite codificar un programa o algoritmo con mayor agilidad.
Estimado estudiante, lo invito a realizar la lectura del Apartado Miniespecificaciones del
captulo 7 de su texto bsico.
Una vez que usted ha realizado la lectura indicada es posible que hayan surgido algunas
dudas, mismas que intentaremos aclarar con el ejemplo siguiente.
Ejemplo 4.2
Traducir a miniespecificacin el ejemplo 4.1 sobre la edad de una persona para sufragar.
41
SEGUNDO BIMESTRE
INICIO:
(edad, i[1..160])
>> edad
Caso Contrario
6
7
8
9
10
Fin Si
11
Caso Contrario
12
13
Fin Si
14
:FIN
-
-
-
42
SEGUNDO BIMESTRE
Ejemplo 4.3
Elaborar un algoritmo utilizando miniespecificaciones, que permita leer el nombre y el sueldo mensual
de 4 empleados, se debe presentar el nombre y el sueldo del empleado que ms gana as como tambin
del que menos gana. Si se repite el mayor o menor sueldo se presenta el primero que se encuentre.
Para resolver este problema, primero debemos identificar claramente cules van a ser las salidas, el
proceso y las entradas, para poder desarrollar con xito la miniespecificacin; as tenemos:
Enunciados de las Salidas
Se debe presentar el nombre y el sueldo mensual del empleado que menos gana.
Para obtener el empleado que ms gana, se debe comparar los datos ingresados mediante un
condicional y dependiendo si el sueldo ingresado es mayor al anterior, se lo almacena en una
variable, que finalmente ser la que se presente como resultado final, al terminar la ejecucin del
bucle.
Para obtener el empleado que menos gana, se debe comparar los datos ingresados mediante un
condicional y dependiendo si el sueldo ingresado es menor al anterior, se lo almacena en una
variable, que finalmente ser la que se presente como resultado final, al terminar la ejecucin del
bucle.
Enunciados de la entrada
Una vez que tenemos claro lo antes mencionado, necesitamos declarar variables para almacenar el
nombre del empleado y su sueldo mensual, tambin necesitamos variables para almacenar el nombre
de la persona que ms gana y su sueldo, as como tambin el nombre de la persona que menos gana
y su sueldo. Luego tenemos que ir comparando el sueldo de cada empleado que se ingresa para poder
determinar el mayor y menor valor, para ello emplearemos la estructura de decisin, y para controlar
que nos ingrese 4 empleados nos valdremos del bucle de comparacin al inicio (Mientras). En base a
todo esto procedemos a escribir nuestra miniespecificacin.
43
SEGUNDO BIMESTRE
INICIO:
(nombre,x(50))
(sueldo,d[0-n])
(nombreMaySueldo,x(50))
(sueldoMayor,d[0-n])
(nombreMenSuedo,x(50))
(sueldoMenor,d[0-n])
(num, i[0-n])
10
>> nombre
11
>> sueldo
12
nombreMaySueldo nombre
13
sueldoMayor sueldo
14
nombreMenSuedo nombre
15
sueldoMenor sueldo
16
num 2
17
18
num num +1
19
20
>> nombre
21
>> sueldo
22
23
sueldoMayor sueldo
24
nombreMaySueldo nombre
25
26
27
sueldoMenor sueldo
28
nombreMenSueldo nombre
29
Fin Si
30
Fin Si
31
Fin Mientras
32
<< El empleado que ms gana es: + nombreMaySueldo + con un sueldo de: $ +
sueldoMayor
33
<< El empleado que menos gana es: + nombreMenSueldo + con un sueldo de: $ +
sueldoMayor
34
:FIN
Caso Contrario
Si sueldo < sueldoMenor entonces
Una vez que hemos escrito la miniespecificacin, realizamos la prueba de escritorio, para verificar si
nuestro algoritmo es o no correcto. Para ello indicaremos mediante el uso de tablas el estado (valor) de
las variables durante la ejecucin del programa.
Supongamos que ingresamos los datos de los siguientes 4 empleados:
44
SEGUNDO BIMESTRE
Nombre: Luis
Nombre: Mara
Nombre: Jos
Nombre: Jorge
Valor
nombre
Luis
sueldo
700
nombreMaySueldo
Luis
sueldoMayor
700
nombreMenSueldo Luis
sueldoMenor
700
num
En la primera repeticin dentro del bucle Mientras entre la lnea 17 y 31, el resultado sera el
siguiente:
Variable
Valor
nombre
Mara
sueldo
800
nombreMaySueldo
Mara
sueldoMayor
800
nombreMenSueldo Luis
sueldoMenor
700
num
En la segunda repeticin dentro del bucle Mientras entre la lnea 17 y 31, el resultado sera el
siguiente:
Variable
Valor
nombre
Jos
sueldo
400
nombreMaySueldo
Mara
sueldoMayor
800
nombreMenSueldo Jos
sueldoMenor
400
num
45
SEGUNDO BIMESTRE
En la tercera repeticin dentro del bucle Mientras entre la lnea 17 y 31, el resultado sera el
siguiente:
Variable
Valor
nombre
Jorge
sueldo
1000
nombreMaySueldo
Jorge
sueldoMayor
1000
nombreMenSueldo Jos
sueldoMenor
400
num
El empleado que menos gana es: Jos con un sueldo de: $ 400
Con lo que podemos concluir que el algoritmo es correcto gracias a la prueba de escritorio que hemos
ejecutado.
EJERCICIOS 4.1
En base al ejercicio del clculo de la edad de una persona explicado en la Unidad 1 de la
presente gua didctica, realice las pruebas de escritorio, siguiendo la miniespecificacin
propuesta para dicho problema. Utilizar los siguientes datos de prueba:
Fecha de nacimiento:
Fecha actual:
01/10/1985
03/07/2009
INICIO:
(anio_n, i[1900-2009])
(mes_n, i[1-12])
(dia_n, i[1-31])
(anio_a, i[1900-2009])
(mes_a, i[1-12])
(dia_a, i[1-31])
(edad_a, i[0-150])
(edad_m, i[0-12])
10
(edad_d, i[0-31])
11
46
SEGUNDO BIMESTRE
12
>> anio_n
13
>> mes_n
14
>> dia_n
15
16
>> anio_a
17
>> mes_a
18
>> dia_a
19
20
dia_a dia_a + 30
21
mes_a mes_a -1
22
23
24
25
mes_a mes_a + 12
26
anio_a anio_a 1
27
28
29
30
31
Caso Contrario
32
33
34
Fin Si
35
:FIN
Fin Si
Si mes_n > mes_a entonces
Fin Si
47
SEGUNDO BIMESTRE
EJERCICIOS
Le recuerdo que la asignatura es prctica, por ello lo invito a desarrollar el siguiente ejercicio.
1.
Desarrolle el caso 6: Regla de tres simple, en el apartado Ejercicio 07.01 del texto bsico.
Autoevaluacin 4
Qu tanto logr comprender de este tema? Mida su avance resolviendo el examen rpido del captulo
7 del texto bsico.
48
SEGUNDO BIMESTRE
UNIDAD V
DIAGRAMAS DE FLUJO
Una vez que ha aprendido cmo resolver problemas utilizando las diferentes herramientas de la lgica
de programacin, vamos a continuar nuestro estudio con una tcnica visual de programacin conocida
como Diagramas de flujo de programa, la cual le ayudar a comprender mejor la manera de resolver
problemas de programacin.
La notacin visual ayuda a tener una apreciacin completa de la solucin que difiere de la
obtenida en las miniespecificaciones, esto gracias a una mejor visualizacin lograda con el uso
de los smbolos grficos.
2.
La notacin estndar permite una comunicacin ms efectiva, lo cual convierte a los diagramas
de flujo en una excelente herramienta para documentar los programas.
3.
Un diagrama de flujo bsicamente est conformado por smbolos y reglas. Si usted recapitula un poco,
se dar cuenta de que hay correspondencia entre estos smbolos y las sentencias vlidas de un programa,
por lo que se puede dibujar un diagrama de flujo a partir de una miniespecificacin o hacerlo sin ella.
49
SEGUNDO BIMESTRE
En cuanto a los smbolos, los Diagramas de Flujo de Programa tienen 4 categoras que son:
De preparacin de datos.
De proceso.
Especiales.
ENTRADA/SALIDA DE DATOS
Para entrada o salida de datos se usa el smbolo
al cual se le debe indicar si se trata de un ingreso
de datos (GET) o una presentacin de datos (PUT), aunque esto en realidad no corresponde al estndar,
tal como lo menciona el autor del libro, por lo que se puede usar otro tipo de notacin para indicar si
se trata de una entrada o una salida. Otro aspecto que no se menciona en el libro es la posibilidad de
combinar un mensaje de solicitud de datos con una entrada de datos, en realidad sera una entrada de
datos acompaada de un mensaje de peticin para el usuario como lo podemos apreciar en la figura
5.1, en la cual se ha colocado dos posibilidades para el ingreso de los datos.
En la prctica muchos programadores que se enfocan en la solucin de un problema consideran que no
es necesario colocar mensajes de entrada de datos, puesto que esos son detalles de implementacin,
en tal virtud podra ser suficiente utilizar PUT para mostrar resultados y GET para obtener valores en
cuyo caso se colocar nicamente el nombre de las variables en las que se almacenarn los datos.
s
In g re se u n
n m e ro
E
In g re se u n
n m e ro , n u m
E
num
50
SEGUNDO BIMESTRE
El desarrollo de diagramas de flujo puede realizarse de dos maneras, la primera es partir de una
miniespecificacin y la segunda es hacerlo directamente sin ella, en cualquiera de los dos casos
debemos tener en cuenta la necesidad de realizar el anlisis correspondiente del problema, tal como
aprecibamos en el captulo 1 de la presente gua didctica, sin este anlisis resultar muy complicado
tratar de resolver cualquier problema.
Vale acotar adems que cualquier instruccin dada en miniespecificacin tiene su contraparte en
los diagramas de flujo, por lo que la traduccin podra realizarse de manera directa y viceversa. Una
diferencia fundamental es que tanto en las miniespecificaciones conocidas tambin como pseudocdigo
y el cdigo de un programa en un lenguaje cualquiera es preciso realizar pasos previos como la
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
51
SEGUNDO BIMESTRE
declaracin de variables donde se especifica el tipo de dato y tamao de las variables que se van a
usar, en los diagramas de flujo esto no es necesario, puesto que como mencionamos antes son detalles
de implementacin.
Para aprender cmo escribir diagramas de flujo, remtase a la seccin Cmo elaborar
un diagrama de flujo de programa del captulo 8, y estudie detenidamente los primeros
diagramas que le van indicando cada una de las estructuras bsicas de un diagrama de
flujo.
En la seccin del libro indicada, se ha mostrado como construir un diagrama de flujo para un programa
que lea nmeros del 1 al 10 hasta que se ingrese el nmero 7, y adems se lo ha hecho a partir de
una miniespecificacin. Ahora es posible que se est preguntando si ya tengo la miniespecificacin,
para qu hago el diagrama?, para responder a esta pregunta le voy a proponer un ejemplo para que lo
analice y luego veamos lo que piensa.
Se desea desarrollar un diagrama de flujo para un programa que sea capaz de decir si un nmero es
perfecto. Se considera que un nmero es perfecto cuando la sumatoria de todos sus divisores exactos
es igual al mismo nmero.
La miniespecificacin para este algoritmo sera la siguiente:
1
INICIO:
(num, i[0-n])
(cnt, i[0-n])
(sum, i[0-n])
>> num
cnt 1
sum 0
10
11
<< cnt
12
13
Fin si
14
Cnt = cnt + 1
15
Fin mientras
16
17
18
19
Fin si
:FIN
52
SEGUNDO BIMESTRE
Inicio
num
cnt
sum
0
Verifica si cnt es d ivisor d e
num , m ediante la b usqueda
del residuo d e la d ivisin , si
este e s 0, e s divisor e xcto
(num % cnt) = 0
Si
cnt
sum
sum + cnt
no
cnt = cnt +
1
cnt
sum = num
si
El num ero
es p erfecto
no
El nm ero
no e s
perfecto
fin
53
SEGUNDO BIMESTRE
Ejemplo 5.1
Resolver mediante un diagrama de flujo el ejemplo 1.2 del clculo de la edad de una persona que
planteamos en la unidad 1, en este caso no vamos a tener como punto de referencia la miniespecificacin,
sino el anlisis del problema que bsicamente lo desarrollamos planteando enunciados para las salidas,
el proceso y las entradas requeridas.
En este caso como el anlisis del problema ya fue realizado, vamos a comenzar plasmando en el
diagrama las entradas, luego el proceso y finalmente las salidas, esto significa que para analizar el
problema, debemos partir desde las salidas, pero para ya idear la solucin, debemos comenzar en
sentido contrario.
Comencemos desarrollando nuestro diagrama con las entradas, para ello repliquemos los enunciados
de la parte de entrada, pero numerndolos para poder explicarlo mejor:
Enunciados de la entrada
1.
2.
Las fechas actual y de nacimiento deben ingresarse en tres nmeros cada una que representan
ao, mes y da.
3.
4.
Un ao tiene 12 meses.
5.
6.
7.
En primer lugar todo diagrama de flujo debe comenzar con el smbolo de inicio (figura 5.3), de la
siguiente manera:
Inicio
Luego realizamos la entrada de datos recogiendo los enunciados 1,2, 4 y 5, en este caso no nos
estamos preocupando por los mensajes de entrada para el usuario, ni por la validacin de los valores
mximos y mnimos de cada mes, sin embargo se ha colocado comentarios en el diagrama para que el
programador sepa los detalles de cmo se que se debe implementar.
54
SEGUNDO BIMESTRE
Inicio
Anio _n,
m es_n,
dia _n
Anio _a,
m es_a,
dia _a
Solicitar ao , m es y d a d e
nacim ient , validando que
cum plan con sus va lores
m xim os y m nim os
Solicitar ao , m es y d a
actuales validando que
cum plan con sus va lores
m xim os y m nim os
2.
3.
4.
Si el da de nacimiento es mayor al da actual debe solicitar un mes expresado en das a los meses
de la fecha actual, con lo cual se suman 30 das al da actual y se resta un mes al mes actual.
5.
6.
Si el mes de nacimiento es mayor que el mes de la fecha actual, debe solicitar un ao expresado
en meses a la fecha actual, con lo cual se suman 12 meses al mes actual y se resta un ao a ao
actual.
7.
Para la elaboracin del diagrama comencemos con los enunciados 1,2, 3 y 4, lo cual significa que
debemos hacer una resta comenzando por los das y necesitamos tres variables para guardar aos,
meses y das que corresponden a la edad. Acogiendo el enunciado 4 planteamos en primera instancia
la pregunta respecto si el da de nacimiento es mayor al da actual, y en caso de serlo sumamos 30 das
al da de nacimiento y restamos los mismos 30 das expresados en meses al mes de nacimiento para
equilibrar las operaciones, con lo cual finalmente procedemos a realizar la resta.
55
SEGUNDO BIMESTRE
Solicitar ao , m es y da de
nacim iento , va lidando que
cum plan con sus va lores
m xim os y m nim os
Inicio
Anio_n,
m es_n,
dia_n
Anio_a,
m es_a,
dia_a
Solicitar ao , m es y da
actuales validando que
cum plan con sus va lores
m xim os y m nim os
SI
dia_a
dia_a + 30
m es _a
m es_a - 1
NO
edad_d
dia_a dia_n
Figura 5.5 Diagrama de flujo parcial clculo edad. Procesando los meses
Ahora procedemos a hacer lo mismo con los meses, slo que en lugar de sumarle 30 das, debemos
sumarle 12 meses de un ao, los cual nos lleva a restarle 1 al ao de nacimiento para no alterar los
datos, el diagrama resultante se encuentra en la figura 5.6.
Para culminar con los enunciados del procesamiento, vamos a trabajar con los aos, y puesto que
hemos postergado hasta aqu el control del enunciado 3 de la entrada, que dice que la fecha de
nacimiento, no puede ser mayor a la fecha actual, lo implementaremos con la verificacin de que
el ao de nacimiento no sea mayor que el ao actual, y en caso de serlo, notificaremos un error,
adems aqu consideramos los enunciados de la salida, que bsicamente nos dicen que la edad se debe
expresar en formato de ao, mes y da, que no puede haber edades negativas, ni tampoco meses o das
que superen el lmite establecido. El diagrama resultante se muestra en la figura 5.7.
56
SEGUNDO BIMESTRE
Solicitar ao , m es y d a d e
nacim iento , va lidando que
cum plan con sus va lores
m xim os y m nim os
Inicio
Anio _n,
m es_n,
dia _n
Anio _a,
m es_a,
dia _a
Solicitar ao , m es y d a
actuales validando que
cum plan con sus va lores
m xim os y m nim os
SI
dia _a
dia_a + 30
m es_a
m es_a - 1
m es_a
m es_a + 12
NO
edad_d
dia _a dia _n
m es _n > m es_a
anio_a
NO
edad_m
SI
_anio_a - 1
m es_a m es_n
Figura 5.6 Diagrama de flujo parcial clculo edad. Procesando los meses
57
SEGUNDO BIMESTRE
Solicitar a o , m es y da de
nacim iento , validando que
cum plan co n sus v alores
m xim os y m nim os
Inicio
Anio _n,
m es_n,
dia _n
Anio _a,
m es_a,
dia _a
Solicitar a o , m es y da
actuales va lidando que
cum plan con sus v alores
m xim os y m nim os
SI
dia _a
SI
m es_a
dia_a + 30
m es_a
m es _a - 1
NO
edad_d
dia _a dia _n
m es _n > m es_a
m es_a + 12
anio_a
NO
edad_m
m es_a m es_n
SI
Error: La fecha
de n acim iento
es m ayor a la
actual
NO
edad_a
anio _a anio_n
Edad: ,
edad_a,
edad_m ,
edad_d
F in
58
_anio_a - 1
SEGUNDO BIMESTRE
Una vez que hemos completado el diagrama de la figura 5.7, le invito a que ejecute algunas corridas
del diagrama utilizando algunos casos de prueba para ver si el comportamiento de la solucin es
correcto, es decir funciona bien para todos los casos y se ajusta a las condiciones del problema, como
sugerencia para seleccionar las fechas de ingreso, considere a las siguientes:
Tanto la fecha de nacimiento, como la fecha actual exactamente iguales. (Poco usual)
dia_n
anio_a
mes_a
dia_a
anio_n mes_n
dia_n
anio_a
mes_a
dia_a
anio_n mes_n
dia_n
anio_a
mes_a
dia_a
Caso II
Caso III
Luego de haber probado el funcionamiento del diagrama de flujo, trate de responder a las siguientes
interrogantes:
1.
2.
Hay algn error de concepcin que hace que los resultados no siempre sean exactos?
3.
4.
5.
59
5.3
SEGUNDO BIMESTRE
EJERCICIOS 5.1
Desarrolle un diagrama de flujo para obtener el salario neto de los empleados de una empresa que
ganan de acuerdo a las siguientes condiciones, la horas menores o iguales a 40 se pagan como hora
normal que se introduce por teclado, las horas que exceden a las 40 se pagan como extras a 1.5 veces
el valor de la hora normal. Los impuestos se deducen de acuerdo a las siguientes condiciones: si gana
menos de 2000 USD, no paga impuestos, los siguiente 1500 USD pagan el 20% y el resto el 30%.
Para desarrollar este ejercicio lalo detenidamente y elabore en primer lugar los enunciados
correspondientes a las salidas, proceso y entradas.
Enunciados para la salida
1.
2.
3. ______________________________________________________________
4. ______________________________________________________________
5. ______________________________________________________________
6. ______________________________________________________________
7.
60
______________________________________________________________
SEGUNDO BIMESTRE
El costo de horas normales se obtiene multiplicando las horas hasta 40 por el costo de cada hora
ingresada.
2. ______________________________________________________________
3. ______________________________________________________________
4. ______________________________________________________________
5. ______________________________________________________________
6. ______________________________________________________________
7.
______________________________________________________________
61
SEGUNDO BIMESTRE
Una vez que ha terminado de desarrollar los enunciados, desarrolle el diagrama de flujo empezando
por los enunciados para la entrada de datos, luego para los del procesamiento y finalmente para los de
la salida.
62
SEGUNDO BIMESTRE
Luego deber realizar pruebas de escritorio, ocupe el siguiente espacio para hacerlo. Estas pruebas le
permitirn determinar si el algoritmo es correcto o no, si no lo es, identifique el problema y corrija el
diagrama para que arroje los resultados correctos.
63
SEGUNDO BIMESTRE
EJERCICIOS 5.2
Este ejercicio se trata de analizar un diagrama de flujo y establecer si es correcto o no con los casos de
prueba planteados. Si encuentra algn problema debe corregirlo y probarlo nuevamente, de modo que
se asegure de que funciona.
Planteamiento del problema: Se desea desarrollar un algoritmo que permita establecer si un nmero es
primo. Por definicin En matemticas, un nmero primo es un nmero natural que tiene nicamente
dos divisores naturales distintos: l mismo y el 1, y adems la unidad no se considera como nmero
primo7.
La estrategia usada para el desarrollo se basa en la definicin y consiste en contar el nmero de divisores
exactos comprendidos entre la unidad y el nmero.
In icio
num
d 2
d <= n u m
num % d = 0
SI
d E xa cto s
d E xa cto s + 1
NO
d
d +1
d E xa cto s = 0
SI
El num ero
e s p r im o
NO
El nm ero
no e s
p r im o
F in
64
SEGUNDO BIMESTRE
Ahora s, manos a la obra, verifique si el diagrama de flujo funciona con los nmeros 1, 2, 4, 5, 9,11,
13, 33. Utilice el siguiente espacio para resolver la tarea propuesta:
Pruebas de Escritorio
num
dExactos
resultado
65
SEGUNDO BIMESTRE
Si encontr el problema, utilice el siguiente espacio para proponer un diagrama que lo corrija.
66
SEGUNDO BIMESTRE
EJERCICIOS 5.3
El propsito de ejercicio es optimizar el diagrama de modo que se reduzcan el nmero de ciclos del
bucle. Para darse cuenta qu opciones hay para ello ejectelo con los mismos datos del ejercicio anterior
para que analice el porqu el nmero de ciclos es alto. Hay al menos dos forma de optimizarlo.
Inicio
num
esPrim o
d <= n um
num % d = 0
SI
esPrim o
NO
d
d+1
esPrim o = 1
El num ero
es p rim o
El nm ero
no e s
prim o
F in
67
SEGUNDO BIMESTRE
EJERCICIOS 5.4
Se desea construir un algoritmo que le permita generar una tabla de amortizacin de prstamos para lo
cual se requiere calcular lo que debe pagar mensualmente hasta que termine de realizar los pagos. Los
intereses siempre se pagan sobre el saldo del capital prestado, por lo tanto nunca una cuota es mayor
igual que la del mes anterior.
Ahora intente resolver el problema en un diagrama de flujo.
Luego de ver el problema, es probable no haya podido hacer absolutamente nada por falta de
informacin, ahora Cmo se supone que debemos resolver este problema?
68
SEGUNDO BIMESTRE
De acuerdo a lo estudiado debemos comenzar haciendo el anlisis del problema, esto es identificando
y elaborando enunciados para las salidas, proceso y finalmente para las entradas. Luego podemos optar
por desarrollar la miniespecificacin o directamente el diagrama de flujo.
Autoevaluacin 5
nimo, ya ha concluido la Unidad 5, slo le falta medir cunto aprendi en ella, para ello lo invito a
desarrollar el examen rpido del captulo 8 del texto bsico.
69
SEGUNDO BIMESTRE
UNIDAD VI
DESARROLLO DE PROBLEMAS DE PROGRAMACIN
La prctica de la programacin es un arte y una ciencia muy interesante para nosotros como seres
humanos, el hecho de poder disear algo que es capaz de procesar la informacin es de por s una
creacin en la que plasmamos nuestra forma de resolver los problemas.
A lo largo de la presente gua didctica, nuestro principal inters ha sido el de inducir el pensamiento
lgico aplicado a la solucin de problemas de programacin, en este captulo vamos a usar todo lo
aprendido para disear un pequeo programa, considerando cada uno de los componentes.
Puesto que hasta ahora no ha tenido la oportunidad de ver funcionando nada en la computadora,
vamos a usar una herramienta de programacin visual conocida como RAPTOR, desarrollada por La
Academia Pilotos de las Fuerzas Armadas de los Estados Unidos, en la cual tendr la oportunidad de
disear sus diagramas de flujo y ejecutarlos para ver los resultados, vale aclarar, que el uso de esta
herramienta sirve nicamente para ayudarle a visualizar cmo funciona la lgica de un programa.
Para el desarrollo de los contenidos de esta unidad, utilizaremos el captulo 9 del texto
bsico.
Los captulos 10,11,12 y 13 le ensean a traducir los algoritmos o las miniespecificaciones a un
lenguaje como Visual Basic.Net, Java, C# o C++, cuyo estudio est fuera del alcance de esta
asignatura y por lo tanto queda a su criterio el estudiarlos.
6.1 Abstraccin de problemas de programacin
El esquema bsico de funcionamiento del computador, como mencionamos en la Unidad 1, es de
entradas, proceso, almacenamiento y salida, por tanto una aplicacin de software debe corresponder
con estas funciones, a cada una de stas le vamos a llamar capas. En la siguiente tabla vamos establecer
la correspondencia entre las funciones y las capas.
Funcin
Capa
Descripcin
Entrada
Interfaz de Corresponde a los elementos en pantalla u otro dispositivo que permite que
usuario
el usuario ingrese informacin.
Proceso
Lgica de
proceso
Almacenamiento
Datos
Salida
70
SEGUNDO BIMESTRE
Sin importar el tamao de la aplicacin, siempre debemos pensar en estas capas, aunque puede haber
programas que no las requieran, por ejemplo un programa podra no requerir la capa de almacenamiento,
porque no guarda informacin. Es posible tambin que existan programas con muchas ms capas
debido a la complejidad de los mismos, normalmente esto se da en aplicaciones corporativas, las cuales
tienen en su diseo varias capas, el mismo que se conoce como la arquitectura de la aplicacin.
Ahora, vamos tomar una de las aplicaciones que hemos desarrollado para identificar en ellas las
diferentes capas, por supuesto que no van a estar muy elaboradas, puesto que no hemos centrado
nuestro inters en el desarrollo de interfaces sofisticadas, sin embargo vamos a ver que si tiene al menos
3 de las 4 capas, puesto que en ninguna de ellas hemos guardado informacin en disco, eso significa
que no tendr la capa de datos.
EJERCICIOS 6.1
Clculo de la edad de una persona
En el ejemplo del clculo de la edad de una persona identificamos las siguientes capas. Si no recuerda
revise nuevamente el ejercicio del diagrama correspondiente a la unidad 5.
Capa de interfaz de usuario
Puesto que hemos dicho que la interfaz de usuario corresponde a las entradas o salidas de la informacin,
en nuestro diagrama la interfaz de usuario estara dada por los smbolos de la figura 6.1:
Anio _n,
m es_n,
dia _n
Anio _a,
m es_a,
dia _a
Edad: ,
edad_a,
edad_m ,
edad_d
Error: La fecha
de n acim iento
es m ayor a la
actual
71
SEGUNDO BIMESTRE
72
SEGUNDO BIMESTRE
de lo que est pasando internamente. Las instrucciones del diagrama correspondientes a esta capa son
las que se muestran en la figura 6.4
dia _n > dia_a
SI
dia _a
SI
m es_a
dia_a + 30
m es_a
m es _a - 1
NO
edad_d
dia _a dia _n
m es _n > m es_a
m es_a + 12
anio_a
_anio_a - 1
NO
edad_m
m es_a m es_n
NO
edad_a
anio _a anio_n
Ejercicios
Desarrolle un anlisis de capas similar al aplicado al cada uno de los problemas desarrollados en
la seccin 5.3 de la gua.
Disee posibles interfaces de usuario para cada uno de los ejercicios de la seccin 5.3. Puede
usar Microsoft Visio u otro diagramador para hacerlo.
73
SEGUNDO BIMESTRE
Nombre del
componente
Descripcin
Interfaz de
usuario
Ventanas
Formularios
Botones
Cuadros de texto
Listas combinadas
Listas
Lgica de
proceso
Funciones
Procedimientos
Clases
Mdulos
Variables
Constantes
Datos
Archivos
Tablas
Estos son los componentes que por lo general se encuentra en las aplicaciones de software, y si usted
ha tenido oportunidad de desarrollar alguna aplicacin, habr reconocido algunos de ellos.
Suele ocurrir con mucha frecuencia que en el cdigo de muchas aplicaciones no se distingue las capas
que indicamos, y esto es un problema sobre todo cuando surgen cosas que hay que corregir, por ello es
importante desde el inicio tener en cuenta esta estructura para disear las aplicaciones adecuadamente,
de todos modos en el alcance de la asignatura no revisamos este tipo de aplicaciones, sin embargo
usted puede estudiar por su cuenta el tema en los captulos posteriores del texto para programacin en
alguno de los lenguajes establecidos.
Ahora bien, si piensa un poco en la capa de interfaz, lenguajes como Visual Basic, traen una interfaz
de desarrollo que permite colocar estos elemento en la ventana donde se ejecutarn, de modo que
los programadores no pierdan mucho tiempo dndoles forma y se puedan centrar en la capa de
procesamiento.
En la capa de lgica de programacin, los componentes tales como las funciones y procedimientos
pueden ser provistos por el lenguaje de programacin o desarrollados como parte de la aplicacin,
por ello es importante conocer las prestaciones que ofrece un lenguaje determinado para simplificar
nuestra tarea de programacin.
Funciones y Procedimientos
Conocemos como funciones y procedimientos a ciertas partes de cdigo que se disean para cumplir
una tarea especfica y devolver el control a la seccin de cdigo que la llam, en trminos generales
74
SEGUNDO BIMESTRE
se las conoce como subrutinas y si recuerda el captulo 5, la llamada a las mismas se representa con el
smbolo
. Las subrutinas hacen que los programas sean mucho ms eficientes.
Las subrutinas que caen en la denominacin de funciones se caracterizan porque siempre devuelven
un valor que es almacenado en una variable o se usan como parte de una expresin, por ejemplo la
funcin pi() puede devolver el valor de , en este caso no necesita recibir ningn parmetro de entrada.
Por otro lado las que caen en categora de procedimientos se caracterizan porque al ser llamadas
ejecutan una accin, pero no retornan ningn valor y por tanto no pueden colocarse como parte de
una expresin.
En la tabla 6.1 nos permitimos listar algunas de las funciones comunes que la mayora de lenguajes de
programacin suelen traer.
Tabla 6.1 Tabla de funciones comunes en lenguajes de programacin
Funcin
Descripcin
abs(n)
sqrt(n)
sqr (n)
Obtiene el cuadrado de n.
random(n)
log(n)
Devuelve el logaritmo de n.
exp (n)
Devuelve el antilogaritmo de n.
ln()
Tal como lo imagina el contar con estas funciones hacen que se simplifique considerablemente el
esfuerzo de programacin, todos los lenguajes de programacin entre ellos java, c++, c#, Visual
Basic, ofrecen un rico conjunto de funciones que se pueden usar en la fase de codificacin.
Libreras
Para sacar el mximo provecho a estas funciones y procedimientos, lo que se suele hacer es crear
bibliotecas de cdigo, de forma tal que puedan ser utilizadas en ms de un programa.
Archivos de datos
Cuando usted desarrolla un aplicacin que necesita guardar informacin tiene dos opciones para
hacerlo, la primera es crear archivos de datos tipo texto o binarios que slo puede ser ledos por
su aplicacin y la segunda es utilizar un sistema gestor de base de datos tal como mysql, Access,
Sqlserver entre otros, en cuyo caso se vale del lenguaje que implementa el motor de base de datos para
manipularlos.
6.3 Desarrollo de aplicaciones sencillas
Hasta aqu, usted ha tenido la oportunidad de conocer y aplicar algunas herramientas de diseo de
programas para computadora, y quiz se haya preguntado porque no ha utilizado el computador.
Pues bien lleg el momento de hacerlo, y para ello en el disco anexo a la gua didctica encontrar el
programa Raptor,
UNIVERSIDAD TCNICA PARTICULAR DE LOJA La Universidad Catlica de Loja
75
SEGUNDO BIMESTRE
Una caracterstica muy importante de Raptor es que le permite dibujar el diagrama de flujo y ejecutarlo,
mostrando adems los valores de las variables utilizadas, es decir le ahorra todo el proceso manual,
adems entre otras cosas le permite generar cdigo para lenguajes como Ada, Java, C++ o puede
generar un programa ejecutable que funciona como cualquier aplicacin.
No queremos extendernos ms en el asunto y pongmonos manos a la obra, lo que s debemos advertirle
es que hay algunas variaciones en los smbolos usados para realizar los diagramas en Raptor, de todos
modos deber estudiarlo para poder hacer uso de l.
Iniciemos instalando el programa Raptor que se encuentra en su disco, si tiene alguna dificultad,
consulte la documentacin.
Una vez que ha logrado instalar Raptor, tome el captulo 9 de su texto bsico y desarrolle
los ejemplos y aplicaciones que el autor propone.
Estoy seguro de que se siente muy entusiasmado con el uso de esta herramienta, en realidad se puede
hacer muchas cosas, por tanto lo que queda es desarrollar ms ejercicios y quiz estara dems decir
que programe en raptor todos los ejercicios desarrollados hasta ahora.
Para completar este captulo, nos hemos permitido desarrollar una aplicacin completa en Raptor con
el propsito de que entienda como se construye una aplicacin.
Ejemplo 6.1
Desarrollar en Raptor un programa para jugar al ahorcado.
Descripcin de la aplicacin:
Se trata del juego del ahorcado en el cual se le pide al usuario que adivine una palabra seleccionada
al azar, para lo cual debe ingresar de una en una las letras que considera que la forman, si la letra est
en la palabra debe mostrarse en su posicin, los dems espacios se muestran como guiones para que
tenga una idea de la longitud de la palabra, si la letra no consta en la palabra del juego o est repetida
se contar como error e ir dibujando poco a poco un mueco por cada error cometido, hasta que
el mueco se ahorca, si acierta y adivina la palabra, deber felicitarle. En cualquiera de los dos casos
termina el juego.
Revisemos ahora los enunciados para este juego:
Salidas:
1.
Mostrar la palabra con las letras que adivin y guiones en aquellas que no acert, esto por cada
letra que ingresa el usuario.
2.
3.
76
SEGUNDO BIMESTRE
Proceso:
1.
Debe contar con una lista de palabras para seleccionar una de ellas aleatoriamente.
2.
3.
4.
Se considera como error a una letra repetida o una letra que no consta en la palabra.
Entrada:
1.
Se requiere que el usuario ingrese letras hasta que adivine la palabra o hasta que se le acaben las
opciones.
Como podr darse cuenta, los enunciados nos pueden llevar a detalles de implementacin mucho ms
complejos, pero a medida que se explique la aplicacin las nicas habilidades que necesita son las de
poder escribir expresiones correctamente y utilizar adecuadamente los diagramas de flujo, por lo tanto
le sugiero que si tuvo alguna dificultad con el seguimiento del captulo del texto bsico indicado, lo
retome hasta comprenderlo debidamente.
Ahora analicemos los componentes de la aplicacin por capas:
CAPA DE INTERFAZ
A este nivel nos hemos permitido desarrollar dos componentes, el primero es una pantalla de ingreso
de las letras, y el segundo es una pantalla grfica que muestra el estado de la palabra y en caso de
cometer errores el dibujo del mueco ahorcndose. En las figuras 6.5 y 6.6 se muestran las interfaces
definidas para el efecto. Recuerde que en la capa de interfaz representamos tanto las entradas como
las salidas.
77
SEGUNDO BIMESTRE
2.
Varios subprogramas con propsitos especficos, algunos de ellos necesitan recibir ciertos datos
de entrada para poder realizar su tarea, en este caso hablamos de procedimientos. Los podemos
apreciar en la Tabla 6.2
78
SEGUNDO BIMESTRE
Propsito
Llamado desde
main
crear_lista
inicializar_palabra
ahorcar
escribir
inicializar_juego
crear_interfaz
main .
CAPA DE DATOS
Aunque la aplicacin no guarda la informacin en archivos, requiere de datos que en este caso son las
palabras que debe adivinar, para ello usamos un arreglo que es una variable capaz de contener varias
casillas con una palabra cada una, a ellas se puede acceder con el nombre del arreglo y un subndice
entre corchetes, esto se puede apreciar en el sub diagrama inicializar_lista.
Una recomendacin importante que quiero hacerle es que haga el seguimiento al programa completo,
puede hacerlo manualmente o preferentemente en el entorno Raptor, puesto que va resaltando cada
instruccin y muestra los valores de las variables.
Para visualizar y analizar la aplicacin abra el archivo
ahorcado.rap que se encuentra en el CD en la carpeta
ejemplos raptor
EJERCICIOS 6.1
Con lo aprendido en este captulo, desarrolle un juego en Raptor en el cual teniendo un mximo de 7
intentos la mquina adivina un nmero del 1 al 100 pensado por el usuario utilizando el mtodo de la
bsqueda binaria. La bsqueda binaria consiste en dividir el rango de nmeros posible en 2 y realizar
dos preguntas, la primera mostrar el nmero del centro del rango y preguntar si se trata de ese nmero,
si el usuario dice que es correcto el computador a logrado adivinar el nmero y termina, en caso de no
ser el nmero, realiza la segunda pregunta que sera si el nmero es mayor o menor, si es mayor divide
el rango nuevamente cogiendo el grupo superior y repite el proceso, luego si es menor hace lo mismo
con el rango inferior, de modo que cada vez va encerrando al nmero. Si no lo logra en 7 intentos, el
usuario respondi incorrectamente las preguntas, en este caso debe alertar del particular.
79
SEGUNDO
SOLUCIONARIO
BIMESTRE
Con este tema finalizamos la asignatura, y estamos seguros de que les ser de gran utilidad para las
asignaturas siguientes, como recomendacin final le sugerimos seleccione uno de los lenguajes de
programacin desarrollados en el libro y trate de programar en el las soluciones dadas. En el disco
adjunto a la gua hemos incluido algunos de los lenguajes de programacin como java y c++ para que
los use en su aprendizaje.
Autoevaluacin 6
Concluya el estudio de esta materia desarrollando el examen rpido del captulo 9 del texto bsico.
80
SOLUCIONARIO
8. Solucionario
UNIDAD 1
Parte 1
1. a
2. b
3. a
4. b
5. c
Parte 2
6. F
7. F
8. F
9. V
10. V
Parte 2
6. v
7. f
8. f
9. v
10. v
UNIDAD 4
Parte 1
UNIDAD 2
Parte 1
1. c
2. a
3. c
4. b
5. c
Parte 2
1. b
2. c
3. a
4. a
5. c
Parte 2
6. F
7. F
8. F
9. V
10. F
6. V
7. F
8. F
9. F
10. V
UNIDAD 3
Parte 1
1. c
2. a
3. c
4. a
5. b
81
SOLUCIONARIO
GLOSARIO
UNIDAD 5
Parte 1
1. a
C am bios de e stado ( variables de tr abajo)
Estructuras de control
Estructuras de d ecisin
D eclaraciones
Peticin d e datos
m uestra
UNIDAD 6
Parte 1
1. b
2. c
3. b
4. b
5. a
Parte 2
6. F
7. V
8. F
9. V
10. V
82
GLOSARIO
9. Glosario
ADA.- Lenguaje de programacin orientado a objetos.
Algoritmo.- Secuencia ordenada de pasos que nos permiten realizar alguna actividad.
Aplicacin.- Conjunto de componentes de software y datos que permiten resolver problemas o realizar
actividades con la ayuda del computador.
Bucle.- Estructura de control que permite la repeticin de una o ms instrucciones, existen tres tipos
de bucles, los que evalan la condicin a la entrada, los que evalan la condicin a la salida y los que
se ejecutan un determinado nmero de veces con la ayuda de un contador.
Booleano.- Se puede aplicar a una variable o a una expresin cuyo valor puede ser verdadero o falso.
Deriva del lgebra de Boole.
Condicin.- Expresin booleana que se usa para desviar el flujo del programa o terminar un bucle.
Constante.- Espacio de memoria capaz de guardar un valor que no cambia durante la ejecucin de un
programa. Matemticamente son valores fijos que se utilizan para realizar diferentes clculos.
Conclusin.- Resultado al que se llega partiendo de unas premisas y aplicando reglas de inferencia.
C++.- Lenguaje de programacin orientado a objetos muy utilizado en el desarrollo de aplicaciones
de mediano y bajo nivel, deriva del lenguaje C.
C# (si charp).- Versin de C orientado a objetos desarrollado por Microsoft he incluido en su plataforma
Visual Studio .Net.
Expresin.- Grupo de constantes y/o variables con operadores que de acuerdo a una sintaxis permite
realizar la transformacin de los datos, sus resultados se almacenan en variables.
Enunciado.- En lgica de programacin es una expresin lingstica que establece un pensamiento,
puede ser interrogativo, imperativo o declarativo.
83