You are on page 1of 131

ESCUELA DE INGENIERA EN COMPUTACIN

TCNICO EN ING. DE SISTEMAS INFORMTICOS



MODULO
DESARROLLO DE LGICA
DE PROGRAMACIN

ELABORADO POR: LICDA. MARA ELENA DE LOBOS


NOMBRE DEL ALUMNO: _______________________________
PERODO: ___________ AO ________


SANTA TECLA, ENERO 2011

INDICE

Introduccin 1
Objetivo General del Mdulo 2
Objetivos del rea de Competencias 2
Subcompetencias 2
Duracin del Mdulo 2
Esquema General del Mdulo 3
Autoevaluacin Inicial 4
Sistema de Evaluacin 5
Unidad Didctica I 6
Introduccin a la Unidad 6
Resultados de Aprendizaje 6
Contenidos de la Unidad 7
1. HERRAMIENTAS DE PROGRAMACIN 8
1.1 Sistemas de Procesamiento de la Informacin 8
1.2 Tablas de verdad y Jerarqua de Operadores 16
1.3 Algoritmos y diagramas de flujo 35
2. ESTRUCTURAS BSICAS DE PROGRAMACIN 52
2.1Metodologa para la solucin de problemas 52
2.2Tipos de Estructuras bsicas 52
2.3 Estructuras secuenciales 53
2.4 Estructuras de seleccin 60
2.5 Estructuras cclicas 82
3. Estructuras de datos y subalgoritmos 103
3.1 Estructuras de datos 103
3.2 Modularidad 119
3.3 Ordenamiento y Bsqueda 123
EVALUACIN FINAL 127
1

DESARROLLO DE LGICA DE PROGRAMACIN

INTRODUCCIN
El presente mdulo tiene como finalidad que usted pueda desarrollar la lgica de programacin, a
travs del estudio de diferentes herramientas que le servirn para plantear la solucin de problemas
por medio de representacin grfica y pseudo codificada; a partir del anlisis de un problema en
particular, lo que propiciar que usted pueda iniciarse en el campo de la programacin.
No se pretende ensear un lenguaje de programacin, sino dar a conocer las bases de la
programacin; a travs de un lenguaje similar al habla humana (pseudocdigo), que luego le facilite
aprender a utilizar un lenguaje de programacin en particular.
El mdulo est compuesto por una unidad que proporcionar paso a paso, las bases que usted
necesita para adquirir los conocimientos e ir desarrollando la lgica de programacin, y as plantear
soluciones a problemas en el rea de la informtica.
Est dividido en tres partes: la primera constituye la fase inicial de la identificacin de competencias y
se refiere a conceptos fundamentales del desarrollo de software, donde se definen las reglas que debe
seguir para aplicar jerarqua de operadores y tablas de verdad, los cuales reflejar a travs de una
representacin algortmica.
Luego estudiaremos las herramientas bsicas de programacin, donde a partir del anlisis de un
problema informtico se representar su solucin en forma grfica o pseudo codificada.
Finalmente, la tercera parte se centra en las estructuras de datos y subalgoritmos para que resuelva
problemas ms complejos y los aplique en situaciones de la vida real.









2

OBJETIVO GENERAL DEL MDULO:
Al finalizar este mdulo, usted habr adquirido las competencias para aplicar las tcnicas bsicas que
le permitan realizar el anlisis de un problema, representado por medio de diagramas de flujo o
pseudocdigo.

REA DE COMPETENCIAS:
Desarrollar Lgica Computacional

SUBCOMPETENCIAS:

Aplicar Tablas de Verdad y Jerarqua de Operadores
Elaborar Algoritmos narrados y pseudocodificados
Disear Flujogramas para resolver problemas
Elaborar la estructura general de un programa
Elaborar algoritmos usando estructuras bsicas de programacin
Elaborar algoritmos usando arreglos en una y dos dimensiones
Resolver problemas aplicando cadenas de caracteres
Resolver problemas usando procedimientos y funciones
Aplicar mtodos de ordenamiento y bsqueda en la solucin de problemas


DURACIN DEL MDULO: 100 HORAS.

HORAS TERICAS: 30

HORAS PRCTICAS: 70





3

ESQUEMA GENERAL DEL MDULO



TEMA 2: ESTRUCTURAS BSICAS DE PROGRAMACIN
TEMA 3: ESTRUCTURAS DE DATOS Y SUBALGORITMOS
TEMA 1: HERRAMIENTAS DE PROGRAMACIN
1.1 Sistemas de Procesamiento de la
Informacin
1.2 Tablas de Verdad y Jerarqua de Operadores
1.3 Algoritmos y Diagramas de Flujo
UNIDAD 1:
DESARROLLAR LGICA DE PROGRAMACIN
2.1 Metodologa para la solucin de problemas
2.2 Tipos de Estructuras Bsicas
2.3 Estructuras Secuenciales
2.4 Estructuras de Control
2.5 Estructuras Cclicas
3.1 Estructuras de Datos
3.2 Modularidad
3.3 Ordenamiento y Bsqueda
MODULO: DESARROLLO DE LGICA
DE PROGRAMACIN
4




En su rol de protagonista del proceso de aprendizaje, le proponemos completar el siguiente
cuestionario previo al estudio del mdulo, con el objeto de que usted defina cules son sus
conocimientos iniciales de los temas que se van a estudiar y, que avale su aprendizaje en el
transcurso del desarrollo del mdulo. Finalmente puede comparar ambos procesos para que identifique
los aprendizajes alcanzados al terminar el mdulo.
Para tal propsito, complete el cuestionario utilizando la siguiente escala:
1. No conozco ni s hacerlo (Nunca he ledo sobre este tema ni trabajado en l)
2. He escuchado pero no he trabajado en ello.
3. Tengo poco conocimiento del tema.
4. Conozco y s hacerlo.

Coloque un cheque en la escala seleccionada.


Contenidos 1 2 3

4

Evaluar expresiones aplicando tablas de verdad y jerarqua
de operadores

Utilizar algoritmos y representacin grfica para la solucin
de problemas

Realizar pruebas manuales de algoritmos


Resolver problemas utilizando estructuras secuenciales.

Resolver problemas utilizando estructuras de seleccin
simple, doble, compuesta y mltiple

Resolver problemas utilizando estructuras cclicas y bucles
anidados

Representar problemas utilizando estructuras de datos:
vectores, matrices y registros

Aplicar modularidad para simplificar la solucin de problemas

Utilizar cadenas de caracteres y mtodos de ordenamiento y
bsqueda





AUTOEVALUACIN INICIAL

5




SISTEMA DE EVALUACIN.
Socializacin:
Controles de lectura 100%
Prctica:
Evaluacin de los temas 45% (3 exmenes prcticos 15% c/u)
Ejercicios prcticos 25%
Tarea significativa 30%
Porcentaje de socializacin 30%
Porcentaje de Prctica 70%
TAREA SIGNIFICATIVA:
La evaluacin final del mdulo consiste en la elaboracin de un documento que contiene el anlisis y
diseo de un problema especfico, el cual debe contener:
a) Portada
b) ndice
c) Introduccin
d) Objetivos
e) Descripcin del proyecto
f) Anlisis del Problema
g) Planeacin de la Solucin
h) Descripcin de variables
i) Algoritmo General
j) Flujograma
k) Diagrama N-S
l) Corrida manual con diferentes datos de prueba
Sugerencias para la presentacin del documento:
Revise su ortografa y redaccin
Incluya en forma completa, la bibliografa y sitios web consultados.
Documento en formato de Word tamao carta, con mrgenes de 2.5 a cada lado. Tipo de letra
verdana tamao 11 para textos y los ttulos en tamao 12. Interlineado 1.5.
Entrega puntual, en la fecha estipulada.
EVALUACIN FINAL
6

UNIDAD DIDCTICA I.
DESARROLLAR LGICA DE PROGRAMACIN

INTRODUCCIN.
En nuestros das, aprender a programar es uno de los retos ms grandes que las personas tienen; a
pesar de que tener una computadora cada da es ms viable y es una herramienta poderosa para
resolver problemas. Sin embargo, para que una persona aprenda tcnicas y lenguajes de
programacin, primero debe iniciarse en el campo de la lgica y desarrollar las bases para el anlisis
de un problema.
Como parte del anlisis se tiene que aprender que un problema se descompone en una serie de
etapas, las cuales se deben seguir para llegar a obtener buenos resultados al final.
El presente mdulo consta de una nica unidad de aprendizaje. Dicha unidad tiene como propsito,
lograr que el estudiante desarrolle la lgica de programacin; a travs de diferentes conceptos,
herramientas y estructuras que le conducirn a travs del campo de la programacin.
La unidad est compuesta de tres grandes temas como son herramientas de programacin,
estructuras bsicas de programacin y Estructuras de datos y Subalgoritmos.
Con el desarrollo de cada uno de estos temas se pretende lograr que el alumno investigue, analice y
aplique los conocimientos adquiridos en la solucin de problemas de programacin en forma
pseudocodificada, utilizando ciertas herramientas y estructuras bsicas, demostrando as, el desarrollo
de la lgica adquirida a travs del mdulo.
RESULTADOS DE APRENDIZAJE:
Resolver expresiones en forma correcta, aplicando Tablas de Verdad y Jerarqua de
Operadores.
Elaborar algoritmos y diagramas de flujo en base a las reglas de construccin establecidas.
Desarrollar algoritmos y diagramas de flujo utilizando la estructura general de un programa.
Disear algoritmos y flujogramas utilizando estructuras Bsicas de Programacin segn
estndares de pseudocdigo
Elaborar algoritmos y flujogramas usando estructuras de datos en base a reglas de
construccin.
Elaborar algoritmos usando instrucciones bsicas de cadenas de caracteres.
Resolver problemas en forma modular utilizando procedimientos y funciones estndar o
definidas por el usuario.
Utilizar diferentes mtodos de ordenamiento y bsqueda en base a requerimientos del
problema.
7

CONTENIDOS DE LA UNIDAD:
1. HERRAMIENTAS DE PROGRAMACIN
1.1 Sistemas de Procesamiento de la Informacin
1.1.1 Pasos del desarrollo de software
1.1.2 Lenguajes de programacin
1.1.3 Intrpretes y compiladores
1.2 Tablas de verdad y Jerarqua de Operadores
1.2.1 Lgica de Proposiciones
1.2.2 Tablas de valores de verdad
1.2.3 Tipos de datos y jerarqua de operadores
1.3 Algoritmos y diagramas de flujo
1.3.1 Introduccin a los algoritmos
1.3.2 Representacin de algoritmos
2. ESTRUCTURAS BSICAS DE PROGRAMACIN
2.1 Metodologa para la solucin de problemas
2.2 Tipos de Estructuras bsicas
2.3 Estructuras secuenciales
2.4 Estructuras de control
2.5 Estructuras cclicas
3. ESTRUCTURAS DE DATOS Y SUBALGORITMOS
3.1 Estructuras de datos
3.1.1 Introduccin a las estructuras de datos
3.1.2 Arreglos en una dimensin
3.1.3 Arreglos en dos dimensiones
3.1.4 Cadenas de Caracteres
3.1.5 Registros
3.2 Modularidad
3.2.1 Introduccin a la modularidad
3.2.2 Procedimientos
3.2.3 Funciones
3.3 Ordenamiento y Bsqueda
3.3.1 Mtodos de Ordenamiento
3.3.2 Mtodos de Bsqueda



8

TEMA 1. HERRAMIENTAS DE PROGRAMACIN
CONCEPTOS.
1.1 Sistemas de Procesamiento de la Informacin.
Sistema de informacin: es un conjunto de elementos que interactan entre s con el fin de apoyar las
actividades de una empresa o negocio
1
.
Procesamiento de Informacin: Es la capacidad de los Sistemas de Informacin para realizar clculos
con base en secuencias de operaciones preestablecidas. Estos clculos pueden efectuarse con datos
introducidos recientemente en el sistema o bien con datos que estn almacenados. Esta caracterstica
de los sistemas permite la transformacin de datos fuente en informacin que puede ser utilizada para
la toma de decisiones, lo que hace posible, entre otras cosas, que un tomador de decisiones genere
una proyeccin financiera a partir de los datos que contiene un estado de resultados o un balance
general de un ao base
1
.
Procesamiento de Datos: es cualquier ordenacin o tratamiento de datos, o los elementos bsicos de
informacin, mediante el empleo de un sistema. Procesar datos es generar informacin para la toma de
decisiones
2
.
1.1.1 Pasos del desarrollo de software.
Escribir un programa para resolver un problema involucra una serie de pasos desde su anlisis hasta
llegar a su implementacin. Estos pasos se conocen como Desarrollo de Software y algunas veces
como Ingeniera de Software o Ciclo de Vida de un Sistema.
El desarrollo de software se puede definir como la aplicacin prctica del conocimiento cientfico al
diseo y construccin de programas de computadora y a la documentacin asociada requerida para
desarrollar, operar y mantenerlos. [Bohem, 1976]
1.1.2 Lenguajes de Programacin.
Un lenguaje de programacin es un conjunto de smbolos y reglas sintcticas y semnticas que se
utiliza para escribir los programas de computadoras. Un lenguaje de programacin permite a uno o
ms programadores especificar la forma precisa en que los datos van a ser operados en una
computadora, cmo van a ser almacenados o transmitidos y qu acciones tomar ante ciertas
circunstancias o problemas que se deben resolver. El programador debe ser capaz de seleccionar el
lenguaje de programacin apropiado para resolver un problema bajo ciertas circunstancias especficas,
de manera ptima. Una caracterstica relevante de los lenguajes de programacin es precisamente que
ms de un programador puedan tener un conjunto comn de instrucciones que puedan ser
comprendidas entre ellos para realizar la construccin del programa de forma colaborativa.

1
Tomado de http://www.slideshare.net/miniproject/sistemas-de-informacin-1708626.
2
Tomado de fccea.unicauca.edu.co/old/procesamiento.htm
9

1.1.3 Intrpretes y Compiladores.
Los compiladores, los intrpretes y los ensambladores se encargan de traducir lo que haya escrito en
lenguaje de alto nivel (cdigo fuente) y lo convierten a cdigo objeto (casi ejecutable).


TRADUCCIN
(Ensamblador, Intrprete, Compilador)
Existen dos tipos principales de traductores de los lenguajes de programacin de alto nivel:
Compilador, que analiza el programa fuente y lo traduce a otro equivalente escrito en otro
lenguaje (por ejemplo, en el lenguaje de la mquina). Su funcin es similar a la de un
traductor humano, que toma un libro lo analiza completamente y produce otro equivalente
escrito en una lengua diferente.
Intrprete, que analiza el programa fuente y lo ejecuta directamente, sin generar ningn
cdigo equivalente. Su accin equivale a la de un intrprete humano, que traduce las frases
que oye sobre la marcha, sin producir ningn escrito permanente. Intrpretes y compiladores
tienen diversas ventajas e inconvenientes que los hacen complementarios:
o Con el intrprete es ms fcil la bsqueda de errores, pues la ejecucin del programa
se puede interrumpir en cualquier momento para estudiar el entorno (valores de las
variables, etc.). El intrprete va analizando instruccin por instruccin y al momento en
que detecta un error se detiene permitiendo su modificacin o correccin. Adems, el
programa puede modificarse sobre la marcha, sin necesidad de volver a comenzar la
ejecucin.
o El compilador genera programas ms rpidos y eficientes, pues este analiza todo el
cdigo de una sola vez y luego genera un archivo objeto, por lo cual el anlisis del
lenguaje fuente se hace una sola vez, durante la generacin del programa equivalente.
Se tarda analizando solamente la primera vez, pero luego lo que se ejecuta es el
cdigo objeto, por lo cual las dems ejecuciones son ms rpidas. En cambio, un
intrprete como no genera el cdigo objeto, siempre se tarda realizando el anlisis
pues lo hace instruccin por instruccin hasta que termina y no hayan ms errores
detectados. El tiempo de ejecucin se ir reduciendo cuando se vayan depurando todos
los errores encontrados.
o Un intrprete permite utilizar funciones y operadores ms potentes, como por ejemplo
ejecutar cdigo contenido en una variable en forma de cadenas de caracteres.
Usualmente, este tipo de instrucciones es imposible de tratar por medio de
compiladores. Los lenguajes que incluyen este tipo de operadores y que, por tanto,
Cdigo Fuente
Cdigo Objeto
Cdigo
Ensamblador
10

exigen un intrprete, se llaman interpretativos. Los lenguajes compilativos, que
permiten el uso de un compilador, prescinden de este tipo de operadores.
3

LENGUAJES COMPILADOS
Es un programa que traduce un programa escrito en un lenguaje de alto nivel, en un programa en
lenguaje de mquina que la computadora es capaz de entender y ejecutar directamente.
Ejemplo de lenguajes que usan compilador:
Pascal
Cobol
Fortran
Ada
Modula 2
C , C++
Involucra dos pasos en su operacin:
1. Convertir cdigo fuente a objeto
2. Ejecutar el cdigo objeto

Fases de compilacin:


Anlisis: Dependiente del lenguaje. Independiente de la mquina
Sintaxis: Independiente del lenguaje. Dependiente de la mquina.

ENLAZADOR (LINKER)
El enlazador realiza la tarea de enlazar la funcionalidad de las teclas y funciones con el cdigo objeto
generado a travs de la compilacin de un programa.
Una librera es la coleccin de varias teclas y sus funciones, las cuales son creadas por programadores
expertos y almacenadas en lugares especiales para que se puedan utilizar por otros programadores.
Tambin pueden ser algunas funciones estndar como raz cuadrada, logaritmo, random y otras.

3
Tomado de www.scribd.com/doc/37261651/Emulador-y-Simulador.
Programa Fuente Cdigo Intermedio Programa Objeto
Anlisis Sintaxis
11

Para poder utilizar estas funciones predefinidas que estn guardadas en las libreras, el programador
tiene que hacer referencia a dicha librera, que es un archivo que se llama en la cabecera del
programa.
El proceso de enlace es mostrado a continuacin:










MINI CONTROL DE LECTURA


1. INVESTIGUE Y RESUELVA EL SIGUIENTE CRUCIGRAMA:

HORIZONTALES
6. Paso final del desarrollo de software que garantiza que los programas siempre estn
funcionando correctamente y libres de errores.
8. Etapa donde se plantea el bosquejo de la solucin a travs de pseudocdigos y otras
herramientas de diseo.
9. Manuales que sirven de referencia para los que van a usar el sistema.
10. Etapa que consiste en correr el programa y corregir las partes que no funcionan.
VERTICALES
1. Tipo de error difcil de detectar, los resultados obtenidos no son los esperados y puede
significar volver a elaborar todo el cdigo nuevamente.
2. Generacin del programa usando un lenguaje de programacin.
3. Consiste en comprobar que el software realice correctamente las tareas indicadas en la
especificacin del problema.
4. Tipo de error fcil de detectar por deberse posiblemente a mala escritura.
Compilador
Enlazador
Librera
Cdigo
Ejecutable
Cdigo
Fuente
Cdigo
Ejecutable
12

5. Datos que se deben identificar a partir de las salidas del problema.
7. Primer elemento a buscar en la identificacin de requerimientos.

1 2 3
4
5
6 7




8
9
10



2. INVESTIGACIN INDIVIDUAL. INVESTIGUE Y CONTESTE EL
SIGUIENTE CUESTIONARIO EN SU CUADERNO. LUEGO DISCTALO CON SU
GRUPO DE CLASE.
1. Qu es procesamiento de datos?
2. Qu es desarrollo de software?
3. Cules son los pasos del desarrollo de Software?
4. Qu es un programa?
5. Cules son los tipos de sistemas de informacin?
6. Cul es la aplicacin de los sistemas de informacin?
7. Qu es un lenguaje de programacin?
8. Qu funciones realiza un programador?
9. En qu consiste la fase de resolucin de un problema?
10. Qu es codificacin?
11. Qu es depuracin?
12. Qu son lenguajes de bajo nivel?
13. Qu son lenguajes de alto nivel?
14. En qu consiste la portabilidad?
13

15. Cules son las generaciones de lenguajes de programacin?
16. Escribe ejemplos de lenguajes que pertenecen a cada generacin y sus caractersticas
17. Qu es compilacin?. Cules son las fases de compilacin?
18. Qu es un intrprete?
19. Cules son las semejanzas y diferencias entre intrprete y compilador?
20. Escribe ejemplos de programas que trabajan con intrprete y cules con compilador.
21. Qu es cdigo fuente?
22. Qu es cdigo objeto?
23. Cules son los errores que se producen en la compilacin de un programa?


3. INVESTIGUE Y COMPLETE EL ESPACIO EN BLANCO CON LA
RESPUESTA CORRECTA.
1. Los lenguajes de programacin se dividen en _____________ nivel y ____________ nivel.
2. Toda instruccin de lenguaje de programacin tiene al menos dos partes: cdigo de
_________________ y direccin del _________________
3. Independencia de la arquitectura fsica de la computadora en un lenguaje de alto nivel significa
que un mismo lenguaje puede funcionar en distintos computadores, a esto se le llama
___________________.
4. El valor en binario 100011 equivale en decimal al valor ________
5. LISP y PROLOG corresponden a la generacin de lenguajes ________________________


4. PARA ANALIZAR.
Son verdaderas las siguientes afirmaciones?
Responda si o no, marcando con una X en el cuadro respectivo.

Afirmacin: Es cierto?
1. Los lenguajes de alto nivel no son portables S No X
2. Son lenguajes interpretados: Basic y Visual Basic S No
3. Una librera es un conjunto de teclas y funciones que estn guardadas para
que se puedan utilizar en los programas
S No
4. Un compilador revisa todo el cdigo fuente y luego muestra los errores. Al
ser corregidos se crea un cdigo objeto.
S No
5. Un intrprete no genera cdigo objeto S No
14

5. EVALUACIN:

INDICACIN. Traslade el nmero de la respuesta correcta al espacio de en medio
segn corresponda. Si no sabe la respuesta, debe investigar en alguna fuente
bibliogrfica o en Internet.
1. Depuracin Es una pastilla de silicio que contiene componentes
electrnicos en miniatura, llamados semiconductores.
2. Compilador Consiste en la recoleccin de datos de entrada que
son evaluados y ordenados para ser colocados de
manera que produzcan informacin til.
3. Memoria Secundaria Se deben generalmente a operaciones no permitidas
como dividir por cero, leer un dato no numrico en
una variable numrica, exceder un rango de valores
permitidos, etc.
4. Manual de usuario Se encargan de darle soporte tcnico al programa
5. Prueba Estos se encargan de investigar y documentar con las
herramientas necesarias para que el programador
pueda desarrollar el sistema en algn lenguaje de
programacin adecuado.
6. Operadores Consiste en comprobar que el software realice
correctamente las tareas indicadas en la
especificacin del problema
7. Procesamiento de Datos Es un programa que traduce un programa escrito en
un lenguaje de alto nivel, en un programa en
lenguaje de mquina que la computadora es capaz de
entender y ejecutar directamente
8. Errores de Ejecucin Son dispositivos de almacenamiento para guardar la
informacin de forma permanente para uso posterior
9. Chip En esta fase se comprueba el funcionamiento de cada
programa y esto se hace con datos reales o ficticios.
10. Analistas de sistemas Contiene informacin sobre cmo usar el programa,
descripcin de mens y pantallas y otros.

PARTE II.




Dadas las siguientes oraciones, chequee el recuadro dependiendo si es Falsa o
Verdadera. Recuerde, si algo no lo sabe: Investguelo.

15

N PREGUNTA F V
1. En la fase de identificacin de requerimientos se especifican los objetivos,
salidas y entradas del problema.

2. Las pruebas y depuracin son dos actividades independientes, significa que
no es necesario hacer ambas.

3. La Unidad de Control y la ALU trabajan en forma separada dentro del
computador

4. Una computadora sin software no tiene mucha utilidad aunque tenga
bastantes elementos de hardware

5. Los lenguajes se dividen en bajo nivel y alto nivel



TERMINOLOGA APLICADA
Desarrollo de software es la aplicacin prctica del conocimiento cientfico al diseo y
construccin de programas de computadora y a la documentacin asociada requerida para
desarrollar, operar y mantenerlos.
Lenguaje de programacin es un conjunto de smbolos y reglas sintcticas y semnticas que
definen su estructura y el significado de sus elementos y expresiones.
Procesamiento de Datos: es cualquier ordenacin o tratamiento de datos, o los elementos
bsicos de informacin, mediante el empleo de un sistema. Procesar datos es generar
informacin para la toma de decisiones.
Procesamiento de Informacin: Es la capacidad del Sistema de Informacin para efectuar
clculos de acuerdo con una secuencia de operaciones preestablecida.
Sistema de informacin: es un conjunto de elementos que interactan entre s con el fin de
apoyar las actividades de una empresa o negocio.


BIBLIOGRAFA
Metodologa de la Programacin. Diagramas de Flujo, algoritmos y programacin. Luis Joyanes
Aguilar. Editorial Mc Graw Hill. Mxico.
Fundamentos de programacin. Algoritmos y estructuras de datos. Luis Joyanes Aguilar.
Editorial Mc Graw Hill. Mxico.
Introduccin a la Programacin. Ramn A. Mata-Toledo y Pauline K. Cushman. Editorial Mc
Graw Hill. Mxico.
SITIOS DE INTERNET:
Lenguajes de Programacin.
http://bc.inter.edu/facultad/RFIGUEROA/Programming2.htm


16

1.2 TABLAS DE VERDAD Y JERARQUA DE OPERADORES


LGICA.
Es la capacidad de pensar racionalmente acerca de soluciones alternativas y los resultados de
aplicarlas, y por lo tanto, de hacer elecciones inteligentes.
Otras definiciones de Lgica:
Es el estudio crtico del razonamiento y tiene un valor terico y prctico.
4

Es el estudio de los mtodos y principios usados al distinguir entre los argumentos correctos
(buenos) y los argumentos incorrectos (malos).
En un sentido amplio, es el estudio del correcto razonamiento.

ARGUMENTOS.
Cuando el razonamiento se expresa con palabras, recibe el nombre de argumento.
Un argumento es un grupo cualquiera de proposiciones o enunciados que forman premisas y
conclusiones. Este puede constar de varias premisas pero de una sola conclusin.
PREMISAS Y CONCLUSIN
Las premisas de un argumento son proposiciones afirmadas como fundamento o razones para aceptar
una conclusin.
La conclusin es la proposicin afirmada que se basa en las otras proposiciones o premisas.
Una proposicin puede ser premisa en un argumento y conclusin en otro.
Hay dos condiciones que debe satisfacer un argumento para establecer la verdad de su conclusin:
Debe ser vlido y todas sus premisas deben ser verdaderas. A esto se le llama razonamiento
confiable.
5


