ciencias de la computacion

84
a l e d a c i g ó L Programación Guía didáctica 6 créditos Ciencias de la Computación y Electrónica Sección Tecnologías Avanzadas de la Web y SBC 18106 Marco Patricio Abad Espinoza Jorge Stalin Calderón Bustamante UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja MODALIDAD ABIERTA Y A DISTANCIA Titulación Ciclo Ingeniero en Informática I Autores: Asesoría virtual: www.utpl.edu.ec

description

ciencias de la computacion

Transcript of ciencias de la computacion

Page 1: ciencias de la computacion

al ed acigóLProgramación

Guía didáctica6 créditos

Ciencias de la Computación y ElectrónicaSección Tecnologías Avanzadas de la Web y SBC

18106

Marco Patricio Abad EspinozaJorge Stalin Calderón Bustamante

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA

La Universidad Católica de Loja

MODALIDAD ABIERTA Y A DISTANCIA

Titulación Ciclo

Ingeniero en Informática I

Autores:

Asesoría virtual:www.utpl.edu.ec

Page 2: ciencias de la computacion

LÓGICA DE LA PROGRAMACIÓNGuía didácticaMarco Patricio Abad EspinozaJorge Stalin Calderón Bustamante

© UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA

Diagramación, diseño e impresión:EDILOJA Cía. Ltda.Telefax: 593-7-2611418San Cayetano Alto s/[email protected]

Primera ediciónSéptima reimpresión

ISBN-978-9942-00-614-1

Reservados todos los derechos conforme a la ley. No está permitida la reproducción total o parcial de esta guía, ni su tratamiento informático, ni la transmisión de ninguna forma o por cualquier medio, ya sea electrónico, mecánico, por fotocopia, por registro u otros métodos, sin el permiso previo y por escrito de los titulares del Copyright.

Abril, 2013

Derecho de autor 000450

Page 3: ciencias de la computacion

1. Datos informativos2. Índice3. Introducción ................................................................................................................................. 5

4. Lineamientos generales del Modelo Educativo basado en competencias y créditos académicos UTPL-ECTS............................................ 6

4.1 Competencias genéricas ......................................................................................................... 7

4.2 Competencias específicas ....................................................................................................... 7

5. Bibliografía .................................................................................................................................. 7

5.1 Básica ......................................................................................................................................... 7

5.2 Complementaria ...................................................................................................................... 7

6. Orientaciones generales para el estudio ............................................................ 9

7. Proceso de enseñanza-aprendizaje para el logro de competencias .............................................................................................................................. 11

PRIMER BIMESTRE

7.1 Planificación para el trabajo del alumno ........................................................................... 11

7.2 Sistema de evaluación ............................................................................................................ 13

7.3 Orientaciones específicas para el aprendizaje por competencias .................................. 14

UNIDAD I: PROBLEMAS Y SOLUCIONES ...................................................................................................... 14

1.1 Aplicación de la lógica en la programación ........................................................................ 16

1.2 Principios en la elaboración de enunciados ........................................................................ 17

1.3 Comprensión y especificación del problema ....................................................................... 18

1.4 Identificación de entradas, procesos y salidas .................................................................... 19

Autoevaluación 1 ................................................................................................................................ 20

UNIDAD II: NATURALEZA DE LOS DATOS .................................................................................................... 21

2.1 Naturaleza de los datos .......................................................................................................... 21

2.2 Expresiones y datos ................................................................................................................. 22

2.3 Dominios .................................................................................................................................... 22

2.4 Tipos de operadores ................................................................................................................. 22

2.5 Reglas de precedencia ............................................................................................................. 24

Autoevaluación 2 ................................................................................................................................ 25

UNIDAD III: ALGORITMOS ......................................................................................................................... 26

3.1 Ciclo de desarrollo .................................................................................................................... 26

3.2 Determinación de requerimientos ....................................................................................... 28

3.3 Estructuración de pasos del algoritmo ................................................................................. 29

3.4 Resolución de problemas mediante algoritmos.................................................................. 30

Autoevaluación 3 ................................................................................................................................ 32

2. Índice

Page 4: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 5

PRELIMINARESGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja4

PRIMER BIMESTRE

7.1 Planificación para el trabajo del alumno ........................................................................... 33

7.2 Sistema de evaluación ............................................................................................................ 33

7.3 Orientaciones específicas para el aprendizaje por competencias .................................. 35

UNIDAD IV: ESTRUCTURAS DE DECISIÓN Y BUCLES ..................................................................................... 36

4.1 Flujos de programa..................................................................................................................... 36

4.2 Estructuras selectivas .................................................................................................................. 38

4.3 Bucles ............................................................................................................................................ 39

4.4 Estructuras de control anidadas ............................................................................................... 40

4.5 Pruebas de Escritorio .................................................................................................................. 42

Autoevaluación 4 ................................................................................................................................ 48

UNIDAD V: DIAGRAMAS DE FLUJO ............................................................................................................. 49

5.1 Elementos de un diagrama de flujo ........................................................................................ 49

5.2 Elaboración de diagramas de flujo .......................................................................................... 51

5.3 Ejercicios con diagramas de flujo ............................................................................................. 60

Autoevaluación 5 ................................................................................................................................ 69

UNIDAD VI: DESARROLLO DE PROBLEMAS DE PROGRAMACIÓN................................................................... 70

6.1 Abstracción de ejercicios de programación ............................................................................ 70

6.2 Componentes de una aplicación ............................................................................................... 74

6.3 Desarrollo de aplicaciones sencillas ........................................................................................ 75

Autoevaluación 6 ................................................................................................................................ 60

8. Solucionario ................................................................................................................................. 81

9. Glosario ........................................................................................................................................... 83

Page 5: ciencias de la computacion

PRELIMINARES Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 5

PRELIMINARESGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja4

3. Introducción

Estimado estudiante, queremos darle la más cordial bienvenida a esta su Universidad, particularmente a la carrera de Ingeniería en Informática. Aprovechamos la oportunidad para felicitarlo por haber confiado en esta prestigiosa institución educativa. Nuestros nombres son: Patricio Abad y Stalin Calderón, estaremos con ustedes para guiar el proceso de aprendizaje en la asignatura de Lógica de la Programación, cualquier duda e inquietud estamos a sus órdenes para responderle.

Lógica de Programación es una materia troncal con seis créditos que se ubica en el primer ciclo de la carrera de Ingeniería en Informática y se ha elaborado enfocándose en el desarrollo de las competencias básicas para el diseño de algoritmos a través del pensamiento lógico aplicado a la resolución de problemas por computadora.

El desarrollo de habilidades de programación no se logra sino con la inducción de una forma de pensamiento que ayuda a identificar los aspectos relevantes de un problema y representarlo en una notación formal que permita establecer una solución para el mismo. Como veremos más 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 algorítmico y es precisamente este aspecto el que la materia de Lógica de la Programación intenta resolver, sin esto es muy difícil avanzar con otras asignaturas en la línea de programación, 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 resolución de problemas mediante la abstracción de las salidas, el proceso de cálculo y las entradas requeridas; En la unidad 2 se estudiará la naturaleza de los datos, su representación y sus operaciones; para la unidad 3 tenemos los algoritmos que le permite al estudiante adquirir las bases para representar, su proceso de construcción, verificación y depuración.

El segundo bimestre comprende la unidad 4 que abarca el uso de la selección y ciclos repetitivos, la unidad 5 versa sobre la representación de los algoritmos en diagramas de flujos y culmina con la unidad 6 consolidando todos los contenidos en la creación de aplicaciones sencillas susceptibles de programación. Además se considera el uso de herramientas de programación visual que le permitirán concentrarse en la lógica de programación antes que en la sintaxis de un lenguaje particular, esto con el ánimo de que pueda aplicar luego esta lógica con cualquier lenguaje de programación.

