Sunteți pe pagina 1din 114

ALGORITMOS

1. INTRODUCCIN A LOS ALGORITMOS

Un problema es un asunto o un conjunto de cuestiones que se plantean para ser


resueltas. La naturaleza de los problemas vara con el mbito o con el contexto donde
estn planteados; as, existen problemas matemticos, qumicos, filosficos, etc.
Consideramos aqu slo aquellos problemas cuya solucin se puede calcular utilizando
una serie de reglas introducidas en un computador.
Muchas veces, la mitad del trabajo es saber exactamente que problema hay que resolver.
Si al abordar un problema no se tiene una descripcin simple y precisa de l, resulta
complejo modelar, similar o programar una solucin en el computador. En este punto, hay
que destacar tambin la importancia de ciertos aspectos relacionados con la solucin de
problemas: notaciones de representaciones, estrategias, relaciones entre problemas, etc.
En general, conviene expresar un problema utilizando algn modelo formal. Por ejemplo,
un modelo aritmtico puede resultar adecuado para problemas de naturaleza numrica o
un modelo basado en gramticas formales puede servir para problemas de procesamiento
simblico o de textos.
Una vez modelado el problema, puede buscarse una solucin en forma de algoritmo.
Se plantean sin embargo criterios o estrategias generales que se deben tener en cuenta,
para ello se pueden seguir ocho etapas, articuladas de tal forma que cada una depende
de las anteriores, lo que indica que se trata de proceso complementario y por lo tanto
cada paso exige el mismo cuidado en su elaboracin. Las etapas son:
Definicin y delimitacin del problema a solucionar: Por computador se pueden
resolver cualquier clase de problema una vez definidos los pasos o instrucciones.
Seudocdigo o diagrama de flujo (algoritmo): Este es en realidad el primer paso que
se debe de seguir pues generalmente ya se tiene definido el problema. En esta etapa es
donde se determinan los pasos o instrucciones a seguir y el orden lgico de su ejecucin
para darle una eficiente solucin al problema. Aqu es donde radica toda la dificultad para
solucionar un problema por computador; el resto de las etapas bsicamente se
circunscriben a la adaptacin para que un computador determinado ejecute los pasos o
instrucciones planteados en el seudocdigo y se obtengas los resultados esperados.
Prueba de escritorio: Luego de realizar el seudocdigo viene la prueba de escritorio, la
cual consiste en hacer un seguimiento manual de los pasos seguidos que se definieron en
el seudocdigo y comprobar, con base en sus datos, si el resultado al cual se llega es el
esperado.
Codificacin: Es la escritura de las instrucciones o enunciados, determinados en la etapa
de la diagramacin o la seudocodificacin en un lenguaje de alto nivel (Basic, Cobol,

Pascal, C, etc.) incluyendo las instrucciones de control adecuadas al computador donde


se vayan a ejecutar.
Digitacin: Ya codificadas las instrucciones se convierten a un medio legible para el
computador. Es pasar las instrucciones al editor del lenguaje de programacin a utilizar.
Compilacin: Es aqu donde el computador Chequea si todas las instrucciones estn
escritas correctamente desde el punto de vista de la sintaxis y gramtica de cada lenguaje
y las transcribe, dentro de la memoria, del lenguaje de alto nivel al lenguaje de mquina
para obtener el llamado programa objeto.
Ejecucin del Programa: El programa objeto es ejecutado por el computador para llegar
a los resultados esperados, utilizando los dispositivos, unidades y memoria necesaria,
segn cada paso o programa.
Evaluacin de Resultados: Obtenidos los resultados se les evala para verificar si son
correctos. En caso contrario, se revisa en las etapas anteriores para detectar la falla o
error, entrar a corregirlo y reiniciar desde este punto los pasos para resolver de nuevo y
en forma correcta el problema.
Las consideraciones mencionadas hasta ahora corresponden a la solucin general de
problemas (no necesariamente a problemas informticos); sin embargo, estas ideas se
pueden particularizar para resolver problemas donde se use el computador como
herramienta. A veces, la situacin ms frecuente para mucha gente es comenzar a
programar la solucin de un problema que no est completamente definido, o pensar en
detalles de implementacin sin saber cmo abordar el problema independientemente del
computador. Es mucho ms productivo conocer primero un problema lo suficiente y
plantear una estrategia adecuada para su solucin, que comenzar prematuramente a
programar la solucin a un problema incompleto, ambiguo o que no ha sido analizado
adecuadamente.
Evaluacin: Se deben tener presentes todos y cada uno de los conceptos descritos
anteriormente, pues cada vez que se desee resolver un problema se tienen que tener
recordar y utilizar adecuadamente.

DATOS, CONSTANTES, VARIABLES Y OPERADORES

Los datos son los objetos sobre los que opera una computadora.
Tipos de Datos:

Datos Numricos: los relativos a diferentes clases de nmeros. Son enteros (sin
parte decimal) y reales (con parte entera y decimal).

Datos Tipo Carcter (cadena): son caracteres que puede interpretar la


computadora: alfabticos A - Z, a - z; dgitos 0 - 9; especiales $, *, >, <, , ,; :,....
Un dato tipo carcter es un solo carcter.

Los caracteres se organizan en cadenas (secuencia de caracteres vlidos encerrados


entre comillas o comillas dobles).

Datos Lgicos O Booleanos: aquellos que slo pueden tomar dos valores: cierto
o falso (true / false)

Datos Estructurados: arrays, registros, conjuntos y ficheros.

Datos Enumerados: definidos por el usuario.

Identificador: Un identificador es una serie de caracteres formados por letras, dgitos y el


carcter subrayado (_) que no inicie con dgito, as mismo es el nombre que damos a todo
lo que manipulamos dentro de un programa (variables, constantes, funciones, etc). Por
ejemplo variables, constantes, funciones, tipos definidos por el usuario etc.
Constantes: conjunto de caracteres numricos que no cambian durante la ejecucin del
programa. Pueden estar precedidos de un signo o un carcter + o - y pueden contener el
carcter. (Punto). Las hay enteras, reales, caracteres, cadena de caracteres y booleanas.

Variables: conjunto de caracteres alfabticos o alfanumricos tal que su primer carcter


sea alfabtico, ejemplos: Jos, M1, kont.

Pueden cambiar su valor durante la ejecucin del programa.

Una variable siempre tendr asignado un valor de una constante.

Es conveniente utilizar nombres significativos, mnemotcnicos, que sugieran lo


que representan para facilitar la lectura y comprensin del algoritmo.

Operadores Aritmticos:
suma +
resta multiplicacin *
divisin /
potenciacin ^
divisin entera \ div
resto de divisin entera mod
Prioridad de las operaciones aritmticas:
^
*, /
+, div, mod

Todas las subexpresiones entre parntesis se evalan primero. Las


subexpresiones con parntesis anidados se evalan de dentro - a fuera; el
parntesis ms interno se evala primero.

La prioridad de operaciones dentro de una misma expresin o subexpresin, los


operadores se evalan en el siguiente orden:

Primero *, /, Div, Mod.


Ultimo +, -.

Regla asociativa izquierda. Los operadores de una misma expresin o


subexpresin con igual nivel de prioridad (tal como * y /) se evalan de izquierda a
derecha.

Operadores Relacionales: se utilizan para expresar condiciones.


= igual
<> diferente
<= menor o igual
>= mayor o igual
> mayor que
< menor que
El resultado de la operacin expresin1 operador relacional expresin2 ser verdadero o
falso.
Estos operadores de relacin se pueden aplicar a cualquiera de los cuatro tipos de datos
estndar: entero, real, lgico y carcter.
Operadores Lgicos: permiten relaciones lgicas (si/no) y sirven para representar
condiciones compuestas.
no (not) no p negacin de p
y (and) p y q conjuncin de p y q
o (or) p o q disyuncin de p y q

Teniendo
en
cuenta
los
datos
anteriores
la
siguiente
expresin tiene
como
resultado:
3 + 5 * (10 - (2
+ 4)) = ?

Prioridad
de
operadores
1.2.3.4.-

los

parntesis
elevar a potencias
multiplicacin y divisin
suma y resta

Expresiones
Las expresiones son combinaciones de constantes, variables, smbolos de operacin,
parntesis y nombres de funciones especiales. Por ejemplo:
a+(b + 3)/c
Cada expresin toma un valor que se determina tomando los valores de las
variables y constantes implicadas y la ejecucin de las operaciones indicadas.
Una expresin consta de operadores y operandos. Segn sea el tipo de datos
que manipulan, se clasifican las expresiones en:
- Aritmticas
- Relacinales
- Lgicas

Palabras Reservadas
Son palabras que tienen un significado especial para el lenguaje y no se pueden utilizar
como identificadores: leer, escribir, cout, cin, etc.

Comentarios
Los comentarios pueden aparecer en cualquier parte del programa, mientras estn
situados entre los delimitadores: comillas simples o dobles. Los comentarios son tiles
para identificar los elementos principales de un programa o para explicar la lgica
subyacente de estos.

Qu es un Algoritmo?
Un algoritmo es una secuencia de pasos lgicos y ordenados con las cuales le damos
solucin a un problema determinado.
En la vida diaria cada uno de nosotros disea y realiza algoritmos para solucionar los
problemas cotidianos, es as que al levantarnos de la cama ya tenemos en la mente una
serie de pasos que debemos seguir para llegar al sitio de estudio o al sitio de trabajo. Una
vez en el sitio de estudio, tenemos en nuestra mente una serie de tareas que debemos
realizar en unos horarios ya definidos.
Si quisiramos realizar una comida especial, en nuestra mente construimos un algoritmo
o serie de pasos que debemos seguir en un orden especfico para que todo nos salga
como queremos. Si quisiramos transcribir estos pasos en una hoja de papel, para que
otra persona realizar las mismas tareas y obtenga el mismo resultado que nosotros,
debemos seguir una serie de normas para que esta otra persona nos entienda. Por
ejemplo debe estar escrito en el idioma que ella comprende, se deben enumerar los
pasos etc. Las normas que se deben seguir al momento de transcribir el algoritmo
depende de quien ser el encargado de ejecutarlo, por ejemplo si quisiramos escribir la
receta para que la ejecute una persona adulta las normas sern diferentes a las que
debemos seguir si quisiramos escribir la receta para que le ejecute una nia.

Caractersticas de los Algoritmos


1. Un algoritmo debe ser preciso e indicar el orden de realizacin de cada paso.
2. Un algoritmo debe estar definido. Si se sigue el algoritmo dos veces, se debe obtener
el mismo resultado cada vez.
3. Un algoritmo debe ser finito. Si se sigue el algoritmo. Se debe terminar en algn
momento, o sea debe tener un nmero finito de pasos.

Clasificacin de los algoritmos segn ejecucin


Ejecutados por personas
Para que un algoritmo sea ejecutado por una persona, debe estar escrito de tal manera
que esta persona lo entienda claramente, algunas de las normas que debe seguir la
construccin del algoritmo son las siguientes:

debe estar escrito en el idioma que comprende la persona que realizar el


algoritmo.
debe enumerar cada uno de los pasos a realizar en un orden lgico.

debe utilizar palabras que comprenda claramente la persona que realizar el


algoritmo.

Algunos de los algoritmos diseados para que sean ejecutados por personas son: las
recetas de cocina, los manuales de funcionamiento, itinerarios, gua de matricula etc.
Ejemplos de algoritmos para ser ejecutados por personas:

Un cliente ejecuta un pedido a una fbrica. La fabrica examina en su banco de


datos si el cliente est activo( no es moroso con sus deudas) entonces se acepta
el pedido, en caso contrario se rechaza.

1. Inicio
2. Leer el pedido
3. Examinar ficha del cliente
4. Si el cliente esta activo aceptar el pedido, en caso contrario rechazar el pedido.
5. terminar

Un cliente llaga a una entidad bancaria para realizar una consignacin, el cajero le
pide el nmero de la cuenta y el dinero a consignar, verifica que la cuenta si existe,
si la cuenta es valida se hace la consignacin (al saldo le aumenta el dinero
recibido) de lo contrario devuelve el dinero.

1. Inicio
2. pedir nmero de la cuenta y el dinero
3. si la cuenta es valida siga en 4 de lo contrario siga en 6
4. saldo= saldo +dinero
5 ir a 7
6 devolver el dinero
7 terminar

en la taquilla de una sala de cine, se pide la identificacin de los usuarios, se