TIPOS DE PROPOSICIONES O ENUNCIADOS:
Simples o tomos
Compuestas

Enunciado Simple:
Es el que no contiene otro enunciado como parte componente. Los tomos o proposiciones simples son
tales que no es posible encontrar en ellas otras proposiciones
Ej. Las rosas son rojas
Enunciado compuesto:
Es el que se compone de varios enunciados. Estas proposiciones compuestas estn conformadas de
varias proposiciones simples a travs de lo que se denomina conectores lgicos, entre los cuales se
encuentran: y, o, implica.
Ej. Las rosas son rojas y las violetas son azules.



4
Tomado de www.slideshare.net/marthaill10/unidad-iv-algoritmos
5
Tomado de www.scribd.com/doc/3863819/apuntesprog
1.2.1 LGICA DE PROPOSICIONES
17

Valor de Verdad
Es la certeza o falsedad de una proposicin. Se representa por T (True) o V (verdadero) cuando es
cierta y por F (false o falso) cuando no es cierta.

CONECTIVAS LOGICAS (Algebra de Boole)
Las conectivas lgicas tambin se llaman a veces operadores, y son de dos tipos:
Operadores unarios:
NEGACION: Not,
Ejemplo: El peridico no ha llegado todava.
Operadores binarios:
CONJUNCION: AND, &, y , ^
DISYUNCION: OR , V
CONDICIONAL: ==> implica
BICONDICIONAL: <==> s y slo s
Ejemplo:
Ayer fui al supermercado y a la escuela. (Conjuncin)
Compra soda o jugo (Disyuncin)
Si tomas entonces no manejes (Condicional)
Ganars el concurso s y slo s respondes bien todas las preguntas (Bicondicional).



Como se mencion anteriormente, para formar expresiones compuestas necesitamos conectivos
lgicos. Comenzaremos con un conectivo unitario; este es el que se aplica solamente a una
proposicin. Se le llama Negacin.
La operacin unitaria de negacin, se
representa por el smbolo de Not ( ) y tiene
la siguiente tabla de verdad:

P P

V F
F V

Por ejemplo, si tenemos el enunciado: El pizarrn es verde. Su negacin sera: El pizarrn no es verde.
Conjuncin (AND, , &) : Es una conectiva que puede definirse como
verdadera slo cuando ambas variables proposicionales sean
verdaderas. En cualquier otro caso es falsa.
P Q P Q
V V V
V F F
F V F
F F F

Disyuncin (V,OR) : La sentencia ser verdadera cuando una o ambas
variables proposicionales sean verdaderas. Con la disyuncin a
diferencia de la conjuncin, basta con que una de las variables sea
verdadera para que la disyuncin nos d verdadero. En otras palabras,
slo cuando las dos premisas son falsas, la disyuncin nos dar una
conclusin falsa.
P Q P V Q
V V V
V F V
F V V
F F F
1.2.2 TABLA DE VALORES DE VERDAD
18




Los ( ) tienen la mayor prioridad pues pueden cambiar el valor de verdad a una expresin.
El NOT se aplica directamente a una proposicin, si no existen parntesis.
AND tiene ms prioridad que OR
La jerarqua nos queda entonces:
( )
NOT
AND
OR



EJEMPLO.
Si A y B son valores verdaderos y P y Q son falsos, cul es el valor de verdad de la
siguiente expresin:

1. (A or B) ^ (P ^ Q)
Solucin:
Lo primero que tenemos que hacer es sustituir la expresin por los valores de verdad que nos da el
enunciado.
Evaluamos primero los parntesis, comenzando con el primero. En la tabla OR buscamos a qu
equivalen Verdadero or Verdadero (porque A y B son verdaderos segn el enunciado). Obtenemos que
es Verdadero. Como la expresin est negada, su valor opuesto es Falso.
Al evaluar el segundo parntesis, Q es falso y al negarlo nos queda verdadero. Luego, si P es falso nos
queda Falso and Verdadero, y esto es igual a Falso.
Entonces:

NOT ( A OR B ) AND ( P AND NOT Q )
NOT ( V OR V ) AND ( F AND NOT F)
NOT ( V ) AND ( F AND V )
F AND F
Falso

MINI CONTROL DE LECTURA

Coloque las siguientes palabras en los espacios en blanco segn corresponda.
1. Lgica
2. Conjuncin
3. Argumentos
4. Premisas
Notacin:
NOT se representa con ~ o
AND se representa con ^
y OR se representa con v
Usaremos NOT, OR y AND para no
confundir con V y F (Verdadero y Falso)
JERARQUA DE OPERADORES BOOLEANOS:

19

5. Enunciado Simple

1. _______________, es una conectiva que puede definirse como verdadera slo cuando ambas
variables proposicionales sean verdaderas. En cualquier otro caso es falsa.
2. __________________, es el que no contiene otro enunciado como parte componente.
3. ______________, son proposiciones afirmadas como fundamento o razones para aceptar una
conclusin.
4. _________________, es el estudio de los mtodos y principios usados al distinguir entre los
argumentos correctos (buenos) y los argumentos incorrectos (malos).
5. __________________, es un grupo cualquiera de proposiciones o enunciados que forman
premisas y conclusiones



Uno de los propsitos de las computadoras es manejar informacin. La informacin est formada por
datos.
Un dato es toda aquella informacin caracterstica de una entidad, que es susceptible de tratamiento
en un programa informtico. Tambin es la expresin general que describe los objetos con los cuales
opera una computadora.
En un programa los datos de entrada se transforman por el programa hasta producir datos de salida.
Para la solucin de problemas, definir adecuadamente las estructuras de los datos es tan importante
como el diseo mismo de la solucin del problema.
Todos los datos tienen un tipo asociado con ellos que nos servir para poder conocer con qu
informacin trabajaremos. Por ejemplo, cuando ingresamos el sueldo de un trabajador necesitamos
que este contenga decimales, o al solicitar la edad de una persona sta tiene que estar con nmeros
enteros, etc. Adems hay operaciones que no tienen sentido como la suma entre caracteres.

La asignacin de tipos a los datos tiene dos objetivos principales:
Detectar errores de operaciones aritmticas en los programas
Determinar cmo ejecutar las operaciones.

Los tipos de datos son clasificados como sigue:
a) Simples
b) Estructurados

a) Tipos de Datos Simples.
Los tipos de datos simples son los que ocupan slo una casilla de memoria, por lo tanto una variable
simple hace referencia a un nico valor a la vez. Los datos simples pueden dividirse en:
1. Numricos
2. Tipos de Datos Alfanumricos
3. Tipos de datos Lgicos o booleanos

b) Tipos de Datos Estructurados
Estos son un tipo de datos especial que tienen la ventaja de almacenar varios valores al mismo tiempo
dentro de una misma variable.
1.2.3 TIPOS DE DATOS Y JERARQUIA DE OPERADORES

20

Entre stos tenemos: Arreglos (arrays), Registros (record), Archivos o Ficheros (File) y Punteros
(pointer).
REGLAS DE LOS IDENTIFICADORES:
Deben comenzar por una letra.
Pueden estar constituidos por letras y dgitos, y en algunos casos por el signo del subrayado.
Ejemplo: dato_1
No deben contener espacios en blanco.
Las letras no deben ser tildadas
El nmero mximo de caracteres depender del compilador utilizado. Se recomienda usar
nombres cortos.
El nombre asignado debe tener relacin con la informacin que contiene.
No podr coincidir con palabras reservadas, propias del lenguaje algortmico. Tampoco debe
tener el mismo nombre de una funcin, ya sea definida por el usuario o de la biblioteca del
lenguaje que se utilice.



Es el modo de darle valores a una variable. Se representa con el smbolo , el cual se conoce como
instruccin o sentencia de asignacin.
El formato general de una operacin de asignacin es:

Nombre de la variable expresin
La flecha de asignacin se sustituye en algunos lenguajes de programacin por el smbolo de =.
Ejemplo:
A 15 significa que a la variable A se le ha asignado el valor 15.
La accin de asignar es destructiva, ya que cada vez que le asignamos un valor a una variable, ste le
cae encima al anterior pues se est almacenando en un rea de memoria. Por ejemplo, en la secuencia
de asignaciones
A 5
A 123
A 6
Cuando stas se ejecutan, el ltimo valor que toma A es 6 por lo tanto los otros dos han desaparecido.


1. Una variable o expresin que esta al lado derecho de una sentencia de asignacin debe tener
un valor antes de asignrsele a la variable de la izquierda. Esto quiere decir que hasta que un
programa le da un valor a una variable, esa variable no tiene valor.
Ejemplos:
Si x no tiene un valor antes de realizar la operacin y= 2x+10, se producir un error
pues el computador no sabr qu valor le tiene que asignar a x.
OPERACIN DE ASIGNACIN

REGLAS DE ASIGNACIN

21

Si a,b y c no tienen un valor antes de realizar la operacin de x= a+b+c, tambin se
producir un error.
2. En la izquierda de una sentencia de asignacin slo puede existir una variable que reciba
operaciones a la derecha, no operaciones en s. Por consiguiente no es vlido lo siguiente:
valor_neto interes = 3.5
sueldo + comision = nuevo_sueldo (lo correcto sera hacer nuevo_sueldo = sueldo +
comisin). Recuerde que la variable de la izquierda recibe las operaciones, variables o
expresiones de la derecha, siempre y cuando stas generen un valor para ser asignado.

MINI CONTROL DE LECTURA


INVESTIGUE:

1. Qu son tipos de datos numricos, alfanumricos y lgicos. Escriba ejemplos
de tipos que corresponden a cada uno. Elabore un reporte en una pgina de
papel bond tamao carta.
2. Qu son constantes, variables e identificadores, su uso y ejemplos.
3. Qu son contadores y acumuladores. Escriba ejemplos de su uso.

EJERCICIOS:


1. Indique cules de los siguientes datos son vlidos para ser procesados por una
computadora?. Si no es vlido, indique porqu y si es vlido tambin indique a
qu tipo de dato pertenece.

a) 12005
b) Rpido corren los carros
c) 250
d) 123.56
e) 0.001
f) 4,512
g)
h) juan perez

2. Indique cules de los siguientes identificadores es vlido y si no lo es, diga
porqu.
a) X
2

b) 4Fx10
c) Apellido 1
d) Num_par
e) For (investigar)



3. En el siguiente cuadro aparecen varias palabras que corresponden a este tema.
Traslade a los espacios en blanco segn correspondan con el enunciado. Sobra
uno.
22

Datos Estructurados Identificadores Datos Simples
Asignacin Constante Variable
1. Es el modo de darle valores a una variable. Se representa con el smbolo .
____________________
2. Son palabras creadas por los programadores para dar nombre a los objetos y dems
elementos que necesitamos declarar en un programa: variables, constantes, tipos, estructuras
de datos, archivos, subprogramas, etc. ____________________________
3. Estos son un tipo de datos especial que tienen la ventaja de almacenar varios valores al mismo
tiempo dentro de una misma variable._____________________________
4. Es un dato cuyo valor no cambia durante todo el proceso de ejecucin de un programa.
_________________________
5. Son los que ocupan slo una casilla de memoria, por lo tanto una variable simple hace
referencia a un nico valor a la vez. _________________________



EXPRESIONES.
Las expresiones son combinaciones de constantes, variables, smbolos de operacin, parntesis y
nombres de funciones especiales.
Una expresin representa una unidad de datos simple, tal como un nmero o un carcter. Tambin
puede consistir en alguna combinacin de entidades interconectadas por uno o ms operadores. Las
expresiones tambin pueden representar condiciones lgicas que son verdaderas o falsas.
Cada expresin tiene un valor, que se determina tomando los valores de las variables y constantes
implicadas ejecutando las operaciones indicadas.
Ejemplos:
X = 9 * 15 + 6
2.5 + 13 = 15.5
A+B = C+D

ELEMENTOS DE UNA EXPRESIN:
OPERANDOS
OPERADORES

Un operador es un smbolo o palabra que significa que se ha de realizar cierta accin entre dos o
ms valores, llamados operandos.
Ejemplos:
Operando 1 Operador Operando 2
X + 2
OPERADORES Y EXPRESIONES

23

OPERADORES
Los operadores especifican el tipo de clculo que se quiere desarrollar en los elementos de una
expresin. Los operadores se pueden clasificar en las siguientes categoras:
Aritmticos
Relacionales
Lgicos
Alfanumricos
Asociativos

OPERADORES ARITMTICOS
6

Los operadores aritmticos son usados para realizar clculos matemticos. Algunos de los operadores
aritmticos se listan a continuacin:
Operador Aritmtico Descripcin Ejemplo
Adicin (+) Suma los operandos. x = y + z
Resta (-) Resta el operando derecho del operando
izquierdo.

x = y z
Multiplicacin (*) Multiplica los operandos. x = y * z
Divisin Real (/) Divide el operando izquierdo por el operando
derecho y da un resultado real.
x = y / z
Mdulo o Residuo (%) Calcula el residuo de una divisin entera. x = y % z
Divisin entera (\) Divide el operando izquierdo por el operando
derecho. Los valores deben ser enteros y da un
resultado tambin entero.

x = y \ z
Potencia (^) Eleva un nmero x a una potencia y s = x ^ y
Raz cuadrada (raiz2) Obtiene la raz cuadrada de un nmero x = raiz2(5)


EJEMPLOS:
Supngase que unas variables a y b tienen valores 10 y 3,
respectivamente. Se muestran a continuacin varias expresiones
aritmticas en las que aparecen estas variables, acompaadas del
resultado.



6
Extracto tomado de Fundamentals of Programming. NIIT.
24

Expresin Valor
a + b 13
a b 7
a * b 30
a / b 3.33
a \ b 3
a % b 1
Para resolver una expresin aritmtica se deben seguir las siguientes reglas:
Primero se resuelven las expresiones que se encuentran entre parntesis.
Todas las sub expresiones entre parntesis se evalan de adentro hacia afuera, desde el
parntesis ms interno hasta ir desaparecindolos todos. Se deben seguir ciertas reglas de
prioridad que veremos ms adelante.

OPERADORES RELACIONALES
Usted puede comparar dos operandos utilizando operadores relacionales. El resultado es un valor de
verdad ya sea Cierto o Falso.
Tenemos seis operadores relacionales. La siguiente tabla muestra dichos operadores:
Operador
Relacional
Descripcin Ejemplo Explicacin
= Compara los dos operandos y
evala si son iguales
x = y Devuelve verdadero si los valores
son iguales y falso si no lo son
<> Compara los dos operandos y
evala si son diferentes
x <> y Devuelve verdadero si los valores no
son iguales y falso en caso contrario
> Evala si el operando izquierdo
es mayor que el derecho
x > y Devuelve verdadero si el primero es
mayor que el segundo y falso en
caso contrario
< Evala si el operando izquierdo
es menor que el derecho
x < y Devuelve verdadero si el primero es
menor que el segundo y falso en
caso contrario
>= Evala si el operando izquierdo
es mayor o igual que el
derecho
x >= y Devuelve verdadero si el primero es
mayor o es igual que el segundo y
falso en caso contrario
<= Evala si el operando izquierdo
es menor o igual que el
derecho
x <= y Devuelve verdadero si el primero es
menor o es igual que el segundo y
falso en caso contrario

25


EJEMPLO
Supongamos que i,j y k son variables enteras con valores asignados 2,3 y 4
respectivamente. A continuacin se presentan varias expresiones lgicas en las
que aparecen estas variables.

Expresin Resultado
i <= j Verdadero
(i + j)>k Verdadero
k <> 4 Falso
(j+k) > (i+5) Falso
OPERADORES LGICOS O BOOLEANOS
Los operadores lgicos son usados para combinar el resultado de expresiones conteniendo operadores
relacionales.
Existen tres operadores lgicos, que se describen en la siguiente tabla:
Operador Lgico Descripcin Ejemplo
AND Operador lgico AND x < 7 AND y > 100
OR Operador lgico OR x < 7 OR y > 100
NOT Operador Lgico de negacin NOT x = 10


JERARQUA DE OPERADORES
El resultado de evaluar una expresin aritmtica es un nmero. Ahora bien, cuando aparecen dos o
ms expresiones aritmticas, Cmo saber qu operaciones hay que realizar primero?
Por ejemplo, si tenemos una expresin 3 + 7 * 4. Cul es la respuesta correcta?.
Veamos:
1) 3 + 7 = 10
10 * 4 = 40. Si hacemos primero la suma el resultado ser 40.
2) 7 * 4 = 28
3) 3 + 28 = 31. Si hacemos el producto y el resultado lo sumamos con el primer trmino, la
respuesta es 31.
Sabemos que la matemtica es exacta, entonces Si hay una nica respuesta, cmo la obtenemos?.
Veamos otro ejemplo.
Sea la expresin: X2 + 1 / 2
26

Observe que esta expresin es totalmente diferente a esta otra (X2+1)/2, por lo que es importante
codificar las expresiones aritmticas correctamente. Los parntesis nos indican un orden para realizar
las operaciones. Pero no siempre nos darn los parntesis, por lo se cre la jerarqua de operadores.
La jerarqua vara de lenguaje a lenguaje, por lo que es importante que cuando usted vaya a codificar
en algn lenguaje, lo primero que debe revisar es la jerarqua que corresponde a ese lenguaje.
Operador Nivel de prioridad
( ) Mayor
signo
Potencia
Producto y divisin ( * , / )
Div ( \ ) , Mod
Suma y resta ( + , - )
Concatenacin
Relacionales
Negacin Menor
And
Or

REGLAS DE PRIORIDAD
Para resolver una expresin se deben seguir las siguientes reglas:
Primero se resuelven las expresiones que se encuentran entre parntesis.
Se procede aplicando la jerarqua de operadores.
Al evaluar una expresin, si hay dos operadores con la misma jerarqua, se procede a evaluar
de izquierda a derecha.
Si hay expresiones relacionales, se resuelven primero parntesis, luego se encuentran los
valores de verdad de las expresiones relacionales y por ltimo se aplica jerarqua de
operadores lgicos. En caso de haber iguales, proceder de izquierda a derecha.
El orden correcto a seguir, es primero resolver operadores aritmticos, luego los relacionales y
por ltimo los lgicos.
Si solo hay operadores aritmticos, el resultado es un nmero. Si hay operadores aritmticos y
relacionales, el resultado es un valor booleano.


Esta ser la jerarqua que adoptaremos para resolver
nuestros ejercicios de aqu en adelante.
27



ILUSTRACIONES
EJEMPLOS DE OPERADORES ARITMTICOS.
1. Se tiene la siguiente expresin aritmtica:
X = 3 + 4 * 6 / 3 * 2 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2
Cul sera el valor que al final quedar almacenado en la variable X?

SOLUCIN
Lo primero que hara el computador es recorrer la expresin buscando parntesis, luego expresiones
de potencia (o sea el smbolo ^ para resolverlo de primero debido a que este es el operador de mayor
peso en la jerarqua). Como no encuentra ninguno, entonces vuelve al principio de la expresin y
comienza a buscar (y resolver a medida que los encuentre) multiplicaciones y divisiones.
X = 3 + 4 * 6 / 3 * 2 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2
X = 3 + 24 / 3 * 2 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2
X = 3 + 8 * 2 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2
X = 3 + 16 6 * 8 / 3 * 4 + 5 * 3 / 2 * 2
X = 3 + 16 48 / 3 * 4 + 5 * 3 / 2 * 2
X = 3 + 16 16 * 4 + 5 * 3 / 2 * 2
X = 3 + 16 64 + 5 * 3 / 2 * 2
X = 3 + 16 64 + 15 / 2 * 2
X = 3 + 16 - 64 + 7.5 * 2
X = 3 + 16 64 + 15
X = 19 64 + 15
X = -45 + 15
X = -30 Respuesta.
Con lo cual hayamos que, luego de resuelta la expresin, el valor que quedar almacenado en la
variable X ser el valor 30. Es muy importante que cuando tenga que resolver una expresin de
estas, lo haga paso a paso, sin apresuramientos y ver como obtiene, sin mayores tropiezos, el mismo
resultado que le dara al computador.
2. Se tiene la siguiente expresin aritmtica:
A = 5 * 2 / 2 * 2 + 6 * 4 / 2 * 2 4 * 6 * 2 / 2 * 3 / 2
SOLUCIN
Como en esta expresin no existen parntesis, operaciones de potenciacin ni signo, entonces se
procede a resolver el siguiente nivel de la jerarqua, de izquierda a derecha (multiplicaciones y
divisiones)
A = 5 * 2 / 2 * 2 + 6 * 4 / 2 * 2 4 * 6 * 2 / 2 * 3 / 2
A = 10 / 2 * 2 + 6 * 4 / 2 * 2 4 * 6 * 2 / 2 * 3 / 2
28

A = 5 * 2 + 6 * 4 / 2 * 2 4 * 6 * 2 / 2 * 3 / 2
A = 10 + 6 * 4 / 2 * 2 4 * 6 * 2 / 2 * 3 / 2
A = 10 + 24 / 2 * 2 4 * 6 * 2 / 2 * 3 / 2
A = 10 + 12 * 2 4 * 6 * 2 / 2 * 3 / 2
A = 10 + 24 4 * 6 * 2 / 2 * 3 / 2
A = 10 + 24 24 * 2 / 2 * 3 / 2
A = 10 + 24 48 / 2 * 3 / 2
A = 10 + 24 24 * 3 / 2
A = 10 + 24 72 / 2
A = 10 + 24 36
A = 10 + 24 36
A = 34 36
A = -2 Respuesta.



EJEMPLOS DE EXPRESIONES CON OPERADORES
RELACIONALES:
1. Resolver la siguiente expresin, para A=5 y B=16.

(A ^ 2) > (B * 2)

(A ^ 2) > (B * 2) El primer paso es sustituir los valores de A y B
(5 ^ 2) > (16 * 2) Efectuamos los parntesis, primero el de ms a la izquierda
25 > (16 * 2) Resolvemos el parntesis de la derecha
25 > 32 Se evala la expresin relacional y el resultado es
Falso Respuesta
2. Resolver la siguiente expresin, donde X=6 y B = 7.
(X ^ 3 \ B) <= (X * 5 + B ^ 3 / 4)
(X ^ 3 \ B) <= (X * 5 + B ^ 3 / 4) Sustituir los valores de X y B
(6 ^ 3 \ 7) <= (6 * 5 + 7 ^ 3 / 4) Evaluando potencia en parntesis de ms a la izquierda
(216 \ 7) <= (6 * 5 + 7 ^ 3 / 4) Resolviendo parntesis de ms a la izquierda, hacemos
divisin entera
30 <= (6 * 5 + 7 ^ 3 / 4) Procediendo con el parntesis de la derecha, potencia tiene
mayor prioridad
30 <= (6 * 5 +343 / 4) Producto y divisin real tienen misma prioridad, pero
producto est ms a la izquierda
29

30 <= (30 +343 / 4) Luego sigue la divisin real
30 <= (30 +85.75) Efectuamos la suma
30 <= 115.75 Ya eliminamos los parntesis, procedemos a evaluar el
operador relacional
Verdadero Respuesta

3. Resolver la siguiente expresin:
NOT((15 > = 7 ^ 2) and ( (43 8 * 2) mod 4 < > 3 * 2 div 2 ) or 3 > = 3 )
NOT((15 >= 7 ^ 2) and ( (43 8 * 2) mod 4 <
> 3 * 2 div 2) or 3 >= 3)

Resolviendo parntesis de adentro hacia afuera y
el de ms a la izquierda. Potencia tiene mayor
prioridad.
Not ((15 >= 49) and ((43 8 * 2) mod 4 < > 3
* 2 div 2 ) or 3 > = 3 )

Pasamos al parntesis de la derecha pues ya no
hay operadores aritmticos en el primer
parntesis
Not ((15>=49) and ((43 16) mod 4 < > 3 * 2
div 2 ) or 3 > = 3 )
Efectuamos la resta para quitar el parntesis
Not ((15>=49) and (27 mod 4 <> 3 * 2 div 2 )
or 3 > = 3 )
Seguimos con el producto
Not ((15>=49) and (27 mod 4 <> 6 div 2 ) or 3
> = 3 )
Div y mod tienen igual prioridad, el de ms a la
izquierda es mod.
Not ((15>=49) and (3 <> 6 div 2 ) or 3 > = 3 ) Luego efectuamos el div
Not ((15>=49) and (3 <> 3 ) or 3 > = 3 ) Ya no hay operadores aritmticos, seguimos con
los relacionales, el parntesis de ms a la
izquierda
Not (Falso and (3 <> 3 ) or 3 > = 3 ) Luego con el de la derecha
Not (Falso and Falso or 3 > = 3 ) Quitamos el ltimo operador relacional
Not (Falso and Falso or Verdadero) And tiene mayor prioridad que Or
Not(Falso or Verdadero) Efectuamos Or
Not(Verdadero) Evaluamos Negacin
False Respuesta



30



Las frmulas matemticas se deben escribir en formato lineal. Esto obliga al uso frecuente de
parntesis que indiquen el orden de evaluacin correcto de las operaciones. Linealizar una expresin
significa, convertir una expresin algebraica en expresin aritmtica o algortmica.



EJEMPLOS:
Linealizar las siguientes expresiones: (no se olvide que linealizar significa
escribir una expresin algebraica en una sola lnea).


1-




Sabemos que la divisin real se representa por / y que usamos parntesis para que se realicen las
operaciones en el orden correcto.
Respuesta: X = ( a + b / c ) / ( a / b + c )

2-

Recuerde que los parntesis ayudan a separar las expresiones para que se evalen en el orden
correcto, debemos poner los que sean necesarios pero tratando de que no vayan ms de la cuenta.
MINI CONTROL DE LECTURA



INVESTIGACIN INDIVIDUAL.

1. Qu son operadores alfanumricos. Escriba ejemplos.
2. Cules son los operadores asociativos y cules se usan en programacin.



ESCRITURA DE FRMULAS:

31



EJERCICIO
PARTE I. Resuelva el siguiente crucigrama.

HORIZONTALES
1. Estudio crtico del razonamiento y tiene un valor terico y prctico.
3. Tipo de datos que contiene caracteres especiales, letras y nmeros.
5. Informacin caracterstica de una entidad que describe objetos con los que opera un programa
7. Tipos de datos que ocupan solamente una casilla de memoria.
8. Conectiva que es falsa solamente cuando dos premisas son falsas

VERTICALES
2. Proposicin afirmada que se basa en otras proposiciones o premisas.
3. Enunciados que no contienen otro enunciado como parte componente.
4. Palabra creada para nombrar los objetos y dems elementos que necesitamos declarar en un
programa.
6. Tipo de datos verdadero o falso
9. Operador de negacin