Un aspecto importante que debemos mencionar es que la lógica de la programación no se limita a un lenguaje de programación específico, es por tanto independiente del lenguaje y para escribir los algoritmos utilizaremos dos herramientas fundamentales que son el pseudocódigo (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 aérea norteamericana llamada Raptor.

Thomas Alba Edison decía que los genios son 1% de inspiración y 99% de sudor, la cual es una máxima aplicable a esta materia, pues se requiere estudiar el fundamento teórico, 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.

Page 6: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 7

PRELIMINARESGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja6

4. Lineamientos generales del Modelo Educativo basado en competencias y créditos académicos UTPL- ECTS

Sr. Estudiante recuerde que usted ha iniciado su formación de tercer nivel con un sistema educativo basado en el desarrollo de competencias a través de créditos académicos. Este modelo le convierte a usted en protagonista de su propia formación y al profesor en mediador de las experiencias de aprendizaje.

Surge entonces la necesidad de que tenga claro dos conceptos fundamentales competencia y crédito académico.

• ¿Quéesunacompetencia?Entendemos por competencia el conjunto de actitudes, habilidades y conocimientos que el alumno adquiere e incorpora según sus características personales y experiencias laborales y, que se ponen de manifiesto en el desempeño de la actividad profesional. Las competencias se adquieren a lo largo del proceso formativo de la carrera y se desagregan en objetivos de aprendizaje propuestos en cada asignatura.

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 través de la práctica y la experiencia.

Conocimientos: constituyen los contenidos científicos, conceptuales, teóricos, conocidos también como el aprendizaje académico.

• ¿QuéesuncréditoacadémicoUTPL/ECTSenlaModalidadaDistancia?

Un crédito académico es la unidad de medida del trabajo del estudiante, implica 32 horas de trabajo del alumno (29 horas de trabajo autónomo y 3 horas de interacción)1.

Los créditos académicos que el estudiante irá acumulando en el transcurso de la carrera involucran: aprendizaje autónomo (estudio personal), tareas de investigación, interacción en el Entorno Virtual de Aprendizaje (EVA), participación en tutorías, videoconferencias y otros eventos académicos (Jornadas, seminarios, cursos, congresos avalados por la UTPL), prácticas académicas, pasantías preprofesionales y de vinculación con la colectividad; actividades de evaluación; así como la realización del trabajo de titulación.

El modelo adoptado por la UTPL contempla dos tipos de competencias: genéricas y específicas.

Competencias Genéricas: 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 formación.

1. CONESUP (2008): Reglamento del Régimen Académico del Sistema Nacional de Educación Superior, art. 18.

Page 7: ciencias de la computacion

PRELIMINARES Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 7

PRELIMINARESGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja6

Competencias Específicas: son propias de la titulación, aportan a la cualificación específica para la profesión, dándole consistencia social y profesional al perfil formativo.

• Estructurageneraldelprogramaformativo

Las Unidades Académicas o Escuelas de la UTPL han estructurado el programa formativo contemplando cinco ámbitos o bloques de asignaturas: Formación Básica (10%); Genéricas de carrera (15%); Troncales (35%) Complementarias (10%); Libre configuración (10%) y además, el Practicum que comprende las Pasantías preprofesionales y de vinculación con la colectividad y Practicum Académico (20%).

4.1 Competencias genéricas

• Capacidaddeabstracción,análisisysíntesis.• Capacidadparaidentificar,plantearyresolverproblemas.

4.2 Competencias específicas

Estas se encuentran detalladas en la planificación de cada bimestre.

5. Bibliografía

5.1 Básica

• Ramírez,F.(2007):Introducción a la Programación. Algoritmos y su implementación en VB.net, C#, Java y C++, México, Alfaomega.

El autor del libro Felipe Ramírez tiene mucha experiencia en capacitación de tecnología para las empresas, es director de contenidos de Aprenda Practicando. El texto se ha seleccionado debido a que la forma como plantea los contenidos es didáctica y fácil de seguir, además tiene muchos ejercicios y autoevaluaciones que lo hacen ideal para un estudiante a distancia. El enfoque práctico le da mucha relevancia frente a otros textos similares.

• Abad,M.yCalderón,J.(2009):Guía didáctica de Lógica de la Programación, Ecuador, Editorial UTPL

Guía didáctica diseñada para el estudio de la Lógica de la Programación en la carrera de Ingeniería en Informática de la Modalidad Abierta y a Distancia de la Universidad Técnica Particular de Loja.

5.2 Complementaria

• Cairo,O.(2005):Metodología de la programación algoritmos, diagramas de flujo y programas, México, Alfaomega.

Contiene muchos ejercicios y algoritmos que se pueden usar para complementar los que posee el texto base, es ideal para la parte práctica de cualquiera de los capítulos del la materia. Tiene un desarrollo especial en lo referente a diagramas de flujo.

Page 8: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 9

PRELIMINARESGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja8

• Lipschutz,S.(1983):Matemáticas para computación, Colombia, McGraw-Hill.

A pesar de ser una edición con bastantes años por delante, tiene valiosa información sobre aritmética del computador, lógica matemática, desarrollo de algoritmos y su representación en diagramas de flujos, contiene muchos ejercicios.

• Paniagua,E.,Sánchez,J.yMartín,F.(2003),Lógica Computacional, España, Thomson. Excelente texto para el estudio de la lógica matemática y su aplicación en el ámbito de las ciencias

de la computación, se lo puede utilizar como complemento del capítulo 1 de la materia.

DIRECCIONESELECTRÓNICAS

• Carlisle,M.(2009):Welcome to the raptor home page , [En línea] Disponible en: http://raptor.martincarlisle.com/ [Consulta 12-06-2009]

Sitio de descarga de raptor, donde se publican además las últimas novedades del producto, aquí encontrará también la versión de raptor orientada a objetos.

Page 9: ciencias de la computacion

PRELIMINARES Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 9

PRELIMINARESGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja8

6.Orientacionesgeneralesparaelestudio

Estimado Estudiante:

El estudio de la programación de computadores es una tarea compleja que requiere el desarrollo de algunas habilidades de pensamiento orientadas a la solución de problemas descomponiéndolos en partes manejables, lo cual aprenderemos durante el presente curso.

Para conseguir este propósito es necesario que tenga una dedicación periódica que le permita aprender ydesarrollarlas,porellolesugerimosnomenosde8horassemanalesquepodríanvariarenfuncióndesus habilidades y conocimientos previos.

A continuación se le propone algunas orientaciones que le servirán en su proceso de aprendizaje:

En primera instancia recordarle que usted cuenta con los siguientes recursos para el aprendizaje:

1. La guía didáctica: Le orientará sobre cómo y qué temas estudiar, además contiene ejercicios de autoevaluación que le permitirán medir su grado de comprensión y la necesidad de tutoría por parte del docente. Muchos estudiantes empiezan estudiando directamente el texto, pero como verá más adelante no es recomendable hacerlo.

2. El texto básico: Le servirá para desarrollar los contenidos principales conforme se lo indica en la guía didáctica. Vale acotar que no todos los capítulos 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 guía didáctica. Los capítulos del 10 al 14 los puede usar para iniciar el estudio de la lógica de la programación en alguno o en todos los lenguajes de programación propuestos.

3. El Entorno Virtual de Aprendizaje: Donde podrá interactuar con sus profesores a través de una orientación del trabajo semanal, uso de mensajería electrónica para resolver inquietudes, foros, desarrollo de ejercicios prácticos, publicación de recursos, todo este trabajo tendrá una valoración de 2 puntos.

4. La Tutoría personal: Es un tiempo semanal que como profesores dedicamos para atender las inquietudes en relación a los contenidos o desarrollo de trabajos, para ello se publicará un horario en el cual podrán asistir personalmente o contactarse vía telefónica, el mismo que se detalla en la carátula de la evaluación a distancia.

5. Los trabajos a distancia: Son actividades teóricas y prácticas que acompañan a la guía didáctica 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 carátula es obligatoria y no recuperable, lo cual significa que si no entrega alguno de los mismos no tendrá opción a la evaluación presencial, su valoración es de 4 puntos que sumados a la calificación de participación en el EVA totalizan 6 puntos.

6. El Software para el desarrollo de aplicaciones: Los estudiantes contarán con herramientas de software que les permitirán realizar prácticas y validar los resultados de sus ejercicios. Este software se lo incluirá en un disco compacto que se entrega con la presente guía didactica.

Page 10: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 11

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja10 UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 11

PRELIMINARESGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja10

Al finalizar cada bimestre usted debe presentarse a una evaluación 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 mínima de 14 sobre 20, de lo contrario deberá rendir una evaluación supletoria que reemplaza a la nota bimestral. Para aprobar debe tener unmínimode28puntos.

Como método de estudio, le recomendamos que lea detenidamente los contenidos de la guía didáctica y siga fielmente las instrucciones dadas, lo más importante es realizar prácticas no limitándose a lo que dice el texto, sino que es recomendable que idee sus propios problemas lo cual lo hará sentirse mucho más familiarizado con la mecánica de la materia. Puesto que dispondrá de herramientas para la computadora utilícelas en todo momento.

Page 11: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 11

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja10 UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 11

PRELIMINARESGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja10

COMPETENCIAS

ESPE

CÍF

ICAS

OBJETIVOSDE

APRENDIZAJE

CONTENIDOS

CRONOGRAMA

ORIENTATIVO

Tiem

po e

stim

ado

ACTIVIDADESDE

APRENDIZAJE

RECURSOS

DIDÁCTICOS

EVALUACIÓN

Unidades/Temas

•Disponerde

fund

amen

tos

mat

emát

icos

, ec

onóm

icos

, es

tadí

stic

os

y fin

anci

eros

ne

cesa

rios

para

in

terp

reta

r, se

lecc

iona

r, va

lora

r el

uso

y d

esar

rollo

te

cnol

ógic

o y

sus

aplic

acio

nes.

•Analizarlas

nece

sidad

es d

e co

noci

mie

nto

nece

saria

s pa

ra

reso

lver

un

prob

lem

a.

•Aplicarlos

prin

cipi

os d

e la

lógi

ca e

n la

reso

luci

ón

de p

robl

emas

co

mpu

taci

onal

es.

•Identificary

com

pren

der u

n pr

oble

ma

para

lle

gar a

su

solu

ción

.

Uni

dad

1: P

robl

emas

y

Solu

cion

es

1.1

Aplic

ació

n de

la ló

gica

en

la p

rogr

amac

ión.

1.2

Prin

cipi

os e

n la

el

abor

ació

n de

en

unci

ados

.1.

3 C

ompr

ensió

n y

espe

cific

ació

n de

l pr

oble

ma.

1.4

Iden

tific

ació

n de

en

trada

s, p

roce

sos

y sa

lidas

.

Sem

ana

1y 2

16 h

oras

de

auto

estu

dio

8horasde

inte

racc

ión

•Le

ctur

a co

mpr

ensiv

a

•D

esar

rollo

de

activ

idad

es

reco

men

dada

s en

la

guía

did

áctic

a

•In

tera

cció

n co

n el

EV

A

•In

icio

del

des

arro

llo

de la

eva

luac

ión

a di

stan

cia.

•Textobásico

•GuíaDidáctica

•EntornoVirtual

de A

pren

diza

je:

foro

s, a

ctiv

idad

es,

docu

men

tos.

•Teléfono

•Correoelectrónico

•Autoevaluaciones

por u

nida

des

en la

gu

ía d

idác

tica

•Evaluacionesa

dist

anci

a

•Evaluaciones

pres

enci

ales

•Participaciónenlos

foro

s.

•Determinarlos

tipos

de

dato

s qu

e m

ejor

se

ajus

ten

para

la re

solu

ción

de

pro

blem

as

med

iant

e al

gorit

mos

.

•Resolver

expr

esio

nes

aritm

étic

as, l

ógic

as

y re

laci

onal

es

med

iant

e el

uso

de

las

regl

as d

e pr

eced

enci

a de

los

oper

ador

es.

Uni

dad

2:R

epre

sent

ació

n

de lo

s D

atos

2.1

Nat

ural

eza

de lo

s da

tos.

2.2

Expr

esio

nes

y da

tos.

2.3

Dom

inio

s.2.

4 Ti

pos

de o

pera

dore

s.2.

5 Re

glas

de

prec

eden

cia.

Sem

ana

3

8horasde

auto

estu

dio

4 ho

ras

de

inte

racc

ión

•Le

ctur

a co

mpr

ensiv

a

•D

esar

rollo

de

activ

idad

es

reco

men

dada

s en

la

guía

did

áctic

a

•C

ontin

uar c

on

el d

esar

rollo

de

la e

valu

ació

n a

dist

anci

a

•Pa

rtici

paci

ón d

el

foro

pro

pues

to e

n el

EVA

PRIM

ER B

IMES

TRE

7. P

roce

so d

e en

seña

nza-

apre

ndiz

aje

para

el l

ogro

de

com

pete

ncia

s

7.1

Plan

ifica

ción

par

a el

trab

ajo

del a

lum

no

Page 12: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 13

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja12

•Comprender,

anal

izar

y re

solv

er

prob

lem

as

aplic

ando

los

mét

odos

de

la c

ienc

ia y

la

inge

nier

ía.

•Aplicarlalógica

mat

emát

ica

en

el c

onte

xto

de

las

Cie

ncia

s de

la

Com

puta

ción

, co

n pr

oyec

ción

, al

dise

ño d

e ci

rcui

tos,

pr

ogra

mac

ión,

an

álisi

s y

desa

rrol

lo

de a

lgor

itmos

.

•Reconocerlas

fase

s de

l cic

lo

de d

esar

rollo

de

softw

are.

•Identificarde

form

a cl

ara

los

re

quer

imie

ntos

de

usua

rio.

Uni

dad

3: A

lgor

itmos

3.1

Cic

lo d

e de

sarr

ollo

3.2

Det

erm

inac

ión

de

requ

erim

ient

os3.

3 Es

truct

urac

ión

de p

asos

de

l alg

oritm

o3.

4 Re

solu

ción

de

prob

lem

as m

edia

nte

algo

ritm

os

Sem

ana

4, 5

y 6

24 h

oras

de

auto

estu

dio

12 h

oras

de

inte

racc

ión

•Le

ctur

a co

mpr

ensiv

a

•D

esar

rollo

de

activ

idad

es

reco

men

dada

s en

la

guía

did

áctic

a

•Pa

rtici

paci

ón d

el

foro

pro

pues

to e

n el

EVA

•Fi

naliz

ar e

l de

sarr

ollo

de

la e

valu

ació

n a

dist

anci

a.

Uni

dad

de la

1a

la 3

Semana7y8

Prep

arac

ión

para

la

prue

ba p

rese

ncia

l del

pr

imer

bim

estre

.

Page 13: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 13

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja12

Cri

teri

os

Form

as d

e ev

alua

ción

Actit

udes

Hab

ilida

des

Con

ocim

ient

os

PORCENTAJE

PUNTAJE

Comportamiento ético

Cumplimiento, puntualidad y responsabilidad

Esfuerzo e interés en los trabajos

Respetoalaspersonasy a las normas de comunicación

Creatividad e iniciativa

Contribución en el trabajo colaborativo y de equipo

Presentación, orden y ortografía

Emite juicios de valor argumentadamente

Dominiodelcontenido

Investigación (cita fuentes de consulta)

Aporta con criterios y soluciones

Análisis y profundidad en el desarrollo de los temas

1.

Auto

eval

uaci

ón y

act

ivid

ades

re

com

enda

das.

xx

xx

xx

xx

xx

Estra

tegi

a de

apr

endi

zaje

*

2. Heteroevaluación

Eval

uaci

ón a

Distancia**

Objetiva

xx

xx

x10

%2

Ensa

yox

xx

xx

xx

xx

xx

20%

4

30%

6

Inte

racc

ión

en e

l EVA

xx

xx

xx

xx

xx

xC

ompl

emen

ta la

eva

luac

ión

a di

stan

cia,

máx

imo

en 1

pun

to.

Prue

ba

Pres

enci

alPr

ueba

s m

ixta

s:ob

jetiv

as y

ens

ayo

xx

xx

xx

xx

xx

x70%

14

3. C

oeva

luac

ión

En a

ctiv

idad

es e

spec

ifíca

s ta

nto

pr

esen

cial

es c

omo

en

el E

VA.

TOTAL

20 p

unto

s en

cad

a bi

mes

tre

Paraaprobarlaasignaturaserequiereobtenerunpuntajemínimode28/40puntos,queequivaleal70%.

*Sonestrategiasdeaprendizaje,notienencalificación;perodeberesponderlasconelfindeautorregularsuprocesodeaprendizaje

**

Rec

uerd

e: q

ue la

eva

luac

ión

a di

stan

cia

del p

rimer

bim

estre

con

sta

de d

os p

arte

s: u

na o

bjet

iva

y ot

ra d

e en

sayo

, deb

e de

sarr

olla

rla y

ent

rega

rla e

n su

resp

ectiv

o C

entro

Uni

vers

itario

has

ta e

l 15

de n

ovie

mbr

e

(per

íodo

oct

ubre

- feb

rero

) o 1

5 de

may

o (p

erío

do a

bril-

agos

to).

Tengapresentequelafinalidaddelavaloracióncualitativaesprincipalmenteformativa;sinembargo,

encircunstanciasespecialespodríaafectarlepositivaonegativamenteensucalificacióncuantitativa.

Sr.

estu

dia

nte

:

7.2

Sist

ema

de e

valu

ació

n

Page 14: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 15

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja14

7.3Orientacionesespecíficasparaelaprendizajeporcompetencias

UNIDAD IPROBLEMAS Y SOLUCIONES

El trabajo del pensamiento se parece a la perforación de un pozo: el agua es turbia al principio, más, luego se clarifica.

- Proverbio Chino

Estimado(a) estudiante:

Iniciamos nuestro estudio con este interesante proverbio, que nos da una pauta de cómo es el proceso de aprendizaje de la lógica de programación, con ello le invitamos a poner especial interés en su estudio y a no desesperarse si las cosas no se ven fáciles 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 capítulo 3 del texto básico y opcionalmente los libros de lógica planteados en la bibliografía, si puede disponer de ellos sería importante que los use para reforzar los temas planteados.

Una de las habilidades de pensamiento más importante para aprender a programar es la abstracción 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 búsqueda de la solución.

Cuando el problema se refiere a programación, en términos generales estas partes se pueden considerar como entradas, proceso, almacenamiento y salida (fig. 1.1), que son los tareas básicas que realiza el computador.

PROCESO ENTRADAS SALIDA

ALMACENAMIENTO

Fig. 1.1 Funciones básicas del computador

La capacidad de abstraer un problema es innata en el ser humano y se desarrolla en mayor o menor medida en función de la complejidad de los problemas que debemos resolver, también tiene mucho que ver la creatividad, de hecho cuando tenemos que enfrentarnos a un problema, podemos resolverlo de diferentes maneras, es muy difícil que dos personas lo hagan del mismo modo.

Page 15: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 15

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja14

Analice el siguiente ejemplo.

Ejemplo 1.1

Problema: Calcule la edad de una persona.

Análisis del problema:

• Debesolicitarlafechadenacimientoyrestarladelafechaactual,elresultadodebeexpresarseen años, meses y días. Hasta aquí el asunto parece fácil, pero si lo analizamos con más detalle la operación de restar fechas es un poco más compleja que la resta común, de hecho no puedo restar directamente las dos fechas como si se tratase de dos número cualquiera, las fechas son números compuestos por tres componentes, que serían los años, los meses y los días, los cuales debo restarlos por separado.

Calcularlaedadquetieneunapersonanacidael12deabrilde1985al15demayode2009.Abstrayendo los datos tendríamos:

Fecha actual: 2009-05-15Fechadenacimiento:1985-04-12

Si aplicamos el cálculo requerido tendríamos que ejecutar las siguientes operaciones:

Año Mes Día

Fecha actual 2009 05 15

Fecha de nacimiento 1985 04 12

Edad 0024 01 03

Solución: La persona tiene 24 años, 1 mes y 3 días.

El método de cálculo seleccionado aparentemente funciona, pero ¿qué sucedería si debemos calcularlomismoparaotrapersona,cuyafechadenacimientoes22dediciembrede1980,siaplicamos el mismo método los resultados serían:

Año Mes Día

Fecha actual 2009 05 15

Fecha de nacimiento 1980 12 22

Edad 0029 -7 -7

Siinterpretamoslarespuestatendríamosquelaedaddelapersonaes29años,-7mesesy-7días,locualnoresultalógicoporquenadietieneunaedadnegativa,estedebidoaquenopodemos realizar restas cuando la fecha de nacimiento es mayor a la fecha actual, en este caso toca aplicar las siguientes reglas:

1. Si el día de nacimiento es mayor al día actual, debo pedir prestado 30 días al mes para poder efectuar la operación y puesto que he convertido un mes en treinta días tengo que restarle un mes a la fecha actual.

Page 16: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 17

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja16

2. Si el mes de nacimiento es mayor al mes de la fecha actual, debo pedir prestado un año expresado en 12 meses y sumarlos al mes actual, luego hay que restar ese año que se convirtió en meses al año actual.

3. Si luego de realizar todas las operaciones obtenemos un año en negativo, hay inconsistencia en los datos por lo tanto no se puede calcular la edad de alguien que todavía no nace.

Solución:

Luego del análisis realizado, vamos a realizar el cálculo correspondiente

Año Mes Día

Prestamos 2009-1=2008 5-1=4+12=18 15+30 = 45

Fecha actual 2009 05 15

Fecha de nacimiento 1980 12 22

Edad 0028 6 23

Portantolapersonaenrealidadtendría28años,6mesesy23días.

Esta solución podría no ser la única, pero es correcta.

El problema puede complicarse más cuando se pide que consideremos los años bisiestos en los cuales elmesdefebrerotiene29díasenlugarde28.¿Seríacapazdeplantearunasoluciónconsiderandoeste problema? Lo invito a solucionarlo en papel y lápiz.

Ahora ¿qué dificultades tuvo para encontrar la solución? Cuando se trata de encontrar la solución una de las dificultades más importantes es la representación del problema en un lenguaje formal como puede ser el lenguaje matemático, para poder procesarlo, en esta tarea nos ayudan la lógica y la

matemática.

Es por ello que nuestro estudio va a comenzar estudiando el papel de la lógica matemática en el planteamiento y solución de problemas.

1.1 Aplicación de la lógica en la programación

Comencemos revisando al apartado Lógica del capítulo 3 del texto básico para ver cómo la lógica de proposiciones nos ayuda a abstraer premisas de un problema y obtener de ella algunas conclusiones.

Luego de revisar el capítulo indicado vale recalcar nuevamente la importancia del razonamiento para poder obtener las proposiciones y llegar a conclusiones.

El estudio de la lógica va más allá del planteamiento de silogismos como se lo ha mostrado en este apartado, el extracto presentado aquí constituye solamente una parte para comprender como empata la lógica matemática con la lógica de programación.

Según lo establece Ramírez, la lógica nos ayuda a tener un pensamiento más ordenado siguiendo algunas reglas que hacen que el mismo sea más lógico.

Page 17: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 17

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja16

Si no logramos un pensamiento fundamentado en la razón, corremos el riesgo de lanzar planteamientos sin la debida argumentación, lo cual no ayuda a resolver los problemas, y muchas de las soluciones propuestas adolecerán fallas que se verán reflejadas en nuestros programas.

Desarrolle el ejercicio 03.01 del texto básico.

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 comparación con la realidad y la corrección tiene que ver con la argumentación que sustenta dicha conclusión.

Los ejercicios hasta ahora analizados en el texto son relativamente sencillos, pero en la práctica nos encontramos con situaciones más complejas, por lo tanto el razonamiento lógico debe apoyarse en un gran número de equivalencias y reglas de inferencia que permiten llegar a conclusiones verdaderas o falsas.

Estudie ahora los apartados Lógica de Programación con sus secciones Aplicación de la lógica en programación y Finalidad de los enunciados del proceso del capítulo 3 del texto básico.

Como bien menciona el autor, la Lógica de la Programación es una “habilidad” o “competencia” que permite obtener algoritmos susceptibles de implementarse en un lenguaje de programación.

Muchas personas tienen facilidad para inferir algoritmos rápidamente, pero como podemos darnos cuenta el uso adecuado de los silogismos, ayuda a formar esta capacidad. Si usted ha tenido la oportunidad de estudiar Lógica Matemática, seguramente habrá sentido que no le sirve de mucho para programación, lo cual según lo estamos analizando no es cierto, y lo más interesante es que le ayuda a ordenar las ideas para obtener algoritmos eficientes a partir de los enunciados.

Aunque todavía no hemos desarrollado ningún algoritmo, hemos podido establecer las salidas esperadas, los datos de entrada y el proceso de cálculo requerido, así como también ha establecer si la información 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 más grande y complejo es el problema, requerimos una mayor cantidad de enunciados, los cuales es preciso ubicar en alguna de las tres categorías que son entradas, proceso y salidas.

1.2 Principios en la elaboración de enunciados

Como ya hemos mencionado en el apartado anterior, la clave para resolver de manera lógica un problema es la adecuada elaboración de enunciados. En esta sección vamos a analizar los principios que ubican a los enunciados en entradas, proceso y salidas.

Para el estudio de este tema, tome su texto básico y lea el subtema Principios en la elaboración de enunciados.

Page 18: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 19

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja18

Muy probablemente habrá tenido experiencia programando bien sea en el colegio, en su trabajo, o ahora que está estudiando para obtener su título, si corresponde a este último caso, seguramente reconocerá estos principios en algunas de las características 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 comprensión que ha obtenido respecto de la elaboración de enunciados, sírvase desarrollar el ejercicio 03.02, note que no es necesario haber estudiado el capítulo 1 del texto básico para hacerlo. Adicionalmente resuelva las preguntas del capítulo 3.

1.3 Comprensión y especificación del problema

Muchos autores inician el estudio de la programación con situaciones triviales como por ejemplo resolver el problema de sumar dos números, lo cual la mayoría de las veces resulta contraproducente porque se subestima la verdadera naturaleza de los problemas de programación.

¿Qué complejidad se puede encontrar en el problema de sumar dos números o en el de encontrar el mayor de dos números? ¿Sería posible plantear enunciados para este tipo de problemas? Lo más seguro es que pueda poner uno o dos pero no tendrá necesidad de desarrollar grandes habilidades de pensamiento para hacerlo.

Los problemas de programación reales suelen tener mayor grado de complejidad y se prestan muy bien para realizar la identificación de las entradas, proceso y salida. Por ello consideramos importante comenzar con problemas no triviales que permitan desde el inicio poner en práctica la mayoría de los principios.

Como se verá más adelante el proceso de programación inicia con una etapa de análisis en la cual se busca identificar todas las características del problema que incluyen: el contexto del dominio que nos permitiría conocer datos, reglas que acompañan al problema en cuestión y las restricciones de entradas o salidas que debemos respetar.

1.4 Identificación de entradas procesos y salida

Tal como se mencionó anteriormente la resolución de un problema de programación implica la identificación de entradas, procesos y salidas, las cuales deben cumplir con las características indicadas en la sección 1.2 de la presente guía.

El análisis del problema contrario a lo que el sentido común dictaría, debe comenzar con la identificación de la SALIDAS esperadas, es decir los resultado que esperamos tener de nuestra solución. En esta etapa entonces debemos elaborar los enunciados correspondientes a las salidas que normalmente corresponderían a los enunciados de resultado.

El siguiente paso es idear el proceso que nos permita llegar al resultado deseado. Los enunciados del PROCESO, corresponderían a la asignación de valores, enunciados de cálculo y enunciados condicionales.

Finalmente debemos identificar las ENTRADASrequeridas para poder realizar los cálculos. Los enunciados en esta categoría normalmente corresponden con enunciados de asignación de valores y enunciados de valor preexistente. La figura 1.2 ilustra gráficamente esta forma de analizar el problema.

Page 19: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 19

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja18

SalidasEntradas Proceso

1

2

3

Etapas en la resolución de un problema

Ejemplo 1.2

Intentemos aplicar los principios de la elaboración de enunciados al ejemplo 1.1 de la guía didáctica valiéndonos de la estrategia aquí planteada.

Enunciados de las Salidas

• Laedaddebeexpresarseenaños,mesesydías.• Laedadenañosnodebesermenorquecero.• Laedadenmesesnopuedesermenorquecero.• Laedadenmesesnopuedesermayorqueonce.• Laedadendíasnopuedesermenorquecero.• Laedadendíasnopuedesermayorquetreinta.

Enunciados del proceso

• Paracalcularlaedadsedeberestarlafechadenacimientodelafechaactual.• Lafechadebedescomponerseenaños,mesesydías.• Sedebecomenzarrestandolosdías.• Sieldíadenacimientoesmayoraldíaactualdebesolicitarunmesexpresadoendíasalosmeses

de la fecha actual, con lo cual se suman 30 días al día actual y se resta un mes al mes actual.• Ensegundainstanciadeberestarselosmeses.• Sielmesdenacimientoesmayorqueelmesdelafechaactual,debesolicitarunañoexpresado

en meses a la fecha actual, con lo cual se suman 12 meses al mes actual y se resta un año a año actual.

• Finalmenteserestalosaños.

Enunciados de la entrada

• Paraelcálculodelaedadesnecesarioingresarlafechadenacimientoylafechaactual.• Lasfechasactualydenacimientodebeningresarseentresnúmeroscadaunaquerepresentan

año, mes y día.• Lafechadenacimientonuncapuedesermayorquelafechaactual.• Unañotiene12meses.• Unmestiene28,30031días.

Page 20: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 21

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja20

• Losmesesdelañopuedentenervaloresdel1al12.• Losdíasdelmespuedentenervaloresdel1al31.

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 dólares con la menor cantidad de billetes y monedas.

¿Ya realizó el ejercicio? ¡Qué bien!!Continuemos¡

Autoevaluación 1

Hemos concluido el estudio de la primera unidad. Conviene comprobar cuánto ha logrado asimilar de los temas revisados en esta parte, para lo cual es necesario que desarrolle el examen rápido del capítulo 3 del texto básico. Verifique sus respuestas con el solucionario que se encuentra al final de la guía didáctica.

Page 21: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 21

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja20

UNIDAD II NATURALEZA DE LOS DATOS

El propósito de la presente unidad es conocer la importancia del uso de los datos al momento de resolver problemas computacionales, así como también 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 ejecución de nuestros algoritmos.

La temática abordada en esta unidad está vinculada con los capítulos 4 y 5 del texto básico.

2.1 Naturalezadelosdatos

Antes de revisar y desarrollar un algoritmo, es necesario aprender a utilizar los datos que serán procesados y transformados en resultados (información) por dichos algoritmos. Los datos son representaciones simbólicas no significativas que sirven como punto de partida para poder resolver un problema computacional.

A continuación se muestran los diferentes tipos de valores que se pueden manejar en un computador:

Tipo de valor Descripción

Numéricos Permiten realizar cálculos aritméticos

Cadena Permite manejar una serie de caracteres como un solo valor

Fecha Permiten almacenar fechas del calendario

Booleanos Permite almacenar valores binarios. 1-0, Verdadero-Falso

Nulos Ausencia de valor

BLOB Representación binaria para almacenar imágenes, sonidos, etc.

A continuación usted podrá darse cuenta en qué punto intervienen los datos, considerando la arquitectura general de un computador.

Datos Procesamiento Información

Figura 2.1 Arquitectura general de un computador

“Un dato por sí mismo no constituye información, es el procesado de los datos lo que nos proporciona información”.2

2. Wikipedia (2009): Dato, [En línea] Disponible en: http://es.wikipedia.org/wiki/Datos [Consulta 25-06-2009]

Page 22: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 23

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja22

2.2 Expresiones y variables

Para comprender cómo escribir expresiones, sírvase estudiar el apartado “Expresiones y Variables” del capítulo 4 de su texto básico.

Una vez que ha realizado la lectura del apartado sugerido, podemos concluir que una expresión en términos generales es la representación de un cálculo necesario para la obtención de un resultado; a continuación se presenta ejemplos de diferentes tipos de expresiones:

4 Expresión absoluta“UTPL” Expresión absoluta8+2 Expresión compuesta

nom_variable 4

RAM

Por otro lado, una variable es una referencia lógica a una posición física de la memoria RAM, tal como se esquematiza a continuación:

En donde: nom_variable corresponde al nombre de la variable que referencia al valor 4 (expresión absoluta), que está almacenado físicamente en una celda de la memoria RAM.

2.3 Dominios

Una vez que haya revisado los contenidos del libro en relación a los dominios y sus tipos, podemos concluir que un dominio es el conjunto de valores válidos 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 años de una persona, claramente podemos darnos cuenta que el rango de valores válidos estarían 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 ejecución del algoritmo o en su defecto que provoquen almacenar información incorrecta.

2.4 Tipos de operadores

Luego de haber identificado en su texto básico los tipos de operadores que se puede usar en una expresión, podemos concluir diciendo que un operador es un símbolo que tiene una función predefinida (suma, resta, multiplicación, mayor que, etc.); los mismos que nos permiten construir expresiones compuestas, como las que se muestran a continuación:

A = (b * h)A = (b * h) / 2Y = x^2 + 5

Page 23: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 23

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja22

Los operadores se clasifican de acuerdo a su función, así tenemos la siguiente clasificación:

Operadoresaritméticos

Operador Acción

- Suma

+ Resta

* Multiplicación

/ División

^ Exponencial

Operadoresdeasignación

Operador Acción

= Igual que

Operadoresrelacionalesocomparativos

Operador Acción

= Igual que

< Menor que

> Mayor que

<= Menor o igual que

>= Mayor o igual que

!= Distinto a

OperadoresLógicos

Operador Acción

NOT Negación

AND Conjunción (Y)

OR Disyunción(O)

Es importante señalar que el resultado de las operaciones lógicas, es decir expresiones que contengan operadores comparativos o lógicos, está determinado por las tablas de verdad correspondientes a cada una de ellas, tal como se puede apreciar a continuación:3

OperadorNOT

A NOT A

V F

F V

3. Wikipedia (2009): Tablas de valores de verdad, [En línea] Disponible en: http://es.wikipedia.org/wiki/Tabla_de_va-lores_de_verdad [Consultado 15-06-2009]

Page 24: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 25

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja24

OperadorAND

A B A AND B

V V V

V F F

F V F

F F F

OperadorOR

A B A OR B

V V V

V F V

F V V

F F F

2.5 Reglasdeprecedencia

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 básico, finalmente compleméntelos con lo que a continuación se cita:

Los operadores de una expresión se evalúan, en general, de acuerdo al siguiente orden:

1. Paréntesis (comenzando por los más internos)2. Signo3. Potencias4. Productos y divisiones5. Sumas y restas6. Relacionales7. Negación8. Conjunción9. Negación

Para poder entender el funcionamiento de las reglas de precedencia, desarrollaremos el siguiente ejercicio: tenemos la expresión: ((3+2)*2-4)/2*5, del cual debemos obtener su resultado, a continuación resolveremos dicha expresión paso a paso, tomando en cuenta el orden de precedencia de los operadores.

Expresión 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

Page 25: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 25

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja24

Ejercicio 2.1

Resolver la siguiente expresión teniendo en cuenta las reglas de precedencia.

Expresión 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 básico.

2. Desarrolle los ejercicios del apartado Ejercicio 05.01 del texto básico.

3. Dados los valores de: X = 1, Y = 4, Z = 10, resolver la siguiente expresión tomando en cuenta el orden de los operadores.

2*X+0.5*Y–1/5*Z

Autoevaluación 2

Una vez terminada esta unidad, midamos su nivel de comprensión resolviendo el examen rápido del capítulo 4 del texto básico.

Page 26: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 27

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja26

UNIDAD IIIALGORITMOS

El propósito 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 aplicación que cumpla con todas las expectativas del usuario. También se revisará la estructura de un algoritmo y cómo debemos implementarlos aplicándolos a la resolución de problemas de la vida real.

La temática abordada en esta unidad está vinculada con el capítulo 6 del texto básico.

3.1 Ciclo de desarrollo

El desarrollo de aplicaciones informáticas involucra una serie de fases que se tienen que ir cumpliendo para la obtención del producto final. El conjunto de estas fases se conoce con el nombre de Ciclo de Desarrollo. Existen diversos autores y metodologías que plantean sus propias fases y denominaciones para el ciclo de desarrollo, pero podemos resumirlas en las siguientes:

1. Análisis2. Diseño3. Codificación4. Pruebas e implantación5. Mantenimiento

Revisemos ahora las actividades que se realizan en cada una de las fases del ciclo de desarrollo, así como también los entregables que se deben generar en cada fase, para ello sírvase estudiar los apartados del capítulo 6 de su texto básico: Procedimiento de creación de un programa e Implementación práctica del ciclo de desarrollo.

Una vez que haya concluido con la revisión de los apartados del texto base, puede darse cuenta que el desarrollo de una aplicación informática para la automatización de procesos de negocio no es nada trivial, por lo que se requiere de un gran equipo de trabajo y de una adecuada planificación para lograr el objetivo final.

En la actualidad dos de las metodologías de software más usadas para el desarrollo de sistemas informáticos de nivel empresarial son MSF (Microsoft Solution Framework) y RUP (Rational Unified Process). Estas metodologías constituyen un marco referencial que se debe ajustar para cada equipo, proyecto y empresa. A continuación se presenta las fases que proponen dichas metodologías.

Page 27: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 27

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja26

Figura 3.1. Modelo de Procesos del MSF4

Figurar 3.2. Modelo de Procesos del RUP5

4. Microsoft. (2002): MSF Process Model v. 3.1, [En línea] Disponible en: http://www.microsoft.com/msf [Consulta 15-06-2009]

5. Jacob, I., Booch, G. y Rumbaugh, J. (2004), El Proceso Unificado de Desarrollo de Software, España, Pearson Edu-cación.

Page 28: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 29

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja28

3.2 Determinaciónderequerimientos

Vamos a iniciar este tema definiendo lo que es un requerimiento. La definición que aparece en [IEEE, 1990] es la siguiente:

Una condición 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 capítulo 6 de su texto básico, en donde se explica en forma detallada y ordenada las actividades que debe realizar para poder completar de forma acertada la etapa de obtención o determinación de requerimientos.

Es importante señalar también que la gran cantidad de calificativos que se aplican al término requerimiento muestran distintos aspectos ortogonales que a menudo se consideran aisladamente. Para intentar clarificar la situación, se puede identificar tres dimensiones en las que se pueden clasificar los requerimientos; estas tres dimensiones son:

• Ámbito: Indica en qué ámbito se debe entender el requerimiento. En general, y siguiendo entre otraslaspropuestasde[IEEE,1997],[DOD,1994]y[DAV,1993],unámbitodesistemaindicaque el requerimiento debe cumplirse a nivel de sistema, entendiendo por sistema un conjunto de hardware y software.

• Característica que define: Clasifica los requerimientos en función de la naturaleza de la característica del sistema deseada que se especifica. La clasificación más habitual suele ser la de requerimientos funcionales (qué funciones debe realizar el sistema) y no funcionales (otras características del sistema).

• 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 formación en ingeniería del software, y los desarrolladores de software. Cuando la audiencia está formada por clientes y usuarios, la forma más 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 técnicas estructuradas, orientadas a objetos o formales.

Page 29: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 29

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja28

Figura 3.3. Dimensiones de los requerimientos6

3.3 Estructuración de pasos del algoritmo

Estimado estudiante, para este tema, estudie el apartado “Algoritmos” del capítulo 6 de su texto básico, incluidos los ejercicios.

Antes de desarrollar nuestro primer algoritmo, es preciso dar una definición:

Un algoritmo es un conjunto de pasos ordenados lógicamente que permiten realizar un tarea.

En base a esta definición podemos determinar el siguiente proceso al momento de construir nuestros algoritmos:

1. Identificar los datos de entrada.2. Determinar el procesamiento al que deben someterse los datos de entrada.3. Identificar los resultados que se esperan.

Por ejemplo: Se requiere calcular el área de un terreno rectangular cuyas dimensiones son:

Largo: 10 metrosAncho: 20 metros

En base a estos datos elaborar un algoritmo que permita presentar el área de dicho terreno.

1. Identificamos los datos de entrada: Dimensiones del terreno (largo y ancho)

2. Identificamos el proceso que debemos seguir para calcular el área, en este caso, será: Área = largo * ancho

6. Monografías. (2004): Dimensiones de la Ingeniería de Requerimientos, [En línea] Disponible en: http://www.monografias.com/trabajos26/sistema-documentacion/sistema-documentacion2.shtml [Consulta 15-06-2009]

Page 30: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 31

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja30

3. Presentamos el resultado (Área) al usuario

Note que el algoritmo está compuesto de esos 3 pasos principales, aún no se ha utilizado los tipos de datos ni la creación de variables, este tema será cubierto en la siguiente sección de la guía, aquí nos limitamos a ver únicamente la estructuración general del algoritmo.

Bien, realicemos el siguiente ejercicio.

Ejercicio 3.1

Elaborar un algoritmo que permita determinar el área de un triángulo equilátero cuyo lado es 5 cm.

3.4 Resolucióndeproblemasmediantealgoritmos

Revise los ejercicios resueltos en su texto básico, los mismos que se encuentran en el apartado “Analizando los casos y diseñando sus algoritmos” del capítulo 6, para que complete la resolución de los problemas que se plantean a continuación:

Ejercicio 3.2

El programa debe mostrar el factorial de un número ingresado por el usuario. El factorial de un número entero positivo se define como el producto de todos los números naturales anteriores o iguales a él. Por ejemplo:

5! = 5 * 4 * 3 * 2 * 1 = 120

El símbolo ! indica factorial.

Utilice los espacios siguientes para el desarrollo.

Análisis del caso

Áreadelconocimiento

Matemática elemental

Análisis de los elementos del todo

Page 31: ciencias de la computacion

PRIMER BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 31

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja30

Unidades de funcionalidad

ID Unidad de funcionalidad Prioridad Obligatoriedad

1

Interfaz

Algoritmo

1 Inicio

2

3

4

5

6

Simulación

Supongamos que ingresamos el número 4, el programa debería mostrar lo siguiente:

Ingrese el número para obtener su factorial: 4

El factorial de 4 es 24

Page 32: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 33

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja32 UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 33

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja32

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 básico.

Autoevaluación 3

¡Felicitaciones¡ ¡Ha concluido el primer bimestre ¡ sólo le falta revisar su nivel de comprensión de los algoritmos resolviendo el examen rápido del capítulo 6 del texto básico.

Page 33: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 33

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja32 UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 33

PRIMER BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja32

COMPETENCIAS

ESPE

CÍF

ICAS

OBJETIVOSDE

APRENDIZAJE

CONTENIDOS

CRONOGRAMA

ORIENTATIVO

Tiem

po e

stim

ado

ACTIVIDADESDE

APRENDIZAJE

RECURSOS

DIDÁCTICOS

EVALUACIÓN

Unidades/Temas

•Disponerde

fund

amen

tos

mat

emát

icos

, ec

onóm

icos

, es

tadí

stic

os

y fin

anci

eros

ne

cesa

rios

para

in

terp

reta

r, se

lecc

iona

r, va

lora

r el

uso

y d

esar

rollo

te

cnol

ógic

o y

sus

aplic

acio

nes.

•Elaboraralgoritmos

que

perm

itan

la re

solu

ción

de

pro

blem

as

utili

zand

o es

truct

uras

de

sele

cció

n y

cont

rol.

•Utilizarpruebas

de e

scrit

orio

par

a va

lidar

la e

jecu

ción

de

los

algo

ritm

os

Uni

dad

4: E

stru

ctur

as d

e de

cisi

ón y

Buc

les

4.1

Fluj

os d

e pr

ogra

ma

4.2

Estru

ctur

as s

elec

tivas

4.3

Bucl

es4.

4 Es

truct

uras

de

cont

rol

anid

adas

4.5

Prue

bas

de E

scrit

orio

Semana9,10y11

24 h

oras

de

auto

estu

dio

12 h

oras

de

inte

racc

ión

•Le

ctur

a co

mpr

ensiv

a

•D

esar

rollo

de

activ

idad

es

reco

men

dada

s en

la

guía

did

áctic

a

•In

tera

cció

n co

n el

EV

A

•In

icio

del

des

arro

llo

de la

eva

luac

ión

a di

stan

cia.

•Textobásico

•GuíaDidáctica

•EntornoVirtual

de A

pren

diza

je:

foro

s, a

ctiv

idad

es,

docu

men

tos.

•Teléfono

•Correoelectrónico

•Autoevaluaciones

por u

nida

des

en la

gu

ía d

idác

tica

•Evaluacionesa

dist

anci

a

•Evaluaciones

pres

enci

ales

•Participaciónenlos

foro

s.

•Analizarlas

nece

sidad

es d

e co

noci

mie

nto

nece

saria

s pa

ra

reso

lver

un

prob

lem

a.

•Comprender,

anal

izar

y re

solv

er

prob

lem

as

aplic

ando

los

mét

odos

de

la c

ienc

ia y

la

inge

nier

ía.

•Conocerla

simbo

logí

a de

los

diag

ram

as d

e flu

jo.

•Emplearlos

diag

ram

as d

e flu

jo

en la

reso

luci

ón d

e pr

oble

mas

.

Unidad5.Diagramasde

flujo

5.1

Elem

ento

s de

un

diag

ram

a de

fluj

o5.

2 El

abor

ació

n de

di

agra

mas

de

flujo

5.3

Ejer

cici

os c

on

diag

ram

as d

e flu

jo

Sem

ana

12

8horasde

auto

estu

dio

4 ho

ras

de

prác

ticas

•Le

ctur

a co

mpr

ensiv

a

•D

esar

rollo

de

activ

idad

es

reco

men

dada

s en

la

guía

did

áctic

a

•C

ontin

uar c

on

el d

esar

rollo

de

la e

valu

ació

n a

dist

anci

a

•Pa

rtici

paci

ón d

el

foro

pro

pues

to e

n el

EVA

SEG

UNDO

BIM

ESTR

E7.

1 Pl

anifi

caci

ón p

ara

el tr

abaj

o de

l alu

mno

Page 34: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 35

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja34

•Aplicarlalógica

mat

emát

ica

en

el c

onte

xto

de

las

Cie

ncia

s de

la

Com

puta

ción

, co

n pr

oyec

ción

, al

dise

ño d

e ci

rcui

tos,

pr

ogra

mac

ión,

an

álisi

s y

desa

rrol

lo

de a

lgor

itmos

.

•Desarrollar

aplic

acio

nes

senc

illas

util

izan

do

herr

amie

ntas

de

prog

ram

ació

n.

Unidad6.Desarrollo

de p

robl

emas

de

prog

ram

ació

n

6.1

Abst

racc

ión

de

ejer

cici

os d

e pr

ogra

mac

ión

6.2

Com

pone

ntes

de

una

aplic

ació

n6.

3 D

esar

rollo

apl

icac

ione

s se

ncill

as

Sem

ana

13 y

14

16 h

oras

de

auto

estu

dio

8horasde

inte

racc

ión

•D

esar

rollo

de

activ

idad

es

reco

men

dada

s en

la

guía

did

áctic

a

•Pa

rtici

paci

ón d

el

foro

pro

pues

to e

n el

EVA

•Fi

naliz

ar e

l de

sarr

ollo

de

la e

valu

ació

n a

dist

anci

a.U

nida

d de

la 4

a la

6Se

man

a 15

y 1

6Pr

epar

ació

n pa

ra la

pr

ueba

pre

senc

ial d

el

segu

ndo

bim

estre

.

Page 35: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 35

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja34

Cri

teri

os

Form

as d

e ev

alua

ción

Actit

udes

Hab

ilida

des

Con

ocim

ient

os

PORCENTAJE

PUNTAJE

Comportamiento ético

Cumplimiento, puntualidad y responsabilidad

Esfuerzo e interés en los trabajos

Respetoalaspersonasy a las normas de comunicación

Creatividad e iniciativa

Contribución en el trabajo colaborativo y de equipo

Presentación, orden y ortografía

Emite juicios de valor argumentadamente

Dominiodelcontenido

Investigación (cita fuentes de consulta)

Aporta con criterios y soluciones

Análisis y profundidad en el desarrollo de los temas

1.

Auto

eval

uaci

ón y

act

ivid

ades

re

com

enda

das.

xx

xx

xx

xx

xx

Estra

tegi

a de

apr

endi

zaje

*

2. Heteroevaluación

Eval

uaci

ón a

distancia**

Objetiva

xx

xx

x10

%2

Ensa

yox

xx

xx

xx

xx

xx

20%

4

30%

6

Inte

racc

ión

en e

l EVA

xx

xx

xx

xx

xx

xC

ompl

emen

ta la

eva

luac

ión

a di

stan

cia,

máx

imo

en 1

pun

to.

Prue

ba

pres

enci

alPr

ueba

s m

ixta

s:ob

jetiv

as y

ens

ayo

xx

xx

xx

xx

xx

x70%

14

3. C

oeva

luac

ión

En a

ctiv

idad

es e

spec

ifíca

s ta

nto

pr

esen

cial

es c

omo

en

el E

VA.

TOTAL

20 p

unto

s en

cad

a bi

mes

tre

Paraaprobarlaasignaturaserequiereobtenerunpuntajemínimode28/40puntos,queequivaleal70%.

*Sonestrategiasdeaprendizaje,notienencalificación;perodeberesponderlasconelfindeautorregularsuprocesodeaprendizaje

**

Recu

erde

: que

la e

valu

ació

n a

dist

anci

a de

l seg

undo

bim

estre

con

sta

de d

os p

arte

s: u

na o

bjet

iva

y ot

ra d

e en

sayo

, deb

e de

sarr

olla

rla y

ent

rega

rla e

n su

resp

ectiv

o C

entro

Uni

vers

itario

en

la fe

cha

esta

blec

ida.

Tengapresentequelafinalidaddelavaloracióncualitativaesprincipalmenteformativa;sinembargo,

encircunstanciasespecialespodríaafectarlepositivaonegativamenteensucalificacióncuantitativa.

Sr.

estu

dia

nte

:

7.2

Sist

ema

de e

valu

ació

n

Page 36: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 37

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja36

7.3Orientacionesespecíficasparaelaprendizajeporcompetencias

UNIDAD IV

ESTRUCTURAS DE DECISIÓN Y BUCLES

El propósito de la presente unidad es dar a conocer el funcionamiento y utilidad de las estructuras de decisión y control, así como también su uso en el desarrollo de algoritmos para la resolución de problemas. Se revisará también mecanismos que le permitan comprobar si el algoritmo desarrollado funciona o no correctamente.

Latemáticaabordadaenestaunidadestávinculadaconelcapítulo7deltextobásico.

4.1 Flujos de programa

Es preciso iniciar dando una definición de lo que es un programa: Secuencia lógica de instrucciones que manipulan o procesan un conjunto de datos para obtener resultados que corresponden a la solución del problema.

En base a esta definición podemos indicar que la ejecución o flujo de un programa consiste en la realización secuencial del conjunto de instrucciones desde la primera a la última y de una en una. Este orden de realización únicamente será alterado mediante las estructuras de decisión y control (bucles). Los procesos que se pueden llevar a cabo en un programa pueden ser de tipo aritmético o lógico, incluyéndose algunas operaciones de manejo de caracteres y operaciones de entrada y salida.

Una vez que tenemos clara la definición de Programa y cómo es su flujo o ejecución, ahora pasaremos a revisar los componentes o partes principales que lo conforma, en el siguiente cuadro podemos observar que básicamente un programa está compuesto por dos bloques, uno de declaraciones y otro de instrucciones.

Instrucciones

Declaraciones

Entrada de datos

Proceso

Salida de resultados

PROGRAMA

Figura 4.1 Estructura de un programa

Declaraciones

Page 37: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 37

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja36

Bloque de declaraciones

En él se especifican todas las variables que serán 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, Símbolo 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, números mayores o iguales a 1.

Para conocer los símbolos de los tipos de datos, sírvase revisar el apartado “Representación abstracta de tipos base” del capítulo 4 de su texto base.

Bloque de instrucciones

Está formado por el conjunto de operaciones que se han de realizar para la obtención de los resultados deseados. Según 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 envía a los dispositivos externos.

Ahora bien, procederemos a adoptar un estándar al momento de escribir nuestras instrucciones que formarán parte del programa o algoritmo. De acuerdo al tipo de instrucción u operación que vayamos a emplear, tenemos lo siguiente:

a. Declaración

(Nombre variable, Símbolo tipo de dato [Dominio]) (lado, i[1-n])

b. Cambio de estado (Asignación)

Nombre de variable ←Expresión lado ← 10

c. Lectura de datos (Petición)

>> Nombre de variable >> lado

Page 38: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 39

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja38

d. Muestra de datos

<< Expresión << lado

Estimadoestudiante,usteddeberevisarelapartado“Operacionesaniveldato”delcapítulo7desutextobásico.

4.2 Estructuras selectivas

Las estructuras selectivas permiten realizar la evaluación de expresiones lógicas, para controlar la ejecución de una o más instrucciones. Existen principalmente dos tipos de estructuras selectivas o condicionales que son:

a. Condicional simple

Si Expresión lógica entonces Instrucciones a ejecutar si la expresión lógica es True (verdadera)Fin si

Ejemplo:

Siedad>=18entonces >> “Usted es mayor de edad”Fin si

b. Condicional compuesto

Si Expresión lógica entonces Instrucciones a ejecutar si la expresión lógica es True (verdadera)

De lo contrario Instrucciones a ejecutar si la expresión lógica es False (falsa)

Fin si

Ejemplo:

Siedad>=18entonces >> “Usted es mayor de edad”

De lo contrario >> “Usted es menor de edad”

Fin si

Page 39: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 39

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja38

Para aclarar estos conceptos, por favor proceda a realizar la lectura del apartado “Estructuras dedecisión”delcapítulo7desutextobásico.

4.3 Bucles

Los bucles también conocidos como ciclos repetitivos o estructuras de control, permiten realizar la ejecución de un conjunto de instrucciones de manera repetitiva mediante la evaluación de una o más condiciones lógicas 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 Inicialización

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 operación. Generalmente se usan para calcular sumas o productos. Al igual que los contadores primero se los debe inicializar y luego realizar la operación de acumulación; así tenemos:

suma ← 0

suma ← suma + expresión

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”delcapítulo7desutextobásico.

Cabe señalar que dependiendo del lenguaje de programación que se use, existen varios ciclos repetitivos que podemos emplear, sin embargo son derivaciones de los dos tipos de bucles que explicaremos a continuación.

a. Bucles de comparación al inicio

Inicialización del contadorMientras Expresión lógica Entonces Uso del contador Instrucciones a ejecutar si la Expresión lógica es True (verdadera)Fin Mientras

Page 40: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 41

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja40

Ejemplo: Escribir los números dígitos.

numero ← 0Mientras numero < 10 Entonces << numero numero ←numero +1 Fin Mientras

El resultado del ejemplo es:

01 2 3 4 5 6 7 8 9

b. Bucles de comparación al final

Inicialización del contadorInicio Instrucciones a ejecutar si la Expresión lógica es True (verdadera) Uso del contadorHasta que Expresión lógica

Ejemplo: Escribir los números dígitos.

numero ← 0Inicio << numero numero ←numero +1 Hasta que numero >= 10

El resultado del ejemplo es:

0 1 2 3 4 5 6 7 8 9

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 básico, ¿Cuál es la diferencia entre un bucle de comparación al inicio y un bucle de comparación al final?

4.4 Estructuras de control anidadas

Se conoce como estructuras de control anidadas a la combinación o uso de las estructuras de decisión y/o ciclos repetitivos (bucles) en la elaboración 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 más fáciles de leer, utilizaremos como una práctica habitual el aplicar sangría al cuerpo de cada una de las instrucciones anidadas.

Page 41: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 41

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja40

Ejemplo 4.1

Determinar si la edad de una persona es la correcta para sufragar.

Siedad>=18entonces Si edad < 65 entonces << “Usted debe sufragar obligatoriamente” Caso Contrario << “Usted puede sufragar opcionalmente”Fin SiCaso Contrario<< “Usted no puede sufragar”Fin Si

Como usted puede apreciar en el ejemplo 4.1, se ha utilizado anidamiento en la estructura de decisión (condicional) para resolver el problema en mención. Cabe indicar también que existen varias soluciones a dicho problema, las mismas que están relacionadas con la capacidad de cada persona para comprender, encontrar y plasmar dichas soluciones en un algoritmo. Esta capacidad se desarrolla mediante la práctica continua, por lo que lo invito desde ya a plasmar los conocimientos aquí aprendidos, mediante la realización de ejercicios que permitan potenciar su habilidad para la resolución de problemas computacionales.

Ahora bien, una vez que hemos estudiado las estructuras de decisión 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 también son conocidas como Pseudocódigo, es decir un lenguaje neutral, que sin llegar a la rigidez de la sintaxis de un lenguaje de programación 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 capítulo7desutextobásico.

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 miniespecificación el ejemplo 4.1 sobre la edad de una persona para sufragar.

Page 42: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 43

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja42

Observeelsiguienteplanteamiento.

1 INICIO:

2 (edad, i[1..160])

3 << “Ingrese su edad en años: ”

4 >> edad

5 Siedad>=18entonces

6 Si edad < 65 entonces

7 << “Usted debe sufragar obligatoriamente”

8 Caso Contrario

9 << “Usted puede sufragar opcionalmente”

10 Fin Si

11 Caso Contrario

12 << “Usted no puede sufragar”

13 Fin Si

14 :FIN

En la miniespecificación podemos observar las siguientes instrucciones:

- (edad,i[1..160]) Declaración de la variable edad- << “Ingrese su edad en años: Presentación de un mensaje- >> edad Lectura de datos sobre la variable edad

4.5 Pruebas de escritorio

En la sección anterior usted aprendió a desarrollar algoritmos utilizando las miniespecificaciones, ahora bien lo que necesitamos saber es si nuestro algoritmo funciona correctamente, en decir si hace lo que tiene que hacer ¿cómo podemos verificar este cometido?, para poder comprobar esto, nos valemos de las pruebas de escritorio que no son más que pruebas manuales que permiten visualizar el estado de las variables durante la ejecución del programa, lo que nos permitirá saber en donde se encuentra el error, para proceder a su corrección.

Estimado estudiante, para comprender el ejercicio que a continuación está resuelto, usted debe revisar primero los ejercicios de su texto básico en el capítulo 7, en el apartado “Miniespecificaciones de los casos prácticos”.

Para llevar a cabo las pruebas de escritorio, vamos a resolver el siguiente ejemplo:

Page 43: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 43

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja42

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 más gana así como también 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 cuáles van a ser las salidas, el proceso y las entradas, para poder desarrollar con éxito la miniespecificación; así tenemos:

Enunciados de las Salidas

• Sedebepresentarelnombreyelsueldomensualdelempleadoquemásgana.• Sedebepresentarelnombreyelsueldomensualdelempleadoquemenosgana.• Siserepiteelmayoromenorsueldosedebepresentarelprimeroqueseencuentre.

Enunciados del proceso

• Sedebehacerusodeunbucleparasolicitarelingresedelos4empleados.

• Paraobtenerelempleadoquemásgana,sedebecompararlosdatosingresadosmedianteuncondicional 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 ejecución del bucle.

• Paraobtenerelempleadoquemenosgana,sedebecompararlosdatosingresadosmedianteuncondicional 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 ejecución del bucle.

Enunciados de la entrada

• Sedebeingresarelnombrede4empleadosjuntoconsusueldomensual.

Una vez que tenemos claro lo antes mencionado, necesitamos declarar variables para almacenar el nombre del empleado y su sueldo mensual, también necesitamos variables para almacenar el nombre de la persona que más gana y su sueldo, así como también 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 decisión, y para controlar que nos ingrese 4 empleados nos valdremos del bucle de comparación al inicio (Mientras). En base a todo esto procedemos a escribir nuestra miniespecificación.

Page 44: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 45

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja44

1 INICIO:

2 (nombre,x(50))

3 (sueldo,d[0-n])

4 (nombreMaySueldo,x(50))

5 (sueldoMayor,d[0-n])

6 (nombreMenSuedo,x(50))

7 (sueldoMenor,d[0-n])

8 (num, i[0-n])

9 << “Ingrese el nombre y el sueldo”

10 >> nombre

11 >> sueldo

12 nombreMaySueldo ← nombre

13 sueldoMayor ← sueldo

14 nombreMenSuedo ← nombre

15 sueldoMenor ← sueldo

16 num ← 2

17 Mientras num <= 4 entonces

18 num ← num +1

19 << “Ingrese el nombre y el sueldo”

20 >> nombre

21 >> sueldo

22 Si sueldo > sueldoMayor entonces

23 sueldoMayor ← sueldo

24 nombreMaySueldo ← nombre

25 Caso Contrario

26 Si sueldo < sueldoMenor entonces

27 sueldoMenor ← sueldo

28 nombreMenSueldo ← nombre

29 Fin Si

30 Fin Si

31 Fin Mientras

32 << “El empleado que más gana es: ” + nombreMaySueldo + “con un sueldo de: $ ” + sueldoMayor

33 << “El empleado que menos gana es: ” + nombreMenSueldo + “con un sueldo de: $” + sueldoMayor

34 :FIN

Una vez que hemos escrito la miniespecificación, 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 ejecución del programa.

Supongamos que ingresamos los datos de los siguientes 4 empleados:

Page 45: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 45

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja44

Nombre: Luis Sueldo mensual:$700

Nombre: María Sueldo mensual:$800

Nombre: José Sueldo mensual: $ 400

Nombre: Jorge Sueldo mensual: $ 1000

A la línea 16, la tabla luciría así:

Variable Valor

nombre Luis

sueldo 700

nombreMaySueldo Luis

sueldoMayor 700

nombreMenSueldo Luis

sueldoMenor 700

num 2

En la primera repetición dentro del bucle Mientras entre la línea 17 y 31, el resultado sería elsiguiente:

Variable Valor

nombre María

sueldo 800

nombreMaySueldo María

sueldoMayor 800

nombreMenSueldo Luis

sueldoMenor 700

num 3

En la segunda repetición dentro del bucle Mientras entre la línea 17 y 31, el resultado sería elsiguiente:

Variable Valor

nombre José

sueldo 400

nombreMaySueldo María

sueldoMayor 800

nombreMenSueldo José

sueldoMenor 400

num 4

Page 46: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 47

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja46

En la tercera repetición dentro del bucle Mientras entre la línea 17 y 31, el resultado sería elsiguiente:

Variable Valor

nombre Jorge

sueldo 1000

nombreMaySueldo Jorge

sueldoMayor 1000

nombreMenSueldo José

sueldoMenor 400

num 5

A la línea 32, tendremos:

“El empleado que más gana es: Jorge con un sueldo de: $ 1000”

A la línea 33, tendremos:

“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 cálculo de la edad de una persona explicado en la Unidad 1 de la presente guía didáctica, realice las pruebas de escritorio, siguiendo la miniespecificación propuesta para dicho problema. Utilizar los siguientes datos de prueba:

Fechadenacimiento: 01/10/1985Fechaactual: 03/07/2009

1 INICIO:

2 (anio_n, i[1900-2009])

3 (mes_n, i[1-12])

4 (dia_n, i[1-31])

5 (anio_a, i[1900-2009])

6 (mes_a, i[1-12])

7 (dia_a, i[1-31])

8 (edad_a, i[0-150])

9 (edad_m, i[0-12])

10 (edad_d, i[0-31])

11 <<”Ingrese la fecha de nacimiento en años, meses y días”

Page 47: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 47

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja46

12 >> anio_n

13 >> mes_n

14 >> dia_n

15 <<”Ingrese la fecha actual en años, meses y días”

16 >> anio_a

17 >> mes_a

18 >> dia_a

19 Si dia_n > dia_a entonces

20 dia_a ← dia_a + 30

21 mes_a ← mes_a -1

22 Fin Si

23 edad_d ←dia_a–dia_n

24 Si mes_n > mes_a entonces

25 mes_a ← mes_a + 12

26 anio_a ←anio_a–1

27 Fin Si

28 edad_m ←mes_a–mes_n

29 Si anio_n > anio_a entonces

30 << “Error: la fecha de nacimiento es mayor a la actual”

31 Caso Contrario

32 edad_a ←anio_a–anio_n

33 << “Edad: ” + edad_a + edad_m + edad_d

34 Fin Si

35 :FIN

Page 48: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 49

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja48

EJERCICIOS

Le recuerdo que la asignatura es práctica, 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 básico.

Autoevaluación 4

¿Qué tanto logró comprender de este tema? Mida su avance resolviendo el examen rápido del capítulo 7deltextobásico.

Page 49: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 49

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja48

UNIDAD V

DIAGRAMAS DE FLUJO

Una vez que ha aprendido cómo resolver problemas utilizando las diferentes herramientas de la lógica de programación, vamos a continuar nuestro estudio con una técnica visual de programación conocida como Diagramas de flujo de programa, la cual le ayudará a comprender mejor la manera de resolver problemas de programación.

El propósito de este capítulo es enseñarle a utilizar los diagramas de flujo de programas utilizando el estándar ANSI/ISO 5887-1985 para diagramas de flujo, por lo que usaremos comoreferenciaelcapítulo8deltextobásico.

Comencemos estudiando algunos preliminares sobre este tema en al apartado “Diagramasdeflujo”delcapítulo8,solamentehastalas“Reglasparalaelaboracióndeun diagrama de flujo “.

Como habrá notado, los diagramas de flujo de programa son una poderosa herramienta para expresar la lógica de la programación, pero se debe tener en cuenta algunos principios que se plantean efectivamente en el texto, otro aspecto es que los símbolos a usarse deben corresponder a una notación estándar para que todos entiendan lo que se quiere expresar con el mismo.

En este punto podría ser útil plantearse la interrogante ¿Si ya puedo escribir miniespecificaciones, para qué me sirven los diagramas de flujo? El texto menciona que para hacer los diagramas de flujo, no es necesario tener la miniespecificación, y esto es verdad, pero ¿cuál de los dos debo usar?, ¿es necesario desarrollar ambos?

La respuesta a estas preguntas las podemos encontrar en los siguientes planteamientos:

1. La notación visual ayuda a tener una apreciación completa de la solución que difiere de la obtenida en las miniespecificaciones, esto gracias a una mejor visualización lograda con el uso de los símbolos gráficos.

2. La notación estándar permite una comunicación más efectiva, lo cual convierte a los diagramas de flujo en una excelente herramienta para documentar los programas.

3. La lógica de programación debe expresarse en un lenguaje independiente de cualquier lenguaje de programación, las mini especificaciones tienden a inclinarse a uno u otro lenguaje lo cual incide en el código de la miniespecificación, en tanto que los diagramas de flujo son totalmente independientes de cualquier lenguaje de programación.

En base a estas premisas, obtenga sus propias conclusiones.

5.1 Elementos de un diagrama de flujo

Un diagrama de flujo básicamente está conformado por símbolos y reglas. Si usted recapitula un poco, se dará cuenta de que hay correspondencia entre estos símbolos y las sentencias válidas de un programa, por lo que se puede dibujar un diagrama de flujo a partir de una miniespecificación o hacerlo sin ella.

Page 50: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 51

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja50

En cuanto a los símbolos, los Diagramas de Flujo de Programa tienen 4 categorías que son:

• Dedatos(entrada/salida),ingresaromostrardatos.• Depreparacióndedatos.• Deproceso.• Especiales.

ENTRADA/SALIDADEDATOS

Para entrada o salida de datos se usa el símbolo al cual se le debe indicar si se trata de un ingreso de datos (GET) o una presentación de datos (PUT), aunque esto en realidad no corresponde al estándar, tal como lo menciona el autor del libro, por lo que se puede usar otro tipo de notación para indicar si setratadeunaentradaounasalida.Otroaspectoquenosemencionaenellibroeslaposibilidaddecombinar un mensaje de solicitud de datos con una entrada de datos, en realidad sería una entrada de datos acompañada de un mensaje de petición 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 práctica muchos programadores que se enfocan en la solución de un problema consideran que no es necesario colocar mensajes de entrada de datos, puesto que esos son detalles de implementación, en tal virtud podría 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 almacenarán los datos.

“Ing rese u n núm ero ”

num

“Ing rese u n núm ero ”, n um

s

E

E

Figura 5.1 Formas de utilizar le símbolo de entrada/salida de datos

SIMBOLODEPROCESOS

En esta categoría tenemos varios símbolos de proceso que tal como se encuentra explicado en el texto básico, son usados en la mayoría de notaciones, en este punto simplemente comentaremos algunos aspectos.

Si lo piensa un poco, la preparación de datos definida en símbolo , podría bien realizarse con el símbolo de proceso , no habría problema en hacerlo, pero la preparación de datos normalmente no forma parte del problema, es por ello que al tratarse de programación visual se tiene una visión más clara del problema si se diferencian este tipo de procesos.

Page 51: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 51

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja50

Con relación al símbolo vale realizar una aclaración importante, puesto que en la descripción se habla de un proceso nominado, que en términos un poco más cercanos a nuestra jerga, serían invocaciones a subrutinas las cuales son partes de programa que cumplen una tarea y concluyen devolviendo el control al programa desde el que fueron llamadas.

El símbolo se usa para representar procesos que se ejecutan al mismo tiempo, en la mayoría de programas de procesamiento de datos no es tan usual que esto suceda puesto que la mayoría de situaciones se procesan de manera secuencial, en otros contextos el uso de procesos paralelos es indispensable, quizá uno de los campos donde mayor aplicación tienen este tipo de procesamiento son los juegos en donde cada elemento tiene su comportamiento independiente de las acciones del usuario, es decir no esperan una orden del usuario para actuar sino, que funcionan principalmente controlados por eventos que normalmente pueden estar relacionados con el tiempo o alguna acción proveniente del exterior que les obliga a cambiar de comportamiento.

Con relación a los símbolos se usan para establecer los límites y las condiciones de ejecución de un bucle o también denominados ciclos repetitivos que estudió en el capítulo anterior.

Las líneas de flujo se usan para unir símbolos y nos ayudan a establecer el orden de ejecución de las instrucciones contenidos en los símbolos, estas líneas deben terminar en una punta de flecha para indicar de a dónde va el flujo, además se debe considerar que el orden de lectura normalmente suele ser de izquierda a derecha y de arriba hacia abajo, además estas líneas siempre deben dibujar se en ángulos rectos.

SIMBOLOSESPECIALES

Se llaman especiales porque si bien no representan ningún proceso, nos ayudan a identificar el inicio o el final , o la continuación de una sección de diagrama debido a que es muy grande

para colocarlo todo junto.

Otro símbolo que se puede usar en la categoría de especial es el símbolo de anotación cuyo uso es importante para clarificar varias secciones del programa con comentarios respecto de la lógica utilizada o alguna consideración importante, este símbolo es particularmente importante en secciones del diagrama cuyo nivel de complejidad es alto.

El uso de la notación estándar como mencionábamos anteriormente tiene radical importancia, por lo tanto consideraremos como mala práctica el no usar los símbolos definidos o inventar otro tipo de notación.

5.2 Elaboración de diagramas de flujo

El desarrollo de diagramas de flujo puede realizarse de dos maneras, la primera es partir de una miniespecificación y la segunda es hacerlo directamente sin ella, en cualquiera de los dos casos debemos tener en cuenta la necesidad de realizar el análisis correspondiente del problema, tal como apreciábamos en el capítulo 1 de la presente guía didáctica, sin este análisis resultará muy complicado tratar de resolver cualquier problema.

Vale acotar además que cualquier instrucción dada en miniespecificación tiene su contraparte en los diagramas de flujo, por lo que la traducción podría realizarse de manera directa y viceversa. Una diferencia fundamental es que tanto en las miniespecificaciones conocidas también como pseudocódigo y el código de un programa en un lenguaje cualquiera es preciso realizar pasos previos como la

Page 52: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 53

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja52

declaración de variables donde se especifica el tipo de dato y tamaño 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 implementación.

Para aprender cómo escribir diagramas de flujo, remítase a la sección “Cómo elaborar un diagrama de flujo de programa” del capítulo 8, y estudie detenidamente los primeros diagramas que le van indicando cada una de las estructuras básicas de un diagrama de flujo.

En la sección del libro indicada, se ha mostrado como construir un diagrama de flujo para un programa queleanúmerosdel1al10hastaqueseingreseelnúmero7,yademásselohahechoapartirdeuna miniespecificación. Ahora es posible que se esté preguntando ¿si ya tengo la miniespecificación, 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 número es perfecto. Se considera que un número es perfecto cuando la sumatoria de todos sus divisores exactos es igual al mismo número.

La miniespecificación para este algoritmo sería la siguiente:

1 INICIO:

2 (num, i[0-n])

3 (cnt, i[0-n])

4 (sum, i[0-n])

5 << “Ingrese el número”

6 >> num

7 cnt 1

8 sum 0

9 Mientras cnt <= num entonces

10 Si num % cnt =0 entonces

11 << cnt

12 sum sum + cnt

13 Fin si

14 Cnt = cnt + 1

15 Fin mientras

16 Si sum = num entonces

17 << “El número es perfecto”

18 Fin si

19 :FIN

Si traducimos esta miniespecificación a diagrama de flujo obtendríamos el diagrama de la figura 5.2, en el cual se puede apreciar con mayor claridad cuál es la lógica de programación utilizada, esto a pesar de que el código de la miniespecificación es bastante corto, el seguimiento del programa se facilita considerablemente en el diagrama.

El programa seleccionado para este ejercicio es relativamente sencillo, sin embargo se presta para mostrar las diferencias entre una y otra técnica de representar la lógica de la programación.

Page 53: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 53

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja52

In icio

num

cnt 1

sum 0

cnt < num

(num % cnt) = 0 cnt Si

no

cnt

sum = num

sum sum + cnt

“El num ero es p er fecto”si

“E l núm ero no e s

per fecto”

no

cnt = cnt + 1

fin

Ver ifica s i cnt es d ivisor d e num , m ediante la b usqueda del residuo d e la d ivisión , s i este e s 0, e s d ivisor e xácto

Figura 5.2 Diagrama de flujo de programa para encontrar si un número es perfecto

Como seguramente se habrá dado cuenta, los diagramas de flujo permiten hacer un seguimiento más claro de la lógica utilizada para resolver el problema. ¿Qué podría responder ahora respecto de las preguntas planteadas anteriormente?

Ahora, trabajemos sobre la otra estrategia para desarrollar los diagramas de flujos, que sería dibujar el diagrama sin hacer la miniespecificación.

Page 54: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 55

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja54

Ejemplo 5.1

Resolver mediante un diagrama de flujo el ejemplo 1.2 del cálculo de la edad de una persona que planteamos en la unidad 1, en este caso no vamos a tener como punto de referencia la miniespecificación, sino el análisis del problema que básicamente lo desarrollamos planteando enunciados para las salidas, el proceso y las entradas requeridas.

En este caso como el análisis 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 solución, debemos comenzar en sentido contrario.

Comencemos desarrollando nuestro diagrama con las entradas, para ello repliquemos los enunciados de la parte de entrada, pero numerándolos para poder explicarlo mejor:

Enunciados de la entrada

1. Para el cálculo de la edad es necesario ingresar la fecha de nacimiento y la fecha actual.

2. Las fechas actual y de nacimiento deben ingresarse en tres números cada una que representan año, mes y día.

3. La fecha de nacimiento nunca puede ser mayor que la fecha actual.

4. Un año tiene 12 meses.

5. Unmestiene28,30ó31días.

6. Los meses del año pueden tener valores del 1 al 12.

7. Losdíasdelmespuedentenervaloresdel1al31.

En primer lugar todo diagrama de flujo debe comenzar con el símbolo de inicio (figura 5.3), de la siguiente manera:

In icio

Figura 5.3 Inicio de un diagrama de flujo

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 validación de los valores máximos y mínimos de cada mes, sin embargo se ha colocado comentarios en el diagrama para que el programador sepa los detalles de cómo se que se debe implementar.

Page 55: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 55

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja54

In icio

Anio _n,m es_n,dia _n

Solicitar año , m es y d ía d enacim ient , va lidando quecum plan con sus va loresm áxim os y m ínim os

Anio _a,m es_a,dia _a

Solicitar año , m es y d íaactuales validando que

cum plan con sus va loresm áxim os y m ínim os

E

E

Figura 5.4 Diagrama de flujo parcial calculo edad, enunciados entrada

En cuanto a las entradas hemos considerado todos los enunciados, excepto el número 3, el cual nos plantea que la fecha de nacimiento nunca puede ser mayor a la fecha actual, aunque se puede diseñar instrucciones para validarlo en la entrada, quizá sería más conveniente verificarlo más adelante para reducir un poco la lógica, puesto que de todos modos vamos a comparar los años, los meses y los días. Otraopciónpuedesereldesarrollodesubrutinaqueseencarguedeestavalidación, lacualexplicaremos en el siguiente capítulo.

Dicho esto vamos a proceder a trabajar con los enunciados relacionados con el proceso, igualmente los numeramos para referenciarlos mejor:

Enunciados del proceso

1. Para calcular la edad se debe restar la fecha de nacimiento de la fecha actual.

2. La fecha debe descomponerse en años, meses y días.

3. Se debe comenzar restando los días.

4. Si el día de nacimiento es mayor al día actual debe solicitar un mes expresado en días a los meses de la fecha actual, con lo cual se suman 30 días al día actual y se resta un mes al mes actual.

5. En segunda instancia debe restarse los meses.

6. Si el mes de nacimiento es mayor que el mes de la fecha actual, debe solicitar un año expresado en meses a la fecha actual, con lo cual se suman 12 meses al mes actual y se resta un año a año actual.

7. Finalmenteserestalosaños.

Para la elaboración del diagrama comencemos con los enunciados 1,2, 3 y 4, lo cual significa que debemos hacer una resta comenzando por los días y necesitamos tres variables para guardar años, meses y días que corresponden a la edad. Acogiendo el enunciado 4 planteamos en primera instancia la pregunta respecto si el día de nacimiento es mayor al día actual, y en caso de serlo sumamos 30 días al día de nacimiento y restamos los mismos 30 días expresados en meses al mes de nacimiento para equilibrar las operaciones, con lo cual finalmente procedemos a realizar la resta.

Page 56: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 57

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja56

In icio

Anio_n, m es_n, d ia_n

Solicitar año , m es y día de nacim iento , va lidando que cum plan con sus va lores m áxim os y m ínim os

Anio_a, m es_a,

d ia_a

Solicitar año , m es y día actuales validando que

cum plan con sus va lores m áxim os y m ínim os

E

E

edad_d

d ia_a – dia_n

dia_n > d ia_a dia_a d ia_a + 30SI

m es _a m es_a - 1N O

Figura 5.5 Diagrama de flujo parcial cálculo edad. Procesando los meses

Ahora procedemos a hacer lo mismo con los meses, sólo que en lugar de sumarle 30 días, debemos sumarle 12 meses de un año, los cual nos lleva a restarle 1 al año 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 años, 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 verificación de que el año de nacimiento no sea mayor que el año actual, y en caso de serlo, notificaremos un error, además aquí consideramos los enunciados de la salida, que básicamente nos dicen que la edad se debe expresar en formato de año, mes y día, que no puede haber edades negativas, ni tampoco meses o días quesuperenellímiteestablecido.Eldiagramaresultantesemuestraenlafigura5.7.

Page 57: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 57

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja56

In icio

Anio _n, m es_n, d ia _n

Solicitar año , 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

Anio _a, m es_a, d ia _a

Solicitar año , m es y d ía actuales validando que

cum plan con sus va lores m áxim os y m ínim os

E

E

edad_d d ia _a – dia _n

dia _n > d ia_a dia _a d ia_a + 30SI

m es_a m es_a - 1N O

edad_m m es_a – m es_n

m es _n > m es_a m es_a m es_a + 12SI

anio_a _anio_a - 1N O

Figura 5.6 Diagrama de flujo parcial cálculo edad. Procesando los meses

Page 58: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 59

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja58

In icio

Anio _n, m es_n, d ia _n

Solicitar a ño , m es y día de nacim iento , va lidando que cum plan co n sus v a lores m áxim os y m ín im os

Anio _a, m es_a, d ia _a

Solicitar a ño , m es y día actuales va lidando que

cum plan con sus v a lores m áxim os y m ín im os

E

E

edad_d d ia _a – dia _n

dia _n > d ia_a dia _a d ia_a + 30SI m es_a m es _a - 1

N O

edad_m m es_a – m es_n

m es _n > m es_a m es_a m es_a + 12SI anio_a _anio_a - 1

N O

edad_a anio _a – anio_n

anio _n > a nio_a

N O

“Error: La fecha de n acim iento es m ayor a la

actual”

S

SI

“Edad: “ , edad_a, edad_m , edad_d

S

F in

Figura 5.7 Diagrama de flujo cálculo edad

Page 59: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 59

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja58

Unavezquehemoscompletadoeldiagramadelafigura5.7,leinvitoaqueejecutealgunascorridasdel diagrama utilizando algunos casos de prueba para ver si el comportamiento de la solución 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:

• Lafechadenacimientomenoralafechaactual(casonormal)• Tantolafechadenacimiento,comolafechaactualexactamenteiguales.(Pocousual)• Lafechadenacimientomayorquelafechaactual.(Casoerróneo)

Utilice las siguientes tablas para ejecutar la corrida.

Caso 1:

anio_n mes_n dia_n anio_a mes_a dia_a edad_a edad_m edad_d Salida

Caso II

anio_n mes_n dia_n anio_a mes_a dia_a edad_a edad_m edad_d Salida

Caso III

anio_n mes_n dia_n anio_a mes_a dia_a edad_a edad_m edad_d Salida

Luego de haber probado el funcionamiento del diagrama de flujo, trate de responder a las siguientes interrogantes:

1. ¿Funciona bien para todos los casos?

2. ¿Hay algún error de concepción que hace que los resultados no siempre sean exactos?

3. ¿Hay alguna manera alterna de desarrollar el diagrama de flujo?

4. ¿Se puede simplificar la solución?

5. ¿Hace falta algún tipo de validación?

Antesdepasaralsiguientecapítulo,complementesuestudioconlasección“Diagramasde flujo para casos prácticos” del texto básico.

Page 60: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 61

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja60

5.3 Ejercicios con diagramas de flujo

Para la mayoría de desarrolladores y profesores de programación, la única manera de aprender a programar es programando, esto significa que mientras más ejercicios resuelva mejor desarrollará las competencias requeridas, en tal virtud se ha preparado el presente apartado para ayudarle justamente a realizar ejercicios con diagramas de flujo. Podría simplemente haber colocado los ejercicios y dejar que los resuelva, pero la idea es que los desarrolle con un poco de ayuda, a manera de taller, por tanto vamos a proponer los ejercicios y a dar algunas pautas para su solución.

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 léalo detenidamente y elabore en primer lugar los enunciados correspondientes a las salidas, proceso y entradas.

Enunciados para la salida

1. El sueldo debe expresarse en dólares.

2. Como resultado debe mostrarse el sueldo, los impuestos y el valor neto.

3. ______________________________________________________________

4. ______________________________________________________________

5. ______________________________________________________________

6. ______________________________________________________________

7. ______________________________________________________________

Page 61: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 61

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja60

Enunciados para el proceso

1. 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. ______________________________________________________________

Enunciados para la entrada proceso

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------------

Page 62: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 63

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja62

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.

Page 63: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 63

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja62

Luego deberá realizar pruebas de escritorio, ocupe el siguiente espacio para hacerlo. Estas pruebas le permitirán 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.

Page 64: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 65

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja64

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 algún 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 número es primo. Por definición “En matemáticas, un número primo es un número natural que tiene únicamente dos divisores naturales distintos: él mismo y el 1”, y además la unidad no se considera como número primo7.

La estrategia usada para el desarrollo se basa en la definición y consiste en contar el número de divisores exactos comprendidos entre la unidad y el número.

In icio

d 2

num

num % d = 0

d <= n um

dExactos dExactos + 1SI

d d+1

N O

d

dExactos = 0 “El num ero es p r im o”SI

“El núm ero no e s

pr im o”

N O

F in

Figura 5.8 Diagrama de flujo para determinar si un número es primo

7. Wikipedia (2009): Numero Primo , [En línea] Disponible en: http://es.wikipedia.org/wiki/N%C3%BAmero_primo [Consulta 25-06-2009].

Page 65: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 65

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja64

Ahora sí, manos a la obra, verifique si el diagrama de flujo funciona con los números 1, 2, 4, 5, 9,11, 13, 33. Utilice el siguiente espacio para resolver la tarea propuesta:

Pruebas de Escritorio

num d dExactos resultado

Page 66: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 67

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja66

Si encontró el problema, utilice el siguiente espacio para proponer un diagrama que lo corrija.

Page 67: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 67

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja66

EJERCICIOS 5.3

El propósito de ejercicio es optimizar el diagrama de modo que se reduzcan el número de ciclos del bucle. Para darse cuenta qué opciones hay para ello ejecútelo con los mismos datos del ejercicio anterior para que analice el porqué el número de ciclos es alto. Hay al menos dos forma de optimizarlo.

In icio

D 2

num

num % d = 0

esPr im o 1

d <= n um

esPr im o 0SI

d d+1

N O

d

esPr im o = 1 “El num ero es p r im o”

“El núm ero no e s

pr im o”

F in

Figura 5.9 Diagrama de flujo para verificar si un número es primo

Page 68: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 69

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja68

EJERCICIOS 5.4

Se desea construir un algoritmo que le permita generar una tabla de amortización de préstamos 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 información, ahora ¿Cómo se supone que debemos resolver este problema?

Page 69: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 69

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja68

De acuerdo a lo estudiado debemos comenzar haciendo el análisis del problema, esto es identificando y elaborando enunciados para las salidas, proceso y finalmente para las entradas. Luego podemos optar por desarrollar la miniespecificación o directamente el diagrama de flujo.

Autoevaluación 5

Ánimo, ya ha concluido la Unidad 5, sólo le falta medir cuánto aprendió en ella, para ello lo invito a desarrollarelexamenrápidodelcapítulo8deltextobásico.

Page 70: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 71

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja70

UNIDAD VI

DESARROLLO DE PROBLEMAS DE PROGRAMACIÓN

La práctica de la programación es un arte y una ciencia muy interesante para nosotros como seres humanos, el hecho de poder diseñar algo que es capaz de procesar la información es de por sí una creación en la que plasmamos nuestra forma de resolver los problemas.

A lo largo de la presente guía didáctica, nuestro principal interés ha sido el de inducir el pensamiento lógico aplicado a la solución de problemas de programación, en este capítulo vamos a usar todo lo aprendido para diseñar un pequeño programa, considerando cada uno de los componentes.

Puesto que hasta ahora no ha tenido la oportunidad de ver funcionando nada en la computadora, vamosausarunaherramientadeprogramaciónvisualconocidacomoRAPTOR,desarrolladaporLaAcademia Pilotos de las Fuerzas Armadas de los Estados Unidos, en la cual tendrá la oportunidad de diseñar sus diagramas de flujo y ejecutarlos para ver los resultados, vale aclarar, que el uso de esta herramienta sirve únicamente para ayudarle a visualizar cómo funciona la lógica de un programa.

Para el desarrollo de los contenidos de esta unidad, utilizaremos el capítulo 9 del texto básico.Los capítulos 10,11,12 y 13 le enseñan 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 Abstracción de problemas de programación

El esquema básico de funcionamiento del computador, como mencionamos en la Unidad 1, es de entradas, proceso, almacenamiento y salida, por tanto una aplicación 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.

Función Capa Descripción

Entrada Interfaz de usuario

Corresponde a los elementos en pantalla u otro dispositivo que permite que el usuario ingrese información.

Proceso Lógica de proceso

Código de programa que ejecuta las tareas de procesamiento de una aplicación. Toma los datos de entrada y los procesa para almacenarlo o para enviarlos a un dispositivo de salida. Esta capa incluye los datos y estructuras de datos que se guardan en la memoria principal del computador (RAM) que son requeridos para realizar el procesamiento.

Almace-namiento

Datos Estructura de datos o archivos que guardan la información, aunque se dice que el almacenamiento es lógico, muchas de las veces se lo conoce como almacenamiento físico porque se guarda en un disco u otro dispositivo ocupando espacio físico en disco.

Salida Interfaz de usuario

Nos referimos nuevamente a la interfaz de usuario en razón de que la interfaz sirve para interactuar, esto es ingresar o visualizar información. Muchas de las veces la salida puede ser un sonido, una impresión o un mensaje.

Page 71: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 71

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja70

Sin importar el tamaño de la aplicación, siempre debemos pensar en estas capas, aunque puede haber programas que no las requieran, por ejemplo un programa podría no requerir la capa de almacenamiento, porque no guarda información. Es posible también que existan programas con muchas más capas debido a la complejidad de los mismos, normalmente esto se da en aplicaciones corporativas, las cuales tienen en su diseño varias capas, el mismo que se conoce como la arquitectura de la aplicación.

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 interés 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 información en disco, eso significa que no tendrá la capa de datos.

EJERCICIOS 6.1

Cálculo de la edad de una persona

En el ejemplo del cálculo 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 información, en nuestro diagrama la interfaz de usuario estaría dada por los símbolos de la figura 6.1:

Anio _n, m es_n, d ia _n

Anio _a, m es_a, d ia _a

E

E“Edad: “, edad_a, edad_m , edad_d

S “Error: La fecha de n acim iento es m ayor a la

actual”

S

Figura 6.1 Instrucciones del diagrama para interfaz de usuario

Si analiza un poco los diagramas, estos corresponde al símbolo de datos, es decir a las instrucciones de ingreso ó salida de información. Puesto que en un diagrama no es necesario incluir elementos gráficos de interfaz, esto se ha omitido acá, pero en los programas es necesario implementar ciertos diseños de pantallas que resulten más agradables al usuario y le permitan comprender de manera intuitiva el funcionamiento de la aplicación, a los programas que cumplen con esta característica se los conoce como amigables. En la figura 6.2 colocamos un ejemplo de cómo podría ser una pantalla para esta misma aplicación.

Page 72: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 73

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja72

Figura 6.2 Modelos de interfaz de usuario

El ejemplo de la figura 6.2 muestra una interfaz básica en la que las ventanas aparecen conforme se va ejecutando la aplicación, pero las aplicaciones de software normalmente utilizan modelos de interfaz que integran tanto componentes de entrada como componentes de salida, tal como se aprecia en la figura 6.3, la cual ha sido desarrollada en java con el IDE netbeans.

Figura 6.3 Modelo de interfaz de usuario avanzado

Capa de lógica de proceso

A la lógica de procesamiento corresponden los siguientes símbolos, si se analizan con cuidado estos procesos se ejecutan luego de que se completó el proceso de ingreso de datos y el usuario no tiene idea

Page 73: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 73

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja72

de lo que está pasando internamente. Las instrucciones del diagrama correspondientes a esta capa son las que se muestran en la figura 6.4

edad_d d ia _a – dia _n

dia _n > d ia_a dia _a d ia_a + 30SI m es_a m es _a - 1

N O

edad_m m es_a – m es_n

m es _n > m es_a m es_a m es_a + 12SI anio_a _anio_a - 1

N O

edad_a anio _a – anio_n

anio _n > a nio_a

N O

Figura 6.4 Instrucciones del diagrama para capa de proceso

Capa de datos

En este problema, no se usa una capa de datos, puesto que no hay almacenamiento secundario, todos los datos de entrada se procesan para producir la salida y termina sin almacenamiento.

Ejercicios

Pongamos en práctica lo visto en esta sección, realizando los siguientes ejercicios:

• Desarrolleunanálisisdecapassimilaralaplicadoalcadaunodelosproblemasdesarrolladosenla sección 5.3 de la guía.

• Diseñeposiblesinterfacesdeusuarioparacadaunodelosejerciciosdelasección5.3.Puedeusar Microsoft Visio u otro diagramador para hacerlo.

Page 74: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 75

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja74

6.2 Componentes de una aplicación

Al igual que cualquier producto, el software se compone de una serie de elementos que son fabricados de código, por tanto los componentes son lógicos. En el apartado anterior abstraíamos las capas que forman parte de una aplicación en la que hacíamos mención a diferentes instrucciones del diagrama de flujo, pero estas instrucciones se organizan de manera lógica en diferentes tipos de componentes, los cuales vamos a listar a continuación.

CapaNombredelcomponente

Descripción

Interfaz de usuario

VentanasFormulariosBotonesCuadros de textoListas combinadasListas

Son objetos propios de interfaz de usuario que normalmente se los encuentra como librerías de los lenguajes de programación, o se pueden crear y definir como componentes reutilizables en bibliotecas de componentes.

Lógica de proceso

FuncionesProcedimientosClasesMódulosVariablesConstantes

Elementos de código que construye el programador a los cuales les asigna la responsabilidad de procesar y validar la información.

DatosArchivosTablas

Elementos que poseen una estructura que se guarda físicamente en el disco duro con información relacionada a la aplicación.

Estos son los componentes que por lo general se encuentra en las aplicaciones de software, y si usted ha tenido oportunidad de desarrollar alguna aplicación, habrá reconocido algunos de ellos.

Suele ocurrir con mucha frecuencia que en el código 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 diseñar 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 capítulos posteriores del texto para programación 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 ejecutarán, de modo que los programadores no pierdan mucho tiempo dándoles forma y se puedan centrar en la capa de procesamiento.

En la capa de lógica de programación, los componentes tales como las funciones y procedimientos pueden ser provistos por el lenguaje de programación o desarrollados como parte de la aplicación, por ello es importante conocer las prestaciones que ofrece un lenguaje determinado para simplificar nuestra tarea de programación.

Funciones y Procedimientos

Conocemos como funciones y procedimientos a ciertas partes de código que se diseñan para cumplir una tarea específica y devolver el control a la sección de código que la llamó, en términos generales

Page 75: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 75

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja74

se las conoce como subrutinas y si recuerda el capítulo 5, la llamada a las mismas se representa con el símbolo . Las subrutinas hacen que los programas sean mucho más eficientes.

Las subrutinas que caen en la denominación de funciones se caracterizan porque siempre devuelven un valor que es almacenado en una variable o se usan como parte de una expresión, por ejemplo la funciónpi()puededevolverelvalordeπ,enestecasononecesitarecibirningúnparámetrodeentrada.Por otro lado las que caen en categoría de procedimientos se caracterizan porque al ser llamadas ejecutan una acción, pero no retornan ningún valor y por tanto no pueden colocarse como parte de una expresión.

En la tabla 6.1 nos permitimos listar algunas de las funciones comunes que la mayoría de lenguajes de programación suelen traer.

Tabla 6.1 Tabla de funciones comunes en lenguajes de programación

Función Descripción

abs(n) Devuelve el valor absoluto de n, es decir ignora el signo de positivo o negativo.

sqrt(n) Obtienelaraízcuadradaden.

sqr (n) Obtieneelcuadradoden.

random(n) Obtieneunnúmeroaleatoriocomprendidoentre0yn.

log(n) Devuelve el logaritmo de n.

exp (n) Devuelve el antilogaritmo de n.

ln() Devuelve el logaritmo natural de n.

Tal como lo imagina el contar con estas funciones hacen que se simplifique considerablemente el esfuerzo de programación, todos los lenguajes de programación entre ellos java, c++, c#, Visual Basic, ofrecen un rico conjunto de funciones que se pueden usar en la fase de codificación.

Librerías

Para sacar el máximo provecho a estas funciones y procedimientos, lo que se suele hacer es crear bibliotecas de código, de forma tal que puedan ser utilizadas en más de un programa. Archivosdedatos

Cuando usted desarrolla un aplicación que necesita guardar información tiene dos opciones para hacerlo, la primera es crear archivos de datos tipo texto o binarios que sólo puede ser leídos por su aplicación 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 Desarrollodeaplicacionessencillas

Hasta aquí, usted ha tenido la oportunidad de conocer y aplicar algunas herramientas de diseño 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 guía didáctica encontrará el programa Raptor,

Page 76: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 77

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja76

Una característica muy importante de Raptor es que le permite dibujar el diagrama de flujo y ejecutarlo, mostrando además los valores de las variables utilizadas, es decir le ahorra todo el proceso manual, además entre otras cosas le permite generar código para lenguajes como Ada, Java, C++ o puede generar un programa ejecutable que funciona como cualquier aplicación.

No queremos extendernos más en el asunto y pongámonos manos a la obra, lo que sí debemos advertirle es que hay algunas variaciones en los símbolos 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 documentación.

UnavezquehalogradoinstalarRaptor,tomeelcapítulo9desutextobásicoydesarrollelos 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 más ejercicios y quizá estaría demás decir que programe en raptor todos los ejercicios desarrollados hasta ahora.

Para completar este capítulo, nos hemos permitido desarrollar una aplicación completa en Raptor con el propósito de que entienda como se construye una aplicación.

Ejemplo 6.1

Desarrollar en Raptor un programa para jugar al ahorcado.

Descripcióndelaaplicación:

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 posición, los demás 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 muñeco por cada error cometido, hasta que el muñeco 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. Si adivina la palabra en la cantidad de intentos datos, debe felicitar al usuario.

3. Si no logra adivinar debe presentar un dibujo de un muñeco ahorcado y termina el juego.

Page 77: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 77

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja76

Proceso:

1. Debe contar con una lista de palabras para seleccionar una de ellas aleatoriamente.

2. Cada letra correcta se muestra en pantalla.

3. Cada error cometido produce un paso hacia el ahorcamiento del muñeco.

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 implementación mucho más complejos, pero a medida que se explique la aplicación 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 capítulo del texto básico indicado, lo retome hasta comprenderlo debidamente.

Ahora analicemos los componentes de la aplicación por capas:

CAPADEINTERFAZ

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 gráfica que muestra el estado de la palabra y en caso de cometer errores el dibujo del muñeco ahorcándose. 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.

Figura 6.5 Interfaz para el ingreso de datos

Page 78: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 79

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja78

Figura 6.6 Interfaz gráfica de salida de la aplicación.

CAPADELÓGICA

A nivel de lógica necesitamos datos predefinidos y varios grupos de instrucciones organizados en subrutinas, las cuales debemos ir llamando conforme las necesitemos, además debemos hacer uso de varias funciones de la biblioteca de raptor que nos permitan hacer cosas como seleccionar aleatoriamente una palabra, inicializar el modo gráfico y dibujar las figuras.

A nivel de diagramas y subdiagramas necesitamos lo siguiente:

1. Un programa principal desde donde empieza a ejecutarse la aplicación.

2. Varios subprogramas con propósitos específicos, 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

Page 79: ciencias de la computacion

SEGUNDO BIMESTRE Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 79

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja78

Tabla 6.2 Lista de diagramas y subdiagramas que conforman la aplicación

Nombre Propósito Llamado desde

main Programa principal, desde aquí se ejecuta toda la aplicación.

No debe tener llamadas.

crear_lista Crea la lista de palabras en una matriz.

inicializar_juego.

inicializar_palabra Rellena con guiones la palabra que se le muestra al usuario.

inicializar_juego.

ahorcar Dibuja paso a paso el muñeco del juego.

main.

escribir Dibuja la palabra donde constan las letras acertadas y guiones en las demás.

main.

inicializar_juego Crea el entorno de datos necesario para poder comenzar el juego.

main .

crear_interfaz Crea la interfaz gráfica. main .

CAPADEDATOS

Aunque la aplicación no guarda la información 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 subíndice entre corchetes, esto se puede apreciar en el sub diagrama inicializar_lista.

Una recomendación 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 instrucción y muestra los valores de las variables.

Para visualizar y analizar la aplicación abra el archivo ahorcado.rap que se encuentra en el CD en la carpeta ejemplos raptor

EJERCICIOS 6.1

Conloaprendidoenestecapítulo,desarrolleunjuegoenRaptorenelcualteniendounmáximode7intentos la máquina adivina un número del 1 al 100 pensado por el usuario utilizando el método de la búsqueda binaria. La búsqueda binaria consiste en dividir el rango de números posible en 2 y realizar dos preguntas, la primera mostrar el número del centro del rango y preguntar si se trata de ese número, si el usuario dice que es correcto el computador a logrado adivinar el número y termina, en caso de no ser el número, realiza la segunda pregunta que sería si el número 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 conelrangoinferior,demodoquecadavezvaencerrandoalnúmero.Sinololograen7intentos,elusuario respondió incorrectamente las preguntas, en este caso debe alertar del particular.

Page 80: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 81

SOLUCIONARIOGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja80 UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 81

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja80

Con este tema finalizamos la asignatura, y estamos seguros de que les será de gran utilidad para las asignaturas siguientes, como recomendación final le sugerimos seleccione uno de los lenguajes de programación desarrollados en el libro y trate de programar en el las soluciones dadas. En el disco adjunto a la guía hemos incluido algunos de los lenguajes de programación como java y c++ para que los use en su aprendizaje.

Autoevaluación 6

Concluya el estudio de esta materia desarrollando el examen rápido del capítulo 9 del texto básico.

Page 81: ciencias de la computacion

SOLUCIONARIO Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 81

SOLUCIONARIOGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja80 UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 81

SEGUNDO BIMESTREGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja80

8. Solucionario

UNIDAD1Parte 1

1. a2. b3. a4. b5. c

Parte 2

6. v7. f8. f9. v10. v

UNIDAD2Parte 1

1. c 2. a3. c4. b5. c

Parte 2

6. V 7. F8. F9. F10. V

UNIDAD3Parte 1

1. c 2. a3. c4. a5. b

Parte 2

6. F 7. F8. F9. V10. V

UNIDAD4Parte 1

1. b 2. c3. a4. a5. c

Parte 2

6. F 7. F8. F9. V10. F

Page 82: ciencias de la computacion

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 83

GLOSARIOGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja82 UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 83

SOLUCIONARIOGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja82

UNIDAD5

Parte 11. a

C am bios de e stado ( var iab les de tr abajo)

Estructuras de contro l

Estructuras de d ecisión

D eclaraciones

Petición d e datos

m uestra

C am bios de e stado ( var iab les de tr abajo)

UNIDAD6Parte 1

1. b2. c3. b4. b5. a

Parte 2

6. F7. V8. F9. V10. V

Page 83: ciencias de la computacion

GLOSARIO Guía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 83

GLOSARIOGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja82 UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja 83

SOLUCIONARIOGuía didáctica: Lógica de la Programación

UNIVERSIDAD TÉCNICA PARTICULAR DE LOJA La Universidad Católica de Loja82

9. Glosario

ADA.- Lenguaje de programación orientado a objetos.

Algoritmo.- Secuencia ordenada de pasos que nos permiten realizar alguna actividad.

Aplicación.- 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 repetición de una o más instrucciones, existen tres tipos de bucles, los que evalúan la condición a la entrada, los que evalúan la condición a la salida y los que se ejecutan un determinado número de veces con la ayuda de un contador.

Booleano.- Se puede aplicar a una variable o a una expresión cuyo valor puede ser verdadero o falso. Deriva del Álgebra de Boole.

Condición.- Expresión 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 ejecución de un programa. Matemáticamente son valores fijos que se utilizan para realizar diferentes cálculos.

Conclusión.- Resultado al que se llega partiendo de unas premisas y aplicando reglas de inferencia.

C++.- Lenguaje de programación orientado a objetos muy utilizado en el desarrollo de aplicaciones de mediano y bajo nivel, deriva del lenguaje C.

C#(sicharp).- Versión de C orientado a objetos desarrollado por Microsoft he incluido en su plataforma Visual Studio .Net.

Expresión.- Grupo de constantes y/o variables con operadores que de acuerdo a una sintaxis permite realizar la transformación de los datos, sus resultados se almacenan en variables.

Enunciado.- En lógica de programación es una expresión lingüística que establece un pensamiento, puede ser interrogativo, imperativo o declarativo.

MPAE&JSCB/ vt/05-08-09/83

vt/2012-10-26

Page 84: ciencias de la computacion