verifica si es mayor de edad(mayores 17 aos) si es as se cobra el valor de la
entrada y se deja pasar, en caso contrario no se deja entrar.

1. Inicio
2. Pedir cdula

3. Si la edad es mayor a 17 siga en 4 en caso contrario siga en 6


4. Pedir el valor de la entrada y dejar pasar al cliente
5. siga en 7
6. no dejar pasar al cliente
7. terminar

Decir si un numero N es primo. Recuerde que un numero es primo si solamente es


divisible por 1 y por s mismo.

1 Inicio
2. X=2
3. Si N / X es entero escribir el numero no es primo ir a 6, si no continuar
4. X =X+1
5. Si X = N escribir el numero si es primo y continuar, si no ir a 3
6. terminar
Realizar:
1. un retiro de dinero por parte de un cliente en una entidad bancaria
2. crear un algoritmo que describa los pasos necesarios par ir a la universidad a clase de
6 Am tenga en cuenta que si llega 10 minutos tarde no puede entrar al saln de clase y si
al llegar no trae el carnet no puede entrar a la universidad.
Disear algoritmos que resuelvan los posibles problemas que se presentan para:
1. ir al cine
2. Reparar un pinchazo de una bicicleta.
3. Hacer una llamada a un compaero.

Ejecutados por las computadoras


Los pasos para la solucin de un problema utilizando como herramienta la computadora
son:

1. Diseo del algoritmo que describa la secuencia ordenada de pasos, que conducen a la
solucin de un problema dado (anlisis del problema y desarrollo del algoritmo).
2. Expresar el algoritmo como un programa en un lenguaje de programacin adecuado
(fase de codificacin). La actividad de expresar un algoritmo en forma de programa se
denomina programacin.
3. Ejecucin y validacin de programa por la computadora.
El primer paso es el mas importante, en el se determina el problema y describimos una
posible solucin, utilizando nuestra malicia, conocimientos y habilidad para dar una
solucin al problema.
Si queremos hacer algoritmos para que las computadoras los ejecuten, debemos seguir
ciertas normas y ese es unode los objetivos de este trabajo, ensear las normas que se
deben seguir para realizar algoritmos que luego sern ejecutados por las computadoras.
el otro objetivo es darle la posibilidad de desarrollar la habilidad de solucionar problemas,
pero como todas las habilidades esta slo se adquiere despues de hacer muchos
intentos.

Partes de un algoritmo
INICIO Y FIN
Una de las caractersticas de los algoritmos es que deben ser finitos. Se
debe indicar claramente donde inicia y donde termina.
para indicar donde comienza nuestro algoritmo vamos a utilizar la palabra
INICIO y para indicar donde se termina nuestro algoritmo vamos a utilizar
las palabras FIN PROGRAMA.
ejemplo: el siguiente algoritmo, que no hace nada slo indica donde inicia
y donde termina.
inicio

fin programa

Declaracin de variables

Los datos son una parte muy importante en un algoritmo, pues son ellos el
punto de partida y son ellos quienes sufren las transformaciones que darn
los resultados deseados. Por esta razn el algoritmo debe guardar los
datos en un sitio donde los pueda leer y modificar cada vez que lo
requiera. los sitios donde el algoritmo guarda los datos los llamaremos
ESPACIOS DE MEMORIA y el tamao de estos dependen del tipo de dato
que se quiera guardar en ellos.
Adems si se tienen varios datos se debe tener la posibilidad de
diferenciarlos de una manera que no se presenten confusiones
asignndoles un identificador vlido y nico a estos espacios de memoria.
Un espacio de memoria se denomina VARIABLE cuando su contenido
puede variar en el tiempo y de CONSTANTE cuando no se permite que su
contenido vari.
Lo primero que se hace en al algoritmo es declarar las variables. Donde se
separan los espacios de memoria del tamao indicado segn el tipo de
dato que guardarn y asignndoles un nombre o identificador vlido, con
el cual nos referiremos a la informacin que se guarda en dicho espacio de
memoria.
para declarar las variables se har de la siguiente forma:

tipo de dato: identificador, identificador

primero se coloca el tipo de dato segn la informacin que se

guardar en los espacios de memoria a crear.

Dos puntos ' : '

una lista de identificadores vlidos separados por coma ','

ENUNCIADO:

Hacer un algoritmo que declare una variable para guardar el nmero de das de la
semana y otra variable para guardar el promedio de ventas al mes.

EXPLICACIN DEL ALGORITMO


Como la cantidad de das es un entero, se define la variable DIAS de tipo entero.
Como un promedio contiene parte decimal, se define la variable PROMEDIO de timpo
real.

ENUNCIADO:
Hacer un algoritmo que declare una variable para guardar cuantos meses del ao tienen
30 das y otra variable para guardar el porcentaje de meses con 30 dias.

EXPLICACIN DEL ALGORITMO


Como la cantidad de meses es un entero, se define la variable CANTIDAD de tipo entero.
Como un porcentaje contiene parte decimal, se define la variable MESES30 de tipo real.

ENUNCIADO:
Hacer un algoritmo que declare una variable para guardar el nombre de una persona, otra
para guardar en nmero de hijos y otra para guardar el sueldo mensual.

EXPLICACIN DEL ALGORITMO


Se guardara el nombre en una variable que llamaremos NOMBRE de tipo cadena.
Como la cantidad de hijos es un entero, se define la variable N_Hijos de tipo entero.
Como un sueldo mensual puede contener parte decimal, se define la variable SUELDO
de timpo real.

ENUNCIADO:
Hacer un algoritmo que declare una variable para guardar el nombre de una persona,
otra variable para guardar el nombre de la fruta que prefiere y otra para guardar la
cantidad de frutas que se come al mes.

EXPLICACIN DEL ALGORITMO

El nombre de la persona la guardaremos en una variable llamada NOMBRE, de tipo


cadena. el nombre de la fruta la guardaremos en una variable llamada FRUTA, de tipo
cadena.
la cantidad de frutas que consume al mes la guardaremos en una variable llalmada
CANTIDAD, de tipo real.

ENTRADA DE DATOS
Cuando un algoritmo requiera que el usuario ingrese datos, se utilizar la
instruccin LEER y entre parntesis la lista de variables donde se
guardarn los datos ingresados por el usuario.

leer(identificador1, identificador2)

De esta forma se podr tener la siguiente instruccin:


leer( X, Y, Z)
donde se le pide al usuario que entre tres datos el primero de los cuales se
guarda en el espacio de memoria que tiene identificador X, el segundo se
guardar en el espacio de memoria que tiene identificador Y y el tercero se
guardar en el espacio de memoria que tiene identificador Z.

ENUNCIADO:
Hacer un algoritmo que lea el nombre y la edad de una persona.

VARIABLES:
Los
datos
de
entrada
son
:
NOMBRE:
para
guardar
el
nombre
de
la
persona
(tipo
cadena)
EDAD: para guardar la edad de la persona, como en el enunciado no lo especifican lo
tomaremos de tipo entero.

EXPLICACIN DEL ALGORITMO


Primero se definen las variables requeridas y luego se le pide al usuario que ingrese los
datos.

ENUNCIADO:
Hacer un algoritmo que lea el nombre de un deportista, el nmero de intentos en la
prueba de 100 metros planos y el tiempo registrado.
VARIABLES:
Se declara la variable NOMBRE, de tipo cadena para guardar el nombre del deportista.
Como la cantidad de intentos es un entero, se define la variable INTENTOS de tipo
entero.
Como la medicin del tiempo puede tener parte decimal, se define la variable TIEMPO de
tiempo real.

EXPLICACIN DEL ALGORITMO


Primero se definen las variables requeridas y luego se le pide al usuario que ingrese los
datos.

PROBLEMAS PROPUESTOS
1. Hacer un algoritmo que lea el nmero de meses del ao y la cantidad de meses
que se trabajan.
2. Hacer un algoritmo que lea el nombre de una persona y nmero de horas que
estudia en la semana.
3. Hacer un algoritmo que lea el nombre de un estudiante, la cantidad de materias
perdidas y el porcentaje de materias ganadas.
4. Hacer un algoritmo que lea el nombre de un estudiante, el promedio del semestre
y el nmero de notas perdidas.
5. Hacer un algoritmo que lea el nombre de una persona, la comida preferida y la
cantidad de dinero que posee.
6. Hacer un algoritmo que lea el nombre de un animal, la comida preferida y la
cantidad de patas que tiene.
7. Hacer un algoritmo que lea el nombre de un deportista, la distancia recorrida y la
cantidad de intentos.
SALIDA DE DATOS
Si el algoritmo requiere mostrar la informacin que tiene guardada en
variables (espacio de memoria) hacia el exterior(para el usuario final ), se
utilizar la instruccin MOSTRAR y entre parntesis la lista de variables
donde se guardan los datos que se quieren mostrar.

Mostrar( identificador1, identificador2,


identificador3)

La instruccin siguiente mostrar al usuario la informacin que se tiene


guardada en la variables X, Y y Z.
MOSTRAR ( X, Y, Z)
tambin se puede pasar informacin directamente (que no esta guardada
en variables) para construir mensajes de la siguiente manera:
MOSTRAR (" hola como estas ", 123, X)

El anterior mensaje mostrar al usuario un mensaje que contiene la cadena


"hola como estas", el numero 123 y la informacin contenida en la variable
X.

ENUNCIADO:

Hacer un algoritmo que lea el nombre de un artculo, la cantidad existente en bodega, el


precio unitario y muestre la cantidad existente en bodega.
VARIABLES
Se declara la variable NOMBRE, de tipo cadena para guardar el nombre del artculo.
Como la cantidad de artculos es un entero, se define la variable CANTIDAD de tipo
entero.
Como un porcentaje puede tener parte decimal, se define la variable PRECIO de tiempo
real.

EXPLICACIN DEL ALGORITMO


Primero se definen las variables requeridas y luego se le pide al usuario que ingrese los
datos.

PROBLEMAS PROPUESTOS

1. Hacer un algoritmo que lea el nombre de un trabajador, la cantidad de meses que


trabajo en el ao y muestre el nombre y el porcentaje de meses trabajados.
2. Hacer un algoritmo que lea el nombre de una persona, el nmero de horas que
estudia en la semana y muestre el porcentaje de tiempo que dedica a estudiar y la
cantidad de minutos que dedica a estudiar.
3. Hacer un algoritmo que lea el nombre de un estudiante, la cantidad de materias
que cursa en el semestre, la cantidad de materias perdidas y muestre el nombre y
el porcentaje de materias ganadas.
4. Hacer un algoritmo que lea el nombre de un estudiante, el promedio del semestre,
el nmero de materias perdidas, la suma de todas las notas y muestre la cantidad
de materias que gano.
5. Hacer un algoritmo que lea el nombre de una persona, la comida preferida con su
precio, la cantidad de dinero que posee y muestre la cantidad de comidas que
puede comprar con el dinero que posee.
6. Hacer un algoritmo que lea el nombre de un animal, la comida preferida, el
nmero de porciones que come al da, el valor de la porcin y muestre el nombre
del animal y el costo de alimentarlo en el da.
7. Hacer un algoritmo lea el nombre de un deportista, la distancia recorrida, la
cantidad de intentos y muestre la distancia promedio que ha recorrido.

LA OPERACIN DE ASIGNACIN
Es el modo de copiar un valor especfico en una variable o espacio de
memoria. La operacin de asignacin se representa con el smbolo igual '='
La forma general de una operacin de asignacin es:

variable = valor
hay que tener en cuenta que en una variable determinada slo se podrn
guardar datos que correspondan al tipo con el que fue declarada la
variable. Por esta razn veamos como realizar la asignacin en cada uno
de los tipos de datos.
1.

ASIGNACION EN VARIABLES NUMRICAS ( de tipo entero o


tipo real)

2.

ASIGNACION EN VARIABLES DE TIPO CADENA

3.

ASIGNACION EN VARIABLES DE TIPO LGICO

4.

ASIGNACION EN VARIABLES DE TIPO CARACTER

ASIGNACIN DE VALORES A VARIABLES NUMRICAS


En una variable numrica(declarada como entero o real ) slo se podrn
guardar datos numricos y existe dos formas de hacerlo:
1.

asignacin de un nmero (constante numrica) a una variable