1 2 3 4
5 6
7




8 9






PARTE II.
En la siguiente sopa de letras, encontrar 11 trminos estudiados en este tema. Identifquelas y
encirrelas.
32

A O P E R A D O R E S T
S C O N T A D O R P S L
I Q U I P O E P D S E I
G A T M O D A E R N N
N S H C U F M R P G O E
A Z I G D L N A I J I A
C C O N S T A N T E S L
I Y L J A P S D I V E I
O E M E O T O O L R Z
N R F O R L I S L R P A
I T B T T J O E I A X R
O U I R S U S D J M E A



EJERCICIOS DE PRCTICA


PARTE I. EJERCICIOS DE TABLAS DE VERDAD
Si A y B son enunciados verdaderos y X e Y son falsos, cul es el valor de verdad de los siguientes
enunciados:
1. ~(A v X) 2. ~ A v ~ X
3. ~ B ^ ~ Y 4. A v ( X ^ Y )
5. (A ^ X) v (B ^Y) 6. A ^ [X v (B ^ y)]
7. A v [X ^ (B v Y)] 8. X v [A ^ (Y v B)]
9. [(A^X) v ~B] ^ ~ [(A^ X) v ~B] 10. [(X^A) v ~Y] v ~ [ (X^A) v ~y]

PARTE II. EJERCICIOS SOBRE OPERADORES Y SU JERARQUA

Evale las siguientes expresiones y muestre el resultado.
1. Cul es el valor de la expresin 4 * 7 / 2 + 8 * 4 mod 3 - 5 ?
a) -4
b) 11
c) 14

2. Not(S > 3 AND S <=10) OR (T >= 100 AND T < 200) , Para S = 5 y T = 70?
a) Falso
b) Verdadero
33

3. Cul es el resultado de la expresin :
(c + 90) = 45 * 3 ^ 2 or 47 - c * b > 1000 para c = 2 y b = 3?
a) Falso
b) Verdadero

4. Al convertir la siguiente expresin matemtica en una expresin algortmica, escriba el
resultado obtenido. (Linealizar).


5. Resolver las siguientes expresiones, paso a paso, aplicando jerarqua de operadores. Subraye
el paso efectuado cada vez.
a) 4 + 1 * 5 ^ 2 1
b) 193 MOD 19 DIV 3 * 127
c) (37 + 15 MOD 4)/SQR(5)
d) TRUNC(3.2 * 4) DIV 3
e) 9 / 3 + 4 ^ 2 5 * 1 + 9 / -2 + 3
f) Not((8>9 and 5>5) or (not(4<2 and 5>8)))
g) 4/2*3/6+6/2/1/5^2/4*2
h) TRUNC(83.7)+ROUND(83.7) (Investigue)
i) ((12+3) DIV 2)/(8-(5-1))
j) x>3 and (y=4 or x+y <=z) Para x=1, y=4 y z=10.
k) 17 / 2 + 3 ^ 2 ^ 2 2 * 2 / 2
l) 3 * A 4 * B / A ^ 2 Para A = 5, B = 2
m) ((( B + C ) / 2 * A + 10 ) * 3 * B ) 6. Si A = 5, B = 3, C =2

Represente las siguientes expresiones algebraicas en expresiones algortmicas:
n) V= 1 r
2
h
3
o) X = 6(x + y)
p)




q)



Si x = 1, y = 4, z = 10, pi = 3.1416 y e = 2.7183, evaluar las expresiones:
r) 3 * x + 2 * y 1 / 2 * z
s) ( y ^ ( 2 * y ) 6 * ( z / 10 ) ) / 2
t) not ( 2 * x = y / 2 or ( pi e ) * z > y ) = not y / 2 = 2 * x and not y < ( pi e ) * z
34

Escriba expresiones booleanas que determinen si: (Investigue si es necesario)
a) El valor de una variable entera i se encuentra en el rango de 1 a 100, ambos inclusive.
b) Cualquiera de los valores de dos variables enteras j y k, una es un mltiplo de la otra

c) Usando cualesquiera variables adicionales necesarias, escriba una secuencia de sentencias de
asignacin que permute los valores de dos variables reales x e y.
d) Si X, Y y Z son variables enteras, escriba sentencias de asignacin para asignar su suma,
producto y promedio a variables llamadas de la misma forma.




TERMINOLOGA APLICADA

Enunciado compuesto: es el que se compone de varios enunciados simples.
Enunciado Simple: es el que no contiene otro enunciado como parte componente.
Expresiones: son combinaciones de constantes, variables, smbolos de operacin, parntesis y
nombres de funciones especiales.
Identificadores: son palabras creadas por los programadores para dar nombre a los objetos y
dems elementos que necesitamos declarar en un programa: variables, constantes, tipos,
estructuras de datos, archivos, subprogramas, etc.
Lgica: es la capacidad de pensar racionalmente acerca de soluciones alternativas y los
resultados de aplicarlas, y por lo tanto, de hacer elecciones inteligentes.
Premisas: son proposiciones afirmadas como fundamento o razones para aceptar una
conclusin.
Tipos de datos simples: son los que ocupan slo una casilla de memoria, por lo tanto una
variable simple hace referencia a un nico valor a la vez.




BIBLIOGRAFA
Pascal. Introduccin. Jim Welsh y John Elder. Editorial Prentice Hall. Mxico.
Metodologa de la Programacin. Diagramas de Flujo, algoritmos y programacin. Luis Joyanes
Aguilar. Editorial Mc Graw Hill. Mxico.
Fundamentos de programacin. Algoritmos y estructuras de datos. Luis Joyanes Aguilar.
Editorial Mc Graw Hill. Mxico.
Introduccin a la Programacin. Ramn A. Mata-Toledo y Pauline K. Cushman. Editorial Mc
Graw Hill. Mxico.


35

1.3 ALGORITMOS Y DIAGRAMAS DE FLUJO
1.3.1 Introduccin a los algoritmos.
CONCEPTO DE ALGORITMO:
Es un conjunto de pasos secuenciales y ordenados que permiten lograr un objetivo. Que sean pasos
secuenciales significa que deben ser ejecutados uno despus de otro y que sean pasos ordenados
quiere decir que deben llevar un orden casi obligatorio (u obligatorio en la mayora de los casos).
Como puede notar el algoritmo permite lograr un objetivo. O sea que la clave para hacer buenos
algoritmos y llegar a la solucin de un problema es tener claro el objetivo y no perderlo nunca de
vista.
7

Debe ser independiente de la sintaxis de un lenguaje de programacin puesto que es la concrecin de
un plan y un medio para comunicar ideas entre personas. Lo que s es importante notar, es que de un
algoritmo sale el cdigo en un lenguaje de programacin. Por cada lnea del algoritmo se corresponden
una o varias lneas de cdigo en un lenguaje de programacin.
8






METODOLOGA A SEGUIR:
1. Establecer el problema.
2. Analizar el problema. Para ello nos hacemos las siguientes preguntas:
Qu informacin tenemos?
Qu necesitamos conocer?
Qu queremos obtener?
3. Disear el algoritmo para su solucin.
4. Codificar.



7
Tomado de webdelprofesor.ula.ve/ingenieria/eladio/Material/UNIDAD_III.pdf
8
Tomado de http://www.cyta.com.ar/biblioteca/bddoc/bdlibros/construccion_programas/programar.pdf
Partes de un
Algoritmo
Datos de
Entrada
Proceso
Datos de
salida
36

CARACTERSTICAS QUE DEBEN DE CUMPLIR LOS ALGORITMOS OBLIGATORIAMENTE:
Un algoritmo debe resolver el problema para el que fue formulado.
Lgicamente no sirve un algoritmo que no resuelve ese problema. En el caso de los programadores, a
veces crean algoritmos que resuelven problemas diferentes al planteado. Los algoritmos deben
mostrar claramente cules son los datos iniciales y cules son los resultados.
Los algoritmos son independientes del computador. Los algoritmos se escriben para poder ser
utilizados en cualquier mquina.
Los algoritmos deben de ser precisos. Los resultados de los clculos deben de ser exactos, de
manera rigurosa. No es vlido un algoritmo que slo aproxime la solucin. Debe constar de pasos
claros, precisos y no ambiguos.
Los algoritmos deben de ser finitos. Deben alcanzar la solucin correcta en un tiempo finito. No
es un algoritmo vlido aquel que produce situaciones en las que el algoritmo no termina.
Los algoritmos deben de poder repetirse. Deben de permitir su ejecucin las veces que sea
necesario. No son vlidos los que tras ejecutarse una vez, ya no pueden volver a hacerlo por la razn
que sea. Debe tener la capacidad de resolver el problema aun cuando cambiemos los datos de
entrada.

CARACTERSTICAS ACONSEJABLES PARA LOS ALGORITMOS
9

Validez. Un algoritmo es vlido si carece de errores. Un algoritmo puede resolver el problema para
el que se plante y sin embargo no ser vlido debido a que posee errores.
Eficiencia. Un algoritmo es eficiente si obtiene la solucin al problema en poco tiempo. No lo es si es
lento en obtener el resultado.
ptimo. Un algoritmo es ptimo si es el ms eficiente posible y no contiene errores. La bsqueda de
este algoritmo es el objetivo prioritario del programador. No siempre podemos garantizar que el
algoritmo hallado es el ptimo, a veces s.

Aunque no existe una nica forma de representar un algoritmo, la estructura general de ste debera
ser como la siguiente:
Algoritmo <nombre_del_algoritmo>
Inicio
definicin de constantes
declaracin de variables
Sentencia 1
Sentencia 2
.
.
.
Sentencia n
Fin

9
Tomado de www.conocimientosweb.net/.../article1382.html
ESTRUCTURA GENERAL DE UN ALGORITMO
37

REPRESENTACIN DE ENTRADAS Y SALIDAS EN UN ALGORITMO
10

ENTRADAS
Entradas son los datos proporcionados al computador para procesar y generar la salida. Para que los
resultados sean correctos, se tienen que dar los datos de entrada correctos. La entrada se puede
representar de varias formas. Flujogramas y pseudocdigo tienen diferentes mtodos de representar la
instruccin de aceptar una entrada. Algunos ejemplos de representacin de entradas son los
siguientes:








En un Flujograma, la instruccin es representada usando el smbolo llamado Entrada de
datos. Existe un smbolo para entrada por tarjeta perforada que ya est en desuso por haber
desaparecido las mismas.
Los smbolos utilizados en flujogramas para representar las entradas son los siguientes:
En un pseudocdigo, la instruccin se da a travs de teclado. Existen varias formas de
representar el pseudocdigo. Por ejemplo, para leer la edad de un estudiante en una variable
llamada edad, se puede hacer de las siguientes formas:








SALIDAS
Un computador requiere entradas para generar las salidas. Despus de aceptar la entrada, el
computador la procesa y luego despliega el resultado. Este resultado es llamado la salida.

10
Extracto tomado de Fundamentals of Programming. NIIT.



Entrada de datos



Entrada manual



Entrada por tarjeta perforada
Begin
.
Read (edad)
Accept edad
.
End
38

REPRESENTACIN DE LA SALIDA:
Al igual que las entradas, hay diferentes formas de representar la salida.
En un Flujograma, se utiliza el smbolo desplegar.
Los smbolos utilizados en flujogramas para representar las salidas son los siguientes:



Salida de datos



Salida a papel (documento)



Salida a pantalla

En pseudocdigo, la instruccin desplegar salida es representada usando salida a pantalla o a
papel.

Begin

Display Digite el valor del area:
Accept edad

Print (area)
Display area
End

MINI CONTROL DE LECTURA


INVESTIGUE:
Ejemplos de dispositivos de entrada
Ejemplos de dispositivos de salida

Salida a papel
Salida a pantalla
39


1. EJERCICIO DE APLICACIN
A continuacin se le presenta una lista de dispositivos de E/S. Clasifquelos en el
cuadro que se muestra abajo, segn corresponde.
Speakers Teclado VDUs Mouse
Touch Screen Lpiz ptico Joystick

DISPOSITIVOS DE ENTRADA DISPOSITIVOS DE SALIDA






1.3.2 REPRESENTACIN DE ALGORITMOS


INVESTIGUE:
1. Diferencia entre algoritmo y programa.
2. En qu consiste la documentacin de los algoritmos, importancia
de la documentacin y los lineamientos para documentar un
algoritmo. Elabore un reporte en hojas de papel bond tamao
carta.

COMENTARIOS EN UN ALGORITMO
Los comentarios en un algoritmo se usan como una referencia para explicar la lgica del mismo. Es
una forma de documentar el proceso, estos no tienen efecto en el cdigo del programa (el computador
los ignora), sino que sirven para que el programador comprenda mejor lo que se est representando
en el algoritmo. Los comentarios se pueden representar ya sea en una sola lnea o en varias lneas.
Para representar comentarios en una sola lnea, se utilizan dos barras:
//Este es un comentario.
Para representar un comentario en varias lneas se utiliza la siguiente simbologa:
/* Este
es un
comentario
en varias
Lneas */

40

NOTACIONES PARA EL DISEO DE ALGORITMOS
Los algoritmos pueden ser representados en diferentes formas, entre las cuales tenemos:


Representacin en lenguaje narrado
Es la serie de pasos que seguimos en nuestra vida diaria para realizar las diferentes tareas y
actividades comunes, y que los hacemos casi sin darnos cuenta de que estamos siguiendo una
metodologa para resolverlos. En otras palabras hacemos algoritmos narrados cuando enumeramos
cierta informacin en una secuencia de pasos en forma ordenada.


EJEMPLOS:
Disear algoritmos narrados para los siguientes casos:

1) Cambiar una llanta a un carro.
Inicio.
Traer gato.
Levantar el carro con el gato.
Aflojar tornillos de las llantas.
Sacar los tornillos de las llantas.
Quitar la llanta.
Poner la llanta de repuesto.
Poner los tornillos.
Apretar los tornillos.
Bajar el gato.
Fin.
Lenguaje Narrado
Flujogramas
Diagramas Nassi-
Schneiderman
Tablas de decisin
Pseudocdigo
41

2) Determinar el mayor de tres nmeros enteros.

Pasos del algoritmo:
Inicio
1.- Comparar el primero y el segundo entero, deduciendo cul es el mayor.
2.- Comparar el mayor anterior con el tercero y deducir cul es el mayor. Este ser el resultado.
Fin
Los pasos anteriores se pueden descomponer en otros pasos ms simples, lo que se denomina
refinamiento del algoritmo.
1. Inicio
2.- Obtener el primer nmero (entrada), denominado NUM1.
3.- Obtener el segundo nmero (entrada), denominado NUM2.
4.- Comparar NUM1 con NUM2 y seleccionar el mayor; si los dos enteros son iguales, seleccionar
NUM1. Llamar a este nmero MAYOR.
5.- Obtener el tercer nmero (entrada), y se denomina NUM3.
6.- Comparar MAYOR con NUM3 y seleccionar el mayor; si los dos enteros son iguales, seleccionar el
MAYOR. Denominar a este nmero MAYOR.
7.- Presentar el valor MAYOR (salida).
8.- Fin.
3) Receta para hacer huevos picados
Inicio
1. Se coloca aceite o margarina en la cacerola
2. Se pica cebolla, chile y tomate
3. Se ponen a frer, con un poco de sal
4. Cuando ya estn fritos, se echan los huevos
5. Se bate y se deja cocer
6. Se sirve caliente en un plato
Fin

EJERCICIOS PRCTICOS

Elabore un algoritmo narrado para los casos siguientes:

1. Cambiar un vidrio roto de una ventana
2. Preparar una taza de te
3. Hacer palomitas de maz
4. Poner la mesa para la comida
5. Ir al cine

42

Representacin en pseudocdigo
PSEUDO: Falso, imitacin
CODIGO: instrucciones escritas en un lenguaje de programacin
El pseudocdigo no es propiamente un cdigo sino un tipo de descripcin que incluye un poco de
lenguaje natural y de instrucciones estandarizadas para los lenguajes de programacin. Podemos decir
que es un lenguaje intermedio entre el lenguaje natural (nuestra forma normal de expresarnos) y
cualquier lenguaje de programacin especfico, como por ejemplo C, Fortran, Pascal, etc.
Es una mezcla de lenguaje natural, smbolos, trminos y otras caractersticas comnmente utilizadas
en los lenguajes de programacin. Adems es una tcnica para diseo de programas que permite
definir las estructuras de datos, las operaciones que se aplicarn a los datos y la lgica que tendr el
programa de computadora para solucionar un determinado problema.
No existe una notacin formal o estndar de pseudocdigo, sino que, cada programador puede utilizar
la suya propia.
Usted puede detectar errores cuando escribe pseudocdigo porque cada paso del pseudocdigo puede
ser revisado durante la creacin.
Se concibi para superar las dos principales desventajas de los flujogramas: requiere mucho trabajo
para elaborarlo y que no se puede modificar tan fcilmente sin tener que hacer un nuevo redibujo.
VENTAJAS DEL PSEUDOCDIGO.
Es ms fcil y rpido de elaborar en comparacin con el Flujograma.
Es ms fcil detectar errores y hacer cambios.
No necesita ser reescrito si se hacen cambios, ya que cada paso es independiente y puede ser
modificado sin alterar los otros pasos.
Es fcil su traduccin a cualquier lenguaje de programacin. Esto no se logra con los
flujogramas y tablas de decisin, ya que el formato usado por el pseudocdigo es similar a un
programa. Ambos contienen un grupo de instrucciones secuenciales usando un grupo de
instrucciones definidas.
Es un lenguaje algortmico similar al espaol u otro idioma
Es una imitacin de las instrucciones reales para una computadora
Permite representar en forma fcil operaciones repetitivas complejas.
Al seguir las reglas se pueden observar claramente los niveles que tiene cada operacin.

DESVENTAJAS DEL PSEUDOCDIGO.
No provee una representacin grfica del algoritmo, por lo que puede ser difcil entender la
lgica compleja de un pseudocdigo.
Si el pseudocdigo contiene demasiadas condiciones anidadas puede ser difcil de entender.

El pseudocdigo puede ser diseado en espaol o en ingls. Cuando se disea en ingls, se tiene un
grupo de instrucciones ms parecidas a un lenguaje de programacin.
Entre las instrucciones utilizadas en el pseudocdigo ingls tenemos las siguientes:
Begin . End/ Start. Stop. Estas instrucciones son usadas para iniciar y finalizar.
43

Accept, read, input: Estas instrucciones son usadas para obtener una entrada de un usuario.
Display, write, print: Estas son usadas para presentar un resultado o una salida.
If else: Son usadas para hacer decisiones.



EJEMPLO
Elaborar el pseudocdigo para encontrar la superficie de un crculo
para un radio cualquiera.
Begin
Var
Pi, S, R : Real
Const
Pi 3.1416
read ( R )
S Pi * R ^ 2
print ( S )
End

Las fases de un algoritmo pseudocodificado se utilizarn para resolver problemas en el siguiente tema.

MINI CONTROL DE LECTURA


INVESTIGACIN INDIVIDUAL:
Cules son los smbolos utilizados en los diagramas de flujo y la
explicacin de su uso.
Cules son las reglas para la construccin de diagramas de flujo?.
El ANSI (American National Standars Institute), recomienda un nmero
de reglas que necesitan seguirse para construir los flujogramas. Compare
Fase de inicio
Declaracin de variables o constantes
Inicializacin de variables o constantes
(Asignacin)
Entradas
Clculos
Salidas
Fases de un Algoritmo Pseudocodificado
Fase de inicio
Declaracin de variables/Constantes
Inicializacin de variables/constantes
Fase de lectura
Fase de Clculos
Fase de Salida
Fase de Fin
44

ambas reglas y establezca reglas generales.
Cules son las ventajas y desventajas de los flujogramas?.
Elabore un reporte en su cuaderno con lo investigado.




PARA ANALIZAR
Indique si las siguientes afirmaciones son verdaderas o falsas.
Escriba V o F.

Afirmacin V F
1. La documentacin slo sirve para resolver problemas en otros procesos similares.
2. Los comentarios sirven para mejorar la legibilidad de los programas y ayudan a
entender mejor el pseudocdigo

3. Estandarizar la documentacin nos da la ventaja de que ayuda a determinar si todos
los requerimientos han sido encontrados o no.

4. El pseudocdigo es una mezcla de lenguaje natural, smbolos, trminos y otras
caractersticas comnmente utilizadas en los lenguajes de programacin.

5. Display, Read e Input son usadas para introducir datos de entrada en el
pseudocdigo




Continuando con el estudio de algoritmos, estudiaremos la representacin en Diagramas de Flujo o
llamados tambin Flujogramas.
FLUJOGRAMAS
Son la representacin grfica de la secuencia de actividades de un proceso en los algoritmos. Consiste
en smbolos para representar los pasos de un algoritmo. Cada smbolo tiene un significado que
representa una accin a ser seguida, correspondiente a un paso del algoritmo. Cada smbolo se
conecta a travs de flechas, denominadas lneas de flujo, que indican el orden en que los pasos deben
ser ejecutados.
Puesto que un Flujograma es la representacin grfica de un algoritmo, tambin debe tener: ENTRADA
PROCESO SALIDA.
Para comprender mejor los diagramas de flujo, se tiene que respetar las reglas de construccin. Al
realizar una prueba manual, se debe tomar un conjunto de datos significativos de entrada y comenzar
a recorrer el Flujograma de arriba hacia abajo y de izquierda a derecha; segn sea la forma
representada, para ver cmo se comporta el Flujograma y si los resultados obtenidos son correctos y
coherentes.
DISEO DE FLUJOGRAMAS
45

EJERCICIOS DE APLICACIN

EJEMPLO 1.
En ejemplos anteriores, diseamos un pseudocdigo para encontrar la
superficie de un crculo para un radio cualquiera.
El Flujograma que representa a dicho ejemplo es el siguiente:
























EJEMPLO 2.
Leer dos nmeros y calcular el producto de dichos nmeros, desplegar el resultado.


BEGIN
Var PI, S, R:REAL
Const PI 3.1416
Read R
S PI * R ^ 2
END
S
BEGIN
Var N1,N2,Result: INTEGER
Read N1,N2
Result N1 * N2
Result
END
46



EJERCICIOS PRCTICOS

1. Dibuje un Flujograma a partir del siguiente pseudocdigo:
Begin
Var sueldo, nuesueldo,aum: real
read (sueldo)
aum sueldo * 0.10
nuesueldo sueldo + aum
print (nuesueldo)
End

2. Dado el siguiente pseudocdigo, corrija los errores que encuentre. Luego elabore el respectivo
Flujograma.
Calcular el salario neto de un trabajador en funcin del nmero de horas trabajadas, precio de la
hora de trabajo y descuentos fijos al sueldo bruto en concepto de impuestos (20%)
Begin
Var horas: entero
precio,sbruto, impues, sneto:real
read(horas, precio)
sbruto horas * precio
impues sbruto * 0.20
sneto sbruto - impues
print (sneto)
End

3. Indique cules de los siguientes diseos son vlidos segn las reglas de construccin de
flujogramas y si no son vlidos, analice porqu.







Es vlido?. Si __ No __
Es vlido?. Si __ No __
47



Es vlido?. Si __ No __



4. Traslade el nmero de la respuesta correcta al espacio de en medio segn corresponda.
1. Algoritmo Son la representacin grfica de la secuencia de
actividades de un proceso en los algoritmos
2. Flujogramas Entrada, Proceso, Salida
3. Pseudocdigo Validez, Eficiencia, Preciso, finito
4. Caractersticas del algoritmo Es un conjunto de pasos secuenciales y ordenados que
permiten lograr un objetivo
5. Elementos del algoritmo Es una mezcla de lenguaje natural, smbolos, trminos
y otras caractersticas comnmente utilizadas en los
lenguajes de programacin

5. Elabore pseudocdigo y Flujograma para resolver el problema de hallar la suma, producto y media
aritmtica de tres nmeros.

TABLAS DE DECISIN
11

Representan algoritmos que tienen como propsito representar decisiones complejas. Los flujogramas
que representan algoritmos complejos, tienen una gran cantidad de ramificaciones y son difciles de
crear y de entender. En tales casos, las tablas de decisin se usan como una alternativa para
simplificar las tareas de decisin que estn incluidas dentro de un proceso.

11
Tomado de Fundamentos de Programacin. Algoritmos y Estructuras de datos. 2 edicin. Luis Joyanes Aguilar.

INVESTIGACIN INDIVIDUAL.
Cules son las ventajas de las tablas de decisin?
Elabore ms ejemplos del uso de tablas de decisin.
Cul es la simbologa que se usa para representar los diagramas
Nassi Schneiderman?. Elabore el resumen en su cuaderno.
48

Esta herramienta sencilla se basa en la construccin de una tabla en la que se recojan las condiciones
que se pueden dar en el problema y las acciones que se deben tomar cuando se cumplan las
condiciones.
Una tabla de decisin se representa en un cuadro de cuatro bloques. A la izquierda de la tabla se tiene
la matriz y a la derecha las entradas. La matriz de condiciones recoge las condiciones de todo o parte
del problema; dicho en otras palabras, las preguntas que deben probarse para alcanzar una decisin.
La matriz de acciones refleja todas o parte de las acciones del problema a realizar o las acciones que
han de emprenderse cuando se presenta un conjunto dado de condiciones.


La entrada de las condiciones (combinacin de las posibles condiciones) permiten reflejar en las tablas
de decisin (TD) si se cumple o no tal condicin o si es indiferente, es decir, sea cual sea su condicin
de entrada, no tiene influencia sobre la accin que debera efectuarse.
La entrada de las acciones (decisin) indica efectuar la accin correspondiente a un conjunto de
condiciones cumplimentadas.
REGLAS DE DECISIN:
Cada combinacin de entrada de condiciones y su correspondiente entrada de acciones constituyen
una relacin denominada regla de decisin. Existen tantas reglas como pares distintos de entradas
condiciones/acciones. El nmero de reglas de decisin debe cubrir todos los casos posibles, sin
repeticiones ni omisiones.
FORMAS DE CONSTRUCCIN:
El nmero de reglas de decisin utiliza la frmula 2
n
, donde n es el nmero de condiciones
posibles.
Matriz de
condiciones
Entrada de
condiciones
(Situacin)
Matriz de
acciones
Entrada de acciones
(Decisin)
49

A una condicin de entrada slo le corresponde una decisin o condicin de salida.
A una condicin de salida le pueden corresponder varias condiciones de entrada.
Para que una TD est bien construida, es necesario que en cada momento sea cierta una y slo
una de las situaciones
Cada regla de decisin (columna) es una estructura si- entonces (si se cumple la condicin de
entrada, entonces realizar tal o tales acciones) del tipo booleano de condiciones y se le pueden
aplicar las leyes del lgebra de Boole.
La lista de condiciones puede ponerse en cualquier orden.
La lista de acciones debe ponerse en el orden en que se tengan que ejecutar.
Especifique un nombre apropiado para la tabla, describiendo su objetivo.



EJEMPLO:
Considere el ejemplo de desarrollar una tabla de decisin para
representar la eleccin de un candidato para aplicar al puesto de
recepcionista en Lycos SA de CV.
Los criterios para seleccionar al candidato son los siguientes:
Sexo femenino
Experiencia en trabajos similares de ms de dos aos
Soltera.


En este ejemplo la matriz de condiciones especifica los criterios de eleccin para el puesto de
recepcionista. Condiciones aplicadas contiene dos alternativas de condicin: Y para satisfactorio y N
para insatisfactorio. (Si cumple o no cumple la condicin).
Como son tres condiciones, tenemos 2
3
lo cual nos da 8 combinaciones posibles. Para completar la
tabla en una manera sencilla, se va dividiendo por la mitad las dos posibles alternativas, la condicin 1
que es sexo femenino, tendr 4Y y 4N. Luego la condicin 2, experiencia, tendr para las primeras 4Y,
2Y y 2N y para las otras 4, tambin 2Y y 2N. La tercera condicin tendr una alternativa de cada una.
La tabla de decisin para representar el ejemplo es la siguiente:
Criterios para elegir candidatos a la plaza de recepcionista en Lycos SA de CV.
Matriz de Condiciones Condiciones Aplicadas (Entrada de condiciones)
El candidato es sexo femenino Y Y Y Y N N N N
Ms de dos aos de experiencia Y Y N N Y Y N N
Estado marital es soltera Y N Y N Y N Y N
Matriz de Acciones Acciones tomadas (Entrada de acciones)
Aceptar la aplicacin Y N N N N N N N
Para encontrar la matriz de acciones resultante, aplicamos tabla AND. Vemos que solamente cuando
las tres condiciones se cumplen, la aplicacin es aceptada.
50

Ventajas:
12

Son tiles en los casos en que se necesite representar condiciones complejas. Son ms fciles de
documentar que los flujogramas.
Si las condiciones son complejas, se representan en una pgina mientras que los flujogramas podran
extenderse en muchas pginas reduciendo la legibilidad.

DIAGRAMAS NASSI SCHNEIDERMAN (N-S)
Estos diagramas tambin conocidos como diagramas de Chapin o Diagramas de Caja, son como un
diagrama de flujo en el que se omiten las flechas de unin y tienen forma de cajas en forma contigua.
Las acciones sucesivas se escriben en cajas y similar a los flujogramas, se pueden escribir diferentes
acciones en una caja.

EJEMPLO:
Considere el ejemplo de calcular la superficie de un crculo para un radio
cualquiera. Hasta ahora hemos elaborado el pseudocdigo y Flujograma.
Elaboraremos el respectivo diagrama N-S:

Inicio
Var Real: Pi, S, R
Const Pi 3.1416
Leer ( R )
S Pi * R ^ 2
Escribir ( S )
Fin

EJERCICIOS PRCTICOS
1. Dibuje un diagrama N-S a partir del siguiente pseudocdigo:

Begin
Var sueldo, nuesueldo, aum: real
read (sueldo)
aum sueldo * 0.10
nuesueldo sueldo + aum
print (nuesueldo)
End

2. Elabore una tabla de decisin para representar el siguiente enunciado:

12
Tomado de Fundamentals of Programming. NIIT.
51

En la empresa El Encanto S.A. se tienen las siguientes condiciones para otorgar un
descuento:
Si el cliente compra $10000 o ms en mercanca entonces se le otorgar un 20% de
descuento.
Si el cliente compra ms de $5000 y menos de $10000 en mercanca entonces se le
otorgar un 10% de descuento.
Si el cliente compra menos de $5000 en mercanca entonces no se le otorgar descuento
alguno
3. Dibuje un diagrama N-S para el ejercicio de hallar la suma, producto y media aritmtica
de tres nmeros.
4. Dibuje un diagrama N-S para el caso de convertir una cantidad dada en horas, minutos y
segundos a segundos.


TERMINOLOGA APLICADA
Algoritmo: es un mtodo para resolver un problema mediante una serie de pasos definidos,
precisos y finitos.
Diagrama Nassi Schneiderman: El diagrama N-S o tambin conocido como diagrama de Chapin
es una tcnica de especificacin de algoritmos que combina la descripcin textual, propia del
pseudocdigo, con la representacin grfica del diagrama de flujo.
Flujograma: representa la esquematizacin grfica de un algoritmo, el cual muestra
grficamente los pasos o procesos a seguir para alcanzar la solucin de un problema.
Pseudocdigo: es un lenguaje intermedio entre nuestro lenguaje y el de programacin, debido
a que quien lo utiliza se gua por una serie de normas pero sin llegar a usar una estructura tan
rgida como la del lenguaje de programacin.
Tabla de decisin: es una herramienta que sirve para representar de manera ms fcil la lgica
de un problema cuando est es ms o menos complicada. Para ello se trata de identificar en el
problema las acciones que hay que ejecutar y las condiciones que se tienen que cumplir para
ejecutar esas acciones. Las acciones normalmente se identifican a travs de verbos, y las
condiciones van a ser las condicionales.



BIBLIOGRAFA
Fundamentos de Programacin. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico
Metodologa de la Programacin. Diagramas de Flujo, algoritmos y programacin. Luis
Joyanes Aguilar. Editorial Mc Graw Hill. Mxico.
Fundamentos de Programacin. Libro de Problemas. Luis Joyanes Aguilar, Luis
Rodrguez Baena y Matilde Fernndez Azuela. Editorial Mc Graw Hill. Espaa.
Fundamentals of Programming. Student Guide. NIIT. India.
52

TEMA 2. ESTRUCTURAS BSICAS DE PROGRAMACIN
CONCEPTOS.
2.1 METODOLOGA PARA LA SOLUCIN DE PROBLEMAS
Siempre que vamos a resolver un problema nos enfrentamos con la dificultad de tener que encontrar
una solucin. Para ello, tenemos que tener bien claro cul es el problema que queremos resolver para
luego determinar la solucin que sea ms adecuada. Esto quiere decir que debemos determinar el
objetivo o propsito de querer resolver el problema.
Un problema es una situacin real, bajo ciertas condiciones y/o restricciones, que se necesita
transformar, y conocer su comportamiento al variar algunos de sus componentes.

FASES DE RESOLUCIN DE UN PROBLEMA PARA EL DISEO DE UN PROGRAMA:
























INVESTIGACIN INDIVIDUAL.

Investigue cada una de las fases del desarrollo de un programa y
explquelos. Elabore un reporte escrito.

FASE DE RESOLUCIN DE UN
PROBLEMA
FASE DE IMPLEMENTACIN
EN LA COMPUTADORA
CODIFICACIN DEL ALGORITMO EN
PROGRAMA
COMPILACIN Y EJECUCIN DEL
PROGRAMA
VERIFICACIN Y DEPURACIN DEL
PROGRAMA
DOCUMENTACIN Y MANTENIMIENTO
DEL PROGRAMA
ANLISIS DEL PROBLEMA
DISEO DEL ALGORITMO
VERIFICACIN MANUAL DEL
ALGORITMO
FASE DE RESOLUCIN
DE UN PROBLEMA
53

2.2 TIPOS DE ESTRUCTURAS BSICAS.

Un problema se puede dividir en acciones elementales o instrucciones, usando un nmero limitado de
estructuras de control (bsicas) y sus combinaciones que pueden servir para resolver dicho problema.
Las estructuras de control de un lenguaje de programacin son mtodos de especificar el orden en que
las instrucciones de un algoritmo se ejecutarn. Estas son por consiguiente fundamentales en los
lenguajes de programacin y en los diseos de algoritmos. Se les llama de control debido a que
controlan el modo de ejecucin del programa.
13

Las Estructuras Bsicas pueden ser:
Secuenciales: cuando una instruccin del programa sigue a otra. Constan de Entrada, Proceso y Salida.
Seleccin o decisin: acciones en las que la ejecucin de alguna depender de que se cumplan una o
varias condiciones. Pueden ser simples, dobles, compuestas y mltiples.
Repeticin o Iteracin: cuando un proceso se repite en tanto cierta condicin sea establecida para
finalizar ese proceso. Estas pueden ser: Mientras (While), Desde/Para (For) y Repetir (Repeat)

2.3 ESTRUCTURAS SECUENCIALES.
Son problemas en los que, para su solucin se emplea una serie de acciones ejecutadas
invariablemente en un orden secuencial.
Las tareas suceden de tal modo que la salida de una es la entrada de la siguiente y as sucesivamente
hasta el fin del proceso.
Dentro de este tipo podemos encontrar operaciones de inicio/fin, inicializacin de variables,
operaciones de asignacin, clculo, sumarizacin, etc.
Este tipo de estructura se basa en las 5 fases de que consta todo algoritmo o programa:
Definicin de variables (Declaracin)
Inicializacin de variables.
Lectura de datos
Clculos
Salida

REPRESENTACIN GRFICA:
PSEUDOCDIGO

Begin
Read ( )
Accin 1
Accin 2

Accin N
print ( )
End



FLUJOGRAMA

DIAGRAMA N-S
Begin
Read ( )
Accin 1
Accin 2
Accin N
Print ( )
End


13
Tomado de www.scribd.com/doc/3863819/apuntesprog
ACCIN 1
ACCIN 2
ACCIN N
54



EJEMPLOS:
1. En una tienda se ofrece un descuento del 15% sobre el total de la
compra y un cliente desea saber cunto deber pagar finalmente por
su compra.

Resolveremos el ejercicio, aplicando los pasos de la metodologa de la solucin de un problema:
DEFINICIN DEL PROBLEMA:
Obtener la cantidad de dinero que tendr que pagar el cliente, si la tienda ofrece un 15% de descuento
sobre el total de la compra.

ANLISIS DEL PROBLEMA:
Para obtener el descuento es necesario conocer la cantidad total de la compra, y sobre sta aplicar el
15%. Posteriormente, este descuento deber ser sustrado de la cantidad total de la compra para as
obtener la cantidad con descuento, que es la que el cliente pagar.

Pasos que se deben realizar:
Salidas: Cantidad a pagar
Entradas: Total de la compra

Datos adicionales: el descuento equivale al 15% sobre el total de la compra.
Aplicar las siguientes frmulas:
Descuento = total de la compra * 0.15
Cantidad a pagar = total de la compra descuento

Seccin de Declaraciones:
Var
Real: CP, TC, D
Donde CP ser Cantidad a pagar
TC ser total de la compra y
D ser el descuento

DISEO DEL ALGORITMO:
55



PRUEBA MANUAL DEL ALGORITMO
ENTRADA PROCESO SALIDA
TC CP
100 D = TC * 0.15
D = 100 * 0.15
= 15
CP = TC D
CP = 100 15
= 85






85

2. Un vendedor recibe un sueldo base ms un 10% extra por comisin de sus ventas. El vendedor
desea saber cunto dinero obtendr por concepto de comisiones por las tres ventas que realiza
en el mes y el total que recibir en el mes tomando en cuenta su sueldo base y sus
comisiones.


DEFINICIN DEL PROBLEMA:
PSEUDOCDIGO
Begin
Read (TC)
D TC * 0.15
CP TC D
Print (CP)
End

FLUJOGRAMA

N S

Begin
Read (TC)
D TC * 0.15
CP TC - D
Print (CP)
End

Begin
TC
D TC * 0.15
CP TC - D
CP
End
56

Obtener la cantidad de dinero que recibir un vendedor por concepto de comisiones por tres ventas
realizadas en el mes, y el total que recibir en el mes por sueldo y comisin. Se sabe que el vendedor
recibe un sueldo base y un 10% extra por comisiones de todas sus ventas.

ANLISIS DEL PROBLEMA:
Para obtener la comisin y la cantidad que recibir el vendedor, se necesita realizar lo siguiente:
Para obtener la cantidad total de ventas hay que conocer la cantidad de cada una de sus ventas en
el mes y sumarlas. Posteriormente, sobre el total de las ventas se debe aplicar el 10% para obtener la
comisin. Por ltimo, para obtener el total de dinero que debe recibir el vendedor hay que sumarle al
sueldo base la comisin.

Pasos que se deben realizar:
Salidas: Cantidad a recibir por comisin, cantidad total a recibir
Entradas: cantidad de venta 1, 2 y 3, sueldo base
Datos adicionales: el descuento de 10% se aplicar sobre el total de las ventas del mes

Aplicar las siguientes frmulas:
Total de las ventas = Venta 1 + Venta 2 + Venta 3
Comisin = Total de las ventas * 0.10
Total a recibir = Sueldo base + Comisin

Seccin de Declaraciones:
Var
Real: TV, V1,V2,V3,TR,C, SB

Donde SB ser Salario Base
TV ser Total de las Ventas
V1,V2 y V3 ser el valor de las tres ventas
C ser la comisin
TR ser el total a recibir


DISEO DEL ALGORITMO

57



PRUEBA MANUAL DEL ALGORITMO

ENTRADA PROCESO SALIDA
SB 1500 TR
V1 100
V2 150
V3 250
TV = V1+V2+V3
= 100 + 150 + 250
= 500
C = TV * 0.1
= 500 * 0.1
= 50
TR = SB + C
= 1500 + 50
= 1550


1550


EJERCICIOS PRCTICOS

Aplicar las fases para la resolucin de un problema en los siguientes ejercicios.

1. Un alumno ha realizado tres evaluaciones parciales. El desea saber cul es su promedio final
del mdulo Desarrollo de Lgica de Programacin, si se sabe que las dos primeras
evaluaciones valen 30% y la tercera 40%.
2. Dado el radio y la altura de un cilindro, calcular el rea y el volumen. Sabiendo que las
frmulas para el rea son 2 r h y para el volumen r
2
h.
PSEUDOCDIGO


Begin
Read (SB,V1,V2,V3)
TV V1+V2+V3
C TV * 0.1
TR SB + C
Print (TR)
End






FLUJOGRAMA

N S

Begin
Read (SB,V1,V2,V3)
TV V1+V2+V3
C TV * 0.1
TR SB + C
Print (TR)
End

Begin
SB, V1,V2,V3
TV V1+V2+V3
0.15
C TV*0.1
TR
End
TR SB + C
58

3. Determinar el sueldo de un vendedor, el cual depende de su sueldo base ms el 10% de su
comisin sobre las ventas. Imprimir el nombre del vendedor, sueldo y comisin.
4. Calcular el sueldo de un trabajador a quien se le realizan los siguientes descuentos:. Renta =
10%, AFP = 5%, FSV = 8%; al final deber imprimir el nombre del trabajador, su direccin,
telfono, salario neto y total de descuentos.

LISTA DE COTEJO:

Nombre del alumno:

Fecha:

Nombre del evaluador:(Instructor)

Titulo de la tarea: Estructuras Secuenciales

INDICACIONES

NIVEL
LOGRADO
NIVELES DE EJECUCIN
(Colocar una X en el nivel logrado)


En grupos de 4 alumnos siguiendo las
indicaciones de su instructor, resuelvan los
siguientes ejercicios.
Presenten un reporte escrito en papel bond
tamao carta, colocando la portada al frente, que
incluya la seccin, el nombre completo de los
integrantes, nmeros de carn y firmas.
Antes de entregar el reporte verifiquen que
contenga todos los componentes, auxilindose de
los criterios de ejecucin abajo detallados.
6- Realizan el trabajo
satisfactoriamente y en el tiempo
adecuado, haciendo buen trabajo
en equipo
5- Pueden realizar el trabajo
satisfactoriamente aplicando
buena lgica e iniciativa al resolver
los problemas
4- Pueden realizar el trabajo
satisfactoriamente con poca ayuda
del instructor
3- Pueden realizar el trabajo pero
necesitan mucha ayuda del
instructor.
2- Pueden realizar el trabajo pero
no terminan en el tiempo estimado

1- No pueden realizar el trabajo




59

CRITERIO DE EJECUCIN
Para un logro aceptable todos los tems deben recibir respuestas Si, No, o
No Aplica.
SI NO N/A
Definen adecuadamente cada problema
Realizan anlisis de cada problema
Elaboran pseudocdigo para cada problema
Elaboran Flujograma para cada problema
Elaboran diagrama N-S en cada problema
Realizan prueba manual

Puntaje mximo: 6
Puntaje obtenido: ____
Puntaje mnimo de aprobacin: 4
COMENTARIOS: _________________________________________________________________
_____________________________________________________________________________
______________________________________________________________





TAREA INDIVIDUAL

Aplique las fases para la resolucin de un problema en los siguientes ejercicios.
Elabore reporte escrito en papel bond.
1. Se desea saber la media aritmtica de los 5 mejores estudiantes de Informtica e imprimir el
resultado.
2. Suponga que un individuo decide invertir su capital en un banco y desea saber cunto dinero
ganar despus de un mes si el banco le paga a razn de 2% mensual.
3. Un alumno desea saber cul ser el promedio general en las tres materias ms difciles que
cursa y cul ser el promedio que obtendr en cada una de ellas, sabiendo que se evala de la
siguiente manera:
La calificacin de Informtica se obtiene de un examen con 50% y un promedio de tareas de
50% con tres tareas entregadas.
La calificacin de Fsica se obtiene de la siguiente forma: Examen 30%, promedio de tareas
40% para un total de dos tareas, Proyecto 30%.
La calificacin de Matemtica se obtiene con 2 exmenes 20% cada uno, promedio de tres
tareas 30% y proyecto con 30%.
Calcular el promedio de un alumno cualquiera por asignatura y el total ganado por las tres.
4. Un maestro desea saber qu porcentaje de hombres y qu porcentaje de mujeres hay en un
grupo de estudiantes.
5. En un hospital existen tres reas: Pediatra, Oncologa y Traumatologa. El presupuesto anual
del hospital se reparte conforme a la siguiente tabla:



60

AREA
PORCENTAJE DEL
PRESUPUESTO
Pediatra 30%
Oncologa 40%
Traumatologa 30%

Obtener la cantidad de dinero que recibir cada rea para cualquier monto presupuestal.
6. Los premios de un determinado juego se distribuyen de acuerdo al siguiente criterio:
a) La cantidad repartida en premios es un 60% de la recaudacin total
b) Existen 5 categoras de premiados y el nmero de acertantes por categora se lee de teclado
Indicar la cantidad que percibe cada acertante de cada una de las categoras.
7. Calcular e imprimir el costo de produccin de un artculo, teniendo como datos la descripcin y
el nmero de unidades producidas. El costo se calcula multiplicando el nmero de unidades
producidas por un factor de costo de materiales de 3.5 y sumndole al producto un costo fijo
de $10700.
8. La velocidad de la luz es 300000 Km. por segundo. Leer un tiempo en segundos e imprimir la
distancia que recorre en dicho tiempo.

2.4 ESTRUCTURAS DE SELECCIN.

Una decisin es la estructura segn la cual se puede escoger uno de entre dos caminos lgicos
dependiendo de una condicin que al ser evaluada nos brinda la oportunidad de saber cul de los dos
caminos escoger. La evaluacin de dicha condicin siempre va a originar una respuesta VERDADERA
(cuando la condicin se cumple) o FALSA (cuando dicha condicin no se cumple) y con ello se podr
saber cul es el conjunto de instrucciones a resolver. La representacin de una estructura selectiva se
hace con palabras en pseudocdigo (if then else o en espaol si entonces - sino) y en flujograma
con una figura geomtrica en forma de rombo.
La condicin, en algoritmos tcnicos, se podr expresar en trminos de dos tipos de operadores: los
operadores relacionales y los operadores booleanos. Recordemos que los operadores relacionales son
aquellos que nos originan una respuesta Verdadera o Falsa y que corresponden a los smbolos mayor
que, menor que, mayor o igual, menor o igual, igual (de comparacin) y diferente de. Los operadores
booleanos son aquellos que nos permiten establecer conexiones entre expresiones en donde aparezcan
los operadores booleanos y corresponden a los operadores:
AND: Genera Verdadero si todas las expresiones relacionales conectadas son Verdaderas
OR: Genera Verdadero si al menos una de las expresiones conectadas es Verdadera
NOT que invierte el sentido lgico de la expresin

Con estos elementos podemos recordar que la utilizacin de las decisiones como estructura bsica de
programacin no tiene ninguna restriccin y que pueden considerarse como vlidos los siguientes
casos:
Una decisin dentro de otra
Una decisin a continuacin de otra
Muchas decisiones dentro de otras
Muchas decisiones a continuacin de otras
Los lenguajes de programacin normalmente cuentan con una forma de seleccionar uno de entre
varios caminos lgicos que correspondera a una pequea modificacin de la estructura de DECISIN
pero que en ltimas parte del mismo supuesto.
61

Las estructuras selectivas o alternativas se clasifican en:
a) Simples
b) Dobles
c) Compuestas
d) Mltiples

ESTRUCTURAS SELECTIVAS SIMPLES.
Se identifican porque estn compuestos nicamente de una condicin.
La estructura si entonces evala la condicin y en tal caso:
Si la condicin es verdadera, entonces ejecuta la accin Si (o acciones si son varias).
Si la condicin es falsa, entonces no se hace nada.

REPRESENTACIN GRFICA:


DIAGRAMA DE FLUJO DIAGRAMA NASSI SCHNEIDERMAN










PSEUDOCDIGO EN ESPAOL PSEUDOCDIGO EN INGLS
Si <condicin> Entonces
<accin Si>
Fin_si
If <condicin> then
<accin Si>
End_if

DONDE:
Condicin: Expresa la condicin o conjunto de condiciones a evaluar
Accin: Expresa la operacin o conjunto de operaciones que se van a realizar si la condicin
resulta verdadera.



EJEMPLOS
1. Construir un algoritmo tal, que dado como dato la calificacin de un
alumno en un examen, escriba Aprobado en caso que esa calificacin
fuese mayor o igual que 7.
DEFINICIN DEL PROBLEMA
El mismo enunciado.



condicin
acciones
Si condicin no



ACCIONES
si no
62

ANLISIS DEL PROBLEMA

Salidas: mensaje de aprobado si se cumple la condicin.
Entradas: calificacin
Datos adicionales: un alumno aprueba si la calificacin es mayor o igual que 7.

Seccin de declaraciones:
Var Real: Cal
Donde Cal = calificacin

PSEUDOCDIGO:
Begin
Read (Cal)
If Cal >= 7 then
print (aprobado)
End_if
End

FLUJOGRAMA: DIAGRAMA N-S




no
no
yes





PRUEBA MANUAL DEL ALGORITMO:
ENTRADA PROCESO SALIDA
Cal 7.5
If 7.5 >= 7? yes Aprobado
Cal 5.7
If 5.7 >=7? No


Begin
Read(Cal)
Yes Cal > =7 No

Print (aprobado)

End


Begin
Cal
Cal >=7
aprobado
End
63

EJEMPLO 2
Dado el sueldo de un empleado, se desea encontrar su nuevo sueldo solo si obtiene un aumento del
10% cuando su sueldo es inferior a $600.

DEFINICIN DEL PROBLEMA
El mismo enunciado.
ANLISIS DEL PROBLEMA:
Este ejemplo se toma como selectivo simple, porque se encontrar nuevo sueldo solo cuando haya un
aumento, en caso contrario el problema no nos dice que imprimamos el nuevo sueldo; por lo tanto si
el sueldo no cumple la condicin no se har nada.
Salidas: nuevo sueldo
Entradas: sueldo del empleado
Datos adicionales: si sueldo inferior a 600, el empleado tendr un aumento de 10%
Seccin de Declaraciones
Variables:
Var Real: SI, NS
Donde:
SI = sueldo inicial
NS = nuevo sueldo

PSEUDOCDIGO:
Begin
Read (SI)
If SI <= 600 then
NS SI + SI * 0.1
print ( NS )
End_if
End

FLUJOGRAMA: DIAGRAMA N-S




no
no
yes






Begin
Read(SI)
Yes SI<=600 No

NS SI + SI * 0.1
Print (NS)

End
End


Begin
SI
SI<=600
NS
End
NS SI + SI * 0.1

64

PRUEBA MANUAL DEL ALGORITMO
ENTRADA PROCESO SALIDA
SI NS

550.50


If 550.50 <=600? Yes
NS= 550.50+ 550.50*0.1
NS= 550.50+55.05
NS= 605.55








605.55
810.25
If 810.25 <=600? No







EJERCICIOS PRCTICOS
Resolver los ejercicios en parejas y al finalizar la prctica debern entregar el
desarrollo de las soluciones de cada problema en papel bond tamao carta,
colocando la portada al frente que incluya la seccin, el nombre completo de
los integrantes, nmeros de carn y firmas.


Aplicar las fases para la resolucin de un problema en los siguientes ejercicios.
1. Un hombre desea saber cunto dinero se generar por concepto de intereses sobre la cantidad
que tiene en inversin en el banco. El decidir reinvertir los intereses, siempre y cuando stos
excedan a $1500, y en ese caso desea saber cunto dinero tendr finalmente en su cuenta.
2. Leer un nmero y decir si est entre 10 y 100, ambos inclusive.
3. Dado como dato el sueldo de un trabajador, aplique un aumento del 15% si su sueldo es
mayor o igual a $550. Imprimir en ese caso el nuevo sueldo del trabajador.


TAREA
Aplicar las fases para la resolucin de un problema en los siguientes
ejercicios. Resuelva cada ejercicio en hojas de papel bond.


1. El nmero de sonidos emitidos por un grillo en un minuto es una funcin de la temperatura.
Como resultado de esto, es posible determinar el nivel de la temperatura haciendo uso de un
grillo como termmetro. Sea T= N/4 + 40. Donde T= temperatura en grados Fahrenheit, N=
nmero de sonidos emitidos por el grillo.
2. Dados los valores enteros P y Q, determine si los mismos satisfacen la siguiente expresin: P
3

+ Q
4
2P
2
< 680. En caso afirmativo debe imprimir los valores de P y Q.
3. La tangente de un ngulo se define como el cociente entre el seno y el coseno de dicho ngulo.
Calcular la tangente de un ngulo, considerando que se conoce el valor del seno y del coseno
del mismo. (Para resolver este problema debe identificar cul es la condicin).


65

ESTRUCTURAS SELECTIVAS DOBLES
Son estructuras lgicas que permiten controlar la ejecucin de varias acciones y se utilizan cuando se
tienen dos opciones de accin, por la naturaleza de estas se debe ejecutar una o la otra, pero no
ambas a la vez, es decir, son mutuamente excluyentes.

REPRESENTACIN GRFICA:

DIAGRAMA DE FLUJO DIAGRAMA NASSI SCHNEIDERMAN


No yes









PSEUDOCDIGO EN ESPAOL PSEUDOCDIGO EN INGLS

Si <condicin> Entonces
<accin 1>
Sino
<accin 2>
Fin_si

If <condicin> then
<accin 1>
Else
<accin 2>
End_if


DONDE:
Condicin: Expresa la condicin o conjunto de condiciones a evaluar
Accin 1: Expresa la operacin o conjunto de operaciones que se van a realizar si la condicin
resulta verdadera.
Accin 2: Expresa la operacin o conjunto de operaciones que se van a realizar si la condicin
resulta falsa


REPRESENTACIN PSEUDOCODIFICADA.
Espaol Ingls
Si <condicin> entonces If <condicin> then
<accin S1> <accin S1>
sino else
<accin S2> <accin S2>
Fin_Si End_if

En este caso se constituye en una seleccin de dos posibilidades. Si la condicin es verdadera se
ejecuta la accin 1, y si es falsa, se ejecuta la accin 2. En el Flujograma es recomendable que el
camino verdadero deba colocarse a la derecha y lo falso a la izquierda. En el diagrama N-S no se
puede cambiar el orden del Si y No.

condicin
Accin 1
yes condicin no



ACCION 1 ACCION 2
Accin 2
66



EJEMPLOS

1. 1. Dado como dato la calificacin de un alumno en un examen,
escriba aprobado si su calificacin es mayor o igual que 7 y
Reprobado en caso contrario.



DEFINICIN DEL PROBLEMA.
El mismo enunciado.

ANALISIS DEL PROBLEMA.
Salidas: Mensaje de aprobado o reprobado.
Entradas: calificacin
Datos adicionales:
If calificacin >= 7 then
Print(Aprobado)
else
Print(Reprobado)
End_if

Seccin de declaraciones:
Var Real: cal
Donde Cal ser la calificacin

FLUJOGRAMA

DISEO DEL ALGORITMO:
PSEUDOCDIGO DIAGRAMA N-S
Begin
Read (cal)
If cal > =7 then
print (aprobado)
else
print (reprobado)
End_if
End



2. Dado el sueldo de un empleado, encontrar el nuevo sueldo si obtiene un aumento del 10% si su
sueldo es inferior a $600, en caso contrario no tendr aumento.

DEFINICIN DEL PROBLEMA.
El mismo enunciado.

ANALISIS DEL PROBLEMA.
Salidas: nuevo sueldo
Entradas: sueldo del empleado


Begin
Read (Cal)
yes Cal >=7 no
print (Aprobado) print (Reprobado)
End
No
yes
Begin
cal
Cal >=7
Reprobado Aprobado
End
67

Datos adicionales:

If sueldo < 600 then
Nuevo sueldo= sueldo + aumento 10%
Else
Nuevo sueldo = sueldo + aumento 0%
End_if
Seccin de declaraciones:
Var Real SI, NS
donde
SI = sueldo inicial
NS = nuevo sueldo

DISEO DEL ALGORITMO

PSEUDOCDIGO:
Begin
Read (SI)
If SI <= 600 then
NS SI + SI * 0.1
else
NS SI
End_if
print( NS )
End


DIAGRAMA N-S
Begin
Read(SI)
yes SI<600 no
NS SI+ SI*0.1 NS SI
Print (NS)
End



EJERCICIOS PRCTICOS
Resolver los ejercicios en parejas y al finalizar la prctica debern entregar el
desarrollo de las soluciones de cada problema en papel bond tamao carta,
colocando la portada al frente que incluya la seccin, el nombre completo de
los integrantes, nmeros de carn y firmas.

Aplicar las fases para la resolucin de un problema en los siguientes ejercicios.
NS SI
Begin
SI
SI<600
NS SI + SI*0.1
NS
End
FLUJOGRAMA
YES
NO
68

1. En un hospital se ingresa un paciente cobrndole $25 diarios por hospitalizacin. Si el paciente
es operado deber adems cancelar $1000 por los gastos ms 20% del pago total por
honorarios del doctor. Dados n das que estuvo el paciente, escriba el nombre, nmero de das
que estuvo ingresado y el detalle de todos los pagos hechos.
2. Determinar si un nmero es par o impar, usando la instruccin mod.
3. Una persona enferma se encuentra en reposo y desea saber cuntas caloras consume su
cuerpo durante todo el tiempo que realice una misma actividad. Las actividades que tiene
permitido realizar son nicamente dormir o estar sentado en reposo. Los datos que tiene son
que estando dormido consume 1.08 caloras por minuto y estando sentado en reposo consume
1.66 caloras por minuto.
4. Una empresa que comercializa cosmticos tiene organizados a sus vendedores en tres
departamentos y ha establecido un programa de incentivos para incrementar su productividad.
El gerente al final del mes pide el importe global de las ventas de los tres departamentos y
aquellos que excedan el 33% de las ventas totales se les paga una cantidad extra equivalente
al 20% de su salario mensual. Si todos los vendedores ganan lo mismo, determinar cunto
recibirn los vendedores de los tres departamentos al finalizar el mes.


TAREA
Aplicar las fases para la resolucin de un problema en los siguientes
ejercicios. Resuelva cada ejercicio en hojas de papel bond.
1. En un supermercado se hace una promocin mediante la cual el cliente obtiene un descuento
dependiendo de un nmero que escoge al azar. Si el nmero escogido es menor a 74 el
descuento es del 15% sobre el total de la compra y si es mayor o igual a 74 es de 20%.
Obtener cunto dinero se le descuenta y el pago final.
2. Un obrero necesita calcular su salario semanal, el cual se obtiene de la siguiente manera:
Si trabaja 40 horas o menos se le paga $4 por hora.
Si trabaja ms de 40 horas se le paga $4 por cada una de las primeras 40 horas y $6 por cada
hora extra. Calcule el nuevo salario del obrero.
3. Una empresa quiere hacer una compra de varias piezas de la misma clase a un fabricante de
refacciones. La empresa, dependiendo del monto total de la compra, decidir qu hacer para
pagar al fabricante. Si el monto total de la compra excede de $50000, la empresa tendr la
capacidad de invertir de su propio dinero un 55% del monto de la compra, pedir prestado al
banco un 30% y el resto lo pagar solicitando un crdito al fabricante. Si el monto de la
compra no excede a $50000 la empresa tendr capacidad de invertir de su propio dinero un
70% y el resto lo pagar solicitando crdito al fabricante. El fabricante cobra por concepto de
intereses un 20% sobre la cantidad que se le pague a crdito.
4. Cul es la conductancia Gt (siemens) y resistencia equivalente Rt (W) para cuatro resistores
R1, R2, R3 y R4 conectados en serie? Cul es la cada de voltaje Vi (voltios) para cada
resistencia, si pasa una corriente i de 10 amperios por el circuito?
Rt = R1 + R2 + R3 + R4 (Resistencia Equivalente)
Gt = 1/Rt (conductancia)
Vi = i * Ri (caida de voltaje en cada resistencia)

ESTRUCTURAS SELECTIVAS COMPUESTAS (ANIDADAS).
En la solucin de problemas encontramos numerosos casos en los que luego de tomar una decisin y
marcar el camino correspondiente a seguir, es necesario tomar otra decisin. Dicho proceso puede
repetirse numerosas veces.
69

En aquellos problemas en donde un bloque condicional incluye otro bloque condicional se dice que un
bloque est anidado dentro del otro.
A este tipo de estructuras se les conoce tambin como estructuras selectivas anidadas.
REPRESENTACIN GRFICA:
DIAGRAMA DE FLUJO DIAGRAMA NASSI SCHNEIDERMAN












PSEUDOCDIGO EN ESPAOL PSEUDOCDIGO EN INGLS
Si <condicin S1> Entonces
Si <condicin S2> entonces
<accin S21>
Sino
<accin S22>
Fin_si
Fin_si
If <condicin S1> Then
If <condicin S2> Then
<accin S21>
Else
<accin S22>
End_if
End_if

En este caso hay dos condiciones, la primera condicin S1 es una selectiva simple, porque solamente
tiene una posibilidad. Cuando es verdadera, se ejecuta la condicin S2. Si es falsa, se contina
directamente con el siguiente bloque de diagrama. La condicin S2 es selectiva doble, tiene dos
posibilidades. Cuando es verdadera, se ejecuta la accin S21 y si es falsa, se ejecuta la accin S22.
yes condicin S1 no
cond S2
yes no
accin accin
S2_1 S2_2



ACCION ACCION
S21 S22 ACCION 2
Accin 2
Condicin
S1
Accin S2_1 Accin S2_2
Condicin
S2
yes
no
yes
no
70



EJEMPLOS

1. Determinar la cantidad de dinero que recibir un trabajador por concepto de las
horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo
exceden de 40, el resto se consideran horas extras y que stas se pagan al doble
de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se
pagan las primeras 8 al doble de lo que se paga por una hora normal y el resto al
triple.

DEFINICIN DEL PROBLEMA
El mismo enunciado.
ANLISIS DEL PROBLEMA.
Datos de salida: Pago.
Datos de entrada: nmero de horas trabajadas y pago por hora normal.
Datos Adicionales:
Lo primero que hay que determinar es si el trabajador trabaj horas extras o no.
Encontrar las horas extras de la siguiente forma:
Horas extras = horas trabajadas 40
En caso que si trabaj horas extras:
Si horas extras > 8 entonces a horas extras excedentes de 8 = horas extras 8 y pago por horas
extras = pago por hora normal * 2 * 8 + pago por hora normal * 3 * horas extras excedentes de 8
De otra forma (solo horas al doble) pago por horas extras = pago por hora normal * 2 * horas extras.
Finalmente, pago total que recibir el trabajador ser:
Pago = pago por hora normal * 40 + pago por horas extras.
Si no trabaj horas extras tendremos:
Pago = pago por hora normal * horas trabajadas.
Definicin de variables:
ht = horas trabajadas het = horas extras que exceden de 8
ph = pago por hora normal phe = pago por horas extras
he = horas extras pt = pago que recibe el trabajador
DECLARACIN DE VARIABLES:
ENTERO: ht, he, het REAL: ph, phe, pt
PSEUDOCDIGO:
Begin
Read (ht, ph)
If ht >40 then
he ht 40
If he > 8 then
het he 8
phe ph * 2 * 8 + ph * 3 * het
else
71

phe ph * 2 * he
End_if
pt ph * 40 + phe
else
pt <-- ph * ht
End_if
Print (El pago total de horas trabajadas es:, pt)
Fin

FLUJOGRAMA:

























EJERCICIO:
Realiza la prueba manual del algoritmo.

72

Diagrama N-S:


DEFINICIN DEL PROBLEMA:
El mismo enunciado.

ANALISIS DEL PROBLEMA.
Salidas: numero mayor
Entradas: N1,N2,N3
Datos adicionales:
IF (N1 > N2) and (N1 > N3) THEN
NM N1
ELSE
IF (N2>N3) THEN
NM N2
ELSE
NM N3
END_IF
END_IF

Seccin de Declaraciones
Var integer N1,N2,N3,NM


EJEMPLO 2.
Leer tres nmeros enteros diferentes entre s y determinar el nmero mayor
de los tres.
DISEO DEL ALGORITMO
PSEUDOCDIGO
Begin
Read (N1,N2,N3)
if (N1 > N2) and (N1 > N3) then
NM N1
else
if (N2>N3) then
NM N2
else
NM N3
end_if
end_if
73

Donde N1, N2 y N3 son los tres nmeros
NM es el nmero mayor























DIAGRAMA N-S
Begin
Read (N1,N2,N3)
YES (N1 > N2) and (N1 > N3) NO
NM N1
YES N2>N3 NO
NM N2 NM N3
Print (NM)
End
no
yes
NM N2
NM N3
Begin
N1,N2,N3
N1>N2
and
N1>N3
NM N1
N2>N3
NM
End
yes
no
FLUJOGRAMA
74


PRUEBA MANUAL DEL ALGORITMO
ENTRADA PROCESO SALIDA
N1 N2 N3 NM
10 8 1
(N1 > N2) and (N1 > N3)?
(10>8) and (10>1)? YES
NM = 10





10
2 13 4
(N1 > N2) and (N1 > N3)?
(2 > 13) and (2 > 4)
F and F NO
(N2 > N3)?
(13 > 4) YES
NM = 13








13
5 2 8
(N1 > N2) and (N1 > N3)?
(5 > 2) and (5 >8)
T and F NO
(N2 > N3)?
(2 > 8) NO
NM = 8








8



EJERCICIOS PRCTICOS
Resolver los ejercicios en parejas y al finalizar la prctica debern entregar el
desarrollo de las soluciones de cada problema en papel bond tamao carta,
colocando la portada al frente que incluya la seccin, el nombre completo de los
integrantes, nmeros de carn y firmas.

Aplicar las fases para la resolucin de un problema en los siguientes ejercicios.
1. En una tienda de descuento se efecta una promocin en la cual se hace un descuento sobre el
valor de la compra total segn el color de la bolita que el cliente saque al pagar en caja. Si la
bolita es blanca no se le har descuento alguno, si es verde se le har un 10% de descuento, si
es amarilla un 25%, si es azul un 50% y si es roja un 100%. Determinar la cantidad final que
un cliente deber pagar por su compra. Se sabe que slo hay bolitas de los colores
mencionados.
75

2. Elaborar un sistema de facturacin que pida el nombre del vendedor, nombre del cliente, fecha
de factura, nmero de factura y suma de ventas realizadas. A la suma de ventas realizadas, se
les har un descuento segn la siguiente tabla:
VENTAS DESCUENTO
0 < V < 100 0%
100 <=V <=500 15%
500 < V <=1000 20%
V>1000 30%

3. Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades, si ste se le
asigna como un porcentaje de su salario mensual que depende de su antigedad en la empresa
de acuerdo con la siguiente tabla:
TIEMPO UTILIDAD
Menos de 1 ao 5% del salario
1 ao o ms y menos de 2 aos 7% del salario
2 aos o ms y menos de 5 aos 10% del salario
5 aos o ms y menos de 10 aos 15% del salario
10 aos o ms 20% del salario


TAREA
Aplicar las fases para la resolucin de un problema en los siguientes ejercicios.
Resolverlos en parejas, en hojas de papel bond tamao carta.


1. El ISSS requiere clasificar a las personas que se jubilarn en el ao 2010. Existen tres tipos
de jubilaciones: por edad, por antigedad joven y por antigedad adulta. Las personas
adscritas a la jubilacin por edad deben tener 60 aos o ms y una antigedad en su
empleo de 30 aos o ms. Las personas adscritas a la jubilacin por antigedad joven
deben tener menos de 60 aos y una antigedad en su empleo de 25 aos o ms. Las
personas adscritas a la jubilacin por antigedad adulta deben tener 60 aos o ms y una
antigedad en su empleo de 25 aos o ms. Determinar a qu tipo de jubilacin quedar
adscrita una persona.
2. En una llantera se ha establecido una promocin de llantas que consiste en lo siguiente:
Si se compran menos de 5 llantas el precio es de $45 cada una, si se compran de 5 a 10, el
precio es de $40 y si se compran ms de 10 el precio es de $35. Obtener la cantidad de
dinero que una persona tiene que pagar por el total de la compra.
3. Una frutera ofrece las manzanas con descuento segn la siguiente tabla:


76

NMERO KILOS COMPRADOS % DESCUENTO
0 2 0%
2.01 5 10%
5.01 10 15%
10.01 en adelante 20%

Determinar cunto pagar una persona que compre manzanas en esa frutera.
4. Dado un nmero entero, determine e imprima si el mismo es positivo, negativo o nulo.

ESTRUCTURAS SELECTIVAS MLTIPLES.

Con frecuencia es necesario que existan ms de dos elecciones posibles. Este problema se podra
resolver por estructuras selectivas simples o dobles, anidadas o en cascada, pero si el nmero de
alternativas es grande puede plantear serios problemas de escritura y de legibilidad.
Usando la estructura de decisin mltiple se evaluar una expresin que podr tomar n valores
distintos, 1, 2 , 3, ...., n y segn que elija uno de estos valores en la condicin, se realizar una de las
n acciones o lo que es igual, el flujo del algoritmo seguir slo un determinado camino entre los n
posibles.
Esta estructura se representa por un selector el cual si toma el valor 1 ejecutar la accin 1, si toma el
valor 2 ejecutar la accin 2, si toma el valor N realizar la accin N.

REPRESENTACIN GRFICA:
DIAGRAMA DE FLUJO


case 1 case 2 case N Default







SELECTOR
Accin X Accin N Accin 2 Accin 1
77

PSEUDOCDIGO EN ESPAOL PSEUDOCDIGO EN INGLES
En caso que Selector sea
Caso valor 1
Accin 1
break
Caso valor 2
Accin 2
break
Caso valor N
Accin N
break
Otro caso
Accin X
Fin Caso que

Switch (expression)
Case 1:
Accin 1
break
Case 2:
Accin 2
break
Case N:
Accin N
break
Default:
Accin X
break
End_Case

DIAGRAMA NASSI SCHNEIDERMAN








As, si el selector toma el valor 1 se ejecutar la accin 1, si toma el valor 2 se ejecutar la accin 2, si
toma el valor N, se realizar la accin N. De otra forma, si no es ningn caso de los anteriores,
significa que no se cumpli ninguna de las anteriores, entonces se realizar la accin X.
Deber reemplazar Selector por variables, propiedad o expresin que vaya a ser el valor clave.

EJEMPLO:

1. Disear un algoritmo tal que dados como datos dos variables de tipo
entero, obtenga el resultado de la siguiente funcin:


100 * V si num = 1
Resp = 100 ^ V si num = 2
100 /V si num = 3, para V <> 0
0 cualquier otro valor de num



En caso que Selector sea
Valor 1 Valor 2 ....... Valor N
Accin Accin ....... Accin
1 2 N
Switch (expression)
Valor1 Valor 2 Valor N Default
Accin Accin Accin N Accin
1 2 X
78

DEFINICION DEL PROBLEMA
El mismo enunciado.

ANALISIS DEL PROBLEMA
Salidas: Resp
Entradas: V, num
Datos adicionales: segn el valor que tome num, as encontraremos Resp con las frmulas dadas.
Seccin de Declaraciones:
Var integer: V, num
Real: resp
Donde resp ser el resultado de la funcin, V y num los valores de las dos variables de entrada

DISEO DEL ALGORITMO:

Begin
Read (num,V)
Switch(num)
1 2 3 default
Resp=
100*V
Resp=
100^V
Resp=100/V Resp = 0
Print (Resp)
End





1 2 3 default






Begin
Read (num,V)
Switch (num)
case 1: hacer Resp = 100*V
break
case 2: hacer Resp = 100 V
break
case 3: hacer Resp = 100/V
break
Default
Resp = 0
break
End_case
Print (Resp)
Fin
Begin
Num, V
num
Resp =
100*V
Resp =
100^V
Resp =
100/V
Resp = 0
Resp
End
79

PRUEBA MANUAL DEL ALGORITMO
ENTRADA PROCESO SALIDA
NUM V
Switch (1) resp=100 * 4
Resp = 400

Resp
1 4

400
5 2 Switch(5) default:
Resp = 0



0

Para este ejercicio es recomendable agregar una validacin antes de entrar al switch, ya que V nunca
puede ser cero pues invalida la opcin 3 al volverse indeterminada la divisin.
EXPRESIONES LGICAS
Sirven para plantear condiciones o comparaciones y dan como resultado un valor booleano verdadero
o falso, es decir, se cumple o no se cumple la condicin. Se pueden clasificar en simples y complejas.
Las simples son las que usan operadores relacionales y las complejas las que usan operadores lgicos.



EJEMPLO
Un ejemplo en el cual usamos el operador lgico AND sera:
Una escuela aplica dos exmenes a sus aspirantes, por lo que cada uno de ellos
obtiene dos calificaciones denotadas como C1 y C2. El aspirante que obtenga
calificaciones mayores que 80 en ambos exmenes es aceptado; en caso contrario es
rechazado.

En este ejemplo se dan las condiciones siguientes:
If (C1 >= 80) and (C2 >= 80) then
print (aceptado)
else
print (rechazado)
end_if
Note que tambin usa operadores relacionales. Por lo general cuando hay operadores lgicos, stos
van acompaados de operadores relacionales.
Un ejemplo usando el operador lgico OR sera:
Una escuela aplica dos exmenes a sus aspirantes, por lo que cada uno de ellos obtiene dos
calificaciones denotadas como C1 y C2. El aspirante que obtenga una calificacin mayor que 90 en
cualquiera de los exmenes es aceptado; en caso contrario es rechazado.
En este caso se dan las condiciones siguientes:

If (C1 >=90) or (C2 >=90) then
print (aceptado)
else
print (rechazado)
Fin_si
80

La instruccin equivale a OR ya que nos dice que puede ser en cualquiera de los exmenes no
necesariamente en los dos. En el ejemplo 1 la palabra ambos equivala a seleccionar la instruccin
AND.
Si la instruccin nos dijera que obtenga una nota en cualquiera de los exmenes pero no en ambos,
nos estara indicando una instruccin XOR que es un tipo de OR pero exclusivo. Es decir, no puede
considerarse el caso en que tenga la misma nota en los dos exmenes, solo en uno de los dos.



EJERCICIOS PRCTICOS
Resuelvan los siguientes ejercicios en grupos de 3 personas. Entregar el
reporte escrito en hojas de papel bond tamao carta. Para cada ejercicio
deben aplicar las fases de resolucin de un problema.
1. Dados como datos la categora y el sueldo de un trabajador, calcule el aumento
correspondiente teniendo en cuenta la siguiente tabla:

Categora Aumento
1 15%
2 10%
3 8%
4 5%

Imprima la categora del trabajador y su nuevo sueldo.
2. Una librera vende libros con las condiciones siguientes:
Si el cliente es tipo 1 se le descuenta el 30%, si es tipo 2 se le descuenta 20% y si es tipo 3 se le
descuenta el 10%. Si la cantidad de libros solicitada es mayor que 50, se hace un descuento
adicional de 5%; en caso de ser mayor que 100 el descuento adicional es de 10%.
Cuando el cliente realiza una compra se generan los datos siguientes:
Nombre del cliente, Tipo de cliente (1,2,3), cantidad en libros y costo por libro. Leer estos datos e
imprimir: Nombre del cliente, total a pagar, descuento y neto a pagar.
3. El costo de las llamadas telefnicas internacionales, depende de la zona geogrfica en la que
se encuentre el pas destino y del nmero de minutos hablados. En la tabla siguiente se
muestra el costo por minuto por zona. A cada zona se le ha asociado una clave.
CLAVE ZONA PRECIO
12 Amrica del Norte 2
15 Amrica Central 2.2
18 Amrica del Sur 4.5
19 Europa 3.5
23 Asia 6
25 frica 6
29 Oceana 5

Calcular e imprimir el costo total de una llamada, con base en la clave de la zona.

81


TAREA
Aplicar las fases de resolucin de un problema. Escribir a la par de cada
ejercicio el tipo de estructura de seleccin que utiliz. Realice los ejercicios
en su cuaderno de tareas.
1. Tres lneas pueden formar un tringulo si y slo s la longitud de la lnea ms larga es menor
que la suma de las longitudes de las dos lneas ms cortas. Sea a + b > c, con a,b y c
colocados en orden ascendente. Determinar si el tringulo es equiltero, issceles o escaleno.
2. Se desea leer por teclado un nmero comprendido entre 1 y 10 (inclusive) y se desea
visualizar si el nmero es par o impar. (Si (num\2 * 2 = num) entonces es par). Luego
visualizar si el nmero es positivo, negativo o nulo.
3. Los empleados de una fbrica trabajan en dos turnos: diurno y nocturno. Se desea calcular el
jornal diario de acuerdo con los siguientes puntos:
La tarifa de las horas diurnas es de $500.
La tarifa de las horas nocturnas es de $800.
En caso de ser domingo, la tarifa se incrementar en $200 el turno diurno y $300 el
nocturno.
4. Leer como datos el modelo de un vehculo y su precio, determinar el valor final que debe pagar
el comprador. El concesionario est haciendo descuentos, teniendo en cuenta el modelo con
base en la siguiente tabla:

MODELO DESCUENTO
Volskwagen 8%
Toyota 9%
Hyundai 6%
Mazda 5%

EVALUACIN DEL TEMA.
Rbrica para obtener la calificacin. Trabajar en grupos de 4 alumnos.
Criterios Dominio Bajo
1-4
Dominio Medio
5 - 7
Dominio Alto
8 - 10
Clasificacin Grupal
(5 grupos)
G1 G2 G3 G4 G5
Anlisis
(10%)
No identifican
todas las partes
del anlisis
Identifican algunas
partes con
dificultad o ayuda
Identifica
adecuadamente
las partes del
anlisis

Algoritmo
(40%)
No elaboran el
algoritmo de
cada ejercicio
Elaboran algoritmo
en forma
incompleta
Elabora
correctamente los
tres elementos
del algoritmo


82

Prueba
manual
(30%)
No realizan
prueba manual
de todos los
ejercicios
Realizan prueba
manual en forma
incompleta
Completan la
prueba manual
en forma correcta

Orden y
limpieza
(10%)
El trabajo est
desordenado,
sucio o ilegible
La informacin no
est
completamente
ordenada y aseada
Elaboran reporte
en forma
ordenada y
legible.

Auto
evaluacin
(10%)
(Es nota individual, cada alumno realiza esta parte).
Calificacin total

2.5 ESTRUCTURAS CCLICAS

CONCEPTOS BSICOS
Estos conceptos bsicos de un programa son fundamentales en las estructuras repetitivas.

BUCLES (LAZO)
El bucle, ciclo o lazo, es un segmento de un algoritmo o programa cuyas instrucciones se repiten un
nmero determinado de veces, mientras se cumple una determinada condicin especfica (existe o es
verdadera la condicin).
14


Un ciclo tiene las siguientes caractersticas:
a. El conjunto de instrucciones debe ser finito
b. La cantidad de veces que se repita dicho conjunto de instrucciones tambin debe ser finita. En
algunos casos esta cantidad de veces va a depender de una condicin explcita y en otros casos va a
depender de una condicin implcita. Una condicin es explcita cuando depende solamente de la
misma ejecucin del programa sin que sea importante la participacin del usuario. Asimismo una
condicin es implcita cuando depende solamente de la voluntad del usuario y por lo tanto la cantidad
de iteraciones o repeticiones del ciclo podra llegar a ser diferente cada vez pues sera posible que
cambiara con cada usuario.
c. Deben estar claramente demarcados el inicio y el fin del ciclo. En los casos en los cuales solo exista
una instruccin a iterar, no sern necesarias dichas marcas.
d. Dentro de un ciclo podr ir cualquiera de las otras estructuras que se han estudiado incluyendo
otros ciclos.
Un bucle consta de tres partes:
Decisin
Cuerpo del bucle
Salida del bucle