numrica. asumamos que la variable A ha sido declarada de tipo
entero, si queremos copiar el valor de 5 en ella lo haramos de la
siguiente
manera.
A
=
5
se copia el valor de 5 en la variable A.

2.

asignacin del resultado de una expresin aritmtica a una


variable numrica. asumamos que las variable A ha sido declarada
de tipo entero y queremos copiar en ella el resultado de la expresin
aritmtica 5*2 +1 se hara
de la siguiente manera.
A
=
5*
2
+1
se evala primero la expresin aritmtica y el resultado se guarda
en la variable A. En este caso se copia en A el valor de 11.
es posible que la expresin aritmtica este formada con variables
numricas, para ilustrarlo asumamos que A, B y C han sido
declaradas de tipo entero y que en B ya hemos copiado un 10 (B =

10) y en C hemos copiado un dos (B = 2). si queremos copiar en A


lo que tiene B mas lo que tiene C, se hara de la siguiente manera.
A
=
B
+
C
se evala la expresin aritmtica, teniendo en cuenta los contenidos
de las variables B y C, en este caso el resultado es 12 que se
asigna a la variable A.

Ejemplo 10

ENUNCIADO:
Hacer un algoritmo que lea un entero N y muestre el 20 % del nmero.

VARIABLES
Se declara N de tipo entero, para guardar el dato entrado por el usuario.
se declara P de tipo real, para guardar el 20 % del dato (0.2 * N).

EXPLICACIN DEL ALGORITMO


Se declaran las variables requeridas, se le pide al usuario que entre el dato N, se calcula
el porcentaje del nmero y se muestra.

PROBLEMAS PROPUESTOS

1. hacer un algoritmo que lea dos numeros enteros A y B y muestre el doble de su


suma.
2. hacer un algoritmo que lea dos numeros enteros A y B y muestre el resultado de
evaluar (A + B) *2 +10
3. hacer un algoritmo que lea el alto y el ancho de un rectangulo y muestre su area y
su permetro.
4. hacer un algoritmo que lea dos numeros enteros A y B y muestre su diferencia.
5. hacer un algoritmo que lea el nombre de una persona, el valor de la hora trabajada
y el nmero de horas que trabajo. se debe mostrar el nombre y el pago de la
persona
6. hacer un algoritmo que lea el nombre de un artculo, el valor unitario, la cantidad a
comprar y muestre el nombre y el total a pagar.

ASIGNACIN DE VALORES A VARIABLES DE TIPO CADENA

En una variable de tipo cadena se pueden guardar cadenas directamente o el resultado


de evaluar una expresin de cadena.
Asumamos que la variable NOMBRE ha sido declarada de tipo cadena, si queremos
copiar en ella el nombre "Mara" lo haramos de la siguiente manera.
NOMBRE = "Mara"
Copiara en la variable NOMBRE el valor de "Maria".

ENUNCIADO:
Hacer un algoritmo que lea un nmero entero N y muestre un mensaje formado con la
cadena " LA MITAD DEL NUMERO ES " y la mitad del nmero ingresado.

VARIABLES
Se declaran N, de tipo entero , para guardar el dato que ingrese el usuario.
Se declaran MITAD, de tipo real , para guardar la mitad del dato que ingrese el usuario.
EXPLICACION DEL ALGORITMO
Se declaran las variables requeridas, se le pide al usuario que entre N. se calcula la mitad
del nmero N y finalmente se muestra el mensaje pedido.

PROBLEMAS PROPUESTOS
1. hacer un algoritmo que lea el nombre y la edad de una persona y muestre el
nombre y los segundos que ha vivido la persona.
2. hacer un algoritmo que lea el nombre de una persona y muestre un mensaje
formado con el nombre y la cadena " BIEN VENIDO".
3. hacer un algoritmo que lea el nombre de una persona, su edad y muestre un
mensaje formado con el nombre, la cadena " TIENE ESTOS AOS " y la cantidad
de aos..
4. hacer un algoritmo que lea el nombre de una persona y muestre un mensaje
formado con el nombre y la cadena " HASTA PRONTO".

ASIGNACION DE VALORES A VARIABLES LGICAS


En una variable lgica slo se podrn guardar datos lgicos (verdadero" o "falso") o
el resultado de evaluar una expresin lgica.
Asumamos que la variable BANDERA ha sido declarada de tipo lgico, si queremos
copiar en ella el resultado de la expresin lgica 2 > 10, lo haramos de la siguiente

manera.
BANDERA = 2 > 10
Copiara en la variable BANDERA el valor de "falso", pues 2 no es mayor que 10.

ENUNCIADO:
Hacer un algoritmo que lea los datos N1 y N2 de tipo entero y muestre el resultado de la
siguiente expresin lgica:
N1 > 10 && N2 < 30 | | N1< N2

VARIABLES
Se declara N1 y N2, de tipo entero , para guardar los nmeros que ingresa el usuario.
Se declara RESPUESTA, de tipo lgico , para guardar el resultado de la expresin .
EXPLICACION DEL ALGORITMO
Se declaran las variables requeridas. Se leen los datos N1 y N2, en RESPUESTA se
guarda el resultado de evaluar la expresin indicada y final mente se muestra el resultado.

PROBLEMAS PROPUESTOS
1. hacer un algoritmo que lea el dato N de tipo entero y muestre el resultado de la
siguiente expresion lgica x < 3 && X < 20

2. hacer un algoritmo que lea los datos enteros A y B y muestre el resultado de la


expresion lgica A >( B - 10)
3. hacer un algoritmo que lea el dato N de tipo entero y muestre el resultado de la
expresion lgica N >= 0.
4. hacer un algoritmo que lea el dato N de tipo entero y muestre el resultado de la
expresion lgica N < 10 | | N < 30.
5. hacer un algoritmo que lea los datos enteros A , B y C y muestre el resultado de la
expresion lgica A * C >= ( B - 10)

Los siguientes ejemplos son una miscelnea:


ENUNCIADO:
Hacer un algoritmo que lea el nombre, la cantidad de horas trabajadas y el valor de cada
hora. muestre el nombre y el pago del trabajador.
DATOS:
los
datos
de
entrada
NOMBRE:
para
guardar
el
nombre
del
trabajador
NH:
para
guardar
las
horas
trabajadas(
VH: para guardar el valor de cada hora( tipo real).

son
(tipo
tipo

:
cadena).
real).

otros
P : para guardar el pago. recordar que el pago se calcula asi : P = NH* VH
EXPLICACION DEL ALGORITMO
1. se deben declarar las variables a utilizar NOMBRE, NH, VH y P.
2. luego se leen los datos NOMBRE, NH, VH.
3. una vez leidos los datos se hace el clculo para determinar el pago.
4. se muestra el nombre y el pago del trabajador.

datos:

ENUNCIADO:
Hacer un algoritmo que lea las unidades a comprar y el valor de la unidad. Calcule y
muestre el valor a pagar (teniendo en cuenta que se descuenta un 10 % del total).
DATOS:
Los
datos
de
NU:
para
guardar
las
unidades
VU: para guardar el valor de la unidad (tipo real).

entrada
comprar

Otros
DTO: para guardar el valor a descontar (de tipo real)

(tipo

son:
real).
datos:

Recordar que el descuento se calcula as: DTO = (NU*VU)*10/100


TP: para guardar el total a pagar (tipo real). Recordar que el total a pagar se calcula as:
TP = NU* VU - DTO

EXPLICACION DEL ALGORITMO


1. se deben declarar las variables a utilizar NU, VU, DTO, TP.
2. luego se leen los datos NU, VU.
3. una vez ledos los datos se hace el clculo para determinar el descuento y
el total a pagar.
4. se muestra el total a pagar.

PROBLEMAS PROPUESTOS
1. Encontrar el valor de la variable B, despues de la ejecucin de las siguientes
operaciones (B,X,Y son variables de tipo entero)

B=2+3
B=8

X=2

Y=6

B = X*Y

B=5

B = B+1

B=2+3

B = B*2

X=2

Y=6

B = B+X*Y

B =5

B = B*2+5

2. Encontrar el valor de la variable B (de tipo lgico, despus de la ejecucin de las


siguientes operaciones (X,Y ,Z son variables de tipo entero)

X=6
Y=6

B = X >Y

X=4

Y=6

Z =1

B = ( (X<=Z) and (Z<10)) or (Y>X)

3. realizar un algoritmo que muestre el siguiente mensaje: "hola buenos das".


4. Hacer un algoritmo que calcule la suma de dos nmeros enteros.
5. Realizar un algoritmo que lea el nombre y la edad de una persona y que imprima el
nombre y la cantidad de meses vividos.
6. Hacer un algoritmo que convierta metros a kilmetros y centmetros.
7. Hacer un algoritmo que convierta horas a minutos y a segundos
8. Hacer un algoritmo que permita pasar kilogramos a gramos y toneladas.
9. Hacer un algoritmo que calcule el rea de un tringulo.
10. Hacer un algoritmo que calcule el permetro de un cuadrado.
11. Hacer un algoritmo que lea un nmero entero y muestre el cuadrado del nmero, el
doble del nmero, la mitad del nmero y el 20% del nmero.
12. Hacer un algoritmo que lea el nombre, la cantidad de horas trabajadas y el valor de la
hora. Que muestre el salario y el nombre

2. INSTRUCCIONES

INSTRUCCIONES DE DECISIN
Las instrucciones de decisin son necesarias cuando en un algoritmo una o muchas
tareas se deben hacer o no, dependiendo de una situacin en particular. esta situacin
nos ayudar a decidir si hacemos o no las tareas indicadas. las instrucciones de
decisin que estudiaremos son las bsicas, la INSTRUCCIN DE DECISIN SI y la
INSTRUCCIN DE DECISIN SI NO.

INSTRUCCIONES DE DECISIN (si)

La estructura es la siguiente:

Inicio

Instruccin 1

si expresin lgica entonces

.......Instruccin 11

.......Instruccin 12

.......Instruccin 13

fin si

Instruccin n

fin del programa

Se evala la expresin lgica si es verdadera se realizan las instrucciones internas, de lo


contrario se salta a la siguiente instruccin fuera de la estructura en este caso a la
instruccin n.

ENUNCIADO:
Hacer un algoritmo que lea dos nmeros enteros, muestre el mayor de ellos y si son
iguales lo reporta.
DATOS:
los datos de entrada son:
N1,

N2:

para

guardar

los

datos

leidos

de

tipo

entero)

EXPLICACION DEL ALGORITMO

se debe definir las variables a utilizar N1,N2.


luego se leen los datosN1, N2.

se verifica si N1 es mayor que N2, si es asi se muestra a N1.

se verifica si N2 es mayor que N1, si es asi se muestra a N2.

se verifica si N1 es igual N2, si es asi se muestra un mensaje indicando


que son iguales.

ENUNCIADO:

Hacer un algoritmo que lea un nmero entero N y diga si es par o no.


DATOS:
N:

para

guardar

el

nmero

(de

tipo

entero)

EXPLICACION DEL ALGORITMO

se debe definir la variable a utilizar N.


luego se lee el dato de entrada N.

se verifica si el nmero es par (si N mod 2 == 0) si es asi se notifica que el


numero es par.

se verifica si el nmero es impar ( si N mod 2 == 1) si es asi se notifica que


el numero es impar.

PROBLEMAS PROPUESTOS
1. Realizar un algoritmo que reciba la hora si es menor a 12 muestre el
siguiente mensaje: "hola buenos das".
2. Hacer un algoritmo que calcule la suma de dos nmeros enteros. Si la
suma es mayor que 100 sacar un mensaje comunicndolo.
3. Realizar un algoritmo que lea el nombre y la edad de una persona y si es
menor de edad (edad menor o igual a 18 aos) imprima el nombre y la
cantidad de meses vividos.
4. Hacer un algoritmo que calcule el rea de un tringulo y adems informe
cual longitud es la mayor la altura o la base.
5. Hacer un algoritmo que lea un nmero entero y muestre el cuadrado del
numero si el numero es mayor a 10. el doble del numero, si el numero es
mayor a 20, la mitad del numero si le numero es mayor a 50.
6. Hacer un algoritmo que lea el nombre, la cantidad de horas trabajadas y el
valor de la hora. Que muestre el salario y el nombre si el total a pagar es
mayor a 1000.
7. Hacer un algoritmo que lea un nmero entero N, si N es par y mayor a 200
muestre el doble de N, si N es par y menor a 200 muestre la mitad de N.
8. Hacer un algoritmo que lea un nmero entero N, si N es par muestre el
doble de N, si N mayor a 200 muestre la mitad de N.
9. Hacer un algoritmo que lea el nombre y la edad de una persona, si es
mayor de edad muestre el nombre y los dias vividos, si es menor de edad
mustre slo el nombre.

INSTRUCCIONES DE DECISIN (si - si no )


La estructura es la siguiente:

Inicio

Instruccin 1

si expresin lgica entonces

.......Instruccin 11

.......Instruccin 12

.......Instruccin 13

si no

.......Instruccin 21

.......Instruccin 22

.......Instruccin 23

fin si

Instruccin n

fin del programa

Se evala la expresin lgica si es verdadera se realizan las instrucciones internas al si


en este caso las instrucciones (l1,l2,l3,...) y luego se sigue con la instruccin n. Si la
expresin lgica es falsa se realizan las instrucciones internas al si no en este caso las
instrucciones (21, 22, 23) y luego se sigue con la instruccin n. Es de notar que este tipo
de instruccin es excluyente, o sea que si entra por el si, no entra por el si no. Y si entra
por el si no, no entra por el si.

ENUNCIADO:
Hacer un algoritmo que lea dos nmeros enteros, muestre el mayor de ellos y si son
iguales lo reporta.
DATOS:
los
N1,

N2

datos
para

de
guardar

los

datos

entrada
leidos

de

son
tipo

:
entero)