ITERACIN
Es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en el bucle.


14
Tomado de enriquebarrueto0.tripod.com/algoritmos/cap03.doc
83

CONTADORES
Un contador es una variable cuyo valor se incrementa o decrementa en una cantidad fija en cada
iteracin. Se utilizan en los siguientes casos:
Para contabilizar el nmero de veces que es necesario repetir una accin (variable de control
de un bucle)
Para contar un suceso particular solicitado por el enunciado del problema (asociado a un bucle
independiente)
Representa la variable de control del ciclo.
Toma un valor inicial (generalmente 0 1) y se incrementa en la mayora de los casos.
Toma un valor inicial y se compara con el valor final.
Los contadores se utilizan con la finalidad de contar sucesos o acciones internas de un bucle; deben
realizar una operacin de inicializacin y posteriormente las sucesivas de incremento o decremento del
mismo.
La inicializacin consiste en asignarle al contador un valor. Se situar antes y fuera del bucle.
Representacin:
<nombre del contador> <nombre del contador> + <valor constante>
Si en vez de incremento es decremento se coloca un menos en lugar del ms.
Ejemplo: i = i + 1 (incremento)
i = i 1 (decremento)

ACUMULADOR O TOTALIZADOR
Un acumulador es un campo de memoria que suma sobre s misma un conjunto de valores para de
esta manera tener la suma de todos ellos en una sola variable. Se utiliza en aquellos casos en que se
desea obtener el total acumulado de un conjunto de cantidades, siendo preciso inicializarlo con el valor
cero.
Adems en las situaciones en que hay que obtener un total como producto de distintas cantidades se
utiliza un acumulador, debindose inicializar con el valor.
La diferencia entre un contador y un acumulador es que mientras el primero va aumentando de uno en
uno en un valor constante, el acumulador va aumentando en una cantidad variable.
Representacin: <Nombre del acumulador> <nombre del acumulador> + <valor variable>



INVESTIGACIN INDIVIDUAL

Investigue qu son bucles finitos e infinitos. Bucles independientes,
anidados y cruzados. Ejemplos de cada uno y cmo funcionan segn su
representacin en pseudocdigo, Flujograma y N-S.
TIPOS DE CICLOS
Los tipos de Bucles o Ciclos que estudiaremos son los siguientes:
Estructura For (Desde)
Estructura While (Mientras)
Estructura Repeat (Repetir)
En esta leccin estudiaremos la forma general de la estructura For, su uso y ejemplos.

84


ESTRUCTURA FOR (DESDE/PARA):
DEFINICIN
La estructura repetitiva For (desde) es aquella en la que el nmero de iteraciones se conoce por
anticipado, y por ello no se precisa poner ninguna condicin de salida para detener el bucle. En su
lugar un contador cuenta el nmero de iteraciones fijas y se termina cuando llega al valor final
previamente definido.
Quiere decir que esta estructura se usa frecuentemente cuando se conoce de antemano el nmero de
veces que se ejecutarn las acciones de un bucle. Esta es una de sus caractersticas.
REPRESENTACIN GRFICA:




DIAGRAMA N-S FLUJOGRAMA
PSEUDOCDIGO ESPAOL PSEUDOCDIGO EN INGLS

Desde i = Vi hasta Vf (incr/decr) hacer
Acciones
Fin_desde

For i = Vi To Vf (incr/decr) Do
Acciones
End_for
DONDE:
i : Valor ndice (contador)
Vi: Valor Inicial
Vf: Valor Final
Incr/decr: Incremento o decremento de la variable ndice
TIPOS
DE
CICLOS
FOR (Desde)
REPEAT
(Repetir)
WHILE
(Mientras)
85


EJEMPLO
Calcular la suma de los cuadrados de los primeros 100 enteros y escribir el
resultado.


DEFINICIN DEL PROBLEMA
El mismo enunciado.

ANLISIS DEL PROBLEMA
Salidas: cuadrados de los primeros 100 enteros
Entradas: ninguna
Datos adicionales:
Acumulador de cuadrados: la variable suma
Para generar los cuadrados usamos suma suma + i * i

Seccin de declaraciones:
Var entero: suma , i
Donde i es el ndice del bucle, suma es el acumulador de
la suma de cuadrados.
REPRESENTACIN GRFICA:
PSEUDOCDIGO

Begin
Suma 0
For i = 1 to 100 do
Suma suma + i * i
End_for
print (suma)
End

DIAGRAMA N-S















Begin
suma 0
i = 1,100,1
suma suma + i*i
suma
End
Begin

suma 0

For i = 1 to 100 do
suma suma + i * i

End_for
print (suma)

End
Begin

suma 0

For i = 1 to 100 do
suma suma + i * i

End_for
print (suma)

End
FLUJOGRAMA
86

PRUEBA MANUAL DEL ALGORITMO
Como son 100 elementos, el algoritmo resulta muy grande, por lo tanto realizaremos la prueba con
valor final de 4 en vez de 100, solamente para ver el funcionamiento del bucle.

ENTRADA PROCESO SALIDA
Suma = 0
i=1
suma = suma + i * i
suma = 0 + 1 * 1 = 1
i=2
suma = 1 + 2 * 2 = 5
i=3
suma = 5 + 3 * 3 = 14
i=4
suma= 14 + 4 * 4 = 14+16= 30
i=5 fuera del rango. (Termina el bucle)













30

Observe que no hay entradas en este ejercicio.

Hay un nmero importante de reglas que deben seguirse cuando se utilizan instrucciones FOR:
Los valores inicial y final de la variable de control se determinan antes de que empiece la
repeticin y no pueden cambiarse durante la ejecucin de la instruccin For.
Dentro del cuerpo del bucle For, los valores de las variables que especifican los valores inicial y
final pueden cambiar, pero esto no va a afectar al nmero de repeticiones.
La instruccin del cuerpo del bucle de una instruccin For puede utilizar el valor de la variable
de control, pero no debe modificar este valor.
Esta estructura se puede usar nicamente en aquellos casos en que conocemos el nmero de
veces que se va a realizar el ciclo.
Esta estructura hace el incremento automticamente y se inicializa en la instruccin For.


EJERCICIOS PRCTICOS
Aplicar las fases para la resolucin de un problema en los siguientes
ejercicios, usando estructura For. Incluye la prueba manual con 5 datos de
prueba. Resuelvan los ejercicios en grupos de 3 alumnos y presenten un
reporte escrito en hojas de papel bond.

1. Dado el sueldo de 20 trabajadores, considere un aumento del 15% a cada uno de ellos, si su
sueldo es inferior a $800. Imprima el sueldo con el aumento incorporado.
2. Calcule el aumento de sueldos para 50 empleados de una empresa, bajo el siguiente criterio:
Si el sueldo es menor a $1000: aumento 12%
Si el sueldo est comprendido entre $1000 y $25000: aumento 10%
Si el sueldo es mayor a $25000: aumento 8%
Imprima el nuevo sueldo del trabajador y el monto total de la nmina considerando el aumento.
87

3. Leer 100 nmeros enteros y contar cuntos de ellos son positivos, negativos o nulos.
4. Dados como datos 300 nmeros enteros, obtener la suma de los nmeros impares y el promedio
de los nmeros pares.
5. Dados 24 nmeros reales que representan las temperaturas del exterior en un perodo de 24
horas. Encuentre la temperatura media del da y las temperaturas ms alta y ms baja del da.


TAREA
Aplicar las fases para la resolucin de un problema en los siguientes
ejercicios. Realizar prueba manual con 5 datos de prueba.
Usa estructura desde/para. Resuelve los ejercicios en tu cuaderno de tareas.

1. Una compaa de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la
semana. Su poltica de pagos es que un vendedor recibe un sueldo base y 10% extra por comisiones
de sus ventas. El gerente de su compaa desea saber cunto dinero obtendr en la semana cada
vendedor por concepto de comisiones por las tres ventas realizadas y cunto tomando en cuenta su
sueldo base y sus comisiones.
2. Dados 100 nmeros enteros como datos, obtener:
a) Cuntos nmeros ledos fueron mayores que cero.
b) el promedio de los nmeros positivos
c) el promedio de todos los nmeros
3. Dado el peso, la altura y el sexo de 50 personas que pertenecen a Sonsonate, obtenga el promedio
del peso y de la altura de esta poblacin.
4. Resolver el problema anterior considerando adems el promedio de la altura y del peso en funcin
del sexo. Es decir, obtener el promedio de la altura y peso de la poblacin femenina y masculina.
5. En una escuela, la colegiatura de los alumnos se determina segn el nmero de materias que
cursan. El costo de todas las materias es el mismo. Se ha establecido un programa para estimular
a los alumnos, el cual consiste en lo siguiente:
Si el promedio obtenido por un alumno en el ltimo perodo es mayor o igual que 9, se le
har un descuento del 30% sobre la colegiatura y no se le cobrar IVA;
Si el promedio obtenido es menor que 9, deber pagar la colegiatura completa, la cual
incluye el 10% de IVA.
Obtener cuanto pagan 20 alumnos.


ESTRUCTURA MIENTRAS (WHILE)

Se llama Mientras a la estructura algortmica que se ejecuta mientras la condicin evaluada resulte
verdadera.
Se evala la expresin booleana y, si es cierta, se ejecuta la instruccin especificada, llamada el
cuerpo del bucle. Entonces se vuelve a evaluar la expresin booleana, y si todava es cierta se ejecuta
de nuevo el cuerpo. Este proceso de evaluacin de la expresin booleana y ejecucin del cuerpo se
repite mientras la expresin sea cierta. Cuando se hace falsa, finaliza la repeticin.
Si la condicin del bucle While se evala a falso cuando se ejecuta el bucle por primera vez, el cuerpo
del bucle no se ejecutar nunca. En este caso se dice que el bucle se ha ejecutado cero veces.
La condicin lgica en un bucle While, debe tener un valor la primera vez que se evala; en caso
contrario, el programa abortar al ejecutarse While.
La condicin lgica en un bucle While, debe ser modificada por una sentencia en el cuerpo del bucle,
normalmente por un contador, en caso contrario, el bucle es infinito.

REPRESENTACIN GRFICA:
88

DIAGRAMA DE FLUJO








PSEUDOCDIGO EN ESPAOL PSEUDOCDIGO EN INGLS
Mientras (Condicin) hacer
Acciones
Fin_Mientras
While ( Condicin) do
Acciones
End_While
DIAGRAMA NASSI SCHNEIDERMAN




MTODOS:
Existen tres mtodos para controlar o terminar un bucle:


1

Bucle controlado
por contador
(bucle de
conteo)
2

Bucle controlado
por condicin
3

Bucle controlado
por banderas o
interruptores
ACCIONES
V < =Vf
V Vi
While (Condicin) do

Acciones
89

1. BUCLE CONTROLADO POR CONTADOR
Un bucle controlado por contador es un bucle cuyas iteraciones se controlan por una variable, cuyo
valor representa a un contador. El mecanismo utilizado es una variable de control del bucle que acta
como contador.
Un bucle controlado por contador consta de tres partes, adems del cuerpo y de la condicin de salida:
Inicializacin de la variable de control del bucle
Comprobacin del valor de la variable de control del bucle
Incremento del valor de la variable del control del bucle
El formato de este bucle es:
1. Establecer variable contador a un valor inicial
2. While variable contador < valor final do
Proceso
Incrementar variable contador en X veces
3. End_While
Se utiliza un bucle controlado por contador, cuando se conoce con anticipacin el nmero de veces que
se va a realizar la accin, es decir cuntas iteraciones se deben ejecutar exactamente. En ese caso
decimos que esta estructura trabaja igual que la estructura For.


EJEMPLO

Elabore pseudocdigo para el caso en que se desean escribir los nmeros
del 1 al 100

Begin
Var
integer: i
i 1
While i <=100 do
print ( i )
i i + 1
End_While
End

2. BUCLE CONTROLADO POR CONDICIN
Los bucles controlados por centinela se utilizan cuando no se sabe con anticipacin, el nmero exacto
de iteraciones a realizar.
Existen dos tcnicas para realizar este bucle controlado por condicin:
1. Bucle controlado por el usuario
Este mtodo consiste simplemente en preguntar al usuario si existen ms entradas. Se sale del
bucle cuando el usuario lo decide. El bucle se realiza mientras haya ms entradas, usando una
expresin booleana Si/No. Si el usuario no desea continuar repitiendo el bucle, digita N o No,
segn se haya establecido la condicin de respuesta del usuario.
2. Bucle controlado por un valor centinela.
Un centinela es un valor especial utilizado para sealar el final de una lista de datos. El valor
elegido debe ser totalmente distinto de los posibles valores de la lista, para que se pueda
90

utilizar para sealar el final de la lista. Es decir que no debe pertenecer al rango de datos
vlido.



EJEMPLO
1. Disee un pseudocdigo para calcular la suma y producto de N
nmeros enteros, utilizando un bucle controlado por el usuario.

Begin
Var
integer : suma, prod, num
char : resp
suma 0
prod 1
Read ( resp )
While(resp < > N) and ( resp < > n) do
Read (num)
suma suma + num
prod prod * num
print (Desea continuar (S / N)?)
read ( resp )
End_While
print (Total de la suma es: , suma)
print (Total de producto es:, prod)
End

2. Disee un pseudocdigo para calcular la suma y producto de N nmeros enteros,
utilizando un bucle controlado por centinela.

Begin
Var
integer : suma, prod, num
suma 0
prod 1
read (num)
While ( num < > -1) do
suma suma + num
prod prod * num
read ( num )
End_While
print (Total de la suma es: , suma)
print (Total de producto es:, prod)
Fin

3. BUCLE CONTROLADO POR BANDERAS O INTERRUPTORES
Una bandera o interruptor (flag) es una variable lgica que se utiliza para conservar el estado
(verdadero o falso) de una condicin. El valor del interruptor debe inicializarse antes de comenzar el
bucle y debe cambiar su estado (valor) dentro del cuerpo del bucle.
Normalmente la bandera puede tomar los valores de 1 o 0, True o False Se utiliza para:
91


Recordar en un determinado punto de un programa la ocurrencia o no de un suceso anterior,
para salir de un bucle o para decidir en una instruccin alternativa qu accin realizar
Para hacer que dos acciones diferentes se ejecuten alternativamente dentro de un bucle.

EJEMPLO
Determinar si un nmero entero proporcionado por el usuario es primo.
Un nmero primo es un entero que no tiene ms divisores que l mismo
y la unidad. Elaborar Pseudocdigo:

Begin
Var
boolean: primo
integer: divisor, num, res
primo True
divisor 2
read (num)
while ((divisor < num) and (primo = T)) do
Res num mod divisor
if (res = 0) then
primo F
end_if
divisor divisor + 1
end_while
if primo = T then
print (Numero, num, es primo)
else
print (Numero, num, no es primo)
end_if
End




TAREA
Aplique los pasos de la metodologa para resolver un problema en los
siguientes ejercicios. Resolver utilizando estructura While, en su cuaderno de
tareas. Resuelva el primer ejercicio con bucle controlado por contador y los
otros con bucle controlados por condicin. Realice prueba manual con 3 datos
de prueba.


1. Calcular la suma y producto de los nmeros pares comprendidos entre 10 y 30 (ambos
inclusive).
2. Dados 100 nmeros enteros, encontrar cuntos de ellos son positivos, negativos o nulos.
3. Calcular el aumento de sueldo para N empleados de una empresa, bajo el siguiente
criterio:
Si el sueldo es menor a $650, el aumento es del 15%
Si el sueldo est comprendido entre $650 y $1000, el aumento es del 12%
Si el sueldo es mayor a $1000, el aumento es del 9%.
Imprimir lo siguiente: Cdigo del trabajador, nombre del trabajador, sueldo del
trabajador, monto total de la nmina, considerando el nuevo sueldo y el monto total de
los aumentos.
92



EJERCICIOS PRCTICOS
Apliquen los pasos de la metodologa para resolver un problema en los
siguientes ejercicios. Resolver los ejercicios en parejas, en hojas de papel
bond. Indiquen en cada caso, el tipo de bucle While utilizado y su
justificacin.

1. Obtener suma de los trminos de la serie: 2, 5, 7, 10, 12, 15, 17, .... 1800.
2. En un supermercado una seora pone en su carrito los artculos que va tomando de los
estantes. La seora quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado,
por lo que cada vez que toma un artculo anota su precio junto con la cantidad de artculos
iguales que ha tomado y determina cunto dinero gastar en ese artculo; a esto le suma lo
que ir gastando en los dems artculos, hasta que decide que ya tom todo lo que necesitaba.
Aydale a esta seora a obtener el total de sus compras.
3. En una tienda de descuento, las personas que van a pagar el importe de su compra llegan a la
caja y sacan una bolita de color, que les dir qu descuento tendrn sobre el total de su
compra. Determinar la cantidad que pagar cada cliente desde que la tienda abre hasta que
cierra. Se sabe que si el color de la bolita es roja, el cliente tendr un 40% de descuento; si es
amarilla, un 25% y si es blanca no tendr descuento.
4. La siguiente se llama Conjetura de Ulam en honor al matemtico S. Ulam:
Comience con cualquier entero positivo.
Si es par divdalo entre 2 y si es impar multiplquelo por 3 y agrguele 1.
Obtenga enteros repitiendo sucesivamente el proceso.
Al final obtendr el nmero 1, independientemente del entero inicial. Por ejemplo, cuando el
entero inicial es 26, la secuencia ser: 26 13 40 20 10 5 16 8 4 2 1
Leer un entero positivo y obtener e imprimir la sucesin de Ulam.


ESTRUCTURA REPETIR (REPEAT)

Se llama Repetir a la estructura algortmica que se ejecuta un nmero definido de veces hasta que la
condicin se torna verdadera.

Las reglas para construccin de una estructura usando Repeat, nos dicen que debemos declarar una
variable contador que debe inicializarse antes del ciclo e incrementarse dentro del ciclo. A diferencia de
la estructura While, la condicin ahora estar colocada al final del bucle para que primero ejecutemos
la instruccin y luego preguntamos si la condicin se cumple. Esto quiere decir, que en esta estructura
el bucle se realizar por lo menos una vez. Tambin podr observar que la condicin est al revs,
porque el bucle se repite hasta que la condicin se cumpla. En el bucle While, la condicin se evaluaba
mientras era cierta. Hoy en Repeat se evala mientras es falsa.
Igual que el bucle While, el bucle repeat puede ser controlado por contador, por condicin o por
banderas.

REPRESENTACIN PSEUDOCODIFICADA:

Espaol Ingls
Repetir Repeat
Acciones Acciones
Hasta que <condicin> Until <condicin>

93

REPRESENTACIN GRFICA:



















1. BUCLE REPEAT CONTROLADO POR CONTADOR:
Cuando el bucle es controlado por contador, se inicializa la variable contadora, luego se realiza el
proceso, se incrementa la variable contadora y despus se coloca la condicin. Como en el bucle While
se usa el smbolo menor o menor o igual, aqu usamos el smbolo mayor o mayor o igual; debido a que
la condicin es contraria a la del While, y porque se realizar mientras sea falsa. En ese caso decimos
que el bucle repeat se realizar por lo menos una vez.
2. BUCLE REPEAT CONTROLADO POR CONDICIN
Cuando el bucle es controlado por condicin, si es controlado por el usuario, se continuar cuando el
usuario lo indique pero se entrar siempre la primera vez y luego se coloca la condicin para que el
usuario decida si contina o sale.
Si la condicin es por centinela, al contrario del bucle While, ac realizaremos las acciones hasta que la
variable sea igual al centinela. Note que en el bucle While se hace mientras es diferente de centinela,
aqu es lo contrario.
3. BUCLE REPEAT CONTROLADO POR BANDERAS.
El proceso es igual que en el bucle Mientras, con la diferencia de que la condicin se coloca en la parte
de abajo. Generalmente cuando se usan banderas para controlar un bucle, se utilizan operadores
lgicos en la condicin.
Las banderas tambin se pueden usar como parte de un proceso, para controlar la secuencia de dichos
procesos.



TAREA

Investigue 2 ejemplos de bucles Repeat controlados por contador y por
condicin. Desarrolle los ejercicios en su cuaderno de tareas. Aplique en
cada caso los pasos de la metodologa para la solucin de un problema.

Inicializar
variable
ndice
Variable
ndice >
valor final
acciones
Incrementar variable
ndice
si
no



Repeat Until (condicin )



Repetir hasta que (Condicin)
94



EJEMPLO
Aplicar los pasos de la metodologa para la solucin de un problema para leer un
nmero entero N y calcular el resultado de la siguiente serie:
1 1/2+ 1/3 1/4 +.... +/- 1/N. Resolveremos el problema utilizando bucle
Repeat controlado por contador y usando banderas.

DEFINICIN DEL PROBLEMA
El mismo enunciado.

ANLISIS DEL PROBLEMA
Salidas: suma de los trminos de la serie.
Entradas: nmero de trminos para la serie
Datos adicionales: ninguno.
Clculos:
Serie serie +/- (1/I)
Seccin de Declaraciones:
Var
Integer: I,N
Real: serie
Char: band

PSEUDOCDIGO

Begin
Serie 0
I 1
Read (N)
band T
Repeat
If band = T then
Serie serie + (1/I)
band F
else
Serie serie (1/I)
band T
end_if
I I + 1
Until (I > N)
print (serie)
End

TAREA
1. Elabore pseudocdigo para el ejercicio anterior, usando bucle Repeat
controlado por condicin.
2. Aplique los pasos de la metodologa para la solucin de un problema
para resolver los siguientes ejercicios:

a. Calcular la suma y producto de los nmeros pares comprendidos entre 10 y 30 (ambos inclusive).
b. Dados 100 nmeros enteros, encontrar cuntos de ellos son positivos, negativos o nulos.
95

c. Calcular el aumento de sueldo para N empleados de una empresa, bajo el siguiente criterio:
Si el sueldo es menor a $650, el aumento es del 15%
Si el sueldo est comprendido entre $650 y $1000, el aumento es del 12%
Si el sueldo es mayor a $1000, el aumento es del 9%.
Imprimir lo siguiente: Cdigo del trabajador, nombre del trabajador, sueldo del trabajador, monto
total de la nmina, considerando el nuevo sueldo y el monto total de los aumentos.


EJERCICIOS PRCTICOS
Apliquen los pasos de la metodologa para resolver un problema en los
siguientes ejercicios. Resolver los ejercicios en parejas, en hojas de papel
bond. Indiquen en cada caso, el tipo de bucle Repeat utilizado y su
justificacin.
1. En una librera, los clientes hacen pedidos de libros, cuadernos y revistas con las condiciones
siguientes: los libros tienen un descuento del 22%, las revistas del 16% y los cuadernos del
10%. Los datos que se ingresan para cada tipo de artculo son: la cantidad pedida, el precio
unitario y el tipo de pago. Si el pago es al contado, se tiene un descuento de 6% en cualquiera
de los casos. Calcular e imprimir el costo total del pedido considerando el tipo de pago para
cada cliente y el total que pagan al final del da N clientes.
2. Determinar la media de ventas de X empleados. Cada empleado hace N ventas, el proceso se
debe repetir si el usuario lo requiere.
3. Un vendedor ha hecho una serie de ventas y desea saber cuntas de stas fueron de $200 o
menos; cuntas fueron mayores a 200 pero inferiores a 400 y cuntas de 400 o ms. Elabore
la informacin para ese vendedor despus de leer los datos de entrada. Considere 1 como
fin de datos.
4. Se tienen las calificaciones de un grupo de alumnos que se examinaron en literatura y el
profesor necesita calcular e imprimir las calificaciones clasificadas dentro de los rangos
siguientes:
0 .. 3.99
4.0 .. 5.99
6.0 .. 7.99
8.0 .. 10.0 -1 para fin de datos

CONVERSIN DE ESTRUCTURAS.
Las estructuras repetitivas e iterativas sirven para resolver problemas en los cuales el mismo proceso
se repite un nmero determinado de veces. El mismo problema puede resolverse con cualquiera de las
tres estructuras estudiadas, siempre y cuando se cumplan ciertos requisitos que corresponden a cada
estructura. A continuacin se muestra un cuadro comparativo de las tres estructuras, a tomar en
cuenta para resolver un problema.
96

CUADRO COMPARATIVO DE LAS TRES ESTRUCTURAS
FOR WHILE REPEAT
Se usa cuando conocemos el
nmero de veces que se har el
bucle
Se usa cuando sabemos o no el
nmero de veces que se har el
bucle
Se usa cuando sabemos o no el
nmero de veces que se har el
bucle
Se maneja con contadores Se puede manejar con
contadores y con centinelas
Se puede manejar con
contadores y con centinelas
Se inicializa y se incrementa
automticamente
Si se controla con contadores, se
debe inicializar e incrementar
Si se controla con contadores, se
debe inicializar e incrementar
Es una estructura repetitiva Es una estructura iterativa Es una estructura iterativa
Pueden usarse banderas o
acumuladores
Pueden usarse banderas o
acumuladores
Pueden usarse banderas o
acumuladores
Tiene su propio smbolo en el
Flujograma.
No tienen un smbolo en el
flujograma, usan el de decisin
No tienen un smbolo en el
flujograma, usan el de decisin
Se realiza cero o ms veces Puede en algunos casos no
realizarse ni una vez
Se realiza por lo menos una vez
La condicin est implcita en la
definicin
La condicin se sita al inicio del
bucle
La condicin se sita al final del
bucle
Se realiza mientras la condicin
evaluada es verdadera
Se realiza mientras las condicin
evaluada es verdadera
Se realiza hasta que la condicin
evaluada se hace verdadera (se
hace cuando es falsa)


TAREA
Aplicar los elementos de la fase de Resolucin de un problema para los
siguientes ejercicios. Resolver cada problema por las tres estructuras.
Hacer tambin prueba manual con pequeos datos de prueba.
1. Una compaa de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la
semana. Su poltica de pagos es que un vendedor recibe un sueldo base y 10% extra por
comisiones de sus ventas. El gerente de su compaa desea saber cunto dinero obtendr en la
semana cada vendedor por concepto de comisiones por las tres ventas realizadas y cunto
tomando en cuenta su sueldo base y sus comisiones.
2. Dados N nmeros enteros como datos, obtener:
a) Cuntos nmeros ledos fueron mayores que cero.
b) el promedio de los nmeros positivos
c) el promedio de todos los nmeros

97

BUCLES ANIDADOS
Los bucles son anidados cuando estn dispuestos de tal modo que unos son interiores a otros. Las
reglas para construir las estructuras anidadas establecen que la estructura interna debe estar incluida
totalmente dentro de la externa y no debe existir solapamiento.
Las variables ndices o de control de los bucles toman valores de modo tal que por cada valor de la
variable ndice del ciclo externo se debe ejecutar totalmente el bucle interno.



EJEMPLOS:
Ejemplo 1:
Calcular el factorial de N nmeros enteros ledos de teclado.
El problema consistir en realizar una estructura de N iteraciones aplicando el
factorial de un nmero.
El pseudocdigo es el siguiente:

Begin
Read (n)
For i = 1 to n do
read (numero)
fact 1
for j = 1 to numero do
fact fact * j
End_for
Print (El factorial del numero, numero, es, fact )
End_for
Fin


FLUJOGRAMA:






















Begin
n
I=1, n, 1
numero
fact 1
j=1, numero, 1
fact fact * j fact
End
98

Begin
Read (n)
For i=1 to n do

Read (numero)

fact 1

For j=1 to numero do

fact fact * j

End_for

Print((El factorial del numero, numero, es,
Fact)

End_for
End




EJEMPLO 2
Imprimir todos los nmeros primos entre 2 y 100 inclusive.

PSEUDOCDIGO:

Begin
For i = 2 to 100 do
primo T
divisor 2
While ( divisor <= sqrt( i ) ) and primo = T do
If i mod divisor = 0 then
primo F
else
divisor divisor + 1
End_if
End_While
If primo = T then
Print ( i, )
End_if
End_For
End







EJERCICIOS DE APLICACIN
Complete el ejercicio con su Flujograma y N-S.
Diagrama N-S
99




EVALUACIN DEL TEMA
A continuacin se le presentan una serie de preguntas, subraye la/las
respuesta(s) correcta(s) para cada enunciado. (Tiempo: 45 minutos).

1. Consiste en asignarle al contador un valor y se sita antes y fuera del bucle.
a) Totalizacin b) iteracin c) inicializacin

2. Es el conjunto de instrucciones que se ejecuta repetidamente en una estructura.
a) Centinela b) Contador c) Bucle

3. Estructura algortmica que se usa frecuentemente cuando se conoce de antemano el nmero
de veces que se desea ejecutar las acciones de un bucle.
a) While b) For c) Repeat

4. Es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones contenidas en
un ciclo.
a) iteracin b) lazo o bucle c) Bandera

5. Estructura algortmica que se ejecuta en tanto la condicin evaluada resulta verdadera.
a) Repeat b) While c) For

6. Estructura en la cual la condicin se sita al final de la secuencia.
a) While b) Repeat c) For

7. Las estructuras Repetir y Mientras se conocen con el nombre de:
a) Estructuras Iterativas b) Estructuras Repetitivas c) Banderas

8. Estructura en la cual el bucle contina hasta que la condicin es verdadera.
a) While b) For c) Repeat

9. Estructura algortmica que siempre se ejecuta al menos una vez.
a) Repeat b) While c) For
10. Variable cuyo valor se incrementa o decrementa en una cantidad constante cada vez que se
produce la accin.
a) Centinela b) Contador c) Acumulador

11. Campo de memoria cuya misin es almacenar cantidades variables resultantes de sumas
sucesivas.
a) Contador b) Acumulador c) Bandera

12. Son variables que pueden tomar dos valores durante la ejecucin de un programa como True o
False, 1 0.
a) Centinelas b) Banderas c) Contadores

13. Estructura en la cual debe haber una condicin que debe ser evaluada antes de entrar al bucle,
no se hace en forma automtica.
a) For b) Repeat c) While

100

14. La estructura Desde/Para se conoce con el nombre de:
a) Estructura Iterativa b) Estructura Repetitiva c) Inicializacin

15. Es un valor que no corresponde al rango de datos vlido y sirve para terminar la ejecucin del
bucle.
a) Bandera b) Acumulador c) Centinela

16. Es la estructura que no puede utilizar centinelas.
a) For b) Repeat c) While

17. Esta estructura posee un contador que se inicializa y se incrementa automticamente.
a) While b) Repeat c) For

18. Bucle cuyas iteraciones se conocen y verifican a travs de una variable de control.
a) Controlado por contador b) controlado por banderas c) controlado por condicin

19. Mtodo que consiste en preguntar al usuario si existen ms entradas para continuar o terminar
el bucle.
a) Bucle controlado por centinela b) Bucle controlado por el usuario
c) Bucle controlado por bandera
20. Seleccione las variables que se pueden utilizar en una estructura repetitiva
(Respuesta mltiple)


contadores

acumuladores

centinelas

banderas



II PARTE.
PARA ANALIZAR.
Son verdaderas las siguientes afirmaciones?. Responda si o no,
marcando con una X en el cuadro respectivo. (Tiempo 10 min.)

Afirmacin
Es cierto?
SI NO
1. Un acumulador y un contador, siempre se tienen que inicializar con cero para
poderlos utilizar.


2. Cuando se tiene un problema donde no sabemos cuntas veces vamos a
realizar la accin, siempre tenemos que resolverlo utilizando centinelas; de lo
contrario no se puede resolver.

101

3. Las banderas siempre deben inicializarse con False para poderlas utilizar.
4. Los bucles While y Repeat trabajan de la misma forma, pero en forma inversa.
5. El bucle For y el bucle While se utilizan siempre que la condicin resulta
verdadera.





III. PARTE. SOPA DE LETRAS

En la siguiente sopa de letras, encontrar 13 trminos estudiados en ste
tema. Encierre en crculos las palabras encontradas. (Tiempo 5 min.)

C O N D I C I O N A D R
C I A S B A N D E R A I
B A C E K O L M I L A T
U Y U L A M A G E T J E
C T M P S L A N A S E R
L M U D A C I C L O F A
E A L P L T I M D O U C
S E A L E N I T N E C I
T R D E C R E M E N T O
K C O N T A D O R R C N
F O R T U N A D M P L A




TERMINOLOGA APLICADA

Acumulador: es un campo de memoria que suma sobre s misma un conjunto de valores para
de esta manera tener la suma de todos ellos en una sola variable. Se utiliza en aquellos casos
en que se desea obtener el total acumulado de un conjunto de cantidades, siendo preciso
inicializarlo con el valor cero.
102

Bandera: es una variable lgica que se utiliza para conservar el estado (verdadero o falso) de
una condicin. El valor del interruptor debe inicializarse antes de comenzar el bucle y debe
cambiar su estado (valor) dentro del cuerpo del bucle.
Bucle: es un segmento de un algoritmo o programa cuyas instrucciones se repiten un nmero
determinado de veces, mientras se cumple una determinada condicin especfica (existe o es
verdadera la condicin).
Bucle finito: Es el que se procesa muchas veces, segn la condicin lo permita y nos genera
una salida.
Bucle Infinito: Cuando un bucle se estar repitiendo indefinidamente, ya que no existe una
condicin de salida del algoritmo.
Contador: es una variable cuyo valor se incrementa o decrementa en una cantidad fija en
cada iteracin.
Centinela: es un valor especial utilizado para sealar el final de una lista de datos. El valor
elegido debe ser totalmente distinto de los posibles valores de la lista, para que se pueda
utilizar para sealar el final de la lista. Es decir que no debe pertenecer al rango de datos
vlido.
Iteracin: Es cada una de las diferentes pasadas o ejecuciones de todas las instrucciones
contenidas en el bucle.




BIBLIOGRAFA
Fundamentos de programacin. Algoritmos, estructuras de datos y objetos. Luis Joyanes
Aguilar. Editorial Mc Graw Hill. Espaa.
Metodologa de la programacin. Diagramas de flujo, algoritmos y programacin. Luis Joyanes
Aguilar. Editorial Mc Graw Hill. Mxico.
Fundamentos de Programacin. Libro de Problemas. Luis Joyanes Aguilar, Luis Rodrguez
Baena, Matilde Fernndez Azuela. Editorial Mc Graw Hill. Espaa.
Fundamentals of Programming. Student Guide. NIIT. India.








103

TEMA 3. ESTRUCTURAS DE DATOS Y SUBALGORITMOS

CONCEPTOS
Todas las variables que se han considerado hasta ahora son de tipo simple. Una variable de tipo simple
consiste de una sola caja de memoria y slo puede contener un valor cada vez.
Una variable de tipo estructurado consiste en toda una coleccin de casillas de memoria.
Los tipos de datos estudiados: entero, real, alfabtico son considerados como datos de tipo simple,
puesto que una variable que se define con alguno de estos tipos slo puede almacenar un valor a la
vez, es decir, existe una relacin de uno a uno entre la variable y el nmero de elementos (valores)
que es capaz de almacenar. En cambio un dato de tipo estructurado, como el arreglo, puede
almacenar ms de un elemento (valor) a la vez, con la condicin de que todos los elementos deben ser
del mismo tipo, es decir, que se puede tener un conjunto de datos enteros, reales, etc.


3.1.1. Introduccin a las Estructuras de Datos.
ESTRUCTURA DE DATOS es una coleccin de datos que se caracterizan por su organizacin y las
operaciones que se definen en ella.
Los datos estructurados, llamados tambin estructuras de datos, son una coleccin o conjunto de
datos simples que tiene el mismo nombre.

LAS ESTRUCTURAS DE DATOS SE CLASIFICAN EN:

a) ESTRUCTURA DE DATOS ESTTICAS:
Son aquellas en las que el espacio ocupado en memoria se define en tiempo de compilacin y no
puede ser modificado durante la ejecucin del programa. Entre ellas tenemos:
Arrays
Registros
Archivos

b) ESTRUCTURAS DE DATOS DINMICAS:
Son aquellas en las que el espacio ocupado en memoria puede ser modificado en tiempo de ejecucin.
Corresponden a este tipo:
Lineales (Pilas, Colas y listas enlazadas)
No lineales (rboles y grafos).

Estas estructuras no son soportadas en todos los lenguajes. La eleccin de la estructura de datos
idnea, depender de la naturaleza del problema a resolver, y en menor medida, del lenguaje.
Las estructuras de datos tienen en comn que un identificador, nombre, puede representar a mltiples
datos individuales.

ARRAYS:
Un arreglo (array) es una coleccin de datos del mismo tipo, que se almacenan en posiciones
consecutivas de memoria y reciben un nombre comn. Para referirse a un determinado elemento de
un array se deber utilizar un ndice, que especifique su posicin relativa en el array.
15


Un arreglo es una coleccin finita, homognea y ordenada de elementos.

15
Tomado de http://www.mailxmail.com/curso-aprende-programar/estructuras-datos-arreglos
3.1 ESTRUCTURAS DE DATOS
104

Finita: Todo arreglo tiene un lmite; es decir, debe determinarse cul ser el nmero mximo de
elementos que podrn formar parte del arreglo.
Homognea: Esto significa que todos los elementos del arreglo deben ser del mismo tipo. (Todos
enteros, todos reales, todos booleanos, etc.)
Ordenada: Se puede determinar cul es el primer elemento, el segundo, el tercero,.... y el n-simo
elemento. Tambin el orden es significativo, el orden viene dado por el subndice de un vector.

MINI CONTROL DE LECTURA


INVESTIGACIN INDIVIDUAL

1. Investigue cules son las caractersticas de los arreglos.
2. Cmo se clasifican los arreglos segn sus dimensiones.
3. Cules son las operaciones que se pueden realizar con
vectores. Escribe ejemplos de cada una.


3.1.2 ARREGLOS EN UNA DIMENSIN.
DEFINICION.
Estn formados por un conjunto de elementos de un mismo tipo de datos que se almacenan bajo un
mismo nombre, y se diferencian por la posicin que tiene cada elemento dentro del arreglo de datos.
Cuando se define un arreglo, es necesario hacerlo como una variable. En la parte de declaraciones de
variables se utiliza el siguiente formato:
NombreVariable: Arreglo[tamao] Tipo de dato
Donde:
NombreVariable Es el nombre de identificacin de la variable
Arreglo Es la palabra reservada que indica que la variable es un arreglo
Tamao Es un nmero entero que indica la cantidad de elementos que tendr el arreglo,
por ejemplo 10, 20, 50, etc.
Tipo de dato Es el tipo de dato que tendr el conjunto de elementos del arreglo
que se est definiendo, puede ser Entero, Real, Carcter, etc.

Al declarar un arreglo, se debe inicializar sus elementos antes de utilizarlos.
Entonces, para declarar un arreglo tiene que indicar su tipo, un nombre nico y la cantidad de
elementos que va a contener. Por ejemplo, las siguientes instrucciones declaran tres arreglos distintos:
char nombre[30];
Float costo_partes[50];
Int edad_empleados[100];
Float precios_acciones[25];

A los arreglos en una dimensin se les llama tambin Vectores o Listas. Los vectores se representan de
forma lineal, indicando el valor del ndice asociado a cada componente en la parte inferior, y el nombre
del arreglo en la parte superior. Estos vectores se pueden representar, como filas o como columnas de
datos.



EJEMPLO
Sea un vector Calificaciones de 100 componentes:
En forma de columna se representara as:

105




















Los componentes del vector van de arriba hacia abajo.

En forma de fila se representa as:

CALIFICACIONES




0 1 2 3 4 5 99

Los componentes del vector se recorren de izquierda a derecha.
Declaracin del vector de calificaciones:
Var
calificaciones: array [0..99] of Real
O de la otra forma:
Real: calificaciones[100]


Para acceder a valores especficos del arreglo, use un valor de ndice que apunte al elemento deseado.
Por ejemplo, para acceder al primer elemento del arreglo calificaciones debe utilizar el valor de ndice
0 ( calificaciones[0] ).

INICIALIZACIN Y ASIGNACIN DE VALORES
Como se deca anteriormente, antes de utilizar un arreglo es necesario inicializarlo:
calificaciones[0];
Para inicializar todos los elementos de una vez, se colocan dentro de un bucle, comnmente una
estructura For que va del primer elemento al ltimo que contiene el arreglo.
Para asignar un valor a un elemento del arreglo se hace por ejemplo:
calificaciones[0] 100;


..


Calificaciones[0]
Calificaciones[1]
Calificaciones[2]
............................
Calificaciones[97]
Calificaciones[98]
Calificaciones[99]


106

Cuando se usan arreglos, una operacin comn es usar una variable ndice para acceder a los
elementos de un arreglo. Suponiendo que la variable ndice I contiene el valor 3, la siguiente
instruccin asigna el valor 400 a valores[3]:
valores[I] 400;


EJEMPLO
Aplicar las fases para la resolucin de un problema para leer un vector de
20 nmeros enteros y a continuacin escribir en un vector A todos los
nmeros negativos y en un vector B todos los positivos o iguales a cero.
Imprimir dichos vectores.
ANLISIS DEL PROBLEMA
Salidas: vectores A y B
Entradas: vector de 20 nmeros enteros
Datos adicionales:
if numero > 0 then positivo
else negativo o cero

Seccin de Declaraciones:
Var
Entero: Num[20], i, j,k,A[20], B[20]


Pseudocdigo:

Begin
j 1
k 1
For i=1 to 20 do
Read(Num[i])
If (Num[i] >0) then
A[j] Num[i]
j j + 1
else
B[k] Num[i]
k k + 1
end_if
end_for
for i=1 to j do
print(A[i])
end_for
for i=1 to k do
print(B[i])
end_for
End


Diagrama N-S


107




FLUJOGRAMA:





































no
yes
Begin
j 1
k 1

i=1,20,1
Num[i]
Num[i]
>0
A[j] Num[i]
j j + 1

B[k] Num[i]

k k + 1

i=1, j, 1
A [ i ]
i=1, k, 1
B [ i ]
End
108



EJERCICIO

Realice prueba manual con 5 datos de prueba.



EJERCICIOS PRCTICOS
Apliquen las fases para la resolucin de un problema en los siguientes
ejercicios. Trabajen en grupos de 4 y presenten un reporte en hojas de papel
bond.
1. Leer dos vectores VEC1 y VEC2 de 20 posiciones cada uno. Se desea imprimir si dichos
vectores son iguales. (Se consideran iguales cuando cada elemento de uno es igual a cada
elemento del otro). Imprimir los vectores son iguales o los vectores no son iguales, de
acuerdo al resultado.
2. Leer un vector Estatura de 30 elementos. Se desea imprimir el promedio de esas estaturas.
Imprimir adems, las estaturas iguales o inferiores a la media.
3. Leer un vector de 20 elementos. Se desea ordenar dicho vector en forma ascendente (menor a
mayor) e imprimir el vector ordenado.

RBRICA PARA EVALUAR EL TRABAJO EN GRUPO:

Criterios Dominio Bajo
1-4
Dominio Medio
5 - 7
Dominio Alto
8 - 10
Clasificacin Grupal
(5 grupos)
G1 G2 G3 G4 G5
Anlisis
(10%)
No identifican
todas las partes
del anlisis
Identifican algunas
partes con
dificultad o ayuda
Identifica
adecuadamente
las partes del
anlisis

Algoritmo
(40%)
No elaboran el
algoritmo de
cada ejercicio
Elaboran algoritmo
en forma
incompleta
Elabora
correctamente los
tres elementos
del algoritmo

Lgica
Aplicada
(30%)
La lgica
utilizada no
resuelve el
problema
La lgica utilizada
no es la ms
apropiada
Completan los
ejercicios con
buena lgica

Orden y
limpieza
(10%)
El trabajo est
desordenado,
sucio o ilegible
La informacin no
est
completamente
ordenada y aseada
Elaboran reporte
en forma
ordenada y
legible.

109

Auto
evaluacin
(10%)
(Es nota individual, cada alumno realiza esta parte).
Calificacin total



TAREA

Para los siguientes ejercicios realice anlisis del problema y luego elabore
pseudocdigo y Flujograma.

1. Calcular la suma de todos los elementos de un vector de dimensin 50, as como su media
aritmtica y su producto.
2. Hacer diferentes listados de una lista de 15 nmeros segn el siguiente criterio:
Si nmero >=0 y <50, ponerlo en lista1
Si nmero >=50 y <100, ponerlo en lista2
Si nmero>=100 y <=150, ponerlo en lista3
3. Investigue qu son los nmeros de Fibonacci. Genere el algoritmo para los K primeros
nmeros de Fibonacci.
4. Dados dos vectores de tipo entero A y B, calcular el producto de dichos vectores.
5. Suponga que en una eleccin hubo 12 candidatos. Los votos para cada candidato se teclean de
manera desorganizada por ej. 1 5 7 5 1 12 10 7 .... final de datos 1. Encontrar:
a. El nmero de votos de cada candidato al final de la eleccin.
b. El candidato ganador, el nmero de votos que obtuvo y el porcentaje correspondiente
del total de la eleccin. (Suponemos que el candidato ganador no empat en nmero
de votos con otro candidato).


3.1.3 ARREGLOS EN DOS DIMENSIONES

Una matriz es una tabla con nmeros distribuidos en filas y columnas de forma que todas las filas
tienen el mismo nmero de elementos y lo mismo para todas las columnas.
Es un conjunto de datos homogneo, finito y ordenado, donde se hace referencia a cada elemento por
medio de dos ndices. El primero de los ndices se utiliza generalmente para indicar los renglones
(filas) y el segundo para indicar columnas, por lo cual cada componente de la matriz se direcciona
mediante su Nombre, seguido de los dos ndices separados por coma y entre parntesis.
Tambin puede definirse como un arreglo de arreglos.
La dimensin u orden de una matriz es una forma de definir el nmero de filas y de columnas que esta
tiene. Si tiene m filas y n columnas, se dice que la dimensin u orden de la matriz es de m x n. Esto
quiere decir que internamente en memoria se reservan MxN posiciones consecutivas para almacenar
todos los elementos del arreglo.
A los elementos de una matriz se les denota por A
ij
siendo i el n de fila y j el n de columna. As el
elemento a
34
sera el elemento de la tercera fila que ocupa la cuarta columna.


110

REPRESENTACIN GRFICA DE MATRICES:
Se representa de forma tabular, de igual forma a la utilizada en Matemtica, situando las filas
horizontalmente y las columnas en forma vertical.


a
11
a
12
.... a
1N

a
21
...
... ..... .... ....
a
M1
a
M2
.... a
MN



DECLARACIN DE UNA MATRIZ

Id_ar r egl o=ar r egl o[l i mi nf . . l i msup, l i mi nf c. . l i msupc] de t i po


Filas Columnas

Por ejemplo: 1 I M
1 J N

Se representa en forma de una tabla:
1 2 J N
.......
.......
.......
........
........


Pseudocdigo para el recorrido por filas:
Const
M=valor1
N= valor2
Tipo
Array[1..M,1..N] de real:matriz
Var
Matriz: A
Desde i = 1 hasta M hacer
Desde j = 1 hasta N hacer
Escribir (A[i,j])
Fin_desde
Fin_desde

El recorrido por columnas se hace de manera similar, invirtiendo el sentido de los ndices.
Desde j = 1 hasta N hacer
Desde i = 1 hasta M hacer
Escribir (A[i,j])
Fin_desde
1
2

I
M
A =
111

Fin_desde
El nmero de elementos que contendr una fila viene dado por
U1-L1+1 (Valor mayor valor menor +1)
Igualmente, el nmero de elementos para la columna es U2-L2+1
As, el nmero total de elementos de la tabla es (U2-L2+1)*(U1-L1+1)

MINI CONTROL DE LECTURA


INVESTIGACIN INDIVIDUAL
Investigue los siguientes conceptos y ponga ejemplo de cada uno. Haga
pseudocdigo para representar el ejemplo.

1. Diagonal principal
2. Matriz cuadrada
3. Matriz Escalar
4. Matriz Diagonal
5. Matriz Identidad
6. Matriz Rectangular
7. Matriz Transpuesta
8. Matriz Nula
9. Matriz Simtrica
10. Matriz Inversa

EJEMPLO
Se tiene informacin sobre las calificaciones de 6 exmenes de un grupo de
30 alumnos. Los datos sobre estos exmenes se proporcionan de la
siguiente manera:

Cal
1,1
Cal
1,2
............ Cal
1,6

Cal
2,1
Cal
2,2
............ Cal
2,6

.......................
Cal
30,1
Cal
30,2
........ Cal
30,6

Donde Cali,j es una variable real que expresa la calificacin que obtuvo el alumno i en el examen j.
1 i 30, 1 j 6
Calcular lo siguiente:
a) el promedio de calificaciones de cada uno de los 6 exmenes
b) el promedio de cada alumno
c) el tipo (nmero) de examen que tuvo el mayor promedio de calificacin. Escriba tambin dicho
promedio.

El pseudocdigo para el ejemplo es el siguiente:
Begin
For i=1 to 30 do
For j=1 to 6 do
Print (Escriba la calificacin del alumno,i, en el examen,j)
Read (cal[ i,j ]) //lectura de las calificaciones de los 6 exmenes de los 30 alumnos
End_for
112

End_for
//clculo del promedio de calificaciones de cada uno de los exmenes
For j=1 to 6 do
sum 0
For i=1 to 30 hacer
sum sum + cal[i,j]
end_for
prom[j] sum/30
print(promedio examen, j , prom[j])
End_for

//clculo del promedio de cada alumno
For i=1 to 30 do
sum 0
For j=1 to 6 do
sum sum + cal[i,j]
End_for
print(promedio del alumno , i, sum/6)
End_for

//clculo del tipo de examen que tuvo el mayor promedio de calificacin.
Examen 1
promayor prom[1]
For j=2 to 6 do
if promayor < prom[j] then
promayor prom[j]
Examen j
End_if
End_for
Print (el examen, Examen, obtuvo el mayor promedio=, promayor)
End
E X M E N E S
1 2 3 4 5 6
1 Cal
1,1
Cal
1,2
Cal
1,3
Cal
1,4
Cal
1,5
Cal
1,6

2 Cal
2,1
Cal
2,2
Cal
2,3
Cal
2,4
Cal
2,5
Cal
2,6

3 . . . . . .
4 . . . . . .
5 . . . . . .
6 . . . . . .
7 . . . . . .
8 . . . . . .
9 . . . . . .
10 . . . . . .
11 . . . . . .
.. . . . . . .
. . . . . . .
. . . . . . .
30 Cal
30,1
Cal
30,2
Cal
30,3
Cal
30,4
Cal
30,5
Cal
30,6


A
L
U
M
N
O
S
113


EJERCICIOS PRCTICOS
Aplicar los elementos de la fase de Resolucin de un problema para los
siguientes ejercicios. Resuelvan en parejas y entreguen su reporte
escrito en hojas de papel bond.

1. Se tiene una tabla T de orden N. Calcular la suma de sus elementos.
2. Sumar el nmero de elementos positivos y el de negativos de una tabla T de n filas y m columnas.
3. Sea A una matriz 5X4, de enteros positivos. Escribir la fila que contiene el nmero menor y la
columna que contenga el nmero mayor.
4. Se tienen dos matrices A y B. Se desea saber si son idnticas o no. Recuerde que debe leer el
nmero de filas y columnas de dichas matrices.



TAREA
Aplicar los elementos de la fase de Resolucin de un problema para los
siguientes ejercicios. Resuelva en su cuaderno de tareas.
1. Determinar si una matriz es simtrica (Si Ai,j = Aj,i). Como salida da un valor booleano.
2. Visualizar la matriz transpuesta de una matriz M de 6X7 elementos.
3. Dada una matriz A(NXN), escribir la diagonal de esa matriz.
4. Sean A(mXn) y B(n) dos arreglos de dos y una dimensin respectivamente. Construya el algoritmo
que asigne valores a A a partir de B teniendo en cuenta los siguientes criterios:
a) A[i,j]=B[i] si i<=j
b) A[i,j]=0 si i>j Para 1 M 30 1 N 20 y A[1..M,1..N], B[1..N]




MINI CONTROL DE LECTURA

Traslade el nmero de la respuesta correcta a la casilla de en medio segn
corresponda.

1. Escalar Matriz que multiplicada por la original nos da la identidad.
2. Diagonal Matriz donde todos sus elementos son ceros.
3. Simtrica Matriz que tiene todos sus elementos nulos, excepto los de
la diagonal principal que son iguales.
4. Nula Matriz resultante de intercambiar filas por columnas.
5. Inversa Matriz donde todos sus elementos son ceros, excepto los
de la diagonal principal.
6. Identidad Matriz cuadrada que es igual a su transpuesta y sus i,j son
iguales a sus j,i.
7. Rectangular Matriz que tiene unos en su diagonal principal y ceros en
las dems posiciones.
8. Cuadrada En una matriz es la que est formada por los elementos
donde coincide el nmero de fila con el de columna: i=j
9. Diagonal principal Matriz cuyo nmero de filas es igual al nmero de
columnas
10. Transpuesta Matriz de orden mxn donde el nmero de filas es distinto
del nmero de columnas
114