EXPLICACION DEL ALGORITMO

se debe definir las variables a utilizar N1,N2.


luego se leen los datosN1, N2.

se verifica si N1 es mayor que N2, si es asi se muestra a N1.

se verifica si N2 es mayor que N1, si es asi se muestra a N2.

se verifica si N1 es igual N2, si es asi se muestra un mensaje indicando


que son iguales.

ENUNCIADO:
Hacer un algoritmo que lea un nmero entero N y diga si es par o no.
DATOS:
N: para guardar el nmero (de tipo entero)
EXPLICACION DEL ALGORITMO

se debe definir la variable a utilizar N.


luego se lee el dato de entrada N.

se verifica si el nmero es par ( si N mod 2 == 0) si es asi se notifica que el


numero es par.

se verifica si el nmero es impar ( si N mod 2 == 1) si es asi se notifica que


el numero es impar.

PROBLEMAS PROPUESTOS
1. Lea el nombre, la edad y el sexo (1= femenino, 2= masculino) de una persona y si
esta es de sexo masculino y mayor de edad imprima el nombre, de lo contrario
imprima el nombre y edad de la persona.
2. Lea el nombre, la edad, el sexo (1= femenino, 2= masculino) y el estado civil (1=
soltero, 2 = casado, 3 = otro) de una persona e imprima el nombre y la edad de la
persona slo si esta es mujer menor de edad, de lo contrario indique que estado
civil tiene esa persona.
3. Lea dos nmeros X y Y e imprima ambos nmeros si por lo menos uno de ellos es
positivo.
4. Lea dos nmeros X y Y e imprima ambos nmeros slo si son de diferente signo y
distintos de cero.
5. Lea dos nmeros, calcule el cociente de dividir el primero por el segundo. Imprima
el cociente. Pero recuerde que antes de hacer la divisin debe evaluar que el
divisor no sea igual a cero (0). Por que en este caso debe imprimir "la divisin no
es posible".
6. Para un salario bruto hasta de $ 250.500 no hay retencin. Para un salario bruto
de $ 250.501 a $ 300.000 el porcentaje de retencin es de 5% . para un salario
bruto mayor a $300.000 el porcentaje de retencin es del 8%. Imprimir el nombre
del empleado, el salario bruto, el valor de la retencin y el salario neto( salario
bruto menos la retencin). Se debe leer el nombre el salario hora y las horas
trabajadas.
7. Leer el nombre de un empleado, el salario bsico por hora y el nmero de horas
trabajadas durante una semana. Calcular el salario neto, teniendo en cuenta que si
el nmero de horas trabajadas durante la semana es mayor a 48, esas horas de
mas se consideran horas extras y tienen un 25% de recargo.

INSTRUCCIONES DE REPETICION
Las instrucciones de repeticin son necesarias cuando en un algoritmo hay que realizar
una o muchas tareas varias veces, las instrucciones de repeticin bsicas son: el
MIENTRAS y el PARA, cada una de las cuales tiene su propia representacin y su propia
manera de controlar el nmero de veces que se repetir el ciclo( instrucciones internas ).
estas caractersticas hacen que una instruccin de repeticin sea mas adecuado que la
otra en una situacin particular.
ESTRUCTURA MIENTRAS( while)

La estructura repetitiva mientras es aquella en que las instrucciones


internas (bucle )se ejecutan mientras se cumple una determinada
condicin. La estructura es la siguiente:

Inicio

Instruccin 1

mientras expresin_lgica haga

.......Instruccin 11

.......Instruccin 12

.......Instruccin 13

fin mientras

Instruccin n

fin del programa

Cuando se ejecuta la instruccin mientras. La primera cosa que sucede es


que se evala la condicin (una expresin lgica). Si la expresin es falsa,
ninguna accin del bucle( parte interna) se ejecuta y el programa continua
en la siguiente instruccin al bucle. Si la expresin es verdadera, entonces
se ejecuta el cuerpo del bucle. Despus de lo cual se evala de nuevo la
expresin booleana. Este proceso se repite una y otra vez mientras la
expresin lgica (condicin) sea verdadera. Dentro del cuerpo del bucle
debe existir una instruccin que modifique la expresin de tal manera que
en algn momento haga que su valor sea falso. Es decir que garantice la
terminacin del ciclo.
Para controlar el nmero de repeticiones del ciclo se puede hacer de dos
maneras:
1.

utilizando una variable contador.

2.

utilizando una variable centinela.

ESTRUCTURA MIENTRAS( while) CONTROLADA CON UNA VARIABLE


CONTADOR
Una situacin especfica de esta estructura se muestra a continuacin:

i
mientras
i
mostrar
i
=
fin mientras

=
<=
i

valorInicial
valorFinal
haga
(
i
)
+
incremento

en este tipo de mientras se pueden identificar las siguientes partes:


1.

variable controladora : en este ejemplo la variable controladora


es i, pues i es la variable que forma parte de la expresin lgica que
decide si se entra o no el ciclo.

2.

valor inicial: corresponde al valor inicial que toma la variable


controladora, siempre se asigna antes de entrar al ciclo, en este
caso el valor inicial es uno(1).

3.

valor final: corresponde al valor final que puede tomar la variable


controladora para que ingrese al ciclo. siempre forma parte de la
expresin lgica, en este caso el valor final es 10.

4.

incremento: es el valor que se le incrementa a la variable


controladora. siempre se hace dentro del ciclo, en este caso el
incremento es de uno (1).

5.

nmero de repeticiones: se calcula a si:


nmero de repeticiones = (valor final - valor inicial + 1 )/
incremento
nmero de repeticiones = (10 - 1+1)/1 = 10

segn la informacin que se tenga para construir el mientras se pueden


estar en uno de los siguientes casos :
1.

cuando se conoce el valor inicial, el valor final y el incremento.

2.

cuando se conoce el valor inicial, el incremento y el usuario entra


el valor final.

ENUNCIADO:
Hacer un algoritmo que lea N datos enteros dados por el usuario y muestre su suma.
VARIABLES

N: para guardar la cantidad de datos que entrar ell usuario ( de tipo entero).
DATO: para guardar cada uno de los datos que ingresa el usuario( de tipo entero)
SUMA :
para guardar la suma de los digitos( de tipo entero).
I : para controlar el ciclo( de tipo entero).
EXPLICACION DEL ALGORITMO
se
debe
definir
las
variables
a
utilizar
N,
I, DATO
y
SUMA.
lo primero que se debe hacer es preguantarle al usuario que nos indique en la variable N
la
cantidad
de
datos
que
ingresar.
se inicia la variable SUMA, se debe hacer antes de comenzar a ingresar los datos.
Se construye un ciclo mientras que se repita hasta N veces y en cada repeticion se lee un
dato,el cual se va acumulando en la variable SUMA. al terminar de ingresar todos los
datos se muestra el contenido de la variable SUMA.

ENUNCIADO:
Hacer un algoritmo que lea N datos enteros dados por el usuario y muestre la suma de los
datos impares.

VARIABLES
Los datos de entrada son:
N:
para
guardar
la
cantidad
de
datos
que
ingresar
el
usuario.
DATO: para guardar cada uno de los datos ingresado por el usuario (de tipo entero).

Otros
I:
para
controlar
el
SUMA: para guardar la sumatoria de los datos impares (de tipo entero).

datos:
ciclo.

EXPLICACION DEL ALGORITMO

se debe definir las variables a utilizar N, DATO, I, SUMA.


se construye un mientras controlado por la variable I para que se repita N
veces.
se lee cada dato, si el dato es impar se acumula.

al terminar el ciclo se muestra SUMA.

ENUNCIADO:
Hacer un algoritmo que lea N datos enteros dados por el usuario y muestre la suma de los
datos pares.
VARIABLES

los
datos
de
entrada
son
:
N:
para
guardar
la
cantidad
de
datos
que
ingresar
el
usuario.
DATO: para guardar cada uno de los datos ingresado por el usuario ( de tipo entero).
otros
I
SUMA :

:
para

guardar

para
la sumatoria

controlar
de los datos

el
pares(

de

tipo

datos:
ciclo.
entero).

EXPLICACION DEL ALGORITMO

se debe definir las variables a utilizar N,DATO, I, SUMA.


se construye un mientras controlado por la variable I para que se repita N
veces, par leer cada dato, si el dato es par se acumula.

al terminar el ciclo se muestra SUMA.

ESTRUCTURA MIENTRAS ( While) CONTROLADOS POR UNA VARIABLE