Una celda es la interseccin de una fila con una columna.

3.1.4 CADENAS DE CARACTERES

Una cadena de caracteres (string en ingls) es un conjunto de caracteres incluido el espacio en
blanco- que se almacenan en un rea contigua de la memoria. Es una sucesin de caracteres que
pueden ser letras, nmeros o caracteres especiales. Su longitud puede variar de 0 a 255 caracteres.
Generalmente las cadenas de caracteres se almacenan en arreglos para su fcil manipulacin. Se
conocen en este caso como arreglos de caracteres.



INVESTIGACIN INDIVIDUAL
Investigue las funciones bsicas para el manejo de cadenas. Entre ellas
tenemos funciones para asignacin, comparacin, bsqueda, extraccin,
concatenacin. Escribe el nombre de la funcin y para qu se usa. Escribe
ejemplos. Elabora un reporte en tu cuaderno de tareas.


Las variables de cadena se dividen en:
Estticas. Su longitud se define antes de ejecutar el programa y no puede cambiarse a lo largo
de este.
Semiestticas. Su longitud puede variar durante la ejecucin del programa, pero sin
sobrepasar un lmite mximo declarado al principio.
Dinmicas. Su longitud puede variar sin limitacin dentro del programa.
Segn el cdigo ASCII hay un orden de caracteres, as A es menor que C. El valor de A es 65 y el
de C es 67

Representacin:
Una cadena tipo carcter (char) se representa entre comillas simples. Ejemplo: a. Se puede referir a
un solo elemento de una cadena.
Una cadena tipo arreglo de caracteres (string) se representa entre comillas dobles: hola.
Declaracin:
char c = 'a';
char str[5] = "hola";



EJEMPLOS
1. El siguiente pseudocdigo sustituye las e por *.

Var: char str[80]
Begin
Print (Digite una palabra:)
RECUERDE EL CONCEPTO:
Se llama matriz de orden "m n" a un conjunto rectangular de
elementos aij dispuestos en m filas y en n columnas. El orden de una matriz
tambin se denomina dimensin o tamao, siendo m y n nmeros naturales.
Tomado de www.utpl.edu.ec/eva/descargas/material/184/G15103.7.pdf
115

Read (str)
For i=1 to length(str) do
if str[i] = e entonces
str[i] = *
end_if
End_for
Print (str)
End

En el ejemplo, la funcin length devuelve la longitud de la cadena leda. Al declarar la cadena, se hace
con char y el tamao mximo de la cadena es 80 caracteres.
2. Se desea eliminar los blancos de una frase dada terminada en un punto. Se supone que es
posible leer los caracteres de la frase de uno en uno.
Pseudocdigo:
Var char f[80]
Begin
i 1;
j 0
f[i] getchar( ) //getchar( ) es una funcin que permite la lectura de un carcter
Repeat
if f[i] < > then
j j + 1
g[j] f[i]
End_if
i i +1
f[i] getchar()
Until f[i] = .
// escritura de la nueva frase g
For i = 1 to j do
print (g[i]) //no avanzar lnea
End_for
End

En el ejemplo, se ha utilizado la funcin getchar() que lee un nico carcter a la entrada. La estructura
Repeat permite leer todos los caracteres hasta que encuentre un punto, que el usuario deber
introducir para finalizar la entrada.




MINI CONTROL DE LECTURA

Traslade el nmero de la respuesta correcta a la casilla de en medio
segn corresponda.
1. Concat() Copia una cadena dentro de otra.
2. Strreverse() Encuentra el punto medio de una cadena.
3. Sub() Compara dos cadenas c1 y C2; devuelve 0 si C1=C2, 1 si
C1>C2 y -1 si C1<C2.
4. Getchar() Devuelve la longitud de una cadena.
5. Mid() Lee un carcter de una cadena.
116

6. Pos() Convierte una cadena de mayscula a minscula.
7. Strcpy() Une varias cadenas de caracteres en una sola,
conservando el orden de los caracteres de cada una.
8. Length() Extrae una subcadena de una cadena a partir de una
posicin y nmero de caracteres dados.
9. Strlwr() Invierte el contenido de una cadena.
10. Strcmp() Busca una subcadena dentro de una cadena y si la
encuentra devuelve la posicin donde comienza o cero si
no la encuentra.


EJERCICIOS PRCTICOS
Para los siguientes ejercicios, elaboren pseudocdigo. Trabajar en parejas y
entregar reporte escrito en pginas de papel bond.

1. Se desea leer una cadena de caracteres y escribirla en un arreglo A de forma invertida,
utilizando operaciones con cadenas. No usar step ni strreverse(). Var cadena: string[80].
2. Leer una cadena y desplegar si es palndromo o no. Investiga qu es un palndromo. Ejemplo:
reconocer.


3.1.5 REGISTROS
Un registro es un dato estructurado, formado por elementos lgicamente relacionados, que pueden ser
del mismo o de distinto tipo, a los que se denomina campos. Los campos de un registro podrn ser de
un tipo estndar o de otro tipo registro previamente definido (Se pueden definir registros dentro de
otros). Anteriormente hemos trabajado con los arreglos, donde aprendimos que estos necesariamente
deben ser del mismo tipo. La ventaja del uso de registros es que pueden contener datos de diversos
tipos.


EJEMPLO
En un almacn se pueden retener los datos de sus productos en registros
de acuerdo al formato mostrado en la siguiente figura:

No_Prod Nombre Descripcin precio

Cantidad

Integer char [20] char [50] Real Integer


Este registro puede ser definido de la siguiente manera:

Struct Tipo_Estructura
{
Int No_Prod
Char Nombre[20]
Char Descripcin[50]
Real Precio
117

Int Cantidad
} datos

Donde Tipo_Estructura es el nombre del nuevo tipo de dato que hemos creado. Datos es una variable
de tipo registro.
La forma de acceder a los campos de la estructura es la siguiente:
Variable.campo
Donde variable es el nombre de la variable de tipo estructura que hemos creado y campo es el nombre
de la variable que forma parte de la estructura. Lo veremos mejor con un ejemplo, basado en la
estructura creada anteriormente:
Datos.descripcin= articulo_del_hogar

Una estructura puede ser definida como miembro de otra estructura. En tales casos, la declaracin de
la estructura interna debe aparecer antes que la declaracin de la estructura externa.


EJEMPLO
Consideremos el caso de una cuenta de ahorros. Se definirn dos estructuras,
una llamada fecha y otra llamada cuenta. Cuenta contiene en forma anidada
a fecha, de tal manera que nos forma una estructura como la siguiente:






















La definicin sera de la forma siguiente:
CUENTA
Num_cuenta
Tipo_cuenta
Nombre[80]
saldo
ultimopago
mes
dia
ao
miembro
miembro
miembro
miembro
Miembro estructura
miembro
miembro
miembro
Estructura
118

Struct fecha
{
Int mes
Int dia
Int ao
}
Struct cuenta
{
Int num_cuenta
Char tipo_cuenta
Char nombre[80]
Float saldo
Struct fecha ultimopago
} antiguocliente, nuevocliente

Note que ultimopago es de tipo fecha que es una estructura. Tambin, fecha debe preceder a cuenta.
Un ejemplo de uso de estas estructuras sera:
antiguocliente.ultimopago.mes=6





EJERCICIOS DE APLICACIN

1. Plantea un problema utilizando la estructura anterior, para x
clientes. Elabora el pseudocdigo correspondiente.
2. En base a la siguiente estructura sobre datos de una persona,
elabora el pseudocdigo para leer los datos de la estructura y luego
desplegar los resultados.

Struct personas
{
Char cuenta[25]
Char nombres[25]
Char apellidos[25]
Char direccin[45]
Int edad
Char sexo[25]
Char telfono[10]
Char pas[25]
} datos
119

3. Elabora el pseudocdigo para capturar la informacin del currculum vitae de una persona.

Resuelve en tu cuaderno de tareas.


3.2.1 Introduccin a la Modularidad
La programacin modular permite la descomposicin de un problema en un conjunto de subproblemas
independientes entre s, ms sencillos de resolver y que pueden ser tratados separadamente unos de
otros. Gracias a la modularidad se pueden probar los subprogramas o mdulos de manera
independiente, depurndose sus errores antes de su inclusin en el programa principal y almacenarse
para su posterior utilizacin cuantas veces se precise.
Uno de los elementos principales de programacin utilizados en la representacin de cada mdulo es la
subrutina. Una subrutina es un conjunto de instrucciones de cmputo que realizan una tarea.
Un programa principal llama a estos mdulos a medida que se necesitan.
Un mdulo es un segmento, rutina, subrutina, subalgoritmo o procedimiento, que puede definirse
dentro de un algoritmo con el fin de ejecutar una tarea especfica y puede ser llamado o invocado
desde el algoritmo principal cuando sea necesario.


CUNDO ES TIL LA MODULARIZACIN?
Este enfoque de segmentacin o modularizacin es til en dos casos:
1. Cuando existe un grupo de instrucciones o una tarea especfica que deba ejecutarse en ms de una
ocasin.
2. Cuando un problema es complejo o extenso, la solucin se divide o segmenta en mdulos que
ejecutan partes o tareas especficas.




INVESTIGUE Y COMPLETE

1. Cules son las ventajas de la programacin modular? Escriba en su cuaderno lo
que investig.
2. Qu son procedimientos y funciones. Semejanzas y diferencias entre ambos.
3. Qu son funciones estndar y cules son definidas por el usuario.
4. Investigue qu son variables globales, locales, paso de parmetros, parmetros
por valor, parmetros por referencia o variables, parmetros actuales o reales y
parmetros formales. Luego complete el siguiente prrafo.


1. ___________________________ Son un tipo de variables en un mdulo a los que se pueden
pasar valores desde el exterior del mdulo. Se declaran en la cabecera del mdulo y son una
copia de la variable original. Son una especie de variables locales.
2. ___________________________ son las variables que permanecen activas durante todo el
programa y se declaran en la cabecera del programa; se crean al iniciarse ste y luego se
destruyen de la memoria al finalizar. Pueden utilizarse en cualquier procedimiento o funcin.
3.2 MODULARIDAD
120

3. ___________________________ Son las variables declaradas en un mdulo y existen
solamente en el mdulo en el cual han sido declaradas, al salir de l desaparecen de la
memoria.
4. _____________________________ Son un tipo de variables que se pasan en una llamada al
mdulo y son una especie de variable global que traslada su valor a la variable del mdulo,
modificando o no su valor dependiendo de la declaracin de la variable destino.
5. _____________________________ Son los que pueden recibir valores pero que no pueden
devolverlos. Es una variable global que se conecta con una variable local mediante el envo de
su valor, despus de lo cual ya no hay relacin. Lo que sucede a la variable local no afectar a
la global.
6. _____________________________ Es cuando se hace una llamada a un procedimiento
desde el programa principal, mediante el envo de un valor en una variable global hacia una
local.
7. ______________________________ Son los que pueden recibir y devolver valores. Son
variables globales que se conectan con una local a travs de su contenido; al establecerse
dicha conexin las variables se convierten en sinnimos y lo que afecte a la variable local, le
afectar a la variable global.
8. ______________________________ Son subprogramas o mdulos que forman parte de un
programa y realizan una tarea especfica. Contienen variables locales y pueden devolver uno,
varios o ningn resultado.
9. ___________________________ Es una estructura autnoma que se usa para devolver un
solo valor y se llama a s misma para devolver el resultado. No necesita variables adicionales
para devolver el resultado.
10. __________________________ Son aquellas que existen en las libreras del programa y que
solo se requiere llamarlas con sus parmetros correspondientes y hacer referencia a la librera
correspondiente, para poderlas utilizar.

3.2.2 PROCEDIMIENTOS.

EJEMPLOS
1. Ejemplo de uso de variables globales en procedimientos o funciones.
Observe que hay un mdulo cambiar y un programa principal.
Program global
var integer: x
Begin //programa principal
x 0
cambiar
print (x)
End

121

Mdulo cambiar //Declaracin del mdulo
Begin
x 1
End
Observe que la variable X est definida como global, por lo tanto la salida ser 1. Se entra al mdulo y
se modifica la variable global.

2. Ejemplo de uso de variable local.

Program local
var integer: x
Begin //programa principal
x 0
cambiar
print (x)
End

Mdulo cambiar //Declaracin del mdulo
Var integer: x //variable local
Begin
x 1
End

Observe que ahora hay dos variables con el mismo nombre. Una local y otra global. Cuando se da ese
caso, en un mdulo la que prevalece es la local. Por lo tanto la X global permanece invariable. Por lo
tanto la salida ser 0.
3.2.3 FUNCIONES.

EJEMPLOS

1. Calcular el factorial de n nmeros enteros, utilizando funciones.

Function factorial (integer: n):integer
var integer: i, factorial
Begin
If n <=1 then
factorial <-- 1
else
factorial <-- 1
for i = 1 to n do
factorial <-- factorial * 1
end_for
end_if
End

122

2. Evaluar la funcin f = x! / (y!(x-y)!) //utilizando la funcin anterior
Program hallarf
var integer: x, y
real: f
Begin
read (x,y)
f <-- factorial (x)/(factorial (y)* factorial (x-y))
print (El valor de f es:, f)
End

3. Escribir un algoritmo que permita el clculo del MCD de dos nmeros por el algoritmo de
Euclides
Program MaximoComunDivisor
var integer: num1, num2

function mcd (integer:mayor, menor):integer
var integer: resto, aux
Begin
Repeat
resto <-- mayor mod menor
if resto = 0 then
mcd <-- menor
else
aux <-- mayor
mayor <-- menor
menor <-- aux mod menor
end_if
Until ( resto =0)
End

//Programa principal
Begin
Limpiar pantalla
print (introduzca dos enteros:)
Read (num1,num2)
print (maximo comun divisor de, num1, y, num2, es:)
if num1 >= num2 then
print (mcd(num1,num2))
else
print (mcd(num2,num1))
end_if
End

Pruebas:


123


2 3 2
64 28 8 4
8 4 0




EJERCICIOS DE APLICACIN

Realice prueba manual con los dos nmeros anteriores: 28 y 64.


EJERCICIOS PRCTICOS
Aplicar las fases para la resolucin de un problema en los siguientes ejercicios.
Resolverlos utilizando procedimientos o funciones. Trabajar en grupos de 4 y
presentar un reporte en papel bond.
1. Una matriz cuadrada se dice que es simtrica cuando A[i,j] = A[j,i] para todo par de ndices i y
j, dentro de los lmites de la matriz. Escriba un programa que indique si una matriz cuadrada
es simtrica o no.
2. Leer un nmero y buscarlo en una matriz N X M. Escribir cuntas veces se encuentra.
3. Encontrar el producto de matrices usando procedimientos.
4. Encontrar la suma de dos matrices A y B usando procedimientos.
5. Se tiene una matriz 4 X 3 y se desea encontrar su matriz transpuesta.

3.3.1 MTODOS DE ORDENAMIENTO
Uno de los procedimientos ms comunes y tiles en el procesamiento de datos, es la clasificacin u
ordenacin de los mismos. Se considera ordenar al proceso de reorganizar un conjunto dado de
objetos en una secuencia determinada.
16

Cuando se analiza un mtodo de ordenacin, hay que determinar cuntas comparaciones e
intercambios se realizan para el caso ms favorable, para el caso medio y para el caso ms
desfavorable.
Para el caso del ordenamiento, el problema consiste en ordenar el vector en forma ascendente (de
menor a mayor). Si se quisiera trabajar con ordenamiento descendente los cambios seran mnimos.

Ejemplo:
6
1
2
4
7
18
3
5
14
1
2
3
4
5
6
7
14
18
18
14
7
6
5
4
3
2
1
Lista Lista Lista

16
Tomado de www.mitecnologico.com/.../MetodosDeOrdenamientoYBusqueda
3.3 ORDENAMIENTO Y BSQUEDA
124

Desordenada Ordenada Ordenada
(ascendente) (descendente)
Existen varios mtodos para ordenamiento, clasificados en tres formas:
Intercambio
Seleccin
Insercin
En cada familia se distinguen dos versiones: un mtodo simple y directo, fcil de comprender pero de
escasa eficiencia respecto al tiempo de ejecucin, y un mtodo rpido, ms sofisticado en su ejecucin
por la complejidad de las operaciones a realizar, pero mucho ms eficiente en cuanto a tiempo de
ejecucin. En general, para arreglos con pocos elementos, los mtodos directos son ms eficientes
(menor tiempo de ejecucin) mientras que para grandes cantidades de datos se deben emplear los
llamados mtodos rpidos.


EJEMPLO
Uso de algoritmos de Intercambio directo mediante el Mtodo de la Burbuja. Aunque
no es muy eficiente para ordenar listas grandes, es fcil de entender y muy adecuado
para ordenar una pequea lista de unos 100 elementos o menos.

Una pasada por la ordenacin de burbujeo consiste en un recorrido completo a travs del arreglo, en el
que se comparan los contenidos de las casillas adyacentes, y se cambian si no estn en orden.
La ordenacin por burbujeo completa consiste en una serie de pasadas (burbujeo) que termina con
una en la que ya no se hacen cambios porque todo est en orden.
Supngase que estn almacenados cuatro nmeros en un arreglo con casillas de memoria de x[1] a
x[4]. Se desea disponer esos nmeros en orden creciente. La primera pasada de la ordenacin por
burbujeo hara lo siguiente:
Comparar el contenido de x[1] con el de x[2]; si x[1] contiene el mayor de los nmeros, se
intercambian sus contenidos.
Comparar el contenido de x[2] con el de x[3]; e intercambiarlos si fuera necesario.
Comparar el contenido de x[3] con el de x[4]; e intercambiarlos si fuera necesario.
Al final de la primera pasada, el mayor de los nmeros estar en x[4].

34 28 28 28
28 34 34 34
43 43 43 15
15 15 15 43

Al final de la segunda pasada, los ltimos dos elementos estarn ordenados como se muestra:

28 28 28 28
34 34 15 15
15 15 34 34
43 43 43 43

125

Al final de la tercera pasada, los ltimos tres elementos estarn ordenados como se muestra:

28 15 15 15
15 28 28 28
34 34 34 34
43 43 43 43

Ntese que el arreglo ya qued ordenado, sin embargo, se hace una pasada ms porque la
computadora no advierte que el arreglo est en orden hasta que ocurre una pasada sin intercambios.


15 15 15 15
28 28 28 28
34 34 34 34
43 43 43 43

La ordenacin por burbujeo debe su nombre a la forma en que ascienden los nmeros ms pequeos
como si fueran burbujas, hasta la parte superior; mientras que los ms grandes descienden cayendo
hasta el fondo. En cada pasada del mtodo, se va ubicando el nmero ms grande en su lugar
correcto, uno cada vez; aunque puede darse el caso en que se coloquen ms de ellos en su lugar por
pura casualidad.



EJEMPLO

Se tiene el siguiente pseudocdigo para ordenar un vector de nmeros enteros:

Begin
Read(n)
For i = 1 to n do
read ( A[i] )
End_for
For i = n to 1 step -1 do
For j=1 to j < i do
if ( A[j] > A[j+1] ) then
Aux A[j]
A[j] A[j+1]
A[j+1] Aux
End_if
end_for
end_for
for i = 1 to n do
print ( A[i] )
end_for
End
126



3.3.2 MTODOS DE BSQUEDA
La bsqueda como su nombre lo indica, es una operacin que tiene por objeto localizar un elemento
dentro de una estructura de datos. Esto puede resultar muy til cuando se est trabajando con
grandes cantidades de datos almacenados en arreglos y resulta necesario determinar si un arreglo
contiene un valor que coincide con algn valor clave o buscado.
Para los arreglos en una dimensin o listas, encontramos dos tcnicas que utilizan las dos formas de
acceso a sus elementos, ya sea secuencial o acceso directo; dichos mtodos son: bsqueda lineal o
secuencial y bsqueda binaria.

Bsqueda Secuencial:
La bsqueda secuencial es la forma ms simple para buscar un elemento en un arreglo. Consiste en
que dado un valor clave a ser buscado, se va comparando con cada uno de los elementos del arreglo
hasta encontrarlo. Se utiliza normalmente cuando el array no est ordenado.
Se empieza con la primera casilla del arreglo y se observa una casilla tras otra hasta que se encuentra
el elemento buscado o se han visto todas las casillas.
El resultado de la bsqueda es un solo valor, y corresponde a la posicin del elemento buscado (si se
encuentra) o cero (si no se encuentra).
Dado que el arreglo no est en ningn orden en particular, existe la misma probabilidad de que el
valor se encuentra ya sea en el primer elemento, como en el ltimo. Por lo tanto, en promedio, el
programa tendr que comparar el valor buscado con la mitad de los elementos del arreglo.
El mtodo de bsqueda lineal funciona bien con arreglos pequeos o para arreglos no ordenados. Si el
arreglo est ordenado, se puede utilizar la tcnica de alta velocidad de bsqueda binaria, donde se
reduce sucesivamente la operacin eliminando repetidas veces la mitad de la lista restante.

Bsqueda Binaria.
La bsqueda binaria es el mtodo ms eficiente para encontrar elementos en un arreglo ordenado. El
proceso comienza comparando el elemento central del arreglo con el valor buscado. Si ambos
coinciden finaliza la bsqueda. Si no ocurre as, el elemento buscado ser mayor o menor en sentido
estricto que el central del arreglo. La bsqueda se reduce a la mitad, pues ahora examinaremos ya sea
la parte izquierda o la derecha del punto central, dependiendo si el elemento buscado es mayor o
menor que el de en medio. Se procede a hacer bsqueda binaria en el nuevo sub array siguiendo el
mismo proceso. Se contina de la misma forma, hasta terminar de dividir el arreglo en sub arreglos.


EJEMPLO
Dado un arreglo de nmeros enteros, se desea encontrar el mayor y el
menor. Imprimir adems la posicin donde se encuentran.

Begin
127

print ( Digite cuntos nmeros son: )
read (n)
for i = 1 to n do
print (Digite el nmero: , i)
read ( num[ i ] )
end_for
Mayor num[1]
Menor num[1]
Pos_may 1
Pos_men 1
For i = 1 to n do
If (num[i] > mayor) then
Mayor num[i]
Pos_may i
else
If (num[i] < menor) then
Menor num[i]
Pos_men i
End_if
End_if
End_for
print ( El mayor es , Mayor, y su posicin es, Pos_may)
print ( El menor es , Menor, y su posicin es, Pos_men)
End

TAREA
1. Investigue dos mtodos de ordenamiento y dos mtodos de
bsqueda. Elabore el pseudocdigo para cada uno y una corrida
manual.
2. Elabore el pseudocdigo para eliminar todos los nmeros duplicados
de una lista. Imprimir la lista sin duplicados.





EVALUACIN FINAL DE TAREA SIGNIFICATIVA

La siguiente rbrica es para evaluar su trabajo final (Tarea significativa del
mdulo.

Nombre del Evaluado: ____________________________________________
Nombre del evaluador: ___________________________________________
Ttulo de la Tarea: ____________________________________________________________
Fecha de evaluacin: ________________________

OBJETIVO: Evaluar la aplicacin de conocimientos adquiridos durante el mdulo, en la
elaboracin de una tarea significativa.

128

Para su valoracin se establece una escala numrica que contiene 10 aspectos o criterios para un total
de 100 puntos y cuyo valor porcentual del total asignado al mdulo es del 30% de la prctica.

La escala numrica tiene 5 opciones para evaluar los aspectos a observar:
5. Excelente 4. Muy Bueno 3. Bueno 2. Regular 1. Deficiente

CRITERIOS DE EVALUACIN
VALORACIN
5 4 3 2 1
1. Presenta documento con portada, ndice, introduccin,
objetivos y definicin del problema con orden y aseo

2. Elabor correctamente la planeacin de la solucin
3. Realiz descripcin completa de variables
4. Para la solucin del problema aplic diferentes estructuras y
tcnicas utilizadas en clase

5. Present algoritmo general
6. Elabor Flujograma y Diagrama N-S
7. Elabor corrida manual con diferentes datos de prueba
8. Demuestran dominio del tema en forma Individual
9. Demuestran creatividad y buen desarrollo de lgica
10. El documento se entreg con puntualidad, respetando
reglas ortogrficas y de redaccin.

Total de puntos obtenidos




TERMINOLOGA APLICADA

Burbuja: Mtodo de ordenamiento bastante comn y eficiente para pocos elementos. La idea
bsica subyacente en el ordenamiento de burbuja es pasar a travs del arreglo de datos varias
veces en forma secuencial. Cada paso consiste en la comparacin de cada elemento en el
arreglo con su sucesor (x[i] con x[i+1]) y el intercambio de los dos elementos si no estn en
el orden correcto
129

Estructura de datos: son una coleccin de datos cuya organizacin se caracteriza por las
funciones de acceso que se usan para almacenar y acceder a elementos individuales de datos.
Funcin: es un subprograma que recibe como argumentos o parametros, datos de tipos
numerico o no numerico, y devulve un nico resultado. Esta caracterstica le diferencia
escencialmente de un procedimiento.
Mdularidad: Propiedad que permite subdividir una aplicacin en partes ms pequeas
(llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la
aplicacin en s y de las restantes partes.
Procedimiento: es un subprograma que realiza una tarea especfica. Puede recibir cero o
mas valores del programa que llama y devolver cero o mas valores a dicho programa.
Registro: es la unidad bsica de informacin en aplicaciones comerciales o que involucren
cantidades masivas de datos. El registro es una estructura formada por un nmero fijo de
componentes, denominados campos. A diferencia del arreglo, las componentes o campos
pueden ser de tipos diferentes.
String: Las cadenas de caracteres permiten la manipulacin de textos. Generalmente, se
considera que un string no es ms que un array de caracteres. Por esa razn, se suele
relacionar el concepto de string con el de array.




BIBLIOGRAFA

Fundamentos de Programacin. Luis Joyanes Aguilar. Editorial Mc Graw Hill. Mxico
Metodologa de la Programacin. Diagramas de Flujo, algoritmos y programacin. Luis Joyanes
Aguilar. Editorial Mc Graw Hill. Mxico.
Fundamentos de Programacin. Libro de Problemas. Luis Joyanes Aguilar, Luis Rodrguez Baena y
Matilde Fernndez Azuela. Editorial Mc Graw Hill. Espaa.
Fundamentals of Programming. Student Guide. NIIT. India.

SITIOS DE INTERNET:
Modularidad
http://www.mailxmail.com/curso-aprende-programar/modularidad-procedimientos-funciones

You might also like