CENTINELA
Se utilizan cuando no sabemos cuantas veces se debe repetir el ciclo. en este
caso se utiliza una variable que nos servir de centinela, para indicarnos cuando
terminar el ciclo.
Un ejemplo clsico del centinela es cuando el enunciado nos indica que el usuario
ingresar una lista de datos mayores que cero (0) y para notificar de que no quiere
ingresar mas datos ingresa un dato negativo o cero.
Se utiliza el siguiente esquema.
leer
(
mientras N > 0 haga

leer(
fin mientras

Observar que es necesario leer antes de ingresar al mientras y antes de cerrar el


mientras. La variable que esta sirviendo de centinela es N el dato que ingresa el
usuario, pues si el dato no es mayor que cero se termina el ciclo.

ENUNCIADO:
Hacer un algoritmo que lea un nmero entero y muestre el mayor de sus dgitos.
DATOS: Los datos de entrada son:
DATO: para
otros datos:

guardar

el

dato

que

ingresa

el

usuario

(de

tipo

entero)

N: se inicia con el mismo valor que tiene DATO y se utiliza para extraer cada uno de los
dgitos
(de
tipo
entero).
DIGITO: para guardar el dgito extraido del nmero N( de tipo entero).
MAYOR: para guardar el mayor de los digitos( de tipo entero).

EXPLICACION DEL ALGORITMO

se debe definir las variables a utilizar DATO, N, DIGITO, MAYOR.


luego se lee el dato de entrada DATO y se copia en N, esto para no perder
el valor que ingresa el usuario.

se inicia MAYOR con el primer dgito del nmero N.

mientras el numero N sea mayor que cero, se extrae el DIGITO, el cual se


compara con MAYOR. si es mayor se actualiza la variable MAYOR. luego
se actualiza el numero N.

una vez se terminan los digitos se muestra MAYOR.

ENUNCIADO:
Hacer un algoritmo que lea un dato y muestre el dgito mayor y las veces que se
encuentra en el dato.
VARIABLES
los datos de entrada son :
DATO: para guardar el dato dado por el usuario ( de tipo entero).
otros datos:
K: para guardar una copia del dato entrado por el usuario.
DIGITO : para guardar el dgito extraido ( de tipo entero).
MAYOR : para guardar el dgito mayor( de tipo entero).
C : para contar las veces que se encuentra el dgito mayor en el dato( de tipo entero).

EXPLICACION DEL ALGORITMO:


Para dar respuesta al problema se deben hacer 2 recorridos. uno para hallar el dgito
mayor y otro para contar cuantas veces esta el dgito mayor en el dato.

se debe definir las variables a utilizar K, DATO, DIGITO, MAYOR, C


se lee el DATO.

se inicia mayor ( MAYOR = DATO MOD 10).

mientras se tengan dgitos ( mientras k > 0) se extrae DIGITO y si es


mayor que el contenido de la variable MAYOR se guarda en la variable
MAYOR.

se vuelve a copiar en K en dato inicial y se inicia el contador C = 0.

mientras se tengan dgitos ( mientras k > 0) se extrae DIGITO y si es igual


que que el contenido de la variable MAYOR se cuenta ( C = C + 1 ).

se muestra MAYOR y C.

PROBLEMAS PROPUESTOS
1. Calcular el promedio de las notas que entre el usuario. Se recibir un valor
centinela de -99.
2. Hacer un algoritmo que reciba un dato N y que muestre los datos pares
que hay entre 1 y N.
3. Hacer un algoritmo que reciba un dato N. que calcule y muestre el factorial
de N.
4. Hacer un algoritmo que reciba un dato N. si el dato es par muestre la
sumatoria de N y si es impar muestre el factorial de N.
5. Hacer un algoritmo que muestre los datos impares entre 1 y 100.
6. Hacer un algoritmo que diga cuantos nmeros entre 1 y 100 son divisibles
por 3.
7. Hacer un algoritmo que lea un dato N y diga si es un numero primo o no.
8. Imprimir las 30 primeras potencias de 4, es decir, 4 elevado a la 1, 4
elevado a la 2, etctera.
9. Realizar un algoritmo para obtener la suma de los nmeros pares hasta
2000 inclusive.
10. Leer y mostrar sucesivamente nmeros. Hasta que aparezca un numero
comprendido entre 1 y 5.
11. Determinar el promedio de una lista indefinida de nmeros positivos,
terminados con un nmero negativo.
12. Se desea leer las calificaciones de una clase de informtica y contar el
numero total de aprobados ( 3 o mayor que 3).
13. Leer 100 nmeros. Determinar el promedio de los nmeros positivos y el
porcentaje de nmeros negativos.
14. Calcular el n-simo termino de la serie de fibonacci definida por.
1,2, 3,5,8,13., AN-1+AN-2.
15. Se desea conocer una serie de datos de una empresa con 50 empleados,
decir cuantos empleados ganan ms de 300000 pesos al mes, cuantos
ganan entre 200000 y 300000 pesos y cuantos ganan menos de 100000.
16. Un comercio dispone de dos tipos de artculos en fichas correspondientes a
diversas sucursales con los siguientes campos:
1. Cdigo del artculo A o B.
2. Precio unitario del articulo.

3. Numero de artculos.
4. La ultima ficha del archivo de artculos tiene en el campo cdigo,
una letra X.
Calcular el nmero de artculos existente de cada cdigo, el costo total de los artculos de
cada categora y el costo total del inventario

ESTRUCTURA DE REPETICIN PARA (FOR)


Permite que un grupo de instrucciones se repita cero o mas veces, dependiendo
del valor que resulte al evaluar una expresin de tipo lgico.
La estructura es la siguiente:
Para expresin_inicio, expresin_lgica, expresion_incremento
.......Instruccion1
.......Instruccion2
......Instruccion3
......Instruccion4

Fin
para
Instruccin
n

La expresin_inicio establece la condicin inicial para la variable de control


evaluada en la expresin lgica.
La
expresion_incremento
modifica
la
variable
de
control.
La expresin_lgica es una expresin formado con la variable de control, y que
sirve para controlar el nmero de iteraciones del ciclo el cual termina cuando su
valor sea falso.
ENUNCIADO:
Hacer un algoritmo que lea un dato entero N, y muestre el factorial de N (recuerde que el
factorial de N es: 1 * 2 * 3 *...*N)..
DATOS:
N: para guardar el dato que entra
FACTORIAL
:
para
guardar
I : para controlar el ciclo( de tipo entero).

el
el

usuario ( de
factorial

tipo
de

entero)
N.

EXPLICACION DEL ALGORITMO


Se
debe
definir
las
variables
a
utilizar
N,
I, FACTORIAL.
Se inicia la variable FACTORIAL en uno (1), se debe hacer antes de ingresar al ciclo.
Se construye un ciclo para que se repita N veces y en cada repeticin se va acumulando
en la variable FACTORIAL el producto de FACTORIAL * I. al terminar el ciclo se muestra
el valor de FACTORIAL.

ENUNCIADO:
Hacer un algoritmo que lea un nmero entero N y muestre la sumatoria de los datos pares
que hay entre 1 hasta N.
DATOS:
Los datos de entrada son:
N: para guardar el dato a leer (de tipo entero)
otros datos:
I: para controlar el ciclo.
S: para guardar la sumatoria de 1 hasta el nmero N ( de tipo entero).

EXPLICACION DEL ALGORITMO

se debe definir las variables a utilizar N, DIGITO, S.


luego se lee el dato de entrada N.

se debe iniciar el acumulador S antes de empezar el ciclo. se hace un ciclo


para que se repita N veces y en cada vez se verifica si la I es par en cuyo
caso se acumula en S el valor de I.

ENUNCIADO:
Hacer un algoritmo que lea un nmero entero N si el nmero es par muestre la sumatoria
de 1 hasta N y si el nmero es impar muestre el factorial de N.

DATOS:
Los datos de entrada son:
N: para guardar el dato a leer (de tipo entero)
otros datos:
I: para controlar el ciclo.
S: para guardar la sumatoria de 1 hasta el nmero N (de tipo entero).
F: para guardar el factorial de N (de tipo entero).
EXPLICACION DEL ALGORITMO

se debe definir las variables a utilizar N, DIGITO, S, F.


luego se lee el dato de entrada N.

si el nmero N es par se calcula la sumatoria y se muestra. si el nmero N


es impar se calcula el factorial y se muestra.

PROBLEMAS PROPUESTOS
Utilizando la estructura para realizar:
1. Hacer un algoritmo que reciba un dato N y que muestre los datos pares
que hay entre 1 y N.
2. Hacer un algoritmo que reciba un dato N. que calcule y muestre el factorial
de N.
3. Hacer un algoritmo que reciba un dato N . si el dato es par muestre la
sumatoria de N y si es impar muestre el factorial de N.
4. Hacer un algoritmo que muestre los datos impares entre 1 y 100.
5. Hacer un algoritmo que diga cuantos nmeros entre 1 y 100 son divisibles
por 3.
6. Imprimir las 30 primeras potencias de 4, es decir, 4 elevado a la 1, 4
elevado a la 2, etctera.
7. Realizar un algoritmo para obtener la suma de los nmeros pares de 1
hasta 2000 inclusive.
8. Se desea leer las N calificaciones de una clase de informtica y contar el
numero total de aprobados ( 3 o mayor que 3).
9. Leer 100 nmeros. Determinar el promedio de los nmeros positivos y el
promedio de los nmeros negativos.
10. Calcular el n-simo termino de la serie de fibonacci definida por.
1,2, 3,5,8,13., AN-1+AN-2.
11. Se desea conocer una serie de datos de una empresa con 50 empleados,
decir cuantos empleados ganan ms de 300000 pesos al mes, cuantos
ganan entre 200000 y 300000 pesos y cuantos ganan menos de 100000.
12. Hacer un algoritmo que muestre las tablas de multiplicar del uno al diez, y
cada tabla del uno al diez.
13. Hacer un algoritmo que muestre los nmeros primos que hay entre uno y
1000.
14. Hacer un algoritmo que muestre los nmeros entre 1 y 100 cuya suma de
dgitos es 10.
15. Hacer un algoritmo que invierta los dgitos de cada nmero entre 1 y 2000.
16. Hacer un algoritmo que muestre la suma de dgitos de 100 nmeros que
entra el usuario.
17. Hacer un algoritmo que muestre el nmero mayor de los 100 datos
entrados por el usuario.

SUBALGORITMOS

Cuando un algoritmo crece demasiado, se hace necesario dividirlo en


subalgoritmos o mdulos, llamados funciones o procedimientos. Esta
divisin nos permite:
1. Hacer ms entendible los algoritmos.
2. La deteccin y correccin de problemas se hace mas simple, pues
los problemas estn mas localizados, no es necesario analizar todo
el algoritmo, slo el mdulo que esta fallando.
3. Permite que los subalgoritmos se especialicen en resolver una tarea
especfica, sin importarles como funcionan los dems mdulos. Esto
facilita que varias personas puedan realizar un algoritmo, cada uno
de ellos realiza un subalgoritmo especfico.
4. Si
se han construido subalgoritmos, estos se pueden
utilizar( llamar) las veces que se necesite. esto es la reutilizacin de
los subalgoritmos, para que resolver un problema que ya haba sido
resuelto, slo se llama a la solucin.

3. FUNCIONES

Una funcin es un subalgoritmo que toma uno o ms valores llamados argumentos


y produce un valor llamado resultado (valor de la funcin para los argumentos
dados).

DECLARACION DE FUNCINES:
La declaracin de una funcin requiere una serie de pasos que la definen.
Una funcin tiene una construccin similar a los algoritmos.
La descripcin de la funcin ser:
tipo de dato: nombre_fincin (lista de parmetros)
<acciones>
devolver(
fin funcin

expresin

1. tipo de dato: indica de que tipo de dato es la informacin que


devuelve la funcin.
2. dos puntos ' : '
3. nombre de la funcin: debe ser un identificador vlido y nico que
se utiliza para llamar a la funcin.
4. argumentos de dicha funcin. Es una lista de declaraciones de
variables se paradas por dos puntos (' : ') donde se especifican los
datos que requiere la funcin para trabajar.
5. Acciones o cuerpo de la funcin: son las diferentes tareas que
realiza la funcin.
6. devolver (expresin): se indica que dato es el que devolver la
funcin al subalgoritmo que lo llam.
7. fin funcion: para indicar donde termina la funcin.

INVOCACION DE LAS FUNCINES:


Una funcin puede ser llamada de la siguiente manera:
nombre_fincin ( lista de parmetros actuales)

La lista de parmetros actuales debe corresponder en tipo y cantidad con


la
lista
de
parmetros
(formal)
definidos
en
la
funcin.
Una llamada a la funcin implica los siguientes pasos:
a cada parmetro formal se le asigna el valor real de su correspondiente
parmetro
actual.

Se
ejecuta
el
cuerpo
de
acciones
de
la
funcin
Se devuelve el valor de la funcin al nombre de la funcin y se retorna al
punto de llamada.
El siguiente algoritmo llama a la funcion ESPRIMO para determinar y mostrar si los
nmeros del 1 al 5 son primos o no.

VARIABLES
I: para controlar el ciclo.
M: para guardar la respuesta de la funcin.
Nota: la funcin ESPRIMO, recibe el nmero a verificar y devuelve cero (0) si el dato
recibido no es primo, y devuelve uno(1) si el dato recibido si es primo.
EXPLICACION DEL ALGORITMO

se debe declarar las variables a utilizar I, M.


se construye un ciclo para que se repita 5 veces y en cada vez se llama a
la funcin ESPRIMO y se le entrega el valor de I, la respuesta se recibe en
la variable M. si M es cero es por que el numero enviado no era primo. si M
es uno es por que el nmero enviado si es primo.

PROBLEMAS PROPUESTOS
1.

realizar una funcin que reciba un dato N y devuelva la suma de sus


dgitos.
2. realizar una funcin que reciba un dato N y devuelva el digito mayor.
3.

realizar una funcin que reciba un dato N y devuelva las veces que esta el
dgito mayor.

4.

realizar una funcin que reciba un dato N y devuelva la diferencia del


dgito mayor y el menor.

5.

realizar una funcin que reciba un dato N y devuelva la cantidad de dgitos


que tiene el dato N.

6.

realizar una funcin que reciba un dato N y devuelva la suma de los dgitos
pares.

Utilizando las funciones anteriores realizar:


1. un algoritmo que lea 100 datos dados por el usuario y muestre la suma de
dgitos de cada dato y la suma mayor.
2. un algoritmo que lea 500 datos dados por el usuario y muestre el dgito
mayor de cada dato y el porcentaje de datos que tienen como digito mayor
el 7 o el 9.
3. un algoritmo que lea 100 datos dados por el usuario y muestre la cantidad
de dgitos de cada dato y el promedio de los datos que tienen 5 dgitos.

OTROS PROBLEMAS
1. Realizar una funcin que reciba un dato N , calcule y regrese la
sumatoria de 1 hasta N.
2. Utilizando la funcin anterior realizar un programa que muestre la
sumatoria de los N nmeros que ingrese el usuario, y diga cual de los
datos tiene la mayor sumatoria
a. Realizar una funcin factorial que reciba un numero N y calcule
y regrese el factorial de N
b. Utilizando la funcin anterior mostrar los nmeros entre 5 y 100
c.

que tienen un factorial mayor a 2000.

d. Utilizando la funcin anterior mostrar el factorial de los nmeros


impares que hay entre 50 y 100.
3. Realizar una funcin llamada pago_nomina que reciba el nombre,
nmero de horas trabajadas y el valor de la hora y calcule y devuelva

el pago del trabajador, teniendo en cuenta que las horas extras tienen
un recargo del 50% sobre la hora normal.
a. Utilizando la funcin anterior realizar un programa que lea los
datos de 1000 empleados, calcule y muestre el pago de cada
uno de ellos, adems muestre el total a pagar y el sueldo mayor.
b. Hacer una funcin que reciba el lado de un cuadrado calcule y
devuelva el permetro.
4. Utilizando la funcin anterior realizar un programa que lea el lado de 100
cuadrados, y muestre el permetro de cada uno de ellos y diga cuantos
tienen permetro entre 40 y 50.

5. Hacer una funcin que reciba el radio de un crculo calcule y devuelva


el rea.
a. Utilizando la funcin anterior realizar un programa que lea el
radio de 100 crculos, y muestre el rea de cada uno de ellos y
diga cual es el rea menor y la mayor.
6.

Hacer una funcin llamada potencia para el clculo de N elevado a A


(por multiplicaciones sucesivas) y utilizarla en un programa para
calcular la potencia de las 100 parejas de datos entradas por el usuario,
adems muestre la sumatoria de las potencias de todas las parejas.

7. Realizar una funcin que reciba un numero N y regrese la sumatoria de


sus dgitos.
a. Utilizando la funcin anterior realizar un programa que muestre
los nmeros entre 500 y 1500 y la suma de dgitos de cada uno,
adems muestre los nmeros que tienen la mayor suma de
dgitos.

8.

b.

Utilizando la funcin anterior realizar un programa que muestre


la
suma
De dgitos de los nmeros pares mayores que 100 y menores
que 1000.
adems diga cuantos nmeros tienen como
suma de dgitos 13.

c.

Utilizando la funcin anterior realizar un programa que lea 1000


nmeros dados por el usuario y muestre los numero cuya suma
de dgitos es menor a 10.

d.

Utilizando la funcin anterior realizar un programa que lea N


datos dados por el usuario y muestre y cuente los nmeros
cuya suma de dgitos es 10 y terminan en 5.

Realizar una funcin que reciba un numero N y determine y devuelva


la cantidad de dgitos pares que tiene.

a. Utilizando la funcin anterior realizar un programa que lea 500


datos dados por el usuario y muestre el nmero y la cantidad de
dgitos pares de cada nmero.
b. Utilizando la funcin anterior realizar un programa que muestre
los nmeros entre 500 y 100 que tengan 2 dgitos pares,
adems muestre el mayor de dichos nmeros.

9.

Realizar una funcin que reciba un dato N, determine y devuelva el


digito mayor.
a. Utilizando la funcin anterior realizar un programa que muestre
los dgitos mayores de los nmeros entre 2000 y 3000
b.

Utilizando la funcin anterior realizar un algoritmo que lea 100


datos dados por el usuario y muestre los datos que tengan
como mayor digito el 8 el 4.

c. Utilizando la funcin anterior realizar un programa que muestre


el digito mayor de los nmeros pares que hay entre 500 y 1000,
adems muestra la sumatoria de dichos dgitos.

Utilizando las funciones anteriores:

Hacer un programa que muestre el factorial de los datos entre 100 y 500 que
tienen como suma de dgitos 6
Hacer un programa que lea N datos dados por el usuario y muestre la sumatoria
de los datos que tienen como suma de dgitos 2 y su mayor dgito es 8.
Hacer un programa que lea N datos dados por el usuario y muestre la sumatoria
de cada uno de los datos que terminan en 4, tienen como suma de dgitos 5 y su
mayor dgito es 9.

PROCEDIMIENTOS
Un procedimiento es un subalgoritmo que toma uno o ms valores
llamados argumentos, con los cuales ejecuta tareas especficas.

DECLARACION DE PROCEDIMIENTOS:
La declaracin de un procedimiento requiere una serie de pasos que la
definen. Un procedimiento tiene una construccin similar a los algoritmos,
por consiguiente constar de una cabecera que comenzar con nombre del
procedimiento y entre parntesis una lista de argumentos del
procedimiento. A continuacin ir el cuerpo del procedimiento, que ser
una serie de acciones o instrucciones que conforman el cuerpo del
procedimiento.
La descripcin del procedimiento ser:
nombre_procedimiento (lista de argumentos)
<acciones>
fin procedimiento
1. nombre del procedimiento: debe ser un identificador vlido y nico
que se utiliza para identificar al procedimiento.
2. lista de argumentos. Es una lista de declaraciones de variables se
paradas por dos puntos (: ') donde se especifican los datos que
requiere el procedimiento para trabajar.
3. Acciones o cuerpo del procedimiento: son las diferentes tareas que
realiza el procedimiento.
4. fin procedimiento: para indicar donde termina el procedimiento.

INVOCACION

DE

LOS

PROCEDIMIENTOS:

Un procedimiento puede ser llamada de la siguiente manera:

nombre_procedimiento ( lista de parmetros actuales)

la lista de parmetros actuales debe corresponder en tipo y cantidad con la lista de


parmetros
(formal)
definidos
en
la
funcin.
Una llamada a un procedimiento implica los siguientes pasos:
a cada parmetro formal se le asigna el valor real de su correspondiente
parmetro
actual.

Se
ejecuta
el
cuerpo
de
acciones
del
procedimiento.
Se regresa a la instruccin siguiente del punto de llamada.

El siguiente algoritmo llama al procedimiento ESPRIMO para determinar y mostrar si los


nmeros del 1 al 5 son primos o no.
VARIABLES
I: para controlar el ciclo.

EXPLICACION DEL ALGORITMO

se debe declarar la variable a utilizar I.


se construye un ciclo para que se repita 5 veces y en cada vez se llama al
procedimiento ESPRIMO y se le entrega el valor de I, el procedimiento es
el encargado de decir si el nmero es primo o no.

PROBLEMAS PROPUESTOS
1.

realizar un procedimiento que reciba un dato N y muestre el nmero y la


suma de sus dgitos.
2. realizar un procedimiento que reciba un dato N y muestre el dato su dgito
mayor.
3.

realizar un procedimiento que reciba un dato N y muestre el dato y las


veces que esta el dgito mayor.

4.

realizar un procedimiento que reciba un dato N y muestre el dato y la


diferencia del dgito mayor y el menor.

5.

realizar un procedimiento que reciba un dato N y muestre el dato y la


cantidad de dgitos que tiene.

6.

realizar un procedimiento que reciba un dato N y muestre el dato y la suma


de sus dgitos pares.

Utilizando los procedimientos anteriores realizar:


1. un algoritmo que lea 100 datos dados por el usuario y muestre cada dato y
la suma de dgitos de cada dato.
2. un algoritmo que lea 500 datos dados por el usuario y muestre cada dato y
su dgito mayor.
3. un algoritmo que lea 100 datos dados por el usuario y muestre cada dato y
la cantidad de dgitos que tiene.

TCNICAS PARA LA FORMULACIN DE ALGORITMOS

DIAGRAMA DE FLUJO
Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se puede
decir que es la representacin detallada en forma grfica de como deben realizarse los
pasos en la computadora para producir resultados.
Esta representacin grfica se da cuando varios smbolos (que indican diferentes
procesos en la computadora), se relacionan entre s mediante lneas que indican el
orden en que se deben ejecutar los procesos.

Los smbolos utilizados han sido normalizados por el instituto norteamericano


de normalizacin (ANSI).

SMBOLO

DESCRIPCIN
Indica el inicio y el final de nuestro
diagrama de flujo. Indica la entrada

salida de datos.
Smbolo de proceso y nos indica la asignacin de un
valor en la memoria y/o la ejecucin de una operacin
aritmtica.
Smbolo de decisin indica la realizacin de una
comparacin de valores.
Lneas de flujo o direccin. Indican la secuencia en que
se realizan las operaciones.

I=VI hasta VF

Repetitiva Desde

RECOMENDACIONES PARA EL DISEO DE DIAGRAMAS DE FLUJO

Un diagrama de flujo es la representacin grfica de un algoritmo. Tambin se puede


decir que es la representacin detallada en forma grfica de como deben realizarse los
pasos en la computadora para producir resultados.
Esta representacin grfica se da cuando varios smbolos (que indican diferentes
procesos en la computadora), se relacionan entre si mediante lneas que indican el
orden en que se deben ejecutar los procesos.
Los smbolos utilizados han sido normalizados por el instituto norteamericano
de normalizacin (ANSI).

Todo diagrama debe tener un inicio y un fin.


Se deben se usar solamente lneas de flujo horizontal y/o vertical.
Se debe evitar el cruce de lneas utilizando los conectores.
Se deben usar conectores solo cuando sea necesario.
No deben quedar lneas de flujo son conectar.
Se deben trazar los smbolos de manera que se puedan leer de arriba hacia
abajo y de izquierda a derecha.

Todo texto escrito dentro de un smbolo deber ser escrito claramente,


evitando el uso de muchas palabras.

Evitar la terminologa de un lenguaje de


programacin o maquina.

Utilizar comentarios ya sea al margen o mediante el smbolo grafico comentarios


para que este sea entendible por cualquier persona que lo consulte.
Si el diagrama abarca mas de una hoja es conveniente enumerarlo e identificar de
donde viene y a donde se dirige.

PSEUDOCDIGO
Mezcla de lenguaje de programacin y espaol (o ingles o cualquier otro idioma) que
se emplea, dentro de la programacin estructurada, para realizar el diseo de un
programa. En esencial, el pseudocdigo se puede definir como un lenguaje de
especificaciones de algoritmos.
Es la representacin narrativa de los pasos que debe seguir un algoritmo para dar
solucin a un problema determinado. El pseudocdigo utiliza palabras que indican el
proceso a realizar.
El pseudocdigo se concibi para superar las dos principales desventajas del Diagrama
de Flujo: el diagrama de flujo es lento de crear y difcil de modificar sin un nuevo
redibujo. Por otra parte el pseudocdigo es mas fcil de utilizar ya que es similar al
lenguaje natural.
Al contrario de los lenguajes de programacin de alto nivel como Pascal o Basic no
existe un conjunto de reglas que definan con precisin lo que es y lo que no es
pseudocdigo. Vara de un programador a otro.

El pseudocdigo requiere de ciertos smbolos que ya tienen significado preciso y


establecido a los que se les conoce como palabras clave. Es necesario que exista una
palabra clave para la seleccin y otra para la iteracin condicional, as como para las
instrucciones adicionales y otras estructuras de control.
A continuacin se expone el manual de DFD, tomado de: proyectouno.googlecode.com/files/MANUAL%20DFD.pdf- moodle.cipet.ac.cr/file.php/1/manuales/
Manual_DFD_2.pdf

4. MANUALES

MANUAL DE DFD
DFD es un programa de libre disposicin para ayuda al diseo e implementacin de
algoritmos expresados en diagramas de flujo (DF). Adems incorpora opciones para el
depurado de los algoritmos, lo que facilita enormemente la localizacin de los errores
de ejecucin y lgicos ms habituales.
Su utilizacin es muy sencilla, al tratarse de una herramienta grfica, y adems incluye
un men de ayuda muy completo, por lo que en estas notas nos vamos a centrar en el
uso bsico de las herramientas de diseo y depuracin. El resto de opciones (detalles
de sintaxis ms avanzados, operadores y funciones disponibles), puede consultarse
directamente en la ayuda del programa.

INICIO DE DFD
La ejecucin de DFD presenta la pantalla de inicio siguiente:

Donde nos fijaremos


herramientas.

en

la

barra

de

Aunque puede accederse a todas las opciones que comentaremos a continuacin a


travs del men, y con atajos de teclado, en estas notas las describiremos a travs de
los botones correspondientes.
El bloque de botones de objetos nos permite seleccionar los distintos
elementos (objetos) que vamos a introducir en el DF: sentencias de
asignacin, seleccin, iteracin, ...
El bloque de ejecucin permite poner en funcionamiento el algoritmo
El bloque de depuracin se utiliza, en caso de funcionamiento incorrecto,
para detectar errores en la construccin del algoritmo y corregirlos.
Los botones de subprogramas permiten introducir funciones definidas por el
programa
dor
Los restantes botones tienen una funcionalidad similar a la de las restantes
aplicaciones Windows: abrir fichero, guardar fichero, cortar, pegar,... Puede
verse su tarea asociada acercando el cursor del ratn (sin hacer clic) al botn
correspondiente.

Un primer ejemplo de diseo con DF


Construiremos

un

primer

ejemplo

sencillo

de

algoritmo

para

ilustrar

las

capacidades ms bsicas de DFD. Dicho algoritmo consistir en pedir un nmero al


usuario y presentarlo por pantalla.

La operacin bsica ser la de insercin de objetos. En primer lugar, insertaremos


una sentencia de salida que le pida al usuario el nmero que posteriormente se va a
imprimir. Para ello pulsamos el botn correspondiente al objeto que se desea
insertar.

Y llevamos el ratn al punto donde vamos a insertarlo. La insercin se realiza pulsando


el botn izquierdo, con lo que tendremos una situacin como la siguiente:

Los puntos azules indican qu objeto se acaba de insertar. Para introducir en la


sentencia de salida el mensaje que queremos imprimir ser necesario EDITAR dicho
objeto, haciendo doble clic sobre el mismo. De este modo se abre una ventana donde
podemos dicho mensaje (por ejemplo 'Buenos das. Dgame un nmero, por favor').

Como el mensaje es una cadena de caracteres, no debemos olvidarnos de las


comillas simples al inicio y final de la misma.
Seguidamente vamos a insertar una sentencia de ENTRADA, para almacenar en una
variable el valor del nmero que nos proporcione el usuario. Para ello pulsaremos el
botn correspondiente

Y lo insertaremos a continuacin de la sentencia de salida anterior. Si editamos el


objeto, haciendo doble clic sobre el mismo, aparecer una pantalla cuyo cuadro de
texto nos permitir darle nombre a la variable donde vamos a guardar el valor (en este
ejemplo la variable se va a llamar numero:
Para finalizar, mostraremos al usuario el nmero que ha introducido, para lo cual
insertaremos una nueva sentencia de SALIDA, que editaremos para que muestre el
siguiente mensaje:

Con lo que el algoritmo tendr el siguiente aspecto en


pantalla:

Un primer ejemplo de ejecucin con


DF

Tras haber diseado el algoritmo podemos probar a ejecutarlo, al objeto de detectar


posibles errores en l. Para ello utilizaremos los botones de ejecucin, y en
particular el botn EJECUTAR

Que pondr en marcha el algoritmo.

La primera sentencia en ejecutarse ser la de SALIDA, que mostrar en pantalla el


mensaje correspondiente:

Seguidamente la de ENTRADA, que nos muestra un cuadro de texto donde


introduciremos el valor que queramos darle a la variable (por ejemplo, 123.45):

Y, finalmente, la ltima sentencia de SALIDA:

Cuando el algoritmo finaliza su ejecucin sin error se muestra el siguiente mensaje:

Dado que el algoritmo es correcto, procederemos a guardarlo (por ejemplo, con el


nombre entradasalida). La opcin de guardar es similar a la de cualquier
aplicacin Windows, por lo que no merece mayor comentario. nicamente recordar
que en general, durante el proceso de elaboracin de un algoritmo (que puede ser
largo) debemos guardar frecuentemente en disco el diseo, al objeto de prevenir
posibles fallos o errores que dejen inutilizado el ordenador y provoquen la prdida del
trabajo realizado.

Ejercicio 1: al objeto de ver ejemplos de errores, modificaris el algoritmo anterior en


el siguiente sentido:
1. errores de sintaxis: Eliminar una de las comillas en alguna de las sentencias
de salida y ejecutar el algoritmo.
2. errores de ejecucin: Eliminar la sentencia de entrada (para ello seleccionaris
dicha sentencia haciendo clic sobre el objeto y pulsis el botn ELIMINAR o
la tecla SUPRIMIR). Ejecutar el algoritmo.

Ejercicio 2: disear un nuevo algoritmo que pida al usuario dos nmeros a y b y le


diga cul es su suma. Guardar.

OBJETOS DEFINIDOS EN DFD


DFD permite incluir los objetos bsicos de programacin estructurada: asignacin,
seleccin, lazos y subprogramas. Cualquier objeto que se inserte en el algoritmo
puede ser editado haciendo doble clic, lo que permite definir los elementos que lo
componen. Esto quiere decir que la EDICIN permitir, por ejemplo, en el caso de:
Sentencias de salida: indicar la expresin que se va a presentar en pantalla
Sentencias de entrada: indicar los nombres de las variables donde se guardar
la informacin
sentencias de asignacin: indicar las expresiones y los nombres de
las variables donde se guardar el resultado
Estructuras de seleccin: indicar la condicin
...
Otra accin interesante sobre los objetos es la SELECCIN de los mismos (clic sobre
el objeto), que permite realizar acciones como eliminarlos y cortarlos o copiarlos
para posteriormente pegarlos en otro punto del algoritmo.

Veamos a continuacin los aspectos ms destacados a este respecto. Para mayor

detalle, remitimos al men de ayuda de DFD (tecla F1).

Sentencia de asignacin

Se accede a ella con el botn

Y su edicin permite introducir hasta TRES asignaciones en la misma sentencia:

Para formar expresiones vlidas tendremos en cuenta que DFD admite los siguientes
elementos, todos ellos bien documentados en las opciones "Conceptos bsicos
(Tipos y conceptos de datos)" y "Referencia de operadores y funciones" del men de
ayuda:
Constantes y variables
o

de tipo numrico

de tipo carcter (entre comillas simples)

de tipo lgico (valores .V. y .F.)

Operadores aritmticos habituales (+, -, *, /, ^), junto con otros como el


operador mdulo (MOD)
Funciones

matemticas:

logaritmos

exponenciales,

trigonomtricas, redondeo y truncamiento nmero (ROUND,


TRUNC),...

Funciones de manejo de cadenas de caracteres: longitud de una cadena (LEN)


y

extraccin

de

subcadenas

(SUBSTRING) Ejercicio:

Disear y ejecutar un algoritmo que pida dos nmeros a y b al usuario y calcule su


suma, resta y producto. Guardarlo con el nombre asignacion.

Estructura
seleccin

de

Al editar el elemento una vez insertado se puede introducir la condicin que se va a


evaluar, a travs de la ventana siguiente:

Que tambin permite indicar qu rama (izquierda o derecha) va a corresponder al caso


CIERTO de la condicin. Al pulsar ACEPTAR en esta ventana, automticamente
se incluye el punto de confluencia de ambas ramas (punto de cierre de la
estructura), que ser el lugar por donde progrese el flujo del algoritmo una vez
ejecutada la rama correspondiente.
Las condiciones en DFD son expresiones lgicas (que o bien son ciertas o bien

falsas), que admiten los operadores habituales:


Operadores de comparacin: >, <, >=, <=, =, !
= Operadores lgicos: AND, OR, NOT
En cada una de las ramas se podrn insertar los objetos que se necesiten, igual que
en cualquier otra parte del programa. En particular, se pueden insertar nuevas
estructuras de seleccin para dar lugar a la estructura de seleccin mltiple. En todo
momento DFD redibujar la estructura para mantener la legibilidad de la misma.
Ejercicios:
Disear y ejecutar un algoritmo que indique si un nmero a pedido por teclado es
positivo o negativo. Guardarlo con el nombre seleccion1.
Modificar el algoritmo anterior para que considere tambin el caso en que a sea
igual a cero. Guardarlo con el nombre seleccion2.
Modificar el algoritmo asignacion para que incluya la divisin, y que no
produzca error de ejecucin cuando b sea igual a cero.

Lazos

DFD permite dos tipos de lazos: el MIENTRAS y el DESDE (que en DFD se llama ciclo
"para"), por lo que el lazo REPETIR -HASTA QUE debe ser diseado a partir de los
dos anteriores.
Lazo
desde
La siguiente figura muestra el botn correspondiente al lazo DESDE, junto con su
smbolo en DFD y la ventana de edicin correspondiente. Cabe sealar que la
representacin DFD no utiliza flechas hacia atrs para indicar el final de la
estructura, sino un indicador especial etiquetado como CIERRE.

La ventana de edicin permite indicar en su parte izquierda el nombre de la variable del


lazo, y a la derecha los valores (enteros o reales) de inicio, final e incremento
deseados.
Ejer
cicio
Disear y ejecutar un algoritmo que calcule el factorial de un nmero n pedido al
usuario por teclado. Guardarlo con el nombre factorial. Probarlo con valores n=-1,
0, 1, 2 y 100.

Lazo mientras
En la figura se muestran el botn correspondiente al lazo mientras y su representacin
en DFD. La ventana de edicin es idntica a la de la estructura de seleccin, por lo que
ya no la mencionamos.

El smbolo DFD tampoco utiliza la representacin habitual de la flecha hacia atrs,


como es habitual en la representacin en DF, sino el smbolo de CIERRE.

Ejercicio
Modificar el algoritmo factorial. Para utilizar la estructura mientras. Guardarlo con el
nombre factorial2.

AGRUPACIONES ESTTICAS DE DATOS: VECTORES Y MATRICES


DFD admite agrupaciones de datos, a las cuales denomina "arreglos" (fonticamente
similar a la palabra inglesa original, array).
Hay que sealar que la asignacin de valores a una agrupacin de datos debe
hacerse siempre COMPONENTE A COMPONENTE, no pudiendo manejarse vectores
o matrices completas. Esto debe tenerse en cuenta tambin para cualquier operacin
(entrada/salida, condiciones, lazos, ...).
La forma de referenciar un elemento de un vector o matriz es mediante su ndice,
que puede ser una constante, una variable o una expresin, pero siempre un valor
ENTERO. El ndice se expresa entre parntesis, y habr tantos ndices como
dimensiones tenga la agrupacin de datos (1 para vectores, 2 en matrices, ...).
As, las expresiones siguientes tienen el significado que se indica:
V(2)

2 componente de un vector de nombre V

M(i, j)

Componente ij de una matriz de nombre M

s importante sealar que cuando se usen variables como ndices para referenciar
un elemento de una agrupacin de datos, stas deben tener un valor conocido en el
momento de realizar la referencia. En caso contrario, se producir un error.
Ejerci
cios:
Pedir al usuario una lista de valores numricos y calcular su suma. Pedir
al usuario dos matrices A y B de 2x2 elementos y calcular su resta.
En el ejercicio anterior, aadir una sentencia de salida que imprima los elementos
B(0,0), B(3,3), B(1,5). Qu tipo de error se produce?

MANEJO DE OBJETOS
Los objetos DFD pueden eliminarse, copiarse o moverse de sitio siguiendo la
estrategia habitual de Windows, con la salvedad de que slo puede trabajarse con UN
objeto en cada operacin. Para ello se dispone de la barra de botones correspondiente

Que actuar siempre sobre el objeto SELECCIONADO (clic sobre el mismo).


La nica novedad destacable en las operaciones de copiar, eliminar y cortar es que
DFD no dispone del botn DESHACER, por lo que debern hacerse con cuidado, ya
que un objeto eliminado o cortado no podr recuperarse de ninguna forma que no
sea definindolo manualmente de nuevo.
La operacin PEGAR permite situar un objeto desde el portapapeles de Windows
en cualquier punto del algoritmo. En DFD indicaremos el punto donde deseamos
pegar un objeto del portapapeles seleccionando el objeto a continuacin del cual
deseamos colocarlo. Es decir, debemos tener en cuenta que el objeto va a quedar
pegado JUSTO DESPUS del "objeto destino". La figura siguiente ilustra el proceso,
para un ejemplo en donde se pretende mover la sentencia de salida al inicio del
algoritmo:

Para ello se opera del siguiente

modo:
Paso 1: Seleccionamos la sentencia que vamos a mover
Paso 2: Pulsamos el botn de cortar
Paso 3: Seleccionamos la sentencia que est justo antes de donde vamos
a insertar el objeto cortado (sentencia de inicio)
Sit. final: Pulsamos el botn pegar.
En caso de que el punto de destino sea la condicin de una sentencia de seleccin, se
abrir una ventana que nos pedir la rama donde deseamos colocar el objeto:

Estas operaciones pueden realizarse igualmente, como en cualquier aplicacin


Windows, con los contenidos de cualquier cuadro de texto (por ejemplo, al definir
asignaciones, condiciones, lazos,...).

DEPURACIN DE ALGORITMOS
Las herramientas de depuracin se utilizan para detectar la/s sentencia/s en donde se
han producido errores en el diseo de un algoritmo. La tarea de depuracin consiste
bsicamente en explorar el algoritmo, ejecutndolo paso a paso y comparando en
todo momento los valores que van tomando las distintas variables con los valores
esperados. Es necesario, por tanto, haber analizado con anterioridad algunos casos
de prueba que permitan anticipar en todo momento los valores que deben tomar las
variables y saber si la progresin del algoritmo es correcta o no. Normalmente la
depuracin se realizar ante la presencia de errores de ejecucin o lgicos, ya que
los de sintaxis suelen ir acompaados de algn tipo de mensaje que facilita su
localizacin.
Los botones relacionados con la depuracin son los siguientes (acercando el ratn a
cada uno de ellos puedes ver la etiqueta con el nombre que le asocia DFD:):

PASO SIMPLE
Permite ir ejecutand o el algoritmo sentencia a sentencia. Combinado con la ventana
de evaluacin de variables permite ir viendo los valores que toman estas. A cada
pulsacin del botn, el flujo del algoritmo avanza una sentencia. El smbolo de la
sentencia que se va a ejecutar en cada momento es destacado en color azul.
En cualquier momento puede pararse la ejecucin paso a paso pulsando el botn
DETENER:

Ejercicio: Ejecutar paso a paso el algoritmo de resta de dos matrices.

EJECUTAR HASTA
Esta opcin es til cuando se sabe con certeza que una parte del algoritmo est
correctamente diseada y por tanto, la ejecucin paso a paso de dicha parte no es
necesaria (adems de poder ser bastante tediosa).
El botn EJECUTAR HASTA permite establecer un PUNTO DE RUPTURA en las
sentencias del algoritmo, de modo que el programa se ejecutar con normalidad hasta

dicho punto, y a partir de ah puede realizarse alguna de las siguientes posibilidades:


Evaluar variables
Retomarse

la

ejecucin

normal seguir paso a paso


Establecer un punto de ruptura en una sentencia posterior del algoritmo y
continuar hasta l
El punto de ruptura debe establecerse con anterioridad, seleccionando (clic) la
sentencia donde se quiere fijar ste, y seguidamente pulsando el botn EJECUTAR
HASTA. En el momento que la ejecucin alcance el punto de ruptura, el algoritmo se
detendr, y la sentencia correspondiente queda marcada en color azul.
Ejer
cicio
Establecer un punto de ruptura en la primera sentencia ejecutable del algoritmo de
resta de dos matrices, y continuar paso a paso a partir de ah.

DEPURADOR
Abre una ventana donde se pueden escribir los nombres de las variables (o
expresiones en general) cuyo valor se desea explorar durante la depuracin del
algoritmo. Se utilizar en combinacin con cualquiera de los dos mtodos de
depuracin anteriores, para valorar si las variables toman valores correctos o no.
Al pulsar el botn correspondiente se abre una ventana en la que se van a visualizar
las variables o expresiones que interese evaluar.

Dichas expresiones se introducen en el cuadro de texto que aparece pulsando la


tecla INSERTAR, cuando la ventana del depurador est activada (si no lo estuviera,
basta con hacer clic en cualquier punto de ella para activarla).
Si se desea eliminar alguna de las expresiones, basta con marcarla con el ratn (clic)

y pulsar la tecla SUPRIMIR. Esto puede resultar til, ya que una vez insertada una
variable en la ventana del depurador
En una sesin de depuracin, normalmente se tendr visible la ventana del depurador,
con el objeto de ir comparando en todo momento los valores que toman las variables.
Cuando una variable no ha sido inicializada, se mostrar el mensaje "Variable no
existe", que cambiar al valor correspondiente una vez ejecutada la sentencia
que le asigna un valor (sentencia de asignacin o sentencia de entrada). La siguiente
figura ilustra esta situacin:

Puede verse en la parte izquierda cmo la sentencia que inicializa las variables no se
ha ejecutado an (sealada en azul), y por tanto las variables no toman valores
conocidos. Una vez ejecutada, las variables toman los valores esperados.
Depuracin de errores en DFD. Sesin de ejemplo.
En

primer

lugar,

copiaremos

del

Web

de

prcticas

el

fichero

numeroprimo.dfd, disponible en la seccin Metodologa de la


Programacin. El algoritmo presenta un error lgico, como podis
comprobar ejecutndolo para algunos casos (2, 4, 15, ...). Para detectar
dicho error realizaremos una ejecucin hasta el lazo mientras, ya que
no parece probable que el error est en las primeras sentencias del
programa.
Por
tanto,
fijamos
el
punto
de
ruptura
en
dicha
sentencia,
seleccionndola y pulsando el botn EJECUTAR HASTA. A partir de aqu, el
proceso evoluciona de la siguiente manera:
Accin

Consecuencia

Resultado

Se

nos

pide

el

nmero.

Introducimos el valor 6:

La

ejecucin

alcanza

el

punto de ruptura

Abrimos
+INS

una

depurador
variables

ventana

para

del

evaluar

definidas

hasta

las
el

momento. En este momento,


todas

ellas

toman

valores

correctos
A partir de aqu seguimos
paso a paso. La siguiente
instruccin es el mientras, que
se debe verificar.
Se cumple la condicin, ya que
2 es divisor de 6. Por tanto, ya
sabemos que el nmero NO es
primo,

divisor

debe

incrementarse y pasar a valer


1.

Se alcanza el final de la
estructura de seleccin, y la
variable

divisor

sigue

valiendo cero.
Aqu hay un error!

Detenemos la ejecucin paso a


paso para editar la asignacin
errnea y corregirla.

Una vez corregido el error, probamos nuevamente el algoritmo con


los

casos

de

prueba

anteriores,

verificando

que

funciona

correctamente.

SUBPROGRAMAS
El tipo de subprograma que admite DFD es la funcin. Debe notarse que
en DFD los argumentos se pasan por REFERENCIA cuando son nombres
de variables (tanto variables escalares como vectore s o matrices), y se
pasan por VALOR cuando son expresiones. Dentro de la opcin
OBJETOS

del

men

de

ayuda,

las

opciones

LLAMADA

SUBPROGRAMAS profundizan en estos aspectos. Igualmente, las


funciones DFD no disponen de la sentencia DEVOLVER, por lo que los
valores que deba retornar la funcin debern almacenarse en los
correspondientes argumentos de salida.
El cdigo correspondiente a las funciones incluidas en un algoritmo
debe aadirse al mismo utilizando el botn NUEVO SUBPROGRAMA

Que abre una nueva pantalla similar a la de inicial de un algoritmo, en la cual


cambia el smbolo INICIO por la cabecera de la funcin. Editando dicha cabecera se
establecer el nombre de la funcin, los parmetros (ficticios) correspondientes y, si se
desea, una breve descri pcin de dicha funcin (documentacin de la misma).

La insercin, borrado y edicin de objetos en una funcin es idntica a como se


describi para el algoritmo principal.
La llamada a una funcin desde otro mdulo tiene tambin un smbolo especial en
D
F
D

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 24 de 29

cuya edicin permite introducir el nombre y los parmetros verdaderos de la


funcin:

Los restantes botones del men subprogramas permiten moverse entre las distintas
ventanas de subprogramas o eliminar el subprograma actual:

Por ltimo, sealar que las operaciones de COPIAR, CORTAR, PEGAR y


ELIMINAR pueden realizarse entre subprogramas de un mismo algoritmo y entre
algoritmos que se abran en una misma sesin de DFD.
Esta ltima posibilidad puede aprovecharse para reutilizar funciones previamente
construidas sin necesidad de volver a construirlas manualmente en el nuevo algoritmo.
Pipeh PSeu do Inte r p r e t e
1.1

Pagin a 25 de 29

Dado que desafortunadamente DFD no permite copiar y pegar un algoritmo o funcin


completa, es preciso recurrir a un pequeo artificio para poder realizar esta tarea de
forma fcil.
El artificio consiste en encerrar las funciones que diseemos con DFD en una
sentencia que englobe totalmente a la funcin (salvo la cabecera), y que no aada
nada a la ejecucin de la misma (por ejemplo, un lazo desde que se ejecute una sla
vez). De esta manera s es posible copiar dicho lazo desde (y por tanto, la funcin
completa), y pegarla en otro algoritmo donde vayamos a utilizar la funcin. Lo
nico que habr que completar manualmente ser la cabecera, que como ya hemos
mencionado no puede copiarse.

MANUAL DE PSEINT

El manual de Pseint fue tomado de: http://pseint.sourceforge.net/manual.pdf

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 26 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 27 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 28 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 29 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 30 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 31 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 32 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 33 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 34 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 35 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 36 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 37 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 38 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 39 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 40 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 41 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 42 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 43 de 29

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 44 de 29

1.

PROYECTO FINAL

PROYECTO DE AULA
Justificacin
La finalidad de este proyecto es ofrecer a la comunidad estudiantil evidencias del
aprendizaje seguido en clase, adems de ofrecer un producto que sirva como modelo
para extenderlo ms adelante y adecuarlo a necesidades propias de cada individuo en el
tiempo y espacio que sern aplicados.

Requerimientos
El proyecto consistir en la solucin de un problema interdisciplinar real planteado
por el docente encargado, aplicando los conceptos, estructuras de algoritmos,
realizando una aplicacin (programa) que solucione algn de su entorno personal,
educativo o comunitario.

Objetivos:
- Aplicar conceptos trabajados en clase (fundamentos de algoritmos, variables,
estructuras y software).
- Conocer y comunicar a sus pares la accin que tienen la implementacin de
proyectos en algoritmos para solucionar problemas o relacionar estos
conocimientos, con los de otras reas para de esta manera apoyar la creacin de
conocimiento.
- Fomentar en los alumnos la utilizacin del software que permite el desarrollo de
soluciones a travs de los algoritmos.
- Promover el trabajo en grupo con respeto y tolerancia entre los pares.

Modalidad de trabajo: Grupos de n personas


Materiales: Eleccin libre
Dimensiones del modelo: Mnimo el uso de tres conectivos lgicos.
Pipeh PSeu do Inte r p r e t e
1.1

Pagin a 45 de 29

Herramientas para trabajar: Cartilla gua.

Aspectos a evaluar:
Modelo: (50%)
- Debe cumplir con el tamao establecido (10%)
- Debe ser funcional para la explicacin: (40%)

Exposicin: Todos los integrantes exponen (50%)


- Veracidad de la explicacin

(10%)

- Claridad

(10%)

- Fundamentacin de la explicacin dada

(10%)

- Vocabulario cientfico adecuado

(10%)

- Seriedad y Seguridad al exponer el tema

(10%)

TEMPORALIZACION: 10 Horas
Evaluaciones de Avance: por confirmar
Fecha de exposicin: por confirmar

BIBLIOGRAFIA
Desarrollo de Algoritmos Y Sus Aplicaciones, Correa Uribe Guillermo, McGraw-Hill.
Francisco Javier Ceballos (1990), Curso de Programacin con C, Macrobit.
Manuel Abellanas y Dolores Lodares (1990), Anlisis de algoritmos y teora de grafos, RaMa
D Appleby, y J.J. VandeKopple, Lenguajes de programacin: paradigma y prctica,
McGraw-Hill Interamericana, 1998
T.W. Pratt y M.V. Zelkowitz, Lenguajes de programacin: diseo e implementacin,
Prentice-Hall Hispanoamericana, 3 ed., 1998
Pipeh PSeu do Inte r p r e t e
1.1

Pagin a 46 de 29

R. Sethi, Lenguajes de programacin: conceptos y constructores, Addison-Wesley


Iberoamericana, 1992
http://ayura.udea.edu.co/~jlsanche/index.htm

Pipeh PSeu do Inte r p r e t e


1.1

Pagin a 47 de 29

S-ar putea să vă placă și